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
@@ -10,42 +10,69 @@
10
10
  */
11
11
  import { BaseModelProvider } from '../model-provider.js';
12
12
  import { toErrorMessage, toError } from '../../../shared/error-utils.js';
13
+ import { resolveModelPricing } from '../../../shared/llm/cost-tracker.js';
13
14
  // ============================================================================
14
15
  // Model Cost and Tier Information
15
16
  // ============================================================================
16
17
  /**
17
- * Cost per 1M tokens for popular models (input/output)
18
- * Updated as of 2024 - check OpenRouter for current prices
18
+ * Cost per 1M tokens for current models (input/output)
19
+ * From the OpenRouter public catalog (2026-09-27) - check OpenRouter for current prices
19
20
  */
20
21
  const MODEL_COSTS = {
21
22
  // Claude models
22
- 'anthropic/claude-3.5-sonnet': { input: 3, output: 15, tier: 'standard' },
23
- 'anthropic/claude-3-opus': { input: 15, output: 75, tier: 'premium' },
24
- 'anthropic/claude-3-sonnet': { input: 3, output: 15, tier: 'standard' },
25
- 'anthropic/claude-3-haiku': { input: 0.25, output: 1.25, tier: 'cheap' },
23
+ 'anthropic/claude-sonnet-5': { input: 2, output: 10, tier: 'standard' },
24
+ 'anthropic/claude-opus-5': { input: 5, output: 25, tier: 'premium' },
25
+ 'anthropic/claude-opus-5.5': { input: 4, output: 20, tier: 'premium' },
26
+ 'anthropic/claude-haiku-4.5': { input: 1, output: 5, tier: 'cheap' },
26
27
  // OpenAI models
27
- 'openai/gpt-4-turbo': { input: 10, output: 30, tier: 'standard' },
28
- 'openai/gpt-4': { input: 30, output: 60, tier: 'premium' },
29
- 'openai/gpt-4o': { input: 5, output: 15, tier: 'standard' },
30
- 'openai/gpt-4o-mini': { input: 0.15, output: 0.6, tier: 'cheap' },
28
+ 'openai/gpt-6-astra': { input: 10, output: 50, tier: 'premium' },
29
+ 'openai/gpt-6-sol': { input: 2, output: 10, tier: 'standard' },
30
+ 'openai/gpt-6-luna': { input: 0.1, output: 0.5, tier: 'cheap' },
31
+ 'openai/gpt-oss-120b': { input: 0.15, output: 0.6, tier: 'cheap' },
31
32
  // Google models
32
- 'google/gemini-pro-1.5': { input: 3.5, output: 10.5, tier: 'standard' },
33
- 'google/gemini-flash-1.5': { input: 0.075, output: 0.3, tier: 'cheap' },
33
+ 'google/gemini-3.1-pro-preview': { input: 2, output: 12, tier: 'standard' },
34
+ 'google/gemini-2.5-pro': { input: 1.25, output: 10, tier: 'standard' },
35
+ 'google/gemini-3.8-flash': { input: 0.75, output: 3.75, tier: 'cheap' },
36
+ 'google/gemini-2.5-flash': { input: 0.3, output: 2.5, tier: 'cheap' },
34
37
  // Llama models
35
- 'meta-llama/llama-3.1-405b-instruct': { input: 2.7, output: 2.7, tier: 'standard' },
36
- 'meta-llama/llama-3.1-70b-instruct': { input: 0.52, output: 0.75, tier: 'cheap' },
37
- 'meta-llama/llama-3.1-8b-instruct': { input: 0.055, output: 0.055, tier: 'free' },
38
+ 'meta-llama/llama-4-maverick': { input: 0.1875, output: 0.6525, tier: 'cheap' },
39
+ 'meta-llama/llama-4-scout': { input: 0.1, output: 0.3, tier: 'cheap' },
38
40
  // Mistral models
39
- 'mistralai/mistral-large': { input: 3, output: 9, tier: 'standard' },
40
- 'mistralai/mixtral-8x22b-instruct': { input: 0.65, output: 0.65, tier: 'cheap' },
41
+ 'mistralai/mistral-large-2512': { input: 0.5, output: 1.5, tier: 'cheap' },
41
42
  // DeepSeek models
42
- 'deepseek/deepseek-chat': { input: 0.14, output: 0.28, tier: 'cheap' },
43
- 'deepseek/deepseek-coder': { input: 0.14, output: 0.28, tier: 'cheap' },
43
+ 'deepseek/deepseek-v4-pro': { input: 0.348, output: 0.696, tier: 'cheap' },
44
+ 'deepseek/deepseek-v4.1-flash': { input: 0.035, output: 0.29, tier: 'cheap' },
44
45
  // Qwen models
45
- 'qwen/qwen-2.5-72b-instruct': { input: 0.35, output: 0.4, tier: 'cheap' },
46
- // Cohere models
47
- 'cohere/command-r-plus': { input: 2.5, output: 10, tier: 'standard' },
46
+ 'qwen/qwen3-coder': { input: 0.3, output: 1, tier: 'cheap' },
48
47
  };
