UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

100 lines (99 loc) 4.08 kB
import { a as normalizeOptionalAgentRuntimeId, r as isDefaultAgentRuntimeId } from "./agent-runtime-id-DiL2DId7.js"; import { n as resolveAgentHarnessPolicy } from "./harness-runtimes-B7OdBY2U.js"; import { g as resolveOwningPluginIdsForProviderRef, o as resolveActivatableProviderOwnerPluginIds, s as resolveBundledProviderCompatPluginIds } from "./plugin-auto-enable-pAtqig-B.js"; import { r as withActivatedPluginIds } from "./activation-context-DZa7Hp0V.js"; //#region src/agents/harness/runtime-plugin.ts /** * Lazy-loads plugin-backed harness runtimes before selection. * * Only cold-loadable runtimes live here; always-loaded core/openclaw runtimes should not trigger * plugin registry scans on every embedded-agent turn. */ const COLD_LOADABLE_HARNESS_PLUGIN_IDS = new Set(["codex", "copilot"]); function dedupePluginIds(values) { const seen = /* @__PURE__ */ new Set(); const result = []; for (const value of values) { const pluginId = value.trim(); if (!pluginId || seen.has(pluginId)) continue; seen.add(pluginId); result.push(pluginId); } return result; } function restrictiveAllowlistOmitsPlugin(config, pluginId) { const allow = config?.plugins?.allow ?? []; return allow.length > 0 && !allow.includes(pluginId); } function resolveHarnessPluginIds(params) { if (params.runtime !== "codex") return [params.runtime]; if (restrictiveAllowlistOmitsPlugin(params.config, "codex")) return ["codex"]; const providerOwnerPluginIds = dedupePluginIds(resolveOwningPluginIdsForProviderRef({ provider: params.provider, config: params.config, workspaceDir: params.workspaceDir }) ?? []); if (providerOwnerPluginIds.length === 0) return ["codex"]; const safeProviderOwnerPluginIds = dedupePluginIds([...resolveBundledProviderCompatPluginIds({ config: params.config, workspaceDir: params.workspaceDir, onlyPluginIds: providerOwnerPluginIds }), ...resolveActivatableProviderOwnerPluginIds({ pluginIds: providerOwnerPluginIds, config: params.config, workspaceDir: params.workspaceDir })]); return dedupePluginIds(["codex", ...providerOwnerPluginIds.filter((pluginId) => pluginId !== "codex" && safeProviderOwnerPluginIds.includes(pluginId))]); } function withRuntimePluginIdsAllowed(params) { if (params.pluginIds.length === 0) return params.config; if (restrictiveAllowlistOmitsPlugin(params.config, params.requiredPluginId)) return params.config; const allow = dedupePluginIds([...params.config?.plugins?.allow ?? [], ...params.pluginIds]); return { ...params.config, plugins: { ...params.config?.plugins, allow } }; } /** Ensures the plugin that owns the selected harness runtime is loaded before harness selection. */ async function ensureSelectedAgentHarnessPlugin(params) { const runtimeOverride = normalizeOptionalAgentRuntimeId(params.agentHarnessRuntimeOverride); const policy = resolveAgentHarnessPolicy({ provider: params.provider, modelId: params.modelId, config: params.config, agentId: params.agentId, sessionKey: params.sessionKey }); const runtime = runtimeOverride && !isDefaultAgentRuntimeId(runtimeOverride) ? runtimeOverride : policy.runtime; if (isDefaultAgentRuntimeId(runtime) || runtime === "openclaw" || !COLD_LOADABLE_HARNESS_PLUGIN_IDS.has(runtime)) return; const { ensurePluginRegistryLoaded } = await import("./runtime-registry-loader-PUy5EEon.js"); const pluginIds = resolveHarnessPluginIds({ runtime, provider: params.provider, config: params.config, workspaceDir: params.workspaceDir }); const configWithAllowedRuntimePlugins = withRuntimePluginIdsAllowed({ config: params.config, requiredPluginId: runtime, pluginIds }); const activatedConfig = withActivatedPluginIds({ config: configWithAllowedRuntimePlugins, pluginIds }) ?? configWithAllowedRuntimePlugins; ensurePluginRegistryLoaded({ scope: "all", ...activatedConfig ? { config: activatedConfig, activationSourceConfig: activatedConfig } : {}, workspaceDir: params.workspaceDir, onlyPluginIds: pluginIds }); } //#endregion export { ensureSelectedAgentHarnessPlugin as t };