File size: 805 Bytes
fc93158 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import { compileGlobPatterns, matchesAnyGlobPattern } from "../../glob-pattern.js";
import type { ContextPruningToolMatch } from "./settings.js";
function normalizeGlob(value: string) {
return String(value ?? "")
.trim()
.toLowerCase();
}
export function makeToolPrunablePredicate(
match: ContextPruningToolMatch,
): (toolName: string) => boolean {
const deny = compileGlobPatterns({ raw: match.deny, normalize: normalizeGlob });
const allow = compileGlobPatterns({ raw: match.allow, normalize: normalizeGlob });
return (toolName: string) => {
const normalized = normalizeGlob(toolName);
if (matchesAnyGlobPattern(normalized, deny)) {
return false;
}
if (allow.length === 0) {
return true;
}
return matchesAnyGlobPattern(normalized, allow);
};
}
|