agentic-qe 3.14.3 → 3.14.5

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 (786) 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 +204 -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/audit/witness-chain.d.ts +1 -1
  219. package/dist/audit/witness-chain.js +29 -22
  220. package/dist/cli/bundle.js +13 -10
  221. package/dist/cli/chunks/adapter-IYC62SXA.js +2 -0
  222. package/dist/cli/chunks/{agent-booster-wasm-TQOMLWWX.js → agent-booster-wasm-EDNKP3SP.js} +2 -2
  223. package/dist/cli/chunks/{agent-handler-Q3SEMMI2.js → agent-handler-V6CZ7Q6S.js} +2 -2
  224. package/dist/cli/chunks/{agent-memory-branch-SJXAQSZI.js → agent-memory-branch-ZMD6ULC3.js} +2 -2
  225. package/dist/cli/chunks/aqe-learning-engine-LLOU2IXD.js +2 -0
  226. package/dist/cli/chunks/{arena-7RC7TBGW.js → arena-4UPAEHFT.js} +4 -4
  227. package/dist/cli/chunks/{arena-UPB7TKUY.js → arena-QLSBESC7.js} +2 -2
  228. package/dist/cli/chunks/{audit-IXN5R4WB.js → audit-CVZQMF55.js} +3 -3
  229. package/dist/cli/chunks/base-P3Z4IKCT.js +2 -0
  230. package/dist/cli/chunks/{better-sqlite3-RP4DEGK3.js → better-sqlite3-4DSBPDRH.js} +2 -2
  231. package/dist/cli/chunks/brain-handler-GBY4EZ4P.js +94 -0
  232. package/dist/cli/chunks/{branch-enumerator-VPRWDGFJ.js → branch-enumerator-XYBVXCNO.js} +2 -2
  233. package/dist/cli/chunks/{browser-B6E7JPPJ.js → browser-32F6MREU.js} +2 -2
  234. package/dist/cli/chunks/browser-workflow-YYHQQ25X.js +2 -0
  235. package/dist/cli/chunks/{chunk-HOQQCY2K.js → chunk-2JGEZHWY.js} +2 -2
  236. package/dist/cli/chunks/{chunk-NN76NTOX.js → chunk-2KJQ2UQE.js} +1 -1
  237. package/dist/cli/chunks/{chunk-D4Z2N74A.js → chunk-2OMLTYQK.js} +1 -1
  238. package/dist/cli/chunks/chunk-37TUN44F.js +4 -0
  239. package/dist/cli/chunks/{chunk-LVLBIKJD.js → chunk-3DDXWYMO.js} +1 -1
  240. package/dist/cli/chunks/{chunk-UHQY3GK7.js → chunk-3EZ5DR2R.js} +3 -3
  241. package/dist/cli/chunks/{chunk-3P6NCFI2.js → chunk-3KDL6QDK.js} +2 -2
  242. package/dist/cli/chunks/{chunk-SG47AXJG.js → chunk-3VIXOHMS.js} +1 -1
  243. package/dist/cli/chunks/{chunk-7FYMDKQH.js → chunk-3YUB5HER.js} +165 -167
  244. package/dist/cli/chunks/chunk-4FWTLJEP.js +16 -0
  245. package/dist/cli/chunks/{chunk-PI74GOE4.js → chunk-52L77RMG.js} +2 -2
  246. package/dist/cli/chunks/{chunk-LS3EUMBP.js → chunk-5D36YHS3.js} +5 -5
  247. package/dist/cli/chunks/{chunk-EY4OQHU3.js → chunk-5WOSWNDN.js} +1 -1
  248. package/dist/cli/chunks/{chunk-F67AV5P2.js → chunk-67YV75XP.js} +2 -2
  249. package/dist/cli/chunks/{chunk-IP7NSFQQ.js → chunk-6A44AOGN.js} +2 -2
  250. package/dist/cli/chunks/{chunk-3ABRGG3C.js → chunk-6CR4VQBQ.js} +2 -2
  251. package/dist/cli/chunks/chunk-6ITZZIQX.js +2 -0
  252. package/dist/cli/chunks/{chunk-7BUERZYL.js → chunk-6LKDHEBY.js} +2 -2
  253. package/dist/cli/chunks/{chunk-FKG5OQFT.js → chunk-6TU7FEMD.js} +1 -1
  254. package/dist/cli/chunks/{chunk-KF63AYXD.js → chunk-6VAZAHQG.js} +2 -2
  255. package/dist/cli/chunks/{chunk-XXCYQXK3.js → chunk-73EI4C2E.js} +2 -2
  256. package/dist/cli/chunks/chunk-75QJ5HWE.js +14 -0
  257. package/dist/cli/chunks/{chunk-72UJXEKQ.js → chunk-7CD7PBHY.js} +2 -2
  258. package/dist/cli/chunks/chunk-7DETTOPZ.js +14 -0
  259. package/dist/cli/chunks/{chunk-7JQHPANT.js → chunk-7JZJJA7U.js} +3 -3
  260. package/dist/cli/chunks/{chunk-5Y5TC6BY.js → chunk-7VFY7TUR.js} +2 -2
  261. package/dist/cli/chunks/chunk-7X7JYWT4.js +27 -0
  262. package/dist/cli/chunks/chunk-AF4XKLXO.js +2 -0
  263. package/dist/cli/chunks/{chunk-7SLAZAVU.js → chunk-AFEDJ3RU.js} +2 -2
  264. package/dist/cli/chunks/{chunk-ZUG5MOUB.js → chunk-AMMQOV35.js} +2 -2
  265. package/dist/cli/chunks/{chunk-ZN3J6TZD.js → chunk-BHFR2EXL.js} +1 -1
  266. package/dist/cli/chunks/{chunk-HXE5NBJG.js → chunk-BJPL6THQ.js} +1 -1
  267. package/dist/cli/chunks/{chunk-37BASGWC.js → chunk-BXVAVFGU.js} +2 -2
  268. package/dist/cli/chunks/{chunk-VWNHKYK7.js → chunk-BYG36QC5.js} +2 -2
  269. package/dist/cli/chunks/chunk-C3HQL6S4.js +2 -0
  270. package/dist/cli/chunks/{chunk-OY7MLMEX.js → chunk-C3Z4VVHP.js} +5 -5
  271. package/dist/cli/chunks/{chunk-CB5JPRIZ.js → chunk-CPC7FN52.js} +2 -2
  272. package/dist/cli/chunks/{chunk-OVDKWCD7.js → chunk-CVMNJSCB.js} +2 -2
  273. package/dist/cli/chunks/{chunk-N4H2QOT5.js → chunk-CYE2TJFV.js} +2 -2
  274. package/dist/cli/chunks/{chunk-YCBDE2N7.js → chunk-CZO4BJG5.js} +2 -2
  275. package/dist/cli/chunks/{chunk-YEXPFHV6.js → chunk-D6OUCB2H.js} +2 -2
  276. package/dist/cli/chunks/{chunk-JRYZKBY2.js → chunk-DDCIYOGT.js} +2 -2
  277. package/dist/cli/chunks/{chunk-XX7HUSX2.js → chunk-DKUBQQFG.js} +2 -2
  278. package/dist/cli/chunks/{chunk-SGXSB7YO.js → chunk-DLF5BOJD.js} +1 -1
  279. package/dist/cli/chunks/{chunk-5BLFXQEB.js → chunk-DO6EI5KB.js} +1 -1
  280. package/dist/cli/chunks/{chunk-33VPWGCM.js → chunk-DPBRWP4J.js} +3 -3
  281. package/dist/cli/chunks/{chunk-H6XBM2LY.js → chunk-E3W6XQ57.js} +2 -2
  282. package/dist/cli/chunks/{chunk-KPMGTVB4.js → chunk-E4AZXCT5.js} +1 -1
  283. package/dist/cli/chunks/chunk-E4EYPYR3.js +2 -0
  284. package/dist/cli/chunks/{chunk-TFHQE6NK.js → chunk-EFV4ADMO.js} +4 -4
  285. package/dist/cli/chunks/{chunk-VIDBBB6F.js → chunk-ELBZON4V.js} +2 -2
  286. package/dist/cli/chunks/chunk-EOR2UT72.js +2 -0
  287. package/dist/cli/chunks/{chunk-H5ZRV5K5.js → chunk-F34OAHOM.js} +2 -2
  288. package/dist/cli/chunks/{chunk-UMENRGHK.js → chunk-FUNGTIF2.js} +2 -2
  289. package/dist/cli/chunks/{chunk-DBA3N742.js → chunk-G3L5L6YQ.js} +1 -1
  290. package/dist/cli/chunks/{chunk-ELU4IC3I.js → chunk-G3W6BMVJ.js} +1 -1
  291. package/dist/cli/chunks/{chunk-RTJ2M6V6.js → chunk-GTKCGPJZ.js} +3 -3
  292. package/dist/cli/chunks/chunk-HBCGYMQU.js +2 -0
  293. package/dist/cli/chunks/{chunk-YL7T3VV7.js → chunk-HSVKZ5KI.js} +4 -4
  294. package/dist/cli/chunks/{chunk-MXMFGSWR.js → chunk-HVU64GP5.js} +2 -2
  295. package/dist/cli/chunks/chunk-HVXJC3OC.js +2 -0
  296. package/dist/cli/chunks/chunk-HYEJJJY3.js +4 -0
  297. package/dist/cli/chunks/{chunk-CR3QGHVN.js → chunk-I2NENQ44.js} +2 -2
  298. package/dist/cli/chunks/{chunk-GNTVFN7D.js → chunk-I6X3EGJI.js} +1 -1
  299. package/dist/cli/chunks/{chunk-2GNRW3OD.js → chunk-IGBEJ4UJ.js} +2 -2
  300. package/dist/cli/chunks/{chunk-UYJHYMEQ.js → chunk-IIAR5S7Q.js} +2 -2
  301. package/dist/cli/chunks/{chunk-YAKS3CAB.js → chunk-IJHCIXJC.js} +2 -2
  302. package/dist/cli/chunks/{chunk-YDNSLLBS.js → chunk-IUDWEOLX.js} +2 -2
  303. package/dist/cli/chunks/chunk-IUHB5GVS.js +3 -0
  304. package/dist/cli/chunks/{chunk-4UDZLD42.js → chunk-IYTLXUBO.js} +2 -2
  305. package/dist/cli/chunks/chunk-J27F4NSB.js +2 -0
  306. package/dist/cli/chunks/{chunk-HRUU7E3D.js → chunk-J5UNP6W3.js} +2 -2
  307. package/dist/cli/chunks/{chunk-E3FBW6G2.js → chunk-JES6R5KP.js} +1 -1
  308. package/dist/cli/chunks/chunk-JROVR6YS.js +11 -0
  309. package/dist/cli/chunks/chunk-JSZ663MU.js +2 -0
  310. package/dist/cli/chunks/{chunk-FUE6LL72.js → chunk-JVQBWYHW.js} +2 -2
  311. package/dist/cli/chunks/{chunk-G6ZHTF42.js → chunk-K27SU3RE.js} +2 -2
  312. package/dist/cli/chunks/chunk-K7NJHFLZ.js +54 -0
  313. package/dist/cli/chunks/{chunk-MDZ6RRLX.js → chunk-KEY43ANX.js} +2 -2
  314. package/dist/cli/chunks/chunk-KIP6WZGV.js +13 -0
  315. package/dist/cli/chunks/{chunk-SQ3PPISY.js → chunk-KKHYJF5U.js} +1 -1
  316. package/dist/cli/chunks/{chunk-TJEIOE7F.js → chunk-KLTP5IDB.js} +1 -1
  317. package/dist/cli/chunks/{chunk-IKIITGU5.js → chunk-KO4FNAUR.js} +4 -4
  318. package/dist/cli/chunks/{chunk-DX3C5HPN.js → chunk-KYA5LARK.js} +1 -1
  319. package/dist/cli/chunks/{chunk-ZHXWGNYM.js → chunk-LSUILON7.js} +1 -1
  320. package/dist/cli/chunks/chunk-LULD4JV2.js +15 -0
  321. package/dist/cli/chunks/{chunk-MWWAMDHI.js → chunk-M23ZOZVY.js} +1 -1
  322. package/dist/cli/chunks/{chunk-RKJZWWB7.js → chunk-M5AEL7IS.js} +2 -2
  323. package/dist/cli/chunks/chunk-MI5Q55DG.js +65 -0
  324. package/dist/cli/chunks/chunk-N7H767TP.js +4 -0
  325. package/dist/cli/chunks/{chunk-5F6DWHQG.js → chunk-NQI7FWCS.js} +2 -2
  326. package/dist/cli/chunks/{chunk-LLVGTEHU.js → chunk-NRE4NAVA.js} +1 -1
  327. package/dist/cli/chunks/{chunk-XA7CG3LH.js → chunk-NU7UTXMP.js} +2 -2
  328. package/dist/cli/chunks/chunk-NVYBM3R4.js +2 -0
  329. package/dist/cli/chunks/chunk-O3JTQ7N4.js +2 -0
  330. package/dist/cli/chunks/{chunk-TISSZFHO.js → chunk-OEIQTWQP.js} +1 -1
  331. package/dist/cli/chunks/{chunk-2IGT5WNQ.js → chunk-PSPKSUF6.js} +1 -1
  332. package/dist/cli/chunks/{chunk-B7SWW5A6.js → chunk-QIRL6B3C.js} +2 -2
  333. package/dist/cli/chunks/{chunk-JBB7E26R.js → chunk-QRCIZFNK.js} +2 -2
  334. package/dist/cli/chunks/{chunk-4JBFJTHJ.js → chunk-QWUXCG2L.js} +1 -1
  335. package/dist/cli/chunks/{chunk-B5XFDFBT.js → chunk-QYOGD2VW.js} +1 -1
  336. package/dist/cli/chunks/chunk-QZMUXJHZ.js +2 -0
  337. package/dist/cli/chunks/chunk-R6IU3EWP.js +2 -0
  338. package/dist/cli/chunks/{chunk-G5C2XVZC.js → chunk-R74ZKREV.js} +1 -1
  339. package/dist/cli/chunks/chunk-RD2VGOUH.js +2 -0
  340. package/dist/cli/chunks/{chunk-OV5EZO3U.js → chunk-RD6TEZ64.js} +2 -2
  341. package/dist/cli/chunks/{chunk-4C6UJIHB.js → chunk-RGGK6VZ7.js} +1 -1
  342. package/dist/cli/chunks/{chunk-4XPPMADQ.js → chunk-RIZVC4XY.js} +6 -6
  343. package/dist/cli/chunks/{chunk-4RP5VUBI.js → chunk-RKOUXVZZ.js} +2 -2
  344. package/dist/cli/chunks/{chunk-IFFZR6GY.js → chunk-RP2ZKPYV.js} +1 -1
  345. package/dist/cli/chunks/{chunk-BN7DKW5D.js → chunk-SQF6HRXR.js} +1 -1
  346. package/dist/cli/chunks/chunk-SQKW3B6B.js +2 -0
  347. package/dist/cli/chunks/{chunk-LKN7JQTW.js → chunk-SX4JLSLV.js} +2 -2
  348. package/dist/cli/chunks/{chunk-YGB6R5DW.js → chunk-TUSSPKRM.js} +1 -1
  349. package/dist/cli/chunks/{chunk-LHGNNZ76.js → chunk-TY5WC3FT.js} +3 -3
  350. package/dist/cli/chunks/{chunk-B2ZONZPZ.js → chunk-UDHVCKGA.js} +2 -2
  351. package/dist/cli/chunks/{chunk-IU4EBTA2.js → chunk-UJWAWIRV.js} +4 -4
  352. package/dist/cli/chunks/{chunk-LTBCAFTZ.js → chunk-UKGXWW64.js} +3 -3
  353. package/dist/cli/chunks/{chunk-JV4FZUE7.js → chunk-UMGFMKDW.js} +2 -2
  354. package/dist/cli/chunks/{chunk-STRDSVH3.js → chunk-URVHZPWY.js} +2 -2
  355. package/dist/cli/chunks/{chunk-PZTVH2AS.js → chunk-UTBYJ4RF.js} +2 -2
  356. package/dist/cli/chunks/{chunk-ZK5JKHP4.js → chunk-VD5IO5EO.js} +1 -1
  357. package/dist/cli/chunks/chunk-VTOVWHEM.js +2 -0
  358. package/dist/cli/chunks/{chunk-OYMLHX2B.js → chunk-W2XCZU62.js} +1 -1
  359. package/dist/cli/chunks/{chunk-T35GZXTU.js → chunk-WJHWH5D2.js} +2 -2
  360. package/dist/cli/chunks/{chunk-NBWQBQO5.js → chunk-WJTSY5MC.js} +1 -1
  361. package/dist/cli/chunks/{chunk-NTSXHZTC.js → chunk-WK7B4B6Y.js} +4 -4
  362. package/dist/cli/chunks/{chunk-2WT7AKKK.js → chunk-WLXK2KNU.js} +2 -2
  363. package/dist/cli/chunks/chunk-WOIGKU2N.js +180 -0
  364. package/dist/cli/chunks/{chunk-WYMGK5DX.js → chunk-WX6RRIGW.js} +2 -2
  365. package/dist/cli/chunks/{chunk-C46DMCWF.js → chunk-XEZIIQYJ.js} +2 -2
  366. package/dist/cli/chunks/{chunk-TTMHIOQ3.js → chunk-XFPPERA2.js} +2 -2
  367. package/dist/cli/chunks/{chunk-OVPJQWHW.js → chunk-XLAUGSW7.js} +2 -2
  368. package/dist/cli/chunks/{chunk-V4AOVDCJ.js → chunk-XQSIRBKT.js} +8 -8
  369. package/dist/cli/chunks/{chunk-4Q35TI6Z.js → chunk-XUR2M2WB.js} +2 -2
  370. package/dist/cli/chunks/{chunk-5IAB5NRZ.js → chunk-XZSMZHM2.js} +2 -2
  371. package/dist/cli/chunks/{chunk-AB4U6ZNI.js → chunk-Y5L3ES4L.js} +2 -2
  372. package/dist/cli/chunks/chunk-YDFL445W.js +2 -0
  373. package/dist/cli/chunks/{chunk-7G6UX2QN.js → chunk-YQGPQBCX.js} +2 -2
  374. package/dist/cli/chunks/{chunk-5FOZO7KM.js → chunk-YXP6BKGS.js} +46 -46
  375. package/dist/cli/chunks/chunk-ZBABIZ2D.js +2 -0
  376. package/dist/cli/chunks/{chunk-IQEJGZV6.js → chunk-ZCWERUYB.js} +4 -4
  377. package/dist/cli/chunks/ci-RACDAJMR.js +81 -0
  378. package/dist/cli/chunks/{ci-output-LK3MBXLZ.js → ci-output-EHRSZBKG.js} +2 -2
  379. package/dist/cli/chunks/{circuit-breaker-7AIXACR7.js → circuit-breaker-GBV7M5XG.js} +2 -2
  380. package/dist/cli/chunks/{claude-flow-setup-UA7EO6VN.js → claude-flow-setup-5LVJOFKP.js} +2 -2
  381. package/dist/cli/chunks/client-HUVFA5PF.js +2 -0
  382. package/dist/cli/chunks/{cline-installer-YDDCKKEV.js → cline-installer-W4NMXJSG.js} +2 -2
  383. package/dist/cli/chunks/{code-URB7UAKW.js → code-JWXJMYXB.js} +29 -29
  384. package/dist/cli/chunks/{code-index-extractor-BL6HWH4Q.js → code-index-extractor-RVI2IFTM.js} +2 -2
  385. package/dist/cli/chunks/codex-installer-3BORJINH.js +14 -0
  386. package/dist/cli/chunks/{completions-RCKBSSSS.js → completions-A55NCTAO.js} +2 -2
  387. package/dist/cli/chunks/complexity-analyzer-JCXHGGLY.js +2 -0
  388. package/dist/cli/chunks/{continuedev-installer-VOTCEBFH.js → continuedev-installer-PUVFMGYW.js} +2 -2
  389. package/dist/cli/chunks/{copilot-installer-NVTGLZX3.js → copilot-installer-4DCMYWHB.js} +2 -2
  390. package/dist/cli/chunks/core-handlers-UEXO3VAA.js +2 -0
  391. package/dist/cli/chunks/cost-tracker-5TV2GGKY.js +2 -0
  392. package/dist/cli/chunks/{coverage-ZTPJWXWE.js → coverage-NNWM7TX3.js} +3 -3
  393. package/dist/cli/chunks/cross-domain-router-ODU5IZD6.js +2 -0
  394. package/dist/cli/chunks/{cursor-installer-CMGJQMHX.js → cursor-installer-4NCHGJGK.js} +2 -2
  395. package/dist/cli/chunks/{daemon-Y2I3YVIU.js → daemon-QIKCXKWO.js} +4 -4
  396. package/dist/cli/chunks/{daemon-V456IWR3.js → daemon-T4JO4IXP.js} +3 -3
  397. package/dist/cli/chunks/{dag-attention-scheduler-ZCBBOD3D.js → dag-attention-scheduler-RPAAIDAD.js} +2 -2
  398. package/dist/cli/chunks/{detect-2GHEA4A3.js → detect-SBEEVDSN.js} +2 -2
  399. package/dist/cli/chunks/{dist-node-44AGYJCH.js → dist-node-ZHI6NCSU.js} +2 -2
  400. package/dist/cli/chunks/{domain-handler-IDLIEP6X.js → domain-handler-LBC3GJ7Z.js} +2 -2
  401. package/dist/cli/chunks/domain-plugins-H6IZ5USZ.js +2 -0
  402. package/dist/cli/chunks/{domain-transfer-KLEXGIRF.js → domain-transfer-JZA5TMW3.js} +2 -2
  403. package/dist/cli/chunks/dream-HE3OX42F.js +2 -0
  404. package/dist/cli/chunks/embed-and-insert-pattern-AHTR7CRU.js +3 -0
  405. package/dist/cli/chunks/eval-DZU2KISM.js +17 -0
  406. package/dist/cli/chunks/{experience-capture-middleware-CJJJN7CF.js → experience-capture-middleware-5IQCWKSL.js} +4 -4
  407. package/dist/cli/chunks/{fast-paths-LGLLKX6P.js → fast-paths-2KLDUWCY.js} +2 -2
  408. package/dist/cli/chunks/{feature-flags-33D3I4DD.js → feature-flags-7AC3XDZA.js} +2 -2
  409. package/dist/cli/chunks/{feature-flags-QL4NCEGW.js → feature-flags-N6UAEZY4.js} +2 -2
  410. package/dist/cli/chunks/{file-discovery-GKCYJPFZ.js → file-discovery-5SDIW4V2.js} +2 -2
  411. package/dist/cli/chunks/fleet-ZIQCAZ2Y.js +43 -0
  412. package/dist/cli/chunks/{gnn-wrapper-ELSGT67Z.js → gnn-wrapper-DUMBZJEV.js} +2 -2
  413. package/dist/cli/chunks/{heartbeat-handler-ZUI3DOOP.js → heartbeat-handler-6HVM6ZMR.js} +4 -4
  414. package/dist/cli/chunks/heartbeat-scheduler-QUIFGGLX.js +2 -0
  415. package/dist/cli/chunks/hnsw-adapter-42KB37KP.js +2 -0
  416. package/dist/cli/chunks/hnsw-index-T2PGO77J.js +2 -0
  417. package/dist/cli/chunks/{hnsw-legacy-bridge-EZMM5JWL.js → hnsw-legacy-bridge-5DRL5FLX.js} +2 -2
  418. package/dist/cli/chunks/{hnswlib-node-G4CE3EOS.js → hnswlib-node-GW67GTCL.js} +2 -2
  419. package/dist/cli/chunks/{hooks-LCVXXA55.js → hooks-QHH6FVO4.js} +10 -10
  420. package/dist/cli/chunks/hybrid-backend-FRNWYRKH.js +2 -0
  421. package/dist/cli/chunks/{hypergraph-engine-6Z7RQ3HI.js → hypergraph-engine-7XDCCVG2.js} +2 -2
  422. package/dist/cli/chunks/{hypergraph-handler-PLI2GYPK.js → hypergraph-handler-QHF7NOU5.js} +3 -3
  423. package/dist/cli/chunks/impact-analyzer-A5QYOYBR.js +2 -0
  424. package/dist/cli/chunks/{init-handler-7VH3QJ5Y.js → init-handler-5UIVOM7K.js} +6 -6
  425. package/dist/cli/chunks/init-wizard-XBU674YH.js +2 -0
  426. package/dist/cli/chunks/kernel-DV5MTNZD.js +2 -0
  427. package/dist/cli/chunks/{kilocode-installer-U3MW62DE.js → kilocode-installer-TGGV6K5Q.js} +2 -2
  428. package/dist/cli/chunks/{kiro-installer-PPEAC44T.js → kiro-installer-4XYBHZWW.js} +12 -12
  429. package/dist/cli/chunks/knowledge-graph-4ACGVJQK.js +2 -0
  430. package/dist/cli/chunks/learning-STE5W6BS.js +122 -0
  431. package/dist/cli/chunks/llm-router-NKF7J3RI.js +37 -0
  432. package/dist/cli/chunks/llm-router-service-PSMASERT.js +2 -0
  433. package/dist/cli/chunks/{load-VO7ABNHV.js → load-B2T77UJQ.js} +2 -2
  434. package/dist/cli/chunks/load-test-MRUO2VPF.js +2 -0
  435. package/dist/cli/chunks/mcp-JGSFCEMH.js +2 -0
  436. package/dist/cli/chunks/{memory-FZTT7ADM.js → memory-WRFZKG56.js} +6 -6
  437. package/dist/cli/chunks/memory-backend-2MPGI6JW.js +2 -0
  438. package/dist/cli/chunks/memory-handlers-XT4HMITB.js +2 -0
  439. package/dist/cli/chunks/multi-model-executor-26Q5BSVG.js +14 -0
  440. package/dist/cli/chunks/{opencode-installer-GQ7J5SBG.js → opencode-installer-J36EMQU7.js} +2 -2
  441. package/dist/cli/chunks/{orchestrator-66JK2OS5.js → orchestrator-D5IFV65I.js} +20 -20
  442. package/dist/cli/chunks/pattern-null-store-TGWUL237.js +2 -0
  443. package/dist/cli/chunks/{pattern-usage-recorder-O6XHM2G5.js → pattern-usage-recorder-BVMTWI3E.js} +2 -2
  444. package/dist/cli/chunks/pipeline-OWAHDUAQ.js +19 -0
  445. package/dist/cli/chunks/platform-ANGBFWBV.js +2 -0
  446. package/dist/cli/chunks/{plugin-7OFLNGOS.js → plugin-OO7ON2YW.js} +2 -2
  447. package/dist/cli/chunks/{prime-radiant-advanced-wasm-OSRDK2FW.js → prime-radiant-advanced-wasm-HFG3BXWU.js} +2 -2
  448. package/dist/cli/chunks/project-root-LNOYVTYY.js +2 -0
  449. package/dist/cli/chunks/protocol-executor-GEVH5KD6.js +2 -0
  450. package/dist/cli/chunks/{protocol-handler-WLYTX6FS.js → protocol-handler-CE3Q6LY4.js} +2 -2
  451. package/dist/cli/chunks/{prove-QVNE4V3J.js → prove-7XPN53PY.js} +2 -2
  452. package/dist/cli/chunks/qe-reasoning-bank-DJ2JL6QB.js +2 -0
  453. package/dist/cli/chunks/{quality-DNE2RKE5.js → quality-TT23JRFX.js} +2 -2
  454. package/dist/cli/chunks/{quality-gate-2K35GCSI.js → quality-gate-PPPRP255.js} +3 -3
  455. package/dist/cli/chunks/queen-coordinator-F7E3AS26.js +2 -0
  456. package/dist/cli/chunks/real-embeddings-EYNZIFJE.js +2 -0
  457. package/dist/cli/chunks/ref-validation-QQR64ZXD.js +2 -0
  458. package/dist/cli/chunks/{roocode-installer-NCEZPF5L.js → roocode-installer-UIGS7ZJD.js} +2 -2
  459. package/dist/cli/chunks/router-OZH3QSAU.js +2 -0
  460. package/dist/cli/chunks/routing-feedback-J2E3ADZB.js +2 -0
  461. package/dist/cli/chunks/{routing-handler-4MXXZRYP.js → routing-handler-6AENUIRG.js} +4 -4
  462. package/dist/cli/chunks/{ruvector-commands-WDFMMCMK.js → ruvector-commands-5AWMEV34.js} +2 -2
  463. package/dist/cli/chunks/rvf-dual-writer-HK525Y5Y.js +2 -0
  464. package/dist/cli/chunks/rvf-migration-adapter-Q7FB3BKR.js +2 -0
  465. package/dist/cli/chunks/rvf-migration-coordinator-NWRJ7C22.js +2 -0
  466. package/dist/cli/chunks/rvf-native-adapter-5ZRCGUI6.js +2 -0
  467. package/dist/cli/chunks/rvf-store-integrity-ISKRP563.js +2 -0
  468. package/dist/cli/chunks/safe-db-3OYEPVEH.js +2 -0
  469. package/dist/cli/chunks/schedule-AG4C2EIQ.js +2 -0
  470. package/dist/cli/chunks/scheduler-SQS2CZFZ.js +2 -0
  471. package/dist/cli/chunks/{security-CJJ3WJSB.js → security-325A7FMB.js} +3 -3
  472. package/dist/cli/chunks/{shared-rvf-adapter-6RGCTLHD.js → shared-rvf-adapter-NFL6QSZ6.js} +2 -2
  473. package/dist/cli/chunks/{shared-rvf-dual-writer-KIA6Q6MT.js → shared-rvf-dual-writer-THFDYS2Z.js} +2 -2
  474. package/dist/cli/chunks/sqlite-persistence-MAKDFSHC.js +2 -0
  475. package/dist/cli/chunks/standalone-memory-UD4MJ6GZ.js +2 -0
  476. package/dist/cli/chunks/{status-handler-BADQV2KA.js → status-handler-CPFTN4XL.js} +2 -2
  477. package/dist/cli/chunks/{structural-health-VMYEYRZG.js → structural-health-2MG2IVBL.js} +2 -2
  478. package/dist/cli/chunks/{sync-PXLROLHB.js → sync-EE4VVKOW.js} +2 -2
  479. package/dist/cli/chunks/{sync-ULY7T5II.js → sync-MBTW5XBF.js} +2 -2
  480. package/dist/cli/chunks/task-handler-7H5OYJG4.js +54 -0
  481. package/dist/cli/chunks/task-handlers-NH4GJHCJ.js +9 -0
  482. package/dist/cli/chunks/{test-WCLURQUT.js → test-MPHGT4T6.js} +4 -4
  483. package/dist/cli/chunks/test-scheduling-CHQ4ZLLJ.js +15 -0
  484. package/dist/cli/chunks/token-bootstrap-SSDCYEKK.js +2 -0
  485. package/dist/cli/chunks/{token-usage-DRVG6PKO.js → token-usage-EBXUJNRB.js} +2 -2
  486. package/dist/cli/chunks/{transformers-IMDDAMYQ.js → transformers-ZEKS2OJZ.js} +2 -2
  487. package/dist/cli/chunks/{tree-sitter-wasm-parser-WBZIHVFA.js → tree-sitter-wasm-parser-J6ZMAK37.js} +2 -2
  488. package/dist/cli/chunks/types-KYAA5VLV.js +2 -0
  489. package/dist/cli/chunks/unified-memory-DDWMC435.js +2 -0
  490. package/dist/cli/chunks/unified-memory-hnsw-4JA7SGBK.js +2 -0
  491. package/dist/cli/chunks/unified-persistence-F6OSNTXY.js +2 -0
  492. package/dist/cli/chunks/{upgrade-6ALSDWDD.js → upgrade-UJBJ5AYM.js} +2 -2
  493. package/dist/cli/chunks/{validate-XF4ZG3LC.js → validate-RUV6YMWS.js} +2 -2
  494. package/dist/cli/chunks/{validate-swarm-P5TAFRDA.js → validate-swarm-IVEVMGVM.js} +2 -2
  495. package/dist/cli/chunks/{vibium-2XDXKNKZ.js → vibium-HOGMFJ2Z.js} +2 -2
  496. package/dist/cli/chunks/visual-security-25SMBIYT.js +2 -0
  497. package/dist/cli/chunks/{web-tree-sitter-4JVRQPX5.js → web-tree-sitter-AVWA6HKE.js} +2 -2
  498. package/dist/cli/chunks/{windsurf-installer-WYJXVDO5.js → windsurf-installer-DAH7HI2W.js} +2 -2
  499. package/dist/cli/chunks/{witness-chain-RPZ2SE2V.js → witness-chain-PJOQPFUX.js} +2 -2
  500. package/dist/cli/chunks/witness-chain-ZW6KKUZU.js +2 -0
  501. package/dist/cli/chunks/{witness-key-manager-LXG2VBQQ.js → witness-key-manager-JSTBMG43.js} +2 -2
  502. package/dist/cli/chunks/workflow-TWOIA6LZ.js +51 -0
  503. package/dist/cli/chunks/workflow-orchestrator-UKSIDM7Q.js +2 -0
  504. package/dist/cli/chunks/{wrappers-DIJNNFU6.js → wrappers-UR7BLXKV.js} +2 -2
  505. package/dist/cli/commands/ci.js +54 -28
  506. package/dist/cli/commands/code.js +6 -0
  507. package/dist/cli/commands/eval.js +3 -2
  508. package/dist/cli/commands/fleet.js +35 -16
  509. package/dist/cli/commands/learning-snapshot.d.ts +38 -0
  510. package/dist/cli/commands/learning-snapshot.js +171 -0
  511. package/dist/cli/commands/learning.js +16 -64
  512. package/dist/cli/commands/llm-router.js +13 -12
  513. package/dist/cli/commands/mcp.js +6 -0
  514. package/dist/cli/commands/memory.d.ts +1 -1
  515. package/dist/cli/commands/memory.js +8 -8
  516. package/dist/cli/commands/pipeline.js +9 -0
  517. package/dist/cli/commands/platform.js +15 -2
  518. package/dist/cli/commands/upgrade.d.ts +3 -3
  519. package/dist/cli/commands/upgrade.js +3 -3
  520. package/dist/cli/commands/workflow.js +9 -1
  521. package/dist/cli/handlers/init-handler.d.ts +10 -0
  522. package/dist/cli/handlers/task-handler.js +43 -12
  523. package/dist/cli/helpers/domain-plugins.d.ts +5 -0
  524. package/dist/cli/helpers/domain-plugins.js +11 -0
  525. package/dist/cli/helpers/standalone-memory.d.ts +12 -0
  526. package/dist/cli/helpers/standalone-memory.js +46 -0
  527. package/dist/cli/index.js +54 -49
  528. package/dist/cli/log-gate.d.ts +66 -0
  529. package/dist/cli/log-gate.js +170 -0
  530. package/dist/cli/utils/ci-config.d.ts +3 -0
  531. package/dist/context/sources/git-source.d.ts +2 -0
  532. package/dist/context/sources/git-source.js +9 -2
  533. package/dist/coordination/cancelled-task-settlement.d.ts +11 -0
  534. package/dist/coordination/cancelled-task-settlement.js +15 -0
  535. package/dist/coordination/consensus/providers/claude-provider.d.ts +2 -2
  536. package/dist/coordination/consensus/providers/claude-provider.js +18 -25
  537. package/dist/coordination/consensus/providers/gemini-provider.d.ts +14 -4
  538. package/dist/coordination/consensus/providers/gemini-provider.js +39 -36
  539. package/dist/coordination/consensus/providers/ollama-provider.d.ts +8 -7
  540. package/dist/coordination/consensus/providers/ollama-provider.js +16 -18
  541. package/dist/coordination/consensus/providers/openai-provider.d.ts +14 -4
  542. package/dist/coordination/consensus/providers/openai-provider.js +36 -34
  543. package/dist/coordination/consensus/providers/openrouter-provider.d.ts +5 -5
  544. package/dist/coordination/consensus/providers/openrouter-provider.js +64 -37
  545. package/dist/coordination/handlers/test-execution-handlers.js +5 -3
  546. package/dist/coordination/interfaces.d.ts +2 -2
  547. package/dist/coordination/protocol-executor.js +68 -9
  548. package/dist/coordination/queen-coordinator.js +10 -4
  549. package/dist/coordination/queen-event-handlers.js +17 -0
  550. package/dist/coordination/queen-task-management.js +25 -0
  551. package/dist/coordination/queen-types.d.ts +2 -0
  552. package/dist/coordination/task-executor.js +4 -8
  553. package/dist/coordination/workflow-composition.d.ts +19 -0
  554. package/dist/coordination/workflow-composition.js +114 -0
  555. package/dist/coordination/workflow-orchestrator.d.ts +3 -2
  556. package/dist/coordination/workflow-orchestrator.js +219 -85
  557. package/dist/coordination/workflow-types.d.ts +30 -1
  558. package/dist/coordination/yaml-pipeline-loader.js +9 -5
  559. package/dist/domains/chaos-resilience/services/chaos-engineer.js +2 -7
  560. package/dist/domains/code-intelligence/services/knowledge-graph.js +2 -7
  561. package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +9 -40
  562. package/dist/domains/constants.d.ts +1 -6
  563. package/dist/domains/constants.js +2 -6
  564. package/dist/domains/contract-testing/services/contract-validator.js +2 -7
  565. package/dist/domains/coverage-analysis/services/coverage-analyzer.js +2 -12
  566. package/dist/domains/coverage-analysis/services/gap-detector.js +2 -7
  567. package/dist/domains/defect-intelligence/services/defect-predictor.js +2 -12
  568. package/dist/domains/defect-intelligence/services/root-cause-analyzer.js +2 -7
  569. package/dist/domains/learning-optimization/services/learning-coordinator.js +2 -7
  570. package/dist/domains/quality-assessment/services/deployment-advisor.js +2 -7
  571. package/dist/domains/quality-assessment/services/quality-analyzer.js +2 -7
  572. package/dist/domains/requirements-validation/services/requirements-validator.js +2 -7
  573. package/dist/domains/security-compliance/services/scanners/sast-scanner.js +3 -7
  574. package/dist/domains/test-execution/services/flaky-detector.js +33 -3
  575. package/dist/domains/test-execution/services/retry-handler.js +22 -14
  576. package/dist/domains/test-execution/services/test-executor.js +42 -21
  577. package/dist/domains/test-generation/services/test-generator.js +2 -7
  578. package/dist/domains/visual-accessibility/services/visual-tester.js +2 -7
  579. package/dist/init/codex-installer.js +18 -6
  580. package/dist/init/init-wizard-steps.js +1 -1
  581. package/dist/init/kiro-installer.js +9 -8
  582. package/dist/init/opencode-installer.js +1 -1
  583. package/dist/init/orchestrator.js +1 -0
  584. package/dist/init/phases/07-hooks.js +4 -2
  585. package/dist/init/phases/09-assets.d.ts +10 -0
  586. package/dist/init/phases/09-assets.js +3 -0
  587. package/dist/init/phases/12-verification.js +1 -1
  588. package/dist/init/settings-merge.d.ts +10 -3
  589. package/dist/init/settings-merge.js +40 -9
  590. package/dist/init/token-bootstrap.d.ts +1 -1
  591. package/dist/init/token-bootstrap.js +12 -2
  592. package/dist/init/types.d.ts +10 -0
  593. package/dist/integrations/agentic-flow/model-router/types.js +6 -8
  594. package/dist/integrations/ruvector/brain-exporter.js +26 -15
  595. package/dist/integrations/ruvector/brain-import-audit.d.ts +20 -0
  596. package/dist/integrations/ruvector/brain-import-audit.js +22 -0
  597. package/dist/integrations/ruvector/brain-rvf-exporter.js +33 -30
  598. package/dist/integrations/ruvector/brain-shared.d.ts +5 -1
  599. package/dist/integrations/ruvector/brain-shared.js +70 -4
  600. package/dist/integrations/ruvector/rvf-dual-writer.js +42 -16
  601. package/dist/integrations/ruvector/rvf-store-integrity.d.ts +14 -9
  602. package/dist/integrations/ruvector/rvf-store-integrity.js +39 -9
  603. package/dist/integrations/ruvector/shared-rvf-adapter.js +20 -23
  604. package/dist/kernel/hybrid-backend.d.ts +6 -0
  605. package/dist/kernel/hybrid-backend.js +18 -0
  606. package/dist/kernel/kernel.js +9 -14
  607. package/dist/kernel/memory-factory.js +14 -4
  608. package/dist/kernel/project-root.d.ts +1 -1
  609. package/dist/kernel/project-root.js +33 -10
  610. package/dist/kernel/unified-memory.js +1 -1
  611. package/dist/learning/embedder-identity-store.js +4 -3
  612. package/dist/learning/local-judge-client.d.ts +6 -5
  613. package/dist/learning/local-judge-client.js +7 -6
  614. package/dist/learning/pattern-store.js +34 -12
  615. package/dist/learning/real-embeddings.d.ts +8 -0
  616. package/dist/learning/real-embeddings.js +16 -0
  617. package/dist/learning/rvf-pattern-store.js +10 -3
  618. package/dist/mcp/bundle.js +480 -480
  619. package/dist/mcp/entry.js +2 -0
  620. package/dist/mcp/handlers/index.d.ts +1 -1
  621. package/dist/mcp/handlers/index.js +1 -1
  622. package/dist/mcp/handlers/memory-handlers.d.ts +6 -1
  623. package/dist/mcp/handlers/memory-handlers.js +44 -22
  624. package/dist/mcp/handlers/pipeline-handlers.d.ts +31 -1
  625. package/dist/mcp/handlers/pipeline-handlers.js +63 -0
  626. package/dist/mcp/handlers/task-handlers.d.ts +1 -0
  627. package/dist/mcp/handlers/task-handlers.js +26 -5
  628. package/dist/mcp/protocol-server.d.ts +2 -0
  629. package/dist/mcp/protocol-server.js +105 -49
  630. package/dist/mcp/security/sampling-server.js +2 -1
  631. package/dist/mcp/services/session-store.js +5 -1
  632. package/dist/mcp/tool-annotations.js +1 -1
  633. package/dist/mcp/tools/test-execution/schedule.js +7 -0
  634. package/dist/mcp/types.d.ts +5 -1
  635. package/dist/optimization/session-cache.d.ts +5 -0
  636. package/dist/optimization/session-cache.js +23 -0
  637. package/dist/plugins/cache.d.ts +2 -0
  638. package/dist/plugins/cache.js +15 -2
  639. package/dist/plugins/lifecycle.js +15 -2
  640. package/dist/plugins/manifest.js +7 -5
  641. package/dist/plugins/resolver.d.ts +13 -22
  642. package/dist/plugins/resolver.js +169 -61
  643. package/dist/plugins/version-policy.d.ts +13 -0
  644. package/dist/plugins/version-policy.js +18 -0
  645. package/dist/routing/advisor/multi-model-executor.d.ts +4 -1
  646. package/dist/routing/advisor/multi-model-executor.js +8 -1
  647. package/dist/routing/free-tier/ladder.d.ts +2 -1
  648. package/dist/routing/free-tier/ladder.js +3 -2
  649. package/dist/routing/security/cyber-pin.d.ts +35 -11
  650. package/dist/routing/security/cyber-pin.js +76 -14
  651. package/dist/routing/value-score.js +1 -1
  652. package/dist/shared/git/index.d.ts +1 -0
  653. package/dist/shared/git/index.js +1 -0
  654. package/dist/shared/git/ref-validation.d.ts +20 -0
  655. package/dist/shared/git/ref-validation.js +43 -0
  656. package/dist/shared/llm/anthropic-params.d.ts +40 -0
  657. package/dist/shared/llm/anthropic-params.js +51 -0
  658. package/dist/shared/llm/cost-tracker.d.ts +15 -2
  659. package/dist/shared/llm/cost-tracker.js +62 -10
  660. package/dist/shared/llm/index.d.ts +2 -2
  661. package/dist/shared/llm/index.js +2 -2
  662. package/dist/shared/llm/interfaces.d.ts +1 -1
  663. package/dist/shared/llm/metrics/cost-metrics.js +5 -4
  664. package/dist/shared/llm/model-mapping.js +131 -0
  665. package/dist/shared/llm/model-registry.d.ts +37 -11
  666. package/dist/shared/llm/model-registry.js +393 -18
  667. package/dist/shared/llm/openai-params.d.ts +35 -0
  668. package/dist/shared/llm/openai-params.js +54 -0
  669. package/dist/shared/llm/provider-manager.js +4 -3
  670. package/dist/shared/llm/providers/azure-openai.d.ts +11 -0
  671. package/dist/shared/llm/providers/azure-openai.js +26 -15
  672. package/dist/shared/llm/providers/bedrock.js +11 -19
  673. package/dist/shared/llm/providers/claude.js +6 -29
  674. package/dist/shared/llm/providers/codex.js +4 -3
  675. package/dist/shared/llm/providers/gemini.d.ts +3 -2
  676. package/dist/shared/llm/providers/gemini.js +19 -10
  677. package/dist/shared/llm/providers/ollama.d.ts +2 -0
  678. package/dist/shared/llm/providers/ollama.js +30 -20
  679. package/dist/shared/llm/providers/openai.js +10 -17
  680. package/dist/shared/llm/providers/openrouter.d.ts +1 -1
  681. package/dist/shared/llm/providers/openrouter.js +57 -21
  682. package/dist/shared/llm/router/agent-router-config.js +33 -32
  683. package/dist/shared/llm/router/hybrid-router.js +21 -9
  684. package/dist/shared/llm/router/routing-rules.js +9 -8
  685. package/dist/shared/llm/router/types.js +81 -13
  686. package/dist/shared/llm/translation/message-formatter.js +4 -23
  687. package/dist/shared/types/index.d.ts +6 -0
  688. package/dist/shared/types/index.js +8 -0
  689. package/dist/shared/vitest-json-report.d.ts +7 -7
  690. package/dist/shared/vitest-json-report.js +23 -14
  691. package/dist/test-scheduling/executors/vitest-executor.d.ts +7 -2
  692. package/dist/test-scheduling/executors/vitest-executor.js +157 -47
  693. package/dist/test-scheduling/git-aware/test-selector.js +3 -0
  694. package/dist/test-scheduling/phase-scheduler.d.ts +1 -0
  695. package/dist/test-scheduling/phase-scheduler.js +23 -1
  696. package/package.json +2 -1
  697. package/dist/cli/chunks/adapter-AKQYU6UH.js +0 -2
  698. package/dist/cli/chunks/aqe-learning-engine-MICRPL3N.js +0 -2
  699. package/dist/cli/chunks/base-DZK36ITB.js +0 -2
  700. package/dist/cli/chunks/brain-handler-H5OVZ22L.js +0 -90
  701. package/dist/cli/chunks/browser-workflow-ADK54DOE.js +0 -2
  702. package/dist/cli/chunks/chunk-26GM5CWD.js +0 -13
  703. package/dist/cli/chunks/chunk-42VSQ2MX.js +0 -4
  704. package/dist/cli/chunks/chunk-44WISFTU.js +0 -2
  705. package/dist/cli/chunks/chunk-4OUPCTBS.js +0 -16
  706. package/dist/cli/chunks/chunk-4TXAP3YH.js +0 -2
  707. package/dist/cli/chunks/chunk-4W7QVUNO.js +0 -2
  708. package/dist/cli/chunks/chunk-527HQAY7.js +0 -14
  709. package/dist/cli/chunks/chunk-5DFHE4H5.js +0 -180
  710. package/dist/cli/chunks/chunk-5P3G6ZW4.js +0 -2
  711. package/dist/cli/chunks/chunk-6F2RM6X2.js +0 -2
  712. package/dist/cli/chunks/chunk-74PK3NEW.js +0 -15
  713. package/dist/cli/chunks/chunk-7Y2CEXRS.js +0 -65
  714. package/dist/cli/chunks/chunk-AWNYEAGB.js +0 -2
  715. package/dist/cli/chunks/chunk-CBOPBYPU.js +0 -2
  716. package/dist/cli/chunks/chunk-FD2JFEQC.js +0 -2
  717. package/dist/cli/chunks/chunk-G6DCESPU.js +0 -2
  718. package/dist/cli/chunks/chunk-I4NDQGKP.js +0 -2
  719. package/dist/cli/chunks/chunk-L2GKMBDP.js +0 -2
  720. package/dist/cli/chunks/chunk-QLWNXBRU.js +0 -2
  721. package/dist/cli/chunks/chunk-R2AFVFRF.js +0 -2
  722. package/dist/cli/chunks/chunk-ROX7NLS4.js +0 -14
  723. package/dist/cli/chunks/chunk-SHGKY3QB.js +0 -2
  724. package/dist/cli/chunks/chunk-SJPZSCZP.js +0 -27
  725. package/dist/cli/chunks/chunk-T62DH4GG.js +0 -11
  726. package/dist/cli/chunks/chunk-TGLAWI62.js +0 -4
  727. package/dist/cli/chunks/chunk-UMNYF5EZ.js +0 -2
  728. package/dist/cli/chunks/chunk-UTVRQEZM.js +0 -54
  729. package/dist/cli/chunks/chunk-Y2DVFVGI.js +0 -2
  730. package/dist/cli/chunks/chunk-Y5SQBI2F.js +0 -2
  731. package/dist/cli/chunks/ci-YVKDQWIX.js +0 -81
  732. package/dist/cli/chunks/client-M72GXFVQ.js +0 -2
  733. package/dist/cli/chunks/codex-installer-2AVEO4EA.js +0 -14
  734. package/dist/cli/chunks/complexity-analyzer-LEDG62YK.js +0 -2
  735. package/dist/cli/chunks/core-handlers-C32RAMVI.js +0 -2
  736. package/dist/cli/chunks/cost-tracker-GJIFB2BM.js +0 -2
  737. package/dist/cli/chunks/cross-domain-router-UGFUCPKC.js +0 -2
  738. package/dist/cli/chunks/dream-UFBBXY5W.js +0 -2
  739. package/dist/cli/chunks/embed-and-insert-pattern-DUW6K35A.js +0 -3
  740. package/dist/cli/chunks/eval-PR6YWDFM.js +0 -17
  741. package/dist/cli/chunks/fleet-QNT6X2YI.js +0 -43
  742. package/dist/cli/chunks/heartbeat-scheduler-VQWHSGTY.js +0 -2
  743. package/dist/cli/chunks/hnsw-adapter-BS3NXWGU.js +0 -2
  744. package/dist/cli/chunks/hnsw-index-JP26B4HW.js +0 -2
  745. package/dist/cli/chunks/impact-analyzer-WRE4CWPJ.js +0 -2
  746. package/dist/cli/chunks/init-wizard-OFOEYB75.js +0 -2
  747. package/dist/cli/chunks/kernel-MXNFWNUD.js +0 -2
  748. package/dist/cli/chunks/knowledge-graph-7JE2TVKJ.js +0 -2
  749. package/dist/cli/chunks/learning-7B5NITDV.js +0 -122
  750. package/dist/cli/chunks/llm-router-BNEPT5OB.js +0 -37
  751. package/dist/cli/chunks/llm-router-service-GTDVDKSU.js +0 -2
  752. package/dist/cli/chunks/load-test-JZ4CLSBF.js +0 -2
  753. package/dist/cli/chunks/mcp-THXEINCL.js +0 -2
  754. package/dist/cli/chunks/memory-backend-Q54CC5A5.js +0 -2
  755. package/dist/cli/chunks/memory-handlers-IIBJXKHZ.js +0 -2
  756. package/dist/cli/chunks/multi-model-executor-HEDVOZ6X.js +0 -14
  757. package/dist/cli/chunks/pattern-null-store-W33O7FYO.js +0 -2
  758. package/dist/cli/chunks/pipeline-UOG6UO6D.js +0 -19
  759. package/dist/cli/chunks/platform-Q7UH7FZQ.js +0 -2
  760. package/dist/cli/chunks/protocol-executor-VGN4M7XY.js +0 -2
  761. package/dist/cli/chunks/qe-reasoning-bank-7VB5LJGS.js +0 -2
  762. package/dist/cli/chunks/queen-coordinator-HIDMJMMG.js +0 -2
  763. package/dist/cli/chunks/real-embeddings-SF42ML7G.js +0 -2
  764. package/dist/cli/chunks/router-CTIJS4D7.js +0 -2
  765. package/dist/cli/chunks/routing-feedback-LFYYZS5J.js +0 -2
  766. package/dist/cli/chunks/rvf-dual-writer-MNPMIWVM.js +0 -2
  767. package/dist/cli/chunks/rvf-migration-adapter-DXOKSSNW.js +0 -2
  768. package/dist/cli/chunks/rvf-migration-coordinator-JT7ZCJY7.js +0 -2
  769. package/dist/cli/chunks/rvf-native-adapter-PZKUKA7R.js +0 -2
  770. package/dist/cli/chunks/rvf-store-integrity-Q3FGYKFT.js +0 -2
  771. package/dist/cli/chunks/safe-db-73BLFV2C.js +0 -2
  772. package/dist/cli/chunks/schedule-YVTGTTI4.js +0 -2
  773. package/dist/cli/chunks/scheduler-5DSAFIRQ.js +0 -2
  774. package/dist/cli/chunks/sqlite-persistence-LRG4IPCU.js +0 -2
  775. package/dist/cli/chunks/task-handler-L7E2I267.js +0 -49
  776. package/dist/cli/chunks/task-handlers-6DPKE4AK.js +0 -9
  777. package/dist/cli/chunks/test-scheduling-4CNJA6TW.js +0 -15
  778. package/dist/cli/chunks/token-bootstrap-GTI24JAL.js +0 -2
  779. package/dist/cli/chunks/types-TXMY5M2K.js +0 -2
  780. package/dist/cli/chunks/unified-memory-VBQ572X4.js +0 -2
  781. package/dist/cli/chunks/unified-memory-hnsw-J3L74ZRY.js +0 -2
  782. package/dist/cli/chunks/unified-persistence-EM2VYRTQ.js +0 -2
  783. package/dist/cli/chunks/visual-security-GX4S7K6O.js +0 -2
  784. package/dist/cli/chunks/witness-chain-QGKMHCNW.js +0 -2
  785. package/dist/cli/chunks/workflow-2OYNO7UU.js +0 -51
  786. package/dist/cli/chunks/workflow-orchestrator-KWHIJMFV.js +0 -2
