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.
Files changed (171) hide show
  1. package/CHANGELOG.md +246 -0
  2. package/dist/converters/elastic.d.ts.map +1 -1
  3. package/dist/converters/elastic.js +7 -1
  4. package/dist/converters/elastic.js.map +1 -1
  5. package/dist/converters/generic-regex.d.ts +5 -1
  6. package/dist/converters/generic-regex.d.ts.map +1 -1
  7. package/dist/converters/generic-regex.js +12 -11
  8. package/dist/converters/generic-regex.js.map +1 -1
  9. package/dist/converters/sage-reverse.d.ts +1 -1
  10. package/dist/converters/sage-reverse.d.ts.map +1 -1
  11. package/dist/converters/sage-reverse.js +13 -8
  12. package/dist/converters/sage-reverse.js.map +1 -1
  13. package/dist/converters/sage.d.ts +8 -8
  14. package/dist/converters/sage.d.ts.map +1 -1
  15. package/dist/converters/sage.js +107 -74
  16. package/dist/converters/sage.js.map +1 -1
  17. package/dist/converters/splunk.d.ts.map +1 -1
  18. package/dist/converters/splunk.js +17 -3
  19. package/dist/converters/splunk.js.map +1 -1
  20. package/dist/engine.d.ts +8 -48
  21. package/dist/engine.d.ts.map +1 -1
  22. package/dist/engine.js +13 -57
  23. package/dist/engine.js.map +1 -1
  24. package/dist/regex-dialect.d.ts +67 -0
  25. package/dist/regex-dialect.d.ts.map +1 -0
  26. package/dist/regex-dialect.js +77 -0
  27. package/dist/regex-dialect.js.map +1 -0
  28. package/package.json +1 -1
  29. package/rules/agent-manipulation/ATR-2026-00074-cross-agent-privilege-escalation.yaml +0 -1
  30. package/rules/agent-manipulation/ATR-2026-00430-nl-trust-escalation-impersonation.yaml +3 -0
  31. package/rules/agent-manipulation/ATR-2026-00552-goal-drift-after-pressure-injection.yaml +3 -3
  32. package/rules/context-exfiltration/ATR-2026-00102-disguised-analytics-exfiltration.yaml +3 -2
  33. package/rules/context-exfiltration/ATR-2026-00136-tool-response-data-piggyback.yaml +5 -3
  34. package/rules/context-exfiltration/ATR-2026-00142-piggyback-transition-words.yaml +4 -2
  35. package/rules/context-exfiltration/ATR-2026-00150-credential-in-tool-response.yaml +3 -2
  36. package/rules/context-exfiltration/ATR-2026-00152-obfuscated-credential-leak.yaml +3 -2
  37. package/rules/context-exfiltration/ATR-2026-00162-skill-credential-exfil-combo.yaml +6 -2
  38. package/rules/context-exfiltration/ATR-2026-00201-credential-pipe-exfiltration.yaml +5 -2
  39. package/rules/context-exfiltration/ATR-2026-00290-divergence-repeat-word-training-extraction.yaml +0 -4
  40. package/rules/context-exfiltration/ATR-2026-00449-spring-ai-chatmemory-cross-user-leak.yaml +2 -3
  41. package/rules/context-exfiltration/ATR-2026-00516-output-xss-via-llm.yaml +9 -8
  42. package/rules/context-exfiltration/ATR-2026-00569-agent-mcp-path-traversal-arbitrary-file-access.yaml +3 -1
  43. package/rules/context-exfiltration/ATR-2026-00571-xss-in-agent-mcp-rendered-output.yaml +4 -3
  44. package/rules/context-exfiltration/ATR-2026-00702-ipi-credential-exfil-via-agent-action.yaml +5 -3
  45. package/rules/context-exfiltration/ATR-2026-00703-ipi-financial-data-exfil-indirect.yaml +5 -3
  46. package/rules/context-exfiltration/ATR-2026-00704-ipi-medical-genetic-data-exfil.yaml +5 -3
  47. package/rules/context-exfiltration/ATR-2026-00705-ipi-location-address-browsing-exfil.yaml +5 -3
  48. package/rules/context-exfiltration/ATR-2026-00706-ipi-physical-biometric-exfil.yaml +5 -3
  49. package/rules/context-exfiltration/ATR-2026-00707-ipi-file-exfil-with-destroy-or-tamper.yaml +6 -3
  50. package/rules/context-exfiltration/ATR-2026-00860-indirect-pi-financial-transfer-hijack.yaml +1 -1
  51. package/rules/context-exfiltration/ATR-2026-00861-indirect-pi-crypto-transfer-hijack.yaml +1 -1
  52. package/rules/context-exfiltration/ATR-2026-01605-ssrf-aws-metadata-endpoint.yaml +5 -1
  53. package/rules/context-exfiltration/ATR-2026-01606-ssrf-internal-network-scan.yaml +4 -1
  54. package/rules/context-exfiltration/ATR-2026-01607-ssrf-localhost-service-probe.yaml +4 -1
  55. package/rules/context-exfiltration/ATR-2026-01924-system-instruction-extraction-reformat.yaml +1 -4
  56. package/rules/context-exfiltration/ATR-2026-01948-netlicensing-mcp-product-number-path-traversal-token-leak.yaml +4 -2
  57. package/rules/context-exfiltration/ATR-2026-01957-m365-copilot-searchleak-open-redirect-exfil.yaml +6 -2
  58. package/rules/context-exfiltration/ATR-2026-01961-meta-ads-mcp-unauth-token-leak.yaml +4 -1
  59. package/rules/context-exfiltration/ATR-2026-01964-langchain-gmailtoolkit-indirect-prompt-injection-email-exfil.yaml +6 -2
  60. package/rules/context-exfiltration/ATR-2026-02140-ssrf-ipv6-hex-encoded-cloud-metadata-bypass.yaml +1 -1
  61. package/rules/context-exfiltration/ATR-2026-02304-preapproved-domain-encoded-path-exfil.yaml +1 -1
  62. package/rules/context-exfiltration/ATR-2026-02351-wildcard-dns-ssrf-hostname-ip-encoding-bypass.yaml +1 -1
  63. package/rules/data-poisoning/ATR-2026-00070-data-poisoning.yaml +1 -1
  64. package/rules/excessive-autonomy/ATR-2026-00491-garak-agent-breaker-markdown-just-raw-json.yaml +8 -8
  65. package/rules/excessive-autonomy/ATR-2026-00500-ssrf-via-agent-url-fetch-instruction.yaml +5 -3
  66. package/rules/excessive-autonomy/ATR-2026-00708-ipi-financial-transfer-unauthorized.yaml +4 -3
  67. package/rules/excessive-autonomy/ATR-2026-00711-ipi-system-sabotage-destructive-command.yaml +4 -3
  68. package/rules/excessive-autonomy/ATR-2026-00712-ipi-malicious-package-install.yaml +5 -3
  69. package/rules/excessive-autonomy/ATR-2026-00718-tool-misuse-financial-autonomous.yaml +8 -7
  70. package/rules/excessive-autonomy/ATR-2026-00719-tool-misuse-destructive-bulk-action.yaml +3 -3
  71. package/rules/excessive-autonomy/ATR-2026-01773-semantic-excessive-agency-action.yaml +3 -3
  72. package/rules/excessive-autonomy/ATR-2026-01801-asb-autonomous-vehicle-sabotage.yaml +3 -3
  73. package/rules/excessive-autonomy/ATR-2026-01804-asb-covert-unlogged-action.yaml +3 -4
  74. package/rules/excessive-autonomy/ATR-2026-01805-asb-financial-fraud-execution.yaml +3 -3
  75. package/rules/excessive-autonomy/ATR-2026-01806-asb-clinical-patient-harm.yaml +3 -3
  76. package/rules/excessive-autonomy/ATR-2026-01809-semantic-insider-manipulation-process-corruption.yaml +2 -3
  77. package/rules/excessive-autonomy/ATR-2026-01989-t1046-agent-internal-network-sweep.yaml +2 -2
  78. package/rules/excessive-autonomy/ATR-2026-01993-t1562-agent-impair-defenses.yaml +2 -2
  79. package/rules/excessive-autonomy/ATR-2026-02667-preapproved-tool-list-in-job-payload.yaml +0 -1
  80. package/rules/model-abuse/ATR-2026-00292-self-harm-eating-disorder-facilitation.yaml +3 -3
  81. package/rules/model-abuse/ATR-2026-00502-training-data-extraction-via-divergent-repetition-attack.yaml +2 -0
  82. package/rules/privilege-escalation/ATR-2026-00107-delayed-execution-bypass.yaml +2 -2
  83. package/rules/privilege-escalation/ATR-2026-00143-casual-privilege-escalation.yaml +3 -2
  84. package/rules/privilege-escalation/ATR-2026-00144-rationalized-safety-bypass.yaml +3 -2
  85. package/rules/privilege-escalation/ATR-2026-00204-stealth-execution-persistence.yaml +1 -1
  86. package/rules/privilege-escalation/ATR-2026-00441-semantic-kernel-sessions-python-plugin-startup-persistence.yaml +2 -1
  87. package/rules/privilege-escalation/ATR-2026-00546-crewai-json-loader-local-file-read.yaml +3 -1
  88. package/rules/privilege-escalation/ATR-2026-00549-destructive-tool-without-human-approval.yaml +2 -2
  89. package/rules/privilege-escalation/ATR-2026-01601-sql-injection-destructive-ddl.yaml +6 -5
  90. package/rules/privilege-escalation/ATR-2026-01602-sql-injection-union-select-exfil.yaml +3 -1
  91. package/rules/privilege-escalation/ATR-2026-01603-sql-injection-stacked-dml-abuse.yaml +3 -2
  92. package/rules/privilege-escalation/ATR-2026-01604-sql-injection-schema-enumeration.yaml +3 -2
  93. package/rules/privilege-escalation/ATR-2026-01616-path-traversal-agent-file-access.yaml +4 -1
  94. package/rules/privilege-escalation/ATR-2026-01802-asb-backdoor-surveillance-implant.yaml +4 -3
  95. package/rules/privilege-escalation/ATR-2026-01803-asb-covert-server-intrusion.yaml +4 -4
  96. package/rules/privilege-escalation/ATR-2026-01808-asb-synthetic-pan-payment-probe.yaml +3 -3
  97. package/rules/privilege-escalation/ATR-2026-01949-praisonai-mcpserver-unauth-tools-call.yaml +1 -1
  98. package/rules/privilege-escalation/ATR-2026-01974-anything-llm-data-import-access-control.yaml +1 -1
  99. package/rules/privilege-escalation/ATR-2026-01992-t1556-agent-auth-process-tamper.yaml +1 -1
  100. package/rules/privilege-escalation/ATR-2026-02040-file-edit-tool-persistence-write.yaml +1 -1
  101. package/rules/privilege-escalation/ATR-2026-02100-cypher-destructive-admin-query-injection.yaml +4 -4
  102. package/rules/privilege-escalation/ATR-2026-02101-dynamic-dunder-attribute-sandbox-escape.yaml +1 -1
  103. package/rules/privilege-escalation/ATR-2026-02142-download-tool-absolute-path-sandbox-escape.yaml +1 -1
  104. package/rules/privilege-escalation/ATR-2026-02146-export-tool-dest-dir-credential-directory-redirect.yaml +1 -1
  105. package/rules/privilege-escalation/ATR-2026-02195-dangerous-env-var-injection-config-tool.yaml +1 -1
  106. package/rules/privilege-escalation/ATR-2026-02300-mcp-stdio-config-dangerous-env-var.yaml +5 -5
  107. package/rules/privilege-escalation/ATR-2026-02301-symlink-outside-workspace-sensitive-target.yaml +1 -1
  108. package/rules/privilege-escalation/ATR-2026-02302-git-worktree-dotgit-sandbox-escape.yaml +1 -1
  109. package/rules/privilege-escalation/ATR-2026-02402-mcp-policy-engine-fail-open.yaml +0 -1
  110. package/rules/prompt-injection/ATR-2026-00154-unauthorized-background-task-execution-v.yaml +5 -3
  111. package/rules/prompt-injection/ATR-2026-00156-ssh-remote-command-execution-with-creden.yaml +6 -3
  112. package/rules/prompt-injection/ATR-2026-00407-echo-sql-jinja-template-injection.yaml +3 -3
  113. package/rules/prompt-injection/ATR-2026-00410-lmrc-harm-category-direct-elicitation.yaml +2 -2
  114. package/rules/prompt-injection/ATR-2026-00442-quoted-exact-output-forcing.yaml +2 -2
  115. package/rules/prompt-injection/ATR-2026-00512-rules-file-backdoor-injection.yaml +3 -0
  116. package/rules/prompt-injection/ATR-2026-00554-langchain-vulnerable-to-template-injecti.yaml +3 -3
  117. package/rules/prompt-injection/ATR-2026-01800-asb-trigger-marker-tool-coercion.yaml +3 -3
  118. package/rules/prompt-injection/ATR-2026-02009-bare-key-elicitation-trailing-colon.yaml +3 -2
  119. package/rules/prompt-injection/ATR-2026-02820-tool-result-orders-agent-to-hide-its-own-action.yaml +3 -3
  120. package/rules/skill-compromise/ATR-2026-00127-subcommand-overflow.yaml +2 -1
  121. package/rules/skill-compromise/ATR-2026-00157-timebomb-credential-exfil.yaml +6 -2
  122. package/rules/skill-compromise/ATR-2026-00200-agent-memory-config-tampering.yaml +1 -1
  123. package/rules/skill-compromise/ATR-2026-00217-credential-harvesting.yaml +4 -2
  124. package/rules/skill-compromise/ATR-2026-00222-credential-harvesting.yaml +6 -2
  125. package/rules/skill-compromise/ATR-2026-00224-credential-exfiltration.yaml +4 -2
  126. package/rules/skill-compromise/ATR-2026-00260-package-hallucination.yaml +3 -2
  127. package/rules/skill-compromise/ATR-2026-00266-malware-dropper-gen.yaml +4 -3
  128. package/rules/skill-compromise/ATR-2026-00398-huggingface-unsafe-model-artifact-load.yaml +3 -3
  129. package/rules/skill-compromise/ATR-2026-00429-nl-skill-self-modification.yaml +4 -2
  130. package/rules/skill-compromise/ATR-2026-00525-mini-shai-hulud-gh-token-monitor-persistence.yaml +1 -0
  131. package/rules/skill-compromise/ATR-2026-00527-skill-silent-git-remote-mirror-exfiltration.yaml +3 -2
  132. package/rules/skill-compromise/ATR-2026-01755-backdoor-pot-linguistic-trigger-phrase.yaml +1 -1
  133. package/rules/skill-compromise/ATR-2026-01756-backdoor-pot-symbol-emoticon-trigger.yaml +1 -1
  134. package/rules/tool-poisoning/ATR-2026-00096-registry-poisoning.yaml +4 -3
  135. package/rules/tool-poisoning/ATR-2026-00100-consent-bypass-instruction.yaml +4 -2
  136. package/rules/tool-poisoning/ATR-2026-00105-silent-action-concealment.yaml +2 -1
  137. package/rules/tool-poisoning/ATR-2026-00106-schema-description-contradiction.yaml +2 -2
  138. package/rules/tool-poisoning/ATR-2026-00270-xss-in-tool-response.yaml +4 -3
  139. package/rules/tool-poisoning/ATR-2026-00494-garak-exploitation-mixedunassigned.yaml +5 -3
  140. package/rules/tool-poisoning/ATR-2026-00513-package-hallucination-exploitation.yaml +9 -7
  141. package/rules/tool-poisoning/ATR-2026-00521-shell-command-injection-agent-tool-context.yaml +5 -3
  142. package/rules/tool-poisoning/ATR-2026-00522-sql-injection-natural-language-agent-interface.yaml +4 -3
  143. package/rules/tool-poisoning/ATR-2026-00526-claude-code-shell-metachar-in-double-quoted-path.yaml +4 -3
  144. package/rules/tool-poisoning/ATR-2026-00530-ms-agent-shell-tool-unsanitized-argv-rce.yaml +4 -3
  145. package/rules/tool-poisoning/ATR-2026-00531-praisonai-unauthenticated-agent-api.yaml +1 -2
  146. package/rules/tool-poisoning/ATR-2026-00533-apache-pinot-mcp-unauthenticated-takeover.yaml +2 -3
  147. package/rules/tool-poisoning/ATR-2026-00716-ipi-data-destruction-carrier.yaml +5 -3
  148. package/rules/tool-poisoning/ATR-2026-00720-tool-misuse-privilege-escalation-social.yaml +3 -3
  149. package/rules/tool-poisoning/ATR-2026-01301-tool-description-exclusive-tool-override.yaml +1 -1
  150. package/rules/tool-poisoning/ATR-2026-01303-tool-schema-enumeration-social-engineering.yaml +4 -3
  151. package/rules/tool-poisoning/ATR-2026-01307-mcp-dns-rebinding-attack.yaml +3 -5
  152. package/rules/tool-poisoning/ATR-2026-01310-mcp-tool-description-compliance-history-exfil.yaml +5 -4
  153. package/rules/tool-poisoning/ATR-2026-01775-semantic-mcp-tool-manifest-poisoning.yaml +1 -1
  154. package/rules/tool-poisoning/ATR-2026-01952-praisonai-codemode-sandbox-escape-rce.yaml +4 -2
  155. package/rules/tool-poisoning/ATR-2026-01953-praisonai-codemode-function-ctor-sandbox-escape.yaml +4 -2
  156. package/rules/tool-poisoning/ATR-2026-01959-openhuman-shell-allowlist-env-prefix-bypass.yaml +4 -2
  157. package/rules/tool-poisoning/ATR-2026-01963-praisonai-action-orchestrator-step-target-path-traversal-rce.yaml +3 -2
  158. package/rules/tool-poisoning/ATR-2026-01965-flowise-custommcp-os-command-rce.yaml +2 -1
  159. package/rules/tool-poisoning/ATR-2026-01967-deepchat-mermaid-xss-rce-ipc-mcp-register.yaml +4 -2
  160. package/rules/tool-poisoning/ATR-2026-01970-praisonai-filetools-normpath-path-traversal.yaml +2 -2
  161. package/rules/tool-poisoning/ATR-2026-01973-anythingllm-logo-endpoint-path-traversal.yaml +2 -2
  162. package/rules/tool-poisoning/ATR-2026-01978-anythingllm-collector-process-filename-path-traversal-delete.yaml +2 -2
  163. package/rules/tool-poisoning/ATR-2026-01979-pandasai-prompt-injection-dunder-sandbox-escape-rce.yaml +6 -2
  164. package/rules/tool-poisoning/ATR-2026-01980-agentic-flow-mcp-tool-param-command-injection.yaml +4 -2
  165. package/rules/tool-poisoning/ATR-2026-01982-dbt-mcp-node-selection-argument-injection.yaml +2 -2
  166. package/rules/tool-poisoning/ATR-2026-01983-mcp-for-stata-log-file-name-command-injection.yaml +4 -2
  167. package/rules/tool-poisoning/ATR-2026-01985-mcp-connect-bridge-unauth-process-spawn-rce.yaml +2 -1
  168. package/rules/tool-poisoning/ATR-2026-01987-langroid-sqlchatagent-prompt-to-sql-rce.yaml +4 -2
  169. package/rules/tool-poisoning/ATR-2026-02102-html-injection-tool-arg-approval-ui-xss.yaml +1 -1
  170. package/rules/tool-poisoning/ATR-2026-02141-mcp-server-config-command-execution.yaml +1 -1
  171. package/rules/tool-poisoning/ATR-2026-02233-unscoped-destructive-db-request-nl.yaml +1 -1
