agentic-qe 2.6.5 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (534) hide show
  1. package/CHANGELOG.md +112 -0
  2. package/README.md +1 -1
  3. package/dist/agents/AccessibilityAllyAgent.d.ts.map +1 -1
  4. package/dist/agents/AccessibilityAllyAgent.js +1 -1
  5. package/dist/agents/AccessibilityAllyAgent.js.map +1 -1
  6. package/dist/agents/ApiContractValidatorAgent.d.ts +83 -56
  7. package/dist/agents/ApiContractValidatorAgent.d.ts.map +1 -1
  8. package/dist/agents/ApiContractValidatorAgent.js +97 -46
  9. package/dist/agents/ApiContractValidatorAgent.js.map +1 -1
  10. package/dist/agents/BaseAgent.d.ts +64 -13
  11. package/dist/agents/BaseAgent.d.ts.map +1 -1
  12. package/dist/agents/BaseAgent.js +5 -4
  13. package/dist/agents/BaseAgent.js.map +1 -1
  14. package/dist/agents/CodeComplexityAnalyzerAgent.d.ts +18 -12
  15. package/dist/agents/CodeComplexityAnalyzerAgent.d.ts.map +1 -1
  16. package/dist/agents/CodeComplexityAnalyzerAgent.js +25 -24
  17. package/dist/agents/CodeComplexityAnalyzerAgent.js.map +1 -1
  18. package/dist/agents/CodeIntelligenceAgent.d.ts.map +1 -1
  19. package/dist/agents/CodeIntelligenceAgent.js.map +1 -1
  20. package/dist/agents/CoverageAnalyzerAgent.d.ts +201 -41
  21. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  22. package/dist/agents/CoverageAnalyzerAgent.js +165 -4
  23. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  24. package/dist/agents/DeploymentReadinessAgent.d.ts +49 -13
  25. package/dist/agents/DeploymentReadinessAgent.d.ts.map +1 -1
  26. package/dist/agents/DeploymentReadinessAgent.js +30 -30
  27. package/dist/agents/DeploymentReadinessAgent.js.map +1 -1
  28. package/dist/agents/FlakyTestHunterAgent.d.ts +56 -18
  29. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
  30. package/dist/agents/FlakyTestHunterAgent.js +45 -46
  31. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  32. package/dist/agents/FleetCommanderAgent.d.ts +199 -14
  33. package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
  34. package/dist/agents/FleetCommanderAgent.js +270 -34
  35. package/dist/agents/FleetCommanderAgent.js.map +1 -1
  36. package/dist/agents/LearningAgent.d.ts +29 -7
  37. package/dist/agents/LearningAgent.d.ts.map +1 -1
  38. package/dist/agents/LearningAgent.js +6 -4
  39. package/dist/agents/LearningAgent.js.map +1 -1
  40. package/dist/agents/NeuralAgentExtension.d.ts +46 -2
  41. package/dist/agents/NeuralAgentExtension.d.ts.map +1 -1
  42. package/dist/agents/NeuralAgentExtension.js +13 -11
  43. package/dist/agents/NeuralAgentExtension.js.map +1 -1
  44. package/dist/agents/PerformanceTesterAgent.d.ts +177 -14
  45. package/dist/agents/PerformanceTesterAgent.d.ts.map +1 -1
  46. package/dist/agents/PerformanceTesterAgent.js +73 -10
  47. package/dist/agents/PerformanceTesterAgent.js.map +1 -1
  48. package/dist/agents/ProductionIntelligenceAgent.d.ts +117 -15
  49. package/dist/agents/ProductionIntelligenceAgent.d.ts.map +1 -1
  50. package/dist/agents/ProductionIntelligenceAgent.js +76 -63
  51. package/dist/agents/ProductionIntelligenceAgent.js.map +1 -1
  52. package/dist/agents/QXPartnerAgent.d.ts.map +1 -1
  53. package/dist/agents/QXPartnerAgent.js +40 -30
  54. package/dist/agents/QXPartnerAgent.js.map +1 -1
  55. package/dist/agents/QualityAnalyzerAgent.d.ts +113 -6
  56. package/dist/agents/QualityAnalyzerAgent.d.ts.map +1 -1
  57. package/dist/agents/QualityAnalyzerAgent.js +30 -25
  58. package/dist/agents/QualityAnalyzerAgent.js.map +1 -1
  59. package/dist/agents/QualityGateAgent.d.ts +125 -4
  60. package/dist/agents/QualityGateAgent.d.ts.map +1 -1
  61. package/dist/agents/QualityGateAgent.js +13 -15
  62. package/dist/agents/QualityGateAgent.js.map +1 -1
  63. package/dist/agents/RegressionRiskAnalyzerAgent.d.ts +32 -13
  64. package/dist/agents/RegressionRiskAnalyzerAgent.d.ts.map +1 -1
  65. package/dist/agents/RegressionRiskAnalyzerAgent.js +49 -30
  66. package/dist/agents/RegressionRiskAnalyzerAgent.js.map +1 -1
  67. package/dist/agents/RequirementsValidatorAgent.d.ts +6 -13
  68. package/dist/agents/RequirementsValidatorAgent.d.ts.map +1 -1
  69. package/dist/agents/RequirementsValidatorAgent.js +34 -27
  70. package/dist/agents/RequirementsValidatorAgent.js.map +1 -1
  71. package/dist/agents/SecurityScannerAgent.d.ts +86 -14
  72. package/dist/agents/SecurityScannerAgent.d.ts.map +1 -1
  73. package/dist/agents/SecurityScannerAgent.js +53 -38
  74. package/dist/agents/SecurityScannerAgent.js.map +1 -1
  75. package/dist/agents/TestDataArchitectAgent.d.ts +140 -57
  76. package/dist/agents/TestDataArchitectAgent.d.ts.map +1 -1
  77. package/dist/agents/TestDataArchitectAgent.js +93 -54
  78. package/dist/agents/TestDataArchitectAgent.js.map +1 -1
  79. package/dist/agents/TestExecutorAgent.d.ts +43 -18
  80. package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
  81. package/dist/agents/TestExecutorAgent.js +31 -23
  82. package/dist/agents/TestExecutorAgent.js.map +1 -1
  83. package/dist/agents/TestGeneratorAgent.d.ts +71 -23
  84. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  85. package/dist/agents/TestGeneratorAgent.js +116 -58
  86. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  87. package/dist/agents/adapters/LearningEngineAdapter.d.ts.map +1 -1
  88. package/dist/agents/adapters/LearningEngineAdapter.js.map +1 -1
  89. package/dist/agents/adapters/MemoryServiceAdapter.d.ts.map +1 -1
  90. package/dist/agents/adapters/MemoryServiceAdapter.js +10 -6
  91. package/dist/agents/adapters/MemoryServiceAdapter.js.map +1 -1
  92. package/dist/agents/index.d.ts +36 -5
  93. package/dist/agents/index.d.ts.map +1 -1
  94. package/dist/agents/index.js +1 -1
  95. package/dist/agents/index.js.map +1 -1
  96. package/dist/agents/n8n/N8nBaseAgent.d.ts.map +1 -1
  97. package/dist/agents/n8n/N8nBaseAgent.js +2 -1
  98. package/dist/agents/n8n/N8nBaseAgent.js.map +1 -1
  99. package/dist/cli/commands/analyze.d.ts.map +1 -1
  100. package/dist/cli/commands/analyze.js +221 -66
  101. package/dist/cli/commands/analyze.js.map +1 -1
  102. package/dist/cli/commands/fleet/backup.d.ts +4 -4
  103. package/dist/cli/commands/fleet/backup.d.ts.map +1 -1
  104. package/dist/cli/commands/fleet/backup.js +4 -4
  105. package/dist/cli/commands/fleet/backup.js.map +1 -1
  106. package/dist/cli/commands/fleet/health.d.ts +131 -1
  107. package/dist/cli/commands/fleet/health.d.ts.map +1 -1
  108. package/dist/cli/commands/fleet/health.js +204 -138
  109. package/dist/cli/commands/fleet/health.js.map +1 -1
  110. package/dist/cli/commands/fleet/metrics.d.ts.map +1 -1
  111. package/dist/cli/commands/fleet/metrics.js +1 -1
  112. package/dist/cli/commands/fleet/metrics.js.map +1 -1
  113. package/dist/cli/commands/fleet/monitor.d.ts.map +1 -1
  114. package/dist/cli/commands/fleet/monitor.js +2 -1
  115. package/dist/cli/commands/fleet/monitor.js.map +1 -1
  116. package/dist/cli/commands/fleet/restart.d.ts.map +1 -1
  117. package/dist/cli/commands/fleet/restart.js +1 -1
  118. package/dist/cli/commands/fleet/restart.js.map +1 -1
  119. package/dist/cli/commands/fleet/shutdown.d.ts.map +1 -1
  120. package/dist/cli/commands/fleet/shutdown.js.map +1 -1
  121. package/dist/cli/commands/fleet/status.d.ts.map +1 -1
  122. package/dist/cli/commands/fleet/status.js +1 -1
  123. package/dist/cli/commands/fleet/status.js.map +1 -1
  124. package/dist/cli/commands/fleet/topology.d.ts.map +1 -1
  125. package/dist/cli/commands/fleet/topology.js +9 -8
  126. package/dist/cli/commands/fleet/topology.js.map +1 -1
  127. package/dist/cli/commands/fleet.d.ts +8 -0
  128. package/dist/cli/commands/fleet.d.ts.map +1 -1
  129. package/dist/cli/commands/fleet.js +55 -21
  130. package/dist/cli/commands/fleet.js.map +1 -1
  131. package/dist/cli/commands/improve/index.d.ts +2 -2
  132. package/dist/cli/commands/improve/index.d.ts.map +1 -1
  133. package/dist/cli/commands/improve/index.js +76 -38
  134. package/dist/cli/commands/improve/index.js.map +1 -1
  135. package/dist/cli/commands/kg/mincut.d.ts +50 -0
  136. package/dist/cli/commands/kg/mincut.d.ts.map +1 -0
  137. package/dist/cli/commands/kg/mincut.js +372 -0
  138. package/dist/cli/commands/kg/mincut.js.map +1 -0
  139. package/dist/cli/commands/learn/index.d.ts.map +1 -1
  140. package/dist/cli/commands/learn/index.js +57 -19
  141. package/dist/cli/commands/learn/index.js.map +1 -1
  142. package/dist/cli/commands/memory/index.d.ts +23 -4
  143. package/dist/cli/commands/memory/index.d.ts.map +1 -1
  144. package/dist/cli/commands/memory/index.js.map +1 -1
  145. package/dist/cli/commands/memory/stats.js +1 -1
  146. package/dist/cli/commands/memory/stats.js.map +1 -1
  147. package/dist/cli/commands/memory/vacuum.js +3 -3
  148. package/dist/cli/commands/memory/vacuum.js.map +1 -1
  149. package/dist/cli/commands/patterns/extract.d.ts.map +1 -1
  150. package/dist/cli/commands/patterns/extract.js +4 -3
  151. package/dist/cli/commands/patterns/extract.js.map +1 -1
  152. package/dist/cli/commands/patterns/index-new.d.ts +10 -1
  153. package/dist/cli/commands/patterns/index-new.d.ts.map +1 -1
  154. package/dist/cli/commands/patterns/index-new.js.map +1 -1
  155. package/dist/cli/commands/patterns/index.d.ts +2 -2
  156. package/dist/cli/commands/patterns/index.d.ts.map +1 -1
  157. package/dist/cli/commands/patterns/index.js +105 -19
  158. package/dist/cli/commands/patterns/index.js.map +1 -1
  159. package/dist/cli/commands/patterns/list.d.ts.map +1 -1
  160. package/dist/cli/commands/patterns/list.js +2 -1
  161. package/dist/cli/commands/patterns/list.js.map +1 -1
  162. package/dist/cli/commands/patterns/search.d.ts.map +1 -1
  163. package/dist/cli/commands/patterns/search.js +2 -1
  164. package/dist/cli/commands/patterns/search.js.map +1 -1
  165. package/dist/cli/commands/patterns/show.d.ts.map +1 -1
  166. package/dist/cli/commands/patterns/show.js +7 -6
  167. package/dist/cli/commands/patterns/show.js.map +1 -1
  168. package/dist/cli/commands/patterns/stats.d.ts.map +1 -1
  169. package/dist/cli/commands/patterns/stats.js +5 -4
  170. package/dist/cli/commands/patterns/stats.js.map +1 -1
  171. package/dist/cli/commands/quality/baseline.d.ts.map +1 -1
  172. package/dist/cli/commands/quality/baseline.js +2 -2
  173. package/dist/cli/commands/quality/baseline.js.map +1 -1
  174. package/dist/cli/commands/quality/compare.d.ts.map +1 -1
  175. package/dist/cli/commands/quality/compare.js +1 -1
  176. package/dist/cli/commands/quality/compare.js.map +1 -1
  177. package/dist/cli/commands/quality/trends.d.ts.map +1 -1
  178. package/dist/cli/commands/quality/trends.js.map +1 -1
  179. package/dist/cli/commands/routing/index.d.ts.map +1 -1
  180. package/dist/cli/commands/routing/index.js +90 -35
  181. package/dist/cli/commands/routing/index.js.map +1 -1
  182. package/dist/cli/commands/run.d.ts.map +1 -1
  183. package/dist/cli/commands/run.js +59 -33
  184. package/dist/cli/commands/run.js.map +1 -1
  185. package/dist/cli/commands/workflow/cancel.d.ts +14 -7
  186. package/dist/cli/commands/workflow/cancel.d.ts.map +1 -1
  187. package/dist/cli/commands/workflow/cancel.js +23 -6
  188. package/dist/cli/commands/workflow/cancel.js.map +1 -1
  189. package/dist/cli/commands/workflow/list.d.ts.map +1 -1
  190. package/dist/cli/commands/workflow/list.js +46 -9
  191. package/dist/cli/commands/workflow/list.js.map +1 -1
  192. package/dist/cli/commands/workflow/pause.d.ts +1 -1
  193. package/dist/cli/commands/workflow/pause.d.ts.map +1 -1
  194. package/dist/cli/commands/workflow/pause.js +21 -4
  195. package/dist/cli/commands/workflow/pause.js.map +1 -1
  196. package/dist/cli/index.js +91 -0
  197. package/dist/cli/index.js.map +1 -1
  198. package/dist/cli/init/claude-config.js +2 -2
  199. package/dist/code-intelligence/analysis/mincut/CircularDependencyDetector.d.ts +148 -0
  200. package/dist/code-intelligence/analysis/mincut/CircularDependencyDetector.d.ts.map +1 -0
  201. package/dist/code-intelligence/analysis/mincut/CircularDependencyDetector.js +393 -0
  202. package/dist/code-intelligence/analysis/mincut/CircularDependencyDetector.js.map +1 -0
  203. package/dist/code-intelligence/analysis/mincut/GraphAdapter.d.ts +169 -0
  204. package/dist/code-intelligence/analysis/mincut/GraphAdapter.d.ts.map +1 -0
  205. package/dist/code-intelligence/analysis/mincut/GraphAdapter.js +335 -0
  206. package/dist/code-intelligence/analysis/mincut/GraphAdapter.js.map +1 -0
  207. package/dist/code-intelligence/analysis/mincut/JsMinCut.d.ts +55 -0
  208. package/dist/code-intelligence/analysis/mincut/JsMinCut.d.ts.map +1 -0
  209. package/dist/code-intelligence/analysis/mincut/JsMinCut.js +265 -0
  210. package/dist/code-intelligence/analysis/mincut/JsMinCut.js.map +1 -0
  211. package/dist/code-intelligence/analysis/mincut/MinCutAnalyzer.d.ts +92 -0
  212. package/dist/code-intelligence/analysis/mincut/MinCutAnalyzer.d.ts.map +1 -0
  213. package/dist/code-intelligence/analysis/mincut/MinCutAnalyzer.js +200 -0
  214. package/dist/code-intelligence/analysis/mincut/MinCutAnalyzer.js.map +1 -0
  215. package/dist/code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.d.ts +157 -0
  216. package/dist/code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.d.ts.map +1 -0
  217. package/dist/code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.js +434 -0
  218. package/dist/code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.js.map +1 -0
  219. package/dist/code-intelligence/analysis/mincut/index.d.ts +12 -0
  220. package/dist/code-intelligence/analysis/mincut/index.d.ts.map +1 -0
  221. package/dist/code-intelligence/analysis/mincut/index.js +20 -0
  222. package/dist/code-intelligence/analysis/mincut/index.js.map +1 -0
  223. package/dist/code-intelligence/analysis/mincut/types.d.ts +145 -0
  224. package/dist/code-intelligence/analysis/mincut/types.d.ts.map +1 -0
  225. package/dist/code-intelligence/analysis/mincut/types.js +16 -0
  226. package/dist/code-intelligence/analysis/mincut/types.js.map +1 -0
  227. package/dist/code-intelligence/chunking/ASTChunker.d.ts +1 -1
  228. package/dist/code-intelligence/chunking/ASTChunker.d.ts.map +1 -1
  229. package/dist/code-intelligence/chunking/ASTChunker.js +4 -4
  230. package/dist/code-intelligence/chunking/ASTChunker.js.map +1 -1
  231. package/dist/code-intelligence/graph/GraphBuilder.d.ts +120 -0
  232. package/dist/code-intelligence/graph/GraphBuilder.d.ts.map +1 -1
  233. package/dist/code-intelligence/graph/GraphBuilder.js +517 -0
  234. package/dist/code-intelligence/graph/GraphBuilder.js.map +1 -1
  235. package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.d.ts.map +1 -1
  236. package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.js +3 -3
  237. package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.js.map +1 -1
  238. package/dist/code-intelligence/parser/{TreeSitterParser.d.ts → WebTreeSitterParser.d.ts} +45 -10
  239. package/dist/code-intelligence/parser/WebTreeSitterParser.d.ts.map +1 -0
  240. package/dist/code-intelligence/parser/{TreeSitterParser.js → WebTreeSitterParser.js} +147 -54
  241. package/dist/code-intelligence/parser/WebTreeSitterParser.js.map +1 -0
  242. package/dist/code-intelligence/parser/extractors/BaseExtractor.d.ts +12 -10
  243. package/dist/code-intelligence/parser/extractors/BaseExtractor.d.ts.map +1 -1
  244. package/dist/code-intelligence/parser/extractors/BaseExtractor.js +7 -3
  245. package/dist/code-intelligence/parser/extractors/BaseExtractor.js.map +1 -1
  246. package/dist/code-intelligence/parser/extractors/GoExtractor.d.ts +7 -5
  247. package/dist/code-intelligence/parser/extractors/GoExtractor.d.ts.map +1 -1
  248. package/dist/code-intelligence/parser/extractors/GoExtractor.js +2 -2
  249. package/dist/code-intelligence/parser/extractors/GoExtractor.js.map +1 -1
  250. package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.d.ts +7 -5
  251. package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.d.ts.map +1 -1
  252. package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.js +2 -2
  253. package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.js.map +1 -1
  254. package/dist/code-intelligence/parser/extractors/PythonExtractor.d.ts +7 -5
  255. package/dist/code-intelligence/parser/extractors/PythonExtractor.d.ts.map +1 -1
  256. package/dist/code-intelligence/parser/extractors/PythonExtractor.js +2 -2
  257. package/dist/code-intelligence/parser/extractors/PythonExtractor.js.map +1 -1
  258. package/dist/code-intelligence/parser/extractors/RustExtractor.d.ts +7 -5
  259. package/dist/code-intelligence/parser/extractors/RustExtractor.d.ts.map +1 -1
  260. package/dist/code-intelligence/parser/extractors/RustExtractor.js +2 -2
  261. package/dist/code-intelligence/parser/extractors/RustExtractor.js.map +1 -1
  262. package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.d.ts +7 -5
  263. package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.d.ts.map +1 -1
  264. package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.js +2 -2
  265. package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.js.map +1 -1
  266. package/dist/code-intelligence/parser/index.d.ts +7 -1
  267. package/dist/code-intelligence/parser/index.d.ts.map +1 -1
  268. package/dist/code-intelligence/parser/index.js +11 -3
  269. package/dist/code-intelligence/parser/index.js.map +1 -1
  270. package/dist/code-intelligence/service/CodeIntelligenceService.d.ts.map +1 -1
  271. package/dist/code-intelligence/service/CodeIntelligenceService.js +7 -5
  272. package/dist/code-intelligence/service/CodeIntelligenceService.js.map +1 -1
  273. package/dist/core/ArtifactWorkflow.d.ts.map +1 -1
  274. package/dist/core/ArtifactWorkflow.js +130 -43
  275. package/dist/core/ArtifactWorkflow.js.map +1 -1
  276. package/dist/core/MemoryManager.d.ts +5 -5
  277. package/dist/core/MemoryManager.d.ts.map +1 -1
  278. package/dist/core/MemoryManager.js +4 -3
  279. package/dist/core/MemoryManager.js.map +1 -1
  280. package/dist/core/PatternDatabaseAdapter.d.ts +1 -1
  281. package/dist/core/PatternDatabaseAdapter.d.ts.map +1 -1
  282. package/dist/core/PatternDatabaseAdapter.js +12 -12
  283. package/dist/core/PatternDatabaseAdapter.js.map +1 -1
  284. package/dist/core/coordination/BlackboardCoordination.d.ts +2 -2
  285. package/dist/core/coordination/BlackboardCoordination.d.ts.map +1 -1
  286. package/dist/core/coordination/ConsensusGating.d.ts.map +1 -1
  287. package/dist/core/coordination/ConsensusGating.js +50 -9
  288. package/dist/core/coordination/ConsensusGating.js.map +1 -1
  289. package/dist/core/coordination/GOAPCoordination.d.ts +1 -1
  290. package/dist/core/coordination/GOAPCoordination.d.ts.map +1 -1
  291. package/dist/core/coordination/GOAPCoordination.js +70 -8
  292. package/dist/core/coordination/GOAPCoordination.js.map +1 -1
  293. package/dist/core/coordination/OODACoordination.d.ts +10 -10
  294. package/dist/core/coordination/OODACoordination.d.ts.map +1 -1
  295. package/dist/core/coordination/OODACoordination.js +48 -9
  296. package/dist/core/coordination/OODACoordination.js.map +1 -1
  297. package/dist/core/hooks/RollbackManager.d.ts +2 -2
  298. package/dist/core/hooks/RollbackManager.d.ts.map +1 -1
  299. package/dist/core/hooks/RollbackManager.js +41 -4
  300. package/dist/core/hooks/RollbackManager.js.map +1 -1
  301. package/dist/core/hooks/VerificationHookManager.d.ts +8 -8
  302. package/dist/core/hooks/VerificationHookManager.d.ts.map +1 -1
  303. package/dist/core/hooks/VerificationHookManager.js +12 -2
  304. package/dist/core/hooks/VerificationHookManager.js.map +1 -1
  305. package/dist/core/hooks/checkers/ConfigurationChecker.d.ts +1 -1
  306. package/dist/core/hooks/checkers/ConfigurationChecker.d.ts.map +1 -1
  307. package/dist/core/hooks/checkers/ConfigurationChecker.js.map +1 -1
  308. package/dist/core/hooks/validators/OutputValidator.d.ts +2 -2
  309. package/dist/core/hooks/validators/OutputValidator.d.ts.map +1 -1
  310. package/dist/core/hooks/validators/QualityValidator.d.ts +1 -1
  311. package/dist/core/hooks/validators/QualityValidator.d.ts.map +1 -1
  312. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  313. package/dist/core/memory/SwarmMemoryManager.d.ts +143 -37
  314. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  315. package/dist/core/memory/SwarmMemoryManager.js +28 -25
  316. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  317. package/dist/core/memory/VersionHistory.d.ts +5 -5
  318. package/dist/core/memory/VersionHistory.d.ts.map +1 -1
  319. package/dist/core/memory/VersionHistory.js +37 -4
  320. package/dist/core/memory/VersionHistory.js.map +1 -1
  321. package/dist/core/neural/NeuralTrainer.d.ts +12 -0
  322. package/dist/core/neural/NeuralTrainer.d.ts.map +1 -1
  323. package/dist/core/neural/NeuralTrainer.js +162 -18
  324. package/dist/core/neural/NeuralTrainer.js.map +1 -1
  325. package/dist/core/optimization/SwarmOptimizer.d.ts.map +1 -1
  326. package/dist/core/optimization/SwarmOptimizer.js +198 -26
  327. package/dist/core/optimization/SwarmOptimizer.js.map +1 -1
  328. package/dist/core/orchestration/WorkflowOrchestrator.d.ts +5 -1
  329. package/dist/core/orchestration/WorkflowOrchestrator.d.ts.map +1 -1
  330. package/dist/core/orchestration/WorkflowOrchestrator.js +58 -12
  331. package/dist/core/orchestration/WorkflowOrchestrator.js.map +1 -1
  332. package/dist/core/orchestration/types.d.ts +8 -8
  333. package/dist/core/orchestration/types.d.ts.map +1 -1
  334. package/dist/core/routing/AdaptiveModelRouter.d.ts +3 -3
  335. package/dist/core/routing/AdaptiveModelRouter.d.ts.map +1 -1
  336. package/dist/core/routing/AdaptiveModelRouter.js.map +1 -1
  337. package/dist/core/routing/CostTracker.d.ts +10 -2
  338. package/dist/core/routing/CostTracker.d.ts.map +1 -1
  339. package/dist/core/routing/CostTracker.js +36 -4
  340. package/dist/core/routing/CostTracker.js.map +1 -1
  341. package/dist/core/routing/FleetManagerIntegration.d.ts +1 -1
  342. package/dist/core/routing/types.d.ts +41 -4
  343. package/dist/core/routing/types.d.ts.map +1 -1
  344. package/dist/core/strategies/DefaultMemoryStrategy.d.ts.map +1 -1
  345. package/dist/core/strategies/DefaultMemoryStrategy.js +33 -1
  346. package/dist/core/strategies/DefaultMemoryStrategy.js.map +1 -1
  347. package/dist/coverage/CriticalPathDetector.d.ts +240 -0
  348. package/dist/coverage/CriticalPathDetector.d.ts.map +1 -0
  349. package/dist/coverage/CriticalPathDetector.js +388 -0
  350. package/dist/coverage/CriticalPathDetector.js.map +1 -0
  351. package/dist/coverage/index.d.ts +13 -0
  352. package/dist/coverage/index.d.ts.map +1 -0
  353. package/dist/coverage/index.js +16 -0
  354. package/dist/coverage/index.js.map +1 -0
  355. package/dist/fleet/topology/SPOFMonitor.d.ts +181 -0
  356. package/dist/fleet/topology/SPOFMonitor.d.ts.map +1 -0
  357. package/dist/fleet/topology/SPOFMonitor.js +286 -0
  358. package/dist/fleet/topology/SPOFMonitor.js.map +1 -0
  359. package/dist/fleet/topology/TopologyMinCutAnalyzer.d.ts +87 -0
  360. package/dist/fleet/topology/TopologyMinCutAnalyzer.d.ts.map +1 -0
  361. package/dist/fleet/topology/TopologyMinCutAnalyzer.js +472 -0
  362. package/dist/fleet/topology/TopologyMinCutAnalyzer.js.map +1 -0
  363. package/dist/fleet/topology/index.d.ts +13 -0
  364. package/dist/fleet/topology/index.d.ts.map +1 -0
  365. package/dist/fleet/topology/index.js +20 -0
  366. package/dist/fleet/topology/index.js.map +1 -0
  367. package/dist/fleet/topology/types.d.ts +139 -0
  368. package/dist/fleet/topology/types.d.ts.map +1 -0
  369. package/dist/fleet/topology/types.js +19 -0
  370. package/dist/fleet/topology/types.js.map +1 -0
  371. package/dist/learning/ImprovementLoop.d.ts +4 -4
  372. package/dist/learning/ImprovementLoop.d.ts.map +1 -1
  373. package/dist/learning/ImprovementLoop.js +108 -9
  374. package/dist/learning/ImprovementLoop.js.map +1 -1
  375. package/dist/learning/LearningEngine.d.ts +2 -2
  376. package/dist/learning/LearningEngine.d.ts.map +1 -1
  377. package/dist/learning/LearningEngine.js +72 -30
  378. package/dist/learning/LearningEngine.js.map +1 -1
  379. package/dist/learning/PerformanceTracker.d.ts.map +1 -1
  380. package/dist/learning/PerformanceTracker.js +40 -4
  381. package/dist/learning/PerformanceTracker.js.map +1 -1
  382. package/dist/learning/TransferLearningManager.d.ts +1 -1
  383. package/dist/learning/TransferLearningManager.d.ts.map +1 -1
  384. package/dist/learning/TransferLearningManager.js +143 -9
  385. package/dist/learning/TransferLearningManager.js.map +1 -1
  386. package/dist/learning/metrics/AlertManager.d.ts.map +1 -1
  387. package/dist/learning/metrics/AlertManager.js +20 -9
  388. package/dist/learning/metrics/AlertManager.js.map +1 -1
  389. package/dist/learning/metrics/LearningMetrics.d.ts.map +1 -1
  390. package/dist/learning/metrics/LearningMetrics.js +21 -21
  391. package/dist/learning/metrics/LearningMetrics.js.map +1 -1
  392. package/dist/learning/metrics/MetricsCollector.d.ts.map +1 -1
  393. package/dist/learning/metrics/MetricsCollector.js +20 -7
  394. package/dist/learning/metrics/MetricsCollector.js.map +1 -1
  395. package/dist/learning/metrics/MetricsStore.js +6 -6
  396. package/dist/learning/metrics/MetricsStore.js.map +1 -1
  397. package/dist/mcp/handlers/base-handler.d.ts +8 -8
  398. package/dist/mcp/handlers/base-handler.d.ts.map +1 -1
  399. package/dist/mcp/handlers/base-handler.js +5 -4
  400. package/dist/mcp/handlers/base-handler.js.map +1 -1
  401. package/dist/mcp/handlers/coordination/event-emit.d.ts +2 -2
  402. package/dist/mcp/handlers/coordination/event-emit.d.ts.map +1 -1
  403. package/dist/mcp/handlers/coordination/event-emit.js.map +1 -1
  404. package/dist/mcp/handlers/coordination/event-subscribe.d.ts +2 -2
  405. package/dist/mcp/handlers/coordination/event-subscribe.d.ts.map +1 -1
  406. package/dist/mcp/handlers/coordination/event-subscribe.js +2 -1
  407. package/dist/mcp/handlers/coordination/event-subscribe.js.map +1 -1
  408. package/dist/mcp/handlers/coordination/task-status.d.ts.map +1 -1
  409. package/dist/mcp/handlers/coordination/task-status.js +40 -18
  410. package/dist/mcp/handlers/coordination/task-status.js.map +1 -1
  411. package/dist/mcp/handlers/coordination/workflow-checkpoint.d.ts +5 -5
  412. package/dist/mcp/handlers/coordination/workflow-checkpoint.d.ts.map +1 -1
  413. package/dist/mcp/handlers/coordination/workflow-checkpoint.js +64 -16
  414. package/dist/mcp/handlers/coordination/workflow-checkpoint.js.map +1 -1
  415. package/dist/mcp/handlers/coordination/workflow-create.d.ts +3 -3
  416. package/dist/mcp/handlers/coordination/workflow-create.d.ts.map +1 -1
  417. package/dist/mcp/handlers/coordination/workflow-execute.d.ts +3 -3
  418. package/dist/mcp/handlers/coordination/workflow-execute.d.ts.map +1 -1
  419. package/dist/mcp/handlers/coordination/workflow-execute.js +2 -2
  420. package/dist/mcp/handlers/coordination/workflow-execute.js.map +1 -1
  421. package/dist/mcp/handlers/coordination/workflow-resume.d.ts +2 -2
  422. package/dist/mcp/handlers/coordination/workflow-resume.d.ts.map +1 -1
  423. package/dist/mcp/handlers/coordination/workflow-resume.js +26 -6
  424. package/dist/mcp/handlers/coordination/workflow-resume.js.map +1 -1
  425. package/dist/mcp/handlers/learning/learning-query.d.ts.map +1 -1
  426. package/dist/mcp/handlers/learning/learning-query.js +1 -1
  427. package/dist/mcp/handlers/learning/learning-query.js.map +1 -1
  428. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts +5 -4
  429. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -1
  430. package/dist/mcp/handlers/phase2/Phase2Tools.js +6 -4
  431. package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -1
  432. package/dist/mcp/handlers/phase3/Phase3DomainTools.d.ts +247 -31
  433. package/dist/mcp/handlers/phase3/Phase3DomainTools.d.ts.map +1 -1
  434. package/dist/mcp/handlers/phase3/Phase3DomainTools.js +3 -3
  435. package/dist/mcp/handlers/phase3/Phase3DomainTools.js.map +1 -1
  436. package/dist/mcp/handlers/task-orchestrate.d.ts +3 -3
  437. package/dist/mcp/handlers/task-orchestrate.d.ts.map +1 -1
  438. package/dist/mcp/handlers/task-orchestrate.js +3 -2
  439. package/dist/mcp/handlers/task-orchestrate.js.map +1 -1
  440. package/dist/mcp/handlers/test/generate-integration-tests.d.ts +15 -3
  441. package/dist/mcp/handlers/test/generate-integration-tests.d.ts.map +1 -1
  442. package/dist/mcp/handlers/test/generate-integration-tests.js +5 -5
  443. package/dist/mcp/handlers/test/generate-integration-tests.js.map +1 -1
  444. package/dist/mcp/handlers/test/generate-unit-tests.js.map +1 -1
  445. package/dist/mcp/handlers/test/test-coverage-detailed.d.ts.map +1 -1
  446. package/dist/mcp/handlers/test/test-coverage-detailed.js +1 -1
  447. package/dist/mcp/handlers/test/test-coverage-detailed.js.map +1 -1
  448. package/dist/mcp/handlers/test/test-execute-parallel.d.ts +34 -3
  449. package/dist/mcp/handlers/test/test-execute-parallel.d.ts.map +1 -1
  450. package/dist/mcp/handlers/test/test-execute-parallel.js +128 -11
  451. package/dist/mcp/handlers/test/test-execute-parallel.js.map +1 -1
  452. package/dist/mcp/handlers/test/test-optimize-sublinear.d.ts +8 -1
  453. package/dist/mcp/handlers/test/test-optimize-sublinear.d.ts.map +1 -1
  454. package/dist/mcp/handlers/test/test-optimize-sublinear.js +1 -1
  455. package/dist/mcp/handlers/test/test-optimize-sublinear.js.map +1 -1
  456. package/dist/mcp/handlers/test/test-report-comprehensive.d.ts +14 -2
  457. package/dist/mcp/handlers/test/test-report-comprehensive.d.ts.map +1 -1
  458. package/dist/mcp/handlers/test/test-report-comprehensive.js.map +1 -1
  459. package/dist/mcp/server-instructions.d.ts +2 -2
  460. package/dist/mcp/server-instructions.d.ts.map +1 -1
  461. package/dist/mcp/server-instructions.js +2 -2
  462. package/dist/mcp/server.d.ts +1 -1
  463. package/dist/mcp/server.d.ts.map +1 -1
  464. package/dist/mcp/server.js +11 -10
  465. package/dist/mcp/server.js.map +1 -1
  466. package/dist/mcp/tools/qe/test-data/mask-sensitive-data.d.ts +2 -6
  467. package/dist/mcp/tools/qe/test-data/mask-sensitive-data.d.ts.map +1 -1
  468. package/dist/mcp/tools/qe/test-data/mask-sensitive-data.js.map +1 -1
  469. package/dist/reasoning/CodeSignatureGenerator.d.ts +37 -1
  470. package/dist/reasoning/CodeSignatureGenerator.d.ts.map +1 -1
  471. package/dist/reasoning/CodeSignatureGenerator.js +113 -53
  472. package/dist/reasoning/CodeSignatureGenerator.js.map +1 -1
  473. package/dist/reasoning/PatternExtractor.d.ts +91 -10
  474. package/dist/reasoning/PatternExtractor.d.ts.map +1 -1
  475. package/dist/reasoning/PatternExtractor.js +104 -26
  476. package/dist/reasoning/PatternExtractor.js.map +1 -1
  477. package/dist/test/partition/MinCutPartitioner.d.ts +97 -0
  478. package/dist/test/partition/MinCutPartitioner.d.ts.map +1 -0
  479. package/dist/test/partition/MinCutPartitioner.js +459 -0
  480. package/dist/test/partition/MinCutPartitioner.js.map +1 -0
  481. package/dist/test/partition/RealTestExecutor.d.ts +86 -0
  482. package/dist/test/partition/RealTestExecutor.d.ts.map +1 -0
  483. package/dist/test/partition/RealTestExecutor.js +279 -0
  484. package/dist/test/partition/RealTestExecutor.js.map +1 -0
  485. package/dist/test/partition/TestDependencyAnalyzer.d.ts +75 -0
  486. package/dist/test/partition/TestDependencyAnalyzer.d.ts.map +1 -0
  487. package/dist/test/partition/TestDependencyAnalyzer.js +297 -0
  488. package/dist/test/partition/TestDependencyAnalyzer.js.map +1 -0
  489. package/dist/test/partition/index.d.ts +10 -0
  490. package/dist/test/partition/index.d.ts.map +1 -0
  491. package/dist/test/partition/index.js +26 -0
  492. package/dist/test/partition/index.js.map +1 -0
  493. package/dist/test/partition/types.d.ts +120 -0
  494. package/dist/test/partition/types.d.ts.map +1 -0
  495. package/dist/test/partition/types.js +21 -0
  496. package/dist/test/partition/types.js.map +1 -0
  497. package/dist/types/hook.types.d.ts +628 -70
  498. package/dist/types/hook.types.d.ts.map +1 -1
  499. package/dist/utils/Config.d.ts +1 -1
  500. package/dist/utils/Config.d.ts.map +1 -1
  501. package/dist/utils/Database.d.ts +187 -44
  502. package/dist/utils/Database.d.ts.map +1 -1
  503. package/dist/utils/Database.js +24 -15
  504. package/dist/utils/Database.js.map +1 -1
  505. package/dist/utils/FakerDataGenerator.d.ts +28 -4
  506. package/dist/utils/FakerDataGenerator.d.ts.map +1 -1
  507. package/dist/utils/FakerDataGenerator.js +2 -2
  508. package/dist/utils/FakerDataGenerator.js.map +1 -1
  509. package/dist/utils/Logger.d.ts +6 -6
  510. package/dist/utils/Logger.d.ts.map +1 -1
  511. package/dist/utils/Logger.js +5 -5
  512. package/dist/utils/Logger.js.map +1 -1
  513. package/dist/utils/SecureValidation.d.ts +4 -4
  514. package/dist/utils/SecureValidation.d.ts.map +1 -1
  515. package/dist/utils/SecureValidation.js.map +1 -1
  516. package/dist/utils/SeededRandom.d.ts +297 -0
  517. package/dist/utils/SeededRandom.d.ts.map +1 -0
  518. package/dist/utils/SeededRandom.js +389 -0
  519. package/dist/utils/SeededRandom.js.map +1 -0
  520. package/dist/utils/TestFrameworkExecutor.d.ts.map +1 -1
  521. package/dist/utils/TestFrameworkExecutor.js +3 -3
  522. package/dist/utils/TestFrameworkExecutor.js.map +1 -1
  523. package/dist/utils/batch-operations.d.ts +2 -2
  524. package/dist/utils/batch-operations.d.ts.map +1 -1
  525. package/dist/utils/batch-operations.js.map +1 -1
  526. package/dist/utils/filtering.d.ts +1 -1
  527. package/dist/utils/filtering.d.ts.map +1 -1
  528. package/dist/utils/index.d.ts +1 -0
  529. package/dist/utils/index.d.ts.map +1 -1
  530. package/dist/utils/index.js +5 -1
  531. package/dist/utils/index.js.map +1 -1
  532. package/package.json +4 -7
  533. package/dist/code-intelligence/parser/TreeSitterParser.d.ts.map +0 -1
  534. package/dist/code-intelligence/parser/TreeSitterParser.js.map +0 -1
