UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

132 lines (131 loc) 7.09 kB
import { l as normalizeSortedUniqueStringEntries } from "./string-normalization-DsCfAx8q.js"; import { t as createInstalledPluginEnabledPredicate } from "./installed-plugin-index-wrDsjyMD.js"; import { n as normalizePluginsConfigWithResolverCore } from "./config-normalization-shared-D4lufwW0.js"; import { a as loadPluginRegistrySnapshotWithMetadata, i as loadPluginRegistrySnapshot } from "./plugin-registry-snapshot-Dy15Ew18.js"; import { t as loadPluginManifestRegistryForInstalledIndex } from "./manifest-registry-installed-DdhpzefH.js"; import { c as resolvePluginMetadataSnapshot, d as createPluginRegistryIdNormalizer } from "./plugin-metadata-snapshot-w-4EjxI4.js"; //#region src/plugins/plugin-registry-contributions.ts /** Loads manifest and installed-index contributions used to build plugin registry snapshots. */ function normalizeContributionId(value) { return value.trim(); } function collectObjectKeys(value) { return value ? Object.keys(value) : []; } function collectContractKeys(plugin) { const contracts = plugin.contracts; if (!contracts) return []; return Object.entries(contracts).flatMap(([key, value]) => Array.isArray(value) && value.length > 0 ? [key] : []); } function listManifestContractValues(plugin, contract) { return plugin.contracts?.[contract] ?? []; } function loadManifestContractRecords(params) { let records = params.manifestRecords; if (!records) { if (params.index !== void 0 || params.preferPersisted === false || params.allowCurrent === false || params.stateDir !== void 0 || params.filePath !== void 0 || params.pluginIndexFilePath !== void 0 || params.installRecords !== void 0 || params.candidates !== void 0 || params.diagnostics !== void 0 || params.discovery !== void 0 || params.now !== void 0) return loadPluginManifestRegistryForPluginRegistry({ ...params, pluginIds: params.onlyPluginIds, includeDisabled: true }).plugins; records = resolvePluginMetadataSnapshot({ config: params.config, env: params.env, ...params.workspaceDir !== void 0 ? { workspaceDir: params.workspaceDir } : {}, allowWorkspaceScopedCurrent: params.workspaceDir === void 0 }).plugins; } if (params.onlyPluginIds === void 0) return records; const pluginIds = new Set(params.onlyPluginIds); return records.filter((record) => pluginIds.has(record.id)); } function listManifestContributionIds(plugin, contribution) { switch (contribution) { case "providers": return plugin.providers; case "channels": return plugin.channels; case "channelConfigs": return collectObjectKeys(plugin.channelConfigs); case "setupProviders": return plugin.setup?.providers?.map((provider) => provider.id) ?? []; case "cliBackends": return [...plugin.cliBackends, ...plugin.setup?.cliBackends ?? []]; case "modelCatalogProviders": return [...collectObjectKeys(plugin.modelCatalog?.providers), ...collectObjectKeys(plugin.modelCatalog?.aliases)]; case "commandAliases": return plugin.commandAliases?.map((alias) => alias.name) ?? []; case "contracts": return collectContractKeys(plugin); } return []; } function createContributionPluginFilter(params, index) { if (params.includeDisabled) { const installedPluginIds = new Set(index.plugins.map((plugin) => plugin.pluginId)); return (pluginId) => installedPluginIds.has(pluginId); } return createInstalledPluginEnabledPredicate(index.plugins, params.config, params.env); } function loadContributionManifestRegistry(params) { const pluginIds = params.index.plugins.map((plugin) => plugin.pluginId); return loadPluginManifestRegistryForInstalledIndex({ index: params.index, config: params.config, workspaceDir: params.workspaceDir, env: params.env, pluginIds: params.includeDisabled ? pluginIds : pluginIds.filter(createInstalledPluginEnabledPredicate(params.index.plugins, params.config, params.env)), includeDisabled: true }); } function listContributionManifestPlugins(params) { const plugins = params.lookUpTable?.plugins; if (plugins) { const includePlugin = createContributionPluginFilter(params, params.index); return plugins.filter((plugin) => includePlugin(plugin.id)); } return loadContributionManifestRegistry({ ...params, index: params.index }).plugins; } function loadPluginManifestRegistryForPluginRegistry(params = {}) { const { snapshot: index, manifestRegistry } = loadPluginRegistrySnapshotWithMetadata(params); return loadPluginManifestRegistryForInstalledIndex({ index, ...manifestRegistry ? { manifestRegistry } : {}, config: params.config, workspaceDir: params.workspaceDir, env: params.env, pluginIds: params.pluginIds, includeDisabled: params.includeDisabled, ...params.bundledChannelConfigCollector ? { bundledChannelConfigCollector: params.bundledChannelConfigCollector } : {} }); } function normalizePluginsConfigWithRegistry(config, index, options = {}) { return normalizePluginsConfigWithResolverCore(config, createPluginRegistryIdNormalizer(index, options)); } function listPluginContributionIds(params) { const index = params.lookUpTable?.index ?? loadPluginRegistrySnapshot(params); const plugins = listContributionManifestPlugins({ ...params, index }); return normalizeSortedUniqueStringEntries(plugins.flatMap((plugin) => listManifestContributionIds(plugin, params.contribution))); } function resolvePluginContributionOwners(params) { const index = params.lookUpTable?.index ?? loadPluginRegistrySnapshot(params); if (params.lookUpTable && typeof params.matches === "string") { const owners = params.lookUpTable.owners[params.contribution].get(params.matches); if (!owners) return []; return normalizeSortedUniqueStringEntries(owners.filter(createContributionPluginFilter(params, index))); } const matcher = typeof params.matches === "string" ? (contributionId) => contributionId === params.matches : params.matches; const plugins = listContributionManifestPlugins({ ...params, index }); return normalizeSortedUniqueStringEntries(plugins.flatMap((plugin) => listManifestContributionIds(plugin, params.contribution).some(matcher) ? [plugin.id] : [])); } function resolveManifestContractPluginIds(params) { return loadManifestContractRecords(params).filter((plugin) => (!params.origin || plugin.origin === params.origin) && listManifestContractValues(plugin, params.contract).length > 0).map((plugin) => plugin.id).toSorted((left, right) => left.localeCompare(right)); } function resolveManifestContractOwnerPluginId(params) { const normalizedValue = normalizeContributionId(params.value ?? "").toLowerCase(); if (!normalizedValue) return; return loadManifestContractRecords(params).find((plugin) => (!params.origin || plugin.origin === params.origin) && listManifestContractValues(plugin, params.contract).some((candidate) => normalizeContributionId(candidate).toLowerCase() === normalizedValue))?.id; } //#endregion export { resolveManifestContractPluginIds as a, resolveManifestContractOwnerPluginId as i, loadPluginManifestRegistryForPluginRegistry as n, resolvePluginContributionOwners as o, normalizePluginsConfigWithRegistry as r, listPluginContributionIds as t };