mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-21 23:11:01 +00:00
56 lines
1.7 KiB
TypeScript
56 lines
1.7 KiB
TypeScript
import { listPotentialConfiguredChannelIds } from "../channels/config-presence.js";
|
|
import type { OpenClawConfig } from "../config/config.js";
|
|
import { loadPluginManifestRegistry } from "./manifest-registry.js";
|
|
|
|
export function resolveChannelPluginIds(params: {
|
|
config: OpenClawConfig;
|
|
workspaceDir?: string;
|
|
env: NodeJS.ProcessEnv;
|
|
}): string[] {
|
|
return loadPluginManifestRegistry({
|
|
config: params.config,
|
|
workspaceDir: params.workspaceDir,
|
|
env: params.env,
|
|
})
|
|
.plugins.filter((plugin) => plugin.channels.length > 0)
|
|
.map((plugin) => plugin.id);
|
|
}
|
|
|
|
export function resolveConfiguredChannelPluginIds(params: {
|
|
config: OpenClawConfig;
|
|
workspaceDir?: string;
|
|
env: NodeJS.ProcessEnv;
|
|
}): string[] {
|
|
const configuredChannelIds = new Set(
|
|
listPotentialConfiguredChannelIds(params.config, params.env).map((id) => id.trim()),
|
|
);
|
|
if (configuredChannelIds.size === 0) {
|
|
return [];
|
|
}
|
|
return resolveChannelPluginIds(params).filter((pluginId) => configuredChannelIds.has(pluginId));
|
|
}
|
|
|
|
export function resolveConfiguredDeferredChannelPluginIds(params: {
|
|
config: OpenClawConfig;
|
|
workspaceDir?: string;
|
|
env: NodeJS.ProcessEnv;
|
|
}): string[] {
|
|
const configuredChannelIds = new Set(
|
|
listPotentialConfiguredChannelIds(params.config, params.env).map((id) => id.trim()),
|
|
);
|
|
if (configuredChannelIds.size === 0) {
|
|
return [];
|
|
}
|
|
return loadPluginManifestRegistry({
|
|
config: params.config,
|
|
workspaceDir: params.workspaceDir,
|
|
env: params.env,
|
|
})
|
|
.plugins.filter(
|
|
(plugin) =>
|
|
plugin.channels.some((channelId) => configuredChannelIds.has(channelId)) &&
|
|
plugin.startupDeferConfiguredChannelFullLoadUntilAfterListen === true,
|
|
)
|
|
.map((plugin) => plugin.id);
|
|
}
|