UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

90 lines (89 loc) 4.68 kB
import { l as normalizeSortedUniqueStringEntries } from "./string-normalization-DsCfAx8q.js"; import { i as getGatewayPluginMetadataSnapshot } from "./current-plugin-metadata-state-B1UoAr4G.js"; import { t as findBundledPluginMetadataById } from "./bundled-plugin-metadata-DpCt5e_p.js"; import { n as discoverOpenClawPlugins } from "./discovery-D_VDsZuY.js"; import { n as loadPluginManifestRegistryCore } from "./manifest-registry-DCCgYk7q.js"; import "./config-contract-matches-CISXlkyE.js"; import { n as loadPluginManifestRegistryForPluginRegistry } from "./plugin-registry-contributions-BwuDvm89.js"; import "./plugin-registry-DD_0nL_t.js"; //#region src/plugins/config-contracts.ts /** Resolves plugin config contract metadata for scanners and secret/config policy checks. */ /** Resolve config contract metadata for plugin ids through the runtime registry and bundled fallback. */ function resolvePluginConfigContractsById(params) { const matches = /* @__PURE__ */ new Map(); const pluginIds = normalizeSortedUniqueStringEntries(params.pluginIds); if (pluginIds.length === 0) return matches; const fallbackBundledPluginIds = new Set(normalizeSortedUniqueStringEntries(params.fallbackBundledPluginIds)); const bundledContractFallbacks = /* @__PURE__ */ new Map(); const snapshot = params.discovery ? void 0 : getGatewayPluginMetadataSnapshot(); const findBundledConfigContracts = (pluginId) => { if (snapshot) return snapshot.bundledManifestRegistry?.plugins.find((plugin) => plugin.id === pluginId)?.configContracts; if (bundledContractFallbacks.has(pluginId)) return bundledContractFallbacks.get(pluginId); const discovery = params.discovery ?? discoverOpenClawPlugins({ workspaceDir: params.workspaceDir, env: params.env }); const registry = loadPluginManifestRegistryCore({ config: params.config, workspaceDir: params.workspaceDir, env: params.env, candidates: discovery.candidates.filter((candidate) => candidate.origin === "bundled"), diagnostics: discovery.diagnostics }); for (const plugin of registry.plugins) bundledContractFallbacks.set(plugin.id, plugin.configContracts); if (bundledContractFallbacks.get(pluginId) === void 0) { const bundledMetadata = findBundledPluginMetadataById(pluginId, { includeChannelConfigs: false, includeSyntheticChannelConfigs: false }); if (bundledMetadata?.manifest.configContracts) bundledContractFallbacks.set(pluginId, bundledMetadata.manifest.configContracts); } if (!bundledContractFallbacks.has(pluginId)) bundledContractFallbacks.set(pluginId, void 0); return bundledContractFallbacks.get(pluginId); }; const resolvedPluginOrigins = /* @__PURE__ */ new Map(); const registry = params.manifestRegistry ?? snapshot?.manifestRegistry ?? loadPluginManifestRegistryForPluginRegistry({ config: params.config, workspaceDir: params.workspaceDir, env: params.env, includeDisabled: true }); for (const plugin of registry.plugins) { if (!pluginIds.includes(plugin.id)) continue; resolvedPluginOrigins.set(plugin.id, plugin.origin); if (!plugin.configContracts) continue; matches.set(plugin.id, { origin: plugin.origin, configContracts: plugin.configContracts }); } if (params.fallbackToBundledMetadata ?? true) for (const pluginId of pluginIds) { const existing = matches.get(pluginId); if (existing && (params.fallbackToBundledMetadataForResolvedBundled && existing.origin === "bundled" || !params.manifestRegistry && fallbackBundledPluginIds.has(pluginId))) { const bundledConfigContracts = findBundledConfigContracts(pluginId); if (bundledConfigContracts) matches.set(pluginId, { origin: fallbackBundledPluginIds.has(pluginId) ? "bundled" : existing.origin, configContracts: { ...bundledConfigContracts, ...existing.configContracts, ...bundledConfigContracts.secretInputs ? { secretInputs: bundledConfigContracts.secretInputs } : {} } }); continue; } if (matches.has(pluginId)) continue; const resolvedOrigin = resolvedPluginOrigins.get(pluginId); if (resolvedOrigin && !(params.fallbackToBundledMetadataForResolvedBundled && resolvedOrigin === "bundled") && !fallbackBundledPluginIds.has(pluginId)) continue; if (params.manifestRegistry && resolvedOrigin && resolvedOrigin !== "bundled") continue; if (params.manifestRegistry && !fallbackBundledPluginIds.has(pluginId)) continue; const bundledConfigContracts = findBundledConfigContracts(pluginId); if (!bundledConfigContracts) continue; matches.set(pluginId, { origin: "bundled", configContracts: bundledConfigContracts }); } return matches; } //#endregion export { resolvePluginConfigContractsById as t };