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