agentic-qe 3.14.3 → 3.14.4

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 (724) hide show
  1. package/.claude/agents/v3/qe-coverage-specialist.md +1 -1
  2. package/.claude/agents/v3/qe-fleet-commander.md +1 -1
  3. package/.claude/agents/v3/qe-pentest-validator.md +1 -1
  4. package/.claude/agents/v3/qe-queen-coordinator.md +1 -1
  5. package/.claude/agents/v3/qe-risk-assessor.md +1 -1
  6. package/.claude/agents/v3/qe-root-cause-analyzer.md +1 -1
  7. package/.claude/agents/v3/qe-security-auditor.md +1 -1
  8. package/.claude/agents/v3/qe-test-architect.md +1 -1
  9. package/.claude/commands/aqe-costs.md +10 -10
  10. package/.claude/helpers/advisor-call.cjs +3 -3
  11. package/.claude/helpers/v3/advisor-call.cjs +3 -3
  12. package/.claude/skills/.validation/examples/chaos-engineering-output.example.json +1 -1
  13. package/.claude/skills/.validation/examples/performance-testing-output.example.json +1 -1
  14. package/.claude/skills/.validation/examples/security-testing-output.example.json +1 -1
  15. package/.claude/skills/.validation/examples/testability-scoring-output.example.json +1 -1
  16. package/.claude/skills/.validation/schemas/skill-eval.schema.json +4 -1
  17. package/.claude/skills/.validation/schemas/skill-frontmatter.schema.json +1 -1
  18. package/.claude/skills/.validation/schemas/skill-output.template.json +1 -1
  19. package/.claude/skills/.validation/templates/eval.template.yaml +1 -1
  20. package/.claude/skills/.validation/templates/security-testing-eval.template.yaml +1 -1
  21. package/.claude/skills/.validation/templates/skill-frontmatter.example.yaml +1 -1
  22. package/.claude/skills/.validation/test-data/sample-output.json +1 -1
  23. package/.claude/skills/a11y-ally/SKILL.md +1 -1
  24. package/.claude/skills/a11y-ally/evals/a11y-ally.yaml +1 -1
  25. package/.claude/skills/accessibility-testing/evals/accessibility-testing.yaml +1 -1
  26. package/.claude/skills/api-testing-patterns/evals/api-testing-patterns.yaml +1 -1
  27. package/.claude/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +1 -1
  28. package/.claude/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +1 -1
  29. package/.claude/skills/compatibility-testing/evals/compatibility-testing.yaml +1 -1
  30. package/.claude/skills/compliance-testing/evals/compliance-testing.yaml +1 -1
  31. package/.claude/skills/contract-testing/evals/contract-testing.yaml +1 -1
  32. package/.claude/skills/database-testing/evals/database-testing.yaml +1 -1
  33. package/.claude/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +1 -1
  34. package/.claude/skills/localization-testing/evals/localization-testing.yaml +1 -1
  35. package/.claude/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +1 -1
  36. package/.claude/skills/mobile-testing/evals/mobile-testing.yaml +1 -1
  37. package/.claude/skills/mutation-testing/evals/mutation-testing.yaml +1 -1
  38. package/.claude/skills/mutation-testing/test-data/sample-output.json +1 -1
  39. package/.claude/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +1 -1
  40. package/.claude/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +1 -1
  41. package/.claude/skills/n8n-security-testing/evals/n8n-security-testing.yaml +1 -1
  42. package/.claude/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +1 -1
  43. package/.claude/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +1 -1
  44. package/.claude/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +1 -1
  45. package/.claude/skills/pentest-validation/evals/pentest-validation.yaml +1 -1
  46. package/.claude/skills/performance-testing/evals/performance-testing.yaml +1 -1
  47. package/.claude/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +1 -1
  48. package/.claude/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +1 -1
  49. package/.claude/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +1 -1
  50. package/.claude/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +1 -1
  51. package/.claude/skills/qcsd-refinement-swarm/evals/qcsd-refinement-swarm.yaml +1 -1
  52. package/.claude/skills/qe-browser/evals/qe-browser.yaml +1 -1
  53. package/.claude/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +1 -1
  54. package/.claude/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +1 -1
  55. package/.claude/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +1 -1
  56. package/.claude/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +1 -1
  57. package/.claude/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +2 -2
  58. package/.claude/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +1 -1
  59. package/.claude/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +1 -1
  60. package/.claude/skills/qe-test-execution/evals/qe-test-execution.yaml +1 -1
  61. package/.claude/skills/qe-test-generation/evals/qe-test-generation.yaml +1 -1
  62. package/.claude/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +1 -1
  63. package/.claude/skills/quality-metrics/evals/quality-metrics.yaml +1 -1
  64. package/.claude/skills/regression-testing/evals/regression-testing.yaml +1 -1
  65. package/.claude/skills/risk-based-testing/evals/risk-based-testing.yaml +1 -1
  66. package/.claude/skills/security-testing/evals/security-testing.yaml +1 -1
  67. package/.claude/skills/security-visual-testing/evals/security-visual-testing.yaml +1 -1
  68. package/.claude/skills/shift-left-testing/evals/shift-left-testing.yaml +1 -1
  69. package/.claude/skills/shift-right-testing/evals/shift-right-testing.yaml +1 -1
  70. package/.claude/skills/skills-manifest.json +1 -1
  71. package/.claude/skills/test-automation-strategy/evals/test-automation-strategy.yaml +1 -1
  72. package/.claude/skills/test-data-management/evals/test-data-management.yaml +1 -1
  73. package/.claude/skills/test-design-techniques/evals/test-design-techniques.yaml +1 -1
  74. package/.claude/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +1 -1
  75. package/.claude/skills/testability-scoring/evals/testability-scoring.yaml +1 -1
  76. package/.claude/skills/validation-pipeline/evals/validation-pipeline.yaml +1 -1
  77. package/.claude/skills/verification-quality/evals/verification-quality.yaml +1 -1
  78. package/.claude/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +1 -1
  79. package/.claude/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +1 -1
  80. package/.opencode/agents/collective-intelligence-coordinator.yaml +1 -1
  81. package/.opencode/agents/ddd-domain-expert.yaml +1 -1
  82. package/.opencode/agents/memory-specialist.yaml +1 -1
  83. package/.opencode/agents/performance-engineer.yaml +1 -1
  84. package/.opencode/agents/qe-accessibility-auditor.yaml +1 -1
  85. package/.opencode/agents/qe-api-contract-validator.yaml +1 -1
  86. package/.opencode/agents/qe-bdd-generator.yaml +1 -1
  87. package/.opencode/agents/qe-chaos-engineer.yaml +1 -1
  88. package/.opencode/agents/qe-code-complexity.yaml +1 -1
  89. package/.opencode/agents/qe-code-intelligence.yaml +1 -1
  90. package/.opencode/agents/qe-coverage-analyzer.yaml +1 -1
  91. package/.opencode/agents/qe-defect-predictor.yaml +1 -1
  92. package/.opencode/agents/qe-dependency-mapper.yaml +1 -1
  93. package/.opencode/agents/qe-deployment-advisor.yaml +1 -1
  94. package/.opencode/agents/qe-devils-advocate.yaml +1 -1
  95. package/.opencode/agents/qe-flaky-hunter.yaml +1 -1
  96. package/.opencode/agents/qe-fleet-commander.yaml +1 -1
  97. package/.opencode/agents/qe-gap-detector.yaml +1 -1
  98. package/.opencode/agents/qe-graphql-tester.yaml +1 -1
  99. package/.opencode/agents/qe-impact-analyzer.yaml +1 -1
  100. package/.opencode/agents/qe-integration-architect.yaml +1 -1
  101. package/.opencode/agents/qe-integration-tester.yaml +1 -1
  102. package/.opencode/agents/qe-kg-builder.yaml +1 -1
  103. package/.opencode/agents/qe-learning-coordinator.yaml +1 -1
  104. package/.opencode/agents/qe-load-tester.yaml +1 -1
  105. package/.opencode/agents/qe-message-broker-tester.yaml +1 -1
  106. package/.opencode/agents/qe-metrics-optimizer.yaml +1 -1
  107. package/.opencode/agents/qe-middleware-validator.yaml +1 -1
  108. package/.opencode/agents/qe-mutation-tester.yaml +1 -1
  109. package/.opencode/agents/qe-odata-contract-tester.yaml +1 -1
  110. package/.opencode/agents/qe-parallel-executor.yaml +1 -1
  111. package/.opencode/agents/qe-pattern-learner.yaml +1 -1
  112. package/.opencode/agents/qe-pentest-validator.yaml +1 -1
  113. package/.opencode/agents/qe-performance-tester.yaml +1 -1
  114. package/.opencode/agents/qe-product-factors-assessor.yaml +1 -1
  115. package/.opencode/agents/qe-property-tester.yaml +1 -1
  116. package/.opencode/agents/qe-quality-criteria-recommender.yaml +1 -1
  117. package/.opencode/agents/qe-quality-gate.yaml +1 -1
  118. package/.opencode/agents/qe-queen-coordinator.yaml +1 -1
  119. package/.opencode/agents/qe-qx-partner.yaml +1 -1
  120. package/.opencode/agents/qe-regression-analyzer.yaml +1 -1
  121. package/.opencode/agents/qe-requirements-validator.yaml +1 -1
  122. package/.opencode/agents/qe-responsive-tester.yaml +1 -1
  123. package/.opencode/agents/qe-retry-handler.yaml +1 -1
  124. package/.opencode/agents/qe-risk-assessor.yaml +1 -1
  125. package/.opencode/agents/qe-root-cause-analyzer.yaml +1 -1
  126. package/.opencode/agents/qe-sap-idoc-tester.yaml +1 -1
  127. package/.opencode/agents/qe-sap-rfc-tester.yaml +1 -1
  128. package/.opencode/agents/qe-security-auditor.yaml +1 -1
  129. package/.opencode/agents/qe-security-scanner.yaml +1 -1
  130. package/.opencode/agents/qe-soap-tester.yaml +1 -1
  131. package/.opencode/agents/qe-sod-analyzer.yaml +1 -1
  132. package/.opencode/agents/qe-tdd-specialist.yaml +1 -1
  133. package/.opencode/agents/qe-test-generator.yaml +1 -1
  134. package/.opencode/agents/qe-test-idea-rewriter.yaml +1 -1
  135. package/.opencode/agents/qe-transfer-specialist.yaml +1 -1
  136. package/.opencode/agents/qe-visual-tester.yaml +1 -1
  137. package/.opencode/agents/security-architect.yaml +1 -1
  138. package/.opencode/agents/security-auditor.yaml +1 -1
  139. package/CHANGELOG.md +111 -0
  140. package/README.md +7 -2
  141. package/assets/agents/v3/helpers/advisor-call.cjs +3 -3
  142. package/assets/agents/v3/qe-coverage-specialist.md +1 -1
  143. package/assets/agents/v3/qe-fleet-commander.md +1 -1
  144. package/assets/agents/v3/qe-pentest-validator.md +1 -1
  145. package/assets/agents/v3/qe-queen-coordinator.md +1 -1
  146. package/assets/agents/v3/qe-risk-assessor.md +1 -1
  147. package/assets/agents/v3/qe-root-cause-analyzer.md +1 -1
  148. package/assets/agents/v3/qe-security-auditor.md +1 -1
  149. package/assets/agents/v3/qe-test-architect.md +1 -1
  150. package/assets/skills/.validation/examples/chaos-engineering-output.example.json +1 -1
  151. package/assets/skills/.validation/examples/performance-testing-output.example.json +1 -1
  152. package/assets/skills/.validation/examples/security-testing-output.example.json +1 -1
  153. package/assets/skills/.validation/examples/testability-scoring-output.example.json +1 -1
  154. package/assets/skills/.validation/schemas/skill-eval.schema.json +4 -1
  155. package/assets/skills/.validation/schemas/skill-frontmatter.schema.json +1 -1
  156. package/assets/skills/.validation/schemas/skill-output.template.json +1 -1
  157. package/assets/skills/.validation/templates/eval.template.yaml +1 -1
  158. package/assets/skills/.validation/templates/security-testing-eval.template.yaml +1 -1
  159. package/assets/skills/.validation/templates/skill-frontmatter.example.yaml +1 -1
  160. package/assets/skills/.validation/test-data/sample-output.json +1 -1
  161. package/assets/skills/a11y-ally/SKILL.md +1 -1
  162. package/assets/skills/a11y-ally/evals/a11y-ally.yaml +1 -1
  163. package/assets/skills/accessibility-testing/evals/accessibility-testing.yaml +1 -1
  164. package/assets/skills/api-testing-patterns/evals/api-testing-patterns.yaml +1 -1
  165. package/assets/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +1 -1
  166. package/assets/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +1 -1
  167. package/assets/skills/compatibility-testing/evals/compatibility-testing.yaml +1 -1
  168. package/assets/skills/compliance-testing/evals/compliance-testing.yaml +1 -1
  169. package/assets/skills/contract-testing/evals/contract-testing.yaml +1 -1
  170. package/assets/skills/database-testing/evals/database-testing.yaml +1 -1
  171. package/assets/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +1 -1
  172. package/assets/skills/localization-testing/evals/localization-testing.yaml +1 -1
  173. package/assets/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +1 -1
  174. package/assets/skills/mobile-testing/evals/mobile-testing.yaml +1 -1
  175. package/assets/skills/mutation-testing/evals/mutation-testing.yaml +1 -1
  176. package/assets/skills/mutation-testing/test-data/sample-output.json +1 -1
  177. package/assets/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +1 -1
  178. package/assets/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +1 -1
  179. package/assets/skills/n8n-security-testing/evals/n8n-security-testing.yaml +1 -1
  180. package/assets/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +1 -1
  181. package/assets/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +1 -1
  182. package/assets/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +1 -1
  183. package/assets/skills/pentest-validation/evals/pentest-validation.yaml +1 -1
  184. package/assets/skills/performance-testing/evals/performance-testing.yaml +1 -1
  185. package/assets/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +1 -1
  186. package/assets/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +1 -1
  187. package/assets/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +1 -1
  188. package/assets/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +1 -1
  189. package/assets/skills/qcsd-refinement-swarm/evals/qcsd-refinement-swarm.yaml +1 -1
  190. package/assets/skills/qe-browser/evals/qe-browser.yaml +1 -1
  191. package/assets/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +1 -1
  192. package/assets/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +1 -1
  193. package/assets/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +1 -1
  194. package/assets/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +1 -1
  195. package/assets/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +2 -2
  196. package/assets/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +1 -1
  197. package/assets/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +1 -1
  198. package/assets/skills/qe-test-execution/evals/qe-test-execution.yaml +1 -1
  199. package/assets/skills/qe-test-generation/evals/qe-test-generation.yaml +1 -1
  200. package/assets/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +1 -1
  201. package/assets/skills/quality-metrics/evals/quality-metrics.yaml +1 -1
  202. package/assets/skills/regression-testing/evals/regression-testing.yaml +1 -1
  203. package/assets/skills/risk-based-testing/evals/risk-based-testing.yaml +1 -1
  204. package/assets/skills/security-testing/evals/security-testing.yaml +1 -1
  205. package/assets/skills/security-visual-testing/evals/security-visual-testing.yaml +1 -1
  206. package/assets/skills/shift-left-testing/evals/shift-left-testing.yaml +1 -1
  207. package/assets/skills/shift-right-testing/evals/shift-right-testing.yaml +1 -1
  208. package/assets/skills/skills-manifest.json +1 -1
  209. package/assets/skills/test-automation-strategy/evals/test-automation-strategy.yaml +1 -1
  210. package/assets/skills/test-data-management/evals/test-data-management.yaml +1 -1
  211. package/assets/skills/test-design-techniques/evals/test-design-techniques.yaml +1 -1
  212. package/assets/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +1 -1
  213. package/assets/skills/testability-scoring/evals/testability-scoring.yaml +1 -1
  214. package/assets/skills/validation-pipeline/evals/validation-pipeline.yaml +1 -1
  215. package/assets/skills/verification-quality/evals/verification-quality.yaml +1 -1
  216. package/assets/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +1 -1
  217. package/assets/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +1 -1
  218. package/dist/cli/bundle.js +7 -7
  219. package/dist/cli/chunks/adapter-TNNNJRDG.js +2 -0
  220. package/dist/cli/chunks/{agent-booster-wasm-TQOMLWWX.js → agent-booster-wasm-5PC7D2FW.js} +2 -2
  221. package/dist/cli/chunks/{agent-handler-Q3SEMMI2.js → agent-handler-RDNTK4CA.js} +2 -2
  222. package/dist/cli/chunks/{agent-memory-branch-SJXAQSZI.js → agent-memory-branch-NAAMBWIR.js} +2 -2
  223. package/dist/cli/chunks/aqe-learning-engine-5ZRMYJLB.js +2 -0
  224. package/dist/cli/chunks/{arena-7RC7TBGW.js → arena-HXTWJ5YY.js} +4 -4
  225. package/dist/cli/chunks/{arena-UPB7TKUY.js → arena-KXFHRWX4.js} +2 -2
  226. package/dist/cli/chunks/{audit-IXN5R4WB.js → audit-YSGA7UWT.js} +3 -3
  227. package/dist/cli/chunks/base-KWZHOPSH.js +2 -0
  228. package/dist/cli/chunks/{better-sqlite3-RP4DEGK3.js → better-sqlite3-UICJZIDG.js} +2 -2
  229. package/dist/cli/chunks/brain-handler-ET6YAP4B.js +90 -0
  230. package/dist/cli/chunks/{branch-enumerator-VPRWDGFJ.js → branch-enumerator-SS7UNVIA.js} +2 -2
  231. package/dist/cli/chunks/{browser-B6E7JPPJ.js → browser-77GI6KBE.js} +2 -2
  232. package/dist/cli/chunks/browser-workflow-2FZTKDUL.js +2 -0
  233. package/dist/cli/chunks/{chunk-ZHXWGNYM.js → chunk-2JW3BCGG.js} +1 -1
  234. package/dist/cli/chunks/{chunk-TGLAWI62.js → chunk-33YYYWBQ.js} +1 -1
  235. package/dist/cli/chunks/{chunk-BN7DKW5D.js → chunk-34WO57CW.js} +1 -1
  236. package/dist/cli/chunks/{chunk-TTMHIOQ3.js → chunk-3QHGWY7T.js} +2 -2
  237. package/dist/cli/chunks/chunk-3TW5W5LX.js +2 -0
  238. package/dist/cli/chunks/{chunk-E3FBW6G2.js → chunk-3UPAMMCB.js} +1 -1
  239. package/dist/cli/chunks/{chunk-MDZ6RRLX.js → chunk-3VOQRIQM.js} +2 -2
  240. package/dist/cli/chunks/{chunk-G5C2XVZC.js → chunk-3X3DJZJJ.js} +1 -1
  241. package/dist/cli/chunks/{chunk-4C6UJIHB.js → chunk-4MHXCAG2.js} +1 -1
  242. package/dist/cli/chunks/{chunk-7BUERZYL.js → chunk-4OYFXLBK.js} +2 -2
  243. package/dist/cli/chunks/{chunk-TFHQE6NK.js → chunk-55RWDRJD.js} +3 -3
  244. package/dist/cli/chunks/chunk-5R3QL7WN.js +14 -0
  245. package/dist/cli/chunks/{chunk-ZUG5MOUB.js → chunk-5SJHQ2CO.js} +2 -2
  246. package/dist/cli/chunks/{chunk-VIDBBB6F.js → chunk-5YPYDPBJ.js} +2 -2
  247. package/dist/cli/chunks/chunk-5Z6XZV7K.js +65 -0
  248. package/dist/cli/chunks/{chunk-JV4FZUE7.js → chunk-64PFWE2F.js} +2 -2
  249. package/dist/cli/chunks/{chunk-TISSZFHO.js → chunk-6CQN24ZK.js} +1 -1
  250. package/dist/cli/chunks/{chunk-G6DCESPU.js → chunk-6J62K3SW.js} +2 -2
  251. package/dist/cli/chunks/{chunk-7SLAZAVU.js → chunk-6KJABXAR.js} +2 -2
  252. package/dist/cli/chunks/{chunk-KF63AYXD.js → chunk-6QYNWR7U.js} +2 -2
  253. package/dist/cli/chunks/{chunk-74PK3NEW.js → chunk-6TPKK7LD.js} +2 -2
  254. package/dist/cli/chunks/{chunk-JRYZKBY2.js → chunk-6UWGMOND.js} +2 -2
  255. package/dist/cli/chunks/{chunk-ZN3J6TZD.js → chunk-6VRA2QGL.js} +1 -1
  256. package/dist/cli/chunks/{chunk-YCBDE2N7.js → chunk-7D777LTF.js} +2 -2
  257. package/dist/cli/chunks/chunk-7ZIOFPL3.js +2 -0
  258. package/dist/cli/chunks/chunk-A4FYONNU.js +2 -0
  259. package/dist/cli/chunks/{chunk-5Y5TC6BY.js → chunk-AIHDEEJO.js} +2 -2
  260. package/dist/cli/chunks/{chunk-N4H2QOT5.js → chunk-AUXFKCQL.js} +2 -2
  261. package/dist/cli/chunks/{chunk-7G6UX2QN.js → chunk-AWWNB2T7.js} +2 -2
  262. package/dist/cli/chunks/{chunk-33VPWGCM.js → chunk-BDESSCVR.js} +3 -3
  263. package/dist/cli/chunks/{chunk-OVDKWCD7.js → chunk-BFP7KO7P.js} +2 -2
  264. package/dist/cli/chunks/{chunk-MXMFGSWR.js → chunk-BGE6FOLM.js} +2 -2
  265. package/dist/cli/chunks/{chunk-2GNRW3OD.js → chunk-BOARZKU3.js} +2 -2
  266. package/dist/cli/chunks/{chunk-4JBFJTHJ.js → chunk-BOZZYWCR.js} +1 -1
  267. package/dist/cli/chunks/{chunk-D4Z2N74A.js → chunk-C2WU3533.js} +1 -1
  268. package/dist/cli/chunks/{chunk-B7SWW5A6.js → chunk-CDHQFHRP.js} +2 -2
  269. package/dist/cli/chunks/chunk-CDKG6EI7.js +16 -0
  270. package/dist/cli/chunks/{chunk-IU4EBTA2.js → chunk-CIKSHTEQ.js} +3 -3
  271. package/dist/cli/chunks/{chunk-RTJ2M6V6.js → chunk-CIZ5JPDC.js} +2 -2
  272. package/dist/cli/chunks/{chunk-CR3QGHVN.js → chunk-CLTMDCSE.js} +2 -2
  273. package/dist/cli/chunks/{chunk-T35GZXTU.js → chunk-CNG6GQEZ.js} +2 -2
  274. package/dist/cli/chunks/{chunk-IQEJGZV6.js → chunk-CSU5NYOX.js} +3 -3
  275. package/dist/cli/chunks/chunk-CU46J64M.js +4 -0
  276. package/dist/cli/chunks/{chunk-LLVGTEHU.js → chunk-CXQPR5MY.js} +1 -1
  277. package/dist/cli/chunks/{chunk-5BLFXQEB.js → chunk-DA5K5754.js} +1 -1
  278. package/dist/cli/chunks/{chunk-5FOZO7KM.js → chunk-DAEFDCJ4.js} +45 -45
  279. package/dist/cli/chunks/{chunk-SJPZSCZP.js → chunk-DEYLEDJN.js} +2 -2
  280. package/dist/cli/chunks/{chunk-LHGNNZ76.js → chunk-DFZCKIGY.js} +3 -3
  281. package/dist/cli/chunks/{chunk-YAKS3CAB.js → chunk-DHJPWQBR.js} +2 -2
  282. package/dist/cli/chunks/{chunk-37BASGWC.js → chunk-DOTK76IJ.js} +2 -2
  283. package/dist/cli/chunks/{chunk-STRDSVH3.js → chunk-DPFRKBOG.js} +2 -2
  284. package/dist/cli/chunks/{chunk-H5ZRV5K5.js → chunk-EDJ3O7RH.js} +2 -2
  285. package/dist/cli/chunks/{chunk-DBA3N742.js → chunk-EKQ673SA.js} +1 -1
  286. package/dist/cli/chunks/chunk-F3SBRQC6.js +2 -0
  287. package/dist/cli/chunks/{chunk-HOQQCY2K.js → chunk-FGYMFUE2.js} +2 -2
  288. package/dist/cli/chunks/{chunk-FKG5OQFT.js → chunk-FLYOJOKN.js} +1 -1
  289. package/dist/cli/chunks/{chunk-MWWAMDHI.js → chunk-FRH6VAUS.js} +1 -1
  290. package/dist/cli/chunks/{chunk-UYJHYMEQ.js → chunk-FWGOHAAB.js} +2 -2
  291. package/dist/cli/chunks/{chunk-HRUU7E3D.js → chunk-G6T45OIC.js} +2 -2
  292. package/dist/cli/chunks/{chunk-4Q35TI6Z.js → chunk-GPLQ6DOK.js} +2 -2
  293. package/dist/cli/chunks/{chunk-PI74GOE4.js → chunk-HDSAM2RE.js} +2 -2
  294. package/dist/cli/chunks/chunk-HIVA55CJ.js +2 -0
  295. package/dist/cli/chunks/{chunk-B5XFDFBT.js → chunk-HIYXCDEP.js} +1 -1
  296. package/dist/cli/chunks/{chunk-ZK5JKHP4.js → chunk-HUWNIPZ5.js} +1 -1
  297. package/dist/cli/chunks/{chunk-H6XBM2LY.js → chunk-HV2J7KKQ.js} +2 -2
  298. package/dist/cli/chunks/{chunk-IFFZR6GY.js → chunk-IFCLB7FJ.js} +1 -1
  299. package/dist/cli/chunks/{chunk-3ABRGG3C.js → chunk-IPR4QP3H.js} +2 -2
  300. package/dist/cli/chunks/{chunk-7FYMDKQH.js → chunk-ISDMD6EU.js} +165 -167
  301. package/dist/cli/chunks/{chunk-B2ZONZPZ.js → chunk-J6GNQS62.js} +2 -2
  302. package/dist/cli/chunks/{chunk-G6ZHTF42.js → chunk-JBNEE5UH.js} +2 -2
  303. package/dist/cli/chunks/chunk-JZ3ORVZ3.js +54 -0
  304. package/dist/cli/chunks/{chunk-5IAB5NRZ.js → chunk-KCZR45PA.js} +2 -2
  305. package/dist/cli/chunks/chunk-KGT36Z42.js +14 -0
  306. package/dist/cli/chunks/{chunk-IP7NSFQQ.js → chunk-KHFNNVJA.js} +2 -2
  307. package/dist/cli/chunks/{chunk-2WT7AKKK.js → chunk-KPA7MZ6C.js} +2 -2
  308. package/dist/cli/chunks/{chunk-7JQHPANT.js → chunk-KSKEF7LZ.js} +3 -3
  309. package/dist/cli/chunks/{chunk-F67AV5P2.js → chunk-M2JBBZQB.js} +2 -2
  310. package/dist/cli/chunks/{chunk-SGXSB7YO.js → chunk-M4WJKGVK.js} +1 -1
  311. package/dist/cli/chunks/{chunk-4UDZLD42.js → chunk-M5QUBZY6.js} +2 -2
  312. package/dist/cli/chunks/{chunk-PZTVH2AS.js → chunk-MCUJEZT6.js} +2 -2
  313. package/dist/cli/chunks/{chunk-KPMGTVB4.js → chunk-MDWCE7YW.js} +1 -1
  314. package/dist/cli/chunks/{chunk-LS3EUMBP.js → chunk-MEGDYJPV.js} +5 -5
  315. package/dist/cli/chunks/chunk-MIQTXNBG.js +4 -0
  316. package/dist/cli/chunks/{chunk-VWNHKYK7.js → chunk-MNW6QGNJ.js} +2 -2
  317. package/dist/cli/chunks/{chunk-NN76NTOX.js → chunk-MOBNBMFW.js} +1 -1
  318. package/dist/cli/chunks/{chunk-SG47AXJG.js → chunk-MTZH7AHC.js} +1 -1
  319. package/dist/cli/chunks/chunk-MVNP7GIR.js +2 -0
  320. package/dist/cli/chunks/chunk-MVPCNSPY.js +2 -0
  321. package/dist/cli/chunks/chunk-NA7B2QYB.js +2 -0
  322. package/dist/cli/chunks/{chunk-26GM5CWD.js → chunk-NDPFGIMJ.js} +3 -3
  323. package/dist/cli/chunks/{chunk-ELU4IC3I.js → chunk-NJBGXDQ7.js} +1 -1
  324. package/dist/cli/chunks/chunk-OBAP2TXZ.js +2 -0
  325. package/dist/cli/chunks/{chunk-NTSXHZTC.js → chunk-OCWWP5PL.js} +4 -4
  326. package/dist/cli/chunks/{chunk-XA7CG3LH.js → chunk-ODKLFVYC.js} +2 -2
  327. package/dist/cli/chunks/{chunk-IKIITGU5.js → chunk-ONII3572.js} +4 -4
  328. package/dist/cli/chunks/{chunk-JBB7E26R.js → chunk-OSLYSG3B.js} +2 -2
  329. package/dist/cli/chunks/{chunk-CB5JPRIZ.js → chunk-OULHKEVH.js} +2 -2
  330. package/dist/cli/chunks/{chunk-YGB6R5DW.js → chunk-PAWXJ73E.js} +1 -1
  331. package/dist/cli/chunks/chunk-PEPFCPES.js +2 -0
  332. package/dist/cli/chunks/{chunk-FUE6LL72.js → chunk-PFR4G3DJ.js} +2 -2
  333. package/dist/cli/chunks/chunk-PO3IXGMQ.js +2 -0
  334. package/dist/cli/chunks/{chunk-OY7MLMEX.js → chunk-PZJOPURC.js} +5 -5
  335. package/dist/cli/chunks/{chunk-UHQY3GK7.js → chunk-Q5DO24IJ.js} +2 -2
  336. package/dist/cli/chunks/chunk-QGIU2WRL.js +2 -0
  337. package/dist/cli/chunks/{chunk-4RP5VUBI.js → chunk-R4VL6E65.js} +2 -2
  338. package/dist/cli/chunks/{chunk-RKJZWWB7.js → chunk-R5NE6B2M.js} +2 -2
  339. package/dist/cli/chunks/{chunk-5F6DWHQG.js → chunk-RJCYCLZV.js} +2 -2
  340. package/dist/cli/chunks/{chunk-GNTVFN7D.js → chunk-SGYJ4NFZ.js} +1 -1
  341. package/dist/cli/chunks/{chunk-OYMLHX2B.js → chunk-SRKETSFF.js} +1 -1
  342. package/dist/cli/chunks/{chunk-XX7HUSX2.js → chunk-STJCATGN.js} +2 -2
  343. package/dist/cli/chunks/{chunk-C46DMCWF.js → chunk-STM3UDNO.js} +1 -1
  344. package/dist/cli/chunks/{chunk-EY4OQHU3.js → chunk-T6BVLVI5.js} +1 -1
  345. package/dist/cli/chunks/{chunk-LKN7JQTW.js → chunk-TDZ53WO2.js} +2 -2
  346. package/dist/cli/chunks/{chunk-OV5EZO3U.js → chunk-TPGED2IF.js} +2 -2
  347. package/dist/cli/chunks/{chunk-DX3C5HPN.js → chunk-TSRSV3LD.js} +1 -1
  348. package/dist/cli/chunks/{chunk-Y2DVFVGI.js → chunk-TT23RRB7.js} +1 -1
  349. package/dist/cli/chunks/{chunk-XXCYQXK3.js → chunk-TWAWHOP7.js} +2 -2
  350. package/dist/cli/chunks/{chunk-2IGT5WNQ.js → chunk-U5K45TFH.js} +1 -1
  351. package/dist/cli/chunks/{chunk-SQ3PPISY.js → chunk-UDHKLT4C.js} +1 -1
  352. package/dist/cli/chunks/{chunk-YDNSLLBS.js → chunk-UEM7ZF5K.js} +2 -2
  353. package/dist/cli/chunks/{chunk-4XPPMADQ.js → chunk-UGVHCMUN.js} +6 -6
  354. package/dist/cli/chunks/{chunk-YL7T3VV7.js → chunk-V3QLFNA2.js} +2 -2
  355. package/dist/cli/chunks/{chunk-YEXPFHV6.js → chunk-VD6QRULW.js} +2 -2
  356. package/dist/cli/chunks/{chunk-OVPJQWHW.js → chunk-VIHTL3U2.js} +2 -2
  357. package/dist/cli/chunks/chunk-W7BWUTVV.js +2 -0
  358. package/dist/cli/chunks/{chunk-3P6NCFI2.js → chunk-WLG5AJ4N.js} +2 -2
  359. package/dist/cli/chunks/{chunk-V4AOVDCJ.js → chunk-XC7DYDSY.js} +8 -8
  360. package/dist/cli/chunks/{chunk-LTBCAFTZ.js → chunk-XJ7QNVI5.js} +3 -3
  361. package/dist/cli/chunks/chunk-XRT2WRMS.js +2 -0
  362. package/dist/cli/chunks/{chunk-UMENRGHK.js → chunk-XRYF6JV7.js} +2 -2
  363. package/dist/cli/chunks/{chunk-SHGKY3QB.js → chunk-XWMZ6D6N.js} +2 -2
  364. package/dist/cli/chunks/{chunk-72UJXEKQ.js → chunk-Y3MW3YBC.js} +2 -2
  365. package/dist/cli/chunks/chunk-YNXS6CGV.js +2 -0
  366. package/dist/cli/chunks/{chunk-LVLBIKJD.js → chunk-Z3RHREWF.js} +1 -1
  367. package/dist/cli/chunks/{chunk-HXE5NBJG.js → chunk-ZBAKA4YB.js} +1 -1
  368. package/dist/cli/chunks/chunk-ZBJ4XOOV.js +180 -0
  369. package/dist/cli/chunks/chunk-ZBQY5GLF.js +11 -0
  370. package/dist/cli/chunks/{chunk-NBWQBQO5.js → chunk-ZJ26AQA5.js} +1 -1
  371. package/dist/cli/chunks/{chunk-TJEIOE7F.js → chunk-ZNEMGX5O.js} +1 -1
  372. package/dist/cli/chunks/{chunk-AB4U6ZNI.js → chunk-ZNPKDCZR.js} +2 -2
  373. package/dist/cli/chunks/{chunk-WYMGK5DX.js → chunk-ZZDIMOOV.js} +2 -2
  374. package/dist/cli/chunks/ci-464KPQNP.js +81 -0
  375. package/dist/cli/chunks/{ci-output-LK3MBXLZ.js → ci-output-I7FX2RSO.js} +2 -2
  376. package/dist/cli/chunks/{circuit-breaker-7AIXACR7.js → circuit-breaker-3FW237WW.js} +2 -2
  377. package/dist/cli/chunks/{claude-flow-setup-UA7EO6VN.js → claude-flow-setup-6JKMBPGU.js} +2 -2
  378. package/dist/cli/chunks/client-7E4LM2WW.js +2 -0
  379. package/dist/cli/chunks/{cline-installer-YDDCKKEV.js → cline-installer-UWFHT6VY.js} +2 -2
  380. package/dist/cli/chunks/{code-URB7UAKW.js → code-KQSUT3FS.js} +29 -29
  381. package/dist/cli/chunks/{code-index-extractor-BL6HWH4Q.js → code-index-extractor-PABBNUSC.js} +2 -2
  382. package/dist/cli/chunks/{codex-installer-2AVEO4EA.js → codex-installer-CQ24DTP5.js} +2 -2
  383. package/dist/cli/chunks/{completions-RCKBSSSS.js → completions-7RWHAUAR.js} +2 -2
  384. package/dist/cli/chunks/complexity-analyzer-XPOAF33E.js +2 -0
  385. package/dist/cli/chunks/{continuedev-installer-VOTCEBFH.js → continuedev-installer-V4F2FIZP.js} +2 -2
  386. package/dist/cli/chunks/{copilot-installer-NVTGLZX3.js → copilot-installer-JMICURQB.js} +2 -2
  387. package/dist/cli/chunks/core-handlers-IFG3757P.js +2 -0
  388. package/dist/cli/chunks/cost-tracker-5OFHEYFJ.js +2 -0
  389. package/dist/cli/chunks/{coverage-ZTPJWXWE.js → coverage-QKN57JDS.js} +3 -3
  390. package/dist/cli/chunks/cross-domain-router-EK7W4PGP.js +2 -0
  391. package/dist/cli/chunks/{cursor-installer-CMGJQMHX.js → cursor-installer-GBJ7YXSM.js} +2 -2
  392. package/dist/cli/chunks/{daemon-V456IWR3.js → daemon-GKP7CMEK.js} +3 -3
  393. package/dist/cli/chunks/{daemon-Y2I3YVIU.js → daemon-IAVSO6HK.js} +4 -4
  394. package/dist/cli/chunks/{dag-attention-scheduler-ZCBBOD3D.js → dag-attention-scheduler-S225TCI7.js} +2 -2
  395. package/dist/cli/chunks/{detect-2GHEA4A3.js → detect-IUYH422U.js} +2 -2
  396. package/dist/cli/chunks/{dist-node-44AGYJCH.js → dist-node-2YRE6A7C.js} +2 -2
  397. package/dist/cli/chunks/{domain-handler-IDLIEP6X.js → domain-handler-PL2TZC6H.js} +2 -2
  398. package/dist/cli/chunks/domain-plugins-HCGLXKIT.js +2 -0
  399. package/dist/cli/chunks/{domain-transfer-KLEXGIRF.js → domain-transfer-KQJRUPXA.js} +2 -2
  400. package/dist/cli/chunks/dream-NFSCSLY7.js +2 -0
  401. package/dist/cli/chunks/{embed-and-insert-pattern-DUW6K35A.js → embed-and-insert-pattern-ZPAG7235.js} +2 -2
  402. package/dist/cli/chunks/eval-WCK7KNFN.js +17 -0
  403. package/dist/cli/chunks/{experience-capture-middleware-CJJJN7CF.js → experience-capture-middleware-2MSQWSAR.js} +3 -3
  404. package/dist/cli/chunks/{fast-paths-LGLLKX6P.js → fast-paths-VYOSIBKF.js} +2 -2
  405. package/dist/cli/chunks/{feature-flags-33D3I4DD.js → feature-flags-UJRHFBRX.js} +2 -2
  406. package/dist/cli/chunks/{feature-flags-QL4NCEGW.js → feature-flags-WCFUKHNQ.js} +2 -2
  407. package/dist/cli/chunks/{file-discovery-GKCYJPFZ.js → file-discovery-JDGL4ZWS.js} +2 -2
  408. package/dist/cli/chunks/fleet-ROXVMZ2F.js +43 -0
  409. package/dist/cli/chunks/{gnn-wrapper-ELSGT67Z.js → gnn-wrapper-NIO4ZCO3.js} +2 -2
  410. package/dist/cli/chunks/{heartbeat-handler-ZUI3DOOP.js → heartbeat-handler-PI42WD3C.js} +4 -4
  411. package/dist/cli/chunks/heartbeat-scheduler-ZATCDJDK.js +2 -0
  412. package/dist/cli/chunks/hnsw-adapter-WXQABRCA.js +2 -0
  413. package/dist/cli/chunks/hnsw-index-TPSWLEA5.js +2 -0
  414. package/dist/cli/chunks/{hnsw-legacy-bridge-EZMM5JWL.js → hnsw-legacy-bridge-YLC7SPK2.js} +2 -2
  415. package/dist/cli/chunks/{hnswlib-node-G4CE3EOS.js → hnswlib-node-LG6OS3B7.js} +2 -2
  416. package/dist/cli/chunks/{hooks-LCVXXA55.js → hooks-WVALP5GX.js} +10 -10
  417. package/dist/cli/chunks/{hypergraph-engine-6Z7RQ3HI.js → hypergraph-engine-GJEMW3EG.js} +2 -2
  418. package/dist/cli/chunks/{hypergraph-handler-PLI2GYPK.js → hypergraph-handler-BLF6LXEV.js} +3 -3
  419. package/dist/cli/chunks/impact-analyzer-HNIU45P5.js +2 -0
  420. package/dist/cli/chunks/{init-handler-7VH3QJ5Y.js → init-handler-K25RWRYY.js} +6 -6
  421. package/dist/cli/chunks/init-wizard-JUIPBMHG.js +2 -0
  422. package/dist/cli/chunks/kernel-5BOZQ754.js +2 -0
  423. package/dist/cli/chunks/{kilocode-installer-U3MW62DE.js → kilocode-installer-BXN6WZ7G.js} +2 -2
  424. package/dist/cli/chunks/{kiro-installer-PPEAC44T.js → kiro-installer-PM362DLN.js} +12 -12
  425. package/dist/cli/chunks/knowledge-graph-EWDAENWM.js +2 -0
  426. package/dist/cli/chunks/learning-CPERDDRG.js +122 -0
  427. package/dist/cli/chunks/llm-router-GOAV5FPI.js +37 -0
  428. package/dist/cli/chunks/llm-router-service-3YT7JGBS.js +2 -0
  429. package/dist/cli/chunks/{load-VO7ABNHV.js → load-2BG6SHAK.js} +2 -2
  430. package/dist/cli/chunks/load-test-BP2CPLIV.js +2 -0
  431. package/dist/cli/chunks/{mcp-THXEINCL.js → mcp-5TTB37DC.js} +2 -2
  432. package/dist/cli/chunks/{memory-FZTT7ADM.js → memory-4NHBYT6S.js} +5 -5
  433. package/dist/cli/chunks/memory-backend-4PYQBPRM.js +2 -0
  434. package/dist/cli/chunks/memory-handlers-2B27NITS.js +2 -0
  435. package/dist/cli/chunks/multi-model-executor-KCWSGCDT.js +14 -0
  436. package/dist/cli/chunks/{opencode-installer-GQ7J5SBG.js → opencode-installer-ATZLLK74.js} +2 -2
  437. package/dist/cli/chunks/{orchestrator-66JK2OS5.js → orchestrator-RKB7XJRG.js} +19 -19
  438. package/dist/cli/chunks/pattern-null-store-OYOQOV2O.js +2 -0
  439. package/dist/cli/chunks/{pattern-usage-recorder-O6XHM2G5.js → pattern-usage-recorder-7VE4XDAI.js} +2 -2
  440. package/dist/cli/chunks/pipeline-LQZSNDD2.js +19 -0
  441. package/dist/cli/chunks/{platform-Q7UH7FZQ.js → platform-OD5H5U6G.js} +2 -2
  442. package/dist/cli/chunks/{plugin-7OFLNGOS.js → plugin-EJ6K2MGU.js} +2 -2
  443. package/dist/cli/chunks/{prime-radiant-advanced-wasm-OSRDK2FW.js → prime-radiant-advanced-wasm-OIHTKJMN.js} +2 -2
  444. package/dist/cli/chunks/protocol-executor-3ATJTXWG.js +2 -0
  445. package/dist/cli/chunks/{protocol-handler-WLYTX6FS.js → protocol-handler-NRBROAU7.js} +2 -2
  446. package/dist/cli/chunks/{prove-QVNE4V3J.js → prove-EJOGEGD3.js} +2 -2
  447. package/dist/cli/chunks/qe-reasoning-bank-LLMYZT4X.js +2 -0
  448. package/dist/cli/chunks/{quality-DNE2RKE5.js → quality-E55UC73D.js} +2 -2
  449. package/dist/cli/chunks/{quality-gate-2K35GCSI.js → quality-gate-OIQATNT3.js} +3 -3
  450. package/dist/cli/chunks/queen-coordinator-RN7L6KG5.js +2 -0
  451. package/dist/cli/chunks/{real-embeddings-SF42ML7G.js → real-embeddings-FPFFNOSZ.js} +2 -2
  452. package/dist/cli/chunks/ref-validation-OPO6J7OL.js +2 -0
  453. package/dist/cli/chunks/{roocode-installer-NCEZPF5L.js → roocode-installer-ODY5KRWU.js} +2 -2
  454. package/dist/cli/chunks/router-MDHITQ2V.js +2 -0
  455. package/dist/cli/chunks/routing-feedback-5XLNJ3Y3.js +2 -0
  456. package/dist/cli/chunks/{routing-handler-4MXXZRYP.js → routing-handler-KQM6VWLC.js} +4 -4
  457. package/dist/cli/chunks/{ruvector-commands-WDFMMCMK.js → ruvector-commands-U2GVV6PF.js} +2 -2
  458. package/dist/cli/chunks/rvf-dual-writer-JBW4O3II.js +2 -0
  459. package/dist/cli/chunks/rvf-migration-adapter-BPPQL4XJ.js +2 -0
  460. package/dist/cli/chunks/{rvf-migration-coordinator-JT7ZCJY7.js → rvf-migration-coordinator-V2GHCJKN.js} +2 -2
  461. package/dist/cli/chunks/rvf-native-adapter-S4562CG5.js +2 -0
  462. package/dist/cli/chunks/rvf-store-integrity-KMIHD3LP.js +2 -0
  463. package/dist/cli/chunks/safe-db-FIRHSXVF.js +2 -0
  464. package/dist/cli/chunks/schedule-RVXFB4HK.js +2 -0
  465. package/dist/cli/chunks/scheduler-IKKAMAOO.js +2 -0
  466. package/dist/cli/chunks/{security-CJJ3WJSB.js → security-P5NM353C.js} +3 -3
  467. package/dist/cli/chunks/{shared-rvf-adapter-6RGCTLHD.js → shared-rvf-adapter-LVIUOO4S.js} +2 -2
  468. package/dist/cli/chunks/{shared-rvf-dual-writer-KIA6Q6MT.js → shared-rvf-dual-writer-2CSG7C4W.js} +2 -2
  469. package/dist/cli/chunks/sqlite-persistence-SQ3HCUQ7.js +2 -0
  470. package/dist/cli/chunks/{status-handler-BADQV2KA.js → status-handler-6TU6O37R.js} +2 -2
  471. package/dist/cli/chunks/{structural-health-VMYEYRZG.js → structural-health-KBIJSTXJ.js} +2 -2
  472. package/dist/cli/chunks/{sync-PXLROLHB.js → sync-LNHI5SB7.js} +2 -2
  473. package/dist/cli/chunks/{sync-ULY7T5II.js → sync-UHOX6RJW.js} +2 -2
  474. package/dist/cli/chunks/task-handler-AVDHMLGI.js +49 -0
  475. package/dist/cli/chunks/task-handlers-KYK4VTRA.js +9 -0
  476. package/dist/cli/chunks/{test-WCLURQUT.js → test-DHAAI3DU.js} +4 -4
  477. package/dist/cli/chunks/test-scheduling-XDBZ3QC2.js +15 -0
  478. package/dist/cli/chunks/{token-bootstrap-GTI24JAL.js → token-bootstrap-GUTTLPZX.js} +2 -2
  479. package/dist/cli/chunks/{token-usage-DRVG6PKO.js → token-usage-Q2YG5YQN.js} +2 -2
  480. package/dist/cli/chunks/{transformers-IMDDAMYQ.js → transformers-F5UQTQCY.js} +2 -2
  481. package/dist/cli/chunks/{tree-sitter-wasm-parser-WBZIHVFA.js → tree-sitter-wasm-parser-DEGOHS6F.js} +2 -2
  482. package/dist/cli/chunks/types-JQ7EQO5Q.js +2 -0
  483. package/dist/cli/chunks/unified-memory-CXHLHB5I.js +2 -0
  484. package/dist/cli/chunks/unified-memory-hnsw-I7WAE54M.js +2 -0
  485. package/dist/cli/chunks/unified-persistence-6CPF65WI.js +2 -0
  486. package/dist/cli/chunks/{upgrade-6ALSDWDD.js → upgrade-TJRVGHGD.js} +2 -2
  487. package/dist/cli/chunks/{validate-XF4ZG3LC.js → validate-BWPCVHBN.js} +2 -2
  488. package/dist/cli/chunks/{validate-swarm-P5TAFRDA.js → validate-swarm-QVVKCQLP.js} +2 -2
  489. package/dist/cli/chunks/{vibium-2XDXKNKZ.js → vibium-ZFATIWHO.js} +2 -2
  490. package/dist/cli/chunks/visual-security-GNPHME5H.js +2 -0
  491. package/dist/cli/chunks/{web-tree-sitter-4JVRQPX5.js → web-tree-sitter-KPLY7ONR.js} +2 -2
  492. package/dist/cli/chunks/{windsurf-installer-WYJXVDO5.js → windsurf-installer-H7XM7ISA.js} +2 -2
  493. package/dist/cli/chunks/{witness-chain-RPZ2SE2V.js → witness-chain-RRN6NDCH.js} +2 -2
  494. package/dist/cli/chunks/witness-chain-VT4UHHBR.js +2 -0
  495. package/dist/cli/chunks/{witness-key-manager-LXG2VBQQ.js → witness-key-manager-DFRL42GE.js} +2 -2
  496. package/dist/cli/chunks/workflow-2ZQO6WYI.js +51 -0
  497. package/dist/cli/chunks/workflow-orchestrator-DB3HIECD.js +2 -0
  498. package/dist/cli/chunks/{wrappers-DIJNNFU6.js → wrappers-SUS6XEJD.js} +2 -2
  499. package/dist/cli/commands/ci.js +54 -28
  500. package/dist/cli/commands/code.js +6 -0
  501. package/dist/cli/commands/eval.js +3 -2
  502. package/dist/cli/commands/fleet.js +35 -16
  503. package/dist/cli/commands/learning-snapshot.d.ts +38 -0
  504. package/dist/cli/commands/learning-snapshot.js +171 -0
  505. package/dist/cli/commands/learning.js +16 -64
  506. package/dist/cli/commands/llm-router.js +13 -12
  507. package/dist/cli/commands/pipeline.js +9 -0
  508. package/dist/cli/commands/workflow.js +9 -1
  509. package/dist/cli/handlers/task-handler.js +19 -9
  510. package/dist/cli/helpers/domain-plugins.d.ts +5 -0
  511. package/dist/cli/helpers/domain-plugins.js +11 -0
  512. package/dist/cli/index.js +17 -8
  513. package/dist/cli/utils/ci-config.d.ts +3 -0
  514. package/dist/context/sources/git-source.d.ts +2 -0
  515. package/dist/context/sources/git-source.js +9 -2
  516. package/dist/coordination/cancelled-task-settlement.d.ts +11 -0
  517. package/dist/coordination/cancelled-task-settlement.js +15 -0
  518. package/dist/coordination/consensus/providers/claude-provider.d.ts +2 -2
  519. package/dist/coordination/consensus/providers/claude-provider.js +18 -25
  520. package/dist/coordination/consensus/providers/gemini-provider.d.ts +14 -4
  521. package/dist/coordination/consensus/providers/gemini-provider.js +39 -36
  522. package/dist/coordination/consensus/providers/ollama-provider.d.ts +8 -7
  523. package/dist/coordination/consensus/providers/ollama-provider.js +16 -18
  524. package/dist/coordination/consensus/providers/openai-provider.d.ts +14 -4
  525. package/dist/coordination/consensus/providers/openai-provider.js +36 -34
  526. package/dist/coordination/consensus/providers/openrouter-provider.d.ts +5 -5
  527. package/dist/coordination/consensus/providers/openrouter-provider.js +64 -37
  528. package/dist/coordination/handlers/test-execution-handlers.js +5 -3
  529. package/dist/coordination/interfaces.d.ts +2 -2
  530. package/dist/coordination/protocol-executor.js +68 -9
  531. package/dist/coordination/queen-coordinator.js +10 -4
  532. package/dist/coordination/queen-event-handlers.js +17 -0
  533. package/dist/coordination/queen-task-management.js +25 -0
  534. package/dist/coordination/queen-types.d.ts +2 -0
  535. package/dist/coordination/task-executor.js +4 -8
  536. package/dist/coordination/workflow-composition.d.ts +19 -0
  537. package/dist/coordination/workflow-composition.js +114 -0
  538. package/dist/coordination/workflow-orchestrator.d.ts +3 -2
  539. package/dist/coordination/workflow-orchestrator.js +219 -85
  540. package/dist/coordination/workflow-types.d.ts +30 -1
  541. package/dist/coordination/yaml-pipeline-loader.js +9 -5
  542. package/dist/domains/chaos-resilience/services/chaos-engineer.js +2 -7
  543. package/dist/domains/code-intelligence/services/knowledge-graph.js +2 -7
  544. package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +9 -40
  545. package/dist/domains/constants.d.ts +1 -6
  546. package/dist/domains/constants.js +2 -6
  547. package/dist/domains/contract-testing/services/contract-validator.js +2 -7
  548. package/dist/domains/coverage-analysis/services/coverage-analyzer.js +2 -12
  549. package/dist/domains/coverage-analysis/services/gap-detector.js +2 -7
  550. package/dist/domains/defect-intelligence/services/defect-predictor.js +2 -12
  551. package/dist/domains/defect-intelligence/services/root-cause-analyzer.js +2 -7
  552. package/dist/domains/learning-optimization/services/learning-coordinator.js +2 -7
  553. package/dist/domains/quality-assessment/services/deployment-advisor.js +2 -7
  554. package/dist/domains/quality-assessment/services/quality-analyzer.js +2 -7
  555. package/dist/domains/requirements-validation/services/requirements-validator.js +2 -7
  556. package/dist/domains/security-compliance/services/scanners/sast-scanner.js +3 -7
  557. package/dist/domains/test-execution/services/flaky-detector.js +33 -3
  558. package/dist/domains/test-execution/services/retry-handler.js +22 -14
  559. package/dist/domains/test-execution/services/test-executor.js +42 -21
  560. package/dist/domains/test-generation/services/test-generator.js +2 -7
  561. package/dist/domains/visual-accessibility/services/visual-tester.js +2 -7
  562. package/dist/init/init-wizard-steps.js +1 -1
  563. package/dist/init/kiro-installer.js +9 -8
  564. package/dist/init/opencode-installer.js +1 -1
  565. package/dist/init/phases/07-hooks.js +4 -2
  566. package/dist/init/phases/12-verification.js +1 -1
  567. package/dist/init/settings-merge.d.ts +10 -3
  568. package/dist/init/settings-merge.js +40 -9
  569. package/dist/integrations/agentic-flow/model-router/types.js +6 -8
  570. package/dist/integrations/ruvector/brain-exporter.js +9 -15
  571. package/dist/integrations/ruvector/brain-rvf-exporter.js +17 -30
  572. package/dist/integrations/ruvector/brain-shared.d.ts +5 -1
  573. package/dist/integrations/ruvector/brain-shared.js +70 -4
  574. package/dist/integrations/ruvector/rvf-dual-writer.js +36 -15
  575. package/dist/integrations/ruvector/rvf-store-integrity.d.ts +14 -9
  576. package/dist/integrations/ruvector/rvf-store-integrity.js +39 -9
  577. package/dist/integrations/ruvector/shared-rvf-adapter.js +20 -23
  578. package/dist/kernel/memory-factory.js +14 -4
  579. package/dist/kernel/project-root.js +10 -8
  580. package/dist/kernel/unified-memory.js +1 -1
  581. package/dist/learning/local-judge-client.d.ts +6 -5
  582. package/dist/learning/local-judge-client.js +7 -6
  583. package/dist/learning/pattern-store.js +29 -11
  584. package/dist/mcp/bundle.js +488 -488
  585. package/dist/mcp/handlers/index.d.ts +1 -1
  586. package/dist/mcp/handlers/index.js +1 -1
  587. package/dist/mcp/handlers/pipeline-handlers.d.ts +31 -1
  588. package/dist/mcp/handlers/pipeline-handlers.js +63 -0
  589. package/dist/mcp/handlers/task-handlers.d.ts +1 -0
  590. package/dist/mcp/handlers/task-handlers.js +12 -4
  591. package/dist/mcp/protocol-server.d.ts +2 -0
  592. package/dist/mcp/protocol-server.js +104 -49
  593. package/dist/mcp/security/sampling-server.js +2 -1
  594. package/dist/mcp/tool-annotations.js +1 -1
  595. package/dist/mcp/tools/test-execution/schedule.js +7 -0
  596. package/dist/mcp/types.d.ts +5 -1
  597. package/dist/optimization/session-cache.d.ts +5 -0
  598. package/dist/optimization/session-cache.js +23 -0
  599. package/dist/routing/advisor/multi-model-executor.d.ts +4 -1
  600. package/dist/routing/advisor/multi-model-executor.js +8 -1
  601. package/dist/routing/free-tier/ladder.d.ts +2 -1
  602. package/dist/routing/free-tier/ladder.js +3 -2
  603. package/dist/routing/security/cyber-pin.d.ts +35 -11
  604. package/dist/routing/security/cyber-pin.js +76 -14
  605. package/dist/routing/value-score.js +1 -1
  606. package/dist/shared/git/index.d.ts +1 -0
  607. package/dist/shared/git/index.js +1 -0
  608. package/dist/shared/git/ref-validation.d.ts +20 -0
  609. package/dist/shared/git/ref-validation.js +43 -0
  610. package/dist/shared/llm/anthropic-params.d.ts +40 -0
  611. package/dist/shared/llm/anthropic-params.js +51 -0
  612. package/dist/shared/llm/cost-tracker.d.ts +15 -2
  613. package/dist/shared/llm/cost-tracker.js +62 -10
  614. package/dist/shared/llm/index.d.ts +2 -2
  615. package/dist/shared/llm/index.js +2 -2
  616. package/dist/shared/llm/interfaces.d.ts +1 -1
  617. package/dist/shared/llm/metrics/cost-metrics.js +5 -4
  618. package/dist/shared/llm/model-mapping.js +131 -0
  619. package/dist/shared/llm/model-registry.d.ts +37 -11
  620. package/dist/shared/llm/model-registry.js +393 -18
  621. package/dist/shared/llm/openai-params.d.ts +35 -0
  622. package/dist/shared/llm/openai-params.js +54 -0
  623. package/dist/shared/llm/provider-manager.js +4 -3
  624. package/dist/shared/llm/providers/azure-openai.d.ts +11 -0
  625. package/dist/shared/llm/providers/azure-openai.js +26 -15
  626. package/dist/shared/llm/providers/bedrock.js +11 -19
  627. package/dist/shared/llm/providers/claude.js +6 -29
  628. package/dist/shared/llm/providers/codex.js +4 -3
  629. package/dist/shared/llm/providers/gemini.d.ts +3 -2
  630. package/dist/shared/llm/providers/gemini.js +19 -10
  631. package/dist/shared/llm/providers/ollama.d.ts +2 -0
  632. package/dist/shared/llm/providers/ollama.js +30 -20
  633. package/dist/shared/llm/providers/openai.js +10 -17
  634. package/dist/shared/llm/providers/openrouter.d.ts +1 -1
  635. package/dist/shared/llm/providers/openrouter.js +57 -21
  636. package/dist/shared/llm/router/agent-router-config.js +33 -32
  637. package/dist/shared/llm/router/hybrid-router.js +21 -9
  638. package/dist/shared/llm/router/routing-rules.js +9 -8
  639. package/dist/shared/llm/router/types.js +81 -13
  640. package/dist/shared/llm/translation/message-formatter.js +4 -23
  641. package/dist/shared/vitest-json-report.d.ts +7 -7
  642. package/dist/shared/vitest-json-report.js +23 -14
  643. package/dist/test-scheduling/executors/vitest-executor.d.ts +7 -2
  644. package/dist/test-scheduling/executors/vitest-executor.js +157 -47
  645. package/dist/test-scheduling/git-aware/test-selector.js +3 -0
  646. package/dist/test-scheduling/phase-scheduler.d.ts +1 -0
  647. package/dist/test-scheduling/phase-scheduler.js +23 -1
  648. package/package.json +1 -1
  649. package/dist/cli/chunks/adapter-AKQYU6UH.js +0 -2
  650. package/dist/cli/chunks/aqe-learning-engine-MICRPL3N.js +0 -2
  651. package/dist/cli/chunks/base-DZK36ITB.js +0 -2
  652. package/dist/cli/chunks/brain-handler-H5OVZ22L.js +0 -90
  653. package/dist/cli/chunks/browser-workflow-ADK54DOE.js +0 -2
  654. package/dist/cli/chunks/chunk-42VSQ2MX.js +0 -4
  655. package/dist/cli/chunks/chunk-44WISFTU.js +0 -2
  656. package/dist/cli/chunks/chunk-4OUPCTBS.js +0 -16
  657. package/dist/cli/chunks/chunk-4TXAP3YH.js +0 -2
  658. package/dist/cli/chunks/chunk-4W7QVUNO.js +0 -2
  659. package/dist/cli/chunks/chunk-527HQAY7.js +0 -14
  660. package/dist/cli/chunks/chunk-5DFHE4H5.js +0 -180
  661. package/dist/cli/chunks/chunk-5P3G6ZW4.js +0 -2
  662. package/dist/cli/chunks/chunk-6F2RM6X2.js +0 -2
  663. package/dist/cli/chunks/chunk-7Y2CEXRS.js +0 -65
  664. package/dist/cli/chunks/chunk-AWNYEAGB.js +0 -2
  665. package/dist/cli/chunks/chunk-CBOPBYPU.js +0 -2
  666. package/dist/cli/chunks/chunk-FD2JFEQC.js +0 -2
  667. package/dist/cli/chunks/chunk-I4NDQGKP.js +0 -2
  668. package/dist/cli/chunks/chunk-L2GKMBDP.js +0 -2
  669. package/dist/cli/chunks/chunk-QLWNXBRU.js +0 -2
  670. package/dist/cli/chunks/chunk-R2AFVFRF.js +0 -2
  671. package/dist/cli/chunks/chunk-ROX7NLS4.js +0 -14
  672. package/dist/cli/chunks/chunk-T62DH4GG.js +0 -11
  673. package/dist/cli/chunks/chunk-UMNYF5EZ.js +0 -2
  674. package/dist/cli/chunks/chunk-UTVRQEZM.js +0 -54
  675. package/dist/cli/chunks/chunk-Y5SQBI2F.js +0 -2
  676. package/dist/cli/chunks/ci-YVKDQWIX.js +0 -81
  677. package/dist/cli/chunks/client-M72GXFVQ.js +0 -2
  678. package/dist/cli/chunks/complexity-analyzer-LEDG62YK.js +0 -2
  679. package/dist/cli/chunks/core-handlers-C32RAMVI.js +0 -2
  680. package/dist/cli/chunks/cost-tracker-GJIFB2BM.js +0 -2
  681. package/dist/cli/chunks/cross-domain-router-UGFUCPKC.js +0 -2
  682. package/dist/cli/chunks/dream-UFBBXY5W.js +0 -2
  683. package/dist/cli/chunks/eval-PR6YWDFM.js +0 -17
  684. package/dist/cli/chunks/fleet-QNT6X2YI.js +0 -43
  685. package/dist/cli/chunks/heartbeat-scheduler-VQWHSGTY.js +0 -2
  686. package/dist/cli/chunks/hnsw-adapter-BS3NXWGU.js +0 -2
  687. package/dist/cli/chunks/hnsw-index-JP26B4HW.js +0 -2
  688. package/dist/cli/chunks/impact-analyzer-WRE4CWPJ.js +0 -2
  689. package/dist/cli/chunks/init-wizard-OFOEYB75.js +0 -2
  690. package/dist/cli/chunks/kernel-MXNFWNUD.js +0 -2
  691. package/dist/cli/chunks/knowledge-graph-7JE2TVKJ.js +0 -2
  692. package/dist/cli/chunks/learning-7B5NITDV.js +0 -122
  693. package/dist/cli/chunks/llm-router-BNEPT5OB.js +0 -37
  694. package/dist/cli/chunks/llm-router-service-GTDVDKSU.js +0 -2
  695. package/dist/cli/chunks/load-test-JZ4CLSBF.js +0 -2
  696. package/dist/cli/chunks/memory-backend-Q54CC5A5.js +0 -2
  697. package/dist/cli/chunks/memory-handlers-IIBJXKHZ.js +0 -2
  698. package/dist/cli/chunks/multi-model-executor-HEDVOZ6X.js +0 -14
  699. package/dist/cli/chunks/pattern-null-store-W33O7FYO.js +0 -2
  700. package/dist/cli/chunks/pipeline-UOG6UO6D.js +0 -19
  701. package/dist/cli/chunks/protocol-executor-VGN4M7XY.js +0 -2
  702. package/dist/cli/chunks/qe-reasoning-bank-7VB5LJGS.js +0 -2
  703. package/dist/cli/chunks/queen-coordinator-HIDMJMMG.js +0 -2
  704. package/dist/cli/chunks/router-CTIJS4D7.js +0 -2
  705. package/dist/cli/chunks/routing-feedback-LFYYZS5J.js +0 -2
  706. package/dist/cli/chunks/rvf-dual-writer-MNPMIWVM.js +0 -2
  707. package/dist/cli/chunks/rvf-migration-adapter-DXOKSSNW.js +0 -2
  708. package/dist/cli/chunks/rvf-native-adapter-PZKUKA7R.js +0 -2
  709. package/dist/cli/chunks/rvf-store-integrity-Q3FGYKFT.js +0 -2
  710. package/dist/cli/chunks/safe-db-73BLFV2C.js +0 -2
  711. package/dist/cli/chunks/schedule-YVTGTTI4.js +0 -2
  712. package/dist/cli/chunks/scheduler-5DSAFIRQ.js +0 -2
  713. package/dist/cli/chunks/sqlite-persistence-LRG4IPCU.js +0 -2
  714. package/dist/cli/chunks/task-handler-L7E2I267.js +0 -49
  715. package/dist/cli/chunks/task-handlers-6DPKE4AK.js +0 -9
  716. package/dist/cli/chunks/test-scheduling-4CNJA6TW.js +0 -15
  717. package/dist/cli/chunks/types-TXMY5M2K.js +0 -2
  718. package/dist/cli/chunks/unified-memory-VBQ572X4.js +0 -2
  719. package/dist/cli/chunks/unified-memory-hnsw-J3L74ZRY.js +0 -2
  720. package/dist/cli/chunks/unified-persistence-EM2VYRTQ.js +0 -2
  721. package/dist/cli/chunks/visual-security-GX4S7K6O.js +0 -2
  722. package/dist/cli/chunks/witness-chain-QGKMHCNW.js +0 -2
  723. package/dist/cli/chunks/workflow-2OYNO7UU.js +0 -51
  724. package/dist/cli/chunks/workflow-orchestrator-KWHIJMFV.js +0 -2
