UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

160 lines (159 loc) 7.86 kB
import "./agent-scope-MrLta7Pq.js"; import { c as resolveDefaultAgentId, o as resolveAgentWorkspaceDir } from "./agent-scope-config-CgCYpZfK.js"; import { r as collectUnregisteredConfiguredMemoryEmbeddingProviders } from "./gateway-startup-plugin-ids-3X_G47Qt.js"; import { s as listCoreGatewayMethodNames } from "./core-descriptors-CqQ0q50E.js"; import { t as applyPluginAutoEnable } from "./plugin-auto-enable-pAtqig-B.js"; import { j as listRegisteredEmbeddingProviders } from "./registry-CYsBNH12.js"; import { I as createEmptyPluginRegistry, S as setActivePluginRegistry, o as getActivePluginRegistry } from "./runtime-B2ROiq5l.js"; import "./channel-plugin-ids-yxLDmEfb.js"; import { n as loadPluginLookUpTable } from "./plugin-lookup-table-BiEbugjx.js"; import { l as initSubagentRegistry } from "./subagent-registry-BeWX0MLH.js"; import { t as mergeActivationSectionsIntoRuntimeConfig } from "./plugin-activation-runtime-config-ChqOWNk0.js"; import { n as listGatewayMethods } from "./server-methods-list-BcMuybf7.js"; //#region src/gateway/server-startup-plugins.ts /** Returns the config snapshot used by channel/plugin startup maintenance. */ function resolveGatewayStartupMaintenanceConfig(params) { return params.cfgAtStart.channels === void 0 && params.startupRuntimeConfig.channels !== void 0 ? { ...params.cfgAtStart, channels: params.startupRuntimeConfig.channels } : params.cfgAtStart; } /** Builds plugin startup state and gateway method lists before the server binds. */ async function prepareGatewayPluginBootstrap(params) { const activationSourceConfig = params.activationSourceConfig ?? params.cfgAtStart; const startupMaintenanceConfig = resolveGatewayStartupMaintenanceConfig({ cfgAtStart: params.cfgAtStart, startupRuntimeConfig: params.startupRuntimeConfig }); if (!params.minimalTestGateway || startupMaintenanceConfig.channels !== void 0) { const { runChannelPluginStartupMaintenance } = await import("./lifecycle-startup-N35VfyFt.js"); const startupTasks = [runChannelPluginStartupMaintenance({ cfg: startupMaintenanceConfig, env: process.env, log: params.log })]; if (!params.minimalTestGateway) { const { runStartupSessionMigration } = await import("./server-startup-session-migration-2nZaRbhW.js"); startupTasks.push(runStartupSessionMigration({ cfg: params.cfgAtStart, env: process.env, log: params.log })); } await Promise.all(startupTasks); } initSubagentRegistry(); const gatewayPluginConfig = params.minimalTestGateway ? params.cfgAtStart : mergeActivationSectionsIntoRuntimeConfig({ runtimeConfig: params.cfgAtStart, activationConfig: applyPluginAutoEnable({ config: activationSourceConfig, env: process.env, ...params.pluginMetadataSnapshot?.manifestRegistry ? { manifestRegistry: params.pluginMetadataSnapshot.manifestRegistry } : {}, discovery: params.pluginMetadataSnapshot?.discovery }).config }); const pluginsGloballyDisabled = gatewayPluginConfig.plugins?.enabled === false; const defaultWorkspaceDir = resolveAgentWorkspaceDir(gatewayPluginConfig, resolveDefaultAgentId(gatewayPluginConfig)); const pluginLookUpTable = params.minimalTestGateway || pluginsGloballyDisabled ? void 0 : loadPluginLookUpTable({ config: gatewayPluginConfig, workspaceDir: defaultWorkspaceDir, env: process.env, activationSourceConfig, metadataSnapshot: params.pluginMetadataSnapshot }); const deferredConfiguredChannelPluginIds = [...pluginLookUpTable?.startup.configuredDeferredChannelPluginIds ?? []]; const startupPluginIds = [...pluginLookUpTable?.startup.pluginIds ?? []]; const baseMethods = listGatewayMethods(); const coreGatewayMethodNames = listCoreGatewayMethodNames(); const emptyPluginRegistry = createEmptyPluginRegistry(); let pluginRegistry; let baseGatewayMethods = baseMethods; const shouldLoadRuntimePlugins = params.loadRuntimePlugins !== false; const shouldLoadSetupRuntimePlugins = params.loadSetupRuntimePlugins === true && deferredConfiguredChannelPluginIds.length > 0; if (!params.minimalTestGateway && shouldLoadSetupRuntimePlugins) ({pluginRegistry, gatewayMethods: baseGatewayMethods} = await loadGatewayStartupPluginRuntime({ cfg: gatewayPluginConfig, activationSourceConfig, workspaceDir: defaultWorkspaceDir, log: params.log, baseMethods, coreGatewayMethodNames, startupPluginIds: deferredConfiguredChannelPluginIds, pluginLookUpTable, preferSetupRuntimeForChannelPlugins: true, suppressPluginInfoLogs: true })); else if (!params.minimalTestGateway && shouldLoadRuntimePlugins) ({pluginRegistry, gatewayMethods: baseGatewayMethods} = await loadGatewayStartupPluginRuntime({ cfg: gatewayPluginConfig, activationSourceConfig, workspaceDir: defaultWorkspaceDir, log: params.log, baseMethods, coreGatewayMethodNames, startupPluginIds, pluginLookUpTable, preferSetupRuntimeForChannelPlugins: false, suppressPluginInfoLogs: false })); else { pluginRegistry = params.minimalTestGateway ? getActivePluginRegistry() ?? emptyPluginRegistry : emptyPluginRegistry; setActivePluginRegistry(pluginRegistry); } const runtimePluginsLoaded = !params.minimalTestGateway && shouldLoadRuntimePlugins && !shouldLoadSetupRuntimePlugins; return { gatewayPluginConfigAtStart: gatewayPluginConfig, defaultWorkspaceDir, deferredConfiguredChannelPluginIds, startupPluginIds, pluginLookUpTable, baseMethods, pluginRegistry, baseGatewayMethods, runtimePluginsLoaded }; } /** * Warn when `agents.*.memorySearch.provider` selects a memory embedding provider * that no loaded plugin registered. Without the owning plugin, `active-memory` * cannot embed and silently falls back to keyword/FTS-only recall. */ function warnUnregisteredConfiguredMemoryEmbeddingProviders(params) { const registeredProviderIds = new Set([ ...params.pluginRegistry.memoryEmbeddingProviders ?? [], ...params.pluginRegistry.embeddingProviders ?? [], ...listRegisteredEmbeddingProviders().map((entry) => ({ provider: entry.adapter })) ].map((entry) => entry.provider.id)); const unregistered = collectUnregisteredConfiguredMemoryEmbeddingProviders({ config: params.config, registeredProviderIds }); for (const provider of unregistered) { const path = `memorySearch.${provider.source}`; params.log.warn(`${path}="${provider.configuredId}" is configured, but no loaded plugin registered a memory embedding provider that can serve "${provider.configuredId}". Semantic memory recall will fall back to keyword/FTS-only search. Ensure the plugin that provides "${provider.configuredId}" is installed and enabled.`); } } /** Loads startup plugin runtimes through the deferred bootstrap boundary. */ async function loadGatewayStartupPluginRuntime(params) { const { loadGatewayStartupPlugins } = await import("./server-plugin-bootstrap-C1t0ZYOK.js"); const loaded = loadGatewayStartupPlugins({ cfg: params.cfg, activationSourceConfig: params.activationSourceConfig, workspaceDir: params.workspaceDir, log: params.log, coreGatewayMethodNames: params.coreGatewayMethodNames ?? params.baseMethods, baseMethods: params.baseMethods, ...params.hostServices !== void 0 && { hostServices: params.hostServices }, pluginIds: params.startupPluginIds, pluginLookUpTable: params.pluginLookUpTable, preferSetupRuntimeForChannelPlugins: params.preferSetupRuntimeForChannelPlugins, suppressPluginInfoLogs: params.suppressPluginInfoLogs, startupTrace: params.startupTrace }); if (params.preferSetupRuntimeForChannelPlugins !== true) warnUnregisteredConfiguredMemoryEmbeddingProviders({ config: params.cfg, pluginRegistry: loaded.pluginRegistry, log: params.log }); return loaded; } //#endregion export { loadGatewayStartupPluginRuntime, prepareGatewayPluginBootstrap, resolveGatewayStartupMaintenanceConfig, warnUnregisteredConfiguredMemoryEmbeddingProviders };