@@ -1,80 +1,188 @@
1
- /**
2
- * Agentic QE v3 - Plugin Dependency Resolver (IMP-09)
3
- *
4
- * DFS dependency resolution with cycle detection.
5
- * Given a set of plugin manifests, produces a topologically-sorted
6
- * load order where dependencies are loaded before dependents.
7
- */
8
- // ============================================================================
9
- // PluginResolver
10
- // ============================================================================
1
+ import { AQE_VERSION, validVersion, validRange, compareVersions, newestVersionFirst, satisfiesVersion, } from './version-policy.js';
11
2
  export class PluginResolver {
12
- /**
13
- * Resolve plugin load order via DFS topological sort.
14
- *
15
- * @param manifests - All available plugin manifests
16
- * @returns Ordered list of plugins safe to load sequentially
17
- * @throws Error if a dependency cycle is detected
18
- */
19
- resolve(manifests) {
20
- const byName = new Map();
21
- for (const m of manifests) {
22
- byName.set(m.name, m);
3
+ aqeVersion;
4
+ constructor(aqeVersion = AQE_VERSION) {
5
+ this.aqeVersion = aqeVersion;
6
+ }
7
+ resolve(manifests, roots) {
8
+ const groups = new Map();
9
+ const rejected = new Map();
10
+ for (const manifest of manifests) {
11
+ const candidates = groups.get(manifest.name) ?? [];
12
+ groups.set(manifest.name, candidates);
13
+ const error = this.validateVersions(manifest);
14
+ if (error)
15
+ rejected.set(manifest.name, [...(rejected.get(manifest.name) ?? []), error]);
16
+ else
17
+ candidates.push(manifest);
18
+ }
19
+ for (const candidates of groups.values()) {
20
+ candidates.sort((a, b) => newestVersionFirst(a.version, b.version));
23
21
  }
24
- const ordered = [];
25
- const visited = new Set();
26
- const visiting = new Set(); // cycle detection (gray nodes)
27
22
  const missing = new Map();
28
- const visit = (name, path) => {
29
- if (visited.has(name))
30
- return;
31
- if (visiting.has(name)) {
32
- const cycle = [...path.slice(path.indexOf(name)), name];
33
- throw new Error(`Dependency cycle detected: ${cycle.join(' -> ')}`);
23
+ const errors = [];
24
+ const result = (ordered) => ({
25
+ ordered: ordered.map((manifest, order) => ({ manifest, order })), missing, errors,
26
+ selectedVersions: Object.fromEntries(ordered.map(m => [m.name, m.version])),
27
+ aqeVersion: this.aqeVersion,
28
+ });
29
+ const names = [...(roots ?? groups.keys())].sort();
30
+ const required = new Set(names);
31
+ const selected = new Map();
32
+ let attempts = 0;
33
+ let limited = false;
34
+ const compatible = () => {
35
+ for (const manifest of selected.values()) {
36
+ for (const [dep, range] of Object.entries(manifest.dependencies ?? {})) {
37
+ const chosen = selected.get(dep);
38
+ const candidates = chosen ? [chosen] : groups.get(dep) ?? [];
39
+ if (!candidates.some(candidate => satisfiesVersion(candidate.version, range)))
40
+ return false;
41
+ }
34
42
  }
35
- const manifest = byName.get(name);
36
- if (!manifest) {
37
- // Missing dependency — record it but don't fail the entire resolution
38
- return;
43
+ return true;
44
+ };
45
+ let cycle;
46
+ const findCycle = () => {
47
+ const visited = new Set();
48
+ const visiting = new Set();
49
+ const visit = (name, path) => {
50
+ if (visiting.has(name))
51
+ return [...path.slice(path.indexOf(name)), name];
52
+ if (visited.has(name))
53
+ return;
54
+ visiting.add(name);
55
+ for (const dependency of Object.keys(selected.get(name)?.dependencies ?? {})) {
56
+ const found = visit(dependency, [...path, name]);
57
+ if (found)
58
+ return found;
59
+ }
60
+ visiting.delete(name);
61
+ visited.add(name);
62
+ return undefined;
63
+ };
64
+ for (const name of selected.keys()) {
65
+ const found = visit(name, []);
66
+ if (found)
67
+ return found;
39
68
  }
40
- visiting.add(name);
41
- // Visit dependencies first
42
- const deps = Object.keys(manifest.dependencies ?? {});
43
- const missingDeps = [];
44
- for (const dep of deps) {
45
- if (!byName.has(dep)) {
46
- missingDeps.push(dep);
69
+ return undefined;
70
+ };
71
+ const choose = () => {
72
+ const pending = new Set(names);
73
+ for (const manifest of selected.values()) {
74
+ for (const name of Object.keys(manifest.dependencies ?? {}))
75
+ pending.add(name);
76
+ }
77
+ const name = [...pending].sort().find(name => !selected.has(name));
78
+ if (!name) {
79
+ const found = findCycle();
80
+ if (found) {
81
+ cycle = found;
82
+ return false;
47
83
  }
48
- else {
49
- visit(dep, [...path, name]);
84
+ return true;
85
+ }
86
+ required.add(name);
87
+ for (const candidate of groups.get(name) ?? []) {
88
+ if (++attempts > 10_000) {
89
+ limited = true;
90
+ return false;
50
91
  }
92
+ selected.set(name, candidate);
93
+ if (compatible() && choose())
94
+ return true;
95
+ selected.delete(name);
96
+ if (limited)
97
+ return false;
98
+ }
99
+ return false;
100
+ };
101
+ if (!choose()) {
102
+ if (cycle && !limited)
103
+ throw new Error(`Dependency cycle detected: ${cycle.join(' -> ')}`);
104
+ for (const name of required) {
105
+ if (!groups.get(name)?.length)
106
+ errors.push(...(rejected.get(name) ?? []));
51
107
  }
52
- if (missingDeps.length > 0) {
53
- missing.set(name, missingDeps);
108
+ for (const [name, candidates] of groups) {
109
+ const absent = [...new Set(candidates.flatMap(m => Object.keys(m.dependencies ?? {})))].filter(dep => !groups.has(dep));
110
+ if (absent.length)
111
+ missing.set(name, absent);
54
112
  }
113
+ errors.push({
114
+ code: limited ? 'RESOLUTION_LIMIT' : missing.size ? 'MISSING_DEPENDENCY' : 'UNSATISFIED_DEPENDENCY_RANGE',
115
+ plugin: names.join(', '),
116
+ message: limited ? 'Plugin dependency search exceeded 10000 candidates' : 'No cached plugin selection satisfies all dependency ranges',
117
+ });
118
+ return result([]);
119
+ }
120
+ const ordered = [];
121
+ const visited = new Set();
122
+ const visiting = new Set();
123
+ const visit = (name, path) => {
124
+ if (visited.has(name))
125
+ return;
126
+ if (visiting.has(name))
127
+ throw new Error(`Dependency cycle detected: ${[...path.slice(path.indexOf(name)), name].join(' -> ')}`);
128
+ visiting.add(name);
129
+ const manifest = selected.get(name);
130
+ for (const dep of Object.keys(manifest.dependencies ?? {}))
131
+ visit(dep, [...path, name]);
55
132
  visiting.delete(name);
56
133
  visited.add(name);
57
134
  ordered.push(manifest);
58
135
  };
59
- // Visit all plugins
60
- for (const m of manifests) {
61
- visit(m.name, []);
136
+ for (const name of [...selected.keys()].sort())
137
+ visit(name, []);
138
+ return result(ordered);
139
+ }
140
+ /** Startup is best-effort: retain admitted roots when another root fails. */
141
+ resolveAvailable(manifests) {
142
+ const accepted = [];
143
+ let result = this.resolve(manifests, []);
144
+ const errors = [];
145
+ const missing = new Map();
146
+ for (const name of [...new Set(manifests.map(m => m.name))].sort()) {
147
+ try {
148
+ // Re-solve together so shared dependency versions remain compatible.
149
+ // A failed candidate cannot invalidate the last successful selection.
150
+ const candidate = this.resolve(manifests, [...accepted, name]);
151
+ if (candidate.errors.length) {
152
+ errors.push(...candidate.errors.map(error => ({ ...error, plugin: name })));
153
+ for (const [plugin, dependencies] of candidate.missing)
154
+ missing.set(plugin, dependencies);
155
+ continue;
156
+ }
157
+ accepted.push(name);
158
+ result = candidate;
159
+ }
160
+ catch (error) {
161
+ errors.push({ code: 'DEPENDENCY_CYCLE', plugin: name,
162
+ message: error instanceof Error ? error.message : String(error) });
163
+ }
62
164
  }
63
- return {
64
- ordered: ordered.map((manifest, index) => ({ manifest, order: index })),
65
- missing,
66
- };
165
+ return { ...result, errors, missing };
67
166
  }
68
- /**
69
- * Check if a specific plugin can be loaded given the currently loaded set.
70
- */
167
+ /** Version-constrained dependencies require versions, not a legacy name-only Set. */
71
168
  canLoad(manifest, loaded) {
72
- const deps = Object.keys(manifest.dependencies ?? {});
73
- const missingDeps = deps.filter(d => !loaded.has(d));
74
- return {
75
- canLoad: missingDeps.length === 0,
76
- missingDeps,
77
- };
169
+ const missingDeps = Object.entries(manifest.dependencies ?? {}).filter(([name, range]) => {
170
+ const version = loaded instanceof Set ? undefined : loaded.get(name);
171
+ return !version || !validRange(range) || !satisfiesVersion(version, range);
172
+ }).map(([name]) => name);
173
+ return { canLoad: !this.validateVersions(manifest) && missingDeps.length === 0, missingDeps };
174
+ }
175
+ validateVersions(manifest) {
176
+ if (!validVersion(manifest.version))
177
+ return { code: 'INVALID_PLUGIN_VERSION', plugin: manifest.name, message: 'Invalid plugin version' };
178
+ for (const range of Object.values(manifest.dependencies ?? {})) {
179
+ if (!validRange(range))
180
+ return { code: 'INVALID_DEPENDENCY_RANGE', plugin: manifest.name, message: 'Invalid dependency range' };
181
+ }
182
+ if (manifest.minAqeVersion && (!validVersion(manifest.minAqeVersion) || !validVersion(this.aqeVersion) || compareVersions(this.aqeVersion, manifest.minAqeVersion) < 0)) {
183
+ return { code: 'AQE_VERSION_INCOMPATIBLE', plugin: manifest.name, message: `Requires AQE ${manifest.minAqeVersion}; running ${this.aqeVersion}` };
184
+ }
185
+ return undefined;
78
186
  }
79
187
  }
80
188
  //# sourceMappingURL=resolver.js.map
@@ -0,0 +1,13 @@
1
+ export declare const AQE_VERSION: string;
2
+ export declare const validVersion: (value: unknown) => boolean;
3
+ export declare const validRange: (value: string) => boolean;
4
+ export declare const satisfiesVersion: (version: string, range: string) => boolean;
5
+ export declare const compareVersions: (a: string, b: string) => number;
6
+ /** Equal-precedence build metadata has a stable lexical tie-break, not higher precedence. */
7
+ export declare const newestVersionFirst: (a: string, b: string) => number;
8
+ export interface PluginVersionFailure {
9
+ code: 'INVALID_PLUGIN_VERSION' | 'INVALID_DEPENDENCY_RANGE' | 'MISSING_DEPENDENCY' | 'DEPENDENCY_CYCLE' | 'UNSATISFIED_DEPENDENCY_RANGE' | 'AQE_VERSION_INCOMPATIBLE' | 'RESOLUTION_LIMIT';
10
+ plugin: string;
11
+ message: string;
12
+ }
13
+ //# sourceMappingURL=version-policy.d.ts.map
@@ -0,0 +1,18 @@
1
+ /** npm SemVer is the single oracle for plugin versions and ranges. */
2
+ import { createRequire } from 'node:module';
3
+ const require = createRequire(import.meta.url);
4
+ const semver = require('semver');
5
+ export const AQE_VERSION = typeof __CLI_VERSION__ !== 'undefined' ? __CLI_VERSION__
6
+ : typeof __MCP_VERSION__ !== 'undefined' ? __MCP_VERSION__
7
+ : require('../../package.json').version;
8
+ // semver.valid drops build metadata; retain valid metadata but reject normalized
9
+ // prefixes/whitespace so cache directory names remain canonical.
10
+ // Cached manifests are untrusted JSON (older releases admitted a non-string
11
+ // minAqeVersion), so a non-string must be rejected here rather than throw.
12
+ export const validVersion = (value) => typeof value === 'string' && semver.valid(value) === value.split('+')[0];
13
+ export const validRange = (value) => semver.validRange(value) !== null;
14
+ export const satisfiesVersion = (version, range) => semver.satisfies(version, range);
15
+ export const compareVersions = (a, b) => semver.compare(a, b);
16
+ /** Equal-precedence build metadata has a stable lexical tie-break, not higher precedence. */
17
+ export const newestVersionFirst = (a, b) => compareVersions(b, a) || a.localeCompare(b);
18
+ //# sourceMappingURL=version-policy.js.map
@@ -26,9 +26,12 @@ import { type CircuitBreakerState } from './circuit-breaker.js';
26
26
  * ADR-093 (2026-04-17): default advisor model upgraded from Opus 4 to Opus 4.7.
27
27
  * SWE-bench Verified 87.6% (vs 80.8% on 4.6), new `xhigh` effort level,
28
28
  * 1M context at standard pricing, adaptive thinking.
29
+ *
30
+ * 2026-09 model refresh: follows DEFAULT_OPUS_MODEL (Claude Opus 5.5), in its
31
+ * OpenRouter form.
29
32
  */
30
33
  export declare const DEFAULT_ADVISOR_PROVIDER: ExtendedProviderType;
31
- export declare const DEFAULT_ADVISOR_MODEL = "anthropic/claude-opus-4.7";
34
+ export declare const DEFAULT_ADVISOR_MODEL: string;
32
35
  export declare const DEFAULT_MAX_WORDS = 100;
33
36
  /**
34
37
  * Phase 0 MultiModelExecutor implementation.
@@ -18,6 +18,8 @@ import { createHash } from 'crypto';
18
18
  import { redact, validateProviderForAgent, isSelfHosted, } from './redaction.js';
19
19
  import { AdvisorCircuitBreaker } from './circuit-breaker.js';
20
20
  import { applyCyberPin, CYBER_PIN_ADVISOR_FALLBACK } from '../security/cyber-pin.js';
21
+ import { DEFAULT_OPUS_MODEL } from '../../shared/llm/model-registry.js';
22
+ import { mapModelId } from '../../shared/llm/model-mapping.js';
21
23
  /**
22
24
  * Default advisor model per ADR-092 Phase 0 and ADR-093.
23
25
  * OpenRouter exposes Anthropic Opus — chosen for vendor-independence as the
@@ -26,9 +28,14 @@ import { applyCyberPin, CYBER_PIN_ADVISOR_FALLBACK } from '../security/cyber-pin
26
28
  * ADR-093 (2026-04-17): default advisor model upgraded from Opus 4 to Opus 4.7.
27
29
  * SWE-bench Verified 87.6% (vs 80.8% on 4.6), new `xhigh` effort level,
28
30
  * 1M context at standard pricing, adaptive thinking.
31
+ *
32
+ * 2026-09 model refresh: follows DEFAULT_OPUS_MODEL (Claude Opus 5.5), in its
33
+ * OpenRouter form.
29
34
  */
30
35
  export const DEFAULT_ADVISOR_PROVIDER = 'openrouter';
31
- export const DEFAULT_ADVISOR_MODEL = 'anthropic/claude-opus-4.7';
36
+ // OpenRouter IDs use dotted versions (anthropic/claude-opus-5.5), so map
37
+ // rather than prefix the canonical ID.
38
+ export const DEFAULT_ADVISOR_MODEL = mapModelId(DEFAULT_OPUS_MODEL, 'openrouter');
32
39
  export const DEFAULT_MAX_WORDS = 100;
33
40
  // ADR-093: cyber-pin helpers moved to src/routing/security/cyber-pin.ts
34
41
  // so HybridRouter.chat() can also apply the pin — direct chat calls must
@@ -12,7 +12,8 @@ import type { AgentTier } from '../routing-config.js';
12
12
  /**
13
13
  * A ready-to-use, opinionated default: a free local Ollama tier under the three
14
14
  * Claude tiers. Override `bindings.local.config.model` / `.kind` to point at
15
- * cloud Ollama, OpenRouter, or any compatible endpoint.
15
+ * cloud Ollama, OpenRouter, or any compatible endpoint. The default local model
16
+ * is qwen3-coder:30b (ADR-111); qwen3:8b is below the QE test-gen quality floor.
16
17
  */
17
18
  export declare function defaultFreeTierLadder(model?: string): QeRoutingLadder;
18
19
  /** Validate a ladder: every tier in `tierOrder` must have a binding, bounds must exist. */
@@ -11,9 +11,10 @@ import { resolveFreeTierProvider } from './provider.js';
11
11
  /**
12
12
  * A ready-to-use, opinionated default: a free local Ollama tier under the three
13
13
  * Claude tiers. Override `bindings.local.config.model` / `.kind` to point at
14
- * cloud Ollama, OpenRouter, or any compatible endpoint.
14
+ * cloud Ollama, OpenRouter, or any compatible endpoint. The default local model
15
+ * is qwen3-coder:30b (ADR-111); qwen3:8b is below the QE test-gen quality floor.
15
16
  */
16
- export function defaultFreeTierLadder(model = 'qwen3:8b') {
17
+ export function defaultFreeTierLadder(model = 'qwen3-coder:30b') {
17
18
  return {
18
19
  tierOrder: ['local', 'haiku', 'sonnet', 'opus'],
19
20
  minTier: 'local',
@@ -2,16 +2,28 @@
2
2
  * Agentic QE v3 - Cyber Verification Pin
3
3
  * ADR-093: Opus 4.7 Migration
4
4
  *
5
- * Security and pentest agents may trip Opus 4.7's real-time cybersecurity
6
- * safeguards until the organization is enrolled in Anthropic's Cyber
7
- * Verification Program. This module pins those agents to a fallback model
8
- * until `AQE_CYBER_VERIFIED=true`.
5
+ * Security and pentest agents may trip the real-time cybersecurity
6
+ * safeguards that ship with Opus 4.7 and later Opus/Fable-class models until
7
+ * the organization is enrolled in Anthropic's Cyber Verification Program.
8
+ * This module pins those agents to a fallback model until
9
+ * `AQE_CYBER_VERIFIED=true`.
9
10
  *
10
11
  * Applied in BOTH:
11
12
  * - HybridRouter.chat() — catches direct routing calls
12
13
  * - MultiModelExecutor.consult() — catches advisor escalations
13
14
  *
14
- * so security agents cannot reach 4.7 by any code path until verified.
15
+ * HybridRouter also re-pins its fallback candidates (default model and
16
+ * fallback chain), so a failed primary cannot escalate a pinned agent. Scope:
17
+ * the pin covers the Opus/Fable-class models that ship these safeguards; it
18
+ * does NOT restrict ordinary Sonnet routing (security tasks may route to the
19
+ * default Sonnet).
20
+
21
+ *
22
+ * 2026-09 model refresh: the gate was generalized from Opus 4.7 only to every
23
+ * Opus/Fable model at or above 4.7, including the Claude Code aliases
24
+ * `opus` / `fable` (see {@link isCyberGatedModel}). Routing tier 4 and the
25
+ * default advisor now target Opus 5.5; matching 4.7 alone would have left the
26
+ * pin unreachable.
15
27
  */
16
28
  /**
17
29
  * Agent names subject to the cyber pin. These are the agents covered by
@@ -23,21 +35,27 @@
23
35
  */
24
36
  export declare const CYBER_PINNED_AGENTS: readonly string[];
25
37
  /**
26
- * Fallback advisor model for cyber-pinned agents. Sonnet 4.6 on OpenRouter.
38
+ * Fallback advisor model for cyber-pinned agents, in OpenRouter form.
27
39
  * Used by MultiModelExecutor.consult.
28
40
  */
29
- export declare const CYBER_PIN_ADVISOR_FALLBACK = "anthropic/claude-sonnet-4.6";
41
+ export declare const CYBER_PIN_ADVISOR_FALLBACK: string;
30
42
  /**
31
43
  * Fallback chat model for cyber-pinned agents when targeting the Anthropic
32
44
  * provider directly. Used by HybridRouter.chat.
33
45
  */
34
46
  export declare const CYBER_PIN_CHAT_FALLBACK = "claude-sonnet-4-6";
35
47
  /**
36
- * Returns true if the model ID targets Opus 4.7 in any known form:
37
- * canonical (claude-opus-4-7), OpenRouter (anthropic/claude-opus-4.7),
38
- * or Bedrock (anthropic.claude-opus-4-7-v1:0).
48
+ * Returns true if the model ID is an Opus- or Fable-class model at or above
49
+ * 4.7 (claude-opus-4-7, claude-opus-4-8, claude-opus-5, claude-opus-5-5,
50
+ * claude-fable-5, claude-fable-5-1, …) in canonical, OpenRouter or Bedrock
51
+ * form. Sonnet, Haiku and Opus below 4.7 are not gated.
52
+ */
53
+ export declare function isCyberGatedModel(modelId: string): boolean;
54
+ /**
55
+ * @deprecated Use {@link isCyberGatedModel}. Kept as an alias for existing
56
+ * callers; it matches every cyber-gated model, not only Opus 4.7.
39
57
  */
40
- export declare function isOpus47(modelId: string): boolean;
58
+ export declare const isOpus47: typeof isCyberGatedModel;
41
59
  /**
42
60
  * Returns true if the agent is cyber-pinned and env does not grant
43
61
  * Cyber Verification bypass. Case-sensitive "true" only — '1', 'yes',
@@ -55,4 +73,10 @@ export declare function shouldCyberPin(agentName: string, env?: NodeJS.ProcessEn
55
73
  * or `fallback` if pin fires.
56
74
  */
57
75
  export declare function applyCyberPin(agentName: string, requestedModel: string, fallback: string, env?: NodeJS.ProcessEnv): string;
76
+ /**
77
+ * The pinned Sonnet 4.6 fallback in the model-ID form a given provider
78
+ * expects, so a pinned request stays routable (OpenRouter needs the dotted
79
+ * `anthropic/…` slug, Bedrock the `anthropic.…-v1:0` form).
80
+ */
81
+ export declare function cyberPinFallbackFor(provider: string): string;
58
82
  //# sourceMappingURL=cyber-pin.d.ts.map
@@ -2,16 +2,28 @@
2
2
  * Agentic QE v3 - Cyber Verification Pin
3
3
  * ADR-093: Opus 4.7 Migration
4
4
  *
5
- * Security and pentest agents may trip Opus 4.7's real-time cybersecurity
6
- * safeguards until the organization is enrolled in Anthropic's Cyber
7
- * Verification Program. This module pins those agents to a fallback model
8
- * until `AQE_CYBER_VERIFIED=true`.
5
+ * Security and pentest agents may trip the real-time cybersecurity
6
+ * safeguards that ship with Opus 4.7 and later Opus/Fable-class models until
7
+ * the organization is enrolled in Anthropic's Cyber Verification Program.
8
+ * This module pins those agents to a fallback model until
9
+ * `AQE_CYBER_VERIFIED=true`.
9
10
  *
10
11
  * Applied in BOTH:
11
12
  * - HybridRouter.chat() — catches direct routing calls
12
13
  * - MultiModelExecutor.consult() — catches advisor escalations
13
14
  *
14
- * so security agents cannot reach 4.7 by any code path until verified.
15
+ * HybridRouter also re-pins its fallback candidates (default model and
16
+ * fallback chain), so a failed primary cannot escalate a pinned agent. Scope:
17
+ * the pin covers the Opus/Fable-class models that ship these safeguards; it
18
+ * does NOT restrict ordinary Sonnet routing (security tasks may route to the
19
+ * default Sonnet).
20
+
21
+ *
22
+ * 2026-09 model refresh: the gate was generalized from Opus 4.7 only to every
23
+ * Opus/Fable model at or above 4.7, including the Claude Code aliases
24
+ * `opus` / `fable` (see {@link isCyberGatedModel}). Routing tier 4 and the
25
+ * default advisor now target Opus 5.5; matching 4.7 alone would have left the
26
+ * pin unreachable.
15
27
  */
16
28
  /**
17
29
  * Agent names subject to the cyber pin. These are the agents covered by
@@ -28,23 +40,58 @@ export const CYBER_PINNED_AGENTS = [
28
40
  'qe-security-reviewer',
29
41
  ];
30
42
  /**
31
- * Fallback advisor model for cyber-pinned agents. Sonnet 4.6 on OpenRouter.
43
+ * Fallback model for pinned requests. Deliberately Sonnet 4.6 — the model
44
+ * docs/security/cyber-verification-application.md names for security agents —
45
+ * rather than DEFAULT_SONNET_MODEL, so the pin's target stays the documented,
46
+ * reviewed model across default bumps. (Claude Code maps model IDs to its
47
+ * `sonnet` alias, so on that provider the fallback runs on the CLI's Sonnet.)
48
+ * Sonnet 4.6 is served until at least 2027-02-17.
49
+ */
50
+ const CYBER_PIN_SONNET = 'claude-sonnet-4-6';
51
+ /**
52
+ * Fallback advisor model for cyber-pinned agents, in OpenRouter form.
32
53
  * Used by MultiModelExecutor.consult.
33
54
  */
34
- export const CYBER_PIN_ADVISOR_FALLBACK = 'anthropic/claude-sonnet-4.6';
55
+ export const CYBER_PIN_ADVISOR_FALLBACK = `anthropic/${CYBER_PIN_SONNET.replace('4-6', '4.6')}`;
35
56
  /**
36
57
  * Fallback chat model for cyber-pinned agents when targeting the Anthropic
37
58
  * provider directly. Used by HybridRouter.chat.
38
59
  */
39
- export const CYBER_PIN_CHAT_FALLBACK = 'claude-sonnet-4-6';
60
+ export const CYBER_PIN_CHAT_FALLBACK = CYBER_PIN_SONNET;
40
61
  /**
41
- * Returns true if the model ID targets Opus 4.7 in any known form:
42
- * canonical (claude-opus-4-7), OpenRouter (anthropic/claude-opus-4.7),
43
- * or Bedrock (anthropic.claude-opus-4-7-v1:0).
62
+ * Family + version in any known ID form: canonical (claude-opus-5-5),
63
+ * OpenRouter (anthropic/claude-opus-5.5), Bedrock (anthropic.claude-opus-4-7-v1:0)
64
+ * and dated snapshots (claude-opus-4-5-20251101). The minor version is at most
65
+ * two digits so a date suffix (claude-opus-4-20250514) is not read as one.
44
66
  */
45
- export function isOpus47(modelId) {
46
- return (modelId.includes('claude-opus-4-7') || modelId.includes('claude-opus-4.7'));
67
+ const CLI_GATED_ALIASES = new Set(['opus', 'fable']);
68
+ const OPUS_FABLE_ID = /claude-(opus|fable)-(\d+)(?:[-.](\d{1,2})(?!\d))?/;
69
+ /** First Opus/Fable version that ships the cyber safeguards. */
70
+ const CYBER_GATE_MIN = { major: 4, minor: 7 };
71
+ /**
72
+ * Returns true if the model ID is an Opus- or Fable-class model at or above
73
+ * 4.7 (claude-opus-4-7, claude-opus-4-8, claude-opus-5, claude-opus-5-5,
74
+ * claude-fable-5, claude-fable-5-1, …) in canonical, OpenRouter or Bedrock
75
+ * form. Sonnet, Haiku and Opus below 4.7 are not gated.
76
+ */
77
+ export function isCyberGatedModel(modelId) {
78
+ const id = modelId.trim().toLowerCase();
79
+ // Claude Code CLI aliases resolve to the latest Opus/Fable (>= 4.7).
80
+ if (CLI_GATED_ALIASES.has(id))
81
+ return true;
82
+ const match = OPUS_FABLE_ID.exec(id);
83
+ if (!match)
84
+ return false;
85
+ const major = Number(match[2]);
86
+ const minor = match[3] === undefined ? 0 : Number(match[3]);
87
+ return (major > CYBER_GATE_MIN.major ||
88
+ (major === CYBER_GATE_MIN.major && minor >= CYBER_GATE_MIN.minor));
47
89
  }
90
+ /**
91
+ * @deprecated Use {@link isCyberGatedModel}. Kept as an alias for existing
92
+ * callers; it matches every cyber-gated model, not only Opus 4.7.
93
+ */
94
+ export const isOpus47 = isCyberGatedModel;
48
95
  /**
49
96
  * Returns true if the agent is cyber-pinned and env does not grant
50
97
  * Cyber Verification bypass. Case-sensitive "true" only — '1', 'yes',
@@ -68,8 +115,23 @@ export function shouldCyberPin(agentName, env = process.env) {
68
115
  export function applyCyberPin(agentName, requestedModel, fallback, env = process.env) {
69
116
  if (!shouldCyberPin(agentName, env))
70
117
  return requestedModel;
71
- if (!isOpus47(requestedModel))
118
+ if (!isCyberGatedModel(requestedModel))
72
119
  return requestedModel;
73
120
  return fallback;
74
121
  }
122
+ /**
123
+ * The pinned Sonnet 4.6 fallback in the model-ID form a given provider
124
+ * expects, so a pinned request stays routable (OpenRouter needs the dotted
125
+ * `anthropic/…` slug, Bedrock the `anthropic.…-v1:0` form).
126
+ */
127
+ export function cyberPinFallbackFor(provider) {
128
+ switch (provider) {
129
+ case 'openrouter':
130
+ return CYBER_PIN_ADVISOR_FALLBACK;
131
+ case 'bedrock':
132
+ return 'anthropic.claude-sonnet-4-6-v1:0';
133
+ default:
134
+ return CYBER_PIN_CHAT_FALLBACK;
135
+ }
136
+ }
75
137
  //# sourceMappingURL=cyber-pin.js.map
@@ -52,6 +52,6 @@ export const MEASURED_QE_TEST_GEN = [
52
52
  { model: 'qwen2.5-coder:7b', quality: 0.50, costPerInstance: 0 }, // 2026-06-29: stock 7B coder = 4/8 (50%) — beats general qwen3:8b (38%), 16× faster; ~25pp below 30B (PEFT-tune target)
53
53
  { model: 'qwen2.5-coder:1.5b', quality: 0.08, costPerInstance: 0 }, // 2026-06-29: stock 1.5B coder = 1/8 (8%); below floor, size dominates coder-tuning at tiny scale
54
54
  { model: 'z-ai/glm-5.2', quality: 0.71, costPerInstance: 0.0065 }, // A12: diverse, higher per-model best
55
- { model: 'claude-sonnet-4-6', quality: 0.83, costPerInstance: 0.045 }, // D3: frontier ceiling
55
+ { model: 'claude-sonnet-4-6', quality: 0.83, costPerInstance: 0.045 }, // D3: measured frontier reference as of 2026-06-24 (not re-run on newer models)
56
56
  ];
57
57
  //# sourceMappingURL=value-score.js.map
@@ -3,4 +3,5 @@
3
3
  */
4
4
  export { GitAnalyzer } from './git-analyzer';
5
5
  export type { GitAnalyzerConfig, GitCommit, GitBlameInfo, FileHistory, } from './git-analyzer';
6
+ export { assertSafeGitRef, getGitRefError } from './ref-validation';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -2,4 +2,5 @@
2
2
  * Agentic QE v3 - Git Analysis Utilities
3
3
  */
4
4
  export { GitAnalyzer } from './git-analyzer.js';
5
+ export { assertSafeGitRef, getGitRefError } from './ref-validation.js';
5
6
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Agentic QE v3 - Git ref validation
3
+ *
4
+ * Caller-supplied refs (MCP tool arguments, CLI flags) are passed to git as
5
+ * positional argv entries. Even without a shell, a value beginning with "-"
6
+ * is parsed by git as an option (e.g. `--output=<path>` makes `git diff`
7
+ * create or truncate an arbitrary file), so refs must be validated at the
8
+ * boundary before reaching git.
9
+ */
10
+ /**
11
+ * Returns an error message when `ref` is not a safe git revision argument,
12
+ * or undefined when it is safe. Accepts ordinary revisions such as `main`,
13
+ * `origin/main`, `HEAD~3`, `v1.2.0^{commit}` and commit SHAs.
14
+ */
15
+ export declare function getGitRefError(ref: unknown, label?: string): string | undefined;
16
+ /**
17
+ * Throws when `ref` is not a safe git revision argument.
18
+ */
19
+ export declare function assertSafeGitRef(ref: unknown, label?: string): asserts ref is string;
20
+ //# sourceMappingURL=ref-validation.d.ts.map
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Agentic QE v3 - Git ref validation
3
+ *
4
+ * Caller-supplied refs (MCP tool arguments, CLI flags) are passed to git as
5
+ * positional argv entries. Even without a shell, a value beginning with "-"
6
+ * is parsed by git as an option (e.g. `--output=<path>` makes `git diff`
7
+ * create or truncate an arbitrary file), so refs must be validated at the
8
+ * boundary before reaching git.
9
+ */
10
+ const MAX_GIT_REF_LENGTH = 256;
11
+ // Whitespace and ASCII control characters are never valid in a revision.
12
+ // eslint-disable-next-line no-control-regex
13
+ const UNSAFE_REF_CHARS = /[\s\x00-\x1f\x7f]/;
14
+ /**
15
+ * Returns an error message when `ref` is not a safe git revision argument,
16
+ * or undefined when it is safe. Accepts ordinary revisions such as `main`,
17
+ * `origin/main`, `HEAD~3`, `v1.2.0^{commit}` and commit SHAs.
18
+ */
19
+ export function getGitRefError(ref, label = 'git ref') {
20
+ if (typeof ref !== 'string' || ref.length === 0) {
21
+ return `Invalid ${label}: must be a non-empty string`;
22
+ }
23
+ if (ref.length > MAX_GIT_REF_LENGTH) {
24
+ return `Invalid ${label}: longer than ${MAX_GIT_REF_LENGTH} characters`;
25
+ }
26
+ if (ref.startsWith('-')) {
27
+ return `Invalid ${label} "${ref}": must not start with "-"`;
28
+ }
29
+ if (UNSAFE_REF_CHARS.test(ref)) {
30
+ return `Invalid ${label}: must not contain whitespace or control characters`;
31
+ }
32
+ return undefined;
33
+ }
34
+ /**
35
+ * Throws when `ref` is not a safe git revision argument.
36
+ */
37
+ export function assertSafeGitRef(ref, label = 'git ref') {
38
+ const error = getGitRefError(ref, label);
39
+ if (error) {
40
+ throw new Error(error);
41
+ }
42
+ }
43
+ //# sourceMappingURL=ref-validation.js.map