mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-26 00:21:59 +00:00
51 lines
1.2 KiB
TypeScript
51 lines
1.2 KiB
TypeScript
import { normalizeLowercaseStringOrEmpty } from "../shared/string-coerce.js";
|
|
import {
|
|
CORE_TOOL_GROUPS,
|
|
resolveCoreToolProfilePolicy,
|
|
type ToolProfileId,
|
|
} from "./tool-catalog.js";
|
|
|
|
type ToolProfilePolicy = {
|
|
allow?: string[];
|
|
deny?: string[];
|
|
};
|
|
|
|
const TOOL_NAME_ALIASES: Record<string, string> = {
|
|
bash: "exec",
|
|
"apply-patch": "apply_patch",
|
|
};
|
|
|
|
export const TOOL_GROUPS: Record<string, string[]> = { ...CORE_TOOL_GROUPS };
|
|
|
|
export function normalizeToolName(name: string) {
|
|
const normalized = normalizeLowercaseStringOrEmpty(name);
|
|
return TOOL_NAME_ALIASES[normalized] ?? normalized;
|
|
}
|
|
|
|
export function normalizeToolList(list?: string[]) {
|
|
if (!list) {
|
|
return [];
|
|
}
|
|
return list.map(normalizeToolName).filter(Boolean);
|
|
}
|
|
|
|
export function expandToolGroups(list?: string[]) {
|
|
const normalized = normalizeToolList(list);
|
|
const expanded: string[] = [];
|
|
for (const value of normalized) {
|
|
const group = TOOL_GROUPS[value];
|
|
if (group) {
|
|
expanded.push(...group);
|
|
continue;
|
|
}
|
|
expanded.push(value);
|
|
}
|
|
return Array.from(new Set(expanded));
|
|
}
|
|
|
|
export function resolveToolProfilePolicy(profile?: string): ToolProfilePolicy | undefined {
|
|
return resolveCoreToolProfilePolicy(profile);
|
|
}
|
|
|
|
export type { ToolProfileId };
|