openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
90 lines (89 loc) • 4.68 kB
JavaScript
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 };