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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/security/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/security/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Agentic QE v3 - MCP Security: Command Validator
3
+ * Implements the Strategy Pattern for command injection prevention
4
+ */
5
+ import { ICommandValidationStrategy, CommandValidationOptions, CommandValidationResult, RiskLevel } from './interfaces';
6
+ /**
7
+ * Allowed commands whitelist (default safe commands)
8
+ */
9
+ export declare const DEFAULT_ALLOWED_COMMANDS: string[];
10
+ /**
11
+ * Blocked command patterns (injection vectors)
12
+ */
13
+ export declare const BLOCKED_COMMAND_PATTERNS: RegExp[];
14
+ /**
15
+ * Command Validator Strategy
16
+ * Validates and sanitizes shell commands to prevent injection attacks
17
+ */
18
+ export declare class CommandValidator implements ICommandValidationStrategy {
19
+ readonly name = "command-injection";
20
+ private defaultAllowedCommands;
21
+ constructor(defaultAllowedCommands?: string[]);
22
+ /**
23
+ * Get the primary risk level this validator addresses
24
+ */
25
+ getRiskLevel(): RiskLevel;
26
+ /**
27
+ * Validate a command (IValidationStrategy interface)
28
+ */
29
+ validate(command: string, options?: CommandValidationOptions): CommandValidationResult;
30
+ /**
31
+ * Validate and sanitize a command
32
+ */
33
+ validateCommand(command: string, allowedCommands?: string[]): CommandValidationResult;
34
+ /**
35
+ * Escape a string for safe shell usage
36
+ */
37
+ escapeShellArg(arg: string): string;
38
+ }
39
+ export declare const validateCommand: (command: string, allowedCommands?: string[]) => CommandValidationResult;
40
+ export declare const escapeShellArg: (arg: string) => string;
41
+ //# sourceMappingURL=command-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-validator.d.ts","sourceRoot":"","sources":["../../../../src/mcp/security/validators/command-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,EACvB,SAAS,EACV,MAAM,cAAc,CAAC;AAMtB;;GAEG;AACH,eAAO,MAAM,wBAAwB,UAIpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,UASpC,CAAC;AAWF;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,0BAA0B;IACjE,SAAgB,IAAI,uBAAuB;IAE3C,OAAO,CAAC,sBAAsB,CAAW;gBAE7B,sBAAsB,WAA2B;IAI7D;;OAEG;IACI,YAAY,IAAI,SAAS;IAIhC;;OAEG;IACI,QAAQ,CACb,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,wBAA6B,GACrC,uBAAuB;IAK1B;;OAEG;IACI,eAAe,CACpB,OAAO,EAAE,MAAM,EACf,eAAe,GAAE,MAAM,EAAgC,GACtD,uBAAuB;IAgD1B;;OAEG;IACI,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAI3C;AAQD,eAAO,MAAM,eAAe,GAC1B,SAAS,MAAM,EACf,kBAAkB,MAAM,EAAE,KACzB,uBAKF,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,KAAG,MACP,CAAC"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Agentic QE v3 - MCP Security: Command Validator
3
+ * Implements the Strategy Pattern for command injection prevention
4
+ */
5
+ // ============================================================================
6
+ // Constants
7
+ // ============================================================================
8
+ /**
9
+ * Allowed commands whitelist (default safe commands)
10
+ */
11
+ export const DEFAULT_ALLOWED_COMMANDS = [
12
+ 'ls', 'cat', 'echo', 'grep', 'find', 'head', 'tail', 'wc',
13
+ 'npm', 'node', 'yarn', 'pnpm',
14
+ 'git', 'jest', 'vitest', 'playwright',
15
+ ];
16
+ /**
17
+ * Blocked command patterns (injection vectors)
18
+ */
19
+ export const BLOCKED_COMMAND_PATTERNS = [
20
+ /;/, // Command chaining with semicolon
21
+ /&&/, // Command chaining with AND
22
+ /\|\|/, // Command chaining with OR
23
+ /\|/, // Piping
24
+ /`.*`/, // Backtick command substitution
25
+ /\$\(.*\)/, // $() command substitution
26
+ />\s*\/dev\/sd/i, // Writing to block devices
27
+ />\s*\/etc\//i, // Writing to /etc
28
+ ];
29
+ /**
30
+ * Shell metacharacters (excludes parentheses which are common in normal text)
31
+ */
32
+ const SHELL_METACHARACTERS = /[|;&$`<>{}[\]!#*?~]/g;
33
+ // ============================================================================
34
+ // Command Validator Implementation
35
+ // ============================================================================
36
+ /**
37
+ * Command Validator Strategy
38
+ * Validates and sanitizes shell commands to prevent injection attacks
39
+ */
40
+ export class CommandValidator {
41
+ name = 'command-injection';
42
+ defaultAllowedCommands;
43
+ constructor(defaultAllowedCommands = DEFAULT_ALLOWED_COMMANDS) {
44
+ this.defaultAllowedCommands = defaultAllowedCommands;
45
+ }
46
+ /**
47
+ * Get the primary risk level this validator addresses
48
+ */
49
+ getRiskLevel() {
50
+ return 'critical';
51
+ }
52
+ /**
53
+ * Validate a command (IValidationStrategy interface)
54
+ */
55
+ validate(command, options = {}) {
56
+ const allowedCommands = options.allowedCommands ?? this.defaultAllowedCommands;
57
+ return this.validateCommand(command, allowedCommands);
58
+ }
59
+ /**
60
+ * Validate and sanitize a command
61
+ */
62
+ validateCommand(command, allowedCommands = this.defaultAllowedCommands) {
63
+ const blockedPatterns = [];
64
+ // Check for blocked patterns
65
+ for (const pattern of BLOCKED_COMMAND_PATTERNS) {
66
+ if (pattern.test(command)) {
67
+ blockedPatterns.push(pattern.source);
68
+ }
69
+ }
70
+ if (blockedPatterns.length > 0) {
71
+ return {
72
+ valid: false,
73
+ error: 'Command contains blocked patterns',
74
+ blockedPatterns,
75
+ riskLevel: 'critical',
76
+ };
77
+ }
78
+ // Extract base command
79
+ const parts = command.trim().split(/\s+/);
80
+ const baseCommand = parts[0].split('/').pop() || '';
81
+ // Check against whitelist
82
+ if (!allowedCommands.includes(baseCommand)) {
83
+ return {
84
+ valid: false,
85
+ error: `Command '${baseCommand}' is not in the allowed list`,
86
+ blockedPatterns: [],
87
+ riskLevel: 'high',
88
+ };
89
+ }
90
+ // Sanitize arguments
91
+ const sanitizedParts = parts.map((part, i) => {
92
+ if (i === 0)
93
+ return part;
94
+ // Remove shell metacharacters from arguments
95
+ return part.replace(SHELL_METACHARACTERS, '');
96
+ });
97
+ return {
98
+ valid: true,
99
+ sanitizedCommand: sanitizedParts.join(' '),
100
+ blockedPatterns: [],
101
+ riskLevel: 'none',
102
+ };
103
+ }
104
+ /**
105
+ * Escape a string for safe shell usage
106
+ */
107
+ escapeShellArg(arg) {
108
+ // Wrap in single quotes and escape any internal single quotes
109
+ return `'${arg.replace(/'/g, "'\\''")}'`;
110
+ }
111
+ }
112
+ // ============================================================================
113
+ // Standalone Functions (for backward compatibility)
114
+ // ============================================================================
115
+ const defaultValidator = new CommandValidator();
116
+ export const validateCommand = (command, allowedCommands) => {
117
+ if (allowedCommands) {
118
+ return defaultValidator.validateCommand(command, allowedCommands);
119
+ }
120
+ return defaultValidator.validate(command);
121
+ };
122
+ export const escapeShellArg = (arg) => defaultValidator.escapeShellArg(arg);
123
+ //# sourceMappingURL=command-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-validator.js","sourceRoot":"","sources":["../../../../src/mcp/security/validators/command-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Agentic QE v3 - MCP Security: Crypto Validator
3
+ * Implements the Strategy Pattern for cryptographic security operations
4
+ */
5
+ import { ICryptoValidationStrategy, RiskLevel } from './interfaces';
6
+ /**
7
+ * Crypto Validator Strategy
8
+ * Provides timing-safe comparisons and secure cryptographic operations
9
+ */
10
+ export declare class CryptoValidator implements ICryptoValidationStrategy {
11
+ readonly name = "crypto-security";
12
+ /**
13
+ * Get the primary risk level this validator addresses
14
+ */
15
+ getRiskLevel(): RiskLevel;
16
+ /**
17
+ * Perform a timing-safe string comparison
18
+ * Prevents timing attacks by ensuring constant-time comparison
19
+ */
20
+ timingSafeCompare(a: string, b: string): boolean;
21
+ /**
22
+ * Timing-safe comparison for hashed values
23
+ * Hashes the input value and compares against expected hash
24
+ */
25
+ timingSafeHashCompare(value: string, expectedHash: string): boolean;
26
+ /**
27
+ * Generate a secure random token
28
+ * Uses cryptographically secure random bytes
29
+ */
30
+ generateSecureToken(length?: number): string;
31
+ /**
32
+ * Hash a value securely using SHA-256
33
+ */
34
+ secureHash(value: string, salt?: string): string;
35
+ }
36
+ export declare const timingSafeCompare: (a: string, b: string) => boolean;
37
+ export declare const timingSafeHashCompare: (value: string, expectedHash: string) => boolean;
38
+ export declare const generateSecureToken: (length?: number) => string;
39
+ export declare const secureHash: (value: string, salt?: string) => string;
40
+ //# sourceMappingURL=crypto-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-validator.d.ts","sourceRoot":"","sources":["../../../../src/mcp/security/validators/crypto-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,yBAAyB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMpE;;;GAGG;AACH,qBAAa,eAAgB,YAAW,yBAAyB;IAC/D,SAAgB,IAAI,qBAAqB;IAEzC;;OAEG;IACI,YAAY,IAAI,SAAS;IAIhC;;;OAGG;IACI,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAavD;;;OAGG;IACI,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;IAK1E;;;OAGG;IACI,mBAAmB,CAAC,MAAM,SAAK,GAAG,MAAM;IAQ/C;;OAEG;IACI,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;CAIxD;AAQD,eAAO,MAAM,iBAAiB,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,KAAG,OACf,CAAC;AAE3C,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,EAAE,cAAc,MAAM,KAAG,OACf,CAAC;AAE9D,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,KAAG,MACR,CAAC;AAE/C,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,KAAG,MAChB,CAAC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Agentic QE v3 - MCP Security: Crypto Validator
3
+ * Implements the Strategy Pattern for cryptographic security operations
4
+ */
5
+ import { createHash, timingSafeEqual, randomBytes } from 'crypto';
6
+ // ============================================================================
7
+ // Crypto Validator Implementation
8
+ // ============================================================================
9
+ /**
10
+ * Crypto Validator Strategy
11
+ * Provides timing-safe comparisons and secure cryptographic operations
12
+ */
13
+ export class CryptoValidator {
14
+ name = 'crypto-security';
15
+ /**
16
+ * Get the primary risk level this validator addresses
17
+ */
18
+ getRiskLevel() {
19
+ return 'critical';
20
+ }
21
+ /**
22
+ * Perform a timing-safe string comparison
23
+ * Prevents timing attacks by ensuring constant-time comparison
24
+ */
25
+ timingSafeCompare(a, b) {
26
+ // Pad shorter string to prevent length-based timing attacks
27
+ const maxLen = Math.max(a.length, b.length);
28
+ const paddedA = a.padEnd(maxLen, '\0');
29
+ const paddedB = b.padEnd(maxLen, '\0');
30
+ try {
31
+ return timingSafeEqual(Buffer.from(paddedA), Buffer.from(paddedB));
32
+ }
33
+ catch {
34
+ return false;
35
+ }
36
+ }
37
+ /**
38
+ * Timing-safe comparison for hashed values
39
+ * Hashes the input value and compares against expected hash
40
+ */
41
+ timingSafeHashCompare(value, expectedHash) {
42
+ const hash = createHash('sha256').update(value).digest('hex');
43
+ return this.timingSafeCompare(hash, expectedHash);
44
+ }
45
+ /**
46
+ * Generate a secure random token
47
+ * Uses cryptographically secure random bytes
48
+ */
49
+ generateSecureToken(length = 32) {
50
+ return randomBytes(length)
51
+ .toString('base64')
52
+ .replace(/\+/g, '-')
53
+ .replace(/\//g, '_')
54
+ .replace(/=/g, '');
55
+ }
56
+ /**
57
+ * Hash a value securely using SHA-256
58
+ */
59
+ secureHash(value, salt) {
60
+ const data = salt ? `${salt}:${value}` : value;
61
+ return createHash('sha256').update(data).digest('hex');
62
+ }
63
+ }
64
+ // ============================================================================
65
+ // Standalone Functions (for backward compatibility)
66
+ // ============================================================================
67
+ const defaultValidator = new CryptoValidator();
68
+ export const timingSafeCompare = (a, b) => defaultValidator.timingSafeCompare(a, b);
69
+ export const timingSafeHashCompare = (value, expectedHash) => defaultValidator.timingSafeHashCompare(value, expectedHash);
70
+ export const generateSecureToken = (length) => defaultValidator.generateSecureToken(length);
71
+ export const secureHash = (value, salt) => defaultValidator.secureHash(value, salt);
72
+ //# sourceMappingURL=crypto-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-validator.js","sourceRoot":"","sources":["../../../../src/mcp/security/validators/crypto-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAGlE,+EAA+E;AAC/E,kCAAkC;AAClC,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,OAAO,eAAe;IACV,IAAI,GAAG,iBAAiB,CAAC;IAEzC;;OAEG;IACI,YAAY;QACjB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;OAGG;IACI,iBAAiB,CAAC,CAAS,EAAE,CAAS;QAC3C,4DAA4D;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAEvC,IAAI,CAAC;YACH,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACrE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,qBAAqB,CAAC,KAAa,EAAE,YAAoB;QAC9D,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACpD,CAAC;IAED;;;OAGG;IACI,mBAAmB,CAAC,MAAM,GAAG,EAAE;QACpC,OAAO,WAAW,CAAC,MAAM,CAAC;aACvB,QAAQ,CAAC,QAAQ,CAAC;aAClB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,KAAa,EAAE,IAAa;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;CACF;AAED,+EAA+E;AAC/E,oDAAoD;AACpD,+EAA+E;AAE/E,MAAM,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;AAE/C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAS,EAAE,CAAS,EAAW,EAAE,CACjE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE3C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAE,YAAoB,EAAW,EAAE,CACpF,gBAAgB,CAAC,qBAAqB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AAE9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAe,EAAU,EAAE,CAC7D,gBAAgB,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAE/C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,IAAa,EAAU,EAAE,CACjE,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Agentic QE v3 - MCP Security: Validators Index
3
+ * Re-exports all validators and interfaces for easy importing
4
+ */
5
+ export type { RiskLevel, ValidationResult, PathValidationResult, RegexSafetyResult, CommandValidationResult, SanitizationOptions, PathValidationOptions, RegexValidationOptions, CommandValidationOptions, IValidationStrategy, IPathValidationStrategy, IRegexValidationStrategy, ICommandValidationStrategy, IInputSanitizationStrategy, ICryptoValidationStrategy, IValidationOrchestrator, } from './interfaces';
6
+ export { PathTraversalValidator, PATH_TRAVERSAL_PATTERNS, DANGEROUS_PATH_COMPONENTS, validatePath, normalizePath, joinPaths, joinPathsAbsolute, getExtension, } from './path-traversal-validator';
7
+ export { RegexSafetyValidator, REDOS_PATTERNS, countQuantifierNesting, hasExponentialBacktracking, isRegexSafe, escapeRegex, createSafeRegex, } from './regex-safety-validator';
8
+ export { CommandValidator, DEFAULT_ALLOWED_COMMANDS, BLOCKED_COMMAND_PATTERNS, validateCommand, escapeShellArg, } from './command-validator';
9
+ export { InputSanitizer, HTML_ESCAPE_MAP, SQL_INJECTION_PATTERNS, SHELL_METACHARACTERS, DANGEROUS_CONTROL_CHARS, sanitizeInput, escapeHtml, stripHtmlTags, } from './input-sanitizer';
10
+ export { CryptoValidator, timingSafeCompare, timingSafeHashCompare, generateSecureToken, secureHash, } from './crypto-validator';
11
+ export { ValidationOrchestrator, getOrchestrator, createOrchestrator, } from './validation-orchestrator';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp/security/validators/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,YAAY,EAEV,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EAGvB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EAGxB,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,cAAc,CAAC;AAOtB,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,YAAY,EACZ,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,YAAY,GACb,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,wBAAwB,EACxB,eAAe,EACf,cAAc,GACf,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,aAAa,EACb,UAAU,EACV,aAAa,GACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,UAAU,GACX,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,kBAAkB,GACnB,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Agentic QE v3 - MCP Security: Validators Index
3
+ * Re-exports all validators and interfaces for easy importing
4
+ */
5
+ // ============================================================================
6
+ // Validators
7
+ // ============================================================================
8
+ // Path Traversal
9
+ export { PathTraversalValidator, PATH_TRAVERSAL_PATTERNS, DANGEROUS_PATH_COMPONENTS, validatePath, normalizePath, joinPaths, joinPathsAbsolute, getExtension, } from './path-traversal-validator';
10
+ // Regex Safety
11
+ export { RegexSafetyValidator, REDOS_PATTERNS, countQuantifierNesting, hasExponentialBacktracking, isRegexSafe, escapeRegex, createSafeRegex, } from './regex-safety-validator';
12
+ // Command Validator
13
+ export { CommandValidator, DEFAULT_ALLOWED_COMMANDS, BLOCKED_COMMAND_PATTERNS, validateCommand, escapeShellArg, } from './command-validator';
14
+ // Input Sanitizer
15
+ export { InputSanitizer, HTML_ESCAPE_MAP, SQL_INJECTION_PATTERNS, SHELL_METACHARACTERS, DANGEROUS_CONTROL_CHARS, sanitizeInput, escapeHtml, stripHtmlTags, } from './input-sanitizer';
16
+ // Crypto Validator
17
+ export { CryptoValidator, timingSafeCompare, timingSafeHashCompare, generateSecureToken, secureHash, } from './crypto-validator';
18
+ // ============================================================================
19
+ // Orchestrator
20
+ // ============================================================================
21
+ export { ValidationOrchestrator, getOrchestrator, createOrchestrator, } from './validation-orchestrator';
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/mcp/security/validators/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8BH,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E,iBAAiB;AACjB,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,YAAY,EACZ,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,YAAY,GACb,MAAM,4BAA4B,CAAC;AAEpC,eAAe;AACf,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAElC,oBAAoB;AACpB,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,wBAAwB,EACxB,eAAe,EACf,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,kBAAkB;AAClB,OAAO,EACL,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,aAAa,EACb,UAAU,EACV,aAAa,GACd,MAAM,mBAAmB,CAAC;AAE3B,mBAAmB;AACnB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,UAAU,GACX,MAAM,oBAAoB,CAAC;AAE5B,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,kBAAkB,GACnB,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Agentic QE v3 - MCP Security: Input Sanitizer
3
+ * Implements the Strategy Pattern for input sanitization
4
+ */
5
+ import { IInputSanitizationStrategy, SanitizationOptions, RiskLevel } from './interfaces';
6
+ /**
7
+ * HTML escape characters mapping
8
+ */
9
+ export declare const HTML_ESCAPE_MAP: Record<string, string>;
10
+ /**
11
+ * SQL injection patterns to detect and remove
12
+ */
13
+ export declare const SQL_INJECTION_PATTERNS: RegExp[];
14
+ /**
15
+ * Shell metacharacters (excludes parentheses which are common in normal text)
16
+ */
17
+ export declare const SHELL_METACHARACTERS: RegExp;
18
+ /**
19
+ * Dangerous control characters that should be stripped:
20
+ * - Null byte (\x00): String termination attacks, filter bypass
21
+ * - Backspace (\x08): Log manipulation
22
+ * - Bell (\x07): Terminal escape attacks
23
+ * - Vertical tab (\x0B): Filter bypass
24
+ * - Form feed (\x0C): Filter bypass
25
+ * - Escape (\x1B): Terminal escape sequences (ANSI attacks)
26
+ * - Delete (\x7F): Buffer manipulation
27
+ */
28
+ export declare const DANGEROUS_CONTROL_CHARS: RegExp;
29
+ /**
30
+ * Input Sanitizer Strategy
31
+ * Sanitizes user input to prevent XSS, SQL injection, and command injection
32
+ */
33
+ export declare class InputSanitizer implements IInputSanitizationStrategy {
34
+ readonly name = "input-sanitization";
35
+ /**
36
+ * Get the primary risk level this sanitizer addresses
37
+ */
38
+ getRiskLevel(): RiskLevel;
39
+ /**
40
+ * Sanitize input string with configurable options
41
+ */
42
+ sanitize(input: string, options?: SanitizationOptions): string;
43
+ /**
44
+ * Escape HTML special characters
45
+ */
46
+ escapeHtml(str: string): string;
47
+ /**
48
+ * Strip HTML tags from a string
49
+ * Handles both complete tags and incomplete/malformed tags to prevent XSS
50
+ */
51
+ stripHtmlTags(str: string): string;
52
+ }
53
+ export declare const sanitizeInput: (input: string, options?: SanitizationOptions) => string;
54
+ export declare const escapeHtml: (str: string) => string;
55
+ export declare const stripHtmlTags: (str: string) => string;
56
+ //# sourceMappingURL=input-sanitizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-sanitizer.d.ts","sourceRoot":"","sources":["../../../../src/mcp/security/validators/input-sanitizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,SAAS,EACV,MAAM,cAAc,CAAC;AAMtB;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CASlD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,UAWlC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,QAAyB,CAAC;AAE3D;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,QAAsC,CAAC;AAM3E;;;GAGG;AACH,qBAAa,cAAe,YAAW,0BAA0B;IAC/D,SAAgB,IAAI,wBAAwB;IAE5C;;OAEG;IACI,YAAY,IAAI,SAAS;IAIhC;;OAEG;IACI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM;IAuDzE;;OAEG;IACI,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAItC;;;OAGG;IACI,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAkC1C;AAQD,eAAO,MAAM,aAAa,GACxB,OAAO,MAAM,EACb,UAAU,mBAAmB,KAC5B,MAAmD,CAAC;AAEvD,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,MACP,CAAC;AAEnC,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,MACP,CAAC"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Agentic QE v3 - MCP Security: Input Sanitizer
3
+ * Implements the Strategy Pattern for input sanitization
4
+ */
5
+ // ============================================================================
6
+ // Constants
7
+ // ============================================================================
8
+ /**
9
+ * HTML escape characters mapping
10
+ */
11
+ export const HTML_ESCAPE_MAP = {
12
+ '&': '&amp;',
13
+ '<': '&lt;',
14
+ '>': '&gt;',
15
+ '"': '&quot;',
16
+ "'": '&#x27;',
17
+ '/': '&#x2F;',
18
+ '`': '&#x60;',
19
+ '=': '&#x3D;',
20
+ };
21
+ /**
22
+ * SQL injection patterns to detect and remove
23
+ */
24
+ export const SQL_INJECTION_PATTERNS = [
25
+ /('|")\s*;\s*--/i,
26
+ /'\s*OR\s+'1'\s*=\s*'1/i,
27
+ /"\s*OR\s+"1"\s*=\s*"1/i,
28
+ /UNION\s+SELECT/i,
29
+ /INSERT\s+INTO/i,
30
+ /DROP\s+TABLE/i,
31
+ /DELETE\s+FROM/i,
32
+ /UPDATE\s+.*\s+SET/i,
33
+ /EXEC(\s+|\()sp_/i,
34
+ /xp_cmdshell/i,
35
+ ];
36
+ /**
37
+ * Shell metacharacters (excludes parentheses which are common in normal text)
38
+ */
39
+ export const SHELL_METACHARACTERS = /[|;&$`<>{}[\]!#*?~]/g;
40
+ /**
41
+ * Dangerous control characters that should be stripped:
42
+ * - Null byte (\x00): String termination attacks, filter bypass
43
+ * - Backspace (\x08): Log manipulation
44
+ * - Bell (\x07): Terminal escape attacks
45
+ * - Vertical tab (\x0B): Filter bypass
46
+ * - Form feed (\x0C): Filter bypass
47
+ * - Escape (\x1B): Terminal escape sequences (ANSI attacks)
48
+ * - Delete (\x7F): Buffer manipulation
49
+ */
50
+ export const DANGEROUS_CONTROL_CHARS = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g;
51
+ // ============================================================================
52
+ // Input Sanitizer Implementation
53
+ // ============================================================================
54
+ /**
55
+ * Input Sanitizer Strategy
56
+ * Sanitizes user input to prevent XSS, SQL injection, and command injection
57
+ */
58
+ export class InputSanitizer {
59
+ name = 'input-sanitization';
60
+ /**
61
+ * Get the primary risk level this sanitizer addresses
62
+ */
63
+ getRiskLevel() {
64
+ return 'high';
65
+ }
66
+ /**
67
+ * Sanitize input string with configurable options
68
+ */
69
+ sanitize(input, options = {}) {
70
+ const { maxLength = 10000, allowedChars, stripHtml = true, stripSql = true, escapeShell = true, trim = true, stripControlChars = true, } = options;
71
+ let result = input;
72
+ // Strip dangerous control characters first (null bytes, escape sequences, etc.)
73
+ // This must happen early to prevent bypass of later sanitization steps
74
+ if (stripControlChars) {
75
+ result = result.replace(DANGEROUS_CONTROL_CHARS, '');
76
+ }
77
+ // Trim
78
+ if (trim) {
79
+ result = result.trim();
80
+ }
81
+ // Max length
82
+ if (result.length > maxLength) {
83
+ result = result.substring(0, maxLength);
84
+ }
85
+ // Strip HTML
86
+ if (stripHtml) {
87
+ result = this.stripHtmlTags(result);
88
+ }
89
+ // Strip SQL injection attempts
90
+ if (stripSql) {
91
+ for (const pattern of SQL_INJECTION_PATTERNS) {
92
+ result = result.replace(pattern, '');
93
+ }
94
+ }
95
+ // Escape shell metacharacters
96
+ if (escapeShell) {
97
+ result = result.replace(SHELL_METACHARACTERS, '');
98
+ }
99
+ // Filter to allowed characters
100
+ if (allowedChars) {
101
+ // Filter character by character to respect the provided regex
102
+ result = result.split('').filter(char => allowedChars.test(char)).join('');
103
+ }
104
+ return result;
105
+ }
106
+ /**
107
+ * Escape HTML special characters
108
+ */
109
+ escapeHtml(str) {
110
+ return str.replace(/[&<>"'`=/]/g, char => HTML_ESCAPE_MAP[char] || char);
111
+ }
112
+ /**
113
+ * Strip HTML tags from a string
114
+ * Handles both complete tags and incomplete/malformed tags to prevent XSS
115
+ */
116
+ stripHtmlTags(str) {
117
+ // Limit input length to prevent ReDoS
118
+ const MAX_LENGTH = 100000;
119
+ if (str.length > MAX_LENGTH) {
120
+ str = str.slice(0, MAX_LENGTH);
121
+ }
122
+ let result = str;
123
+ let prevLength;
124
+ // Loop until no more changes (handles nested/malformed tags like <script<script>>)
125
+ do {
126
+ prevLength = result.length;
127
+ // Remove complete HTML tags using a non-backtracking approach
128
+ // Process character by character to avoid regex backtracking
129
+ let cleaned = '';
130
+ let inTag = false;
131
+ for (let i = 0; i < result.length; i++) {
132
+ const char = result[i];
133
+ if (char === '<') {
134
+ inTag = true;
135
+ }
136
+ else if (char === '>' && inTag) {
137
+ inTag = false;
138
+ }
139
+ else if (!inTag) {
140
+ cleaned += char;
141
+ }
142
+ }
143
+ result = cleaned;
144
+ } while (result.length < prevLength && result.length > 0);
145
+ // Encode any remaining angle brackets
146
+ result = result.replace(/</g, '&lt;').replace(/>/g, '&gt;');
147
+ return result;
148
+ }
149
+ }
150
+ // ============================================================================
151
+ // Standalone Functions (for backward compatibility)
152
+ // ============================================================================
153
+ const defaultSanitizer = new InputSanitizer();
154
+ export const sanitizeInput = (input, options) => defaultSanitizer.sanitize(input, options);
155
+ export const escapeHtml = (str) => defaultSanitizer.escapeHtml(str);
156
+ export const stripHtmlTags = (str) => defaultSanitizer.stripHtmlTags(str);
157
+ //# sourceMappingURL=input-sanitizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-sanitizer.js","sourceRoot":"","sources":["../../../../src/mcp/security/validators/input-sanitizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAA2B;IACrD,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,iBAAiB;IACjB,wBAAwB;IACxB,wBAAwB;IACxB,iBAAiB;IACjB,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,oBAAoB;IACpB,kBAAkB;IAClB,cAAc;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAE3D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,mCAAmC,CAAC;AAE3E,+EAA+E;AAC/E,iCAAiC;AACjC,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,OAAO,cAAc;IACT,IAAI,GAAG,oBAAoB,CAAC;IAE5C;;OAEG;IACI,YAAY;QACjB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,QAAQ,CAAC,KAAa,EAAE,UAA+B,EAAE;QAC9D,MAAM,EACJ,SAAS,GAAG,KAAK,EACjB,YAAY,EACZ,SAAS,GAAG,IAAI,EAChB,QAAQ,GAAG,IAAI,EACf,WAAW,GAAG,IAAI,EAClB,IAAI,GAAG,IAAI,EACX,iBAAiB,GAAG,IAAI,GACzB,GAAG,OAAO,CAAC;QAEZ,IAAI,MAAM,GAAG,KAAK,CAAC;QAEnB,gFAAgF;QAChF,uEAAuE;QACvE,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,OAAO;QACP,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;QAED,aAAa;QACb,IAAI,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YAC9B,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC1C,CAAC;QAED,aAAa;QACb,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QAED,+BAA+B;QAC/B,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,OAAO,IAAI,sBAAsB,EAAE,CAAC;gBAC7C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,+BAA+B;QAC/B,IAAI,YAAY,EAAE,CAAC;YACjB,8DAA8D;YAC9D,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,GAAW;QAC3B,OAAO,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,GAAW;QAC9B,sCAAsC;QACtC,MAAM,UAAU,GAAG,MAAM,CAAC;QAC1B,IAAI,GAAG,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,MAAM,GAAG,GAAG,CAAC;QACjB,IAAI,UAAkB,CAAC;QAEvB,mFAAmF;QACnF,GAAG,CAAC;YACF,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;YAC3B,8DAA8D;YAC9D,6DAA6D;YAC7D,IAAI,OAAO,GAAG,EAAE,CAAC;YACjB,IAAI,KAAK,GAAG,KAAK,CAAC;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;oBACjB,KAAK,GAAG,IAAI,CAAC;gBACf,CAAC;qBAAM,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;oBACjC,KAAK,GAAG,KAAK,CAAC;gBAChB,CAAC;qBAAM,IAAI,CAAC,KAAK,EAAE,CAAC;oBAClB,OAAO,IAAI,IAAI,CAAC;gBAClB,CAAC;YACH,CAAC;YACD,MAAM,GAAG,OAAO,CAAC;QACnB,CAAC,QAAQ,MAAM,CAAC,MAAM,GAAG,UAAU,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QAE1D,sCAAsC;QACtC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5D,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,+EAA+E;AAC/E,oDAAoD;AACpD,+EAA+E;AAE/E,MAAM,gBAAgB,GAAG,IAAI,cAAc,EAAE,CAAC;AAE9C,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,KAAa,EACb,OAA6B,EACrB,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAU,EAAE,CAChD,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAEnC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAU,EAAE,CACnD,gBAAgB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC"}