@@ -0,0 +1,51 @@
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.4");process.exit(0)}
2
+ import"./chunk-TWAWHOP7.js";import{b as $}from"./chunk-3X3DJZJJ.js";import{d as C}from"./chunk-GPLQ6DOK.js";import{b as k,c as W,d as v}from"./chunk-OSLYSG3B.js";import{c as b}from"./chunk-DHJPWQBR.js";import"./chunk-STM3UDNO.js";import"./chunk-G6T45OIC.js";import"./chunk-TT23RRB7.js";import{Command as D}from"commander";import o from"chalk";function O(w,i){let h=w.indexOf("=");return h>0&&(i[w.substring(0,h)]=w.substring(h+1)),i}function V(w,i,h){let m=new D("workflow").description("Manage QE workflows and pipelines (ADR-041)");return m.command("run <file>").description("Execute a QE pipeline from YAML file").option("-w, --watch","Watch execution progress").option("-v, --verbose","Show detailed output").option("--params <json>","Additional parameters as JSON","{}").action(async(n,t)=>{if(!await h())return;let u=(await import("path")).resolve(n);try{console.log(o.blue(`
3
+ Running workflow from: ${n}
4
+ `));let l=k(u);if(!l.success||!l.workflow){console.log(o.red("Failed to parse pipeline:"));for(let g of l.errors)console.log(o.red(` ${g}`));await i(1)}let f={...b(t.params,"params")};if(l.pipeline){for(let g of l.pipeline.stages)if(g.params)for(let[y,p]of Object.entries(g.params))f[y]=p}if(!w.workflowOrchestrator.getWorkflow(l.workflow.id)){let g=w.workflowOrchestrator.registerWorkflow(l.workflow);g.success||(console.log(o.red(`Failed to register workflow: ${g.error.message}`)),await i(1))}let c=await w.workflowOrchestrator.executeWorkflow(l.workflow.id,f);if(!c.success){console.log(o.red(`Failed to start workflow: ${c.error.message}`)),await i(1);return}let a=c.value;if(console.log(o.cyan(` Execution ID: ${a}`)),console.log(o.gray(` Workflow: ${l.workflow.name}`)),console.log(o.gray(` Stages: ${l.workflow.steps.length}`)),console.log(""),t.watch){console.log(o.blue(`Workflow Progress:
5
+ `));let g,y=Date.now();for(;;){let d=w.workflowOrchestrator.getWorkflowStatus(a);if(!d)break;if(!g||g.progress!==d.progress||g.status!==d.status||JSON.stringify(g.currentSteps)!==JSON.stringify(d.currentSteps)){process.stdout.write("\r\x1B[K");let S="\u2588".repeat(Math.floor(d.progress/5))+"\u2591".repeat(20-Math.floor(d.progress/5)),R=d.status==="completed"?o.green:d.status==="failed"?o.red:d.status==="running"?o.yellow:o.gray;console.log(` [${S}] ${d.progress}% - ${R(d.status)}`),d.currentSteps.length>0&&t.verbose&&console.log(o.gray(` Running: ${d.currentSteps.join(", ")}`)),g=d}if(d.status==="completed"||d.status==="failed"||d.status==="cancelled")break;await new Promise(S=>setTimeout(S,500))}let p=w.workflowOrchestrator.getWorkflowStatus(a);if(p){console.log("");let d=p.duration||Date.now()-y;p.status==="completed"?(console.log(o.green("Workflow completed successfully")),console.log(o.gray(` Duration: ${$(d)}`)),console.log(o.gray(` Completed: ${p.completedSteps.length} stages`)),p.skippedSteps.length>0&&console.log(o.yellow(` Skipped: ${p.skippedSteps.length} stages`))):p.status==="failed"?(console.log(o.red("Workflow failed")),console.log(o.red(` Error: ${p.error}`)),console.log(o.gray(` Failed stages: ${p.failedSteps.join(", ")}`))):console.log(o.yellow(`Workflow ${p.status}`))}console.log(""),await i(p?.status==="completed"?0:1);return}else console.log(o.green("Workflow execution started")),console.log(o.gray(` Use 'aqe workflow status ${a}' to check progress`));console.log(""),await i(0)}catch(l){console.error(o.red(`
6
+ Failed to run workflow:`),l),await i(1)}}),m.command("schedule <file>").description("Schedule a QE pipeline for recurring execution").option("-c, --cron <expression>","Override cron schedule from file").option("-e, --enable","Enable immediately",!0).action(async(n,t)=>{if(!await h())return;let u=(await import("path")).resolve(n);try{console.log(o.blue(`
7
+ Scheduling workflow from: ${n}
8
+ `));let l=k(u);if(!l.success||!l.pipeline||!l.workflow){console.log(o.red("Failed to parse pipeline:"));for(let a of l.errors)console.log(o.red(` ${a}`));await i(1)}let s=t.cron||l.pipeline.schedule;if(s||(console.log(o.red("No schedule specified")),console.log(o.gray(' Add "schedule" field to YAML or use --cron option')),await i(1)),!w.workflowOrchestrator.getWorkflow(l.workflow.id)){let a=w.workflowOrchestrator.registerWorkflow(l.workflow);a.success||(console.log(o.red(`Failed to register workflow: ${a.error.message}`)),await i(1))}let r=C({workflowId:l.workflow.id,pipelinePath:u,schedule:s,scheduleDescription:v(s),enabled:t.enable!==!1});await w.persistentScheduler.saveSchedule(r);let c={id:r.id,workflowId:r.workflowId,pipelinePath:r.pipelinePath,schedule:r.schedule,scheduleDescription:r.scheduleDescription,nextRun:new Date(r.nextRun),enabled:r.enabled,createdAt:new Date(r.createdAt)};w.scheduledWorkflows.set(c.id,c),console.log(o.green("Workflow scheduled successfully (persisted to disk)")),console.log(o.cyan(` Schedule ID: ${r.id}`)),console.log(o.gray(` Workflow: ${l.workflow.name}`)),console.log(o.gray(` Schedule: ${s}`)),console.log(o.gray(` Description: ${r.scheduleDescription}`)),console.log(o.gray(` Next run: ${r.nextRun}`)),console.log(o.gray(` Status: ${r.enabled?o.green("enabled"):o.yellow("disabled")}`)),console.log(o.yellow(`
9
+ Note: Scheduled workflows require daemon mode to run automatically`)),console.log(o.gray(" Start daemon with: npx aqe daemon start")),console.log(o.gray(" Schedules are persisted to: ~/.aqe/schedules.json")),console.log(""),await i(0)}catch(l){console.error(o.red(`
10
+ Failed to schedule workflow:`),l),await i(1)}}),m.command("list").description("List workflows").option("-s, --scheduled","Show only scheduled workflows").option("-a, --active","Show only active executions").option("--all","Show all workflows (registered + scheduled + active)").action(async n=>{if(await h())try{if(console.log(o.blue(`
11
+ Workflows
12
+ `)),n.scheduled||n.all){console.log(o.cyan("Scheduled Workflows:"));let t=await w.persistentScheduler.getSchedules();if(t.length===0)console.log(o.gray(` No scheduled workflows
13
+ `));else for(let e of t){let u=e.enabled?o.green("*"):o.gray("o");console.log(` ${u} ${o.white(e.workflowId)}`),console.log(o.gray(` ID: ${e.id}`)),console.log(o.gray(` Schedule: ${e.schedule} (${e.scheduleDescription})`)),console.log(o.gray(` File: ${e.pipelinePath}`)),console.log(o.gray(` Next run: ${e.nextRun}`)),e.lastRun&&console.log(o.gray(` Last run: ${e.lastRun}`)),console.log(o.gray(` Status: ${e.enabled?o.green("enabled"):o.yellow("disabled")}`)),console.log("")}}if(n.active||n.all){console.log(o.cyan("Active Executions:"));let t=w.workflowOrchestrator.getActiveExecutions();if(t.length===0)console.log(o.gray(` No active executions
14
+ `));else for(let e of t){let u=e.status==="running"?o.yellow:o.gray;console.log(` ${u("*")} ${o.white(e.workflowName)}`),console.log(o.gray(` Execution: ${e.executionId}`)),console.log(o.gray(` Status: ${e.status}`)),console.log(o.gray(` Progress: ${e.progress}%`)),e.currentSteps.length>0&&console.log(o.gray(` Current: ${e.currentSteps.join(", ")}`)),console.log("")}}if(!n.scheduled&&!n.active||n.all){console.log(o.cyan("Registered Workflows:"));let t=w.workflowOrchestrator.listWorkflows();if(t.length===0)console.log(o.gray(` No registered workflows
15
+ `));else for(let e of t)console.log(` ${o.white(e.name)} (${o.cyan(e.id)})`),console.log(o.gray(` Version: ${e.version}`)),console.log(o.gray(` Steps: ${e.stepCount}`)),e.description&&console.log(o.gray(` ${e.description}`)),e.tags&&e.tags.length>0&&console.log(o.gray(` Tags: ${e.tags.join(", ")}`)),e.triggers&&e.triggers.length>0&&console.log(o.gray(` Triggers: ${e.triggers.join(", ")}`)),console.log("")}await i(0)}catch(t){console.error(o.red(`
16
+ Failed to list workflows:`),t),await i(1)}}),m.command("validate <file>").description("Validate a pipeline YAML file").option("-v, --verbose","Show detailed validation results").action(async(n,t)=>{let e=await import("fs"),l=(await import("path")).resolve(n);try{console.log(o.blue(`
17
+ Validating pipeline: ${n}
18
+ `)),e.existsSync(l)||(console.log(o.red(`File not found: ${l}`)),await i(1));let s=k(l);if(!s.success){console.log(o.red("Parse errors:"));for(let r of s.errors)console.log(o.red(` * ${r}`));await i(1)}let f=W(s.pipeline);if(f.valid)console.log(o.green(`Pipeline is valid
19
+ `));else{console.log(o.red(`Pipeline has errors:
20
+ `));for(let r of f.errors)console.log(o.red(` x [${r.path}] ${r.message}`));console.log("")}if(f.warnings.length>0){console.log(o.yellow("Warnings:"));for(let r of f.warnings)console.log(o.yellow(` * [${r.path}] ${r.message}`));console.log("")}if(t.verbose&&s.pipeline){let r=s.pipeline;console.log(o.cyan(`Pipeline Details:
21
+ `)),console.log(o.gray(` Name: ${r.name}`)),console.log(o.gray(` Version: ${r.version||"1.0.0"}`)),r.description&&console.log(o.gray(` Description: ${r.description}`)),r.schedule&&console.log(o.gray(` Schedule: ${r.schedule} (${v(r.schedule)})`)),r.tags&&r.tags.length>0&&console.log(o.gray(` Tags: ${r.tags.join(", ")}`)),console.log(o.cyan(`
22
+ Stages:`));for(let c=0;c<r.stages.length;c++){let a=r.stages[c];console.log(` ${c+1}. ${o.white(a.name)}`),console.log(o.gray(` Command: ${a.command}`)),a.params&&console.log(o.gray(` Params: ${JSON.stringify(a.params)}`)),a.depends_on&&a.depends_on.length>0&&console.log(o.gray(` Depends on: ${a.depends_on.join(", ")}`)),a.timeout&&console.log(o.gray(` Timeout: ${a.timeout}s`))}if(r.triggers&&r.triggers.length>0){console.log(o.cyan(`
23
+ Triggers:`));for(let c of r.triggers)console.log(o.gray(` * ${c.event}`)),c.branches&&console.log(o.gray(` Branches: ${c.branches.join(", ")}`))}}if(t.verbose&&s.workflow){console.log(o.cyan(`
24
+ Converted Workflow ID: `)+o.white(s.workflow.id)),console.log(o.gray(` Steps: ${s.workflow.steps.length}`));for(let r of s.workflow.steps)console.log(o.gray(` * ${r.id}: ${r.domain}.${r.action}`))}console.log(""),await i(f.valid?0:1)}catch(s){console.error(o.red(`
25
+ Validation failed:`),s),await i(1)}}),m.command("status <executionId>").description("Get workflow execution status").option("-v, --verbose","Show detailed step results").action(async(n,t)=>{if(await h())try{let e=w.workflowOrchestrator.getWorkflowStatus(n);if(!e){console.log(o.red(`
26
+ Execution not found: ${n}
27
+ `)),await i(1);return}console.log(o.blue(`
28
+ Workflow Execution Status
29
+ `));let u=e.status==="completed"?o.green:e.status==="failed"?o.red:e.status==="running"?o.yellow:o.gray;console.log(` Execution ID: ${o.cyan(e.executionId)}`),console.log(` Workflow: ${o.white(e.workflowName)} (${e.workflowId})`),console.log(` Status: ${u(e.status)}`),console.log(` Progress: ${e.progress}%`),console.log(` Started: ${e.startedAt.toISOString()}`),e.completedAt&&console.log(` Completed: ${e.completedAt.toISOString()}`),e.duration&&console.log(` Duration: ${$(e.duration)}`),console.log(o.cyan(`
30
+ Step Summary:`)),console.log(o.gray(` Completed: ${e.completedSteps.length}`)),console.log(o.gray(` Skipped: ${e.skippedSteps.length}`)),console.log(o.gray(` Failed: ${e.failedSteps.length}`)),e.currentSteps.length>0&&console.log(o.yellow(` Running: ${e.currentSteps.join(", ")}`)),e.error&&console.log(o.red(`
31
+ Error: ${e.error}`));for(let l of e.parallelCompositionReceipts??[]){console.log(` Composition ${l.groupId}: ${l.disposition}`);for(let s of l.conflicts)console.log(` ${s.kind}: ${s.stepA}.${s.pathA} / ${s.stepB}.${s.pathB}`)}if(t.verbose&&e.stepResults.size>0){console.log(o.cyan(`
32
+ Step Results:`));for(let[l,s]of e.stepResults){let f=s.status==="completed"?o.green:s.status==="failed"?o.red:s.status==="skipped"?o.yellow:o.gray;console.log(` ${f("*")} ${o.white(l)}: ${f(s.status)}`),s.duration&&console.log(o.gray(` Duration: ${$(s.duration)}`)),s.error&&console.log(o.red(` Error: ${s.error}`)),s.retryCount&&s.retryCount>0&&console.log(o.yellow(` Retries: ${s.retryCount}`))}}console.log(""),await i(0)}catch(e){console.error(o.red(`
33
+ Failed to get workflow status:`),e),await i(1)}}),m.command("cancel <executionId>").description("Cancel a running workflow").action(async n=>{if(await h())try{let t=await w.workflowOrchestrator.cancelWorkflow(n);t.success?console.log(o.green(`
34
+ Workflow cancelled: ${n}
35
+ `)):console.log(o.red(`
36
+ Failed to cancel workflow: ${t.error.message}
37
+ `)),await i(t.success?0:1)}catch(t){console.error(o.red(`
38
+ Failed to cancel workflow:`),t),await i(1)}}),m.command("browser-list").description("List available browser workflow templates").action(async()=>{try{let{BrowserWorkflowTool:n}=await import("./browser-workflow-2FZTKDUL.js"),e=await new n().invoke({});if(e.success&&e.data){console.log(o.blue(`
39
+ Browser Workflow Templates:
40
+ `));for(let u of e.data.availableTemplates)console.log(` ${o.cyan(u)}`);console.log("")}else console.log(o.red(`Failed: ${e.error||"Unknown error"}`));await i(0)}catch(n){console.error(o.red(`
41
+ Failed:`),n),await i(1)}}),m.command("browser-load [template]").description("Load and validate a browser workflow template or inline YAML").option("--yaml <yaml>","Inline YAML workflow definition").option("-v, --var <key=value>","Variable override (repeatable)",O,{}).option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(n,t)=>{try{let{BrowserWorkflowTool:e}=await import("./browser-workflow-2FZTKDUL.js"),{writeOutput:u,toJSON:l}=await import("./ci-output-I7FX2RSO.js"),s=new e,f={variables:t.var||{}};if(t.yaml)f.workflowYaml=t.yaml;else if(n)if(n.endsWith(".yaml")||n.endsWith(".yml")){let c=await import("fs"),g=(await import("path")).resolve(n);c.existsSync(g)||(console.log(o.red(`
42
+ File not found: ${g}
43
+ `)),await i(1)),f.workflowYaml=c.readFileSync(g,"utf-8")}else f.templateName=n;else console.log(o.red(`
44
+ Provide a template name or --yaml. Use "workflow browser-list" to see templates.
45
+ `)),await i(1);console.log(o.blue(`
46
+ Loading browser workflow${n?": "+n:""}...
47
+ `));let r=await s.invoke(f);if(r.success&&r.data){let c=r.data;if(t.format==="json")u(l(c),t.output);else{if(console.log(o.green(` Workflow: ${c.workflowName}`)),c.description&&console.log(o.gray(` ${c.description}`)),console.log(` Source: ${o.cyan(c.source)}`),console.log(` Steps: ${o.white(c.steps.length)}`),c.steps.length>0){console.log(o.cyan(`
48
+ Steps:`));for(let a of c.steps){let g=a.optional?o.gray(" (optional)"):"",y=a.assertionCount>0?o.gray(` [${a.assertionCount} assertions]`):"";console.log(` ${o.white(a.name)} \u2014 ${a.action}${g}${y}`)}}if(c.variables.defined.length>0){console.log(o.cyan(`
49
+ Variables:`));for(let a of c.variables.defined){let g=a.required?o.red("*"):"",y=a.hasDefault?o.gray(" (has default)"):"";console.log(` ${g}${o.white(a.name)}: ${a.type}${y}`)}}if(!c.validation.valid){console.log(o.red(`
50
+ Validation errors:`));for(let a of c.validation.errors)console.log(o.red(` - ${a}`))}console.log("")}await i(c.validation.valid?0:1)}else console.log(o.red(`Failed: ${r.error||"Unknown error"}`)),await i(1)}catch(e){console.error(o.red(`
51
+ Failed:`),e),await i(1)}}),m}export{V as createWorkflowCommand};
@@ -0,0 +1,2 @@
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.4");process.exit(0)}
2
+ import{a,b,c,d}from"./chunk-CDKG6EI7.js";import"./chunk-AUXFKCQL.js";import"./chunk-55RWDRJD.js";import"./chunk-R4VL6E65.js";import"./chunk-RJCYCLZV.js";import"./chunk-NA7B2QYB.js";import"./chunk-Y3MW3YBC.js";import"./chunk-PEPFCPES.js";import"./chunk-DHJPWQBR.js";import"./chunk-STM3UDNO.js";import"./chunk-G6T45OIC.js";import"./chunk-SRKETSFF.js";import"./chunk-BGE6FOLM.js";import"./chunk-5YPYDPBJ.js";import"./chunk-HDSAM2RE.js";import"./chunk-KCZR45PA.js";import"./chunk-BFP7KO7P.js";import"./chunk-ODKLFVYC.js";import"./chunk-VD6QRULW.js";import"./chunk-KHFNNVJA.js";import"./chunk-CNG6GQEZ.js";import"./chunk-TT23RRB7.js";export{b as DEFAULT_WORKFLOW_CONFIG,a as WorkflowEvents,c as WorkflowOrchestrator,d as createWorkflowOrchestrator};
@@ -1,2 +1,2 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.3");process.exit(0)}
2
- import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}from"./chunk-TTMHIOQ3.js";import{a as v,b as w,c as x,d as y,e as z,f as A,g as B,h as C,i as D,j as E,k as F,l as G,m as H,n as I,o as J,p as K}from"./chunk-F67AV5P2.js";import"./chunk-TFHQE6NK.js";import"./chunk-4RP5VUBI.js";import"./chunk-5F6DWHQG.js";import"./chunk-L2GKMBDP.js";import"./chunk-72UJXEKQ.js";import"./chunk-Y5SQBI2F.js";import"./chunk-YAKS3CAB.js";import"./chunk-HRUU7E3D.js";import"./chunk-MXMFGSWR.js";import"./chunk-VIDBBB6F.js";import"./chunk-PI74GOE4.js";import"./chunk-5IAB5NRZ.js";import"./chunk-OVDKWCD7.js";import"./chunk-XA7CG3LH.js";import"./chunk-YEXPFHV6.js";import"./chunk-IP7NSFQQ.js";import"./chunk-T35GZXTU.js";import"./chunk-Y2DVFVGI.js";export{z as GNNLayerFactory,i as QEFlashAttention,x as QEGNNEmbeddingIndex,y as QEGNNIndexFactory,a as QESONA,e as QE_FLASH_ATTENTION_CONFIG,g as QE_PERFORMANCE_TARGETS,f as QE_SONA_CONFIG,A as TensorCompressionFactory,u as batchComputeAttention,K as batchDifferentiableSearch,M as checkRuvectorPackagesAvailable,c as createDomainQESONA,j as createQEFlashAttention,b as createQESONA,D as getDifferentiableSearch,F as getGetCompressionLevel,E as getHierarchicalForward,G as getInit,h as getOptimalBlockConfig,k as getQEFlashAttentionConfig,n as getRuvectorDotProductAttention,m as getRuvectorFlashAttention,p as getRuvectorHyperbolicAttention,B as getRuvectorLayer,q as getRuvectorLinearAttention,r as getRuvectorMoEAttention,o as getRuvectorMultiHeadAttention,L as getRuvectorPackageVersions,C as getTensorCompress,l as getWorkloadTypes,N as initAllRuvectorPackages,w as initGNN,d as isAttentionAvailable,v as isGNNAvailable,s as toFloat32Array,H as toFloat32ArrayGNN,J as toIEmbedding,t as toNumberArrayAttn,I as toNumberArrayGNN};
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.4");process.exit(0)}
2
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}from"./chunk-3QHGWY7T.js";import{a as v,b as w,c as x,d as y,e as z,f as A,g as B,h as C,i as D,j as E,k as F,l as G,m as H,n as I,o as J,p as K}from"./chunk-M2JBBZQB.js";import"./chunk-55RWDRJD.js";import"./chunk-R4VL6E65.js";import"./chunk-RJCYCLZV.js";import"./chunk-NA7B2QYB.js";import"./chunk-Y3MW3YBC.js";import"./chunk-PEPFCPES.js";import"./chunk-DHJPWQBR.js";import"./chunk-G6T45OIC.js";import"./chunk-BGE6FOLM.js";import"./chunk-5YPYDPBJ.js";import"./chunk-HDSAM2RE.js";import"./chunk-KCZR45PA.js";import"./chunk-BFP7KO7P.js";import"./chunk-ODKLFVYC.js";import"./chunk-VD6QRULW.js";import"./chunk-KHFNNVJA.js";import"./chunk-CNG6GQEZ.js";import"./chunk-TT23RRB7.js";export{z as GNNLayerFactory,i as QEFlashAttention,x as QEGNNEmbeddingIndex,y as QEGNNIndexFactory,a as QESONA,e as QE_FLASH_ATTENTION_CONFIG,g as QE_PERFORMANCE_TARGETS,f as QE_SONA_CONFIG,A as TensorCompressionFactory,u as batchComputeAttention,K as batchDifferentiableSearch,M as checkRuvectorPackagesAvailable,c as createDomainQESONA,j as createQEFlashAttention,b as createQESONA,D as getDifferentiableSearch,F as getGetCompressionLevel,E as getHierarchicalForward,G as getInit,h as getOptimalBlockConfig,k as getQEFlashAttentionConfig,n as getRuvectorDotProductAttention,m as getRuvectorFlashAttention,p as getRuvectorHyperbolicAttention,B as getRuvectorLayer,q as getRuvectorLinearAttention,r as getRuvectorMoEAttention,o as getRuvectorMultiHeadAttention,L as getRuvectorPackageVersions,C as getTensorCompress,l as getWorkloadTypes,N as initAllRuvectorPackages,w as initGNN,d as isAttentionAvailable,v as isGNNAvailable,s as toFloat32Array,H as toFloat32ArrayGNN,J as toIEmbedding,t as toNumberArrayAttn,I as toNumberArrayGNN};
@@ -12,10 +12,11 @@ import * as path from 'path';
12
12
  import { findCIConfigFile, parseCIConfigFile, getDefaultCIConfig, } from '../utils/ci-config.js';
