@agentic-qe/v3 3.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1722) hide show
  1. package/README.md +429 -0
  2. package/dist/benchmarks/performance-benchmarks.d.ts +92 -0
  3. package/dist/benchmarks/performance-benchmarks.d.ts.map +1 -0
  4. package/dist/benchmarks/performance-benchmarks.js +477 -0
  5. package/dist/benchmarks/performance-benchmarks.js.map +1 -0
  6. package/dist/benchmarks/run-benchmarks.d.ts +12 -0
  7. package/dist/benchmarks/run-benchmarks.d.ts.map +1 -0
  8. package/dist/benchmarks/run-benchmarks.js +260 -0
  9. package/dist/benchmarks/run-benchmarks.js.map +1 -0
  10. package/dist/causal-discovery/causal-graph.d.ts +104 -0
  11. package/dist/causal-discovery/causal-graph.d.ts.map +1 -0
  12. package/dist/causal-discovery/causal-graph.js +384 -0
  13. package/dist/causal-discovery/causal-graph.js.map +1 -0
  14. package/dist/causal-discovery/discovery-engine.d.ts +120 -0
  15. package/dist/causal-discovery/discovery-engine.d.ts.map +1 -0
  16. package/dist/causal-discovery/discovery-engine.js +332 -0
  17. package/dist/causal-discovery/discovery-engine.js.map +1 -0
  18. package/dist/causal-discovery/index.d.ts +50 -0
  19. package/dist/causal-discovery/index.d.ts.map +1 -0
  20. package/dist/causal-discovery/index.js +69 -0
  21. package/dist/causal-discovery/index.js.map +1 -0
  22. package/dist/causal-discovery/types.d.ts +257 -0
  23. package/dist/causal-discovery/types.d.ts.map +1 -0
  24. package/dist/causal-discovery/types.js +72 -0
  25. package/dist/causal-discovery/types.js.map +1 -0
  26. package/dist/causal-discovery/weight-matrix.d.ts +130 -0
  27. package/dist/causal-discovery/weight-matrix.d.ts.map +1 -0
  28. package/dist/causal-discovery/weight-matrix.js +380 -0
  29. package/dist/causal-discovery/weight-matrix.js.map +1 -0
  30. package/dist/cli/commands/qe-tools.d.ts +27 -0
  31. package/dist/cli/commands/qe-tools.d.ts.map +1 -0
  32. package/dist/cli/commands/qe-tools.js +524 -0
  33. package/dist/cli/commands/qe-tools.js.map +1 -0
  34. package/dist/cli/index.d.ts +9 -0
  35. package/dist/cli/index.d.ts.map +1 -0
  36. package/dist/cli/index.js +1725 -0
  37. package/dist/cli/index.js.map +1 -0
  38. package/dist/compatibility/agent-mapper.d.ts +45 -0
  39. package/dist/compatibility/agent-mapper.d.ts.map +1 -0
  40. package/dist/compatibility/agent-mapper.js +256 -0
  41. package/dist/compatibility/agent-mapper.js.map +1 -0
  42. package/dist/compatibility/cli-adapter.d.ts +53 -0
  43. package/dist/compatibility/cli-adapter.d.ts.map +1 -0
  44. package/dist/compatibility/cli-adapter.js +247 -0
  45. package/dist/compatibility/cli-adapter.js.map +1 -0
  46. package/dist/compatibility/config-migrator.d.ts +42 -0
  47. package/dist/compatibility/config-migrator.d.ts.map +1 -0
  48. package/dist/compatibility/config-migrator.js +280 -0
  49. package/dist/compatibility/config-migrator.js.map +1 -0
  50. package/dist/compatibility/index.d.ts +58 -0
  51. package/dist/compatibility/index.d.ts.map +1 -0
  52. package/dist/compatibility/index.js +90 -0
  53. package/dist/compatibility/index.js.map +1 -0
  54. package/dist/compatibility/mcp-adapter.d.ts +38 -0
  55. package/dist/compatibility/mcp-adapter.d.ts.map +1 -0
  56. package/dist/compatibility/mcp-adapter.js +202 -0
  57. package/dist/compatibility/mcp-adapter.js.map +1 -0
  58. package/dist/compatibility/types.d.ts +161 -0
  59. package/dist/compatibility/types.d.ts.map +1 -0
  60. package/dist/compatibility/types.js +5 -0
  61. package/dist/compatibility/types.js.map +1 -0
  62. package/dist/coordination/claims/claim-repository.d.ts +64 -0
  63. package/dist/coordination/claims/claim-repository.d.ts.map +1 -0
  64. package/dist/coordination/claims/claim-repository.js +524 -0
  65. package/dist/coordination/claims/claim-repository.js.map +1 -0
  66. package/dist/coordination/claims/claim-service.d.ts +45 -0
  67. package/dist/coordination/claims/claim-service.d.ts.map +1 -0
  68. package/dist/coordination/claims/claim-service.js +523 -0
  69. package/dist/coordination/claims/claim-service.js.map +1 -0
  70. package/dist/coordination/claims/handoff-manager.d.ts +95 -0
  71. package/dist/coordination/claims/handoff-manager.d.ts.map +1 -0
  72. package/dist/coordination/claims/handoff-manager.js +380 -0
  73. package/dist/coordination/claims/handoff-manager.js.map +1 -0
  74. package/dist/coordination/claims/index.d.ts +121 -0
  75. package/dist/coordination/claims/index.d.ts.map +1 -0
  76. package/dist/coordination/claims/index.js +129 -0
  77. package/dist/coordination/claims/index.js.map +1 -0
  78. package/dist/coordination/claims/interfaces.d.ts +471 -0
  79. package/dist/coordination/claims/interfaces.d.ts.map +1 -0
  80. package/dist/coordination/claims/interfaces.js +14 -0
  81. package/dist/coordination/claims/interfaces.js.map +1 -0
  82. package/dist/coordination/claims/work-stealing.d.ts +88 -0
  83. package/dist/coordination/claims/work-stealing.d.ts.map +1 -0
  84. package/dist/coordination/claims/work-stealing.js +335 -0
  85. package/dist/coordination/claims/work-stealing.js.map +1 -0
  86. package/dist/coordination/cross-domain-router.d.ts +104 -0
  87. package/dist/coordination/cross-domain-router.d.ts.map +1 -0
  88. package/dist/coordination/cross-domain-router.js +365 -0
  89. package/dist/coordination/cross-domain-router.js.map +1 -0
  90. package/dist/coordination/index.d.ts +14 -0
  91. package/dist/coordination/index.d.ts.map +1 -0
  92. package/dist/coordination/index.js +29 -0
  93. package/dist/coordination/index.js.map +1 -0
  94. package/dist/coordination/interfaces.d.ts +482 -0
  95. package/dist/coordination/interfaces.d.ts.map +1 -0
  96. package/dist/coordination/interfaces.js +6 -0
  97. package/dist/coordination/interfaces.js.map +1 -0
  98. package/dist/coordination/protocol-executor.d.ts +119 -0
  99. package/dist/coordination/protocol-executor.d.ts.map +1 -0
  100. package/dist/coordination/protocol-executor.js +528 -0
  101. package/dist/coordination/protocol-executor.js.map +1 -0
  102. package/dist/coordination/protocols/code-intelligence-index.d.ts +204 -0
  103. package/dist/coordination/protocols/code-intelligence-index.d.ts.map +1 -0
  104. package/dist/coordination/protocols/code-intelligence-index.js +568 -0
  105. package/dist/coordination/protocols/code-intelligence-index.js.map +1 -0
  106. package/dist/coordination/protocols/defect-investigation.d.ts +202 -0
  107. package/dist/coordination/protocols/defect-investigation.d.ts.map +1 -0
  108. package/dist/coordination/protocols/defect-investigation.js +734 -0
  109. package/dist/coordination/protocols/defect-investigation.js.map +1 -0
  110. package/dist/coordination/protocols/index.d.ts +11 -0
  111. package/dist/coordination/protocols/index.d.ts.map +1 -0
  112. package/dist/coordination/protocols/index.js +11 -0
  113. package/dist/coordination/protocols/index.js.map +1 -0
  114. package/dist/coordination/protocols/learning-consolidation.d.ts +249 -0
  115. package/dist/coordination/protocols/learning-consolidation.d.ts.map +1 -0
  116. package/dist/coordination/protocols/learning-consolidation.js +811 -0
  117. package/dist/coordination/protocols/learning-consolidation.js.map +1 -0
  118. package/dist/coordination/protocols/morning-sync.d.ts +255 -0
  119. package/dist/coordination/protocols/morning-sync.d.ts.map +1 -0
  120. package/dist/coordination/protocols/morning-sync.js +730 -0
  121. package/dist/coordination/protocols/morning-sync.js.map +1 -0
  122. package/dist/coordination/protocols/quality-gate.d.ts +303 -0
  123. package/dist/coordination/protocols/quality-gate.d.ts.map +1 -0
  124. package/dist/coordination/protocols/quality-gate.js +924 -0
  125. package/dist/coordination/protocols/quality-gate.js.map +1 -0
  126. package/dist/coordination/protocols/security-audit.d.ts +263 -0
  127. package/dist/coordination/protocols/security-audit.d.ts.map +1 -0
  128. package/dist/coordination/protocols/security-audit.js +1159 -0
  129. package/dist/coordination/protocols/security-audit.js.map +1 -0
  130. package/dist/coordination/queen-coordinator.d.ts +214 -0
  131. package/dist/coordination/queen-coordinator.d.ts.map +1 -0
  132. package/dist/coordination/queen-coordinator.js +808 -0
  133. package/dist/coordination/queen-coordinator.js.map +1 -0
  134. package/dist/coordination/result-saver.d.ts +82 -0
  135. package/dist/coordination/result-saver.d.ts.map +1 -0
  136. package/dist/coordination/result-saver.js +536 -0
  137. package/dist/coordination/result-saver.js.map +1 -0
  138. package/dist/coordination/task-executor.d.ts +50 -0
  139. package/dist/coordination/task-executor.d.ts.map +1 -0
  140. package/dist/coordination/task-executor.js +965 -0
  141. package/dist/coordination/task-executor.js.map +1 -0
  142. package/dist/coordination/workflow-orchestrator.d.ts +362 -0
  143. package/dist/coordination/workflow-orchestrator.d.ts.map +1 -0
  144. package/dist/coordination/workflow-orchestrator.js +1298 -0
  145. package/dist/coordination/workflow-orchestrator.js.map +1 -0
  146. package/dist/domains/chaos-resilience/coordinator.d.ts +108 -0
  147. package/dist/domains/chaos-resilience/coordinator.d.ts.map +1 -0
  148. package/dist/domains/chaos-resilience/coordinator.js +775 -0
  149. package/dist/domains/chaos-resilience/coordinator.js.map +1 -0
  150. package/dist/domains/chaos-resilience/index.d.ts +13 -0
  151. package/dist/domains/chaos-resilience/index.d.ts.map +1 -0
  152. package/dist/domains/chaos-resilience/index.js +21 -0
  153. package/dist/domains/chaos-resilience/index.js.map +1 -0
  154. package/dist/domains/chaos-resilience/interfaces.d.ts +528 -0
  155. package/dist/domains/chaos-resilience/interfaces.d.ts.map +1 -0
  156. package/dist/domains/chaos-resilience/interfaces.js +8 -0
  157. package/dist/domains/chaos-resilience/interfaces.js.map +1 -0
  158. package/dist/domains/chaos-resilience/plugin.d.ts +97 -0
  159. package/dist/domains/chaos-resilience/plugin.d.ts.map +1 -0
  160. package/dist/domains/chaos-resilience/plugin.js +466 -0
  161. package/dist/domains/chaos-resilience/plugin.js.map +1 -0
  162. package/dist/domains/chaos-resilience/services/chaos-engineer.d.ts +97 -0
  163. package/dist/domains/chaos-resilience/services/chaos-engineer.d.ts.map +1 -0
  164. package/dist/domains/chaos-resilience/services/chaos-engineer.js +875 -0
  165. package/dist/domains/chaos-resilience/services/chaos-engineer.js.map +1 -0
  166. package/dist/domains/chaos-resilience/services/index.d.ts +8 -0
  167. package/dist/domains/chaos-resilience/services/index.d.ts.map +1 -0
  168. package/dist/domains/chaos-resilience/services/index.js +8 -0
  169. package/dist/domains/chaos-resilience/services/index.js.map +1 -0
  170. package/dist/domains/chaos-resilience/services/load-tester.d.ts +71 -0
  171. package/dist/domains/chaos-resilience/services/load-tester.d.ts.map +1 -0
  172. package/dist/domains/chaos-resilience/services/load-tester.js +588 -0
  173. package/dist/domains/chaos-resilience/services/load-tester.js.map +1 -0
  174. package/dist/domains/chaos-resilience/services/performance-profiler.d.ts +70 -0
  175. package/dist/domains/chaos-resilience/services/performance-profiler.d.ts.map +1 -0
  176. package/dist/domains/chaos-resilience/services/performance-profiler.js +642 -0
  177. package/dist/domains/chaos-resilience/services/performance-profiler.js.map +1 -0
  178. package/dist/domains/code-intelligence/coordinator.d.ts +104 -0
  179. package/dist/domains/code-intelligence/coordinator.d.ts.map +1 -0
  180. package/dist/domains/code-intelligence/coordinator.js +436 -0
  181. package/dist/domains/code-intelligence/coordinator.js.map +1 -0
  182. package/dist/domains/code-intelligence/index.d.ts +13 -0
  183. package/dist/domains/code-intelligence/index.d.ts.map +1 -0
  184. package/dist/domains/code-intelligence/index.js +21 -0
  185. package/dist/domains/code-intelligence/index.js.map +1 -0
  186. package/dist/domains/code-intelligence/interfaces.d.ts +130 -0
  187. package/dist/domains/code-intelligence/interfaces.d.ts.map +1 -0
  188. package/dist/domains/code-intelligence/interfaces.js +6 -0
  189. package/dist/domains/code-intelligence/interfaces.js.map +1 -0
  190. package/dist/domains/code-intelligence/plugin.d.ts +75 -0
  191. package/dist/domains/code-intelligence/plugin.d.ts.map +1 -0
  192. package/dist/domains/code-intelligence/plugin.js +279 -0
  193. package/dist/domains/code-intelligence/plugin.js.map +1 -0
  194. package/dist/domains/code-intelligence/services/impact-analyzer.d.ts +80 -0
  195. package/dist/domains/code-intelligence/services/impact-analyzer.d.ts.map +1 -0
  196. package/dist/domains/code-intelligence/services/impact-analyzer.js +391 -0
  197. package/dist/domains/code-intelligence/services/impact-analyzer.js.map +1 -0
  198. package/dist/domains/code-intelligence/services/index.d.ts +8 -0
  199. package/dist/domains/code-intelligence/services/index.d.ts.map +1 -0
  200. package/dist/domains/code-intelligence/services/index.js +8 -0
  201. package/dist/domains/code-intelligence/services/index.js.map +1 -0
  202. package/dist/domains/code-intelligence/services/knowledge-graph.d.ts +101 -0
  203. package/dist/domains/code-intelligence/services/knowledge-graph.d.ts.map +1 -0
  204. package/dist/domains/code-intelligence/services/knowledge-graph.js +822 -0
  205. package/dist/domains/code-intelligence/services/knowledge-graph.js.map +1 -0
  206. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +141 -0
  207. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts.map +1 -0
  208. package/dist/domains/code-intelligence/services/semantic-analyzer.js +661 -0
  209. package/dist/domains/code-intelligence/services/semantic-analyzer.js.map +1 -0
  210. package/dist/domains/contract-testing/coordinator.d.ts +114 -0
  211. package/dist/domains/contract-testing/coordinator.d.ts.map +1 -0
  212. package/dist/domains/contract-testing/coordinator.js +805 -0
  213. package/dist/domains/contract-testing/coordinator.js.map +1 -0
  214. package/dist/domains/contract-testing/index.d.ts +13 -0
  215. package/dist/domains/contract-testing/index.d.ts.map +1 -0
  216. package/dist/domains/contract-testing/index.js +21 -0
  217. package/dist/domains/contract-testing/index.js.map +1 -0
  218. package/dist/domains/contract-testing/interfaces.d.ts +344 -0
  219. package/dist/domains/contract-testing/interfaces.d.ts.map +1 -0
  220. package/dist/domains/contract-testing/interfaces.js +8 -0
  221. package/dist/domains/contract-testing/interfaces.js.map +1 -0
  222. package/dist/domains/contract-testing/plugin.d.ts +112 -0
  223. package/dist/domains/contract-testing/plugin.d.ts.map +1 -0
  224. package/dist/domains/contract-testing/plugin.js +491 -0
  225. package/dist/domains/contract-testing/plugin.js.map +1 -0
  226. package/dist/domains/contract-testing/services/api-compatibility.d.ts +53 -0
  227. package/dist/domains/contract-testing/services/api-compatibility.d.ts.map +1 -0
  228. package/dist/domains/contract-testing/services/api-compatibility.js +535 -0
  229. package/dist/domains/contract-testing/services/api-compatibility.js.map +1 -0
  230. package/dist/domains/contract-testing/services/contract-validator.d.ts +100 -0
  231. package/dist/domains/contract-testing/services/contract-validator.d.ts.map +1 -0
  232. package/dist/domains/contract-testing/services/contract-validator.js +1398 -0
  233. package/dist/domains/contract-testing/services/contract-validator.js.map +1 -0
  234. package/dist/domains/contract-testing/services/index.d.ts +8 -0
  235. package/dist/domains/contract-testing/services/index.d.ts.map +1 -0
  236. package/dist/domains/contract-testing/services/index.js +8 -0
  237. package/dist/domains/contract-testing/services/index.js.map +1 -0
  238. package/dist/domains/contract-testing/services/schema-validator.d.ts +65 -0
  239. package/dist/domains/contract-testing/services/schema-validator.d.ts.map +1 -0
  240. package/dist/domains/contract-testing/services/schema-validator.js +860 -0
  241. package/dist/domains/contract-testing/services/schema-validator.js.map +1 -0
  242. package/dist/domains/coverage-analysis/coordinator.d.ts +66 -0
  243. package/dist/domains/coverage-analysis/coordinator.d.ts.map +1 -0
  244. package/dist/domains/coverage-analysis/coordinator.js +353 -0
  245. package/dist/domains/coverage-analysis/coordinator.js.map +1 -0
  246. package/dist/domains/coverage-analysis/index.d.ts +33 -0
  247. package/dist/domains/coverage-analysis/index.d.ts.map +1 -0
  248. package/dist/domains/coverage-analysis/index.js +39 -0
  249. package/dist/domains/coverage-analysis/index.js.map +1 -0
  250. package/dist/domains/coverage-analysis/interfaces.d.ts +134 -0
  251. package/dist/domains/coverage-analysis/interfaces.d.ts.map +1 -0
  252. package/dist/domains/coverage-analysis/interfaces.js +6 -0
  253. package/dist/domains/coverage-analysis/interfaces.js.map +1 -0
  254. package/dist/domains/coverage-analysis/plugin.d.ts +37 -0
  255. package/dist/domains/coverage-analysis/plugin.d.ts.map +1 -0
  256. package/dist/domains/coverage-analysis/plugin.js +133 -0
  257. package/dist/domains/coverage-analysis/plugin.js.map +1 -0
  258. package/dist/domains/coverage-analysis/services/coverage-analyzer.d.ts +49 -0
  259. package/dist/domains/coverage-analysis/services/coverage-analyzer.d.ts.map +1 -0
  260. package/dist/domains/coverage-analysis/services/coverage-analyzer.js +342 -0
  261. package/dist/domains/coverage-analysis/services/coverage-analyzer.js.map +1 -0
  262. package/dist/domains/coverage-analysis/services/coverage-embedder.d.ts +165 -0
  263. package/dist/domains/coverage-analysis/services/coverage-embedder.d.ts.map +1 -0
  264. package/dist/domains/coverage-analysis/services/coverage-embedder.js +550 -0
  265. package/dist/domains/coverage-analysis/services/coverage-embedder.js.map +1 -0
  266. package/dist/domains/coverage-analysis/services/coverage-parser.d.ts +203 -0
  267. package/dist/domains/coverage-analysis/services/coverage-parser.d.ts.map +1 -0
  268. package/dist/domains/coverage-analysis/services/coverage-parser.js +506 -0
  269. package/dist/domains/coverage-analysis/services/coverage-parser.js.map +1 -0
  270. package/dist/domains/coverage-analysis/services/gap-detector.d.ts +61 -0
  271. package/dist/domains/coverage-analysis/services/gap-detector.d.ts.map +1 -0
  272. package/dist/domains/coverage-analysis/services/gap-detector.js +474 -0
  273. package/dist/domains/coverage-analysis/services/gap-detector.js.map +1 -0
  274. package/dist/domains/coverage-analysis/services/hnsw-index.d.ts +260 -0
  275. package/dist/domains/coverage-analysis/services/hnsw-index.d.ts.map +1 -0
  276. package/dist/domains/coverage-analysis/services/hnsw-index.js +482 -0
  277. package/dist/domains/coverage-analysis/services/hnsw-index.js.map +1 -0
  278. package/dist/domains/coverage-analysis/services/index.d.ts +13 -0
  279. package/dist/domains/coverage-analysis/services/index.d.ts.map +1 -0
  280. package/dist/domains/coverage-analysis/services/index.js +16 -0
  281. package/dist/domains/coverage-analysis/services/index.js.map +1 -0
  282. package/dist/domains/coverage-analysis/services/risk-scorer.d.ts +62 -0
  283. package/dist/domains/coverage-analysis/services/risk-scorer.d.ts.map +1 -0
  284. package/dist/domains/coverage-analysis/services/risk-scorer.js +412 -0
  285. package/dist/domains/coverage-analysis/services/risk-scorer.js.map +1 -0
  286. package/dist/domains/coverage-analysis/services/sublinear-analyzer.d.ts +237 -0
  287. package/dist/domains/coverage-analysis/services/sublinear-analyzer.d.ts.map +1 -0
  288. package/dist/domains/coverage-analysis/services/sublinear-analyzer.js +499 -0
  289. package/dist/domains/coverage-analysis/services/sublinear-analyzer.js.map +1 -0
  290. package/dist/domains/defect-intelligence/coordinator.d.ts +104 -0
  291. package/dist/domains/defect-intelligence/coordinator.d.ts.map +1 -0
  292. package/dist/domains/defect-intelligence/coordinator.js +423 -0
  293. package/dist/domains/defect-intelligence/coordinator.js.map +1 -0
  294. package/dist/domains/defect-intelligence/index.d.ts +13 -0
  295. package/dist/domains/defect-intelligence/index.d.ts.map +1 -0
  296. package/dist/domains/defect-intelligence/index.js +21 -0
  297. package/dist/domains/defect-intelligence/index.js.map +1 -0
  298. package/dist/domains/defect-intelligence/interfaces.d.ts +127 -0
  299. package/dist/domains/defect-intelligence/interfaces.d.ts.map +1 -0
  300. package/dist/domains/defect-intelligence/interfaces.js +6 -0
  301. package/dist/domains/defect-intelligence/interfaces.js.map +1 -0
  302. package/dist/domains/defect-intelligence/plugin.d.ts +76 -0
  303. package/dist/domains/defect-intelligence/plugin.d.ts.map +1 -0
  304. package/dist/domains/defect-intelligence/plugin.js +287 -0
  305. package/dist/domains/defect-intelligence/plugin.js.map +1 -0
  306. package/dist/domains/defect-intelligence/services/causal-root-cause-analyzer.d.ts +188 -0
  307. package/dist/domains/defect-intelligence/services/causal-root-cause-analyzer.d.ts.map +1 -0
  308. package/dist/domains/defect-intelligence/services/causal-root-cause-analyzer.js +298 -0
  309. package/dist/domains/defect-intelligence/services/causal-root-cause-analyzer.js.map +1 -0
  310. package/dist/domains/defect-intelligence/services/defect-predictor.d.ts +129 -0
  311. package/dist/domains/defect-intelligence/services/defect-predictor.d.ts.map +1 -0
  312. package/dist/domains/defect-intelligence/services/defect-predictor.js +674 -0
  313. package/dist/domains/defect-intelligence/services/defect-predictor.js.map +1 -0
  314. package/dist/domains/defect-intelligence/services/index.d.ts +9 -0
  315. package/dist/domains/defect-intelligence/services/index.d.ts.map +1 -0
  316. package/dist/domains/defect-intelligence/services/index.js +10 -0
  317. package/dist/domains/defect-intelligence/services/index.js.map +1 -0
  318. package/dist/domains/defect-intelligence/services/pattern-learner.d.ts +96 -0
  319. package/dist/domains/defect-intelligence/services/pattern-learner.d.ts.map +1 -0
  320. package/dist/domains/defect-intelligence/services/pattern-learner.js +548 -0
  321. package/dist/domains/defect-intelligence/services/pattern-learner.js.map +1 -0
  322. package/dist/domains/defect-intelligence/services/root-cause-analyzer.d.ts +60 -0
  323. package/dist/domains/defect-intelligence/services/root-cause-analyzer.d.ts.map +1 -0
  324. package/dist/domains/defect-intelligence/services/root-cause-analyzer.js +465 -0
  325. package/dist/domains/defect-intelligence/services/root-cause-analyzer.js.map +1 -0
  326. package/dist/domains/domain-interface.d.ts +32 -0
  327. package/dist/domains/domain-interface.d.ts.map +1 -0
  328. package/dist/domains/domain-interface.js +61 -0
  329. package/dist/domains/domain-interface.js.map +1 -0
  330. package/dist/domains/index.d.ts +20 -0
  331. package/dist/domains/index.d.ts.map +1 -0
  332. package/dist/domains/index.js +22 -0
  333. package/dist/domains/index.js.map +1 -0
  334. package/dist/domains/learning-optimization/coordinator.d.ts +107 -0
  335. package/dist/domains/learning-optimization/coordinator.d.ts.map +1 -0
  336. package/dist/domains/learning-optimization/coordinator.js +849 -0
  337. package/dist/domains/learning-optimization/coordinator.js.map +1 -0
  338. package/dist/domains/learning-optimization/index.d.ts +14 -0
  339. package/dist/domains/learning-optimization/index.d.ts.map +1 -0
  340. package/dist/domains/learning-optimization/index.js +22 -0
  341. package/dist/domains/learning-optimization/index.js.map +1 -0
  342. package/dist/domains/learning-optimization/interfaces.d.ts +453 -0
  343. package/dist/domains/learning-optimization/interfaces.d.ts.map +1 -0
  344. package/dist/domains/learning-optimization/interfaces.js +8 -0
  345. package/dist/domains/learning-optimization/interfaces.js.map +1 -0
  346. package/dist/domains/learning-optimization/plugin.d.ts +116 -0
  347. package/dist/domains/learning-optimization/plugin.d.ts.map +1 -0
  348. package/dist/domains/learning-optimization/plugin.js +523 -0
  349. package/dist/domains/learning-optimization/plugin.js.map +1 -0
  350. package/dist/domains/learning-optimization/services/index.d.ts +9 -0
  351. package/dist/domains/learning-optimization/services/index.d.ts.map +1 -0
  352. package/dist/domains/learning-optimization/services/index.js +9 -0
  353. package/dist/domains/learning-optimization/services/index.js.map +1 -0
  354. package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +98 -0
  355. package/dist/domains/learning-optimization/services/learning-coordinator.d.ts.map +1 -0
  356. package/dist/domains/learning-optimization/services/learning-coordinator.js +730 -0
  357. package/dist/domains/learning-optimization/services/learning-coordinator.js.map +1 -0
  358. package/dist/domains/learning-optimization/services/metrics-optimizer.d.ts +89 -0
  359. package/dist/domains/learning-optimization/services/metrics-optimizer.d.ts.map +1 -0
  360. package/dist/domains/learning-optimization/services/metrics-optimizer.js +598 -0
  361. package/dist/domains/learning-optimization/services/metrics-optimizer.js.map +1 -0
  362. package/dist/domains/learning-optimization/services/production-intel.d.ts +137 -0
  363. package/dist/domains/learning-optimization/services/production-intel.d.ts.map +1 -0
  364. package/dist/domains/learning-optimization/services/production-intel.js +649 -0
  365. package/dist/domains/learning-optimization/services/production-intel.js.map +1 -0
  366. package/dist/domains/learning-optimization/services/transfer-specialist.d.ts +86 -0
  367. package/dist/domains/learning-optimization/services/transfer-specialist.d.ts.map +1 -0
  368. package/dist/domains/learning-optimization/services/transfer-specialist.js +495 -0
  369. package/dist/domains/learning-optimization/services/transfer-specialist.js.map +1 -0
  370. package/dist/domains/quality-assessment/coherence/gate-controller.d.ts +117 -0
  371. package/dist/domains/quality-assessment/coherence/gate-controller.d.ts.map +1 -0
  372. package/dist/domains/quality-assessment/coherence/gate-controller.js +414 -0
  373. package/dist/domains/quality-assessment/coherence/gate-controller.js.map +1 -0
  374. package/dist/domains/quality-assessment/coherence/index.d.ts +102 -0
  375. package/dist/domains/quality-assessment/coherence/index.d.ts.map +1 -0
  376. package/dist/domains/quality-assessment/coherence/index.js +122 -0
  377. package/dist/domains/quality-assessment/coherence/index.js.map +1 -0
  378. package/dist/domains/quality-assessment/coherence/lambda-calculator.d.ts +93 -0
  379. package/dist/domains/quality-assessment/coherence/lambda-calculator.d.ts.map +1 -0
  380. package/dist/domains/quality-assessment/coherence/lambda-calculator.js +293 -0
  381. package/dist/domains/quality-assessment/coherence/lambda-calculator.js.map +1 -0
  382. package/dist/domains/quality-assessment/coherence/partition-detector.d.ts +109 -0
  383. package/dist/domains/quality-assessment/coherence/partition-detector.d.ts.map +1 -0
  384. package/dist/domains/quality-assessment/coherence/partition-detector.js +338 -0
  385. package/dist/domains/quality-assessment/coherence/partition-detector.js.map +1 -0
  386. package/dist/domains/quality-assessment/coherence/types.d.ts +239 -0
  387. package/dist/domains/quality-assessment/coherence/types.d.ts.map +1 -0
  388. package/dist/domains/quality-assessment/coherence/types.js +62 -0
  389. package/dist/domains/quality-assessment/coherence/types.js.map +1 -0
  390. package/dist/domains/quality-assessment/coordinator.d.ts +98 -0
  391. package/dist/domains/quality-assessment/coordinator.d.ts.map +1 -0
  392. package/dist/domains/quality-assessment/coordinator.js +391 -0
  393. package/dist/domains/quality-assessment/coordinator.js.map +1 -0
  394. package/dist/domains/quality-assessment/index.d.ts +15 -0
  395. package/dist/domains/quality-assessment/index.d.ts.map +1 -0
  396. package/dist/domains/quality-assessment/index.js +27 -0
  397. package/dist/domains/quality-assessment/index.js.map +1 -0
  398. package/dist/domains/quality-assessment/interfaces.d.ts +140 -0
  399. package/dist/domains/quality-assessment/interfaces.d.ts.map +1 -0
  400. package/dist/domains/quality-assessment/interfaces.js +6 -0
  401. package/dist/domains/quality-assessment/interfaces.js.map +1 -0
  402. package/dist/domains/quality-assessment/plugin.d.ts +75 -0
  403. package/dist/domains/quality-assessment/plugin.d.ts.map +1 -0
  404. package/dist/domains/quality-assessment/plugin.js +294 -0
  405. package/dist/domains/quality-assessment/plugin.js.map +1 -0
  406. package/dist/domains/quality-assessment/services/coherence-gate.d.ts +109 -0
  407. package/dist/domains/quality-assessment/services/coherence-gate.d.ts.map +1 -0
  408. package/dist/domains/quality-assessment/services/coherence-gate.js +234 -0
  409. package/dist/domains/quality-assessment/services/coherence-gate.js.map +1 -0
  410. package/dist/domains/quality-assessment/services/deployment-advisor.d.ts +83 -0
  411. package/dist/domains/quality-assessment/services/deployment-advisor.d.ts.map +1 -0
  412. package/dist/domains/quality-assessment/services/deployment-advisor.js +384 -0
  413. package/dist/domains/quality-assessment/services/deployment-advisor.js.map +1 -0
  414. package/dist/domains/quality-assessment/services/index.d.ts +9 -0
  415. package/dist/domains/quality-assessment/services/index.d.ts.map +1 -0
  416. package/dist/domains/quality-assessment/services/index.js +12 -0
  417. package/dist/domains/quality-assessment/services/index.js.map +1 -0
  418. package/dist/domains/quality-assessment/services/quality-analyzer.d.ts +74 -0
  419. package/dist/domains/quality-assessment/services/quality-analyzer.d.ts.map +1 -0
  420. package/dist/domains/quality-assessment/services/quality-analyzer.js +518 -0
  421. package/dist/domains/quality-assessment/services/quality-analyzer.js.map +1 -0
  422. package/dist/domains/quality-assessment/services/quality-gate.d.ts +57 -0
  423. package/dist/domains/quality-assessment/services/quality-gate.d.ts.map +1 -0
  424. package/dist/domains/quality-assessment/services/quality-gate.js +244 -0
  425. package/dist/domains/quality-assessment/services/quality-gate.js.map +1 -0
  426. package/dist/domains/requirements-validation/coordinator.d.ts +89 -0
  427. package/dist/domains/requirements-validation/coordinator.d.ts.map +1 -0
  428. package/dist/domains/requirements-validation/coordinator.js +574 -0
  429. package/dist/domains/requirements-validation/coordinator.js.map +1 -0
  430. package/dist/domains/requirements-validation/index.d.ts +13 -0
  431. package/dist/domains/requirements-validation/index.d.ts.map +1 -0
  432. package/dist/domains/requirements-validation/index.js +21 -0
  433. package/dist/domains/requirements-validation/index.js.map +1 -0
  434. package/dist/domains/requirements-validation/interfaces.d.ts +236 -0
  435. package/dist/domains/requirements-validation/interfaces.d.ts.map +1 -0
  436. package/dist/domains/requirements-validation/interfaces.js +8 -0
  437. package/dist/domains/requirements-validation/interfaces.js.map +1 -0
  438. package/dist/domains/requirements-validation/plugin.d.ts +103 -0
  439. package/dist/domains/requirements-validation/plugin.d.ts.map +1 -0
  440. package/dist/domains/requirements-validation/plugin.js +351 -0
  441. package/dist/domains/requirements-validation/plugin.js.map +1 -0
  442. package/dist/domains/requirements-validation/services/bdd-scenario-writer.d.ts +58 -0
  443. package/dist/domains/requirements-validation/services/bdd-scenario-writer.d.ts.map +1 -0
  444. package/dist/domains/requirements-validation/services/bdd-scenario-writer.js +521 -0
  445. package/dist/domains/requirements-validation/services/bdd-scenario-writer.js.map +1 -0
  446. package/dist/domains/requirements-validation/services/index.d.ts +8 -0
  447. package/dist/domains/requirements-validation/services/index.d.ts.map +1 -0
  448. package/dist/domains/requirements-validation/services/index.js +8 -0
  449. package/dist/domains/requirements-validation/services/index.js.map +1 -0
  450. package/dist/domains/requirements-validation/services/requirements-validator.d.ts +51 -0
  451. package/dist/domains/requirements-validation/services/requirements-validator.d.ts.map +1 -0
  452. package/dist/domains/requirements-validation/services/requirements-validator.js +423 -0
  453. package/dist/domains/requirements-validation/services/requirements-validator.js.map +1 -0
  454. package/dist/domains/requirements-validation/services/testability-scorer.d.ts +79 -0
  455. package/dist/domains/requirements-validation/services/testability-scorer.d.ts.map +1 -0
  456. package/dist/domains/requirements-validation/services/testability-scorer.js +502 -0
  457. package/dist/domains/requirements-validation/services/testability-scorer.js.map +1 -0
  458. package/dist/domains/security-compliance/coordinator.d.ts +91 -0
  459. package/dist/domains/security-compliance/coordinator.d.ts.map +1 -0
  460. package/dist/domains/security-compliance/coordinator.js +497 -0
  461. package/dist/domains/security-compliance/coordinator.js.map +1 -0
  462. package/dist/domains/security-compliance/index.d.ts +13 -0
  463. package/dist/domains/security-compliance/index.d.ts.map +1 -0
  464. package/dist/domains/security-compliance/index.js +21 -0
  465. package/dist/domains/security-compliance/index.js.map +1 -0
  466. package/dist/domains/security-compliance/interfaces.d.ts +342 -0
  467. package/dist/domains/security-compliance/interfaces.d.ts.map +1 -0
  468. package/dist/domains/security-compliance/interfaces.js +8 -0
  469. package/dist/domains/security-compliance/interfaces.js.map +1 -0
  470. package/dist/domains/security-compliance/plugin.d.ts +81 -0
  471. package/dist/domains/security-compliance/plugin.d.ts.map +1 -0
  472. package/dist/domains/security-compliance/plugin.js +302 -0
  473. package/dist/domains/security-compliance/plugin.js.map +1 -0
  474. package/dist/domains/security-compliance/services/compliance-validator.d.ts +102 -0
  475. package/dist/domains/security-compliance/services/compliance-validator.d.ts.map +1 -0
  476. package/dist/domains/security-compliance/services/compliance-validator.js +925 -0
  477. package/dist/domains/security-compliance/services/compliance-validator.js.map +1 -0
  478. package/dist/domains/security-compliance/services/index.d.ts +8 -0
  479. package/dist/domains/security-compliance/services/index.d.ts.map +1 -0
  480. package/dist/domains/security-compliance/services/index.js +8 -0
  481. package/dist/domains/security-compliance/services/index.js.map +1 -0
  482. package/dist/domains/security-compliance/services/security-auditor.d.ts +174 -0
  483. package/dist/domains/security-compliance/services/security-auditor.d.ts.map +1 -0
  484. package/dist/domains/security-compliance/services/security-auditor.js +1763 -0
  485. package/dist/domains/security-compliance/services/security-auditor.js.map +1 -0
  486. package/dist/domains/security-compliance/services/security-scanner.d.ts +185 -0
  487. package/dist/domains/security-compliance/services/security-scanner.d.ts.map +1 -0
  488. package/dist/domains/security-compliance/services/security-scanner.js +1911 -0
  489. package/dist/domains/security-compliance/services/security-scanner.js.map +1 -0
  490. package/dist/domains/security-compliance/services/semgrep-integration.d.ts +95 -0
  491. package/dist/domains/security-compliance/services/semgrep-integration.d.ts.map +1 -0
  492. package/dist/domains/security-compliance/services/semgrep-integration.js +209 -0
  493. package/dist/domains/security-compliance/services/semgrep-integration.js.map +1 -0
  494. package/dist/domains/test-execution/coordinator.d.ts +91 -0
  495. package/dist/domains/test-execution/coordinator.d.ts.map +1 -0
  496. package/dist/domains/test-execution/coordinator.js +280 -0
  497. package/dist/domains/test-execution/coordinator.js.map +1 -0
  498. package/dist/domains/test-execution/index.d.ts +11 -0
  499. package/dist/domains/test-execution/index.d.ts.map +1 -0
  500. package/dist/domains/test-execution/index.js +19 -0
  501. package/dist/domains/test-execution/index.js.map +1 -0
  502. package/dist/domains/test-execution/interfaces.d.ts +95 -0
  503. package/dist/domains/test-execution/interfaces.d.ts.map +1 -0
  504. package/dist/domains/test-execution/interfaces.js +6 -0
  505. package/dist/domains/test-execution/interfaces.js.map +1 -0
  506. package/dist/domains/test-execution/plugin.d.ts +27 -0
  507. package/dist/domains/test-execution/plugin.d.ts.map +1 -0
  508. package/dist/domains/test-execution/plugin.js +137 -0
  509. package/dist/domains/test-execution/plugin.js.map +1 -0
  510. package/dist/domains/test-execution/services/flaky-detector.d.ts +189 -0
  511. package/dist/domains/test-execution/services/flaky-detector.d.ts.map +1 -0
  512. package/dist/domains/test-execution/services/flaky-detector.js +834 -0
  513. package/dist/domains/test-execution/services/flaky-detector.js.map +1 -0
  514. package/dist/domains/test-execution/services/index.d.ts +8 -0
  515. package/dist/domains/test-execution/services/index.d.ts.map +1 -0
  516. package/dist/domains/test-execution/services/index.js +8 -0
  517. package/dist/domains/test-execution/services/index.js.map +1 -0
  518. package/dist/domains/test-execution/services/retry-handler.d.ts +169 -0
  519. package/dist/domains/test-execution/services/retry-handler.d.ts.map +1 -0
  520. package/dist/domains/test-execution/services/retry-handler.js +536 -0
  521. package/dist/domains/test-execution/services/retry-handler.js.map +1 -0
  522. package/dist/domains/test-execution/services/test-executor.d.ts +112 -0
  523. package/dist/domains/test-execution/services/test-executor.d.ts.map +1 -0
  524. package/dist/domains/test-execution/services/test-executor.js +657 -0
  525. package/dist/domains/test-execution/services/test-executor.js.map +1 -0
  526. package/dist/domains/test-generation/coordinator.d.ts +104 -0
  527. package/dist/domains/test-generation/coordinator.d.ts.map +1 -0
  528. package/dist/domains/test-generation/coordinator.js +446 -0
  529. package/dist/domains/test-generation/coordinator.js.map +1 -0
  530. package/dist/domains/test-generation/index.d.ts +12 -0
  531. package/dist/domains/test-generation/index.d.ts.map +1 -0
  532. package/dist/domains/test-generation/index.js +20 -0
  533. package/dist/domains/test-generation/index.js.map +1 -0
  534. package/dist/domains/test-generation/interfaces.d.ts +92 -0
  535. package/dist/domains/test-generation/interfaces.d.ts.map +1 -0
  536. package/dist/domains/test-generation/interfaces.js +6 -0
  537. package/dist/domains/test-generation/interfaces.js.map +1 -0
  538. package/dist/domains/test-generation/plugin.d.ts +70 -0
  539. package/dist/domains/test-generation/plugin.d.ts.map +1 -0
  540. package/dist/domains/test-generation/plugin.js +240 -0
  541. package/dist/domains/test-generation/plugin.js.map +1 -0
  542. package/dist/domains/test-generation/services/index.d.ts +7 -0
  543. package/dist/domains/test-generation/services/index.d.ts.map +1 -0
  544. package/dist/domains/test-generation/services/index.js +7 -0
  545. package/dist/domains/test-generation/services/index.js.map +1 -0
  546. package/dist/domains/test-generation/services/pattern-matcher.d.ts +276 -0
  547. package/dist/domains/test-generation/services/pattern-matcher.d.ts.map +1 -0
  548. package/dist/domains/test-generation/services/pattern-matcher.js +1271 -0
  549. package/dist/domains/test-generation/services/pattern-matcher.js.map +1 -0
  550. package/dist/domains/test-generation/services/test-generator.d.ts +226 -0
  551. package/dist/domains/test-generation/services/test-generator.d.ts.map +1 -0
  552. package/dist/domains/test-generation/services/test-generator.js +2230 -0
  553. package/dist/domains/test-generation/services/test-generator.js.map +1 -0
  554. package/dist/domains/visual-accessibility/coordinator.d.ts +118 -0
  555. package/dist/domains/visual-accessibility/coordinator.d.ts.map +1 -0
  556. package/dist/domains/visual-accessibility/coordinator.js +623 -0
  557. package/dist/domains/visual-accessibility/coordinator.js.map +1 -0
  558. package/dist/domains/visual-accessibility/index.d.ts +13 -0
  559. package/dist/domains/visual-accessibility/index.d.ts.map +1 -0
  560. package/dist/domains/visual-accessibility/index.js +21 -0
  561. package/dist/domains/visual-accessibility/index.js.map +1 -0
  562. package/dist/domains/visual-accessibility/interfaces.d.ts +360 -0
  563. package/dist/domains/visual-accessibility/interfaces.d.ts.map +1 -0
  564. package/dist/domains/visual-accessibility/interfaces.js +8 -0
  565. package/dist/domains/visual-accessibility/interfaces.js.map +1 -0
  566. package/dist/domains/visual-accessibility/plugin.d.ts +92 -0
  567. package/dist/domains/visual-accessibility/plugin.d.ts.map +1 -0
  568. package/dist/domains/visual-accessibility/plugin.js +343 -0
  569. package/dist/domains/visual-accessibility/plugin.js.map +1 -0
  570. package/dist/domains/visual-accessibility/services/accessibility-tester.d.ts +115 -0
  571. package/dist/domains/visual-accessibility/services/accessibility-tester.d.ts.map +1 -0
  572. package/dist/domains/visual-accessibility/services/accessibility-tester.js +794 -0
  573. package/dist/domains/visual-accessibility/services/accessibility-tester.js.map +1 -0
  574. package/dist/domains/visual-accessibility/services/axe-core-audit.d.ts +219 -0
  575. package/dist/domains/visual-accessibility/services/axe-core-audit.d.ts.map +1 -0
  576. package/dist/domains/visual-accessibility/services/axe-core-audit.js +427 -0
  577. package/dist/domains/visual-accessibility/services/axe-core-audit.js.map +1 -0
  578. package/dist/domains/visual-accessibility/services/index.d.ts +8 -0
  579. package/dist/domains/visual-accessibility/services/index.d.ts.map +1 -0
  580. package/dist/domains/visual-accessibility/services/index.js +8 -0
  581. package/dist/domains/visual-accessibility/services/index.js.map +1 -0
  582. package/dist/domains/visual-accessibility/services/responsive-tester.d.ts +149 -0
  583. package/dist/domains/visual-accessibility/services/responsive-tester.d.ts.map +1 -0
  584. package/dist/domains/visual-accessibility/services/responsive-tester.js +667 -0
  585. package/dist/domains/visual-accessibility/services/responsive-tester.js.map +1 -0
  586. package/dist/domains/visual-accessibility/services/visual-tester.d.ts +78 -0
  587. package/dist/domains/visual-accessibility/services/visual-tester.d.ts.map +1 -0
  588. package/dist/domains/visual-accessibility/services/visual-tester.js +335 -0
  589. package/dist/domains/visual-accessibility/services/visual-tester.js.map +1 -0
  590. package/dist/early-exit/early-exit-controller.d.ts +158 -0
  591. package/dist/early-exit/early-exit-controller.d.ts.map +1 -0
  592. package/dist/early-exit/early-exit-controller.js +354 -0
  593. package/dist/early-exit/early-exit-controller.js.map +1 -0
  594. package/dist/early-exit/early-exit-decision.d.ts +110 -0
  595. package/dist/early-exit/early-exit-decision.d.ts.map +1 -0
  596. package/dist/early-exit/early-exit-decision.js +241 -0
  597. package/dist/early-exit/early-exit-decision.js.map +1 -0
  598. package/dist/early-exit/index.d.ts +38 -0
  599. package/dist/early-exit/index.d.ts.map +1 -0
  600. package/dist/early-exit/index.js +53 -0
  601. package/dist/early-exit/index.js.map +1 -0
  602. package/dist/early-exit/quality-signal.d.ts +61 -0
  603. package/dist/early-exit/quality-signal.d.ts.map +1 -0
  604. package/dist/early-exit/quality-signal.js +306 -0
  605. package/dist/early-exit/quality-signal.js.map +1 -0
  606. package/dist/early-exit/speculative-executor.d.ts +131 -0
  607. package/dist/early-exit/speculative-executor.d.ts.map +1 -0
  608. package/dist/early-exit/speculative-executor.js +385 -0
  609. package/dist/early-exit/speculative-executor.js.map +1 -0
  610. package/dist/early-exit/types.d.ts +271 -0
  611. package/dist/early-exit/types.d.ts.map +1 -0
  612. package/dist/early-exit/types.js +69 -0
  613. package/dist/early-exit/types.js.map +1 -0
  614. package/dist/feedback/coverage-learner.d.ts +117 -0
  615. package/dist/feedback/coverage-learner.d.ts.map +1 -0
  616. package/dist/feedback/coverage-learner.js +367 -0
  617. package/dist/feedback/coverage-learner.js.map +1 -0
  618. package/dist/feedback/feedback-loop.d.ts +170 -0
  619. package/dist/feedback/feedback-loop.d.ts.map +1 -0
  620. package/dist/feedback/feedback-loop.js +281 -0
  621. package/dist/feedback/feedback-loop.js.map +1 -0
  622. package/dist/feedback/index.d.ts +17 -0
  623. package/dist/feedback/index.d.ts.map +1 -0
  624. package/dist/feedback/index.js +20 -0
  625. package/dist/feedback/index.js.map +1 -0
  626. package/dist/feedback/pattern-promotion.d.ts +126 -0
  627. package/dist/feedback/pattern-promotion.d.ts.map +1 -0
  628. package/dist/feedback/pattern-promotion.js +282 -0
  629. package/dist/feedback/pattern-promotion.js.map +1 -0
  630. package/dist/feedback/quality-score-calculator.d.ts +93 -0
  631. package/dist/feedback/quality-score-calculator.d.ts.map +1 -0
  632. package/dist/feedback/quality-score-calculator.js +285 -0
  633. package/dist/feedback/quality-score-calculator.js.map +1 -0
  634. package/dist/feedback/test-outcome-tracker.d.ts +103 -0
  635. package/dist/feedback/test-outcome-tracker.d.ts.map +1 -0
  636. package/dist/feedback/test-outcome-tracker.js +347 -0
  637. package/dist/feedback/test-outcome-tracker.js.map +1 -0
  638. package/dist/feedback/types.d.ts +322 -0
  639. package/dist/feedback/types.d.ts.map +1 -0
  640. package/dist/feedback/types.js +60 -0
  641. package/dist/feedback/types.js.map +1 -0
  642. package/dist/index.d.ts +45 -0
  643. package/dist/index.d.ts.map +1 -0
  644. package/dist/index.js +71 -0
  645. package/dist/index.js.map +1 -0
  646. package/dist/init/agents-installer.d.ts +88 -0
  647. package/dist/init/agents-installer.d.ts.map +1 -0
  648. package/dist/init/agents-installer.js +441 -0
  649. package/dist/init/agents-installer.js.map +1 -0
  650. package/dist/init/index.d.ts +18 -0
  651. package/dist/init/index.d.ts.map +1 -0
  652. package/dist/init/index.js +14 -0
  653. package/dist/init/index.js.map +1 -0
  654. package/dist/init/init-wizard.d.ts +107 -0
  655. package/dist/init/init-wizard.d.ts.map +1 -0
  656. package/dist/init/init-wizard.js +906 -0
  657. package/dist/init/init-wizard.js.map +1 -0
  658. package/dist/init/project-analyzer.d.ts +95 -0
  659. package/dist/init/project-analyzer.d.ts.map +1 -0
  660. package/dist/init/project-analyzer.js +608 -0
  661. package/dist/init/project-analyzer.js.map +1 -0
  662. package/dist/init/self-configurator.d.ts +74 -0
  663. package/dist/init/self-configurator.d.ts.map +1 -0
  664. package/dist/init/self-configurator.js +384 -0
  665. package/dist/init/self-configurator.js.map +1 -0
  666. package/dist/init/skills-installer.d.ts +88 -0
  667. package/dist/init/skills-installer.d.ts.map +1 -0
  668. package/dist/init/skills-installer.js +386 -0
  669. package/dist/init/skills-installer.js.map +1 -0
  670. package/dist/init/types.d.ts +280 -0
  671. package/dist/init/types.d.ts.map +1 -0
  672. package/dist/init/types.js +110 -0
  673. package/dist/init/types.js.map +1 -0
  674. package/dist/integrations/ruvector/ast-complexity.d.ts +134 -0
  675. package/dist/integrations/ruvector/ast-complexity.d.ts.map +1 -0
  676. package/dist/integrations/ruvector/ast-complexity.js +383 -0
  677. package/dist/integrations/ruvector/ast-complexity.js.map +1 -0
  678. package/dist/integrations/ruvector/coverage-router.d.ts +128 -0
  679. package/dist/integrations/ruvector/coverage-router.d.ts.map +1 -0
  680. package/dist/integrations/ruvector/coverage-router.js +463 -0
  681. package/dist/integrations/ruvector/coverage-router.js.map +1 -0
  682. package/dist/integrations/ruvector/diff-risk-classifier.d.ts +129 -0
  683. package/dist/integrations/ruvector/diff-risk-classifier.d.ts.map +1 -0
  684. package/dist/integrations/ruvector/diff-risk-classifier.js +569 -0
  685. package/dist/integrations/ruvector/diff-risk-classifier.js.map +1 -0
  686. package/dist/integrations/ruvector/fallback.d.ts +138 -0
  687. package/dist/integrations/ruvector/fallback.d.ts.map +1 -0
  688. package/dist/integrations/ruvector/fallback.js +737 -0
  689. package/dist/integrations/ruvector/fallback.js.map +1 -0
  690. package/dist/integrations/ruvector/graph-boundaries.d.ts +151 -0
  691. package/dist/integrations/ruvector/graph-boundaries.d.ts.map +1 -0
  692. package/dist/integrations/ruvector/graph-boundaries.js +627 -0
  693. package/dist/integrations/ruvector/graph-boundaries.js.map +1 -0
  694. package/dist/integrations/ruvector/index.d.ts +82 -0
  695. package/dist/integrations/ruvector/index.d.ts.map +1 -0
  696. package/dist/integrations/ruvector/index.js +254 -0
  697. package/dist/integrations/ruvector/index.js.map +1 -0
  698. package/dist/integrations/ruvector/interfaces.d.ts +488 -0
  699. package/dist/integrations/ruvector/interfaces.d.ts.map +1 -0
  700. package/dist/integrations/ruvector/interfaces.js +64 -0
  701. package/dist/integrations/ruvector/interfaces.js.map +1 -0
  702. package/dist/integrations/ruvector/q-learning-router.d.ts +128 -0
  703. package/dist/integrations/ruvector/q-learning-router.d.ts.map +1 -0
  704. package/dist/integrations/ruvector/q-learning-router.js +427 -0
  705. package/dist/integrations/ruvector/q-learning-router.js.map +1 -0
  706. package/dist/kernel/agent-coordinator.d.ts +22 -0
  707. package/dist/kernel/agent-coordinator.d.ts.map +1 -0
  708. package/dist/kernel/agent-coordinator.js +113 -0
  709. package/dist/kernel/agent-coordinator.js.map +1 -0
  710. package/dist/kernel/agentdb-backend.d.ts +131 -0
  711. package/dist/kernel/agentdb-backend.d.ts.map +1 -0
  712. package/dist/kernel/agentdb-backend.js +359 -0
  713. package/dist/kernel/agentdb-backend.js.map +1 -0
  714. package/dist/kernel/event-bus.d.ts +18 -0
  715. package/dist/kernel/event-bus.d.ts.map +1 -0
  716. package/dist/kernel/event-bus.js +99 -0
  717. package/dist/kernel/event-bus.js.map +1 -0
  718. package/dist/kernel/hybrid-backend.d.ts +124 -0
  719. package/dist/kernel/hybrid-backend.d.ts.map +1 -0
  720. package/dist/kernel/hybrid-backend.js +395 -0
  721. package/dist/kernel/hybrid-backend.js.map +1 -0
  722. package/dist/kernel/index.d.ts +16 -0
  723. package/dist/kernel/index.d.ts.map +1 -0
  724. package/dist/kernel/index.js +17 -0
  725. package/dist/kernel/index.js.map +1 -0
  726. package/dist/kernel/interfaces.d.ts +174 -0
  727. package/dist/kernel/interfaces.d.ts.map +1 -0
  728. package/dist/kernel/interfaces.js +6 -0
  729. package/dist/kernel/interfaces.js.map +1 -0
  730. package/dist/kernel/kernel.d.ts +50 -0
  731. package/dist/kernel/kernel.d.ts.map +1 -0
  732. package/dist/kernel/kernel.js +228 -0
  733. package/dist/kernel/kernel.js.map +1 -0
  734. package/dist/kernel/memory-backend.d.ts +28 -0
  735. package/dist/kernel/memory-backend.d.ts.map +1 -0
  736. package/dist/kernel/memory-backend.js +126 -0
  737. package/dist/kernel/memory-backend.js.map +1 -0
  738. package/dist/kernel/memory-factory.d.ts +100 -0
  739. package/dist/kernel/memory-factory.d.ts.map +1 -0
  740. package/dist/kernel/memory-factory.js +209 -0
  741. package/dist/kernel/memory-factory.js.map +1 -0
  742. package/dist/kernel/plugin-loader.d.ts +36 -0
  743. package/dist/kernel/plugin-loader.d.ts.map +1 -0
  744. package/dist/kernel/plugin-loader.js +145 -0
  745. package/dist/kernel/plugin-loader.js.map +1 -0
  746. package/dist/learning/index.d.ts +58 -0
  747. package/dist/learning/index.d.ts.map +1 -0
  748. package/dist/learning/index.js +90 -0
  749. package/dist/learning/index.js.map +1 -0
  750. package/dist/learning/pattern-store.d.ts +242 -0
  751. package/dist/learning/pattern-store.d.ts.map +1 -0
  752. package/dist/learning/pattern-store.js +657 -0
  753. package/dist/learning/pattern-store.js.map +1 -0
  754. package/dist/learning/qe-guidance.d.ts +125 -0
  755. package/dist/learning/qe-guidance.d.ts.map +1 -0
  756. package/dist/learning/qe-guidance.js +712 -0
  757. package/dist/learning/qe-guidance.js.map +1 -0
  758. package/dist/learning/qe-hooks.d.ts +111 -0
  759. package/dist/learning/qe-hooks.d.ts.map +1 -0
  760. package/dist/learning/qe-hooks.js +475 -0
  761. package/dist/learning/qe-hooks.js.map +1 -0
  762. package/dist/learning/qe-patterns.d.ts +203 -0
  763. package/dist/learning/qe-patterns.d.ts.map +1 -0
  764. package/dist/learning/qe-patterns.js +181 -0
  765. package/dist/learning/qe-patterns.js.map +1 -0
  766. package/dist/learning/qe-reasoning-bank.d.ts +263 -0
  767. package/dist/learning/qe-reasoning-bank.d.ts.map +1 -0
  768. package/dist/learning/qe-reasoning-bank.js +617 -0
  769. package/dist/learning/qe-reasoning-bank.js.map +1 -0
  770. package/dist/learning/real-embeddings.d.ts +61 -0
  771. package/dist/learning/real-embeddings.d.ts.map +1 -0
  772. package/dist/learning/real-embeddings.js +219 -0
  773. package/dist/learning/real-embeddings.js.map +1 -0
  774. package/dist/learning/real-qe-reasoning-bank.d.ts +182 -0
  775. package/dist/learning/real-qe-reasoning-bank.d.ts.map +1 -0
  776. package/dist/learning/real-qe-reasoning-bank.js +597 -0
  777. package/dist/learning/real-qe-reasoning-bank.js.map +1 -0
  778. package/dist/learning/sqlite-persistence.d.ts +121 -0
  779. package/dist/learning/sqlite-persistence.d.ts.map +1 -0
  780. package/dist/learning/sqlite-persistence.js +438 -0
  781. package/dist/learning/sqlite-persistence.js.map +1 -0
  782. package/dist/mcp/entry.d.ts +13 -0
  783. package/dist/mcp/entry.d.ts.map +1 -0
  784. package/dist/mcp/entry.js +53 -0
  785. package/dist/mcp/entry.js.map +1 -0
  786. package/dist/mcp/handlers/agent-handlers.d.ts +62 -0
  787. package/dist/mcp/handlers/agent-handlers.d.ts.map +1 -0
  788. package/dist/mcp/handlers/agent-handlers.js +173 -0
  789. package/dist/mcp/handlers/agent-handlers.js.map +1 -0
  790. package/dist/mcp/handlers/core-handlers.d.ts +30 -0
  791. package/dist/mcp/handlers/core-handlers.d.ts.map +1 -0
  792. package/dist/mcp/handlers/core-handlers.js +250 -0
  793. package/dist/mcp/handlers/core-handlers.js.map +1 -0
  794. package/dist/mcp/handlers/domain-handlers.d.ts +135 -0
  795. package/dist/mcp/handlers/domain-handlers.d.ts.map +1 -0
  796. package/dist/mcp/handlers/domain-handlers.js +990 -0
  797. package/dist/mcp/handlers/domain-handlers.js.map +1 -0
  798. package/dist/mcp/handlers/index.d.ts +10 -0
  799. package/dist/mcp/handlers/index.d.ts.map +1 -0
  800. package/dist/mcp/handlers/index.js +15 -0
  801. package/dist/mcp/handlers/index.js.map +1 -0
  802. package/dist/mcp/handlers/memory-handlers.d.ts +53 -0
  803. package/dist/mcp/handlers/memory-handlers.d.ts.map +1 -0
  804. package/dist/mcp/handlers/memory-handlers.js +228 -0
  805. package/dist/mcp/handlers/memory-handlers.js.map +1 -0
  806. package/dist/mcp/handlers/task-handlers.d.ts +26 -0
  807. package/dist/mcp/handlers/task-handlers.d.ts.map +1 -0
  808. package/dist/mcp/handlers/task-handlers.js +293 -0
  809. package/dist/mcp/handlers/task-handlers.js.map +1 -0
  810. package/dist/mcp/index.d.ts +12 -0
  811. package/dist/mcp/index.d.ts.map +1 -0
  812. package/dist/mcp/index.js +18 -0
  813. package/dist/mcp/index.js.map +1 -0
  814. package/dist/mcp/metrics/index.d.ts +6 -0
  815. package/dist/mcp/metrics/index.d.ts.map +1 -0
  816. package/dist/mcp/metrics/index.js +6 -0
  817. package/dist/mcp/metrics/index.js.map +1 -0
  818. package/dist/mcp/metrics/metrics-collector.d.ts +154 -0
  819. package/dist/mcp/metrics/metrics-collector.d.ts.map +1 -0
  820. package/dist/mcp/metrics/metrics-collector.js +377 -0
  821. package/dist/mcp/metrics/metrics-collector.js.map +1 -0
  822. package/dist/mcp/protocol-server.d.ts +66 -0
  823. package/dist/mcp/protocol-server.d.ts.map +1 -0
  824. package/dist/mcp/protocol-server.js +600 -0
  825. package/dist/mcp/protocol-server.js.map +1 -0
  826. package/dist/mcp/security/cve-prevention.d.ts +150 -0
  827. package/dist/mcp/security/cve-prevention.d.ts.map +1 -0
  828. package/dist/mcp/security/cve-prevention.js +570 -0
  829. package/dist/mcp/security/cve-prevention.js.map +1 -0
  830. package/dist/mcp/security/index.d.ts +116 -0
  831. package/dist/mcp/security/index.d.ts.map +1 -0
  832. package/dist/mcp/security/index.js +184 -0
  833. package/dist/mcp/security/index.js.map +1 -0
  834. package/dist/mcp/security/oauth21-provider.d.ts +229 -0
  835. package/dist/mcp/security/oauth21-provider.d.ts.map +1 -0
  836. package/dist/mcp/security/oauth21-provider.js +558 -0
  837. package/dist/mcp/security/oauth21-provider.js.map +1 -0
  838. package/dist/mcp/security/rate-limiter.d.ts +191 -0
  839. package/dist/mcp/security/rate-limiter.d.ts.map +1 -0
  840. package/dist/mcp/security/rate-limiter.js +437 -0
  841. package/dist/mcp/security/rate-limiter.js.map +1 -0
  842. package/dist/mcp/security/sampling-server.d.ts +289 -0
  843. package/dist/mcp/security/sampling-server.d.ts.map +1 -0
  844. package/dist/mcp/security/sampling-server.js +450 -0
  845. package/dist/mcp/security/sampling-server.js.map +1 -0
  846. package/dist/mcp/security/schema-validator.d.ts +197 -0
  847. package/dist/mcp/security/schema-validator.d.ts.map +1 -0
  848. package/dist/mcp/security/schema-validator.js +633 -0
  849. package/dist/mcp/security/schema-validator.js.map +1 -0
  850. package/dist/mcp/server.d.ts +46 -0
  851. package/dist/mcp/server.d.ts.map +1 -0
  852. package/dist/mcp/server.js +576 -0
  853. package/dist/mcp/server.js.map +1 -0
  854. package/dist/mcp/tool-registry.d.ts +98 -0
  855. package/dist/mcp/tool-registry.d.ts.map +1 -0
  856. package/dist/mcp/tool-registry.js +321 -0
  857. package/dist/mcp/tool-registry.js.map +1 -0
  858. package/dist/mcp/tools/base.d.ts +186 -0
  859. package/dist/mcp/tools/base.d.ts.map +1 -0
  860. package/dist/mcp/tools/base.js +249 -0
  861. package/dist/mcp/tools/base.js.map +1 -0
  862. package/dist/mcp/tools/chaos-resilience/inject.d.ts +61 -0
  863. package/dist/mcp/tools/chaos-resilience/inject.d.ts.map +1 -0
  864. package/dist/mcp/tools/chaos-resilience/inject.js +520 -0
  865. package/dist/mcp/tools/chaos-resilience/inject.js.map +1 -0
  866. package/dist/mcp/tools/code-intelligence/analyze.d.ts +140 -0
  867. package/dist/mcp/tools/code-intelligence/analyze.d.ts.map +1 -0
  868. package/dist/mcp/tools/code-intelligence/analyze.js +570 -0
  869. package/dist/mcp/tools/code-intelligence/analyze.js.map +1 -0
  870. package/dist/mcp/tools/contract-testing/validate.d.ts +90 -0
  871. package/dist/mcp/tools/contract-testing/validate.d.ts.map +1 -0
  872. package/dist/mcp/tools/contract-testing/validate.js +515 -0
  873. package/dist/mcp/tools/contract-testing/validate.js.map +1 -0
  874. package/dist/mcp/tools/coverage-analysis/index.d.ts +111 -0
  875. package/dist/mcp/tools/coverage-analysis/index.d.ts.map +1 -0
  876. package/dist/mcp/tools/coverage-analysis/index.js +577 -0
  877. package/dist/mcp/tools/coverage-analysis/index.js.map +1 -0
  878. package/dist/mcp/tools/defect-intelligence/predict.d.ts +67 -0
  879. package/dist/mcp/tools/defect-intelligence/predict.d.ts.map +1 -0
  880. package/dist/mcp/tools/defect-intelligence/predict.js +359 -0
  881. package/dist/mcp/tools/defect-intelligence/predict.js.map +1 -0
  882. package/dist/mcp/tools/index.d.ts +40 -0
  883. package/dist/mcp/tools/index.d.ts.map +1 -0
  884. package/dist/mcp/tools/index.js +82 -0
  885. package/dist/mcp/tools/index.js.map +1 -0
  886. package/dist/mcp/tools/learning-optimization/optimize.d.ts +123 -0
  887. package/dist/mcp/tools/learning-optimization/optimize.d.ts.map +1 -0
  888. package/dist/mcp/tools/learning-optimization/optimize.js +563 -0
  889. package/dist/mcp/tools/learning-optimization/optimize.js.map +1 -0
  890. package/dist/mcp/tools/quality-assessment/evaluate.d.ts +83 -0
  891. package/dist/mcp/tools/quality-assessment/evaluate.d.ts.map +1 -0
  892. package/dist/mcp/tools/quality-assessment/evaluate.js +277 -0
  893. package/dist/mcp/tools/quality-assessment/evaluate.js.map +1 -0
  894. package/dist/mcp/tools/registry.d.ts +79 -0
  895. package/dist/mcp/tools/registry.d.ts.map +1 -0
  896. package/dist/mcp/tools/registry.js +181 -0
  897. package/dist/mcp/tools/registry.js.map +1 -0
  898. package/dist/mcp/tools/requirements-validation/validate.d.ts +81 -0
  899. package/dist/mcp/tools/requirements-validation/validate.d.ts.map +1 -0
  900. package/dist/mcp/tools/requirements-validation/validate.js +270 -0
  901. package/dist/mcp/tools/requirements-validation/validate.js.map +1 -0
  902. package/dist/mcp/tools/security-compliance/scan.d.ts +75 -0
  903. package/dist/mcp/tools/security-compliance/scan.d.ts.map +1 -0
  904. package/dist/mcp/tools/security-compliance/scan.js +258 -0
  905. package/dist/mcp/tools/security-compliance/scan.js.map +1 -0
  906. package/dist/mcp/tools/test-execution/execute.d.ts +65 -0
  907. package/dist/mcp/tools/test-execution/execute.d.ts.map +1 -0
  908. package/dist/mcp/tools/test-execution/execute.js +196 -0
  909. package/dist/mcp/tools/test-execution/execute.js.map +1 -0
  910. package/dist/mcp/tools/test-generation/generate.d.ts +53 -0
  911. package/dist/mcp/tools/test-generation/generate.d.ts.map +1 -0
  912. package/dist/mcp/tools/test-generation/generate.js +437 -0
  913. package/dist/mcp/tools/test-generation/generate.js.map +1 -0
  914. package/dist/mcp/tools/visual-accessibility/index.d.ts +144 -0
  915. package/dist/mcp/tools/visual-accessibility/index.d.ts.map +1 -0
  916. package/dist/mcp/tools/visual-accessibility/index.js +562 -0
  917. package/dist/mcp/tools/visual-accessibility/index.js.map +1 -0
  918. package/dist/mcp/transport/index.d.ts +12 -0
  919. package/dist/mcp/transport/index.d.ts.map +1 -0
  920. package/dist/mcp/transport/index.js +21 -0
  921. package/dist/mcp/transport/index.js.map +1 -0
  922. package/dist/mcp/transport/stdio.d.ts +95 -0
  923. package/dist/mcp/transport/stdio.d.ts.map +1 -0
  924. package/dist/mcp/transport/stdio.js +226 -0
  925. package/dist/mcp/transport/stdio.js.map +1 -0
  926. package/dist/mcp/types.d.ts +455 -0
  927. package/dist/mcp/types.d.ts.map +1 -0
  928. package/dist/mcp/types.js +6 -0
  929. package/dist/mcp/types.js.map +1 -0
  930. package/dist/neural-optimizer/index.d.ts +55 -0
  931. package/dist/neural-optimizer/index.d.ts.map +1 -0
  932. package/dist/neural-optimizer/index.js +57 -0
  933. package/dist/neural-optimizer/index.js.map +1 -0
  934. package/dist/neural-optimizer/replay-buffer.d.ts +126 -0
  935. package/dist/neural-optimizer/replay-buffer.d.ts.map +1 -0
  936. package/dist/neural-optimizer/replay-buffer.js +355 -0
  937. package/dist/neural-optimizer/replay-buffer.js.map +1 -0
  938. package/dist/neural-optimizer/swarm-topology.d.ts +157 -0
  939. package/dist/neural-optimizer/swarm-topology.d.ts.map +1 -0
  940. package/dist/neural-optimizer/swarm-topology.js +384 -0
  941. package/dist/neural-optimizer/swarm-topology.js.map +1 -0
  942. package/dist/neural-optimizer/topology-optimizer.d.ts +137 -0
  943. package/dist/neural-optimizer/topology-optimizer.d.ts.map +1 -0
  944. package/dist/neural-optimizer/topology-optimizer.js +656 -0
  945. package/dist/neural-optimizer/topology-optimizer.js.map +1 -0
  946. package/dist/neural-optimizer/types.d.ts +333 -0
  947. package/dist/neural-optimizer/types.d.ts.map +1 -0
  948. package/dist/neural-optimizer/types.js +57 -0
  949. package/dist/neural-optimizer/types.js.map +1 -0
  950. package/dist/neural-optimizer/value-network.d.ts +129 -0
  951. package/dist/neural-optimizer/value-network.d.ts.map +1 -0
  952. package/dist/neural-optimizer/value-network.js +278 -0
  953. package/dist/neural-optimizer/value-network.js.map +1 -0
  954. package/dist/optimization/auto-tuner.d.ts +207 -0
  955. package/dist/optimization/auto-tuner.d.ts.map +1 -0
  956. package/dist/optimization/auto-tuner.js +641 -0
  957. package/dist/optimization/auto-tuner.js.map +1 -0
  958. package/dist/optimization/index.d.ts +16 -0
  959. package/dist/optimization/index.d.ts.map +1 -0
  960. package/dist/optimization/index.js +14 -0
  961. package/dist/optimization/index.js.map +1 -0
  962. package/dist/optimization/metric-collectors.d.ts +145 -0
  963. package/dist/optimization/metric-collectors.d.ts.map +1 -0
  964. package/dist/optimization/metric-collectors.js +401 -0
  965. package/dist/optimization/metric-collectors.js.map +1 -0
  966. package/dist/optimization/qe-workers.d.ts +143 -0
  967. package/dist/optimization/qe-workers.d.ts.map +1 -0
  968. package/dist/optimization/qe-workers.js +510 -0
  969. package/dist/optimization/qe-workers.js.map +1 -0
  970. package/dist/optimization/tuning-algorithm.d.ts +93 -0
  971. package/dist/optimization/tuning-algorithm.d.ts.map +1 -0
  972. package/dist/optimization/tuning-algorithm.js +278 -0
  973. package/dist/optimization/tuning-algorithm.js.map +1 -0
  974. package/dist/optimization/types.d.ts +211 -0
  975. package/dist/optimization/types.d.ts.map +1 -0
  976. package/dist/optimization/types.js +81 -0
  977. package/dist/optimization/types.js.map +1 -0
  978. package/dist/routing/index.d.ts +15 -0
  979. package/dist/routing/index.d.ts.map +1 -0
  980. package/dist/routing/index.js +17 -0
  981. package/dist/routing/index.js.map +1 -0
  982. package/dist/routing/qe-agent-registry.d.ts +58 -0
  983. package/dist/routing/qe-agent-registry.d.ts.map +1 -0
  984. package/dist/routing/qe-agent-registry.js +909 -0
  985. package/dist/routing/qe-agent-registry.js.map +1 -0
  986. package/dist/routing/qe-task-router.d.ts +82 -0
  987. package/dist/routing/qe-task-router.d.ts.map +1 -0
  988. package/dist/routing/qe-task-router.js +453 -0
  989. package/dist/routing/qe-task-router.js.map +1 -0
  990. package/dist/routing/routing-feedback.d.ts +82 -0
  991. package/dist/routing/routing-feedback.d.ts.map +1 -0
  992. package/dist/routing/routing-feedback.js +272 -0
  993. package/dist/routing/routing-feedback.js.map +1 -0
  994. package/dist/routing/types.d.ts +225 -0
  995. package/dist/routing/types.d.ts.map +1 -0
  996. package/dist/routing/types.js +27 -0
  997. package/dist/routing/types.js.map +1 -0
  998. package/dist/shared/embeddings/embedding-cache.d.ts +62 -0
  999. package/dist/shared/embeddings/embedding-cache.d.ts.map +1 -0
  1000. package/dist/shared/embeddings/embedding-cache.js +136 -0
  1001. package/dist/shared/embeddings/embedding-cache.js.map +1 -0
  1002. package/dist/shared/embeddings/index.d.ts +35 -0
  1003. package/dist/shared/embeddings/index.d.ts.map +1 -0
  1004. package/dist/shared/embeddings/index.js +33 -0
  1005. package/dist/shared/embeddings/index.js.map +1 -0
  1006. package/dist/shared/embeddings/nomic-embedder.d.ts +128 -0
  1007. package/dist/shared/embeddings/nomic-embedder.d.ts.map +1 -0
  1008. package/dist/shared/embeddings/nomic-embedder.js +322 -0
  1009. package/dist/shared/embeddings/nomic-embedder.js.map +1 -0
  1010. package/dist/shared/embeddings/ollama-client.d.ts +40 -0
  1011. package/dist/shared/embeddings/ollama-client.d.ts.map +1 -0
  1012. package/dist/shared/embeddings/ollama-client.js +140 -0
  1013. package/dist/shared/embeddings/ollama-client.js.map +1 -0
  1014. package/dist/shared/embeddings/types.d.ts +136 -0
  1015. package/dist/shared/embeddings/types.d.ts.map +1 -0
  1016. package/dist/shared/embeddings/types.js +26 -0
  1017. package/dist/shared/embeddings/types.js.map +1 -0
  1018. package/dist/shared/entities/agent.d.ts +40 -0
  1019. package/dist/shared/entities/agent.d.ts.map +1 -0
  1020. package/dist/shared/entities/agent.js +107 -0
  1021. package/dist/shared/entities/agent.js.map +1 -0
  1022. package/dist/shared/entities/base-entity.d.ts +37 -0
  1023. package/dist/shared/entities/base-entity.d.ts.map +1 -0
  1024. package/dist/shared/entities/base-entity.js +56 -0
  1025. package/dist/shared/entities/base-entity.js.map +1 -0
  1026. package/dist/shared/entities/index.d.ts +6 -0
  1027. package/dist/shared/entities/index.d.ts.map +1 -0
  1028. package/dist/shared/entities/index.js +6 -0
  1029. package/dist/shared/entities/index.js.map +1 -0
  1030. package/dist/shared/events/domain-events.d.ts +194 -0
  1031. package/dist/shared/events/domain-events.d.ts.map +1 -0
  1032. package/dist/shared/events/domain-events.js +74 -0
  1033. package/dist/shared/events/domain-events.js.map +1 -0
  1034. package/dist/shared/events/index.d.ts +5 -0
  1035. package/dist/shared/events/index.d.ts.map +1 -0
  1036. package/dist/shared/events/index.js +5 -0
  1037. package/dist/shared/events/index.js.map +1 -0
  1038. package/dist/shared/git/git-analyzer.d.ts +135 -0
  1039. package/dist/shared/git/git-analyzer.d.ts.map +1 -0
  1040. package/dist/shared/git/git-analyzer.js +562 -0
  1041. package/dist/shared/git/git-analyzer.js.map +1 -0
  1042. package/dist/shared/git/index.d.ts +6 -0
  1043. package/dist/shared/git/index.d.ts.map +1 -0
  1044. package/dist/shared/git/index.js +5 -0
  1045. package/dist/shared/git/index.js.map +1 -0
  1046. package/dist/shared/http/http-client.d.ts +92 -0
  1047. package/dist/shared/http/http-client.d.ts.map +1 -0
  1048. package/dist/shared/http/http-client.js +295 -0
  1049. package/dist/shared/http/http-client.js.map +1 -0
  1050. package/dist/shared/http/index.d.ts +5 -0
  1051. package/dist/shared/http/index.d.ts.map +1 -0
  1052. package/dist/shared/http/index.js +5 -0
  1053. package/dist/shared/http/index.js.map +1 -0
  1054. package/dist/shared/index.d.ts +18 -0
  1055. package/dist/shared/index.d.ts.map +1 -0
  1056. package/dist/shared/index.js +17 -0
  1057. package/dist/shared/index.js.map +1 -0
  1058. package/dist/shared/io/file-reader.d.ts +107 -0
  1059. package/dist/shared/io/file-reader.d.ts.map +1 -0
  1060. package/dist/shared/io/file-reader.js +408 -0
  1061. package/dist/shared/io/file-reader.js.map +1 -0
  1062. package/dist/shared/io/index.d.ts +6 -0
  1063. package/dist/shared/io/index.d.ts.map +1 -0
  1064. package/dist/shared/io/index.js +12 -0
  1065. package/dist/shared/io/index.js.map +1 -0
  1066. package/dist/shared/llm/cache.d.ts +163 -0
  1067. package/dist/shared/llm/cache.d.ts.map +1 -0
  1068. package/dist/shared/llm/cache.js +368 -0
  1069. package/dist/shared/llm/cache.js.map +1 -0
  1070. package/dist/shared/llm/circuit-breaker.d.ts +117 -0
  1071. package/dist/shared/llm/circuit-breaker.d.ts.map +1 -0
  1072. package/dist/shared/llm/circuit-breaker.js +294 -0
  1073. package/dist/shared/llm/circuit-breaker.js.map +1 -0
  1074. package/dist/shared/llm/cost-tracker.d.ts +133 -0
  1075. package/dist/shared/llm/cost-tracker.d.ts.map +1 -0
  1076. package/dist/shared/llm/cost-tracker.js +342 -0
  1077. package/dist/shared/llm/cost-tracker.js.map +1 -0
  1078. package/dist/shared/llm/index.d.ts +50 -0
  1079. package/dist/shared/llm/index.d.ts.map +1 -0
  1080. package/dist/shared/llm/index.js +56 -0
  1081. package/dist/shared/llm/index.js.map +1 -0
  1082. package/dist/shared/llm/interfaces.d.ts +503 -0
  1083. package/dist/shared/llm/interfaces.d.ts.map +1 -0
  1084. package/dist/shared/llm/interfaces.js +33 -0
  1085. package/dist/shared/llm/interfaces.js.map +1 -0
  1086. package/dist/shared/llm/provider-manager.d.ts +158 -0
  1087. package/dist/shared/llm/provider-manager.d.ts.map +1 -0
  1088. package/dist/shared/llm/provider-manager.js +527 -0
  1089. package/dist/shared/llm/provider-manager.js.map +1 -0
  1090. package/dist/shared/llm/providers/claude.d.ts +99 -0
  1091. package/dist/shared/llm/providers/claude.d.ts.map +1 -0
  1092. package/dist/shared/llm/providers/claude.js +394 -0
  1093. package/dist/shared/llm/providers/claude.js.map +1 -0
  1094. package/dist/shared/llm/providers/index.d.ts +8 -0
  1095. package/dist/shared/llm/providers/index.d.ts.map +1 -0
  1096. package/dist/shared/llm/providers/index.js +8 -0
  1097. package/dist/shared/llm/providers/index.js.map +1 -0
  1098. package/dist/shared/llm/providers/ollama.d.ts +91 -0
  1099. package/dist/shared/llm/providers/ollama.d.ts.map +1 -0
  1100. package/dist/shared/llm/providers/ollama.js +391 -0
  1101. package/dist/shared/llm/providers/ollama.js.map +1 -0
  1102. package/dist/shared/llm/providers/openai.d.ts +98 -0
  1103. package/dist/shared/llm/providers/openai.d.ts.map +1 -0
  1104. package/dist/shared/llm/providers/openai.js +440 -0
  1105. package/dist/shared/llm/providers/openai.js.map +1 -0
  1106. package/dist/shared/metrics/code-metrics.d.ts +75 -0
  1107. package/dist/shared/metrics/code-metrics.d.ts.map +1 -0
  1108. package/dist/shared/metrics/code-metrics.js +395 -0
  1109. package/dist/shared/metrics/code-metrics.js.map +1 -0
  1110. package/dist/shared/metrics/index.d.ts +9 -0
  1111. package/dist/shared/metrics/index.d.ts.map +1 -0
  1112. package/dist/shared/metrics/index.js +7 -0
  1113. package/dist/shared/metrics/index.js.map +1 -0
  1114. package/dist/shared/metrics/system-metrics.d.ts +109 -0
  1115. package/dist/shared/metrics/system-metrics.d.ts.map +1 -0
  1116. package/dist/shared/metrics/system-metrics.js +267 -0
  1117. package/dist/shared/metrics/system-metrics.js.map +1 -0
  1118. package/dist/shared/parsers/index.d.ts +6 -0
  1119. package/dist/shared/parsers/index.d.ts.map +1 -0
  1120. package/dist/shared/parsers/index.js +6 -0
  1121. package/dist/shared/parsers/index.js.map +1 -0
  1122. package/dist/shared/parsers/typescript-parser.d.ts +211 -0
  1123. package/dist/shared/parsers/typescript-parser.d.ts.map +1 -0
  1124. package/dist/shared/parsers/typescript-parser.js +561 -0
  1125. package/dist/shared/parsers/typescript-parser.js.map +1 -0
  1126. package/dist/shared/security/compliance-patterns.d.ts +78 -0
  1127. package/dist/shared/security/compliance-patterns.d.ts.map +1 -0
  1128. package/dist/shared/security/compliance-patterns.js +543 -0
  1129. package/dist/shared/security/compliance-patterns.js.map +1 -0
  1130. package/dist/shared/security/index.d.ts +8 -0
  1131. package/dist/shared/security/index.d.ts.map +1 -0
  1132. package/dist/shared/security/index.js +6 -0
  1133. package/dist/shared/security/index.js.map +1 -0
  1134. package/dist/shared/security/osv-client.d.ts +191 -0
  1135. package/dist/shared/security/osv-client.d.ts.map +1 -0
  1136. package/dist/shared/security/osv-client.js +256 -0
  1137. package/dist/shared/security/osv-client.js.map +1 -0
  1138. package/dist/shared/types/index.d.ts +66 -0
  1139. package/dist/shared/types/index.d.ts.map +1 -0
  1140. package/dist/shared/types/index.js +25 -0
  1141. package/dist/shared/types/index.js.map +1 -0
  1142. package/dist/shared/value-objects/index.d.ts +73 -0
  1143. package/dist/shared/value-objects/index.d.ts.map +1 -0
  1144. package/dist/shared/value-objects/index.js +229 -0
  1145. package/dist/shared/value-objects/index.js.map +1 -0
  1146. package/dist/strange-loop/healing-controller.d.ts +125 -0
  1147. package/dist/strange-loop/healing-controller.d.ts.map +1 -0
  1148. package/dist/strange-loop/healing-controller.js +648 -0
  1149. package/dist/strange-loop/healing-controller.js.map +1 -0
  1150. package/dist/strange-loop/index.d.ts +26 -0
  1151. package/dist/strange-loop/index.d.ts.map +1 -0
  1152. package/dist/strange-loop/index.js +30 -0
  1153. package/dist/strange-loop/index.js.map +1 -0
  1154. package/dist/strange-loop/self-model.d.ts +84 -0
  1155. package/dist/strange-loop/self-model.d.ts.map +1 -0
  1156. package/dist/strange-loop/self-model.js +378 -0
  1157. package/dist/strange-loop/self-model.js.map +1 -0
  1158. package/dist/strange-loop/strange-loop.d.ts +112 -0
  1159. package/dist/strange-loop/strange-loop.d.ts.map +1 -0
  1160. package/dist/strange-loop/strange-loop.js +354 -0
  1161. package/dist/strange-loop/strange-loop.js.map +1 -0
  1162. package/dist/strange-loop/swarm-observer.d.ts +89 -0
  1163. package/dist/strange-loop/swarm-observer.d.ts.map +1 -0
  1164. package/dist/strange-loop/swarm-observer.js +341 -0
  1165. package/dist/strange-loop/swarm-observer.js.map +1 -0
  1166. package/dist/strange-loop/topology-analyzer.d.ts +87 -0
  1167. package/dist/strange-loop/topology-analyzer.d.ts.map +1 -0
  1168. package/dist/strange-loop/topology-analyzer.js +441 -0
  1169. package/dist/strange-loop/topology-analyzer.js.map +1 -0
  1170. package/dist/strange-loop/types.d.ts +425 -0
  1171. package/dist/strange-loop/types.d.ts.map +1 -0
  1172. package/dist/strange-loop/types.js +22 -0
  1173. package/dist/strange-loop/types.js.map +1 -0
  1174. package/dist/time-crystal/default-phases.d.ts +95 -0
  1175. package/dist/time-crystal/default-phases.d.ts.map +1 -0
  1176. package/dist/time-crystal/default-phases.js +456 -0
  1177. package/dist/time-crystal/default-phases.js.map +1 -0
  1178. package/dist/time-crystal/index.d.ts +28 -0
  1179. package/dist/time-crystal/index.d.ts.map +1 -0
  1180. package/dist/time-crystal/index.js +55 -0
  1181. package/dist/time-crystal/index.js.map +1 -0
  1182. package/dist/time-crystal/oscillator.d.ts +195 -0
  1183. package/dist/time-crystal/oscillator.d.ts.map +1 -0
  1184. package/dist/time-crystal/oscillator.js +358 -0
  1185. package/dist/time-crystal/oscillator.js.map +1 -0
  1186. package/dist/time-crystal/phase-executor.d.ts +212 -0
  1187. package/dist/time-crystal/phase-executor.d.ts.map +1 -0
  1188. package/dist/time-crystal/phase-executor.js +327 -0
  1189. package/dist/time-crystal/phase-executor.js.map +1 -0
  1190. package/dist/time-crystal/scheduler.d.ts +239 -0
  1191. package/dist/time-crystal/scheduler.d.ts.map +1 -0
  1192. package/dist/time-crystal/scheduler.js +860 -0
  1193. package/dist/time-crystal/scheduler.js.map +1 -0
  1194. package/dist/time-crystal/test-runner.d.ts +141 -0
  1195. package/dist/time-crystal/test-runner.d.ts.map +1 -0
  1196. package/dist/time-crystal/test-runner.js +529 -0
  1197. package/dist/time-crystal/test-runner.js.map +1 -0
  1198. package/dist/time-crystal/types.d.ts +269 -0
  1199. package/dist/time-crystal/types.d.ts.map +1 -0
  1200. package/dist/time-crystal/types.js +51 -0
  1201. package/dist/time-crystal/types.js.map +1 -0
  1202. package/dist/workers/base-worker.d.ts +83 -0
  1203. package/dist/workers/base-worker.d.ts.map +1 -0
  1204. package/dist/workers/base-worker.js +235 -0
  1205. package/dist/workers/base-worker.js.map +1 -0
  1206. package/dist/workers/daemon.d.ts +73 -0
  1207. package/dist/workers/daemon.d.ts.map +1 -0
  1208. package/dist/workers/daemon.js +193 -0
  1209. package/dist/workers/daemon.js.map +1 -0
  1210. package/dist/workers/index.d.ts +91 -0
  1211. package/dist/workers/index.d.ts.map +1 -0
  1212. package/dist/workers/index.js +95 -0
  1213. package/dist/workers/index.js.map +1 -0
  1214. package/dist/workers/interfaces.d.ts +270 -0
  1215. package/dist/workers/interfaces.d.ts.map +1 -0
  1216. package/dist/workers/interfaces.js +9 -0
  1217. package/dist/workers/interfaces.js.map +1 -0
  1218. package/dist/workers/worker-manager.d.ts +87 -0
  1219. package/dist/workers/worker-manager.d.ts.map +1 -0
  1220. package/dist/workers/worker-manager.js +345 -0
  1221. package/dist/workers/worker-manager.js.map +1 -0
  1222. package/dist/workers/workers/compliance-checker.d.ts +28 -0
  1223. package/dist/workers/workers/compliance-checker.d.ts.map +1 -0
  1224. package/dist/workers/workers/compliance-checker.js +334 -0
  1225. package/dist/workers/workers/compliance-checker.js.map +1 -0
  1226. package/dist/workers/workers/coverage-tracker.d.ts +24 -0
  1227. package/dist/workers/workers/coverage-tracker.d.ts.map +1 -0
  1228. package/dist/workers/workers/coverage-tracker.js +265 -0
  1229. package/dist/workers/workers/coverage-tracker.js.map +1 -0
  1230. package/dist/workers/workers/defect-predictor.d.ts +22 -0
  1231. package/dist/workers/workers/defect-predictor.d.ts.map +1 -0
  1232. package/dist/workers/workers/defect-predictor.js +292 -0
  1233. package/dist/workers/workers/defect-predictor.js.map +1 -0
  1234. package/dist/workers/workers/flaky-detector.d.ts +25 -0
  1235. package/dist/workers/workers/flaky-detector.d.ts.map +1 -0
  1236. package/dist/workers/workers/flaky-detector.js +288 -0
  1237. package/dist/workers/workers/flaky-detector.js.map +1 -0
  1238. package/dist/workers/workers/index.d.ts +17 -0
  1239. package/dist/workers/workers/index.d.ts.map +1 -0
  1240. package/dist/workers/workers/index.js +17 -0
  1241. package/dist/workers/workers/index.js.map +1 -0
  1242. package/dist/workers/workers/learning-consolidation.d.ts +25 -0
  1243. package/dist/workers/workers/learning-consolidation.d.ts.map +1 -0
  1244. package/dist/workers/workers/learning-consolidation.js +324 -0
  1245. package/dist/workers/workers/learning-consolidation.js.map +1 -0
  1246. package/dist/workers/workers/performance-baseline.d.ts +25 -0
  1247. package/dist/workers/workers/performance-baseline.d.ts.map +1 -0
  1248. package/dist/workers/workers/performance-baseline.js +315 -0
  1249. package/dist/workers/workers/performance-baseline.js.map +1 -0
  1250. package/dist/workers/workers/quality-gate.d.ts +23 -0
  1251. package/dist/workers/workers/quality-gate.d.ts.map +1 -0
  1252. package/dist/workers/workers/quality-gate.js +348 -0
  1253. package/dist/workers/workers/quality-gate.js.map +1 -0
  1254. package/dist/workers/workers/regression-monitor.d.ts +24 -0
  1255. package/dist/workers/workers/regression-monitor.d.ts.map +1 -0
  1256. package/dist/workers/workers/regression-monitor.js +280 -0
  1257. package/dist/workers/workers/regression-monitor.js.map +1 -0
  1258. package/dist/workers/workers/security-scan.d.ts +22 -0
  1259. package/dist/workers/workers/security-scan.d.ts.map +1 -0
  1260. package/dist/workers/workers/security-scan.js +264 -0
  1261. package/dist/workers/workers/security-scan.js.map +1 -0
  1262. package/dist/workers/workers/test-health.d.ts +26 -0
  1263. package/dist/workers/workers/test-health.d.ts.map +1 -0
  1264. package/dist/workers/workers/test-health.js +258 -0
  1265. package/dist/workers/workers/test-health.js.map +1 -0
  1266. package/docs/analysis/V3-INIT-REQUIREMENTS-ANALYSIS.md +352 -0
  1267. package/implementation/README.md +90 -0
  1268. package/implementation/adrs/ADR-030-coherence-gated-quality-gates.md +312 -0
  1269. package/implementation/adrs/ADR-031-strange-loop-self-awareness.md +484 -0
  1270. package/implementation/adrs/ADR-032-time-crystal-scheduling.md +530 -0
  1271. package/implementation/adrs/ADR-033-early-exit-testing.md +634 -0
  1272. package/implementation/adrs/ADR-034-neural-topology-optimizer.md +589 -0
  1273. package/implementation/adrs/ADR-035-causal-discovery.md +610 -0
  1274. package/implementation/adrs/ADR-036-result-persistence.md +326 -0
  1275. package/implementation/adrs/ADR-037-v3-qe-agent-naming.md +105 -0
  1276. package/implementation/adrs/ADR-038-v3-qe-memory-unification.md +154 -0
  1277. package/implementation/adrs/ADR-039-v3-qe-mcp-optimization.md +179 -0
  1278. package/implementation/adrs/ADR-040-v3-qe-agentic-flow-integration.md +240 -0
  1279. package/implementation/adrs/ADR-041-v3-qe-cli-enhancement.md +296 -0
  1280. package/implementation/adrs/ADR-042-v3-qe-token-tracking-integration.md +517 -0
  1281. package/implementation/adrs/v3-adrs.md +2783 -0
  1282. package/implementation/planning/AQE-V3-MASTER-PLAN.md +815 -0
  1283. package/package.json +88 -0
  1284. package/security-scan-report-2026-01-11.md +410 -0
  1285. package/security-verification-report-2026-01-11.md +278 -0
  1286. package/src/benchmarks/performance-benchmarks.ts +646 -0
  1287. package/src/benchmarks/run-benchmarks.ts +324 -0
  1288. package/src/causal-discovery/causal-graph.ts +450 -0
  1289. package/src/causal-discovery/discovery-engine.ts +438 -0
  1290. package/src/causal-discovery/index.ts +117 -0
  1291. package/src/causal-discovery/types.ts +456 -0
  1292. package/src/causal-discovery/weight-matrix.ts +453 -0
  1293. package/src/cli/commands/qe-tools.ts +634 -0
  1294. package/src/cli/index.ts +1976 -0
  1295. package/src/compatibility/agent-mapper.ts +291 -0
  1296. package/src/compatibility/cli-adapter.ts +277 -0
  1297. package/src/compatibility/config-migrator.ts +334 -0
  1298. package/src/compatibility/index.ts +112 -0
  1299. package/src/compatibility/mcp-adapter.ts +248 -0
  1300. package/src/compatibility/types.ts +156 -0
  1301. package/src/coordination/claims/claim-repository.ts +636 -0
  1302. package/src/coordination/claims/claim-service.ts +675 -0
  1303. package/src/coordination/claims/handoff-manager.ts +535 -0
  1304. package/src/coordination/claims/index.ts +276 -0
  1305. package/src/coordination/claims/interfaces.ts +687 -0
  1306. package/src/coordination/claims/work-stealing.ts +436 -0
  1307. package/src/coordination/cross-domain-router.ts +492 -0
  1308. package/src/coordination/index.ts +127 -0
  1309. package/src/coordination/interfaces.ts +691 -0
  1310. package/src/coordination/protocol-executor.ts +760 -0
  1311. package/src/coordination/protocols/code-intelligence-index.ts +855 -0
  1312. package/src/coordination/protocols/defect-investigation.ts +1184 -0
  1313. package/src/coordination/protocols/index.ts +11 -0
  1314. package/src/coordination/protocols/learning-consolidation.ts +1181 -0
  1315. package/src/coordination/protocols/morning-sync.ts +1055 -0
  1316. package/src/coordination/protocols/quality-gate.ts +1566 -0
  1317. package/src/coordination/protocols/security-audit.ts +1587 -0
  1318. package/src/coordination/queen-coordinator.ts +1176 -0
  1319. package/src/coordination/result-saver.ts +780 -0
  1320. package/src/coordination/task-executor.ts +1146 -0
  1321. package/src/coordination/workflow-orchestrator.ts +1917 -0
  1322. package/src/domains/chaos-resilience/coordinator.ts +1032 -0
  1323. package/src/domains/chaos-resilience/index.ts +143 -0
  1324. package/src/domains/chaos-resilience/interfaces.ts +659 -0
  1325. package/src/domains/chaos-resilience/plugin.ts +691 -0
  1326. package/src/domains/chaos-resilience/services/chaos-engineer.ts +1097 -0
  1327. package/src/domains/chaos-resilience/services/index.ts +19 -0
  1328. package/src/domains/chaos-resilience/services/load-tester.ts +799 -0
  1329. package/src/domains/chaos-resilience/services/performance-profiler.ts +792 -0
  1330. package/src/domains/code-intelligence/coordinator.ts +631 -0
  1331. package/src/domains/code-intelligence/index.ts +86 -0
  1332. package/src/domains/code-intelligence/interfaces.ts +162 -0
  1333. package/src/domains/code-intelligence/plugin.ts +451 -0
  1334. package/src/domains/code-intelligence/services/impact-analyzer.ts +567 -0
  1335. package/src/domains/code-intelligence/services/index.ts +26 -0
  1336. package/src/domains/code-intelligence/services/knowledge-graph.ts +1067 -0
  1337. package/src/domains/code-intelligence/services/semantic-analyzer.ts +901 -0
  1338. package/src/domains/contract-testing/coordinator.ts +1038 -0
  1339. package/src/domains/contract-testing/index.ts +122 -0
  1340. package/src/domains/contract-testing/interfaces.ts +458 -0
  1341. package/src/domains/contract-testing/plugin.ts +746 -0
  1342. package/src/domains/contract-testing/services/api-compatibility.ts +748 -0
  1343. package/src/domains/contract-testing/services/contract-validator.ts +1700 -0
  1344. package/src/domains/contract-testing/services/index.ts +19 -0
  1345. package/src/domains/contract-testing/services/schema-validator.ts +1102 -0
  1346. package/src/domains/coverage-analysis/coordinator.ts +485 -0
  1347. package/src/domains/coverage-analysis/index.ts +114 -0
  1348. package/src/domains/coverage-analysis/interfaces.ts +142 -0
  1349. package/src/domains/coverage-analysis/plugin.ts +172 -0
  1350. package/src/domains/coverage-analysis/services/coverage-analyzer.ts +449 -0
  1351. package/src/domains/coverage-analysis/services/coverage-embedder.ts +733 -0
  1352. package/src/domains/coverage-analysis/services/coverage-parser.ts +753 -0
  1353. package/src/domains/coverage-analysis/services/gap-detector.ts +592 -0
  1354. package/src/domains/coverage-analysis/services/hnsw-index.ts +728 -0
  1355. package/src/domains/coverage-analysis/services/index.ts +61 -0
  1356. package/src/domains/coverage-analysis/services/risk-scorer.ts +540 -0
  1357. package/src/domains/coverage-analysis/services/sublinear-analyzer.ts +747 -0
  1358. package/src/domains/defect-intelligence/coordinator.ts +635 -0
  1359. package/src/domains/defect-intelligence/index.ts +83 -0
  1360. package/src/domains/defect-intelligence/interfaces.ts +152 -0
  1361. package/src/domains/defect-intelligence/plugin.ts +483 -0
  1362. package/src/domains/defect-intelligence/services/causal-root-cause-analyzer.ts +494 -0
  1363. package/src/domains/defect-intelligence/services/defect-predictor.ts +852 -0
  1364. package/src/domains/defect-intelligence/services/index.ts +37 -0
  1365. package/src/domains/defect-intelligence/services/pattern-learner.ts +738 -0
  1366. package/src/domains/defect-intelligence/services/root-cause-analyzer.ts +637 -0
  1367. package/src/domains/domain-interface.ts +77 -0
  1368. package/src/domains/index.ts +23 -0
  1369. package/src/domains/learning-optimization/coordinator.ts +1215 -0
  1370. package/src/domains/learning-optimization/index.ts +127 -0
  1371. package/src/domains/learning-optimization/interfaces.ts +570 -0
  1372. package/src/domains/learning-optimization/plugin.ts +851 -0
  1373. package/src/domains/learning-optimization/services/index.ts +29 -0
  1374. package/src/domains/learning-optimization/services/learning-coordinator.ts +972 -0
  1375. package/src/domains/learning-optimization/services/metrics-optimizer.ts +915 -0
  1376. package/src/domains/learning-optimization/services/production-intel.ts +971 -0
  1377. package/src/domains/learning-optimization/services/transfer-specialist.ts +723 -0
  1378. package/src/domains/quality-assessment/coherence/gate-controller.ts +549 -0
  1379. package/src/domains/quality-assessment/coherence/index.ts +211 -0
  1380. package/src/domains/quality-assessment/coherence/lambda-calculator.ts +384 -0
  1381. package/src/domains/quality-assessment/coherence/partition-detector.ts +469 -0
  1382. package/src/domains/quality-assessment/coherence/types.ts +384 -0
  1383. package/src/domains/quality-assessment/coordinator.ts +605 -0
  1384. package/src/domains/quality-assessment/index.ts +97 -0
  1385. package/src/domains/quality-assessment/interfaces.ts +152 -0
  1386. package/src/domains/quality-assessment/plugin.ts +496 -0
  1387. package/src/domains/quality-assessment/services/coherence-gate.ts +358 -0
  1388. package/src/domains/quality-assessment/services/deployment-advisor.ts +571 -0
  1389. package/src/domains/quality-assessment/services/index.ts +34 -0
  1390. package/src/domains/quality-assessment/services/quality-analyzer.ts +670 -0
  1391. package/src/domains/quality-assessment/services/quality-gate.ts +384 -0
  1392. package/src/domains/requirements-validation/coordinator.ts +812 -0
  1393. package/src/domains/requirements-validation/index.ts +92 -0
  1394. package/src/domains/requirements-validation/interfaces.ts +303 -0
  1395. package/src/domains/requirements-validation/plugin.ts +576 -0
  1396. package/src/domains/requirements-validation/services/bdd-scenario-writer.ts +676 -0
  1397. package/src/domains/requirements-validation/services/index.ts +20 -0
  1398. package/src/domains/requirements-validation/services/requirements-validator.ts +559 -0
  1399. package/src/domains/requirements-validation/services/testability-scorer.ts +639 -0
  1400. package/src/domains/security-compliance/coordinator.ts +757 -0
  1401. package/src/domains/security-compliance/index.ts +120 -0
  1402. package/src/domains/security-compliance/interfaces.ts +434 -0
  1403. package/src/domains/security-compliance/plugin.ts +509 -0
  1404. package/src/domains/security-compliance/services/compliance-validator.ts +1226 -0
  1405. package/src/domains/security-compliance/services/index.ts +31 -0
  1406. package/src/domains/security-compliance/services/security-auditor.ts +2227 -0
  1407. package/src/domains/security-compliance/services/security-scanner.ts +2354 -0
  1408. package/src/domains/security-compliance/services/semgrep-integration.ts +289 -0
  1409. package/src/domains/test-execution/coordinator.ts +426 -0
  1410. package/src/domains/test-execution/index.ts +76 -0
  1411. package/src/domains/test-execution/interfaces.ts +119 -0
  1412. package/src/domains/test-execution/plugin.ts +208 -0
  1413. package/src/domains/test-execution/services/flaky-detector.ts +1240 -0
  1414. package/src/domains/test-execution/services/index.ts +8 -0
  1415. package/src/domains/test-execution/services/retry-handler.ts +820 -0
  1416. package/src/domains/test-execution/services/test-executor.ts +885 -0
  1417. package/src/domains/test-generation/coordinator.ts +656 -0
  1418. package/src/domains/test-generation/index.ts +77 -0
  1419. package/src/domains/test-generation/interfaces.ts +118 -0
  1420. package/src/domains/test-generation/plugin.ts +397 -0
  1421. package/src/domains/test-generation/services/index.ts +23 -0
  1422. package/src/domains/test-generation/services/pattern-matcher.ts +1725 -0
  1423. package/src/domains/test-generation/services/test-generator.ts +2750 -0
  1424. package/src/domains/visual-accessibility/coordinator.ts +860 -0
  1425. package/src/domains/visual-accessibility/index.ts +116 -0
  1426. package/src/domains/visual-accessibility/interfaces.ts +435 -0
  1427. package/src/domains/visual-accessibility/plugin.ts +568 -0
  1428. package/src/domains/visual-accessibility/services/accessibility-tester.ts +982 -0
  1429. package/src/domains/visual-accessibility/services/axe-core-audit.ts +630 -0
  1430. package/src/domains/visual-accessibility/services/index.ts +28 -0
  1431. package/src/domains/visual-accessibility/services/responsive-tester.ts +934 -0
  1432. package/src/domains/visual-accessibility/services/visual-tester.ts +458 -0
  1433. package/src/early-exit/early-exit-controller.ts +490 -0
  1434. package/src/early-exit/early-exit-decision.ts +391 -0
  1435. package/src/early-exit/index.ts +115 -0
  1436. package/src/early-exit/quality-signal.ts +389 -0
  1437. package/src/early-exit/speculative-executor.ts +505 -0
  1438. package/src/early-exit/types.ts +407 -0
  1439. package/src/feedback/coverage-learner.ts +456 -0
  1440. package/src/feedback/feedback-loop.ts +426 -0
  1441. package/src/feedback/index.ts +72 -0
  1442. package/src/feedback/pattern-promotion.ts +373 -0
  1443. package/src/feedback/quality-score-calculator.ts +334 -0
  1444. package/src/feedback/test-outcome-tracker.ts +450 -0
  1445. package/src/feedback/types.ts +497 -0
  1446. package/src/index.ts +224 -0
  1447. package/src/init/agents-installer.ts +536 -0
  1448. package/src/init/index.ts +80 -0
  1449. package/src/init/init-wizard.ts +1061 -0
  1450. package/src/init/project-analyzer.ts +696 -0
  1451. package/src/init/self-configurator.ts +488 -0
  1452. package/src/init/skills-installer.ts +467 -0
  1453. package/src/init/types.ts +432 -0
  1454. package/src/integrations/ruvector/ast-complexity.ts +470 -0
  1455. package/src/integrations/ruvector/coverage-router.ts +594 -0
  1456. package/src/integrations/ruvector/diff-risk-classifier.ts +759 -0
  1457. package/src/integrations/ruvector/fallback.ts +942 -0
  1458. package/src/integrations/ruvector/graph-boundaries.ts +809 -0
  1459. package/src/integrations/ruvector/index.ts +363 -0
  1460. package/src/integrations/ruvector/interfaces.ts +609 -0
  1461. package/src/integrations/ruvector/q-learning-router.ts +550 -0
  1462. package/src/kernel/agent-coordinator.ts +165 -0
  1463. package/src/kernel/agentdb-backend.ts +504 -0
  1464. package/src/kernel/event-bus.ts +129 -0
  1465. package/src/kernel/hybrid-backend.ts +538 -0
  1466. package/src/kernel/index.ts +28 -0
  1467. package/src/kernel/interfaces.ts +257 -0
  1468. package/src/kernel/kernel.ts +285 -0
  1469. package/src/kernel/memory-backend.ts +169 -0
  1470. package/src/kernel/memory-factory.ts +293 -0
  1471. package/src/kernel/plugin-loader.ts +179 -0
  1472. package/src/learning/index.ts +219 -0
  1473. package/src/learning/pattern-store.ts +990 -0
  1474. package/src/learning/qe-guidance.ts +832 -0
  1475. package/src/learning/qe-hooks.ts +644 -0
  1476. package/src/learning/qe-patterns.ts +449 -0
  1477. package/src/learning/qe-reasoning-bank.ts +951 -0
  1478. package/src/learning/real-embeddings.ts +277 -0
  1479. package/src/learning/real-qe-reasoning-bank.ts +833 -0
  1480. package/src/learning/sqlite-persistence.ts +554 -0
  1481. package/src/mcp/entry.ts +59 -0
  1482. package/src/mcp/handlers/agent-handlers.ts +285 -0
  1483. package/src/mcp/handlers/core-handlers.ts +317 -0
  1484. package/src/mcp/handlers/domain-handlers.ts +1444 -0
  1485. package/src/mcp/handlers/index.ts +57 -0
  1486. package/src/mcp/handlers/memory-handlers.ts +338 -0
  1487. package/src/mcp/handlers/task-handlers.ts +363 -0
  1488. package/src/mcp/index.ts +30 -0
  1489. package/src/mcp/metrics/index.ts +14 -0
  1490. package/src/mcp/metrics/metrics-collector.ts +503 -0
  1491. package/src/mcp/protocol-server.ts +752 -0
  1492. package/src/mcp/security/cve-prevention.ts +742 -0
  1493. package/src/mcp/security/index.ts +356 -0
  1494. package/src/mcp/security/oauth21-provider.ts +821 -0
  1495. package/src/mcp/security/rate-limiter.ts +615 -0
  1496. package/src/mcp/security/sampling-server.ts +662 -0
  1497. package/src/mcp/security/schema-validator.ts +855 -0
  1498. package/src/mcp/server.ts +657 -0
  1499. package/src/mcp/tool-registry.ts +391 -0
  1500. package/src/mcp/tools/base.ts +399 -0
  1501. package/src/mcp/tools/chaos-resilience/inject.ts +699 -0
  1502. package/src/mcp/tools/code-intelligence/analyze.ts +745 -0
  1503. package/src/mcp/tools/contract-testing/validate.ts +708 -0
  1504. package/src/mcp/tools/coverage-analysis/index.ts +770 -0
  1505. package/src/mcp/tools/defect-intelligence/predict.ts +466 -0
  1506. package/src/mcp/tools/index.ts +214 -0
  1507. package/src/mcp/tools/learning-optimization/optimize.ts +772 -0
  1508. package/src/mcp/tools/quality-assessment/evaluate.ts +385 -0
  1509. package/src/mcp/tools/registry.ts +248 -0
  1510. package/src/mcp/tools/requirements-validation/validate.ts +394 -0
  1511. package/src/mcp/tools/security-compliance/scan.ts +365 -0
  1512. package/src/mcp/tools/test-execution/execute.ts +291 -0
  1513. package/src/mcp/tools/test-generation/generate.ts +544 -0
  1514. package/src/mcp/tools/visual-accessibility/index.ts +791 -0
  1515. package/src/mcp/transport/index.ts +31 -0
  1516. package/src/mcp/transport/stdio.ts +318 -0
  1517. package/src/mcp/types.ts +543 -0
  1518. package/src/neural-optimizer/index.ts +111 -0
  1519. package/src/neural-optimizer/replay-buffer.ts +455 -0
  1520. package/src/neural-optimizer/swarm-topology.ts +508 -0
  1521. package/src/neural-optimizer/topology-optimizer.ts +828 -0
  1522. package/src/neural-optimizer/types.ts +481 -0
  1523. package/src/neural-optimizer/value-network.ts +351 -0
  1524. package/src/optimization/auto-tuner.ts +817 -0
  1525. package/src/optimization/index.ts +77 -0
  1526. package/src/optimization/metric-collectors.ts +474 -0
  1527. package/src/optimization/qe-workers.ts +704 -0
  1528. package/src/optimization/tuning-algorithm.ts +401 -0
  1529. package/src/optimization/types.ts +314 -0
  1530. package/src/routing/index.ts +51 -0
  1531. package/src/routing/qe-agent-registry.ts +963 -0
  1532. package/src/routing/qe-task-router.ts +564 -0
  1533. package/src/routing/routing-feedback.ts +365 -0
  1534. package/src/routing/types.ts +406 -0
  1535. package/src/shared/embeddings/embedding-cache.ts +157 -0
  1536. package/src/shared/embeddings/index.ts +50 -0
  1537. package/src/shared/embeddings/nomic-embedder.ts +404 -0
  1538. package/src/shared/embeddings/ollama-client.ts +195 -0
  1539. package/src/shared/embeddings/types.ts +147 -0
  1540. package/src/shared/entities/agent.ts +141 -0
  1541. package/src/shared/entities/base-entity.ts +79 -0
  1542. package/src/shared/entities/index.ts +6 -0
  1543. package/src/shared/events/domain-events.ts +259 -0
  1544. package/src/shared/events/index.ts +5 -0
  1545. package/src/shared/git/git-analyzer.ts +656 -0
  1546. package/src/shared/git/index.ts +11 -0
  1547. package/src/shared/http/http-client.ts +420 -0
  1548. package/src/shared/http/index.ts +13 -0
  1549. package/src/shared/index.ts +41 -0
  1550. package/src/shared/io/file-reader.ts +525 -0
  1551. package/src/shared/io/index.ts +25 -0
  1552. package/src/shared/llm/cache.ts +473 -0
  1553. package/src/shared/llm/circuit-breaker.ts +369 -0
  1554. package/src/shared/llm/cost-tracker.ts +460 -0
  1555. package/src/shared/llm/index.ts +140 -0
  1556. package/src/shared/llm/interfaces.ts +629 -0
  1557. package/src/shared/llm/provider-manager.ts +685 -0
  1558. package/src/shared/llm/providers/claude.ts +524 -0
  1559. package/src/shared/llm/providers/index.ts +8 -0
  1560. package/src/shared/llm/providers/ollama.ts +575 -0
  1561. package/src/shared/llm/providers/openai.ts +609 -0
  1562. package/src/shared/metrics/code-metrics.ts +520 -0
  1563. package/src/shared/metrics/index.ts +23 -0
  1564. package/src/shared/metrics/system-metrics.ts +353 -0
  1565. package/src/shared/parsers/index.ts +6 -0
  1566. package/src/shared/parsers/typescript-parser.ts +841 -0
  1567. package/src/shared/security/compliance-patterns.ts +666 -0
  1568. package/src/shared/security/index.ts +30 -0
  1569. package/src/shared/security/osv-client.ts +468 -0
  1570. package/src/shared/types/index.ts +150 -0
  1571. package/src/shared/value-objects/index.ts +273 -0
  1572. package/src/strange-loop/healing-controller.ts +833 -0
  1573. package/src/strange-loop/index.ts +104 -0
  1574. package/src/strange-loop/self-model.ts +494 -0
  1575. package/src/strange-loop/strange-loop.ts +446 -0
  1576. package/src/strange-loop/swarm-observer.ts +448 -0
  1577. package/src/strange-loop/topology-analyzer.ts +565 -0
  1578. package/src/strange-loop/types.ts +640 -0
  1579. package/src/time-crystal/default-phases.ts +520 -0
  1580. package/src/time-crystal/index.ts +164 -0
  1581. package/src/time-crystal/oscillator.ts +425 -0
  1582. package/src/time-crystal/phase-executor.ts +521 -0
  1583. package/src/time-crystal/scheduler.ts +1025 -0
  1584. package/src/time-crystal/test-runner.ts +787 -0
  1585. package/src/time-crystal/types.ts +421 -0
  1586. package/src/workers/base-worker.ts +304 -0
  1587. package/src/workers/daemon.ts +264 -0
  1588. package/src/workers/index.ts +119 -0
  1589. package/src/workers/interfaces.ts +393 -0
  1590. package/src/workers/worker-manager.ts +424 -0
  1591. package/src/workers/workers/compliance-checker.ts +445 -0
  1592. package/src/workers/workers/coverage-tracker.ts +344 -0
  1593. package/src/workers/workers/defect-predictor.ts +375 -0
  1594. package/src/workers/workers/flaky-detector.ts +390 -0
  1595. package/src/workers/workers/index.ts +17 -0
  1596. package/src/workers/workers/learning-consolidation.ts +442 -0
  1597. package/src/workers/workers/performance-baseline.ts +434 -0
  1598. package/src/workers/workers/quality-gate.ts +419 -0
  1599. package/src/workers/workers/regression-monitor.ts +357 -0
  1600. package/src/workers/workers/security-scan.ts +349 -0
  1601. package/src/workers/workers/test-health.ts +359 -0
  1602. package/tests/integration/code-intelligence/knowledge-graph-real.test.ts +540 -0
  1603. package/tests/integration/coordination/cross-domain-router.test.ts +403 -0
  1604. package/tests/integration/coordination/protocol-executor.test.ts +454 -0
  1605. package/tests/integration/coordination/workflow-orchestrator.test.ts +418 -0
  1606. package/tests/integration/feedback/feedback-loop-integration.test.ts +560 -0
  1607. package/tests/integration/migration/v2-to-v3-migration.test.ts +471 -0
  1608. package/tests/integration/parsers/typescript-parser.test.ts +463 -0
  1609. package/tests/integration/security/vulnerability-detection.test.ts +628 -0
  1610. package/tests/integration/test-execution/coordinator.test.ts +410 -0
  1611. package/tests/integration/test-generation/coordinator.test.ts +361 -0
  1612. package/tests/mocks/index.ts +228 -0
  1613. package/tests/time-crystal/default-phases.test.ts +476 -0
  1614. package/tests/time-crystal/oscillator.test.ts +541 -0
  1615. package/tests/time-crystal/phase-executor.test.ts +653 -0
  1616. package/tests/time-crystal/scheduler.test.ts +626 -0
  1617. package/tests/time-crystal/test-runner.test.ts +594 -0
  1618. package/tests/unit/causal-discovery/causal-graph.test.ts +504 -0
  1619. package/tests/unit/causal-discovery/causal-root-cause-analyzer.test.ts +347 -0
  1620. package/tests/unit/causal-discovery/discovery-engine.test.ts +435 -0
  1621. package/tests/unit/causal-discovery/weight-matrix.test.ts +328 -0
  1622. package/tests/unit/cli/cli.test.ts +341 -0
  1623. package/tests/unit/cli/commands.test.ts +414 -0
  1624. package/tests/unit/cli/init-command.test.ts +274 -0
  1625. package/tests/unit/cli/migrate-command.test.ts +396 -0
  1626. package/tests/unit/coordination/claims/claim-service.test.ts +949 -0
  1627. package/tests/unit/coordination/claims/handoff-manager.test.ts +773 -0
  1628. package/tests/unit/coordination/claims/work-stealing.test.ts +492 -0
  1629. package/tests/unit/coordination/queen-coordinator.test.ts +966 -0
  1630. package/tests/unit/coordination/result-saver.test.ts +653 -0
  1631. package/tests/unit/coordination/task-executor.test.ts +810 -0
  1632. package/tests/unit/domains/chaos-resilience/chaos-engineer.test.ts +484 -0
  1633. package/tests/unit/domains/chaos-resilience/load-tester.test.ts +559 -0
  1634. package/tests/unit/domains/chaos-resilience/performance-profiler.test.ts +490 -0
  1635. package/tests/unit/domains/code-intelligence/impact-analyzer.test.ts +560 -0
  1636. package/tests/unit/domains/code-intelligence/knowledge-graph.test.ts +460 -0
  1637. package/tests/unit/domains/code-intelligence/semantic-analyzer.test.ts +584 -0
  1638. package/tests/unit/domains/contract-testing/api-compatibility.test.ts +483 -0
  1639. package/tests/unit/domains/contract-testing/contract-validator.test.ts +370 -0
  1640. package/tests/unit/domains/contract-testing/schema-validator.test.ts +610 -0
  1641. package/tests/unit/domains/coverage-analysis/coverage-embedder.test.ts +298 -0
  1642. package/tests/unit/domains/coverage-analysis/hnsw-index.test.ts +292 -0
  1643. package/tests/unit/domains/coverage-analysis/sublinear-analyzer.test.ts +506 -0
  1644. package/tests/unit/domains/defect-intelligence/defect-predictor.test.ts +370 -0
  1645. package/tests/unit/domains/defect-intelligence/pattern-learner.test.ts +546 -0
  1646. package/tests/unit/domains/defect-intelligence/root-cause-analyzer.test.ts +534 -0
  1647. package/tests/unit/domains/learning-optimization/learning-coordinator.test.ts +541 -0
  1648. package/tests/unit/domains/learning-optimization/metrics-optimizer.test.ts +552 -0
  1649. package/tests/unit/domains/learning-optimization/production-intel.test.ts +589 -0
  1650. package/tests/unit/domains/learning-optimization/transfer-specialist.test.ts +453 -0
  1651. package/tests/unit/domains/quality-assessment/coherence-gate.test.ts +1006 -0
  1652. package/tests/unit/domains/quality-assessment/deployment-advisor.test.ts +515 -0
  1653. package/tests/unit/domains/quality-assessment/quality-analyzer.test.ts +401 -0
  1654. package/tests/unit/domains/quality-assessment/quality-gate.test.ts +324 -0
  1655. package/tests/unit/domains/requirements-validation/bdd-scenario-writer.test.ts +479 -0
  1656. package/tests/unit/domains/requirements-validation/requirements-validator.test.ts +452 -0
  1657. package/tests/unit/domains/requirements-validation/testability-scorer.test.ts +505 -0
  1658. package/tests/unit/domains/security-compliance/compliance-validator.test.ts +500 -0
  1659. package/tests/unit/domains/security-compliance/security-auditor.test.ts +498 -0
  1660. package/tests/unit/domains/security-compliance/security-scanner.test.ts +412 -0
  1661. package/tests/unit/domains/visual-accessibility/accessibility-tester.test.ts +432 -0
  1662. package/tests/unit/domains/visual-accessibility/responsive-tester.test.ts +506 -0
  1663. package/tests/unit/domains/visual-accessibility/visual-tester.test.ts +412 -0
  1664. package/tests/unit/early-exit/early-exit-controller.test.ts +548 -0
  1665. package/tests/unit/early-exit/early-exit-decision.test.ts +617 -0
  1666. package/tests/unit/early-exit/index.test.ts +254 -0
  1667. package/tests/unit/early-exit/quality-signal.test.ts +589 -0
  1668. package/tests/unit/early-exit/speculative-executor.test.ts +453 -0
  1669. package/tests/unit/feedback/coverage-learner.test.ts +288 -0
  1670. package/tests/unit/feedback/feedback-loop.test.ts +458 -0
  1671. package/tests/unit/feedback/pattern-promotion.test.ts +390 -0
  1672. package/tests/unit/feedback/quality-score-calculator.test.ts +364 -0
  1673. package/tests/unit/feedback/test-outcome-tracker.test.ts +243 -0
  1674. package/tests/unit/init/init-wizard.test.ts +881 -0
  1675. package/tests/unit/init/project-analyzer.test.ts +807 -0
  1676. package/tests/unit/init/self-configurator.test.ts +493 -0
  1677. package/tests/unit/integrations/ruvector/ast-complexity.test.ts +240 -0
  1678. package/tests/unit/integrations/ruvector/coverage-router.test.ts +366 -0
  1679. package/tests/unit/integrations/ruvector/diff-risk-classifier.test.ts +340 -0
  1680. package/tests/unit/integrations/ruvector/graph-boundaries.test.ts +355 -0
  1681. package/tests/unit/integrations/ruvector/q-learning-router.test.ts +314 -0
  1682. package/tests/unit/kernel/agent-coordinator.test.ts +220 -0
  1683. package/tests/unit/kernel/event-bus.test.ts +197 -0
  1684. package/tests/unit/learning/qe-reasoning-bank.test.ts +666 -0
  1685. package/tests/unit/learning/real-qe-reasoning-bank.benchmark.test.ts +415 -0
  1686. package/tests/unit/mcp/mcp-server.test.ts +544 -0
  1687. package/tests/unit/mcp/metrics/metrics-collector.test.ts +340 -0
  1688. package/tests/unit/mcp/security/cve-prevention.test.ts +512 -0
  1689. package/tests/unit/mcp/security/oauth21-provider.test.ts +624 -0
  1690. package/tests/unit/mcp/security/rate-limiter.test.ts +410 -0
  1691. package/tests/unit/mcp/security/sampling-server.test.ts +420 -0
  1692. package/tests/unit/mcp/security/schema-validator.test.ts +494 -0
  1693. package/tests/unit/mcp/tools/base.test.ts +336 -0
  1694. package/tests/unit/mcp/tools/domain-tools.test.ts +759 -0
  1695. package/tests/unit/mcp/tools/registry.test.ts +240 -0
  1696. package/tests/unit/neural-optimizer/replay-buffer.test.ts +403 -0
  1697. package/tests/unit/neural-optimizer/swarm-topology.test.ts +473 -0
  1698. package/tests/unit/neural-optimizer/topology-optimizer.test.ts +595 -0
  1699. package/tests/unit/neural-optimizer/value-network.test.ts +343 -0
  1700. package/tests/unit/optimization/auto-tuner.test.ts +506 -0
  1701. package/tests/unit/optimization/metric-collectors.test.ts +352 -0
  1702. package/tests/unit/optimization/qe-workers.test.ts +407 -0
  1703. package/tests/unit/optimization/tuning-algorithm.test.ts +467 -0
  1704. package/tests/unit/routing/qe-agent-registry.test.ts +229 -0
  1705. package/tests/unit/routing/qe-task-router.test.ts +390 -0
  1706. package/tests/unit/routing/routing-feedback.test.ts +339 -0
  1707. package/tests/unit/shared/embeddings/nomic-embedder.test.ts +419 -0
  1708. package/tests/unit/shared/http/http-client.test.ts +719 -0
  1709. package/tests/unit/shared/io/file-reader.test.ts +511 -0
  1710. package/tests/unit/shared/llm/cache.test.ts +391 -0
  1711. package/tests/unit/shared/llm/circuit-breaker.test.ts +293 -0
  1712. package/tests/unit/shared/llm/cost-tracker.test.ts +431 -0
  1713. package/tests/unit/shared/llm/provider-manager.test.ts +550 -0
  1714. package/tests/unit/shared/llm/providers.test.ts +532 -0
  1715. package/tests/unit/shared/parsers/typescript-parser.test.ts +693 -0
  1716. package/tests/unit/shared/value-objects.test.ts +184 -0
  1717. package/tests/unit/strange-loop/strange-loop.test.ts +1170 -0
  1718. package/tests/unit/workers/base-worker.test.ts +341 -0
  1719. package/tests/unit/workers/daemon.test.ts +291 -0
  1720. package/tests/unit/workers/worker-manager.test.ts +284 -0
  1721. package/tsconfig.json +32 -0
  1722. package/vitest.config.ts +27 -0
