Verified: - pnpm install --frozen-lockfile - pnpm build - gh pr checks 24199 --watch --fail-fast Co-authored-by: Takhoffman <781889+Takhoffman@users.noreply.github.com> Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
50 lines
1.2 KiB
TypeScript
50 lines
1.2 KiB
TypeScript
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 = name.trim().toLowerCase();
|
|
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 };
|