Files
openclaw-zero-token/security/config-regex.ts
sjhu 571e14a236 feat: upgrade to upstream v2026.3.28
Major upgrade from e26988a38 to upstream v2026.3.28 (f9b107928).
Key changes:
- Upstream src/, ui/, extensions/ (89 bundled extensions)
- Zero-token web providers preserved in src/zero-token/
- AskOnce plugin restored and registered as CLI command
- Added missing packages: @anthropic-ai/vertex-sdk, @modelcontextprotocol/sdk
- Fixed tsconfig rootDir, skipLibCheck for plugin-sdk DTS build
- Added askonce to bundled plugin metadata and package.json exports
- Fixed AskOnce CLI command registration (missing commands metadata)
- Restored AskOnce adapter imports (correct 5-level relative paths)
- Removed stale migration artifacts from root directory
2026-03-30 17:58:12 +08:00

79 lines
1.7 KiB
TypeScript

import {
compileSafeRegexDetailed,
type SafeRegexCompileResult,
type SafeRegexRejectReason,
} from "./safe-regex.js";
export type ConfigRegexRejectReason = Exclude<SafeRegexRejectReason, "empty">;
export type CompiledConfigRegex =
| {
regex: RegExp;
pattern: string;
flags: string;
reason: null;
}
| {
regex: null;
pattern: string;
flags: string;
reason: ConfigRegexRejectReason;
};
function normalizeRejectReason(result: SafeRegexCompileResult): ConfigRegexRejectReason | null {
if (result.reason === null || result.reason === "empty") {
return null;
}
return result.reason;
}
export function compileConfigRegex(pattern: string, flags = ""): CompiledConfigRegex | null {
const result = compileSafeRegexDetailed(pattern, flags);
if (result.reason === "empty") {
return null;
}
return {
regex: result.regex,
pattern: result.source,
flags: result.flags,
reason: normalizeRejectReason(result),
} as CompiledConfigRegex;
}
export function compileConfigRegexes(
patterns: string[],
flags = "",
): {
regexes: RegExp[];
rejected: Array<{
pattern: string;
flags: string;
reason: ConfigRegexRejectReason;
}>;
} {
const regexes: RegExp[] = [];
const rejected: Array<{
pattern: string;
flags: string;
reason: ConfigRegexRejectReason;
}> = [];
for (const pattern of patterns) {
const compiled = compileConfigRegex(pattern, flags);
if (!compiled) {
continue;
}
if (compiled.regex) {
regexes.push(compiled.regex);
continue;
}
rejected.push({
pattern: compiled.pattern,
flags: compiled.flags,
reason: compiled.reason,
});
}
return { regexes, rejected };
}