UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

98 lines (97 loc) 5.39 kB
import { t as unwrapDefaultModuleExport } from "./module-export-DsZgGIbX.js"; import { t as isChannelConfigured } from "./channel-configured-tJYqancm.js"; //#region src/plugins/loader-channel-setup.ts function mergeChannelPluginSection(baseValue, overrideValue) { if (baseValue && overrideValue && typeof baseValue === "object" && typeof overrideValue === "object") { const merged = { ...baseValue }; for (const [key, value] of Object.entries(overrideValue)) if (value !== void 0) merged[key] = value; return { ...merged }; } return overrideValue ?? baseValue; } function mergeSetupRuntimeChannelPlugin(runtimePlugin, setupPlugin) { return { ...runtimePlugin, ...setupPlugin, meta: mergeChannelPluginSection(runtimePlugin.meta, setupPlugin.meta), capabilities: mergeChannelPluginSection(runtimePlugin.capabilities, setupPlugin.capabilities), commands: mergeChannelPluginSection(runtimePlugin.commands, setupPlugin.commands), doctor: mergeChannelPluginSection(runtimePlugin.doctor, setupPlugin.doctor), reload: mergeChannelPluginSection(runtimePlugin.reload, setupPlugin.reload), config: mergeChannelPluginSection(runtimePlugin.config, setupPlugin.config), setup: mergeChannelPluginSection(runtimePlugin.setup, setupPlugin.setup), messaging: mergeChannelPluginSection(runtimePlugin.messaging, setupPlugin.messaging), actions: mergeChannelPluginSection(runtimePlugin.actions, setupPlugin.actions), secrets: mergeChannelPluginSection(runtimePlugin.secrets, setupPlugin.secrets) }; } function resolveBundledRuntimeChannelRegistration(moduleExport) { const resolved = unwrapDefaultModuleExport(moduleExport); if (!resolved || typeof resolved !== "object") return {}; const entryRecord = resolved; if (entryRecord.kind !== "bundled-channel-entry" || typeof entryRecord.id !== "string" || typeof entryRecord.loadChannelPlugin !== "function") return {}; return { id: entryRecord.id, loadChannelPlugin: entryRecord.loadChannelPlugin, ...typeof entryRecord.loadChannelSecrets === "function" ? { loadChannelSecrets: entryRecord.loadChannelSecrets } : {}, ...typeof entryRecord.setChannelRuntime === "function" ? { setChannelRuntime: entryRecord.setChannelRuntime } : {} }; } function loadBundledRuntimeChannelPlugin(params) { if (typeof params.registration.loadChannelPlugin !== "function") return {}; try { const loadedPlugin = params.registration.loadChannelPlugin(); const loadedSecrets = params.registration.loadChannelSecrets?.(); if (!loadedPlugin || typeof loadedPlugin !== "object") return {}; const mergedSecrets = mergeChannelPluginSection(loadedPlugin.secrets, loadedSecrets); return { plugin: { ...loadedPlugin, ...mergedSecrets !== void 0 ? { secrets: mergedSecrets } : {} } }; } catch (err) { return { loadError: err }; } } function resolveSetupChannelRegistration(moduleExport) { const resolved = unwrapDefaultModuleExport(moduleExport); if (!resolved || typeof resolved !== "object") return {}; const setupEntryRecord = resolved; if (setupEntryRecord.kind === "bundled-channel-setup-entry" && typeof setupEntryRecord.loadSetupPlugin === "function") try { const loadedPlugin = setupEntryRecord.loadSetupPlugin(); const loadedSecrets = typeof setupEntryRecord.loadSetupSecrets === "function" ? setupEntryRecord.loadSetupSecrets() : void 0; if (loadedPlugin && typeof loadedPlugin === "object") { const mergedSecrets = mergeChannelPluginSection(loadedPlugin.secrets, loadedSecrets); return { plugin: { ...loadedPlugin, ...mergedSecrets !== void 0 ? { secrets: mergedSecrets } : {} }, usesBundledSetupContract: true, ...typeof setupEntryRecord.setChannelRuntime === "function" ? { setChannelRuntime: setupEntryRecord.setChannelRuntime } : {}, ...typeof setupEntryRecord.registerSetupRuntime === "function" ? { registerSetupRuntime: setupEntryRecord.registerSetupRuntime } : {} }; } } catch (err) { return { loadError: err }; } const setup = resolved; if (!setup.plugin || typeof setup.plugin !== "object") return {}; return { plugin: setup.plugin, ...typeof setup.setChannelRuntime === "function" ? { setChannelRuntime: setup.setChannelRuntime } : {} }; } function shouldLoadChannelPluginInSetupRuntime(params) { if (!params.setupSource || params.manifestChannels.length === 0) return false; if (params.preferSetupRuntimeForChannelPlugins && params.startupDeferConfiguredChannelFullLoadUntilAfterListen === true) return true; return !params.manifestChannels.some((channelId) => isChannelConfigured(params.cfg, channelId, params.env)); } function shouldDeferConfiguredChannelFullRuntimeMerge(params) { return params.preferSetupRuntimeForChannelPlugins === true && params.startupDeferConfiguredChannelFullLoadUntilAfterListen === true && params.manifestChannels.some((channelId) => isChannelConfigured(params.cfg, channelId, params.env)); } function channelPluginIdBelongsToManifest(params) { if (!params.channelId) return true; return params.channelId === params.pluginId || params.manifestChannels.includes(params.channelId); } //#endregion export { resolveSetupChannelRegistration as a, resolveBundledRuntimeChannelRegistration as i, loadBundledRuntimeChannelPlugin as n, shouldDeferConfiguredChannelFullRuntimeMerge as o, mergeSetupRuntimeChannelPlugin as r, shouldLoadChannelPluginInSetupRuntime as s, channelPluginIdBelongsToManifest as t };