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); }; }