UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

101 lines (100 loc) • 4.76 kB
import { c as normalizeOptionalLowercaseString } from "./string-coerce-1VuiLaaR.mjs"; import { n as listAgentEntries } from "./agent-roster-DH6r_8f4.mjs"; import "./agent-scope-config-BEk6-ThS.mjs"; import { u as normalizePluginsConfig } from "./config-state-Ba1MVBAI.mjs"; import { f as hasNonEmptyPluginIdScope } from "./current-plugin-metadata-snapshot-DpeEPkbV.mjs"; import { l as resolveConfiguredChannelPluginIds } from "./channel-presence-policy-CZfPoPKL.mjs"; import { n as buildPluginRuntimeLoadOptions } from "./load-context-DHsEiS3U.mjs"; import { r as loadAndActivateRootPluginRegistry } from "./loader-runtime-load-ZVHWOf_z.mjs"; import { _ as collectConfiguredMemoryEmbeddingProviderIds } from "./gateway-startup-plugin-config-DJmD6Fvw.mjs"; import { r as resolveChannelPluginIds } from "./gateway-startup-plugin-loader-BKXHztyQ.mjs"; import { t as createInstalledPluginIndexScopeLookup } from "./installed-plugin-index-scope-lookup-zVHC9Dq8.mjs"; import "./gateway-startup-plugin-ids-CxNTuJbx.mjs"; import "./channel-plugin-ids-Dy16pCvQ.mjs"; import { n as withActivatedPluginIds } from "./activation-context-CHczBoPP.mjs"; import "./loader-DD9YGElz.mjs"; import { t as resolvePluginRuntimeLoadContext } from "./load-context.resolve-sJWgrbqc.mjs"; import { t as resolveEffectivePluginIds } from "./effective-plugin-ids-DizDweJM.mjs"; //#region src/plugins/runtime/runtime-registry-loader.ts const CORE_SANDBOX_BACKEND_IDS = /* @__PURE__ */ new Set([ "docker", "podman", "ssh" ]); function resolveMemoryPluginIds(context) { const configuredProviderIds = [...collectConfiguredMemoryEmbeddingProviderIds(context.activationSourceConfig)]; const pluginIds = /* @__PURE__ */ new Set(); if (context.metadataSnapshot) createInstalledPluginIndexScopeLookup(context.metadataSnapshot.index).addProviderContributionOwners(pluginIds, configuredProviderIds); else for (const providerId of configuredProviderIds) pluginIds.add(providerId); const memoryPluginId = normalizePluginsConfig(context.config.plugins).slots.memory?.trim(); if (memoryPluginId) pluginIds.add(memoryPluginId); return [...pluginIds].toSorted(); } function resolveSandboxBackendPluginIds(context, persistedBackendIds = []) { if (!context.metadataSnapshot) return []; const configuredBackendIds = [ context.activationSourceConfig.agents?.defaults?.sandbox?.backend, ...listAgentEntries(context.activationSourceConfig).map((agent) => agent.sandbox?.backend), ...persistedBackendIds ]; const lookup = createInstalledPluginIndexScopeLookup(context.metadataSnapshot.index); const pluginIds = /* @__PURE__ */ new Set(); for (const backendId of configuredBackendIds) { const normalizedBackendId = normalizeOptionalLowercaseString(backendId); if (!normalizedBackendId || CORE_SANDBOX_BACKEND_IDS.has(normalizedBackendId) || !lookup.hasInstalledPluginIds([normalizedBackendId])) continue; pluginIds.add(lookup.normalizePluginId(normalizedBackendId)); } return [...pluginIds].toSorted(); } async function ensurePluginRegistryLoaded(options) { const scope = options?.scope ?? "all"; const context = resolvePluginRuntimeLoadContext(options); let pluginIds; switch (scope) { case "configured-channels": pluginIds = resolveConfiguredChannelPluginIds({ config: context.config, activationSourceConfig: context.activationSourceConfig, workspaceDir: context.workspaceDir, env: context.env }); break; case "channels": pluginIds = resolveChannelPluginIds({ config: context.config, workspaceDir: context.workspaceDir, env: context.env }); break; case "memory": pluginIds = resolveMemoryPluginIds(context); break; case "sandbox-backends": pluginIds = resolveSandboxBackendPluginIds(context, options?.persistedSandboxBackendIds); break; default: pluginIds = resolveEffectivePluginIds({ config: context.rawConfig, workspaceDir: context.workspaceDir, env: context.env }); } const activateConfigured = scope === "configured-channels" && pluginIds.length > 0; const config = activateConfigured ? withActivatedPluginIds({ config: context.config, pluginIds }) ?? context.config : context.config; const activationSourceConfig = activateConfigured ? withActivatedPluginIds({ config: context.activationSourceConfig, pluginIds }) ?? context.activationSourceConfig : context.activationSourceConfig; await loadAndActivateRootPluginRegistry(buildPluginRuntimeLoadOptions({ ...context, config, activationSourceConfig }, { throwOnLoadError: true, ...scope === "configured-channels" || scope === "memory" || scope === "sandbox-backends" || scope === "all" || hasNonEmptyPluginIdScope(pluginIds) ? { onlyPluginIds: pluginIds } : {} })); } //#endregion export { ensurePluginRegistryLoaded };