openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
227 lines (226 loc) • 11.5 kB
JavaScript
import { n as normalizePluginsConfigWithResolverCore } from "./config-normalization-shared-D4lufwW0.js";
import { d as resolveEffectivePluginActivationState, m as resolveSelectedContextEnginePluginId, o as isTestDefaultMemorySlotDisabled } from "./config-state-BkU1frVq.js";
import { S as hashJson } from "./discovery-D_VDsZuY.js";
import { t as isPluginEnabledByDefaultForPlatform } from "./default-enablement-CEIbpabL.js";
import { i as loadPluginRegistrySnapshot } from "./plugin-registry-snapshot-Dy15Ew18.js";
import { r as normalizePluginsConfigWithRegistry } from "./plugin-registry-contributions-BwuDvm89.js";
import "./plugin-registry-DD_0nL_t.js";
import { a as normalizeOptionalAgentRuntimeId, r as isDefaultAgentRuntimeId } from "./agent-runtime-id-BpfvnoN1.js";
import { t as resolveManifestActivationPlan } from "./activation-planner-ByTGTikc.js";
import { m as normalizePluginsConfigForInstalledIndex, n as addConfiguredSlotPluginIds } from "./gateway-startup-plugin-config-Bq9ZdScF.js";
import { t as resolveAgentHarnessPolicy } from "./policy-D9i1QMuw.js";
import { t as collectConfiguredAgentHarnessRuntimes } from "./harness-runtimes-BrMGAsrQ.js";
import { f as resolveOwningPluginIdsForProviderRef, n as resolveActivatableProviderOwnerPluginIds, r as resolveBundledProviderCompatPluginIds } from "./providers-DCe4UB6a.js";
import { n as withActivatedPluginIds } from "./activation-context-CigELUUd.js";
import { t as createInstalledPluginIndexScopeLookup } from "./installed-plugin-index-scope-lookup-zFavZQ1h.js";
import { i as isCliRuntimeAliasForProvider } from "./model-runtime-aliases-BJ2qM8I_.js";
//#region src/agents/harness/runtime-plugin-load-plan.ts
function dedupePluginIds(values) {
const result = [];
for (const value of values) {
const pluginId = value.trim();
if (pluginId && !result.includes(pluginId)) result.push(pluginId);
}
return result;
}
function restrictiveAllowlistOmitsPlugin(config, pluginId) {
const allow = config?.plugins?.allow ?? [];
return allow.length > 0 && !allow.includes(pluginId);
}
function resolveSelectedMemoryPluginIds(params) {
if (isTestDefaultMemorySlotDisabled(params.config ?? {})) return [];
const registry = params.metadataSnapshot?.index ?? loadPluginRegistrySnapshot({
config: params.config,
workspaceDir: params.workspaceDir
});
const plugins = params.metadataSnapshot ? normalizePluginsConfigWithResolverCore(params.config?.plugins, params.metadataSnapshot.normalizePluginId) : normalizePluginsConfigWithRegistry(params.config?.plugins, registry);
const memorySlot = plugins.slots.memory;
if (typeof memorySlot !== "string" || restrictiveAllowlistOmitsPlugin(params.config, memorySlot)) return [];
const plugin = registry.plugins.find((entry) => entry.pluginId === memorySlot);
if (!plugin?.startup.memory) return [];
return resolveEffectivePluginActivationState({
id: plugin.pluginId,
origin: plugin.origin,
config: plugins,
rootConfig: params.config,
enabledByDefault: isPluginEnabledByDefaultForPlatform(plugin)
}).activated ? [plugin.pluginId] : [];
}
function resolveAgentRuntimePluginSelections(config, selections, configuredHarnessRuntimes = collectConfiguredAgentHarnessRuntimes(config ?? {})) {
return [...configuredHarnessRuntimes.map((runtime) => ({
runtime,
provider: "",
modelId: ""
})), ...selections];
}
function resolveAgentRuntimeMetadataPluginIds(params) {
const lookup = createInstalledPluginIndexScopeLookup(params.index);
const pluginsConfig = normalizePluginsConfigForInstalledIndex(params.config?.plugins, lookup);
if (!pluginsConfig.enabled) return [];
const pluginIds = /* @__PURE__ */ new Set();
lookup.addShorthandModelOwners(pluginIds, params.shorthandModelIds ?? []);
const selections = resolveAgentRuntimePluginSelections(params.config, params.selections);
const providerIds = dedupePluginIds(selections.map((selection) => selection.provider));
for (const providerId of providerIds) {
const providerPluginIds = /* @__PURE__ */ new Set();
lookup.addDirectProviderOwners(providerPluginIds, [providerId]);
if (providerPluginIds.size === 0) lookup.addProviderContributionOwners(providerPluginIds, [providerId]);
if (providerPluginIds.size !== 1) return;
for (const pluginId of providerPluginIds) pluginIds.add(pluginId);
}
const runtimeIds = dedupePluginIds(selections.map((selection) => resolveSelectedAgentHarnessRuntime(selection, params.config)).filter((runtime) => !isDefaultAgentRuntimeId(runtime) && runtime !== "openclaw"));
if (!lookup.hasAgentHarnessOwners(runtimeIds)) return;
lookup.addAgentHarnessOwners(pluginIds, runtimeIds);
addConfiguredSlotPluginIds(pluginIds, {
activationSourceConfig: params.config ?? {},
activationSourcePlugins: pluginsConfig,
lookup
});
if (!lookup.hasInstalledPluginIds(pluginIds)) return;
return [...pluginIds].toSorted((left, right) => left.localeCompare(right));
}
/** Narrows cold manifest preparation to candidates needed by one selected runtime generation. */
function createAgentRuntimeMetadataPluginIdScope(params) {
return {
key: hashJson({
kind: "agent-runtime",
config: params.config ?? null,
workspaceDir: params.workspaceDir,
selections: params.selections,
shorthandModelIds: params.shorthandModelIds ?? []
}),
resolve: ({ index }) => resolveAgentRuntimeMetadataPluginIds({
config: params.config,
selections: params.selections,
shorthandModelIds: params.shorthandModelIds,
index
})
};
}
function resolveSelectedProviderOwnerPluginIds(params) {
const providerOwnerPluginIds = dedupePluginIds(resolveOwningPluginIdsForProviderRef(params) ?? []);
if (providerOwnerPluginIds.length === 0) return [];
const safeProviderOwnerPluginIds = dedupePluginIds([...resolveBundledProviderCompatPluginIds({
config: params.config,
workspaceDir: params.workspaceDir,
onlyPluginIds: providerOwnerPluginIds,
manifestRegistry: params.metadataSnapshot?.manifestRegistry
}), ...resolveActivatableProviderOwnerPluginIds({
pluginIds: providerOwnerPluginIds,
config: params.config,
workspaceDir: params.workspaceDir,
...params.metadataSnapshot ? {
registry: params.metadataSnapshot.index,
manifestRegistry: params.metadataSnapshot.manifestRegistry
} : {}
})]);
return providerOwnerPluginIds.filter((pluginId) => safeProviderOwnerPluginIds.includes(pluginId));
}
/** Resolve manifest owners required by one selected non-core harness runtime. */
function resolveAgentHarnessOwnerPluginIds(params) {
const harnessPluginIds = resolveManifestActivationPlan({
trigger: {
kind: "agentHarness",
runtime: params.runtime
},
config: params.config,
workspaceDir: params.workspaceDir,
requireExplicitManifestOwnerTrust: true,
manifestRecords: params.metadataSnapshot?.plugins
}).entries.map((entry) => entry.pluginId);
if (harnessPluginIds.length === 0 || params.runtime !== "codex" || !harnessPluginIds.includes("codex") || restrictiveAllowlistOmitsPlugin(params.config, "codex")) return harnessPluginIds;
const providerOwnerPluginIds = params.providerOwnerPluginIds ?? resolveSelectedProviderOwnerPluginIds(params);
if (providerOwnerPluginIds.length === 0) return harnessPluginIds;
return dedupePluginIds([...harnessPluginIds, ...providerOwnerPluginIds.filter((pluginId) => pluginId !== "codex")]);
}
function withRuntimePluginIdsAllowed(config, pluginIds, materializeAllowlist) {
const existingAllowlist = config?.plugins?.allow ?? [];
if (pluginIds.length === 0 || !materializeAllowlist && existingAllowlist.length === 0) return config;
return {
...config,
plugins: {
...config?.plugins,
allow: dedupePluginIds([...existingAllowlist, ...pluginIds])
}
};
}
function resolveSelectedAgentHarnessRuntime(selection, config) {
const requestedRuntime = normalizeOptionalAgentRuntimeId(selection.runtime);
return requestedRuntime && !isDefaultAgentRuntimeId(requestedRuntime) ? requestedRuntime : resolveAgentHarnessPolicy({
provider: selection.provider,
modelId: selection.modelId,
config,
agentId: selection.agentId
}).runtime;
}
function requiresAgentHarnessPluginSelection(selection, config) {
const runtime = resolveSelectedAgentHarnessRuntime(selection, config);
if (isDefaultAgentRuntimeId(runtime) || runtime === "openclaw") return false;
return runtime === "codex" || !isCliRuntimeAliasForProvider({
runtime,
provider: selection.provider,
cfg: config
});
}
/** Folds selected harness, memory, and context-engine owners into one deterministic load plan. */
function resolveAgentRuntimePluginLoadPlan(params) {
let config = params.config;
const memoryPluginIds = resolveSelectedMemoryPluginIds({
config: params.config,
workspaceDir: params.workspaceDir,
metadataSnapshot: params.metadataSnapshot
});
const contextEnginePluginId = resolveSelectedContextEnginePluginId(params.config);
const contextEnginePluginIds = contextEnginePluginId ? [contextEnginePluginId] : [];
const basePluginIds = (params.basePluginIds ?? []).filter((pluginId) => !restrictiveAllowlistOmitsPlugin(params.config, pluginId));
const pluginIds = [
...basePluginIds,
...memoryPluginIds,
...contextEnginePluginIds
];
const forceActivatedPluginIds = [...memoryPluginIds, ...contextEnginePluginIds];
for (const selection of params.selections) {
const runtime = resolveSelectedAgentHarnessRuntime(selection, config);
const providerOwnerPluginIds = resolveSelectedProviderOwnerPluginIds({
provider: selection.provider,
config,
workspaceDir: params.workspaceDir,
metadataSnapshot: params.metadataSnapshot
});
pluginIds.push(...providerOwnerPluginIds);
forceActivatedPluginIds.push(...providerOwnerPluginIds);
if (!requiresAgentHarnessPluginSelection(selection, config)) continue;
const harnessPluginIds = resolveAgentHarnessOwnerPluginIds({
runtime,
provider: selection.provider,
config,
workspaceDir: params.workspaceDir,
providerOwnerPluginIds,
metadataSnapshot: params.metadataSnapshot
});
pluginIds.push(...harnessPluginIds);
const allowedHarnessPluginIds = runtime === "codex" ? restrictiveAllowlistOmitsPlugin(params.config, "codex") ? [] : harnessPluginIds : harnessPluginIds.filter((pluginId) => !restrictiveAllowlistOmitsPlugin(params.config, pluginId));
forceActivatedPluginIds.push(...allowedHarnessPluginIds);
}
const scopedPluginIds = dedupePluginIds(pluginIds).toSorted((left, right) => left.localeCompare(right));
config = withRuntimePluginIdsAllowed(config, [...basePluginIds, ...forceActivatedPluginIds], params.basePluginIds !== void 0);
const activatedConfig = withActivatedPluginIds({
config,
pluginIds: forceActivatedPluginIds.toSorted()
}) ?? config;
if (params.basePluginIds === void 0 && (params.config?.plugins?.allow?.length ?? 0) === 0 && activatedConfig?.plugins) {
const plugins = { ...activatedConfig.plugins };
if (params.config?.plugins?.allow === void 0) delete plugins.allow;
else plugins.allow = params.config.plugins.allow;
config = {
...activatedConfig,
plugins
};
} else config = activatedConfig;
return {
...config ? { config } : {},
...params.basePluginIds === void 0 && scopedPluginIds.length === 0 ? {} : { pluginIds: scopedPluginIds }
};
}
//#endregion
export { resolveAgentRuntimePluginSelections as a, resolveAgentRuntimePluginLoadPlan as i, requiresAgentHarnessPluginSelection as n, resolveSelectedAgentHarnessRuntime as o, resolveAgentHarnessOwnerPluginIds as r, createAgentRuntimeMetadataPluginIdScope as t };