HuggingClaw-MissionControl / src /lib /exec-approval-utils.ts
nyk
feat(refactor): ready for manual QA after main sync (#274)
b6ecafa unverified
/**
* Glob-style pattern matching for exec approval allowlists.
* Supports `*` as a wildcard that matches any characters.
*/
export function matchesGlobPattern(pattern: string, command: string): boolean {
const p = pattern.toLowerCase().trim()
const c = command.toLowerCase().trim()
if (!p) return false
if (p === c) return true
if (!p.includes('*')) return false
const regex = new RegExp('^' + p.replace(/[.+^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '.*') + '$')
return regex.test(c)
}
/**
* Find all patterns from a list that match a given command.
*/
export function findMatchingPatterns(patterns: string[], command: string): string[] {
return patterns.filter(pattern => matchesGlobPattern(pattern, command))
}