@@ -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
- * - ATR `(?i)` inline flag (PCRE) is extracted into Sage's rule-level
20
- * `case_insensitive: true` because the Sage runtime regex compiler is
21
- * JavaScript and does not support inline flag groups.
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: scripts/sync-with-atr.ts (Sage maintainers can run this script
28
- * to regenerate threats/agent-layer.yaml from a pinned ATR version), and
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
- * Extract a leading `(?flags)` inline modifier and return the stripped regex
133
- * plus the JavaScript-applicable flag characters. Sage compiles regex with
134
- * `new RegExp(pattern, case_insensitive ? "i" : "")`, so the `i` flag is the
135
- * only one Sage supports at rule level. Other inline flags (`s`, `m`, `u`,
136
- * `g`, `y`) cannot survive — they get stripped and a warning emitted.
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 extractInlineFlags(pattern) {
139
- const leadingFlagMatch = pattern.match(/^\(\?([gimsuy]+)\)/);
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: stripped,
149
- caseInsensitive: ci,
150
- unsupportedFlags: unsupported,
155
+ pattern: spec.source,
156
+ needsUnicode: spec.flags === 'iu' && dependsOnUnicodeMode(spec.source),
151
157
  };
152
158
  }
153
159
  /**
154
- * Validate a regex compiles under JavaScript's RegExp engine with the given
155
- * flags. Returns the compile error message if it fails, or null if it
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, caseInsensitive) {
215
+ function validateRegexCompiles(pattern) {
159
216
  try {
160
- new RegExp(pattern, caseInsensitive ? 'i' : '');
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, caseInsensitive, unsupportedFlags } = extractInlineFlags(cond.value);
322
- if (unsupportedFlags) {
323
- warnings.push({
324
- ruleId: atr.id,
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, caseInsensitive);
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({ regex: pattern, caseInsensitive });
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
- // If the group mixes case-sensitive and case-insensitive patterns, we can
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, ruleCaseInsensitive);
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: ruleCaseInsensitive,
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
- * - Multi-condition rules with mixed case-sensitivity → whole rule becomes
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) => extractInlineFlags(c.value).pattern)
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, caseInsensitive, unsupportedFlags } = extractInlineFlags(condition.value);
543
- if (unsupportedFlags) {
544
- warnings.push({
545
- ruleId: atr.id,
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, caseInsensitive);
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: caseInsensitive,
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":"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"}
1
+ {"version":3,"file":"sage.js","sourceRoot":"","sources":["../../src/converters/sage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAqDzD,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;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,aAAa,CAAC,KAAa;IACnC,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO;QACN,OAAO,EAAE,IAAI,CAAC,MAAM;QACpB,YAAY,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;KACtE,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,MAAc;IAC3C,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,CAAC;QACJ,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAC1B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACrB,IAAI,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,KAAK,CAAC;YAChB,SAAS;QACV,CAAC;QACD,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YACjB,OAAO,GAAG,IAAI,CAAC;YACf,SAAS;QACV,CAAC;QACD,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAE,GAAG,MAAM,CAAC;QAC3C,IAAI,OAAO,EAAE,CAAC;YACb,IAAI,EAAE,KAAK,GAAG;gBAAE,OAAO,GAAG,KAAK,CAAC;iBAC3B,IAAI,MAAM;gBAAE,OAAO,IAAI,CAAC;YAC7B,SAAS;QACV,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAChB,OAAO,GAAG,IAAI,CAAC;YACf,SAAS;QACV,CAAC;QACD,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QACpE,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;IACrD,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,oBAAoB,GACzB,gGAAgG;IAChG,uFAAuF,CAAC;AAEzF;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,OAAe;IAC7C,IAAI,CAAC;QACJ,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACzB,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;IAE7B,oEAAoE;IACpE,6BAA6B;IAC7B,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,YAAY,EAAE,CAAC;YAClB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;YAC5F,SAAS;QACV,CAAC;QACD,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACpD,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,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAExC,MAAM,aAAa,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAEpD,2EAA2E;IAC3E,4BAA4B;IAC5B,MAAM,YAAY,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;IAC1D,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,IAAI;QACtB,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;;;;;;;;;;;;;GAaG;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,wEAAwE;QACxE,oEAAoE;QACpE,MAAM,iBAAiB,GAAG,UAAU;aAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;aAClC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;aACtD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACxB,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,YAAY,EAAE,GAAG,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjE,IAAI,YAAY,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAC5F,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACpD,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,IAAI;QACtB,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 +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;AAoD9D;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAqG/C"}
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}="${escapeForSPL(value)}"`;
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}, "${escapeForSPL(cond.value)}")`;
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}, "${escapeForSPL(cond.value)}")`);
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":"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"}
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
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
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 = BASE64_BLOCK_RE.exec(content)) !== null && count < MAX_DECODE_BLOCKS) {
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)}`);