- Parse --full as exact token in /changelog command - Scope MCP disabled list to discovered servers only - Guard malformed disabledServers config field - Parse regex literal /pattern/flags syntax in secret entries - Prevent infinite loop on zero-length regex matches - Replace longer plain secrets before shorter prefixes - Default secrets.enabled to false
22 lines
827 B
TypeScript
22 lines
827 B
TypeScript
/** Add global flag while preserving user-provided flags. */
|
|
function enforceGlobalFlag(flags: string): string {
|
|
return flags.includes("g") ? flags : `${flags}g`;
|
|
}
|
|
|
|
/** Compile a secret regex entry with global scanning enabled by default. */
|
|
export function compileSecretRegex(pattern: string, flags?: string): RegExp {
|
|
let resolvedPattern = pattern;
|
|
let resolvedFlags = flags ?? "";
|
|
|
|
// Detect regex literal syntax: /pattern/flags
|
|
const literalMatch = /^\/((?:[^\\/]|\\.)*)\/([ gimsuy]*)$/.exec(pattern);
|
|
if (literalMatch) {
|
|
resolvedPattern = literalMatch[1];
|
|
// Merge flags from literal with explicit flags param (deduplicate)
|
|
const combined = new Set([...resolvedFlags, ...literalMatch[2]]);
|
|
resolvedFlags = [...combined].join("");
|
|
}
|
|
|
|
return new RegExp(resolvedPattern, enforceGlobalFlag(resolvedFlags));
|
|
}
|