UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

43 lines (42 loc) • 2.7 kB
import { t as createSubsystemLogger } from "./subsystem-4NzR43uz.mjs"; import { l as getActivePluginRegistry } from "./runtime-U4i1bMh7.mjs"; import { n as getLoadedRuntimePluginRegistry } from "./active-runtime-registry-CjNvx8HI.mjs"; import { i as listAgentToolResultMiddlewares } from "./agent-tool-result-middleware-DQukgHqr.mjs"; import { n as loadPluginRegistryHandle } from "./loader-DD9YGElz.mjs"; //#region src/plugins/agent-tool-result-middleware-loader.ts const log = createSubsystemLogger("plugins/agent-tool-result-middleware"); function listRuntimeMiddlewareOwnerPluginIds(registry, runtime) { const pluginIds = /* @__PURE__ */ new Set(); for (const entry of registry?.agentToolResultMiddlewares ?? []) if (entry.runtimes.includes(runtime)) pluginIds.add(entry.pluginId); return pluginIds; } async function loadAgentToolResultMiddlewaresForRuntime(params) { const activeHandlers = listAgentToolResultMiddlewares(params.runtime); try { const activeRegistry = getActivePluginRegistry(); const activePluginIds = listRuntimeMiddlewareOwnerPluginIds(activeRegistry, params.runtime); const missingOwners = []; for (const owner of activeRegistry?.agentToolResultMiddlewareOwners ?? []) if (owner.runtimes.includes(params.runtime) && !activePluginIds.has(owner.pluginId) && !missingOwners.some((entry) => entry.pluginId === owner.pluginId)) missingOwners.push(owner); if (missingOwners.length === 0) return activeHandlers; const missingPluginIds = missingOwners.map((owner) => owner.pluginId); const missingPluginIdSet = new Set(missingPluginIds); const loadedRegistry = getLoadedRuntimePluginRegistry({ requiredPluginIds: missingPluginIds }); const loadedPluginIds = listRuntimeMiddlewareOwnerPluginIds(loadedRegistry, params.runtime); const missingHandlers = (loadedRegistry && missingPluginIds.every((pluginId) => loadedPluginIds.has(pluginId)) ? loadedRegistry : loadPluginRegistryHandle({ config: (await import("./config/config.js")).getRuntimeConfig(), onlyPluginIds: missingPluginIds, manifestRegistry: { plugins: missingOwners.map((owner) => owner.manifest), diagnostics: [] }, channelPluginLoadIntent: "full" })).agentToolResultMiddlewares.filter((entry) => missingPluginIdSet.has(entry.pluginId) && entry.runtimes.includes(params.runtime)).map((entry) => entry.handler); return [...activeHandlers, ...missingHandlers]; } catch (error) { const detail = error instanceof Error ? error.message : String(error); log.warn(`[${params.runtime}] failed to load tool result middleware plugins: ${detail}`); return listAgentToolResultMiddlewares(params.runtime); } } //#endregion export { loadAgentToolResultMiddlewaresForRuntime };