48
+ /**
49
+ * Deprecated models no longer served by OpenRouter. Pricing only, so historical
50
+ * usage still costs correctly — excluded from supported models and tier lists.
51
+ */
52
+ const DEPRECATED_MODEL_COSTS = {
53
+ 'anthropic/claude-3.5-sonnet': { input: 3, output: 15 },
54
+ 'anthropic/claude-3-opus': { input: 15, output: 75 },
55
+ 'anthropic/claude-3-sonnet': { input: 3, output: 15 },
56
+ 'anthropic/claude-3-haiku': { input: 0.25, output: 1.25 },
57
+ 'openai/gpt-4-turbo': { input: 10, output: 30 },
58
+ 'openai/gpt-4': { input: 30, output: 60 },
59
+ 'openai/gpt-4o': { input: 5, output: 15 },
60
+ 'openai/gpt-4o-mini': { input: 0.15, output: 0.6 },
61
+ 'google/gemini-pro-1.5': { input: 3.5, output: 10.5 },
62
+ 'google/gemini-flash-1.5': { input: 0.075, output: 0.3 },
63
+ 'meta-llama/llama-3.1-405b-instruct': { input: 2.7, output: 2.7 },
64
+ 'meta-llama/llama-3.1-70b-instruct': { input: 0.52, output: 0.75 },
65
+ 'meta-llama/llama-3.1-8b-instruct': { input: 0.055, output: 0.055 },
66
+ 'mistralai/mistral-large': { input: 3, output: 9 },
67
+ 'mistralai/mixtral-8x22b-instruct': { input: 0.65, output: 0.65 },
68
+ 'deepseek/deepseek-chat': { input: 0.14, output: 0.28 },
69
+ 'deepseek/deepseek-coder': { input: 0.14, output: 0.28 },
70
+ 'qwen/qwen-2.5-72b-instruct': { input: 0.35, output: 0.4 },
71
+ 'cohere/command-r-plus': { input: 2.5, output: 10 },
72
+ };
73
+ function lookupModelCost(model) {
74
+ return MODEL_COSTS[model] ?? DEPRECATED_MODEL_COSTS[model] ?? resolveModelPricing(model);
75
+ }
49
76
  /**
50
77
  * Get models by tier for cost optimization
51
78
  */
