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
@@ -1,54 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.3");process.exit(0)}
2
- import{b as v}from"./chunk-HOQQCY2K.js";import{d as fe}from"./chunk-R2AFVFRF.js";import{a as he,c as ge}from"./chunk-37BASGWC.js";import{b as a,g as me}from"./chunk-T62DH4GG.js";import{a as oe,b as Ae}from"./chunk-WYMGK5DX.js";import{b as R,c as pe}from"./chunk-4TXAP3YH.js";import{b as K,d as ue}from"./chunk-YAKS3CAB.js";import{b as E,c as L}from"./chunk-HRUU7E3D.js";import{b as de,d as Me}from"./chunk-5IAB5NRZ.js";Me();L();var ye={failureThreshold:5,resetTimeoutMs:3e4,halfOpenSuccessThreshold:2,failureWindowMs:6e4,includeTimeouts:!0},se=class{state="closed";failures=[];successCount=0;totalRequests=0;totalSuccesses=0;totalFailures=0;rejectedCount=0;lastFailureTime;lastSuccessTime;openedAt;halfOpenSuccesses=0;config;providerType;constructor(t,e={}){this.providerType=t,this.config={...ye,...e}}getState(){return this.state==="open"&&this.openedAt&&Date.now()-this.openedAt.getTime()>=this.config.resetTimeoutMs&&this.transitionTo("half-open"),this.state}canExecute(){let t=this.getState();return t==="closed"?!0:t!=="open"}async execute(t){if(this.totalRequests++,this.getState()==="open")throw this.rejectedCount++,a(`Circuit breaker is open for provider ${this.providerType}`,"CIRCUIT_OPEN",{provider:this.providerType,retryable:!0,retryAfterMs:this.getTimeUntilTransition()});try{let r=await t();return this.recordSuccess(),r}catch(r){throw this.recordFailure(E(r)),r}}recordSuccess(){this.successCount++,this.totalSuccesses++,this.lastSuccessTime=new Date,this.getState()==="half-open"&&(this.halfOpenSuccesses++,this.halfOpenSuccesses>=this.config.halfOpenSuccessThreshold&&this.transitionTo("closed"))}recordFailure(t){if(this.totalFailures++,this.lastFailureTime=new Date,(t.message.toLowerCase().includes("timeout")||t.name==="TimeoutError"||t.name==="AbortError")&&!this.config.includeTimeouts)return;this.failures.push({timestamp:new Date,error:t}),this.cleanOldFailures();let r=this.getState();if(r==="half-open"){this.transitionTo("open");return}r==="closed"&&this.failures.length>=this.config.failureThreshold&&this.transitionTo("open")}getStats(){return{state:this.getState(),totalRequests:this.totalRequests,successCount:this.totalSuccesses,failureCount:this.totalFailures,rejectedCount:this.rejectedCount,lastFailureTime:this.lastFailureTime,lastSuccessTime:this.lastSuccessTime,timeUntilTransitionMs:this.getTimeUntilTransition()}}reset(){this.state="closed",this.failures=[],this.successCount=0,this.halfOpenSuccesses=0,this.openedAt=void 0}forceOpen(){this.transitionTo("open")}forceHalfOpen(){this.transitionTo("half-open")}getRecentFailures(t=5){return this.failures.slice(-t).map(e=>`[${e.timestamp.toISOString()}] ${e.error.message}`)}transitionTo(t){if(this.state!==t)switch(this.state=t,t){case"open":this.openedAt=new Date,this.halfOpenSuccesses=0;break;case"half-open":this.halfOpenSuccesses=0;break;case"closed":this.failures=[],this.openedAt=void 0,this.halfOpenSuccesses=0;break}}cleanOldFailures(){let t=Date.now()-this.config.failureWindowMs;this.failures=this.failures.filter(e=>e.timestamp.getTime()>t)}getTimeUntilTransition(){if(this.state==="open"&&this.openedAt){let t=Date.now()-this.openedAt.getTime(),e=this.config.resetTimeoutMs-t;return Math.max(0,e)}}},q=class{breakers=new Map;defaultConfig;constructor(t={}){this.defaultConfig={...ye,...t}}getBreaker(t,e){let r=this.breakers.get(t);return r||(r=new se(t,{...this.defaultConfig,...e}),this.breakers.set(t,r)),r}getAllStats(){let t={};for(let[e,r]of this.breakers)t[e]=r.getStats();return t}getAvailableProviders(){let t=[];for(let[e,r]of this.breakers)r.canExecute()&&t.push(e);return t}resetAll(){for(let t of this.breakers.values())t.reset()}reset(t){let e=this.breakers.get(t);e&&e.reset()}};var be={maxSize:1e3,defaultTtlMs:36e5,enableLRU:!0,cacheGenerations:!0,cacheEmbeddings:!0,cacheCompletions:!0},M=class{cache=new Map;accessOrder=[];config;hits=0;misses=0;evictions=0;constructor(t={}){this.config={...be,...t}}static generateKey(t,e,r){let n=[t,r?.model??"default",String(r?.temperature??.7),String(r?.maxTokens??0),r?.systemPrompt??"",e].join("|"),s=0;for(let i=0;i<n.length;i++){let l=n.charCodeAt(i);s=(s<<5)-s+l,s=s&s}return`${t}:${Math.abs(s).toString(36)}`}get(t){let e=this.cache.get(t);if(!e){this.misses++;return}if(e.ttlMs>0&&Date.now()-e.createdAt.getTime()>e.ttlMs){this.delete(t),this.misses++;return}return this.hits++,e.lastAccessedAt=new Date,e.accessCount++,this.config.enableLRU&&this.updateAccessOrder(t),e.value}set(t,e,r){this.cache.size>=this.config.maxSize&&!this.cache.has(t)&&this.evictLRU();let o={value:e,createdAt:new Date,lastAccessedAt:new Date,accessCount:1,ttlMs:r??this.config.defaultTtlMs,keyHash:t};this.cache.set(t,o),this.config.enableLRU&&this.updateAccessOrder(t)}has(t){let e=this.cache.get(t);return e?e.ttlMs>0&&Date.now()-e.createdAt.getTime()>e.ttlMs?(this.delete(t),!1):!0:!1}delete(t){let e=this.cache.delete(t);if(e){let r=this.accessOrder.indexOf(t);r!==-1&&this.accessOrder.splice(r,1)}return e}clear(){this.cache.clear(),this.accessOrder=[],this.hits=0,this.misses=0,this.evictions=0}getStats(){let t=this.hits+this.misses,e=t>0?this.hits/t:0,r=0;for(let o of this.cache.values())r+=this.estimateSize(o.value);return{size:this.cache.size,maxSize:this.config.maxSize,hits:this.hits,misses:this.misses,hitRate:e,evictions:this.evictions,memoryUsageBytes:r}}keys(){return Array.from(this.cache.keys())}entries(){return Array.from(this.cache.entries())}import(t){for(let[e,r]of t)r.createdAt=new Date(r.createdAt),r.lastAccessedAt=new Date(r.lastAccessedAt),this.cache.set(e,r),this.accessOrder.push(e);for(;this.cache.size>this.config.maxSize;)this.evictLRU()}pruneExpired(){let t=Date.now(),e=0;for(let[r,o]of this.cache.entries())o.ttlMs>0&&t-o.createdAt.getTime()>o.ttlMs&&(this.delete(r),e++);return e}updateAccessOrder(t){let e=this.accessOrder.indexOf(t);e!==-1&&this.accessOrder.splice(e,1),this.accessOrder.push(t)}evictLRU(){if(this.accessOrder.length===0){let e=this.cache.keys().next().value;e&&(this.cache.delete(e),this.evictions++);return}let t=this.accessOrder.shift();t&&(this.cache.delete(t),this.evictions++)}estimateSize(t){return t==null?0:JSON.stringify(t).length*2}},B=class{generationCache;embeddingCache;completionCache;config;constructor(t={}){this.config={...be,...t},this.generationCache=new M(t),this.embeddingCache=new M(t),this.completionCache=new M(t)}getGeneration(t,e){if(!this.config.cacheGenerations)return;let r=M.generateKey("generation",t,e);return this.generationCache.get(r)}setGeneration(t,e,r,o){if(!this.config.cacheGenerations)return;let n=M.generateKey("generation",t,r);this.generationCache.set(n,e,o)}getEmbedding(t,e){if(!this.config.cacheEmbeddings)return;let r=M.generateKey("embedding",t,e);return this.embeddingCache.get(r)}setEmbedding(t,e,r,o){if(!this.config.cacheEmbeddings)return;let n=M.generateKey("embedding",t,r);this.embeddingCache.set(n,e,o)}getCompletion(t,e){if(!this.config.cacheCompletions)return;let r=M.generateKey("completion",t,e);return this.completionCache.get(r)}setCompletion(t,e,r,o){if(!this.config.cacheCompletions)return;let n=M.generateKey("completion",t,r);this.completionCache.set(n,e,o)}getStats(){let t=this.generationCache.getStats(),e=this.embeddingCache.getStats(),r=this.completionCache.getStats(),o=t.hits+e.hits+r.hits,n=t.misses+e.misses+r.misses,s=o+n;return{generation:t,embedding:e,completion:r,total:{size:t.size+e.size+r.size,maxSize:this.config.maxSize*3,hits:o,misses:n,hitRate:s>0?o/s:0,evictions:t.evictions+e.evictions+r.evictions,memoryUsageBytes:t.memoryUsageBytes+e.memoryUsageBytes+r.memoryUsageBytes}}}clear(){this.generationCache.clear(),this.embeddingCache.clear(),this.completionCache.clear()}pruneExpired(){return this.generationCache.pruneExpired()+this.embeddingCache.pruneExpired()+this.completionCache.pruneExpired()}};var ne="(unattributed)",Le=`
3
- CREATE TABLE IF NOT EXISTS llm_spend (
4
- id INTEGER PRIMARY KEY AUTOINCREMENT,
5
- ts INTEGER NOT NULL,
6
- provider TEXT NOT NULL,
7
- model TEXT NOT NULL,
8
- cost_usd REAL NOT NULL,
9
- cost_source TEXT NOT NULL,
10
- prompt_tokens INTEGER NOT NULL DEFAULT 0,
11
- completion_tokens INTEGER NOT NULL DEFAULT 0,
12
- request_id TEXT
13
- );
14
- CREATE INDEX IF NOT EXISTS idx_llm_spend_ts ON llm_spend(ts);
15
- `,ie=class{db;hasAgentColumn=!1;constructor(t){this.db=t,this.db.exec(Le);try{this.db.prepare("PRAGMA table_info(llm_spend)").all().some(r=>r.name==="agent_type")||this.db.exec("ALTER TABLE llm_spend ADD COLUMN agent_type TEXT"),this.db.exec("CREATE INDEX IF NOT EXISTS idx_llm_spend_agent ON llm_spend(agent_type)"),this.hasAgentColumn=!0}catch{}}record(t){try{this.hasAgentColumn?this.db.prepare(`INSERT INTO llm_spend
16
- (ts, provider, model, cost_usd, cost_source, prompt_tokens, completion_tokens, request_id, agent_type)
17
- VALUES (@ts, @provider, @model, @cost_usd, @cost_source, @prompt_tokens, @completion_tokens, @request_id, @agent_type)`).run({ts:Date.now(),provider:t.provider,model:t.model,cost_usd:t.costUsd,cost_source:t.costSource,prompt_tokens:t.promptTokens,completion_tokens:t.completionTokens,request_id:t.requestId,agent_type:t.agent??null}):this.db.prepare(`INSERT INTO llm_spend
18
- (ts, provider, model, cost_usd, cost_source, prompt_tokens, completion_tokens, request_id)
19
- VALUES (@ts, @provider, @model, @cost_usd, @cost_source, @prompt_tokens, @completion_tokens, @request_id)`).run({ts:Date.now(),provider:t.provider,model:t.model,cost_usd:t.costUsd,cost_source:t.costSource,prompt_tokens:t.promptTokens,completion_tokens:t.completionTokens,request_id:t.requestId})}catch{}}spentSince(t,e=Date.now()){try{return this.db.prepare("SELECT COALESCE(SUM(cost_usd), 0) AS total FROM llm_spend WHERE ts >= ?").get(e-t)?.total??0}catch{return 0}}spentByAgentSince(t,e=Date.now()){try{let r=this.db.prepare(`SELECT COALESCE(agent_type, ?) AS agent, COALESCE(SUM(cost_usd), 0) AS total
20
- FROM llm_spend WHERE ts >= ? GROUP BY COALESCE(agent_type, ?)`).all(ne,e-t,ne),o={};for(let n of r)o[n.agent]=n.total;return o}catch{return{}}}},N=class{entries=[];record(t){this.entries.push({ts:Date.now(),costUsd:t.costUsd,agent:t.agent??ne})}spentSince(t,e=Date.now()){let r=e-t,o=0;for(let n of this.entries)n.ts>=r&&(o+=n.costUsd);return o}spentByAgentSince(t,e=Date.now()){let r=e-t,o={};for(let n of this.entries)n.ts>=r&&(o[n.agent]=(o[n.agent]??0)+n.costUsd);return o}};async function ve(){try{let t=(await import("./unified-memory-VBQ572X4.js")).getUnifiedMemory();return t.isInitialized()||await t.initialize(),new ie(t.getDatabase())}catch{return new N}}L();function ae(y,t,e,r){let o=Math.min(t*Math.pow(2,y),e),n=Math.random()*r*o;return o+n}var Pe=1e3,Oe=3e4;function T(y,t=Pe,e=Oe){return ae(y,t,e,0)}import{readFileSync as Ie}from"fs";import*as Te from"path";var ce=["low","medium","high","xhigh","max"],Se="xhigh";function G(y){return typeof y=="string"&&ce.includes(y)}var $;function xe(y){try{let e=Ie(y,"utf8").match(/^\s*effort_level\s*:\s*['"]?([a-z]+)['"]?\s*$/m);return e&&G(e[1])?e[1]:null}catch{return null}}function ke(y={}){if(y.override&&G(y.override))return y.override;if(y.agentEffort&&G(y.agentEffort))return y.agentEffort;let e=(y.env??process.env).QE_EFFORT_LEVEL;if(e&&G(e))return e;let r=y.fleetDefaultsPath??Te.join(process.cwd(),"config","fleet-defaults.yaml");return $===void 0&&($=xe(r)),$||Se}function Ee(y,t){let e=ce.indexOf(y),r=ce.indexOf(t);return e>r?t:y}var Ue={model:"claude-sonnet-4-6",maxTokens:4096,temperature:.7,timeoutMs:6e4,maxRetries:3,anthropicVersion:"2023-06-01",enableCache:!0,enableCircuitBreaker:!0},F=class{type="claude";name="Anthropic Claude";config;requestId=0;constructor(t={}){this.config={...Ue,...t}}async isAvailable(){if(!this.getApiKey())return!1;try{return(await this.healthCheck()).healthy}catch{return!1}}async healthCheck(){if(!this.getApiKey())return{healthy:!1,error:"API key not configured. Set ANTHROPIC_API_KEY environment variable."};let e=Date.now();try{let r=await this.fetchWithTimeout(`${this.getBaseUrl()}/v1/messages`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify({model:this.config.model,max_tokens:1,messages:[{role:"user",content:"Hi"}]})},5e3),o=Date.now()-e;if(!r.ok){let n=await r.text();return{healthy:!1,latencyMs:o,error:`API error: ${r.status} - ${n}`}}return{healthy:!0,latencyMs:o,models:this.getSupportedModels(),details:{apiVersion:this.config.anthropicVersion,defaultModel:this.config.model}}}catch(r){return{healthy:!1,error:r instanceof Error?r.message:"Unknown error"}}}async generate(t,e){if(!this.getApiKey())throw a("Anthropic API key not configured","API_KEY_MISSING",{provider:"claude",retryable:!1});let o=this.formatMessages(t),n=e?.model??this.config.model,s=e?.maxTokens??this.config.maxTokens??4096,i=e?.temperature??this.config.temperature??.7,l=`claude-${++this.requestId}-${Date.now()}`,p=Date.now(),m={model:n,max_tokens:s,temperature:i,messages:o};e?.systemPrompt&&(m.system=this.config.enableCache!==!1?[{type:"text",text:e.systemPrompt,cache_control:{type:"ephemeral"}}]:e.systemPrompt),e?.stopSequences&&e.stopSequences.length>0&&(m.stop_sequences=e.stopSequences);try{if(fe(n).supportsEffortXHigh){let u=ke({override:e?.effort}),d=Ee(u,"xhigh");m.thinking={type:"adaptive",effort:d}}}catch{}try{let c=await this.fetchWithRetry(`${this.getBaseUrl()}/v1/messages`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify(m)},e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),u=Date.now()-p;if(!c.ok){let k=await c.json().catch(()=>({error:{message:"Unknown error"}}));throw this.handleApiError(c.status,k,n)}let d=await c.json(),h=d.usage.cache_creation_input_tokens??0,g=d.usage.cache_read_input_tokens??0,b={promptTokens:d.usage.input_tokens,completionTokens:d.usage.output_tokens,totalTokens:d.usage.input_tokens+h+g+d.usage.output_tokens,cacheCreationTokens:h,cacheReadTokens:g},f=R.calculateCost(n,b);return v.recordTokenUsage(l,"claude-provider","llm","generate",{inputTokens:d.usage.input_tokens,outputTokens:d.usage.output_tokens,totalTokens:d.usage.input_tokens+d.usage.output_tokens,estimatedCostUsd:f.totalCost}),{content:d.content.filter(k=>k.type==="text").map(k=>k.text).join(""),model:d.model,provider:"claude",usage:b,cost:f,latencyMs:u,finishReason:this.mapFinishReason(d.stop_reason),cached:!1,requestId:l}}catch(c){throw c instanceof Error&&"code"in c?c:a(c instanceof Error?c.message:"Request failed","NETWORK_ERROR",{provider:"claude",model:n,retryable:!0,cause:c})}}async embed(t,e){throw a("Claude does not support native embeddings. Use OpenAI or Ollama for embeddings.","MODEL_NOT_FOUND",{provider:"claude",retryable:!1})}async complete(t,e){let r=await this.generate(t,{model:e?.model,temperature:e?.temperature??.2,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
21
-
22
- `,"```"]});return{completion:r.content,model:r.model,provider:"claude",usage:r.usage,latencyMs:r.latencyMs,cached:r.cached}}getConfig(){return{...this.config}}getSupportedModels(){return["claude-opus-4-7","claude-sonnet-4-6","claude-haiku-4-5-20251001","claude-3-opus-20240229","claude-3-sonnet-20240229","claude-3-haiku-20240307"]}getCostPerToken(){return R.getCostPerToken(this.config.model)}async dispose(){}getApiKey(){return this.config.apiKey??process.env.ANTHROPIC_API_KEY}getBaseUrl(){return(this.config.baseUrl??process.env.ANTHROPIC_BASE_URL??"https://api.anthropic.com").replace(/\/$/,"")}getHeaders(){return{"Content-Type":"application/json","x-api-key":this.getApiKey(),"anthropic-version":this.config.anthropicVersion??"2023-06-01"}}formatMessages(t){return typeof t=="string"?[{role:"user",content:t}]:t.filter(e=>e.role!=="system").map(e=>({role:e.role,content:e.content}))}mapFinishReason(t){switch(t){case"end_turn":return"stop";case"max_tokens":return"length";case"stop_sequence":return"stop";default:return"stop"}}handleApiError(t,e,r){let o="error"in e?e.error?.message??"Unknown API error":"Unknown API error",n="error"in e&&"type"in e.error?e.error.type:"";switch(t){case 401:throw a(o,"API_KEY_INVALID",{provider:"claude",model:r,retryable:!1});case 429:throw a(o,"RATE_LIMITED",{provider:"claude",model:r,retryable:!0,retryAfterMs:6e4});case 400:throw n==="invalid_request_error"&&o.includes("context")?a(o,"CONTEXT_LENGTH_EXCEEDED",{provider:"claude",model:r,retryable:!1}):a(o,"UNKNOWN",{provider:"claude",model:r,retryable:!1});case 500:case 502:case 503:throw a(o,"PROVIDER_UNAVAILABLE",{provider:"claude",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(o,"UNKNOWN",{provider:"claude",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let o=new AbortController,n=setTimeout(()=>o.abort(),r);try{return await fetch(t,{...e,signal:o.signal})}catch(s){throw s instanceof Error&&s.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"claude",retryable:!0}):s}finally{clearTimeout(n)}}async fetchWithRetry(t,e,r,o){let n;for(let s=0;s<o;s++)try{let i=await this.fetchWithTimeout(t,e,r);if(i.status>=400&&i.status<500&&i.status!==429)return i;if((i.status>=500||i.status===429)&&s<o-1){let l=T(s);await this.sleep(l);continue}return i}catch(i){if(n=E(i),s<o-1){let l=T(s);await this.sleep(l)}}throw n??new Error("Request failed after retries")}sleep(t){return new Promise(e=>setTimeout(e,t))}};import{spawn as Ne}from"node:child_process";var De=["ANTHROPIC_API_KEY","CLAUDE_API_KEY","ANTHROPIC_AUTH_TOKEN"],Ke={model:"sonnet",maxTokens:4096,temperature:.7,timeoutMs:12e4,maxRetries:1,binaryPath:"claude",maxConcurrency:2,disallowedTools:["Bash","Edit","Write","NotebookEdit","WebFetch","WebSearch","Task"]},W=class y{type="claude-code";name="Claude Code (subscription)";billingMode="subscription";config;requestId=0;availabilityCache;active=0;queue=[];constructor(t={}){this.config={...Ke,...t};let e=Number.parseInt(process.env.AQE_CLAUDE_CODE_CONCURRENCY??"",10);Number.isFinite(e)&&e>0&&(this.config.maxConcurrency=e)}async isAvailable(){let t=Date.now();if(this.availabilityCache&&t-this.availabilityCache.at<6e4)return this.availabilityCache.available;let e=!1;try{let{code:r}=await this.runProcess(["--version"],void 0,5e3);e=r===0}catch{e=!1}return this.availabilityCache={at:t,available:e},e}async healthCheck(){let t=Date.now(),e=await this.isAvailable(),r=Date.now()-t;return e?{healthy:!0,latencyMs:r,models:this.getSupportedModels(),details:{binaryPath:this.config.binaryPath,billing:"subscription"}}:{healthy:!1,latencyMs:r,error:`Claude Code CLI ("${this.config.binaryPath}") not found or not runnable. Install Claude Code and log in with your Pro/Max account.`}}async generate(t,e){let r=this.toCliModel(e?.model??this.config.model),o=`claude-code-${++this.requestId}-${Date.now()}`,{prompt:n,systemPrompt:s}=this.flatten(t,e?.systemPrompt),i=["-p","--output-format","json","--model",r];s&&i.push("--append-system-prompt",s);let l=this.config.disallowedTools??[];l.length>0&&i.push("--disallowedTools",...l);let p=Date.now(),m=e?.timeoutMs??this.config.timeoutMs??12e4,{code:c,stdout:u,stderr:d}=await this.withConcurrency(()=>this.runProcess(i,n,m)),h=Date.now()-p;if(c!==0&&!u.trim())throw this.classifyError(d||`claude exited with code ${c}`,r);let g;try{g=JSON.parse(u)}catch{throw a(`Could not parse claude -p JSON output: ${u.slice(0,200)}`,"PROVIDER_UNAVAILABLE",{provider:"claude-code",model:r,retryable:!0})}if(g.is_error)throw this.classifyError(g.result??g.api_error_status??"claude error",r);let b=g.usage??{},f={promptTokens:b.input_tokens??0,completionTokens:b.output_tokens??0,totalTokens:(b.input_tokens??0)+(b.output_tokens??0),cacheCreationTokens:b.cache_creation_input_tokens??0,cacheReadTokens:b.cache_read_input_tokens??0},C=g.modelUsage&&Object.keys(g.modelUsage)[0]||r;return v.recordTokenUsage(o,"claude-code-provider","llm","generate",{inputTokens:f.promptTokens,outputTokens:f.completionTokens,totalTokens:f.totalTokens,estimatedCostUsd:0}),{content:g.result??"",model:C,provider:"claude-code",usage:f,cost:{inputCost:0,outputCost:0,totalCost:0,currency:"USD",source:"provider-receipt"},latencyMs:h,finishReason:this.mapFinishReason(g.stop_reason),cached:!1,requestId:o}}async embed(t,e){throw a("Claude Code provider does not support embeddings. Use openai, ollama, or cognitum.","MODEL_NOT_FOUND",{provider:"claude-code",retryable:!1})}async complete(t,e){let r=await this.generate(t,{model:e?.model,temperature:e?.temperature??.2,maxTokens:e?.maxTokens??256});return{completion:r.content,model:r.model,provider:"claude-code",usage:r.usage,latencyMs:r.latencyMs,cached:r.cached}}getConfig(){return{...this.config}}getSupportedModels(){return["opus","sonnet","haiku"]}getCostPerToken(){return{input:0,output:0}}async dispose(){}toCliModel(t){let e=t.toLowerCase();return e.includes("opus")?"opus":e.includes("haiku")?"haiku":e.includes("sonnet")?"sonnet":t}flatten(t,e){if(typeof t=="string")return{prompt:t,systemPrompt:e};let r=t.filter(n=>n.role==="system").map(n=>n.content);return e&&r.unshift(e),{prompt:t.filter(n=>n.role!=="system").map(n=>`${n.role==="assistant"?"Assistant":"User"}: ${n.content}`).join(`
23
-
24
- `),systemPrompt:r.length>0?r.join(`
25
-
26
- `):void 0}}mapFinishReason(t){return t==="max_tokens"?"length":"stop"}classifyError(t,e){let r=t.toLowerCase();return r.includes("rate limit")||r.includes("usage limit")||r.includes("429")||r.includes("quota")?a(t,"RATE_LIMITED",{provider:"claude-code",model:e,retryable:!0,retryAfterMs:6e4}):a(t,"PROVIDER_UNAVAILABLE",{provider:"claude-code",model:e,retryable:!0})}static childEnv(t=process.env){let e={...t};for(let r of De)delete e[r];return e}runProcess(t,e,r){return new Promise((o,n)=>{let s=Ne(this.config.binaryPath??"claude",t,{env:y.childEnv(),stdio:["pipe","pipe","pipe"]}),i="",l="",p=!1,m=setTimeout(()=>{p||(p=!0,s.kill("SIGKILL"),n(a("claude -p timed out","TIMEOUT",{provider:"claude-code",retryable:!0})))},r);s.stdout.on("data",c=>i+=c.toString()),s.stderr.on("data",c=>l+=c.toString()),s.on("error",c=>{p||(p=!0,clearTimeout(m),n(a(`Failed to spawn claude: ${c.message}`,"PROVIDER_UNAVAILABLE",{provider:"claude-code",retryable:!1,cause:c})))}),s.on("close",c=>{p||(p=!0,clearTimeout(m),o({code:c??0,stdout:i,stderr:l}))}),s.stdin.on("error",()=>{});try{e!==void 0&&s.stdin.write(e),s.stdin.end()}catch{}})}async withConcurrency(t){let e=this.config.maxConcurrency??2;this.active>=e&&await new Promise(r=>this.queue.push(r)),this.active++;try{return await t()}finally{this.active--;let r=this.queue.shift();r&&r()}}};import{spawn as qe}from"node:child_process";import{mkdtempSync as Be,readFileSync as $e,rmSync as Ge}from"node:fs";import{tmpdir as Fe}from"node:os";import{join as Ce}from"node:path";var We=["OPENAI_API_KEY","CODEX_API_KEY"],D="default",ze={model:D,maxTokens:4096,temperature:.7,timeoutMs:18e4,maxRetries:1,binaryPath:"codex",maxConcurrency:2},z=class y{type="codex";name="Codex CLI (subscription)";billingMode="subscription";config;requestId=0;availabilityCache;active=0;queue=[];constructor(t={}){this.config={...ze,...t};let e=Number.parseInt(process.env.AQE_CODEX_CONCURRENCY??"",10);Number.isFinite(e)&&e>0&&(this.config.maxConcurrency=e)}async isAvailable(){let t=Date.now();if(this.availabilityCache&&t-this.availabilityCache.at<6e4)return this.availabilityCache.available;let e=!1;try{let{code:r}=await this.runProcess(["--version"],void 0,void 0,5e3);e=r===0}catch{e=!1}return this.availabilityCache={at:t,available:e},e}async healthCheck(){let t=Date.now(),e=await this.isAvailable(),r=Date.now()-t;return e?{healthy:!0,latencyMs:r,models:this.getSupportedModels(),details:{binaryPath:this.config.binaryPath,billing:"subscription"}}:{healthy:!1,latencyMs:r,error:`Codex CLI ("${this.config.binaryPath}") not found or not runnable. Install Codex and log in with your ChatGPT account (\`codex login\`).`}}async generate(t,e){let r=e?.model??this.config.model??D,o=`codex-${++this.requestId}-${Date.now()}`,{prompt:n}=this.flatten(t,e?.systemPrompt),s=Be(Ce(Fe(),"aqe-codex-")),i=Ce(s,"last-message.txt"),l=["exec","--skip-git-repo-check","--sandbox","read-only","-o",i];r&&r!==D&&l.push("-m",r);let p=Date.now(),m=e?.timeoutMs??this.config.timeoutMs??18e4;try{let{code:c,stderr:u}=await this.withConcurrency(()=>this.runProcess(l,n,void 0,m)),d=Date.now()-p,h="";try{h=$e(i,"utf8").trim()}catch{h=""}if(c!==0&&!h)throw this.classifyError(u||`codex exited with code ${c}`,r);let g=Math.ceil(n.length/4),b=Math.ceil(h.length/4),f={promptTokens:g,completionTokens:b,totalTokens:g+b,cacheCreationTokens:0,cacheReadTokens:0};return v.recordTokenUsage(o,"codex-provider","llm","generate",{inputTokens:f.promptTokens,outputTokens:f.completionTokens,totalTokens:f.totalTokens,estimatedCostUsd:0}),{content:h,model:r===D?"codex-default":r,provider:"codex",usage:f,cost:{inputCost:0,outputCost:0,totalCost:0,currency:"USD",source:"provider-receipt"},latencyMs:d,finishReason:"stop",cached:!1,requestId:o}}finally{Ge(s,{recursive:!0,force:!0})}}async embed(t,e){throw a("Codex provider does not support embeddings. Use openai, ollama, or cognitum.","MODEL_NOT_FOUND",{provider:"codex",retryable:!1})}async complete(t,e){let r=await this.generate(t,{model:e?.model,temperature:e?.temperature??.2,maxTokens:e?.maxTokens??256});return{completion:r.content,model:r.model,provider:"codex",usage:r.usage,latencyMs:r.latencyMs,cached:r.cached}}getConfig(){return{...this.config}}getSupportedModels(){return[D,"gpt-5-codex","o3","o4-mini"]}getCostPerToken(){return{input:0,output:0}}async dispose(){}flatten(t,e){if(typeof t=="string")return{prompt:e?`${e}
27
-
28
- ${t}`:t};let r=t.filter(s=>s.role==="system").map(s=>s.content);e&&r.unshift(e);let o=t.filter(s=>s.role!=="system").map(s=>`${s.role==="assistant"?"Assistant":"User"}: ${s.content}`).join(`
29
-
30
- `);return{prompt:`${r.length>0?`${r.join(`
31
-
32
- `)}
33
-
34
- `:""}${o}`}}classifyError(t,e){let r=t.toLowerCase();return r.includes("rate limit")||r.includes("usage limit")||r.includes("429")||r.includes("quota")?a(t,"RATE_LIMITED",{provider:"codex",model:e,retryable:!0,retryAfterMs:6e4}):a(t,"PROVIDER_UNAVAILABLE",{provider:"codex",model:e,retryable:!0})}static childEnv(t=process.env){let e={...t};for(let r of We)delete e[r];return e}runProcess(t,e,r,o){return new Promise((n,s)=>{let i=qe(this.config.binaryPath??"codex",t,{env:y.childEnv(),stdio:["pipe","pipe","pipe"]}),l="",p="",m=!1,c=setTimeout(()=>{m||(m=!0,i.kill("SIGKILL"),s(a("codex exec timed out","TIMEOUT",{provider:"codex",retryable:!0})))},o);i.stdout.on("data",u=>l+=u.toString()),i.stderr.on("data",u=>p+=u.toString()),i.on("error",u=>{m||(m=!0,clearTimeout(c),s(a(`Failed to spawn codex: ${u.message}`,"PROVIDER_UNAVAILABLE",{provider:"codex",retryable:!1,cause:u})))}),i.on("close",u=>{m||(m=!0,clearTimeout(c),n({code:u??0,stdout:l,stderr:p}))}),i.stdin.on("error",()=>{});try{e!==void 0&&i.stdin.write(e),i.stdin.end()}catch{}})}async withConcurrency(t){let e=this.config.maxConcurrency??2;this.active>=e&&await new Promise(r=>this.queue.push(r)),this.active++;try{return await t()}finally{this.active--;let r=this.queue.shift();r&&r()}}};L();var je={model:"cognitum-auto",maxTokens:4096,temperature:.7,timeoutMs:6e4,maxRetries:3,enableCache:!0,enableCircuitBreaker:!0},j=class{type="cognitum";name="Cognitum";billingMode="metered-capped";config;requestId=0;constructor(t={}){this.config={...je,...t}}async isAvailable(){if(!this.getApiKey())return!1;try{return(await this.healthCheck()).healthy}catch{return!1}}async healthCheck(){if(!this.getApiKey())return{healthy:!1,error:"API key not configured. Set COGNITUM_API_KEY environment variable."};let e=Date.now();try{let r=await this.fetchWithTimeout(`${this.getBaseUrl()}/v1/models`,{method:"GET",headers:this.getHeaders()},5e3),o=Date.now()-e;return r.ok?{healthy:!0,latencyMs:o,models:this.getSupportedModels(),details:{billing:"metered-capped",baseUrl:this.getBaseUrl()}}:{healthy:!1,latencyMs:o,error:`API error: ${r.status}`}}catch(r){return{healthy:!1,error:r instanceof Error?r.message:"Unknown error"}}}async generate(t,e){if(!this.getApiKey())throw a("Cognitum API key not configured","API_KEY_MISSING",{provider:"cognitum",retryable:!1});let o=this.formatMessages(t,e?.systemPrompt),n=e?.model??this.config.model,s=e?.maxTokens??this.config.maxTokens??4096,i=e?.temperature??this.config.temperature??.7,l=`cognitum-${++this.requestId}-${Date.now()}`,p=Date.now(),m={model:n,max_tokens:s,temperature:i,messages:o};e?.stopSequences?.length&&(m.stop=e.stopSequences);try{let c=await this.fetchWithRetry(`${this.getBaseUrl()}/v1/chat/completions`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify(m)},e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),u=Date.now()-p;if(!c.ok)throw await this.toApiError(c,n);let d=await c.json(),h=d.x_cognitum,g={promptTokens:d.usage.prompt_tokens,completionTokens:d.usage.completion_tokens,totalTokens:d.usage.total_tokens,cacheReadTokens:d.usage.cache_read_tokens??0},b=this.receiptCost(h);return v.recordTokenUsage(l,"cognitum-provider","llm","generate",{inputTokens:g.promptTokens,outputTokens:g.completionTokens,totalTokens:g.totalTokens,estimatedCostUsd:b.totalCost}),{content:d.choices[0]?.message?.content??"",model:h?.resolved_model??d.model,provider:"cognitum",usage:g,cost:b,latencyMs:u,finishReason:this.mapFinishReason(d.choices[0]?.finish_reason),cached:h?.cache==="hit",requestId:l}}catch(c){throw c instanceof Error&&"code"in c?c:a(c instanceof Error?c.message:"Request failed","NETWORK_ERROR",{provider:"cognitum",model:n,retryable:!0,cause:c})}}async embed(t,e){if(!this.getApiKey())throw a("Cognitum API key not configured","API_KEY_MISSING",{provider:"cognitum",retryable:!1});let o=e?.model??"cognitum-embed",n=Date.now();try{let s=await this.fetchWithTimeout(`${this.getBaseUrl()}/v1/embeddings`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify({model:o,input:t})},e?.timeoutMs??this.config.timeoutMs??3e4),i=Date.now()-n;if(!s.ok)throw await this.toApiError(s,o);let l=await s.json();return{embedding:l.data[0].embedding,model:l.x_cognitum?.resolved_model??l.model,provider:"cognitum",tokenCount:l.usage.total_tokens,latencyMs:i,cached:!1}}catch(s){throw s instanceof Error&&"code"in s?s:a(s instanceof Error?s.message:"Embedding request failed","NETWORK_ERROR",{provider:"cognitum",model:o,retryable:!0,cause:s})}}async complete(t,e){let r=await this.generate(t,{model:e?.model,temperature:e?.temperature??.2,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences});return{completion:r.content,model:r.model,provider:"cognitum",usage:r.usage,latencyMs:r.latencyMs,cached:r.cached}}getConfig(){return{...this.config}}getSupportedModels(){return["cognitum-auto","cognitum-low","cognitum-mid","cognitum-high"]}getCostPerToken(){return{input:0,output:0}}async dispose(){}async getRemoteBudget(){try{let t=await this.fetchWithTimeout(`${this.getBaseUrl()}/v1/usage`,{method:"GET",headers:this.getHeaders()},5e3);if(!t.ok)return;let r=(await t.json()).budget;return r?{servingBudgetUsd:r.servingBudgetUsd??0,hardCapUsd:r.hardCapUsd??0,committedUsd:r.committedUsd??0,headroomUsd:r.headroomUsd??0,status:r.status??"unknown",headroomExhausted:r.headroomExhausted??!1}:void 0}catch{return}}receiptCost(t){return{inputCost:0,outputCost:0,totalCost:t?.price_usd??0,currency:"USD",source:t?.price_usd!==void 0?"provider-receipt":"local-estimate"}}getApiKey(){return this.config.apiKey??process.env.COGNITUM_API_KEY}getBaseUrl(){return(this.config.baseUrl??process.env.COGNITUM_BASE_URL??"https://api.cognitum.one").replace(/\/$/,"")}getHeaders(){return{"Content-Type":"application/json","X-API-Key":this.getApiKey()}}formatMessages(t,e){let r=[];if(typeof t=="string")e&&r.push({role:"system",content:e}),r.push({role:"user",content:t});else{let o=t.some(n=>n.role==="system");e&&!o&&r.push({role:"system",content:e});for(let n of t)r.push({role:n.role,content:n.content})}return r}mapFinishReason(t){switch(t){case"length":return"length";case"content_filter":return"content_filter";default:return"stop"}}async toApiError(t,e){let r=await t.text().catch(()=>""),o=r;try{o=JSON.parse(r).error??r}catch{}switch(t.status){case 401:case 403:return a(o||"Unauthorized","API_KEY_INVALID",{provider:"cognitum",model:e,retryable:!1});case 402:return a(o||"Budget cap reached","COST_LIMIT_EXCEEDED",{provider:"cognitum",model:e,retryable:!1});case 429:return a(o||"Rate limited","RATE_LIMITED",{provider:"cognitum",model:e,retryable:!0,retryAfterMs:6e4});case 500:case 502:case 503:return a(o||"Provider unavailable","PROVIDER_UNAVAILABLE",{provider:"cognitum",model:e,retryable:!0,retryAfterMs:5e3});default:return a(o||`HTTP ${t.status}`,"UNKNOWN",{provider:"cognitum",model:e,retryable:!1})}}async fetchWithTimeout(t,e,r){let o=new AbortController,n=setTimeout(()=>o.abort(),r);try{return await fetch(t,{...e,signal:o.signal})}catch(s){throw s instanceof Error&&s.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"cognitum",retryable:!0}):s}finally{clearTimeout(n)}}async fetchWithRetry(t,e,r,o){let n;for(let s=0;s<o;s++)try{let i=await this.fetchWithTimeout(t,e,r);if(i.status>=400&&i.status<500&&i.status!==429)return i;if((i.status>=500||i.status===429)&&s<o-1){await this.sleep(T(s));continue}return i}catch(i){n=E(i),s<o-1&&await this.sleep(T(s))}throw n??new Error("Request failed after retries")}sleep(t){return new Promise(e=>setTimeout(e,t))}};L();var He={model:"gpt-4o",maxTokens:4096,temperature:.7,timeoutMs:6e4,maxRetries:3,enableCache:!0,enableCircuitBreaker:!0},H=class{type="openai";name="OpenAI";config;requestId=0;constructor(t={}){this.config={...He,...t}}async isAvailable(){if(!this.getApiKey())return!1;try{return(await this.healthCheck()).healthy}catch{return!1}}async healthCheck(){if(!this.getApiKey())return{healthy:!1,error:"API key not configured. Set OPENAI_API_KEY environment variable."};let e=Date.now();try{let r=await this.fetchWithTimeout(`${this.getBaseUrl()}/v1/chat/completions`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify({model:this.config.model,max_tokens:1,messages:[{role:"user",content:"Hi"}]})},5e3),o=Date.now()-e;if(!r.ok){let n=await r.text();return{healthy:!1,latencyMs:o,error:`API error: ${r.status} - ${n}`}}return{healthy:!0,latencyMs:o,models:this.getSupportedModels(),details:{defaultModel:this.config.model,organization:this.config.organization}}}catch(r){return{healthy:!1,error:r instanceof Error?r.message:"Unknown error"}}}async generate(t,e){if(!this.getApiKey())throw a("OpenAI API key not configured","API_KEY_MISSING",{provider:"openai",retryable:!1});let o=this.formatMessages(t,e?.systemPrompt),n=e?.model??this.config.model,s=e?.maxTokens??this.config.maxTokens??4096,i=e?.temperature??this.config.temperature??.7,l=`openai-${++this.requestId}-${Date.now()}`,p=Date.now(),m={model:n,max_tokens:s,temperature:i,messages:o};e?.stopSequences&&e.stopSequences.length>0&&(m.stop=e.stopSequences),this.config.presencePenalty!==void 0&&(m.presence_penalty=this.config.presencePenalty),this.config.frequencyPenalty!==void 0&&(m.frequency_penalty=this.config.frequencyPenalty);try{let c=await this.fetchWithRetry(`${this.getBaseUrl()}/v1/chat/completions`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify(m)},e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),u=Date.now()-p;if(!c.ok){let f=await c.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(c.status,f,n)}let d=await c.json(),h={promptTokens:d.usage.prompt_tokens,completionTokens:d.usage.completion_tokens,totalTokens:d.usage.total_tokens},g=R.calculateCost(n,h);return v.recordTokenUsage(l,"openai-provider","llm","generate",{inputTokens:d.usage.prompt_tokens,outputTokens:d.usage.completion_tokens,totalTokens:d.usage.total_tokens,estimatedCostUsd:g.totalCost}),{content:d.choices[0]?.message?.content??"",model:d.model,provider:"openai",usage:h,cost:g,latencyMs:u,finishReason:this.mapFinishReason(d.choices[0]?.finish_reason),cached:!1,requestId:l}}catch(c){throw c instanceof Error&&"code"in c?c:a(c instanceof Error?c.message:"Request failed","NETWORK_ERROR",{provider:"openai",model:n,retryable:!0,cause:c})}}async embed(t,e){if(!this.getApiKey())throw a("OpenAI API key not configured","API_KEY_MISSING",{provider:"openai",retryable:!1});let o=e?.model??"text-embedding-3-small",n=Date.now();try{let s=await this.fetchWithTimeout(`${this.getBaseUrl()}/v1/embeddings`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify({model:o,input:t})},e?.timeoutMs??this.config.timeoutMs??3e4),i=Date.now()-n;if(!s.ok){let p=await s.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(s.status,p,o)}let l=await s.json();return{embedding:l.data[0].embedding,model:l.model,provider:"openai",tokenCount:l.usage.total_tokens,latencyMs:i,cached:!1}}catch(s){throw s instanceof Error&&"code"in s?s:a(s instanceof Error?s.message:"Embedding request failed","NETWORK_ERROR",{provider:"openai",model:o,retryable:!0,cause:s})}}async complete(t,e){let r=await this.generate(t,{model:e?.model,temperature:e?.temperature??.2,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
35
-
36
- `]});return{completion:r.content,model:r.model,provider:"openai",usage:r.usage,latencyMs:r.latencyMs,cached:r.cached}}getConfig(){return{...this.config}}getSupportedModels(){return["gpt-4o","gpt-4o-mini","gpt-4-turbo","gpt-4","gpt-3.5-turbo"]}getCostPerToken(){return R.getCostPerToken(this.config.model)}async dispose(){}getApiKey(){return this.config.apiKey??process.env.OPENAI_API_KEY}getBaseUrl(){return(this.config.baseUrl??"https://api.openai.com").replace(/\/$/,"")}getHeaders(){let t={"Content-Type":"application/json",Authorization:`Bearer ${this.getApiKey()}`};return this.config.organization&&(t["OpenAI-Organization"]=this.config.organization),t}formatMessages(t,e){let r=[];if(typeof t=="string")e&&r.push({role:"system",content:e}),r.push({role:"user",content:t});else{let o=t.some(n=>n.role==="system");e&&!o&&r.push({role:"system",content:e});for(let n of t)r.push({role:n.role,content:n.content})}return r}mapFinishReason(t){switch(t){case"stop":return"stop";case"length":return"length";case"content_filter":return"content_filter";default:return"stop"}}handleApiError(t,e,r){let o=e.error?.message??"Unknown API error",n=e.error?.type??"",s=e.error?.code??"";switch(t){case 401:throw a(o,"API_KEY_INVALID",{provider:"openai",model:r,retryable:!1});case 429:throw a(o,"RATE_LIMITED",{provider:"openai",model:r,retryable:!0,retryAfterMs:6e4});case 400:throw s==="context_length_exceeded"||n==="invalid_request_error"?a(o,"CONTEXT_LENGTH_EXCEEDED",{provider:"openai",model:r,retryable:!1}):a(o,"UNKNOWN",{provider:"openai",model:r,retryable:!1});case 500:case 502:case 503:throw a(o,"PROVIDER_UNAVAILABLE",{provider:"openai",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(o,"UNKNOWN",{provider:"openai",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let o=new AbortController,n=setTimeout(()=>o.abort(),r);try{return await fetch(t,{...e,signal:o.signal})}catch(s){throw s instanceof Error&&s.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"openai",retryable:!0}):s}finally{clearTimeout(n)}}async fetchWithRetry(t,e,r,o){let n;for(let s=0;s<o;s++)try{let i=await this.fetchWithTimeout(t,e,r);if(i.status>=400&&i.status<500&&i.status!==429)return i;if((i.status>=500||i.status===429)&&s<o-1){let l=T(s);await this.sleep(l);continue}return i}catch(i){if(n=E(i),s<o-1){let l=T(s);await this.sleep(l)}}throw n??new Error("Request failed after retries")}sleep(t){return new Promise(e=>setTimeout(e,t))}};Ae();var U={DEFAULT_TOK_PER_SEC:15,SAFETY_FACTOR:2.5,LOAD_OVERHEAD_MS:15e3,FLOOR_MS:3e4,CEIL_MS:6e5};function Re(y,t=U.DEFAULT_TOK_PER_SEC){let e=t>0?t:U.DEFAULT_TOK_PER_SEC,o=Math.max(0,y)/e*1e3*U.SAFETY_FACTOR+U.LOAD_OVERHEAD_MS;return Math.min(U.CEIL_MS,Math.max(U.FLOOR_MS,Math.round(o)))}var _e={model:"llama3.1",baseUrl:oe("http://localhost:11434"),maxTokens:4096,temperature:.7,timeoutMs:12e4,maxRetries:2,contextLength:4096,keepAlive:"5m",enableCache:!0,enableCircuitBreaker:!0},V=class{type="ollama";name="Ollama (Local)";config;requestId=0;availableModels=[];observedTokPerSec=new Map;constructor(t={}){this.config={..._e,...t}}timeoutFor(t,e){let r=this.config.timeoutMs;return r&&r!==_e.timeoutMs?r:Re(e,this.observedTokPerSec.get(t))}recordThroughput(t,e,r){if(!e||!r||r<=0)return;let o=e/(r/1e9);if(!Number.isFinite(o)||o<=0)return;let n=this.observedTokPerSec.get(t);this.observedTokPerSec.set(t,n?n*.5+o*.5:o)}async isAvailable(){try{return(await this.healthCheck()).healthy}catch{return!1}}async healthCheck(){let t=Date.now();try{let e=await this.fetchWithTimeout(`${this.getBaseUrl()}/api/tags`,{method:"GET",headers:{"Content-Type":"application/json"}},5e3),r=Date.now()-t;if(!e.ok)return{healthy:!1,latencyMs:r,error:`Ollama server returned ${e.status}`};let o=await e.json();return this.availableModels=o.models?.map(s=>s.name.split(":")[0])??[],!this.availableModels.some(s=>s===this.config.model||s.startsWith(this.config.model)||this.config.model.startsWith(s))&&this.availableModels.length>0?{healthy:!0,latencyMs:r,models:this.availableModels,details:{warning:`Configured model '${this.config.model}' not found. Available: ${this.availableModels.join(", ")}`,defaultModel:this.config.model}}:{healthy:!0,latencyMs:r,models:this.availableModels,details:{defaultModel:this.config.model,modelCount:this.availableModels.length}}}catch(e){return{healthy:!1,error:`Ollama not running. Start with: ollama serve. Error: ${e instanceof Error?e.message:"Unknown"}`}}}async generate(t,e){let r=e?.model??this.config.model,o=e?.maxTokens??this.config.maxTokens??4096,n=e?.temperature??this.config.temperature??.7,s=`ollama-${++this.requestId}-${Date.now()}`,i=Date.now(),l=Array.isArray(t);try{let p,m,c,u;if(l){let b=this.formatMessages(t,e?.systemPrompt);if(p=await this.fetchWithTimeout(`${this.getBaseUrl()}/api/chat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:r,messages:b,stream:!1,options:{temperature:n,num_predict:o,stop:e?.stopSequences}})},e?.timeoutMs??this.timeoutFor(r,o)),!p.ok)throw await this.handleApiError(p,r);let f=await p.json();m=f.message.content,this.recordThroughput(r,f.eval_count,f.eval_duration),c=f.prompt_eval_count??this.estimateTokens(JSON.stringify(b)),u=f.eval_count??this.estimateTokens(m)}else{let b=e?.systemPrompt?`${e.systemPrompt}
37
-
38
- ${t}`:t;if(p=await this.fetchWithTimeout(`${this.getBaseUrl()}/api/generate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:r,prompt:b,stream:!1,options:{temperature:n,num_predict:o,stop:e?.stopSequences}})},e?.timeoutMs??this.timeoutFor(r,o)),!p.ok)throw await this.handleApiError(p,r);let f=await p.json();m=f.response,this.recordThroughput(r,f.eval_count,f.eval_duration),c=f.prompt_eval_count??this.estimateTokens(b),u=f.eval_count??this.estimateTokens(m)}let d=Date.now()-i,h={promptTokens:c,completionTokens:u,totalTokens:c+u},g=R.calculateCost(r,h);return v.recordTokenUsage(s,"ollama-provider","llm","generate",{inputTokens:c,outputTokens:u,totalTokens:c+u,estimatedCostUsd:g.totalCost}),{content:m,model:r,provider:"ollama",usage:h,cost:g,latencyMs:d,finishReason:"stop",cached:!1,requestId:s}}catch(p){throw p instanceof Error&&"code"in p?p:a(p instanceof Error?p.message:"Request failed","NETWORK_ERROR",{provider:"ollama",model:r,retryable:!0,cause:p})}}async embed(t,e){let r=e?.model??"all-MiniLM-L6-v2",o=Date.now();try{let n=await this.fetchWithTimeout(`${this.getBaseUrl()}/api/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:r,prompt:t})},e?.timeoutMs??3e4),s=Date.now()-o;if(!n.ok)throw await this.handleApiError(n,r);return{embedding:(await n.json()).embedding,model:r,provider:"ollama",tokenCount:this.estimateTokens(t),latencyMs:s,cached:!1}}catch(n){throw n instanceof Error&&"code"in n?n:a(n instanceof Error?n.message:"Embedding request failed","NETWORK_ERROR",{provider:"ollama",model:r,retryable:!0,cause:n})}}async complete(t,e){let r=e?.model??this.selectCodeModel(),o=await this.generate(t,{model:r,temperature:e?.temperature??.1,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
39
-
40
- `,"```","// ","# "]});return{completion:o.content,model:o.model,provider:"ollama",usage:o.usage,latencyMs:o.latencyMs,cached:o.cached}}getConfig(){return{...this.config}}getSupportedModels(){let t=["llama3","llama3.1","llama3.2","codellama","mistral","mixtral","phi3","qwen2","gemma","nomic-embed-text"],e=new Set([...t,...this.availableModels]);return Array.from(e)}getCostPerToken(){return{input:0,output:0}}async dispose(){}async pullModel(t){try{let e=await this.fetchWithTimeout(`${this.getBaseUrl()}/api/pull`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t,stream:!1})},6e5);if(!e.ok){let r=await e.text();throw new Error(`Failed to pull model: ${r}`)}}catch(e){throw a(`Failed to pull model ${t}: ${e instanceof Error?e.message:"Unknown"}`,"MODEL_NOT_FOUND",{provider:"ollama",model:t,retryable:!0})}}getBaseUrl(){return(this.config.baseUrl??oe()).replace(/\/$/,"")}formatMessages(t,e){let r=[];e&&r.push({role:"system",content:e});for(let o of t)r.push({role:o.role,content:o.content});return r}selectCodeModel(){let t=["codellama","llama3.1","llama3","mistral"];for(let e of t)if(this.availableModels.some(r=>r===e||r.startsWith(e)))return e;return this.config.model}estimateTokens(t){return Math.ceil(t.length/4)}async handleApiError(t,e){let r=await t.text().catch(()=>"Unknown error");throw t.status===404?a(`Model '${e}' not found. Pull it with: ollama pull ${e}`,"MODEL_NOT_FOUND",{provider:"ollama",model:e,retryable:!1}):t.status===500?a(`Ollama server error: ${r}`,"PROVIDER_UNAVAILABLE",{provider:"ollama",model:e,retryable:!0,retryAfterMs:1e3}):a(`Ollama API error (${t.status}): ${r}`,"UNKNOWN",{provider:"ollama",model:e,retryable:!1})}async fetchWithTimeout(t,e,r){let o=new AbortController,n=setTimeout(()=>o.abort(),r);try{return await fetch(t,{...e,signal:o.signal})}catch(s){throw s instanceof Error&&s.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"ollama",retryable:!0}):s}finally{clearTimeout(n)}}};L();ue();var Ve={model:"anthropic/claude-3.5-sonnet",maxTokens:4096,temperature:.7,timeoutMs:6e4,maxRetries:3,enableCache:!0,enableCircuitBreaker:!0,baseUrl:"https://openrouter.ai/api/v1",allowFallback:!1},Y={"anthropic/claude-3.5-sonnet":{input:3,output:15},"anthropic/claude-3.5-sonnet:beta":{input:3,output:15},"anthropic/claude-3-opus":{input:15,output:75},"anthropic/claude-3-sonnet":{input:3,output:15},"anthropic/claude-3-haiku":{input:.25,output:1.25},"openai/gpt-4o":{input:5,output:15},"openai/gpt-4o-mini":{input:.15,output:.6},"openai/gpt-4-turbo":{input:10,output:30},"openai/gpt-3.5-turbo":{input:.5,output:1.5},"google/gemini-pro":{input:.125,output:.375},"google/gemini-pro-1.5":{input:3.5,output:10.5},"meta-llama/llama-3.1-70b-instruct":{input:.59,output:.79},"meta-llama/llama-3.1-8b-instruct":{input:.06,output:.06},"mistralai/mistral-large":{input:2,output:6},"mistralai/mixtral-8x7b-instruct":{input:.24,output:.24},"mistralai/mistral-7b-instruct":{input:.06,output:.06},default:{input:1,output:3}},J=class{type="openrouter";name="OpenRouter";config;requestId=0;cachedModels=null;constructor(t={}){this.config={...Ve,...t}}async isAvailable(){if(!this.getApiKey())return!1;try{return(await this.healthCheck()).healthy}catch{return!1}}async healthCheck(){if(!this.getApiKey())return{healthy:!1,error:"API key not configured. Set OPENROUTER_API_KEY environment variable."};let e=Date.now();try{let r=await this.fetchWithTimeout(`${this.getBaseUrl()}/models`,{method:"GET",headers:this.getHeaders()},5e3),o=Date.now()-e;if(!r.ok){let i=await r.text();return{healthy:!1,latencyMs:o,error:`API error: ${r.status} - ${i}`}}let s=(await r.json()).data?.map(i=>i.id)||[];return this.cachedModels=s,{healthy:!0,latencyMs:o,models:s.slice(0,20),details:{totalModels:s.length,defaultModel:this.config.model}}}catch(r){return{healthy:!1,error:r instanceof Error?r.message:"Unknown error"}}}async generate(t,e){if(!this.getApiKey())throw a("OpenRouter API key not configured","API_KEY_MISSING",{provider:"openrouter",retryable:!1});let o=this.formatMessages(t,e?.systemPrompt),n=e?.model??this.config.model,s=e?.maxTokens??this.config.maxTokens??4096,i=e?.temperature??this.config.temperature??.7,l=`openrouter-${++this.requestId}-${Date.now()}`,p=Date.now(),m={model:n,max_tokens:s,temperature:i,messages:o};e?.stopSequences&&e.stopSequences.length>0&&(m.stop=e.stopSequences),this.config.allowFallback!==void 0&&(m.route=this.config.allowFallback?"fallback":void 0),this.config.forceProvider&&(m.provider={order:[this.config.forceProvider]});try{let c=await this.fetchWithRetry(`${this.getBaseUrl()}/chat/completions`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify(m)},e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),u=Date.now()-p;if(!c.ok){let f=await c.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(c.status,f,n)}let d=await c.json(),h={promptTokens:d.usage?.prompt_tokens??0,completionTokens:d.usage?.completion_tokens??0,totalTokens:d.usage?.total_tokens??0},g=this.calculateCost(n,h);return v.recordTokenUsage(l,"openrouter-provider","llm","generate",{inputTokens:h.promptTokens,outputTokens:h.completionTokens,totalTokens:h.totalTokens,estimatedCostUsd:g.totalCost}),{content:d.choices[0]?.message?.content??"",model:d.model,provider:"openrouter",usage:h,cost:g,latencyMs:u,finishReason:this.mapFinishReason(d.choices[0]?.finish_reason),cached:!1,requestId:l}}catch(c){throw c instanceof Error&&"code"in c?c:a(c instanceof Error?c.message:"Request failed","NETWORK_ERROR",{provider:"openrouter",model:n,retryable:!0,cause:c})}}async*generateStream(t,e){if(!this.getApiKey())throw a("OpenRouter API key not configured","API_KEY_MISSING",{provider:"openrouter",retryable:!1});let o=this.formatMessages(t,e?.systemPrompt),n=e?.model??this.config.model,s=e?.maxTokens??this.config.maxTokens??4096,i=e?.temperature??this.config.temperature??.7,l=`openrouter-stream-${++this.requestId}-${Date.now()}`,p=Date.now(),m={model:n,max_tokens:s,temperature:i,messages:o,stream:!0};e?.stopSequences&&e.stopSequences.length>0&&(m.stop=e.stopSequences);let c=await this.fetchWithTimeout(`${this.getBaseUrl()}/chat/completions`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify(m)},e?.timeoutMs??this.config.timeoutMs??6e4);if(!c.ok){let w=await c.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(c.status,w,n)}if(!c.body)throw a("No response body for streaming","NETWORK_ERROR",{provider:"openrouter",model:n,retryable:!0});let u="",d="stop",h=n,g=c.body.getReader(),b=new TextDecoder,f="";try{for(;;){let{done:w,value:te}=await g.read();if(w)break;f+=b.decode(te,{stream:!0});let x=f.split(`
41
- `);f=x.pop()||"";for(let A of x){let P=A.trim();if(!(!P||P==="data: [DONE]")&&P.startsWith("data: "))try{let I=K(P.slice(6)),re=I.choices[0]?.delta;re?.content&&(u+=re.content,yield re.content),I.choices[0]?.finish_reason&&(d=this.mapFinishReason(I.choices[0].finish_reason)),I.model&&(h=I.model)}catch{}}}}finally{g.releaseLock()}let C=Date.now()-p,k=Math.ceil(JSON.stringify(o).length/4),O=Math.ceil(u.length/4),_={promptTokens:k,completionTokens:O,totalTokens:k+O},S=this.calculateCost(n,_);return v.recordTokenUsage(l,"openrouter-provider","llm","generate-stream",{inputTokens:_.promptTokens,outputTokens:_.completionTokens,totalTokens:_.totalTokens,estimatedCostUsd:S.totalCost}),{content:u,model:h,provider:"openrouter",usage:_,cost:S,latencyMs:C,finishReason:d,cached:!1,requestId:l}}async embed(t,e){if(!this.getApiKey())throw a("OpenRouter API key not configured","API_KEY_MISSING",{provider:"openrouter",retryable:!1});let o=e?.model??"openai/text-embedding-3-small",n=Date.now();try{let s=await this.fetchWithTimeout(`${this.getBaseUrl()}/embeddings`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify({model:o,input:t})},e?.timeoutMs??this.config.timeoutMs??3e4),i=Date.now()-n;if(!s.ok){let p=await s.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(s.status,p,o)}let l=await s.json();return{embedding:l.data[0].embedding,model:l.model,provider:"openrouter",tokenCount:l.usage.total_tokens,latencyMs:i,cached:!1}}catch(s){throw s instanceof Error&&"code"in s?s:a(s instanceof Error?s.message:"Embedding request failed","NETWORK_ERROR",{provider:"openrouter",model:o,retryable:!0,cause:s})}}async complete(t,e){let r=await this.generate(t,{model:e?.model,temperature:e?.temperature??.2,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
42
-
43
- `]});return{completion:r.content,model:r.model,provider:"openrouter",usage:r.usage,latencyMs:r.latencyMs,cached:r.cached}}getConfig(){return{...this.config}}getSupportedModels(){return this.cachedModels?this.cachedModels:["anthropic/claude-3.5-sonnet","anthropic/claude-3-opus","anthropic/claude-3-sonnet","anthropic/claude-3-haiku","openai/gpt-4o","openai/gpt-4o-mini","openai/gpt-4-turbo","openai/gpt-3.5-turbo","google/gemini-pro","google/gemini-pro-1.5","meta-llama/llama-3.1-70b-instruct","meta-llama/llama-3.1-8b-instruct","mistralai/mistral-large","mistralai/mixtral-8x7b-instruct"]}getCostPerToken(){let t=Y[this.config.model]||Y.default;return{input:t.input/1e6,output:t.output/1e6}}async dispose(){this.cachedModels=null}calculateCost(t,e){let r=Y[t]||Y.default,o=e.promptTokens/1e6*r.input,n=e.completionTokens/1e6*r.output;return{inputCost:o,outputCost:n,totalCost:o+n,currency:"USD"}}getApiKey(){return this.config.apiKey??process.env.OPENROUTER_API_KEY}getBaseUrl(){return(this.config.baseUrl??"https://openrouter.ai/api/v1").replace(/\/$/,"")}getHeaders(){let t={"Content-Type":"application/json",Authorization:`Bearer ${this.getApiKey()}`};return this.config.siteUrl&&(t["HTTP-Referer"]=this.config.siteUrl),this.config.siteName&&(t["X-Title"]=this.config.siteName),t}formatMessages(t,e){let r=[];if(typeof t=="string")e&&r.push({role:"system",content:e}),r.push({role:"user",content:t});else{let o=t.some(n=>n.role==="system");e&&!o&&r.push({role:"system",content:e});for(let n of t)r.push({role:n.role,content:n.content})}return r}mapFinishReason(t){switch(t){case"stop":return"stop";case"length":return"length";case"content_filter":return"content_filter";case"tool_calls":return"stop";default:return"stop"}}handleApiError(t,e,r){let o=e.error?.message??"Unknown API error",n=e.error?.type??"",s=e.error?.code;switch(t){case 401:throw a(o,"API_KEY_INVALID",{provider:"openrouter",model:r,retryable:!1});case 402:throw a(o,"COST_LIMIT_EXCEEDED",{provider:"openrouter",model:r,retryable:!1});case 429:throw a(o,"RATE_LIMITED",{provider:"openrouter",model:r,retryable:!0,retryAfterMs:6e4});case 400:throw s==="context_length_exceeded"||n==="invalid_request_error"?a(o,"CONTEXT_LENGTH_EXCEEDED",{provider:"openrouter",model:r,retryable:!1}):a(o,"UNKNOWN",{provider:"openrouter",model:r,retryable:!1});case 404:throw a(o,"MODEL_NOT_FOUND",{provider:"openrouter",model:r,retryable:!1});case 500:case 502:case 503:throw a(o,"PROVIDER_UNAVAILABLE",{provider:"openrouter",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(o,"UNKNOWN",{provider:"openrouter",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let o=new AbortController,n=setTimeout(()=>o.abort(),r);try{return await fetch(t,{...e,signal:o.signal})}catch(s){throw s instanceof Error&&s.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"openrouter",retryable:!0}):s}finally{clearTimeout(n)}}async fetchWithRetry(t,e,r,o){let n;for(let s=0;s<o;s++)try{let i=await this.fetchWithTimeout(t,e,r);if(i.status>=400&&i.status<500&&i.status!==429)return i;if((i.status>=500||i.status===429)&&s<o-1){let l=T(s);await this.sleep(l);continue}return i}catch(i){if(n=E(i),s<o-1){let l=T(s);await this.sleep(l)}}throw n??new Error("Request failed after retries")}sleep(t){return new Promise(e=>setTimeout(e,t))}};L();ue();var Ye={model:"gemini-2.5-flash",maxTokens:8192,temperature:.7,timeoutMs:6e4,maxRetries:3,enableCache:!0,enableCircuitBreaker:!0,baseUrl:"https://generativelanguage.googleapis.com/v1beta",safetyThreshold:"BLOCK_MEDIUM_AND_ABOVE"},X={"gemini-pro":{input:.5,output:1.5},"gemini-1.0-pro":{input:.5,output:1.5},"gemini-1.5-pro":{input:3.5,output:10.5},"gemini-1.5-pro-latest":{input:3.5,output:10.5},"gemini-1.5-flash":{input:.075,output:.3},"gemini-1.5-flash-latest":{input:.075,output:.3},"gemini-2.0-flash-exp":{input:.075,output:.3},"gemini-2.5-pro":{input:1.25,output:10},"gemini-2.5-flash":{input:.3,output:2.5},"gemini-flash-latest":{input:.3,output:2.5},"gemini-ultra":{input:7,output:21},"gemini-1.0-ultra":{input:7,output:21},default:{input:1,output:3}},Q=class{type="gemini";name="Google Gemini";config;requestId=0;cachedModels=null;constructor(t={}){this.config={...Ye,...t}}async isAvailable(){if(!this.getApiKey())return!1;try{return(await this.healthCheck()).healthy}catch{return!1}}async healthCheck(){let t=this.getApiKey();if(!t)return{healthy:!1,error:"API key not configured. Set GOOGLE_AI_API_KEY, GEMINI_API_KEY, or GOOGLE_API_KEY environment variable."};let e=Date.now();try{let r=await this.fetchWithTimeout(`${this.getBaseUrl()}/models?key=${t}`,{method:"GET",headers:{"Content-Type":"application/json"}},5e3),o=Date.now()-e;if(!r.ok){let i=await r.text();return{healthy:!1,latencyMs:o,error:`API error: ${r.status} - ${i}`}}let s=(await r.json()).models?.filter(i=>i.supportedGenerationMethods?.includes("generateContent")).map(i=>i.name.replace("models/",""))||[];return this.cachedModels=s,{healthy:!0,latencyMs:o,models:s.slice(0,20),details:{totalModels:s.length,defaultModel:this.config.model}}}catch(r){return{healthy:!1,error:r instanceof Error?r.message:"Unknown error"}}}async generate(t,e){let r=this.getApiKey();if(!r)throw a("Gemini API key not configured","API_KEY_MISSING",{provider:"gemini",retryable:!1});let o=this.formatContents(t),n=e?.model??this.config.model,s=e?.maxTokens??this.config.maxTokens??8192,i=e?.temperature??this.config.temperature??.7,l=`gemini-${++this.requestId}-${Date.now()}`,p=Date.now(),m={contents:o,generationConfig:{maxOutputTokens:s,temperature:i,topP:this.config.topP}};e?.systemPrompt&&(m.systemInstruction={parts:[{text:e.systemPrompt}]}),e?.stopSequences&&e.stopSequences.length>0&&(m.generationConfig.stopSequences=e.stopSequences);try{let c=await this.fetchWithRetry(`${this.getBaseUrl()}/models/${n}:generateContent?key=${r}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(m)},e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),u=Date.now()-p;if(!c.ok){let f=await c.json().catch(()=>({error:{message:"Unknown error",code:0,status:"UNKNOWN"}}));throw this.handleApiError(c.status,f,n)}let d=await c.json(),h={promptTokens:d.usageMetadata?.promptTokenCount??0,completionTokens:d.usageMetadata?.candidatesTokenCount??0,totalTokens:d.usageMetadata?.totalTokenCount??0},g=this.calculateCost(n,h);return v.recordTokenUsage(l,"gemini-provider","llm","generate",{inputTokens:h.promptTokens,outputTokens:h.completionTokens,totalTokens:h.totalTokens,estimatedCostUsd:g.totalCost}),{content:d.candidates[0]?.content?.parts?.map(f=>f.text??"").join("")??"",model:d.modelVersion??n,provider:"gemini",usage:h,cost:g,latencyMs:u,finishReason:this.mapFinishReason(d.candidates[0]?.finishReason),cached:!1,requestId:l}}catch(c){throw c instanceof Error&&"code"in c?c:a(c instanceof Error?c.message:"Request failed","NETWORK_ERROR",{provider:"gemini",model:n,retryable:!0,cause:c})}}async*generateStream(t,e){let r=this.getApiKey();if(!r)throw a("Gemini API key not configured","API_KEY_MISSING",{provider:"gemini",retryable:!1});let o=this.formatContents(t),n=e?.model??this.config.model,s=e?.maxTokens??this.config.maxTokens??8192,i=e?.temperature??this.config.temperature??.7,l=`gemini-stream-${++this.requestId}-${Date.now()}`,p=Date.now(),m={contents:o,generationConfig:{maxOutputTokens:s,temperature:i}};e?.systemPrompt&&(m.systemInstruction={parts:[{text:e.systemPrompt}]});let c=await this.fetchWithTimeout(`${this.getBaseUrl()}/models/${n}:streamGenerateContent?key=${r}&alt=sse`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(m)},e?.timeoutMs??this.config.timeoutMs??6e4);if(!c.ok){let _=await c.json().catch(()=>({error:{message:"Unknown error",code:0,status:"UNKNOWN"}}));throw this.handleApiError(c.status,_,n)}if(!c.body)throw a("No response body for streaming","NETWORK_ERROR",{provider:"gemini",model:n,retryable:!0});let u="",d="stop",h={promptTokens:0,completionTokens:0,totalTokens:0},g=c.body.getReader(),b=new TextDecoder,f="";try{for(;;){let{done:_,value:S}=await g.read();if(_)break;f+=b.decode(S,{stream:!0});let w=f.split(`
44
- `);f=w.pop()||"";for(let te of w){let x=te.trim();if(!(!x||!x.startsWith("data: ")))try{let A=K(x.slice(6)),P=A.candidates?.[0]?.content?.parts?.map(I=>I.text??"").join("")??"";P&&(u+=P,yield P),A.candidates?.[0]?.finishReason&&(d=this.mapFinishReason(A.candidates[0].finishReason)),A.usageMetadata&&(h={promptTokens:A.usageMetadata.promptTokenCount,completionTokens:A.usageMetadata.candidatesTokenCount,totalTokens:A.usageMetadata.totalTokenCount})}catch{}}}}finally{g.releaseLock()}let C=Date.now()-p,k=h.totalTokens>0?h:{promptTokens:Math.ceil(JSON.stringify(o).length/4),completionTokens:Math.ceil(u.length/4),totalTokens:0};k.totalTokens=k.promptTokens+k.completionTokens;let O=this.calculateCost(n,k);return v.recordTokenUsage(l,"gemini-provider","llm","generate-stream",{inputTokens:k.promptTokens,outputTokens:k.completionTokens,totalTokens:k.totalTokens,estimatedCostUsd:O.totalCost}),{content:u,model:n,provider:"gemini",usage:k,cost:O,latencyMs:C,finishReason:d,cached:!1,requestId:l}}async embed(t,e){let r=this.getApiKey();if(!r)throw a("Gemini API key not configured","API_KEY_MISSING",{provider:"gemini",retryable:!1});let o=e?.model??"text-embedding-004",n=Date.now();try{let s=await this.fetchWithTimeout(`${this.getBaseUrl()}/models/${o}:embedContent?key=${r}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:{parts:[{text:t}]}})},e?.timeoutMs??this.config.timeoutMs??3e4),i=Date.now()-n;if(!s.ok){let p=await s.json().catch(()=>({error:{message:"Unknown error",code:0,status:"UNKNOWN"}}));throw this.handleApiError(s.status,p,o)}return{embedding:(await s.json()).embedding.values,model:o,provider:"gemini",tokenCount:Math.ceil(t.length/4),latencyMs:i,cached:!1}}catch(s){throw s instanceof Error&&"code"in s?s:a(s instanceof Error?s.message:"Embedding request failed","NETWORK_ERROR",{provider:"gemini",model:o,retryable:!0,cause:s})}}async complete(t,e){let r=await this.generate(t,{model:e?.model,temperature:e?.temperature??.2,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
45
-
46
- `]});return{completion:r.content,model:r.model,provider:"gemini",usage:r.usage,latencyMs:r.latencyMs,cached:r.cached}}getConfig(){return{...this.config}}getSupportedModels(){return this.cachedModels?this.cachedModels:["gemini-flash-latest","gemini-pro-latest","gemini-flash-lite-latest","gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite","gemini-2.0-flash","gemini-2.0-flash-lite","gemini-3.5-flash"]}getCostPerToken(){let t=X[this.config.model]||X.default;return{input:t.input/1e6,output:t.output/1e6}}async dispose(){this.cachedModels=null}calculateCost(t,e){let r=X[t]||X.default,o=e.promptTokens/1e6*r.input,n=e.completionTokens/1e6*r.output;return{inputCost:o,outputCost:n,totalCost:o+n,currency:"USD"}}getApiKey(){return this.config.apiKey??process.env.GOOGLE_AI_API_KEY??process.env.GEMINI_API_KEY??process.env.GOOGLE_API_KEY}getBaseUrl(){return(this.config.baseUrl??"https://generativelanguage.googleapis.com/v1beta").replace(/\/$/,"")}formatContents(t){return typeof t=="string"?[{role:"user",parts:[{text:t}]}]:t.filter(e=>e.role!=="system").map(e=>({role:e.role==="assistant"?"model":"user",parts:[{text:e.content}]}))}mapFinishReason(t){switch(t){case"STOP":return"stop";case"MAX_TOKENS":return"length";case"SAFETY":return"content_filter";case"RECITATION":return"content_filter";default:return"stop"}}handleApiError(t,e,r){let o=e.error?.message??"Unknown API error";switch(t){case 400:throw o.includes("token")||o.includes("length")||o.includes("exceeds")?a(o,"CONTEXT_LENGTH_EXCEEDED",{provider:"gemini",model:r,retryable:!1}):o.includes("API key")?a(o,"API_KEY_INVALID",{provider:"gemini",model:r,retryable:!1}):a(o,"UNKNOWN",{provider:"gemini",model:r,retryable:!1});case 401:case 403:throw a(o,"API_KEY_INVALID",{provider:"gemini",model:r,retryable:!1});case 404:throw a(o,"MODEL_NOT_FOUND",{provider:"gemini",model:r,retryable:!1});case 429:throw a(o,"RATE_LIMITED",{provider:"gemini",model:r,retryable:!0,retryAfterMs:6e4});case 500:case 502:case 503:throw a(o,"PROVIDER_UNAVAILABLE",{provider:"gemini",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(o,"UNKNOWN",{provider:"gemini",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let o=new AbortController,n=setTimeout(()=>o.abort(),r);try{return await fetch(t,{...e,signal:o.signal})}catch(s){throw s instanceof Error&&s.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"gemini",retryable:!0}):s}finally{clearTimeout(n)}}async fetchWithRetry(t,e,r,o){let n;for(let s=0;s<o;s++)try{let i=await this.fetchWithTimeout(t,e,r);if(i.status>=400&&i.status<500&&i.status!==429)return i;if((i.status>=500||i.status===429)&&s<o-1){let l=T(s);await this.sleep(l);continue}return i}catch(i){if(n=E(i),s<o-1){let l=T(s);await this.sleep(l)}}throw n??new Error("Request failed after retries")}sleep(t){return new Promise(e=>setTimeout(e,t))}};L();var Je={model:"gpt-4o",maxTokens:4096,temperature:.7,timeoutMs:6e4,maxRetries:3,enableCache:!0,enableCircuitBreaker:!0,apiVersion:"2024-02-15-preview"},Z=class{type="azure-openai";name="Azure OpenAI";config;requestId=0;constructor(t){this.config={...Je,...t}}async isAvailable(){let t=this.getEndpoint(),e=this.getApiKey()||this.getAzureAdToken();if(!t||!e||!this.config.deploymentId)return!1;try{return(await this.healthCheck()).healthy}catch{return!1}}async healthCheck(){let t=this.getEndpoint(),e=this.getApiKey()||this.getAzureAdToken();if(!t)return{healthy:!1,error:"Azure endpoint not configured. Set AZURE_OPENAI_ENDPOINT environment variable."};if(!e)return{healthy:!1,error:"Azure authentication not configured. Set AZURE_OPENAI_API_KEY or provide azureAdToken."};if(!this.config.deploymentId)return{healthy:!1,error:"Deployment ID not configured. Set AZURE_OPENAI_DEPLOYMENT or provide deploymentId."};let r=Date.now();try{let o=await this.fetchWithTimeout(this.buildUrl("chat/completions"),{method:"POST",headers:this.getHeaders(),body:JSON.stringify({max_tokens:1,messages:[{role:"user",content:"Hi"}]})},5e3),n=Date.now()-r;if(!o.ok){let s=await o.text();return{healthy:!1,latencyMs:n,error:`API error: ${o.status} - ${s}`}}return{healthy:!0,latencyMs:n,models:this.getSupportedModels(),details:{endpoint:this.getEndpoint(),deploymentId:this.config.deploymentId,apiVersion:this.config.apiVersion,authType:this.getAzureAdToken()?"Azure AD":"API Key"}}}catch(o){return{healthy:!1,error:o instanceof Error?o.message:"Unknown error"}}}async generate(t,e){let r=this.getEndpoint(),o=this.getApiKey()||this.getAzureAdToken();if(!r||!o)throw a("Azure OpenAI not configured","API_KEY_MISSING",{provider:"azure-openai",retryable:!1});let n=this.formatMessages(t,e?.systemPrompt),s=e?.model??this.config.model??"gpt-4o",i=e?.maxTokens??this.config.maxTokens??4096,l=e?.temperature??this.config.temperature??.7,p=`azure-openai-${++this.requestId}-${Date.now()}`,m=Date.now(),c={max_tokens:i,temperature:l,messages:n};e?.stopSequences&&e.stopSequences.length>0&&(c.stop=e.stopSequences),this.config.presencePenalty!==void 0&&(c.presence_penalty=this.config.presencePenalty),this.config.frequencyPenalty!==void 0&&(c.frequency_penalty=this.config.frequencyPenalty);try{let u=await this.fetchWithRetry(this.buildUrl("chat/completions"),{method:"POST",headers:this.getHeaders(),body:JSON.stringify(c)},e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),d=Date.now()-m;if(!u.ok){let C=await u.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(u.status,C,s)}let h=await u.json(),g={promptTokens:h.usage.prompt_tokens,completionTokens:h.usage.completion_tokens,totalTokens:h.usage.total_tokens},b=R.calculateCost(s,g);return v.recordTokenUsage(p,"azure-openai-provider","llm","generate",{inputTokens:h.usage.prompt_tokens,outputTokens:h.usage.completion_tokens,totalTokens:h.usage.total_tokens,estimatedCostUsd:b.totalCost}),{content:h.choices[0]?.message?.content??"",model:h.model,provider:"azure-openai",usage:g,cost:b,latencyMs:d,finishReason:this.mapFinishReason(h.choices[0]?.finish_reason),cached:!1,requestId:p}}catch(u){throw u instanceof Error&&"code"in u?u:a(u instanceof Error?u.message:"Request failed","NETWORK_ERROR",{provider:"azure-openai",model:s,retryable:!0,cause:u})}}async embed(t,e){let r=this.getEndpoint(),o=this.getApiKey()||this.getAzureAdToken();if(!r||!o)throw a("Azure OpenAI not configured","API_KEY_MISSING",{provider:"azure-openai",retryable:!1});let n=e?.model??this.config.deploymentId,s=Date.now();try{let i=await this.fetchWithTimeout(this.buildUrl("embeddings",n),{method:"POST",headers:this.getHeaders(),body:JSON.stringify({input:t})},e?.timeoutMs??this.config.timeoutMs??3e4),l=Date.now()-s;if(!i.ok){let m=await i.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(i.status,m,n)}let p=await i.json();return{embedding:p.data[0].embedding,model:p.model,provider:"azure-openai",tokenCount:p.usage.total_tokens,latencyMs:l,cached:!1}}catch(i){throw i instanceof Error&&"code"in i?i:a(i instanceof Error?i.message:"Embedding request failed","NETWORK_ERROR",{provider:"azure-openai",model:n,retryable:!0,cause:i})}}async complete(t,e){let r=await this.generate(t,{model:e?.model,temperature:e?.temperature??.2,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
47
-
48
- `]});return{completion:r.content,model:r.model,provider:"azure-openai",usage:r.usage,latencyMs:r.latencyMs,cached:r.cached}}getConfig(){return{...this.config}}getSupportedModels(){return["gpt-4o","gpt-4o-mini","gpt-4-turbo","gpt-4","gpt-35-turbo","text-embedding-ada-002","text-embedding-3-small","text-embedding-3-large"]}getCostPerToken(){return R.getCostPerToken(this.config.model??"gpt-4o")}async dispose(){}getApiKey(){return this.config.apiKey??process.env.AZURE_OPENAI_API_KEY}getAzureAdToken(){return this.config.azureAdToken}getEndpoint(){return(this.config.endpoint??process.env.AZURE_OPENAI_ENDPOINT)?.replace(/\/$/,"")}getApiVersion(){return this.config.apiVersion??process.env.AZURE_OPENAI_API_VERSION??"2024-02-15-preview"}buildUrl(t,e){let r=this.getEndpoint(),o=e??this.config.deploymentId,n=this.getApiVersion();return`${r}/openai/deployments/${o}/${t}?api-version=${n}`}getHeaders(){let t={"Content-Type":"application/json"},e=this.getAzureAdToken();if(e)t.Authorization=`Bearer ${e}`;else{let r=this.getApiKey();r&&(t["api-key"]=r)}return t}formatMessages(t,e){let r=[];if(typeof t=="string")e&&r.push({role:"system",content:e}),r.push({role:"user",content:t});else{let o=t.some(n=>n.role==="system");e&&!o&&r.push({role:"system",content:e});for(let n of t)r.push({role:n.role,content:n.content})}return r}mapFinishReason(t){switch(t){case"stop":return"stop";case"length":return"length";case"content_filter":return"content_filter";default:return"stop"}}handleApiError(t,e,r){let o=e.error?.message??"Unknown API error",n=e.error?.code??"",s=e.error?.innererror?.code??"";switch(t){case 401:throw a(o,"API_KEY_INVALID",{provider:"azure-openai",model:r,retryable:!1});case 403:throw a(o,"API_KEY_INVALID",{provider:"azure-openai",model:r,retryable:!1});case 429:throw a(o,"RATE_LIMITED",{provider:"azure-openai",model:r,retryable:!0,retryAfterMs:6e4});case 400:throw n==="context_length_exceeded"||s==="context_length_exceeded"?a(o,"CONTEXT_LENGTH_EXCEEDED",{provider:"azure-openai",model:r,retryable:!1}):s==="content_filter"?a(o,"CONTENT_FILTERED",{provider:"azure-openai",model:r,retryable:!1}):a(o,"UNKNOWN",{provider:"azure-openai",model:r,retryable:!1});case 404:throw a(`Deployment not found: ${r}`,"MODEL_NOT_FOUND",{provider:"azure-openai",model:r,retryable:!1});case 500:case 502:case 503:throw a(o,"PROVIDER_UNAVAILABLE",{provider:"azure-openai",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(o,"UNKNOWN",{provider:"azure-openai",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let o=new AbortController,n=setTimeout(()=>o.abort(),r);try{return await fetch(t,{...e,signal:o.signal})}catch(s){throw s instanceof Error&&s.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"azure-openai",retryable:!0}):s}finally{clearTimeout(n)}}async fetchWithRetry(t,e,r,o){let n;for(let s=0;s<o;s++)try{let i=await this.fetchWithTimeout(t,e,r);if(i.status>=400&&i.status<500&&i.status!==429)return i;if((i.status>=500||i.status===429)&&s<o-1){let l=T(s);await this.sleep(l);continue}return i}catch(i){if(n=E(i),s<o-1){let l=T(s);await this.sleep(l)}}throw n??new Error("Request failed after retries")}sleep(t){return new Promise(e=>setTimeout(e,t))}};L();var Xe={model:"anthropic.claude-3-5-sonnet-20241022-v2:0",region:"us-east-1",maxTokens:4096,temperature:.7,timeoutMs:6e4,maxRetries:3,enableCache:!0,enableCircuitBreaker:!0},le={"claude-opus-4-7":"anthropic.claude-opus-4-7-v1:0","claude-sonnet-4-6":"anthropic.claude-sonnet-4-6-v1:0","claude-haiku-4-5-20251001":"anthropic.claude-haiku-4-5-v1:0","claude-haiku-4-5":"anthropic.claude-haiku-4-5-v1:0","claude-opus-4-5-20251101":"anthropic.claude-opus-4-5-v1:0","claude-opus-4-5":"anthropic.claude-opus-4-5-v1:0","claude-opus-4-20250514":"anthropic.claude-opus-4-v1:0","claude-opus-4":"anthropic.claude-opus-4-v1:0","claude-sonnet-4-20250514":"anthropic.claude-sonnet-4-v1:0","claude-sonnet-4":"anthropic.claude-sonnet-4-v1:0","claude-3-5-haiku-20241022":"anthropic.claude-3-5-haiku-v1:0","claude-haiku-3-5":"anthropic.claude-3-5-haiku-v1:0","claude-sonnet-4-5-20250929":"anthropic.claude-sonnet-4-5-v2:0","claude-sonnet-4-5":"anthropic.claude-sonnet-4-5-v2:0","claude-3-opus-20240229":"anthropic.claude-3-opus-20240229-v1:0","claude-3-sonnet-20240229":"anthropic.claude-3-sonnet-20240229-v1:0","claude-3-haiku-20240307":"anthropic.claude-3-haiku-20240307-v1:0","claude-3-5-sonnet-20241022":"anthropic.claude-3-5-sonnet-20241022-v2:0"},$s=Object.fromEntries(Object.entries(le).map(([y,t])=>[t,y])),ee=class{type="bedrock";name="AWS Bedrock";config;requestId=0;constructor(t={}){this.config={...Xe,...t}}async isAvailable(){if(!this.getCredentials())return!1;try{return(await this.healthCheck()).healthy}catch{return!1}}async healthCheck(){if(!this.getCredentials())return{healthy:!1,error:"AWS credentials not configured. Set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables, or use IAM role."};let e=Date.now();try{let r=this.mapToBedrockModel(this.config.model),o=await this.invokeModel(r,{anthropic_version:"bedrock-2023-05-31",max_tokens:1,messages:[{role:"user",content:"Hi"}]},5e3),n=Date.now()-e;if(!o.ok){let s=await o.text();return{healthy:!1,latencyMs:n,error:`API error: ${o.status} - ${s}`}}return{healthy:!0,latencyMs:n,models:this.getSupportedModels(),details:{region:this.getRegion(),defaultModel:this.config.model}}}catch(r){return{healthy:!1,error:r instanceof Error?r.message:"Unknown error"}}}async generate(t,e){if(!this.getCredentials())throw a("AWS credentials not configured","API_KEY_MISSING",{provider:"bedrock",retryable:!1});let o=this.formatMessages(t),n=e?.model??this.config.model,s=this.mapToBedrockModel(n),i=e?.maxTokens??this.config.maxTokens??4096,l=e?.temperature??this.config.temperature??.7,p=`bedrock-${++this.requestId}-${Date.now()}`,m=Date.now(),c={anthropic_version:"bedrock-2023-05-31",max_tokens:i,messages:o};l!==void 0&&(c.temperature=Math.min(Math.max(l,0),1)),e?.systemPrompt&&(c.system=e.systemPrompt),e?.stopSequences&&e.stopSequences.length>0&&(c.stop_sequences=e.stopSequences);try{let u=await this.invokeModelWithRetry(s,c,e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),d=Date.now()-m;if(!u.ok){let C=await u.json().catch(()=>({message:"Unknown error"}));throw this.handleApiError(u.status,C,n)}let h=await u.json(),g={promptTokens:h.usage.input_tokens,completionTokens:h.usage.output_tokens,totalTokens:h.usage.input_tokens+h.usage.output_tokens},b=R.calculateCost(s,g);return v.recordTokenUsage(p,"bedrock-provider","llm","generate",{inputTokens:h.usage.input_tokens,outputTokens:h.usage.output_tokens,totalTokens:h.usage.input_tokens+h.usage.output_tokens,estimatedCostUsd:b.totalCost}),{content:h.content.filter(C=>C.type==="text").map(C=>C.text).join(""),model:s,provider:"bedrock",usage:g,cost:b,latencyMs:d,finishReason:this.mapFinishReason(h.stop_reason),cached:!1,requestId:p}}catch(u){throw u instanceof Error&&"code"in u?u:a(u instanceof Error?u.message:"Request failed","NETWORK_ERROR",{provider:"bedrock",model:n,retryable:!0,cause:u})}}async embed(t,e){throw a("Bedrock Claude models do not support native embeddings. Use Bedrock Titan or Cohere for embeddings.","MODEL_NOT_FOUND",{provider:"bedrock",retryable:!1})}async complete(t,e){let r=await this.generate(t,{model:e?.model,temperature:e?.temperature??.2,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
49
-
50
- `,"```"]});return{completion:r.content,model:r.model,provider:"bedrock",usage:r.usage,latencyMs:r.latencyMs,cached:r.cached}}getConfig(){return{...this.config}}getSupportedModels(){return Object.keys(le)}getCostPerToken(){let t=this.mapToBedrockModel(this.config.model);return R.getCostPerToken(t)}async dispose(){}getCredentials(){let t=this.config.accessKeyId??process.env.AWS_ACCESS_KEY_ID,e=this.config.secretAccessKey??process.env.AWS_SECRET_ACCESS_KEY,r=this.config.sessionToken??process.env.AWS_SESSION_TOKEN;return!t||!e?null:{region:this.getRegion(),service:"bedrock",accessKeyId:t,secretAccessKey:e,sessionToken:r}}getRegion(){return this.config.region??process.env.AWS_REGION??process.env.AWS_DEFAULT_REGION??"us-east-1"}mapToBedrockModel(t){if(t.startsWith("anthropic."))return t;let e=le[t];return e||t}getEndpointUrl(t){let e=this.getRegion();return`${this.config.baseUrl??`https://bedrock-runtime.${e}.amazonaws.com`}/model/${t}/invoke`}async invokeModel(t,e,r){let o=this.getCredentials();if(!o)throw a("AWS credentials not configured","API_KEY_MISSING",{provider:"bedrock",retryable:!1});let n=this.getEndpointUrl(t),s=JSON.stringify(e),i=await this.signRequest(n,s,o);return this.fetchWithTimeout(n,{method:"POST",headers:i,body:s},r)}async invokeModelWithRetry(t,e,r,o){let n;for(let s=0;s<o;s++)try{let i=await this.invokeModel(t,e,r);if(i.status>=400&&i.status<500&&i.status!==429)return i;if((i.status>=500||i.status===429)&&s<o-1){let l=T(s);await this.sleep(l);continue}return i}catch(i){if(n=E(i),s<o-1){let l=T(s);await this.sleep(l)}}throw n??new Error("Request failed after retries")}async signRequest(t,e,r){let o=new URL(t),s=new Date().toISOString().replace(/[:-]|\.\d{3}/g,""),i=s.substring(0,8),l={"Content-Type":"application/json",Host:o.host,"X-Amz-Date":s};r.sessionToken&&(l["X-Amz-Security-Token"]=r.sessionToken);let p="POST",m=o.pathname,c="",u=Object.keys(l).map(w=>w.toLowerCase()).sort().join(";"),d=Object.keys(l).map(w=>`${w.toLowerCase()}:${l[w].trim()}`).sort().join(`
51
- `)+`
52
- `,h=await this.sha256(e),g=[p,m,c,d,u,h].join(`
53
- `),b="AWS4-HMAC-SHA256",f=`${i}/${r.region}/${r.service}/aws4_request`,C=await this.sha256(g),k=[b,s,f,C].join(`
54
- `),O=await this.getSignatureKey(r.secretAccessKey,i,r.region,r.service),_=await this.hmacHex(O,k),S=`${b} Credential=${r.accessKeyId}/${f}, SignedHeaders=${u}, Signature=${_}`;return{...l,Authorization:S}}async sha256(t){let r=new TextEncoder().encode(t),o=await crypto.subtle.digest("SHA-256",r);return Array.from(new Uint8Array(o)).map(n=>n.toString(16).padStart(2,"0")).join("")}async hmac(t,e){let r=new TextEncoder,o=t instanceof Uint8Array?t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength):t,n=await crypto.subtle.importKey("raw",o,{name:"HMAC",hash:"SHA-256"},!1,["sign"]);return crypto.subtle.sign("HMAC",n,r.encode(e))}async hmacHex(t,e){let r=await this.hmac(t,e);return Array.from(new Uint8Array(r)).map(o=>o.toString(16).padStart(2,"0")).join("")}async getSignatureKey(t,e,r,o){let n=new TextEncoder,s=await this.hmac(n.encode(`AWS4${t}`),e),i=await this.hmac(s,r),l=await this.hmac(i,o);return this.hmac(l,"aws4_request")}formatMessages(t){return typeof t=="string"?[{role:"user",content:t}]:t.filter(e=>e.role!=="system").map(e=>({role:e.role,content:e.content}))}mapFinishReason(t){switch(t){case"end_turn":return"stop";case"max_tokens":return"length";case"stop_sequence":return"stop";default:return"stop"}}handleApiError(t,e,r){let o=e.message??"Unknown API error",n=e.__type??"";switch(t){case 401:case 403:throw a(o,"API_KEY_INVALID",{provider:"bedrock",model:r,retryable:!1});case 429:throw a(o,"RATE_LIMITED",{provider:"bedrock",model:r,retryable:!0,retryAfterMs:6e4});case 400:throw n.includes("ValidationException")&&o.includes("token")?a(o,"CONTEXT_LENGTH_EXCEEDED",{provider:"bedrock",model:r,retryable:!1}):a(o,"UNKNOWN",{provider:"bedrock",model:r,retryable:!1});case 500:case 502:case 503:throw a(o,"PROVIDER_UNAVAILABLE",{provider:"bedrock",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(o,"UNKNOWN",{provider:"bedrock",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let o=new AbortController,n=setTimeout(()=>o.abort(),r);try{return await fetch(t,{...e,signal:o.signal})}catch(s){throw s instanceof Error&&s.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"bedrock",retryable:!0}):s}finally{clearTimeout(n)}}sleep(t){return new Promise(e=>setTimeout(e,t))}};L();var Qe={primary:"claude",fallbacks:["openai","ollama"],loadBalancing:"round-robin",providers:{},global:{enableCostTracking:!0,enableMetrics:!0}},we=class{providers=new Map;circuitBreakers;cache;costTracker;config;metrics=new Map;roundRobinIndex=0;initialized=!1;spendLedger;injectedLedger;maxCostPerRun;billingNoticeShown=!1;constructor(t={},e){this.config={...Qe,...t},this.circuitBreakers=new q(e?.circuitBreakerConfig),this.cache=new B(e?.cacheConfig),this.costTracker=e?.costTracker??pe(),this.injectedLedger=e?.spendLedger;let r=Number.parseFloat(process.env.AQE_MAX_BUDGET_USD??"");this.maxCostPerRun=this.config.global?.maxCostPerRun??(Number.isFinite(r)&&r>0?r:void 0)}async initialize(){if(!this.initialized){await this.createProviders();for(let t of this.providers.keys())this.initializeMetrics(t);this.budgetConfigured()&&(this.spendLedger=this.injectedLedger??await ve().catch(()=>new N)),this.emitBillingNotice(),this.initialized=!0}}budgetConfigured(){let t=this.config.global;return!!(this.maxCostPerRun||t?.maxCostPerHour&&t.maxCostPerHour>0||t?.maxCostPerDay&&t.maxCostPerDay>0)}emitBillingNotice(){if(this.billingNoticeShown||(process.env.AQE_LLM_NO_BILLING_NOTICE??"")==="1")return;let t=this.providers.get(this.config.primary);if(!t)return;let e=he(t),r=ge(t.type,e);r&&console.error(r),this.billingNoticeShown=!0}enforceBudget(t,e){if(!this.budgetConfigured()||!this.spendLedger)return;let r=e?.model??this.providers.get(this.config.primary)?.getConfig().model??this.config.primary,o=typeof t=="string"?t:JSON.stringify(t),n=Math.ceil(o.length/4),s=e?.maxTokens??4096,i=this.costTracker.estimateCost(r,n,s).totalCost;if(i===0)return;let l=this.config.global,p=[{limit:this.maxCostPerRun,spent:this.costTracker.getCurrentCost("all"),label:"per-run"},{limit:l?.maxCostPerHour,spent:this.spendLedger.spentSince(36e5),label:"hourly"},{limit:l?.maxCostPerDay,spent:this.spendLedger.spentSince(864e5),label:"daily"}];for(let{limit:m,spent:c,label:u}of p)if(m&&m>0&&c+i>m)throw a(`LLM ${u} budget exceeded: $${c.toFixed(4)} spent + $${i.toFixed(4)} estimated > $${m.toFixed(2)} cap. Raise --max-budget-usd / maxCost* or switch to a local/subscription provider.`,"COST_LIMIT_EXCEEDED",{retryable:!1})}recordSpend(t,e){this.spendLedger&&this.spendLedger.record({provider:t.provider,model:t.model,costUsd:t.cost.totalCost,costSource:t.cost.source??"local-estimate",promptTokens:t.usage.promptTokens,completionTokens:t.usage.completionTokens,requestId:t.requestId,agent:e})}assertWithinBudget(t,e){this.enforceBudget(t,e)}recordResponseSpend(t,e){this.recordSpend(t,e)}async generate(t,e){if(await this.ensureInitialized(),!e?.skipCache){let o=typeof t=="string"?t:JSON.stringify(t),n=this.cache.getGeneration(o,{model:e?.model,temperature:e?.temperature,maxTokens:e?.maxTokens,systemPrompt:e?.systemPrompt});if(n)return{...n,cached:!0}}this.enforceBudget(t,e);let r=await this.executeWithFailover("generate",async o=>o.generate(t,e),e?.preferredProvider);if(!e?.skipCache){let o=typeof t=="string"?t:JSON.stringify(t);this.cache.setGeneration(o,r,{model:e?.model,temperature:e?.temperature,maxTokens:e?.maxTokens,systemPrompt:e?.systemPrompt})}return this.costTracker.recordUsage(r.provider,r.model,r.usage,r.requestId),this.recordSpend(r),r}async embed(t,e){if(await this.ensureInitialized(),!e?.skipCache){let n=this.cache.getEmbedding(t,{model:e?.model});if(n)return{...n,cached:!0}}let r=["openai","ollama","cognitum"],o=await this.executeWithFailover("embed",async n=>n.embed(t,e),r.find(n=>this.providers.has(n)));return e?.skipCache||this.cache.setEmbedding(t,o,{model:e?.model}),o}async complete(t,e){if(await this.ensureInitialized(),!e?.skipCache){let o=this.cache.getCompletion(t,{model:e?.model,temperature:e?.temperature,maxTokens:e?.maxTokens});if(o)return{...o,cached:!0}}this.enforceBudget(t,e);let r=await this.executeWithFailover("complete",async o=>o.complete(t,e));return e?.skipCache||this.cache.setCompletion(t,r,{model:e?.model,temperature:e?.temperature,maxTokens:e?.maxTokens}),this.costTracker.recordUsage(r.provider,r.model,r.usage,`complete-${r.model}-${Date.now()}`),this.recordSpend({content:r.completion,model:r.model,provider:r.provider,usage:r.usage,cost:R.calculateCost(r.model,r.usage),latencyMs:r.latencyMs,finishReason:"stop",cached:r.cached,requestId:`complete-${r.model}-${Date.now()}`}),r}async healthCheck(){await this.ensureInitialized();let t={};for(let[e,r]of this.providers)t[e]=await r.healthCheck();return t}getProvider(t){return this.providers.get(t)}getAvailableProviders(){let t=[];for(let[e,r]of this.providers)this.circuitBreakers.getBreaker(e).canExecute()&&t.push(e);return t}getMetrics(){let t={};for(let[e,r]of this.metrics){let o=this.circuitBreakers.getBreaker(e),n=r.latencies.slice(-100);t[e]={provider:e,totalRequests:r.totalRequests,successCount:r.successCount,failureCount:r.failureCount,avgLatencyMs:this.calculateAverage(n),p95LatencyMs:this.calculatePercentile(n,95),p99LatencyMs:this.calculatePercentile(n,99),totalCost:r.totalCost,totalTokens:r.totalTokens,circuitState:o.getState()}}return t}getCacheStats(){return this.cache.getStats()}getCostSummary(t="day"){return this.costTracker.getSummary(t)}clearCache(){this.cache.clear()}resetCircuitBreakers(){this.circuitBreakers.resetAll()}async dispose(){for(let t of this.providers.values())await t.dispose();this.providers.clear(),this.metrics.clear(),this.cache.clear(),this.initialized=!1}async createProviders(){let t=new Set([this.config.primary,...this.config.fallbacks]);for(let e of t)try{let r=this.createProvider(e);this.providers.set(e,r)}catch(r){console.warn(`Failed to create ${e} provider: ${r instanceof Error?r.message:"Unknown"}`)}if(this.providers.size===0)throw a("No LLM providers could be initialized","PROVIDER_UNAVAILABLE",{retryable:!1})}createProvider(t){switch(t){case"claude":return new F(this.config.providers.claude);case"claude-code":return new W(this.config.providers["claude-code"]);case"codex":return new z(this.config.providers.codex);case"cognitum":return new j(this.config.providers.cognitum);case"openai":return new H(this.config.providers.openai);case"ollama":return new V(this.config.providers.ollama);case"openrouter":return new J(this.config.providers.openrouter);case"gemini":return new Q(this.config.providers.gemini);case"azure-openai":{let e=this.config.providers["azure-openai"];if(!e)throw new Error("Azure OpenAI provider requires configuration with deploymentId");return new Z(e)}case"bedrock":return new ee(this.config.providers.bedrock);default:return me(t)}}initializeMetrics(t){this.metrics.set(t,{totalRequests:0,successCount:0,failureCount:0,latencies:[],totalCost:0,totalTokens:0})}async executeWithFailover(t,e,r){let o=this.selectProvider(r),n=new Set,s,i=[o.provider.type,...this.config.fallbacks.filter(l=>l!==o.provider.type)];for(let l of i){if(n.has(l))continue;n.add(l);let p=this.providers.get(l);if(!p)continue;let m=this.circuitBreakers.getBreaker(l);if(m.canExecute())try{let c=Date.now(),u=await m.execute(()=>e(p)),d=Date.now()-c;return this.recordSuccess(l,d,u),u}catch(c){if(s=E(c),this.recordFailure(l,s),"retryable"in s&&!s.retryable)throw s}}throw a(`All providers failed for ${t}: ${s?.message??"Unknown error"}`,"PROVIDER_UNAVAILABLE",{retryable:!1,cause:s})}selectProvider(t){if(t){let r=this.providers.get(t),o=this.circuitBreakers.getBreaker(t);if(r&&o.canExecute())return{provider:r,reason:"primary"}}let e=this.getAvailableProviders();if(e.length===0){let r=this.providers.get(this.config.primary);if(r)return{provider:r,reason:"fallback"};throw a("No providers available","PROVIDER_UNAVAILABLE",{retryable:!1})}switch(this.config.loadBalancing){case"round-robin":return this.selectRoundRobin(e);case"least-cost":return this.selectLeastCost(e);case"least-latency":return this.selectLeastLatency(e);case"random":return this.selectRandom(e);default:return this.selectRoundRobin(e)}}selectRoundRobin(t){this.roundRobinIndex=(this.roundRobinIndex+1)%t.length;let e=t[this.roundRobinIndex];return{provider:this.providers.get(e),reason:"load-balance"}}selectLeastCost(t){let e=1/0,r=t[0];for(let o of t){let n=this.providers.get(o),{input:s,output:i}=n.getCostPerToken(),l=s+i;l<e&&(e=l,r=o)}return{provider:this.providers.get(r),reason:"cost-optimization",metadata:{estimatedCost:e}}}selectLeastLatency(t){let e=1/0,r=t[0];for(let o of t){let n=this.metrics.get(o);if(n&&n.latencies.length>0){let s=this.calculateAverage(n.latencies);s<e&&(e=s,r=o)}}return{provider:this.providers.get(r),reason:"latency-optimization",metadata:{avgLatency:e}}}selectRandom(t){let e=de(0,t.length),r=t[e];return{provider:this.providers.get(r),reason:"load-balance"}}recordSuccess(t,e,r){let o=this.metrics.get(t);if(o&&(o.totalRequests++,o.successCount++,o.latencies.push(e),o.latencies.length>1e3&&(o.latencies=o.latencies.slice(-1e3)),r&&typeof r=="object")){let n=r;n.cost?.totalCost&&(o.totalCost+=n.cost.totalCost),n.usage?.totalTokens&&(o.totalTokens+=n.usage.totalTokens)}}recordFailure(t,e){let r=this.metrics.get(t);r&&(r.totalRequests++,r.failureCount++)}async ensureInitialized(){this.initialized||await this.initialize()}calculateAverage(t){return t.length===0?0:t.reduce((e,r)=>e+r,0)/t.length}calculatePercentile(t,e){if(t.length===0)return 0;let r=[...t].sort((n,s)=>n-s),o=Math.ceil(e/100*r.length)-1;return r[Math.max(0,o)]}};export{W as a,V as b,we as c};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.3");process.exit(0)}
2
- import{c as f}from"./chunk-Y2DVFVGI.js";import*as o from"fs";import*as n from"path";function u(){t=null}function g(c=process.cwd()){if(t)return t;if(process.env.AQE_PROJECT_ROOT)return t=process.env.AQE_PROJECT_ROOT,t;let l=c,a=n.parse(l).root,e=l,i=null,s=null,r=null;for(;e!==a;)o.existsSync(n.join(e,".agentic-qe"))&&i===null&&(i=e),o.existsSync(n.join(e,".git"))&&s===null&&(s=e),o.existsSync(n.join(e,"package.json"))&&(r=e),e=n.dirname(e);return i?t=i:s?t=s:r?t=r:t=process.cwd(),t}var t,p=f(()=>{"use strict";t=null});export{u as a,g as b,p as c};
@@ -1,81 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.3");process.exit(0)}
2
- import{a as D}from"./chunk-ELU4IC3I.js";import{d as T,e as $}from"./chunk-5BLFXQEB.js";import{a as j}from"./chunk-JBB7E26R.js";import"./chunk-C46DMCWF.js";import"./chunk-Y2DVFVGI.js";import{Command as U}from"commander";import o from"chalk";import*as I from"fs";import*as p from"path";import*as F from"fs";import*as R from"path";var P={version:"1",name:"aqe-ci",phases:[{name:"Test Generation",type:"test",enabled:!0,config:{target:".",framework:"vitest",type:"unit"},continueOnFailure:!1,timeout:300},{name:"Coverage Analysis",type:"coverage",enabled:!0,config:{target:".",threshold:80},continueOnFailure:!0,timeout:300},{name:"Security Scan",type:"security",enabled:!0,config:{sast:!0},continueOnFailure:!0,timeout:300},{name:"Quality Gate",type:"quality-gate",enabled:!0,config:{},continueOnFailure:!1,timeout:60}],output:{format:"json",directory:".aqe-ci-output",combinedReport:!0},qualityGate:{enforced:!0,thresholds:{coverage:80,security:"medium",quality:70}}},Q=[".aqe-ci.yml",".aqe-ci.yaml","aqe-ci.yml","aqe-ci.yaml"];function G(s=process.cwd()){let n=R.resolve(s);for(let r=0;r<10;r++){for(let a of Q){let e=R.join(n,a);if(F.existsSync(e))return e}let l=R.dirname(n);if(l===n)break;n=l}return null}function x(s){if(!F.existsSync(s))return{success:!1,errors:[`Config file not found: ${s}`]};let n;try{n=F.readFileSync(s,"utf-8")}catch(r){return{success:!1,errors:[`Failed to read config: ${r}`]}}return N(n,s)}function N(s,n){let r=[],l;try{l=j(s)}catch(e){return{success:!1,errors:[`Invalid YAML: ${e}`]}}let a={version:l.version||P.version,name:l.name||P.name,phases:[],output:{...P.output},qualityGate:{...P.qualityGate,thresholds:{...P.qualityGate.thresholds}}};if(l.output&&typeof l.output=="object"){let e=l.output;e.format&&(a.output.format=e.format),e.directory&&(a.output.directory=e.directory),e.combined_report!==void 0&&(a.output.combinedReport=e.combined_report)}if(l.quality_gate&&typeof l.quality_gate=="object"){let e=l.quality_gate;if(e.enforced!==void 0&&(a.qualityGate.enforced=e.enforced),e.thresholds&&typeof e.thresholds=="object"){let t=e.thresholds;t.coverage!==void 0&&(a.qualityGate.thresholds.coverage=t.coverage),t.security!==void 0&&(a.qualityGate.thresholds.security=t.security),t.quality!==void 0&&(a.qualityGate.thresholds.quality=t.quality)}}if(l.phases&&Array.isArray(l.phases))for(let e=0;e<l.phases.length;e++){let t=l.phases[e];if(!t.name){r.push(`Phase ${e+1} must have a "name" field`);continue}if(!t.type){r.push(`Phase "${t.name}" must have a "type" field`);continue}let i=["test","coverage","security","quality-gate","code-intelligence","custom"];if(!i.includes(t.type)){r.push(`Phase "${t.name}" has invalid type "${t.type}". Valid: ${i.join(", ")}`);continue}let h={name:t.name,type:t.type,enabled:t.enabled!==!1,config:t.config||{},continueOnFailure:t.continue_on_failure||!1,timeout:t.timeout||300};a.phases.push(h)}else a.phases=[...P.phases];return a.phases.length===0&&r.push("Config must have at least one phase"),r.length>0?{success:!1,config:a,errors:r}:{success:!0,config:a,errors:[],configPath:n}}function E(){return{...P,phases:P.phases.map(s=>({...s,config:{...s.config}})),output:{...P.output},qualityGate:{...P.qualityGate,thresholds:{...P.qualityGate.thresholds}}}}async function W(s,n,r,l){let a=Date.now(),e=[];if(!s.enabled)return{phase:s.name,type:s.type,status:"skipped",duration:0,exitCode:0,summary:"Phase disabled",artifacts:[]};try{let t={},i="passed",h="";switch(s.type){case"test":{let f=await n.kernel.getDomainAPIAsync("test-generation");if(!f)return A(s,a,"failed",1,"Test generation domain not available",e);let C=s.config.target||".",{walkSourceFiles:m}=await import("./file-discovery-GKCYJPFZ.js"),w=p.resolve(C),v=m(w,{includeTests:!1}),y=await f.generateTests({sourceFiles:v,testType:s.config.type||"unit",framework:s.config.framework||"vitest",coverageTarget:80});if(y.success&&y.value){let g=y.value;t={testsGenerated:g.tests.length,coverageEstimate:g.coverageEstimate},h=`Generated ${g.tests.length} tests (est. ${g.coverageEstimate}% coverage)`;let d=p.join(r,"test-generation.json");I.writeFileSync(d,$(g),"utf-8"),e.push(d)}else i="failed",h=y.error?.message||"Test generation failed";break}case"coverage":{let f=await n.kernel.getDomainAPIAsync("coverage-analysis");if(!f)return A(s,a,"failed",1,"Coverage analysis domain not available",e);let C=s.config.target||".",m=s.config.threshold||80,{walkSourceFiles:w}=await import("./file-discovery-GKCYJPFZ.js"),v=p.resolve(C),y=w(v,{includeTests:!1}),g=D(y),d=await f.analyze({coverageData:g,threshold:m,includeFileDetails:!0});if(d.success&&d.value){let b=d.value;t={...b.summary,meetsThreshold:b.meetsThreshold,threshold:m},i=b.meetsThreshold?"passed":"warning",h=`Line: ${b.summary.line}%, Branch: ${b.summary.branch}% \u2014 ${b.meetsThreshold?"meets":"below"} ${m}% threshold`;let q=p.join(r,"coverage.json");I.writeFileSync(q,$(d.value),"utf-8"),e.push(q)}else i="failed",h=d.error?.message||"Coverage analysis failed";break}case"security":{let f=await n.kernel.getDomainAPIAsync("security-compliance");if(!f)return A(s,a,"failed",1,"Security domain not available",e);let C=s.config.target||".",{walkSourceFiles:m}=await import("./file-discovery-GKCYJPFZ.js"),w=p.resolve(C),v=m(w,{includeTests:!0}),y=await f.runSASTScan(v);if(y.success&&y.value){let g=y.value,d=g.vulnerabilities||[],b=d.filter(S=>S.severity==="high"||S.severity==="critical").length;t={vulnerabilities:d.length,high:b},i=b>0?"failed":d.length>0?"warning":"passed",h=d.length===0?"No vulnerabilities found":`${d.length} vulnerabilities (${b} high/critical)`;let{toSARIF:q}=await import("./ci-output-LK3MBXLZ.js"),c=p.join(r,"security.sarif");I.writeFileSync(c,q({vulnerabilities:d,target:C,scanType:"SAST"}),"utf-8"),e.push(c);let u=p.join(r,"security.json");I.writeFileSync(u,$(g),"utf-8"),e.push(u)}else i="failed",h=y.error?.message||"Security scan failed";break}case"quality-gate":{let f=await n.kernel.getDomainAPIAsync("quality-assessment");if(!f)return A(s,a,"failed",1,"Quality assessment domain not available",e);let C=await f.evaluate({runGate:!0,includeAdvice:!0});if(C.success&&C.value){let m=C.value,w=m.passed??m.meetsThreshold??!0;t={passed:w,score:m.score||m.grade,checks:m.checks},i=w?"passed":"failed",h=`Quality gate: ${w?"PASSED":"FAILED"} (score: ${m.score||m.grade||"N/A"})`;let v=p.join(r,"quality-gate.json");I.writeFileSync(v,$(m),"utf-8"),e.push(v)}else i="failed",h=C.error?.message||"Quality gate evaluation failed";break}case"code-intelligence":{let f=await n.kernel.getDomainAPIAsync("code-intelligence");if(!f)return A(s,a,"failed",1,"Code intelligence domain not available",e);let C=s.config.target||".",{walkSourceFiles:m}=await import("./file-discovery-GKCYJPFZ.js"),w=p.resolve(C),v=m(w,{includeTests:!1}),y=await f.index({paths:v,incremental:!0});if(y.success&&y.value){let g=y.value;t=g,h=`Indexed ${g.filesIndexed} files, ${g.nodesCreated} nodes`;let d=p.join(r,"code-intelligence.json");I.writeFileSync(d,$(g),"utf-8"),e.push(d)}else i="warning",h=y.error?.message||"Code intelligence indexing incomplete";break}default:h=`Custom phase "${s.name}" \u2014 no built-in handler`,i="warning"}let k=Date.now()-a;return{phase:s.name,type:s.type,status:i,duration:k,exitCode:i==="failed"?1:0,summary:h,artifacts:e,details:t}}catch(t){let i=Date.now()-a;return{phase:s.name,type:s.type,status:"failed",duration:i,exitCode:1,summary:`Error: ${t instanceof Error?t.message:String(t)}`,artifacts:e}}}function A(s,n,r,l,a,e){return{phase:s.name,type:s.type,status:r,duration:Date.now()-n,exitCode:l,summary:a,artifacts:e}}function _(s){let n=`# AQE CI/CD Report
3
-
4
- `;n+=`**Status:** ${s.overallStatus==="passed"?"PASSED":s.overallStatus==="warning"?"WARNING":"FAILED"}
5
- `,n+=`**Duration:** ${(s.duration/1e3).toFixed(1)}s
6
- `,n+=`**Quality Gate:** ${s.qualityGatePassed?"Passed":"Failed"}
7
-
8
- `,n+=`## Phases
9
-
10
- `,n+=`| Phase | Type | Status | Duration | Summary |
11
- `,n+=`|-------|------|--------|----------|---------|
12
- `;for(let r of s.phases){let l=r.status==="passed"?"PASS":r.status==="failed"?"FAIL":r.status==="warning"?"WARN":"SKIP";n+=`| ${r.phase} | ${r.type} | ${l} | ${(r.duration/1e3).toFixed(1)}s | ${r.summary} |
13
- `}n+=`
14
- ## Artifacts
15
-
16
- `;for(let r of s.phases)if(r.artifacts.length>0){n+=`### ${r.phase}
17
- `;for(let l of r.artifacts)n+=`- \`${p.basename(l)}\`
18
- `;n+=`
19
- `}return n}function H(s,n,r){let l=new U("ci").description("CI/CD pipeline orchestration");return l.command("run").description("Execute CI pipeline from .aqe-ci.yml").option("-c, --config <path>","Path to .aqe-ci.yml config file").option("--phase <phases>","Run only specific phases (comma-separated)").option("--no-quality-gate","Skip quality gate enforcement").option("-F, --format <format>","Output format (text|json|markdown)","text").option("-o, --output <path>","Write combined report to file").action(async a=>{if(await r())try{let e,t=null;if(a.config){let c=x(p.resolve(a.config));if(!c.success){console.error(o.red(`
20
- Config errors:`));for(let u of c.errors)console.error(o.red(` - ${u}`));await n(1);return}e=c.config,t=a.config}else if(t=G(),t){let c=x(t);if(!c.success){console.error(o.red(`
21
- Config errors:`));for(let u of c.errors)console.error(o.red(` - ${u}`));await n(1);return}e=c.config}else e=E(),t="(defaults)";if(a.phase){let c=a.phase.split(",").map(u=>u.trim().toLowerCase());e.phases=e.phases.filter(u=>c.includes(u.name.toLowerCase())||c.includes(u.type))}a.qualityGate===!1&&(e.qualityGate.enforced=!1);let i=a.format,h=new Date;i==="text"&&(console.log(o.blue(`
22
- AQE CI Pipeline
23
- `)),console.log(o.gray(` Config: ${t}`)),console.log(o.gray(` Phases: ${e.phases.length}`)),console.log(o.gray(` Quality Gate: ${e.qualityGate.enforced?"enforced":"advisory"}
24
- `)));let k=p.resolve(e.output.directory);I.mkdirSync(k,{recursive:!0});let f=[],C=!1;for(let c of e.phases){if(i==="text"){let S=` [${f.length+1}/${e.phases.length}] ${c.name}...`;process.stdout.write(o.cyan(S))}let u=await W(c,s,k,e.output.format);if(f.push(u),i==="text"){let S=u.status==="passed"?o.green:u.status==="failed"?o.red:u.status==="warning"?o.yellow:o.gray,O=u.status.toUpperCase(),L=`${(u.duration/1e3).toFixed(1)}s`;process.stdout.write(`\r [${f.length}/${e.phases.length}] ${c.name} ${S(O)} (${L})
25
- `),u.summary&&console.log(o.gray(` ${u.summary}`))}if(u.status==="failed"&&(C=!0,!c.continueOnFailure)){i==="text"&&console.log(o.red(`
26
- Pipeline stopped: "${c.name}" failed (continue_on_failure: false)
27
- `));break}}let m=f.some(c=>c.status==="failed"),w=f.some(c=>c.status==="warning"),v=f.find(c=>c.type==="quality-gate"),y=!e.qualityGate.enforced||!v||v.status==="passed",g=m||!y?"failed":w?"warning":"passed",d=new Date,b=d.getTime()-h.getTime(),q={config:t||"(defaults)",startedAt:h,completedAt:d,duration:b,phases:f,qualityGatePassed:y,overallStatus:g,exitCode:g==="failed"?1:0};if(e.output.combinedReport){let c=p.join(k,"ci-report.md");I.writeFileSync(c,_(q),"utf-8");let u=p.join(k,"ci-report.json");I.writeFileSync(u,$(q),"utf-8")}if(i==="json")T($(q),a.output);else if(i==="markdown")T(_(q),a.output);else{console.log("");let c=g==="passed"?o.green:g==="failed"?o.red:o.yellow;console.log(` ${c(`Pipeline: ${g.toUpperCase()}`)} (${(b/1e3).toFixed(1)}s)`),console.log(` Quality Gate: ${y?o.green("PASSED"):o.red("FAILED")}`),console.log(o.gray(` Artifacts: ${k}/`)),console.log("")}await n(q.exitCode)}catch(e){console.error(o.red(`
28
- CI pipeline failed:`),e),await n(1)}}),l.command("init").description("Create a .aqe-ci.yml config file").option("--force","Overwrite existing config").action(async a=>{let e=G();if(e&&!a.force){console.log(o.yellow(`
29
- Config already exists: ${e}`)),console.log(o.gray(` Use --force to overwrite
30
- `)),await n(0);return}let t=`# AQE CI/CD Pipeline Configuration
31
- # Documentation: https://github.com/proffesor-for-testing/agentic-qe
32
-
33
- version: '1'
34
- name: ${p.basename(process.cwd())}
35
-
36
- phases:
37
- - name: Test Generation
38
- type: test
39
- config:
40
- target: .
41
- framework: vitest
42
- type: unit
43
- timeout: 300
44
-
45
- - name: Coverage Analysis
46
- type: coverage
47
- continue_on_failure: true
48
- config:
49
- target: .
50
- threshold: 80
51
- timeout: 300
52
-
53
- - name: Security Scan
54
- type: security
55
- continue_on_failure: true
56
- config:
57
- sast: true
58
- timeout: 300
59
-
60
- - name: Quality Gate
61
- type: quality-gate
62
- timeout: 60
63
-
64
- output:
65
- format: json
66
- directory: .aqe-ci-output
67
- combined_report: true
68
-
69
- quality_gate:
70
- enforced: true
71
- thresholds:
72
- coverage: 80
73
- security: medium
74
- quality: 70
75
- `,i=p.join(process.cwd(),".aqe-ci.yml");I.writeFileSync(i,t,"utf-8"),console.log(o.green(`
76
- Created: ${i}`)),console.log(o.gray(" Edit the file to customize your CI pipeline")),console.log(o.gray(` Run: aqe ci run
77
- `)),await n(0)}),l.command("validate").description("Validate .aqe-ci.yml config").option("-c, --config <path>","Path to config file").action(async a=>{let e=a.config?p.resolve(a.config):G();if(!e){console.log(o.red(`
78
- No .aqe-ci.yml found`)),console.log(o.gray(` Run: aqe ci init
79
- `)),await n(1);return}let t=x(e);if(t.success){console.log(o.green(`
80
- Config valid: ${e}`)),console.log(o.gray(` Phases: ${t.config.phases.length}`));for(let i of t.config.phases){let h=i.enabled?o.green("*"):o.gray("o");console.log(` ${h} ${i.name} (${i.type})`)}console.log(o.gray(` Quality Gate: ${t.config.qualityGate.enforced?"enforced":"advisory"}`)),console.log(""),await n(0)}else{console.log(o.red(`
81
- Config invalid: ${e}`));for(let i of t.errors)console.log(o.red(` - ${i}`));console.log(""),await n(1)}}),l}export{H as createCICommand};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.3");process.exit(0)}
2
- import{c as a,d as b,e as c}from"./chunk-LHGNNZ76.js";import"./chunk-7G6UX2QN.js";import"./chunk-HRUU7E3D.js";import"./chunk-Y2DVFVGI.js";c();export{a as VibiumClientImpl,b as VibiumClientProvider};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.3");process.exit(0)}
2
- import{a,b,c,d,e,f,g,h,i}from"./chunk-H5ZRV5K5.js";import"./chunk-SGXSB7YO.js";import"./chunk-5P3G6ZW4.js";import"./chunk-Y2DVFVGI.js";export{g as ComplexityAnalyzer,c as ScoreCalculator,a as SignalCollector,e as TierRecommender,h as createComplexityAnalyzer,i as createComplexityAnalyzerWithDependencies,d as createScoreCalculator,b as createSignalCollector,f as createTierRecommender};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.3");process.exit(0)}
2
- import{c as a,d as b,e as c,f as d,g as e,h as f,i as g,j as h,k as i,l as j,m as k,n as l}from"./chunk-5FOZO7KM.js";import"./chunk-G6ZHTF42.js";import"./chunk-UHQY3GK7.js";import"./chunk-YDNSLLBS.js";import"./chunk-NTSXHZTC.js";import"./chunk-42VSQ2MX.js";import"./chunk-FKG5OQFT.js";import"./chunk-7FYMDKQH.js";import"./chunk-TGLAWI62.js";import"./chunk-33VPWGCM.js";import"./chunk-4XPPMADQ.js";import"./chunk-DBA3N742.js";import"./chunk-XX7HUSX2.js";import"./chunk-E3FBW6G2.js";import"./chunk-OVPJQWHW.js";import"./chunk-G6DCESPU.js";import"./chunk-4UDZLD42.js";import"./chunk-SQ3PPISY.js";import"./chunk-H6XBM2LY.js";import"./chunk-4W7QVUNO.js";import"./chunk-4C6UJIHB.js";import"./chunk-7SLAZAVU.js";import"./chunk-D4Z2N74A.js";import"./chunk-YL7T3VV7.js";import"./chunk-B5XFDFBT.js";import"./chunk-TISSZFHO.js";import"./chunk-TTMHIOQ3.js";import"./chunk-OY7MLMEX.js";import"./chunk-MDZ6RRLX.js";import"./chunk-IQEJGZV6.js";import"./chunk-B2ZONZPZ.js";import"./chunk-AWNYEAGB.js";import"./chunk-QLWNXBRU.js";import"./chunk-KF63AYXD.js";import"./chunk-UMENRGHK.js";import"./chunk-44WISFTU.js";import"./chunk-74PK3NEW.js";import"./chunk-SHGKY3QB.js";import"./chunk-IKIITGU5.js";import"./chunk-RKJZWWB7.js";import"./chunk-LHGNNZ76.js";import"./chunk-7G6UX2QN.js";import"./chunk-F67AV5P2.js";import"./chunk-FUE6LL72.js";import"./chunk-LTBCAFTZ.js";import"./chunk-2GNRW3OD.js";import"./chunk-CR3QGHVN.js";import"./chunk-H5ZRV5K5.js";import"./chunk-SGXSB7YO.js";import"./chunk-5P3G6ZW4.js";import"./chunk-ROX7NLS4.js";import"./chunk-LVLBIKJD.js";import"./chunk-CB5JPRIZ.js";import"./chunk-TJEIOE7F.js";import"./chunk-527HQAY7.js";import"./chunk-FD2JFEQC.js";import"./chunk-CBOPBYPU.js";import"./chunk-UTVRQEZM.js";import"./chunk-HOQQCY2K.js";import"./chunk-R2AFVFRF.js";import"./chunk-37BASGWC.js";import"./chunk-T62DH4GG.js";import"./chunk-WYMGK5DX.js";import"./chunk-4TXAP3YH.js";import"./chunk-5DFHE4H5.js";import"./chunk-KPMGTVB4.js";import"./chunk-NN76NTOX.js";import"./chunk-ZUG5MOUB.js";import"./chunk-B7SWW5A6.js";import"./chunk-UYJHYMEQ.js";import"./chunk-2IGT5WNQ.js";import"./chunk-ZN3J6TZD.js";import"./chunk-RTJ2M6V6.js";import"./chunk-4OUPCTBS.js";import"./chunk-N4H2QOT5.js";import"./chunk-AB4U6ZNI.js";import"./chunk-IU4EBTA2.js";import"./chunk-IFFZR6GY.js";import"./chunk-7Y2CEXRS.js";import"./chunk-7BUERZYL.js";import"./chunk-HXE5NBJG.js";import"./chunk-EY4OQHU3.js";import"./chunk-NBWQBQO5.js";import"./chunk-I4NDQGKP.js";import"./chunk-3ABRGG3C.js";import"./chunk-SJPZSCZP.js";import"./chunk-OV5EZO3U.js";import"./chunk-VWNHKYK7.js";import"./chunk-YCBDE2N7.js";import"./chunk-PZTVH2AS.js";import"./chunk-26GM5CWD.js";import"./chunk-TFHQE6NK.js";import"./chunk-4RP5VUBI.js";import"./chunk-5F6DWHQG.js";import"./chunk-L2GKMBDP.js";import"./chunk-72UJXEKQ.js";import"./chunk-Y5SQBI2F.js";import"./chunk-YAKS3CAB.js";import"./chunk-4JBFJTHJ.js";import"./chunk-LKN7JQTW.js";import"./chunk-6F2RM6X2.js";import"./chunk-C46DMCWF.js";import"./chunk-HRUU7E3D.js";import"./chunk-OYMLHX2B.js";import"./chunk-5Y5TC6BY.js";import"./chunk-MXMFGSWR.js";import"./chunk-VIDBBB6F.js";import"./chunk-PI74GOE4.js";import"./chunk-5IAB5NRZ.js";import"./chunk-OVDKWCD7.js";import"./chunk-XA7CG3LH.js";import"./chunk-YEXPFHV6.js";import"./chunk-IP7NSFQQ.js";import"./chunk-T35GZXTU.js";import"./chunk-Y2DVFVGI.js";export{c as adoptExternalFleet,e as assignAgentLevel,k as disposeFleet,f as getAgentLevel,g as getAllAgentLevels,a as getFleetState,d as getFleetTopology,l as handleAQEHealth,j as handleFleetHealth,h as handleFleetInit,i as handleFleetStatus,b as isFleetInitialized};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.3");process.exit(0)}
2
- import{a,b,c,d}from"./chunk-4TXAP3YH.js";import"./chunk-Y2DVFVGI.js";export{b as CostTracker,a as MODEL_PRICING,c as getGlobalCostTracker,d as resetGlobalCostTracker};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.3");process.exit(0)}
2
- import{a,b}from"./chunk-FUE6LL72.js";import"./chunk-ZN3J6TZD.js";import"./chunk-C46DMCWF.js";import"./chunk-OYMLHX2B.js";import"./chunk-Y2DVFVGI.js";export{a as CrossDomainEventRouter,b as createCrossDomainRouter};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.3");process.exit(0)}
2
- import{b as a,c as b,d as c,e as d,f as e,g as f,h as g,i as h,j as i,k as j,l as k,m as l,n as m,o as n,p as o,q as p,r as q,s as r,t as s,u as t,v as u}from"./chunk-OY7MLMEX.js";import"./chunk-MDZ6RRLX.js";import"./chunk-IQEJGZV6.js";import"./chunk-B2ZONZPZ.js";import"./chunk-IU4EBTA2.js";import"./chunk-IFFZR6GY.js";import"./chunk-7Y2CEXRS.js";import"./chunk-7BUERZYL.js";import"./chunk-HXE5NBJG.js";import"./chunk-EY4OQHU3.js";import"./chunk-NBWQBQO5.js";import"./chunk-I4NDQGKP.js";import"./chunk-3ABRGG3C.js";import"./chunk-SJPZSCZP.js";import"./chunk-OV5EZO3U.js";import"./chunk-VWNHKYK7.js";import"./chunk-YCBDE2N7.js";import"./chunk-PZTVH2AS.js";import"./chunk-26GM5CWD.js";import"./chunk-TFHQE6NK.js";import"./chunk-4RP5VUBI.js";import"./chunk-5F6DWHQG.js";import"./chunk-L2GKMBDP.js";import"./chunk-72UJXEKQ.js";import"./chunk-Y5SQBI2F.js";import"./chunk-YAKS3CAB.js";import"./chunk-4JBFJTHJ.js";import"./chunk-LKN7JQTW.js";import"./chunk-6F2RM6X2.js";import"./chunk-C46DMCWF.js";import"./chunk-HRUU7E3D.js";import"./chunk-OYMLHX2B.js";import"./chunk-MXMFGSWR.js";import"./chunk-VIDBBB6F.js";import"./chunk-PI74GOE4.js";import"./chunk-5IAB5NRZ.js";import"./chunk-OVDKWCD7.js";import"./chunk-XA7CG3LH.js";import"./chunk-YEXPFHV6.js";import"./chunk-IP7NSFQQ.js";import"./chunk-T35GZXTU.js";import"./chunk-Y2DVFVGI.js";export{q as BUILT_IN_STRATEGIES,b as ConceptGraph,g as DEFAULT_ACTIVATION_CONFIG,a as DEFAULT_CONCEPT_GRAPH_CONFIG,m as DEFAULT_DREAM_CONFIG,s as DEFAULT_DREAM_SCHEDULER_CONFIG,i as DEFAULT_INSIGHT_CONFIG,k as DEFAULT_VALIDATION_THRESHOLDS,n as DreamEngine,t as DreamScheduler,f as HISTORY_TRIM_TARGET_RATIO,j as InsightGenerator,d as MAX_ACTIVATION_HISTORY_ENTRIES,e as MAX_COACTIVATION_ENTRIES,l as RVCOWBranchManager,r as SpeculativeDreamer,h as SpreadingActivation,c as createConceptGraph,o as createDreamEngine,u as createDreamScheduler,p as default};
@@ -1,17 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.3");process.exit(0)}
2
- import{a as w,b as S,c as f,d as b,e as T,f as x}from"./chunk-2WT7AKKK.js";import{a as M}from"./chunk-UHQY3GK7.js";import{a as R}from"./chunk-YDNSLLBS.js";import"./chunk-B5XFDFBT.js";import"./chunk-UTVRQEZM.js";import"./chunk-HOQQCY2K.js";import"./chunk-R2AFVFRF.js";import"./chunk-37BASGWC.js";import"./chunk-T62DH4GG.js";import"./chunk-WYMGK5DX.js";import"./chunk-4TXAP3YH.js";import"./chunk-B7SWW5A6.js";import"./chunk-ZN3J6TZD.js";import"./chunk-RTJ2M6V6.js";import"./chunk-IFFZR6GY.js";import"./chunk-EY4OQHU3.js";import"./chunk-PZTVH2AS.js";import"./chunk-26GM5CWD.js";import"./chunk-TFHQE6NK.js";import"./chunk-4RP5VUBI.js";import"./chunk-5F6DWHQG.js";import"./chunk-L2GKMBDP.js";import"./chunk-72UJXEKQ.js";import"./chunk-Y5SQBI2F.js";import"./chunk-YAKS3CAB.js";import"./chunk-4JBFJTHJ.js";import"./chunk-C46DMCWF.js";import"./chunk-HRUU7E3D.js";import"./chunk-OYMLHX2B.js";import"./chunk-MXMFGSWR.js";import"./chunk-VIDBBB6F.js";import"./chunk-PI74GOE4.js";import"./chunk-5IAB5NRZ.js";import"./chunk-OVDKWCD7.js";import"./chunk-XA7CG3LH.js";import"./chunk-YEXPFHV6.js";import"./chunk-IP7NSFQQ.js";import"./chunk-T35GZXTU.js";import"./chunk-Y2DVFVGI.js";import{Command as A}from"commander";import s from"chalk";import*as p from"fs";import*as m from"path";import*as D from"yaml";var h=["accessibility-testing","security-testing","performance-testing","chaos-engineering-resilience","contract-testing"],L=["risk-based-testing","test-design-techniques","regression-testing","test-data-management","localization-testing"],I=["quality-metrics","refactoring-patterns","iterative-loop","stream-chain"];function F(e){typeof e=="number"&&Number.isFinite(e)&&e>0&&(process.env.AQE_MAX_BUDGET_USD=String(e),console.log(s.gray(` Budget cap: $${e.toFixed(2)} for this run`)))}function _(e){switch(e){case 3:return h;case 2:return[...h,...L];case 1:return[...h,...L,...I];default:return h}}var v="";function B(e){let t=Math.round(e.completedTasks/e.totalTasks*100),o=k(e.elapsedMs),n=k(e.estimatedRemainingMs),r=j(t,30),u=`${s.cyan("Progress:")} ${r} ${t}% | ${s.green(e.completedTasks)}/${e.totalTasks} tasks | ${s.yellow(e.failedTasks)} failed | ${s.blue(e.activeWorkers)} workers | ${o} elapsed, ~${n} remaining`;v&&process.stdout.write("\r"+" ".repeat(v.length)+"\r"),process.stdout.write(u),v=u}function j(e,t){let o=Math.round(e/100*t),n=t-o;return s.green("=".repeat(o))+s.gray("-".repeat(n))}function k(e){if(e<1e3)return`${e}ms`;if(e<6e4)return`${(e/1e3).toFixed(1)}s`;let t=Math.floor(e/6e4),o=Math.round(e%6e4/1e3);return`${t}m ${o}s`}function C(e){let t=[];t.push(""),t.push(s.bold(`Eval Results: ${e.skill}`)+s.dim(` (${e.model})`)),t.push("=".repeat(60));let o=e.passed?s.green("PASSED"):s.red("FAILED");t.push(`Status: ${o}`),t.push(""),t.push(s.bold("Metrics:")),t.push(` Total Tests: ${e.totalTests}`),t.push(` Passed: ${s.green(e.passedTests)}`),t.push(` Failed: ${s.red(e.failedTests)}`),t.push(` Skipped: ${s.yellow(e.skippedTests)}`),t.push(` Pass Rate: ${(e.passRate*100).toFixed(1)}%`),t.push(` Reasoning Avg: ${(e.avgReasoningQuality*100).toFixed(1)}%`),t.push(""),t.push(s.bold("Performance:")),t.push(` Duration: ${k(e.totalDurationMs)}`),t.push(` Workers Used: ${e.workersUsed}`),t.push(` Parallel Speedup: ${s.cyan(e.parallelSpeedup.toFixed(2)+"x")}`),t.push("");let n=e.testResults.filter(r=>!r.passed);if(n.length>0){t.push(s.bold.red("Failed Tests:"));for(let r of n.slice(0,5))t.push(` ${s.red("x")} ${r.testId}`),r.error&&t.push(` ${s.dim(r.error)}`);n.length>5&&t.push(` ... and ${n.length-5} more`),t.push("")}return t.join(`
3
- `)}function N(e){let t=[];t.push("# Skill Evaluation Report"),t.push(""),t.push(`Generated: ${new Date().toISOString()}`),t.push(""),t.push("## Summary"),t.push(""),t.push("| Skill | Model | Pass Rate | Duration | Speedup | Status |"),t.push("|-------|-------|-----------|----------|---------|--------|");for(let o of e){let n=o.passed?"PASSED":"FAILED";t.push(`| ${o.skill} | ${o.model} | ${(o.passRate*100).toFixed(1)}% | ${k(o.totalDurationMs)} | ${o.parallelSpeedup.toFixed(2)}x | ${n} |`)}t.push(""),t.push("## Detailed Results"),t.push("");for(let o of e){t.push(`### ${o.skill} (${o.model})`),t.push(""),t.push(`- **Total Tests:** ${o.totalTests}`),t.push(`- **Passed:** ${o.passedTests}`),t.push(`- **Failed:** ${o.failedTests}`),t.push(`- **Pass Rate:** ${(o.passRate*100).toFixed(1)}%`),t.push(`- **Avg Reasoning Quality:** ${(o.avgReasoningQuality*100).toFixed(1)}%`),t.push("");let n=o.testResults.filter(r=>!r.passed);if(n.length>0){t.push("**Failed Tests:**"),t.push("");for(let r of n)t.push(`- \`${r.testId}\`: ${r.error||"No error message"}`);t.push("")}}return t.join(`
4
- `)}var U=".claude/skills";function Q(e){let t=m.join(process.cwd(),U,e,"evals",`${e}.yaml`);if(!p.existsSync(t))return null;try{let o=D.parse(p.readFileSync(t,"utf-8"));return T(o)?"command":"llm"}catch{return null}}function q(e,t){return{skill:e.skill,model:t,totalTests:e.totalTests,passedTests:e.passedTests,failedTests:e.failedTests,skippedTests:0,passRate:e.passRate,testResults:e.testResults.map(o=>V(o)),totalDurationMs:e.totalDurationMs,parallelSpeedup:1,avgReasoningQuality:0,passed:e.passed,workersUsed:1,timestamp:e.timestamp}}function V(e){let t=[];return e.setupFailure&&t.push(e.setupFailure),e.failures.length&&t.push(...e.failures),{testId:e.testId,passed:e.passed,expectedPatterns:[],actualPatterns:[],reasoningQuality:0,executionTimeMs:e.durationMs,category:e.category??"uncategorized",priority:e.priority??"medium",error:t.length?t.join("; "):void 0}}async function $(){let e=await M({sqlite:{dbPath:".agentic-qe/eval-runner.db"},hnsw:{M:16,efConstruction:100,efSearch:50}});await e.initialize();let t=R(e);return{runner:f(t),learner:t,reasoningBank:e}}async function z(e){if(console.log(s.bold(`
5
- AQE Parallel Eval Runner`)),console.log(s.dim(`ADR-056 Phase 5: Worker Pool Pattern
6
- `)),Q(e.skill)==="command"){console.log(s.cyan(`Running eval suite: ${e.skill}`)),console.log(s.dim("Mode: command-eval (shell-based, ADR-091)")),console.log("");let a=await x({timeoutMs:e.timeout}).run(e.skill),d=q(a,e.model);if(console.log(C(d)),e.output){let c=m.resolve(e.output);p.writeFileSync(c,JSON.stringify(d,null,2)),console.log(s.green(`Results saved to: ${c}`))}process.exit(d.passed?0:1)}let o,n;if(e.mock)console.log(s.yellow.bold(" \u26A0\uFE0F MOCK MODE: canned responses, NOT real model output. Results are not valid eval evidence.")),o=new S;else{let l=await b();l.executor||(console.error(s.red(`
7
- Cannot run real eval: `)+(l.reason??"no provider")),process.exit(1)),o=l.executor,n=l.manager;let a=l.billingMode==="subscription"?s.green("subscription (no per-token charge)"):l.billingMode==="local"?s.green("local (no cost)"):l.billingMode==="metered-capped"?s.yellow("metered (server-side cap)"):s.red("pay-per-token API");console.log(` LLM provider: ${s.cyan(l.providerType)} billing: ${a}`),process.env.AQE_MAX_BUDGET_USD&&console.log(s.gray(` Budget cap: $${process.env.AQE_MAX_BUDGET_USD} for this run`)),console.log("")}let{runner:r,reasoningBank:u}=await $();try{let l={...w,maxWorkers:e.parallel?e.workers:1,batchSize:e.batchSize,timeout:e.timeout,retryFailedTests:e.retry},a=f(R(u),l,o);e.verbose&&a.onProgress(B),console.log(s.cyan(`Running eval suite: ${e.skill}`)),console.log(s.cyan(`Model: ${e.model}`)),console.log(s.cyan(`Mode: ${e.parallel?`Parallel (${e.workers} workers)`:"Sequential"}`)),console.log("");let d=await a.runEvalParallel(e.skill,e.model);if(v&&console.log(""),console.log(C(d)),e.output){let c=m.resolve(e.output);p.writeFileSync(c,JSON.stringify(d,null,2)),console.log(s.green(`Results saved to: ${c}`))}process.exit(d.passed?0:1)}finally{await u.dispose(),n&&await n.dispose()}}async function G(e){console.log(s.bold(`
8
- AQE Parallel Eval Runner - Multi-Skill`)),console.log(s.dim(`ADR-056 Phase 5: Worker Pool Pattern
9
- `));let t,o;if(e.mock)console.log(s.yellow.bold(" \u26A0\uFE0F MOCK MODE: canned responses, NOT real model output. Results are not valid eval evidence.")),t=new S;else{let l=await b();l.executor||(console.error(s.red(`
10
- Cannot run real eval: `)+(l.reason??"no provider")),process.exit(1)),t=l.executor,o=l.manager,console.log(` LLM provider: ${s.cyan(l.providerType)} billing: ${l.billingMode}`)}let{runner:n,learner:r,reasoningBank:u}=await $();try{let l=_(e.skillsTier),a=e.models.split(",").map(i=>i.trim());console.log(s.cyan(`Running evals for ${l.length} skills`)),console.log(s.cyan(`Models: ${a.join(", ")}`)),console.log(s.cyan(`Mode: ${e.parallel?`Parallel (${e.workers} workers)`:"Sequential"}`)),console.log("");let d={...w,maxWorkers:e.parallel?e.workers:1},O=await f(r,d,t).runMultipleEvalsParallel(l,a),g=[];for(let i of O.values())g.push(...i);console.log(s.bold(`
11
- Eval Summary`)),console.log("=".repeat(60));let P=0,y=0;for(let i of g){let E=i.passed?s.green("v"):s.red("x");console.log(`${E} ${i.skill} (${i.model}): ${(i.passRate*100).toFixed(1)}% (${i.parallelSpeedup.toFixed(2)}x speedup)`),i.passed?P++:y++}if(console.log(""),console.log(`Total: ${s.green(P)} passed, ${s.red(y)} failed`),e.output){let i=m.resolve(e.output);(i.endsWith(".md")?"markdown":"json")==="markdown"?p.writeFileSync(i,N(g)):p.writeFileSync(i,JSON.stringify(g,null,2)),console.log(s.green(`
12
- Report saved to: ${i}`))}process.exit(y===0?0:1)}finally{await u.dispose(),o&&await o.dispose()}}async function W(e){let{learner:t,reasoningBank:o}=await $();try{let n=await t.getSkillConfidence(e);if(!n){console.log(s.yellow(`No validation history found for skill: ${e}`));return}if(console.log(s.bold(`
13
- Skill Validation Status: ${e}`)),console.log("=".repeat(50)),console.log(`Average Score: ${(n.avgScore*100).toFixed(1)}%`),console.log(`Trend: ${n.trend}`),console.log(`Validation Count: ${n.outcomes.length}`),console.log(`Last Updated: ${n.lastUpdated}`),n.byLevel){console.log(`
14
- By Validation Level:`);for(let[u,l]of Object.entries(n.byLevel))l!==void 0&&console.log(` ${u}: ${(l*100).toFixed(1)}%`)}let r=await t.getCrossModelAnalysis(e);if(r&&(console.log(`
15
- Cross-Model Analysis:`),console.log(` Variance: ${(r.variance*100).toFixed(2)}%`),console.log(` Has Anomalies: ${r.hasAnomalies}`),r.models)){console.log(`
16
- Model Performance:`);for(let[u,l]of Object.entries(r.models))console.log(` ${u}: ${(l.passRate*100).toFixed(1)}% pass rate (${l.sampleCount} samples)`)}}finally{await o.dispose()}}async function K(e){let{learner:t,reasoningBank:o}=await $();try{let n=await t.queryValidationPatterns(e.skill,50);if(n.length===0){console.log(s.yellow(`No validation patterns found for skill: ${e.skill}`));return}let r=await t.extractLearnedPatterns(e.skill),u=await t.getValidationTrends(e.skill),l={skill:e.skill,generated:new Date().toISOString(),patternCount:n.length,learnedPatterns:r,trends:u};if(e.format==="json"){let a=JSON.stringify(l,null,2);e.output?(p.writeFileSync(m.resolve(e.output),a),console.log(s.green(`Report saved to: ${e.output}`))):console.log(a)}else{let a=[];if(a.push(`# Validation Report: ${e.skill}`),a.push(""),a.push(`Generated: ${l.generated}`),a.push(""),a.push("## Overview"),a.push(`- Patterns Collected: ${l.patternCount}`),a.push(`- Learned Patterns: ${l.learnedPatterns.length}`),a.push(""),l.trends&&(a.push("## Trends"),a.push(`- Overall: ${l.trends.overall}`),a.push(`- Recent Pass Rate: ${(l.trends.recentPassRate*100).toFixed(1)}%`),a.push("")),l.learnedPatterns.length>0){a.push("## Learned Patterns"),a.push("");for(let c of l.learnedPatterns)a.push(`### ${c.category}`),a.push(`- Confidence: ${(c.confidence*100).toFixed(1)}%`),a.push(`- Observations: ${c.observationCount}`),a.push(`- Models: ${c.models.join(", ")}`),a.push("")}let d=a.join(`
17
- `);e.output?(p.writeFileSync(m.resolve(e.output),d),console.log(s.green(`Report saved to: ${e.output}`))):console.log(d)}}finally{await o.dispose()}}function re(){let e=new A("eval").description("Run skill evaluation suites in parallel");return e.command("run").description("Run eval suite for a single skill").requiredOption("-s, --skill <skill>","Skill name to evaluate").requiredOption("-m, --model <model>","Model to use (e.g., claude-sonnet-4-6)").option("-p, --parallel","Enable parallel execution",!1).option("-w, --workers <n>","Number of parallel workers",parseInt,5).option("-b, --batch-size <n>","Test cases per batch",parseInt,4).option("-t, --timeout <ms>","Timeout per test case (ms)",parseInt,3e4).option("--no-retry","Disable retry of failed tests").option("-o, --output <path>","Output file path for results").option("-v, --verbose","Show progress during execution",!1).option("--max-budget-usd <n>","ADR-123: cap total LLM spend for this run in USD (aborts with COST_LIMIT_EXCEEDED past the cap)",parseFloat).option("--mock","Use canned responses instead of real model calls (offline testing only \u2014 results are NOT valid eval evidence)",!1).action(async t=>{F(t.maxBudgetUsd),await z({skill:t.skill,model:t.model,parallel:t.parallel,workers:t.workers,batchSize:t.batchSize,timeout:t.timeout,retry:t.retry!==!1,output:t.output,verbose:t.verbose,mock:t.mock===!0})}),e.command("run-all").description("Run eval suites for multiple skills").option("--skills-tier <tier>","Skill tier (1=all, 2=P0+P1, 3=P0 only)",parseInt,3).option("--models <models>","Comma-separated models to test","claude-sonnet-4-6").option("-p, --parallel","Enable parallel execution",!0).option("-w, --workers <n>","Number of parallel workers",parseInt,5).option("-o, --output <path>","Output file path for report").option("-v, --verbose","Show progress during execution",!1).option("--max-budget-usd <n>","ADR-123: cap total LLM spend for this run in USD (aborts with COST_LIMIT_EXCEEDED past the cap)",parseFloat).option("--mock","Use canned responses instead of real model calls (offline testing only \u2014 results are NOT valid eval evidence)",!1).action(async t=>{F(t.maxBudgetUsd),await G({skillsTier:t.skillsTier,models:t.models,parallel:t.parallel,workers:t.workers,output:t.output,verbose:t.verbose,mock:t.mock===!0})}),e.command("status").description("Show validation status for a skill").requiredOption("-s, --skill <skill>","Skill name").action(async t=>{await W(t.skill)}),e.command("report").description("Generate validation report for a skill").requiredOption("-s, --skill <skill>","Skill name").option("-f, --format <format>","Output format (json|markdown)","markdown").option("-o, --output <path>","Output file path").action(async t=>{await K({skill:t.skill,format:t.format,output:t.output})}),e}export{re as createEvalCommand};
@@ -1,43 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.3");process.exit(0)}
2
- import{a as k,b as K,c as x,d as T,e as H,f as F,g as Q,j as _}from"./chunk-MWWAMDHI.js";import{a as G}from"./chunk-LS3EUMBP.js";import{d as C,e as S}from"./chunk-5BLFXQEB.js";import{a as v,b as V}from"./chunk-STRDSVH3.js";import"./chunk-V4AOVDCJ.js";import{b as N}from"./chunk-4Q35TI6Z.js";import"./chunk-JBB7E26R.js";import"./chunk-YGB6R5DW.js";import{B as j}from"./chunk-7FYMDKQH.js";import"./chunk-TGLAWI62.js";import"./chunk-33VPWGCM.js";import"./chunk-4XPPMADQ.js";import"./chunk-DBA3N742.js";import"./chunk-E3FBW6G2.js";import"./chunk-OVPJQWHW.js";import"./chunk-G6DCESPU.js";import"./chunk-4UDZLD42.js";import"./chunk-SQ3PPISY.js";import{a as E}from"./chunk-4W7QVUNO.js";import"./chunk-4C6UJIHB.js";import"./chunk-D4Z2N74A.js";import"./chunk-TTMHIOQ3.js";import"./chunk-OY7MLMEX.js";import"./chunk-MDZ6RRLX.js";import"./chunk-IQEJGZV6.js";import"./chunk-B2ZONZPZ.js";import"./chunk-AWNYEAGB.js";import"./chunk-74PK3NEW.js";import"./chunk-SHGKY3QB.js";import"./chunk-IKIITGU5.js";import"./chunk-RKJZWWB7.js";import"./chunk-LHGNNZ76.js";import"./chunk-7G6UX2QN.js";import"./chunk-F67AV5P2.js";import{a as W}from"./chunk-FUE6LL72.js";import"./chunk-ROX7NLS4.js";import"./chunk-LVLBIKJD.js";import"./chunk-CB5JPRIZ.js";import"./chunk-TJEIOE7F.js";import"./chunk-527HQAY7.js";import"./chunk-FD2JFEQC.js";import"./chunk-CBOPBYPU.js";import"./chunk-UTVRQEZM.js";import"./chunk-HOQQCY2K.js";import"./chunk-R2AFVFRF.js";import"./chunk-37BASGWC.js";import"./chunk-T62DH4GG.js";import"./chunk-WYMGK5DX.js";import"./chunk-4TXAP3YH.js";import{d as L}from"./chunk-5DFHE4H5.js";import"./chunk-KPMGTVB4.js";import"./chunk-NN76NTOX.js";import"./chunk-ZUG5MOUB.js";import"./chunk-B7SWW5A6.js";import"./chunk-UYJHYMEQ.js";import"./chunk-2IGT5WNQ.js";import"./chunk-ZN3J6TZD.js";import"./chunk-RTJ2M6V6.js";import{c as q}from"./chunk-4OUPCTBS.js";import"./chunk-N4H2QOT5.js";import"./chunk-AB4U6ZNI.js";import"./chunk-IU4EBTA2.js";import"./chunk-IFFZR6GY.js";import"./chunk-7Y2CEXRS.js";import"./chunk-7BUERZYL.js";import"./chunk-HXE5NBJG.js";import"./chunk-EY4OQHU3.js";import"./chunk-NBWQBQO5.js";import"./chunk-I4NDQGKP.js";import"./chunk-3ABRGG3C.js";import"./chunk-SJPZSCZP.js";import"./chunk-OV5EZO3U.js";import"./chunk-VWNHKYK7.js";import"./chunk-YCBDE2N7.js";import"./chunk-PZTVH2AS.js";import"./chunk-26GM5CWD.js";import"./chunk-TFHQE6NK.js";import"./chunk-4RP5VUBI.js";import"./chunk-5F6DWHQG.js";import"./chunk-L2GKMBDP.js";import"./chunk-72UJXEKQ.js";import"./chunk-Y5SQBI2F.js";import"./chunk-YAKS3CAB.js";import"./chunk-4JBFJTHJ.js";import"./chunk-LKN7JQTW.js";import"./chunk-6F2RM6X2.js";import{a as I}from"./chunk-C46DMCWF.js";import{a as B,c as ee}from"./chunk-HRUU7E3D.js";import"./chunk-OYMLHX2B.js";import"./chunk-5Y5TC6BY.js";import{a as z,b as te}from"./chunk-MXMFGSWR.js";import"./chunk-VIDBBB6F.js";import"./chunk-PI74GOE4.js";import{c as $,d as ne}from"./chunk-5IAB5NRZ.js";import"./chunk-OVDKWCD7.js";import"./chunk-XA7CG3LH.js";import"./chunk-YEXPFHV6.js";import"./chunk-IP7NSFQQ.js";import"./chunk-T35GZXTU.js";import"./chunk-Y2DVFVGI.js";ne();import{Command as ie}from"commander";import t from"chalk";ee();te();import h from"chalk";import{existsSync as oe}from"fs";import{join as P}from"path";var R=class{projectRoot;options;orchestrator;constructor(e){this.options=e,this.projectRoot=e.projectRoot}async checkCodeIntelligence(){if(this.options.skipCodeScan)return console.log(h.yellow(" Code intelligence scan skipped (--skip-code-scan flag)")),{codeIntelligence:{hasIndex:!1,entryCount:0,wasPrompted:!1,scanRequested:!1},shouldProceed:!0,skipReason:"skip-flag"};if(await this.hasCodeIntelligenceIndex()){let i=await this.getKGEntryCount();return console.log(h.green(` \u2713 Code intelligence index found (${i} entries)`)),{codeIntelligence:{hasIndex:!0,entryCount:i,wasPrompted:!1,scanRequested:!1},shouldProceed:!0}}return!this.options.nonInteractive&&(console.log(h.yellow(`
3
- \u26A0 No code intelligence index found`)),console.log(h.gray(" Building a knowledge graph improves agent accuracy by 80%")),console.log(h.gray(" This is a one-time operation and can be run later with:")),console.log(h.cyan(` aqe code-intelligence index
4
- `)),await this.promptScan())?{codeIntelligence:{hasIndex:!1,entryCount:0,wasPrompted:!0,scanRequested:!0},shouldProceed:!1,skipReason:"scan-requested"}:(console.log(h.gray(" Continuing without code intelligence index")),{codeIntelligence:{hasIndex:!1,entryCount:0,wasPrompted:!this.options.nonInteractive,scanRequested:!1},shouldProceed:!0})}async runCodeIntelligenceScan(){try{if(console.log(h.blue(`
5
- Building code intelligence knowledge graph...`)),this.orchestrator||(this.orchestrator=new G({projectRoot:this.projectRoot,autoMode:!0,...this.options.initOptions})),await this.hasCodeIntelligenceIndex()){let s=await this.getKGEntryCount();return console.log(h.green(` \u2713 Index already exists (${s} entries)`)),{success:!0,entries:s}}let{KnowledgeGraphService:i}=await import("./knowledge-graph-7JE2TVKJ.js"),{InMemoryBackend:c}=await import("./memory-backend-Q54CC5A5.js"),m=new c;await m.initialize();let n=new i(m,{namespace:"code-intelligence:kg",enableVectorEmbeddings:!0}),g=await(await import("fast-glob")).default(["**/*.ts","**/*.tsx","**/*.js","**/*.jsx","**/*.py"],{cwd:this.projectRoot,ignore:["node_modules/**","dist/**","coverage/**",".agentic-qe/**"]});console.log(h.gray(` Indexing ${g.length} files...`));let o=await n.index({paths:g.map(s=>P(this.projectRoot,s)),incremental:!1,includeTests:!0});if(n.destroy(),o.success){let s=o.value.nodesCreated+o.value.edgesCreated;return console.log(h.green(` \u2713 Indexed ${s} knowledge graph entries`)),{success:!0,entries:s}}return console.log(h.yellow(" \u26A0 Code intelligence scan completed with warnings")),{success:!1,entries:0}}catch(e){return console.error(h.red(" \u2717 Code intelligence scan failed:"),B(e)),{success:!1,entries:0}}}async getStatusForAgents(){let e=await this.hasCodeIntelligenceIndex(),i=e?await this.getKGEntryCount():0;return{codeIntelligenceAvailable:e,knowledgeGraphSize:i,recommendedCapabilities:e?["semantic-search","code-analysis","context-aware"]:["basic-analysis"]}}async hasCodeIntelligenceIndex(){let e=P(this.projectRoot,".agentic-qe","memory.db");if(!oe(e))return!1;try{let i=z(e),c=i.prepare(`
6
- SELECT COUNT(*) as count FROM kv_store
7
- WHERE namespace = 'code-intelligence:kg'
8
- `).get();return i.close(),c.count>0}catch{return!1}}async getKGEntryCount(){let e=P(this.projectRoot,".agentic-qe","memory.db");try{let i=z(e),c=i.prepare(`
9
- SELECT COUNT(*) as count FROM kv_store
10
- WHERE namespace LIKE 'code-intelligence:kg%'
11
- `).get();return i.close(),c.count}catch{return 0}}async promptScan(){let i=(await import("readline")).createInterface({input:process.stdin,output:process.stdout});return new Promise(c=>{i.question(h.white(" Run code intelligence scan now? [Y/n]: "),m=>{i.close();let n=m.trim().toLowerCase();c(n===""||n==="y"||n==="yes")})})}};function ae(a){return new R(a)}async function U(a,e={}){return await ae({projectRoot:a,...e}).checkCodeIntelligence()}var A={"test-generation":{description:"AI-powered test creation and generation",agentTypes:["test-generator","mutation-tester"]},"test-execution":{description:"Parallel execution, retry, flaky detection",agentTypes:["test-executor","flaky-detector"]},"coverage-analysis":{description:"Sublinear O(log n) gap detection",agentTypes:["coverage-analyzer","gap-detector"]},"quality-assessment":{description:"Quality gates and deployment decisions",agentTypes:["quality-gate","deployment-validator"]},"defect-intelligence":{description:"Prediction and root cause analysis",agentTypes:["defect-predictor","rca-analyst"]},"requirements-validation":{description:"BDD scenarios and testability scoring",agentTypes:["requirements-validator","bdd-generator"]},"code-intelligence":{description:"Knowledge graph and semantic search",agentTypes:["code-indexer","semantic-searcher"]},"security-compliance":{description:"SAST/DAST and compliance scanning",agentTypes:["security-scanner","compliance-auditor"]},"contract-testing":{description:"API contracts and GraphQL validation",agentTypes:["contract-validator","api-tester"]},"visual-accessibility":{description:"Visual regression and a11y testing",agentTypes:["visual-tester","a11y-scanner"]},"chaos-resilience":{description:"Chaos engineering and load testing",agentTypes:["chaos-engineer","load-tester"]},"learning-optimization":{description:"Cross-domain learning and optimization",agentTypes:["learning-optimizer","pattern-recognizer"]}},Y={hierarchical:{description:"Queen-led hierarchy with direct worker control",recommended:"Large teams, clear task delegation"},mesh:{description:"Fully connected peer network for collaboration",recommended:"Small teams, equal peer collaboration"},ring:{description:"Sequential message passing in a ring",recommended:"Pipeline workflows, sequential processing"},adaptive:{description:"Dynamic topology based on workload",recommended:"Variable workloads, auto-scaling needs"},"hierarchical-mesh":{description:"Hybrid combining hierarchy with peer connections",recommended:"Most projects (best of both worlds)"}},J={sqlite:{description:"SQLite-based persistent storage",features:["Cross-platform","No setup required","Good for development"]},agentdb:{description:"AgentDB with HNSW vector indexing",features:["150x-12,500x faster search","Vector embeddings","Semantic queries"]},hybrid:{description:"Combined SQLite + AgentDB",features:["Best of both","Fallback support","Production recommended"]}},O=class extends H{constructor(e){let i=Object.keys(A);super({id:"domains",stepNumber:"3/6",title:"Domain Focus",description:'Select which DDD domains to enable (comma-separated numbers or "all")',instructions:"Each domain brings specialized agents and capabilities",options:[{key:"0",value:"all",label:"all",description:"Enable all 12 domains"},...i.map((c,m)=>({key:String(m+1),value:c,label:c,description:A[c].description,isDefaultSelected:e.includes(c)||e.includes("all")}))],defaultValue:e,validValues:["all",...i],allowEmpty:!1})}async execute(e){let i=await super.execute(e);return i.value.includes("all")?{value:["all"],continue:!0}:i}},M=class extends _{constructor(e={}){super(e)}getTitle(){return"Fleet Initialization Wizard"}getSubtitle(){return"Configure your AQE v3 multi-agent fleet"}getConfirmationPrompt(){return"Initialize fleet with these settings?"}isNonInteractive(){return this.options.nonInteractive??!1}getCommands(){let e=K.checkPatternsExist(this.cwd);return[new T({id:"topology",stepNumber:"1/6",title:"Topology Type",description:"Select the coordination topology for your agent fleet",options:Object.entries(Y).map(([i,c],m)=>({key:String(m+1),value:i,label:i,description:`${c.description}
12
- Best for: ${c.recommended}`,isRecommended:i==="hierarchical-mesh"})),defaultValue:this.options.defaultTopology||"hierarchical-mesh",validValues:["hierarchical","mesh","ring","adaptive","hierarchical-mesh"]}),new Q({id:"maxAgents",stepNumber:"2/6",title:"Max agents",description:"Set the maximum number of agents in your fleet (5-50). More agents = more parallelism, but higher resource usage.",presets:[{key:"1",value:5,label:"5 agents - Minimal (development/testing)"},{key:"2",value:10,label:"10 agents - Small team"},{key:"3",value:15,label:"15 agents - Standard (recommended)"},{key:"4",value:25,label:"25 agents - Large team"},{key:"5",value:50,label:"50 agents - Maximum capacity"}],defaultValue:this.options.defaultMaxAgents||15,min:5,max:50}),new O(this.options.defaultDomains||["all"]),new T({id:"memoryBackend",stepNumber:"4/6",title:"Memory Backend",description:"Select the memory storage backend for agent coordination",options:Object.entries(J).map(([i,c],m)=>({key:String(m+1),value:i,label:i,description:`${c.description}
13
- Features: ${c.features.join(", ")}`,isRecommended:i==="hybrid"})),defaultValue:this.options.defaultMemoryBackend||"hybrid",validValues:["sqlite","agentdb","hybrid"]}),new F({id:"lazyLoading",stepNumber:"5/6",title:"Enable lazy loading",description:"Enable lazy loading for agents and domains",additionalInfo:"Reduces startup time by loading components on-demand",defaultValue:this.options.defaultLazyLoading??!0}),new F({id:"loadPatterns",stepNumber:"6/6",title:"Load pre-trained patterns",description:"Load pre-trained intelligence patterns from repository",additionalInfo:e?"Pre-trained patterns detected in project":"No pre-trained patterns found (will start fresh)",defaultValue:this.options.defaultLoadPatterns??e})]}buildResult(e){return{topology:e.topology,maxAgents:e.maxAgents,domains:e.domains,memoryBackend:e.memoryBackend,lazyLoading:e.lazyLoading,loadPatterns:e.loadPatterns,cancelled:!1}}printSummary(e){k.printSummaryHeader(),k.printSummaryField("Topology",e.topology),k.printSummaryField("Max Agents",String(e.maxAgents));let i=e.domains.includes("all")?"all (12 domains)":e.domains.join(", ");k.printSummaryField("Domains",i),k.printSummaryField("Memory Backend",e.memoryBackend),k.printSummaryField("Lazy Loading",x.enabledDisabled(e.lazyLoading)),k.printSummaryField("Load Patterns",x.yesNo(e.loadPatterns));let c=Y[e.topology],m=J[e.memoryBackend],n={"Topology style":c.description,"Memory features":m.features.slice(0,2).join(", ")};if(!e.domains.includes("all")){let l=new Set;for(let o of e.domains)if(o!=="all"){let s=A[o];s&&s.agentTypes.forEach(d=>l.add(d))}let g=Array.from(l);n["Agent types"]=g.slice(0,4).join(", ")+(g.length>4?"...":"")}k.printDerivedSettings(n)}getDefaults(){return{topology:this.options.defaultTopology||"hierarchical-mesh",maxAgents:this.options.defaultMaxAgents||15,domains:this.options.defaultDomains||["all"],memoryBackend:this.options.defaultMemoryBackend||"hybrid",lazyLoading:this.options.defaultLazyLoading??!0,loadPatterns:this.options.defaultLoadPatterns??!1,cancelled:!1}}getCancelled(){return{topology:"hierarchical-mesh",maxAgents:15,domains:["all"],memoryBackend:"hybrid",lazyLoading:!0,loadPatterns:!1,cancelled:!0}}};async function X(a={}){return new M(a).run()}function Oe(a,e,i,c){let m=new ie("fleet").description("Fleet operations with multi-agent progress tracking");return m.command("init").description("Initialize fleet with interactive wizard").option("--wizard","Run interactive fleet initialization wizard").option("-t, --topology <type>","Fleet topology (hierarchical|mesh|ring|adaptive|hierarchical-mesh)","hierarchical-mesh").option("-m, --max-agents <count>","Maximum agent count (5-50)","15").option("-d, --domains <domains>",'Domains to enable (comma-separated or "all")',"all").option("--memory <backend>","Memory backend (sqlite|agentdb|hybrid)","hybrid").option("--lazy","Enable lazy loading",!0).option("--skip-patterns","Skip loading pre-trained patterns").option("--skip-code-scan","Skip code intelligence index check").option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async n=>{try{let l=n.topology,g=parseInt(n.maxAgents,10),o=n.domains,s=n.memory,d=n.lazy,f=!n.skipPatterns;if(console.log(t.blue(`
14
- Code Intelligence Check
15
- `)),!(await U(process.cwd(),{skipCodeScan:n.skipCodeScan,nonInteractive:!n.wizard})).shouldProceed){console.log(t.blue(`
16
- Please run the code intelligence scan first:`)),console.log(t.cyan(` aqe code-intelligence index
17
- `)),console.log(t.gray(` Then re-run fleet init when ready.
18
- `)),await e(0);return}if(n.wizard){console.log(t.blue(`
19
- Fleet Initialization Wizard
20
- `));let r=await X({defaultTopology:n.topology!=="hierarchical-mesh"?n.topology:void 0,defaultMaxAgents:n.maxAgents!=="15"?parseInt(n.maxAgents,10):void 0,defaultDomains:n.domains!=="all"?n.domains.split(","):void 0,defaultMemoryBackend:n.memory!=="hybrid"?n.memory:void 0});r.cancelled&&(console.log(t.yellow(`
21
- Fleet initialization cancelled.
22
- `)),await e(0)),l=r.topology,g=r.maxAgents,o=r.domains.join(","),s=r.memoryBackend,d=r.lazyLoading,f=r.loadPatterns,console.log(t.green(`
23
- Starting fleet initialization...
24
- `))}let w=o==="all"?[...I]:o.split(",").filter(r=>I.includes(r));if(console.log(t.blue(`
25
- Fleet Configuration
26
- `)),console.log(t.gray(` Topology: ${l}`)),console.log(t.gray(` Max Agents: ${g}`)),console.log(t.gray(` Domains: ${w.length}`)),console.log(t.gray(` Memory: ${s}`)),console.log(t.gray(` Lazy Loading: ${d?"enabled":"disabled"}`)),console.log(t.gray(` Pre-trained Patterns: ${f?"load":"skip"}
27
- `)),!a.initialized){a.kernel=new j({maxConcurrentAgents:g,memoryBackend:s,hnswEnabled:!0,lazyLoading:d,enabledDomains:w,enableExperienceBridge:!1}),await a.kernel.initialize(),console.log(t.green(" * Kernel initialized")),a.router=new W(a.kernel.eventBus),await a.router.initialize(),console.log(t.green(" * Cross-domain router initialized")),a.workflowOrchestrator=new q(a.kernel.eventBus,a.kernel.memory,a.kernel.coordinator),await a.workflowOrchestrator.initialize(),c(a.kernel,a.workflowOrchestrator),console.log(t.green(" * Workflow orchestrator initialized")),a.persistentScheduler=N(),console.log(t.green(" * Persistent scheduler initialized"));let r=u=>a.kernel.getDomainAPI(u),b=new E(a.kernel.eventBus,a.kernel.memory,r);a.queen=L(a.kernel,a.router,b,void 0),await a.queen.initialize(),console.log(t.green(" * Queen coordinator initialized")),a.initialized=!0}(n.format||"text")==="json"?C(S({status:"initialized",topology:l,maxAgents:g,domains:w,memoryBackend:s,lazyLoading:d,loadPatterns:f}),n.output):(console.log(t.green(`
28
- Fleet initialized successfully!
29
- `)),console.log(t.white("Next steps:")),console.log(t.gray(" 1. Spawn agents: aqe fleet spawn --domains test-generation")),console.log(t.gray(" 2. Run operation: aqe fleet run test --target ./src")),console.log(t.gray(` 3. Check status: aqe fleet status
30
- `))),await e(0)}catch(l){console.error(t.red(`
31
- Fleet initialization failed:`),l),await e(1)}}),m.command("spawn").description("Spawn multiple agents with progress tracking").option("-d, --domains <domains>","Comma-separated domains","test-generation,coverage-analysis").option("-t, --type <type>","Agent type for all","worker").option("-c, --count <count>","Number of agents per domain","1").action(async n=>{if(await i())try{let l=n.domains.split(","),g=parseInt(n.count,10);console.log(t.blue(`
32
- Fleet Spawn Operation
33
- `));let o=new v({title:"Agent Spawn Progress",showEta:!0}),s=l.length*g;o.start(s);let d=[],f=0;for(let p of l)for(let r=0;r<g;r++){let b=`${p}-${n.type}-${r+1}`,u=`agent-${f++}`;o.addAgent({id:u,name:b,status:"pending",progress:0}),o.updateAgent(u,10,{status:"running"});try{o.updateAgent(u,30,{message:"Initializing..."});let D=await a.queen.requestAgentSpawn(p,n.type,["general"]);o.updateAgent(u,80,{message:"Configuring..."}),D.success?(o.completeAgent(u,!0),d.push({id:D.value,domain:p,success:!0})):(o.completeAgent(u,!1),d.push({id:u,domain:p,success:!1}))}catch{o.completeAgent(u,!1),d.push({id:u,domain:p,success:!1})}}o.stop();let y=d.filter(p=>p.success).length,w=d.filter(p=>!p.success).length;console.log(t.blue(`
34
- Fleet Summary:`)),console.log(t.gray(` Domains: ${l.join(", ")}`)),console.log(t.green(` Successful: ${y}`)),w>0&&console.log(t.red(` Failed: ${w}`)),console.log(""),await e(w>0?1:0)}catch(l){console.error(t.red(`
35
- Fleet spawn failed:`),l),await e(1)}}),m.command("run").description("Run a coordinated fleet operation").argument("<operation>","Operation type (test|analyze|scan)").option("-t, --target <path>","Target path",".").option("--parallel <count>","Number of parallel agents","4").action(async(n,l)=>{if(await i())try{let g=parseInt(l.parallel,10);console.log(t.blue(`
36
- Fleet Operation: ${n}
37
- `));let o=new v({title:`${n.charAt(0).toUpperCase()+n.slice(1)} Progress`,showEta:!0});o.start(g);let d={test:"test-generation",analyze:"coverage-analysis",scan:"security-compliance"}[n]||"test-generation",f=Array.from({length:g},(r,b)=>({id:`${n}-agent-${b+1}`,name:`${n}-worker-${b+1}`,domain:d}));for(let r of f)o.addAgent({id:r.id,name:r.name,status:"pending",progress:0});let y=await Promise.all(f.map(async(r,b)=>{await new Promise(u=>setTimeout(u,b*200)),o.updateAgent(r.id,0,{status:"running"});try{for(let D=10;D<=90;D+=20)await new Promise(Z=>setTimeout(Z,$(300,500))),o.updateAgent(r.id,D,{eta:Math.round((100-D)*50)});let u=await a.queen.submitTask({type:n==="test"?"generate-tests":n==="analyze"?"analyze-coverage":"scan-security",priority:"p1",targetDomains:[d],payload:{target:l.target,workerId:r.id},timeout:6e4});return o.completeAgent(r.id,u.success),{id:r.id,success:u.success}}catch{return o.completeAgent(r.id,!1),{id:r.id,success:!1}}}));o.stop();let w=y.filter(r=>r.success).length,p=y.filter(r=>!r.success).length;console.log(t.blue(`
38
- Operation Summary:`)),console.log(t.gray(` Operation: ${n}`)),console.log(t.gray(` Target: ${l.target}`)),console.log(t.green(` Successful: ${w}`)),p>0&&console.log(t.red(` Failed: ${p}`)),console.log(""),await e(p>0?1:0)}catch(g){console.error(t.red(`
39
- Fleet operation failed:`),g),await e(1)}}),m.command("status").description("Show fleet status with agent progress").option("-w, --watch","Watch mode with live updates").option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async n=>{if(await i())try{let l=async()=>{let o=a.queen.getHealth(),s=a.queen.getMetrics();console.log(t.blue(`
40
- Fleet Status
41
- `));let d="\u2588".repeat(Math.min(Math.round(s.agentUtilization*20),20))+"\u2591".repeat(Math.max(20-Math.round(s.agentUtilization*20),0));console.log(t.white(`Fleet Utilization ${t.cyan(d)} ${(s.agentUtilization*100).toFixed(0)}%`)),console.log(""),console.log(t.white("Agent Progress:"));for(let[f,y]of o.domainHealth){let w=y.agents.active,p=y.agents.total,r=p>0?Math.round(w/p*100):0,b=y.status==="healthy"?t.green("\u2713"):y.status==="degraded"?t.yellow("\u25B6"):t.red("\u2717"),u="\u2588".repeat(Math.round(r/5))+"\u2591".repeat(20-Math.round(r/5));console.log(` ${f.padEnd(28)} ${t.cyan(u)} ${r.toString().padStart(3)}% ${b}`)}console.log(""),console.log(t.gray(` Active: ${o.activeAgents}/${o.totalAgents} agents`)),console.log(t.gray(` Tasks: ${o.runningTasks} running, ${o.pendingTasks} pending`)),console.log("")};if((n.format||"text")==="json"){let o=a.queen.getHealth(),s=a.queen.getMetrics(),d={};for(let[f,y]of o.domainHealth)d[f]={status:y.status,agents:y.agents,errors:y.errors.length};C(S({status:o.status,utilization:s.agentUtilization,activeAgents:o.activeAgents,totalAgents:o.totalAgents,runningTasks:o.runningTasks,pendingTasks:o.pendingTasks,domains:d}),n.output),await e(0);return}if(n.watch){V("Watching fleet status (Ctrl+C to exit)").spinner.stop(),await l();let s=setInterval(async()=>{console.clear(),await l()},2e3);s.unref?.(),process.once("SIGINT",async()=>{clearInterval(s),console.log(t.yellow(`
42
- Stopped watching.`)),await e(0)})}else await l(),await e(0)}catch(l){console.error(t.red(`
43
- Failed to get fleet status:`),l),await e(1)}}),m}export{Oe as createFleetCommand};