


























@@ -9,14 +9,13 @@ import {
99} from "../memory-host-sdk/dreaming.js";
1010import { normalizeOptionalLowercaseString } from "../shared/string-coerce.js";
1111import { hasExplicitChannelConfig } from "./channel-presence-policy.js";
12-import {
13-createPluginActivationSource,
14-normalizePluginId,
15-normalizePluginsConfig,
16-resolveEffectivePluginActivationState,
17-} from "./config-state.js";
12+import { resolveEffectivePluginActivationState } from "./config-state.js";
1813import type { InstalledPluginIndexRecord } from "./installed-plugin-index.js";
19-import { loadPluginRegistrySnapshot } from "./plugin-registry.js";
14+import {
15+createPluginRegistryIdNormalizer,
16+loadPluginRegistrySnapshot,
17+normalizePluginsConfigWithRegistry,
18+} from "./plugin-registry.js";
20192120function listDisabledChannelIds(config: OpenClawConfig): Set<string> {
2221const channels = config.channels;
@@ -64,7 +63,10 @@ function resolveGatewayStartupDreamingPluginIds(config: OpenClawConfig): Set<str
6463return new Set([DEFAULT_MEMORY_DREAMING_PLUGIN_ID, resolveMemoryDreamingPluginId(config)]);
6564}
666567-function resolveExplicitMemorySlotStartupPluginId(config: OpenClawConfig): string | undefined {
66+function resolveExplicitMemorySlotStartupPluginId(
67+config: OpenClawConfig,
68+normalizePluginId: (pluginId: string) => string,
69+): string | undefined {
6870const configuredSlot = config.plugins?.slots?.memory?.trim();
6971if (!configuredSlot || configuredSlot.toLowerCase() === "none") {
7072return undefined;
@@ -101,8 +103,11 @@ function hasConfiguredStartupChannel(params: {
101103function canStartConfiguredChannelPlugin(params: {
102104plugin: InstalledPluginIndexRecord;
103105config: OpenClawConfig;
104-pluginsConfig: ReturnType<typeof normalizePluginsConfig>;
105-activationSource: ReturnType<typeof createPluginActivationSource>;
106+pluginsConfig: ReturnType<typeof normalizePluginsConfigWithRegistry>;
107+activationSource: {
108+plugins: ReturnType<typeof normalizePluginsConfigWithRegistry>;
109+rootConfig?: OpenClawConfig;
110+};
106111}): boolean {
107112if (!params.pluginsConfig.enabled) {
108113return false;
@@ -166,15 +171,16 @@ export function resolveConfiguredDeferredChannelPluginIds(params: {
166171if (configuredChannelIds.size === 0) {
167172return [];
168173}
169-const pluginsConfig = normalizePluginsConfig(params.config.plugins);
170-const activationSource = createPluginActivationSource({
171-config: params.config,
172-});
173174const index = loadPluginRegistrySnapshot({
174175config: params.config,
175176workspaceDir: params.workspaceDir,
176177env: params.env,
177178});
179+const pluginsConfig = normalizePluginsConfigWithRegistry(params.config.plugins, index);
180+const activationSource = {
181+plugins: pluginsConfig,
182+rootConfig: params.config,
183+};
178184return index.plugins
179185.filter(
180186(plugin) =>
@@ -197,28 +203,28 @@ export function resolveGatewayStartupPluginIds(params: {
197203env: NodeJS.ProcessEnv;
198204}): string[] {
199205const configuredChannelIds = new Set(listPotentialEnabledChannelIds(params.config, params.env));
200-const pluginsConfig = normalizePluginsConfig(params.config.plugins);
206+const index = loadPluginRegistrySnapshot({
207+config: params.config,
208+workspaceDir: params.workspaceDir,
209+env: params.env,
210+});
211+const pluginsConfig = normalizePluginsConfigWithRegistry(params.config.plugins, index);
201212// Startup must classify allowlist exceptions against the raw config snapshot,
202213// not the auto-enabled effective snapshot, or configured-only channels can be
203214// misclassified as explicit enablement.
204-const activationSource = createPluginActivationSource({
205-config: params.activationSourceConfig ?? params.config,
206-});
215+const activationSourceConfig = params.activationSourceConfig ?? params.config;
216+const activationSource = {
217+plugins: normalizePluginsConfigWithRegistry(activationSourceConfig.plugins, index),
218+rootConfig: activationSourceConfig,
219+};
207220const requiredAgentHarnessRuntimes = new Set(
208-collectConfiguredAgentHarnessRuntimes(
209-params.activationSourceConfig ?? params.config,
210-params.env,
211-),
221+collectConfiguredAgentHarnessRuntimes(activationSourceConfig, params.env),
212222);
213223const startupDreamingPluginIds = resolveGatewayStartupDreamingPluginIds(params.config);
214224const explicitMemorySlotStartupPluginId = resolveExplicitMemorySlotStartupPluginId(
215-params.activationSourceConfig ?? params.config,
225+activationSourceConfig,
226+createPluginRegistryIdNormalizer(index),
216227);
217-const index = loadPluginRegistrySnapshot({
218-config: params.config,
219-workspaceDir: params.workspaceDir,
220-env: params.env,
221-});
222228return index.plugins
223229.filter((plugin) => {
224230if (hasConfiguredStartupChannel({ plugin, configuredChannelIds })) {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。