openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
71 lines (70 loc) • 3.28 kB
JavaScript
import { n as collectUniqueCommandDescriptors } from "./command-descriptor-utils-DII8rwLT.js";
import { t as normalizePluginPolicyId } from "./plugin-policy-id-4QxPdFqy.js";
import { i as isInstalledPluginEnabled } from "./installed-plugin-index-wrDsjyMD.js";
import { r as hasKind } from "./slots-CQdAEuat.js";
import { l as normalizePluginsConfig, p as resolveMemorySlotDecision } from "./config-state-BkU1frVq.js";
import { h as validatePluginConfig } from "./loader-shared-_jCvj6B_.js";
import { t as buildPluginRuntimeLoadOptions } from "./load-context-BdeWeJHL.js";
import { t as resolvePluginRuntimeLoadContext } from "./load-context.resolve-O967gh1f.js";
//#region src/plugins/cli-root-descriptors.ts
/** Resolves root CLI help from process-stable manifests before plugin code loads. */
const quietLogger = {
info: () => {},
warn: () => {},
error: () => {},
debug: () => {}
};
async function getPluginCliCommandDescriptors(cfg, env, loaderOptions) {
const descriptorGroups = [];
try {
const context = resolvePluginRuntimeLoadContext({
config: cfg,
env,
logger: quietLogger
});
const snapshot = context.metadataSnapshot;
if (!snapshot) return [];
const legacyExternalPluginIds = [];
const seenPluginIds = /* @__PURE__ */ new Set();
let selectedMemoryPluginId = null;
const memorySlot = context.config.plugins?.slots?.memory;
const normalizedConfig = normalizePluginsConfig(context.config.plugins);
const sourceConfig = normalizePluginsConfig(context.activationSourceConfig.plugins);
for (const plugin of snapshot.plugins) {
if (seenPluginIds.has(plugin.id)) continue;
seenPluginIds.add(plugin.id);
if (!isInstalledPluginEnabled(snapshot.index, plugin.id, context.config, context.env)) continue;
const pluginConfig = normalizedConfig.entries[normalizePluginPolicyId(plugin.id)]?.config;
if (!validatePluginConfig({
origin: plugin.origin,
schema: plugin.configSchema,
cacheKey: plugin.schemaCacheKey,
value: pluginConfig,
sourceValue: plugin.configContracts?.secretInputs ? sourceConfig.entries[normalizePluginPolicyId(plugin.id)]?.config : void 0
}).ok) continue;
const memoryDecision = resolveMemorySlotDecision({
id: plugin.id,
kind: plugin.kind,
slot: memorySlot,
selectedId: selectedMemoryPluginId
});
if (!memoryDecision.enabled) continue;
if (memoryDecision.selected && hasKind(plugin.kind, "memory")) selectedMemoryPluginId = plugin.id;
if (plugin.cliCommands) descriptorGroups.push(plugin.cliCommands);
else if (plugin.origin !== "bundled" && plugin.format !== "bundle") legacyExternalPluginIds.push(plugin.id);
}
if (legacyExternalPluginIds.length > 0) {
const { loadOpenClawPluginCliRegistry } = await import("./plugins/loader.js");
const registry = await loadOpenClawPluginCliRegistry(buildPluginRuntimeLoadOptions(context, {
...loaderOptions,
onlyPluginIds: legacyExternalPluginIds
}));
descriptorGroups.push(...registry.cliRegistrars.filter((entry) => (entry.parentPath ?? []).length === 0).map((entry) => entry.descriptors));
}
return collectUniqueCommandDescriptors(descriptorGroups);
} catch {
return collectUniqueCommandDescriptors(descriptorGroups);
}
}
//#endregion
export { getPluginCliCommandDescriptors as t };