@@ -42,6 +42,22 @@ const ora_1 = __importDefault(require("ora"));
42
42
  const fs = __importStar(require("fs-extra"));
43
43
  const path = __importStar(require("path"));
44
44
  const ProcessExit_1 = require("../../utils/ProcessExit");
45
+ /** Type guard for ExecutionReport */
46
+ function isExecutionReport(data) {
47
+ if (typeof data !== 'object' || data === null) {
48
+ return false;
49
+ }
50
+ const obj = data;
51
+ return typeof obj.timestamp === 'string' || obj.timestamp === undefined;
52
+ }
53
+ /** Type guard for CoverageData */
54
+ function isCoverageData(data) {
55
+ if (typeof data !== 'object' || data === null) {
56
+ return false;
57
+ }
58
+ const obj = data;
59
+ return typeof obj.overall === 'number' || obj.overall === undefined;
60
+ }
45
61
  class AnalyzeCommand {
46
62
  static async execute(target, options) {
47
63
  console.log(chalk_1.default.blue.bold('\nšŸ“Š Analyzing Test Results and Quality Metrics\n'));
@@ -84,9 +100,11 @@ class AnalyzeCommand {
84
100
  await this.storeAnalysisResults(analysisResults, recommendations);
85
101
  }
86
102
  catch (error) {
87
- console.error(chalk_1.default.red('āŒ Analysis failed:'), error.message);
88
- if (options.verbose) {
89
- console.error(chalk_1.default.gray(error.stack));
103
+ const errorMessage = error instanceof Error ? error.message : String(error);
104
+ const errorStack = error instanceof Error ? error.stack : undefined;
105
+ console.error(chalk_1.default.red('āŒ Analysis failed:'), errorMessage);
106
+ if (options.verbose && errorStack) {
107
+ console.error(chalk_1.default.gray(errorStack));
90
108
  }
91
109
  ProcessExit_1.ProcessExit.exitIfNotTest(1);
92
110
  }
@@ -127,12 +145,17 @@ class AnalyzeCommand {
127
145
  };
128
146
  // Load latest execution
129
147
  const latestFile = path.join(reportsDir, executionFiles[0]);
130
- testData.latest = await fs.readJson(latestFile);
148
+ const latestData = await fs.readJson(latestFile);
149
+ if (isExecutionReport(latestData)) {
150
+ testData.latest = latestData;
151
+ }
131
152
  // Load historical data (up to 30 most recent)
132
153
  for (const file of executionFiles.slice(0, 30)) {
133
154
  const filePath = path.join(reportsDir, file);
134
155
  const data = await fs.readJson(filePath);
135
- testData.history.push(data);
156
+ if (isExecutionReport(data)) {
157
+ testData.history.push(data);
158
+ }
136
159
  }
137
160
  // Load coverage data if available
138
161
  const coverageFiles = reportFiles.filter(file => file.startsWith('coverage-'));
@@ -140,7 +163,9 @@ class AnalyzeCommand {
140
163
  const filePath = path.join(reportsDir, file);
141
164
  if (await fs.pathExists(filePath)) {
142
165
  const coverage = await fs.readJson(filePath);
143
- testData.coverage.push(coverage);
166
+ if (isCoverageData(coverage)) {
167
+ testData.coverage.push(coverage);
168
+ }
144
169
  }
145
170
  }
146
171
  return testData;
@@ -253,7 +278,7 @@ class AnalyzeCommand {
253
278
  });
254
279
  analysis.trends.passRate.push({
255
280
  timestamp,
256
- value: data.summary?.total > 0 ? (data.summary.passed / data.summary.total) * 100 : 0
281
+ value: data.summary?.total ? (data.summary.passed / data.summary.total) * 100 : 0
257
282
  });
258
283
  analysis.trends.testCount.push({
259
284
  timestamp,
@@ -270,7 +295,7 @@ class AnalyzeCommand {
270
295
  analysis.predictions = this.generatePredictions(analysis.trends);
271
296
  return analysis;
272
297
  }
273
- static async analyzeGaps(testData, options) {
298
+ static async analyzeGaps(testData, _options) {
274
299
  const analysis = {
275
300
  type: 'gaps',
276
301
  timestamp: new Date().toISOString(),
@@ -292,6 +317,7 @@ class AnalyzeCommand {
292
317
  const quality = await this.analyzeQuality(testData, options);
293
318
  const trends = await this.analyzeTrends(testData, options);
294
319
  const gaps = await this.analyzeGaps(testData, options);
320
+ const analyses = [coverage, quality, trends, gaps];
295
321
  return {
296
322
  type: 'comprehensive',
297
323
  timestamp: new Date().toISOString(),
@@ -300,9 +326,9 @@ class AnalyzeCommand {
300
326
  trends,
301
327
  gaps,
302
328
  summary: {
303
- overallScore: this.calculateOverallScore([coverage, quality, trends, gaps]),
304
- criticalIssues: this.identifyCriticalIssues([coverage, quality, trends, gaps]),
305
- topRecommendations: this.prioritizeRecommendations([coverage, quality, trends, gaps])
329
+ overallScore: this.calculateOverallScore(analyses),
330
+ criticalIssues: this.identifyCriticalIssues(analyses),
331
+ topRecommendations: this.prioritizeRecommendations(analyses)
306
332
  }
307
333
  };
308
334
  }
@@ -369,7 +395,7 @@ class AnalyzeCommand {
369
395
  if (!latest)
370
396
  return gaps;
371
397
  // Check for quality issues
372
- if (latest.summary?.failed > 0) {
398
+ if (latest.summary?.failed && latest.summary.failed > 0) {
373
399
  gaps.push({
374
400
  type: 'failing_tests',
375
401
  count: latest.summary.failed,
@@ -378,7 +404,7 @@ class AnalyzeCommand {
378
404
  suggestion: 'Fix failing tests to improve quality'
379
405
  });
380
406
  }
381
- if (latest.errors?.length > 0) {
407
+ if (latest.errors && latest.errors.length > 0) {
382
408
  gaps.push({
383
409
  type: 'test_errors',
384
410
  count: latest.errors.length,
@@ -396,7 +422,9 @@ class AnalyzeCommand {
396
422
  if (index === 0)
397
423
  return true;
398
424
  const prev = reliabilityData[index - 1];
399
- const passRateDiff = Math.abs((data.passed / data.total) - (prev.passed / prev.total));
425
+ const currentPassRate = data.total > 0 ? data.passed / data.total : 0;
426
+ const prevPassRate = prev.total > 0 ? prev.passed / prev.total : 0;
427
+ const passRateDiff = Math.abs(currentPassRate - prevPassRate);
400
428
  return passRateDiff < 0.1; // Less than 10% variation
401
429
  });
402
430
  return (consistentResults.length / reliabilityData.length) * 100;
@@ -423,11 +451,11 @@ class AnalyzeCommand {
423
451
  };
424
452
  const score = metrics.passRate * weights.passRate +
425
453
  metrics.testReliability * weights.testReliability +
426
- (metrics.coverage || 0) * weights.coverage +
454
+ 0 * weights.coverage + // coverage is not part of QualityMetrics
427
455
  (100 - metrics.flakyTests) * weights.flakyTests;
428
456
  return Math.max(0, Math.min(100, score));
429
457
  }
430
- static async identifyQualityIssues(testData, metrics) {
458
+ static async identifyQualityIssues(_testData, metrics) {
431
459
  const issues = [];
432
460
  if (metrics.passRate < 90) {
433
461
  issues.push({
@@ -497,8 +525,9 @@ class AnalyzeCommand {
497
525
  return { direction: 'stable', change: 0 };
498
526
  }
499
527
  const values = dataPoints.map(point => point.value);
500
- const recentAvg = values.slice(0, Math.floor(values.length / 2)).reduce((sum, val) => sum + val, 0) / Math.floor(values.length / 2);
501
- const olderAvg = values.slice(Math.floor(values.length / 2)).reduce((sum, val) => sum + val, 0) / (values.length - Math.floor(values.length / 2));
528
+ const halfLength = Math.floor(values.length / 2);
529
+ const recentAvg = values.slice(0, halfLength).reduce((sum, val) => sum + val, 0) / halfLength;
530
+ const olderAvg = values.slice(halfLength).reduce((sum, val) => sum + val, 0) / (values.length - halfLength);
502
531
  const change = recentAvg - olderAvg;
503
532
  const direction = Math.abs(change) < 1 ? 'stable' : change > 0 ? 'improving' : 'declining';
504
533
  return { direction, change };
@@ -508,7 +537,8 @@ class AnalyzeCommand {
508
537
  // Simple linear prediction for coverage
509
538
  const coverageTrend = this.calculateTrend(trends.coverage);
510
539
  if (coverageTrend.direction !== 'stable') {
511
- const predicted = trends.coverage[0]?.value + (coverageTrend.change * 2);
540
+ const currentValue = trends.coverage[0]?.value ?? 0;
541
+ const predicted = currentValue + (coverageTrend.change * 2);
512
542
  predictions.push({
513
543
  type: 'coverage',
514
544
  timeframe: '2 cycles',
@@ -520,47 +550,92 @@ class AnalyzeCommand {
520
550
  return predictions;
521
551
  }
522
552
  static calculateOverallScore(analyses) {
523
- const scores = analyses
524
- .filter(a => a.metrics?.qualityScore)
525
- .map(a => a.metrics.qualityScore);
553
+ const scores = [];
554
+ for (const analysis of analyses) {
555
+ if ('metrics' in analysis && analysis.metrics && 'qualityScore' in analysis.metrics) {
556
+ scores.push(analysis.metrics.qualityScore);
557
+ }
558
+ }
526
559
  return scores.length > 0
527
560
  ? scores.reduce((sum, score) => sum + score, 0) / scores.length
528
561
  : 0;
529
562
  }
530
563
  static identifyCriticalIssues(analyses) {
531
564
  const criticalIssues = [];
532
- analyses.forEach(analysis => {
533
- if (analysis.issues) {
565
+ for (const analysis of analyses) {
566
+ // Handle QualityAnalysis issues
567
+ if (analysis.type === 'quality' && analysis.issues) {
534
568
  const critical = analysis.issues.filter((issue) => issue.severity === 'high');
535
569
  criticalIssues.push(...critical);
536
570
  }
537
- if (analysis.gaps) {
571
+ // Handle CoverageAnalysis gaps
572
+ if (analysis.type === 'coverage' && analysis.gaps) {
538
573
  const critical = analysis.gaps.filter((gap) => gap.severity === 'high');
539
574
  criticalIssues.push(...critical);
540
575
  }
541
- });
576
+ // Handle GapsAnalysis - all gap types
577
+ if (analysis.type === 'gaps') {
578
+ const coverageCritical = analysis.coverageGaps.filter((gap) => gap.severity === 'high');
579
+ const testingCritical = analysis.testingGaps.filter((gap) => gap.severity === 'high');
580
+ const qualityCritical = analysis.qualityGaps.filter((gap) => gap.severity === 'high');
581
+ criticalIssues.push(...coverageCritical, ...testingCritical, ...qualityCritical);
582
+ }
583
+ // Handle ComprehensiveAnalysis - nested issues and gaps
584
+ if (analysis.type === 'comprehensive') {
585
+ if (analysis.quality?.issues) {
586
+ const critical = analysis.quality.issues.filter((issue) => issue.severity === 'high');
587
+ criticalIssues.push(...critical);
588
+ }
589
+ if (analysis.coverage?.gaps) {
590
+ const critical = analysis.coverage.gaps.filter((gap) => gap.severity === 'high');
591
+ criticalIssues.push(...critical);
592
+ }
593
+ if (analysis.gaps) {
594
+ const coverageCritical = analysis.gaps.coverageGaps.filter((gap) => gap.severity === 'high');
595
+ const qualityCritical = analysis.gaps.qualityGaps.filter((gap) => gap.severity === 'high');
596
+ criticalIssues.push(...coverageCritical, ...qualityCritical);
597
+ }
598
+ }
599
+ }
542
600
  return criticalIssues;
543
601
  }
544
602
  static prioritizeRecommendations(analyses) {
545
603
  const allRecommendations = [];
546
- analyses.forEach(analysis => {
547
- if (analysis.recommendations) {
604
+ for (const analysis of analyses) {
605
+ if ('recommendations' in analysis && analysis.recommendations) {
548
606
  allRecommendations.push(...analysis.recommendations);
549
607
  }
550
- });
608
+ }
551
609
  // Sort by priority
610
+ const priorityOrder = { 'high': 3, 'medium': 2, 'low': 1 };
552
611
  return allRecommendations
553
612
  .sort((a, b) => {
554
- const priorityOrder = { 'high': 3, 'medium': 2, 'low': 1 };
555
613
  return (priorityOrder[b.priority] || 0) - (priorityOrder[a.priority] || 0);
556
614
  })
557
615
  .slice(0, 5); // Top 5 recommendations
558
616
  }
559
- static async generateRecommendations(analysis, options) {
617
+ static async generateRecommendations(analysis, _options) {
560
618
  const recommendations = [];
561
619
  // Coverage-specific recommendations
562
- if (analysis.type === 'coverage' || analysis.coverage) {
563
- const coverageData = analysis.coverage || analysis.current;
620
+ if (analysis.type === 'coverage') {
621
+ const coverageData = analysis.current;
622
+ if (coverageData.overall < 80) {
623
+ recommendations.push({
624
+ type: 'improve_coverage',
625
+ priority: 'high',
626
+ title: 'Improve Test Coverage',
627
+ description: `Current coverage (${coverageData.overall.toFixed(1)}%) is below recommended 80%`,
628
+ actions: [
629
+ 'Run: agentic-qe generate tests --coverage-target 85',
630
+ 'Focus on uncovered code paths',
631
+ 'Add integration tests for complex flows'
632
+ ],
633
+ estimatedImpact: 'High'
634
+ });
635
+ }
636
+ }
637
+ else if (analysis.type === 'comprehensive' && analysis.coverage) {
638
+ const coverageData = analysis.coverage.current;
564
639
  if (coverageData.overall < 80) {
565
640
  recommendations.push({
566
641
  type: 'improve_coverage',
@@ -577,14 +652,29 @@ class AnalyzeCommand {
577
652
  }
578
653
  }
579
654
  // Quality-specific recommendations
580
- if (analysis.type === 'quality' || analysis.quality) {
581
- const qualityData = analysis.quality || analysis;
582
- if (qualityData.metrics?.flakyTests > 0) {
655
+ if (analysis.type === 'quality') {
656
+ if (analysis.metrics.flakyTests > 0) {
583
657
  recommendations.push({
584
658
  type: 'fix_flaky_tests',
585
659
  priority: 'medium',
586
660
  title: 'Address Flaky Tests',
587
- description: `${qualityData.metrics.flakyTests} potentially flaky tests detected`,
661
+ description: `${analysis.metrics.flakyTests} potentially flaky tests detected`,
662
+ actions: [
663
+ 'Review test execution logs',
664
+ 'Add proper test isolation',
665
+ 'Check for timing dependencies'
666
+ ],
667
+ estimatedImpact: 'Medium'
668
+ });
669
+ }
670
+ }
671
+ else if (analysis.type === 'comprehensive' && analysis.quality) {
672
+ if (analysis.quality.metrics.flakyTests > 0) {
673
+ recommendations.push({
674
+ type: 'fix_flaky_tests',
675
+ priority: 'medium',
676
+ title: 'Address Flaky Tests',
677
+ description: `${analysis.quality.metrics.flakyTests} potentially flaky tests detected`,
588
678
  actions: [
589
679
  'Review test execution logs',
590
680
  'Add proper test isolation',
@@ -595,8 +685,8 @@ class AnalyzeCommand {
595
685
  }
596
686
  }
597
687
  // Gap-specific recommendations
598
- if (analysis.gaps) {
599
- analysis.gaps.forEach((gap) => {
688
+ if (analysis.type === 'coverage' && analysis.gaps) {
689
+ for (const gap of analysis.gaps) {
600
690
  if (gap.severity === 'high') {
601
691
  recommendations.push({
602
692
  type: 'address_gap',
@@ -607,7 +697,22 @@ class AnalyzeCommand {
607
697
  estimatedImpact: 'High'
608
698
  });
609
699
  }
610
- });
700
+ }
701
+ }
702
+ else if (analysis.type === 'gaps') {
703
+ const allGaps = [...analysis.coverageGaps, ...analysis.testingGaps, ...analysis.qualityGaps];
704
+ for (const gap of allGaps) {
705
+ if (gap.severity === 'high') {
706
+ recommendations.push({
707
+ type: 'address_gap',
708
+ priority: 'high',
709
+ title: `Address ${gap.type}`,
710
+ description: gap.description,
711
+ actions: [gap.suggestion],
712
+ estimatedImpact: 'High'
713
+ });
714
+ }
715
+ }
611
716
  }
612
717
  return recommendations;
613
718
  }
@@ -636,14 +741,31 @@ class AnalyzeCommand {
636
741
  await fs.writeFile(htmlFile, htmlContent);
637
742
  }
638
743
  // Generate CSV for trends
639
- if (options.format === 'csv' && analysis.trends) {
640
- const csvContent = this.generateCsvReport(analysis.trends);
641
- const csvFile = `${reportsDir}/trends-${timestamp}.csv`;
642
- await fs.writeFile(csvFile, csvContent);
744
+ if (options.format === 'csv' && 'trends' in analysis && analysis.trends) {
745
+ const trendsData = analysis.type === 'trends' ? analysis.trends : undefined;
746
+ if (trendsData) {
747
+ const csvContent = this.generateCsvReport(trendsData);
748
+ const csvFile = `${reportsDir}/trends-${timestamp}.csv`;
749
+ await fs.writeFile(csvFile, csvContent);
750
+ }
643
751
  }
644
752
  }
645
753
  static generateHtmlReport(reportData) {
646
754
  const { analysis, recommendations } = reportData;
755
+ // Extract current metrics if available
756
+ const hasCurrent = analysis.type === 'coverage' || (analysis.type === 'comprehensive' && analysis.coverage);
757
+ const currentOverall = analysis.type === 'coverage'
758
+ ? analysis.current.overall
759
+ : analysis.type === 'comprehensive' && analysis.coverage
760
+ ? analysis.coverage.current.overall
761
+ : 0;
762
+ // Extract metrics if available
763
+ const hasMetrics = analysis.type === 'quality' || (analysis.type === 'comprehensive' && analysis.quality);
764
+ const metricsData = analysis.type === 'quality'
765
+ ? analysis.metrics
766
+ : analysis.type === 'comprehensive' && analysis.quality
767
+ ? analysis.quality.metrics
768
+ : null;
647
769
  return `<!DOCTYPE html>
648
770
  <html>
649
771
  <head>
@@ -666,13 +788,13 @@ class AnalyzeCommand {
666
788
  <p>Type: ${analysis.type}</p>
667
789
  </div>
668
790
 
669
- ${analysis.current ? `
791
+ ${hasCurrent ? `
670
792
  <div class="section">
671
793
  <h2>Current Metrics</h2>
672
- <div class="metric">Coverage: ${analysis.current.overall.toFixed(1)}%</div>
673
- ${analysis.metrics ? `
674
- <div class="metric">Pass Rate: ${analysis.metrics.passRate.toFixed(1)}%</div>
675
- <div class="metric">Quality Score: ${analysis.metrics.qualityScore.toFixed(1)}</div>
794
+ <div class="metric">Coverage: ${currentOverall.toFixed(1)}%</div>
795
+ ${hasMetrics && metricsData ? `
796
+ <div class="metric">Pass Rate: ${metricsData.passRate.toFixed(1)}%</div>
797
+ <div class="metric">Quality Score: ${metricsData.qualityScore.toFixed(1)}</div>
676
798
  ` : ''}
677
799
  </div>
678
800
  ` : ''}
@@ -682,8 +804,8 @@ class AnalyzeCommand {
682
804
  <h2>Recommendations</h2>
683
805
  ${recommendations.map((rec) => `
684
806
  <div class="recommendation">
685
- <h3 class="${rec.priority}">${rec.title}</h3>
686
- <p>${rec.description}</p>
807
+ <h3 class="${rec.priority}">${rec.title || rec.type}</h3>
808
+ <p>${rec.description || rec.message || ''}</p>
687
809
  <ul>
688
810
  ${rec.actions.map((action) => `<li>${action}</li>`).join('')}
689
811
  </ul>
@@ -701,13 +823,13 @@ class AnalyzeCommand {
701
823
  }
702
824
  static generateCsvReport(trends) {
703
825
  let csv = 'Timestamp,Coverage,PassRate,TestCount,ExecutionTime\n';
704
- const maxLength = Math.max(trends.coverage?.length || 0, trends.passRate?.length || 0, trends.testCount?.length || 0, trends.executionTime?.length || 0);
826
+ const maxLength = Math.max(trends.coverage.length, trends.passRate.length, trends.testCount.length, trends.executionTime.length);
705
827
  for (let i = 0; i < maxLength; i++) {
706
- const timestamp = trends.coverage?.[i]?.timestamp || '';
707
- const coverage = trends.coverage?.[i]?.value || '';
708
- const passRate = trends.passRate?.[i]?.value || '';
709
- const testCount = trends.testCount?.[i]?.value || '';
710
- const executionTime = trends.executionTime?.[i]?.value || '';
828
+ const timestamp = trends.coverage[i]?.timestamp || '';
829
+ const coverage = trends.coverage[i]?.value ?? '';
830
+ const passRate = trends.passRate[i]?.value ?? '';
831
+ const testCount = trends.testCount[i]?.value ?? '';
832
+ const executionTime = trends.executionTime[i]?.value ?? '';
711
833
  csv += `${timestamp},${coverage},${passRate},${testCount},${executionTime}\n`;
712
834
  }
713
835
  return csv;
@@ -717,18 +839,36 @@ class AnalyzeCommand {
717
839
  console.log(chalk_1.default.gray(` Type: ${analysis.type}`));
718
840
  console.log(chalk_1.default.gray(` Timestamp: ${analysis.timestamp}`));
719
841
  // Display key metrics based on analysis type
720
- if (analysis.current) {
842
+ if (analysis.type === 'coverage') {
721
843
  console.log(chalk_1.default.gray(` Coverage: ${analysis.current.overall.toFixed(1)}%`));
844
+ if (analysis.trends.direction) {
845
+ console.log(chalk_1.default.gray(` Trend: ${analysis.trends.direction}`));
846
+ }
722
847
  }
723
- if (analysis.metrics) {
848
+ else if (analysis.type === 'quality') {
724
849
  console.log(chalk_1.default.gray(` Pass Rate: ${analysis.metrics.passRate.toFixed(1)}%`));
725
850
  console.log(chalk_1.default.gray(` Quality Score: ${analysis.metrics.qualityScore.toFixed(1)}`));
851
+ if (analysis.trends.direction) {
852
+ console.log(chalk_1.default.gray(` Trend: ${analysis.trends.direction}`));
853
+ }
726
854
  }
727
- if (analysis.trends?.direction) {
728
- console.log(chalk_1.default.gray(` Trend: ${analysis.trends.direction}`));
855
+ else if (analysis.type === 'comprehensive') {
856
+ if (analysis.coverage) {
857
+ console.log(chalk_1.default.gray(` Coverage: ${analysis.coverage.current.overall.toFixed(1)}%`));
858
+ }
859
+ if (analysis.quality) {
860
+ console.log(chalk_1.default.gray(` Pass Rate: ${analysis.quality.metrics.passRate.toFixed(1)}%`));
861
+ console.log(chalk_1.default.gray(` Quality Score: ${analysis.quality.metrics.qualityScore.toFixed(1)}`));
862
+ }
729
863
  }
730
864
  // Display critical issues
731
- const criticalIssues = analysis.issues?.filter((issue) => issue.severity === 'high') || [];
865
+ let criticalIssues = [];
866
+ if (analysis.type === 'quality' && analysis.issues) {
867
+ criticalIssues = analysis.issues.filter((issue) => issue.severity === 'high');
868
+ }
869
+ else if (analysis.type === 'comprehensive' && analysis.quality?.issues) {
870
+ criticalIssues = analysis.quality.issues.filter((issue) => issue.severity === 'high');
871
+ }
732
872
  if (criticalIssues.length > 0) {
733
873
  console.log(chalk_1.default.red('\n🚨 Critical Issues:'));
734
874
  criticalIssues.forEach((issue) => {
@@ -739,8 +879,8 @@ class AnalyzeCommand {
739
879
  if (recommendations.length > 0) {
740
880
  console.log(chalk_1.default.yellow('\nšŸ’” Top Recommendations:'));
741
881
  recommendations.slice(0, 3).forEach((rec, index) => {
742
- console.log(chalk_1.default.gray(` ${index + 1}. ${rec.title}`));
743
- console.log(chalk_1.default.gray(` ${rec.description}`));
882
+ console.log(chalk_1.default.gray(` ${index + 1}. ${rec.title || rec.type}`));
883
+ console.log(chalk_1.default.gray(` ${rec.description || rec.message || ''}`));
744
884
  });
745
885
  }
746
886
  console.log(chalk_1.default.yellow('\nšŸ“ Reports Generated:'));
@@ -754,11 +894,25 @@ class AnalyzeCommand {
754
894
  console.log(chalk_1.default.gray(' 3. Monitor trends over time for continuous improvement'));
755
895
  }
756
896
  static async storeAnalysisResults(analysis, recommendations) {
897
+ // Extract metrics or current values depending on analysis type
898
+ let metricsOrCurrent = null;
899
+ let issuesCount = 0;
900
+ if (analysis.type === 'coverage') {
901
+ metricsOrCurrent = analysis.current;
902
+ }
903
+ else if (analysis.type === 'quality') {
904
+ metricsOrCurrent = analysis.metrics;
905
+ issuesCount = analysis.issues.length;
906
+ }
907
+ else if (analysis.type === 'comprehensive') {
908
+ metricsOrCurrent = analysis.quality?.metrics || analysis.coverage?.current || null;
909
+ issuesCount = analysis.quality?.issues?.length || 0;
910
+ }
757
911
  const summary = {
758
912
  type: analysis.type,
759
913
  timestamp: analysis.timestamp,
760
- metrics: analysis.metrics || analysis.current,
761
- issues: (analysis.issues || []).length,
914
+ metrics: metricsOrCurrent,
915
+ issues: issuesCount,
762
916
  recommendations: recommendations.length,
763
917
  status: 'completed'
764
918
  };
@@ -767,6 +921,7 @@ class AnalyzeCommand {
767
921
  npx claude-flow@alpha memory store --key "agentic-qe/analysis/latest" --value '${JSON.stringify(summary)}'
768
922
  npx claude-flow@alpha hooks notify --message "Analysis completed: ${analysis.type} analysis with ${recommendations.length} recommendations"
769
923
  `;
924
+ await fs.ensureDir('.agentic-qe/scripts');
770
925
  await fs.writeFile('.agentic-qe/scripts/store-analysis-results.sh', coordinationScript);
771
926
  await fs.chmod('.agentic-qe/scripts/store-analysis-results.sh', '755');
772
927
  }