agent-threat-rules 4.2.1 → 4.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +246 -0
- package/dist/converters/elastic.d.ts.map +1 -1
- package/dist/converters/elastic.js +7 -1
- package/dist/converters/elastic.js.map +1 -1
- package/dist/converters/generic-regex.d.ts +5 -1
- package/dist/converters/generic-regex.d.ts.map +1 -1
- package/dist/converters/generic-regex.js +12 -11
- package/dist/converters/generic-regex.js.map +1 -1
- package/dist/converters/sage-reverse.d.ts +1 -1
- package/dist/converters/sage-reverse.d.ts.map +1 -1
- package/dist/converters/sage-reverse.js +13 -8
- package/dist/converters/sage-reverse.js.map +1 -1
- package/dist/converters/sage.d.ts +8 -8
- package/dist/converters/sage.d.ts.map +1 -1
- package/dist/converters/sage.js +107 -74
- package/dist/converters/sage.js.map +1 -1
- package/dist/converters/splunk.d.ts.map +1 -1
- package/dist/converters/splunk.js +17 -3
- package/dist/converters/splunk.js.map +1 -1
- package/dist/engine.d.ts +8 -48
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +13 -57
- package/dist/engine.js.map +1 -1
- package/dist/regex-dialect.d.ts +67 -0
- package/dist/regex-dialect.d.ts.map +1 -0
- package/dist/regex-dialect.js +77 -0
- package/dist/regex-dialect.js.map +1 -0
- package/package.json +1 -1
- package/rules/agent-manipulation/ATR-2026-00074-cross-agent-privilege-escalation.yaml +0 -1
- package/rules/agent-manipulation/ATR-2026-00430-nl-trust-escalation-impersonation.yaml +3 -0
- package/rules/agent-manipulation/ATR-2026-00552-goal-drift-after-pressure-injection.yaml +3 -3
- package/rules/context-exfiltration/ATR-2026-00102-disguised-analytics-exfiltration.yaml +3 -2
- package/rules/context-exfiltration/ATR-2026-00136-tool-response-data-piggyback.yaml +5 -3
- package/rules/context-exfiltration/ATR-2026-00142-piggyback-transition-words.yaml +4 -2
- package/rules/context-exfiltration/ATR-2026-00150-credential-in-tool-response.yaml +3 -2
- package/rules/context-exfiltration/ATR-2026-00152-obfuscated-credential-leak.yaml +3 -2
- package/rules/context-exfiltration/ATR-2026-00162-skill-credential-exfil-combo.yaml +6 -2
- package/rules/context-exfiltration/ATR-2026-00201-credential-pipe-exfiltration.yaml +5 -2
- package/rules/context-exfiltration/ATR-2026-00290-divergence-repeat-word-training-extraction.yaml +0 -4
- package/rules/context-exfiltration/ATR-2026-00449-spring-ai-chatmemory-cross-user-leak.yaml +2 -3
- package/rules/context-exfiltration/ATR-2026-00516-output-xss-via-llm.yaml +9 -8
- package/rules/context-exfiltration/ATR-2026-00569-agent-mcp-path-traversal-arbitrary-file-access.yaml +3 -1
- package/rules/context-exfiltration/ATR-2026-00571-xss-in-agent-mcp-rendered-output.yaml +4 -3
- package/rules/context-exfiltration/ATR-2026-00702-ipi-credential-exfil-via-agent-action.yaml +5 -3
- package/rules/context-exfiltration/ATR-2026-00703-ipi-financial-data-exfil-indirect.yaml +5 -3
- package/rules/context-exfiltration/ATR-2026-00704-ipi-medical-genetic-data-exfil.yaml +5 -3
- package/rules/context-exfiltration/ATR-2026-00705-ipi-location-address-browsing-exfil.yaml +5 -3
- package/rules/context-exfiltration/ATR-2026-00706-ipi-physical-biometric-exfil.yaml +5 -3
- package/rules/context-exfiltration/ATR-2026-00707-ipi-file-exfil-with-destroy-or-tamper.yaml +6 -3
- package/rules/context-exfiltration/ATR-2026-00860-indirect-pi-financial-transfer-hijack.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00861-indirect-pi-crypto-transfer-hijack.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-01605-ssrf-aws-metadata-endpoint.yaml +5 -1
- package/rules/context-exfiltration/ATR-2026-01606-ssrf-internal-network-scan.yaml +4 -1
- package/rules/context-exfiltration/ATR-2026-01607-ssrf-localhost-service-probe.yaml +4 -1
- package/rules/context-exfiltration/ATR-2026-01924-system-instruction-extraction-reformat.yaml +1 -4
- package/rules/context-exfiltration/ATR-2026-01948-netlicensing-mcp-product-number-path-traversal-token-leak.yaml +4 -2
- package/rules/context-exfiltration/ATR-2026-01957-m365-copilot-searchleak-open-redirect-exfil.yaml +6 -2
- package/rules/context-exfiltration/ATR-2026-01961-meta-ads-mcp-unauth-token-leak.yaml +4 -1
- package/rules/context-exfiltration/ATR-2026-01964-langchain-gmailtoolkit-indirect-prompt-injection-email-exfil.yaml +6 -2
- package/rules/context-exfiltration/ATR-2026-02140-ssrf-ipv6-hex-encoded-cloud-metadata-bypass.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-02304-preapproved-domain-encoded-path-exfil.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-02351-wildcard-dns-ssrf-hostname-ip-encoding-bypass.yaml +1 -1
- package/rules/data-poisoning/ATR-2026-00070-data-poisoning.yaml +1 -1
- package/rules/excessive-autonomy/ATR-2026-00491-garak-agent-breaker-markdown-just-raw-json.yaml +8 -8
- package/rules/excessive-autonomy/ATR-2026-00500-ssrf-via-agent-url-fetch-instruction.yaml +5 -3
- package/rules/excessive-autonomy/ATR-2026-00708-ipi-financial-transfer-unauthorized.yaml +4 -3
- package/rules/excessive-autonomy/ATR-2026-00711-ipi-system-sabotage-destructive-command.yaml +4 -3
- package/rules/excessive-autonomy/ATR-2026-00712-ipi-malicious-package-install.yaml +5 -3
- package/rules/excessive-autonomy/ATR-2026-00718-tool-misuse-financial-autonomous.yaml +8 -7
- package/rules/excessive-autonomy/ATR-2026-00719-tool-misuse-destructive-bulk-action.yaml +3 -3
- package/rules/excessive-autonomy/ATR-2026-01773-semantic-excessive-agency-action.yaml +3 -3
- package/rules/excessive-autonomy/ATR-2026-01801-asb-autonomous-vehicle-sabotage.yaml +3 -3
- package/rules/excessive-autonomy/ATR-2026-01804-asb-covert-unlogged-action.yaml +3 -4
- package/rules/excessive-autonomy/ATR-2026-01805-asb-financial-fraud-execution.yaml +3 -3
- package/rules/excessive-autonomy/ATR-2026-01806-asb-clinical-patient-harm.yaml +3 -3
- package/rules/excessive-autonomy/ATR-2026-01809-semantic-insider-manipulation-process-corruption.yaml +2 -3
- package/rules/excessive-autonomy/ATR-2026-01989-t1046-agent-internal-network-sweep.yaml +2 -2
- package/rules/excessive-autonomy/ATR-2026-01993-t1562-agent-impair-defenses.yaml +2 -2
- package/rules/excessive-autonomy/ATR-2026-02667-preapproved-tool-list-in-job-payload.yaml +0 -1
- package/rules/model-abuse/ATR-2026-00292-self-harm-eating-disorder-facilitation.yaml +3 -3
- package/rules/model-abuse/ATR-2026-00502-training-data-extraction-via-divergent-repetition-attack.yaml +2 -0
- package/rules/privilege-escalation/ATR-2026-00107-delayed-execution-bypass.yaml +2 -2
- package/rules/privilege-escalation/ATR-2026-00143-casual-privilege-escalation.yaml +3 -2
- package/rules/privilege-escalation/ATR-2026-00144-rationalized-safety-bypass.yaml +3 -2
- package/rules/privilege-escalation/ATR-2026-00204-stealth-execution-persistence.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-00441-semantic-kernel-sessions-python-plugin-startup-persistence.yaml +2 -1
- package/rules/privilege-escalation/ATR-2026-00546-crewai-json-loader-local-file-read.yaml +3 -1
- package/rules/privilege-escalation/ATR-2026-00549-destructive-tool-without-human-approval.yaml +2 -2
- package/rules/privilege-escalation/ATR-2026-01601-sql-injection-destructive-ddl.yaml +6 -5
- package/rules/privilege-escalation/ATR-2026-01602-sql-injection-union-select-exfil.yaml +3 -1
- package/rules/privilege-escalation/ATR-2026-01603-sql-injection-stacked-dml-abuse.yaml +3 -2
- package/rules/privilege-escalation/ATR-2026-01604-sql-injection-schema-enumeration.yaml +3 -2
- package/rules/privilege-escalation/ATR-2026-01616-path-traversal-agent-file-access.yaml +4 -1
- package/rules/privilege-escalation/ATR-2026-01802-asb-backdoor-surveillance-implant.yaml +4 -3
- package/rules/privilege-escalation/ATR-2026-01803-asb-covert-server-intrusion.yaml +4 -4
- package/rules/privilege-escalation/ATR-2026-01808-asb-synthetic-pan-payment-probe.yaml +3 -3
- package/rules/privilege-escalation/ATR-2026-01949-praisonai-mcpserver-unauth-tools-call.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-01974-anything-llm-data-import-access-control.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-01992-t1556-agent-auth-process-tamper.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-02040-file-edit-tool-persistence-write.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-02100-cypher-destructive-admin-query-injection.yaml +4 -4
- package/rules/privilege-escalation/ATR-2026-02101-dynamic-dunder-attribute-sandbox-escape.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-02142-download-tool-absolute-path-sandbox-escape.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-02146-export-tool-dest-dir-credential-directory-redirect.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-02195-dangerous-env-var-injection-config-tool.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-02300-mcp-stdio-config-dangerous-env-var.yaml +5 -5
- package/rules/privilege-escalation/ATR-2026-02301-symlink-outside-workspace-sensitive-target.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-02302-git-worktree-dotgit-sandbox-escape.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-02402-mcp-policy-engine-fail-open.yaml +0 -1
- package/rules/prompt-injection/ATR-2026-00154-unauthorized-background-task-execution-v.yaml +5 -3
- package/rules/prompt-injection/ATR-2026-00156-ssh-remote-command-execution-with-creden.yaml +6 -3
- package/rules/prompt-injection/ATR-2026-00407-echo-sql-jinja-template-injection.yaml +3 -3
- package/rules/prompt-injection/ATR-2026-00410-lmrc-harm-category-direct-elicitation.yaml +2 -2
- package/rules/prompt-injection/ATR-2026-00442-quoted-exact-output-forcing.yaml +2 -2
- package/rules/prompt-injection/ATR-2026-00512-rules-file-backdoor-injection.yaml +3 -0
- package/rules/prompt-injection/ATR-2026-00554-langchain-vulnerable-to-template-injecti.yaml +3 -3
- package/rules/prompt-injection/ATR-2026-01800-asb-trigger-marker-tool-coercion.yaml +3 -3
- package/rules/prompt-injection/ATR-2026-02009-bare-key-elicitation-trailing-colon.yaml +3 -2
- package/rules/prompt-injection/ATR-2026-02820-tool-result-orders-agent-to-hide-its-own-action.yaml +3 -3
- package/rules/skill-compromise/ATR-2026-00127-subcommand-overflow.yaml +2 -1
- package/rules/skill-compromise/ATR-2026-00157-timebomb-credential-exfil.yaml +6 -2
- package/rules/skill-compromise/ATR-2026-00200-agent-memory-config-tampering.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00217-credential-harvesting.yaml +4 -2
- package/rules/skill-compromise/ATR-2026-00222-credential-harvesting.yaml +6 -2
- package/rules/skill-compromise/ATR-2026-00224-credential-exfiltration.yaml +4 -2
- package/rules/skill-compromise/ATR-2026-00260-package-hallucination.yaml +3 -2
- package/rules/skill-compromise/ATR-2026-00266-malware-dropper-gen.yaml +4 -3
- package/rules/skill-compromise/ATR-2026-00398-huggingface-unsafe-model-artifact-load.yaml +3 -3
- package/rules/skill-compromise/ATR-2026-00429-nl-skill-self-modification.yaml +4 -2
- package/rules/skill-compromise/ATR-2026-00525-mini-shai-hulud-gh-token-monitor-persistence.yaml +1 -0
- package/rules/skill-compromise/ATR-2026-00527-skill-silent-git-remote-mirror-exfiltration.yaml +3 -2
- package/rules/skill-compromise/ATR-2026-01755-backdoor-pot-linguistic-trigger-phrase.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-01756-backdoor-pot-symbol-emoticon-trigger.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-00096-registry-poisoning.yaml +4 -3
- package/rules/tool-poisoning/ATR-2026-00100-consent-bypass-instruction.yaml +4 -2
- package/rules/tool-poisoning/ATR-2026-00105-silent-action-concealment.yaml +2 -1
- package/rules/tool-poisoning/ATR-2026-00106-schema-description-contradiction.yaml +2 -2
- package/rules/tool-poisoning/ATR-2026-00270-xss-in-tool-response.yaml +4 -3
- package/rules/tool-poisoning/ATR-2026-00494-garak-exploitation-mixedunassigned.yaml +5 -3
- package/rules/tool-poisoning/ATR-2026-00513-package-hallucination-exploitation.yaml +9 -7
- package/rules/tool-poisoning/ATR-2026-00521-shell-command-injection-agent-tool-context.yaml +5 -3
- package/rules/tool-poisoning/ATR-2026-00522-sql-injection-natural-language-agent-interface.yaml +4 -3
- package/rules/tool-poisoning/ATR-2026-00526-claude-code-shell-metachar-in-double-quoted-path.yaml +4 -3
- package/rules/tool-poisoning/ATR-2026-00530-ms-agent-shell-tool-unsanitized-argv-rce.yaml +4 -3
- package/rules/tool-poisoning/ATR-2026-00531-praisonai-unauthenticated-agent-api.yaml +1 -2
- package/rules/tool-poisoning/ATR-2026-00533-apache-pinot-mcp-unauthenticated-takeover.yaml +2 -3
- package/rules/tool-poisoning/ATR-2026-00716-ipi-data-destruction-carrier.yaml +5 -3
- package/rules/tool-poisoning/ATR-2026-00720-tool-misuse-privilege-escalation-social.yaml +3 -3
- package/rules/tool-poisoning/ATR-2026-01301-tool-description-exclusive-tool-override.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-01303-tool-schema-enumeration-social-engineering.yaml +4 -3
- package/rules/tool-poisoning/ATR-2026-01307-mcp-dns-rebinding-attack.yaml +3 -5
- package/rules/tool-poisoning/ATR-2026-01310-mcp-tool-description-compliance-history-exfil.yaml +5 -4
- package/rules/tool-poisoning/ATR-2026-01775-semantic-mcp-tool-manifest-poisoning.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-01952-praisonai-codemode-sandbox-escape-rce.yaml +4 -2
- package/rules/tool-poisoning/ATR-2026-01953-praisonai-codemode-function-ctor-sandbox-escape.yaml +4 -2
- package/rules/tool-poisoning/ATR-2026-01959-openhuman-shell-allowlist-env-prefix-bypass.yaml +4 -2
- package/rules/tool-poisoning/ATR-2026-01963-praisonai-action-orchestrator-step-target-path-traversal-rce.yaml +3 -2
- package/rules/tool-poisoning/ATR-2026-01965-flowise-custommcp-os-command-rce.yaml +2 -1
- package/rules/tool-poisoning/ATR-2026-01967-deepchat-mermaid-xss-rce-ipc-mcp-register.yaml +4 -2
- package/rules/tool-poisoning/ATR-2026-01970-praisonai-filetools-normpath-path-traversal.yaml +2 -2
- package/rules/tool-poisoning/ATR-2026-01973-anythingllm-logo-endpoint-path-traversal.yaml +2 -2
- package/rules/tool-poisoning/ATR-2026-01978-anythingllm-collector-process-filename-path-traversal-delete.yaml +2 -2
- package/rules/tool-poisoning/ATR-2026-01979-pandasai-prompt-injection-dunder-sandbox-escape-rce.yaml +6 -2
- package/rules/tool-poisoning/ATR-2026-01980-agentic-flow-mcp-tool-param-command-injection.yaml +4 -2
- package/rules/tool-poisoning/ATR-2026-01982-dbt-mcp-node-selection-argument-injection.yaml +2 -2
- package/rules/tool-poisoning/ATR-2026-01983-mcp-for-stata-log-file-name-command-injection.yaml +4 -2
- package/rules/tool-poisoning/ATR-2026-01985-mcp-connect-bridge-unauth-process-spawn-rce.yaml +2 -1
- package/rules/tool-poisoning/ATR-2026-01987-langroid-sqlchatagent-prompt-to-sql-rce.yaml +4 -2
- package/rules/tool-poisoning/ATR-2026-02102-html-injection-tool-arg-approval-ui-xss.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-02141-mcp-server-config-command-execution.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-02233-unscoped-destructive-db-request-nl.yaml +1 -1
package/dist/converters/sage.js
CHANGED
|
@@ -16,20 +16,22 @@
|
|
|
16
16
|
* corpus.
|
|
17
17
|
* - ATR `response.actions` (10 values) collapse to Sage `action` (3
|
|
18
18
|
* values: block / require_approval / log) by strongest-wins semantics.
|
|
19
|
-
* -
|
|
20
|
-
*
|
|
21
|
-
*
|
|
19
|
+
* - SPEC §6.4: every ATR regex condition matches case-insensitively, so the
|
|
20
|
+
* leading flag group is removed and every Sage rule sets
|
|
21
|
+
* `case_insensitive: true`. The Sage runtime compiles patterns as JavaScript
|
|
22
|
+
* `RegExp` with only the `i` flag, so a condition that depends on the `u`
|
|
23
|
+
* flag is skipped (sagePatternOf).
|
|
22
24
|
* - ATR `detection_tier: semantic` rules are SKIPPED — they require LLM
|
|
23
25
|
* evaluation, not deterministic regex.
|
|
24
26
|
* - License: ATR rules are MIT; Sage's `threats/*.yaml` are DRL 1.1. Per-rule
|
|
25
27
|
* comment in the output preserves upstream attribution per both licenses.
|
|
26
28
|
*
|
|
27
|
-
* Used by
|
|
28
|
-
*
|
|
29
|
-
* by any downstream tool that consumes ATR but wants Sage-flavoured output.
|
|
29
|
+
* Used by scripts/export-sage.ts, and by any downstream tool that consumes
|
|
30
|
+
* ATR but wants Sage-flavoured output.
|
|
30
31
|
*
|
|
31
32
|
* @module agent-threat-rules/converters/sage
|
|
32
33
|
*/
|
|
34
|
+
import { regexConditionSpec } from '../regex-dialect.js';
|
|
33
35
|
// ── Mappings ───────────────────────────────────────────────────────────────
|
|
34
36
|
/**
|
|
35
37
|
* ATR category strings (hyphenated) → Sage category strings (snake_case).
|
|
@@ -129,35 +131,90 @@ function mapCategory(atrCategory) {
|
|
|
129
131
|
}
|
|
130
132
|
// ── Regex compatibility ────────────────────────────────────────────────────
|
|
131
133
|
/**
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
134
|
+
* A condition's regex for Sage, which compiles
|
|
135
|
+
* `new RegExp(pattern, case_insensitive ? "i" : "")` and cannot set `u`.
|
|
136
|
+
*
|
|
137
|
+
* SPEC §6.4: the leading flag group is removed and every condition matches
|
|
138
|
+
* case-insensitively, so every exported rule sets `case_insensitive: true`.
|
|
139
|
+
* This used to follow the group instead: a condition without `(?i)` became a
|
|
140
|
+
* case-sensitive Sage rule. `m`, `s` and `x` have no effect in ATR, so
|
|
141
|
+
* dropping them changes nothing.
|
|
142
|
+
*
|
|
143
|
+
* The engine compiles a condition with `iu` when it contains `\u{...}`,
|
|
144
|
+
* `\p{...}` or an astral character (needsUnicodeFlag). Without `u` an astral
|
|
145
|
+
* character is two UTF-16 code units. As a plain literal it still matches the
|
|
146
|
+
* same text, so such a condition is exported without `u`; the one difference
|
|
147
|
+
* left is that `.` and a negated class consume one code unit, so a bounded
|
|
148
|
+
* repeat such as `.{0,50}` counts an astral character of the input as two. A
|
|
149
|
+
* condition that depends on `u` in any other way is skipped
|
|
150
|
+
* (dependsOnUnicodeMode).
|
|
137
151
|
*/
|
|
138
|
-
function
|
|
139
|
-
const
|
|
140
|
-
if (!leadingFlagMatch) {
|
|
141
|
-
return { pattern, caseInsensitive: false, unsupportedFlags: '' };
|
|
142
|
-
}
|
|
143
|
-
const flags = leadingFlagMatch[1];
|
|
144
|
-
const stripped = pattern.slice(leadingFlagMatch[0].length);
|
|
145
|
-
const ci = flags.includes('i');
|
|
146
|
-
const unsupported = flags.replace(/i/g, '');
|
|
152
|
+
function sagePatternOf(value) {
|
|
153
|
+
const spec = regexConditionSpec(value);
|
|
147
154
|
return {
|
|
148
|
-
pattern:
|
|
149
|
-
|
|
150
|
-
unsupportedFlags: unsupported,
|
|
155
|
+
pattern: spec.source,
|
|
156
|
+
needsUnicode: spec.flags === 'iu' && dependsOnUnicodeMode(spec.source),
|
|
151
157
|
};
|
|
152
158
|
}
|
|
153
159
|
/**
|
|
154
|
-
*
|
|
155
|
-
*
|
|
160
|
+
* Whether a pattern the engine compiles with `u` fails to compile, or means
|
|
161
|
+
* something else, without it: `\u{...}`, `\p{...}` or `\P{...}`, or an
|
|
162
|
+
* astral character inside a character class, before a quantifier, or with a
|
|
163
|
+
* case mapping.
|
|
164
|
+
*/
|
|
165
|
+
function dependsOnUnicodeMode(source) {
|
|
166
|
+
if (/\\[pPu]\{/.test(source))
|
|
167
|
+
return true;
|
|
168
|
+
try {
|
|
169
|
+
new RegExp(source, 'i');
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
const chars = [...source];
|
|
175
|
+
let inClass = false;
|
|
176
|
+
let escaped = false;
|
|
177
|
+
for (let k = 0; k < chars.length; k++) {
|
|
178
|
+
const ch = chars[k];
|
|
179
|
+
if (escaped) {
|
|
180
|
+
escaped = false;
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
if (ch === '\\') {
|
|
184
|
+
escaped = true;
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
const astral = ch.codePointAt(0) > 0xffff;
|
|
188
|
+
if (inClass) {
|
|
189
|
+
if (ch === ']')
|
|
190
|
+
inClass = false;
|
|
191
|
+
else if (astral)
|
|
192
|
+
return true;
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
if (ch === '[') {
|
|
196
|
+
inClass = true;
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
if (!astral)
|
|
200
|
+
continue;
|
|
201
|
+
if (ch.toLowerCase() !== ch || ch.toUpperCase() !== ch)
|
|
202
|
+
return true;
|
|
203
|
+
if (/^[*+?{]/.test(chars[k + 1] ?? ''))
|
|
204
|
+
return true;
|
|
205
|
+
}
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
const NEEDS_UNICODE_DETAIL = 'Regex depends on the u flag (\\u{...}, \\p{...}, or an astral character in a character class, ' +
|
|
209
|
+
'before a quantifier or with a case mapping), which Sage cannot set; condition skipped';
|
|
210
|
+
/**
|
|
211
|
+
* Validate a regex compiles the way Sage compiles an exported rule, with the
|
|
212
|
+
* `i` flag. Returns the compile error message if it fails, or null if it
|
|
156
213
|
* succeeds.
|
|
157
214
|
*/
|
|
158
|
-
function validateRegexCompiles(pattern
|
|
215
|
+
function validateRegexCompiles(pattern) {
|
|
159
216
|
try {
|
|
160
|
-
new RegExp(pattern,
|
|
217
|
+
new RegExp(pattern, 'i');
|
|
161
218
|
return null;
|
|
162
219
|
}
|
|
163
220
|
catch (e) {
|
|
@@ -314,19 +371,16 @@ function groupConditionsBySageChannel(atrId, conditions, warnings) {
|
|
|
314
371
|
* remains after compat filtering.
|
|
315
372
|
*/
|
|
316
373
|
function groupToSageRule(atr, sageChannel, conditions, channelDisambiguator, pickedAction, idAllocator, warnings) {
|
|
374
|
+
// Process each condition's regex (SPEC §6.4, see sagePatternOf) and
|
|
375
|
+
// validate that it compiles.
|
|
317
376
|
const processed = [];
|
|
318
|
-
let anyCaseInsensitive = false;
|
|
319
|
-
let anyCaseSensitive = false;
|
|
320
377
|
for (const cond of conditions) {
|
|
321
|
-
const { pattern,
|
|
322
|
-
if (
|
|
323
|
-
warnings.push({
|
|
324
|
-
|
|
325
|
-
kind: 'regex_compat_issue',
|
|
326
|
-
detail: `Unsupported inline flags (${unsupportedFlags}) stripped; Sage runtime supports case-insensitive only`,
|
|
327
|
-
});
|
|
378
|
+
const { pattern, needsUnicode } = sagePatternOf(cond.value);
|
|
379
|
+
if (needsUnicode) {
|
|
380
|
+
warnings.push({ ruleId: atr.id, kind: 'regex_compat_issue', detail: NEEDS_UNICODE_DETAIL });
|
|
381
|
+
continue;
|
|
328
382
|
}
|
|
329
|
-
const compileError = validateRegexCompiles(pattern
|
|
383
|
+
const compileError = validateRegexCompiles(pattern);
|
|
330
384
|
if (compileError) {
|
|
331
385
|
warnings.push({
|
|
332
386
|
ruleId: atr.id,
|
|
@@ -335,33 +389,14 @@ function groupToSageRule(atr, sageChannel, conditions, channelDisambiguator, pic
|
|
|
335
389
|
});
|
|
336
390
|
continue;
|
|
337
391
|
}
|
|
338
|
-
processed.push(
|
|
339
|
-
if (caseInsensitive) {
|
|
340
|
-
anyCaseInsensitive = true;
|
|
341
|
-
}
|
|
342
|
-
else {
|
|
343
|
-
anyCaseSensitive = true;
|
|
344
|
-
}
|
|
392
|
+
processed.push(pattern);
|
|
345
393
|
}
|
|
346
394
|
if (processed.length === 0)
|
|
347
395
|
return null;
|
|
348
|
-
|
|
349
|
-
// only honour one at the rule level. Choose case-insensitive (safer fail-
|
|
350
|
-
// open for detection) and rewrap case-sensitive patterns by hoisting the
|
|
351
|
-
// case-sensitive requirement into the regex via [Aa] character classes is
|
|
352
|
-
// non-trivial; for now, mark a warning and treat the whole rule as ci.
|
|
353
|
-
if (anyCaseInsensitive && anyCaseSensitive) {
|
|
354
|
-
warnings.push({
|
|
355
|
-
ruleId: atr.id,
|
|
356
|
-
kind: 'regex_compat_issue',
|
|
357
|
-
detail: 'Group mixes case-sensitive and case-insensitive sub-patterns; promoting whole rule to case_insensitive=true',
|
|
358
|
-
});
|
|
359
|
-
}
|
|
360
|
-
const ruleCaseInsensitive = anyCaseInsensitive;
|
|
361
|
-
const combinedRegex = alternationCombine(processed.map((p) => p.regex));
|
|
396
|
+
const combinedRegex = alternationCombine(processed);
|
|
362
397
|
// Validate the combined regex still compiles (alternation can occasionally
|
|
363
398
|
// expose escape conflicts).
|
|
364
|
-
const compileError = validateRegexCompiles(combinedRegex
|
|
399
|
+
const compileError = validateRegexCompiles(combinedRegex);
|
|
365
400
|
if (compileError) {
|
|
366
401
|
warnings.push({
|
|
367
402
|
ruleId: atr.id,
|
|
@@ -393,7 +428,7 @@ function groupToSageRule(atr, sageChannel, conditions, channelDisambiguator, pic
|
|
|
393
428
|
title,
|
|
394
429
|
expires_at: null,
|
|
395
430
|
revoked: atr.status === 'draft',
|
|
396
|
-
case_insensitive:
|
|
431
|
+
case_insensitive: true,
|
|
397
432
|
upstream: atr.id,
|
|
398
433
|
upstream_url: upstreamUrl,
|
|
399
434
|
upstream_license: 'MIT',
|
|
@@ -427,8 +462,7 @@ function extractDetectsSummary(description) {
|
|
|
427
462
|
* (user_input or tool_response or content), producing 1 Sage rule each.
|
|
428
463
|
*
|
|
429
464
|
* Lossy spots (documented in the bridge research memo):
|
|
430
|
-
* -
|
|
431
|
-
* case-insensitive
|
|
465
|
+
* - Conditions that depend on the `u` flag → skipped (sagePatternOf)
|
|
432
466
|
* - `condition: all` semantics → ignored; alternation always treats as OR
|
|
433
467
|
* - `response.actions` reduced to strongest single action
|
|
434
468
|
* - All compliance/metadata fields (eu_ai_act, mitre_atlas, references, etc.)
|
|
@@ -492,10 +526,12 @@ export function atrToSage(atr, idAllocator = new SageIdAllocator()) {
|
|
|
492
526
|
const MAX_COMBINED_PATTERN_LEN = 500;
|
|
493
527
|
for (const [sageChannel, conditions] of channelEntries) {
|
|
494
528
|
const disambiguator = isMultiChannel ? channelCode(sageChannel) : null;
|
|
495
|
-
// Build the combined regex once to check length.
|
|
529
|
+
// Build the combined regex once to check length. Conditions Sage cannot
|
|
530
|
+
// express are skipped when the rule is built, so they do not count.
|
|
496
531
|
const candidatePatterns = conditions
|
|
497
|
-
.map((c) =>
|
|
498
|
-
.filter((p) => p.length > 0)
|
|
532
|
+
.map((c) => sagePatternOf(c.value))
|
|
533
|
+
.filter((p) => !p.needsUnicode && p.pattern.length > 0)
|
|
534
|
+
.map((p) => p.pattern);
|
|
499
535
|
const tentativeCombined = alternationCombine(candidatePatterns);
|
|
500
536
|
if (tentativeCombined.length <= MAX_COMBINED_PATTERN_LEN || conditions.length === 1) {
|
|
501
537
|
// Fits in one Sage rule — allocator advances once.
|
|
@@ -539,15 +575,12 @@ export function atrToSage(atr, idAllocator = new SageIdAllocator()) {
|
|
|
539
575
|
* sub-rules share the same numeric base.
|
|
540
576
|
*/
|
|
541
577
|
function buildSplitSubRule(atr, sageChannel, condition, id, pickedAction, warnings) {
|
|
542
|
-
const { pattern,
|
|
543
|
-
if (
|
|
544
|
-
warnings.push({
|
|
545
|
-
|
|
546
|
-
kind: 'regex_compat_issue',
|
|
547
|
-
detail: `Unsupported inline flags (${unsupportedFlags}) stripped`,
|
|
548
|
-
});
|
|
578
|
+
const { pattern, needsUnicode } = sagePatternOf(condition.value);
|
|
579
|
+
if (needsUnicode) {
|
|
580
|
+
warnings.push({ ruleId: atr.id, kind: 'regex_compat_issue', detail: NEEDS_UNICODE_DETAIL });
|
|
581
|
+
return null;
|
|
549
582
|
}
|
|
550
|
-
const compileError = validateRegexCompiles(pattern
|
|
583
|
+
const compileError = validateRegexCompiles(pattern);
|
|
551
584
|
if (compileError) {
|
|
552
585
|
warnings.push({
|
|
553
586
|
ruleId: atr.id,
|
|
@@ -580,7 +613,7 @@ function buildSplitSubRule(atr, sageChannel, condition, id, pickedAction, warnin
|
|
|
580
613
|
title,
|
|
581
614
|
expires_at: null,
|
|
582
615
|
revoked: atr.status === 'draft',
|
|
583
|
-
case_insensitive:
|
|
616
|
+
case_insensitive: true,
|
|
584
617
|
upstream: atr.id,
|
|
585
618
|
upstream_url: upstreamUrl,
|
|
586
619
|
upstream_license: 'MIT',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sage.js","sourceRoot":"","sources":["../../src/converters/sage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAsDH,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,YAAY,GAAqC,MAAM,CAAC,MAAM,CAAC;IACpE,kBAAkB,EAAE,kBAAkB;IACtC,gBAAgB,EAAE,eAAe;IACjC,sBAAsB,EAAE,sBAAsB;IAC9C,oBAAoB,EAAE,oBAAoB;IAC1C,sBAAsB,EAAE,sBAAsB;IAC9C,oBAAoB,EAAE,oBAAoB;IAC1C,gBAAgB,EAAE,gBAAgB;IAClC,aAAa,EAAE,aAAa;IAC5B,kBAAkB,EAAE,kBAAkB;IACtC,gBAAgB,EAAE,gBAAgB;CAClC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,YAAY,GAAgD,MAAM,CAAC,MAAM,CAAC;IAC/E,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,KAAK;IACV,aAAa,EAAE,KAAK;CACpB,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,eAAe,GAAyC,MAAM,CAAC,MAAM,CAAC;IAC3E,KAAK,EAAE,CAAC;IACR,gBAAgB,EAAE,CAAC;IACnB,GAAG,EAAE,CAAC;CACN,CAAC,CAAC;AAEH;;;GAGG;AACH,SAAS,SAAS,CAAC,GAAc;IAChC,QAAQ,GAAG,EAAE,CAAC;QACb,KAAK,aAAa,CAAC;QACnB,KAAK,cAAc,CAAC;QACpB,KAAK,YAAY,CAAC;QAClB,KAAK,oBAAoB,CAAC;QAC1B,KAAK,YAAY;YAChB,OAAO,OAAO,CAAC;QAChB,KAAK,UAAU;YACd,OAAO,kBAAkB,CAAC;QAC3B,KAAK,OAAO,CAAC;QACb,KAAK,UAAU,CAAC;QAChB,KAAK,QAAQ;YACZ,OAAO,KAAK,CAAC;QACd,KAAK,eAAe,CAAC;QACrB,KAAK,oBAAoB;YACxB,OAAO,IAAI,CAAC;QACb,OAAO,CAAC,CAAC,CAAC;YACT,mEAAmE;YACnE,+DAA+D;YAC/D,MAAM,WAAW,GAAU,GAAG,CAAC;YAC/B,KAAK,WAAW,CAAC;YACjB,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;AACF,CAAC;AAED;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,QAAgB;IACjC,QAAQ,QAAQ,EAAE,CAAC;QAClB,KAAK,KAAK;YACT,OAAO,KAAK,CAAC;QACd,KAAK,YAAY,CAAC;QAClB,KAAK,cAAc,CAAC;QACpB,KAAK,SAAS,CAAC;QACf,KAAK,eAAe,CAAC;QACrB,KAAK,WAAW,CAAC;QACjB,KAAK,WAAW,CAAC;QACjB,KAAK,kBAAkB,CAAC;QACxB,KAAK,eAAe;YACnB,OAAO,SAAS,CAAC;QAClB;YACC,OAAO,SAAS,CAAC;IACnB,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,WAAmB;IACvC,OAAO,YAAY,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpE,CAAC;AAED,8EAA8E;AAE9E;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,OAAe;IAK1C,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC7D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvB,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;IAClE,CAAC;IACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC5C,OAAO;QACN,OAAO,EAAE,QAAQ;QACjB,eAAe,EAAE,EAAE;QACnB,gBAAgB,EAAE,WAAW;KAC7B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,OAAe,EAAE,eAAwB;IACvE,IAAI,CAAC;QACJ,IAAI,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,OAAO,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,QAA2B;IACtD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC,CAAC,CAAE,CAAC;IAC/C,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,CAAC;AAED,8EAA8E;AAE9E;;;;GAIG;AACH,SAAS,cAAc,CAAC,GAAY;IACnC,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACxC,oCAAoC;QACpC,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;QAC9E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;IAChC,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,GAAG,CAAC;IAC/B,IAAI,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,GAAG,CAAC;IAC9B,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,8EAA8E;AAE9E;;;;GAIG;AACH,SAAS,UAAU,CAAC,UAAgC;IAInD,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,IAAI,IAAI,GAAe,KAAK,CAAC;IAC7B,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,SAAS;QACV,CAAC;QACD,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,QAAQ,GAAG,YAAY,EAAE,CAAC;YAC7B,IAAI,GAAG,MAAM,CAAC;YACd,YAAY,GAAG,QAAQ,CAAC;QACzB,CAAC;IACF,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;AAClD,CAAC;AAED,6EAA6E;AAE7E;;GAEG;AACH,MAAM,eAAe,GAAqC,MAAM,CAAC,MAAM,CAAC;IACvE,gBAAgB,EAAE,IAAI;IACtB,aAAa,EAAE,KAAK;IACpB,oBAAoB,EAAE,KAAK;IAC3B,kBAAkB,EAAE,KAAK;IACzB,oBAAoB,EAAE,KAAK;IAC3B,kBAAkB,EAAE,KAAK;IACzB,cAAc,EAAE,KAAK;IACrB,WAAW,EAAE,KAAK;IAClB,gBAAgB,EAAE,KAAK;IACvB,cAAc,EAAE,KAAK;IACrB,YAAY,EAAE,KAAK;CACnB,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,OAAO,eAAe;IACnB,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE7C;;;;OAIG;IACH,YAAY,kBAAoD,EAAE;QACjE,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAChC,CAAC;IACF,CAAC;IAED,IAAI,CAAC,YAAoB,EAAE,oBAAmC;QAC7D,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC;QACtD,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,OAAO,OAAO,MAAM,IAAI,WAAW,GAAG,MAAM,EAAE,CAAC;IAChD,CAAC;CACD;AAED,8EAA8E;AAE9E;;;;;;;;;;;GAWG;AACH,SAAS,4BAA4B,CACpC,KAAa,EACb,UAAwC,EACxC,QAA6B;IAE7B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoC,CAAC;IAC3D,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACvC,QAAQ,CAAC,IAAI,CAAC;gBACb,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,yBAAyB;gBAC/B,MAAM,EAAE,0CAA0C;aAClD,CAAC,CAAC;YACH,SAAS;QACV,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC;gBACb,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,YAAY,IAAI,CAAC,QAAQ,qCAAqC;aACtE,CAAC,CAAC;YACH,SAAS;QACV,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,SAAS;QAC1B,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC/C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CACvB,GAAY,EACZ,WAAwB,EACxB,UAAwC,EACxC,oBAAmC,EACnC,YAAwB,EACxB,WAA4B,EAC5B,QAA6B;IAI7B,MAAM,SAAS,GAAgB,EAAE,CAAC;IAClC,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAC/B,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAE7B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtF,IAAI,gBAAgB,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC;gBACb,MAAM,EAAE,GAAG,CAAC,EAAE;gBACd,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,6BAA6B,gBAAgB,yDAAyD;aAC9G,CAAC,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACrE,IAAI,YAAY,EAAE,CAAC;YAClB,QAAQ,CAAC,IAAI,CAAC;gBACb,MAAM,EAAE,GAAG,CAAC,EAAE;gBACd,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,2CAA2C,YAAY,EAAE;aACjE,CAAC,CAAC;YACH,SAAS;QACV,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;QACpD,IAAI,eAAe,EAAE,CAAC;YACrB,kBAAkB,GAAG,IAAI,CAAC;QAC3B,CAAC;aAAM,CAAC;YACP,gBAAgB,GAAG,IAAI,CAAC;QACzB,CAAC;IACF,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAExC,0EAA0E;IAC1E,0EAA0E;IAC1E,yEAAyE;IACzE,0EAA0E;IAC1E,uEAAuE;IACvE,IAAI,kBAAkB,IAAI,gBAAgB,EAAE,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC;YACb,MAAM,EAAE,GAAG,CAAC,EAAE;YACd,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EACL,6GAA6G;SAC9G,CAAC,CAAC;IACJ,CAAC;IACD,MAAM,mBAAmB,GAAG,kBAAkB,CAAC;IAE/C,MAAM,aAAa,GAAG,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAExE,2EAA2E;IAC3E,4BAA4B;IAC5B,MAAM,YAAY,GAAG,qBAAqB,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;IAC/E,IAAI,YAAY,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC;YACb,MAAM,EAAE,GAAG,CAAC,EAAE;YACd,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,kDAAkD,YAAY,EAAE;SACxE,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,WAAW,CAAC;IAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;IAElF,MAAM,WAAW,GAAG,2EAA2E,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,EAAE,OAAO,CAAC;IAElI,yEAAyE;IACzE,qEAAqE;IACrE,iEAAiE;IACjE,MAAM,oBAAoB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,gBAAgB,GACrB,YAAY,KAAK,OAAO,IAAI,oBAAoB,GAAG,IAAI;QACtD,CAAC,CAAC,kBAAkB;QACpB,CAAC,CAAC,YAAY,CAAC;IAEjB,OAAO;QACN,EAAE,EAAE,MAAM;QACV,QAAQ,EAAE,YAAY;QACtB,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;QACpC,UAAU,EAAE,oBAAoB;QAChC,MAAM,EAAE,gBAAgB;QACxB,OAAO,EAAE,aAAa;QACtB,QAAQ,EAAE,OAAO;QACjB,KAAK;QACL,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,GAAG,CAAC,MAAM,KAAK,OAAO;QAC/B,gBAAgB,EAAE,mBAAmB;QACrC,QAAQ,EAAE,GAAG,CAAC,EAAE;QAChB,YAAY,EAAE,WAAW;QACzB,gBAAgB,EAAE,KAAK;QACvB,OAAO,EAAE,qBAAqB,CAAC,GAAG,CAAC,WAAW,CAAC;KAC/C,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,WAA+B;IAC7D,IAAI,CAAC,WAAW;QAAE,OAAO,EAAE,CAAC;IAC5B,qEAAqE;IACrE,MAAM,aAAa,GAAG,WAAW;SAC/B,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE;SACN,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IACxC,4BAA4B;IAC5B,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtE,OAAO,OAAO,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,SAAS,CACxB,GAAY,EACZ,cAA+B,IAAI,eAAe,EAAE;IAEpD,MAAM,QAAQ,GAAwB,EAAE,CAAC;IAEzC,yDAAyD;IACzD,IAAI,GAAG,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC;YACb,MAAM,EAAE,GAAG,CAAC,EAAE;YACd,IAAI,EAAE,uBAAuB;YAC7B,MAAM,EAAE,2EAA2E;SACnF,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,wBAAwB;IACxB,IAAI,GAAG,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACjC,QAAQ,CAAC,IAAI,CAAC;YACb,MAAM,EAAE,GAAG,CAAC,EAAE;YACd,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,gCAAgC,GAAG,CAAC,WAAW,IAAI,MAAM,GAAG;SACpE,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,uDAAuD;IACvD,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClF,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC;YACb,MAAM,EAAE,GAAG,CAAC,EAAE;YACd,IAAI,EAAE,4BAA4B;YAClC,MAAM,EAAE,UAAU,OAAO,yBAAyB;SAClD,CAAC,CAAC;IACJ,CAAC;IAED,qBAAqB;IACrB,MAAM,aAAa,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC;IAC/C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QACnC,+EAA+E;QAC/E,QAAQ,CAAC,IAAI,CAAC;YACb,MAAM,EAAE,GAAG,CAAC,EAAE;YACd,IAAI,EAAE,2BAA2B;YACjC,MAAM,EAAE,8CAA8C;SACtD,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,MAAM,GAAG,4BAA4B,CAAC,GAAG,CAAC,EAAE,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC7E,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC;YACb,MAAM,EAAE,GAAG,CAAC,EAAE;YACd,IAAI,EAAE,2BAA2B;YACjC,MAAM,EAAE,+CAA+C;SACvD,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,0EAA0E;IAC1E,2EAA2E;IAC3E,8BAA8B;IAC9B,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;IACjD,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,MAAM,wBAAwB,GAAG,GAAG,CAAC;IACrC,KAAK,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,cAAc,EAAE,CAAC;QACxD,MAAM,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEvE,iDAAiD;QACjD,MAAM,iBAAiB,GAAG,UAAU;aAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;aAC/C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9B,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;QAEhE,IAAI,iBAAiB,CAAC,MAAM,IAAI,wBAAwB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrF,mDAAmD;YACnD,MAAM,IAAI,GAAG,eAAe,CAC3B,GAAG,EACH,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,EACZ,WAAW,EACX,QAAQ,CACR,CAAC;YACF,IAAI,IAAI;gBAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACP,6DAA6D;YAC7D,kEAAkE;YAClE,6DAA6D;YAC7D,mCAAmC;YACnC,QAAQ,CAAC,IAAI,CAAC;gBACb,MAAM,EAAE,GAAG,CAAC,EAAE;gBACd,IAAI,EAAE,iBAAiB;gBACvB,MAAM,EAAE,2BAA2B,iBAAiB,CAAC,MAAM,YAAY,wBAAwB,qBAAqB,UAAU,CAAC,MAAM,kCAAkC;aACvK,CAAC,CAAC;YACH,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAC;YACrE,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBAC9B,MAAM,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;gBACxC,MAAM,OAAO,GAAG,iBAAiB,CAChC,GAAG,EACH,WAAW,EACX,IAAI,EACJ,GAAG,MAAM,GAAG,YAAY,EAAE,EAC1B,YAAY,EACZ,QAAQ,CACR,CAAC;gBACF,IAAI,OAAO;oBAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC;YACb,MAAM,EAAE,GAAG,CAAC,EAAE;YACd,IAAI,EAAE,sBAAsB;YAC5B,MAAM,EAAE,gEAAgE;SACxE,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CACzB,GAAY,EACZ,WAAwB,EACxB,SAA4B,EAC5B,EAAU,EACV,YAAwB,EACxB,QAA6B;IAE7B,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAG,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC3F,IAAI,gBAAgB,EAAE,CAAC;QACtB,QAAQ,CAAC,IAAI,CAAC;YACb,MAAM,EAAE,GAAG,CAAC,EAAE;YACd,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,6BAA6B,gBAAgB,YAAY;SACjE,CAAC,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACrE,IAAI,YAAY,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC;YACb,MAAM,EAAE,GAAG,CAAC,EAAE;YACd,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,uCAAuC,YAAY,EAAE;SAC7D,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;IAClF,MAAM,WAAW,GAAG,2EAA2E,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,EAAE,OAAO,CAAC;IAClI,MAAM,oBAAoB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,gBAAgB,GACrB,YAAY,KAAK,OAAO,IAAI,oBAAoB,GAAG,IAAI;QACtD,CAAC,CAAC,kBAAkB;QACpB,CAAC,CAAC,YAAY,CAAC;IAEjB,wEAAwE;IACxE,0EAA0E;IAC1E,yEAAyE;IACzE,MAAM,cAAc,GACnB,CAAC,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE;QAC1D,CAAC,CAAC,SAAS,CAAC,WAAW;QACvB,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IAElD,OAAO;QACN,EAAE;QACF,QAAQ,EAAE,YAAY;QACtB,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;QACpC,UAAU,EAAE,oBAAoB;QAChC,MAAM,EAAE,gBAAgB;QACxB,OAAO;QACP,QAAQ,EAAE,WAAW;QACrB,KAAK;QACL,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,GAAG,CAAC,MAAM,KAAK,OAAO;QAC/B,gBAAgB,EAAE,eAAe;QACjC,QAAQ,EAAE,GAAG,CAAC,EAAE;QAChB,YAAY,EAAE,WAAW;QACzB,gBAAgB,EAAE,KAAK;QACvB,OAAO,EAAE,cAAc;KACvB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,CAAS;IACjC,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO;IACvD,wCAAwC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;IACtB,OAAO,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;AAC3E,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,OAAoB;IACxC,QAAQ,OAAO,EAAE,CAAC;QACjB,KAAK,SAAS;YACb,OAAO,IAAI,CAAC;QACb,KAAK,KAAK;YACT,OAAO,KAAK,CAAC;QACd,KAAK,SAAS;YACb,OAAO,KAAK,CAAC;QACd,KAAK,WAAW;YACf,OAAO,IAAI,CAAC;QACb,KAAK,QAAQ;YACZ,OAAO,KAAK,CAAC;IACf,CAAC;AACF,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAC7B,QAA4B,EAC5B,kBAAoD,EAAE;IAEtD,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,eAAe,CAAC,CAAC;IACvD,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC5B,CAAC;AAED,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,KAA0B;IACzD,OAAO,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,aAAa,CAAC,IAAc;IACpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,uEAAuE;IACvE,8BAA8B;IAC9B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,CAAC,cAAc,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACP,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACxC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,YAAY,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACzC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,QAAQ,KAAK,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,CAAS;IAC5B,0EAA0E;IAC1E,yEAAyE;IACzE,qEAAqE;IACrE,mEAAmE;IACnE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC"}
|
|
1
|
+
{"version":3,"file":"sage.js","sourceRoot":"","sources":["../../src/converters/sage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splunk.d.ts","sourceRoot":"","sources":["../../src/converters/splunk.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAqB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"splunk.d.ts","sourceRoot":"","sources":["../../src/converters/splunk.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAqB,MAAM,aAAa,CAAC;AAmE9D;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAqG/C"}
|
|
@@ -6,6 +6,20 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module agent-threat-rules/converters/splunk
|
|
8
8
|
*/
|
|
9
|
+
import { inlineCaseInsensitive } from '../regex-dialect.js';
|
|
10
|
+
/**
|
|
11
|
+
* A regex condition as a PCRE pattern for SPL's `regex` command and match().
|
|
12
|
+
* PCRE applies a leading inline group itself, so the condition's own group
|
|
13
|
+
* used to reach Splunk unchanged: a pattern without (?i) matched
|
|
14
|
+
* case-sensitively and (?im) or (?is) turned on multiline or dotall. SPEC
|
|
15
|
+
* §6.4 matches every condition case-insensitively and gives m, s and x no
|
|
16
|
+
* effect, so the group is replaced by (?i). PCRE still differs from
|
|
17
|
+
* ECMAScript in places ($ also matches before a final newline, . also
|
|
18
|
+
* matches \r, U+2028 and U+2029).
|
|
19
|
+
*/
|
|
20
|
+
function splRegex(value) {
|
|
21
|
+
return escapeForSPL(inlineCaseInsensitive(value));
|
|
22
|
+
}
|
|
9
23
|
/**
|
|
10
24
|
* Escape a string for use in Splunk SPL double-quoted values.
|
|
11
25
|
*/
|
|
@@ -22,7 +36,7 @@ function conditionToSPL(cond) {
|
|
|
22
36
|
const value = cond.value;
|
|
23
37
|
switch (cond.operator) {
|
|
24
38
|
case 'regex':
|
|
25
|
-
return `| regex ${field}="${
|
|
39
|
+
return `| regex ${field}="${splRegex(value)}"`;
|
|
26
40
|
case 'contains':
|
|
27
41
|
return `${field}="*${escapeForSPL(value)}*"`;
|
|
28
42
|
case 'exact':
|
|
@@ -94,7 +108,7 @@ export function ruleToSPL(rule) {
|
|
|
94
108
|
lines.push('| where (');
|
|
95
109
|
const regexClauses = regexConditions.map((cond, i) => {
|
|
96
110
|
const prefix = i === 0 ? ' ' : ' OR ';
|
|
97
|
-
return `${prefix}match(${cond.field}, "${
|
|
111
|
+
return `${prefix}match(${cond.field}, "${splRegex(cond.value)}")`;
|
|
98
112
|
});
|
|
99
113
|
lines.push(...regexClauses);
|
|
100
114
|
lines.push(')');
|
|
@@ -106,7 +120,7 @@ export function ruleToSPL(rule) {
|
|
|
106
120
|
for (const cond of arrayConditions) {
|
|
107
121
|
switch (cond.operator) {
|
|
108
122
|
case 'regex':
|
|
109
|
-
clauses.push(`match(${cond.field}, "${
|
|
123
|
+
clauses.push(`match(${cond.field}, "${splRegex(cond.value)}")`);
|
|
110
124
|
break;
|
|
111
125
|
case 'contains':
|
|
112
126
|
clauses.push(`like(${cond.field}, "%${escapeForSPL(cond.value)}%")`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splunk.js","sourceRoot":"","sources":["../../src/converters/splunk.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"splunk.js","sourceRoot":"","sources":["../../src/converters/splunk.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.d.ts
CHANGED
|
@@ -21,6 +21,14 @@ import type { SemanticLayerConfig } from './layer-integration.js';
|
|
|
21
21
|
import type { InvariantChecker } from './tier0-invariant.js';
|
|
22
22
|
import type { BlacklistProvider } from './tier1-blacklist.js';
|
|
23
23
|
import type { EmbeddingModule } from './modules/embedding.js';
|
|
24
|
+
export { needsUnicodeFlag, regexConditionSpec } from './regex-dialect.js';
|
|
25
|
+
export type { RegexConditionSpec } from './regex-dialect.js';
|
|
26
|
+
/**
|
|
27
|
+
* Detect and decode base64-encoded blocks in content.
|
|
28
|
+
* Bounds: max 1 level decode, max 5 blocks, min 32 chars per block,
|
|
29
|
+
* MAX_EVAL_LENGTH per decoded block. Returns decoded text fragments.
|
|
30
|
+
* The result depends on `content` alone (SPEC §6.5).
|
|
31
|
+
*/
|
|
24
32
|
export declare function decodeBase64Blocks(content: string): string[];
|
|
25
33
|
/** Map agent event types to ATR source types */
|
|
26
34
|
export declare const EVENT_TYPE_TO_SOURCE: Readonly<Record<string, string>>;
|
|
@@ -414,31 +422,6 @@ export declare class ATREngine {
|
|
|
414
422
|
/** Async MCP event scan result with semantic rule support. */
|
|
415
423
|
evaluateFullAsync(event: AgentEvent, filePath?: string): Promise<ScanResult>;
|
|
416
424
|
}
|
|
417
|
-
/** How the engine compiles one array-format `operator: regex` condition. */
|
|
418
|
-
export interface RegexConditionSpec {
|
|
419
|
-
/** The pattern handed to RegExp: the condition's value minus a leading inline flag group. */
|
|
420
|
-
readonly source: string;
|
|
421
|
-
/** The letters of that stripped group ("i", "is", ...), or "" when there was none. Stripped, not applied. */
|
|
422
|
-
readonly inlineFlags: string;
|
|
423
|
-
/** Always `i` -- this condition shape has no case-sensitive mode -- plus `u` when the pattern needs it. */
|
|
424
|
-
readonly flags: 'i' | 'iu';
|
|
425
|
-
}
|
|
426
|
-
/**
|
|
427
|
-
* The engine's single definition of how an array-format `operator: regex`
|
|
428
|
-
* condition is compiled (SPEC §6.4). Both compile sites in ATREngine reach it
|
|
429
|
-
* through compileRegexCondition() (compilePatterns() and the on-the-fly fallback
|
|
430
|
-
* in evaluateArrayCondition()), so does ShadowEvaluator, and
|
|
431
|
-
* scripts/gate-case-sensitivity.ts imports it, because it has to see each pattern
|
|
432
|
-
* exactly as the engine does. That gate used to keep its own copy of this logic,
|
|
433
|
-
* and the copy went stale when needsUnicodeFlag() started setting `u` for astral
|
|
434
|
-
* literals. Other scripts still re-derive it by hand and could import it too.
|
|
435
|
-
*
|
|
436
|
-
* Two consequences rule authors cannot see from the pattern:
|
|
437
|
-
* - `i` is applied whether or not the author wrote (?i), so letter case never
|
|
438
|
-
* distinguishes anything: [A-Z] also matches a-z.
|
|
439
|
-
* - A stripped (?s), (?m) or (?x) is NOT applied.
|
|
440
|
-
*/
|
|
441
|
-
export declare function regexConditionSpec(value: string): RegexConditionSpec;
|
|
442
425
|
/**
|
|
443
426
|
* Compile an array-format `operator: regex` value the way the engine does: the
|
|
444
427
|
* leading flag group handled by regexConditionSpec(), then the ReDoS gate in
|
|
@@ -510,27 +493,4 @@ export declare function safeRegexTest(regex: RegExp, input: string): boolean;
|
|
|
510
493
|
* corpus without dropping a single legitimate rule.
|
|
511
494
|
*/
|
|
512
495
|
export declare function isReDoSSafe(source: string): boolean;
|
|
513
|
-
/**
|
|
514
|
-
* Compile a rule-derived pattern with a ReDoS safety gate. Returns null (caller
|
|
515
|
-
* skips the pattern) when the source is syntactically invalid OR exhibits
|
|
516
|
-
* catastrophic-backtracking structure. A dropped rule in a security engine must
|
|
517
|
-
* be LOUD, not silent, so a rejected ReDoS pattern warns to stderr (never
|
|
518
|
-
* stdout — that carries the hook protocol) with the offending source.
|
|
519
|
-
*/
|
|
520
|
-
/**
|
|
521
|
-
* Does this pattern need the RegExp `u` flag?
|
|
522
|
-
*
|
|
523
|
-
* `\\u{...}` and `\\p{...}` require it by syntax, and so does a literal astral
|
|
524
|
-
* character: without `u`, JavaScript reads a surrogate pair, and a class range
|
|
525
|
-
* written with literals -- [<U+E0000>-<U+E007F>] -- is a SyntaxError rather than
|
|
526
|
-
* a range.
|
|
527
|
-
*
|
|
528
|
-
* The literal form matters because it is the only spelling the three consuming
|
|
529
|
-
* engines share. `\\u{...}` is JS-only: Python re needs `\\U000E0000`, Go needs
|
|
530
|
-
* `\\x{E0000}`, and neither of those is valid JavaScript. Sixteen conditions
|
|
531
|
-
* across ten rules used it, which made those rules uncompilable from the Python
|
|
532
|
-
* and Go channels; they are literals now, and this is what keeps them working
|
|
533
|
-
* here.
|
|
534
|
-
*/
|
|
535
|
-
export declare function needsUnicodeFlag(pattern: string): boolean;
|
|
536
496
|
//# sourceMappingURL=engine.d.ts.map
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EAGV,UAAU,EACV,YAAY,EACZ,UAAU,EAEV,WAAW,EACX,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAOpB,OAAO,EAA+B,KAAK,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAGpF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAA4D,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAE7G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAEpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAQlE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.js
CHANGED
|
@@ -25,6 +25,9 @@ import { ruleConfidence } from './rule-confidence.js';
|
|
|
25
25
|
import { SemanticModule } from './modules/semantic.js';
|
|
26
26
|
import { resolveSkillId, runFingerprintLayer, shouldRunSemanticLayer, createSemanticModuleFromConfig, runSemanticLayer, } from './layer-integration.js';
|
|
27
27
|
import { buildBlacklistMatch, resolveSkillId as resolveBlacklistSkillId } from './tier1-blacklist.js';
|
|
28
|
+
import { normalizeRegex, regexConditionSpec } from './regex-dialect.js';
|
|
29
|
+
// Re-exported: scripts and tests import these from the engine.
|
|
30
|
+
export { needsUnicodeFlag, regexConditionSpec } from './regex-dialect.js';
|
|
28
31
|
/**
|
|
29
32
|
* Rules excluded from skill-context scanning due to high false-positive rate.
|
|
30
33
|
* Threshold: >0.5% FP on 466 real-world SKILL.md files (skills-sh corpus).
|
|
@@ -76,18 +79,25 @@ const SKILL_CONTEXT_DENYLIST = new Set([
|
|
|
76
79
|
// ATR-2026-00074 Cross-Agent Privilege Escalation (1 FP)
|
|
77
80
|
// ATR-2026-00098 Unauthorized Financial Action (1 FP)
|
|
78
81
|
]);
|
|
82
|
+
const MAX_DECODE_BLOCKS = 5;
|
|
79
83
|
/**
|
|
80
84
|
* Detect and decode base64-encoded blocks in content.
|
|
81
85
|
* Bounds: max 1 level decode, max 5 blocks, min 32 chars per block,
|
|
82
86
|
* MAX_EVAL_LENGTH per decoded block. Returns decoded text fragments.
|
|
87
|
+
* The result depends on `content` alone (SPEC §6.5).
|
|
83
88
|
*/
|
|
84
|
-
const BASE64_BLOCK_RE = /(?:[A-Za-z0-9+/]{32,}={0,2})/g;
|
|
85
|
-
const MAX_DECODE_BLOCKS = 5;
|
|
86
89
|
export function decodeBase64Blocks(content) {
|
|
87
90
|
const decoded = [];
|
|
91
|
+
// A /g regex keeps its search position in lastIndex, and this loop stops at
|
|
92
|
+
// the block cap partway through the content. A regex shared across calls
|
|
93
|
+
// carried that position into the next call, which resumed from it, so the
|
|
94
|
+
// same text decoded different blocks on alternate scans. A literal in the
|
|
95
|
+
// function body is a new RegExp on every call, so the position cannot
|
|
96
|
+
// outlive the call.
|
|
97
|
+
const blockRe = /(?:[A-Za-z0-9+/]{32,}={0,2})/g;
|
|
88
98
|
let match;
|
|
89
99
|
let count = 0;
|
|
90
|
-
while ((match =
|
|
100
|
+
while (count < MAX_DECODE_BLOCKS && (match = blockRe.exec(content)) !== null) {
|
|
91
101
|
try {
|
|
92
102
|
const raw = Buffer.from(match[0], 'base64');
|
|
93
103
|
const text = raw.toString('utf-8');
|
|
@@ -1758,35 +1768,6 @@ function skillGateAlwaysRejects(rule) {
|
|
|
1758
1768
|
function escapeRegex(str) {
|
|
1759
1769
|
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
1760
1770
|
}
|
|
1761
|
-
/** A leading inline flag group as rule authors write it: (?i), (?is), (?im), ... */
|
|
1762
|
-
const LEADING_INLINE_FLAGS = /^\(\?([imsx]+)\)/;
|
|
1763
|
-
/**
|
|
1764
|
-
* Strip inline flags like (?i) from regex patterns.
|
|
1765
|
-
* JavaScript RegExp uses flags as a constructor parameter, not inline.
|
|
1766
|
-
*/
|
|
1767
|
-
function normalizeRegex(pattern) {
|
|
1768
|
-
return pattern.replace(LEADING_INLINE_FLAGS, '');
|
|
1769
|
-
}
|
|
1770
|
-
/**
|
|
1771
|
-
* The engine's single definition of how an array-format `operator: regex`
|
|
1772
|
-
* condition is compiled (SPEC §6.4). Both compile sites in ATREngine reach it
|
|
1773
|
-
* through compileRegexCondition() (compilePatterns() and the on-the-fly fallback
|
|
1774
|
-
* in evaluateArrayCondition()), so does ShadowEvaluator, and
|
|
1775
|
-
* scripts/gate-case-sensitivity.ts imports it, because it has to see each pattern
|
|
1776
|
-
* exactly as the engine does. That gate used to keep its own copy of this logic,
|
|
1777
|
-
* and the copy went stale when needsUnicodeFlag() started setting `u` for astral
|
|
1778
|
-
* literals. Other scripts still re-derive it by hand and could import it too.
|
|
1779
|
-
*
|
|
1780
|
-
* Two consequences rule authors cannot see from the pattern:
|
|
1781
|
-
* - `i` is applied whether or not the author wrote (?i), so letter case never
|
|
1782
|
-
* distinguishes anything: [A-Z] also matches a-z.
|
|
1783
|
-
* - A stripped (?s), (?m) or (?x) is NOT applied.
|
|
1784
|
-
*/
|
|
1785
|
-
export function regexConditionSpec(value) {
|
|
1786
|
-
const inline = LEADING_INLINE_FLAGS.exec(value);
|
|
1787
|
-
const source = normalizeRegex(value);
|
|
1788
|
-
return { source, inlineFlags: inline?.[1] ?? '', flags: needsUnicodeFlag(source) ? 'iu' : 'i' };
|
|
1789
|
-
}
|
|
1790
1771
|
/**
|
|
1791
1772
|
* Compile an array-format `operator: regex` value the way the engine does: the
|
|
1792
1773
|
* leading flag group handled by regexConditionSpec(), then the ReDoS gate in
|
|
@@ -2118,31 +2099,6 @@ export function isReDoSSafe(source) {
|
|
|
2118
2099
|
* be LOUD, not silent, so a rejected ReDoS pattern warns to stderr (never
|
|
2119
2100
|
* stdout — that carries the hook protocol) with the offending source.
|
|
2120
2101
|
*/
|
|
2121
|
-
/**
|
|
2122
|
-
* Does this pattern need the RegExp `u` flag?
|
|
2123
|
-
*
|
|
2124
|
-
* `\\u{...}` and `\\p{...}` require it by syntax, and so does a literal astral
|
|
2125
|
-
* character: without `u`, JavaScript reads a surrogate pair, and a class range
|
|
2126
|
-
* written with literals -- [<U+E0000>-<U+E007F>] -- is a SyntaxError rather than
|
|
2127
|
-
* a range.
|
|
2128
|
-
*
|
|
2129
|
-
* The literal form matters because it is the only spelling the three consuming
|
|
2130
|
-
* engines share. `\\u{...}` is JS-only: Python re needs `\\U000E0000`, Go needs
|
|
2131
|
-
* `\\x{E0000}`, and neither of those is valid JavaScript. Sixteen conditions
|
|
2132
|
-
* across ten rules used it, which made those rules uncompilable from the Python
|
|
2133
|
-
* and Go channels; they are literals now, and this is what keeps them working
|
|
2134
|
-
* here.
|
|
2135
|
-
*/
|
|
2136
|
-
export function needsUnicodeFlag(pattern) {
|
|
2137
|
-
if (pattern.includes('\\u{') || pattern.includes('\\p{'))
|
|
2138
|
-
return true;
|
|
2139
|
-
for (const ch of pattern) {
|
|
2140
|
-
const cp = ch.codePointAt(0);
|
|
2141
|
-
if (cp !== undefined && cp > 0xffff)
|
|
2142
|
-
return true;
|
|
2143
|
-
}
|
|
2144
|
-
return false;
|
|
2145
|
-
}
|
|
2146
2102
|
function safeCompile(source, flags, ruleId) {
|
|
2147
2103
|
if (!isReDoSSafe(source)) {
|
|
2148
2104
|
console.warn(`[atr-engine] rejected ReDoS-unsafe pattern${ruleId ? ` in rule ${ruleId}` : ''}: ${source.slice(0, 120)}`);
|