@oddessentials/odd-ai-reviewers 1.0.0

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 (370) hide show
  1. package/README.md +190 -0
  2. package/dist/__tests__/hermetic-setup.d.ts +55 -0
  3. package/dist/__tests__/hermetic-setup.d.ts.map +1 -0
  4. package/dist/__tests__/hermetic-setup.js +62 -0
  5. package/dist/__tests__/hermetic-setup.js.map +1 -0
  6. package/dist/__tests__/test-utils/hermetic.d.ts +84 -0
  7. package/dist/__tests__/test-utils/hermetic.d.ts.map +1 -0
  8. package/dist/__tests__/test-utils/hermetic.js +147 -0
  9. package/dist/__tests__/test-utils/hermetic.js.map +1 -0
  10. package/dist/agents/ai_semantic_review.d.ts +12 -0
  11. package/dist/agents/ai_semantic_review.d.ts.map +1 -0
  12. package/dist/agents/ai_semantic_review.js +317 -0
  13. package/dist/agents/ai_semantic_review.js.map +1 -0
  14. package/dist/agents/control_flow/budget.d.ts +162 -0
  15. package/dist/agents/control_flow/budget.d.ts.map +1 -0
  16. package/dist/agents/control_flow/budget.js +331 -0
  17. package/dist/agents/control_flow/budget.js.map +1 -0
  18. package/dist/agents/control_flow/cfg-builder.d.ts +26 -0
  19. package/dist/agents/control_flow/cfg-builder.d.ts.map +1 -0
  20. package/dist/agents/control_flow/cfg-builder.js +776 -0
  21. package/dist/agents/control_flow/cfg-builder.js.map +1 -0
  22. package/dist/agents/control_flow/cfg-types.d.ts +186 -0
  23. package/dist/agents/control_flow/cfg-types.d.ts.map +1 -0
  24. package/dist/agents/control_flow/cfg-types.js +114 -0
  25. package/dist/agents/control_flow/cfg-types.js.map +1 -0
  26. package/dist/agents/control_flow/finding-generator.d.ts +118 -0
  27. package/dist/agents/control_flow/finding-generator.d.ts.map +1 -0
  28. package/dist/agents/control_flow/finding-generator.js +354 -0
  29. package/dist/agents/control_flow/finding-generator.js.map +1 -0
  30. package/dist/agents/control_flow/index.d.ts +39 -0
  31. package/dist/agents/control_flow/index.d.ts.map +1 -0
  32. package/dist/agents/control_flow/index.js +270 -0
  33. package/dist/agents/control_flow/index.js.map +1 -0
  34. package/dist/agents/control_flow/logger.d.ts +333 -0
  35. package/dist/agents/control_flow/logger.d.ts.map +1 -0
  36. package/dist/agents/control_flow/logger.js +607 -0
  37. package/dist/agents/control_flow/logger.js.map +1 -0
  38. package/dist/agents/control_flow/mitigation-detector.d.ts +207 -0
  39. package/dist/agents/control_flow/mitigation-detector.d.ts.map +1 -0
  40. package/dist/agents/control_flow/mitigation-detector.js +625 -0
  41. package/dist/agents/control_flow/mitigation-detector.js.map +1 -0
  42. package/dist/agents/control_flow/mitigation-patterns.d.ts +53 -0
  43. package/dist/agents/control_flow/mitigation-patterns.d.ts.map +1 -0
  44. package/dist/agents/control_flow/mitigation-patterns.js +620 -0
  45. package/dist/agents/control_flow/mitigation-patterns.js.map +1 -0
  46. package/dist/agents/control_flow/path-analyzer.d.ts +287 -0
  47. package/dist/agents/control_flow/path-analyzer.d.ts.map +1 -0
  48. package/dist/agents/control_flow/path-analyzer.js +695 -0
  49. package/dist/agents/control_flow/path-analyzer.js.map +1 -0
  50. package/dist/agents/control_flow/pattern-validator.d.ts +132 -0
  51. package/dist/agents/control_flow/pattern-validator.d.ts.map +1 -0
  52. package/dist/agents/control_flow/pattern-validator.js +420 -0
  53. package/dist/agents/control_flow/pattern-validator.js.map +1 -0
  54. package/dist/agents/control_flow/timeout-regex.d.ts +144 -0
  55. package/dist/agents/control_flow/timeout-regex.d.ts.map +1 -0
  56. package/dist/agents/control_flow/timeout-regex.js +339 -0
  57. package/dist/agents/control_flow/timeout-regex.js.map +1 -0
  58. package/dist/agents/control_flow/types.d.ts +782 -0
  59. package/dist/agents/control_flow/types.d.ts.map +1 -0
  60. package/dist/agents/control_flow/types.js +428 -0
  61. package/dist/agents/control_flow/types.js.map +1 -0
  62. package/dist/agents/control_flow/vulnerability-detector.d.ts +85 -0
  63. package/dist/agents/control_flow/vulnerability-detector.d.ts.map +1 -0
  64. package/dist/agents/control_flow/vulnerability-detector.js +493 -0
  65. package/dist/agents/control_flow/vulnerability-detector.js.map +1 -0
  66. package/dist/agents/date-utils.d.ts +19 -0
  67. package/dist/agents/date-utils.d.ts.map +1 -0
  68. package/dist/agents/date-utils.js +29 -0
  69. package/dist/agents/date-utils.js.map +1 -0
  70. package/dist/agents/index.d.ts +25 -0
  71. package/dist/agents/index.d.ts.map +1 -0
  72. package/dist/agents/index.js +50 -0
  73. package/dist/agents/index.js.map +1 -0
  74. package/dist/agents/json-utils.d.ts +34 -0
  75. package/dist/agents/json-utils.d.ts.map +1 -0
  76. package/dist/agents/json-utils.js +62 -0
  77. package/dist/agents/json-utils.js.map +1 -0
  78. package/dist/agents/local_llm.d.ts +24 -0
  79. package/dist/agents/local_llm.d.ts.map +1 -0
  80. package/dist/agents/local_llm.js +566 -0
  81. package/dist/agents/local_llm.js.map +1 -0
  82. package/dist/agents/metadata.d.ts +57 -0
  83. package/dist/agents/metadata.d.ts.map +1 -0
  84. package/dist/agents/metadata.js +45 -0
  85. package/dist/agents/metadata.js.map +1 -0
  86. package/dist/agents/opencode.d.ts +18 -0
  87. package/dist/agents/opencode.d.ts.map +1 -0
  88. package/dist/agents/opencode.js +364 -0
  89. package/dist/agents/opencode.js.map +1 -0
  90. package/dist/agents/path-filter.d.ts +25 -0
  91. package/dist/agents/path-filter.d.ts.map +1 -0
  92. package/dist/agents/path-filter.js +43 -0
  93. package/dist/agents/path-filter.js.map +1 -0
  94. package/dist/agents/pr_agent.d.ts +3 -0
  95. package/dist/agents/pr_agent.d.ts.map +1 -0
  96. package/dist/agents/pr_agent.js +312 -0
  97. package/dist/agents/pr_agent.js.map +1 -0
  98. package/dist/agents/retry.d.ts +12 -0
  99. package/dist/agents/retry.d.ts.map +1 -0
  100. package/dist/agents/retry.js +65 -0
  101. package/dist/agents/retry.js.map +1 -0
  102. package/dist/agents/reviewdog.d.ts +24 -0
  103. package/dist/agents/reviewdog.d.ts.map +1 -0
  104. package/dist/agents/reviewdog.js +259 -0
  105. package/dist/agents/reviewdog.js.map +1 -0
  106. package/dist/agents/security.d.ts +49 -0
  107. package/dist/agents/security.d.ts.map +1 -0
  108. package/dist/agents/security.js +302 -0
  109. package/dist/agents/security.js.map +1 -0
  110. package/dist/agents/semgrep.d.ts +8 -0
  111. package/dist/agents/semgrep.d.ts.map +1 -0
  112. package/dist/agents/semgrep.js +157 -0
  113. package/dist/agents/semgrep.js.map +1 -0
  114. package/dist/agents/types.d.ts +450 -0
  115. package/dist/agents/types.d.ts.map +1 -0
  116. package/dist/agents/types.js +127 -0
  117. package/dist/agents/types.js.map +1 -0
  118. package/dist/budget.d.ts +59 -0
  119. package/dist/budget.d.ts.map +1 -0
  120. package/dist/budget.js +82 -0
  121. package/dist/budget.js.map +1 -0
  122. package/dist/cache/key.d.ts +49 -0
  123. package/dist/cache/key.d.ts.map +1 -0
  124. package/dist/cache/key.js +71 -0
  125. package/dist/cache/key.js.map +1 -0
  126. package/dist/cache/store.d.ts +47 -0
  127. package/dist/cache/store.d.ts.map +1 -0
  128. package/dist/cache/store.js +328 -0
  129. package/dist/cache/store.js.map +1 -0
  130. package/dist/cli/commands/check.d.ts +60 -0
  131. package/dist/cli/commands/check.d.ts.map +1 -0
  132. package/dist/cli/commands/check.js +163 -0
  133. package/dist/cli/commands/check.js.map +1 -0
  134. package/dist/cli/commands/index.d.ts +12 -0
  135. package/dist/cli/commands/index.d.ts.map +1 -0
  136. package/dist/cli/commands/index.js +12 -0
  137. package/dist/cli/commands/index.js.map +1 -0
  138. package/dist/cli/commands/local-review.d.ts +149 -0
  139. package/dist/cli/commands/local-review.d.ts.map +1 -0
  140. package/dist/cli/commands/local-review.js +755 -0
  141. package/dist/cli/commands/local-review.js.map +1 -0
  142. package/dist/cli/config-wizard.d.ts +87 -0
  143. package/dist/cli/config-wizard.d.ts.map +1 -0
  144. package/dist/cli/config-wizard.js +240 -0
  145. package/dist/cli/config-wizard.js.map +1 -0
  146. package/dist/cli/dependencies/catalog.d.ts +44 -0
  147. package/dist/cli/dependencies/catalog.d.ts.map +1 -0
  148. package/dist/cli/dependencies/catalog.js +89 -0
  149. package/dist/cli/dependencies/catalog.js.map +1 -0
  150. package/dist/cli/dependencies/checker.d.ts +42 -0
  151. package/dist/cli/dependencies/checker.d.ts.map +1 -0
  152. package/dist/cli/dependencies/checker.js +240 -0
  153. package/dist/cli/dependencies/checker.js.map +1 -0
  154. package/dist/cli/dependencies/index.d.ts +16 -0
  155. package/dist/cli/dependencies/index.d.ts.map +1 -0
  156. package/dist/cli/dependencies/index.js +16 -0
  157. package/dist/cli/dependencies/index.js.map +1 -0
  158. package/dist/cli/dependencies/messages.d.ts +58 -0
  159. package/dist/cli/dependencies/messages.d.ts.map +1 -0
  160. package/dist/cli/dependencies/messages.js +183 -0
  161. package/dist/cli/dependencies/messages.js.map +1 -0
  162. package/dist/cli/dependencies/platform.d.ts +25 -0
  163. package/dist/cli/dependencies/platform.d.ts.map +1 -0
  164. package/dist/cli/dependencies/platform.js +42 -0
  165. package/dist/cli/dependencies/platform.js.map +1 -0
  166. package/dist/cli/dependencies/schemas.d.ts +65 -0
  167. package/dist/cli/dependencies/schemas.d.ts.map +1 -0
  168. package/dist/cli/dependencies/schemas.js +42 -0
  169. package/dist/cli/dependencies/schemas.js.map +1 -0
  170. package/dist/cli/dependencies/types.d.ts +112 -0
  171. package/dist/cli/dependencies/types.d.ts.map +1 -0
  172. package/dist/cli/dependencies/types.js +6 -0
  173. package/dist/cli/dependencies/types.js.map +1 -0
  174. package/dist/cli/dependencies/version.d.ts +67 -0
  175. package/dist/cli/dependencies/version.d.ts.map +1 -0
  176. package/dist/cli/dependencies/version.js +125 -0
  177. package/dist/cli/dependencies/version.js.map +1 -0
  178. package/dist/cli/git-context.d.ts +105 -0
  179. package/dist/cli/git-context.d.ts.map +1 -0
  180. package/dist/cli/git-context.js +313 -0
  181. package/dist/cli/git-context.js.map +1 -0
  182. package/dist/cli/interactive-prompts.d.ts +126 -0
  183. package/dist/cli/interactive-prompts.d.ts.map +1 -0
  184. package/dist/cli/interactive-prompts.js +128 -0
  185. package/dist/cli/interactive-prompts.js.map +1 -0
  186. package/dist/cli/options/index.d.ts +7 -0
  187. package/dist/cli/options/index.d.ts.map +1 -0
  188. package/dist/cli/options/index.js +11 -0
  189. package/dist/cli/options/index.js.map +1 -0
  190. package/dist/cli/options/local-review-options.d.ts +221 -0
  191. package/dist/cli/options/local-review-options.d.ts.map +1 -0
  192. package/dist/cli/options/local-review-options.js +332 -0
  193. package/dist/cli/options/local-review-options.js.map +1 -0
  194. package/dist/cli/output/colors.d.ts +154 -0
  195. package/dist/cli/output/colors.d.ts.map +1 -0
  196. package/dist/cli/output/colors.js +255 -0
  197. package/dist/cli/output/colors.js.map +1 -0
  198. package/dist/cli/output/errors.d.ts +157 -0
  199. package/dist/cli/output/errors.d.ts.map +1 -0
  200. package/dist/cli/output/errors.js +266 -0
  201. package/dist/cli/output/errors.js.map +1 -0
  202. package/dist/cli/output/index.d.ts +12 -0
  203. package/dist/cli/output/index.d.ts.map +1 -0
  204. package/dist/cli/output/index.js +15 -0
  205. package/dist/cli/output/index.js.map +1 -0
  206. package/dist/cli/output/progress.d.ts +237 -0
  207. package/dist/cli/output/progress.d.ts.map +1 -0
  208. package/dist/cli/output/progress.js +405 -0
  209. package/dist/cli/output/progress.js.map +1 -0
  210. package/dist/cli/signals.d.ts +145 -0
  211. package/dist/cli/signals.d.ts.map +1 -0
  212. package/dist/cli/signals.js +223 -0
  213. package/dist/cli/signals.js.map +1 -0
  214. package/dist/cli/validation-report.d.ts +106 -0
  215. package/dist/cli/validation-report.d.ts.map +1 -0
  216. package/dist/cli/validation-report.js +108 -0
  217. package/dist/cli/validation-report.js.map +1 -0
  218. package/dist/config/index.d.ts +9 -0
  219. package/dist/config/index.d.ts.map +1 -0
  220. package/dist/config/index.js +12 -0
  221. package/dist/config/index.js.map +1 -0
  222. package/dist/config/mitigation-config.d.ts +94 -0
  223. package/dist/config/mitigation-config.d.ts.map +1 -0
  224. package/dist/config/mitigation-config.js +430 -0
  225. package/dist/config/mitigation-config.js.map +1 -0
  226. package/dist/config/providers.d.ts +118 -0
  227. package/dist/config/providers.d.ts.map +1 -0
  228. package/dist/config/providers.js +229 -0
  229. package/dist/config/providers.js.map +1 -0
  230. package/dist/config/schemas.d.ts +278 -0
  231. package/dist/config/schemas.d.ts.map +1 -0
  232. package/dist/config/schemas.js +111 -0
  233. package/dist/config/schemas.js.map +1 -0
  234. package/dist/config/zero-config.d.ts +126 -0
  235. package/dist/config/zero-config.d.ts.map +1 -0
  236. package/dist/config/zero-config.js +243 -0
  237. package/dist/config/zero-config.js.map +1 -0
  238. package/dist/config.d.ts +110 -0
  239. package/dist/config.d.ts.map +1 -0
  240. package/dist/config.js +302 -0
  241. package/dist/config.js.map +1 -0
  242. package/dist/diff.d.ts +224 -0
  243. package/dist/diff.d.ts.map +1 -0
  244. package/dist/diff.js +832 -0
  245. package/dist/diff.js.map +1 -0
  246. package/dist/git-validators.d.ts +106 -0
  247. package/dist/git-validators.d.ts.map +1 -0
  248. package/dist/git-validators.js +224 -0
  249. package/dist/git-validators.js.map +1 -0
  250. package/dist/main.d.ts +61 -0
  251. package/dist/main.d.ts.map +1 -0
  252. package/dist/main.js +704 -0
  253. package/dist/main.js.map +1 -0
  254. package/dist/phases/execute.d.ts +60 -0
  255. package/dist/phases/execute.d.ts.map +1 -0
  256. package/dist/phases/execute.js +168 -0
  257. package/dist/phases/execute.js.map +1 -0
  258. package/dist/phases/index.d.ts +9 -0
  259. package/dist/phases/index.d.ts.map +1 -0
  260. package/dist/phases/index.js +9 -0
  261. package/dist/phases/index.js.map +1 -0
  262. package/dist/phases/preflight.d.ts +40 -0
  263. package/dist/phases/preflight.d.ts.map +1 -0
  264. package/dist/phases/preflight.js +122 -0
  265. package/dist/phases/preflight.js.map +1 -0
  266. package/dist/phases/report.d.ts +51 -0
  267. package/dist/phases/report.d.ts.map +1 -0
  268. package/dist/phases/report.js +152 -0
  269. package/dist/phases/report.js.map +1 -0
  270. package/dist/policy.d.ts +33 -0
  271. package/dist/policy.d.ts.map +1 -0
  272. package/dist/policy.js +34 -0
  273. package/dist/policy.js.map +1 -0
  274. package/dist/preflight.d.ts +181 -0
  275. package/dist/preflight.d.ts.map +1 -0
  276. package/dist/preflight.js +627 -0
  277. package/dist/preflight.js.map +1 -0
  278. package/dist/report/ado.d.ts +53 -0
  279. package/dist/report/ado.d.ts.map +1 -0
  280. package/dist/report/ado.js +411 -0
  281. package/dist/report/ado.js.map +1 -0
  282. package/dist/report/agent-icons.d.ts +36 -0
  283. package/dist/report/agent-icons.d.ts.map +1 -0
  284. package/dist/report/agent-icons.js +46 -0
  285. package/dist/report/agent-icons.js.map +1 -0
  286. package/dist/report/base.d.ts +30 -0
  287. package/dist/report/base.d.ts.map +1 -0
  288. package/dist/report/base.js +64 -0
  289. package/dist/report/base.js.map +1 -0
  290. package/dist/report/formats.d.ts +206 -0
  291. package/dist/report/formats.d.ts.map +1 -0
  292. package/dist/report/formats.js +481 -0
  293. package/dist/report/formats.js.map +1 -0
  294. package/dist/report/github.d.ts +44 -0
  295. package/dist/report/github.d.ts.map +1 -0
  296. package/dist/report/github.js +409 -0
  297. package/dist/report/github.js.map +1 -0
  298. package/dist/report/line-resolver.d.ts +208 -0
  299. package/dist/report/line-resolver.d.ts.map +1 -0
  300. package/dist/report/line-resolver.js +578 -0
  301. package/dist/report/line-resolver.js.map +1 -0
  302. package/dist/report/resolution.d.ts +158 -0
  303. package/dist/report/resolution.d.ts.map +1 -0
  304. package/dist/report/resolution.js +272 -0
  305. package/dist/report/resolution.js.map +1 -0
  306. package/dist/report/sanitize.d.ts +32 -0
  307. package/dist/report/sanitize.d.ts.map +1 -0
  308. package/dist/report/sanitize.js +84 -0
  309. package/dist/report/sanitize.js.map +1 -0
  310. package/dist/report/terminal.d.ts +440 -0
  311. package/dist/report/terminal.d.ts.map +1 -0
  312. package/dist/report/terminal.js +840 -0
  313. package/dist/report/terminal.js.map +1 -0
  314. package/dist/reviewignore.d.ts +125 -0
  315. package/dist/reviewignore.d.ts.map +1 -0
  316. package/dist/reviewignore.js +335 -0
  317. package/dist/reviewignore.js.map +1 -0
  318. package/dist/security-logger.d.ts +178 -0
  319. package/dist/security-logger.d.ts.map +1 -0
  320. package/dist/security-logger.js +256 -0
  321. package/dist/security-logger.js.map +1 -0
  322. package/dist/telemetry/backends/console.d.ts +24 -0
  323. package/dist/telemetry/backends/console.d.ts.map +1 -0
  324. package/dist/telemetry/backends/console.js +54 -0
  325. package/dist/telemetry/backends/console.js.map +1 -0
  326. package/dist/telemetry/backends/jsonl.d.ts +31 -0
  327. package/dist/telemetry/backends/jsonl.d.ts.map +1 -0
  328. package/dist/telemetry/backends/jsonl.js +121 -0
  329. package/dist/telemetry/backends/jsonl.js.map +1 -0
  330. package/dist/telemetry/emitter.d.ts +43 -0
  331. package/dist/telemetry/emitter.d.ts.map +1 -0
  332. package/dist/telemetry/emitter.js +83 -0
  333. package/dist/telemetry/emitter.js.map +1 -0
  334. package/dist/telemetry/hook.d.ts +53 -0
  335. package/dist/telemetry/hook.d.ts.map +1 -0
  336. package/dist/telemetry/hook.js +118 -0
  337. package/dist/telemetry/hook.js.map +1 -0
  338. package/dist/telemetry/index.d.ts +58 -0
  339. package/dist/telemetry/index.d.ts.map +1 -0
  340. package/dist/telemetry/index.js +143 -0
  341. package/dist/telemetry/index.js.map +1 -0
  342. package/dist/telemetry/types.d.ts +139 -0
  343. package/dist/telemetry/types.d.ts.map +1 -0
  344. package/dist/telemetry/types.js +133 -0
  345. package/dist/telemetry/types.js.map +1 -0
  346. package/dist/trust.d.ts +65 -0
  347. package/dist/trust.d.ts.map +1 -0
  348. package/dist/trust.js +78 -0
  349. package/dist/trust.js.map +1 -0
  350. package/dist/types/assert-never.d.ts +30 -0
  351. package/dist/types/assert-never.d.ts.map +1 -0
  352. package/dist/types/assert-never.js +32 -0
  353. package/dist/types/assert-never.js.map +1 -0
  354. package/dist/types/branded.d.ts +172 -0
  355. package/dist/types/branded.d.ts.map +1 -0
  356. package/dist/types/branded.js +262 -0
  357. package/dist/types/branded.js.map +1 -0
  358. package/dist/types/errors.d.ts +320 -0
  359. package/dist/types/errors.d.ts.map +1 -0
  360. package/dist/types/errors.js +551 -0
  361. package/dist/types/errors.js.map +1 -0
  362. package/dist/types/index.d.ts +37 -0
  363. package/dist/types/index.d.ts.map +1 -0
  364. package/dist/types/index.js +77 -0
  365. package/dist/types/index.js.map +1 -0
  366. package/dist/types/result.d.ts +323 -0
  367. package/dist/types/result.d.ts.map +1 -0
  368. package/dist/types/result.js +423 -0
  369. package/dist/types/result.js.map +1 -0
  370. package/package.json +63 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-analyzer.js","sourceRoot":"","sources":["../../../src/agents/control_flow/path-analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Pattern Validator
