@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,2230 @@
1
+ /**
2
+ * Agentic QE v3 - Test Generation Service
3
+ * Implements ITestGenerationService for AI-powered test generation
4
+ *
5
+ * Uses @faker-js/faker for realistic test data generation
6
+ * Uses TypeScript AST parser for code analysis
7
+ */
8
+ import { v4 as uuidv4 } from 'uuid';
9
+ import * as fs from 'fs';
10
+ import * as path from 'path';
11
+ import * as ts from 'typescript';
12
+ import { faker } from '@faker-js/faker';
13
+ import { ok, err } from '../../../shared/types';
14
+ const DEFAULT_CONFIG = {
15
+ defaultFramework: 'jest',
16
+ maxTestsPerFile: 50,
17
+ coverageTargetDefault: 80,
18
+ enableAIGeneration: true,
19
+ };
20
+ /**
21
+ * Test Generation Service Implementation
22
+ * Uses heuristic analysis and AST parsing to generate test cases from source code
23
+ * Supports TDD workflow, property-based testing, and pattern-aware generation
24
+ */
25
+ export class TestGeneratorService {
26
+ memory;
27
+ config;
28
+ constructor(memory, config = {}) {
29
+ this.memory = memory;
30
+ this.config = { ...DEFAULT_CONFIG, ...config };
31
+ }
32
+ /**
33
+ * Generate tests for given source files
34
+ */
35
+ async generateTests(request) {
36
+ try {
37
+ const { sourceFiles, testType, framework, coverageTarget = this.config.coverageTargetDefault, patterns = [], } = request;
38
+ if (sourceFiles.length === 0) {
39
+ return err(new Error('No source files provided'));
40
+ }
41
+ const tests = [];
42
+ const patternsUsed = [];
43
+ // Process each source file
44
+ for (const sourceFile of sourceFiles) {
45
+ const fileTests = await this.generateTestsForFile(sourceFile, testType, framework, patterns);
46
+ if (fileTests.success) {
47
+ tests.push(...fileTests.value.tests);
48
+ patternsUsed.push(...fileTests.value.patternsUsed);
49
+ }
50
+ }
51
+ // Calculate coverage estimate based on test count and complexity
52
+ const coverageEstimate = this.estimateCoverage(tests, coverageTarget);
53
+ // Store generation metadata in memory
54
+ await this.storeGenerationMetadata(tests, patternsUsed);
55
+ return ok({
56
+ tests,
57
+ coverageEstimate,
58
+ patternsUsed: [...new Set(patternsUsed)],
59
+ });
60
+ }
61
+ catch (error) {
62
+ return err(error instanceof Error ? error : new Error(String(error)));
63
+ }
64
+ }
65
+ /**
66
+ * Generate tests specifically targeting coverage gaps
67
+ */
68
+ async generateForCoverageGap(file, uncoveredLines, framework) {
69
+ try {
70
+ if (uncoveredLines.length === 0) {
71
+ return ok([]);
72
+ }
73
+ // Analyze uncovered lines and generate targeted tests
74
+ // Groups consecutive lines and generates tests for each block
75
+ const tests = [];
76
+ // Group uncovered lines into logical blocks
77
+ const lineGroups = this.groupConsecutiveLines(uncoveredLines);
78
+ for (const group of lineGroups) {
79
+ const test = await this.generateTestForLines(file, group, framework);
80
+ if (test) {
81
+ tests.push(test);
82
+ }
83
+ }
84
+ return ok(tests);
85
+ }
86
+ catch (error) {
87
+ return err(error instanceof Error ? error : new Error(String(error)));
88
+ }
89
+ }
90
+ /**
91
+ * Generate tests following TDD workflow
92
+ */
93
+ async generateTDDTests(request) {
94
+ try {
95
+ const { feature, behavior, framework, phase } = request;
96
+ switch (phase) {
97
+ case 'red':
98
+ // Generate failing test first
99
+ return ok(await this.generateRedPhaseTest(feature, behavior, framework));
100
+ case 'green':
101
+ // Generate minimal implementation to make test pass
102
+ return ok(await this.generateGreenPhaseCode(feature, behavior, framework));
103
+ case 'refactor':
104
+ // Suggest refactoring improvements
105
+ return ok(await this.generateRefactoringSuggestions(feature, behavior));
106
+ default:
107
+ return err(new Error(`Unknown TDD phase: ${phase}`));
108
+ }
109
+ }
110
+ catch (error) {
111
+ return err(error instanceof Error ? error : new Error(String(error)));
112
+ }
113
+ }
114
+ /**
115
+ * Generate property-based tests
116
+ */
117
+ async generatePropertyTests(request) {
118
+ try {
119
+ const { function: funcName, properties, constraints = {} } = request;
120
+ // Generate property-based tests using fast-check generators
121
+ const tests = properties.map((property) => ({
122
+ property,
123
+ testCode: this.generatePropertyTestCode(funcName, property, constraints),
124
+ generators: this.inferGenerators(property, constraints),
125
+ }));
126
+ return ok({
127
+ tests,
128
+ arbitraries: this.collectArbitraries(tests),
129
+ });
130
+ }
131
+ catch (error) {
132
+ return err(error instanceof Error ? error : new Error(String(error)));
133
+ }
134
+ }
135
+ /**
136
+ * Generate test data based on schema
137
+ */
138
+ async generateTestData(request) {
139
+ try {
140
+ const { schema, count, locale = 'en', preserveRelationships = false } = request;
141
+ // Generate test data using @faker-js/faker with seeded randomness
142
+ const seed = Date.now();
143
+ const records = [];
144
+ for (let i = 0; i < count; i++) {
145
+ const record = this.generateRecordFromSchema(schema, seed + i, locale);
146
+ records.push(record);
147
+ }
148
+ // Handle relationships if needed
149
+ if (preserveRelationships) {
150
+ this.linkRelatedRecords(records, schema);
151
+ }
152
+ return ok({
153
+ records,
154
+ schema,
155
+ seed,
156
+ });
157
+ }
158
+ catch (error) {
159
+ return err(error instanceof Error ? error : new Error(String(error)));
160
+ }
161
+ }
162
+ // ============================================================================
163
+ // Private Helper Methods
164
+ // ============================================================================
165
+ async generateTestsForFile(sourceFile, testType, framework, patterns) {
166
+ const testFile = this.getTestFilePath(sourceFile, framework);
167
+ const patternsUsed = [];
168
+ // Look for applicable patterns from memory
169
+ const applicablePatterns = await this.findApplicablePatterns(sourceFile, patterns);
170
+ patternsUsed.push(...applicablePatterns.map((p) => p.name));
171
+ // Try to read and parse the source file for real AST analysis
172
+ let codeAnalysis = null;
173
+ try {
174
+ const content = fs.readFileSync(sourceFile, 'utf-8');
175
+ codeAnalysis = this.analyzeSourceCode(content, sourceFile);
176
+ }
177
+ catch {
178
+ // File doesn't exist or can't be read - use stub generation
179
+ }
180
+ // Generate test code based on analysis or fall back to stub
181
+ let testCode;
182
+ if (codeAnalysis && (codeAnalysis.functions.length > 0 || codeAnalysis.classes.length > 0)) {
183
+ testCode = this.generateRealTestCode(sourceFile, testType, framework, codeAnalysis, applicablePatterns);
184
+ }
185
+ else {
186
+ testCode = this.generateStubTestCode(sourceFile, testType, framework, applicablePatterns);
187
+ }
188
+ const test = {
189
+ id: uuidv4(),
190
+ name: `${this.extractModuleName(sourceFile)} tests`,
191
+ sourceFile,
192
+ testFile,
193
+ testCode,
194
+ type: testType,
195
+ assertions: this.countAssertions(testCode),
196
+ };
197
+ return ok({ tests: [test], patternsUsed });
198
+ }
199
+ /**
200
+ * Analyze source code using TypeScript AST
201
+ */
202
+ analyzeSourceCode(content, fileName) {
203
+ const sourceFile = ts.createSourceFile(path.basename(fileName), content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
204
+ const functions = [];
205
+ const classes = [];
206
+ const visit = (node) => {
207
+ // Extract function declarations
208
+ if (ts.isFunctionDeclaration(node) && node.name) {
209
+ functions.push(this.extractFunctionInfo(node, sourceFile));
210
+ }
211
+ // Extract arrow functions assigned to variables
212
+ else if (ts.isVariableStatement(node)) {
213
+ for (const declaration of node.declarationList.declarations) {
214
+ if (ts.isVariableDeclaration(declaration) &&
215
+ declaration.initializer &&
216
+ (ts.isArrowFunction(declaration.initializer) ||
217
+ ts.isFunctionExpression(declaration.initializer))) {
218
+ const name = declaration.name.getText(sourceFile);
219
+ functions.push(this.extractArrowFunctionInfo(name, declaration.initializer, sourceFile, node));
220
+ }
221
+ }
222
+ }
223
+ // Extract class declarations
224
+ else if (ts.isClassDeclaration(node) && node.name) {
225
+ classes.push(this.extractClassInfo(node, sourceFile));
226
+ }
227
+ ts.forEachChild(node, visit);
228
+ };
229
+ ts.forEachChild(sourceFile, visit);
230
+ return { functions, classes };
231
+ }
232
+ /**
233
+ * Extract function information from AST
234
+ */
235
+ extractFunctionInfo(node, sourceFile) {
236
+ const name = node.name?.getText(sourceFile) || 'anonymous';
237
+ const parameters = this.extractParameters(node.parameters, sourceFile);
238
+ const returnType = node.type?.getText(sourceFile);
239
+ const isAsync = node.modifiers?.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword) ?? false;
240
+ const isExported = node.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword) ?? false;
241
+ const { line: startLine } = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile));
242
+ const { line: endLine } = sourceFile.getLineAndCharacterOfPosition(node.getEnd());
243
+ return {
244
+ name,
245
+ parameters,
246
+ returnType,
247
+ isAsync,
248
+ isExported,
249
+ complexity: this.calculateComplexity(node),
250
+ startLine: startLine + 1,
251
+ endLine: endLine + 1,
252
+ body: node.body?.getText(sourceFile),
253
+ };
254
+ }
255
+ /**
256
+ * Extract arrow function information from AST
257
+ */
258
+ extractArrowFunctionInfo(name, node, sourceFile, parentNode) {
259
+ const parameters = this.extractParameters(node.parameters, sourceFile);
260
+ const returnType = node.type?.getText(sourceFile);
261
+ const isAsync = node.modifiers?.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword) ?? false;
262
+ const isExported = ts.isVariableStatement(parentNode) &&
263
+ (parentNode.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword) ?? false);
264
+ const { line: startLine } = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile));
265
+ const { line: endLine } = sourceFile.getLineAndCharacterOfPosition(node.getEnd());
266
+ return {
267
+ name,
268
+ parameters,
269
+ returnType,
270
+ isAsync,
271
+ isExported,
272
+ complexity: this.calculateComplexity(node),
273
+ startLine: startLine + 1,
274
+ endLine: endLine + 1,
275
+ body: node.body?.getText(sourceFile),
276
+ };
277
+ }
278
+ /**
279
+ * Extract class information from AST
280
+ */
281
+ extractClassInfo(node, sourceFile) {
282
+ const name = node.name?.getText(sourceFile) || 'AnonymousClass';
283
+ const methods = [];
284
+ const properties = [];
285
+ let hasConstructor = false;
286
+ let constructorParams;
287
+ const isExported = node.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword) ?? false;
288
+ for (const member of node.members) {
289
+ if (ts.isMethodDeclaration(member)) {
290
+ const methodName = member.name.getText(sourceFile);
291
+ const parameters = this.extractParameters(member.parameters, sourceFile);
292
+ const returnType = member.type?.getText(sourceFile);
293
+ const isAsync = member.modifiers?.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword) ?? false;
294
+ const { line: startLine } = sourceFile.getLineAndCharacterOfPosition(member.getStart(sourceFile));
295
+ const { line: endLine } = sourceFile.getLineAndCharacterOfPosition(member.getEnd());
296
+ methods.push({
297
+ name: methodName,
298
+ parameters,
299
+ returnType,
300
+ isAsync,
301
+ isExported: false,
302
+ complexity: this.calculateComplexity(member),
303
+ startLine: startLine + 1,
304
+ endLine: endLine + 1,
305
+ body: member.body?.getText(sourceFile),
306
+ });
307
+ }
308
+ else if (ts.isConstructorDeclaration(member)) {
309
+ hasConstructor = true;
310
+ constructorParams = this.extractParameters(member.parameters, sourceFile);
311
+ }
312
+ else if (ts.isPropertyDeclaration(member)) {
313
+ const propName = member.name.getText(sourceFile);
314
+ const propType = member.type?.getText(sourceFile);
315
+ const isPrivate = member.modifiers?.some((m) => m.kind === ts.SyntaxKind.PrivateKeyword) ?? false;
316
+ const isReadonly = member.modifiers?.some((m) => m.kind === ts.SyntaxKind.ReadonlyKeyword) ?? false;
317
+ properties.push({
318
+ name: propName,
319
+ type: propType,
320
+ isPrivate,
321
+ isReadonly,
322
+ });
323
+ }
324
+ }
325
+ return {
326
+ name,
327
+ methods,
328
+ properties,
329
+ isExported,
330
+ hasConstructor,
331
+ constructorParams,
332
+ };
333
+ }
334
+ /**
335
+ * Extract parameters from a function
336
+ */
337
+ extractParameters(params, sourceFile) {
338
+ return params.map((param) => ({
339
+ name: param.name.getText(sourceFile),
340
+ type: param.type?.getText(sourceFile),
341
+ optional: param.questionToken !== undefined,
342
+ defaultValue: param.initializer?.getText(sourceFile),
343
+ }));
344
+ }
345
+ /**
346
+ * Calculate cyclomatic complexity of a node
347
+ */
348
+ calculateComplexity(node) {
349
+ let complexity = 1;
350
+ const visit = (n) => {
351
+ switch (n.kind) {
352
+ case ts.SyntaxKind.IfStatement:
353
+ case ts.SyntaxKind.ForStatement:
354
+ case ts.SyntaxKind.ForInStatement:
355
+ case ts.SyntaxKind.ForOfStatement:
356
+ case ts.SyntaxKind.WhileStatement:
357
+ case ts.SyntaxKind.DoStatement:
358
+ case ts.SyntaxKind.CaseClause:
359
+ case ts.SyntaxKind.CatchClause:
360
+ case ts.SyntaxKind.ConditionalExpression:
361
+ complexity++;
362
+ break;
363
+ case ts.SyntaxKind.BinaryExpression: {
364
+ const binary = n;
365
+ if (binary.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandToken ||
366
+ binary.operatorToken.kind === ts.SyntaxKind.BarBarToken) {
367
+ complexity++;
368
+ }
369
+ break;
370
+ }
371
+ }
372
+ ts.forEachChild(n, visit);
373
+ };
374
+ ts.forEachChild(node, visit);
375
+ return complexity;
376
+ }
377
+ /**
378
+ * Generate real test code based on AST analysis
379
+ */
380
+ generateRealTestCode(sourceFile, testType, framework, analysis, patterns) {
381
+ const moduleName = this.extractModuleName(sourceFile);
382
+ const importPath = this.getImportPath(sourceFile);
383
+ switch (framework) {
384
+ case 'jest':
385
+ case 'vitest':
386
+ return this.generateRealJestVitestTest(moduleName, importPath, testType, analysis, patterns, framework);
387
+ case 'mocha':
388
+ return this.generateRealMochaTest(moduleName, importPath, testType, analysis, patterns);
389
+ case 'pytest':
390
+ return this.generateRealPytestTest(moduleName, importPath, testType, analysis, patterns);
391
+ default:
392
+ return this.generateRealJestVitestTest(moduleName, importPath, testType, analysis, patterns, 'vitest');
393
+ }
394
+ }
395
+ /**
396
+ * Generate real Jest/Vitest test code
397
+ */
398
+ generateRealJestVitestTest(moduleName, importPath, testType, analysis, patterns, framework) {
399
+ const patternComment = patterns.length > 0
400
+ ? `// Applied patterns: ${patterns.map((p) => p.name).join(', ')}\n`
401
+ : '';
402
+ // Collect all exports to import
403
+ const exports = [];
404
+ for (const fn of analysis.functions) {
405
+ if (fn.isExported)
406
+ exports.push(fn.name);
407
+ }
408
+ for (const cls of analysis.classes) {
409
+ if (cls.isExported)
410
+ exports.push(cls.name);
411
+ }
412
+ const importStatement = exports.length > 0
413
+ ? `import { ${exports.join(', ')} } from '${importPath}';`
414
+ : `import * as ${moduleName} from '${importPath}';`;
415
+ let testCode = `${patternComment}import { describe, it, expect, beforeEach${framework === 'vitest' ? ', vi' : ''} } from '${framework}';
416
+ ${importStatement}
417
+
418
+ `;
419
+ // Generate tests for each function
420
+ for (const fn of analysis.functions) {
421
+ testCode += this.generateFunctionTests(fn, testType);
422
+ }
423
+ // Generate tests for each class
424
+ for (const cls of analysis.classes) {
425
+ testCode += this.generateClassTests(cls, testType);
426
+ }
427
+ return testCode;
428
+ }
429
+ /**
430
+ * Generate tests for a function
431
+ */
432
+ generateFunctionTests(fn, _testType) {
433
+ const testCases = this.generateTestCasesForFunction(fn);
434
+ let code = `describe('${fn.name}', () => {\n`;
435
+ for (const testCase of testCases) {
436
+ if (testCase.setup) {
437
+ code += ` ${testCase.setup}\n\n`;
438
+ }
439
+ const asyncPrefix = fn.isAsync ? 'async ' : '';
440
+ code += ` it('${testCase.description}', ${asyncPrefix}() => {\n`;
441
+ code += ` ${testCase.action}\n`;
442
+ code += ` ${testCase.assertion}\n`;
443
+ code += ` });\n\n`;
444
+ }
445
+ code += `});\n\n`;
446
+ return code;
447
+ }
448
+ /**
449
+ * Generate test cases for a function
450
+ */
451
+ generateTestCasesForFunction(fn) {
452
+ const testCases = [];
453
+ // Generate valid input test
454
+ const validParams = fn.parameters.map((p) => this.generateTestValue(p)).join(', ');
455
+ const fnCall = fn.isAsync ? `await ${fn.name}(${validParams})` : `${fn.name}(${validParams})`;
456
+ testCases.push({
457
+ description: 'should handle valid input correctly',
458
+ type: 'happy-path',
459
+ action: `const result = ${fnCall};`,
460
+ assertion: 'expect(result).toBeDefined();',
461
+ });
462
+ // Generate tests for each parameter
463
+ for (const param of fn.parameters) {
464
+ if (!param.optional) {
465
+ // Test with undefined
466
+ const paramsWithUndefined = fn.parameters
467
+ .map((p) => (p.name === param.name ? 'undefined' : this.generateTestValue(p)))
468
+ .join(', ');
469
+ testCases.push({
470
+ description: `should handle undefined ${param.name}`,
471
+ type: 'error-handling',
472
+ action: fn.isAsync
473
+ ? `const action = async () => await ${fn.name}(${paramsWithUndefined});`
474
+ : `const action = () => ${fn.name}(${paramsWithUndefined});`,
475
+ assertion: 'expect(action).toThrow();',
476
+ });
477
+ }
478
+ // Type-specific boundary tests
479
+ if (param.type?.includes('string')) {
480
+ const paramsWithEmpty = fn.parameters
481
+ .map((p) => (p.name === param.name ? "''" : this.generateTestValue(p)))
482
+ .join(', ');
483
+ const emptyCall = fn.isAsync
484
+ ? `await ${fn.name}(${paramsWithEmpty})`
485
+ : `${fn.name}(${paramsWithEmpty})`;
486
+ testCases.push({
487
+ description: `should handle empty string for ${param.name}`,
488
+ type: 'boundary',
489
+ action: `const result = ${emptyCall};`,
490
+ assertion: 'expect(result).toBeDefined();',
491
+ });
492
+ }
493
+ if (param.type?.includes('number')) {
494
+ const paramsWithZero = fn.parameters
495
+ .map((p) => (p.name === param.name ? '0' : this.generateTestValue(p)))
496
+ .join(', ');
497
+ const zeroCall = fn.isAsync
498
+ ? `await ${fn.name}(${paramsWithZero})`
499
+ : `${fn.name}(${paramsWithZero})`;
500
+ testCases.push({
501
+ description: `should handle zero for ${param.name}`,
502
+ type: 'boundary',
503
+ action: `const result = ${zeroCall};`,
504
+ assertion: 'expect(result).toBeDefined();',
505
+ });
506
+ const paramsWithNegative = fn.parameters
507
+ .map((p) => (p.name === param.name ? '-1' : this.generateTestValue(p)))
508
+ .join(', ');
509
+ const negativeCall = fn.isAsync
510
+ ? `await ${fn.name}(${paramsWithNegative})`
511
+ : `${fn.name}(${paramsWithNegative})`;
512
+ testCases.push({
513
+ description: `should handle negative value for ${param.name}`,
514
+ type: 'edge-case',
515
+ action: `const result = ${negativeCall};`,
516
+ assertion: 'expect(result).toBeDefined();',
517
+ });
518
+ }
519
+ if (param.type?.includes('[]') || param.type?.includes('Array')) {
520
+ const paramsWithEmpty = fn.parameters
521
+ .map((p) => (p.name === param.name ? '[]' : this.generateTestValue(p)))
522
+ .join(', ');
523
+ const emptyCall = fn.isAsync
524
+ ? `await ${fn.name}(${paramsWithEmpty})`
525
+ : `${fn.name}(${paramsWithEmpty})`;
526
+ testCases.push({
527
+ description: `should handle empty array for ${param.name}`,
528
+ type: 'boundary',
529
+ action: `const result = ${emptyCall};`,
530
+ assertion: 'expect(result).toBeDefined();',
531
+ });
532
+ }
533
+ }
534
+ // Async rejection test
535
+ if (fn.isAsync) {
536
+ testCases.push({
537
+ description: 'should handle async rejection gracefully',
538
+ type: 'error-handling',
539
+ action: `// Mock or setup to cause rejection`,
540
+ assertion: `// await expect(${fn.name}(invalidParams)).rejects.toThrow();`,
541
+ });
542
+ }
543
+ return testCases;
544
+ }
545
+ /**
546
+ * Generate tests for a class
547
+ */
548
+ generateClassTests(cls, testType) {
549
+ let code = `describe('${cls.name}', () => {\n`;
550
+ code += ` let instance: ${cls.name};\n\n`;
551
+ // Setup
552
+ if (cls.hasConstructor && cls.constructorParams) {
553
+ const constructorArgs = cls.constructorParams
554
+ .map((p) => this.generateTestValue(p))
555
+ .join(', ');
556
+ code += ` beforeEach(() => {\n`;
557
+ code += ` instance = new ${cls.name}(${constructorArgs});\n`;
558
+ code += ` });\n\n`;
559
+ }
560
+ else {
561
+ code += ` beforeEach(() => {\n`;
562
+ code += ` instance = new ${cls.name}();\n`;
563
+ code += ` });\n\n`;
564
+ }
565
+ // Constructor test
566
+ code += ` it('should instantiate correctly', () => {\n`;
567
+ code += ` expect(instance).toBeInstanceOf(${cls.name});\n`;
568
+ code += ` });\n\n`;
569
+ // Generate tests for each public method
570
+ for (const method of cls.methods) {
571
+ if (!method.name.startsWith('_') && !method.name.startsWith('#')) {
572
+ code += this.generateMethodTests(method, cls.name, testType);
573
+ }
574
+ }
575
+ code += `});\n\n`;
576
+ return code;
577
+ }
578
+ /**
579
+ * Generate tests for a class method
580
+ */
581
+ generateMethodTests(method, _className, _testType) {
582
+ let code = ` describe('${method.name}', () => {\n`;
583
+ const validParams = method.parameters.map((p) => this.generateTestValue(p)).join(', ');
584
+ const methodCall = method.isAsync
585
+ ? `await instance.${method.name}(${validParams})`
586
+ : `instance.${method.name}(${validParams})`;
587
+ // Happy path
588
+ const asyncPrefix = method.isAsync ? 'async ' : '';
589
+ code += ` it('should execute successfully', ${asyncPrefix}() => {\n`;
590
+ code += ` const result = ${methodCall};\n`;
591
+ code += ` expect(result).toBeDefined();\n`;
592
+ code += ` });\n`;
593
+ // Error handling for non-optional params
594
+ for (const param of method.parameters) {
595
+ if (!param.optional) {
596
+ const paramsWithUndefined = method.parameters
597
+ .map((p) => (p.name === param.name ? 'undefined as any' : this.generateTestValue(p)))
598
+ .join(', ');
599
+ code += `\n it('should handle invalid ${param.name}', () => {\n`;
600
+ code += ` expect(() => instance.${method.name}(${paramsWithUndefined})).toThrow();\n`;
601
+ code += ` });\n`;
602
+ }
603
+ }
604
+ code += ` });\n\n`;
605
+ return code;
606
+ }
607
+ /**
608
+ * Generate a test value for a parameter
609
+ */
610
+ generateTestValue(param) {
611
+ if (param.defaultValue) {
612
+ return param.defaultValue;
613
+ }
614
+ const type = param.type?.toLowerCase() || 'unknown';
615
+ const name = param.name.toLowerCase();
616
+ // Infer from param name first
617
+ if (name.includes('id'))
618
+ return `'${faker.string.uuid()}'`;
619
+ if (name.includes('email'))
620
+ return `'${faker.internet.email()}'`;
621
+ if (name.includes('name'))
622
+ return `'${faker.person.fullName()}'`;
623
+ if (name.includes('url'))
624
+ return `'${faker.internet.url()}'`;
625
+ if (name.includes('date'))
626
+ return `new Date('${faker.date.recent().toISOString()}')`;
627
+ // Then by type
628
+ if (type.includes('string'))
629
+ return `'${faker.lorem.word()}'`;
630
+ if (type.includes('number'))
631
+ return String(faker.number.int({ min: 1, max: 100 }));
632
+ if (type.includes('boolean'))
633
+ return 'true';
634
+ if (type.includes('[]') || type.includes('array'))
635
+ return '[]';
636
+ if (type.includes('object') || type.includes('{'))
637
+ return '{}';
638
+ if (type.includes('function'))
639
+ return '() => {}';
640
+ if (type.includes('promise'))
641
+ return 'Promise.resolve()';
642
+ if (type.includes('date'))
643
+ return 'new Date()';
644
+ // Default
645
+ return `mock${param.name.charAt(0).toUpperCase() + param.name.slice(1)}`;
646
+ }
647
+ /**
648
+ * Generate real Mocha test code
649
+ */
650
+ generateRealMochaTest(moduleName, importPath, testType, analysis, patterns) {
651
+ const patternComment = patterns.length > 0
652
+ ? `// Applied patterns: ${patterns.map((p) => p.name).join(', ')}\n`
653
+ : '';
654
+ const exports = [];
655
+ for (const fn of analysis.functions) {
656
+ if (fn.isExported)
657
+ exports.push(fn.name);
658
+ }
659
+ for (const cls of analysis.classes) {
660
+ if (cls.isExported)
661
+ exports.push(cls.name);
662
+ }
663
+ const importStatement = exports.length > 0
664
+ ? `import { ${exports.join(', ')} } from '${importPath}';`
665
+ : `import * as ${moduleName} from '${importPath}';`;
666
+ let code = `${patternComment}import { expect } from 'chai';
667
+ ${importStatement}
668
+
669
+ describe('${moduleName} - ${testType} tests', function() {
670
+ `;
671
+ for (const fn of analysis.functions) {
672
+ code += this.generateMochaFunctionTests(fn);
673
+ }
674
+ for (const cls of analysis.classes) {
675
+ code += this.generateMochaClassTests(cls);
676
+ }
677
+ code += `});\n`;
678
+ return code;
679
+ }
680
+ /**
681
+ * Generate Mocha tests for a function
682
+ */
683
+ generateMochaFunctionTests(fn) {
684
+ const validParams = fn.parameters.map((p) => this.generateTestValue(p)).join(', ');
685
+ const fnCall = fn.isAsync ? `await ${fn.name}(${validParams})` : `${fn.name}(${validParams})`;
686
+ let code = ` describe('${fn.name}', function() {\n`;
687
+ code += ` it('should handle valid input', ${fn.isAsync ? 'async ' : ''}function() {\n`;
688
+ code += ` const result = ${fnCall};\n`;
689
+ code += ` expect(result).to.not.be.undefined;\n`;
690
+ code += ` });\n`;
691
+ code += ` });\n\n`;
692
+ return code;
693
+ }
694
+ /**
695
+ * Generate Mocha tests for a class
696
+ */
697
+ generateMochaClassTests(cls) {
698
+ const constructorArgs = cls.constructorParams?.map((p) => this.generateTestValue(p)).join(', ') || '';
699
+ let code = ` describe('${cls.name}', function() {\n`;
700
+ code += ` let instance;\n\n`;
701
+ code += ` beforeEach(function() {\n`;
702
+ code += ` instance = new ${cls.name}(${constructorArgs});\n`;
703
+ code += ` });\n\n`;
704
+ code += ` it('should instantiate correctly', function() {\n`;
705
+ code += ` expect(instance).to.be.instanceOf(${cls.name});\n`;
706
+ code += ` });\n`;
707
+ for (const method of cls.methods) {
708
+ if (!method.name.startsWith('_')) {
709
+ const methodParams = method.parameters.map((p) => this.generateTestValue(p)).join(', ');
710
+ code += `\n it('${method.name} should work', ${method.isAsync ? 'async ' : ''}function() {\n`;
711
+ code += ` const result = ${method.isAsync ? 'await ' : ''}instance.${method.name}(${methodParams});\n`;
712
+ code += ` expect(result).to.not.be.undefined;\n`;
713
+ code += ` });\n`;
714
+ }
715
+ }
716
+ code += ` });\n\n`;
717
+ return code;
718
+ }
719
+ /**
720
+ * Generate real Pytest test code
721
+ */
722
+ generateRealPytestTest(moduleName, importPath, testType, analysis, patterns) {
723
+ const patternComment = patterns.length > 0
724
+ ? `# Applied patterns: ${patterns.map((p) => p.name).join(', ')}\n`
725
+ : '';
726
+ const exports = [];
727
+ for (const fn of analysis.functions) {
728
+ if (fn.isExported)
729
+ exports.push(fn.name);
730
+ }
731
+ for (const cls of analysis.classes) {
732
+ if (cls.isExported)
733
+ exports.push(cls.name);
734
+ }
735
+ const pythonImport = importPath.replace(/\//g, '.').replace(/\.(ts|js)$/, '');
736
+ const importStatement = exports.length > 0
737
+ ? `from ${pythonImport} import ${exports.join(', ')}`
738
+ : `import ${pythonImport} as ${moduleName}`;
739
+ let code = `${patternComment}import pytest
740
+ ${importStatement}
741
+
742
+
743
+ class Test${moduleName.charAt(0).toUpperCase() + moduleName.slice(1)}:
744
+ """${testType} tests for ${moduleName}"""
745
+
746
+ `;
747
+ for (const fn of analysis.functions) {
748
+ code += this.generatePytestFunctionTests(fn);
749
+ }
750
+ for (const cls of analysis.classes) {
751
+ code += this.generatePytestClassTests(cls);
752
+ }
753
+ return code;
754
+ }
755
+ /**
756
+ * Generate Pytest tests for a function
757
+ */
758
+ generatePytestFunctionTests(fn) {
759
+ const validParams = fn.parameters.map((p) => this.generatePythonTestValue(p)).join(', ');
760
+ let code = ` def test_${fn.name}_valid_input(self):\n`;
761
+ code += ` """Test ${fn.name} with valid input"""\n`;
762
+ code += ` result = ${fn.name}(${validParams})\n`;
763
+ code += ` assert result is not None\n\n`;
764
+ return code;
765
+ }
766
+ /**
767
+ * Generate Pytest tests for a class
768
+ */
769
+ generatePytestClassTests(cls) {
770
+ const constructorArgs = cls.constructorParams?.map((p) => this.generatePythonTestValue(p)).join(', ') || '';
771
+ let code = `\nclass Test${cls.name}:\n`;
772
+ code += ` """Tests for ${cls.name}"""\n\n`;
773
+ code += ` @pytest.fixture\n`;
774
+ code += ` def instance(self):\n`;
775
+ code += ` return ${cls.name}(${constructorArgs})\n\n`;
776
+ code += ` def test_instantiation(self, instance):\n`;
777
+ code += ` assert isinstance(instance, ${cls.name})\n\n`;
778
+ for (const method of cls.methods) {
779
+ if (!method.name.startsWith('_')) {
780
+ const methodParams = method.parameters.map((p) => this.generatePythonTestValue(p)).join(', ');
781
+ code += ` def test_${method.name}(self, instance):\n`;
782
+ code += ` result = instance.${method.name}(${methodParams})\n`;
783
+ code += ` assert result is not None\n\n`;
784
+ }
785
+ }
786
+ return code;
787
+ }
788
+ /**
789
+ * Generate a Python test value for a parameter
790
+ */
791
+ generatePythonTestValue(param) {
792
+ const type = param.type?.toLowerCase() || 'unknown';
793
+ const name = param.name.toLowerCase();
794
+ if (name.includes('id'))
795
+ return `"${faker.string.uuid()}"`;
796
+ if (name.includes('name'))
797
+ return `"${faker.person.fullName()}"`;
798
+ if (name.includes('email'))
799
+ return `"${faker.internet.email()}"`;
800
+ if (type.includes('str'))
801
+ return `"${faker.lorem.word()}"`;
802
+ if (type.includes('int') || type.includes('number')) {
803
+ return String(faker.number.int({ min: 1, max: 100 }));
804
+ }
805
+ if (type.includes('bool'))
806
+ return 'True';
807
+ if (type.includes('list') || type.includes('[]'))
808
+ return '[]';
809
+ if (type.includes('dict') || type.includes('{}'))
810
+ return '{}';
811
+ return 'None';
812
+ }
813
+ async findApplicablePatterns(sourceFile, requestedPatterns) {
814
+ const patterns = [];
815
+ // Check memory for stored patterns
816
+ for (const patternName of requestedPatterns) {
817
+ const stored = await this.memory.get(`pattern:${patternName}`);
818
+ if (stored) {
819
+ patterns.push(stored);
820
+ }
821
+ }
822
+ // Also search for patterns by file type
823
+ const extension = sourceFile.split('.').pop() || '';
824
+ const searchResults = await this.memory.search(`pattern:*:${extension}`, 5);
825
+ for (const key of searchResults) {
826
+ const pattern = await this.memory.get(key);
827
+ if (pattern && !patterns.some((p) => p.id === pattern.id)) {
828
+ patterns.push(pattern);
829
+ }
830
+ }
831
+ return patterns;
832
+ }
833
+ generateStubTestCode(sourceFile, testType, framework, patterns) {
834
+ const moduleName = this.extractModuleName(sourceFile);
835
+ const importPath = this.getImportPath(sourceFile);
836
+ // Generate framework-specific test template
837
+ switch (framework) {
838
+ case 'jest':
839
+ case 'vitest':
840
+ return this.generateJestVitestTest(moduleName, importPath, testType, patterns);
841
+ case 'mocha':
842
+ return this.generateMochaTest(moduleName, importPath, testType, patterns);
843
+ case 'pytest':
844
+ return this.generatePytestTest(moduleName, importPath, testType, patterns);
845
+ default:
846
+ return this.generateJestVitestTest(moduleName, importPath, testType, patterns);
847
+ }
848
+ }
849
+ generateJestVitestTest(moduleName, importPath, testType, patterns) {
850
+ const patternComment = patterns.length > 0
851
+ ? `// Applied patterns: ${patterns.map((p) => p.name).join(', ')}\n`
852
+ : '';
853
+ // Generate pattern-aware test implementations
854
+ const basicOpsTest = this.generateBasicOpsTest(moduleName, patterns);
855
+ const edgeCaseTest = this.generateEdgeCaseTest(moduleName, patterns);
856
+ const errorHandlingTest = this.generateErrorHandlingTest(moduleName, patterns);
857
+ return `${patternComment}import { ${moduleName} } from '${importPath}';
858
+
859
+ describe('${moduleName}', () => {
860
+ describe('${testType} tests', () => {
861
+ it('should be defined', () => {
862
+ expect(${moduleName}).toBeDefined();
863
+ });
864
+
865
+ ${basicOpsTest}
866
+ ${edgeCaseTest}
867
+ ${errorHandlingTest}
868
+ });
869
+ });
870
+ `;
871
+ }
872
+ /**
873
+ * Generate basic operations test based on patterns
874
+ */
875
+ generateBasicOpsTest(moduleName, patterns) {
876
+ // Check for service pattern
877
+ const isService = patterns.some((p) => p.name.toLowerCase().includes('service') || p.name.toLowerCase().includes('repository'));
878
+ // Check for factory pattern
879
+ const isFactory = patterns.some((p) => p.name.toLowerCase().includes('factory'));
880
+ // Check for async patterns
881
+ const hasAsyncPattern = patterns.some((p) => p.name.toLowerCase().includes('async') || p.name.toLowerCase().includes('promise'));
882
+ if (isService) {
883
+ return ` it('should handle basic operations', async () => {
884
+ // Service pattern: test core functionality
885
+ const instance = new ${moduleName}();
886
+ expect(instance).toBeInstanceOf(${moduleName});
887
+
888
+ // Verify service is properly initialized
889
+ const methods = Object.getOwnPropertyNames(Object.getPrototypeOf(instance))
890
+ .filter(m => m !== 'constructor');
891
+ expect(methods.length).toBeGreaterThan(0);
892
+ });`;
893
+ }
894
+ if (isFactory) {
895
+ return ` it('should handle basic operations', () => {
896
+ // Factory pattern: test object creation
897
+ const result = ${moduleName}.create ? ${moduleName}.create() : new ${moduleName}();
898
+ expect(result).toBeDefined();
899
+ expect(typeof result).not.toBe('undefined');
900
+ });`;
901
+ }
902
+ if (hasAsyncPattern) {
903
+ return ` it('should handle basic operations', async () => {
904
+ // Async pattern: test promise resolution
905
+ const instance = typeof ${moduleName} === 'function'
906
+ ? new ${moduleName}()
907
+ : ${moduleName};
908
+
909
+ // Verify async methods resolve properly
910
+ if (typeof instance.execute === 'function') {
911
+ await expect(instance.execute()).resolves.toBeDefined();
912
+ }
913
+ });`;
914
+ }
915
+ // Default implementation
916
+ return ` it('should handle basic operations', () => {
917
+ // Verify module exports expected interface
918
+ const moduleType = typeof ${moduleName};
919
+ expect(['function', 'object']).toContain(moduleType);
920
+
921
+ if (moduleType === 'function') {
922
+ // Class or function: verify instantiation
923
+ const instance = new ${moduleName}();
924
+ expect(instance).toBeDefined();
925
+ } else {
926
+ // Object module: verify properties exist
927
+ expect(Object.keys(${moduleName}).length).toBeGreaterThan(0);
928
+ }
929
+ });`;
930
+ }
931
+ /**
932
+ * Generate edge case test based on patterns
933
+ */
934
+ generateEdgeCaseTest(moduleName, patterns) {
935
+ const hasValidation = patterns.some((p) => p.name.toLowerCase().includes('validation') || p.name.toLowerCase().includes('validator'));
936
+ const hasCollection = patterns.some((p) => p.name.toLowerCase().includes('collection') || p.name.toLowerCase().includes('list'));
937
+ if (hasValidation) {
938
+ return ` it('should handle edge cases', () => {
939
+ // Validation pattern: test boundary conditions
940
+ const instance = new ${moduleName}();
941
+
942
+ // Test with empty values
943
+ if (typeof instance.validate === 'function') {
944
+ expect(() => instance.validate('')).toBeDefined();
945
+ expect(() => instance.validate(null)).toBeDefined();
946
+ }
947
+ });`;
948
+ }
949
+ if (hasCollection) {
950
+ return ` it('should handle edge cases', () => {
951
+ // Collection pattern: test empty and large datasets
952
+ const instance = new ${moduleName}();
953
+
954
+ // Empty collection should be handled gracefully
955
+ if (typeof instance.add === 'function') {
956
+ expect(() => instance.add(undefined)).toBeDefined();
957
+ }
958
+ if (typeof instance.get === 'function') {
959
+ expect(instance.get('nonexistent')).toBeUndefined();
960
+ }
961
+ });`;
962
+ }
963
+ // Default edge case test
964
+ return ` it('should handle edge cases', () => {
965
+ // Test null/undefined handling
966
+ const instance = typeof ${moduleName} === 'function'
967
+ ? new ${moduleName}()
968
+ : ${moduleName};
969
+
970
+ // Module should handle edge case inputs gracefully
971
+ expect(instance).toBeDefined();
972
+ expect(() => JSON.stringify(instance)).not.toThrow();
973
+ });`;
974
+ }
975
+ /**
976
+ * Generate error handling test based on patterns
977
+ */
978
+ generateErrorHandlingTest(moduleName, patterns) {
979
+ const hasErrorPattern = patterns.some((p) => p.name.toLowerCase().includes('error') || p.name.toLowerCase().includes('exception'));
980
+ const hasAsyncPattern = patterns.some((p) => p.name.toLowerCase().includes('async') || p.name.toLowerCase().includes('promise'));
981
+ if (hasAsyncPattern) {
982
+ return ` it('should handle error conditions', async () => {
983
+ // Async error handling: verify rejections are caught
984
+ const instance = typeof ${moduleName} === 'function'
985
+ ? new ${moduleName}()
986
+ : ${moduleName};
987
+
988
+ // Async operations should reject gracefully on invalid input
989
+ const asyncMethods = Object.getOwnPropertyNames(Object.getPrototypeOf(instance) || {})
990
+ .filter(m => m !== 'constructor');
991
+
992
+ // At minimum, module should be stable
993
+ expect(instance).toBeDefined();
994
+ });`;
995
+ }
996
+ if (hasErrorPattern) {
997
+ return ` it('should handle error conditions', () => {
998
+ // Error pattern: verify custom error types
999
+ try {
1000
+ const instance = new ${moduleName}();
1001
+ // Trigger error condition if possible
1002
+ if (typeof instance.throwError === 'function') {
1003
+ expect(() => instance.throwError()).toThrow();
1004
+ }
1005
+ } catch (error) {
1006
+ expect(error).toBeInstanceOf(Error);
1007
+ }
1008
+ });`;
1009
+ }
1010
+ // Default error handling test
1011
+ return ` it('should handle error conditions', () => {
1012
+ // Verify error resilience
1013
+ expect(() => {
1014
+ const instance = typeof ${moduleName} === 'function'
1015
+ ? new ${moduleName}()
1016
+ : ${moduleName};
1017
+ return instance;
1018
+ }).not.toThrow();
1019
+
1020
+ // Module should not throw on inspection
1021
+ expect(() => Object.keys(${moduleName})).not.toThrow();
1022
+ });`;
1023
+ }
1024
+ generateMochaTest(moduleName, importPath, testType, patterns) {
1025
+ const patternComment = patterns.length > 0
1026
+ ? `// Applied patterns: ${patterns.map((p) => p.name).join(', ')}\n`
1027
+ : '';
1028
+ // Determine if async tests needed based on patterns
1029
+ const isAsync = patterns.some((p) => p.name.toLowerCase().includes('async') || p.name.toLowerCase().includes('promise'));
1030
+ const asyncSetup = isAsync ? 'async ' : '';
1031
+ return `${patternComment}import { expect } from 'chai';
1032
+ import { ${moduleName} } from '${importPath}';
1033
+
1034
+ describe('${moduleName}', function() {
1035
+ describe('${testType} tests', function() {
1036
+ it('should be defined', function() {
1037
+ expect(${moduleName}).to.not.be.undefined;
1038
+ });
1039
+
1040
+ it('should handle basic operations', ${asyncSetup}function() {
1041
+ // Verify module exports expected interface
1042
+ const moduleType = typeof ${moduleName};
1043
+ expect(['function', 'object']).to.include(moduleType);
1044
+
1045
+ if (moduleType === 'function') {
1046
+ const instance = new ${moduleName}();
1047
+ expect(instance).to.exist;
1048
+ } else {
1049
+ expect(Object.keys(${moduleName})).to.have.length.greaterThan(0);
1050
+ }
1051
+ });
1052
+
1053
+ it('should handle edge cases', function() {
1054
+ // Verify resilience to edge inputs
1055
+ const instance = typeof ${moduleName} === 'function'
1056
+ ? new ${moduleName}()
1057
+ : ${moduleName};
1058
+ expect(instance).to.exist;
1059
+ expect(() => JSON.stringify(instance)).to.not.throw();
1060
+ });
1061
+
1062
+ it('should handle error conditions', function() {
1063
+ // Verify error resilience
1064
+ expect(() => {
1065
+ const instance = typeof ${moduleName} === 'function'
1066
+ ? new ${moduleName}()
1067
+ : ${moduleName};
1068
+ return instance;
1069
+ }).to.not.throw();
1070
+ });
1071
+ });
1072
+ });
1073
+ `;
1074
+ }
1075
+ generatePytestTest(moduleName, importPath, testType, patterns) {
1076
+ const patternComment = patterns.length > 0
1077
+ ? `# Applied patterns: ${patterns.map((p) => p.name).join(', ')}\n`
1078
+ : '';
1079
+ // Determine if async tests needed based on patterns
1080
+ const isAsync = patterns.some((p) => p.name.toLowerCase().includes('async') || p.name.toLowerCase().includes('promise'));
1081
+ const asyncDecorator = isAsync ? '@pytest.mark.asyncio\n ' : '';
1082
+ const asyncDef = isAsync ? 'async def' : 'def';
1083
+ return `${patternComment}import pytest
1084
+ from ${importPath} import ${moduleName}
1085
+
1086
+
1087
+ class Test${moduleName}:
1088
+ """${testType} tests for ${moduleName}"""
1089
+
1090
+ def test_is_defined(self):
1091
+ """Verify the module is properly exported and defined."""
1092
+ assert ${moduleName} is not None
1093
+
1094
+ ${asyncDecorator}${asyncDef} test_basic_operations(self):
1095
+ """Test core functionality with valid inputs."""
1096
+ # Verify module can be instantiated or accessed
1097
+ if callable(${moduleName}):
1098
+ instance = ${moduleName}()
1099
+ assert instance is not None
1100
+ else:
1101
+ assert len(dir(${moduleName})) > 0
1102
+
1103
+ def test_edge_cases(self):
1104
+ """Test handling of edge case inputs."""
1105
+ # Verify module handles edge cases gracefully
1106
+ instance = ${moduleName}() if callable(${moduleName}) else ${moduleName}
1107
+ assert instance is not None
1108
+ # Module should be serializable
1109
+ import json
1110
+ try:
1111
+ json.dumps(str(instance))
1112
+ except (TypeError, ValueError):
1113
+ pass # Complex objects may not serialize, but shouldn't crash
1114
+
1115
+ def test_error_conditions(self):
1116
+ """Test error handling and recovery."""
1117
+ # Module instantiation should not raise unexpected errors
1118
+ try:
1119
+ instance = ${moduleName}() if callable(${moduleName}) else ${moduleName}
1120
+ assert instance is not None
1121
+ except TypeError:
1122
+ # Expected if constructor requires arguments
1123
+ pass
1124
+ `;
1125
+ }
1126
+ async generateRedPhaseTest(feature, behavior, _framework) {
1127
+ // Generate TDD RED phase: failing test that defines expected behavior
1128
+ const funcName = this.camelCase(feature);
1129
+ const assertions = this.generateAssertionsFromBehavior(behavior, funcName);
1130
+ const testCode = `describe('${feature}', () => {
1131
+ it('${behavior}', () => {
1132
+ // Red phase: This test should fail initially
1133
+ ${assertions}
1134
+ });
1135
+ });`;
1136
+ return {
1137
+ phase: 'red',
1138
+ testCode,
1139
+ nextStep: 'Write the minimal implementation to make this test pass',
1140
+ };
1141
+ }
1142
+ /**
1143
+ * Generate specific assertions from behavior description
1144
+ * Uses NLP-style extraction to infer test values and assertions
1145
+ */
1146
+ generateAssertionsFromBehavior(behavior, funcName) {
1147
+ const behaviorLower = behavior.toLowerCase();
1148
+ const assertions = [];
1149
+ // Extract context from behavior description
1150
+ const context = this.extractBehaviorContext(behavior);
1151
+ // Build function call with appropriate arguments
1152
+ const funcCall = this.buildFunctionCall(funcName, context, behaviorLower);
1153
+ // Add setup if needed
1154
+ if (context.setupCode) {
1155
+ assertions.push(context.setupCode);
1156
+ }
1157
+ // Generate assertions based on expected outcome
1158
+ if (behaviorLower.includes('return') && behaviorLower.includes('true')) {
1159
+ assertions.push(` const result = ${funcCall};`);
1160
+ assertions.push(` expect(result).toBe(true);`);
1161
+ }
1162
+ else if (behaviorLower.includes('return') && behaviorLower.includes('false')) {
1163
+ assertions.push(` const result = ${funcCall};`);
1164
+ assertions.push(` expect(result).toBe(false);`);
1165
+ }
1166
+ else if (behaviorLower.includes('throw') || behaviorLower.includes('error')) {
1167
+ const errorMsg = context.extractedString || 'Error';
1168
+ assertions.push(` expect(() => ${funcCall}).toThrow(${context.extractedString ? `'${errorMsg}'` : ''});`);
1169
+ }
1170
+ else if (behaviorLower.includes('empty') || behaviorLower.includes('nothing')) {
1171
+ assertions.push(` const result = ${funcCall};`);
1172
+ if (behaviorLower.includes('string')) {
1173
+ assertions.push(` expect(result).toBe('');`);
1174
+ }
1175
+ else if (behaviorLower.includes('object')) {
1176
+ assertions.push(` expect(result).toEqual({});`);
1177
+ }
1178
+ else {
1179
+ assertions.push(` expect(result).toEqual([]);`);
1180
+ }
1181
+ }
1182
+ else if (behaviorLower.includes('null')) {
1183
+ assertions.push(` const result = ${funcCall};`);
1184
+ assertions.push(` expect(result).toBeNull();`);
1185
+ }
1186
+ else if (behaviorLower.includes('undefined')) {
1187
+ assertions.push(` const result = ${funcCall};`);
1188
+ assertions.push(` expect(result).toBeUndefined();`);
1189
+ }
1190
+ else if (behaviorLower.includes('contain') || behaviorLower.includes('include')) {
1191
+ assertions.push(` const result = ${funcCall};`);
1192
+ const expectedValue = context.extractedString || context.extractedNumber?.toString() || 'expectedItem';
1193
+ if (context.extractedString) {
1194
+ assertions.push(` expect(result).toContain('${expectedValue}');`);
1195
+ }
1196
+ else if (context.extractedNumber !== undefined) {
1197
+ assertions.push(` expect(result).toContain(${expectedValue});`);
1198
+ }
1199
+ else {
1200
+ assertions.push(` expect(result).toContain(testInput); // Contains the input`);
1201
+ }
1202
+ }
1203
+ else if (behaviorLower.includes('length') || behaviorLower.includes('count')) {
1204
+ assertions.push(` const result = ${funcCall};`);
1205
+ const expectedLength = context.extractedNumber ?? 3;
1206
+ assertions.push(` expect(result).toHaveLength(${expectedLength});`);
1207
+ }
1208
+ else if (behaviorLower.includes('equal') || behaviorLower.includes('match')) {
1209
+ assertions.push(` const result = ${funcCall};`);
1210
+ if (context.extractedString) {
1211
+ assertions.push(` expect(result).toEqual('${context.extractedString}');`);
1212
+ }
1213
+ else if (context.extractedNumber !== undefined) {
1214
+ assertions.push(` expect(result).toEqual(${context.extractedNumber});`);
1215
+ }
1216
+ else {
1217
+ assertions.push(` expect(result).toEqual(expectedOutput);`);
1218
+ }
1219
+ }
1220
+ else if (behaviorLower.includes('greater') || behaviorLower.includes('more than')) {
1221
+ assertions.push(` const result = ${funcCall};`);
1222
+ const threshold = context.extractedNumber ?? 0;
1223
+ assertions.push(` expect(result).toBeGreaterThan(${threshold});`);
1224
+ }
1225
+ else if (behaviorLower.includes('less') || behaviorLower.includes('fewer')) {
1226
+ assertions.push(` const result = ${funcCall};`);
1227
+ const threshold = context.extractedNumber ?? 100;
1228
+ assertions.push(` expect(result).toBeLessThan(${threshold});`);
1229
+ }
1230
+ else if (behaviorLower.includes('valid') || behaviorLower.includes('success')) {
1231
+ assertions.push(` const result = ${funcCall};`);
1232
+ assertions.push(` expect(result).toBeDefined();`);
1233
+ if (behaviorLower.includes('object') || behaviorLower.includes('response')) {
1234
+ assertions.push(` expect(result.success ?? result.valid ?? result.ok).toBeTruthy();`);
1235
+ }
1236
+ else {
1237
+ assertions.push(` expect(result).toBeTruthy();`);
1238
+ }
1239
+ }
1240
+ else if (behaviorLower.includes('array') || behaviorLower.includes('list')) {
1241
+ assertions.push(` const result = ${funcCall};`);
1242
+ assertions.push(` expect(Array.isArray(result)).toBe(true);`);
1243
+ if (context.extractedNumber !== undefined) {
1244
+ assertions.push(` expect(result.length).toBeGreaterThanOrEqual(${context.extractedNumber});`);
1245
+ }
1246
+ }
1247
+ else if (behaviorLower.includes('object')) {
1248
+ assertions.push(` const result = ${funcCall};`);
1249
+ assertions.push(` expect(typeof result).toBe('object');`);
1250
+ assertions.push(` expect(result).not.toBeNull();`);
1251
+ }
1252
+ else if (behaviorLower.includes('string')) {
1253
+ assertions.push(` const result = ${funcCall};`);
1254
+ assertions.push(` expect(typeof result).toBe('string');`);
1255
+ if (context.extractedString) {
1256
+ assertions.push(` expect(result).toContain('${context.extractedString}');`);
1257
+ }
1258
+ }
1259
+ else if (behaviorLower.includes('number')) {
1260
+ assertions.push(` const result = ${funcCall};`);
1261
+ assertions.push(` expect(typeof result).toBe('number');`);
1262
+ assertions.push(` expect(Number.isNaN(result)).toBe(false);`);
1263
+ }
1264
+ else {
1265
+ // Default: check it's defined
1266
+ assertions.push(` const result = ${funcCall};`);
1267
+ assertions.push(` expect(result).toBeDefined();`);
1268
+ }
1269
+ return assertions.join('\n');
1270
+ }
1271
+ /**
1272
+ * Extract contextual information from behavior description
1273
+ */
1274
+ extractBehaviorContext(behavior) {
1275
+ const context = {};
1276
+ // Extract quoted strings from behavior
1277
+ const stringMatch = behavior.match(/["']([^"']+)["']/);
1278
+ if (stringMatch) {
1279
+ context.extractedString = stringMatch[1];
1280
+ }
1281
+ // Extract numbers from behavior
1282
+ const numberMatch = behavior.match(/\b(\d+)\b/);
1283
+ if (numberMatch) {
1284
+ context.extractedNumber = parseInt(numberMatch[1], 10);
1285
+ }
1286
+ // Detect input type
1287
+ if (/\b(email|e-mail)\b/i.test(behavior)) {
1288
+ context.inputType = 'email';
1289
+ context.setupCode = ` const testInput = 'test@example.com';`;
1290
+ }
1291
+ else if (/\b(url|link|href)\b/i.test(behavior)) {
1292
+ context.inputType = 'url';
1293
+ context.setupCode = ` const testInput = 'https://example.com';`;
1294
+ }
1295
+ else if (/\b(date|time|timestamp)\b/i.test(behavior)) {
1296
+ context.inputType = 'date';
1297
+ context.setupCode = ` const testInput = new Date('2024-01-15');`;
1298
+ }
1299
+ else if (/\b(id|uuid|identifier)\b/i.test(behavior)) {
1300
+ context.inputType = 'id';
1301
+ context.setupCode = ` const testInput = 'abc-123-def';`;
1302
+ }
1303
+ else if (/\b(user|person|customer)\b/i.test(behavior)) {
1304
+ context.inputType = 'user';
1305
+ context.setupCode = ` const testInput = { id: '1', name: 'Test User', email: 'test@example.com' };`;
1306
+ }
1307
+ else if (/\b(config|options|settings)\b/i.test(behavior)) {
1308
+ context.inputType = 'config';
1309
+ context.setupCode = ` const testInput = { enabled: true, timeout: 5000 };`;
1310
+ }
1311
+ return context;
1312
+ }
1313
+ /**
1314
+ * Build function call with appropriate arguments based on context
1315
+ */
1316
+ buildFunctionCall(funcName, context, behaviorLower) {
1317
+ // If context has setup code, use testInput variable
1318
+ if (context.inputType) {
1319
+ return `${funcName}(testInput)`;
1320
+ }
1321
+ // No input needed
1322
+ if (!behaviorLower.includes('with') && !behaviorLower.includes('given') && !behaviorLower.includes('for')) {
1323
+ return `${funcName}()`;
1324
+ }
1325
+ // Infer input type from behavior
1326
+ if (behaviorLower.includes('string') || behaviorLower.includes('text') || behaviorLower.includes('name')) {
1327
+ const value = context.extractedString || 'test input';
1328
+ return `${funcName}('${value}')`;
1329
+ }
1330
+ if (behaviorLower.includes('number') || behaviorLower.includes('count') || behaviorLower.includes('amount')) {
1331
+ const value = context.extractedNumber ?? 42;
1332
+ return `${funcName}(${value})`;
1333
+ }
1334
+ if (behaviorLower.includes('array') || behaviorLower.includes('list') || behaviorLower.includes('items')) {
1335
+ return `${funcName}([1, 2, 3])`;
1336
+ }
1337
+ if (behaviorLower.includes('object') || behaviorLower.includes('data') || behaviorLower.includes('payload')) {
1338
+ return `${funcName}({ key: 'value' })`;
1339
+ }
1340
+ if (behaviorLower.includes('boolean') || behaviorLower.includes('flag')) {
1341
+ return `${funcName}(true)`;
1342
+ }
1343
+ // Default: use extracted value or generic input
1344
+ if (context.extractedString) {
1345
+ return `${funcName}('${context.extractedString}')`;
1346
+ }
1347
+ if (context.extractedNumber !== undefined) {
1348
+ return `${funcName}(${context.extractedNumber})`;
1349
+ }
1350
+ return `${funcName}(input)`;
1351
+ }
1352
+ async generateGreenPhaseCode(feature, behavior, _framework) {
1353
+ // Generate TDD GREEN phase: minimal implementation to pass the test
1354
+ // Analyze the behavior description to generate appropriate implementation
1355
+ const behaviorLower = behavior.toLowerCase();
1356
+ const funcName = this.camelCase(feature);
1357
+ // Infer return type and implementation from behavior
1358
+ const { returnType, implementation, params } = this.inferImplementationFromBehavior(behaviorLower);
1359
+ const implementationCode = `/**
1360
+ * ${feature}
1361
+ * Behavior: ${behavior}
1362
+ */
1363
+ export function ${funcName}(${params}): ${returnType} {
1364
+ ${implementation}
1365
+ }`;
1366
+ return {
1367
+ phase: 'green',
1368
+ implementationCode,
1369
+ nextStep: 'Refactor the code while keeping tests green',
1370
+ };
1371
+ }
1372
+ /**
1373
+ * Infer implementation details from behavior description using heuristics
1374
+ * Analyzes the behavior text to determine return type, parameters, and minimal implementation
1375
+ */
1376
+ inferImplementationFromBehavior(behavior) {
1377
+ // Default values
1378
+ let returnType = 'unknown';
1379
+ let implementation = ' return undefined;';
1380
+ let params = '';
1381
+ // Detect return type from behavior description
1382
+ if (behavior.includes('return') || behavior.includes('returns')) {
1383
+ if (behavior.includes('boolean') || behavior.includes('true') || behavior.includes('false') ||
1384
+ behavior.includes('valid') || behavior.includes('is ') || behavior.includes('has ') ||
1385
+ behavior.includes('can ') || behavior.includes('should ')) {
1386
+ returnType = 'boolean';
1387
+ implementation = ' // Validate and return boolean result\n return true;';
1388
+ }
1389
+ else if (behavior.includes('number') || behavior.includes('count') || behavior.includes('sum') ||
1390
+ behavior.includes('total') || behavior.includes('calculate') || behavior.includes('average')) {
1391
+ returnType = 'number';
1392
+ implementation = ' // Perform calculation and return result\n return 0;';
1393
+ }
1394
+ else if (behavior.includes('string') || behavior.includes('text') || behavior.includes('message') ||
1395
+ behavior.includes('name') || behavior.includes('format')) {
1396
+ returnType = 'string';
1397
+ implementation = " // Process and return string result\n return '';";
1398
+ }
1399
+ else if (behavior.includes('array') || behavior.includes('list') || behavior.includes('items') ||
1400
+ behavior.includes('collection') || behavior.includes('filter') || behavior.includes('map')) {
1401
+ returnType = 'unknown[]';
1402
+ implementation = ' // Process and return array\n return [];';
1403
+ }
1404
+ else if (behavior.includes('object') || behavior.includes('data') || behavior.includes('result') ||
1405
+ behavior.includes('response')) {
1406
+ returnType = 'Record<string, unknown>';
1407
+ implementation = ' // Build and return object\n return {};';
1408
+ }
1409
+ }
1410
+ // Detect if async is needed
1411
+ if (behavior.includes('async') || behavior.includes('await') || behavior.includes('promise') ||
1412
+ behavior.includes('fetch') || behavior.includes('load') || behavior.includes('save') ||
1413
+ behavior.includes('api') || behavior.includes('request')) {
1414
+ returnType = `Promise<${returnType}>`;
1415
+ implementation = implementation.replace('return ', 'return await Promise.resolve(').replace(';', ');');
1416
+ }
1417
+ // Detect parameters from behavior
1418
+ const paramPatterns = [
1419
+ { pattern: /(?:with|given|for|using)\s+(?:a\s+)?(?:string|text|name)/i, param: 'input: string' },
1420
+ { pattern: /(?:with|given|for|using)\s+(?:a\s+)?(?:number|count|amount)/i, param: 'value: number' },
1421
+ { pattern: /(?:with|given|for|using)\s+(?:an?\s+)?(?:array|list|items)/i, param: 'items: unknown[]' },
1422
+ { pattern: /(?:with|given|for|using)\s+(?:an?\s+)?(?:object|data)/i, param: 'data: Record<string, unknown>' },
1423
+ { pattern: /(?:with|given|for|using)\s+(?:an?\s+)?id/i, param: 'id: string' },
1424
+ { pattern: /(?:with|given|for|using)\s+(?:valid|invalid)\s+input/i, param: 'input: unknown' },
1425
+ { pattern: /(?:when|if)\s+(?:called\s+)?(?:with|without)/i, param: 'input?: unknown' },
1426
+ ];
1427
+ const detectedParams = [];
1428
+ for (const { pattern, param } of paramPatterns) {
1429
+ if (pattern.test(behavior) && !detectedParams.includes(param)) {
1430
+ detectedParams.push(param);
1431
+ }
1432
+ }
1433
+ params = detectedParams.join(', ');
1434
+ // Detect validation logic from behavior
1435
+ if (behavior.includes('validate') || behavior.includes('check') || behavior.includes('verify')) {
1436
+ if (params.includes('input')) {
1437
+ implementation = ` // Validate the input
1438
+ if (input === undefined || input === null) {
1439
+ throw new Error('Invalid input');
1440
+ }
1441
+ ${implementation}`;
1442
+ }
1443
+ }
1444
+ // Detect error throwing from behavior
1445
+ if (behavior.includes('throw') || behavior.includes('error') || behavior.includes('exception') ||
1446
+ behavior.includes('invalid') || behavior.includes('fail')) {
1447
+ if (behavior.includes('when') || behavior.includes('if')) {
1448
+ implementation = ` // Check for error conditions
1449
+ if (!input) {
1450
+ throw new Error('Validation failed');
1451
+ }
1452
+ ${implementation}`;
1453
+ }
1454
+ }
1455
+ return { returnType, implementation, params };
1456
+ }
1457
+ async generateRefactoringSuggestions(_feature, _behavior) {
1458
+ return {
1459
+ phase: 'refactor',
1460
+ refactoringChanges: [
1461
+ 'Extract common logic into helper functions',
1462
+ 'Apply single responsibility principle',
1463
+ 'Consider adding type safety improvements',
1464
+ 'Review naming conventions',
1465
+ 'Optimize performance if needed',
1466
+ ],
1467
+ nextStep: 'Apply refactoring changes and ensure all tests still pass',
1468
+ };
1469
+ }
1470
+ generatePropertyTestCode(funcName, property, constraints) {
1471
+ // Analyze property description to generate appropriate generators and assertions
1472
+ const propertyLower = property.toLowerCase();
1473
+ const { generators, assertion, setupCode } = this.analyzePropertyForTestGeneration(propertyLower, funcName, constraints);
1474
+ return `import * as fc from 'fast-check';
1475
+
1476
+ describe('${funcName} property tests', () => {
1477
+ it('${property}', () => {
1478
+ ${setupCode}
1479
+ fc.assert(
1480
+ fc.property(${generators.join(', ')}, (${this.generatePropertyParams(generators)}) => {
1481
+ const result = ${funcName}(${this.generatePropertyArgs(generators)});
1482
+ ${assertion}
1483
+ })
1484
+ );
1485
+ });
1486
+ });`;
1487
+ }
1488
+ /**
1489
+ * Analyze property description to determine generators and assertions
1490
+ */
1491
+ analyzePropertyForTestGeneration(propertyLower, funcName, constraints) {
1492
+ const generators = [];
1493
+ let assertion = 'return result !== undefined;';
1494
+ let setupCode = '';
1495
+ // Idempotent property: f(f(x)) === f(x)
1496
+ if (propertyLower.includes('idempotent') || propertyLower.includes('same result')) {
1497
+ generators.push(this.inferGeneratorFromConstraints(constraints, 'input'));
1498
+ assertion = `// Idempotent: applying twice gives same result
1499
+ const firstResult = ${funcName}(input);
1500
+ const secondResult = ${funcName}(firstResult);
1501
+ return JSON.stringify(firstResult) === JSON.stringify(secondResult);`;
1502
+ }
1503
+ // Commutative property: f(a, b) === f(b, a)
1504
+ else if (propertyLower.includes('commutative') || propertyLower.includes('order independent')) {
1505
+ const gen = this.inferGeneratorFromConstraints(constraints, 'value');
1506
+ generators.push(gen, gen);
1507
+ assertion = `// Commutative: order doesn't matter
1508
+ const result1 = ${funcName}(a, b);
1509
+ const result2 = ${funcName}(b, a);
1510
+ return JSON.stringify(result1) === JSON.stringify(result2);`;
1511
+ }
1512
+ // Associative property: f(f(a, b), c) === f(a, f(b, c))
1513
+ else if (propertyLower.includes('associative')) {
1514
+ const gen = this.inferGeneratorFromConstraints(constraints, 'value');
1515
+ generators.push(gen, gen, gen);
1516
+ assertion = `// Associative: grouping doesn't matter
1517
+ const left = ${funcName}(${funcName}(a, b), c);
1518
+ const right = ${funcName}(a, ${funcName}(b, c));
1519
+ return JSON.stringify(left) === JSON.stringify(right);`;
1520
+ }
1521
+ // Identity property: f(x, identity) === x
1522
+ else if (propertyLower.includes('identity') || propertyLower.includes('neutral element')) {
1523
+ generators.push(this.inferGeneratorFromConstraints(constraints, 'input'));
1524
+ const identity = constraints.identity !== undefined ? String(constraints.identity) : '0';
1525
+ setupCode = ` const identity = ${identity};`;
1526
+ assertion = `// Identity: operation with identity returns original
1527
+ const result = ${funcName}(input, identity);
1528
+ return JSON.stringify(result) === JSON.stringify(input);`;
1529
+ }
1530
+ // Inverse property: f(f(x)) === x (e.g., encode/decode)
1531
+ else if (propertyLower.includes('inverse') || propertyLower.includes('reversible') ||
1532
+ propertyLower.includes('round-trip') || propertyLower.includes('encode') ||
1533
+ propertyLower.includes('decode')) {
1534
+ generators.push(this.inferGeneratorFromConstraints(constraints, 'input'));
1535
+ const inverseFn = constraints.inverse || `${funcName}Inverse`;
1536
+ assertion = `// Inverse: applying function and its inverse returns original
1537
+ const encoded = ${funcName}(input);
1538
+ const decoded = ${inverseFn}(encoded);
1539
+ return JSON.stringify(decoded) === JSON.stringify(input);`;
1540
+ }
1541
+ // Distributive property: f(a, b + c) === f(a, b) + f(a, c)
1542
+ else if (propertyLower.includes('distributive')) {
1543
+ const gen = this.inferGeneratorFromConstraints(constraints, 'number');
1544
+ generators.push(gen, gen, gen);
1545
+ assertion = `// Distributive: f(a, b + c) === f(a, b) + f(a, c)
1546
+ const left = ${funcName}(a, b + c);
1547
+ const right = ${funcName}(a, b) + ${funcName}(a, c);
1548
+ return Math.abs(left - right) < 0.0001;`;
1549
+ }
1550
+ // Monotonic property: a <= b implies f(a) <= f(b)
1551
+ else if (propertyLower.includes('monotonic') || propertyLower.includes('preserves order') ||
1552
+ propertyLower.includes('non-decreasing') || propertyLower.includes('sorted')) {
1553
+ generators.push('fc.integer()', 'fc.integer()');
1554
+ assertion = `// Monotonic: preserves order
1555
+ const [small, large] = a <= b ? [a, b] : [b, a];
1556
+ const resultSmall = ${funcName}(small);
1557
+ const resultLarge = ${funcName}(large);
1558
+ return resultSmall <= resultLarge;`;
1559
+ }
1560
+ // Bounds/range property: output is within expected bounds
1561
+ else if (propertyLower.includes('bound') || propertyLower.includes('range') ||
1562
+ propertyLower.includes('between') || propertyLower.includes('clamp')) {
1563
+ generators.push(this.inferGeneratorFromConstraints(constraints, 'input'));
1564
+ const min = constraints.min !== undefined ? constraints.min : 0;
1565
+ const max = constraints.max !== undefined ? constraints.max : 100;
1566
+ assertion = `// Bounded: result is within expected range
1567
+ const result = ${funcName}(input);
1568
+ return result >= ${min} && result <= ${max};`;
1569
+ }
1570
+ // Length preservation
1571
+ else if (propertyLower.includes('length') || propertyLower.includes('size')) {
1572
+ generators.push('fc.array(fc.anything())');
1573
+ if (propertyLower.includes('preserve')) {
1574
+ assertion = `// Length preserved: output has same length as input
1575
+ const result = ${funcName}(input);
1576
+ return Array.isArray(result) && result.length === input.length;`;
1577
+ }
1578
+ else {
1579
+ assertion = `// Length invariant
1580
+ const result = ${funcName}(input);
1581
+ return typeof result.length === 'number' || typeof result.size === 'number';`;
1582
+ }
1583
+ }
1584
+ // Type preservation
1585
+ else if (propertyLower.includes('type') && propertyLower.includes('preserve')) {
1586
+ generators.push('fc.anything()');
1587
+ assertion = `// Type preserved: output has same type as input
1588
+ const result = ${funcName}(input);
1589
+ return typeof result === typeof input;`;
1590
+ }
1591
+ // Non-null/defined output
1592
+ else if (propertyLower.includes('never null') || propertyLower.includes('always defined') ||
1593
+ propertyLower.includes('non-null')) {
1594
+ generators.push(this.inferGeneratorFromConstraints(constraints, 'input'));
1595
+ assertion = `// Never null: always returns defined value
1596
+ const result = ${funcName}(input);
1597
+ return result !== null && result !== undefined;`;
1598
+ }
1599
+ // Deterministic property: same input always produces same output
1600
+ else if (propertyLower.includes('deterministic') || propertyLower.includes('pure') ||
1601
+ propertyLower.includes('consistent')) {
1602
+ generators.push(this.inferGeneratorFromConstraints(constraints, 'input'));
1603
+ assertion = `// Deterministic: same input always gives same output
1604
+ const result1 = ${funcName}(input);
1605
+ const result2 = ${funcName}(input);
1606
+ return JSON.stringify(result1) === JSON.stringify(result2);`;
1607
+ }
1608
+ // Default case: basic existence check with type-appropriate generator
1609
+ else {
1610
+ generators.push(this.inferGeneratorFromConstraints(constraints, 'input'));
1611
+ assertion = `// Basic property: function returns a value
1612
+ return result !== undefined;`;
1613
+ }
1614
+ return { generators, assertion, setupCode };
1615
+ }
1616
+ /**
1617
+ * Infer the appropriate fast-check generator from constraints
1618
+ */
1619
+ inferGeneratorFromConstraints(constraints, hint) {
1620
+ // Check explicit type constraint
1621
+ const type = constraints.type?.toLowerCase() || hint.toLowerCase();
1622
+ if (type.includes('string') || type.includes('text')) {
1623
+ const minLength = constraints.minLength;
1624
+ const maxLength = constraints.maxLength;
1625
+ if (minLength !== undefined || maxLength !== undefined) {
1626
+ return `fc.string({ minLength: ${minLength ?? 0}, maxLength: ${maxLength ?? 100} })`;
1627
+ }
1628
+ return 'fc.string()';
1629
+ }
1630
+ if (type.includes('number') || type.includes('int') || type.includes('value')) {
1631
+ const min = constraints.min;
1632
+ const max = constraints.max;
1633
+ if (min !== undefined || max !== undefined) {
1634
+ return `fc.integer({ min: ${min ?? Number.MIN_SAFE_INTEGER}, max: ${max ?? Number.MAX_SAFE_INTEGER} })`;
1635
+ }
1636
+ return 'fc.integer()';
1637
+ }
1638
+ if (type.includes('float') || type.includes('decimal')) {
1639
+ return 'fc.float()';
1640
+ }
1641
+ if (type.includes('boolean') || type.includes('bool')) {
1642
+ return 'fc.boolean()';
1643
+ }
1644
+ if (type.includes('array') || type.includes('list')) {
1645
+ const itemType = constraints.itemType || 'anything';
1646
+ const itemGen = this.getSimpleGenerator(itemType);
1647
+ return `fc.array(${itemGen})`;
1648
+ }
1649
+ if (type.includes('object') || type.includes('record')) {
1650
+ return 'fc.object()';
1651
+ }
1652
+ if (type.includes('date')) {
1653
+ return 'fc.date()';
1654
+ }
1655
+ if (type.includes('uuid') || type.includes('id')) {
1656
+ return 'fc.uuid()';
1657
+ }
1658
+ if (type.includes('email')) {
1659
+ return 'fc.emailAddress()';
1660
+ }
1661
+ // Default to anything
1662
+ return 'fc.anything()';
1663
+ }
1664
+ /**
1665
+ * Get a simple generator for a type name
1666
+ */
1667
+ getSimpleGenerator(typeName) {
1668
+ const typeMap = {
1669
+ string: 'fc.string()',
1670
+ number: 'fc.integer()',
1671
+ integer: 'fc.integer()',
1672
+ float: 'fc.float()',
1673
+ boolean: 'fc.boolean()',
1674
+ date: 'fc.date()',
1675
+ uuid: 'fc.uuid()',
1676
+ anything: 'fc.anything()',
1677
+ };
1678
+ return typeMap[typeName.toLowerCase()] || 'fc.anything()';
1679
+ }
1680
+ /**
1681
+ * Generate parameter names from generator list
1682
+ */
1683
+ generatePropertyParams(generators) {
1684
+ if (generators.length === 1) {
1685
+ return 'input';
1686
+ }
1687
+ return generators.map((_, i) => String.fromCharCode(97 + i)).join(', '); // a, b, c...
1688
+ }
1689
+ /**
1690
+ * Generate argument list for function call
1691
+ */
1692
+ generatePropertyArgs(generators) {
1693
+ if (generators.length === 1) {
1694
+ return 'input';
1695
+ }
1696
+ return generators.map((_, i) => String.fromCharCode(97 + i)).join(', ');
1697
+ }
1698
+ inferGenerators(property, constraints) {
1699
+ const generators = [];
1700
+ const propertyLower = property.toLowerCase();
1701
+ // Analyze property description to infer appropriate generators
1702
+ // String-related properties
1703
+ if (propertyLower.includes('string') ||
1704
+ propertyLower.includes('text') ||
1705
+ propertyLower.includes('name') ||
1706
+ propertyLower.includes('email')) {
1707
+ if (constraints.minLength || constraints.maxLength) {
1708
+ const min = constraints.minLength ?? 0;
1709
+ const max = constraints.maxLength ?? 100;
1710
+ generators.push(`fc.string({ minLength: ${min}, maxLength: ${max} })`);
1711
+ }
1712
+ else {
1713
+ generators.push('fc.string()');
1714
+ }
1715
+ if (propertyLower.includes('email')) {
1716
+ generators.push('fc.emailAddress()');
1717
+ }
1718
+ }
1719
+ // Number-related properties
1720
+ if (propertyLower.includes('number') ||
1721
+ propertyLower.includes('count') ||
1722
+ propertyLower.includes('amount') ||
1723
+ propertyLower.includes('integer') ||
1724
+ propertyLower.includes('positive') ||
1725
+ propertyLower.includes('negative')) {
1726
+ if (propertyLower.includes('positive')) {
1727
+ generators.push('fc.nat()');
1728
+ }
1729
+ else if (propertyLower.includes('negative')) {
1730
+ generators.push('fc.integer({ max: -1 })');
1731
+ }
1732
+ else if (constraints.min !== undefined || constraints.max !== undefined) {
1733
+ const min = constraints.min ?? Number.MIN_SAFE_INTEGER;
1734
+ const max = constraints.max ?? Number.MAX_SAFE_INTEGER;
1735
+ generators.push(`fc.integer({ min: ${min}, max: ${max} })`);
1736
+ }
1737
+ else {
1738
+ generators.push('fc.integer()');
1739
+ }
1740
+ if (propertyLower.includes('float') || propertyLower.includes('decimal')) {
1741
+ generators.push('fc.float()');
1742
+ }
1743
+ }
1744
+ // Boolean properties
1745
+ if (propertyLower.includes('boolean') || propertyLower.includes('flag')) {
1746
+ generators.push('fc.boolean()');
1747
+ }
1748
+ // Array-related properties
1749
+ if (propertyLower.includes('array') ||
1750
+ propertyLower.includes('list') ||
1751
+ propertyLower.includes('collection')) {
1752
+ const itemType = constraints.itemType || 'anything';
1753
+ const itemGen = this.getGeneratorForType(itemType);
1754
+ if (constraints.minItems || constraints.maxItems) {
1755
+ const min = constraints.minItems ?? 0;
1756
+ const max = constraints.maxItems ?? 10;
1757
+ generators.push(`fc.array(${itemGen}, { minLength: ${min}, maxLength: ${max} })`);
1758
+ }
1759
+ else {
1760
+ generators.push(`fc.array(${itemGen})`);
1761
+ }
1762
+ }
1763
+ // Object-related properties
1764
+ if (propertyLower.includes('object') || propertyLower.includes('record')) {
1765
+ generators.push('fc.object()');
1766
+ generators.push('fc.dictionary(fc.string(), fc.anything())');
1767
+ }
1768
+ // Date-related properties
1769
+ if (propertyLower.includes('date') || propertyLower.includes('time')) {
1770
+ generators.push('fc.date()');
1771
+ }
1772
+ // UUID properties
1773
+ if (propertyLower.includes('uuid') || propertyLower.includes('id')) {
1774
+ generators.push('fc.uuid()');
1775
+ }
1776
+ // Default fallback if no specific type detected
1777
+ if (generators.length === 0) {
1778
+ generators.push('fc.anything()');
1779
+ }
1780
+ return generators;
1781
+ }
1782
+ getGeneratorForType(type) {
1783
+ const typeGenerators = {
1784
+ string: 'fc.string()',
1785
+ number: 'fc.integer()',
1786
+ integer: 'fc.integer()',
1787
+ float: 'fc.float()',
1788
+ boolean: 'fc.boolean()',
1789
+ date: 'fc.date()',
1790
+ uuid: 'fc.uuid()',
1791
+ anything: 'fc.anything()',
1792
+ };
1793
+ return typeGenerators[type.toLowerCase()] || 'fc.anything()';
1794
+ }
1795
+ collectArbitraries(tests) {
1796
+ const arbitraries = new Set();
1797
+ for (const test of tests) {
1798
+ test.generators.forEach((g) => arbitraries.add(g));
1799
+ }
1800
+ return Array.from(arbitraries);
1801
+ }
1802
+ generateRecordFromSchema(schema, seed, locale) {
1803
+ // Set faker locale and seed for reproducibility
1804
+ faker.seed(seed);
1805
+ if (locale && locale !== 'en') {
1806
+ // Note: faker v8+ uses different locale handling
1807
+ // For now, we use the default locale
1808
+ }
1809
+ const record = {};
1810
+ for (const [key, fieldDef] of Object.entries(schema)) {
1811
+ record[key] = this.generateValueForField(key, fieldDef, seed);
1812
+ }
1813
+ return record;
1814
+ }
1815
+ generateValueForField(fieldName, fieldDef, _seed) {
1816
+ // Handle simple type strings
1817
+ if (typeof fieldDef === 'string') {
1818
+ return this.generateValueForType(fieldDef, fieldName);
1819
+ }
1820
+ // Handle complex field definitions
1821
+ if (typeof fieldDef === 'object' && fieldDef !== null) {
1822
+ const field = fieldDef;
1823
+ // Use explicit faker method if specified
1824
+ if (field.faker) {
1825
+ return this.callFakerMethod(field.faker);
1826
+ }
1827
+ return this.generateValueForType(field.type, fieldName, field);
1828
+ }
1829
+ return null;
1830
+ }
1831
+ generateValueForType(type, fieldName, options) {
1832
+ const normalizedType = type.toLowerCase();
1833
+ // Try to infer the best faker method based on field name and type
1834
+ switch (normalizedType) {
1835
+ case 'string':
1836
+ return this.generateStringValue(fieldName, options);
1837
+ case 'number':
1838
+ case 'int':
1839
+ case 'integer':
1840
+ return this.generateNumberValue(options);
1841
+ case 'float':
1842
+ case 'decimal':
1843
+ return faker.number.float({ min: options?.min ?? 0, max: options?.max ?? 1000, fractionDigits: 2 });
1844
+ case 'boolean':
1845
+ case 'bool':
1846
+ return faker.datatype.boolean();
1847
+ case 'date':
1848
+ case 'datetime':
1849
+ return faker.date.recent().toISOString();
1850
+ case 'email':
1851
+ return faker.internet.email();
1852
+ case 'uuid':
1853
+ case 'id':
1854
+ return faker.string.uuid();
1855
+ case 'url':
1856
+ return faker.internet.url();
1857
+ case 'phone':
1858
+ return faker.phone.number();
1859
+ case 'address':
1860
+ return this.generateAddress();
1861
+ case 'name':
1862
+ case 'fullname':
1863
+ return faker.person.fullName();
1864
+ case 'firstname':
1865
+ return faker.person.firstName();
1866
+ case 'lastname':
1867
+ return faker.person.lastName();
1868
+ case 'username':
1869
+ return faker.internet.username();
1870
+ case 'password':
1871
+ return faker.internet.password();
1872
+ case 'company':
1873
+ return faker.company.name();
1874
+ case 'jobtitle':
1875
+ return faker.person.jobTitle();
1876
+ case 'text':
1877
+ case 'paragraph':
1878
+ return faker.lorem.paragraph();
1879
+ case 'sentence':
1880
+ return faker.lorem.sentence();
1881
+ case 'word':
1882
+ case 'words':
1883
+ return faker.lorem.word();
1884
+ case 'avatar':
1885
+ case 'image':
1886
+ return faker.image.avatar();
1887
+ case 'color':
1888
+ return faker.color.rgb();
1889
+ case 'ipaddress':
1890
+ case 'ip':
1891
+ return faker.internet.ipv4();
1892
+ case 'mac':
1893
+ return faker.internet.mac();
1894
+ case 'latitude':
1895
+ return faker.location.latitude();
1896
+ case 'longitude':
1897
+ return faker.location.longitude();
1898
+ case 'country':
1899
+ return faker.location.country();
1900
+ case 'city':
1901
+ return faker.location.city();
1902
+ case 'zipcode':
1903
+ case 'postalcode':
1904
+ return faker.location.zipCode();
1905
+ case 'creditcard':
1906
+ return faker.finance.creditCardNumber();
1907
+ case 'currency':
1908
+ return faker.finance.currencyCode();
1909
+ case 'amount':
1910
+ case 'price':
1911
+ return faker.finance.amount();
1912
+ case 'json':
1913
+ case 'object':
1914
+ return { key: faker.lorem.word(), value: faker.lorem.sentence() };
1915
+ case 'array':
1916
+ return [faker.lorem.word(), faker.lorem.word(), faker.lorem.word()];
1917
+ case 'enum':
1918
+ if (options?.enum && options.enum.length > 0) {
1919
+ return faker.helpers.arrayElement(options.enum);
1920
+ }
1921
+ return faker.lorem.word();
1922
+ default:
1923
+ // Try to infer from field name
1924
+ return this.inferValueFromFieldName(fieldName);
1925
+ }
1926
+ }
1927
+ generateStringValue(fieldName, options) {
1928
+ const lowerName = fieldName.toLowerCase();
1929
+ // Infer type from field name
1930
+ if (lowerName.includes('email'))
1931
+ return faker.internet.email();
1932
+ if (lowerName.includes('name') && lowerName.includes('first'))
1933
+ return faker.person.firstName();
1934
+ if (lowerName.includes('name') && lowerName.includes('last'))
1935
+ return faker.person.lastName();
1936
+ if (lowerName.includes('name'))
1937
+ return faker.person.fullName();
1938
+ if (lowerName.includes('phone'))
1939
+ return faker.phone.number();
1940
+ if (lowerName.includes('address'))
1941
+ return faker.location.streetAddress();
1942
+ if (lowerName.includes('city'))
1943
+ return faker.location.city();
1944
+ if (lowerName.includes('country'))
1945
+ return faker.location.country();
1946
+ if (lowerName.includes('zip') || lowerName.includes('postal'))
1947
+ return faker.location.zipCode();
1948
+ if (lowerName.includes('url') || lowerName.includes('website'))
1949
+ return faker.internet.url();
1950
+ if (lowerName.includes('username') || lowerName.includes('user'))
1951
+ return faker.internet.username();
1952
+ if (lowerName.includes('password'))
1953
+ return faker.internet.password();
1954
+ if (lowerName.includes('description') || lowerName.includes('bio'))
1955
+ return faker.lorem.paragraph();
1956
+ if (lowerName.includes('title'))
1957
+ return faker.lorem.sentence();
1958
+ if (lowerName.includes('company'))
1959
+ return faker.company.name();
1960
+ if (lowerName.includes('job'))
1961
+ return faker.person.jobTitle();
1962
+ if (lowerName.includes('avatar') || lowerName.includes('image'))
1963
+ return faker.image.avatar();
1964
+ // Apply pattern if provided
1965
+ if (options?.pattern) {
1966
+ return faker.helpers.fromRegExp(options.pattern);
1967
+ }
1968
+ // Default string generation
1969
+ return faker.lorem.words(3);
1970
+ }
1971
+ generateNumberValue(options) {
1972
+ const min = options?.min ?? 0;
1973
+ const max = options?.max ?? 10000;
1974
+ return faker.number.int({ min, max });
1975
+ }
1976
+ generateAddress() {
1977
+ return {
1978
+ street: faker.location.streetAddress(),
1979
+ city: faker.location.city(),
1980
+ state: faker.location.state(),
1981
+ zipCode: faker.location.zipCode(),
1982
+ country: faker.location.country(),
1983
+ };
1984
+ }
1985
+ inferValueFromFieldName(fieldName) {
1986
+ const lowerName = fieldName.toLowerCase();
1987
+ if (lowerName.includes('id'))
1988
+ return faker.string.uuid();
1989
+ if (lowerName.includes('email'))
1990
+ return faker.internet.email();
1991
+ if (lowerName.includes('name'))
1992
+ return faker.person.fullName();
1993
+ if (lowerName.includes('phone'))
1994
+ return faker.phone.number();
1995
+ if (lowerName.includes('date') || lowerName.includes('time'))
1996
+ return faker.date.recent().toISOString();
1997
+ if (lowerName.includes('url'))
1998
+ return faker.internet.url();
1999
+ if (lowerName.includes('count') || lowerName.includes('amount'))
2000
+ return faker.number.int({ min: 0, max: 100 });
2001
+ if (lowerName.includes('price'))
2002
+ return faker.finance.amount();
2003
+ if (lowerName.includes('active') || lowerName.includes('enabled') || lowerName.includes('is')) {
2004
+ return faker.datatype.boolean();
2005
+ }
2006
+ // Default to a random string
2007
+ return faker.lorem.word();
2008
+ }
2009
+ callFakerMethod(methodPath) {
2010
+ try {
2011
+ const parts = methodPath.split('.');
2012
+ let result = faker;
2013
+ for (const part of parts) {
2014
+ if (result && typeof result === 'object' && part in result) {
2015
+ const next = result[part];
2016
+ if (typeof next === 'function') {
2017
+ result = next();
2018
+ }
2019
+ else {
2020
+ result = next;
2021
+ }
2022
+ }
2023
+ else {
2024
+ return faker.lorem.word();
2025
+ }
2026
+ }
2027
+ return result;
2028
+ }
2029
+ catch {
2030
+ return faker.lorem.word();
2031
+ }
2032
+ }
2033
+ linkRelatedRecords(records, schema) {
2034
+ // Find fields with references and link them
2035
+ const referenceFields = [];
2036
+ for (const [key, fieldDef] of Object.entries(schema)) {
2037
+ if (typeof fieldDef === 'object' && fieldDef !== null) {
2038
+ const field = fieldDef;
2039
+ if (field.reference) {
2040
+ referenceFields.push({ field: key, reference: field.reference });
2041
+ }
2042
+ }
2043
+ }
2044
+ // If we have reference fields, link records
2045
+ if (referenceFields.length > 0) {
2046
+ for (let i = 0; i < records.length; i++) {
2047
+ const record = records[i];
2048
+ for (const { field, reference } of referenceFields) {
2049
+ // Link to a random previous record's ID or create a new one
2050
+ if (i > 0 && reference === 'id') {
2051
+ const prevRecord = records[Math.floor(Math.random() * i)];
2052
+ record[field] = prevRecord['id'] ?? faker.string.uuid();
2053
+ }
2054
+ else {
2055
+ record[field] = faker.string.uuid();
2056
+ }
2057
+ }
2058
+ }
2059
+ }
2060
+ }
2061
+ async generateTestForLines(file, lines, framework) {
2062
+ if (lines.length === 0)
2063
+ return null;
2064
+ const testId = uuidv4();
2065
+ const testFile = this.getTestFilePath(file, framework);
2066
+ const moduleName = this.extractModuleName(file);
2067
+ const importPath = this.getImportPath(file);
2068
+ // Generate meaningful coverage test code
2069
+ const testCode = this.generateCoverageTestCode(moduleName, importPath, lines, framework);
2070
+ return {
2071
+ id: testId,
2072
+ name: `Coverage test for lines ${lines[0]}-${lines[lines.length - 1]}`,
2073
+ sourceFile: file,
2074
+ testFile,
2075
+ testCode,
2076
+ type: 'unit',
2077
+ assertions: this.countAssertions(testCode),
2078
+ };
2079
+ }
2080
+ /**
2081
+ * Generate actual coverage test code for specific lines
2082
+ */
2083
+ generateCoverageTestCode(moduleName, importPath, lines, framework) {
2084
+ const funcName = this.camelCase(moduleName);
2085
+ const lineRange = lines.length === 1
2086
+ ? `line ${lines[0]}`
2087
+ : `lines ${lines[0]}-${lines[lines.length - 1]}`;
2088
+ if (framework === 'pytest') {
2089
+ return `# Coverage test for ${lineRange} in ${moduleName}
2090
+ import pytest
2091
+ from ${importPath.replace(/\//g, '.')} import ${funcName}
2092
+
2093
+ class Test${this.pascalCase(moduleName)}Coverage:
2094
+ """Tests to cover ${lineRange}"""
2095
+
2096
+ def test_cover_${lines[0]}_${lines[lines.length - 1]}(self):
2097
+ """Exercise code path covering ${lineRange}"""
2098
+ # Arrange: Set up test inputs to reach uncovered lines
2099
+ test_input = None # Replace with appropriate input
2100
+
2101
+ # Act: Execute the code path
2102
+ try:
2103
+ result = ${funcName}(test_input)
2104
+
2105
+ # Assert: Verify expected behavior
2106
+ assert result is not None
2107
+ except Exception as e:
2108
+ # If exception is expected for this path, verify it
2109
+ pytest.fail(f"Unexpected exception: {e}")
2110
+ `;
2111
+ }
2112
+ // Default: Jest/Vitest format
2113
+ return `// Coverage test for ${lineRange} in ${moduleName}
2114
+ import { ${funcName} } from '${importPath}';
2115
+
2116
+ describe('${moduleName} coverage', () => {
2117
+ describe('${lineRange}', () => {
2118
+ it('should execute code path covering ${lineRange}', () => {
2119
+ // Arrange: Set up test inputs to reach uncovered lines
2120
+ const testInput = undefined; // Replace with appropriate input
2121
+
2122
+ // Act: Execute the code path
2123
+ const result = ${funcName}(testInput);
2124
+
2125
+ // Assert: Verify the code was reached and behaves correctly
2126
+ expect(result).toBeDefined();
2127
+ });
2128
+
2129
+ it('should handle edge case for ${lineRange}', () => {
2130
+ // Arrange: Set up edge case input
2131
+ const edgeCaseInput = null;
2132
+
2133
+ // Act & Assert: Verify edge case handling
2134
+ expect(() => ${funcName}(edgeCaseInput)).not.toThrow();
2135
+ });
2136
+ });
2137
+ });
2138
+ `;
2139
+ }
2140
+ groupConsecutiveLines(lines) {
2141
+ if (lines.length === 0)
2142
+ return [];
2143
+ const sorted = [...lines].sort((a, b) => a - b);
2144
+ const groups = [[sorted[0]]];
2145
+ for (let i = 1; i < sorted.length; i++) {
2146
+ const currentGroup = groups[groups.length - 1];
2147
+ if (sorted[i] - currentGroup[currentGroup.length - 1] <= 3) {
2148
+ currentGroup.push(sorted[i]);
2149
+ }
2150
+ else {
2151
+ groups.push([sorted[i]]);
2152
+ }
2153
+ }
2154
+ return groups;
2155
+ }
2156
+ getTestFilePath(sourceFile, framework) {
2157
+ const ext = sourceFile.split('.').pop() || 'ts';
2158
+ const base = sourceFile.replace(`.${ext}`, '');
2159
+ if (framework === 'pytest') {
2160
+ return `test_${base.split('/').pop()}.py`;
2161
+ }
2162
+ return `${base}.test.${ext}`;
2163
+ }
2164
+ extractModuleName(sourceFile) {
2165
+ const filename = sourceFile.split('/').pop() || sourceFile;
2166
+ return filename.replace(/\.(ts|js|tsx|jsx|py)$/, '');
2167
+ }
2168
+ getImportPath(sourceFile) {
2169
+ return sourceFile.replace(/\.(ts|js|tsx|jsx)$/, '');
2170
+ }
2171
+ countAssertions(testCode) {
2172
+ const assertPatterns = [
2173
+ /expect\(/g,
2174
+ /assert/g,
2175
+ /\.to\./g,
2176
+ /\.toBe/g,
2177
+ /\.toEqual/g,
2178
+ ];
2179
+ let count = 0;
2180
+ for (const pattern of assertPatterns) {
2181
+ const matches = testCode.match(pattern);
2182
+ count += matches ? matches.length : 0;
2183
+ }
2184
+ return Math.max(1, count);
2185
+ }
2186
+ estimateCoverage(tests, target) {
2187
+ // Estimate coverage based on test characteristics
2188
+ const totalAssertions = tests.reduce((sum, t) => sum + t.assertions, 0);
2189
+ const totalTests = tests.length;
2190
+ // Base coverage from test count (each test covers ~3-5% typically)
2191
+ const testBasedCoverage = totalTests * 4;
2192
+ // Additional coverage from assertions (each assertion ~1-2%)
2193
+ const assertionCoverage = totalAssertions * 1.5;
2194
+ // Test type multipliers (integration tests cover more)
2195
+ const typeMultiplier = tests.reduce((mult, t) => {
2196
+ if (t.type === 'integration')
2197
+ return mult + 0.1;
2198
+ if (t.type === 'e2e')
2199
+ return mult + 0.15;
2200
+ return mult;
2201
+ }, 1);
2202
+ // Calculate estimated coverage with diminishing returns
2203
+ const rawEstimate = (testBasedCoverage + assertionCoverage) * typeMultiplier;
2204
+ const diminishedEstimate = rawEstimate * (1 - rawEstimate / 200); // Diminishing returns above 100%
2205
+ // Cap at target and round
2206
+ const estimatedCoverage = Math.min(target, Math.max(0, diminishedEstimate));
2207
+ return Math.round(estimatedCoverage * 10) / 10;
2208
+ }
2209
+ camelCase(str) {
2210
+ return str
2211
+ .replace(/[^a-zA-Z0-9]+(.)/g, (_, chr) => chr.toUpperCase())
2212
+ .replace(/^./, (chr) => chr.toLowerCase());
2213
+ }
2214
+ pascalCase(str) {
2215
+ return str
2216
+ .replace(/[^a-zA-Z0-9]+(.)/g, (_, chr) => chr.toUpperCase())
2217
+ .replace(/^./, (chr) => chr.toUpperCase());
2218
+ }
2219
+ async storeGenerationMetadata(tests, patterns) {
2220
+ const metadata = {
2221
+ generatedAt: new Date().toISOString(),
2222
+ testCount: tests.length,
2223
+ patterns,
2224
+ testIds: tests.map((t) => t.id),
2225
+ };
2226
+ await this.memory.set(`test-generation:metadata:${Date.now()}`, metadata, { namespace: 'test-generation', ttl: 86400 * 7 } // 7 days
2227
+ );
2228
+ }
2229
+ }
2230
+ //# sourceMappingURL=test-generator.js.map