agentic-qe 3.3.0 → 3.3.2

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 (416) hide show
  1. package/README.md +6 -2
  2. package/package.json +6 -1
  3. package/v3/CHANGELOG.md +134 -0
  4. package/v3/dist/cli/bundle.js +29332 -22739
  5. package/v3/dist/cli/command-registry.d.ts +55 -0
  6. package/v3/dist/cli/command-registry.d.ts.map +1 -0
  7. package/v3/dist/cli/command-registry.js +103 -0
  8. package/v3/dist/cli/command-registry.js.map +1 -0
  9. package/v3/dist/cli/commands/code.d.ts +9 -0
  10. package/v3/dist/cli/commands/code.d.ts.map +1 -0
  11. package/v3/dist/cli/commands/code.js +254 -0
  12. package/v3/dist/cli/commands/code.js.map +1 -0
  13. package/v3/dist/cli/commands/completions.d.ts +8 -0
  14. package/v3/dist/cli/commands/completions.d.ts.map +1 -0
  15. package/v3/dist/cli/commands/completions.js +99 -0
  16. package/v3/dist/cli/commands/completions.js.map +1 -0
  17. package/v3/dist/cli/commands/coverage.d.ts +9 -0
  18. package/v3/dist/cli/commands/coverage.d.ts.map +1 -0
  19. package/v3/dist/cli/commands/coverage.js +208 -0
  20. package/v3/dist/cli/commands/coverage.js.map +1 -0
  21. package/v3/dist/cli/commands/fleet.d.ts +11 -0
  22. package/v3/dist/cli/commands/fleet.d.ts.map +1 -0
  23. package/v3/dist/cli/commands/fleet.js +338 -0
  24. package/v3/dist/cli/commands/fleet.js.map +1 -0
  25. package/v3/dist/cli/commands/migrate.d.ts +9 -0
  26. package/v3/dist/cli/commands/migrate.d.ts.map +1 -0
  27. package/v3/dist/cli/commands/migrate.js +566 -0
  28. package/v3/dist/cli/commands/migrate.js.map +1 -0
  29. package/v3/dist/cli/commands/quality.d.ts +9 -0
  30. package/v3/dist/cli/commands/quality.d.ts.map +1 -0
  31. package/v3/dist/cli/commands/quality.js +40 -0
  32. package/v3/dist/cli/commands/quality.js.map +1 -0
  33. package/v3/dist/cli/commands/security.d.ts +9 -0
  34. package/v3/dist/cli/commands/security.d.ts.map +1 -0
  35. package/v3/dist/cli/commands/security.js +124 -0
  36. package/v3/dist/cli/commands/security.js.map +1 -0
  37. package/v3/dist/cli/commands/sync.d.ts +19 -0
  38. package/v3/dist/cli/commands/sync.d.ts.map +1 -0
  39. package/v3/dist/cli/commands/sync.js +283 -0
  40. package/v3/dist/cli/commands/sync.js.map +1 -0
  41. package/v3/dist/cli/commands/test.d.ts +9 -0
  42. package/v3/dist/cli/commands/test.d.ts.map +1 -0
  43. package/v3/dist/cli/commands/test.js +166 -0
  44. package/v3/dist/cli/commands/test.js.map +1 -0
  45. package/v3/dist/cli/handlers/agent-handler.d.ts +20 -0
  46. package/v3/dist/cli/handlers/agent-handler.d.ts.map +1 -0
  47. package/v3/dist/cli/handlers/agent-handler.js +158 -0
  48. package/v3/dist/cli/handlers/agent-handler.js.map +1 -0
  49. package/v3/dist/cli/handlers/domain-handler.d.ts +20 -0
  50. package/v3/dist/cli/handlers/domain-handler.d.ts.map +1 -0
  51. package/v3/dist/cli/handlers/domain-handler.js +115 -0
  52. package/v3/dist/cli/handlers/domain-handler.js.map +1 -0
  53. package/v3/dist/cli/handlers/index.d.ts +13 -0
  54. package/v3/dist/cli/handlers/index.d.ts.map +1 -0
  55. package/v3/dist/cli/handlers/index.js +15 -0
  56. package/v3/dist/cli/handlers/index.js.map +1 -0
  57. package/v3/dist/cli/handlers/init-handler.d.ts +38 -0
  58. package/v3/dist/cli/handlers/init-handler.d.ts.map +1 -0
  59. package/v3/dist/cli/handlers/init-handler.js +288 -0
  60. package/v3/dist/cli/handlers/init-handler.js.map +1 -0
  61. package/v3/dist/cli/handlers/interfaces.d.ts +104 -0
  62. package/v3/dist/cli/handlers/interfaces.d.ts.map +1 -0
  63. package/v3/dist/cli/handlers/interfaces.js +109 -0
  64. package/v3/dist/cli/handlers/interfaces.js.map +1 -0
  65. package/v3/dist/cli/handlers/protocol-handler.d.ts +19 -0
  66. package/v3/dist/cli/handlers/protocol-handler.d.ts.map +1 -0
  67. package/v3/dist/cli/handlers/protocol-handler.js +79 -0
  68. package/v3/dist/cli/handlers/protocol-handler.js.map +1 -0
  69. package/v3/dist/cli/handlers/status-handler.d.ts +30 -0
  70. package/v3/dist/cli/handlers/status-handler.d.ts.map +1 -0
  71. package/v3/dist/cli/handlers/status-handler.js +218 -0
  72. package/v3/dist/cli/handlers/status-handler.js.map +1 -0
  73. package/v3/dist/cli/handlers/task-handler.d.ts +22 -0
  74. package/v3/dist/cli/handlers/task-handler.d.ts.map +1 -0
  75. package/v3/dist/cli/handlers/task-handler.js +271 -0
  76. package/v3/dist/cli/handlers/task-handler.js.map +1 -0
  77. package/v3/dist/cli/index.d.ts +4 -0
  78. package/v3/dist/cli/index.d.ts.map +1 -1
  79. package/v3/dist/cli/index.js +48 -2677
  80. package/v3/dist/cli/index.js.map +1 -1
  81. package/v3/dist/cli/wizards/core/index.d.ts +11 -0
  82. package/v3/dist/cli/wizards/core/index.d.ts.map +1 -0
  83. package/v3/dist/cli/wizards/core/index.js +15 -0
  84. package/v3/dist/cli/wizards/core/index.js.map +1 -0
  85. package/v3/dist/cli/wizards/core/wizard-base.d.ts +87 -0
  86. package/v3/dist/cli/wizards/core/wizard-base.d.ts.map +1 -0
  87. package/v3/dist/cli/wizards/core/wizard-base.js +120 -0
  88. package/v3/dist/cli/wizards/core/wizard-base.js.map +1 -0
  89. package/v3/dist/cli/wizards/core/wizard-command.d.ts +182 -0
  90. package/v3/dist/cli/wizards/core/wizard-command.d.ts.map +1 -0
  91. package/v3/dist/cli/wizards/core/wizard-command.js +45 -0
  92. package/v3/dist/cli/wizards/core/wizard-command.js.map +1 -0
  93. package/v3/dist/cli/wizards/core/wizard-step.d.ts +109 -0
  94. package/v3/dist/cli/wizards/core/wizard-step.d.ts.map +1 -0
  95. package/v3/dist/cli/wizards/core/wizard-step.js +384 -0
  96. package/v3/dist/cli/wizards/core/wizard-step.js.map +1 -0
  97. package/v3/dist/cli/wizards/core/wizard-utils.d.ts +117 -0
  98. package/v3/dist/cli/wizards/core/wizard-utils.d.ts.map +1 -0
  99. package/v3/dist/cli/wizards/core/wizard-utils.js +291 -0
  100. package/v3/dist/cli/wizards/core/wizard-utils.js.map +1 -0
  101. package/v3/dist/cli/wizards/coverage-wizard.d.ts +13 -68
  102. package/v3/dist/cli/wizards/coverage-wizard.d.ts.map +1 -1
  103. package/v3/dist/cli/wizards/coverage-wizard.js +127 -391
  104. package/v3/dist/cli/wizards/coverage-wizard.js.map +1 -1
  105. package/v3/dist/cli/wizards/fleet-wizard.d.ts +13 -64
  106. package/v3/dist/cli/wizards/fleet-wizard.d.ts.map +1 -1
  107. package/v3/dist/cli/wizards/fleet-wizard.js +150 -363
  108. package/v3/dist/cli/wizards/fleet-wizard.js.map +1 -1
  109. package/v3/dist/cli/wizards/index.d.ts +2 -0
  110. package/v3/dist/cli/wizards/index.d.ts.map +1 -1
  111. package/v3/dist/cli/wizards/index.js +3 -0
  112. package/v3/dist/cli/wizards/index.js.map +1 -1
  113. package/v3/dist/cli/wizards/security-wizard.d.ts +13 -64
  114. package/v3/dist/cli/wizards/security-wizard.d.ts.map +1 -1
  115. package/v3/dist/cli/wizards/security-wizard.js +152 -395
  116. package/v3/dist/cli/wizards/security-wizard.js.map +1 -1
  117. package/v3/dist/cli/wizards/test-wizard.d.ts +13 -77
  118. package/v3/dist/cli/wizards/test-wizard.d.ts.map +1 -1
  119. package/v3/dist/cli/wizards/test-wizard.js +196 -328
  120. package/v3/dist/cli/wizards/test-wizard.js.map +1 -1
  121. package/v3/dist/coordination/mincut/mincut-health-monitor.d.ts +3 -0
  122. package/v3/dist/coordination/mincut/mincut-health-monitor.d.ts.map +1 -1
  123. package/v3/dist/coordination/mincut/mincut-health-monitor.js +6 -2
  124. package/v3/dist/coordination/mincut/mincut-health-monitor.js.map +1 -1
  125. package/v3/dist/coordination/mincut/queen-integration.d.ts +3 -0
  126. package/v3/dist/coordination/mincut/queen-integration.d.ts.map +1 -1
  127. package/v3/dist/coordination/mincut/queen-integration.js +6 -1
  128. package/v3/dist/coordination/mincut/queen-integration.js.map +1 -1
  129. package/v3/dist/coordination/queen-coordinator.d.ts +13 -1
  130. package/v3/dist/coordination/queen-coordinator.d.ts.map +1 -1
  131. package/v3/dist/coordination/queen-coordinator.js +91 -3
  132. package/v3/dist/coordination/queen-coordinator.js.map +1 -1
  133. package/v3/dist/coordination/task-executor.js +2 -2
  134. package/v3/dist/coordination/task-executor.js.map +1 -1
  135. package/v3/dist/domains/chaos-resilience/plugin.js +2 -2
  136. package/v3/dist/domains/chaos-resilience/plugin.js.map +1 -1
  137. package/v3/dist/domains/code-intelligence/plugin.js +2 -2
  138. package/v3/dist/domains/code-intelligence/plugin.js.map +1 -1
  139. package/v3/dist/domains/contract-testing/plugin.js +2 -2
  140. package/v3/dist/domains/contract-testing/plugin.js.map +1 -1
  141. package/v3/dist/domains/coverage-analysis/plugin.d.ts +6 -1
  142. package/v3/dist/domains/coverage-analysis/plugin.d.ts.map +1 -1
  143. package/v3/dist/domains/coverage-analysis/plugin.js +75 -1
  144. package/v3/dist/domains/coverage-analysis/plugin.js.map +1 -1
  145. package/v3/dist/domains/defect-intelligence/plugin.js +2 -2
  146. package/v3/dist/domains/defect-intelligence/plugin.js.map +1 -1
  147. package/v3/dist/domains/domain-interface.d.ts +39 -2
  148. package/v3/dist/domains/domain-interface.d.ts.map +1 -1
  149. package/v3/dist/domains/domain-interface.js +102 -1
  150. package/v3/dist/domains/domain-interface.js.map +1 -1
  151. package/v3/dist/domains/learning-optimization/coordinator.d.ts +83 -0
  152. package/v3/dist/domains/learning-optimization/coordinator.d.ts.map +1 -1
  153. package/v3/dist/domains/learning-optimization/coordinator.js +174 -0
  154. package/v3/dist/domains/learning-optimization/coordinator.js.map +1 -1
  155. package/v3/dist/domains/learning-optimization/interfaces.d.ts +14 -0
  156. package/v3/dist/domains/learning-optimization/interfaces.d.ts.map +1 -1
  157. package/v3/dist/domains/learning-optimization/plugin.js +2 -2
  158. package/v3/dist/domains/learning-optimization/plugin.js.map +1 -1
  159. package/v3/dist/domains/quality-assessment/coordinator.d.ts +23 -0
  160. package/v3/dist/domains/quality-assessment/coordinator.d.ts.map +1 -1
  161. package/v3/dist/domains/quality-assessment/coordinator.js +139 -1
  162. package/v3/dist/domains/quality-assessment/coordinator.js.map +1 -1
  163. package/v3/dist/domains/quality-assessment/plugin.d.ts +6 -1
  164. package/v3/dist/domains/quality-assessment/plugin.d.ts.map +1 -1
  165. package/v3/dist/domains/quality-assessment/plugin.js +69 -2
  166. package/v3/dist/domains/quality-assessment/plugin.js.map +1 -1
  167. package/v3/dist/domains/requirements-validation/plugin.js +2 -2
  168. package/v3/dist/domains/requirements-validation/plugin.js.map +1 -1
  169. package/v3/dist/domains/security-compliance/plugin.js +2 -2
  170. package/v3/dist/domains/security-compliance/plugin.js.map +1 -1
  171. package/v3/dist/domains/test-execution/index.d.ts +2 -1
  172. package/v3/dist/domains/test-execution/index.d.ts.map +1 -1
  173. package/v3/dist/domains/test-execution/index.js +0 -2
  174. package/v3/dist/domains/test-execution/index.js.map +1 -1
  175. package/v3/dist/domains/test-execution/interfaces.d.ts +222 -25
  176. package/v3/dist/domains/test-execution/interfaces.d.ts.map +1 -1
  177. package/v3/dist/domains/test-execution/interfaces.js +130 -3
  178. package/v3/dist/domains/test-execution/interfaces.js.map +1 -1
  179. package/v3/dist/domains/test-execution/plugin.d.ts +6 -1
  180. package/v3/dist/domains/test-execution/plugin.d.ts.map +1 -1
  181. package/v3/dist/domains/test-execution/plugin.js +79 -1
  182. package/v3/dist/domains/test-execution/plugin.js.map +1 -1
  183. package/v3/dist/domains/test-execution/test-prioritization-types.d.ts +5 -172
  184. package/v3/dist/domains/test-execution/test-prioritization-types.d.ts.map +1 -1
  185. package/v3/dist/domains/test-execution/test-prioritization-types.js +6 -129
  186. package/v3/dist/domains/test-execution/test-prioritization-types.js.map +1 -1
  187. package/v3/dist/domains/test-execution/types/index.d.ts +7 -3
  188. package/v3/dist/domains/test-execution/types/index.d.ts.map +1 -1
  189. package/v3/dist/domains/test-execution/types/index.js +7 -17
  190. package/v3/dist/domains/test-execution/types/index.js.map +1 -1
  191. package/v3/dist/domains/test-generation/coordinator.d.ts +41 -1
  192. package/v3/dist/domains/test-generation/coordinator.d.ts.map +1 -1
  193. package/v3/dist/domains/test-generation/coordinator.js +187 -4
  194. package/v3/dist/domains/test-generation/coordinator.js.map +1 -1
  195. package/v3/dist/domains/test-generation/factories/index.d.ts +8 -0
  196. package/v3/dist/domains/test-generation/factories/index.d.ts.map +1 -0
  197. package/v3/dist/domains/test-generation/factories/index.js +8 -0
  198. package/v3/dist/domains/test-generation/factories/index.js.map +1 -0
  199. package/v3/dist/domains/test-generation/factories/test-generator-factory.d.ts +108 -0
  200. package/v3/dist/domains/test-generation/factories/test-generator-factory.d.ts.map +1 -0
  201. package/v3/dist/domains/test-generation/factories/test-generator-factory.js +158 -0
  202. package/v3/dist/domains/test-generation/factories/test-generator-factory.js.map +1 -0
  203. package/v3/dist/domains/test-generation/generators/base-test-generator.d.ts +79 -0
  204. package/v3/dist/domains/test-generation/generators/base-test-generator.d.ts.map +1 -0
  205. package/v3/dist/domains/test-generation/generators/base-test-generator.js +252 -0
  206. package/v3/dist/domains/test-generation/generators/base-test-generator.js.map +1 -0
  207. package/v3/dist/domains/test-generation/generators/index.d.ts +11 -0
  208. package/v3/dist/domains/test-generation/generators/index.d.ts.map +1 -0
  209. package/v3/dist/domains/test-generation/generators/index.js +13 -0
  210. package/v3/dist/domains/test-generation/generators/index.js.map +1 -0
  211. package/v3/dist/domains/test-generation/generators/jest-vitest-generator.d.ts +77 -0
  212. package/v3/dist/domains/test-generation/generators/jest-vitest-generator.d.ts.map +1 -0
  213. package/v3/dist/domains/test-generation/generators/jest-vitest-generator.js +365 -0
  214. package/v3/dist/domains/test-generation/generators/jest-vitest-generator.js.map +1 -0
  215. package/v3/dist/domains/test-generation/generators/mocha-generator.d.ts +56 -0
  216. package/v3/dist/domains/test-generation/generators/mocha-generator.d.ts.map +1 -0
  217. package/v3/dist/domains/test-generation/generators/mocha-generator.js +197 -0
  218. package/v3/dist/domains/test-generation/generators/mocha-generator.js.map +1 -0
  219. package/v3/dist/domains/test-generation/generators/pytest-generator.d.ts +66 -0
  220. package/v3/dist/domains/test-generation/generators/pytest-generator.d.ts.map +1 -0
  221. package/v3/dist/domains/test-generation/generators/pytest-generator.js +240 -0
  222. package/v3/dist/domains/test-generation/generators/pytest-generator.js.map +1 -0
  223. package/v3/dist/domains/test-generation/index.d.ts +2 -2
  224. package/v3/dist/domains/test-generation/index.d.ts.map +1 -1
  225. package/v3/dist/domains/test-generation/index.js +3 -3
  226. package/v3/dist/domains/test-generation/index.js.map +1 -1
  227. package/v3/dist/domains/test-generation/interfaces/index.d.ts +9 -0
  228. package/v3/dist/domains/test-generation/interfaces/index.d.ts.map +1 -0
  229. package/v3/dist/domains/test-generation/interfaces/index.js +9 -0
  230. package/v3/dist/domains/test-generation/interfaces/index.js.map +1 -0
  231. package/v3/dist/domains/test-generation/interfaces/test-generator.interface.d.ts +166 -0
  232. package/v3/dist/domains/test-generation/interfaces/test-generator.interface.d.ts.map +1 -0
  233. package/v3/dist/domains/test-generation/interfaces/test-generator.interface.js +8 -0
  234. package/v3/dist/domains/test-generation/interfaces/test-generator.interface.js.map +1 -0
  235. package/v3/dist/domains/test-generation/interfaces.d.ts +163 -24
  236. package/v3/dist/domains/test-generation/interfaces.d.ts.map +1 -1
  237. package/v3/dist/domains/test-generation/interfaces.js +2 -2
  238. package/v3/dist/domains/test-generation/plugin.d.ts +6 -1
  239. package/v3/dist/domains/test-generation/plugin.d.ts.map +1 -1
  240. package/v3/dist/domains/test-generation/plugin.js +90 -5
  241. package/v3/dist/domains/test-generation/plugin.js.map +1 -1
  242. package/v3/dist/domains/test-generation/{coherence-gate.d.ts → services/coherence-gate-service.d.ts} +4 -4
  243. package/v3/dist/domains/test-generation/services/coherence-gate-service.d.ts.map +1 -0
  244. package/v3/dist/domains/test-generation/{coherence-gate.js → services/coherence-gate-service.js} +2 -2
  245. package/v3/dist/domains/test-generation/services/coherence-gate-service.js.map +1 -0
  246. package/v3/dist/domains/test-generation/services/index.d.ts +8 -2
  247. package/v3/dist/domains/test-generation/services/index.d.ts.map +1 -1
  248. package/v3/dist/domains/test-generation/services/index.js +10 -3
  249. package/v3/dist/domains/test-generation/services/index.js.map +1 -1
  250. package/v3/dist/domains/test-generation/services/property-test-generator.d.ts +34 -0
  251. package/v3/dist/domains/test-generation/services/property-test-generator.d.ts.map +1 -0
  252. package/v3/dist/domains/test-generation/services/property-test-generator.js +306 -0
  253. package/v3/dist/domains/test-generation/services/property-test-generator.js.map +1 -0
  254. package/v3/dist/domains/test-generation/services/tdd-generator.d.ts +33 -0
  255. package/v3/dist/domains/test-generation/services/tdd-generator.d.ts.map +1 -0
  256. package/v3/dist/domains/test-generation/services/tdd-generator.js +342 -0
  257. package/v3/dist/domains/test-generation/services/tdd-generator.js.map +1 -0
  258. package/v3/dist/domains/test-generation/services/test-data-generator.d.ts +34 -0
  259. package/v3/dist/domains/test-generation/services/test-data-generator.d.ts.map +1 -0
  260. package/v3/dist/domains/test-generation/services/test-data-generator.js +245 -0
  261. package/v3/dist/domains/test-generation/services/test-data-generator.js.map +1 -0
  262. package/v3/dist/domains/test-generation/services/test-generator.d.ts +51 -160
  263. package/v3/dist/domains/test-generation/services/test-generator.d.ts.map +1 -1
  264. package/v3/dist/domains/test-generation/services/test-generator.js +101 -1858
  265. package/v3/dist/domains/test-generation/services/test-generator.js.map +1 -1
  266. package/v3/dist/domains/visual-accessibility/plugin.js +2 -2
  267. package/v3/dist/domains/visual-accessibility/plugin.js.map +1 -1
  268. package/v3/dist/init/phases/12-verification.d.ts +23 -0
  269. package/v3/dist/init/phases/12-verification.d.ts.map +1 -1
  270. package/v3/dist/init/phases/12-verification.js +185 -2
  271. package/v3/dist/init/phases/12-verification.js.map +1 -1
  272. package/v3/dist/integrations/agentic-flow/model-router/complexity-analyzer.d.ts +24 -62
  273. package/v3/dist/integrations/agentic-flow/model-router/complexity-analyzer.d.ts.map +1 -1
  274. package/v3/dist/integrations/agentic-flow/model-router/complexity-analyzer.js +45 -497
  275. package/v3/dist/integrations/agentic-flow/model-router/complexity-analyzer.js.map +1 -1
  276. package/v3/dist/integrations/agentic-flow/model-router/router.js +2 -2
  277. package/v3/dist/integrations/agentic-flow/model-router/router.js.map +1 -1
  278. package/v3/dist/integrations/agentic-flow/model-router/score-calculator.d.ts +98 -0
  279. package/v3/dist/integrations/agentic-flow/model-router/score-calculator.d.ts.map +1 -0
  280. package/v3/dist/integrations/agentic-flow/model-router/score-calculator.js +197 -0
  281. package/v3/dist/integrations/agentic-flow/model-router/score-calculator.js.map +1 -0
  282. package/v3/dist/integrations/agentic-flow/model-router/signal-collector.d.ts +102 -0
  283. package/v3/dist/integrations/agentic-flow/model-router/signal-collector.d.ts.map +1 -0
  284. package/v3/dist/integrations/agentic-flow/model-router/signal-collector.js +372 -0
  285. package/v3/dist/integrations/agentic-flow/model-router/signal-collector.js.map +1 -0
  286. package/v3/dist/integrations/agentic-flow/model-router/tier-recommender.d.ts +64 -0
  287. package/v3/dist/integrations/agentic-flow/model-router/tier-recommender.d.ts.map +1 -0
  288. package/v3/dist/integrations/agentic-flow/model-router/tier-recommender.js +120 -0
  289. package/v3/dist/integrations/agentic-flow/model-router/tier-recommender.js.map +1 -0
  290. package/v3/dist/integrations/coherence/coherence-service.d.ts.map +1 -1
  291. package/v3/dist/integrations/coherence/coherence-service.js +87 -30
  292. package/v3/dist/integrations/coherence/coherence-service.js.map +1 -1
  293. package/v3/dist/integrations/coherence/engines/spectral-adapter.d.ts.map +1 -1
  294. package/v3/dist/integrations/coherence/engines/spectral-adapter.js +124 -35
  295. package/v3/dist/integrations/coherence/engines/spectral-adapter.js.map +1 -1
  296. package/v3/dist/kernel/interfaces.d.ts +54 -1
  297. package/v3/dist/kernel/interfaces.d.ts.map +1 -1
  298. package/v3/dist/learning/dream/dream-scheduler.d.ts +302 -0
  299. package/v3/dist/learning/dream/dream-scheduler.d.ts.map +1 -0
  300. package/v3/dist/learning/dream/dream-scheduler.js +551 -0
  301. package/v3/dist/learning/dream/dream-scheduler.js.map +1 -0
  302. package/v3/dist/learning/dream/index.d.ts +1 -0
  303. package/v3/dist/learning/dream/index.d.ts.map +1 -1
  304. package/v3/dist/learning/dream/index.js +4 -0
  305. package/v3/dist/learning/dream/index.js.map +1 -1
  306. package/v3/dist/learning/memory-auditor.d.ts.map +1 -1
  307. package/v3/dist/learning/memory-auditor.js +3 -1
  308. package/v3/dist/learning/memory-auditor.js.map +1 -1
  309. package/v3/dist/mcp/bundle.js +30870 -23598
  310. package/v3/dist/mcp/handlers/core-handlers.d.ts.map +1 -1
  311. package/v3/dist/mcp/handlers/core-handlers.js +16 -2
  312. package/v3/dist/mcp/handlers/core-handlers.js.map +1 -1
  313. package/v3/dist/mcp/handlers/task-handlers.d.ts +1 -0
  314. package/v3/dist/mcp/handlers/task-handlers.d.ts.map +1 -1
  315. package/v3/dist/mcp/handlers/task-handlers.js +46 -12
  316. package/v3/dist/mcp/handlers/task-handlers.js.map +1 -1
  317. package/v3/dist/mcp/security/cve-prevention.d.ts +31 -134
  318. package/v3/dist/mcp/security/cve-prevention.d.ts.map +1 -1
  319. package/v3/dist/mcp/security/cve-prevention.js +37 -562
  320. package/v3/dist/mcp/security/cve-prevention.js.map +1 -1
  321. package/v3/dist/mcp/security/index.d.ts +5 -1
  322. package/v3/dist/mcp/security/index.d.ts.map +1 -1
  323. package/v3/dist/mcp/security/validators/command-validator.d.ts +41 -0
  324. package/v3/dist/mcp/security/validators/command-validator.d.ts.map +1 -0
  325. package/v3/dist/mcp/security/validators/command-validator.js +123 -0
  326. package/v3/dist/mcp/security/validators/command-validator.js.map +1 -0
  327. package/v3/dist/mcp/security/validators/crypto-validator.d.ts +40 -0
  328. package/v3/dist/mcp/security/validators/crypto-validator.d.ts.map +1 -0
  329. package/v3/dist/mcp/security/validators/crypto-validator.js +72 -0
  330. package/v3/dist/mcp/security/validators/crypto-validator.js.map +1 -0
  331. package/v3/dist/mcp/security/validators/index.d.ts +12 -0
  332. package/v3/dist/mcp/security/validators/index.d.ts.map +1 -0
  333. package/v3/dist/mcp/security/validators/index.js +22 -0
  334. package/v3/dist/mcp/security/validators/index.js.map +1 -0
  335. package/v3/dist/mcp/security/validators/input-sanitizer.d.ts +56 -0
  336. package/v3/dist/mcp/security/validators/input-sanitizer.d.ts.map +1 -0
  337. package/v3/dist/mcp/security/validators/input-sanitizer.js +157 -0
  338. package/v3/dist/mcp/security/validators/input-sanitizer.js.map +1 -0
  339. package/v3/dist/mcp/security/validators/interfaces.d.ts +164 -0
  340. package/v3/dist/mcp/security/validators/interfaces.d.ts.map +1 -0
  341. package/v3/dist/mcp/security/validators/interfaces.js +6 -0
  342. package/v3/dist/mcp/security/validators/interfaces.js.map +1 -0
  343. package/v3/dist/mcp/security/validators/path-traversal-validator.d.ts +50 -0
  344. package/v3/dist/mcp/security/validators/path-traversal-validator.d.ts.map +1 -0
  345. package/v3/dist/mcp/security/validators/path-traversal-validator.js +242 -0
  346. package/v3/dist/mcp/security/validators/path-traversal-validator.js.map +1 -0
  347. package/v3/dist/mcp/security/validators/regex-safety-validator.d.ts +50 -0
  348. package/v3/dist/mcp/security/validators/regex-safety-validator.d.ts.map +1 -0
  349. package/v3/dist/mcp/security/validators/regex-safety-validator.js +183 -0
  350. package/v3/dist/mcp/security/validators/regex-safety-validator.js.map +1 -0
  351. package/v3/dist/mcp/security/validators/validation-orchestrator.d.ts +66 -0
  352. package/v3/dist/mcp/security/validators/validation-orchestrator.d.ts.map +1 -0
  353. package/v3/dist/mcp/security/validators/validation-orchestrator.js +146 -0
  354. package/v3/dist/mcp/security/validators/validation-orchestrator.js.map +1 -0
  355. package/v3/dist/mcp/server.d.ts.map +1 -1
  356. package/v3/dist/mcp/server.js +1 -0
  357. package/v3/dist/mcp/server.js.map +1 -1
  358. package/v3/dist/mcp/services/reasoning-bank-service.d.ts +87 -13
  359. package/v3/dist/mcp/services/reasoning-bank-service.d.ts.map +1 -1
  360. package/v3/dist/mcp/services/reasoning-bank-service.js +291 -31
  361. package/v3/dist/mcp/services/reasoning-bank-service.js.map +1 -1
  362. package/v3/dist/mcp/tool-registry.d.ts +3 -1
  363. package/v3/dist/mcp/tool-registry.d.ts.map +1 -1
  364. package/v3/dist/mcp/tool-registry.js +155 -2
  365. package/v3/dist/mcp/tool-registry.js.map +1 -1
  366. package/v3/dist/mcp/tools/test-generation/generate.d.ts +1 -0
  367. package/v3/dist/mcp/tools/test-generation/generate.d.ts.map +1 -1
  368. package/v3/dist/mcp/tools/test-generation/generate.js +3 -2
  369. package/v3/dist/mcp/tools/test-generation/generate.js.map +1 -1
  370. package/v3/dist/routing/qe-agent-registry.d.ts +27 -0
  371. package/v3/dist/routing/qe-agent-registry.d.ts.map +1 -1
  372. package/v3/dist/routing/qe-agent-registry.js +96 -0
  373. package/v3/dist/routing/qe-agent-registry.js.map +1 -1
  374. package/v3/dist/shared/events/domain-events.d.ts +27 -0
  375. package/v3/dist/shared/events/domain-events.d.ts.map +1 -1
  376. package/v3/dist/shared/events/domain-events.js +1 -0
  377. package/v3/dist/shared/events/domain-events.js.map +1 -1
  378. package/v3/dist/sync/cloud/index.d.ts +8 -0
  379. package/v3/dist/sync/cloud/index.d.ts.map +1 -0
  380. package/v3/dist/sync/cloud/index.js +8 -0
  381. package/v3/dist/sync/cloud/index.js.map +1 -0
  382. package/v3/dist/sync/cloud/postgres-writer.d.ts +88 -0
  383. package/v3/dist/sync/cloud/postgres-writer.d.ts.map +1 -0
  384. package/v3/dist/sync/cloud/postgres-writer.js +319 -0
  385. package/v3/dist/sync/cloud/postgres-writer.js.map +1 -0
  386. package/v3/dist/sync/cloud/tunnel-manager.d.ts +75 -0
  387. package/v3/dist/sync/cloud/tunnel-manager.d.ts.map +1 -0
  388. package/v3/dist/sync/cloud/tunnel-manager.js +221 -0
  389. package/v3/dist/sync/cloud/tunnel-manager.js.map +1 -0
  390. package/v3/dist/sync/index.d.ts +35 -0
  391. package/v3/dist/sync/index.d.ts.map +1 -0
  392. package/v3/dist/sync/index.js +35 -0
  393. package/v3/dist/sync/index.js.map +1 -0
  394. package/v3/dist/sync/interfaces.d.ts +245 -0
  395. package/v3/dist/sync/interfaces.d.ts.map +1 -0
  396. package/v3/dist/sync/interfaces.js +160 -0
  397. package/v3/dist/sync/interfaces.js.map +1 -0
  398. package/v3/dist/sync/readers/index.d.ts +8 -0
  399. package/v3/dist/sync/readers/index.d.ts.map +1 -0
  400. package/v3/dist/sync/readers/index.js +8 -0
  401. package/v3/dist/sync/readers/index.js.map +1 -0
  402. package/v3/dist/sync/readers/json-reader.d.ts +95 -0
  403. package/v3/dist/sync/readers/json-reader.d.ts.map +1 -0
  404. package/v3/dist/sync/readers/json-reader.js +306 -0
  405. package/v3/dist/sync/readers/json-reader.js.map +1 -0
  406. package/v3/dist/sync/readers/sqlite-reader.d.ts +88 -0
  407. package/v3/dist/sync/readers/sqlite-reader.d.ts.map +1 -0
  408. package/v3/dist/sync/readers/sqlite-reader.js +255 -0
  409. package/v3/dist/sync/readers/sqlite-reader.js.map +1 -0
  410. package/v3/dist/sync/sync-agent.d.ts +116 -0
  411. package/v3/dist/sync/sync-agent.d.ts.map +1 -0
  412. package/v3/dist/sync/sync-agent.js +416 -0
  413. package/v3/dist/sync/sync-agent.js.map +1 -0
  414. package/v3/package.json +13 -2
  415. package/v3/dist/domains/test-generation/coherence-gate.d.ts.map +0 -1
  416. package/v3/dist/domains/test-generation/coherence-gate.js.map +0 -1
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Agentic QE v3 - MCP Security: Validation Strategy Interfaces
3
+ * Defines the Strategy Pattern interfaces for security validators
4
+ */
5
+ /**
6
+ * Risk level classification for security validation
7
+ */
8
+ export type RiskLevel = 'none' | 'low' | 'medium' | 'high' | 'critical';
9
+ /**
10
+ * Base validation result returned by all validators
11
+ */
12
+ export interface ValidationResult {
13
+ valid: boolean;
14
+ error?: string;
15
+ riskLevel: RiskLevel;
16
+ }
17
+ /**
18
+ * Path validation result with normalized path
19
+ */
20
+ export interface PathValidationResult extends ValidationResult {
21
+ normalizedPath?: string;
22
+ }
23
+ /**
24
+ * Regex safety result with pattern analysis
25
+ */
26
+ export interface RegexSafetyResult {
27
+ safe: boolean;
28
+ pattern?: string;
29
+ escapedPattern?: string;
30
+ error?: string;
31
+ riskyPatterns: string[];
32
+ }
33
+ /**
34
+ * Command validation result with sanitized command
35
+ */
36
+ export interface CommandValidationResult extends ValidationResult {
37
+ sanitizedCommand?: string;
38
+ blockedPatterns: string[];
39
+ }
40
+ /**
41
+ * Input sanitization options
42
+ */
43
+ export interface SanitizationOptions {
44
+ maxLength?: number;
45
+ allowedChars?: RegExp;
46
+ stripHtml?: boolean;
47
+ stripSql?: boolean;
48
+ escapeShell?: boolean;
49
+ trim?: boolean;
50
+ /** Strip dangerous control characters (null bytes, escape sequences, etc.) - default: true */
51
+ stripControlChars?: boolean;
52
+ }
53
+ /**
54
+ * Path validation options
55
+ */
56
+ export interface PathValidationOptions {
57
+ basePath?: string;
58
+ allowAbsolute?: boolean;
59
+ allowedExtensions?: string[];
60
+ deniedExtensions?: string[];
61
+ maxDepth?: number;
62
+ maxLength?: number;
63
+ }
64
+ /**
65
+ * Regex validation options
66
+ */
67
+ export interface RegexValidationOptions {
68
+ maxLength?: number;
69
+ maxComplexity?: number;
70
+ }
71
+ /**
72
+ * Command validation options
73
+ */
74
+ export interface CommandValidationOptions {
75
+ allowedCommands?: string[];
76
+ }
77
+ /**
78
+ * Base interface for all validation strategies
79
+ * Implements the Strategy Pattern for modular security validation
80
+ */
81
+ export interface IValidationStrategy<TInput = unknown, TOptions = unknown, TResult extends ValidationResult = ValidationResult> {
82
+ /**
83
+ * Unique name identifier for this validator
84
+ */
85
+ readonly name: string;
86
+ /**
87
+ * Validate the input according to this strategy
88
+ * @param input - The input to validate
89
+ * @param options - Optional validation options
90
+ * @returns The validation result
91
+ */
92
+ validate(input: TInput, options?: TOptions): TResult;
93
+ /**
94
+ * Get the risk level this validator typically addresses
95
+ * @returns The primary risk level category
96
+ */
97
+ getRiskLevel(): RiskLevel;
98
+ }
99
+ /**
100
+ * Path traversal validation strategy interface
101
+ */
102
+ export interface IPathValidationStrategy extends IValidationStrategy<string, PathValidationOptions, PathValidationResult> {
103
+ normalizePath(path: string): string;
104
+ joinPaths(...paths: string[]): string;
105
+ joinPathsAbsolute(...paths: string[]): string;
106
+ getExtension(path: string): string | null;
107
+ }
108
+ /**
109
+ * Regex safety validation strategy interface
110
+ */
111
+ export interface IRegexValidationStrategy extends IValidationStrategy<string, RegexValidationOptions, ValidationResult> {
112
+ isRegexSafe(pattern: string): RegexSafetyResult;
113
+ escapeRegex(str: string): string;
114
+ createSafeRegex(pattern: string, flags?: string, maxLength?: number): RegExp | null;
115
+ }
116
+ /**
117
+ * Command validation strategy interface
118
+ */
119
+ export interface ICommandValidationStrategy extends IValidationStrategy<string, CommandValidationOptions, CommandValidationResult> {
120
+ escapeShellArg(arg: string): string;
121
+ }
122
+ /**
123
+ * Input sanitization strategy interface
124
+ */
125
+ export interface IInputSanitizationStrategy {
126
+ readonly name: string;
127
+ sanitize(input: string, options?: SanitizationOptions): string;
128
+ escapeHtml(str: string): string;
129
+ stripHtmlTags(str: string): string;
130
+ getRiskLevel(): RiskLevel;
131
+ }
132
+ /**
133
+ * Crypto validation strategy interface
134
+ */
135
+ export interface ICryptoValidationStrategy {
136
+ readonly name: string;
137
+ timingSafeCompare(a: string, b: string): boolean;
138
+ timingSafeHashCompare(value: string, expectedHash: string): boolean;
139
+ generateSecureToken(length?: number): string;
140
+ secureHash(value: string, salt?: string): string;
141
+ getRiskLevel(): RiskLevel;
142
+ }
143
+ /**
144
+ * Validation orchestrator interface for coordinating multiple validators
145
+ */
146
+ export interface IValidationOrchestrator {
147
+ /**
148
+ * Register a validation strategy
149
+ */
150
+ registerStrategy(strategy: IValidationStrategy): void;
151
+ /**
152
+ * Get a registered strategy by name
153
+ */
154
+ getStrategy(name: string): IValidationStrategy | undefined;
155
+ /**
156
+ * Validate using a specific strategy
157
+ */
158
+ validateWith<TResult extends ValidationResult>(strategyName: string, input: unknown, options?: unknown): TResult;
159
+ /**
160
+ * Run all registered validators on an input
161
+ */
162
+ validateAll(input: unknown): Map<string, ValidationResult>;
163
+ }
164
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/mcp/security/validators/interfaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Agentic QE v3 - MCP Security: Validation Strategy Interfaces
3
+ * Defines the Strategy Pattern interfaces for security validators
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/mcp/security/validators/interfaces.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Agentic QE v3 - MCP Security: Path Traversal Validator
3
+ * Implements the Strategy Pattern for path traversal protection
4
+ */
5
+ import { IPathValidationStrategy, PathValidationOptions, PathValidationResult, RiskLevel } from './interfaces';
6
+ /**
7
+ * Path traversal patterns to detect
8
+ */
9
+ export declare const PATH_TRAVERSAL_PATTERNS: RegExp[];
10
+ /**
11
+ * Dangerous path components (system directories)
12
+ */
13
+ export declare const DANGEROUS_PATH_COMPONENTS: RegExp[];
14
+ /**
15
+ * Path Traversal Validator Strategy
16
+ * Validates file paths to prevent directory traversal attacks
17
+ */
18
+ export declare class PathTraversalValidator implements IPathValidationStrategy {
19
+ readonly name = "path-traversal";
20
+ /**
21
+ * Get the primary risk level this validator addresses
22
+ */
23
+ getRiskLevel(): RiskLevel;
24
+ /**
25
+ * Validate a file path against traversal attacks
26
+ */
27
+ validate(path: string, options?: PathValidationOptions): PathValidationResult;
28
+ /**
29
+ * Normalize a path by resolving . and .. components
30
+ */
31
+ normalizePath(path: string): string;
32
+ /**
33
+ * Safely join path components (strips leading/trailing slashes from all parts)
34
+ */
35
+ joinPaths(...paths: string[]): string;
36
+ /**
37
+ * Join paths preserving absolute path from first component
38
+ */
39
+ joinPathsAbsolute(...paths: string[]): string;
40
+ /**
41
+ * Get file extension from path
42
+ */
43
+ getExtension(path: string): string | null;
44
+ }
45
+ export declare const validatePath: (path: string, options?: PathValidationOptions) => PathValidationResult;
46
+ export declare const normalizePath: (path: string) => string;
47
+ export declare const joinPaths: (...paths: string[]) => string;
48
+ export declare const joinPathsAbsolute: (...paths: string[]) => string;
49
+ export declare const getExtension: (path: string) => string | null;
50
+ //# sourceMappingURL=path-traversal-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-traversal-validator.d.ts","sourceRoot":"","sources":["../../../../src/mcp/security/validators/path-traversal-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,SAAS,EACV,MAAM,cAAc,CAAC;AAMtB;;GAEG;AACH,eAAO,MAAM,uBAAuB,UAanC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,UAUrC,CAAC;AAMF;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,uBAAuB;IACpE,SAAgB,IAAI,oBAAoB;IAExC;;OAEG;IACI,YAAY,IAAI,SAAS;IAIhC;;OAEG;IACI,QAAQ,CACb,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,qBAA0B,GAClC,oBAAoB;IAmIvB;;OAEG;IACI,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IA4B1C;;OAEG;IACI,SAAS,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IAS5C;;OAEG;IACI,iBAAiB,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IAsBpD;;OAEG;IACI,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAIjD;AAQD,eAAO,MAAM,YAAY,GACvB,MAAM,MAAM,EACZ,UAAU,qBAAqB,KAC9B,oBAAgE,CAAC;AAEpE,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,MACP,CAAC;AAEvC,eAAO,MAAM,SAAS,GAAI,GAAG,OAAO,MAAM,EAAE,KAAG,MACT,CAAC;AAEvC,eAAO,MAAM,iBAAiB,GAAI,GAAG,OAAO,MAAM,EAAE,KAAG,MACT,CAAC;AAE/C,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,MAAM,GAAG,IAChB,CAAC"}
@@ -0,0 +1,242 @@
1
+ /**
2
+ * Agentic QE v3 - MCP Security: Path Traversal Validator
3
+ * Implements the Strategy Pattern for path traversal protection
4
+ */
5
+ // ============================================================================
6
+ // Constants
7
+ // ============================================================================
8
+ /**
9
+ * Path traversal patterns to detect
10
+ */
11
+ export const PATH_TRAVERSAL_PATTERNS = [
12
+ /\.\./, // Basic traversal
13
+ /%2e%2e/i, // URL encoded ..
14
+ /%252e%252e/i, // Double URL encoded
15
+ /\.\.%2f/i, // Mixed encoding
16
+ /%2f\.\./i, // Forward slash + ..
17
+ /\.\.%5c/i, // Backslash + ..
18
+ /\.\.\\/, // Windows backslash traversal
19
+ /%c0%ae/i, // UTF-8 overlong encoding
20
+ /%c0%2f/i, // UTF-8 overlong /
21
+ /%c1%9c/i, // UTF-8 overlong \
22
+ /\0/, // Null byte injection
23
+ /%00/i, // URL encoded null
24
+ ];
25
+ /**
26
+ * Dangerous path components (system directories)
27
+ */
28
+ export const DANGEROUS_PATH_COMPONENTS = [
29
+ /^\/etc\//i,
30
+ /^\/proc\//i,
31
+ /^\/sys\//i,
32
+ /^\/dev\//i,
33
+ /^\/root\//i,
34
+ /^\/home\/.+\/\./i,
35
+ /^[A-Z]:\\Windows/i,
36
+ /^[A-Z]:\\System/i,
37
+ /^[A-Z]:\\Users\\.+\\AppData/i,
38
+ ];
39
+ // ============================================================================
40
+ // Path Traversal Validator Implementation
41
+ // ============================================================================
42
+ /**
43
+ * Path Traversal Validator Strategy
44
+ * Validates file paths to prevent directory traversal attacks
45
+ */
46
+ export class PathTraversalValidator {
47
+ name = 'path-traversal';
48
+ /**
49
+ * Get the primary risk level this validator addresses
50
+ */
51
+ getRiskLevel() {
52
+ return 'critical';
53
+ }
54
+ /**
55
+ * Validate a file path against traversal attacks
56
+ */
57
+ validate(path, options = {}) {
58
+ const { basePath = '', allowAbsolute = false, allowedExtensions = [], deniedExtensions = ['.exe', '.bat', '.cmd', '.sh', '.ps1', '.dll', '.so'], maxDepth = 10, maxLength = 4096, } = options;
59
+ // Check length
60
+ if (path.length > maxLength) {
61
+ return {
62
+ valid: false,
63
+ error: `Path exceeds maximum length of ${maxLength}`,
64
+ riskLevel: 'medium',
65
+ };
66
+ }
67
+ // Check for traversal patterns
68
+ for (const pattern of PATH_TRAVERSAL_PATTERNS) {
69
+ if (pattern.test(path)) {
70
+ return {
71
+ valid: false,
72
+ error: 'Path traversal attempt detected',
73
+ riskLevel: 'critical',
74
+ };
75
+ }
76
+ }
77
+ // Check for absolute paths
78
+ if (!allowAbsolute && (path.startsWith('/') || /^[A-Z]:/i.test(path))) {
79
+ return {
80
+ valid: false,
81
+ error: 'Absolute paths are not allowed',
82
+ riskLevel: 'high',
83
+ };
84
+ }
85
+ // Check for dangerous path components
86
+ for (const pattern of DANGEROUS_PATH_COMPONENTS) {
87
+ if (pattern.test(path)) {
88
+ return {
89
+ valid: false,
90
+ error: 'Access to system paths is not allowed',
91
+ riskLevel: 'critical',
92
+ };
93
+ }
94
+ }
95
+ // Normalize the path
96
+ const normalizedPath = this.normalizePath(path);
97
+ // Re-check for traversal after normalization
98
+ if (normalizedPath.includes('..')) {
99
+ return {
100
+ valid: false,
101
+ error: 'Path traversal detected after normalization',
102
+ riskLevel: 'critical',
103
+ };
104
+ }
105
+ // Check depth
106
+ const depth = normalizedPath.split('/').filter(Boolean).length;
107
+ if (depth > maxDepth) {
108
+ return {
109
+ valid: false,
110
+ error: `Path depth exceeds maximum of ${maxDepth}`,
111
+ riskLevel: 'low',
112
+ };
113
+ }
114
+ // Check extension
115
+ const ext = this.getExtension(normalizedPath);
116
+ if (ext) {
117
+ const extWithDot = `.${ext.toLowerCase()}`;
118
+ const extWithoutDot = ext.toLowerCase();
119
+ // Check denied extensions (support both .exe and exe formats)
120
+ if (deniedExtensions.length > 0) {
121
+ const isDenied = deniedExtensions.some(denied => denied.toLowerCase() === extWithDot || denied.toLowerCase() === extWithoutDot);
122
+ if (isDenied) {
123
+ return {
124
+ valid: false,
125
+ error: `File extension '${ext}' is not allowed`,
126
+ riskLevel: 'high',
127
+ };
128
+ }
129
+ }
130
+ // Check allowed extensions (support both .ts and ts formats)
131
+ if (allowedExtensions.length > 0) {
132
+ const isAllowed = allowedExtensions.some(allowed => allowed.toLowerCase() === extWithDot || allowed.toLowerCase() === extWithoutDot);
133
+ if (!isAllowed) {
134
+ return {
135
+ valid: false,
136
+ error: `File extension '${ext}' is not in allowed list`,
137
+ riskLevel: 'medium',
138
+ };
139
+ }
140
+ }
141
+ }
142
+ // Combine with base path if provided
143
+ const finalPath = basePath
144
+ ? this.joinPathsAbsolute(basePath, normalizedPath)
145
+ : normalizedPath;
146
+ // Verify final path doesn't escape base (use normalized base for comparison)
147
+ const normalizedBase = basePath.startsWith('/')
148
+ ? `/${this.normalizePath(basePath)}`
149
+ : this.normalizePath(basePath);
150
+ if (basePath && !finalPath.startsWith(normalizedBase)) {
151
+ return {
152
+ valid: false,
153
+ error: 'Path escapes base directory',
154
+ riskLevel: 'critical',
155
+ };
156
+ }
157
+ return {
158
+ valid: true,
159
+ normalizedPath: finalPath,
160
+ riskLevel: 'none',
161
+ };
162
+ }
163
+ /**
164
+ * Normalize a path by resolving . and .. components
165
+ */
166
+ normalizePath(path) {
167
+ // Replace backslashes with forward slashes
168
+ let normalized = path.replace(/\\/g, '/');
169
+ // Remove multiple consecutive slashes
170
+ normalized = normalized.replace(/\/+/g, '/');
171
+ // Split and resolve
172
+ const parts = normalized.split('/');
173
+ const result = [];
174
+ for (const part of parts) {
175
+ if (part === '.' || part === '') {
176
+ continue;
177
+ }
178
+ if (part === '..') {
179
+ // Don't allow going above root
180
+ if (result.length > 0 && result[result.length - 1] !== '..') {
181
+ result.pop();
182
+ }
183
+ }
184
+ else {
185
+ result.push(part);
186
+ }
187
+ }
188
+ return result.join('/');
189
+ }
190
+ /**
191
+ * Safely join path components (strips leading/trailing slashes from all parts)
192
+ */
193
+ joinPaths(...paths) {
194
+ if (paths.length === 0)
195
+ return '';
196
+ return paths
197
+ .map(p => p.replace(/^\/+|\/+$/g, ''))
198
+ .filter(Boolean)
199
+ .join('/');
200
+ }
201
+ /**
202
+ * Join paths preserving absolute path from first component
203
+ */
204
+ joinPathsAbsolute(...paths) {
205
+ if (paths.length === 0)
206
+ return '';
207
+ // Check if the first path is absolute
208
+ const isAbsolute = paths[0].startsWith('/');
209
+ const result = paths
210
+ // Use non-backtracking patterns with possessive-like behavior via split/join
211
+ .map(p => {
212
+ // Remove leading slashes by splitting and rejoining
213
+ while (p.startsWith('/'))
214
+ p = p.slice(1);
215
+ // Remove trailing slashes
216
+ while (p.endsWith('/'))
217
+ p = p.slice(0, -1);
218
+ return p;
219
+ })
220
+ .filter(Boolean)
221
+ .join('/');
222
+ // Preserve leading slash for absolute paths
223
+ return isAbsolute ? `/${result}` : result;
224
+ }
225
+ /**
226
+ * Get file extension from path
227
+ */
228
+ getExtension(path) {
229
+ const match = path.match(/\.([^./\\]+)$/);
230
+ return match ? match[1] : null;
231
+ }
232
+ }
233
+ // ============================================================================
234
+ // Standalone Functions (for backward compatibility)
235
+ // ============================================================================
236
+ const defaultValidator = new PathTraversalValidator();
237
+ export const validatePath = (path, options) => defaultValidator.validate(path, options);
238
+ export const normalizePath = (path) => defaultValidator.normalizePath(path);
239
+ export const joinPaths = (...paths) => defaultValidator.joinPaths(...paths);
240
+ export const joinPathsAbsolute = (...paths) => defaultValidator.joinPathsAbsolute(...paths);
241
+ export const getExtension = (path) => defaultValidator.getExtension(path);
242
+ //# sourceMappingURL=path-traversal-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-traversal-validator.js","sourceRoot":"","sources":["../../../../src/mcp/security/validators/path-traversal-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Agentic QE v3 - MCP Security: Regex Safety Validator
3
+ * Implements the Strategy Pattern for ReDoS prevention
4
+ */
5
+ import { IRegexValidationStrategy, RegexSafetyResult, RegexValidationOptions, RiskLevel, ValidationResult } from './interfaces';
6
+ /**
7
+ * Patterns that can cause ReDoS (Regular Expression Denial of Service)
8
+ */
9
+ export declare const REDOS_PATTERNS: RegExp[];
10
+ /**
11
+ * Count nested quantifier depth in a regex pattern
12
+ */
13
+ export declare function countQuantifierNesting(pattern: string): number;
14
+ /**
15
+ * Check for exponential backtracking potential
16
+ */
17
+ export declare function hasExponentialBacktracking(pattern: string): boolean;
18
+ /**
19
+ * Regex Safety Validator Strategy
20
+ * Validates regex patterns to prevent ReDoS attacks
21
+ */
22
+ export declare class RegexSafetyValidator implements IRegexValidationStrategy {
23
+ readonly name = "regex-safety";
24
+ private maxComplexity;
25
+ constructor(maxComplexity?: number);
26
+ /**
27
+ * Get the primary risk level this validator addresses
28
+ */
29
+ getRiskLevel(): RiskLevel;
30
+ /**
31
+ * Validate a regex pattern (IValidationStrategy interface)
32
+ */
33
+ validate(pattern: string, options?: RegexValidationOptions): ValidationResult;
34
+ /**
35
+ * Check if a regex pattern is safe from ReDoS
36
+ */
37
+ isRegexSafe(pattern: string, maxComplexity?: number): RegexSafetyResult;
38
+ /**
39
+ * Escape special regex characters in a string
40
+ */
41
+ escapeRegex(str: string): string;
42
+ /**
43
+ * Create a safe regex with validation
44
+ */
45
+ createSafeRegex(pattern: string, flags?: string, maxLength?: number): RegExp | null;
46
+ }
47
+ export declare const isRegexSafe: (pattern: string) => RegexSafetyResult;
48
+ export declare const escapeRegex: (str: string) => string;
49
+ export declare const createSafeRegex: (pattern: string, flags?: string, maxLength?: number) => RegExp | null;
50
+ //# sourceMappingURL=regex-safety-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex-safety-validator.d.ts","sourceRoot":"","sources":["../../../../src/mcp/security/validators/regex-safety-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,SAAS,EACT,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAMtB;;GAEG;AACH,eAAO,MAAM,cAAc,UAa1B,CAAC;AAWF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA0C9D;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAWnE;AAMD;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,wBAAwB;IACnE,SAAgB,IAAI,kBAAkB;IAEtC,OAAO,CAAC,aAAa,CAAS;gBAElB,aAAa,SAAuB;IAIhD;;OAEG;IACI,YAAY,IAAI,SAAS;IAIhC;;OAEG;IACI,QAAQ,CACb,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,sBAA2B,GACnC,gBAAgB;IAmBnB;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,SAAqB,GAAG,iBAAiB;IA8B1F;;OAEG;IACI,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIvC;;OAEG;IACI,eAAe,CACpB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EACd,SAAS,SAAQ,GAChB,MAAM,GAAG,IAAI;CAiBjB;AAQD,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,KAAG,iBACP,CAAC;AAExC,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,KAAG,MACP,CAAC;AAEpC,eAAO,MAAM,eAAe,GAC1B,SAAS,MAAM,EACf,QAAQ,MAAM,EACd,YAAY,MAAM,KACjB,MAAM,GAAG,IAAmE,CAAC"}