3
+ *
4
+ * Validates regex patterns for ReDoS vulnerabilities before execution.
5
+ * Implements defense-in-depth alongside timeout protection.
6
+ *
7
+ * Implements:
8
+ * - FR-001: Validate user-provided regex patterns against known ReDoS patterns
9
+ * - FR-002: Reject patterns with nested quantifiers
10
+ * - FR-003: Reject patterns with overlapping alternations
11
+ * - FR-004: Provide independent validation function
12
+ * - FR-005: Allow whitelisting of verified-safe patterns
13
+ */
14
+ import type { PatternValidationResult, ReDoSDetectionResult, ReDoSRiskLevel } from './types.js';
15
+ import { type AnalysisLogger } from './logger.js';
16
+ /**
17
+ * Configuration for the pattern validator.
18
+ */
19
+ export interface PatternValidatorConfig {
20
+ /** Maximum time allowed for validation in milliseconds (default: 10ms) */
21
+ validationTimeoutMs: number;
22
+ /** Pattern IDs to skip validation (manually verified safe) */
23
+ whitelistedPatterns: string[];
24
+ /** Minimum risk level that causes rejection (default: 'medium') */
25
+ rejectionThreshold: ReDoSRiskLevel;
26
+ /** Whether to log validation results (default: true) */
27
+ enableLogging: boolean;
28
+ }
29
+ /**
30
+ * Check if a pattern contains nested quantifiers.
31
+ * Examples: (a+)+, (a*)+, (a+)*, (a*)*
32
+ *
33
+ * These patterns cause exponential backtracking.
34
+ */
35
+ export declare function hasNestedQuantifiers(pattern: string): boolean;
36
+ /**
37
+ * Check if a pattern contains overlapping alternation.
38
+ * Examples: (a|a)+, (aa|a)+, (a|ab)+
39
+ *
40
+ * These patterns cause ambiguous matching paths.
41
+ */
42
+ export declare function hasOverlappingAlternation(pattern: string): boolean;
43
+ /**
44
+ * Calculate the star-height (max nesting depth of Kleene operators).
45
+ * Star-height > 1 indicates potential exponential complexity.
46
+ */
47
+ export declare function calculateStarHeight(pattern: string): number;
48
+ /**
49
+ * Compute overall ReDoS risk score (0-100).
50
+ * Higher score indicates higher risk.
51
+ */
52
+ export declare function computeRiskScore(pattern: string): number;
53
+ /**
54
+ * Perform full ReDoS detection analysis on a pattern.
55
+ */
56
+ export declare function detectReDoSPatterns(pattern: string): ReDoSDetectionResult;
57
+ /**
58
+ * Pattern Validator Interface
59
+ *
60
+ * Implementations MUST:
61
+ * - Validate patterns synchronously
62
+ * - Complete within configured timeout
63
+ * - Never throw exceptions (return result types)
64
+ * - Log validation decisions when logging enabled
65
+ */
66
+ export interface IPatternValidator {
67
+ validatePattern(pattern: string, patternId: string): PatternValidationResult;
68
+ validatePatterns(patterns: {
69
+ pattern: string;
70
+ patternId: string;
71
+ }[]): PatternValidationResult[];
72
+ isWhitelisted(patternId: string): boolean;
73
+ getConfig(): PatternValidatorConfig;
74
+ }
75
+ /**
76
+ * Validates regex patterns for ReDoS vulnerabilities.
77
+ *
78
+ * Uses static analysis to detect known ReDoS patterns before execution.
79
+ * Combined with TimeoutRegex provides defense-in-depth protection.
80
+ */
81
+ export declare class PatternValidator implements IPatternValidator {
82
+ private config;
83
+ private whitelistSet;
84
+ private logger;
85
+ constructor(config?: Partial<PatternValidatorConfig>, logger?: AnalysisLogger);
86
+ /**
87
+ * Clamp validation timeout to allowed range.
88
+ */
89
+ private clampTimeout;
90
+ /**
91
+ * Check if a pattern ID is whitelisted.
92
+ */
93
+ isWhitelisted(patternId: string): boolean;
94
+ /**
95
+ * Get current validator configuration.
96
+ */
97
+ getConfig(): PatternValidatorConfig;
98
+ /**
99
+ * Validate a single regex pattern for ReDoS vulnerabilities.
100
+ */
101
+ validatePattern(pattern: string, patternId: string): PatternValidationResult;
102
+ /**
103
+ * Validate multiple patterns in batch.
104
+ */
105
+ validatePatterns(patterns: {
106
+ pattern: string;
107
+ patternId: string;
108
+ }[]): PatternValidationResult[];
109
+ }
110
+ /**
111
+ * Create a pattern validator with the given configuration.
112
+ */
113
+ export declare function createPatternValidator(config?: Partial<PatternValidatorConfig>, logger?: AnalysisLogger): PatternValidator;
114
+ import { type MitigationPattern } from './types.js';
115
+ import { z } from 'zod';
116
+ /**
117
+ * Validate a mitigation pattern configuration with ReDoS protection.
118
+ *
119
+ * This extends the basic `validateMitigationPattern` from types.ts by also
120
+ * checking namePattern regex for ReDoS vulnerabilities.
121
+ *
122
+ * @param pattern - The pattern configuration to validate
123
+ * @param rejectionThreshold - Minimum risk level to reject ('low', 'medium', 'high')
124
+ */
125
+ export declare function validateMitigationPatternWithReDoSCheck(pattern: unknown, rejectionThreshold?: ReDoSRiskLevel): {
126
+ success: true;
127
+ data: MitigationPattern;
128
+ } | {
129
+ success: false;
130
+ error: z.ZodError;
131
+ };
132
+ //# sourceMappingURL=pattern-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-validator.d.ts","sourceRoot":"","sources":["../../../src/agents/control_flow/pattern-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAChG,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAmB7D;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,0EAA0E;IAC1E,mBAAmB,EAAE,MAAM,CAAC;IAC5B,8DAA8D;IAC9D,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,mEAAmE;IACnE,kBAAkB,EAAE,cAAc,CAAC;IACnC,wDAAwD;IACxD,aAAa,EAAE,OAAO,CAAC;CACxB;AA0CD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAM7D;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAwClE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA+B3D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA0BxD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAmCzE;AAMD;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,uBAAuB,CAAC;IAC7E,gBAAgB,CAAC,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,uBAAuB,EAAE,CAAC;IAChG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1C,SAAS,IAAI,sBAAsB,CAAC;CACrC;AAMD;;;;;GAKG;AACH,qBAAa,gBAAiB,YAAW,iBAAiB;IACxD,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC,EAAE,cAAc;IAO7E;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIzC;;OAEG;IACH,SAAS,IAAI,sBAAsB;IAInC;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,uBAAuB;IAqI5E;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,uBAAuB,EAAE;CAGhG;AAMD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,EACxC,MAAM,CAAC,EAAE,cAAc,GACtB,gBAAgB,CAElB;AAMD,OAAO,EAA6B,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AACH,wBAAgB,uCAAuC,CACrD,OAAO,EAAE,OAAO,EAChB,kBAAkB,GAAE,cAAyB,GAC5C;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAA;CAAE,CAuCpF"}
@@ -0,0 +1,420 @@
1
+ /**
2
+ * Pattern Validator
3
+ *
4
+ * Validates regex patterns for ReDoS vulnerabilities before execution.
5
+ * Implements defense-in-depth alongside timeout protection.
6
+ *
7
+ * Implements:
8
+ * - FR-001: Validate user-provided regex patterns against known ReDoS patterns
9
+ * - FR-002: Reject patterns with nested quantifiers
10
+ * - FR-003: Reject patterns with overlapping alternations
11
+ * - FR-004: Provide independent validation function
12
+ * - FR-005: Allow whitelisting of verified-safe patterns
13
+ */
14
+ import { getLogger } from './logger.js';
15
+ // =============================================================================
16
+ // Constants
17
+ // =============================================================================
18
+ /** Default timeout for validation in milliseconds */
19
+ const DEFAULT_VALIDATION_TIMEOUT_MS = 10;
20
+ /** Minimum allowed validation timeout */
21
+ const MIN_VALIDATION_TIMEOUT_MS = 1;
22
+ /** Maximum allowed validation timeout */
23
+ const MAX_VALIDATION_TIMEOUT_MS = 100;
24
+ const DEFAULT_CONFIG = {
25
+ validationTimeoutMs: DEFAULT_VALIDATION_TIMEOUT_MS,
26
+ whitelistedPatterns: [],
27
+ rejectionThreshold: 'medium',
28
+ enableLogging: true,
29
+ };
30
+ // =============================================================================
31
+ // Risk Level Utilities
32
+ // =============================================================================
33
+ const RISK_LEVEL_ORDER = {
34
+ none: 0,
35
+ low: 1,
36
+ medium: 2,
37
+ high: 3,
38
+ };
39
+ /**
40
+ * Compare two risk levels.
41
+ * Returns true if level >= threshold.
42
+ */
43
+ function riskMeetsThreshold(level, threshold) {
44
+ return RISK_LEVEL_ORDER[level] >= RISK_LEVEL_ORDER[threshold];
45
+ }
46
+ /**
47
+ * Convert vulnerability score (0-100) to risk level.
48
+ */
49
+ function scoreToRiskLevel(score) {
50
+ if (score >= 70)
51
+ return 'high';
52
+ if (score >= 40)
53
+ return 'medium';
54
+ if (score > 0)
55
+ return 'low';
56
+ return 'none';
57
+ }
58
+ // =============================================================================
59
+ // ReDoS Detection Utilities
60
+ // =============================================================================
61
+ /**
62
+ * Check if a pattern contains nested quantifiers.
63
+ * Examples: (a+)+, (a*)+, (a+)*, (a*)*
64
+ *
65
+ * These patterns cause exponential backtracking.
66
+ */
67
+ export function hasNestedQuantifiers(pattern) {
68
+ // Match groups with quantifiers inside that are themselves quantified
69
+ // Pattern: \( ... [+*?] ... \) [+*?{]
70
+ // This is a simplified check - looks for quantified groups containing quantifiers
71
+ const nestedQuantifierRegex = /\([^)]*[+*][^)]*\)[+*?]|\([^)]*[+*][^)]*\)\{/;
72
+ return nestedQuantifierRegex.test(pattern);
73
+ }
74
+ /**
75
+ * Check if a pattern contains overlapping alternation.
76
+ * Examples: (a|a)+, (aa|a)+, (a|ab)+
77
+ *
78
+ * These patterns cause ambiguous matching paths.
79
+ */
80
+ export function hasOverlappingAlternation(pattern) {
81
+ // This is a simplified heuristic check
82
+ // Look for alternations where branches share common prefixes and are quantified
83
+ // Pattern: \( branch | branch \) [+*?{]
84
+ const alternationRegex = /\([^|)]+\|[^)]+\)[+*?]|\([^|)]+\|[^)]+\)\{/;
85
+ if (!alternationRegex.test(pattern)) {
86
+ return false;
87
+ }
88
+ // Extract alternations and check for overlapping patterns
89
+ const altMatch = pattern.match(/\(([^)]+)\)[+*?{]/g);
90
+ if (!altMatch)
91
+ return false;
92
+ for (const alt of altMatch) {
93
+ // Extract the content inside parentheses
94
+ const contentMatch = alt.match(/\(([^)]+)\)/);
95
+ const content = contentMatch?.[1];
96
+ if (!content || !content.includes('|'))
97
+ continue;
98
+ const branches = content.split('|');
99
+ // Check if any branch is a prefix of another
100
+ for (let i = 0; i < branches.length; i++) {
101
+ for (let j = 0; j < branches.length; j++) {
102
+ if (i !== j) {
103
+ const branchA = branches[i];
104
+ const branchB = branches[j];
105
+ if (branchA && branchB) {
106
+ const a = branchA.trim();
107
+ const b = branchB.trim();
108
+ // Check for common prefix
109
+ if (a.length > 0 && b.length > 0 && (a.startsWith(b) || b.startsWith(a))) {
110
+ return true;
111
+ }
112
+ }
113
+ }
114
+ }
115
+ }
116
+ }
117
+ return false;
118
+ }
119
+ /**
120
+ * Calculate the star-height (max nesting depth of Kleene operators).
121
+ * Star-height > 1 indicates potential exponential complexity.
122
+ */
123
+ export function calculateStarHeight(pattern) {
124
+ let maxHeight = 0;
125
+ let currentHeight = 0;
126
+ let inQuantifiedGroup = false;
127
+ for (let i = 0; i < pattern.length; i++) {
128
+ const char = pattern[i];
129
+ const prevChar = i > 0 ? pattern[i - 1] : '';
130
+ if (char === '(' && prevChar !== '\\') {
131
+ if (inQuantifiedGroup) {
132
+ currentHeight++;
133
+ }
134
+ }
135
+ else if (char === ')' && prevChar !== '\\') {
136
+ // Check if this group is quantified
137
+ const nextChar = pattern[i + 1];
138
+ if (nextChar === '+' || nextChar === '*' || nextChar === '?' || nextChar === '{') {
139
+ inQuantifiedGroup = true;
140
+ currentHeight++;
141
+ maxHeight = Math.max(maxHeight, currentHeight);
142
+ }
143
+ if (currentHeight > 0) {
144
+ currentHeight--;
145
+ }
146
+ if (currentHeight === 0) {
147
+ inQuantifiedGroup = false;
148
+ }
149
+ }
150
+ }
151
+ return maxHeight;
152
+ }
153
+ /**
154
+ * Compute overall ReDoS risk score (0-100).
155
+ * Higher score indicates higher risk.
156
+ */
157
+ export function computeRiskScore(pattern) {
158
+ let score = 0;
159
+ // Nested quantifiers: high risk (+50)
160
+ if (hasNestedQuantifiers(pattern)) {
161
+ score += 50;
162
+ }
163
+ // Overlapping alternation: medium-high risk (+30)
164
+ if (hasOverlappingAlternation(pattern)) {
165
+ score += 30;
166
+ }
167
+ // Star height > 1: additional risk
168
+ const starHeight = calculateStarHeight(pattern);
169
+ if (starHeight > 1) {
170
+ score += Math.min(starHeight * 10, 20); // Cap at +20
171
+ }
172
+ // Long patterns with many quantifiers: slight additional risk
173
+ const quantifierCount = (pattern.match(/[+*?]|\{\d+/g) || []).length;
174
+ if (quantifierCount > 5) {
175
+ score += Math.min((quantifierCount - 5) * 2, 10); // Cap at +10
176
+ }
177
+ return Math.min(score, 100);
178
+ }
179
+ /**
180
+ * Perform full ReDoS detection analysis on a pattern.
181
+ */
182
+ export function detectReDoSPatterns(pattern) {
183
+ const detectedPatterns = [];
184
+ const nested = hasNestedQuantifiers(pattern);
185
+ if (nested) {
186
+ detectedPatterns.push('nested_quantifiers');
187
+ }
188
+ const overlapping = hasOverlappingAlternation(pattern);
189
+ if (overlapping) {
190
+ detectedPatterns.push('overlapping_alternation');
191
+ }
192
+ const starHeight = calculateStarHeight(pattern);
193
+ if (starHeight > 1) {
194
+ detectedPatterns.push(`star_height_${starHeight}`);
195
+ }
196
+ // Check for quantified overlapping groups pattern: (.*a){n}
197
+ const quantifiedOverlapRegex = /\(\.\*[^)]+\)\{|\([^)]*\.\*\)\{/;
198
+ const hasQuantifiedOverlap = quantifiedOverlapRegex.test(pattern);
199
+ if (hasQuantifiedOverlap) {
200
+ detectedPatterns.push('quantified_overlap');
201
+ }
202
+ const vulnerabilityScore = computeRiskScore(pattern);
203
+ return {
204
+ hasNestedQuantifiers: nested,
205
+ hasOverlappingAlternation: overlapping,
206
+ hasQuantifiedOverlap,
207
+ starHeight,
208
+ vulnerabilityScore,
209
+ detectedPatterns,
210
+ };
211
+ }
212
+ // =============================================================================
213
+ // Pattern Validator Class
214
+ // =============================================================================
215
+ /**
216
+ * Validates regex patterns for ReDoS vulnerabilities.
217
+ *
218
+ * Uses static analysis to detect known ReDoS patterns before execution.
219
+ * Combined with TimeoutRegex provides defense-in-depth protection.
220
+ */
221
+ export class PatternValidator {
222
+ config;
223
+ whitelistSet;
224
+ logger;
225
+ constructor(config, logger) {
226
+ this.config = { ...DEFAULT_CONFIG, ...config };
227
+ this.config.validationTimeoutMs = this.clampTimeout(this.config.validationTimeoutMs);
228
+ this.whitelistSet = new Set(this.config.whitelistedPatterns);
229
+ this.logger = logger ?? getLogger();
230
+ }
231
+ /**
232
+ * Clamp validation timeout to allowed range.
233
+ */
234
+ clampTimeout(timeout) {
235
+ if (timeout < MIN_VALIDATION_TIMEOUT_MS)
236
+ return MIN_VALIDATION_TIMEOUT_MS;
237
+ if (timeout > MAX_VALIDATION_TIMEOUT_MS)
238
+ return MAX_VALIDATION_TIMEOUT_MS;
239
+ return Math.floor(timeout);
240
+ }
241
+ /**
242
+ * Check if a pattern ID is whitelisted.
243
+ */
244
+ isWhitelisted(patternId) {
245
+ return this.whitelistSet.has(patternId);
246
+ }
247
+ /**
248
+ * Get current validator configuration.
249
+ */
250
+ getConfig() {
251
+ return { ...this.config };
252
+ }
253
+ /**
254
+ * Validate a single regex pattern for ReDoS vulnerabilities.
255
+ */
256
+ validatePattern(pattern, patternId) {
257
+ const startTime = process.hrtime.bigint();
258
+ // Check whitelist first
259
+ if (this.isWhitelisted(patternId)) {
260
+ const elapsedMs = Number(process.hrtime.bigint() - startTime) / 1_000_000;
261
+ if (this.config.enableLogging) {
262
+ this.logger.log('debug', 'pattern_timeout', `Pattern ${patternId} whitelisted, skipping validation`, {
263
+ patternId,
264
+ whitelisted: true,
265
+ });
266
+ }
267
+ return {
268
+ pattern,
269
+ patternId,
270
+ isValid: true,
271
+ rejectionReasons: [],
272
+ redosRisk: 'none',
273
+ validationTimeMs: elapsedMs,
274
+ whitelisted: true,
275
+ };
276
+ }
277
+ // Try to compile the pattern first to catch syntax errors
278
+ try {
279
+ // Trust: REPO_CONFIG - Pattern from validated config, used for syntax validation only
280
+ // Control: Compilation test, pattern not executed against untrusted input here
281
+ // See docs/security/regex-threat-model.md
282
+ // eslint-disable-next-line security/detect-non-literal-regexp -- Validated config pattern
283
+ new RegExp(pattern);
284
+ }
285
+ catch (error) {
286
+ const elapsedMs = Number(process.hrtime.bigint() - startTime) / 1_000_000;
287
+ const errorMessage = error instanceof Error ? error.message : 'Invalid regex syntax';
288
+ if (this.config.enableLogging) {
289
+ this.logger.log('warn', 'pattern_timeout', `Pattern ${patternId} failed compilation: ${errorMessage}`, {
290
+ patternId,
291
+ error: errorMessage,
292
+ });
293
+ }
294
+ return {
295
+ pattern,
296
+ patternId,
297
+ isValid: false,
298
+ rejectionReasons: [`Compilation error: ${errorMessage}`],
299
+ redosRisk: 'high', // Treat compilation errors as high risk
300
+ validationTimeMs: elapsedMs,
301
+ };
302
+ }
303
+ // Perform ReDoS detection
304
+ const detection = detectReDoSPatterns(pattern);
305
+ const riskLevel = scoreToRiskLevel(detection.vulnerabilityScore);
306
+ const elapsedMs = Number(process.hrtime.bigint() - startTime) / 1_000_000;
307
+ // Build rejection reasons
308
+ const rejectionReasons = [];
309
+ if (detection.hasNestedQuantifiers) {
310
+ rejectionReasons.push('Pattern contains nested quantifiers (e.g., (a+)+) which can cause exponential backtracking');
311
+ }
312
+ if (detection.hasOverlappingAlternation) {
313
+ rejectionReasons.push('Pattern contains overlapping alternation (e.g., (a|ab)+) which can cause ambiguous matching');
314
+ }
315
+ if (detection.hasQuantifiedOverlap) {
316
+ rejectionReasons.push('Pattern contains quantified overlapping groups (e.g., (.*a){n}) which can cause quadratic behavior');
317
+ }
318
+ if (detection.starHeight > 1) {
319
+ rejectionReasons.push(`Pattern has star-height of ${detection.starHeight} (nested Kleene closures)`);
320
+ }
321
+ // Determine if pattern should be rejected based on risk threshold
322
+ const shouldReject = riskMeetsThreshold(riskLevel, this.config.rejectionThreshold);
323
+ const isValid = !shouldReject;
324
+ if (this.config.enableLogging) {
325
+ if (isValid) {
326
+ this.logger.log('debug', 'pattern_timeout', `Pattern ${patternId} validated successfully`, {
327
+ patternId,
328
+ riskLevel,
329
+ score: detection.vulnerabilityScore,
330
+ elapsedMs,
331
+ });
332
+ }
333
+ else {
334
+ this.logger.log('warn', 'pattern_timeout', `Pattern ${patternId} rejected: ${rejectionReasons.join('; ')}`, {
335
+ patternId,
336
+ riskLevel,
337
+ score: detection.vulnerabilityScore,
338
+ reasons: rejectionReasons,
339
+ elapsedMs,
340
+ });
341
+ }
342
+ }
343
+ return {
344
+ pattern,
345
+ patternId,
346
+ isValid,
347
+ rejectionReasons: isValid ? [] : rejectionReasons,
348
+ redosRisk: riskLevel,
349
+ validationTimeMs: elapsedMs,
350
+ };
351
+ }
352
+ /**
353
+ * Validate multiple patterns in batch.
354
+ */
355
+ validatePatterns(patterns) {
356
+ return patterns.map(({ pattern, patternId }) => this.validatePattern(pattern, patternId));
357
+ }
358
+ }
359
+ // =============================================================================
360
+ // Factory Function
361
+ // =============================================================================
362
+ /**
363
+ * Create a pattern validator with the given configuration.
364
+ */
365
+ export function createPatternValidator(config, logger) {
366
+ return new PatternValidator(config, logger);
367
+ }
368
+ // =============================================================================
369
+ // Mitigation Pattern Validation with ReDoS Check
370
+ // =============================================================================
371
+ import { validateMitigationPattern } from './types.js';
372
+ import { z } from 'zod';
373
+ /**
374
+ * Validate a mitigation pattern configuration with ReDoS protection.
375
+ *
376
+ * This extends the basic `validateMitigationPattern` from types.ts by also
377
+ * checking namePattern regex for ReDoS vulnerabilities.
378
+ *
379
+ * @param pattern - The pattern configuration to validate
380
+ * @param rejectionThreshold - Minimum risk level to reject ('low', 'medium', 'high')
381
+ */
382
+ export function validateMitigationPatternWithReDoSCheck(pattern, rejectionThreshold = 'medium') {
383
+ // First, validate syntax
384
+ const syntaxResult = validateMitigationPattern(pattern);
385
+ if (!syntaxResult.success) {
386
+ return syntaxResult;
387
+ }
388
+ const data = syntaxResult.data;
389
+ // Check namePattern for ReDoS if present
390
+ if (data.match.namePattern) {
391
+ const score = computeRiskScore(data.match.namePattern);
392
+ // Convert score to risk level (mirrors scoreToRiskLevel)
393
+ let level;
394
+ if (score >= 70)
395
+ level = 'high';
396
+ else if (score >= 40)
397
+ level = 'medium';
398
+ else if (score > 0)
399
+ level = 'low';
400
+ else
401
+ level = 'none';
402
+ // Reject if: threshold is not 'none', level is not 'none', and level meets threshold
403
+ if (rejectionThreshold !== 'none' &&
404
+ level !== 'none' &&
405
+ riskMeetsThreshold(level, rejectionThreshold)) {
406
+ return {
407
+ success: false,
408
+ error: new z.ZodError([
409
+ {
410
+ code: 'custom',
411
+ path: ['match', 'namePattern'],
412
+ message: `Pattern has ${level} ReDoS risk and may cause denial-of-service`,
413
+ },
414
+ ]),
415
+ };
416
+ }
417
+ }
418
+ return { success: true, data };
419
+ }
420
+ //# sourceMappingURL=pattern-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-validator.js","sourceRoot":"","sources":["../../../src/agents/control_flow/pattern-validator.ts"],"names":[],"mappings":"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"}