Files
openclaw/src/plugins/tool-contracts.ts
2026-05-02 06:21:08 +01:00

27 lines
845 B
TypeScript

import type { PluginManifestContracts } from "./manifest.js";
export function normalizePluginToolContractNames(
contracts: Pick<PluginManifestContracts, "tools"> | undefined,
): string[] {
return normalizePluginToolNames(contracts?.tools);
}
export function normalizePluginToolNames(names: readonly string[] | undefined): string[] {
const normalized = new Set<string>();
for (const name of names ?? []) {
const trimmed = name.trim();
if (trimmed) {
normalized.add(trimmed);
}
}
return [...normalized];
}
export function findUndeclaredPluginToolNames(params: {
declaredNames: readonly string[];
toolNames: readonly string[];
}): string[] {
const declared = new Set(normalizePluginToolNames(params.declaredNames));
return normalizePluginToolNames(params.toolNames).filter((name) => !declared.has(name));
}