@@ -0,0 +1,2227 @@
1
+ /**
2
+ * Agentic QE v3 - Security Auditor Service
3
+ * Provides comprehensive security audit functionality
4
+ */
5
+
6
+ import { v4 as uuidv4 } from 'uuid';
7
+ import * as fs from 'fs/promises';
8
+ import * as path from 'path';
9
+ import { Result, ok, err } from '../../../shared/types/index.js';
10
+ import type { MemoryBackend } from '../../../kernel/interfaces.js';
11
+ import type { FilePath, RiskScore } from '../../../shared/value-objects/index.js';
12
+
13
+ // ============================================================================
14
+ // Package.json Types
15
+ // ============================================================================
16
+
17
+ interface PackageJson {
18
+ name?: string;
19
+ version?: string;
20
+ dependencies?: Record<string, string>;
21
+ devDependencies?: Record<string, string>;
22
+ peerDependencies?: Record<string, string>;
23
+ optionalDependencies?: Record<string, string>;
24
+ }
25
+
26
+ // ============================================================================
27
+ // OSV (Open Source Vulnerabilities) API Types
28
+ // ============================================================================
29
+
30
+ interface OSVQueryRequest {
31
+ package: {
32
+ name: string;
33
+ ecosystem: string;
34
+ };
35
+ version: string;
36
+ }
37
+
38
+ interface OSVVulnerability {
39
+ id: string;
40
+ summary?: string;
41
+ details?: string;
42
+ aliases?: string[];
43
+ severity?: Array<{
44
+ type: string;
45
+ score: string;
46
+ }>;
47
+ affected?: Array<{
48
+ package?: {
49
+ name: string;
50
+ ecosystem: string;
51
+ };
52
+ ranges?: Array<{
53
+ type: string;
54
+ events?: Array<{
55
+ introduced?: string;
56
+ fixed?: string;
57
+ }>;
58
+ }>;
59
+ versions?: string[];
60
+ }>;
61
+ references?: Array<{
62
+ type: string;
63
+ url: string;
64
+ }>;
65
+ }
66
+
67
+ interface OSVQueryResponse {
68
+ vulns?: OSVVulnerability[];
69
+ }
70
+
71
+ // ============================================================================
72
+ // HTTP Client for API calls
73
+ // ============================================================================
74
+
75
+ interface HttpResponse<T> {
76
+ ok: boolean;
77
+ status: number;
78
+ data: T;
79
+ }
80
+
81
+ async function httpPost<T, R>(url: string, body: T): Promise<HttpResponse<R>> {
82
+ const response = await fetch(url, {
83
+ method: 'POST',
84
+ headers: {
85
+ 'Content-Type': 'application/json',
86
+ },
87
+ body: JSON.stringify(body),
88
+ });
89
+
90
+ const data = await response.json() as R;
91
+ return {
92
+ ok: response.ok,
93
+ status: response.status,
94
+ data,
95
+ };
96
+ }
97
+
98
+ async function httpGet<R>(url: string): Promise<HttpResponse<R>> {
99
+ const response = await fetch(url, {
100
+ method: 'GET',
101
+ headers: {
102
+ 'Accept': 'application/json',
103
+ },
104
+ });
105
+
106
+ const data = await response.json() as R;
107
+ return {
108
+ ok: response.ok,
109
+ status: response.status,
110
+ data,
111
+ };
112
+ }
113
+ import type {
114
+ IDependencySecurityService,
115
+ DependencyScanResult,
116
+ PackageSecurityInfo,
117
+ UpgradeRecommendation,
118
+ Vulnerability,
119
+ VulnerabilitySeverity,
120
+ VulnerabilityCategory,
121
+ VulnerabilityLocation,
122
+ DependencyInfo,
123
+ OutdatedPackage,
124
+ RemediationAdvice,
125
+ ScanSummary,
126
+ DetectedSecret,
127
+ SecretScanResult,
128
+ SecurityAuditOptions,
129
+ SecurityAuditReport,
130
+ SASTResult,
131
+ DASTResult,
132
+ } from '../interfaces.js';
133
+
134
+ // ============================================================================
135
+ // Service Interface
136
+ // ============================================================================
137
+
138
+ export interface ISecurityAuditorService extends IDependencySecurityService {
139
+ /**
140
+ * Run comprehensive security audit
141
+ */
142
+ runAudit(options: SecurityAuditOptions): Promise<Result<SecurityAuditReport>>;
143
+
144
+ /**
145
+ * Scan for secrets/credentials in code
146
+ */
147
+ scanSecrets(files: FilePath[]): Promise<Result<SecretScanResult>>;
148
+
149
+ /**
150
+ * Get security posture summary
151
+ */
152
+ getSecurityPosture(): Promise<Result<SecurityPostureSummary>>;
153
+
154
+ /**
155
+ * Triage vulnerabilities by priority
156
+ */
157
+ triageVulnerabilities(
158
+ vulnerabilities: Vulnerability[]
159
+ ): Promise<Result<TriagedVulnerabilities>>;
160
+ }
161
+
162
+ export interface SecurityPostureSummary {
163
+ overallScore: number;
164
+ trend: 'improving' | 'stable' | 'declining';
165
+ criticalIssues: number;
166
+ highIssues: number;
167
+ openVulnerabilities: number;
168
+ resolvedLastWeek: number;
169
+ averageResolutionTime: number;
170
+ lastAuditDate: Date;
171
+ recommendations: string[];
172
+ }
173
+
174
+ export interface TriagedVulnerabilities {
175
+ immediate: Vulnerability[];
176
+ shortTerm: Vulnerability[];
177
+ mediumTerm: Vulnerability[];
178
+ longTerm: Vulnerability[];
179
+ accepted: Vulnerability[];
180
+ }
181
+
182
+ // ============================================================================
183
+ // Configuration
184
+ // ============================================================================
185
+
186
+ export interface SecurityAuditorConfig {
187
+ secretPatterns: RegExp[];
188
+ excludePatterns: string[];
189
+ maxFileSizeKb: number;
190
+ enableHistoricalAnalysis: boolean;
191
+ riskThreshold: number;
192
+ }
193
+
194
+ const DEFAULT_CONFIG: SecurityAuditorConfig = {
195
+ secretPatterns: [
196
+ /(?:api[_-]?key|apikey)['":\s]*['"=]?\s*['"]?([a-zA-Z0-9_\-]{20,})['"]?/gi,
197
+ /(?:password|passwd|pwd)['":\s]*['"=]?\s*['"]?([^\s'"]{8,})['"]?/gi,
198
+ /(?:secret|token)['":\s]*['"=]?\s*['"]?([a-zA-Z0-9_\-]{16,})['"]?/gi,
199
+ /(?:aws[_-]?access[_-]?key|aws[_-]?secret)['":\s]*['"=]?\s*['"]?([A-Z0-9]{20,})['"]?/gi,
200
+ /-----BEGIN\s+(?:RSA\s+)?PRIVATE\s+KEY-----/gi,
201
+ /ghp_[a-zA-Z0-9]{36}/g, // GitHub personal access token
202
+ /gho_[a-zA-Z0-9]{36}/g, // GitHub OAuth access token
203
+ /sk-[a-zA-Z0-9]{48}/g, // OpenAI API key
204
+ ],
205
+ excludePatterns: ['node_modules', 'dist', 'build', '.git', '*.test.*', '*.spec.*'],
206
+ maxFileSizeKb: 1024,
207
+ enableHistoricalAnalysis: true,
208
+ riskThreshold: 0.7,
209
+ };
210
+
211
+ // ============================================================================
212
+ // Security Auditor Service Implementation
213
+ // ============================================================================
214
+
215
+ export class SecurityAuditorService implements ISecurityAuditorService {
216
+ private readonly config: SecurityAuditorConfig;
217
+
218
+ constructor(
219
+ private readonly memory: MemoryBackend,
220
+ config: Partial<SecurityAuditorConfig> = {}
221
+ ) {
222
+ this.config = { ...DEFAULT_CONFIG, ...config };
223
+ }
224
+
225
+ // ==========================================================================
226
+ // IDependencySecurityService Implementation
227
+ // ==========================================================================
228
+
229
+ /**
230
+ * Scan dependencies for vulnerabilities
231
+ */
232
+ async scanDependencies(manifestPath: FilePath): Promise<Result<DependencyScanResult>> {
233
+ try {
234
+ const manifest = manifestPath.value;
235
+ const ecosystem = this.detectEcosystem(manifest);
236
+
237
+ if (!ecosystem) {
238
+ return err(new Error(`Unknown manifest format: ${manifest}`));
239
+ }
240
+
241
+ const vulnerabilities: Vulnerability[] = [];
242
+ const outdatedPackages: OutdatedPackage[] = [];
243
+
244
+ // Parse dependencies from manifest file
245
+ const dependencies = await this.parseDependencies(manifest, ecosystem);
246
+
247
+ for (const dep of dependencies) {
248
+ // Check for known vulnerabilities
249
+ const vulns = await this.checkDependencyVulnerabilities(dep, ecosystem);
250
+ vulnerabilities.push(...vulns);
251
+
252
+ // Check for outdated packages
253
+ const outdated = await this.checkOutdated(dep);
254
+ if (outdated) {
255
+ outdatedPackages.push(outdated);
256
+ }
257
+ }
258
+
259
+ const summary = this.createDependencySummary(vulnerabilities, dependencies.length);
260
+
261
+ // Store results
262
+ await this.memory.set(
263
+ `security:deps:${manifestPath.filename}`,
264
+ { vulnerabilities, outdatedPackages, summary },
265
+ { namespace: 'security-compliance', ttl: 86400 } // 24 hours
266
+ );
267
+
268
+ return ok({
269
+ vulnerabilities,
270
+ outdatedPackages,
271
+ summary,
272
+ });
273
+ } catch (error) {
274
+ return err(error instanceof Error ? error : new Error(String(error)));
275
+ }
276
+ }
277
+
278
+ /**
279
+ * Check specific package for security issues
280
+ */
281
+ async checkPackage(
282
+ name: string,
283
+ version: string,
284
+ ecosystem: DependencyInfo['ecosystem']
285
+ ): Promise<Result<PackageSecurityInfo>> {
286
+ try {
287
+ // Query OSV vulnerability database
288
+ const vulnerabilities = await this.queryVulnerabilityDatabase(
289
+ name,
290
+ version,
291
+ ecosystem
292
+ );
293
+
294
+ const latestVersion = await this.getLatestVersion(name, ecosystem);
295
+ const isDeprecated = await this.checkDeprecation(name, ecosystem);
296
+
297
+ return ok({
298
+ name,
299
+ version,
300
+ vulnerabilities,
301
+ latestVersion,
302
+ isDeprecated,
303
+ });
304
+ } catch (error) {
305
+ return err(error instanceof Error ? error : new Error(String(error)));
306
+ }
307
+ }
308
+
309
+ /**
310
+ * Get upgrade recommendations for vulnerabilities
311
+ */
312
+ async getUpgradeRecommendations(
313
+ vulnerabilities: Vulnerability[]
314
+ ): Promise<Result<UpgradeRecommendation[]>> {
315
+ try {
316
+ const recommendations: UpgradeRecommendation[] = [];
317
+
318
+ // Group vulnerabilities by package
319
+ const byPackage = new Map<string, Vulnerability[]>();
320
+ for (const vuln of vulnerabilities) {
321
+ const dep = vuln.location.dependency;
322
+ if (dep) {
323
+ const key = `${dep.ecosystem}:${dep.name}`;
324
+ const existing = byPackage.get(key) || [];
325
+ existing.push(vuln);
326
+ byPackage.set(key, existing);
327
+ }
328
+ }
329
+
330
+ // Generate recommendations for each package
331
+ for (const [key, vulns] of byPackage) {
332
+ const [ecosystem, name] = key.split(':');
333
+ const currentVersion = vulns[0].location.dependency?.version || 'unknown';
334
+
335
+ const latestVersion = await this.getLatestVersion(
336
+ name,
337
+ ecosystem as DependencyInfo['ecosystem']
338
+ );
339
+
340
+ const fixedVersions = vulns
341
+ .filter((v) => v.id)
342
+ .map((v) => v.id);
343
+
344
+ recommendations.push({
345
+ package: name,
346
+ fromVersion: currentVersion,
347
+ toVersion: latestVersion,
348
+ fixesVulnerabilities: fixedVersions,
349
+ breakingChanges: this.hasBreakingChanges(currentVersion, latestVersion),
350
+ });
351
+ }
352
+
353
+ // Sort by number of vulnerabilities fixed
354
+ recommendations.sort(
355
+ (a, b) => b.fixesVulnerabilities.length - a.fixesVulnerabilities.length
356
+ );
357
+
358
+ return ok(recommendations);
359
+ } catch (error) {
360
+ return err(error instanceof Error ? error : new Error(String(error)));
361
+ }
362
+ }
363
+
364
+ // ==========================================================================
365
+ // Audit Functionality
366
+ // ==========================================================================
367
+
368
+ /**
369
+ * Run comprehensive security audit
370
+ */
371
+ async runAudit(options: SecurityAuditOptions): Promise<Result<SecurityAuditReport>> {
372
+ const auditId = uuidv4();
373
+ const timestamp = new Date();
374
+
375
+ try {
376
+ let sastResults: SASTResult | undefined;
377
+ let dastResults: DASTResult | undefined;
378
+ let dependencyResults: DependencyScanResult | undefined;
379
+ let secretScanResults: SecretScanResult | undefined;
380
+
381
+ // Note: Actual SAST/DAST scanning would be delegated to SecurityScannerService
382
+ // This is orchestration-level code that combines results
383
+
384
+ if (options.includeSAST) {
385
+ // SAST scanning delegated to SecurityScannerService
386
+ sastResults = await this.performSASTScan();
387
+ }
388
+
389
+ if (options.includeDAST && options.targetUrl) {
390
+ // DAST scanning delegated to SecurityScannerService
391
+ dastResults = await this.performDASTScan(options.targetUrl);
392
+ }
393
+
394
+ if (options.includeDependencies) {
395
+ // Scan package manifests for vulnerabilities
396
+ dependencyResults = await this.performDependencyScan();
397
+ }
398
+
399
+ if (options.includeSecrets) {
400
+ // Scan source files for secrets
401
+ secretScanResults = await this.performSecretScan();
402
+ }
403
+
404
+ // Calculate overall risk score
405
+ const overallRiskScore = this.calculateOverallRisk(
406
+ sastResults,
407
+ dastResults,
408
+ dependencyResults,
409
+ secretScanResults
410
+ );
411
+
412
+ // Generate recommendations
413
+ const recommendations = this.generateRecommendations(
414
+ sastResults,
415
+ dastResults,
416
+ dependencyResults,
417
+ secretScanResults
418
+ );
419
+
420
+ const report: SecurityAuditReport = {
421
+ auditId,
422
+ timestamp,
423
+ sastResults,
424
+ dastResults,
425
+ dependencyResults,
426
+ secretScanResults,
427
+ overallRiskScore,
428
+ recommendations,
429
+ };
430
+
431
+ // Store audit report
432
+ await this.memory.set(
433
+ `security:audit:${auditId}`,
434
+ report,
435
+ { namespace: 'security-compliance', persist: true }
436
+ );
437
+
438
+ return ok(report);
439
+ } catch (error) {
440
+ return err(error instanceof Error ? error : new Error(String(error)));
441
+ }
442
+ }
443
+
444
+ /**
445
+ * Scan for secrets in code
446
+ */
447
+ async scanSecrets(files: FilePath[]): Promise<Result<SecretScanResult>> {
448
+ try {
449
+ const secretsFound: DetectedSecret[] = [];
450
+ let filesScanned = 0;
451
+
452
+ for (const file of files) {
453
+ // Skip excluded patterns
454
+ if (this.shouldExclude(file.value)) {
455
+ continue;
456
+ }
457
+
458
+ filesScanned++;
459
+
460
+ // Read and scan file for secrets using regex patterns
461
+ const secrets = await this.scanFileForSecrets(file);
462
+ secretsFound.push(...secrets);
463
+ }
464
+
465
+ return ok({
466
+ secretsFound,
467
+ filesScanned,
468
+ });
469
+ } catch (error) {
470
+ return err(error instanceof Error ? error : new Error(String(error)));
471
+ }
472
+ }
473
+
474
+ /**
475
+ * Get security posture summary
476
+ */
477
+ async getSecurityPosture(): Promise<Result<SecurityPostureSummary>> {
478
+ try {
479
+ // Get historical audit data
480
+ const audits = await this.getRecentAudits();
481
+
482
+ // Calculate metrics
483
+ const latestAudit = audits[0];
484
+ const previousAudit = audits[1];
485
+
486
+ const criticalIssues = this.countBySeverity(latestAudit, 'critical');
487
+ const highIssues = this.countBySeverity(latestAudit, 'high');
488
+ const openVulnerabilities = this.countOpenVulnerabilities(latestAudit);
489
+
490
+ // Calculate trend
491
+ const trend = this.calculateTrend(latestAudit, previousAudit);
492
+
493
+ // Calculate overall score (0-100)
494
+ const overallScore = this.calculatePostureScore(
495
+ criticalIssues,
496
+ highIssues,
497
+ openVulnerabilities
498
+ );
499
+
500
+ // Generate recommendations
501
+ const recommendations = this.generatePostureRecommendations(
502
+ criticalIssues,
503
+ highIssues,
504
+ overallScore
505
+ );
506
+
507
+ return ok({
508
+ overallScore,
509
+ trend,
510
+ criticalIssues,
511
+ highIssues,
512
+ openVulnerabilities,
513
+ resolvedLastWeek: await this.countResolvedLastWeek(),
514
+ averageResolutionTime: await this.calculateAverageResolutionTime(),
515
+ lastAuditDate: latestAudit?.timestamp ?? new Date(),
516
+ recommendations,
517
+ });
518
+ } catch (error) {
519
+ return err(error instanceof Error ? error : new Error(String(error)));
520
+ }
521
+ }
522
+
523
+ /**
524
+ * Triage vulnerabilities by priority
525
+ */
526
+ async triageVulnerabilities(
527
+ vulnerabilities: Vulnerability[]
528
+ ): Promise<Result<TriagedVulnerabilities>> {
529
+ try {
530
+ const triaged: TriagedVulnerabilities = {
531
+ immediate: [],
532
+ shortTerm: [],
533
+ mediumTerm: [],
534
+ longTerm: [],
535
+ accepted: [],
536
+ };
537
+
538
+ for (const vuln of vulnerabilities) {
539
+ const bucket = this.determinePriorityBucket(vuln);
540
+ triaged[bucket].push(vuln);
541
+ }
542
+
543
+ // Sort each bucket by severity
544
+ const severityOrder = ['critical', 'high', 'medium', 'low', 'informational'];
545
+ for (const bucket of Object.values(triaged)) {
546
+ bucket.sort(
547
+ (a: Vulnerability, b: Vulnerability) =>
548
+ severityOrder.indexOf(a.severity) - severityOrder.indexOf(b.severity)
549
+ );
550
+ }
551
+
552
+ return ok(triaged);
553
+ } catch (error) {
554
+ return err(error instanceof Error ? error : new Error(String(error)));
555
+ }
556
+ }
557
+
558
+ // ==========================================================================
559
+ // Private Helper Methods
560
+ // ==========================================================================
561
+
562
+ private detectEcosystem(manifest: string): DependencyInfo['ecosystem'] | null {
563
+ if (manifest.includes('package.json')) return 'npm';
564
+ if (manifest.includes('requirements.txt') || manifest.includes('Pipfile')) return 'pip';
565
+ if (manifest.includes('pom.xml') || manifest.includes('build.gradle')) return 'maven';
566
+ if (manifest.includes('Cargo.toml')) return 'cargo';
567
+ if (manifest.includes('.csproj') || manifest.includes('packages.config')) return 'nuget';
568
+ return null;
569
+ }
570
+
571
+ private async parseDependencies(
572
+ manifest: string,
573
+ ecosystem: DependencyInfo['ecosystem']
574
+ ): Promise<DependencyInfo[]> {
575
+ const dependencies: DependencyInfo[] = [];
576
+
577
+ try {
578
+ if (ecosystem === 'npm') {
579
+ // Read and parse package.json
580
+ const content = await fs.readFile(manifest, 'utf-8');
581
+ const packageJson: PackageJson = JSON.parse(content);
582
+
583
+ // Collect all dependency types
584
+ const allDeps: Record<string, string> = {
585
+ ...packageJson.dependencies,
586
+ ...packageJson.devDependencies,
587
+ ...packageJson.peerDependencies,
588
+ ...packageJson.optionalDependencies,
589
+ };
590
+
591
+ // Convert to DependencyInfo array
592
+ for (const [name, versionSpec] of Object.entries(allDeps)) {
593
+ // Clean version specifiers (^, ~, >=, etc.)
594
+ const version = this.cleanVersionSpec(versionSpec);
595
+ dependencies.push({ name, version, ecosystem: 'npm' });
596
+ }
597
+ } else if (ecosystem === 'pip') {
598
+ // Parse requirements.txt or Pipfile
599
+ const content = await fs.readFile(manifest, 'utf-8');
600
+ const lines = content.split('\n');
601
+
602
+ for (const line of lines) {
603
+ const trimmed = line.trim();
604
+ // Skip comments and empty lines
605
+ if (!trimmed || trimmed.startsWith('#')) continue;
606
+
607
+ // Parse package==version or package>=version patterns
608
+ const match = trimmed.match(/^([a-zA-Z0-9_-]+)(?:[=<>~!]+(.+))?$/);
609
+ if (match) {
610
+ dependencies.push({
611
+ name: match[1],
612
+ version: match[2] || 'latest',
613
+ ecosystem: 'pip',
614
+ });
615
+ }
616
+ }
617
+ }
618
+ // Additional ecosystems (maven, cargo, nuget) would be implemented similarly
619
+ } catch (error) {
620
+ // If file reading fails, return empty array rather than throwing
621
+ console.error(`Failed to parse dependencies from ${manifest}:`, error);
622
+ }
623
+
624
+ return dependencies;
625
+ }
626
+
627
+ /**
628
+ * Clean version specifier to extract actual version
629
+ */
630
+ private cleanVersionSpec(versionSpec: string): string {
631
+ // Remove leading specifiers like ^, ~, >=, <=, >, <, =
632
+ return versionSpec.replace(/^[\^~>=<]+/, '').trim();
633
+ }
634
+
635
+ private async checkDependencyVulnerabilities(
636
+ dep: DependencyInfo,
637
+ ecosystem: DependencyInfo['ecosystem']
638
+ ): Promise<Vulnerability[]> {
639
+ const vulnerabilities: Vulnerability[] = [];
640
+
641
+ try {
642
+ // Map ecosystem to OSV ecosystem name
643
+ const osvEcosystem = this.mapToOSVEcosystem(ecosystem);
644
+
645
+ // Query OSV API for vulnerabilities
646
+ const osvQuery: OSVQueryRequest = {
647
+ package: {
648
+ name: dep.name,
649
+ ecosystem: osvEcosystem,
650
+ },
651
+ version: dep.version,
652
+ };
653
+
654
+ const response = await httpPost<OSVQueryRequest, OSVQueryResponse>(
655
+ 'https://api.osv.dev/v1/query',
656
+ osvQuery
657
+ );
658
+
659
+ if (response.ok && response.data.vulns && response.data.vulns.length > 0) {
660
+ for (const osvVuln of response.data.vulns) {
661
+ const vulnerability = this.mapOSVVulnerability(osvVuln, dep);
662
+ vulnerabilities.push(vulnerability);
663
+ }
664
+ }
665
+ } catch (error) {
666
+ // Log error but don't fail the entire scan
667
+ console.error(`Failed to check vulnerabilities for ${dep.name}@${dep.version}:`, error);
668
+ }
669
+
670
+ return vulnerabilities;
671
+ }
672
+
673
+ /**
674
+ * Map internal ecosystem to OSV ecosystem name
675
+ */
676
+ private mapToOSVEcosystem(ecosystem: DependencyInfo['ecosystem']): string {
677
+ const ecosystemMap: Record<DependencyInfo['ecosystem'], string> = {
678
+ npm: 'npm',
679
+ pip: 'PyPI',
680
+ maven: 'Maven',
681
+ nuget: 'NuGet',
682
+ cargo: 'crates.io',
683
+ };
684
+ return ecosystemMap[ecosystem];
685
+ }
686
+
687
+ /**
688
+ * Map OSV vulnerability to our Vulnerability type
689
+ */
690
+ private mapOSVVulnerability(osvVuln: OSVVulnerability, dep: DependencyInfo): Vulnerability {
691
+ // Extract CVE ID from aliases
692
+ const cveId = osvVuln.aliases?.find((alias) => alias.startsWith('CVE-'));
693
+
694
+ // Determine severity from OSV severity scores
695
+ const severity = this.mapOSVSeverity(osvVuln.severity);
696
+
697
+ // Extract fixed version from affected ranges
698
+ const fixedVersion = this.extractFixedVersion(osvVuln);
699
+
700
+ // Build references list
701
+ const references = osvVuln.references?.map((ref) => ref.url) || [];
702
+
703
+ const location: VulnerabilityLocation = {
704
+ file: 'package.json',
705
+ dependency: dep,
706
+ };
707
+
708
+ const remediation: RemediationAdvice = {
709
+ description: fixedVersion
710
+ ? `Upgrade ${dep.name} to version ${fixedVersion} or higher`
711
+ : `Review and address vulnerability in ${dep.name}`,
712
+ fixExample: fixedVersion ? `"${dep.name}": "^${fixedVersion}"` : undefined,
713
+ estimatedEffort: fixedVersion ? 'trivial' : 'moderate',
714
+ automatable: !!fixedVersion,
715
+ };
716
+
717
+ return {
718
+ id: uuidv4(),
719
+ cveId,
720
+ title: osvVuln.summary || `Vulnerability in ${dep.name}`,
721
+ description: osvVuln.details || osvVuln.summary || 'No description available',
722
+ severity,
723
+ category: this.categorizeVulnerability(osvVuln),
724
+ location,
725
+ remediation,
726
+ references,
727
+ };
728
+ }
729
+
730
+ /**
731
+ * Map OSV severity to our severity levels
732
+ */
733
+ private mapOSVSeverity(
734
+ severityScores?: OSVVulnerability['severity']
735
+ ): VulnerabilitySeverity {
736
+ if (!severityScores || severityScores.length === 0) {
737
+ return 'medium'; // Default to medium if no severity info
738
+ }
739
+
740
+ // Find CVSS score
741
+ const cvssScore = severityScores.find(
742
+ (s) => s.type === 'CVSS_V3' || s.type === 'CVSS_V2'
743
+ );
744
+
745
+ if (cvssScore) {
746
+ const score = parseFloat(cvssScore.score);
747
+ if (score >= 9.0) return 'critical';
748
+ if (score >= 7.0) return 'high';
749
+ if (score >= 4.0) return 'medium';
750
+ if (score > 0) return 'low';
751
+ }
752
+
753
+ return 'medium';
754
+ }
755
+
756
+ /**
757
+ * Extract fixed version from OSV vulnerability data
758
+ */
759
+ private extractFixedVersion(osvVuln: OSVVulnerability): string | undefined {
760
+ if (!osvVuln.affected) return undefined;
761
+
762
+ for (const affected of osvVuln.affected) {
763
+ if (affected.ranges) {
764
+ for (const range of affected.ranges) {
765
+ if (range.events) {
766
+ const fixedEvent = range.events.find((event) => event.fixed);
767
+ if (fixedEvent?.fixed) {
768
+ return fixedEvent.fixed;
769
+ }
770
+ }
771
+ }
772
+ }
773
+ }
774
+
775
+ return undefined;
776
+ }
777
+
778
+ /**
779
+ * Categorize vulnerability based on OSV data
780
+ */
781
+ private categorizeVulnerability(osvVuln: OSVVulnerability): VulnerabilityCategory {
782
+ const summary = (osvVuln.summary || '').toLowerCase();
783
+ const details = (osvVuln.details || '').toLowerCase();
784
+ const combined = `${summary} ${details}`;
785
+
786
+ // Check for common vulnerability patterns
787
+ if (combined.includes('injection') || combined.includes('sql')) {
788
+ return 'injection';
789
+ }
790
+ if (combined.includes('xss') || combined.includes('cross-site scripting')) {
791
+ return 'xss';
792
+ }
793
+ if (combined.includes('authentication') || combined.includes('auth bypass')) {
794
+ return 'broken-auth';
795
+ }
796
+ if (combined.includes('sensitive data') || combined.includes('exposure')) {
797
+ return 'sensitive-data';
798
+ }
799
+ if (combined.includes('xxe') || combined.includes('xml external')) {
800
+ return 'xxe';
801
+ }
802
+ if (combined.includes('access control') || combined.includes('authorization')) {
803
+ return 'access-control';
804
+ }
805
+ if (combined.includes('deseriali')) {
806
+ return 'insecure-deserialization';
807
+ }
808
+ if (combined.includes('prototype pollution') || combined.includes('dependency')) {
809
+ return 'vulnerable-components';
810
+ }
811
+
812
+ // Default to vulnerable-components for dependency vulnerabilities
813
+ return 'vulnerable-components';
814
+ }
815
+
816
+ private async checkOutdated(dep: DependencyInfo): Promise<OutdatedPackage | null> {
817
+ // Check if package is outdated by comparing with latest version from registry
818
+ const latestVersion = await this.getLatestVersion(dep.name, dep.ecosystem);
819
+
820
+ if (latestVersion !== dep.version) {
821
+ return {
822
+ name: dep.name,
823
+ currentVersion: dep.version,
824
+ latestVersion,
825
+ updateType: this.determineUpdateType(dep.version, latestVersion),
826
+ };
827
+ }
828
+
829
+ return null;
830
+ }
831
+
832
+ private async queryVulnerabilityDatabase(
833
+ name: string,
834
+ version: string,
835
+ ecosystem: DependencyInfo['ecosystem']
836
+ ): Promise<Vulnerability[]> {
837
+ // Query OSV API for vulnerabilities
838
+ const dep: DependencyInfo = { name, version, ecosystem };
839
+ return this.checkDependencyVulnerabilities(dep, ecosystem);
840
+ }
841
+
842
+ private async getLatestVersion(
843
+ name: string,
844
+ ecosystem: DependencyInfo['ecosystem']
845
+ ): Promise<string> {
846
+ try {
847
+ if (ecosystem === 'npm') {
848
+ // Query npm registry for latest version
849
+ const response = await httpGet<{ 'dist-tags'?: { latest?: string }; version?: string }>(
850
+ `https://registry.npmjs.org/${encodeURIComponent(name)}/latest`
851
+ );
852
+
853
+ if (response.ok && response.data.version) {
854
+ return response.data.version;
855
+ }
856
+ } else if (ecosystem === 'pip') {
857
+ // Query PyPI for latest version
858
+ const response = await httpGet<{ info?: { version?: string } }>(
859
+ `https://pypi.org/pypi/${encodeURIComponent(name)}/json`
860
+ );
861
+
862
+ if (response.ok && response.data.info?.version) {
863
+ return response.data.info.version;
864
+ }
865
+ }
866
+ // Additional registries (Maven, NuGet, Cargo) would be implemented similarly
867
+ } catch (error) {
868
+ console.error(`Failed to get latest version for ${name}:`, error);
869
+ }
870
+
871
+ return 'unknown';
872
+ }
873
+
874
+ private async checkDeprecation(
875
+ name: string,
876
+ ecosystem: DependencyInfo['ecosystem']
877
+ ): Promise<boolean> {
878
+ try {
879
+ if (ecosystem === 'npm') {
880
+ // Query npm registry for deprecation notice
881
+ const response = await httpGet<{ deprecated?: string }>(
882
+ `https://registry.npmjs.org/${encodeURIComponent(name)}/latest`
883
+ );
884
+
885
+ if (response.ok && response.data.deprecated) {
886
+ return true;
887
+ }
888
+ }
889
+ // Additional registries would be implemented similarly
890
+ } catch (error) {
891
+ console.error(`Failed to check deprecation for ${name}:`, error);
892
+ }
893
+
894
+ return false;
895
+ }
896
+
897
+ private determineUpdateType(
898
+ current: string,
899
+ latest: string
900
+ ): 'major' | 'minor' | 'patch' {
901
+ const currentParts = current.split('.').map(Number);
902
+ const latestParts = latest.split('.').map(Number);
903
+
904
+ if (latestParts[0] > currentParts[0]) return 'major';
905
+ if (latestParts[1] > currentParts[1]) return 'minor';
906
+ return 'patch';
907
+ }
908
+
909
+ private hasBreakingChanges(current: string, latest: string): boolean {
910
+ const currentMajor = parseInt(current.split('.')[0]);
911
+ const latestMajor = parseInt(latest.split('.')[0]);
912
+ return latestMajor > currentMajor;
913
+ }
914
+
915
+ private createDependencySummary(
916
+ vulnerabilities: Vulnerability[],
917
+ totalDeps: number
918
+ ): ScanSummary {
919
+ // Count vulnerabilities by severity
920
+ let critical = 0;
921
+ let high = 0;
922
+ let medium = 0;
923
+ let low = 0;
924
+ let informational = 0;
925
+
926
+ for (const vuln of vulnerabilities) {
927
+ switch (vuln.severity) {
928
+ case 'critical':
929
+ critical++;
930
+ break;
931
+ case 'high':
932
+ high++;
933
+ break;
934
+ case 'medium':
935
+ medium++;
936
+ break;
937
+ case 'low':
938
+ low++;
939
+ break;
940
+ case 'informational':
941
+ informational++;
942
+ break;
943
+ }
944
+ }
945
+
946
+ return {
947
+ critical,
948
+ high,
949
+ medium,
950
+ low,
951
+ informational,
952
+ totalFiles: totalDeps,
953
+ scanDurationMs: 0,
954
+ };
955
+ }
956
+
957
+ private shouldExclude(filePath: string): boolean {
958
+ return this.config.excludePatterns.some((pattern) => {
959
+ if (pattern.startsWith('*')) {
960
+ return filePath.endsWith(pattern.slice(1));
961
+ }
962
+ return filePath.includes(pattern);
963
+ });
964
+ }
965
+
966
+ private async scanFileForSecrets(file: FilePath): Promise<DetectedSecret[]> {
967
+ const secrets: DetectedSecret[] = [];
968
+
969
+ try {
970
+ // Read the file content
971
+ const content = await fs.readFile(file.value, 'utf-8');
972
+ const lines = content.split('\n');
973
+
974
+ // Comprehensive secret detection patterns
975
+ const secretPatterns: Array<{
976
+ name: string;
977
+ type: DetectedSecret['type'];
978
+ regex: RegExp;
979
+ entropyThreshold?: number;
980
+ }> = [
981
+ // AWS Keys
982
+ {
983
+ name: 'AWS Access Key ID',
984
+ type: 'api-key',
985
+ regex: /AKIA[0-9A-Z]{16}/g,
986
+ },
987
+ {
988
+ name: 'AWS Secret Access Key',
989
+ type: 'api-key',
990
+ regex: /(?:aws[_-]?secret[_-]?access[_-]?key|AWS_SECRET_ACCESS_KEY)['"]?\s*[:=]\s*['"]?([A-Za-z0-9/+=]{40})['"]?/gi,
991
+ entropyThreshold: 4.0,
992
+ },
993
+ // GitHub Tokens
994
+ {
995
+ name: 'GitHub Personal Access Token',
996
+ type: 'token',
997
+ regex: /ghp_[A-Za-z0-9]{36}/g,
998
+ },
999
+ {
1000
+ name: 'GitHub OAuth Access Token',
1001
+ type: 'token',
1002
+ regex: /gho_[A-Za-z0-9]{36}/g,
1003
+ },
1004
+ {
1005
+ name: 'GitHub App Token',
1006
+ type: 'token',
1007
+ regex: /(?:ghu|ghs)_[A-Za-z0-9]{36}/g,
1008
+ },
1009
+ // Generic API Keys
1010
+ {
1011
+ name: 'Generic API Key',
1012
+ type: 'api-key',
1013
+ regex: /(?:api[_-]?key|apikey|api_secret)['"]?\s*[:=]\s*['"]([A-Za-z0-9_\-]{20,})['"]?/gi,
1014
+ entropyThreshold: 3.5,
1015
+ },
1016
+ // OpenAI API Key
1017
+ {
1018
+ name: 'OpenAI API Key',
1019
+ type: 'api-key',
1020
+ regex: /sk-[A-Za-z0-9]{48}/g,
1021
+ },
1022
+ // Stripe Keys
1023
+ {
1024
+ name: 'Stripe Secret Key',
1025
+ type: 'api-key',
1026
+ regex: /sk_live_[A-Za-z0-9]{24,}/g,
1027
+ },
1028
+ {
1029
+ name: 'Stripe Publishable Key',
1030
+ type: 'api-key',
1031
+ regex: /pk_live_[A-Za-z0-9]{24,}/g,
1032
+ },
1033
+ // Private Keys
1034
+ {
1035
+ name: 'RSA Private Key',
1036
+ type: 'private-key',
1037
+ regex: /-----BEGIN\s+(?:RSA\s+)?PRIVATE\s+KEY-----/gi,
1038
+ },
1039
+ {
1040
+ name: 'PGP Private Key',
1041
+ type: 'private-key',
1042
+ regex: /-----BEGIN\s+PGP\s+PRIVATE\s+KEY\s+BLOCK-----/gi,
1043
+ },
1044
+ {
1045
+ name: 'SSH Private Key',
1046
+ type: 'private-key',
1047
+ regex: /-----BEGIN\s+(?:OPENSSH|DSA|EC)?\s*PRIVATE\s+KEY-----/gi,
1048
+ },
1049
+ // Passwords
1050
+ {
1051
+ name: 'Password Assignment',
1052
+ type: 'password',
1053
+ regex: /(?:password|passwd|pwd|secret)['"]?\s*[:=]\s*['"]([^'"\s]{8,})['"]?/gi,
1054
+ entropyThreshold: 3.0,
1055
+ },
1056
+ // Database Connection Strings
1057
+ {
1058
+ name: 'Database Connection String',
1059
+ type: 'password',
1060
+ regex: /(?:mongodb|postgres|mysql|redis):\/\/[^:]+:[^@]+@[^\s'"]+/gi,
1061
+ },
1062
+ // JWT Tokens
1063
+ {
1064
+ name: 'JWT Token',
1065
+ type: 'token',
1066
+ regex: /eyJ[A-Za-z0-9_-]*\.eyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]*/g,
1067
+ entropyThreshold: 4.0,
1068
+ },
1069
+ // Slack Tokens
1070
+ {
1071
+ name: 'Slack Token',
1072
+ type: 'token',
1073
+ regex: /xox[baprs]-[A-Za-z0-9-]{10,}/g,
1074
+ },
1075
+ // Google API Key
1076
+ {
1077
+ name: 'Google API Key',
1078
+ type: 'api-key',
1079
+ regex: /AIza[A-Za-z0-9_-]{35}/g,
1080
+ },
1081
+ // Twilio
1082
+ {
1083
+ name: 'Twilio API Key',
1084
+ type: 'api-key',
1085
+ regex: /SK[A-Za-z0-9]{32}/g,
1086
+ },
1087
+ // SendGrid
1088
+ {
1089
+ name: 'SendGrid API Key',
1090
+ type: 'api-key',
1091
+ regex: /SG\.[A-Za-z0-9_-]{22}\.[A-Za-z0-9_-]{43}/g,
1092
+ },
1093
+ // Certificates
1094
+ {
1095
+ name: 'X.509 Certificate',
1096
+ type: 'certificate',
1097
+ regex: /-----BEGIN\s+CERTIFICATE-----/gi,
1098
+ },
1099
+ ];
1100
+
1101
+ // Scan each line for secrets
1102
+ for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
1103
+ const line = lines[lineIndex];
1104
+ const lineNumber = lineIndex + 1;
1105
+
1106
+ for (const pattern of secretPatterns) {
1107
+ // Reset regex lastIndex for global patterns
1108
+ pattern.regex.lastIndex = 0;
1109
+
1110
+ let match: RegExpExecArray | null;
1111
+ while ((match = pattern.regex.exec(line)) !== null) {
1112
+ const matchedValue = match[1] || match[0];
1113
+
1114
+ // Calculate entropy if threshold is specified
1115
+ const entropy = this.calculateEntropy(matchedValue);
1116
+
1117
+ // Skip low-entropy matches if threshold is specified
1118
+ if (pattern.entropyThreshold && entropy < pattern.entropyThreshold) {
1119
+ continue;
1120
+ }
1121
+
1122
+ // Create masked snippet (show context but mask the actual secret)
1123
+ const snippet = this.createMaskedSnippet(line, match.index, matchedValue.length);
1124
+
1125
+ const location: VulnerabilityLocation = {
1126
+ file: file.value,
1127
+ line: lineNumber,
1128
+ column: match.index + 1,
1129
+ snippet,
1130
+ };
1131
+
1132
+ secrets.push({
1133
+ type: pattern.type,
1134
+ location,
1135
+ entropy,
1136
+ isValid: this.validateSecret(pattern.type, matchedValue),
1137
+ });
1138
+ }
1139
+ }
1140
+ }
1141
+ } catch (error) {
1142
+ // File reading error - skip this file
1143
+ console.error(`Failed to scan file for secrets: ${file.value}`, error);
1144
+ }
1145
+
1146
+ return secrets;
1147
+ }
1148
+
1149
+ /**
1150
+ * Calculate Shannon entropy of a string
1151
+ */
1152
+ private calculateEntropy(str: string): number {
1153
+ if (!str || str.length === 0) return 0;
1154
+
1155
+ const charFrequency: Record<string, number> = {};
1156
+
1157
+ for (const char of str) {
1158
+ charFrequency[char] = (charFrequency[char] || 0) + 1;
1159
+ }
1160
+
1161
+ let entropy = 0;
1162
+ const len = str.length;
1163
+
1164
+ for (const char in charFrequency) {
1165
+ const probability = charFrequency[char] / len;
1166
+ entropy -= probability * Math.log2(probability);
1167
+ }
1168
+
1169
+ return entropy;
1170
+ }
1171
+
1172
+ /**
1173
+ * Create a masked snippet for display
1174
+ */
1175
+ private createMaskedSnippet(line: string, matchIndex: number, matchLength: number): string {
1176
+ const contextBefore = 20;
1177
+ const contextAfter = 10;
1178
+
1179
+ const start = Math.max(0, matchIndex - contextBefore);
1180
+ const end = Math.min(line.length, matchIndex + matchLength + contextAfter);
1181
+
1182
+ let snippet = line.substring(start, end);
1183
+
1184
+ // Mask the secret value (show first 4 and last 4 characters)
1185
+ const secretStart = matchIndex - start;
1186
+ const secretInSnippet = snippet.substring(secretStart, secretStart + matchLength);
1187
+
1188
+ if (secretInSnippet.length > 8) {
1189
+ const masked = secretInSnippet.substring(0, 4) + '...' + secretInSnippet.substring(secretInSnippet.length - 4);
1190
+ snippet = snippet.substring(0, secretStart) + masked + snippet.substring(secretStart + matchLength);
1191
+ }
1192
+
1193
+ if (start > 0) snippet = '...' + snippet;
1194
+ if (end < line.length) snippet = snippet + '...';
1195
+
1196
+ return snippet;
1197
+ }
1198
+
1199
+ /**
1200
+ * Validate if a detected secret is likely valid (basic validation)
1201
+ */
1202
+ private validateSecret(type: DetectedSecret['type'], value: string): boolean {
1203
+ // Basic validation - in production, could do more sophisticated checks
1204
+ switch (type) {
1205
+ case 'api-key':
1206
+ // Check minimum length and character variety
1207
+ return value.length >= 20 && /[a-z]/.test(value) && /[A-Z0-9]/.test(value);
1208
+ case 'token':
1209
+ return value.length >= 20;
1210
+ case 'password':
1211
+ // Likely not a placeholder password
1212
+ return !['password', 'secret', 'changeme', '12345678', 'qwerty'].includes(value.toLowerCase());
1213
+ case 'private-key':
1214
+ return true; // Private key headers are already specific
1215
+ case 'certificate':
1216
+ return true;
1217
+ default:
1218
+ return true;
1219
+ }
1220
+ }
1221
+
1222
+ /**
1223
+ * Perform SAST scan using AST-based analysis for JavaScript/TypeScript
1224
+ * Scans for common vulnerability patterns: XSS, SQL injection, command injection, path traversal
1225
+ */
1226
+ private async performSASTScan(): Promise<SASTResult> {
1227
+ const scanId = uuidv4();
1228
+ const startTime = Date.now();
1229
+ const vulnerabilities: Vulnerability[] = [];
1230
+ let filesScanned = 0;
1231
+ let linesScanned = 0;
1232
+
1233
+ try {
1234
+ // Find source files to scan
1235
+ const sourceFiles = await this.findSourceFiles(process.cwd());
1236
+
1237
+ // Define vulnerability patterns for AST-like analysis
1238
+ const vulnerabilityPatterns: Array<{
1239
+ id: string;
1240
+ pattern: RegExp;
1241
+ title: string;
1242
+ description: string;
1243
+ severity: VulnerabilitySeverity;
1244
+ category: VulnerabilityCategory;
1245
+ remediation: string;
1246
+ fixExample?: string;
1247
+ cweId: string;
1248
+ }> = [
1249
+ // SQL Injection patterns
1250
+ {
1251
+ id: 'sqli-concat',
1252
+ pattern: /(?:query|execute|exec|run)\s*\(\s*(?:['"`].*?\s*\+|`[^`]*\$\{)/gi,
1253
+ title: 'SQL Injection via String Concatenation',
1254
+ description: 'SQL query constructed using string concatenation with potentially untrusted input',
1255
+ severity: 'critical',
1256
+ category: 'injection',
1257
+ remediation: 'Use parameterized queries or prepared statements',
1258
+ fixExample: 'db.query("SELECT * FROM users WHERE id = $1", [userId])',
1259
+ cweId: 'CWE-89',
1260
+ },
1261
+ // XSS patterns
1262
+ {
1263
+ id: 'xss-innerhtml',
1264
+ pattern: /\.innerHTML\s*=\s*(?!['"`])/g,
1265
+ title: 'XSS via innerHTML Assignment',
1266
+ description: 'Direct innerHTML assignment with potentially unsanitized content',
1267
+ severity: 'high',
1268
+ category: 'xss',
1269
+ remediation: 'Use textContent for text, or sanitize HTML with DOMPurify',
1270
+ fixExample: 'element.textContent = userInput;',
1271
+ cweId: 'CWE-79',
1272
+ },
1273
+ {
1274
+ id: 'xss-document-write',
1275
+ pattern: /document\.write\s*\([^)]+\)/g,
1276
+ title: 'XSS via document.write',
1277
+ description: 'document.write() can execute scripts from untrusted data',
1278
+ severity: 'high',
1279
+ category: 'xss',
1280
+ remediation: 'Avoid document.write(); use DOM manipulation methods',
1281
+ cweId: 'CWE-79',
1282
+ },
1283
+ {
1284
+ id: 'xss-eval',
1285
+ pattern: /(?<!\.)\beval\s*\([^)]+\)/g,
1286
+ title: 'Code Injection via eval()',
1287
+ description: 'eval() executes arbitrary code and is a major security risk',
1288
+ severity: 'critical',
1289
+ category: 'xss',
1290
+ remediation: 'Never use eval(); use JSON.parse() for JSON data',
1291
+ fixExample: 'JSON.parse(jsonString)',
1292
+ cweId: 'CWE-95',
1293
+ },
1294
+ {
1295
+ id: 'xss-dangerous-react',
1296
+ pattern: /dangerouslySetInnerHTML\s*=\s*\{/g,
1297
+ title: 'React dangerouslySetInnerHTML Usage',
1298
+ description: 'dangerouslySetInnerHTML bypasses React XSS protections',
1299
+ severity: 'medium',
1300
+ category: 'xss',
1301
+ remediation: 'Sanitize HTML content with DOMPurify before use',
1302
+ fixExample: 'dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(content) }}',
1303
+ cweId: 'CWE-79',
1304
+ },
1305
+ // Command Injection patterns
1306
+ {
1307
+ id: 'cmd-injection-exec',
1308
+ pattern: /(?:child_process\.)?exec\s*\(\s*(?:[^,)]*\s*\+|`[^`]*\$\{)/g,
1309
+ title: 'Command Injection via exec()',
1310
+ description: 'Shell command execution with unsanitized input',
1311
+ severity: 'critical',
1312
+ category: 'injection',
1313
+ remediation: 'Use execFile() with argument array instead of exec()',
1314
+ fixExample: 'execFile("command", [arg1, arg2], callback)',
1315
+ cweId: 'CWE-78',
1316
+ },
1317
+ {
1318
+ id: 'cmd-injection-spawn-shell',
1319
+ pattern: /spawn\s*\([^)]+,\s*\{[^}]*shell\s*:\s*true/g,
1320
+ title: 'Dangerous Shell Option in spawn()',
1321
+ description: 'spawn() with shell: true can enable command injection',
1322
+ severity: 'high',
1323
+ category: 'injection',
1324
+ remediation: 'Avoid shell: true option; use direct command execution',
1325
+ cweId: 'CWE-78',
1326
+ },
1327
+ // Path Traversal patterns
1328
+ {
1329
+ id: 'path-traversal-readfile',
1330
+ pattern: /(?:readFile|readFileSync)\s*\([^)]*\+/g,
1331
+ title: 'Path Traversal via File Read',
1332
+ description: 'File read operation with concatenated path may allow directory traversal',
1333
+ severity: 'high',
1334
+ category: 'access-control',
1335
+ remediation: 'Validate and sanitize file paths; use path.resolve() and check against base directory',
1336
+ fixExample: 'const safePath = path.resolve(baseDir, path.basename(userInput))',
1337
+ cweId: 'CWE-22',
1338
+ },
1339
+ {
1340
+ id: 'path-traversal-writefile',
1341
+ pattern: /(?:writeFile|writeFileSync)\s*\([^)]*\+/g,
1342
+ title: 'Path Traversal via File Write',
1343
+ description: 'File write operation with concatenated path may allow directory traversal',
1344
+ severity: 'high',
1345
+ category: 'access-control',
1346
+ remediation: 'Validate file paths before writing; ensure path is within allowed directory',
1347
+ cweId: 'CWE-22',
1348
+ },
1349
+ // Hardcoded secrets
1350
+ {
1351
+ id: 'secret-private-key',
1352
+ pattern: /-----BEGIN\s+(?:RSA\s+)?PRIVATE\s+KEY-----/g,
1353
+ title: 'Private Key Detected in Source',
1354
+ description: 'Private key found in source code',
1355
+ severity: 'critical',
1356
+ category: 'sensitive-data',
1357
+ remediation: 'Store private keys in secure key management systems, not in code',
1358
+ cweId: 'CWE-798',
1359
+ },
1360
+ // Insecure configurations
1361
+ {
1362
+ id: 'config-tls-disabled',
1363
+ pattern: /rejectUnauthorized\s*:\s*false/g,
1364
+ title: 'TLS Certificate Validation Disabled',
1365
+ description: 'Disabling TLS certificate validation exposes to MITM attacks',
1366
+ severity: 'high',
1367
+ category: 'security-misconfiguration',
1368
+ remediation: 'Always enable TLS certificate validation in production',
1369
+ cweId: 'CWE-295',
1370
+ },
1371
+ {
1372
+ id: 'config-cors-wildcard',
1373
+ pattern: /cors\s*\(\s*\{[^}]*origin\s*:\s*['"]\*['"]/gi,
1374
+ title: 'Permissive CORS Configuration',
1375
+ description: 'CORS allows all origins (*) which may expose sensitive data',
1376
+ severity: 'medium',
1377
+ category: 'security-misconfiguration',
1378
+ remediation: 'Restrict CORS to specific trusted origins',
1379
+ fixExample: 'cors({ origin: ["https://trusted-domain.com"] })',
1380
+ cweId: 'CWE-942',
1381
+ },
1382
+ ];
1383
+
1384
+ for (const filePath of sourceFiles) {
1385
+ if (this.shouldExclude(filePath)) {
1386
+ continue;
1387
+ }
1388
+
1389
+ // Only scan JS/TS files
1390
+ const ext = path.extname(filePath).toLowerCase();
1391
+ if (!['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs'].includes(ext)) {
1392
+ continue;
1393
+ }
1394
+
1395
+ try {
1396
+ const content = await fs.readFile(filePath, 'utf-8');
1397
+ const lines = content.split('\n');
1398
+ filesScanned++;
1399
+ linesScanned += lines.length;
1400
+
1401
+ // Check each vulnerability pattern
1402
+ for (const vulnPattern of vulnerabilityPatterns) {
1403
+ // Reset regex state
1404
+ vulnPattern.pattern.lastIndex = 0;
1405
+ let match: RegExpExecArray | null;
1406
+
1407
+ while ((match = vulnPattern.pattern.exec(content)) !== null) {
1408
+ // Calculate line and column
1409
+ const beforeMatch = content.substring(0, match.index);
1410
+ const linesBefore = beforeMatch.split('\n');
1411
+ const lineNumber = linesBefore.length;
1412
+ const column = linesBefore[linesBefore.length - 1].length + 1;
1413
+
1414
+ // Check if in comment
1415
+ const currentLine = lines[lineNumber - 1] || '';
1416
+ if (currentLine.trimStart().startsWith('//') || currentLine.trimStart().startsWith('*')) {
1417
+ continue;
1418
+ }
1419
+
1420
+ // Check for nosec annotation
1421
+ if (currentLine.includes('// nosec') || currentLine.includes('// security-ignore')) {
1422
+ continue;
1423
+ }
1424
+
1425
+ // Extract snippet with context
1426
+ const startLine = Math.max(0, lineNumber - 2);
1427
+ const endLine = Math.min(lines.length, lineNumber + 1);
1428
+ const snippet = lines.slice(startLine, endLine).join('\n');
1429
+
1430
+ const location: VulnerabilityLocation = {
1431
+ file: filePath,
1432
+ line: lineNumber,
1433
+ column,
1434
+ snippet,
1435
+ };
1436
+
1437
+ const remediation: RemediationAdvice = {
1438
+ description: vulnPattern.remediation,
1439
+ fixExample: vulnPattern.fixExample,
1440
+ estimatedEffort: vulnPattern.severity === 'critical' ? 'moderate' : 'minor',
1441
+ automatable: vulnPattern.severity === 'low' || vulnPattern.severity === 'medium',
1442
+ };
1443
+
1444
+ vulnerabilities.push({
1445
+ id: uuidv4(),
1446
+ cveId: undefined,
1447
+ title: vulnPattern.title,
1448
+ description: `${vulnPattern.description} [${vulnPattern.cweId}]`,
1449
+ severity: vulnPattern.severity,
1450
+ category: vulnPattern.category,
1451
+ location,
1452
+ remediation,
1453
+ references: [
1454
+ `https://cwe.mitre.org/data/definitions/${vulnPattern.cweId.replace('CWE-', '')}.html`,
1455
+ ],
1456
+ });
1457
+ }
1458
+ }
1459
+ } catch {
1460
+ // Skip files that can't be read
1461
+ }
1462
+ }
1463
+ } catch (error) {
1464
+ console.error('SAST scan failed:', error);
1465
+ }
1466
+
1467
+ const scanDurationMs = Date.now() - startTime;
1468
+
1469
+ // Calculate summary
1470
+ let critical = 0, high = 0, medium = 0, low = 0, informational = 0;
1471
+ for (const vuln of vulnerabilities) {
1472
+ switch (vuln.severity) {
1473
+ case 'critical': critical++; break;
1474
+ case 'high': high++; break;
1475
+ case 'medium': medium++; break;
1476
+ case 'low': low++; break;
1477
+ case 'informational': informational++; break;
1478
+ }
1479
+ }
1480
+
1481
+ return {
1482
+ scanId,
1483
+ vulnerabilities,
1484
+ summary: {
1485
+ critical,
1486
+ high,
1487
+ medium,
1488
+ low,
1489
+ informational,
1490
+ totalFiles: filesScanned,
1491
+ scanDurationMs,
1492
+ },
1493
+ coverage: {
1494
+ filesScanned,
1495
+ linesScanned,
1496
+ rulesApplied: 12, // Number of vulnerability patterns
1497
+ },
1498
+ };
1499
+ }
1500
+
1501
+ /**
1502
+ * Perform DAST scan using HTTP requests to test for vulnerabilities
1503
+ * Tests for common web vulnerabilities: XSS, SQL injection, security headers, etc.
1504
+ */
1505
+ private async performDASTScan(targetUrl: string): Promise<DASTResult> {
1506
+ const scanId = uuidv4();
1507
+ const startTime = Date.now();
1508
+ const vulnerabilities: Vulnerability[] = [];
1509
+ let crawledUrls = 0;
1510
+
1511
+ try {
1512
+ // Validate URL
1513
+ let parsedUrl: URL;
1514
+ try {
1515
+ parsedUrl = new URL(targetUrl);
1516
+ } catch {
1517
+ return {
1518
+ scanId,
1519
+ targetUrl,
1520
+ vulnerabilities: [{
1521
+ id: uuidv4(),
1522
+ title: 'Invalid Target URL',
1523
+ description: 'The provided target URL is not valid',
1524
+ severity: 'informational',
1525
+ category: 'security-misconfiguration',
1526
+ location: { file: targetUrl },
1527
+ remediation: { description: 'Provide a valid URL', estimatedEffort: 'trivial', automatable: false },
1528
+ references: [],
1529
+ }],
1530
+ summary: { critical: 0, high: 0, medium: 0, low: 0, informational: 1, totalFiles: 0, scanDurationMs: Date.now() - startTime },
1531
+ crawledUrls: 0,
1532
+ };
1533
+ }
1534
+
1535
+ // Perform HTTP request to check security headers and response characteristics
1536
+ const controller = new AbortController();
1537
+ const timeoutId = setTimeout(() => controller.abort(), 30000); // 30s timeout
1538
+
1539
+ try {
1540
+ const response = await fetch(targetUrl, {
1541
+ method: 'GET',
1542
+ headers: {
1543
+ 'User-Agent': 'AgenticQE-SecurityScanner/3.0',
1544
+ 'Accept': 'text/html,application/json,*/*',
1545
+ },
1546
+ signal: controller.signal,
1547
+ redirect: 'follow',
1548
+ });
1549
+
1550
+ clearTimeout(timeoutId);
1551
+ crawledUrls = 1;
1552
+
1553
+ // Check security headers
1554
+ const headers = response.headers;
1555
+
1556
+ // Check for missing security headers
1557
+ const securityHeaderChecks: Array<{
1558
+ header: string;
1559
+ title: string;
1560
+ description: string;
1561
+ severity: VulnerabilitySeverity;
1562
+ remediation: string;
1563
+ }> = [
1564
+ {
1565
+ header: 'strict-transport-security',
1566
+ title: 'Missing HTTP Strict Transport Security (HSTS)',
1567
+ description: 'HSTS header is missing, allowing downgrade attacks',
1568
+ severity: 'medium',
1569
+ remediation: 'Add Strict-Transport-Security header with appropriate max-age',
1570
+ },
1571
+ {
1572
+ header: 'x-content-type-options',
1573
+ title: 'Missing X-Content-Type-Options Header',
1574
+ description: 'X-Content-Type-Options header is missing, allowing MIME sniffing attacks',
1575
+ severity: 'low',
1576
+ remediation: 'Add X-Content-Type-Options: nosniff header',
1577
+ },
1578
+ {
1579
+ header: 'x-frame-options',
1580
+ title: 'Missing X-Frame-Options Header',
1581
+ description: 'X-Frame-Options header is missing, allowing clickjacking attacks',
1582
+ severity: 'medium',
1583
+ remediation: 'Add X-Frame-Options: DENY or SAMEORIGIN header',
1584
+ },
1585
+ {
1586
+ header: 'content-security-policy',
1587
+ title: 'Missing Content Security Policy',
1588
+ description: 'CSP header is missing, increasing XSS attack surface',
1589
+ severity: 'medium',
1590
+ remediation: 'Implement a Content-Security-Policy header',
1591
+ },
1592
+ {
1593
+ header: 'x-xss-protection',
1594
+ title: 'Missing X-XSS-Protection Header',
1595
+ description: 'X-XSS-Protection header is missing (legacy XSS filter)',
1596
+ severity: 'low',
1597
+ remediation: 'Add X-XSS-Protection: 1; mode=block header',
1598
+ },
1599
+ ];
1600
+
1601
+ for (const check of securityHeaderChecks) {
1602
+ if (!headers.get(check.header)) {
1603
+ vulnerabilities.push({
1604
+ id: uuidv4(),
1605
+ title: check.title,
1606
+ description: check.description,
1607
+ severity: check.severity,
1608
+ category: 'security-misconfiguration',
1609
+ location: {
1610
+ file: targetUrl,
1611
+ snippet: `Response Headers: ${check.header} not present`,
1612
+ },
1613
+ remediation: {
1614
+ description: check.remediation,
1615
+ estimatedEffort: 'minor',
1616
+ automatable: true,
1617
+ },
1618
+ references: [
1619
+ 'https://owasp.org/www-project-secure-headers/',
1620
+ ],
1621
+ });
1622
+ }
1623
+ }
1624
+
1625
+ // Check for insecure cookies
1626
+ const cookies = headers.get('set-cookie');
1627
+ if (cookies) {
1628
+ if (!cookies.toLowerCase().includes('secure')) {
1629
+ vulnerabilities.push({
1630
+ id: uuidv4(),
1631
+ title: 'Cookie Without Secure Flag',
1632
+ description: 'Session cookie is set without the Secure flag',
1633
+ severity: 'medium',
1634
+ category: 'sensitive-data',
1635
+ location: { file: targetUrl, snippet: `Set-Cookie: ${cookies.substring(0, 50)}...` },
1636
+ remediation: { description: 'Add Secure flag to cookies', estimatedEffort: 'trivial', automatable: true },
1637
+ references: ['https://owasp.org/www-community/controls/SecureCookieAttribute'],
1638
+ });
1639
+ }
1640
+ if (!cookies.toLowerCase().includes('httponly')) {
1641
+ vulnerabilities.push({
1642
+ id: uuidv4(),
1643
+ title: 'Cookie Without HttpOnly Flag',
1644
+ description: 'Session cookie is set without the HttpOnly flag, making it accessible to JavaScript',
1645
+ severity: 'medium',
1646
+ category: 'sensitive-data',
1647
+ location: { file: targetUrl, snippet: `Set-Cookie: ${cookies.substring(0, 50)}...` },
1648
+ remediation: { description: 'Add HttpOnly flag to session cookies', estimatedEffort: 'trivial', automatable: true },
1649
+ references: ['https://owasp.org/www-community/HttpOnly'],
1650
+ });
1651
+ }
1652
+ if (!cookies.toLowerCase().includes('samesite')) {
1653
+ vulnerabilities.push({
1654
+ id: uuidv4(),
1655
+ title: 'Cookie Without SameSite Attribute',
1656
+ description: 'Cookie is set without the SameSite attribute, potentially vulnerable to CSRF',
1657
+ severity: 'low',
1658
+ category: 'broken-auth',
1659
+ location: { file: targetUrl, snippet: `Set-Cookie: ${cookies.substring(0, 50)}...` },
1660
+ remediation: { description: 'Add SameSite=Strict or SameSite=Lax to cookies', estimatedEffort: 'trivial', automatable: true },
1661
+ references: ['https://owasp.org/www-community/SameSite'],
1662
+ });
1663
+ }
1664
+ }
1665
+
1666
+ // Check for server information disclosure
1667
+ const server = headers.get('server');
1668
+ if (server && /[0-9]+\.[0-9]+/.test(server)) {
1669
+ vulnerabilities.push({
1670
+ id: uuidv4(),
1671
+ title: 'Server Version Disclosure',
1672
+ description: `Server header reveals version information: ${server}`,
1673
+ severity: 'low',
1674
+ category: 'security-misconfiguration',
1675
+ location: { file: targetUrl, snippet: `Server: ${server}` },
1676
+ remediation: { description: 'Remove or obfuscate server version information', estimatedEffort: 'trivial', automatable: true },
1677
+ references: ['https://owasp.org/www-project-web-security-testing-guide/'],
1678
+ });
1679
+ }
1680
+
1681
+ // Check for HTTPS
1682
+ if (parsedUrl.protocol === 'http:') {
1683
+ vulnerabilities.push({
1684
+ id: uuidv4(),
1685
+ title: 'Insecure HTTP Protocol',
1686
+ description: 'Target is using HTTP instead of HTTPS, exposing data in transit',
1687
+ severity: 'high',
1688
+ category: 'sensitive-data',
1689
+ location: { file: targetUrl },
1690
+ remediation: { description: 'Use HTTPS with valid TLS certificate', estimatedEffort: 'moderate', automatable: false },
1691
+ references: ['https://owasp.org/www-project-web-security-testing-guide/'],
1692
+ });
1693
+ }
1694
+
1695
+ // Try common test endpoints for additional checks
1696
+ const testEndpoints = [
1697
+ { path: '/.git/config', vuln: 'Git Repository Exposed', severity: 'high' as VulnerabilitySeverity },
1698
+ { path: '/.env', vuln: 'Environment File Exposed', severity: 'critical' as VulnerabilitySeverity },
1699
+ { path: '/phpinfo.php', vuln: 'PHP Info Exposed', severity: 'medium' as VulnerabilitySeverity },
1700
+ { path: '/wp-config.php.bak', vuln: 'WordPress Config Backup Exposed', severity: 'critical' as VulnerabilitySeverity },
1701
+ ];
1702
+
1703
+ for (const endpoint of testEndpoints) {
1704
+ try {
1705
+ const testUrl = new URL(endpoint.path, parsedUrl.origin).toString();
1706
+ const testResponse = await fetch(testUrl, {
1707
+ method: 'GET',
1708
+ signal: AbortSignal.timeout(5000),
1709
+ });
1710
+
1711
+ if (testResponse.ok && testResponse.status === 200) {
1712
+ const text = await testResponse.text();
1713
+ // Verify it's actually the sensitive content, not a custom 404
1714
+ if (text.length > 10 && !text.toLowerCase().includes('not found')) {
1715
+ crawledUrls++;
1716
+ vulnerabilities.push({
1717
+ id: uuidv4(),
1718
+ title: endpoint.vuln,
1719
+ description: `Sensitive file found at ${endpoint.path}`,
1720
+ severity: endpoint.severity,
1721
+ category: 'sensitive-data',
1722
+ location: { file: testUrl },
1723
+ remediation: { description: 'Remove or restrict access to sensitive files', estimatedEffort: 'trivial', automatable: true },
1724
+ references: ['https://owasp.org/www-project-web-security-testing-guide/'],
1725
+ });
1726
+ }
1727
+ }
1728
+ } catch {
1729
+ // Endpoint not accessible, which is expected/good
1730
+ }
1731
+ }
1732
+
1733
+ } catch (fetchError) {
1734
+ clearTimeout(timeoutId);
1735
+ const errorMessage = fetchError instanceof Error ? fetchError.message : String(fetchError);
1736
+
1737
+ // Network errors might indicate issues
1738
+ if (errorMessage.includes('certificate') || errorMessage.includes('SSL') || errorMessage.includes('TLS')) {
1739
+ vulnerabilities.push({
1740
+ id: uuidv4(),
1741
+ title: 'TLS/SSL Certificate Issue',
1742
+ description: `Certificate error: ${errorMessage}`,
1743
+ severity: 'high',
1744
+ category: 'security-misconfiguration',
1745
+ location: { file: targetUrl },
1746
+ remediation: { description: 'Fix TLS certificate configuration', estimatedEffort: 'moderate', automatable: false },
1747
+ references: ['https://owasp.org/www-project-web-security-testing-guide/'],
1748
+ });
1749
+ }
1750
+ }
1751
+
1752
+ } catch (error) {
1753
+ console.error('DAST scan failed:', error);
1754
+ }
1755
+
1756
+ const scanDurationMs = Date.now() - startTime;
1757
+
1758
+ // Calculate summary
1759
+ let critical = 0, high = 0, medium = 0, low = 0, informational = 0;
1760
+ for (const vuln of vulnerabilities) {
1761
+ switch (vuln.severity) {
1762
+ case 'critical': critical++; break;
1763
+ case 'high': high++; break;
1764
+ case 'medium': medium++; break;
1765
+ case 'low': low++; break;
1766
+ case 'informational': informational++; break;
1767
+ }
1768
+ }
1769
+
1770
+ return {
1771
+ scanId,
1772
+ targetUrl,
1773
+ vulnerabilities,
1774
+ summary: {
1775
+ critical,
1776
+ high,
1777
+ medium,
1778
+ low,
1779
+ informational,
1780
+ totalFiles: 1,
1781
+ scanDurationMs,
1782
+ },
1783
+ crawledUrls,
1784
+ };
1785
+ }
1786
+
1787
+ /**
1788
+ * Perform dependency scan using OSV API
1789
+ */
1790
+ private async performDependencyScan(): Promise<DependencyScanResult> {
1791
+ const startTime = Date.now();
1792
+ const vulnerabilities: Vulnerability[] = [];
1793
+ const outdatedPackages: OutdatedPackage[] = [];
1794
+
1795
+ try {
1796
+ // Look for package.json in current working directory
1797
+ const manifestPath = path.join(process.cwd(), 'package.json');
1798
+ const dependencies = await this.parseDependencies(manifestPath, 'npm');
1799
+
1800
+ for (const dep of dependencies) {
1801
+ // Check for vulnerabilities via OSV API
1802
+ const vulns = await this.checkDependencyVulnerabilities(dep, dep.ecosystem);
1803
+ vulnerabilities.push(...vulns);
1804
+
1805
+ // Check for outdated packages
1806
+ const outdated = await this.checkOutdated(dep);
1807
+ if (outdated) {
1808
+ outdatedPackages.push(outdated);
1809
+ }
1810
+ }
1811
+
1812
+ const scanDurationMs = Date.now() - startTime;
1813
+ const baseSummary = this.createDependencySummary(vulnerabilities, dependencies.length);
1814
+
1815
+ return {
1816
+ vulnerabilities,
1817
+ outdatedPackages,
1818
+ summary: {
1819
+ ...baseSummary,
1820
+ scanDurationMs,
1821
+ },
1822
+ };
1823
+ } catch (error) {
1824
+ console.error('Dependency scan failed:', error);
1825
+ return {
1826
+ vulnerabilities: [],
1827
+ outdatedPackages: [],
1828
+ summary: {
1829
+ critical: 0,
1830
+ high: 0,
1831
+ medium: 0,
1832
+ low: 0,
1833
+ informational: 0,
1834
+ totalFiles: 0,
1835
+ scanDurationMs: Date.now() - startTime,
1836
+ },
1837
+ };
1838
+ }
1839
+ }
1840
+
1841
+ /**
1842
+ * Perform secret scan on source files
1843
+ */
1844
+ private async performSecretScan(): Promise<SecretScanResult> {
1845
+ const secretsFound: DetectedSecret[] = [];
1846
+ let filesScanned = 0;
1847
+
1848
+ try {
1849
+ // Get list of source files to scan
1850
+ const sourceFiles = await this.findSourceFiles(process.cwd());
1851
+
1852
+ for (const filePath of sourceFiles) {
1853
+ if (this.shouldExclude(filePath)) {
1854
+ continue;
1855
+ }
1856
+
1857
+ filesScanned++;
1858
+ const filePathObj = { value: filePath } as FilePath;
1859
+ const secrets = await this.scanFileForSecrets(filePathObj);
1860
+ secretsFound.push(...secrets);
1861
+ }
1862
+ } catch (error) {
1863
+ console.error('Secret scan failed:', error);
1864
+ }
1865
+
1866
+ return {
1867
+ secretsFound,
1868
+ filesScanned,
1869
+ };
1870
+ }
1871
+
1872
+ /**
1873
+ * Find source files in a directory (recursively)
1874
+ */
1875
+ private async findSourceFiles(dir: string, files: string[] = []): Promise<string[]> {
1876
+ const sourceExtensions = ['.ts', '.js', '.tsx', '.jsx', '.json', '.env', '.yaml', '.yml', '.config'];
1877
+
1878
+ try {
1879
+ const entries = await fs.readdir(dir, { withFileTypes: true });
1880
+
1881
+ for (const entry of entries) {
1882
+ const fullPath = path.join(dir, entry.name);
1883
+
1884
+ // Skip excluded directories
1885
+ if (this.shouldExclude(fullPath)) {
1886
+ continue;
1887
+ }
1888
+
1889
+ if (entry.isDirectory()) {
1890
+ await this.findSourceFiles(fullPath, files);
1891
+ } else if (entry.isFile()) {
1892
+ const ext = path.extname(entry.name).toLowerCase();
1893
+ if (sourceExtensions.includes(ext) || entry.name.startsWith('.env')) {
1894
+ files.push(fullPath);
1895
+ }
1896
+ }
1897
+ }
1898
+ } catch (error) {
1899
+ // Silently skip directories we can't read
1900
+ }
1901
+
1902
+ return files;
1903
+ }
1904
+
1905
+ private calculateOverallRisk(
1906
+ sast?: SASTResult,
1907
+ dast?: DASTResult,
1908
+ deps?: DependencyScanResult,
1909
+ secrets?: SecretScanResult
1910
+ ): RiskScore {
1911
+ let riskValue = 0;
1912
+ let weights = 0;
1913
+
1914
+ if (sast) {
1915
+ riskValue +=
1916
+ this.calculateScanRisk(sast.summary) * 0.35;
1917
+ weights += 0.35;
1918
+ }
1919
+
1920
+ if (dast) {
1921
+ riskValue +=
1922
+ this.calculateScanRisk(dast.summary) * 0.25;
1923
+ weights += 0.25;
1924
+ }
1925
+
1926
+ if (deps) {
1927
+ riskValue +=
1928
+ this.calculateScanRisk(deps.summary) * 0.25;
1929
+ weights += 0.25;
1930
+ }
1931
+
1932
+ if (secrets) {
1933
+ const secretRisk = secrets.secretsFound.length > 0 ? 0.9 : 0.1;
1934
+ riskValue += secretRisk * 0.15;
1935
+ weights += 0.15;
1936
+ }
1937
+
1938
+ const normalizedRisk = weights > 0 ? riskValue / weights : 0;
1939
+
1940
+ // Return RiskScore-compatible object
1941
+ return {
1942
+ value: Math.min(1, normalizedRisk),
1943
+ percentage: normalizedRisk * 100,
1944
+ level: normalizedRisk >= 0.8 ? 'critical' :
1945
+ normalizedRisk >= 0.6 ? 'high' :
1946
+ normalizedRisk >= 0.3 ? 'medium' : 'low',
1947
+ } as unknown as RiskScore;
1948
+ }
1949
+
1950
+ private calculateScanRisk(summary: ScanSummary): number {
1951
+ const weights = {
1952
+ critical: 1.0,
1953
+ high: 0.7,
1954
+ medium: 0.4,
1955
+ low: 0.1,
1956
+ informational: 0.02,
1957
+ };
1958
+
1959
+ const totalIssues =
1960
+ summary.critical +
1961
+ summary.high +
1962
+ summary.medium +
1963
+ summary.low +
1964
+ summary.informational;
1965
+
1966
+ if (totalIssues === 0) return 0;
1967
+
1968
+ const weightedSum =
1969
+ summary.critical * weights.critical +
1970
+ summary.high * weights.high +
1971
+ summary.medium * weights.medium +
1972
+ summary.low * weights.low +
1973
+ summary.informational * weights.informational;
1974
+
1975
+ return Math.min(1, weightedSum / 10);
1976
+ }
1977
+
1978
+ private generateRecommendations(
1979
+ sast?: SASTResult,
1980
+ dast?: DASTResult,
1981
+ deps?: DependencyScanResult,
1982
+ secrets?: SecretScanResult
1983
+ ): string[] {
1984
+ const recommendations: string[] = [];
1985
+
1986
+ if (sast && sast.summary.critical > 0) {
1987
+ recommendations.push(
1988
+ `Address ${sast.summary.critical} critical vulnerabilities found in static analysis`
1989
+ );
1990
+ }
1991
+
1992
+ if (dast && dast.summary.high > 0) {
1993
+ recommendations.push(
1994
+ `Fix ${dast.summary.high} high-severity issues found in dynamic testing`
1995
+ );
1996
+ }
1997
+
1998
+ if (deps && deps.outdatedPackages.length > 5) {
1999
+ recommendations.push(
2000
+ `Update ${deps.outdatedPackages.length} outdated dependencies`
2001
+ );
2002
+ }
2003
+
2004
+ if (secrets && secrets.secretsFound.length > 0) {
2005
+ recommendations.push(
2006
+ `Remove ${secrets.secretsFound.length} exposed secrets and rotate credentials`
2007
+ );
2008
+ }
2009
+
2010
+ if (recommendations.length === 0) {
2011
+ recommendations.push('Security posture is good. Continue regular scanning.');
2012
+ }
2013
+
2014
+ return recommendations;
2015
+ }
2016
+
2017
+ private async getRecentAudits(): Promise<SecurityAuditReport[]> {
2018
+ // Query recent audits from memory storage
2019
+ const keys = await this.memory.search('security:audit:*', 10);
2020
+ const audits: SecurityAuditReport[] = [];
2021
+
2022
+ for (const key of keys) {
2023
+ const audit = await this.memory.get<SecurityAuditReport>(key);
2024
+ if (audit) {
2025
+ audits.push(audit);
2026
+ }
2027
+ }
2028
+
2029
+ return audits.sort(
2030
+ (a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime()
2031
+ );
2032
+ }
2033
+
2034
+ private countBySeverity(
2035
+ audit: SecurityAuditReport | undefined,
2036
+ severity: 'critical' | 'high'
2037
+ ): number {
2038
+ if (!audit) return 0;
2039
+
2040
+ let count = 0;
2041
+ if (audit.sastResults) count += audit.sastResults.summary[severity];
2042
+ if (audit.dastResults) count += audit.dastResults.summary[severity];
2043
+ if (audit.dependencyResults) count += audit.dependencyResults.summary[severity];
2044
+
2045
+ return count;
2046
+ }
2047
+
2048
+ private countOpenVulnerabilities(audit: SecurityAuditReport | undefined): number {
2049
+ if (!audit) return 0;
2050
+
2051
+ let count = 0;
2052
+ if (audit.sastResults) count += audit.sastResults.vulnerabilities.length;
2053
+ if (audit.dastResults) count += audit.dastResults.vulnerabilities.length;
2054
+ if (audit.dependencyResults) count += audit.dependencyResults.vulnerabilities.length;
2055
+
2056
+ return count;
2057
+ }
2058
+
2059
+ private calculateTrend(
2060
+ latest: SecurityAuditReport | undefined,
2061
+ previous: SecurityAuditReport | undefined
2062
+ ): 'improving' | 'stable' | 'declining' {
2063
+ if (!latest || !previous) return 'stable';
2064
+
2065
+ const latestScore = this.countOpenVulnerabilities(latest);
2066
+ const previousScore = this.countOpenVulnerabilities(previous);
2067
+
2068
+ if (latestScore < previousScore * 0.9) return 'improving';
2069
+ if (latestScore > previousScore * 1.1) return 'declining';
2070
+ return 'stable';
2071
+ }
2072
+
2073
+ private calculatePostureScore(
2074
+ critical: number,
2075
+ high: number,
2076
+ open: number
2077
+ ): number {
2078
+ // Start at 100, deduct points for issues
2079
+ let score = 100;
2080
+ score -= critical * 20;
2081
+ score -= high * 10;
2082
+ score -= open * 2;
2083
+ return Math.max(0, Math.min(100, score));
2084
+ }
2085
+
2086
+ private generatePostureRecommendations(
2087
+ critical: number,
2088
+ high: number,
2089
+ score: number
2090
+ ): string[] {
2091
+ const recommendations: string[] = [];
2092
+
2093
+ if (critical > 0) {
2094
+ recommendations.push('Immediately address all critical vulnerabilities');
2095
+ }
2096
+
2097
+ if (high > 3) {
2098
+ recommendations.push('Prioritize fixing high-severity issues');
2099
+ }
2100
+
2101
+ if (score < 50) {
2102
+ recommendations.push('Consider a comprehensive security review');
2103
+ recommendations.push('Implement automated security scanning in CI/CD');
2104
+ }
2105
+
2106
+ if (score >= 80) {
2107
+ recommendations.push('Maintain current security practices');
2108
+ recommendations.push('Consider penetration testing for deeper analysis');
2109
+ }
2110
+
2111
+ return recommendations;
2112
+ }
2113
+
2114
+ /**
2115
+ * Count vulnerabilities resolved in the last week
2116
+ * Calculates by comparing consecutive audit reports
2117
+ */
2118
+ private async countResolvedLastWeek(): Promise<number> {
2119
+ try {
2120
+ const audits = await this.getRecentAudits();
2121
+ if (audits.length < 2) return 0;
2122
+
2123
+ const oneWeekAgo = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000);
2124
+
2125
+ // Find audits from this week
2126
+ const recentAudits = audits.filter(
2127
+ (audit) => new Date(audit.timestamp) >= oneWeekAgo
2128
+ );
2129
+
2130
+ if (recentAudits.length < 2) return 0;
2131
+
2132
+ // Compare vulnerability counts between first and last audit of the week
2133
+ const oldest = recentAudits[recentAudits.length - 1];
2134
+ const newest = recentAudits[0];
2135
+
2136
+ const oldCount = this.countOpenVulnerabilities(oldest);
2137
+ const newCount = this.countOpenVulnerabilities(newest);
2138
+
2139
+ // Resolved = old count - new count (if positive)
2140
+ return Math.max(0, oldCount - newCount);
2141
+ } catch (error) {
2142
+ console.error('Failed to count resolved vulnerabilities:', error);
2143
+ return 0;
2144
+ }
2145
+ }
2146
+
2147
+ /**
2148
+ * Calculate average resolution time from historical audit data
2149
+ */
2150
+ private async calculateAverageResolutionTime(): Promise<number> {
2151
+ try {
2152
+ const audits = await this.getRecentAudits();
2153
+ if (audits.length < 2) return 72; // Default to 72 hours
2154
+
2155
+ // Track vulnerabilities across audits to calculate resolution time
2156
+ const vulnFirstSeen = new Map<string, Date>();
2157
+ const resolutionTimes: number[] = [];
2158
+
2159
+ // Process audits from oldest to newest
2160
+ const sortedAudits = [...audits].reverse();
2161
+
2162
+ for (const audit of sortedAudits) {
2163
+ const currentVulnIds = new Set<string>();
2164
+
2165
+ // Collect all vulnerability IDs in this audit
2166
+ if (audit.sastResults) {
2167
+ audit.sastResults.vulnerabilities.forEach((v) => currentVulnIds.add(v.id));
2168
+ }
2169
+ if (audit.dastResults) {
2170
+ audit.dastResults.vulnerabilities.forEach((v) => currentVulnIds.add(v.id));
2171
+ }
2172
+ if (audit.dependencyResults) {
2173
+ audit.dependencyResults.vulnerabilities.forEach((v) => currentVulnIds.add(v.id));
2174
+ }
2175
+
2176
+ // Track new vulnerabilities
2177
+ for (const vulnId of currentVulnIds) {
2178
+ if (!vulnFirstSeen.has(vulnId)) {
2179
+ vulnFirstSeen.set(vulnId, audit.timestamp);
2180
+ }
2181
+ }
2182
+
2183
+ // Check for resolved vulnerabilities
2184
+ for (const [vulnId, firstSeen] of vulnFirstSeen) {
2185
+ if (!currentVulnIds.has(vulnId)) {
2186
+ const resolutionTime = (audit.timestamp.getTime() - firstSeen.getTime()) / (1000 * 60 * 60);
2187
+ resolutionTimes.push(resolutionTime);
2188
+ vulnFirstSeen.delete(vulnId);
2189
+ }
2190
+ }
2191
+ }
2192
+
2193
+ if (resolutionTimes.length === 0) return 72; // Default
2194
+
2195
+ // Calculate average
2196
+ const sum = resolutionTimes.reduce((acc, time) => acc + time, 0);
2197
+ return Math.round(sum / resolutionTimes.length);
2198
+ } catch (error) {
2199
+ console.error('Failed to calculate average resolution time:', error);
2200
+ return 72; // Default to 72 hours
2201
+ }
2202
+ }
2203
+
2204
+ private determinePriorityBucket(
2205
+ vuln: Vulnerability
2206
+ ): keyof TriagedVulnerabilities {
2207
+ const effort = vuln.remediation.estimatedEffort;
2208
+
2209
+ if (vuln.severity === 'critical') {
2210
+ return 'immediate';
2211
+ }
2212
+
2213
+ if (vuln.severity === 'high') {
2214
+ return effort === 'trivial' || effort === 'minor' ? 'immediate' : 'shortTerm';
2215
+ }
2216
+
2217
+ if (vuln.severity === 'medium') {
2218
+ return effort === 'major' ? 'longTerm' : 'mediumTerm';
2219
+ }
2220
+
2221
+ if (vuln.severity === 'low' || vuln.severity === 'informational') {
2222
+ return 'longTerm';
2223
+ }
2224
+
2225
+ return 'accepted';
2226
+ }
2227
+ }