13
13
  import { writeOutput, toJSON } from '../utils/ci-output.js';
14
14
  import { buildCoverageData } from '../utils/coverage-data.js';
15
+ import { evaluateQualityEvidence, loadQualityEvidence, } from '../../domains/quality-assessment/quality-evidence.js';
15
16
  // ============================================================================
16
17
  // Phase Execution
17
18
  // ============================================================================
18
- async function executePhase(phase, context, outputDir, outputFormat) {
19
+ async function executePhase(phase, context, outputDir, phaseIndex) {
19
20
  const startTime = Date.now();
20
21
  const artifacts = [];
21
22
  if (!phase.enabled) {
@@ -130,25 +131,25 @@ async function executePhase(phase, context, outputDir, outputFormat) {
130
131
  break;
131
132
  }
132
133
  case 'quality-gate': {
133
- const qualityAPI = await context.kernel.getDomainAPIAsync('quality-assessment');
134
- if (!qualityAPI) {
135
- return makeResult(phase, startTime, 'failed', 1, 'Quality assessment domain not available', artifacts);
134
+ // Use the same evidence contract as `aqe quality --gate` and registered
135
+ // MCP quality_assess. The domain API has no evaluate() method.
136
+ try {
137
+ const metrics = await loadQualityEvidence(context.kernel.memory);
138
+ const assessment = evaluateQualityEvidence(metrics);
139
+ details = { ...assessment, metrics, evidenceStatus: 'measured' };
140
+ status = assessment.passed ? 'passed' : 'failed';
141
+ summary = `Quality gate: ${assessment.passed ? 'PASSED' : 'FAILED'} (${assessment.checks.filter(check => check.passed).length}/${assessment.checks.length} measured checks passed)`;
136
142
  }
137
- const result = await qualityAPI.evaluate({ runGate: true, includeAdvice: true });
138
- if (result.success && result.value) {
139
- const assessment = result.value;
140
- const passed = assessment.passed ?? assessment.meetsThreshold ?? true;
141
- details = { passed, score: assessment.score || assessment.grade, checks: assessment.checks };
142
- status = passed ? 'passed' : 'failed';
143
- summary = `Quality gate: ${passed ? 'PASSED' : 'FAILED'} (score: ${assessment.score || assessment.grade || 'N/A'})`;
144
- const artifactPath = path.join(outputDir, 'quality-gate.json');
145
- fs.writeFileSync(artifactPath, toJSON(assessment), 'utf-8');
146
- artifacts.push(artifactPath);
147
- }
148
- else {
143
+ catch (error) {
149
144
  status = 'failed';
150
- summary = result.error?.message || 'Quality gate evaluation failed';
145
+ summary = `Quality gate: ${error instanceof Error ? error.message : String(error)}`;
146
+ details = { passed: false, evidenceStatus: 'unavailable', error: summary, checks: [] };
151
147
  }
148
+ // Each gate owns its evidence. A later passing gate must not overwrite
149
+ // an earlier failure when a pipeline contains multiple gate phases.
150
+ const artifactPath = path.join(outputDir, `quality-gate-${phaseIndex + 1}.json`);
151
+ fs.writeFileSync(artifactPath, toJSON(details), 'utf-8');
152
+ artifacts.push(artifactPath);
152
153
  break;
153
154
  }
154
155
  case 'code-intelligence': {
@@ -222,7 +223,7 @@ function generateCombinedReport(result) {
222
223
  let md = `# AQE CI/CD Report\n\n`;
223
224
  md += `**Status:** ${result.overallStatus === 'passed' ? 'PASSED' : result.overallStatus === 'warning' ? 'WARNING' : 'FAILED'}\n`;
224
225
  md += `**Duration:** ${(result.duration / 1000).toFixed(1)}s\n`;
225
- md += `**Quality Gate:** ${result.qualityGatePassed ? 'Passed' : 'Failed'}\n\n`;
226
+ md += `**Quality Gate:** ${describeQualityGate(result)}\n\n`;
226
227
  md += `## Phases\n\n`;
227
228
  md += `| Phase | Type | Status | Duration | Summary |\n`;
228
229
  md += `|-------|------|--------|----------|---------|\n`;
@@ -244,6 +245,11 @@ function generateCombinedReport(result) {
244
245
  }
245
246
  return md;
246
247
  }
248
+ function describeQualityGate(result) {
249
+ const status = result.qualityGateStatus === 'not-run' ? 'Not run' :
250
+ result.qualityGatePassed ? 'Passed' : 'Failed';
251
+ return `${status} (${result.qualityGateEnforced ? 'enforced' : 'advisory'})`;
252
+ }
247
253
  // ============================================================================
248
254
  // Command
249
255
  // ============================================================================
@@ -318,15 +324,21 @@ export function createCICommand(context, cleanupAndExit, ensureInitialized) {
318
324
  // Create output directory
319
325
  const outputDir = path.resolve(config.output.directory);
320
326
  fs.mkdirSync(outputDir, { recursive: true });
327
+ const gateReportPath = path.join(outputDir, 'quality-gate.json');
328
+ // Invalidate an earlier approval before executing any phase. This also
329
+ // covers early stops, disabled gates, and --phase selections without a gate.
330
+ fs.writeFileSync(gateReportPath, toJSON({
331
+ passed: false, status: 'not-run', evidenceStatus: 'not-run',
332
+ enforced: config.qualityGate.enforced, phases: [],
333
+ }), 'utf-8');
321
334
  // Execute phases
322
335
  const phaseResults = [];
323
- let pipelineFailed = false;
324
336
  for (const phase of config.phases) {
325
337
  if (format === 'text') {
326
338
  const spinner = ` [${phaseResults.length + 1}/${config.phases.length}] ${phase.name}...`;
327
339
  process.stdout.write(chalk.cyan(spinner));
328
340
  }
329
- const result = await executePhase(phase, context, outputDir, config.output.format);
341
+ const result = await executePhase(phase, context, outputDir, phaseResults.length);
330
342
  phaseResults.push(result);
331
343
  if (format === 'text') {
332
344
  const statusColor = result.status === 'passed' ? chalk.green :
@@ -339,8 +351,7 @@ export function createCICommand(context, cleanupAndExit, ensureInitialized) {
339
351
  console.log(chalk.gray(` ${result.summary}`));
340
352
  }
341
353
  }
342
- if (result.status === 'failed') {
343
- pipelineFailed = true;
354
+ if (result.status === 'failed' && (result.type !== 'quality-gate' || config.qualityGate.enforced)) {
344
355
  if (!phase.continueOnFailure) {
345
356
  if (format === 'text') {
346
357
  console.log(chalk.red(`\n Pipeline stopped: "${phase.name}" failed (continue_on_failure: false)\n`));
@@ -350,11 +361,16 @@ export function createCICommand(context, cleanupAndExit, ensureInitialized) {
350
361
  }
351
362
  }
352
363
  // Determine overall status
353
- const hasFailure = phaseResults.some(r => r.status === 'failed');
354
- const hasWarning = phaseResults.some(r => r.status === 'warning');
355
- const qualityGateResult = phaseResults.find(r => r.type === 'quality-gate');
356
- const qualityGatePassed = !config.qualityGate.enforced || !qualityGateResult || qualityGateResult.status === 'passed';
357
- const overallStatus = hasFailure || !qualityGatePassed ? 'failed' :
364
+ const hasFailure = phaseResults.some(r => r.status === 'failed' && r.type !== 'quality-gate');
365
+ const hasWarning = phaseResults.some(r => r.status === 'warning' ||
366
+ (r.type === 'quality-gate' && r.status === 'failed' && !config.qualityGate.enforced));
367
+ const gateResults = phaseResults.filter(r => r.type === 'quality-gate');
368
+ const expectedGates = config.phases.filter(phase => phase.type === 'quality-gate').length;
369
+ const qualityGatePassed = gateResults.length > 0 && gateResults.length === expectedGates &&
370
+ gateResults.every(r => r.status === 'passed');
371
+ const qualityGateStatus = qualityGatePassed ? 'passed' :
372
+ gateResults.some(r => r.status === 'failed') ? 'failed' : 'not-run';
373
+ const overallStatus = hasFailure || (config.qualityGate.enforced && !qualityGatePassed) ? 'failed' :
358
374
  hasWarning ? 'warning' : 'passed';
359
375
  const completedAt = new Date();
360
376
  const duration = completedAt.getTime() - startedAt.getTime();
@@ -365,9 +381,19 @@ export function createCICommand(context, cleanupAndExit, ensureInitialized) {
365
381
  duration,
366
382
  phases: phaseResults,
367
383
  qualityGatePassed,
384
+ qualityGateStatus,
385
+ qualityGateEnforced: config.qualityGate.enforced,
368
386
  overallStatus,
369
387
  exitCode: overallStatus === 'failed' ? 1 : 0,
370
388
  };
389
+ fs.writeFileSync(gateReportPath, toJSON({
390
+ ...(gateResults.length === 1 ? gateResults[0].details : {}),
391
+ passed: qualityGatePassed,
392
+ status: qualityGateStatus,
393
+ enforced: config.qualityGate.enforced,
394
+ ...(qualityGateStatus === 'not-run' ? { evidenceStatus: 'not-run' } : {}),
395
+ phases: gateResults,
396
+ }), 'utf-8');
371
397
  // Write combined report
372
398
  if (config.output.combinedReport) {
373
399
  const reportPath = path.join(outputDir, 'ci-report.md');
@@ -388,7 +414,7 @@ export function createCICommand(context, cleanupAndExit, ensureInitialized) {
388
414
  const statusColor = overallStatus === 'passed' ? chalk.green :
389
415
  overallStatus === 'failed' ? chalk.red : chalk.yellow;
390
416
  console.log(` ${statusColor(`Pipeline: ${overallStatus.toUpperCase()}`)} (${(duration / 1000).toFixed(1)}s)`);
391
- console.log(` Quality Gate: ${qualityGatePassed ? chalk.green('PASSED') : chalk.red('FAILED')}`);
417
+ console.log(` Quality Gate: ${describeQualityGate(runResult)}`);
392
418
  console.log(chalk.gray(` Artifacts: ${outputDir}/`));
393
419
  console.log('');
394
420
  }
@@ -56,6 +56,12 @@ Examples:
56
56
  const targetPath = path.resolve(target || '.');
57
57
  let paths;
58
58
  if (gitSince) {
59
+ const { getGitRefError } = await import('../../shared/git/ref-validation.js');
60
+ const refError = getGitRefError(gitSince, '--git-since ref');
61
+ if (refError) {
62
+ console.log(chalk.red(refError));
63
+ return await cleanupAndExit(1);
64
+ }
59
65
  // Use git diff to find changed files since the ref
60
66
  // SEC: Use execFileSync with array args to prevent shell injection (CWE-78)
61
67
  const { execFileSync } = await import('child_process');
@@ -17,6 +17,7 @@ import * as path from 'path';
17
17
  import * as yaml from 'yaml';
18
18
  import { createParallelEvalRunner, DEFAULT_PARALLEL_EVAL_CONFIG, MockLLMExecutor, } from '../../validation/parallel-eval-runner.js';
19
19
  import { resolveEvalExecutor } from '../../validation/provider-llm-executor.js';
20
+ import { DEFAULT_SONNET_MODEL } from '../../shared/llm/model-registry.js';
20
21
  import { createCommandEvalRunner, isCommandEvalSuite, } from '../../validation/command-eval-runner.js';
21
22
  import { createSkillValidationLearner, } from '../../learning/skill-validation-learner.js';
22
23
  import { createRealQEReasoningBank, } from '../../learning/real-qe-reasoning-bank.js';
@@ -585,7 +586,7 @@ export function createEvalCommand() {
585
586
  .command('run')
586
587
  .description('Run eval suite for a single skill')
587
588
  .requiredOption('-s, --skill <skill>', 'Skill name to evaluate')
588
- .requiredOption('-m, --model <model>', 'Model to use (e.g., claude-sonnet-4-6)')
589
+ .requiredOption('-m, --model <model>', `Model to use (e.g., ${DEFAULT_SONNET_MODEL})`)
589
590
  .option('-p, --parallel', 'Enable parallel execution', false)
590
591
  .option('-w, --workers <n>', 'Number of parallel workers', parseInt, 5)
591
592
  .option('-b, --batch-size <n>', 'Test cases per batch', parseInt, 4)
@@ -615,7 +616,7 @@ export function createEvalCommand() {
615
616
  .command('run-all')
616
617
  .description('Run eval suites for multiple skills')
617
618
  .option('--skills-tier <tier>', 'Skill tier (1=all, 2=P0+P1, 3=P0 only)', parseInt, 3)
618
- .option('--models <models>', 'Comma-separated models to test', 'claude-sonnet-4-6')
619
+ .option('--models <models>', 'Comma-separated models to test', DEFAULT_SONNET_MODEL)
619
620
  .option('-p, --parallel', 'Enable parallel execution', true)
620
621
  .option('-w, --workers <n>', 'Number of parallel workers', parseInt, 5)
621
622
  .option('-o, --output <path>', 'Output file path for report')
@@ -4,8 +4,8 @@
4
4
  * Fleet operations with multi-agent progress tracking.
5
5
  */
6
6
  import { Command } from 'commander';
7
- import { secureRandomFloat } from '../../shared/utils/crypto-random.js';
8
7
  import chalk from 'chalk';
8
+ import { loadCLIDomainPlugins } from '../helpers/domain-plugins.js';
9
9
  import { ALL_DOMAINS } from '../../shared/types/index.js';
10
10
  import { QEKernelImpl } from '../../kernel/kernel.js';
11
11
  import { CrossDomainEventRouter } from '../../coordination/cross-domain-router.js';
@@ -99,6 +99,7 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
99
99
  enableExperienceBridge: false,
100
100
  });
101
101
  await context.kernel.initialize();
102
+ const domainPlugins = await loadCLIDomainPlugins(context.kernel.plugins);
102
103
  console.log(chalk.green(' * Kernel initialized'));
103
104
  context.router = new CrossDomainEventRouter(context.kernel.eventBus);
104
105
  await context.router.initialize();
@@ -113,7 +114,7 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
113
114
  return context.kernel.getDomainAPI(domain);
114
115
  };
115
116
  const protocolExecutor = new DefaultProtocolExecutor(context.kernel.eventBus, context.kernel.memory, getDomainAPI);
116
- context.queen = createQueenCoordinator(context.kernel, context.router, protocolExecutor, undefined);
117
+ context.queen = createQueenCoordinator(context.kernel, context.router, protocolExecutor, undefined, domainPlugins);
117
118
  await context.queen.initialize();
118
119
  console.log(chalk.green(' * Queen coordinator initialized'));
119
120
  context.initialized = true;
@@ -220,9 +221,15 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
220
221
  .option('--parallel <count>', 'Number of parallel agents', '4')
221
222
  .action(async (operation, options) => {
222
223
  if (!await ensureInitialized())
223
- return;
224
+ return cleanupAndExit(1);
224
225
  try {
225
- const parallelCount = parseInt(options.parallel, 10);
226
+ const parallelCount = Number(options.parallel);
227
+ if (!Number.isSafeInteger(parallelCount) || parallelCount < 1) {
228
+ throw new Error('--parallel must be a positive integer');
229
+ }
230
+ if (!['test', 'analyze', 'scan'].includes(operation)) {
231
+ throw new Error(`Unsupported operation: ${operation}`);
232
+ }
226
233
  console.log(chalk.blue(`\n Fleet Operation: ${operation}\n`));
227
234
  const progress = new FleetProgressManager({
228
235
  title: `${operation.charAt(0).toUpperCase() + operation.slice(1)} Progress`,
@@ -234,7 +241,7 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
234
241
  analyze: 'coverage-analysis',
235
242
  scan: 'security-compliance',
236
243
  };
237
- const domain = domainMap[operation] || 'test-generation';
244
+ const domain = domainMap[operation];
238
245
  const agentOperations = Array.from({ length: parallelCount }, (_, i) => {
239
246
  const agentId = `${operation}-agent-${i + 1}`;
240
247
  return {
@@ -251,16 +258,9 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
251
258
  progress: 0,
252
259
  });
253
260
  }
254
- const results = await Promise.all(agentOperations.map(async (op, index) => {
255
- await new Promise(resolve => setTimeout(resolve, index * 200));
261
+ const results = await Promise.all(agentOperations.map(async (op) => {
256
262
  progress.updateAgent(op.id, 0, { status: 'running' });
257
263
  try {
258
- for (let p = 10; p <= 90; p += 20) {
259
- await new Promise(resolve => setTimeout(resolve, secureRandomFloat(300, 500)));
260
- progress.updateAgent(op.id, p, {
261
- eta: Math.round((100 - p) * 50),
262
- });
263
- }
264
264
  const taskResult = await context.queen.submitTask({
265
265
  type: operation === 'test' ? 'generate-tests' :
266
266
  operation === 'analyze' ? 'analyze-coverage' :
@@ -270,10 +270,29 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
270
270
  payload: { target: options.target, workerId: op.id },
271
271
  timeout: 60000,
272
272
  });
273
- progress.completeAgent(op.id, taskResult.success);
274
- return { id: op.id, success: taskResult.success };
273
+ if (!taskResult.success) {
274
+ throw taskResult.error;
275
+ }
276
+ // Submission is only an acknowledgement. Keep the process alive
277
+ // until the domain reports a terminal result or the task expires.
278
+ const deadline = Date.now() + 60000;
279
+ while (Date.now() < deadline) {
280
+ const task = context.queen.getTaskStatus(taskResult.value);
281
+ if (!task)
282
+ throw new Error(`Task status unavailable: ${taskResult.value}`);
283
+ if (task.status === 'completed') {
284
+ progress.completeAgent(op.id, true);
285
+ return { id: op.id, success: true };
286
+ }
287
+ if (task.status === 'failed' || task.status === 'cancelled') {
288
+ throw new Error(task.error || `Task ${task.status}`);
289
+ }
290
+ await new Promise(resolve => setTimeout(resolve, 250));
291
+ }
292
+ throw new Error(`Task timed out: ${taskResult.value}`);
275
293
  }
276
- catch {
294
+ catch (error) {
295
+ console.error(chalk.red(` ${op.name}: ${error instanceof Error ? error.message : String(error)}`));
277
296
  progress.completeAgent(op.id, false);
278
297
  return { id: op.id, success: false };
279
298
  }
@@ -0,0 +1,38 @@
1
+ interface SnapshotInfo {
2
+ schemaVersion: number;
3
+ pages: number;
4
+ verification: {
5
+ valid: true;
6
+ message: string;
7
+ };
8
+ }
9
+ export interface LearningBackupResult {
10
+ backupPath: string;
11
+ sourceSizeKB: number;
12
+ backupSizeKB: number;
13
+ compressed: boolean;
14
+ schemaVersion: number;
15
+ verification: SnapshotInfo['verification'];
16
+ }
17
+ /** Publish only a complete standalone image; the existing artifact survives staging failures. */
18
+ export declare function backupLearningDatabase(source: string, output: string, options?: {
19
+ compress?: boolean;
20
+ verify?: boolean;
21
+ }): Promise<LearningBackupResult>;
22
+ export interface LearningRestoreResult {
23
+ sizeKB: number;
24
+ schemaVersion: number;
25
+ wasCompressed: boolean;
26
+ safetyBackupPath?: string;
27
+ }
28
+ /**
29
+ * Validate before replacing anything and retain a verified pre-restore image.
30
+ * SQLite mediates the destination write: never unlink its DB/WAL/SHM files.
31
+ * Stop project writers before restore; this does not coordinate later writes
32
+ * from other processes or refresh their in-memory learning caches.
33
+ */
34
+ export declare function restoreLearningDatabase(input: string, destination: string, options?: {
35
+ force?: boolean;
36
+ }): Promise<LearningRestoreResult>;
37
+ export {};
38
+ //# sourceMappingURL=learning-snapshot.d.ts.map
@@ -0,0 +1,171 @@
1
+ /** Consistent, verified SQLite images for the learning backup/restore commands. */
2
+ import { existsSync, realpathSync, statSync } from 'node:fs';
3
+ import { mkdir, mkdtemp, rename, rm, stat } from 'node:fs/promises';
4
+ import { basename, dirname, join, resolve } from 'node:path';
5
+ import { randomUUID } from 'node:crypto';
6
+ import { openDatabase } from '../../shared/safe-db.js';
7
+ import { compressFile, decompressFile } from './learning-helpers.js';
8
+ function inspectSnapshot(file) {
9
+ const db = openDatabase(file, { readonly: true, fileMustExist: true });
10
+ try {
11
+ const checks = db.pragma('integrity_check');
12
+ if (checks.length !== 1 || checks[0].integrity_check !== 'ok') {
13
+ throw new Error('Database integrity verification failed');
14
+ }
15
+ const hasVersion = db.prepare("SELECT 1 FROM sqlite_master WHERE type='table' AND name='schema_version'").get();
16
+ const version = hasVersion
17
+ ? db.prepare('SELECT version FROM schema_version WHERE id = 1').get()
18
+ : undefined;
19
+ return {
20
+ schemaVersion: version?.version ?? 0,
21
+ pages: db.pragma('page_count', { simple: true }),
22
+ verification: { valid: true, message: 'Database integrity verified' },
23
+ };
24
+ }
25
+ finally {
26
+ db.close();
27
+ }
28
+ }
29
+ function canonicalPath(file) {
30
+ return existsSync(file) ? realpathSync(file) : join(realpathSync(dirname(file)), basename(file));
31
+ }
32
+ function sameFile(left, right) {
33
+ if (canonicalPath(left) === canonicalPath(right))
34
+ return true;
35
+ if (!existsSync(left) || !existsSync(right))
36
+ return false;
37
+ const a = statSync(left);
38
+ const b = statSync(right);
39
+ return a.dev === b.dev && a.ino === b.ino;
40
+ }
41
+ function assertDistinct(source, destination) {
42
+ const sourcePath = canonicalPath(source);
43
+ const destinationPath = canonicalPath(destination);
44
+ for (const suffix of ['', '-wal', '-shm', '-journal']) {
45
+ if (sameFile(`${sourcePath}${suffix}`, destination)
46
+ || sameFile(source, `${destinationPath}${suffix}`)) {
47
+ throw new Error('Backup source and destination must not alias the same database or its sidecars');
48
+ }
49
+ }
50
+ }
51
+ function assertRegularFile(file) {
52
+ if (!statSync(file).isFile())
53
+ throw new Error('Backup input must be a regular file');
54
+ }
55
+ /** Awaiting backup alone is insufficient: a busy destination can report 0/0. */
56
+ async function copySqliteSnapshot(source, destination, options = {}) {
57
+ const db = openDatabase(source, { readonly: true, fileMustExist: true });
58
+ try {
59
+ const result = await db.backup(destination);
60
+ if (result.totalPages <= 0 || result.remainingPages !== 0
61
+ || (options.expectedPages !== undefined && result.totalPages !== options.expectedPages)) {
62
+ throw new Error('SQLite snapshot did not complete; the source may be empty or the destination busy');
63
+ }
64
+ if (options.standalone) {
65
+ // Only private new images are normalized. A WAL header otherwise makes
66
+ // SQLite try to create sidecars when reading an archive on readonly media.
67
+ const image = openDatabase(destination, { fileMustExist: true, walMode: false });
68
+ try {
69
+ if (image.pragma('journal_mode = DELETE', { simple: true }) !== 'delete') {
70
+ throw new Error('Could not create a standalone SQLite image');
71
+ }
72
+ }
73
+ finally {
74
+ image.close();
75
+ }
76
+ }
77
+ const inspected = inspectSnapshot(destination);
78
+ if (inspected.pages !== result.totalPages) {
79
+ throw new Error('SQLite snapshot page count does not match the completed backup');
80
+ }
81
+ return inspected;
82
+ }
83
+ finally {
84
+ db.close();
85
+ }
86
+ }
87
+ /** Publish only a complete standalone image; the existing artifact survives staging failures. */
88
+ export async function backupLearningDatabase(source, output, options = {}) {
89
+ assertRegularFile(source);
90
+ const finalPath = resolve(options.compress ? `${output}.gz` : output);
91
+ await mkdir(dirname(finalPath), { recursive: true });
92
+ assertDistinct(source, resolve(output));
93
+ assertDistinct(source, finalPath);
94
+ const staging = await mkdtemp(join(dirname(finalPath), '.aqe-backup-'));
95
+ try {
96
+ const image = join(staging, 'snapshot.db');
97
+ const info = await copySqliteSnapshot(source, image, { standalone: true });
98
+ const published = options.compress ? await compressFile(image) : image;
99
+ if (options.compress && options.verify) {
100
+ const checkedImage = join(staging, 'verified.db');
101
+ await decompressFile(published, checkedImage);
102
+ inspectSnapshot(checkedImage);
103
+ }
104
+ const sourceSizeKB = Number(((await stat(source)).size / 1024).toFixed(2));
105
+ const backupSizeKB = Number(((await stat(published)).size / 1024).toFixed(2));
106
+ // An existing DB+WAL pair may be live. Never replace its main file while
107
+ // leaving old sidecars that could be replayed against the new image.
108
+ if (['-wal', '-shm', '-journal'].some(suffix => existsSync(`${finalPath}${suffix}`))) {
109
+ throw new Error('Backup destination has SQLite sidecars; choose an unused output path');
110
+ }
111
+ await rename(published, finalPath);
112
+ return { backupPath: finalPath, sourceSizeKB, backupSizeKB, compressed: !!options.compress,
113
+ schemaVersion: info.schemaVersion, verification: info.verification };
114
+ }
115
+ finally {
116
+ await rm(staging, { recursive: true, force: true });
117
+ }
118
+ }
119
+ /**
120
+ * Validate before replacing anything and retain a verified pre-restore image.
121
+ * SQLite mediates the destination write: never unlink its DB/WAL/SHM files.
122
+ * Stop project writers before restore; this does not coordinate later writes
123
+ * from other processes or refresh their in-memory learning caches.
124
+ */
125
+ export async function restoreLearningDatabase(input, destination, options = {}) {
126
+ assertRegularFile(input);
127
+ await mkdir(dirname(destination), { recursive: true });
128
+ assertDistinct(input, destination);
129
+ if (existsSync(destination) && !options.force) {
130
+ throw new Error(`Database already exists at: ${destination}. Use --force to overwrite`);
131
+ }
132
+ const staging = await mkdtemp(join(dirname(destination), '.aqe-restore-'));
133
+ let safetyBackupPath;
134
+ try {
135
+ const wasCompressed = input.endsWith('.gz');
136
+ const image = join(staging, 'snapshot.db');
137
+ let source = input;
138
+ if (wasCompressed) {
139
+ source = join(staging, 'decompressed.db');
140
+ await decompressFile(input, source);
141
+ }
142
+ // A legacy uncompressed backup may still need its companion WAL.
143
+ const info = await copySqliteSnapshot(source, image, { standalone: true });
144
+ const sizeKB = Number(((await stat(image)).size / 1024).toFixed(2));
145
+ if (existsSync(destination)) {
146
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
147
+ const candidate = `${destination}.pre-restore-${timestamp}-${randomUUID()}.db`;
148
+ try {
149
+ await copySqliteSnapshot(destination, candidate, { standalone: true });
150
+ safetyBackupPath = candidate;
151
+ }
152
+ catch (error) {
153
+ await rm(candidate, { force: true });
154
+ throw new Error('Cannot create a verified safety backup of the existing database; restore refused. Stop project processes and preserve the database and its sidecars before restoring into an absent destination.', { cause: error });
155
+ }
156
+ }
157
+ await copySqliteSnapshot(image, destination, { expectedPages: info.pages });
158
+ return { sizeKB, schemaVersion: info.schemaVersion, wasCompressed, safetyBackupPath };
159
+ }
160
+ catch (error) {
161
+ if (safetyBackupPath) {
162
+ const detail = error instanceof Error ? error.message : 'SQLite snapshot failed';
163
+ throw new Error(`Restore failed: ${detail}; previous database snapshot preserved at ${safetyBackupPath}`, { cause: error });
164
+ }
165
+ throw error;
166
+ }
167
+ finally {
168
+ await rm(staging, { recursive: true, force: true });
169
+ }
170
+ }
171
+ //# sourceMappingURL=learning-snapshot.js.map