@@ -60,10 +87,10 @@ export function getModelsByTier(tier) {
60
87
  */
61
88
  export function getRecommendedSecurityModels() {
62
89
  return [
63
- 'anthropic/claude-3.5-sonnet', // Best for security analysis
64
- 'openai/gpt-4o', // Strong reasoning
65
- 'google/gemini-pro-1.5', // Good code understanding
66
- 'mistralai/mistral-large', // Cost-effective alternative
90
+ 'anthropic/claude-sonnet-5', // Best for security analysis
91
+ 'openai/gpt-6-sol', // Strong reasoning
92
+ 'google/gemini-2.5-pro', // Good code understanding
93
+ 'deepseek/deepseek-v4-pro', // Cost-effective alternative
67
94
  ];
68
95
  }
69
96
  /**
@@ -71,17 +98,17 @@ export function getRecommendedSecurityModels() {
71
98
  */
72
99
  export function getCostOptimizedModels() {
73
100
  return [
74
- 'anthropic/claude-3-haiku', // Fast and cheap Claude
75
- 'openai/gpt-4o-mini', // Cheap GPT-4
76
- 'google/gemini-flash-1.5', // Very cheap Gemini
77
- 'deepseek/deepseek-chat', // Very cheap alternative
101
+ 'anthropic/claude-haiku-4.5', // Fast and cheap Claude
102
+ 'openai/gpt-6-luna', // Cheap GPT-6
103
+ 'google/gemini-3.8-flash', // Cheap Gemini
104
+ 'qwen/qwen3-coder', // Very cheap alternative
78
105
  ];
79
106
  }
80
107
  // ============================================================================
81
108
  // OpenRouter Provider Implementation
82
109
  // ============================================================================
83
110
  const DEFAULT_CONFIG = {
84
- defaultModel: 'anthropic/claude-3.5-sonnet',
111
+ defaultModel: 'anthropic/claude-sonnet-5',
85
112
  defaultTimeout: 120000, // 2 minutes
86
113
  maxRetries: 3,
87
114
  retryDelayMs: 1000,
@@ -97,7 +124,7 @@ const DEFAULT_CONFIG = {
97
124
  * ```typescript
98
125
  * const provider = new OpenRouterModelProvider({
99
126
  * apiKey: process.env.OPENROUTER_API_KEY,
100
- * defaultModel: 'anthropic/claude-3.5-sonnet',
127
+ * defaultModel: 'anthropic/claude-sonnet-5',
101
128
  * });
102
129
  *
103
130
  * const result = await provider.complete('Analyze this code for vulnerabilities...');
@@ -127,7 +154,7 @@ export class OpenRouterModelProvider extends BaseModelProvider {
127
154
  this.id = `openrouter-${(this.config.defaultModel ?? 'default').replace(/[^a-z0-9]/gi, '-')}`;
128
155
  this.name = `OpenRouter (${this.config.defaultModel ?? 'default'})`;
129
156
  // Set cost per token based on default model
130
- const modelCosts = MODEL_COSTS[this.config.defaultModel];
157
+ const modelCosts = lookupModelCost(this.config.defaultModel);
131
158
  if (modelCosts) {
132
159
  this.costPerToken = {
133
160
  input: modelCosts.input / 1_000_000,
@@ -183,7 +210,7 @@ export class OpenRouterModelProvider extends BaseModelProvider {
183
210
  this.requestCount++;
184
211
  // Track cost
185
212
  if (response.usage) {
186
- const costs = MODEL_COSTS[tryModel] || { input: 1, output: 2 };
213
+ const costs = lookupModelCost(tryModel) || { input: 1, output: 2 };
187
214
  const cost = (response.usage.prompt_tokens * costs.input +
188
215
  response.usage.completion_tokens * costs.output) /
189
216
  1_000_000;
@@ -330,13 +357,13 @@ Format your response with: verdict (confirmed/rejected/uncertain), confidence (0
330
357
  *
331
358
  * // With specific model
332
359
  * const provider = createOpenRouterProvider({
333
- * defaultModel: 'meta-llama/llama-3.1-70b-instruct',
360
+ * defaultModel: 'meta-llama/llama-4-maverick',
334
361
  * });
335
362
  *
336
363
  * // With fallback models
337
364
  * const provider = createOpenRouterProvider({
338
- * defaultModel: 'anthropic/claude-3.5-sonnet',
339
- * fallbackModels: ['openai/gpt-4o', 'google/gemini-pro-1.5'],
365
+ * defaultModel: 'anthropic/claude-sonnet-5',
366
+ * fallbackModels: ['openai/gpt-6-sol', 'google/gemini-2.5-pro'],
340
367
  * });
341
368
  * ```
342
369
  */
@@ -186,18 +186,20 @@ export function registerTestExecutionHandlers(ctx) {
186
186
  let output;
187
187
  try {
188
188
  execution = spawnSync('npx', ['vitest', 'run', ...testFiles, '--reporter=json', ...report.args], options);
189
- output = report.read(execution.stdout || '');
189
+ output = execution.error || execution.signal
190
+ ? ''
191
+ : report.read(execution.stdout || '') ?? '';
190
192
  }
191
193
  finally {
192
194
  report.cleanup();
193
195
  }
194
196
  // Preserve the existing Jest fallback when Vitest cannot produce a report.
195
- if (!output.includes('{') && execution.status !== 0) {
197
+ if (!output.includes('{') && execution.status !== 0 && !execution.error && !execution.signal) {
196
198
  runner = 'jest';
197
199
  execution = spawnSync('npx', ['jest', ...testFiles, '--json'], options);
198
200
  output = execution.stdout || '';
199
201
  }
200
- const diagnostics = [execution.error?.message, execution.stderr, output].filter(Boolean).join('\n');
202
+ const diagnostics = [execution.error?.message, execution.signal && `Terminated by ${execution.signal}`, execution.stderr, output].filter(Boolean).join('\n');
201
203
  if (execution.error) {
202
204
  return err(new TestRunnerExecutionError(`${runner} could not complete: ${diagnostics.slice(0, 4000)}`));
203
205
  }
@@ -69,7 +69,7 @@ export interface Protocol {
69
69
  /**
70
70
  * Status of a protocol action execution
71
71
  */
72
- export type ActionExecutionStatus = 'pending' | 'running' | 'completed' | 'failed' | 'skipped' | 'cancelled';
72
+ export type ActionExecutionStatus = 'pending' | 'running' | 'completed' | 'failed' | 'unknown' | 'skipped' | 'cancelled';
73
73
  /**
74
74
  * Result of a single action execution
75
75
  */
@@ -94,7 +94,7 @@ export interface ActionExecutionResult {
94
94
  /**
95
95
  * Status of protocol execution
96
96
  */
97
- export type ProtocolExecutionStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled' | 'paused';
97
+ export type ProtocolExecutionStatus = 'pending' | 'running' | 'completed' | 'failed' | 'unknown' | 'cancelled' | 'paused';
98
98
  /**
99
99
  * Protocol execution state
100
100
  */
@@ -6,6 +6,13 @@ import { v4 as uuidv4 } from 'uuid';
6
6
  import { ok, err, } from '../shared/types/index.js';
7
7
  import { createEvent } from '../shared/events/index.js';
8
8
  import { toErrorMessage, toError } from '../shared/error-utils.js';
9
+ /** The caller stopped waiting, but the domain operation may still take effect. */
10
+ class ActionTimeoutError extends Error {
11
+ constructor(timeoutMs) {
12
+ super(`Action timed out after ${timeoutMs}ms; outcome is unknown`);
13
+ this.name = 'ActionTimeoutError';
14
+ }
15
+ }
9
16
  // ============================================================================
10
17
  // Protocol Events
11
18
  // ============================================================================
@@ -13,10 +20,12 @@ const ProtocolEvents = {
13
20
  ProtocolStarted: 'coordination.ProtocolStarted',
14
21
  ProtocolCompleted: 'coordination.ProtocolCompleted',
15
22
  ProtocolFailed: 'coordination.ProtocolFailed',
23
+ ProtocolOutcomeUnknown: 'coordination.ProtocolOutcomeUnknown',
16
24
  ProtocolCancelled: 'coordination.ProtocolCancelled',
17
25
  ActionStarted: 'coordination.ActionStarted',
18
26
  ActionCompleted: 'coordination.ActionCompleted',
19
27
  ActionFailed: 'coordination.ActionFailed',
28
+ ActionOutcomeUnknown: 'coordination.ActionOutcomeUnknown',
20
29
  };
21
30
  // ============================================================================
22
31
  // Protocol Executor Implementation
@@ -256,18 +265,22 @@ export class DefaultProtocolExecutor {
256
265
  // Execute actions
257
266
  await this.executeActions(context);
258
267
  // Check for failures
259
- const hasFailures = Array.from(context.actionResults.values()).some((r) => r.status === 'failed');
268
+ const results = Array.from(context.actionResults.values());
269
+ const unknownActions = results.filter((r) => r.status === 'unknown').map((r) => r.actionId);
270
+ const failedActions = results.filter((r) => r.status === 'failed').map((r) => r.actionId);
260
271
  if (context.cancelled) {
261
272
  execution.status = 'cancelled';
262
273
  }
263
- else if (hasFailures) {
274
+ else if (unknownActions.length > 0) {
275
+ execution.status = 'unknown';
276
+ await this.publishEvent(ProtocolEvents.ProtocolOutcomeUnknown, { executionId, protocolId: protocol.id, unknownActions, failedActions }, correlationId);
277
+ }
278
+ else if (failedActions.length > 0) {
264
279
  execution.status = 'failed';
265
280
  await this.publishEvent(ProtocolEvents.ProtocolFailed, {
266
281
  executionId,
267
282
  protocolId: protocol.id,
268
- failedActions: Array.from(context.actionResults.values())
269
- .filter((r) => r.status === 'failed')
270
- .map((r) => r.actionId),
283
+ failedActions,
271
284
  }, correlationId);
272
285
  }
273
286
  else {
@@ -313,6 +326,23 @@ export class DefaultProtocolExecutor {
313
326
  const readyActions = protocol.actions.filter((action) => pending.has(action.id) &&
314
327
  this.dependenciesSatisfied(action, completed));
315
328
  if (readyActions.length === 0 && pending.size > 0) {
329
+ // A failed/unknown prerequisite cannot authorize a dependent action.
330
+ // Mark the dependent skipped instead of misreporting a deadlock.
331
+ let skipped = false;
332
+ for (const action of protocol.actions) {
333
+ if (!pending.has(action.id))
334
+ continue;
335
+ if (action.dependsOn?.some((dep) => {
336
+ const status = actionResults.get(dep)?.status;
337
+ return status !== undefined && status !== 'completed';
338
+ })) {
339
+ actionResults.set(action.id, { actionId: action.id, status: 'skipped' });
340
+ pending.delete(action.id);
341
+ skipped = true;
342
+ }
343
+ }
344
+ if (skipped)
345
+ continue;
316
346
  // Deadlock - some actions can't be executed
317
347
  throw new Error(`Deadlock detected: actions ${Array.from(pending).join(', ')} cannot proceed`);
318
348
  }
@@ -402,6 +432,26 @@ export class DefaultProtocolExecutor {
402
432
  }
403
433
  catch (error) {
404
434
  lastError = toError(error);
435
+ if (error instanceof ActionTimeoutError) {
436
+ // Promise.race cannot cancel the losing provider call. It may have
437
+ // committed an effect already, so replay would be unsafe.
438
+ const completedAt = new Date();
439
+ await this.publishEvent(ProtocolEvents.ActionOutcomeUnknown, {
440
+ executionId: context.execution.executionId,
441
+ actionId: action.id,
442
+ error: error.message,
443
+ attempts,
444
+ }, context.execution.correlationId);
445
+ return {
446
+ actionId: action.id,
447
+ status: 'unknown',
448
+ startedAt,
449
+ completedAt,
450
+ duration: completedAt.getTime() - startedAt.getTime(),
451
+ error: error.message,
452
+ retryAttempts: attempts > 1 ? attempts - 1 : undefined,
453
+ };
454
+ }
405
455
  // Retry if configured and not last attempt
406
456
  if (attempts < maxAttempts && action.retry) {
407
457
  const backoff = action.retry.backoffMs *
@@ -441,10 +491,19 @@ export class DefaultProtocolExecutor {
441
491
  * Execute a promise with timeout
442
492
  */
443
493
  async executeWithTimeout(promise, timeoutMs) {
444
- return Promise.race([
445
- promise,
446
- new Promise((_, reject) => setTimeout(() => reject(new Error('Action timeout')), timeoutMs)),
447
- ]);
494
+ let timer;
495
+ try {
496
+ return await Promise.race([
497
+ promise,
498
+ new Promise((_, reject) => {
499
+ timer = setTimeout(() => reject(new ActionTimeoutError(timeoutMs)), timeoutMs);
500
+ }),
501
+ ]);
502
+ }
503
+ finally {
504
+ if (timer)
505
+ clearTimeout(timer);
506
+ }
448
507
  }
449
508
  /**
450
509
  * Set up event-based triggers for a protocol
@@ -351,13 +351,19 @@ export class QueenCoordinator {
351
351
  const execution = this.tasks.get(taskId);
352
352
  if (!execution)
353
353
  return err(new Error(`Task not found: ${taskId}`));
354
+ // Repeated cancellation is one decision, not another event or capacity release.
355
+ if (execution.status === 'cancelled')
356
+ return ok(undefined);
354
357
  if (execution.status === 'completed' || execution.status === 'failed') {
355
358
  return err(new Error(`Task already finished: ${taskId}`));
356
359
  }
357
- if (execution.status === 'running' || execution.status === 'assigned') {
358
- this.runningTaskCounter = Math.max(0, this.runningTaskCounter - 1);
359
- }
360
- this.tasks.set(taskId, { ...execution, status: 'cancelled', completedAt: new Date() });
360
+ const cancellationResultPending = execution.status === 'running' || execution.status === 'assigned';
361
+ // Keep the capacity slot until the outstanding result arrives. Stopping an
362
+ // agent does not necessarily stop a domain plugin or its child process.
363
+ this.tasks.set(taskId, {
364
+ ...execution, status: 'cancelled', completedAt: new Date(),
365
+ cancellationResultPending,
366
+ });
361
367
  removeFromQueues(this.taskQueue, this.domainQueues, execution.task);
362
368
  for (const agentId of execution.assignedAgents) {
363
369
  await this.agentCoordinator.stop(agentId);
@@ -7,6 +7,7 @@
7
7
  import { getCrossPhaseHookExecutor } from '../hooks/cross-phase-hooks.js';
8
8
  // Governance
9
9
  import { queenGovernanceAdapter } from '../governance/index.js';
10
+ import { settleCancelledTask } from './cancelled-task-settlement.js';
10
11
  // ============================================================================
11
12
  // Event subscription
12
13
  // ============================================================================
@@ -51,6 +52,14 @@ async function handleDomainEvent(ctx, event) {
51
52
  // ============================================================================
52
53
  export async function handleTaskCompleted(ctx, event) {
53
54
  const { taskId, result } = event.payload;
55
+ const cancelled = settleCancelledTask(ctx.tasks, taskId);
56
+ if (cancelled.ignored) {
57
+ if (cancelled.settledNow) {
58
+ ctx.runningTaskCounter = Math.max(0, ctx.runningTaskCounter - 1);
59
+ await ctx.processQueue();
60
+ }
61
+ return;
62
+ }
54
63
  const execution = ctx.tasks.get(taskId);
55
64
  if (execution) {
56
65
  // CC-002 FIX: Decrement the atomic counter when task completes
@@ -154,6 +163,14 @@ export async function handleTaskCompleted(ctx, event) {
154
163
  // ============================================================================
155
164
  export async function handleTaskFailed(ctx, event) {
156
165
  const { taskId, error } = event.payload;
166
+ const cancelled = settleCancelledTask(ctx.tasks, taskId);
167
+ if (cancelled.ignored) {
168
+ if (cancelled.settledNow) {
169
+ ctx.runningTaskCounter = Math.max(0, ctx.runningTaskCounter - 1);
170
+ await ctx.processQueue();
171
+ }
172
+ return;
173
+ }
157
174
  const execution = ctx.tasks.get(taskId);
158
175
  if (execution) {
159
176
  // CC-002 FIX: Decrement the atomic counter when task fails
@@ -7,6 +7,7 @@ import { v4 as uuidv4 } from 'uuid';
7
7
  import { ok, err } from '../shared/types/index.js';
8
8
  import { binaryInsert, createdAtComparator } from '../shared/utils/index.js';
9
9
  import { TASK_DOMAIN_MAP } from './queen-types.js';
10
+ import { settleCancelledTask } from './cancelled-task-settlement.js';
10
11
  // ============================================================================
11
12
  // Task comparator for priority queue binary insertion
12
13
  // ============================================================================
@@ -214,6 +215,14 @@ export async function assignTaskToDomain(ctx, task, domain) {
214
215
  ...(routeDecision?.triggerMultiModel ? ['advisor:triggerMultiModel'] : []),
215
216
  ];
216
217
  const spawnResult = await ctx.requestAgentSpawn(domain, agentType, spawnCapabilities);
218
+ // A queued task can be cancelled while routing or agent spawn is awaiting.
219
+ // Do not recreate it as running or dispatch its plugin afterward.
220
+ if (ctx.tasks.get(task.id)?.status === 'cancelled') {
221
+ if (spawnResult.success)
222
+ await ctx.agentCoordinator.stop(spawnResult.value);
223
+ ctx.runningTaskCounter = Math.max(0, ctx.runningTaskCounter - 1);
224
+ return ok(task.id);
225
+ }
217
226
  const agentIds = [];
218
227
  if (spawnResult.success) {
219
228
  agentIds.push(spawnResult.value);
@@ -252,6 +261,14 @@ export async function assignTaskToDomain(ctx, task, domain) {
252
261
  };
253
262
  const execResult = await plugin.executeTask(request, (result) => handleTaskCompletionCallback(ctx, result));
254
263
  if (!execResult.success) {
264
+ const cancelled = settleCancelledTask(ctx.tasks, task.id);
265
+ if (cancelled.ignored) {
266
+ if (cancelled.settledNow) {
267
+ ctx.runningTaskCounter = Math.max(0, ctx.runningTaskCounter - 1);
268
+ await processQueue(ctx);
269
+ }
270
+ return ok(task.id);
271
+ }
255
272
  ctx.tasks.set(task.id, {
256
273
  ...execution,
257
274
  status: 'failed',
@@ -298,6 +315,14 @@ async function handleTaskCompletionCallback(ctx, result) {
298
315
  console.warn(`[Queen] Received completion for unknown task: ${result.taskId}`);
299
316
  return;
300
317
  }
318
+ const cancelled = settleCancelledTask(ctx.tasks, result.taskId);
319
+ if (cancelled.ignored) {
320
+ if (cancelled.settledNow) {
321
+ ctx.runningTaskCounter = Math.max(0, ctx.runningTaskCounter - 1);
322
+ await processQueue(ctx);
323
+ }
324
+ return;
325
+ }
301
326
  const updated = {
302
327
  ...execution,
303
328
  status: result.success ? 'completed' : 'failed',
@@ -42,6 +42,8 @@ export interface TaskExecution {
42
42
  readonly assignedAgents: string[];
43
43
  readonly startedAt?: Date;
44
44
  readonly completedAt?: Date;
45
+ /** True until an already-running task result arrives after cancellation. */
46
+ readonly cancellationResultPending?: boolean;
45
47
  readonly result?: unknown;
46
48
  readonly error?: string;
47
49
  readonly retryCount: number;
@@ -16,6 +16,7 @@ import { v4 as uuidv4 } from 'uuid';
16
16
  import { toErrorMessage } from '../shared/error-utils.js';
17
17
  import { createResultSaver } from './result-saver.js';
18
18
  import { createLogger } from '../logging/logger-factory.js';
19
+ import { getClaudeModelForTier } from '../shared/llm/model-registry.js';
19
20
  // ADR-051: Agent Booster integration for Tier 0 tasks
20
21
  import { createAgentBoosterAdapter, } from '../integrations/agentic-flow/agent-booster/index.js';
21
22
  // ADR-051: Task Router for outcome recording
@@ -60,14 +61,9 @@ function resolveQualityAnalyzerService(memory) {
60
61
  * Per ADR-026: 3-tier model routing
61
62
  */
62
63
  function getModelForTier(tier) {
63
- switch (tier) {
64
- case 0: return 'agent-booster'; // Special case - WASM transforms
65
- case 1: return 'claude-haiku-4-5-20251001';
66
- case 2: return 'claude-sonnet-4-6';
67
- case 3: return 'claude-sonnet-4-6'; // Extended thinking
68
- case 4: return 'claude-opus-4-7';
69
- default: return 'claude-sonnet-4-6';
70
- }
64
+ if (tier === 0)
65
+ return 'agent-booster'; // Special case - WASM transforms
66
+ return getClaudeModelForTier(tier); // Tier 3 = extended thinking, same model as tier 2
71
67
  }
72
68
  /**
73
69
  * Map task type and code context to transform type for Agent Booster
@@ -0,0 +1,19 @@
1
+ /** Pure output-path conflict detection and payload-free composition hashing. */
2
+ import type { ParallelCompositionReceipt, WorkflowStepDefinition } from './workflow-types.js';
3
+ interface WritePath {
4
+ stepId: string;
5
+ path: string;
6
+ segments: string[];
7
+ }
8
+ /** Include the implicit `results[step.id]` write as well as declared mappings. */
9
+ export declare function parallelWritePaths(step: WorkflowStepDefinition): WritePath[];
10
+ export declare function parallelOutputConflicts(steps: WorkflowStepDefinition[]): ParallelCompositionReceipt['conflicts'];
11
+ /** A declared read of a concurrently runnable sibling needs an explicit dependency. */
12
+ export declare function parallelUndeclaredReads(steps: WorkflowStepDefinition[]): Array<{
13
+ stepId: string;
14
+ sourcePath: string;
15
+ otherStepId: string;
16
+ }>;
17
+ export declare function hashWorkflowValue(value: unknown): string;
18
+ export {};
19
+ //# sourceMappingURL=workflow-composition.d.ts.map
@@ -0,0 +1,114 @@
1
+ /** Pure output-path conflict detection and payload-free composition hashing. */
2
+ import { createHash } from 'node:crypto';
3
+ /** Include the implicit `results[step.id]` write as well as declared mappings. */
4
+ export function parallelWritePaths(step) {
5
+ if (['__proto__', 'constructor', 'prototype'].includes(step.id)) {
6
+ throw new Error(`parallel_output_invalid_path: unsafe step ID ${step.id}`);
7
+ }
8
+ const paths = [{ stepId: step.id, path: step.id, segments: [step.id] }];
9
+ for (const target of Object.values(step.outputMapping ?? {}).sort()) {
10
+ const segments = target.split('.');
11
+ if (segments.some(part => !part || ['__proto__', 'constructor', 'prototype'].includes(part))) {
12
+ throw new Error(`parallel_output_invalid_path: ${step.id} maps to ${target}`);
13
+ }
14
+ paths.push({ stepId: step.id, path: target, segments });
15
+ }
16
+ return paths;
17
+ }
18
+ export function parallelOutputConflicts(steps) {
19
+ const writes = steps.flatMap(parallelWritePaths);
20
+ const conflicts = [];
21
+ for (let i = 0; i < writes.length; i++) {
22
+ for (let j = i + 1; j < writes.length; j++) {
23
+ const a = writes[i];
24
+ const b = writes[j];
25
+ if (a.stepId === b.stepId)
26
+ continue;
27
+ const shared = Math.min(a.segments.length, b.segments.length);
28
+ if (!a.segments.slice(0, shared).every((part, index) => part === b.segments[index]))
29
+ continue;
30
+ conflicts.push({
31
+ pathA: a.path, stepA: a.stepId, pathB: b.path, stepB: b.stepId,
32
+ kind: a.segments.length === b.segments.length ? 'exact' : 'ancestor-descendant',
33
+ });
34
+ }
35
+ }
36
+ return conflicts;
37
+ }
38
+ /** A declared read of a concurrently runnable sibling needs an explicit dependency. */
39
+ export function parallelUndeclaredReads(steps) {
40
+ const reads = [];
41
+ for (const step of steps) {
42
+ const paths = [
43
+ ...Object.values(step.inputMapping ?? {}),
44
+ step.condition?.path,
45
+ step.skipCondition?.path,
46
+ ].filter((path) => typeof path === 'string');
47
+ for (const sourcePath of paths) {
48
+ for (const sibling of steps) {
49
+ if (sibling.id === step.id)
50
+ continue;
51
+ if (sourcePath === 'results') {
52
+ reads.push({ stepId: step.id, sourcePath, otherStepId: sibling.id });
53
+ continue;
54
+ }
55
+ if (!sourcePath.startsWith('results.'))
56
+ continue;
57
+ const readSegments = sourcePath.slice('results.'.length).split('.');
58
+ const readsSiblingWrite = parallelWritePaths(sibling).some(write => {
59
+ const shared = Math.min(readSegments.length, write.segments.length);
60
+ return write.segments.slice(0, shared).every((segment, index) => segment === readSegments[index]);
61
+ });
62
+ if (readsSiblingWrite) {
63
+ reads.push({ stepId: step.id, sourcePath, otherStepId: sibling.id });
64
+ }
65
+ }
66
+ }
67
+ }
68
+ return reads;
69
+ }
70
+ /** Canonical, cycle-detecting representation of structured-cloneable values. */
71
+ function canonical(value, ancestors) {
72
+ if (value === null || typeof value === 'string' || typeof value === 'boolean')
73
+ return value;
74
+ if (typeof value === 'number')
75
+ return ['number', String(value)];
76
+ if (typeof value === 'bigint')
77
+ return ['bigint', String(value)];
78
+ if (value === undefined)
79
+ return ['undefined'];
80
+ if (typeof value !== 'object')
81
+ throw new Error('parallel_output_unhashable');
82
+ if (ancestors.has(value))
83
+ throw new Error('parallel_output_cyclic');
84
+ ancestors.add(value);
85
+ try {
86
+ if (value instanceof Date)
87
+ return ['date', value.toISOString()];
88
+ if (value instanceof ArrayBuffer)
89
+ return ['bytes', Buffer.from(value).toString('base64')];
90
+ if (ArrayBuffer.isView(value)) {
91
+ return ['bytes', value.constructor.name, Buffer.from(value.buffer, value.byteOffset, value.byteLength).toString('base64')];
92
+ }
93
+ if (Array.isArray(value))
94
+ return ['array', value.map(item => canonical(item, ancestors))];
95
+ if (value instanceof Set) {
96
+ const entries = [...value].map(item => canonical(item, ancestors));
97
+ return ['set', entries.sort((a, b) => JSON.stringify(a).localeCompare(JSON.stringify(b)))];
98
+ }
99
+ if (value instanceof Map) {
100
+ const entries = [...value].map(([key, item]) => [canonical(key, ancestors), canonical(item, ancestors)]);
101
+ return ['map', entries.sort((a, b) => JSON.stringify(a).localeCompare(JSON.stringify(b)))];
102
+ }
103
+ const record = value;
104
+ return ['object', Object.keys(record).sort().map(key => [key, canonical(record[key], ancestors)])];
105
+ }
106
+ finally {
107
+ ancestors.delete(value);
108
+ }
109
+ }
110
+ export function hashWorkflowValue(value) {
111
+ const payload = JSON.stringify(canonical(value, new Set()));
112
+ return createHash('sha256').update(payload).digest('hex');
113
+ }
114
+ //# sourceMappingURL=workflow-composition.js.map