agentic-qe 3.7.1 → 3.7.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 (262) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/README.md +65 -2
  3. package/package.json +1 -1
  4. package/scripts/generate-opencode-agents.ts +8 -1
  5. package/scripts/generate-opencode-skills.ts +1 -1
  6. package/v3/CHANGELOG.md +52 -0
  7. package/v3/dist/adapters/a2a/notifications/retry-queue.d.ts.map +1 -1
  8. package/v3/dist/adapters/a2a/notifications/retry-queue.js +2 -1
  9. package/v3/dist/adapters/a2a/notifications/retry-queue.js.map +1 -1
  10. package/v3/dist/benchmarks/performance-benchmarks.d.ts.map +1 -1
  11. package/v3/dist/benchmarks/performance-benchmarks.js +15 -14
  12. package/v3/dist/benchmarks/performance-benchmarks.js.map +1 -1
  13. package/v3/dist/benchmarks/run-benchmarks.js +7 -6
  14. package/v3/dist/benchmarks/run-benchmarks.js.map +1 -1
  15. package/v3/dist/cli/bundle.js +4190 -1744
  16. package/v3/dist/cli/command-registry.d.ts +3 -2
  17. package/v3/dist/cli/command-registry.d.ts.map +1 -1
  18. package/v3/dist/cli/command-registry.js +7 -5
  19. package/v3/dist/cli/command-registry.js.map +1 -1
  20. package/v3/dist/cli/commands/ci.d.ts +11 -0
  21. package/v3/dist/cli/commands/ci.d.ts.map +1 -0
  22. package/v3/dist/cli/commands/ci.js +506 -0
  23. package/v3/dist/cli/commands/ci.js.map +1 -0
  24. package/v3/dist/cli/commands/code.d.ts.map +1 -1
  25. package/v3/dist/cli/commands/code.js +78 -54
  26. package/v3/dist/cli/commands/code.js.map +1 -1
  27. package/v3/dist/cli/commands/coverage.d.ts.map +1 -1
  28. package/v3/dist/cli/commands/coverage.js +65 -50
  29. package/v3/dist/cli/commands/coverage.js.map +1 -1
  30. package/v3/dist/cli/commands/fleet.d.ts.map +1 -1
  31. package/v3/dist/cli/commands/fleet.js +51 -6
  32. package/v3/dist/cli/commands/fleet.js.map +1 -1
  33. package/v3/dist/cli/commands/init.d.ts.map +1 -1
  34. package/v3/dist/cli/commands/init.js +2 -0
  35. package/v3/dist/cli/commands/init.js.map +1 -1
  36. package/v3/dist/cli/commands/llm-router.d.ts.map +1 -1
  37. package/v3/dist/cli/commands/llm-router.js +2 -1
  38. package/v3/dist/cli/commands/llm-router.js.map +1 -1
  39. package/v3/dist/cli/commands/quality.d.ts +1 -0
  40. package/v3/dist/cli/commands/quality.d.ts.map +1 -1
  41. package/v3/dist/cli/commands/quality.js +90 -15
  42. package/v3/dist/cli/commands/quality.js.map +1 -1
  43. package/v3/dist/cli/commands/security.d.ts.map +1 -1
  44. package/v3/dist/cli/commands/security.js +75 -29
  45. package/v3/dist/cli/commands/security.js.map +1 -1
  46. package/v3/dist/cli/commands/test.d.ts.map +1 -1
  47. package/v3/dist/cli/commands/test.js +67 -27
  48. package/v3/dist/cli/commands/test.js.map +1 -1
  49. package/v3/dist/cli/handlers/init-handler.d.ts +1 -0
  50. package/v3/dist/cli/handlers/init-handler.d.ts.map +1 -1
  51. package/v3/dist/cli/handlers/init-handler.js +2 -0
  52. package/v3/dist/cli/handlers/init-handler.js.map +1 -1
  53. package/v3/dist/cli/handlers/status-handler.d.ts.map +1 -1
  54. package/v3/dist/cli/handlers/status-handler.js +63 -0
  55. package/v3/dist/cli/handlers/status-handler.js.map +1 -1
  56. package/v3/dist/cli/handlers/task-handler.d.ts.map +1 -1
  57. package/v3/dist/cli/handlers/task-handler.js +42 -3
  58. package/v3/dist/cli/handlers/task-handler.js.map +1 -1
  59. package/v3/dist/cli/index.js +60 -4
  60. package/v3/dist/cli/index.js.map +1 -1
  61. package/v3/dist/cli/utils/ci-config.d.ts +101 -0
  62. package/v3/dist/cli/utils/ci-config.d.ts.map +1 -0
  63. package/v3/dist/cli/utils/ci-config.js +199 -0
  64. package/v3/dist/cli/utils/ci-config.js.map +1 -0
  65. package/v3/dist/cli/utils/ci-output.d.ts +101 -0
  66. package/v3/dist/cli/utils/ci-output.d.ts.map +1 -0
  67. package/v3/dist/cli/utils/ci-output.js +273 -0
  68. package/v3/dist/cli/utils/ci-output.js.map +1 -0
  69. package/v3/dist/cli/utils/coverage-data.d.ts +59 -0
  70. package/v3/dist/cli/utils/coverage-data.d.ts.map +1 -0
  71. package/v3/dist/cli/utils/coverage-data.js +232 -0
  72. package/v3/dist/cli/utils/coverage-data.js.map +1 -0
  73. package/v3/dist/cli/utils/progress.d.ts.map +1 -1
  74. package/v3/dist/cli/utils/progress.js +1 -0
  75. package/v3/dist/cli/utils/progress.js.map +1 -1
  76. package/v3/dist/cli/utils/streaming.d.ts.map +1 -1
  77. package/v3/dist/cli/utils/streaming.js +1 -0
  78. package/v3/dist/cli/utils/streaming.js.map +1 -1
  79. package/v3/dist/coordination/agent-teams/domain-team-manager.d.ts.map +1 -1
  80. package/v3/dist/coordination/agent-teams/domain-team-manager.js +3 -1
  81. package/v3/dist/coordination/agent-teams/domain-team-manager.js.map +1 -1
  82. package/v3/dist/coordination/consensus/model-provider.d.ts.map +1 -1
  83. package/v3/dist/coordination/consensus/model-provider.js +2 -1
  84. package/v3/dist/coordination/consensus/model-provider.js.map +1 -1
  85. package/v3/dist/coordination/consensus/providers/ollama-provider.js +2 -2
  86. package/v3/dist/coordination/consensus/providers/ollama-provider.js.map +1 -1
  87. package/v3/dist/coordination/consensus/providers/openrouter-provider.js +2 -2
  88. package/v3/dist/coordination/consensus/providers/openrouter-provider.js.map +1 -1
  89. package/v3/dist/coordination/handlers/coverage-handlers.d.ts.map +1 -1
  90. package/v3/dist/coordination/handlers/coverage-handlers.js +99 -0
  91. package/v3/dist/coordination/handlers/coverage-handlers.js.map +1 -1
  92. package/v3/dist/coordination/mincut/neural-goap.d.ts.map +1 -1
  93. package/v3/dist/coordination/mincut/neural-goap.js +3 -2
  94. package/v3/dist/coordination/mincut/neural-goap.js.map +1 -1
  95. package/v3/dist/coordination/mincut/time-crystal.d.ts.map +1 -1
  96. package/v3/dist/coordination/mincut/time-crystal.js +6 -5
  97. package/v3/dist/coordination/mincut/time-crystal.js.map +1 -1
  98. package/v3/dist/domains/chaos-resilience/services/chaos-engineer.d.ts.map +1 -1
  99. package/v3/dist/domains/chaos-resilience/services/chaos-engineer.js +4 -3
  100. package/v3/dist/domains/chaos-resilience/services/chaos-engineer.js.map +1 -1
  101. package/v3/dist/domains/chaos-resilience/services/load-tester.d.ts.map +1 -1
  102. package/v3/dist/domains/chaos-resilience/services/load-tester.js +2 -1
  103. package/v3/dist/domains/chaos-resilience/services/load-tester.js.map +1 -1
  104. package/v3/dist/domains/chaos-resilience/services/performance-profiler.d.ts.map +1 -1
  105. package/v3/dist/domains/chaos-resilience/services/performance-profiler.js +3 -2
  106. package/v3/dist/domains/chaos-resilience/services/performance-profiler.js.map +1 -1
  107. package/v3/dist/domains/coverage-analysis/services/ghost-coverage-analyzer.d.ts +6 -0
  108. package/v3/dist/domains/coverage-analysis/services/ghost-coverage-analyzer.d.ts.map +1 -1
  109. package/v3/dist/domains/coverage-analysis/services/ghost-coverage-analyzer.js +36 -0
  110. package/v3/dist/domains/coverage-analysis/services/ghost-coverage-analyzer.js.map +1 -1
  111. package/v3/dist/domains/coverage-analysis/services/hnsw-index.d.ts.map +1 -1
  112. package/v3/dist/domains/coverage-analysis/services/hnsw-index.js +3 -2
  113. package/v3/dist/domains/coverage-analysis/services/hnsw-index.js.map +1 -1
  114. package/v3/dist/domains/learning-optimization/services/metrics-optimizer.d.ts.map +1 -1
  115. package/v3/dist/domains/learning-optimization/services/metrics-optimizer.js +2 -1
  116. package/v3/dist/domains/learning-optimization/services/metrics-optimizer.js.map +1 -1
  117. package/v3/dist/domains/quality-assessment/coordinator.js +1 -1
  118. package/v3/dist/domains/quality-assessment/coordinator.js.map +1 -1
  119. package/v3/dist/domains/requirements-validation/qcsd-ideation-plugin.d.ts.map +1 -1
  120. package/v3/dist/domains/requirements-validation/qcsd-ideation-plugin.js +6 -5
  121. package/v3/dist/domains/requirements-validation/qcsd-ideation-plugin.js.map +1 -1
  122. package/v3/dist/domains/test-execution/services/flaky-detector.d.ts.map +1 -1
  123. package/v3/dist/domains/test-execution/services/flaky-detector.js +4 -3
  124. package/v3/dist/domains/test-execution/services/flaky-detector.js.map +1 -1
  125. package/v3/dist/domains/test-execution/services/retry-handler.d.ts.map +1 -1
  126. package/v3/dist/domains/test-execution/services/retry-handler.js +3 -2
  127. package/v3/dist/domains/test-execution/services/retry-handler.js.map +1 -1
  128. package/v3/dist/domains/test-execution/services/test-executor.d.ts.map +1 -1
  129. package/v3/dist/domains/test-execution/services/test-executor.js +20 -5
  130. package/v3/dist/domains/test-execution/services/test-executor.js.map +1 -1
  131. package/v3/dist/domains/test-generation/services/test-data-generator.d.ts.map +1 -1
  132. package/v3/dist/domains/test-generation/services/test-data-generator.js +2 -1
  133. package/v3/dist/domains/test-generation/services/test-data-generator.js.map +1 -1
  134. package/v3/dist/init/kiro-installer.d.ts +70 -0
  135. package/v3/dist/init/kiro-installer.d.ts.map +1 -0
  136. package/v3/dist/init/kiro-installer.js +794 -0
  137. package/v3/dist/init/kiro-installer.js.map +1 -0
  138. package/v3/dist/init/orchestrator.d.ts.map +1 -1
  139. package/v3/dist/init/orchestrator.js +1 -0
  140. package/v3/dist/init/orchestrator.js.map +1 -1
  141. package/v3/dist/init/phases/09-assets.d.ts +3 -0
  142. package/v3/dist/init/phases/09-assets.d.ts.map +1 -1
  143. package/v3/dist/init/phases/09-assets.js +33 -0
  144. package/v3/dist/init/phases/09-assets.js.map +1 -1
  145. package/v3/dist/init/phases/phase-interface.d.ts +2 -0
  146. package/v3/dist/init/phases/phase-interface.d.ts.map +1 -1
  147. package/v3/dist/init/phases/phase-interface.js.map +1 -1
  148. package/v3/dist/integrations/agentic-flow/model-router/score-calculator.d.ts.map +1 -1
  149. package/v3/dist/integrations/agentic-flow/model-router/score-calculator.js +15 -0
  150. package/v3/dist/integrations/agentic-flow/model-router/score-calculator.js.map +1 -1
  151. package/v3/dist/integrations/agentic-flow/model-router/signal-collector.d.ts +1 -1
  152. package/v3/dist/integrations/agentic-flow/model-router/signal-collector.d.ts.map +1 -1
  153. package/v3/dist/integrations/agentic-flow/model-router/signal-collector.js +9 -1
  154. package/v3/dist/integrations/agentic-flow/model-router/signal-collector.js.map +1 -1
  155. package/v3/dist/integrations/agentic-flow/onnx-embeddings/embedding-generator.d.ts.map +1 -1
  156. package/v3/dist/integrations/agentic-flow/onnx-embeddings/embedding-generator.js +2 -1
  157. package/v3/dist/integrations/agentic-flow/onnx-embeddings/embedding-generator.js.map +1 -1
  158. package/v3/dist/integrations/coherence/engines/witness-adapter.d.ts.map +1 -1
  159. package/v3/dist/integrations/coherence/engines/witness-adapter.js +2 -1
  160. package/v3/dist/integrations/coherence/engines/witness-adapter.js.map +1 -1
  161. package/v3/dist/integrations/rl-suite/algorithms/a2c.d.ts.map +1 -1
  162. package/v3/dist/integrations/rl-suite/algorithms/a2c.js +4 -3
  163. package/v3/dist/integrations/rl-suite/algorithms/a2c.js.map +1 -1
  164. package/v3/dist/integrations/rl-suite/algorithms/actor-critic.d.ts.map +1 -1
  165. package/v3/dist/integrations/rl-suite/algorithms/actor-critic.js +4 -3
  166. package/v3/dist/integrations/rl-suite/algorithms/actor-critic.js.map +1 -1
  167. package/v3/dist/integrations/rl-suite/algorithms/ddpg.d.ts.map +1 -1
  168. package/v3/dist/integrations/rl-suite/algorithms/ddpg.js +4 -3
  169. package/v3/dist/integrations/rl-suite/algorithms/ddpg.js.map +1 -1
  170. package/v3/dist/integrations/rl-suite/algorithms/policy-gradient.d.ts.map +1 -1
  171. package/v3/dist/integrations/rl-suite/algorithms/policy-gradient.js +4 -3
  172. package/v3/dist/integrations/rl-suite/algorithms/policy-gradient.js.map +1 -1
  173. package/v3/dist/integrations/rl-suite/algorithms/ppo.d.ts.map +1 -1
  174. package/v3/dist/integrations/rl-suite/algorithms/ppo.js +4 -3
  175. package/v3/dist/integrations/rl-suite/algorithms/ppo.js.map +1 -1
  176. package/v3/dist/integrations/rl-suite/base-algorithm.d.ts.map +1 -1
  177. package/v3/dist/integrations/rl-suite/base-algorithm.js +3 -2
  178. package/v3/dist/integrations/rl-suite/base-algorithm.js.map +1 -1
  179. package/v3/dist/integrations/rl-suite/neural/neural-network.d.ts.map +1 -1
  180. package/v3/dist/integrations/rl-suite/neural/neural-network.js +2 -1
  181. package/v3/dist/integrations/rl-suite/neural/neural-network.js.map +1 -1
  182. package/v3/dist/integrations/rl-suite/neural/replay-buffer.d.ts.map +1 -1
  183. package/v3/dist/integrations/rl-suite/neural/replay-buffer.js +3 -2
  184. package/v3/dist/integrations/rl-suite/neural/replay-buffer.js.map +1 -1
  185. package/v3/dist/integrations/rl-suite/sona.d.ts.map +1 -1
  186. package/v3/dist/integrations/rl-suite/sona.js +5 -4
  187. package/v3/dist/integrations/rl-suite/sona.js.map +1 -1
  188. package/v3/dist/integrations/ruvector/graph-boundaries.d.ts.map +1 -1
  189. package/v3/dist/integrations/ruvector/graph-boundaries.js +3 -2
  190. package/v3/dist/integrations/ruvector/graph-boundaries.js.map +1 -1
  191. package/v3/dist/integrations/ruvector/q-learning-router.d.ts.map +1 -1
  192. package/v3/dist/integrations/ruvector/q-learning-router.js +4 -3
  193. package/v3/dist/integrations/ruvector/q-learning-router.js.map +1 -1
  194. package/v3/dist/integrations/ruvector/sona-wrapper.d.ts.map +1 -1
  195. package/v3/dist/integrations/ruvector/sona-wrapper.js +2 -1
  196. package/v3/dist/integrations/ruvector/sona-wrapper.js.map +1 -1
  197. package/v3/dist/kernel/unified-memory-hnsw.d.ts.map +1 -1
  198. package/v3/dist/kernel/unified-memory-hnsw.js +2 -1
  199. package/v3/dist/kernel/unified-memory-hnsw.js.map +1 -1
  200. package/v3/dist/learning/dream/concept-graph.d.ts +17 -4
  201. package/v3/dist/learning/dream/concept-graph.d.ts.map +1 -1
  202. package/v3/dist/learning/dream/concept-graph.js +148 -39
  203. package/v3/dist/learning/dream/concept-graph.js.map +1 -1
  204. package/v3/dist/learning/dream/spreading-activation.d.ts.map +1 -1
  205. package/v3/dist/learning/dream/spreading-activation.js +5 -4
  206. package/v3/dist/learning/dream/spreading-activation.js.map +1 -1
  207. package/v3/dist/mcp/bundle.js +445 -145
  208. package/v3/dist/mcp/entry.js +15 -1
  209. package/v3/dist/mcp/entry.js.map +1 -1
  210. package/v3/dist/mcp/handlers/core-handlers.js +1 -1
  211. package/v3/dist/mcp/handlers/core-handlers.js.map +1 -1
  212. package/v3/dist/mcp/handlers/domain-handler-configs.d.ts.map +1 -1
  213. package/v3/dist/mcp/handlers/domain-handler-configs.js +8 -5
  214. package/v3/dist/mcp/handlers/domain-handler-configs.js.map +1 -1
  215. package/v3/dist/mcp/load-balancer.d.ts.map +1 -1
  216. package/v3/dist/mcp/load-balancer.js +2 -1
  217. package/v3/dist/mcp/load-balancer.js.map +1 -1
  218. package/v3/dist/mcp/tools/learning-optimization/optimize.d.ts.map +1 -1
  219. package/v3/dist/mcp/tools/learning-optimization/optimize.js +4 -3
  220. package/v3/dist/mcp/tools/learning-optimization/optimize.js.map +1 -1
  221. package/v3/dist/mcp/tools/test-execution/execute.d.ts.map +1 -1
  222. package/v3/dist/mcp/tools/test-execution/execute.js +9 -8
  223. package/v3/dist/mcp/tools/test-execution/execute.js.map +1 -1
  224. package/v3/dist/neural-optimizer/replay-buffer.d.ts.map +1 -1
  225. package/v3/dist/neural-optimizer/replay-buffer.js +4 -3
  226. package/v3/dist/neural-optimizer/replay-buffer.js.map +1 -1
  227. package/v3/dist/neural-optimizer/topology-optimizer.d.ts.map +1 -1
  228. package/v3/dist/neural-optimizer/topology-optimizer.js +6 -5
  229. package/v3/dist/neural-optimizer/topology-optimizer.js.map +1 -1
  230. package/v3/dist/neural-optimizer/value-network.d.ts.map +1 -1
  231. package/v3/dist/neural-optimizer/value-network.js +3 -2
  232. package/v3/dist/neural-optimizer/value-network.js.map +1 -1
  233. package/v3/dist/optimization/auto-tuner.d.ts.map +1 -1
  234. package/v3/dist/optimization/auto-tuner.js +2 -1
  235. package/v3/dist/optimization/auto-tuner.js.map +1 -1
  236. package/v3/dist/optimization/tuning-algorithm.d.ts.map +1 -1
  237. package/v3/dist/optimization/tuning-algorithm.js +7 -10
  238. package/v3/dist/optimization/tuning-algorithm.js.map +1 -1
  239. package/v3/dist/performance/benchmarks.d.ts.map +1 -1
  240. package/v3/dist/performance/benchmarks.js +6 -5
  241. package/v3/dist/performance/benchmarks.js.map +1 -1
  242. package/v3/dist/planning/plan-executor.d.ts.map +1 -1
  243. package/v3/dist/planning/plan-executor.js +2 -1
  244. package/v3/dist/planning/plan-executor.js.map +1 -1
  245. package/v3/dist/shared/llm/provider-manager.d.ts.map +1 -1
  246. package/v3/dist/shared/llm/provider-manager.js +2 -1
  247. package/v3/dist/shared/llm/provider-manager.js.map +1 -1
  248. package/v3/dist/shared/utils/crypto-random.d.ts +26 -0
  249. package/v3/dist/shared/utils/crypto-random.d.ts.map +1 -0
  250. package/v3/dist/shared/utils/crypto-random.js +48 -0
  251. package/v3/dist/shared/utils/crypto-random.js.map +1 -0
  252. package/v3/dist/shared/utils/index.d.ts +1 -0
  253. package/v3/dist/shared/utils/index.d.ts.map +1 -1
  254. package/v3/dist/shared/utils/index.js +1 -0
  255. package/v3/dist/shared/utils/index.js.map +1 -1
  256. package/v3/dist/validation/parallel-eval-runner.d.ts.map +1 -1
  257. package/v3/dist/validation/parallel-eval-runner.js +3 -2
  258. package/v3/dist/validation/parallel-eval-runner.js.map +1 -1
  259. package/v3/dist/validation/swarm-skill-validator.d.ts.map +1 -1
  260. package/v3/dist/validation/swarm-skill-validator.js +3 -2
  261. package/v3/dist/validation/swarm-skill-validator.js.map +1 -1
  262. package/v3/package.json +1 -1
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Agentic QE v3 - CI/CD Output Formatter
3
+ *
4
+ * Provides structured output formatting for CI/CD pipeline integration.
5
+ * Supports: text (default), json, sarif, junit, markdown
6
+ */
7
+ export type OutputFormat = 'text' | 'json' | 'sarif' | 'junit' | 'markdown';
8
+ export interface CIOutputOptions {
9
+ format: OutputFormat;
10
+ output?: string;
11
+ }
12
+ export interface SecurityVulnerability {
13
+ severity: string;
14
+ type: string;
15
+ file: string;
16
+ line: number;
17
+ message: string;
18
+ ruleId?: string;
19
+ cweId?: string;
20
+ }
21
+ export interface SecurityScanResult {
22
+ vulnerabilities: SecurityVulnerability[];
23
+ compliance?: {
24
+ compliant: boolean;
25
+ issues?: Array<{
26
+ framework: string;
27
+ issue: string;
28
+ }>;
29
+ };
30
+ target: string;
31
+ scanType: string;
32
+ }
33
+ export interface TestResult {
34
+ name: string;
35
+ passed: boolean;
36
+ duration: number;
37
+ error?: string;
38
+ suite?: string;
39
+ file?: string;
40
+ }
41
+ export interface TestRunSummary {
42
+ runId: string;
43
+ passed: number;
44
+ failed: number;
45
+ skipped: number;
46
+ duration: number;
47
+ tests?: TestResult[];
48
+ }
49
+ export interface CoverageResult {
50
+ summary: {
51
+ line: number;
52
+ branch: number;
53
+ function: number;
54
+ statement: number;
55
+ };
56
+ meetsThreshold: boolean;
57
+ threshold: number;
58
+ files?: Array<{
59
+ path: string;
60
+ lineCoverage: number;
61
+ branchCoverage: number;
62
+ uncoveredLines: number[];
63
+ }>;
64
+ gaps?: Array<{
65
+ file: string;
66
+ lines: number[];
67
+ riskScore: number;
68
+ severity: string;
69
+ }>;
70
+ recommendations?: string[];
71
+ }
72
+ export interface QualityGateResult {
73
+ passed: boolean;
74
+ score: string;
75
+ checks: Array<{
76
+ name: string;
77
+ passed: boolean;
78
+ value: number | string;
79
+ threshold: number | string;
80
+ }>;
81
+ recommendations?: string[];
82
+ }
83
+ /**
84
+ * Standard --format and --output options to add to any Command.
85
+ * Usage: command.option(...FORMAT_OPTION).option(...OUTPUT_OPTION)
86
+ */
87
+ export declare const FORMAT_OPTION: readonly ["-F, --format <format>", "Output format (text|json|sarif|junit|markdown)", "text"];
88
+ export declare const OUTPUT_OPTION: readonly ["-o, --output <path>", "Write output to file instead of stdout"];
89
+ /**
90
+ * Write output to file or stdout.
91
+ * When writing to file, prints a short summary to stdout.
92
+ */
93
+ export declare function writeOutput(content: string, outputPath?: string, summary?: string): void;
94
+ export declare function toJSON(data: unknown): string;
95
+ export declare function toSARIF(result: SecurityScanResult): string;
96
+ export declare function toJUnit(summary: TestRunSummary): string;
97
+ export declare function coverageToMarkdown(result: CoverageResult): string;
98
+ export declare function qualityGateToMarkdown(result: QualityGateResult): string;
99
+ export declare function securityToMarkdown(result: SecurityScanResult): string;
100
+ export declare function testRunToMarkdown(summary: TestRunSummary): string;
101
+ //# sourceMappingURL=ci-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-output.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/ci-output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,273 @@
1
+ /**
2
+ * Agentic QE v3 - CI/CD Output Formatter
3
+ *
4
+ * Provides structured output formatting for CI/CD pipeline integration.
5
+ * Supports: text (default), json, sarif, junit, markdown
6
+ */
7
+ import { writeFileSync, readFileSync } from 'node:fs';
8
+ import { resolve, dirname, join } from 'node:path';
9
+ import { mkdirSync } from 'node:fs';
10
+ import { fileURLToPath } from 'node:url';
11
+ /** Read version from package.json at build time — no hardcoded strings. */
12
+ function getPackageVersion() {
13
+ try {
14
+ // Walk up from this file to find package.json
15
+ let dir = typeof __dirname !== 'undefined'
16
+ ? __dirname
17
+ : dirname(fileURLToPath(import.meta.url));
18
+ for (let i = 0; i < 5; i++) {
19
+ const pkgPath = join(dir, 'package.json');
20
+ try {
21
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
22
+ if (pkg.version)
23
+ return pkg.version;
24
+ }
25
+ catch { /* not found at this level */ }
26
+ dir = dirname(dir);
27
+ }
28
+ }
29
+ catch { /* fallback */ }
30
+ return 'unknown';
31
+ }
32
+ // ============================================================================
33
+ // Commander Option Helpers
34
+ // ============================================================================
35
+ /**
36
+ * Standard --format and --output options to add to any Command.
37
+ * Usage: command.option(...FORMAT_OPTION).option(...OUTPUT_OPTION)
38
+ */
39
+ export const FORMAT_OPTION = ['-F, --format <format>', 'Output format (text|json|sarif|junit|markdown)', 'text'];
40
+ export const OUTPUT_OPTION = ['-o, --output <path>', 'Write output to file instead of stdout'];
41
+ // ============================================================================
42
+ // Output Writers
43
+ // ============================================================================
44
+ /**
45
+ * Write output to file or stdout.
46
+ * When writing to file, prints a short summary to stdout.
47
+ */
48
+ export function writeOutput(content, outputPath, summary) {
49
+ if (outputPath) {
50
+ const fullPath = resolve(outputPath);
51
+ mkdirSync(dirname(fullPath), { recursive: true });
52
+ writeFileSync(fullPath, content, 'utf-8');
53
+ if (summary) {
54
+ console.log(summary);
55
+ }
56
+ console.log(`Output written to: ${fullPath}`);
57
+ }
58
+ else {
59
+ console.log(content);
60
+ }
61
+ }
62
+ // ============================================================================
63
+ // JSON Formatter
64
+ // ============================================================================
65
+ export function toJSON(data) {
66
+ return JSON.stringify(data, null, 2);
67
+ }
68
+ // ============================================================================
69
+ // SARIF v2.1.0 Builder (for security scan results)
70
+ // ============================================================================
71
+ const SARIF_SCHEMA = 'https://raw.githubusercontent.com/oasis-tcs/sarif-spec/main/sarif-2.1/schema/sarif-schema-2.1.0.json';
72
+ export function toSARIF(result) {
73
+ const severityToLevel = (severity) => {
74
+ switch (severity.toLowerCase()) {
75
+ case 'critical':
76
+ case 'high': return 'error';
77
+ case 'medium': return 'warning';
78
+ case 'low':
79
+ case 'info': return 'note';
80
+ default: return 'warning';
81
+ }
82
+ };
83
+ const rules = new Map();
84
+ const results = [];
85
+ for (const vuln of result.vulnerabilities) {
86
+ const ruleId = vuln.ruleId || `AQE/${vuln.type.replace(/\s+/g, '-').toLowerCase()}`;
87
+ if (!rules.has(ruleId)) {
88
+ rules.set(ruleId, {
89
+ id: ruleId,
90
+ name: vuln.type,
91
+ shortDescription: vuln.type,
92
+ ...(vuln.cweId ? { helpUri: `https://cwe.mitre.org/data/definitions/${vuln.cweId.replace('CWE-', '')}.html` } : {}),
93
+ });
94
+ }
95
+ results.push({
96
+ ruleId,
97
+ level: severityToLevel(vuln.severity),
98
+ message: { text: vuln.message },
99
+ locations: [{
100
+ physicalLocation: {
101
+ artifactLocation: { uri: vuln.file, uriBaseId: '%SRCROOT%' },
102
+ region: { startLine: vuln.line, startColumn: 1 },
103
+ },
104
+ }],
105
+ ...(vuln.cweId ? { taxa: [{ id: vuln.cweId, toolComponent: { name: 'CWE' } }] } : {}),
106
+ });
107
+ }
108
+ const sarif = {
109
+ $schema: SARIF_SCHEMA,
110
+ version: '2.1.0',
111
+ runs: [{
112
+ tool: {
113
+ driver: {
114
+ name: 'agentic-qe',
115
+ version: getPackageVersion(),
116
+ informationUri: 'https://github.com/proffesor-for-testing/agentic-qe',
117
+ rules: Array.from(rules.values()).map(r => ({
118
+ id: r.id,
119
+ name: r.name,
120
+ shortDescription: { text: r.shortDescription },
121
+ ...(r.helpUri ? { helpUri: r.helpUri } : {}),
122
+ defaultConfiguration: { level: 'warning' },
123
+ })),
124
+ },
125
+ },
126
+ results,
127
+ invocations: [{
128
+ executionSuccessful: true,
129
+ commandLine: `aqe security --sast --format sarif -t ${result.target}`,
130
+ }],
131
+ }],
132
+ };
133
+ return JSON.stringify(sarif, null, 2);
134
+ }
135
+ // ============================================================================
136
+ // JUnit XML Builder (for test results)
137
+ // ============================================================================
138
+ function escapeXml(str) {
139
+ return str
140
+ .replace(/&/g, '&amp;')
141
+ .replace(/</g, '&lt;')
142
+ .replace(/>/g, '&gt;')
143
+ .replace(/"/g, '&quot;')
144
+ .replace(/'/g, '&apos;');
145
+ }
146
+ export function toJUnit(summary) {
147
+ const tests = summary.tests || [];
148
+ const totalTests = summary.passed + summary.failed + summary.skipped;
149
+ const durationSec = (summary.duration / 1000).toFixed(3);
150
+ let xml = `<?xml version="1.0" encoding="UTF-8"?>\n`;
151
+ xml += `<testsuites tests="${totalTests}" failures="${summary.failed}" errors="0" time="${durationSec}">\n`;
152
+ xml += ` <testsuite name="aqe-test-run" tests="${totalTests}" failures="${summary.failed}" errors="0" skipped="${summary.skipped}" time="${durationSec}" id="${escapeXml(summary.runId)}">\n`;
153
+ if (tests.length > 0) {
154
+ for (const test of tests) {
155
+ const testDuration = (test.duration / 1000).toFixed(3);
156
+ const classname = escapeXml(test.suite || test.file || 'aqe');
157
+ const name = escapeXml(test.name);
158
+ xml += ` <testcase classname="${classname}" name="${name}" time="${testDuration}"`;
159
+ if (!test.passed && test.error) {
160
+ xml += `>\n`;
161
+ xml += ` <failure message="${escapeXml(test.error)}">${escapeXml(test.error)}</failure>\n`;
162
+ xml += ` </testcase>\n`;
163
+ }
164
+ else {
165
+ xml += ` />\n`;
166
+ }
167
+ }
168
+ }
169
+ else {
170
+ // Generate summary-level test cases when individual tests aren't available
171
+ for (let i = 0; i < summary.passed; i++) {
172
+ xml += ` <testcase classname="aqe" name="test-${i + 1}" time="0" />\n`;
173
+ }
174
+ for (let i = 0; i < summary.failed; i++) {
175
+ xml += ` <testcase classname="aqe" name="failed-test-${i + 1}" time="0">\n`;
176
+ xml += ` <failure message="Test failed">Test failed</failure>\n`;
177
+ xml += ` </testcase>\n`;
178
+ }
179
+ for (let i = 0; i < summary.skipped; i++) {
180
+ xml += ` <testcase classname="aqe" name="skipped-test-${i + 1}" time="0">\n`;
181
+ xml += ` <skipped />\n`;
182
+ xml += ` </testcase>\n`;
183
+ }
184
+ }
185
+ xml += ` </testsuite>\n`;
186
+ xml += `</testsuites>\n`;
187
+ return xml;
188
+ }
189
+ // ============================================================================
190
+ // Markdown Formatters
191
+ // ============================================================================
192
+ export function coverageToMarkdown(result) {
193
+ let md = `# Coverage Report\n\n`;
194
+ md += `| Metric | Value | Status |\n`;
195
+ md += `|--------|-------|--------|\n`;
196
+ md += `| Lines | ${result.summary.line}% | ${result.summary.line >= result.threshold ? '\u2705' : '\u274C'} |\n`;
197
+ md += `| Branches | ${result.summary.branch}% | ${result.summary.branch >= result.threshold ? '\u2705' : '\u274C'} |\n`;
198
+ md += `| Functions | ${result.summary.function}% | ${result.summary.function >= result.threshold ? '\u2705' : '\u274C'} |\n`;
199
+ md += `| Statements | ${result.summary.statement}% | ${result.summary.statement >= result.threshold ? '\u2705' : '\u274C'} |\n`;
200
+ md += `\n**Threshold:** ${result.threshold}% \u2014 ${result.meetsThreshold ? '\u2705 Met' : '\u274C Not met'}\n`;
201
+ if (result.gaps && result.gaps.length > 0) {
202
+ md += `\n## Coverage Gaps\n\n`;
203
+ md += `| File | Uncovered Lines | Risk | Severity |\n`;
204
+ md += `|------|----------------|------|----------|\n`;
205
+ for (const gap of result.gaps.slice(0, 20)) {
206
+ md += `| ${gap.file} | ${gap.lines.length} | ${(gap.riskScore * 100).toFixed(0)}% | ${gap.severity} |\n`;
207
+ }
208
+ }
209
+ if (result.recommendations && result.recommendations.length > 0) {
210
+ md += `\n## Recommendations\n\n`;
211
+ for (const rec of result.recommendations) {
212
+ md += `- ${rec}\n`;
213
+ }
214
+ }
215
+ return md;
216
+ }
217
+ export function qualityGateToMarkdown(result) {
218
+ let md = `# Quality Gate Report\n\n`;
219
+ md += `**Result:** ${result.passed ? '\u2705 PASSED' : '\u274C FAILED'}\n`;
220
+ md += `**Score:** ${result.score}\n\n`;
221
+ md += `## Checks\n\n`;
222
+ md += `| Check | Value | Threshold | Status |\n`;
223
+ md += `|-------|-------|-----------|--------|\n`;
224
+ for (const check of result.checks) {
225
+ md += `| ${check.name} | ${check.value} | ${check.threshold} | ${check.passed ? '\u2705' : '\u274C'} |\n`;
226
+ }
227
+ if (result.recommendations && result.recommendations.length > 0) {
228
+ md += `\n## Recommendations\n\n`;
229
+ for (const rec of result.recommendations) {
230
+ md += `- ${rec}\n`;
231
+ }
232
+ }
233
+ return md;
234
+ }
235
+ export function securityToMarkdown(result) {
236
+ let md = `# Security Scan Report\n\n`;
237
+ md += `**Target:** ${result.target}\n`;
238
+ md += `**Scan Type:** ${result.scanType}\n`;
239
+ md += `**Vulnerabilities Found:** ${result.vulnerabilities.length}\n\n`;
240
+ if (result.vulnerabilities.length > 0) {
241
+ md += `## Vulnerabilities\n\n`;
242
+ md += `| Severity | Type | File | Line | Message |\n`;
243
+ md += `|----------|------|------|------|---------|\n`;
244
+ for (const v of result.vulnerabilities) {
245
+ md += `| ${v.severity} | ${v.type} | ${v.file} | ${v.line} | ${v.message} |\n`;
246
+ }
247
+ }
248
+ if (result.compliance) {
249
+ md += `\n## Compliance\n\n`;
250
+ md += `**Status:** ${result.compliance.compliant ? '\u2705 Compliant' : '\u274C Non-compliant'}\n`;
251
+ if (result.compliance.issues) {
252
+ for (const issue of result.compliance.issues) {
253
+ md += `- **${issue.framework}:** ${issue.issue}\n`;
254
+ }
255
+ }
256
+ }
257
+ return md;
258
+ }
259
+ export function testRunToMarkdown(summary) {
260
+ const total = summary.passed + summary.failed + summary.skipped;
261
+ let md = `# Test Run Report\n\n`;
262
+ md += `**Run ID:** ${summary.runId}\n`;
263
+ md += `**Duration:** ${summary.duration}ms\n\n`;
264
+ md += `| Metric | Count |\n`;
265
+ md += `|--------|-------|\n`;
266
+ md += `| Total | ${total} |\n`;
267
+ md += `| Passed | ${summary.passed} |\n`;
268
+ md += `| Failed | ${summary.failed} |\n`;
269
+ md += `| Skipped | ${summary.skipped} |\n`;
270
+ md += `\n**Result:** ${summary.failed === 0 ? '\u2705 All tests passed' : '\u274C Some tests failed'}\n`;
271
+ return md;
272
+ }
273
+ //# sourceMappingURL=ci-output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-output.js","sourceRoot":"","sources":["../../../src/cli/utils/ci-output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Agentic QE v3 - Coverage Data Builder
3
+ *
4
+ * Reads REAL V8 coverage data from vitest/jest/c8 output when available.
5
+ * Falls back to deterministic heuristic estimation when no instrumented
6
+ * coverage exists — clearly labeled as estimated, never randomized.
7
+ *
8
+ * The previous implementation used Math.random() to fabricate coverage
9
+ * numbers. This was misleading: CI pipelines would make decisions based
10
+ * on random noise. This module fixes that.
11
+ */
12
+ export interface FileCoverage {
13
+ path: string;
14
+ lines: {
15
+ covered: number;
16
+ total: number;
17
+ };
18
+ branches: {
19
+ covered: number;
20
+ total: number;
21
+ };
22
+ functions: {
23
+ covered: number;
24
+ total: number;
25
+ };
26
+ statements: {
27
+ covered: number;
28
+ total: number;
29
+ };
30
+ uncoveredLines: number[];
31
+ uncoveredBranches: number[];
32
+ }
33
+ export interface CoverageData {
34
+ files: FileCoverage[];
35
+ summary: {
36
+ line: number;
37
+ branch: number;
38
+ function: number;
39
+ statement: number;
40
+ files: number;
41
+ };
42
+ /** True if data came from real instrumented coverage (V8/istanbul) */
43
+ instrumented: boolean;
44
+ }
45
+ /**
46
+ * Try to read real coverage data from a coverage-final.json file.
47
+ * Returns null if no instrumented coverage is available.
48
+ */
49
+ export declare function readInstrumentedCoverage(projectRoot: string): Map<string, FileCoverage> | null;
50
+ /**
51
+ * Build coverage data for the given source files.
52
+ *
53
+ * 1. Tries to read real instrumented coverage (V8/istanbul/c8)
54
+ * 2. Falls back to deterministic heuristic estimation (clearly labeled)
55
+ *
56
+ * Never uses Math.random(). CI decisions deserve real data or honest estimates.
57
+ */
58
+ export declare function buildCoverageData(sourceFiles: string[], projectRoot?: string): CoverageData;
59
+ //# sourceMappingURL=coverage-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coverage-data.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/coverage-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,sEAAsE;IACtE,YAAY,EAAE,OAAO,CAAC;CACvB;AA2BD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI,CAiE9F;AAoGD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,YAAY,CAiE3F"}