agentic-qe 3.10.3 → 3.10.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/.claude/skills/qcsd-development-swarm/SKILL.md +27 -6
  2. package/.claude/skills/skills-manifest.json +1 -1
  3. package/CHANGELOG.md +104 -0
  4. package/assets/skills/skills-manifest.json +1 -1
  5. package/dist/arena/arena.d.ts +68 -0
  6. package/dist/arena/arena.js +169 -0
  7. package/dist/arena/mutator.d.ts +23 -0
  8. package/dist/arena/mutator.js +112 -0
  9. package/dist/arena/rng.d.ts +15 -0
  10. package/dist/arena/rng.js +34 -0
  11. package/dist/arena/runner.d.ts +44 -0
  12. package/dist/arena/runner.js +79 -0
  13. package/dist/cli/bundle.js +7 -7
  14. package/dist/cli/chunks/adapter-XZVL3DHO.js +2 -0
  15. package/dist/cli/chunks/{agent-booster-wasm-NGC6LSQP.js → agent-booster-wasm-3BC5LIEB.js} +2 -2
  16. package/dist/cli/chunks/{agent-handler-P2IJE4GK.js → agent-handler-QLXWVZZF.js} +2 -2
  17. package/dist/cli/chunks/{agent-memory-branch-JXRJ5GKQ.js → agent-memory-branch-3U5PDYW7.js} +2 -2
  18. package/dist/cli/chunks/aqe-learning-engine-YIL25K6W.js +2 -0
  19. package/dist/cli/chunks/arena-BMJQK4RD.js +18 -0
  20. package/dist/cli/chunks/arena-XENAGV4I.js +4 -0
  21. package/dist/cli/chunks/audit-WPIRUJNZ.js +3 -0
  22. package/dist/cli/chunks/base-YCYV23Q3.js +2 -0
  23. package/dist/cli/chunks/{hnswlib-node-64EGGWIC.js → better-sqlite3-6AGIBSVE.js} +2 -2
  24. package/dist/cli/chunks/{brain-handler-SACNDFSW.js → brain-handler-PHSWG5PR.js} +3 -3
  25. package/dist/cli/chunks/{branch-enumerator-LFOTVUDA.js → branch-enumerator-LNSYT34I.js} +2 -2
  26. package/dist/cli/chunks/{browser-FK7PRF3W.js → browser-M5BVQMBI.js} +2 -2
  27. package/dist/cli/chunks/browser-workflow-ALCOCRA2.js +2 -0
  28. package/dist/cli/chunks/{chunk-ZXQNE4QV.js → chunk-24A7KD3D.js} +1 -1
  29. package/dist/cli/chunks/{chunk-6Q2PPOOF.js → chunk-253TDTPH.js} +1 -1
  30. package/dist/cli/chunks/{chunk-MC7K44M4.js → chunk-2RLRPKCG.js} +2 -2
  31. package/dist/cli/chunks/{chunk-VRXY4T22.js → chunk-2UQWVF4P.js} +2 -2
  32. package/dist/cli/chunks/{chunk-UDV4YB42.js → chunk-2Z7HIT5I.js} +1 -1
  33. package/dist/cli/chunks/{chunk-CTDO2UB2.js → chunk-3BGGNHHZ.js} +1 -1
  34. package/dist/cli/chunks/{chunk-HWM2XJ3P.js → chunk-3JWV4GE6.js} +2 -2
  35. package/dist/cli/chunks/{chunk-BT3QLWII.js → chunk-3KGUP2SD.js} +2 -2
  36. package/dist/cli/chunks/{chunk-T63EK6GH.js → chunk-3WOQY6UL.js} +2 -2
  37. package/dist/cli/chunks/{chunk-QM65UGPV.js → chunk-4FTO3TPH.js} +2 -2
  38. package/dist/cli/chunks/{chunk-WWD5IWTV.js → chunk-4K7T6AKM.js} +1 -1
  39. package/dist/cli/chunks/{chunk-XTP2GHI7.js → chunk-4Z7XH4JE.js} +2 -2
  40. package/dist/cli/chunks/{chunk-FND6V2RV.js → chunk-54IPDQIZ.js} +8 -8
  41. package/dist/cli/chunks/{chunk-KTRB3L53.js → chunk-56RA6YPN.js} +2 -2
  42. package/dist/cli/chunks/{chunk-7YYTTWGY.js → chunk-5D7GLMT3.js} +1 -1
  43. package/dist/cli/chunks/{chunk-M5CDW2ZH.js → chunk-66LOFIBP.js} +2 -2
  44. package/dist/cli/chunks/{chunk-3X2ZQ55B.js → chunk-6SAU7GXO.js} +3 -3
  45. package/dist/cli/chunks/{chunk-DF3MJ2YL.js → chunk-75MP7JMV.js} +1 -1
  46. package/dist/cli/chunks/{chunk-RTDHWOAG.js → chunk-7DU35D4M.js} +1 -1
  47. package/dist/cli/chunks/{chunk-Q7EBD24B.js → chunk-7JZCEQFR.js} +1 -1
  48. package/dist/cli/chunks/{chunk-JXIPRMAY.js → chunk-A3BDPU5F.js} +4 -4
  49. package/dist/cli/chunks/{chunk-I42R57ON.js → chunk-A7HGS7FW.js} +2 -2
  50. package/dist/cli/chunks/{chunk-NNZMEYLT.js → chunk-AMBIOEMO.js} +1 -1
  51. package/dist/cli/chunks/{chunk-BO2OV2RH.js → chunk-AVQD7KEN.js} +2 -2
  52. package/dist/cli/chunks/{chunk-6GCOIIHY.js → chunk-AZCKTAUI.js} +2 -2
  53. package/dist/cli/chunks/{chunk-GL3HZN3O.js → chunk-B4F5EPNR.js} +1 -1
  54. package/dist/cli/chunks/{chunk-HAO3SPOE.js → chunk-BB7MEGXD.js} +2 -2
  55. package/dist/cli/chunks/{chunk-VDTFRMES.js → chunk-BSRCL6RU.js} +2 -2
  56. package/dist/cli/chunks/{chunk-RZCAA2PZ.js → chunk-CS3UB2OL.js} +1 -1
  57. package/dist/cli/chunks/{chunk-4OUAHZX2.js → chunk-CTG3GJIM.js} +2 -2
  58. package/dist/cli/chunks/{chunk-BWP3UVPE.js → chunk-CUAM34RQ.js} +3 -3
  59. package/dist/cli/chunks/chunk-CUY2EUSQ.js +2 -0
  60. package/dist/cli/chunks/{chunk-X2B7SANM.js → chunk-D3Q4443B.js} +1 -1
  61. package/dist/cli/chunks/{chunk-5IBJURYB.js → chunk-D4WDJ4ZF.js} +2 -2
  62. package/dist/cli/chunks/chunk-D7NKRCIL.js +2 -0
  63. package/dist/cli/chunks/{chunk-JP63XACW.js → chunk-DBR4TQPK.js} +2 -2
  64. package/dist/cli/chunks/{chunk-FLTPHVZ3.js → chunk-DIJ74M7V.js} +1 -1
  65. package/dist/cli/chunks/{chunk-PFCAMX6H.js → chunk-DJQYZ4RZ.js} +1 -1
  66. package/dist/cli/chunks/{chunk-5LON3MLI.js → chunk-DN65ILSI.js} +2 -2
  67. package/dist/cli/chunks/{chunk-6ZK24V2Y.js → chunk-DWLGFYXV.js} +2 -2
  68. package/dist/cli/chunks/{chunk-5EWWA4QP.js → chunk-EIL7FQC4.js} +6 -6
  69. package/dist/cli/chunks/{chunk-IRR7YA3Q.js → chunk-FE3FGMNB.js} +2 -2
  70. package/dist/cli/chunks/{chunk-ADV4DH3W.js → chunk-FLYFNNSN.js} +3 -3
  71. package/dist/cli/chunks/{chunk-SWOG3PBD.js → chunk-FNJZBIR3.js} +2 -2
  72. package/dist/cli/chunks/chunk-FPWA73N6.js +2 -0
  73. package/dist/cli/chunks/{chunk-NEYYLAYS.js → chunk-FW3C4LWU.js} +2 -2
  74. package/dist/cli/chunks/{chunk-5G5AAEFF.js → chunk-G4GX6YKX.js} +2 -2
  75. package/dist/cli/chunks/{chunk-NNVXHC74.js → chunk-G5UIGH4C.js} +3 -3
  76. package/dist/cli/chunks/{chunk-QEODION5.js → chunk-G6FP3S3G.js} +2 -2
  77. package/dist/cli/chunks/{chunk-ZG4P3DTL.js → chunk-GDUGW6FZ.js} +2 -2
  78. package/dist/cli/chunks/{chunk-GJUGSH7T.js → chunk-GKG6IQP6.js} +3 -3
  79. package/dist/cli/chunks/chunk-GMU7P5O3.js +2 -0
  80. package/dist/cli/chunks/{chunk-NRCL3WCP.js → chunk-GTVXVYKE.js} +2 -2
  81. package/dist/cli/chunks/{chunk-2ULVCLOW.js → chunk-HHEHGERJ.js} +2 -2
  82. package/dist/cli/chunks/{chunk-6FL3GN4T.js → chunk-HKJ3LG3N.js} +2 -2
  83. package/dist/cli/chunks/{chunk-E2BJT6A7.js → chunk-HNYSBE5J.js} +2 -2
  84. package/dist/cli/chunks/{chunk-JTZ3Q2QS.js → chunk-HPKYIK7R.js} +2 -2
  85. package/dist/cli/chunks/{chunk-GHNNJHH3.js → chunk-HRORJ352.js} +2 -2
  86. package/dist/cli/chunks/{chunk-5ER3COX3.js → chunk-IIFCTJOF.js} +2 -2
  87. package/dist/cli/chunks/{chunk-UIJFU4KD.js → chunk-IOE6LDPF.js} +2 -2
  88. package/dist/cli/chunks/{chunk-JD2PG4KS.js → chunk-IRS4HKAR.js} +1 -1
  89. package/dist/cli/chunks/{chunk-VIWIO27R.js → chunk-IT7CEHAJ.js} +2 -2
  90. package/dist/cli/chunks/{chunk-JE3C7JYN.js → chunk-IUKERFLT.js} +1 -1
  91. package/dist/cli/chunks/{chunk-YDKYLNKZ.js → chunk-IVKSZNMI.js} +1 -1
  92. package/dist/cli/chunks/{chunk-3RZL4QTT.js → chunk-IWRORKD7.js} +2 -2
  93. package/dist/cli/chunks/{chunk-NZHOKLII.js → chunk-J533CJUN.js} +3 -3
  94. package/dist/cli/chunks/{chunk-5SGEOO2F.js → chunk-JPOEI7CJ.js} +2 -2
  95. package/dist/cli/chunks/{chunk-MBSJ5G4I.js → chunk-JY7T2AQQ.js} +4 -4
  96. package/dist/cli/chunks/{chunk-4QFAUSWQ.js → chunk-K5KKZWED.js} +2 -2
  97. package/dist/cli/chunks/{chunk-L74CHKFR.js → chunk-KIMJPTHD.js} +2 -2
  98. package/dist/cli/chunks/{chunk-N7IBYDW5.js → chunk-MEN3UW7W.js} +1 -1
  99. package/dist/cli/chunks/{chunk-UHDBM7QS.js → chunk-MFQIJ3HV.js} +2 -2
  100. package/dist/cli/chunks/{chunk-SL6YZAT4.js → chunk-MGCW5FWH.js} +2 -2
  101. package/dist/cli/chunks/{chunk-U6UK3UMX.js → chunk-MIMJVKJJ.js} +3 -3
  102. package/dist/cli/chunks/{chunk-7ZSPCGTI.js → chunk-MJRYHHOG.js} +2 -2
  103. package/dist/cli/chunks/{chunk-FU77CDEM.js → chunk-MRXKIXVV.js} +2 -2
  104. package/dist/cli/chunks/{chunk-DY5KEOHX.js → chunk-MWPFUBXS.js} +2 -2
  105. package/dist/cli/chunks/{chunk-C6BBRM2J.js → chunk-N2TJXGHG.js} +1 -1
  106. package/dist/cli/chunks/{chunk-MQOFFRTA.js → chunk-NGSA53GC.js} +2 -2
  107. package/dist/cli/chunks/{chunk-YXH2CVAF.js → chunk-NKW7VOZV.js} +1 -1
  108. package/dist/cli/chunks/{chunk-YIYV2JB6.js → chunk-O5OOUMBB.js} +2 -2
  109. package/dist/cli/chunks/{chunk-HM523MTQ.js → chunk-OATHXZYW.js} +1 -1
  110. package/dist/cli/chunks/{chunk-WPVCSFDA.js → chunk-OJNG6ZXG.js} +2 -2
  111. package/dist/cli/chunks/{chunk-7SEHQTYD.js → chunk-PGNQR2VM.js} +1 -1
  112. package/dist/cli/chunks/{chunk-UZL366ZI.js → chunk-PPM5D7LH.js} +1 -1
  113. package/dist/cli/chunks/{chunk-ERYMAYJW.js → chunk-PYBVFG6T.js} +2 -2
  114. package/dist/cli/chunks/{chunk-FJGSEPFL.js → chunk-Q6BKJZTG.js} +2 -2
  115. package/dist/cli/chunks/chunk-QAW6RVAR.js +699 -0
  116. package/dist/cli/chunks/chunk-QTDZS4U6.js +2 -0
  117. package/dist/cli/chunks/{chunk-USFZ4IJD.js → chunk-R573V37S.js} +15 -15
  118. package/dist/cli/chunks/{chunk-Z2K5IZM6.js → chunk-RCAIOTIF.js} +2 -2
  119. package/dist/cli/chunks/{chunk-7RMZAVGO.js → chunk-RFNEEDPQ.js} +2 -2
  120. package/dist/cli/chunks/{chunk-IL2KOW5W.js → chunk-RFVZMNYX.js} +2 -2
  121. package/dist/cli/chunks/{chunk-B5MMDMH6.js → chunk-RLU7764Y.js} +2 -2
  122. package/dist/cli/chunks/chunk-RLZDXQNM.js +2 -0
  123. package/dist/cli/chunks/{chunk-QWG76RHA.js → chunk-RONMVGCT.js} +2 -2
  124. package/dist/cli/chunks/{chunk-X3RJ6SFC.js → chunk-RR55MLD4.js} +1 -1
  125. package/dist/cli/chunks/{chunk-PL5SLO2W.js → chunk-RUQV3BTV.js} +1 -1
  126. package/dist/cli/chunks/{chunk-NXPFGPHV.js → chunk-RZ7D5SHS.js} +1 -1
  127. package/dist/cli/chunks/{chunk-3LRK7PYN.js → chunk-S73KENCH.js} +2 -2
  128. package/dist/cli/chunks/{chunk-3HBWDG62.js → chunk-S7FGTHFE.js} +2 -2
  129. package/dist/cli/chunks/{chunk-CAMEFWRK.js → chunk-S7HQOGVD.js} +1 -1
  130. package/dist/cli/chunks/{chunk-PZHZPX3O.js → chunk-SK6YRNXI.js} +2 -2
  131. package/dist/cli/chunks/{chunk-JTF6D2RJ.js → chunk-SXQIH2QA.js} +2 -2
  132. package/dist/cli/chunks/{chunk-6B4S7PKP.js → chunk-TISBFSDJ.js} +1 -1
  133. package/dist/cli/chunks/{chunk-72LE6PHL.js → chunk-TMD6IC6D.js} +2 -2
  134. package/dist/cli/chunks/{chunk-YDDZJCKY.js → chunk-TMTLWSSA.js} +1 -1
  135. package/dist/cli/chunks/{chunk-HQJMCTWN.js → chunk-UOIT5JZ6.js} +2 -2
  136. package/dist/cli/chunks/{chunk-OPDTDKN3.js → chunk-UTORITJT.js} +2 -2
  137. package/dist/cli/chunks/{chunk-3JAOFKEU.js → chunk-VB7DZVCI.js} +1 -1
  138. package/dist/cli/chunks/{chunk-2L73WXA4.js → chunk-VC256KH2.js} +2 -2
  139. package/dist/cli/chunks/{chunk-SNTMAVPH.js → chunk-VESYE5YO.js} +3 -3
  140. package/dist/cli/chunks/{chunk-YYAPO3CU.js → chunk-VKWDMOR4.js} +2 -2
  141. package/dist/cli/chunks/{chunk-HRLXU4LH.js → chunk-VWN66V7U.js} +2 -2
  142. package/dist/cli/chunks/{chunk-CNEWYJKT.js → chunk-W5C7R2LS.js} +3 -3
  143. package/dist/cli/chunks/{chunk-JLL27IGU.js → chunk-W7KGHW4T.js} +2 -2
  144. package/dist/cli/chunks/{chunk-H56AROF2.js → chunk-WFZ4DRIC.js} +2 -2
  145. package/dist/cli/chunks/{chunk-4CYLSXA6.js → chunk-WFZUKXV5.js} +2 -2
  146. package/dist/cli/chunks/{chunk-AEJVOJPT.js → chunk-X4B3R3ZZ.js} +2 -2
  147. package/dist/cli/chunks/{chunk-KG5SM36Y.js → chunk-XI6ZZMX7.js} +1 -1
  148. package/dist/cli/chunks/{chunk-R5ONQAQL.js → chunk-YEO2Z3UX.js} +2 -2
  149. package/dist/cli/chunks/{chunk-D2FBUOAR.js → chunk-YZD4VIE5.js} +1 -1
  150. package/dist/cli/chunks/{chunk-U7NMPZE2.js → chunk-YZFNPTGN.js} +2 -2
  151. package/dist/cli/chunks/{chunk-OX4R55T3.js → chunk-ZCYKWEAM.js} +2 -2
  152. package/dist/cli/chunks/{chunk-OG7CWWFR.js → chunk-ZG3DSWUA.js} +1 -1
  153. package/dist/cli/chunks/{chunk-EETVN2OJ.js → chunk-ZS4BGJJV.js} +1 -1
  154. package/dist/cli/chunks/{chunk-LZ6TNTGO.js → chunk-ZT7JSFGT.js} +2 -2
  155. package/dist/cli/chunks/{chunk-HMFEPKAR.js → chunk-ZTC64OJE.js} +2 -2
  156. package/dist/cli/chunks/{chunk-RNF47IJ5.js → chunk-ZUBJBAUD.js} +15 -15
  157. package/dist/cli/chunks/{ci-AWZ3S5OT.js → ci-M2BSQBLL.js} +2 -2
  158. package/dist/cli/chunks/{ci-output-JLCYTIMT.js → ci-output-Z4TMK6GZ.js} +2 -2
  159. package/dist/cli/chunks/{circuit-breaker-BJDKBDIL.js → circuit-breaker-E3G4GGWB.js} +2 -2
  160. package/dist/cli/chunks/{claude-flow-setup-KKOP5ZMO.js → claude-flow-setup-MASRQU54.js} +2 -2
  161. package/dist/cli/chunks/client-RPB6RYVY.js +2 -0
  162. package/dist/cli/chunks/{cline-installer-7M525SEA.js → cline-installer-P3BWAKQA.js} +2 -2
  163. package/dist/cli/chunks/{code-27SUVJDO.js → code-7HY5HQAV.js} +2 -2
  164. package/dist/cli/chunks/{code-index-extractor-TTQQZLAK.js → code-index-extractor-MBVKLOEU.js} +2 -2
  165. package/dist/cli/chunks/{codex-installer-GHNGNPKP.js → codex-installer-WZ6QO2PH.js} +2 -2
  166. package/dist/cli/chunks/{completions-JPJD24DG.js → completions-TOJC2UFP.js} +2 -2
  167. package/dist/cli/chunks/{complexity-analyzer-Q74EJV33.js → complexity-analyzer-QYVDIAAW.js} +2 -2
  168. package/dist/cli/chunks/{continuedev-installer-ULTRDIML.js → continuedev-installer-J72CV7P4.js} +2 -2
  169. package/dist/cli/chunks/{copilot-installer-EK52X4CG.js → copilot-installer-ACDA3GEA.js} +2 -2
  170. package/dist/cli/chunks/core-handlers-QFJT5NX6.js +2 -0
  171. package/dist/cli/chunks/{cost-tracker-2GKBRYXL.js → cost-tracker-BAYQJELE.js} +2 -2
  172. package/dist/cli/chunks/{coverage-YCLC3W2A.js → coverage-QD3XJV6W.js} +3 -3
  173. package/dist/cli/chunks/cross-domain-router-5GJ7WZKX.js +2 -0
  174. package/dist/cli/chunks/{cursor-installer-B3ALFW5E.js → cursor-installer-SPGZ4TQM.js} +2 -2
  175. package/dist/cli/chunks/{daemon-ZKEBVLJA.js → daemon-3EVOL2UH.js} +3 -3
  176. package/dist/cli/chunks/daemon-N4JKD5SO.js +10 -0
  177. package/dist/cli/chunks/{dag-attention-scheduler-OQPJ6ULA.js → dag-attention-scheduler-3BVLL3L5.js} +2 -2
  178. package/dist/cli/chunks/{detect-YMYIQH3Q.js → detect-SWACKB45.js} +2 -2
  179. package/dist/cli/chunks/{dist-node-R4FAYQRY.js → dist-node-LU4E7PI6.js} +2 -2
  180. package/dist/cli/chunks/{domain-handler-IGWXLF2S.js → domain-handler-5AKKAC43.js} +2 -2
  181. package/dist/cli/chunks/{domain-transfer-A7YNO76C.js → domain-transfer-LB6H7RPX.js} +2 -2
  182. package/dist/cli/chunks/dream-C6VNLTON.js +2 -0
  183. package/dist/cli/chunks/{embed-and-insert-pattern-KODZAS7Y.js → embed-and-insert-pattern-7RBA5NDK.js} +2 -2
  184. package/dist/cli/chunks/{eval-ALQW7Q2S.js → eval-ZZFPRENX.js} +5 -5
  185. package/dist/cli/chunks/{experience-capture-middleware-3WK4RXWK.js → experience-capture-middleware-HRO3EGIW.js} +3 -3
  186. package/dist/cli/chunks/{fast-paths-PQWDFIJZ.js → fast-paths-IRRNQBTY.js} +2 -2
  187. package/dist/cli/chunks/{feature-flags-JRUAZCND.js → feature-flags-R5N5IWI2.js} +2 -2
  188. package/dist/cli/chunks/{feature-flags-6X33B3WX.js → feature-flags-W54ABAUA.js} +2 -2
  189. package/dist/cli/chunks/{file-discovery-SA3YU3IH.js → file-discovery-6CIDLVID.js} +2 -2
  190. package/dist/cli/chunks/{fleet-7TXCAOKQ.js → fleet-YTFN64WE.js} +3 -3
  191. package/dist/cli/chunks/{gnn-wrapper-ZKNYACEC.js → gnn-wrapper-RXMPLMV2.js} +2 -2
  192. package/dist/cli/chunks/{heartbeat-handler-KRZRZ23F.js → heartbeat-handler-HQQWEEQQ.js} +4 -4
  193. package/dist/cli/chunks/heartbeat-scheduler-4SBO27BG.js +2 -0
  194. package/dist/cli/chunks/hnsw-adapter-W7G6VNXW.js +2 -0
  195. package/dist/cli/chunks/hnsw-index-LENA5QML.js +2 -0
  196. package/dist/cli/chunks/{hnsw-legacy-bridge-LVHQ5SG7.js → hnsw-legacy-bridge-GPZIKYFD.js} +2 -2
  197. package/dist/cli/chunks/{better-sqlite3-HP4JZS6K.js → hnswlib-node-P6HSEFLW.js} +2 -2
  198. package/dist/cli/chunks/hooks-AYLAGFOK.js +285 -0
  199. package/dist/cli/chunks/hybrid-router-IXHIC45P.js +2 -0
  200. package/dist/cli/chunks/{hypergraph-engine-2EZBZMFK.js → hypergraph-engine-56FMXI3T.js} +2 -2
  201. package/dist/cli/chunks/{hypergraph-handler-GLPWYII2.js → hypergraph-handler-APEVT5IE.js} +3 -3
  202. package/dist/cli/chunks/impact-analyzer-DKGVMYU6.js +2 -0
  203. package/dist/cli/chunks/{init-handler-ZSDO5VMA.js → init-handler-5DWF4REQ.js} +6 -6
  204. package/dist/cli/chunks/init-wizard-BBY3LY3F.js +2 -0
  205. package/dist/cli/chunks/kernel-7CUW7G62.js +2 -0
  206. package/dist/cli/chunks/{kilocode-installer-ATYSDWIV.js → kilocode-installer-XKAUA5VA.js} +2 -2
  207. package/dist/cli/chunks/{kiro-installer-K66YT6PC.js → kiro-installer-NI2KIYJE.js} +2 -2
  208. package/dist/cli/chunks/knowledge-graph-Q5CP47IP.js +2 -0
  209. package/dist/cli/chunks/{learning-BVYCC4RI.js → learning-ZIUMUNXZ.js} +3 -3
  210. package/dist/cli/chunks/{llm-router-VBCXE6DN.js → llm-router-IL52EF2V.js} +4 -4
  211. package/dist/cli/chunks/llm-router-service-MTXCX7TO.js +2 -0
  212. package/dist/cli/chunks/{load-AREDQE2U.js → load-B5LFYD6O.js} +2 -2
  213. package/dist/cli/chunks/load-test-YBWXASBO.js +2 -0
  214. package/dist/cli/chunks/{mcp-NG6H6UC5.js → mcp-K6GZLWBC.js} +2 -2
  215. package/dist/cli/chunks/{memory-Y65EHG6N.js → memory-NCQRVSN6.js} +5 -5
  216. package/dist/cli/chunks/memory-backend-52LANEA3.js +2 -0
  217. package/dist/cli/chunks/memory-handlers-KFW3HYAP.js +2 -0
  218. package/dist/cli/chunks/{multi-model-executor-VRPRFUZT.js → multi-model-executor-R4LBSJWK.js} +2 -2
  219. package/dist/cli/chunks/{opencode-installer-CKQXPM5R.js → opencode-installer-I6CBR3PV.js} +2 -2
  220. package/dist/cli/chunks/{orchestrator-I7JBKD6G.js → orchestrator-5FXUCES6.js} +10 -10
  221. package/dist/cli/chunks/{pipeline-MV2RWCBI.js → pipeline-GDKCTXJH.js} +2 -2
  222. package/dist/cli/chunks/{platform-VU5P3SOG.js → platform-ZFY3F4T3.js} +2 -2
  223. package/dist/cli/chunks/{plugin-6TERLKCB.js → plugin-HQMEN3OS.js} +2 -2
  224. package/dist/cli/chunks/{prime-radiant-advanced-wasm-WIUIN2DL.js → prime-radiant-advanced-wasm-LSJGF4CV.js} +2 -2
  225. package/dist/cli/chunks/protocol-executor-TRYUS77M.js +2 -0
  226. package/dist/cli/chunks/{protocol-handler-HKWBGARO.js → protocol-handler-BMDNIGPP.js} +2 -2
  227. package/dist/cli/chunks/{prove-7CQPHBRJ.js → prove-ABVGAG4Z.js} +2 -2
  228. package/dist/cli/chunks/provider-manager-6XQQN7FX.js +2 -0
  229. package/dist/cli/chunks/qe-reasoning-bank-3IUPE4DJ.js +2 -0
  230. package/dist/cli/chunks/{quality-VLUVXKVG.js → quality-ENJXPNP5.js} +2 -2
  231. package/dist/cli/chunks/queen-coordinator-VWPH4XPX.js +2 -0
  232. package/dist/cli/chunks/{real-embeddings-JPZ64KK2.js → real-embeddings-W3GNAEJO.js} +2 -2
  233. package/dist/cli/chunks/{roocode-installer-NONVB3UE.js → roocode-installer-4FJNQ7PU.js} +2 -2
  234. package/dist/cli/chunks/router-OIB6ODHA.js +2 -0
  235. package/dist/cli/chunks/routing-feedback-EKYPCZYG.js +2 -0
  236. package/dist/cli/chunks/{routing-handler-YYXDT4J2.js → routing-handler-GFS5FA4F.js} +2 -2
  237. package/dist/cli/chunks/{ruvector-commands-5PFMNDLR.js → ruvector-commands-GBMYNJKN.js} +2 -2
  238. package/dist/cli/chunks/{rvf-dual-writer-TF6H7AXH.js → rvf-dual-writer-STUAQT6U.js} +2 -2
  239. package/dist/cli/chunks/{rvf-migration-adapter-VNGIUZCO.js → rvf-migration-adapter-LO6DBNJH.js} +2 -2
  240. package/dist/cli/chunks/{rvf-migration-coordinator-VA52YAIY.js → rvf-migration-coordinator-I5AD4VJ2.js} +2 -2
  241. package/dist/cli/chunks/rvf-native-adapter-7RXP2Q4Q.js +2 -0
  242. package/dist/cli/chunks/safe-db-MNKFEPBX.js +2 -0
  243. package/dist/cli/chunks/schedule-AJXABVXX.js +2 -0
  244. package/dist/cli/chunks/scheduler-LDWYHIAW.js +2 -0
  245. package/dist/cli/chunks/{security-62HEETBF.js → security-X3WCA5K5.js} +3 -3
  246. package/dist/cli/chunks/shared-rvf-adapter-Z4FSPWNP.js +2 -0
  247. package/dist/cli/chunks/{shared-rvf-dual-writer-JTZK7LRD.js → shared-rvf-dual-writer-QOPOIRIC.js} +2 -2
  248. package/dist/cli/chunks/sqlite-persistence-A6GKDMOJ.js +2 -0
  249. package/dist/cli/chunks/{status-handler-LSUPUKRF.js → status-handler-B2B5QBVK.js} +2 -2
  250. package/dist/cli/chunks/{structural-health-Z75A666N.js → structural-health-KT47LBVH.js} +2 -2
  251. package/dist/cli/chunks/sync-CKID22IW.js +2 -0
  252. package/dist/cli/chunks/{sync-M3O4T3A3.js → sync-VWD6OOUR.js} +2 -2
  253. package/dist/cli/chunks/{task-handler-AQBSZAQC.js → task-handler-X5JT5YBF.js} +2 -2
  254. package/dist/cli/chunks/{task-handlers-BOZP247V.js → task-handlers-IW4GQDW4.js} +3 -3
  255. package/dist/cli/chunks/{test-FTEGPNN2.js → test-MBZSUASD.js} +4 -4
  256. package/dist/cli/chunks/{test-scheduling-IGR4U2VQ.js → test-scheduling-E5KHKRZS.js} +3 -3
  257. package/dist/cli/chunks/token-bootstrap-TIDPJ5IG.js +2 -0
  258. package/dist/cli/chunks/{token-usage-VCHV47EO.js → token-usage-ECJSPOQB.js} +2 -2
  259. package/dist/cli/chunks/{transformers-M27QSNFH.js → transformers-UZJAQ7OZ.js} +2 -2
  260. package/dist/cli/chunks/{tree-sitter-wasm-parser-IIGEJYFU.js → tree-sitter-wasm-parser-H6BU2E5R.js} +2 -2
  261. package/dist/cli/chunks/{types-RQFPUUKA.js → types-PM7NT3MH.js} +2 -2
  262. package/dist/cli/chunks/unified-memory-27QJHABO.js +2 -0
  263. package/dist/cli/chunks/unified-memory-hnsw-76VUXR4H.js +2 -0
  264. package/dist/cli/chunks/unified-persistence-QRCGDEXH.js +2 -0
  265. package/dist/cli/chunks/{upgrade-VJMYX3AL.js → upgrade-FS2XYC2P.js} +2 -2
  266. package/dist/cli/chunks/{validate-ML7HUAU5.js → validate-4Y2BNN3A.js} +3 -3
  267. package/dist/cli/chunks/{validate-swarm-RCR6EYRC.js → validate-swarm-Z7QXZSUE.js} +4 -4
  268. package/dist/cli/chunks/{vibium-ZOOS3W5L.js → vibium-VZ6L3O2G.js} +2 -2
  269. package/dist/cli/chunks/visual-security-KB27O7BE.js +2 -0
  270. package/dist/cli/chunks/{web-tree-sitter-2YPGYLWK.js → web-tree-sitter-H7P37W5U.js} +2 -2
  271. package/dist/cli/chunks/{windsurf-installer-GOJWUWC5.js → windsurf-installer-IB2VHSZS.js} +2 -2
  272. package/dist/cli/chunks/{witness-chain-3MGSS3Q4.js → witness-chain-C4DISYJN.js} +2 -2
  273. package/dist/cli/chunks/witness-chain-EYPXHRDV.js +2 -0
  274. package/dist/cli/chunks/{workflow-B5Q77BI4.js → workflow-IGM7KVIO.js} +4 -4
  275. package/dist/cli/chunks/workflow-orchestrator-6AQZ3USU.js +2 -0
  276. package/dist/cli/chunks/wrappers-PQXC263L.js +2 -0
  277. package/dist/cli/commands/arena.d.ts +10 -0
  278. package/dist/cli/commands/arena.js +129 -0
  279. package/dist/cli/commands/hooks-handlers/command-hooks.js +38 -2
  280. package/dist/cli/commands/hooks-handlers/hooks-dream-learning.d.ts +4 -0
  281. package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +66 -3
  282. package/dist/cli/commands/hooks-handlers/nesting-provenance.d.ts +27 -0
  283. package/dist/cli/commands/hooks-handlers/nesting-provenance.js +46 -0
  284. package/dist/cli/commands/hooks-handlers/task-hooks.js +72 -1
  285. package/dist/cli/commands/hooks-handlers/tool-loop-guardrail.d.ts +71 -0
  286. package/dist/cli/commands/hooks-handlers/tool-loop-guardrail.js +142 -0
  287. package/dist/cli/index.js +17 -0
  288. package/dist/contracts/verdicts.d.ts +297 -0
  289. package/dist/contracts/verdicts.js +178 -0
  290. package/dist/coordination/queen-types.d.ts +4 -0
  291. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +15 -6
  292. package/dist/integrations/agentic-flow/reasoning-bank/trajectory-tracker.js +12 -0
  293. package/dist/integrations/ruvector/shared-rvf-adapter.js +12 -1
  294. package/dist/integrations/ruvector/shared-rvf-dual-writer.js +6 -2
  295. package/dist/kernel/project-root.d.ts +33 -0
  296. package/dist/kernel/project-root.js +86 -0
  297. package/dist/kernel/unified-memory.d.ts +2 -19
  298. package/dist/kernel/unified-memory.js +8 -64
  299. package/dist/learning/local-judge-client.d.ts +55 -0
  300. package/dist/learning/local-judge-client.js +127 -0
  301. package/dist/learning/nagual-client.d.ts +73 -0
  302. package/dist/learning/nagual-client.js +150 -0
  303. package/dist/learning/pattern-store.js +10 -3
  304. package/dist/mcp/bundle.js +393 -391
  305. package/dist/mcp/entry.js +44 -33
  306. package/dist/mcp/handlers/core-handlers.d.ts +20 -0
  307. package/dist/mcp/handlers/core-handlers.js +28 -0
  308. package/dist/mcp/handlers/domain-handler-configs.d.ts +3 -0
  309. package/dist/mcp/handlers/domain-handler-configs.js +22 -10
  310. package/dist/mcp/transport/stdio.d.ts +7 -0
  311. package/dist/mcp/transport/stdio.js +39 -2
  312. package/dist/shared/llm/cost-tracker.js +6 -2
  313. package/dist/shared/llm/interfaces.d.ts +4 -0
  314. package/dist/shared/llm/providers/claude.js +16 -2
  315. package/dist/shared/reasoning-scrub.d.ts +29 -0
  316. package/dist/shared/reasoning-scrub.js +75 -0
  317. package/dist/workers/daemon.js +2 -0
  318. package/dist/workers/quality-daemon/git-watcher.js +2 -0
  319. package/dist/workers/quality-daemon/index.js +2 -0
  320. package/dist/workers/worker-manager.js +4 -0
  321. package/package.json +1 -1
  322. package/dist/cli/chunks/adapter-BHPUKMJ5.js +0 -2
  323. package/dist/cli/chunks/aqe-learning-engine-JQ5WD2HM.js +0 -2
  324. package/dist/cli/chunks/audit-BMQ3VESB.js +0 -3
  325. package/dist/cli/chunks/base-E32WLGY2.js +0 -2
  326. package/dist/cli/chunks/browser-workflow-LNNXXAJG.js +0 -2
  327. package/dist/cli/chunks/chunk-2EQVYYBF.js +0 -2
  328. package/dist/cli/chunks/chunk-3VF3HCG4.js +0 -2
  329. package/dist/cli/chunks/chunk-GELF4ILR.js +0 -699
  330. package/dist/cli/chunks/chunk-JOLDCS6X.js +0 -2
  331. package/dist/cli/chunks/chunk-JSFYPLMQ.js +0 -2
  332. package/dist/cli/chunks/chunk-YX2HY4MX.js +0 -2
  333. package/dist/cli/chunks/client-2UKBYFX4.js +0 -2
  334. package/dist/cli/chunks/cross-domain-router-FPM3L27L.js +0 -2
  335. package/dist/cli/chunks/daemon-YWINEHG4.js +0 -10
  336. package/dist/cli/chunks/dream-XM33US3V.js +0 -2
  337. package/dist/cli/chunks/heartbeat-scheduler-GM3M2MTG.js +0 -2
  338. package/dist/cli/chunks/hnsw-adapter-K62GEHIL.js +0 -2
  339. package/dist/cli/chunks/hnsw-index-VCAK3TWN.js +0 -2
  340. package/dist/cli/chunks/hooks-6Y3UHYI2.js +0 -248
  341. package/dist/cli/chunks/hybrid-router-432QNCNG.js +0 -2
  342. package/dist/cli/chunks/impact-analyzer-VTSISNN4.js +0 -2
  343. package/dist/cli/chunks/init-wizard-COB5AH7Q.js +0 -2
  344. package/dist/cli/chunks/kernel-ROK7X5FM.js +0 -2
  345. package/dist/cli/chunks/knowledge-graph-YUWIDIWW.js +0 -2
  346. package/dist/cli/chunks/llm-router-service-7VLXJ7VE.js +0 -2
  347. package/dist/cli/chunks/load-test-32524DL3.js +0 -2
  348. package/dist/cli/chunks/memory-backend-BI2V5AAB.js +0 -2
  349. package/dist/cli/chunks/memory-handlers-NSOFWVFN.js +0 -2
  350. package/dist/cli/chunks/protocol-executor-2UPB7SPI.js +0 -2
  351. package/dist/cli/chunks/provider-manager-PDT37MIJ.js +0 -2
  352. package/dist/cli/chunks/qe-reasoning-bank-AQQ2BI4V.js +0 -2
  353. package/dist/cli/chunks/queen-coordinator-6DVDVEU4.js +0 -2
  354. package/dist/cli/chunks/router-O2G4KQ6L.js +0 -2
  355. package/dist/cli/chunks/routing-feedback-TAGTD3KQ.js +0 -2
  356. package/dist/cli/chunks/rvf-native-adapter-46GRWQJR.js +0 -2
  357. package/dist/cli/chunks/safe-db-LNIPXXHH.js +0 -2
  358. package/dist/cli/chunks/schedule-AUH3ZALY.js +0 -2
  359. package/dist/cli/chunks/scheduler-KK3OYPWW.js +0 -2
  360. package/dist/cli/chunks/shared-rvf-adapter-XWTQPGCT.js +0 -2
  361. package/dist/cli/chunks/sqlite-persistence-CYESP7NG.js +0 -2
  362. package/dist/cli/chunks/sync-VI37UHHH.js +0 -2
  363. package/dist/cli/chunks/token-bootstrap-2DFRVMBM.js +0 -2
  364. package/dist/cli/chunks/unified-memory-RISHEANP.js +0 -2
  365. package/dist/cli/chunks/unified-memory-hnsw-2IKXGMNZ.js +0 -2
  366. package/dist/cli/chunks/unified-persistence-ZTTUJNTU.js +0 -2
  367. package/dist/cli/chunks/visual-security-D66DTAO5.js +0 -2
  368. package/dist/cli/chunks/witness-chain-RHWHHDLV.js +0 -2
  369. package/dist/cli/chunks/workflow-orchestrator-OQMFW2TC.js +0 -2
  370. package/dist/cli/chunks/wrappers-MM5VLEPG.js +0 -2
@@ -1,24 +1,24 @@
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.10.3");process.exit(0)}
2
- import{b as v}from"./chunk-FJGSEPFL.js";import{a,d as ne}from"./chunk-RZCAA2PZ.js";import{b as C,c as oe}from"./chunk-DY5KEOHX.js";import{b as D,d as re}from"./chunk-KTRB3L53.js";import{b as T,c as O}from"./chunk-3LRK7PYN.js";import{b as se,d as de}from"./chunk-7ZSPCGTI.js";de();O();var ie={failureThreshold:5,resetTimeoutMs:3e4,halfOpenSuccessThreshold:2,failureWindowMs:6e4,includeTimeouts:!0},Z=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={...ie,...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(T(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)}}},N=class{breakers=new Map;defaultConfig;constructor(t={}){this.defaultConfig={...ie,...t}}getBreaker(t,e){let r=this.breakers.get(t);return r||(r=new Z(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 ae={maxSize:1e3,defaultTtlMs:36e5,enableLRU:!0,cacheGenerations:!0,cacheEmbeddings:!0,cacheCompletions:!0},R=class{cache=new Map;accessOrder=[];config;hits=0;misses=0;evictions=0;constructor(t={}){this.config={...ae,...t}}static generateKey(t,e,r){let n=[t,r?.model??"default",String(r?.temperature??.7),String(r?.maxTokens??0),r?.systemPrompt??"",e].join("|"),o=0;for(let i=0;i<n.length;i++){let l=n.charCodeAt(i);o=(o<<5)-o+l,o=o&o}return`${t}:${Math.abs(o).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 s={value:e,createdAt:new Date,lastAccessedAt:new Date,accessCount:1,ttlMs:r??this.config.defaultTtlMs,keyHash:t};this.cache.set(t,s),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 s of this.cache.values())r+=this.estimateSize(s.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,s]of this.cache.entries())s.ttlMs>0&&t-s.createdAt.getTime()>s.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}},U=class{generationCache;embeddingCache;completionCache;config;constructor(t={}){this.config={...ae,...t},this.generationCache=new R(t),this.embeddingCache=new R(t),this.completionCache=new R(t)}getGeneration(t,e){if(!this.config.cacheGenerations)return;let r=R.generateKey("generation",t,e);return this.generationCache.get(r)}setGeneration(t,e,r,s){if(!this.config.cacheGenerations)return;let n=R.generateKey("generation",t,r);this.generationCache.set(n,e,s)}getEmbedding(t,e){if(!this.config.cacheEmbeddings)return;let r=R.generateKey("embedding",t,e);return this.embeddingCache.get(r)}setEmbedding(t,e,r,s){if(!this.config.cacheEmbeddings)return;let n=R.generateKey("embedding",t,r);this.embeddingCache.set(n,e,s)}getCompletion(t,e){if(!this.config.cacheCompletions)return;let r=R.generateKey("completion",t,e);return this.completionCache.get(r)}setCompletion(t,e,r,s){if(!this.config.cacheCompletions)return;let n=R.generateKey("completion",t,r);this.completionCache.set(n,e,s)}getStats(){let t=this.generationCache.getStats(),e=this.embeddingCache.getStats(),r=this.completionCache.getStats(),s=t.hits+e.hits+r.hits,n=t.misses+e.misses+r.misses,o=s+n;return{generation:t,embedding:e,completion:r,total:{size:t.size+e.size+r.size,maxSize:this.config.maxSize*3,hits:s,misses:n,hitRate:o>0?s/o: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()}};O();function Q(g,t,e,r){let s=Math.min(t*Math.pow(2,g),e),n=Math.random()*r*s;return s+n}var me=1e3,he=3e4;function k(g,t=me,e=he){return Q(g,t,e,0)}import{readFileSync as ge}from"fs";import*as ce from"path";var ee=["low","medium","high","xhigh","max"],fe="xhigh";function q(g){return typeof g=="string"&&ee.includes(g)}var K;function ye(g){try{let e=ge(g,"utf8").match(/^\s*effort_level\s*:\s*['"]?([a-z]+)['"]?\s*$/m);return e&&q(e[1])?e[1]:null}catch{return null}}function le(g={}){if(g.override&&q(g.override))return g.override;if(g.agentEffort&&q(g.agentEffort))return g.agentEffort;let e=(g.env??process.env).QE_EFFORT_LEVEL;if(e&&q(e))return e;let r=g.fleetDefaultsPath??ce.join(process.cwd(),"config","fleet-defaults.yaml");return K===void 0&&(K=ye(r)),K||fe}function ue(g,t){let e=ee.indexOf(g),r=ee.indexOf(t);return e>r?t:g}var be={"claude-sonnet-4-5":{name:"Claude Sonnet 4.5",family:"claude",tier:"standard",description:"Most intelligent model, best for complex reasoning and coding tasks",releaseDate:"2025-09-29",recommended:!0,capabilities:{contextLength:2e5,maxOutputTokens:16384,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!0,supportsMCP:!0,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:3,outputCostPerMillion:15}},"claude-opus-4":{name:"Claude Opus 4",family:"claude",tier:"flagship",description:"Flagship model with exceptional reasoning and reliability",releaseDate:"2025-05-14",recommended:!0,capabilities:{contextLength:2e5,maxOutputTokens:16384,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!0,supportsMCP:!0,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:15,outputCostPerMillion:75}},"claude-opus-4-5":{name:"Claude Opus 4.5",family:"claude",tier:"flagship",description:"Latest flagship model with enhanced reasoning capabilities",releaseDate:"2025-11-01",recommended:!0,capabilities:{contextLength:2e5,maxOutputTokens:32768,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!0,supportsMCP:!0,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:15,outputCostPerMillion:75}},"claude-haiku-3-5":{name:"Claude Haiku 3.5",family:"claude",tier:"economy",description:"Fast and cost-effective for routine tasks",releaseDate:"2024-10-22",deprecationDate:"2026-02-19",recommended:!1,capabilities:{contextLength:2e5,maxOutputTokens:8192,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!0,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:1,outputCostPerMillion:5}},"claude-sonnet-4":{name:"Claude Sonnet 4",family:"claude",tier:"standard",description:"Balanced model for general-purpose tasks",releaseDate:"2025-05-14",deprecationDate:"2026-06-15",recommended:!1,capabilities:{contextLength:2e5,maxOutputTokens:16384,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!0,supportsMCP:!0,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:3,outputCostPerMillion:15}},"claude-opus-4-7":{name:"Claude Opus 4.7",family:"claude",tier:"flagship",description:"Flagship agentic-coding model (2026-04-16). 1M context at standard pricing, xhigh effort level, adaptive thinking only. New tokenizer emits 1.0\u20131.35\xD7 more tokens.",releaseDate:"2026-04-16",recommended:!0,capabilities:{contextLength:1e6,maxOutputTokens:128e3,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!0,supportsMCP:!0,supportsEmbeddings:!1,supportsCodeExecution:!1,supportsAdaptiveThinking:!0,supportsEffortXHigh:!0,tokenizerVersion:"opus-4-7"},cost:{inputCostPerMillion:5,outputCostPerMillion:25}},"claude-sonnet-4-6":{name:"Claude Sonnet 4.6",family:"claude",tier:"standard",description:"Steady-state agentic-coding workhorse (2026). Standard 200k context, same pricing as Sonnet 4. ADR-093 Tier 3 default for the AQE fleet.",releaseDate:"2026-02-01",recommended:!0,capabilities:{contextLength:2e5,maxOutputTokens:64e3,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!0,supportsMCP:!0,supportsEmbeddings:!1,supportsCodeExecution:!1,supportsAdaptiveThinking:!1,supportsEffortXHigh:!1,tokenizerVersion:"legacy"},cost:{inputCostPerMillion:3,outputCostPerMillion:15}},"claude-haiku-4-5":{name:"Claude Haiku 4.5",family:"claude",tier:"economy",description:"Fast economy model replacing Haiku 3.5 (retired 2026-02-19). Extended thinking support.",releaseDate:"2025-10-01",recommended:!0,capabilities:{contextLength:2e5,maxOutputTokens:16384,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!0,supportsMCP:!0,supportsEmbeddings:!1,supportsCodeExecution:!1,supportsAdaptiveThinking:!1,supportsEffortXHigh:!1,tokenizerVersion:"legacy"},cost:{inputCostPerMillion:1,outputCostPerMillion:5}},"gpt-4o":{name:"GPT-4o",family:"gpt",tier:"standard",description:"OpenAI flagship multimodal model, fast and capable",releaseDate:"2024-05-13",recommended:!0,capabilities:{contextLength:128e3,maxOutputTokens:16384,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:5,outputCostPerMillion:15,imageCostPerUnit:.00765}},"gpt-4o-mini":{name:"GPT-4o Mini",family:"gpt",tier:"economy",description:"Small, fast, and affordable for lightweight tasks",releaseDate:"2024-07-18",recommended:!0,capabilities:{contextLength:128e3,maxOutputTokens:16384,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:.15,outputCostPerMillion:.6,imageCostPerUnit:.001275}},"gpt-4-turbo":{name:"GPT-4 Turbo",family:"gpt",tier:"premium",description:"Previous flagship with vision and function calling",releaseDate:"2024-04-09",recommended:!1,capabilities:{contextLength:128e3,maxOutputTokens:4096,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:10,outputCostPerMillion:30}},"gpt-4":{name:"GPT-4",family:"gpt",tier:"premium",description:"Original GPT-4 model, now superseded by GPT-4o",releaseDate:"2023-03-14",deprecationDate:"2025-06-01",recommended:!1,capabilities:{contextLength:8192,maxOutputTokens:8192,supportsTools:!0,supportsStreaming:!0,supportsVision:!1,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:30,outputCostPerMillion:60}},o1:{name:"OpenAI o1",family:"gpt",tier:"flagship",description:"Reasoning-focused model with extended thinking",releaseDate:"2024-12-05",recommended:!0,capabilities:{contextLength:2e5,maxOutputTokens:1e5,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!0,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:15,outputCostPerMillion:60}},"o1-mini":{name:"OpenAI o1 Mini",family:"gpt",tier:"standard",description:"Faster reasoning model optimized for STEM tasks",releaseDate:"2024-09-12",recommended:!0,capabilities:{contextLength:128e3,maxOutputTokens:65536,supportsTools:!0,supportsStreaming:!0,supportsVision:!1,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!0,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:3,outputCostPerMillion:12}},"gemini-pro":{name:"Gemini Pro",family:"gemini",tier:"standard",description:"Google balanced model for diverse tasks",releaseDate:"2023-12-06",recommended:!1,capabilities:{contextLength:32e3,maxOutputTokens:8192,supportsTools:!0,supportsStreaming:!0,supportsVision:!1,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:.5,outputCostPerMillion:1.5}},"gemini-pro-1.5":{name:"Gemini Pro 1.5",family:"gemini",tier:"standard",description:"Google mid-size model with 1M context window",releaseDate:"2024-02-15",recommended:!0,capabilities:{contextLength:1e6,maxOutputTokens:8192,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!0},cost:{inputCostPerMillion:3.5,outputCostPerMillion:10.5}},"gemini-flash-1.5":{name:"Gemini Flash 1.5",family:"gemini",tier:"economy",description:"Fast and efficient with 1M context window",releaseDate:"2024-05-14",recommended:!0,capabilities:{contextLength:1e6,maxOutputTokens:8192,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!0},cost:{inputCostPerMillion:.075,outputCostPerMillion:.3}},"gemini-ultra":{name:"Gemini Ultra",family:"gemini",tier:"flagship",description:"Google most capable model",releaseDate:"2024-02-08",recommended:!1,capabilities:{contextLength:32e3,maxOutputTokens:8192,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:12,outputCostPerMillion:36}},llama3:{name:"Llama 3",family:"llama",tier:"economy",description:"Meta open-source 8B model, runs locally",releaseDate:"2024-04-18",recommended:!0,capabilities:{contextLength:8192,maxOutputTokens:4096,supportsTools:!1,supportsStreaming:!0,supportsVision:!1,supportsJsonMode:!1,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:0,outputCostPerMillion:0}},"llama3.1":{name:"Llama 3.1",family:"llama",tier:"economy",description:"Meta latest open-source model with tool support",releaseDate:"2024-07-23",recommended:!0,capabilities:{contextLength:128e3,maxOutputTokens:8192,supportsTools:!0,supportsStreaming:!0,supportsVision:!1,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:0,outputCostPerMillion:0}},codellama:{name:"CodeLlama",family:"llama",tier:"economy",description:"Meta code-specialized model",releaseDate:"2023-08-24",recommended:!0,capabilities:{contextLength:1e5,maxOutputTokens:4096,supportsTools:!1,supportsStreaming:!0,supportsVision:!1,supportsJsonMode:!1,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:0,outputCostPerMillion:0}},mistral:{name:"Mistral",family:"mistral",tier:"economy",description:"Mistral AI 7B instruction-tuned model",releaseDate:"2023-09-27",recommended:!0,capabilities:{contextLength:32e3,maxOutputTokens:4096,supportsTools:!1,supportsStreaming:!0,supportsVision:!1,supportsJsonMode:!1,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:0,outputCostPerMillion:0}},mixtral:{name:"Mixtral",family:"mistral",tier:"standard",description:"Mistral AI mixture of experts model",releaseDate:"2023-12-11",recommended:!0,capabilities:{contextLength:32e3,maxOutputTokens:4096,supportsTools:!0,supportsStreaming:!0,supportsVision:!1,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:0,outputCostPerMillion:0}},phi3:{name:"Phi-3",family:"phi",tier:"economy",description:"Microsoft small language model, efficient",releaseDate:"2024-04-23",recommended:!0,capabilities:{contextLength:128e3,maxOutputTokens:4096,supportsTools:!1,supportsStreaming:!0,supportsVision:!1,supportsJsonMode:!1,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:0,outputCostPerMillion:0}},qwen2:{name:"Qwen 2",family:"qwen",tier:"economy",description:"Alibaba multilingual model",releaseDate:"2024-06-07",recommended:!0,capabilities:{contextLength:32e3,maxOutputTokens:4096,supportsTools:!0,supportsStreaming:!0,supportsVision:!1,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:0,outputCostPerMillion:0}}};function pe(g){let t=ne(g),e=be[t];if(!e)throw new Error(`Model not found in registry: ${g}`);return{...e.capabilities}}var ke={model:"claude-sonnet-4-6",maxTokens:4096,temperature:.7,timeoutMs:6e4,maxRetries:3,anthropicVersion:"2023-06-01",enableCache:!0,enableCircuitBreaker:!0},B=class{type="claude";name="Anthropic Claude";config;requestId=0;constructor(t={}){this.config={...ke,...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),s=Date.now()-e;if(!r.ok){let n=await r.text();return{healthy:!1,latencyMs:s,error:`API error: ${r.status} - ${n}`}}return{healthy:!0,latencyMs:s,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 s=this.formatMessages(t),n=e?.model??this.config.model,o=e?.maxTokens??this.config.maxTokens??4096,i=e?.temperature??this.config.temperature??.7,l=`claude-${++this.requestId}-${Date.now()}`,m=Date.now(),h={model:n,max_tokens:o,temperature:i,messages:s};e?.systemPrompt&&(h.system=e.systemPrompt),e?.stopSequences&&e.stopSequences.length>0&&(h.stop_sequences=e.stopSequences);try{if(pe(n).supportsEffortXHigh){let u=le({override:e?.effort}),p=ue(u,"xhigh");h.thinking={type:"adaptive",effort:p}}}catch{}try{let c=await this.fetchWithRetry(`${this.getBaseUrl()}/v1/messages`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify(h)},e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),u=Date.now()-m;if(!c.ok){let f=await c.json().catch(()=>({error:{message:"Unknown error"}}));throw this.handleApiError(c.status,f,n)}let p=await c.json(),d={promptTokens:p.usage.input_tokens,completionTokens:p.usage.output_tokens,totalTokens:p.usage.input_tokens+p.usage.output_tokens},y=C.calculateCost(n,d);return v.recordTokenUsage(l,"claude-provider","llm","generate",{inputTokens:p.usage.input_tokens,outputTokens:p.usage.output_tokens,totalTokens:p.usage.input_tokens+p.usage.output_tokens,estimatedCostUsd:y.totalCost}),{content:p.content.filter(f=>f.type==="text").map(f=>f.text).join(""),model:p.model,provider:"claude",usage:d,cost:y,latencyMs:u,finishReason:this.mapFinishReason(p.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??[`
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.10.5");process.exit(0)}
2
+ import{b as C}from"./chunk-Q6BKJZTG.js";import{a,d as ne}from"./chunk-CS3UB2OL.js";import{b as M,c as oe}from"./chunk-MWPFUBXS.js";import{b as D,d as re}from"./chunk-56RA6YPN.js";import{b as v,c as O}from"./chunk-S73KENCH.js";import{b as se,d as de}from"./chunk-MJRYHHOG.js";de();O();var ie={failureThreshold:5,resetTimeoutMs:3e4,halfOpenSuccessThreshold:2,failureWindowMs:6e4,includeTimeouts:!0},Z=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={...ie,...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(v(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)}}},N=class{breakers=new Map;defaultConfig;constructor(t={}){this.defaultConfig={...ie,...t}}getBreaker(t,e){let r=this.breakers.get(t);return r||(r=new Z(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 ae={maxSize:1e3,defaultTtlMs:36e5,enableLRU:!0,cacheGenerations:!0,cacheEmbeddings:!0,cacheCompletions:!0},R=class{cache=new Map;accessOrder=[];config;hits=0;misses=0;evictions=0;constructor(t={}){this.config={...ae,...t}}static generateKey(t,e,r){let n=[t,r?.model??"default",String(r?.temperature??.7),String(r?.maxTokens??0),r?.systemPrompt??"",e].join("|"),o=0;for(let i=0;i<n.length;i++){let u=n.charCodeAt(i);o=(o<<5)-o+u,o=o&o}return`${t}:${Math.abs(o).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 s={value:e,createdAt:new Date,lastAccessedAt:new Date,accessCount:1,ttlMs:r??this.config.defaultTtlMs,keyHash:t};this.cache.set(t,s),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 s of this.cache.values())r+=this.estimateSize(s.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,s]of this.cache.entries())s.ttlMs>0&&t-s.createdAt.getTime()>s.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}},U=class{generationCache;embeddingCache;completionCache;config;constructor(t={}){this.config={...ae,...t},this.generationCache=new R(t),this.embeddingCache=new R(t),this.completionCache=new R(t)}getGeneration(t,e){if(!this.config.cacheGenerations)return;let r=R.generateKey("generation",t,e);return this.generationCache.get(r)}setGeneration(t,e,r,s){if(!this.config.cacheGenerations)return;let n=R.generateKey("generation",t,r);this.generationCache.set(n,e,s)}getEmbedding(t,e){if(!this.config.cacheEmbeddings)return;let r=R.generateKey("embedding",t,e);return this.embeddingCache.get(r)}setEmbedding(t,e,r,s){if(!this.config.cacheEmbeddings)return;let n=R.generateKey("embedding",t,r);this.embeddingCache.set(n,e,s)}getCompletion(t,e){if(!this.config.cacheCompletions)return;let r=R.generateKey("completion",t,e);return this.completionCache.get(r)}setCompletion(t,e,r,s){if(!this.config.cacheCompletions)return;let n=R.generateKey("completion",t,r);this.completionCache.set(n,e,s)}getStats(){let t=this.generationCache.getStats(),e=this.embeddingCache.getStats(),r=this.completionCache.getStats(),s=t.hits+e.hits+r.hits,n=t.misses+e.misses+r.misses,o=s+n;return{generation:t,embedding:e,completion:r,total:{size:t.size+e.size+r.size,maxSize:this.config.maxSize*3,hits:s,misses:n,hitRate:o>0?s/o: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()}};O();function Q(g,t,e,r){let s=Math.min(t*Math.pow(2,g),e),n=Math.random()*r*s;return s+n}var me=1e3,he=3e4;function T(g,t=me,e=he){return Q(g,t,e,0)}import{readFileSync as ge}from"fs";import*as ce from"path";var ee=["low","medium","high","xhigh","max"],fe="xhigh";function q(g){return typeof g=="string"&&ee.includes(g)}var K;function ye(g){try{let e=ge(g,"utf8").match(/^\s*effort_level\s*:\s*['"]?([a-z]+)['"]?\s*$/m);return e&&q(e[1])?e[1]:null}catch{return null}}function ue(g={}){if(g.override&&q(g.override))return g.override;if(g.agentEffort&&q(g.agentEffort))return g.agentEffort;let e=(g.env??process.env).QE_EFFORT_LEVEL;if(e&&q(e))return e;let r=g.fleetDefaultsPath??ce.join(process.cwd(),"config","fleet-defaults.yaml");return K===void 0&&(K=ye(r)),K||fe}function le(g,t){let e=ee.indexOf(g),r=ee.indexOf(t);return e>r?t:g}var be={"claude-sonnet-4-5":{name:"Claude Sonnet 4.5",family:"claude",tier:"standard",description:"Most intelligent model, best for complex reasoning and coding tasks",releaseDate:"2025-09-29",recommended:!0,capabilities:{contextLength:2e5,maxOutputTokens:16384,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!0,supportsMCP:!0,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:3,outputCostPerMillion:15}},"claude-opus-4":{name:"Claude Opus 4",family:"claude",tier:"flagship",description:"Flagship model with exceptional reasoning and reliability",releaseDate:"2025-05-14",recommended:!0,capabilities:{contextLength:2e5,maxOutputTokens:16384,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!0,supportsMCP:!0,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:15,outputCostPerMillion:75}},"claude-opus-4-5":{name:"Claude Opus 4.5",family:"claude",tier:"flagship",description:"Latest flagship model with enhanced reasoning capabilities",releaseDate:"2025-11-01",recommended:!0,capabilities:{contextLength:2e5,maxOutputTokens:32768,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!0,supportsMCP:!0,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:15,outputCostPerMillion:75}},"claude-haiku-3-5":{name:"Claude Haiku 3.5",family:"claude",tier:"economy",description:"Fast and cost-effective for routine tasks",releaseDate:"2024-10-22",deprecationDate:"2026-02-19",recommended:!1,capabilities:{contextLength:2e5,maxOutputTokens:8192,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!0,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:1,outputCostPerMillion:5}},"claude-sonnet-4":{name:"Claude Sonnet 4",family:"claude",tier:"standard",description:"Balanced model for general-purpose tasks",releaseDate:"2025-05-14",deprecationDate:"2026-06-15",recommended:!1,capabilities:{contextLength:2e5,maxOutputTokens:16384,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!0,supportsMCP:!0,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:3,outputCostPerMillion:15}},"claude-opus-4-7":{name:"Claude Opus 4.7",family:"claude",tier:"flagship",description:"Flagship agentic-coding model (2026-04-16). 1M context at standard pricing, xhigh effort level, adaptive thinking only. New tokenizer emits 1.0\u20131.35\xD7 more tokens.",releaseDate:"2026-04-16",recommended:!0,capabilities:{contextLength:1e6,maxOutputTokens:128e3,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!0,supportsMCP:!0,supportsEmbeddings:!1,supportsCodeExecution:!1,supportsAdaptiveThinking:!0,supportsEffortXHigh:!0,tokenizerVersion:"opus-4-7"},cost:{inputCostPerMillion:5,outputCostPerMillion:25}},"claude-sonnet-4-6":{name:"Claude Sonnet 4.6",family:"claude",tier:"standard",description:"Steady-state agentic-coding workhorse (2026). Standard 200k context, same pricing as Sonnet 4. ADR-093 Tier 3 default for the AQE fleet.",releaseDate:"2026-02-01",recommended:!0,capabilities:{contextLength:2e5,maxOutputTokens:64e3,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!0,supportsMCP:!0,supportsEmbeddings:!1,supportsCodeExecution:!1,supportsAdaptiveThinking:!1,supportsEffortXHigh:!1,tokenizerVersion:"legacy"},cost:{inputCostPerMillion:3,outputCostPerMillion:15}},"claude-haiku-4-5":{name:"Claude Haiku 4.5",family:"claude",tier:"economy",description:"Fast economy model replacing Haiku 3.5 (retired 2026-02-19). Extended thinking support.",releaseDate:"2025-10-01",recommended:!0,capabilities:{contextLength:2e5,maxOutputTokens:16384,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!0,supportsMCP:!0,supportsEmbeddings:!1,supportsCodeExecution:!1,supportsAdaptiveThinking:!1,supportsEffortXHigh:!1,tokenizerVersion:"legacy"},cost:{inputCostPerMillion:1,outputCostPerMillion:5}},"gpt-4o":{name:"GPT-4o",family:"gpt",tier:"standard",description:"OpenAI flagship multimodal model, fast and capable",releaseDate:"2024-05-13",recommended:!0,capabilities:{contextLength:128e3,maxOutputTokens:16384,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:5,outputCostPerMillion:15,imageCostPerUnit:.00765}},"gpt-4o-mini":{name:"GPT-4o Mini",family:"gpt",tier:"economy",description:"Small, fast, and affordable for lightweight tasks",releaseDate:"2024-07-18",recommended:!0,capabilities:{contextLength:128e3,maxOutputTokens:16384,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:.15,outputCostPerMillion:.6,imageCostPerUnit:.001275}},"gpt-4-turbo":{name:"GPT-4 Turbo",family:"gpt",tier:"premium",description:"Previous flagship with vision and function calling",releaseDate:"2024-04-09",recommended:!1,capabilities:{contextLength:128e3,maxOutputTokens:4096,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:10,outputCostPerMillion:30}},"gpt-4":{name:"GPT-4",family:"gpt",tier:"premium",description:"Original GPT-4 model, now superseded by GPT-4o",releaseDate:"2023-03-14",deprecationDate:"2025-06-01",recommended:!1,capabilities:{contextLength:8192,maxOutputTokens:8192,supportsTools:!0,supportsStreaming:!0,supportsVision:!1,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:30,outputCostPerMillion:60}},o1:{name:"OpenAI o1",family:"gpt",tier:"flagship",description:"Reasoning-focused model with extended thinking",releaseDate:"2024-12-05",recommended:!0,capabilities:{contextLength:2e5,maxOutputTokens:1e5,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!0,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:15,outputCostPerMillion:60}},"o1-mini":{name:"OpenAI o1 Mini",family:"gpt",tier:"standard",description:"Faster reasoning model optimized for STEM tasks",releaseDate:"2024-09-12",recommended:!0,capabilities:{contextLength:128e3,maxOutputTokens:65536,supportsTools:!0,supportsStreaming:!0,supportsVision:!1,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!0,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:3,outputCostPerMillion:12}},"gemini-pro":{name:"Gemini Pro",family:"gemini",tier:"standard",description:"Google balanced model for diverse tasks",releaseDate:"2023-12-06",recommended:!1,capabilities:{contextLength:32e3,maxOutputTokens:8192,supportsTools:!0,supportsStreaming:!0,supportsVision:!1,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:.5,outputCostPerMillion:1.5}},"gemini-pro-1.5":{name:"Gemini Pro 1.5",family:"gemini",tier:"standard",description:"Google mid-size model with 1M context window",releaseDate:"2024-02-15",recommended:!0,capabilities:{contextLength:1e6,maxOutputTokens:8192,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!0},cost:{inputCostPerMillion:3.5,outputCostPerMillion:10.5}},"gemini-flash-1.5":{name:"Gemini Flash 1.5",family:"gemini",tier:"economy",description:"Fast and efficient with 1M context window",releaseDate:"2024-05-14",recommended:!0,capabilities:{contextLength:1e6,maxOutputTokens:8192,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!0},cost:{inputCostPerMillion:.075,outputCostPerMillion:.3}},"gemini-ultra":{name:"Gemini Ultra",family:"gemini",tier:"flagship",description:"Google most capable model",releaseDate:"2024-02-08",recommended:!1,capabilities:{contextLength:32e3,maxOutputTokens:8192,supportsTools:!0,supportsStreaming:!0,supportsVision:!0,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:12,outputCostPerMillion:36}},llama3:{name:"Llama 3",family:"llama",tier:"economy",description:"Meta open-source 8B model, runs locally",releaseDate:"2024-04-18",recommended:!0,capabilities:{contextLength:8192,maxOutputTokens:4096,supportsTools:!1,supportsStreaming:!0,supportsVision:!1,supportsJsonMode:!1,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:0,outputCostPerMillion:0}},"llama3.1":{name:"Llama 3.1",family:"llama",tier:"economy",description:"Meta latest open-source model with tool support",releaseDate:"2024-07-23",recommended:!0,capabilities:{contextLength:128e3,maxOutputTokens:8192,supportsTools:!0,supportsStreaming:!0,supportsVision:!1,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:0,outputCostPerMillion:0}},codellama:{name:"CodeLlama",family:"llama",tier:"economy",description:"Meta code-specialized model",releaseDate:"2023-08-24",recommended:!0,capabilities:{contextLength:1e5,maxOutputTokens:4096,supportsTools:!1,supportsStreaming:!0,supportsVision:!1,supportsJsonMode:!1,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:0,outputCostPerMillion:0}},mistral:{name:"Mistral",family:"mistral",tier:"economy",description:"Mistral AI 7B instruction-tuned model",releaseDate:"2023-09-27",recommended:!0,capabilities:{contextLength:32e3,maxOutputTokens:4096,supportsTools:!1,supportsStreaming:!0,supportsVision:!1,supportsJsonMode:!1,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:0,outputCostPerMillion:0}},mixtral:{name:"Mixtral",family:"mistral",tier:"standard",description:"Mistral AI mixture of experts model",releaseDate:"2023-12-11",recommended:!0,capabilities:{contextLength:32e3,maxOutputTokens:4096,supportsTools:!0,supportsStreaming:!0,supportsVision:!1,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:0,outputCostPerMillion:0}},phi3:{name:"Phi-3",family:"phi",tier:"economy",description:"Microsoft small language model, efficient",releaseDate:"2024-04-23",recommended:!0,capabilities:{contextLength:128e3,maxOutputTokens:4096,supportsTools:!1,supportsStreaming:!0,supportsVision:!1,supportsJsonMode:!1,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:0,outputCostPerMillion:0}},qwen2:{name:"Qwen 2",family:"qwen",tier:"economy",description:"Alibaba multilingual model",releaseDate:"2024-06-07",recommended:!0,capabilities:{contextLength:32e3,maxOutputTokens:4096,supportsTools:!0,supportsStreaming:!0,supportsVision:!1,supportsJsonMode:!0,supportsSystemPrompt:!0,supportsExtendedThinking:!1,supportsMCP:!1,supportsEmbeddings:!1,supportsCodeExecution:!1},cost:{inputCostPerMillion:0,outputCostPerMillion:0}}};function pe(g){let t=ne(g),e=be[t];if(!e)throw new Error(`Model not found in registry: ${g}`);return{...e.capabilities}}var ke={model:"claude-sonnet-4-6",maxTokens:4096,temperature:.7,timeoutMs:6e4,maxRetries:3,anthropicVersion:"2023-06-01",enableCache:!0,enableCircuitBreaker:!0},B=class{type="claude";name="Anthropic Claude";config;requestId=0;constructor(t={}){this.config={...ke,...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),s=Date.now()-e;if(!r.ok){let n=await r.text();return{healthy:!1,latencyMs:s,error:`API error: ${r.status} - ${n}`}}return{healthy:!0,latencyMs:s,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 s=this.formatMessages(t),n=e?.model??this.config.model,o=e?.maxTokens??this.config.maxTokens??4096,i=e?.temperature??this.config.temperature??.7,u=`claude-${++this.requestId}-${Date.now()}`,m=Date.now(),h={model:n,max_tokens:o,temperature:i,messages:s};e?.systemPrompt&&(h.system=this.config.enableCache!==!1?[{type:"text",text:e.systemPrompt,cache_control:{type:"ephemeral"}}]:e.systemPrompt),e?.stopSequences&&e.stopSequences.length>0&&(h.stop_sequences=e.stopSequences);try{if(pe(n).supportsEffortXHigh){let p=ue({override:e?.effort}),l=le(p,"xhigh");h.thinking={type:"adaptive",effort:l}}}catch{}try{let c=await this.fetchWithRetry(`${this.getBaseUrl()}/v1/messages`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify(h)},e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),p=Date.now()-m;if(!c.ok){let k=await c.json().catch(()=>({error:{message:"Unknown error"}}));throw this.handleApiError(c.status,k,n)}let l=await c.json(),d=l.usage.cache_creation_input_tokens??0,y=l.usage.cache_read_input_tokens??0,b={promptTokens:l.usage.input_tokens,completionTokens:l.usage.output_tokens,totalTokens:l.usage.input_tokens+d+y+l.usage.output_tokens,cacheCreationTokens:d,cacheReadTokens:y},f=M.calculateCost(n,b);return C.recordTokenUsage(u,"claude-provider","llm","generate",{inputTokens:l.usage.input_tokens,outputTokens:l.usage.output_tokens,totalTokens:l.usage.input_tokens+l.usage.output_tokens,estimatedCostUsd:f.totalCost}),{content:l.content.filter(k=>k.type==="text").map(k=>k.text).join(""),model:l.model,provider:"claude",usage:b,cost:f,latencyMs:p,finishReason:this.mapFinishReason(l.stop_reason),cached:!1,requestId:u}}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??[`
3
3
 
4
- `,"```"]});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 C.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 s="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(s,"API_KEY_INVALID",{provider:"claude",model:r,retryable:!1});case 429:throw a(s,"RATE_LIMITED",{provider:"claude",model:r,retryable:!0,retryAfterMs:6e4});case 400:throw n==="invalid_request_error"&&s.includes("context")?a(s,"CONTEXT_LENGTH_EXCEEDED",{provider:"claude",model:r,retryable:!1}):a(s,"UNKNOWN",{provider:"claude",model:r,retryable:!1});case 500:case 502:case 503:throw a(s,"PROVIDER_UNAVAILABLE",{provider:"claude",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(s,"UNKNOWN",{provider:"claude",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await fetch(t,{...e,signal:s.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"claude",retryable:!0}):o}finally{clearTimeout(n)}}async fetchWithRetry(t,e,r,s){let n;for(let o=0;o<s;o++)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)&&o<s-1){let l=k(o);await this.sleep(l);continue}return i}catch(i){if(n=T(i),o<s-1){let l=k(o);await this.sleep(l)}}throw n??new Error("Request failed after retries")}sleep(t){return new Promise(e=>setTimeout(e,t))}};O();var Te={model:"gpt-4o",maxTokens:4096,temperature:.7,timeoutMs:6e4,maxRetries:3,enableCache:!0,enableCircuitBreaker:!0},G=class{type="openai";name="OpenAI";config;requestId=0;constructor(t={}){this.config={...Te,...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),s=Date.now()-e;if(!r.ok){let n=await r.text();return{healthy:!1,latencyMs:s,error:`API error: ${r.status} - ${n}`}}return{healthy:!0,latencyMs:s,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 s=this.formatMessages(t,e?.systemPrompt),n=e?.model??this.config.model,o=e?.maxTokens??this.config.maxTokens??4096,i=e?.temperature??this.config.temperature??.7,l=`openai-${++this.requestId}-${Date.now()}`,m=Date.now(),h={model:n,max_tokens:o,temperature:i,messages:s};e?.stopSequences&&e.stopSequences.length>0&&(h.stop=e.stopSequences),this.config.presencePenalty!==void 0&&(h.presence_penalty=this.config.presencePenalty),this.config.frequencyPenalty!==void 0&&(h.frequency_penalty=this.config.frequencyPenalty);try{let c=await this.fetchWithRetry(`${this.getBaseUrl()}/v1/chat/completions`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify(h)},e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),u=Date.now()-m;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 p=await c.json(),d={promptTokens:p.usage.prompt_tokens,completionTokens:p.usage.completion_tokens,totalTokens:p.usage.total_tokens},y=C.calculateCost(n,d);return v.recordTokenUsage(l,"openai-provider","llm","generate",{inputTokens:p.usage.prompt_tokens,outputTokens:p.usage.completion_tokens,totalTokens:p.usage.total_tokens,estimatedCostUsd:y.totalCost}),{content:p.choices[0]?.message?.content??"",model:p.model,provider:"openai",usage:d,cost:y,latencyMs:u,finishReason:this.mapFinishReason(p.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 s=e?.model??"text-embedding-3-small",n=Date.now();try{let o=await this.fetchWithTimeout(`${this.getBaseUrl()}/v1/embeddings`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify({model:s,input:t})},e?.timeoutMs??this.config.timeoutMs??3e4),i=Date.now()-n;if(!o.ok){let m=await o.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(o.status,m,s)}let l=await o.json();return{embedding:l.data[0].embedding,model:l.model,provider:"openai",tokenCount:l.usage.total_tokens,latencyMs:i,cached:!1}}catch(o){throw o instanceof Error&&"code"in o?o:a(o instanceof Error?o.message:"Embedding request failed","NETWORK_ERROR",{provider:"openai",model:s,retryable:!0,cause:o})}}async complete(t,e){let r=await this.generate(t,{model:e?.model,temperature:e?.temperature??.2,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
4
+ `,"```"]});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 M.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 s="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(s,"API_KEY_INVALID",{provider:"claude",model:r,retryable:!1});case 429:throw a(s,"RATE_LIMITED",{provider:"claude",model:r,retryable:!0,retryAfterMs:6e4});case 400:throw n==="invalid_request_error"&&s.includes("context")?a(s,"CONTEXT_LENGTH_EXCEEDED",{provider:"claude",model:r,retryable:!1}):a(s,"UNKNOWN",{provider:"claude",model:r,retryable:!1});case 500:case 502:case 503:throw a(s,"PROVIDER_UNAVAILABLE",{provider:"claude",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(s,"UNKNOWN",{provider:"claude",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await fetch(t,{...e,signal:s.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"claude",retryable:!0}):o}finally{clearTimeout(n)}}async fetchWithRetry(t,e,r,s){let n;for(let o=0;o<s;o++)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)&&o<s-1){let u=T(o);await this.sleep(u);continue}return i}catch(i){if(n=v(i),o<s-1){let u=T(o);await this.sleep(u)}}throw n??new Error("Request failed after retries")}sleep(t){return new Promise(e=>setTimeout(e,t))}};O();var Te={model:"gpt-4o",maxTokens:4096,temperature:.7,timeoutMs:6e4,maxRetries:3,enableCache:!0,enableCircuitBreaker:!0},G=class{type="openai";name="OpenAI";config;requestId=0;constructor(t={}){this.config={...Te,...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),s=Date.now()-e;if(!r.ok){let n=await r.text();return{healthy:!1,latencyMs:s,error:`API error: ${r.status} - ${n}`}}return{healthy:!0,latencyMs:s,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 s=this.formatMessages(t,e?.systemPrompt),n=e?.model??this.config.model,o=e?.maxTokens??this.config.maxTokens??4096,i=e?.temperature??this.config.temperature??.7,u=`openai-${++this.requestId}-${Date.now()}`,m=Date.now(),h={model:n,max_tokens:o,temperature:i,messages:s};e?.stopSequences&&e.stopSequences.length>0&&(h.stop=e.stopSequences),this.config.presencePenalty!==void 0&&(h.presence_penalty=this.config.presencePenalty),this.config.frequencyPenalty!==void 0&&(h.frequency_penalty=this.config.frequencyPenalty);try{let c=await this.fetchWithRetry(`${this.getBaseUrl()}/v1/chat/completions`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify(h)},e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),p=Date.now()-m;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 l=await c.json(),d={promptTokens:l.usage.prompt_tokens,completionTokens:l.usage.completion_tokens,totalTokens:l.usage.total_tokens},y=M.calculateCost(n,d);return C.recordTokenUsage(u,"openai-provider","llm","generate",{inputTokens:l.usage.prompt_tokens,outputTokens:l.usage.completion_tokens,totalTokens:l.usage.total_tokens,estimatedCostUsd:y.totalCost}),{content:l.choices[0]?.message?.content??"",model:l.model,provider:"openai",usage:d,cost:y,latencyMs:p,finishReason:this.mapFinishReason(l.choices[0]?.finish_reason),cached:!1,requestId:u}}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 s=e?.model??"text-embedding-3-small",n=Date.now();try{let o=await this.fetchWithTimeout(`${this.getBaseUrl()}/v1/embeddings`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify({model:s,input:t})},e?.timeoutMs??this.config.timeoutMs??3e4),i=Date.now()-n;if(!o.ok){let m=await o.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(o.status,m,s)}let u=await o.json();return{embedding:u.data[0].embedding,model:u.model,provider:"openai",tokenCount:u.usage.total_tokens,latencyMs:i,cached:!1}}catch(o){throw o instanceof Error&&"code"in o?o:a(o instanceof Error?o.message:"Embedding request failed","NETWORK_ERROR",{provider:"openai",model:s,retryable:!0,cause:o})}}async complete(t,e){let r=await this.generate(t,{model:e?.model,temperature:e?.temperature??.2,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
5
5
 
6
- `]});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 C.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 s=t.some(n=>n.role==="system");e&&!s&&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 s=e.error?.message??"Unknown API error",n=e.error?.type??"",o=e.error?.code??"";switch(t){case 401:throw a(s,"API_KEY_INVALID",{provider:"openai",model:r,retryable:!1});case 429:throw a(s,"RATE_LIMITED",{provider:"openai",model:r,retryable:!0,retryAfterMs:6e4});case 400:throw o==="context_length_exceeded"||n==="invalid_request_error"?a(s,"CONTEXT_LENGTH_EXCEEDED",{provider:"openai",model:r,retryable:!1}):a(s,"UNKNOWN",{provider:"openai",model:r,retryable:!1});case 500:case 502:case 503:throw a(s,"PROVIDER_UNAVAILABLE",{provider:"openai",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(s,"UNKNOWN",{provider:"openai",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await fetch(t,{...e,signal:s.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"openai",retryable:!0}):o}finally{clearTimeout(n)}}async fetchWithRetry(t,e,r,s){let n;for(let o=0;o<s;o++)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)&&o<s-1){let l=k(o);await this.sleep(l);continue}return i}catch(i){if(n=T(i),o<s-1){let l=k(o);await this.sleep(l)}}throw n??new Error("Request failed after retries")}sleep(t){return new Promise(e=>setTimeout(e,t))}};var ve={model:"llama3.1",baseUrl:"http://localhost:11434",maxTokens:4096,temperature:.7,timeoutMs:12e4,maxRetries:2,contextLength:4096,keepAlive:"5m",enableCache:!0,enableCircuitBreaker:!0},z=class{type="ollama";name="Ollama (Local)";config;requestId=0;availableModels=[];constructor(t={}){this.config={...ve,...t}}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 s=await e.json();return this.availableModels=s.models?.map(o=>o.name.split(":")[0])??[],!this.availableModels.some(o=>o===this.config.model||o.startsWith(this.config.model)||this.config.model.startsWith(o))&&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,s=e?.maxTokens??this.config.maxTokens??4096,n=e?.temperature??this.config.temperature??.7,o=`ollama-${++this.requestId}-${Date.now()}`,i=Date.now(),l=Array.isArray(t);try{let m,h,c,u;if(l){let b=this.formatMessages(t,e?.systemPrompt);if(m=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:s,stop:e?.stopSequences}})},e?.timeoutMs??this.config.timeoutMs??12e4),!m.ok)throw await this.handleApiError(m,r);let f=await m.json();h=f.message.content,c=f.prompt_eval_count??this.estimateTokens(JSON.stringify(b)),u=f.eval_count??this.estimateTokens(h)}else{let b=e?.systemPrompt?`${e.systemPrompt}
6
+ `]});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 M.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 s=t.some(n=>n.role==="system");e&&!s&&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 s=e.error?.message??"Unknown API error",n=e.error?.type??"",o=e.error?.code??"";switch(t){case 401:throw a(s,"API_KEY_INVALID",{provider:"openai",model:r,retryable:!1});case 429:throw a(s,"RATE_LIMITED",{provider:"openai",model:r,retryable:!0,retryAfterMs:6e4});case 400:throw o==="context_length_exceeded"||n==="invalid_request_error"?a(s,"CONTEXT_LENGTH_EXCEEDED",{provider:"openai",model:r,retryable:!1}):a(s,"UNKNOWN",{provider:"openai",model:r,retryable:!1});case 500:case 502:case 503:throw a(s,"PROVIDER_UNAVAILABLE",{provider:"openai",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(s,"UNKNOWN",{provider:"openai",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await fetch(t,{...e,signal:s.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"openai",retryable:!0}):o}finally{clearTimeout(n)}}async fetchWithRetry(t,e,r,s){let n;for(let o=0;o<s;o++)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)&&o<s-1){let u=T(o);await this.sleep(u);continue}return i}catch(i){if(n=v(i),o<s-1){let u=T(o);await this.sleep(u)}}throw n??new Error("Request failed after retries")}sleep(t){return new Promise(e=>setTimeout(e,t))}};var ve={model:"llama3.1",baseUrl:"http://localhost:11434",maxTokens:4096,temperature:.7,timeoutMs:12e4,maxRetries:2,contextLength:4096,keepAlive:"5m",enableCache:!0,enableCircuitBreaker:!0},z=class{type="ollama";name="Ollama (Local)";config;requestId=0;availableModels=[];constructor(t={}){this.config={...ve,...t}}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 s=await e.json();return this.availableModels=s.models?.map(o=>o.name.split(":")[0])??[],!this.availableModels.some(o=>o===this.config.model||o.startsWith(this.config.model)||this.config.model.startsWith(o))&&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,s=e?.maxTokens??this.config.maxTokens??4096,n=e?.temperature??this.config.temperature??.7,o=`ollama-${++this.requestId}-${Date.now()}`,i=Date.now(),u=Array.isArray(t);try{let m,h,c,p;if(u){let b=this.formatMessages(t,e?.systemPrompt);if(m=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:s,stop:e?.stopSequences}})},e?.timeoutMs??this.config.timeoutMs??12e4),!m.ok)throw await this.handleApiError(m,r);let f=await m.json();h=f.message.content,c=f.prompt_eval_count??this.estimateTokens(JSON.stringify(b)),p=f.eval_count??this.estimateTokens(h)}else{let b=e?.systemPrompt?`${e.systemPrompt}
7
7
 
8
- ${t}`:t;if(m=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:s,stop:e?.stopSequences}})},e?.timeoutMs??this.config.timeoutMs??12e4),!m.ok)throw await this.handleApiError(m,r);let f=await m.json();h=f.response,c=f.prompt_eval_count??this.estimateTokens(b),u=f.eval_count??this.estimateTokens(h)}let p=Date.now()-i,d={promptTokens:c,completionTokens:u,totalTokens:c+u},y=C.calculateCost(r,d);return v.recordTokenUsage(o,"ollama-provider","llm","generate",{inputTokens:c,outputTokens:u,totalTokens:c+u,estimatedCostUsd:y.totalCost}),{content:h,model:r,provider:"ollama",usage:d,cost:y,latencyMs:p,finishReason:"stop",cached:!1,requestId:o}}catch(m){throw m instanceof Error&&"code"in m?m:a(m instanceof Error?m.message:"Request failed","NETWORK_ERROR",{provider:"ollama",model:r,retryable:!0,cause:m})}}async embed(t,e){let r=e?.model??"all-MiniLM-L6-v2",s=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),o=Date.now()-s;if(!n.ok)throw await this.handleApiError(n,r);return{embedding:(await n.json()).embedding,model:r,provider:"ollama",tokenCount:this.estimateTokens(t),latencyMs:o,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(),s=await this.generate(t,{model:r,temperature:e?.temperature??.1,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
8
+ ${t}`:t;if(m=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:s,stop:e?.stopSequences}})},e?.timeoutMs??this.config.timeoutMs??12e4),!m.ok)throw await this.handleApiError(m,r);let f=await m.json();h=f.response,c=f.prompt_eval_count??this.estimateTokens(b),p=f.eval_count??this.estimateTokens(h)}let l=Date.now()-i,d={promptTokens:c,completionTokens:p,totalTokens:c+p},y=M.calculateCost(r,d);return C.recordTokenUsage(o,"ollama-provider","llm","generate",{inputTokens:c,outputTokens:p,totalTokens:c+p,estimatedCostUsd:y.totalCost}),{content:h,model:r,provider:"ollama",usage:d,cost:y,latencyMs:l,finishReason:"stop",cached:!1,requestId:o}}catch(m){throw m instanceof Error&&"code"in m?m:a(m instanceof Error?m.message:"Request failed","NETWORK_ERROR",{provider:"ollama",model:r,retryable:!0,cause:m})}}async embed(t,e){let r=e?.model??"all-MiniLM-L6-v2",s=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),o=Date.now()-s;if(!n.ok)throw await this.handleApiError(n,r);return{embedding:(await n.json()).embedding,model:r,provider:"ollama",tokenCount:this.estimateTokens(t),latencyMs:o,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(),s=await this.generate(t,{model:r,temperature:e?.temperature??.1,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
9
9
 
10
- `,"```","// ","# "]});return{completion:s.content,model:s.model,provider:"ollama",usage:s.usage,latencyMs:s.latencyMs,cached:s.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??"http://localhost:11434").replace(/\/$/,"")}formatMessages(t,e){let r=[];e&&r.push({role:"system",content:e});for(let s of t)r.push({role:s.role,content:s.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 s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await fetch(t,{...e,signal:s.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"ollama",retryable:!0}):o}finally{clearTimeout(n)}}};O();re();var Ce={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},$={"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}},F=class{type="openai";name="OpenRouter";config;requestId=0;cachedModels=null;constructor(t={}){this.config={...Ce,...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),s=Date.now()-e;if(!r.ok){let i=await r.text();return{healthy:!1,latencyMs:s,error:`API error: ${r.status} - ${i}`}}let o=(await r.json()).data?.map(i=>i.id)||[];return this.cachedModels=o,{healthy:!0,latencyMs:s,models:o.slice(0,20),details:{totalModels:o.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:"openai",retryable:!1});let s=this.formatMessages(t,e?.systemPrompt),n=e?.model??this.config.model,o=e?.maxTokens??this.config.maxTokens??4096,i=e?.temperature??this.config.temperature??.7,l=`openrouter-${++this.requestId}-${Date.now()}`,m=Date.now(),h={model:n,max_tokens:o,temperature:i,messages:s};e?.stopSequences&&e.stopSequences.length>0&&(h.stop=e.stopSequences),this.config.allowFallback!==void 0&&(h.route=this.config.allowFallback?"fallback":void 0),this.config.forceProvider&&(h.provider={order:[this.config.forceProvider]});try{let c=await this.fetchWithRetry(`${this.getBaseUrl()}/chat/completions`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify(h)},e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),u=Date.now()-m;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 p=await c.json(),d={promptTokens:p.usage?.prompt_tokens??0,completionTokens:p.usage?.completion_tokens??0,totalTokens:p.usage?.total_tokens??0},y=this.calculateCost(n,d);return v.recordTokenUsage(l,"openrouter-provider","llm","generate",{inputTokens:d.promptTokens,outputTokens:d.completionTokens,totalTokens:d.totalTokens,estimatedCostUsd:y.totalCost}),{content:p.choices[0]?.message?.content??"",model:p.model,provider:"openai",usage:d,cost:y,latencyMs:u,finishReason:this.mapFinishReason(p.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*generateStream(t,e){if(!this.getApiKey())throw a("OpenRouter API key not configured","API_KEY_MISSING",{provider:"openai",retryable:!1});let s=this.formatMessages(t,e?.systemPrompt),n=e?.model??this.config.model,o=e?.maxTokens??this.config.maxTokens??4096,i=e?.temperature??this.config.temperature??.7,l=`openrouter-stream-${++this.requestId}-${Date.now()}`,m=Date.now(),h={model:n,max_tokens:o,temperature:i,messages:s,stream:!0};e?.stopSequences&&e.stopSequences.length>0&&(h.stop=e.stopSequences);let c=await this.fetchWithTimeout(`${this.getBaseUrl()}/chat/completions`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify(h)},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:"openai",model:n,retryable:!0});let u="",p="stop",d=n,y=c.body.getReader(),b=new TextDecoder,f="";try{for(;;){let{done:w,value:Y}=await y.read();if(w)break;f+=b.decode(Y,{stream:!0});let I=f.split(`
11
- `);f=I.pop()||"";for(let A of I){let L=A.trim();if(!(!L||L==="data: [DONE]")&&L.startsWith("data: "))try{let x=D(L.slice(6)),X=x.choices[0]?.delta;X?.content&&(u+=X.content,yield X.content),x.choices[0]?.finish_reason&&(p=this.mapFinishReason(x.choices[0].finish_reason)),x.model&&(d=x.model)}catch{}}}}finally{y.releaseLock()}let E=Date.now()-m,M=Math.ceil(JSON.stringify(s).length/4),_=Math.ceil(u.length/4),P={promptTokens:M,completionTokens:_,totalTokens:M+_},S=this.calculateCost(n,P);return v.recordTokenUsage(l,"openrouter-provider","llm","generate-stream",{inputTokens:P.promptTokens,outputTokens:P.completionTokens,totalTokens:P.totalTokens,estimatedCostUsd:S.totalCost}),{content:u,model:d,provider:"openai",usage:P,cost:S,latencyMs:E,finishReason:p,cached:!1,requestId:l}}async embed(t,e){if(!this.getApiKey())throw a("OpenRouter API key not configured","API_KEY_MISSING",{provider:"openai",retryable:!1});let s=e?.model??"openai/text-embedding-3-small",n=Date.now();try{let o=await this.fetchWithTimeout(`${this.getBaseUrl()}/embeddings`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify({model:s,input:t})},e?.timeoutMs??this.config.timeoutMs??3e4),i=Date.now()-n;if(!o.ok){let m=await o.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(o.status,m,s)}let l=await o.json();return{embedding:l.data[0].embedding,model:l.model,provider:"openai",tokenCount:l.usage.total_tokens,latencyMs:i,cached:!1}}catch(o){throw o instanceof Error&&"code"in o?o:a(o instanceof Error?o.message:"Embedding request failed","NETWORK_ERROR",{provider:"openai",model:s,retryable:!0,cause:o})}}async complete(t,e){let r=await this.generate(t,{model:e?.model,temperature:e?.temperature??.2,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
10
+ `,"```","// ","# "]});return{completion:s.content,model:s.model,provider:"ollama",usage:s.usage,latencyMs:s.latencyMs,cached:s.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??"http://localhost:11434").replace(/\/$/,"")}formatMessages(t,e){let r=[];e&&r.push({role:"system",content:e});for(let s of t)r.push({role:s.role,content:s.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 s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await fetch(t,{...e,signal:s.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"ollama",retryable:!0}):o}finally{clearTimeout(n)}}};O();re();var Ce={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},$={"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}},F=class{type="openai";name="OpenRouter";config;requestId=0;cachedModels=null;constructor(t={}){this.config={...Ce,...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),s=Date.now()-e;if(!r.ok){let i=await r.text();return{healthy:!1,latencyMs:s,error:`API error: ${r.status} - ${i}`}}let o=(await r.json()).data?.map(i=>i.id)||[];return this.cachedModels=o,{healthy:!0,latencyMs:s,models:o.slice(0,20),details:{totalModels:o.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:"openai",retryable:!1});let s=this.formatMessages(t,e?.systemPrompt),n=e?.model??this.config.model,o=e?.maxTokens??this.config.maxTokens??4096,i=e?.temperature??this.config.temperature??.7,u=`openrouter-${++this.requestId}-${Date.now()}`,m=Date.now(),h={model:n,max_tokens:o,temperature:i,messages:s};e?.stopSequences&&e.stopSequences.length>0&&(h.stop=e.stopSequences),this.config.allowFallback!==void 0&&(h.route=this.config.allowFallback?"fallback":void 0),this.config.forceProvider&&(h.provider={order:[this.config.forceProvider]});try{let c=await this.fetchWithRetry(`${this.getBaseUrl()}/chat/completions`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify(h)},e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),p=Date.now()-m;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 l=await c.json(),d={promptTokens:l.usage?.prompt_tokens??0,completionTokens:l.usage?.completion_tokens??0,totalTokens:l.usage?.total_tokens??0},y=this.calculateCost(n,d);return C.recordTokenUsage(u,"openrouter-provider","llm","generate",{inputTokens:d.promptTokens,outputTokens:d.completionTokens,totalTokens:d.totalTokens,estimatedCostUsd:y.totalCost}),{content:l.choices[0]?.message?.content??"",model:l.model,provider:"openai",usage:d,cost:y,latencyMs:p,finishReason:this.mapFinishReason(l.choices[0]?.finish_reason),cached:!1,requestId:u}}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*generateStream(t,e){if(!this.getApiKey())throw a("OpenRouter API key not configured","API_KEY_MISSING",{provider:"openai",retryable:!1});let s=this.formatMessages(t,e?.systemPrompt),n=e?.model??this.config.model,o=e?.maxTokens??this.config.maxTokens??4096,i=e?.temperature??this.config.temperature??.7,u=`openrouter-stream-${++this.requestId}-${Date.now()}`,m=Date.now(),h={model:n,max_tokens:o,temperature:i,messages:s,stream:!0};e?.stopSequences&&e.stopSequences.length>0&&(h.stop=e.stopSequences);let c=await this.fetchWithTimeout(`${this.getBaseUrl()}/chat/completions`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify(h)},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:"openai",model:n,retryable:!0});let p="",l="stop",d=n,y=c.body.getReader(),b=new TextDecoder,f="";try{for(;;){let{done:w,value:Y}=await y.read();if(w)break;f+=b.decode(Y,{stream:!0});let I=f.split(`
11
+ `);f=I.pop()||"";for(let A of I){let L=A.trim();if(!(!L||L==="data: [DONE]")&&L.startsWith("data: "))try{let x=D(L.slice(6)),X=x.choices[0]?.delta;X?.content&&(p+=X.content,yield X.content),x.choices[0]?.finish_reason&&(l=this.mapFinishReason(x.choices[0].finish_reason)),x.model&&(d=x.model)}catch{}}}}finally{y.releaseLock()}let E=Date.now()-m,k=Math.ceil(JSON.stringify(s).length/4),_=Math.ceil(p.length/4),P={promptTokens:k,completionTokens:_,totalTokens:k+_},S=this.calculateCost(n,P);return C.recordTokenUsage(u,"openrouter-provider","llm","generate-stream",{inputTokens:P.promptTokens,outputTokens:P.completionTokens,totalTokens:P.totalTokens,estimatedCostUsd:S.totalCost}),{content:p,model:d,provider:"openai",usage:P,cost:S,latencyMs:E,finishReason:l,cached:!1,requestId:u}}async embed(t,e){if(!this.getApiKey())throw a("OpenRouter API key not configured","API_KEY_MISSING",{provider:"openai",retryable:!1});let s=e?.model??"openai/text-embedding-3-small",n=Date.now();try{let o=await this.fetchWithTimeout(`${this.getBaseUrl()}/embeddings`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify({model:s,input:t})},e?.timeoutMs??this.config.timeoutMs??3e4),i=Date.now()-n;if(!o.ok){let m=await o.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(o.status,m,s)}let u=await o.json();return{embedding:u.data[0].embedding,model:u.model,provider:"openai",tokenCount:u.usage.total_tokens,latencyMs:i,cached:!1}}catch(o){throw o instanceof Error&&"code"in o?o:a(o instanceof Error?o.message:"Embedding request failed","NETWORK_ERROR",{provider:"openai",model:s,retryable:!0,cause:o})}}async complete(t,e){let r=await this.generate(t,{model:e?.model,temperature:e?.temperature??.2,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
12
12
 
13
- `]});return{completion:r.content,model:r.model,provider:"openai",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=$[this.config.model]||$.default;return{input:t.input/1e6,output:t.output/1e6}}async dispose(){this.cachedModels=null}calculateCost(t,e){let r=$[t]||$.default,s=e.promptTokens/1e6*r.input,n=e.completionTokens/1e6*r.output;return{inputCost:s,outputCost:n,totalCost:s+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 s=t.some(n=>n.role==="system");e&&!s&&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 s=e.error?.message??"Unknown API error",n=e.error?.type??"",o=e.error?.code;switch(t){case 401:throw a(s,"API_KEY_INVALID",{provider:"openai",model:r,retryable:!1});case 402:throw a(s,"COST_LIMIT_EXCEEDED",{provider:"openai",model:r,retryable:!1});case 429:throw a(s,"RATE_LIMITED",{provider:"openai",model:r,retryable:!0,retryAfterMs:6e4});case 400:throw o==="context_length_exceeded"||n==="invalid_request_error"?a(s,"CONTEXT_LENGTH_EXCEEDED",{provider:"openai",model:r,retryable:!1}):a(s,"UNKNOWN",{provider:"openai",model:r,retryable:!1});case 404:throw a(s,"MODEL_NOT_FOUND",{provider:"openai",model:r,retryable:!1});case 500:case 502:case 503:throw a(s,"PROVIDER_UNAVAILABLE",{provider:"openai",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(s,"UNKNOWN",{provider:"openai",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await fetch(t,{...e,signal:s.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"openai",retryable:!0}):o}finally{clearTimeout(n)}}async fetchWithRetry(t,e,r,s){let n;for(let o=0;o<s;o++)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)&&o<s-1){let l=k(o);await this.sleep(l);continue}return i}catch(i){if(n=T(i),o<s-1){let l=k(o);await this.sleep(l)}}throw n??new Error("Request failed after retries")}sleep(t){return new Promise(e=>setTimeout(e,t))}};O();re();var Ee={model:"gemini-1.5-pro",maxTokens:8192,temperature:.7,timeoutMs:6e4,maxRetries:3,enableCache:!0,enableCircuitBreaker:!0,baseUrl:"https://generativelanguage.googleapis.com/v1beta",safetyThreshold:"BLOCK_MEDIUM_AND_ABOVE"},W={"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-ultra":{input:7,output:21},"gemini-1.0-ultra":{input:7,output:21},default:{input:1,output:3}},j=class{type="gemini";name="Google Gemini";config;requestId=0;cachedModels=null;constructor(t={}){this.config={...Ee,...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),s=Date.now()-e;if(!r.ok){let i=await r.text();return{healthy:!1,latencyMs:s,error:`API error: ${r.status} - ${i}`}}let o=(await r.json()).models?.filter(i=>i.supportedGenerationMethods?.includes("generateContent")).map(i=>i.name.replace("models/",""))||[];return this.cachedModels=o,{healthy:!0,latencyMs:s,models:o.slice(0,20),details:{totalModels:o.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 s=this.formatContents(t),n=e?.model??this.config.model,o=e?.maxTokens??this.config.maxTokens??8192,i=e?.temperature??this.config.temperature??.7,l=`gemini-${++this.requestId}-${Date.now()}`,m=Date.now(),h={contents:s,generationConfig:{maxOutputTokens:o,temperature:i,topP:this.config.topP}};e?.systemPrompt&&(h.systemInstruction={parts:[{text:e.systemPrompt}]}),e?.stopSequences&&e.stopSequences.length>0&&(h.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(h)},e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),u=Date.now()-m;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 p=await c.json(),d={promptTokens:p.usageMetadata?.promptTokenCount??0,completionTokens:p.usageMetadata?.candidatesTokenCount??0,totalTokens:p.usageMetadata?.totalTokenCount??0},y=this.calculateCost(n,d);return v.recordTokenUsage(l,"gemini-provider","llm","generate",{inputTokens:d.promptTokens,outputTokens:d.completionTokens,totalTokens:d.totalTokens,estimatedCostUsd:y.totalCost}),{content:p.candidates[0]?.content?.parts?.map(f=>f.text??"").join("")??"",model:p.modelVersion??n,provider:"gemini",usage:d,cost:y,latencyMs:u,finishReason:this.mapFinishReason(p.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 s=this.formatContents(t),n=e?.model??this.config.model,o=e?.maxTokens??this.config.maxTokens??8192,i=e?.temperature??this.config.temperature??.7,l=`gemini-stream-${++this.requestId}-${Date.now()}`,m=Date.now(),h={contents:s,generationConfig:{maxOutputTokens:o,temperature:i}};e?.systemPrompt&&(h.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(h)},e?.timeoutMs??this.config.timeoutMs??6e4);if(!c.ok){let P=await c.json().catch(()=>({error:{message:"Unknown error",code:0,status:"UNKNOWN"}}));throw this.handleApiError(c.status,P,n)}if(!c.body)throw a("No response body for streaming","NETWORK_ERROR",{provider:"gemini",model:n,retryable:!0});let u="",p="stop",d={promptTokens:0,completionTokens:0,totalTokens:0},y=c.body.getReader(),b=new TextDecoder,f="";try{for(;;){let{done:P,value:S}=await y.read();if(P)break;f+=b.decode(S,{stream:!0});let w=f.split(`
14
- `);f=w.pop()||"";for(let Y of w){let I=Y.trim();if(!(!I||!I.startsWith("data: ")))try{let A=D(I.slice(6)),L=A.candidates?.[0]?.content?.parts?.map(x=>x.text??"").join("")??"";L&&(u+=L,yield L),A.candidates?.[0]?.finishReason&&(p=this.mapFinishReason(A.candidates[0].finishReason)),A.usageMetadata&&(d={promptTokens:A.usageMetadata.promptTokenCount,completionTokens:A.usageMetadata.candidatesTokenCount,totalTokens:A.usageMetadata.totalTokenCount})}catch{}}}}finally{y.releaseLock()}let E=Date.now()-m,M=d.totalTokens>0?d:{promptTokens:Math.ceil(JSON.stringify(s).length/4),completionTokens:Math.ceil(u.length/4),totalTokens:0};M.totalTokens=M.promptTokens+M.completionTokens;let _=this.calculateCost(n,M);return v.recordTokenUsage(l,"gemini-provider","llm","generate-stream",{inputTokens:M.promptTokens,outputTokens:M.completionTokens,totalTokens:M.totalTokens,estimatedCostUsd:_.totalCost}),{content:u,model:n,provider:"gemini",usage:M,cost:_,latencyMs:E,finishReason:p,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 s=e?.model??"text-embedding-004",n=Date.now();try{let o=await this.fetchWithTimeout(`${this.getBaseUrl()}/models/${s}: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(!o.ok){let m=await o.json().catch(()=>({error:{message:"Unknown error",code:0,status:"UNKNOWN"}}));throw this.handleApiError(o.status,m,s)}return{embedding:(await o.json()).embedding.values,model:s,provider:"gemini",tokenCount:Math.ceil(t.length/4),latencyMs:i,cached:!1}}catch(o){throw o instanceof Error&&"code"in o?o:a(o instanceof Error?o.message:"Embedding request failed","NETWORK_ERROR",{provider:"gemini",model:s,retryable:!0,cause:o})}}async complete(t,e){let r=await this.generate(t,{model:e?.model,temperature:e?.temperature??.2,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
13
+ `]});return{completion:r.content,model:r.model,provider:"openai",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=$[this.config.model]||$.default;return{input:t.input/1e6,output:t.output/1e6}}async dispose(){this.cachedModels=null}calculateCost(t,e){let r=$[t]||$.default,s=e.promptTokens/1e6*r.input,n=e.completionTokens/1e6*r.output;return{inputCost:s,outputCost:n,totalCost:s+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 s=t.some(n=>n.role==="system");e&&!s&&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 s=e.error?.message??"Unknown API error",n=e.error?.type??"",o=e.error?.code;switch(t){case 401:throw a(s,"API_KEY_INVALID",{provider:"openai",model:r,retryable:!1});case 402:throw a(s,"COST_LIMIT_EXCEEDED",{provider:"openai",model:r,retryable:!1});case 429:throw a(s,"RATE_LIMITED",{provider:"openai",model:r,retryable:!0,retryAfterMs:6e4});case 400:throw o==="context_length_exceeded"||n==="invalid_request_error"?a(s,"CONTEXT_LENGTH_EXCEEDED",{provider:"openai",model:r,retryable:!1}):a(s,"UNKNOWN",{provider:"openai",model:r,retryable:!1});case 404:throw a(s,"MODEL_NOT_FOUND",{provider:"openai",model:r,retryable:!1});case 500:case 502:case 503:throw a(s,"PROVIDER_UNAVAILABLE",{provider:"openai",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(s,"UNKNOWN",{provider:"openai",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await fetch(t,{...e,signal:s.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"openai",retryable:!0}):o}finally{clearTimeout(n)}}async fetchWithRetry(t,e,r,s){let n;for(let o=0;o<s;o++)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)&&o<s-1){let u=T(o);await this.sleep(u);continue}return i}catch(i){if(n=v(i),o<s-1){let u=T(o);await this.sleep(u)}}throw n??new Error("Request failed after retries")}sleep(t){return new Promise(e=>setTimeout(e,t))}};O();re();var Ee={model:"gemini-1.5-pro",maxTokens:8192,temperature:.7,timeoutMs:6e4,maxRetries:3,enableCache:!0,enableCircuitBreaker:!0,baseUrl:"https://generativelanguage.googleapis.com/v1beta",safetyThreshold:"BLOCK_MEDIUM_AND_ABOVE"},W={"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-ultra":{input:7,output:21},"gemini-1.0-ultra":{input:7,output:21},default:{input:1,output:3}},j=class{type="gemini";name="Google Gemini";config;requestId=0;cachedModels=null;constructor(t={}){this.config={...Ee,...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),s=Date.now()-e;if(!r.ok){let i=await r.text();return{healthy:!1,latencyMs:s,error:`API error: ${r.status} - ${i}`}}let o=(await r.json()).models?.filter(i=>i.supportedGenerationMethods?.includes("generateContent")).map(i=>i.name.replace("models/",""))||[];return this.cachedModels=o,{healthy:!0,latencyMs:s,models:o.slice(0,20),details:{totalModels:o.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 s=this.formatContents(t),n=e?.model??this.config.model,o=e?.maxTokens??this.config.maxTokens??8192,i=e?.temperature??this.config.temperature??.7,u=`gemini-${++this.requestId}-${Date.now()}`,m=Date.now(),h={contents:s,generationConfig:{maxOutputTokens:o,temperature:i,topP:this.config.topP}};e?.systemPrompt&&(h.systemInstruction={parts:[{text:e.systemPrompt}]}),e?.stopSequences&&e.stopSequences.length>0&&(h.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(h)},e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),p=Date.now()-m;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 l=await c.json(),d={promptTokens:l.usageMetadata?.promptTokenCount??0,completionTokens:l.usageMetadata?.candidatesTokenCount??0,totalTokens:l.usageMetadata?.totalTokenCount??0},y=this.calculateCost(n,d);return C.recordTokenUsage(u,"gemini-provider","llm","generate",{inputTokens:d.promptTokens,outputTokens:d.completionTokens,totalTokens:d.totalTokens,estimatedCostUsd:y.totalCost}),{content:l.candidates[0]?.content?.parts?.map(f=>f.text??"").join("")??"",model:l.modelVersion??n,provider:"gemini",usage:d,cost:y,latencyMs:p,finishReason:this.mapFinishReason(l.candidates[0]?.finishReason),cached:!1,requestId:u}}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 s=this.formatContents(t),n=e?.model??this.config.model,o=e?.maxTokens??this.config.maxTokens??8192,i=e?.temperature??this.config.temperature??.7,u=`gemini-stream-${++this.requestId}-${Date.now()}`,m=Date.now(),h={contents:s,generationConfig:{maxOutputTokens:o,temperature:i}};e?.systemPrompt&&(h.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(h)},e?.timeoutMs??this.config.timeoutMs??6e4);if(!c.ok){let P=await c.json().catch(()=>({error:{message:"Unknown error",code:0,status:"UNKNOWN"}}));throw this.handleApiError(c.status,P,n)}if(!c.body)throw a("No response body for streaming","NETWORK_ERROR",{provider:"gemini",model:n,retryable:!0});let p="",l="stop",d={promptTokens:0,completionTokens:0,totalTokens:0},y=c.body.getReader(),b=new TextDecoder,f="";try{for(;;){let{done:P,value:S}=await y.read();if(P)break;f+=b.decode(S,{stream:!0});let w=f.split(`
14
+ `);f=w.pop()||"";for(let Y of w){let I=Y.trim();if(!(!I||!I.startsWith("data: ")))try{let A=D(I.slice(6)),L=A.candidates?.[0]?.content?.parts?.map(x=>x.text??"").join("")??"";L&&(p+=L,yield L),A.candidates?.[0]?.finishReason&&(l=this.mapFinishReason(A.candidates[0].finishReason)),A.usageMetadata&&(d={promptTokens:A.usageMetadata.promptTokenCount,completionTokens:A.usageMetadata.candidatesTokenCount,totalTokens:A.usageMetadata.totalTokenCount})}catch{}}}}finally{y.releaseLock()}let E=Date.now()-m,k=d.totalTokens>0?d:{promptTokens:Math.ceil(JSON.stringify(s).length/4),completionTokens:Math.ceil(p.length/4),totalTokens:0};k.totalTokens=k.promptTokens+k.completionTokens;let _=this.calculateCost(n,k);return C.recordTokenUsage(u,"gemini-provider","llm","generate-stream",{inputTokens:k.promptTokens,outputTokens:k.completionTokens,totalTokens:k.totalTokens,estimatedCostUsd:_.totalCost}),{content:p,model:n,provider:"gemini",usage:k,cost:_,latencyMs:E,finishReason:l,cached:!1,requestId:u}}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 s=e?.model??"text-embedding-004",n=Date.now();try{let o=await this.fetchWithTimeout(`${this.getBaseUrl()}/models/${s}: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(!o.ok){let m=await o.json().catch(()=>({error:{message:"Unknown error",code:0,status:"UNKNOWN"}}));throw this.handleApiError(o.status,m,s)}return{embedding:(await o.json()).embedding.values,model:s,provider:"gemini",tokenCount:Math.ceil(t.length/4),latencyMs:i,cached:!1}}catch(o){throw o instanceof Error&&"code"in o?o:a(o instanceof Error?o.message:"Embedding request failed","NETWORK_ERROR",{provider:"gemini",model:s,retryable:!0,cause:o})}}async complete(t,e){let r=await this.generate(t,{model:e?.model,temperature:e?.temperature??.2,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
15
15
 
16
- `]});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-pro","gemini-1.0-pro","gemini-1.5-pro","gemini-1.5-pro-latest","gemini-1.5-flash","gemini-1.5-flash-latest","gemini-2.0-flash-exp","gemini-ultra"]}getCostPerToken(){let t=W[this.config.model]||W.default;return{input:t.input/1e6,output:t.output/1e6}}async dispose(){this.cachedModels=null}calculateCost(t,e){let r=W[t]||W.default,s=e.promptTokens/1e6*r.input,n=e.completionTokens/1e6*r.output;return{inputCost:s,outputCost:n,totalCost:s+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 s=e.error?.message??"Unknown API error",n=e.error?.status??"";switch(t){case 400:throw s.includes("token")||s.includes("length")||s.includes("exceeds")?a(s,"CONTEXT_LENGTH_EXCEEDED",{provider:"gemini",model:r,retryable:!1}):s.includes("API key")?a(s,"API_KEY_INVALID",{provider:"gemini",model:r,retryable:!1}):a(s,"UNKNOWN",{provider:"gemini",model:r,retryable:!1});case 401:case 403:throw a(s,"API_KEY_INVALID",{provider:"gemini",model:r,retryable:!1});case 404:throw a(s,"MODEL_NOT_FOUND",{provider:"gemini",model:r,retryable:!1});case 429:throw a(s,"RATE_LIMITED",{provider:"gemini",model:r,retryable:!0,retryAfterMs:6e4});case 500:case 502:case 503:throw a(s,"PROVIDER_UNAVAILABLE",{provider:"gemini",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(s,"UNKNOWN",{provider:"gemini",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await fetch(t,{...e,signal:s.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"gemini",retryable:!0}):o}finally{clearTimeout(n)}}async fetchWithRetry(t,e,r,s){let n;for(let o=0;o<s;o++)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)&&o<s-1){let l=k(o);await this.sleep(l);continue}return i}catch(i){if(n=T(i),o<s-1){let l=k(o);await this.sleep(l)}}throw n??new Error("Request failed after retries")}sleep(t){return new Promise(e=>setTimeout(e,t))}};O();var Me={model:"gpt-4o",maxTokens:4096,temperature:.7,timeoutMs:6e4,maxRetries:3,enableCache:!0,enableCircuitBreaker:!0,apiVersion:"2024-02-15-preview"},V=class{type="azure-openai";name="Azure OpenAI";config;requestId=0;constructor(t){this.config={...Me,...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 s=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(!s.ok){let o=await s.text();return{healthy:!1,latencyMs:n,error:`API error: ${s.status} - ${o}`}}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(s){return{healthy:!1,error:s instanceof Error?s.message:"Unknown error"}}}async generate(t,e){let r=this.getEndpoint(),s=this.getApiKey()||this.getAzureAdToken();if(!r||!s)throw a("Azure OpenAI not configured","API_KEY_MISSING",{provider:"azure-openai",retryable:!1});let n=this.formatMessages(t,e?.systemPrompt),o=e?.model??this.config.model??"gpt-4o",i=e?.maxTokens??this.config.maxTokens??4096,l=e?.temperature??this.config.temperature??.7,m=`azure-openai-${++this.requestId}-${Date.now()}`,h=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),p=Date.now()-h;if(!u.ok){let E=await u.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(u.status,E,o)}let d=await u.json(),y={promptTokens:d.usage.prompt_tokens,completionTokens:d.usage.completion_tokens,totalTokens:d.usage.total_tokens},b=C.calculateCost(o,y);return v.recordTokenUsage(m,"azure-openai-provider","llm","generate",{inputTokens:d.usage.prompt_tokens,outputTokens:d.usage.completion_tokens,totalTokens:d.usage.total_tokens,estimatedCostUsd:b.totalCost}),{content:d.choices[0]?.message?.content??"",model:d.model,provider:"azure-openai",usage:y,cost:b,latencyMs:p,finishReason:this.mapFinishReason(d.choices[0]?.finish_reason),cached:!1,requestId:m}}catch(u){throw u instanceof Error&&"code"in u?u:a(u instanceof Error?u.message:"Request failed","NETWORK_ERROR",{provider:"azure-openai",model:o,retryable:!0,cause:u})}}async embed(t,e){let r=this.getEndpoint(),s=this.getApiKey()||this.getAzureAdToken();if(!r||!s)throw a("Azure OpenAI not configured","API_KEY_MISSING",{provider:"azure-openai",retryable:!1});let n=e?.model??this.config.deploymentId,o=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()-o;if(!i.ok){let h=await i.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(i.status,h,n)}let m=await i.json();return{embedding:m.data[0].embedding,model:m.model,provider:"azure-openai",tokenCount:m.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??[`
16
+ `]});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-pro","gemini-1.0-pro","gemini-1.5-pro","gemini-1.5-pro-latest","gemini-1.5-flash","gemini-1.5-flash-latest","gemini-2.0-flash-exp","gemini-ultra"]}getCostPerToken(){let t=W[this.config.model]||W.default;return{input:t.input/1e6,output:t.output/1e6}}async dispose(){this.cachedModels=null}calculateCost(t,e){let r=W[t]||W.default,s=e.promptTokens/1e6*r.input,n=e.completionTokens/1e6*r.output;return{inputCost:s,outputCost:n,totalCost:s+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 s=e.error?.message??"Unknown API error",n=e.error?.status??"";switch(t){case 400:throw s.includes("token")||s.includes("length")||s.includes("exceeds")?a(s,"CONTEXT_LENGTH_EXCEEDED",{provider:"gemini",model:r,retryable:!1}):s.includes("API key")?a(s,"API_KEY_INVALID",{provider:"gemini",model:r,retryable:!1}):a(s,"UNKNOWN",{provider:"gemini",model:r,retryable:!1});case 401:case 403:throw a(s,"API_KEY_INVALID",{provider:"gemini",model:r,retryable:!1});case 404:throw a(s,"MODEL_NOT_FOUND",{provider:"gemini",model:r,retryable:!1});case 429:throw a(s,"RATE_LIMITED",{provider:"gemini",model:r,retryable:!0,retryAfterMs:6e4});case 500:case 502:case 503:throw a(s,"PROVIDER_UNAVAILABLE",{provider:"gemini",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(s,"UNKNOWN",{provider:"gemini",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await fetch(t,{...e,signal:s.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"gemini",retryable:!0}):o}finally{clearTimeout(n)}}async fetchWithRetry(t,e,r,s){let n;for(let o=0;o<s;o++)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)&&o<s-1){let u=T(o);await this.sleep(u);continue}return i}catch(i){if(n=v(i),o<s-1){let u=T(o);await this.sleep(u)}}throw n??new Error("Request failed after retries")}sleep(t){return new Promise(e=>setTimeout(e,t))}};O();var Me={model:"gpt-4o",maxTokens:4096,temperature:.7,timeoutMs:6e4,maxRetries:3,enableCache:!0,enableCircuitBreaker:!0,apiVersion:"2024-02-15-preview"},V=class{type="azure-openai";name="Azure OpenAI";config;requestId=0;constructor(t){this.config={...Me,...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 s=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(!s.ok){let o=await s.text();return{healthy:!1,latencyMs:n,error:`API error: ${s.status} - ${o}`}}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(s){return{healthy:!1,error:s instanceof Error?s.message:"Unknown error"}}}async generate(t,e){let r=this.getEndpoint(),s=this.getApiKey()||this.getAzureAdToken();if(!r||!s)throw a("Azure OpenAI not configured","API_KEY_MISSING",{provider:"azure-openai",retryable:!1});let n=this.formatMessages(t,e?.systemPrompt),o=e?.model??this.config.model??"gpt-4o",i=e?.maxTokens??this.config.maxTokens??4096,u=e?.temperature??this.config.temperature??.7,m=`azure-openai-${++this.requestId}-${Date.now()}`,h=Date.now(),c={max_tokens:i,temperature:u,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 p=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),l=Date.now()-h;if(!p.ok){let E=await p.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(p.status,E,o)}let d=await p.json(),y={promptTokens:d.usage.prompt_tokens,completionTokens:d.usage.completion_tokens,totalTokens:d.usage.total_tokens},b=M.calculateCost(o,y);return C.recordTokenUsage(m,"azure-openai-provider","llm","generate",{inputTokens:d.usage.prompt_tokens,outputTokens:d.usage.completion_tokens,totalTokens:d.usage.total_tokens,estimatedCostUsd:b.totalCost}),{content:d.choices[0]?.message?.content??"",model:d.model,provider:"azure-openai",usage:y,cost:b,latencyMs:l,finishReason:this.mapFinishReason(d.choices[0]?.finish_reason),cached:!1,requestId:m}}catch(p){throw p instanceof Error&&"code"in p?p:a(p instanceof Error?p.message:"Request failed","NETWORK_ERROR",{provider:"azure-openai",model:o,retryable:!0,cause:p})}}async embed(t,e){let r=this.getEndpoint(),s=this.getApiKey()||this.getAzureAdToken();if(!r||!s)throw a("Azure OpenAI not configured","API_KEY_MISSING",{provider:"azure-openai",retryable:!1});let n=e?.model??this.config.deploymentId,o=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),u=Date.now()-o;if(!i.ok){let h=await i.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(i.status,h,n)}let m=await i.json();return{embedding:m.data[0].embedding,model:m.model,provider:"azure-openai",tokenCount:m.usage.total_tokens,latencyMs:u,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??[`
17
17
 
18
- `]});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 C.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(),s=e??this.config.deploymentId,n=this.getApiVersion();return`${r}/openai/deployments/${s}/${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 s=t.some(n=>n.role==="system");e&&!s&&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 s=e.error?.message??"Unknown API error",n=e.error?.code??"",o=e.error?.innererror?.code??"";switch(t){case 401:throw a(s,"API_KEY_INVALID",{provider:"azure-openai",model:r,retryable:!1});case 403:throw a(s,"API_KEY_INVALID",{provider:"azure-openai",model:r,retryable:!1});case 429:throw a(s,"RATE_LIMITED",{provider:"azure-openai",model:r,retryable:!0,retryAfterMs:6e4});case 400:throw n==="context_length_exceeded"||o==="context_length_exceeded"?a(s,"CONTEXT_LENGTH_EXCEEDED",{provider:"azure-openai",model:r,retryable:!1}):o==="content_filter"?a(s,"CONTENT_FILTERED",{provider:"azure-openai",model:r,retryable:!1}):a(s,"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(s,"PROVIDER_UNAVAILABLE",{provider:"azure-openai",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(s,"UNKNOWN",{provider:"azure-openai",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await fetch(t,{...e,signal:s.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"azure-openai",retryable:!0}):o}finally{clearTimeout(n)}}async fetchWithRetry(t,e,r,s){let n;for(let o=0;o<s;o++)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)&&o<s-1){let l=k(o);await this.sleep(l);continue}return i}catch(i){if(n=T(i),o<s-1){let l=k(o);await this.sleep(l)}}throw n??new Error("Request failed after retries")}sleep(t){return new Promise(e=>setTimeout(e,t))}};O();var Pe={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},te={"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"},ds=Object.fromEntries(Object.entries(te).map(([g,t])=>[t,g])),H=class{type="bedrock";name="AWS Bedrock";config;requestId=0;constructor(t={}){this.config={...Pe,...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),s=await this.invokeModel(r,{anthropic_version:"bedrock-2023-05-31",max_tokens:1,messages:[{role:"user",content:"Hi"}]},5e3),n=Date.now()-e;if(!s.ok){let o=await s.text();return{healthy:!1,latencyMs:n,error:`API error: ${s.status} - ${o}`}}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 s=this.formatMessages(t),n=e?.model??this.config.model,o=this.mapToBedrockModel(n),i=e?.maxTokens??this.config.maxTokens??4096,l=e?.temperature??this.config.temperature??.7,m=`bedrock-${++this.requestId}-${Date.now()}`,h=Date.now(),c={anthropic_version:"bedrock-2023-05-31",max_tokens:i,messages:s};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(o,c,e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),p=Date.now()-h;if(!u.ok){let E=await u.json().catch(()=>({message:"Unknown error"}));throw this.handleApiError(u.status,E,n)}let d=await u.json(),y={promptTokens:d.usage.input_tokens,completionTokens:d.usage.output_tokens,totalTokens:d.usage.input_tokens+d.usage.output_tokens},b=C.calculateCost(o,y);return v.recordTokenUsage(m,"bedrock-provider","llm","generate",{inputTokens:d.usage.input_tokens,outputTokens:d.usage.output_tokens,totalTokens:d.usage.input_tokens+d.usage.output_tokens,estimatedCostUsd:b.totalCost}),{content:d.content.filter(E=>E.type==="text").map(E=>E.text).join(""),model:o,provider:"bedrock",usage:y,cost:b,latencyMs:p,finishReason:this.mapFinishReason(d.stop_reason),cached:!1,requestId:m}}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??[`
18
+ `]});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 M.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(),s=e??this.config.deploymentId,n=this.getApiVersion();return`${r}/openai/deployments/${s}/${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 s=t.some(n=>n.role==="system");e&&!s&&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 s=e.error?.message??"Unknown API error",n=e.error?.code??"",o=e.error?.innererror?.code??"";switch(t){case 401:throw a(s,"API_KEY_INVALID",{provider:"azure-openai",model:r,retryable:!1});case 403:throw a(s,"API_KEY_INVALID",{provider:"azure-openai",model:r,retryable:!1});case 429:throw a(s,"RATE_LIMITED",{provider:"azure-openai",model:r,retryable:!0,retryAfterMs:6e4});case 400:throw n==="context_length_exceeded"||o==="context_length_exceeded"?a(s,"CONTEXT_LENGTH_EXCEEDED",{provider:"azure-openai",model:r,retryable:!1}):o==="content_filter"?a(s,"CONTENT_FILTERED",{provider:"azure-openai",model:r,retryable:!1}):a(s,"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(s,"PROVIDER_UNAVAILABLE",{provider:"azure-openai",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(s,"UNKNOWN",{provider:"azure-openai",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await fetch(t,{...e,signal:s.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"azure-openai",retryable:!0}):o}finally{clearTimeout(n)}}async fetchWithRetry(t,e,r,s){let n;for(let o=0;o<s;o++)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)&&o<s-1){let u=T(o);await this.sleep(u);continue}return i}catch(i){if(n=v(i),o<s-1){let u=T(o);await this.sleep(u)}}throw n??new Error("Request failed after retries")}sleep(t){return new Promise(e=>setTimeout(e,t))}};O();var Pe={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},te={"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"},ds=Object.fromEntries(Object.entries(te).map(([g,t])=>[t,g])),H=class{type="bedrock";name="AWS Bedrock";config;requestId=0;constructor(t={}){this.config={...Pe,...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),s=await this.invokeModel(r,{anthropic_version:"bedrock-2023-05-31",max_tokens:1,messages:[{role:"user",content:"Hi"}]},5e3),n=Date.now()-e;if(!s.ok){let o=await s.text();return{healthy:!1,latencyMs:n,error:`API error: ${s.status} - ${o}`}}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 s=this.formatMessages(t),n=e?.model??this.config.model,o=this.mapToBedrockModel(n),i=e?.maxTokens??this.config.maxTokens??4096,u=e?.temperature??this.config.temperature??.7,m=`bedrock-${++this.requestId}-${Date.now()}`,h=Date.now(),c={anthropic_version:"bedrock-2023-05-31",max_tokens:i,messages:s};u!==void 0&&(c.temperature=Math.min(Math.max(u,0),1)),e?.systemPrompt&&(c.system=e.systemPrompt),e?.stopSequences&&e.stopSequences.length>0&&(c.stop_sequences=e.stopSequences);try{let p=await this.invokeModelWithRetry(o,c,e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),l=Date.now()-h;if(!p.ok){let E=await p.json().catch(()=>({message:"Unknown error"}));throw this.handleApiError(p.status,E,n)}let d=await p.json(),y={promptTokens:d.usage.input_tokens,completionTokens:d.usage.output_tokens,totalTokens:d.usage.input_tokens+d.usage.output_tokens},b=M.calculateCost(o,y);return C.recordTokenUsage(m,"bedrock-provider","llm","generate",{inputTokens:d.usage.input_tokens,outputTokens:d.usage.output_tokens,totalTokens:d.usage.input_tokens+d.usage.output_tokens,estimatedCostUsd:b.totalCost}),{content:d.content.filter(E=>E.type==="text").map(E=>E.text).join(""),model:o,provider:"bedrock",usage:y,cost:b,latencyMs:l,finishReason:this.mapFinishReason(d.stop_reason),cached:!1,requestId:m}}catch(p){throw p instanceof Error&&"code"in p?p:a(p instanceof Error?p.message:"Request failed","NETWORK_ERROR",{provider:"bedrock",model:n,retryable:!0,cause:p})}}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??[`
19
19
 
20
- `,"```"]});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(te)}getCostPerToken(){let t=this.mapToBedrockModel(this.config.model);return C.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=te[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 s=this.getCredentials();if(!s)throw a("AWS credentials not configured","API_KEY_MISSING",{provider:"bedrock",retryable:!1});let n=this.getEndpointUrl(t),o=JSON.stringify(e),i=await this.signRequest(n,o,s);return this.fetchWithTimeout(n,{method:"POST",headers:i,body:o},r)}async invokeModelWithRetry(t,e,r,s){let n;for(let o=0;o<s;o++)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)&&o<s-1){let l=k(o);await this.sleep(l);continue}return i}catch(i){if(n=T(i),o<s-1){let l=k(o);await this.sleep(l)}}throw n??new Error("Request failed after retries")}async signRequest(t,e,r){let s=new URL(t),o=new Date().toISOString().replace(/[:-]|\.\d{3}/g,""),i=o.substring(0,8),l={"Content-Type":"application/json",Host:s.host,"X-Amz-Date":o};r.sessionToken&&(l["X-Amz-Security-Token"]=r.sessionToken);let m="POST",h=s.pathname,c="",u=Object.keys(l).map(w=>w.toLowerCase()).sort().join(";"),p=Object.keys(l).map(w=>`${w.toLowerCase()}:${l[w].trim()}`).sort().join(`
20
+ `,"```"]});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(te)}getCostPerToken(){let t=this.mapToBedrockModel(this.config.model);return M.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=te[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 s=this.getCredentials();if(!s)throw a("AWS credentials not configured","API_KEY_MISSING",{provider:"bedrock",retryable:!1});let n=this.getEndpointUrl(t),o=JSON.stringify(e),i=await this.signRequest(n,o,s);return this.fetchWithTimeout(n,{method:"POST",headers:i,body:o},r)}async invokeModelWithRetry(t,e,r,s){let n;for(let o=0;o<s;o++)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)&&o<s-1){let u=T(o);await this.sleep(u);continue}return i}catch(i){if(n=v(i),o<s-1){let u=T(o);await this.sleep(u)}}throw n??new Error("Request failed after retries")}async signRequest(t,e,r){let s=new URL(t),o=new Date().toISOString().replace(/[:-]|\.\d{3}/g,""),i=o.substring(0,8),u={"Content-Type":"application/json",Host:s.host,"X-Amz-Date":o};r.sessionToken&&(u["X-Amz-Security-Token"]=r.sessionToken);let m="POST",h=s.pathname,c="",p=Object.keys(u).map(w=>w.toLowerCase()).sort().join(";"),l=Object.keys(u).map(w=>`${w.toLowerCase()}:${u[w].trim()}`).sort().join(`
21
21
  `)+`
22
- `,d=await this.sha256(e),y=[m,h,c,p,u,d].join(`
23
- `),b="AWS4-HMAC-SHA256",f=`${i}/${r.region}/${r.service}/aws4_request`,E=await this.sha256(y),M=[b,o,f,E].join(`
24
- `),_=await this.getSignatureKey(r.secretAccessKey,i,r.region,r.service),P=await this.hmacHex(_,M),S=`${b} Credential=${r.accessKeyId}/${f}, SignedHeaders=${u}, Signature=${P}`;return{...l,Authorization:S}}async sha256(t){let r=new TextEncoder().encode(t),s=await crypto.subtle.digest("SHA-256",r);return Array.from(new Uint8Array(s)).map(n=>n.toString(16).padStart(2,"0")).join("")}async hmac(t,e){let r=new TextEncoder,s=t instanceof Uint8Array?t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength):t,n=await crypto.subtle.importKey("raw",s,{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(s=>s.toString(16).padStart(2,"0")).join("")}async getSignatureKey(t,e,r,s){let n=new TextEncoder,o=await this.hmac(n.encode(`AWS4${t}`),e),i=await this.hmac(o,r),l=await this.hmac(i,s);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 s=e.message??"Unknown API error",n=e.__type??"";switch(t){case 401:case 403:throw a(s,"API_KEY_INVALID",{provider:"bedrock",model:r,retryable:!1});case 429:throw a(s,"RATE_LIMITED",{provider:"bedrock",model:r,retryable:!0,retryAfterMs:6e4});case 400:throw n.includes("ValidationException")&&s.includes("token")?a(s,"CONTEXT_LENGTH_EXCEEDED",{provider:"bedrock",model:r,retryable:!1}):a(s,"UNKNOWN",{provider:"bedrock",model:r,retryable:!1});case 500:case 502:case 503:throw a(s,"PROVIDER_UNAVAILABLE",{provider:"bedrock",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(s,"UNKNOWN",{provider:"bedrock",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await fetch(t,{...e,signal:s.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"bedrock",retryable:!0}):o}finally{clearTimeout(n)}}sleep(t){return new Promise(e=>setTimeout(e,t))}};O();var we={primary:"claude",fallbacks:["openai","ollama"],loadBalancing:"round-robin",providers:{},global:{enableCostTracking:!0,enableMetrics:!0}},J=class{providers=new Map;circuitBreakers;cache;costTracker;config;metrics=new Map;roundRobinIndex=0;initialized=!1;constructor(t={},e){this.config={...we,...t},this.circuitBreakers=new N(e?.circuitBreakerConfig),this.cache=new U(e?.cacheConfig),this.costTracker=e?.costTracker??oe()}async initialize(){if(!this.initialized){await this.createProviders();for(let t of this.providers.keys())this.initializeMetrics(t);this.initialized=!0}}async generate(t,e){if(await this.ensureInitialized(),!e?.skipCache){let s=typeof t=="string"?t:JSON.stringify(t),n=this.cache.getGeneration(s,{model:e?.model,temperature:e?.temperature,maxTokens:e?.maxTokens,systemPrompt:e?.systemPrompt});if(n)return{...n,cached:!0}}let r=await this.executeWithFailover("generate",async s=>s.generate(t,e),e?.preferredProvider);if(!e?.skipCache){let s=typeof t=="string"?t:JSON.stringify(t);this.cache.setGeneration(s,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),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"],s=await this.executeWithFailover("embed",async n=>n.embed(t,e),r.find(n=>this.providers.has(n)));return e?.skipCache||this.cache.setEmbedding(t,s,{model:e?.model}),s}async complete(t,e){if(await this.ensureInitialized(),!e?.skipCache){let s=this.cache.getCompletion(t,{model:e?.model,temperature:e?.temperature,maxTokens:e?.maxTokens});if(s)return{...s,cached:!0}}let r=await this.executeWithFailover("complete",async s=>s.complete(t,e));return e?.skipCache||this.cache.setCompletion(t,r,{model:e?.model,temperature:e?.temperature,maxTokens:e?.maxTokens}),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 s=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:s.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 B(this.config.providers.claude);case"openai":return new G(this.config.providers.openai);case"ollama":return new z(this.config.providers.ollama);case"openrouter":return new F(this.config.providers.openrouter);case"gemini":return new j(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 V(e)}case"bedrock":return new H(this.config.providers.bedrock);default:throw new Error(`Unknown provider type: ${t}`)}}initializeMetrics(t){this.metrics.set(t,{totalRequests:0,successCount:0,failureCount:0,latencies:[],totalCost:0,totalTokens:0})}async executeWithFailover(t,e,r){let s=this.selectProvider(r),n=new Set,o,i=[s.provider.type,...this.config.fallbacks.filter(l=>l!==s.provider.type)];for(let l of i){if(n.has(l))continue;n.add(l);let m=this.providers.get(l);if(!m)continue;let h=this.circuitBreakers.getBreaker(l);if(h.canExecute())try{let c=Date.now(),u=await h.execute(()=>e(m)),p=Date.now()-c;return this.recordSuccess(l,p,u),u}catch(c){if(o=T(c),this.recordFailure(l,o),"retryable"in o&&!o.retryable)throw o}}throw a(`All providers failed for ${t}: ${o?.message??"Unknown error"}`,"PROVIDER_UNAVAILABLE",{retryable:!1,cause:o})}selectProvider(t){if(t){let r=this.providers.get(t),s=this.circuitBreakers.getBreaker(t);if(r&&s.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 s of t){let n=this.providers.get(s),{input:o,output:i}=n.getCostPerToken(),l=o+i;l<e&&(e=l,r=s)}return{provider:this.providers.get(r),reason:"cost-optimization",metadata:{estimatedCost:e}}}selectLeastLatency(t){let e=1/0,r=t[0];for(let s of t){let n=this.metrics.get(s);if(n&&n.latencies.length>0){let o=this.calculateAverage(n.latencies);o<e&&(e=o,r=s)}}return{provider:this.providers.get(r),reason:"latency-optimization",metadata:{avgLatency:e}}}selectRandom(t){let e=se(0,t.length),r=t[e];return{provider:this.providers.get(r),reason:"load-balance"}}recordSuccess(t,e,r){let s=this.metrics.get(t);if(s&&(s.totalRequests++,s.successCount++,s.latencies.push(e),s.latencies.length>1e3&&(s.latencies=s.latencies.slice(-1e3)),r&&typeof r=="object")){let n=r;n.cost?.totalCost&&(s.totalCost+=n.cost.totalCost),n.usage?.totalTokens&&(s.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,o)=>n-o),s=Math.ceil(e/100*r.length)-1;return r[Math.max(0,s)]}};function $s(g){return new J(g)}function Fs(){return new J({primary:"claude",fallbacks:["openai","ollama"],loadBalancing:"least-cost",providers:{claude:{model:"claude-sonnet-4-6",maxTokens:8192,temperature:.3},openai:{model:"gpt-4o",maxTokens:8192,temperature:.3},ollama:{model:"llama3.1",maxTokens:4096,temperature:.3}},global:{enableCostTracking:!0,enableMetrics:!0,maxCostPerDay:100}})}export{we as a,J as b,$s as c,Fs as d};
22
+ `,d=await this.sha256(e),y=[m,h,c,l,p,d].join(`
23
+ `),b="AWS4-HMAC-SHA256",f=`${i}/${r.region}/${r.service}/aws4_request`,E=await this.sha256(y),k=[b,o,f,E].join(`
24
+ `),_=await this.getSignatureKey(r.secretAccessKey,i,r.region,r.service),P=await this.hmacHex(_,k),S=`${b} Credential=${r.accessKeyId}/${f}, SignedHeaders=${p}, Signature=${P}`;return{...u,Authorization:S}}async sha256(t){let r=new TextEncoder().encode(t),s=await crypto.subtle.digest("SHA-256",r);return Array.from(new Uint8Array(s)).map(n=>n.toString(16).padStart(2,"0")).join("")}async hmac(t,e){let r=new TextEncoder,s=t instanceof Uint8Array?t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength):t,n=await crypto.subtle.importKey("raw",s,{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(s=>s.toString(16).padStart(2,"0")).join("")}async getSignatureKey(t,e,r,s){let n=new TextEncoder,o=await this.hmac(n.encode(`AWS4${t}`),e),i=await this.hmac(o,r),u=await this.hmac(i,s);return this.hmac(u,"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 s=e.message??"Unknown API error",n=e.__type??"";switch(t){case 401:case 403:throw a(s,"API_KEY_INVALID",{provider:"bedrock",model:r,retryable:!1});case 429:throw a(s,"RATE_LIMITED",{provider:"bedrock",model:r,retryable:!0,retryAfterMs:6e4});case 400:throw n.includes("ValidationException")&&s.includes("token")?a(s,"CONTEXT_LENGTH_EXCEEDED",{provider:"bedrock",model:r,retryable:!1}):a(s,"UNKNOWN",{provider:"bedrock",model:r,retryable:!1});case 500:case 502:case 503:throw a(s,"PROVIDER_UNAVAILABLE",{provider:"bedrock",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(s,"UNKNOWN",{provider:"bedrock",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await fetch(t,{...e,signal:s.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"bedrock",retryable:!0}):o}finally{clearTimeout(n)}}sleep(t){return new Promise(e=>setTimeout(e,t))}};O();var we={primary:"claude",fallbacks:["openai","ollama"],loadBalancing:"round-robin",providers:{},global:{enableCostTracking:!0,enableMetrics:!0}},J=class{providers=new Map;circuitBreakers;cache;costTracker;config;metrics=new Map;roundRobinIndex=0;initialized=!1;constructor(t={},e){this.config={...we,...t},this.circuitBreakers=new N(e?.circuitBreakerConfig),this.cache=new U(e?.cacheConfig),this.costTracker=e?.costTracker??oe()}async initialize(){if(!this.initialized){await this.createProviders();for(let t of this.providers.keys())this.initializeMetrics(t);this.initialized=!0}}async generate(t,e){if(await this.ensureInitialized(),!e?.skipCache){let s=typeof t=="string"?t:JSON.stringify(t),n=this.cache.getGeneration(s,{model:e?.model,temperature:e?.temperature,maxTokens:e?.maxTokens,systemPrompt:e?.systemPrompt});if(n)return{...n,cached:!0}}let r=await this.executeWithFailover("generate",async s=>s.generate(t,e),e?.preferredProvider);if(!e?.skipCache){let s=typeof t=="string"?t:JSON.stringify(t);this.cache.setGeneration(s,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),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"],s=await this.executeWithFailover("embed",async n=>n.embed(t,e),r.find(n=>this.providers.has(n)));return e?.skipCache||this.cache.setEmbedding(t,s,{model:e?.model}),s}async complete(t,e){if(await this.ensureInitialized(),!e?.skipCache){let s=this.cache.getCompletion(t,{model:e?.model,temperature:e?.temperature,maxTokens:e?.maxTokens});if(s)return{...s,cached:!0}}let r=await this.executeWithFailover("complete",async s=>s.complete(t,e));return e?.skipCache||this.cache.setCompletion(t,r,{model:e?.model,temperature:e?.temperature,maxTokens:e?.maxTokens}),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 s=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:s.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 B(this.config.providers.claude);case"openai":return new G(this.config.providers.openai);case"ollama":return new z(this.config.providers.ollama);case"openrouter":return new F(this.config.providers.openrouter);case"gemini":return new j(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 V(e)}case"bedrock":return new H(this.config.providers.bedrock);default:throw new Error(`Unknown provider type: ${t}`)}}initializeMetrics(t){this.metrics.set(t,{totalRequests:0,successCount:0,failureCount:0,latencies:[],totalCost:0,totalTokens:0})}async executeWithFailover(t,e,r){let s=this.selectProvider(r),n=new Set,o,i=[s.provider.type,...this.config.fallbacks.filter(u=>u!==s.provider.type)];for(let u of i){if(n.has(u))continue;n.add(u);let m=this.providers.get(u);if(!m)continue;let h=this.circuitBreakers.getBreaker(u);if(h.canExecute())try{let c=Date.now(),p=await h.execute(()=>e(m)),l=Date.now()-c;return this.recordSuccess(u,l,p),p}catch(c){if(o=v(c),this.recordFailure(u,o),"retryable"in o&&!o.retryable)throw o}}throw a(`All providers failed for ${t}: ${o?.message??"Unknown error"}`,"PROVIDER_UNAVAILABLE",{retryable:!1,cause:o})}selectProvider(t){if(t){let r=this.providers.get(t),s=this.circuitBreakers.getBreaker(t);if(r&&s.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 s of t){let n=this.providers.get(s),{input:o,output:i}=n.getCostPerToken(),u=o+i;u<e&&(e=u,r=s)}return{provider:this.providers.get(r),reason:"cost-optimization",metadata:{estimatedCost:e}}}selectLeastLatency(t){let e=1/0,r=t[0];for(let s of t){let n=this.metrics.get(s);if(n&&n.latencies.length>0){let o=this.calculateAverage(n.latencies);o<e&&(e=o,r=s)}}return{provider:this.providers.get(r),reason:"latency-optimization",metadata:{avgLatency:e}}}selectRandom(t){let e=se(0,t.length),r=t[e];return{provider:this.providers.get(r),reason:"load-balance"}}recordSuccess(t,e,r){let s=this.metrics.get(t);if(s&&(s.totalRequests++,s.successCount++,s.latencies.push(e),s.latencies.length>1e3&&(s.latencies=s.latencies.slice(-1e3)),r&&typeof r=="object")){let n=r;n.cost?.totalCost&&(s.totalCost+=n.cost.totalCost),n.usage?.totalTokens&&(s.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,o)=>n-o),s=Math.ceil(e/100*r.length)-1;return r[Math.max(0,s)]}};function $s(g){return new J(g)}function Fs(){return new J({primary:"claude",fallbacks:["openai","ollama"],loadBalancing:"least-cost",providers:{claude:{model:"claude-sonnet-4-6",maxTokens:8192,temperature:.3},openai:{model:"gpt-4o",maxTokens:8192,temperature:.3},ollama:{model:"llama3.1",maxTokens:4096,temperature:.3}},global:{enableCostTracking:!0,enableMetrics:!0,maxCostPerDay:100}})}export{we as a,J as b,$s as c,Fs as d};
@@ -1,5 +1,5 @@
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.10.3");process.exit(0)}
2
- import{a as D}from"./chunk-HM523MTQ.js";import{c as T,d as $}from"./chunk-DF3MJ2YL.js";import{a as j}from"./chunk-YYAPO3CU.js";import"./chunk-JD2PG4KS.js";import"./chunk-CAMEFWRK.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-SA3YU3IH.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-SA3YU3IH.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-SA3YU3IH.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-JLCYTIMT.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-SA3YU3IH.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
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.10.5");process.exit(0)}
2
+ import{a as D}from"./chunk-OATHXZYW.js";import{c as T,d as $}from"./chunk-75MP7JMV.js";import{a as j}from"./chunk-VKWDMOR4.js";import"./chunk-IRS4HKAR.js";import"./chunk-S7HQOGVD.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-6CIDLVID.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-6CIDLVID.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-6CIDLVID.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-Z4TMK6GZ.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-6CIDLVID.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
3
 
4
4
  `;n+=`**Status:** ${s.overallStatus==="passed"?"PASSED":s.overallStatus==="warning"?"WARNING":"FAILED"}
5
5
  `,n+=`**Duration:** ${(s.duration/1e3).toFixed(1)}s
@@ -1,2 +1,2 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.3");process.exit(0)}
2
- import{a,b,c,d,e,f,g,h,i,j}from"./chunk-DF3MJ2YL.js";import"./chunk-CAMEFWRK.js";export{a as FORMAT_OPTION,b as OUTPUT_OPTION,g as coverageToMarkdown,h as qualityGateToMarkdown,i as securityToMarkdown,j as testRunToMarkdown,d as toJSON,f as toJUnit,e as toSARIF,c as writeOutput};
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.10.5");process.exit(0)}
2
+ import{a,b,c,d,e,f,g,h,i,j}from"./chunk-75MP7JMV.js";import"./chunk-S7HQOGVD.js";export{a as FORMAT_OPTION,b as OUTPUT_OPTION,g as coverageToMarkdown,h as qualityGateToMarkdown,i as securityToMarkdown,j as testRunToMarkdown,d as toJSON,f as toJUnit,e as toSARIF,c as writeOutput};
@@ -1,2 +1,2 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.3");process.exit(0)}
2
- import{a,b}from"./chunk-C6BBRM2J.js";import"./chunk-CAMEFWRK.js";export{a as AdvisorCircuitBreaker,b as AdvisorCircuitBreakerError};
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.10.5");process.exit(0)}
2
+ import{a,b}from"./chunk-N2TJXGHG.js";import"./chunk-S7HQOGVD.js";export{a as AdvisorCircuitBreaker,b as AdvisorCircuitBreakerError};
@@ -1,2 +1,2 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.3");process.exit(0)}
2
- import{b as g}from"./chunk-BT3QLWII.js";import{b as f,d as h}from"./chunk-KTRB3L53.js";import{a as d,c as v}from"./chunk-3LRK7PYN.js";import{a as b}from"./chunk-CAMEFWRK.js";h();v();import{existsSync as c,writeFileSync as p,readFileSync as m}from"node:fs";import{join as a}from"node:path";async function C(t,e){let o=g(t);if(e&&o.available&&console.log(`[ClaudeFlow] Detected via ${o.method}${o.version?`: v${o.version}`:""}`),!o.available)return{available:!1};let r={"mcp-config":"mcp","local-binary":"cli","npx-cached":"cli","npm-dependency":"npm"};return{available:!0,version:o.version,method:o.method?r[o.method]:void 0}}async function S(t){return{trajectories:!0,modelRouting:!0,pretrain:!0,workers:!0,patternSearch:!0}}function F(t,e){return{version:"1.0",projectRoot:t,integration:{enabled:!0,features:{trajectories:e.trajectories,modelRouting:e.modelRouting,pretrain:e.pretrain,workers:e.workers}},learning:{trajectoryStorage:e.trajectories?"claude-flow":"local",patternSearch:e.patternSearch?"claude-flow":"local"},routing:{modelRouting:e.modelRouting?"claude-flow":"rule-based",preferences:{simple:"haiku",standard:"sonnet",complex:"opus"}},pretrain:{enabled:e.pretrain,depth:"medium",autoRun:!0},workers:{enabled:e.workers,autoDispatch:["optimize","consolidate"]}}}function y(t){let e=a(t,".claude","settings.json"),o={};if(c(e))try{o=f(m(e,"utf-8"))}catch{}o.mcpServers||(o.mcpServers={});let r=o.mcpServers;!r.ruflo&&!r["claude-flow"]&&(r.ruflo={command:"npx",args:["ruflo@3.5.18","mcp"],env:{}}),p(e,JSON.stringify(o,null,2))}async function q(t){let{projectRoot:e,force:o,checkOnly:r,debug:s}=t,n=await C(e,s);if(!n.available&&!o)return{available:!1,features:{trajectories:!1,modelRouting:!1,pretrain:!1,workers:!1,patternSearch:!1}};let l=await S(e);if(r)return{available:n.available,version:n.version,features:l};let w=a(e,".agentic-qe"),u=a(w,"claude-flow-integration.json");try{let i=F(e,l);p(u,JSON.stringify(i,null,2)),s&&console.log(`[ClaudeFlow] Config written to: ${u}`)}catch(i){return{available:n.available,version:n.version,features:l,error:`Failed to write config: ${d(i)}`}}try{y(e)}catch(i){s&&console.log("[ClaudeFlow] MCP config update failed:",d(i))}return{available:!0,version:n.version,features:l,configPath:u}}function O(t){let e=a(t,".agentic-qe","claude-flow-integration.json");return c(e)}function $(t){let e=a(t,".agentic-qe","claude-flow-integration.json");if(!c(e))return null;try{return f(m(e,"utf-8"))}catch{return null}}function D(t){let e=a(t,".agentic-qe","claude-flow-integration.json");if(c(e))try{return b("node:fs").rmSync(e),!0}catch{return!1}return!0}export{$ as getClaudeFlowConfig,O as isClaudeFlowConfigured,D as removeClaudeFlowIntegration,q as setupClaudeFlowIntegration};
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.10.5");process.exit(0)}
2
+ import{b as g}from"./chunk-3KGUP2SD.js";import{b as f,d as h}from"./chunk-56RA6YPN.js";import{a as d,c as v}from"./chunk-S73KENCH.js";import{a as b}from"./chunk-S7HQOGVD.js";h();v();import{existsSync as c,writeFileSync as p,readFileSync as m}from"node:fs";import{join as a}from"node:path";async function C(t,e){let o=g(t);if(e&&o.available&&console.log(`[ClaudeFlow] Detected via ${o.method}${o.version?`: v${o.version}`:""}`),!o.available)return{available:!1};let r={"mcp-config":"mcp","local-binary":"cli","npx-cached":"cli","npm-dependency":"npm"};return{available:!0,version:o.version,method:o.method?r[o.method]:void 0}}async function S(t){return{trajectories:!0,modelRouting:!0,pretrain:!0,workers:!0,patternSearch:!0}}function F(t,e){return{version:"1.0",projectRoot:t,integration:{enabled:!0,features:{trajectories:e.trajectories,modelRouting:e.modelRouting,pretrain:e.pretrain,workers:e.workers}},learning:{trajectoryStorage:e.trajectories?"claude-flow":"local",patternSearch:e.patternSearch?"claude-flow":"local"},routing:{modelRouting:e.modelRouting?"claude-flow":"rule-based",preferences:{simple:"haiku",standard:"sonnet",complex:"opus"}},pretrain:{enabled:e.pretrain,depth:"medium",autoRun:!0},workers:{enabled:e.workers,autoDispatch:["optimize","consolidate"]}}}function y(t){let e=a(t,".claude","settings.json"),o={};if(c(e))try{o=f(m(e,"utf-8"))}catch{}o.mcpServers||(o.mcpServers={});let r=o.mcpServers;!r.ruflo&&!r["claude-flow"]&&(r.ruflo={command:"npx",args:["ruflo@3.5.18","mcp"],env:{}}),p(e,JSON.stringify(o,null,2))}async function q(t){let{projectRoot:e,force:o,checkOnly:r,debug:s}=t,n=await C(e,s);if(!n.available&&!o)return{available:!1,features:{trajectories:!1,modelRouting:!1,pretrain:!1,workers:!1,patternSearch:!1}};let l=await S(e);if(r)return{available:n.available,version:n.version,features:l};let w=a(e,".agentic-qe"),u=a(w,"claude-flow-integration.json");try{let i=F(e,l);p(u,JSON.stringify(i,null,2)),s&&console.log(`[ClaudeFlow] Config written to: ${u}`)}catch(i){return{available:n.available,version:n.version,features:l,error:`Failed to write config: ${d(i)}`}}try{y(e)}catch(i){s&&console.log("[ClaudeFlow] MCP config update failed:",d(i))}return{available:!0,version:n.version,features:l,configPath:u}}function O(t){let e=a(t,".agentic-qe","claude-flow-integration.json");return c(e)}function $(t){let e=a(t,".agentic-qe","claude-flow-integration.json");if(!c(e))return null;try{return f(m(e,"utf-8"))}catch{return null}}function D(t){let e=a(t,".agentic-qe","claude-flow-integration.json");if(c(e))try{return b("node:fs").rmSync(e),!0}catch{return!1}return!0}export{$ as getClaudeFlowConfig,O as isClaudeFlowConfigured,D as removeClaudeFlowIntegration,q as setupClaudeFlowIntegration};
@@ -0,0 +1,2 @@
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.5");process.exit(0)}
2
+ import{c as a,d as b,e as c}from"./chunk-G5UIGH4C.js";import"./chunk-S7FGTHFE.js";import"./chunk-S73KENCH.js";import"./chunk-S7HQOGVD.js";c();export{a as VibiumClientImpl,b as VibiumClientProvider};
@@ -1,4 +1,4 @@
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.10.3");process.exit(0)}
2
- import{b as p}from"./chunk-YDDZJCKY.js";import{a as f,c as v}from"./chunk-3LRK7PYN.js";import"./chunk-CAMEFWRK.js";v();import{existsSync as s,mkdirSync as m,readFileSync as u,writeFileSync as a}from"fs";import{join as h,dirname as d}from"path";var l=class{projectRoot;overwrite;generator;constructor(r){this.projectRoot=r.projectRoot,this.overwrite=r.overwrite??!1,this.generator=p()}async install(){let r={success:!0,mcpConfigured:!1,modeInstalled:!1,errors:[],configPath:"",modePath:""};try{let t=this.generator.generateMcpConfig("cline"),e=h(this.projectRoot,t.path);if(r.configPath=e,!s(e)||this.overwrite){let o=d(e);if(s(o)||m(o,{recursive:!0}),s(e)&&this.overwrite){let c=this.mergeExistingConfig(e,t.content);a(e,c)}else a(e,t.content);r.mcpConfigured=!0}let n=this.generator.generateBehavioralRules("cline"),i=h(this.projectRoot,n.path);if(r.modePath=i,!s(i)||this.overwrite){let o=d(i);if(s(o)||m(o,{recursive:!0}),s(i)&&this.overwrite){let c=this.mergeExistingModes(i,n.content);a(i,c)}else a(i,n.content);r.modeInstalled=!0}}catch(t){r.success=!1,r.errors.push(`Cline installation failed: ${f(t)}`)}return r}mergeExistingConfig(r,t){try{let e=JSON.parse(u(r,"utf-8")),n=JSON.parse(t);return e.mcpServers||(e.mcpServers={}),Object.assign(e.mcpServers,n.mcpServers),JSON.stringify(e,null,2)+`
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.5");process.exit(0)}
2
+ import{b as p}from"./chunk-TMTLWSSA.js";import{a as f,c as v}from"./chunk-S73KENCH.js";import"./chunk-S7HQOGVD.js";v();import{existsSync as s,mkdirSync as m,readFileSync as u,writeFileSync as a}from"fs";import{join as h,dirname as d}from"path";var l=class{projectRoot;overwrite;generator;constructor(r){this.projectRoot=r.projectRoot,this.overwrite=r.overwrite??!1,this.generator=p()}async install(){let r={success:!0,mcpConfigured:!1,modeInstalled:!1,errors:[],configPath:"",modePath:""};try{let t=this.generator.generateMcpConfig("cline"),e=h(this.projectRoot,t.path);if(r.configPath=e,!s(e)||this.overwrite){let o=d(e);if(s(o)||m(o,{recursive:!0}),s(e)&&this.overwrite){let c=this.mergeExistingConfig(e,t.content);a(e,c)}else a(e,t.content);r.mcpConfigured=!0}let n=this.generator.generateBehavioralRules("cline"),i=h(this.projectRoot,n.path);if(r.modePath=i,!s(i)||this.overwrite){let o=d(i);if(s(o)||m(o,{recursive:!0}),s(i)&&this.overwrite){let c=this.mergeExistingModes(i,n.content);a(i,c)}else a(i,n.content);r.modeInstalled=!0}}catch(t){r.success=!1,r.errors.push(`Cline installation failed: ${f(t)}`)}return r}mergeExistingConfig(r,t){try{let e=JSON.parse(u(r,"utf-8")),n=JSON.parse(t);return e.mcpServers||(e.mcpServers={}),Object.assign(e.mcpServers,n.mcpServers),JSON.stringify(e,null,2)+`
3
3
  `}catch{return t}}mergeExistingModes(r,t){try{let e=JSON.parse(u(r,"utf-8")),n=JSON.parse(t);if(!Array.isArray(e))return t;let i=e.filter(o=>o.slug!=="qe-engineer");return i.push(...n),JSON.stringify(i,null,2)+`
4
4
  `}catch{return t}}};function x(g){return new l(g)}export{l as ClineInstaller,x as createClineInstaller};
@@ -1,5 +1,5 @@
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.10.3");process.exit(0)}
2
- import{a as A,b as x}from"./chunk-NNZMEYLT.js";import{c as b,d as w}from"./chunk-DF3MJ2YL.js";import"./chunk-CAMEFWRK.js";import{Command as z}from"commander";import e from"chalk";function j(S,$,P){return new z("code").description("Code intelligence analysis").argument("<action>","Action (index|search|impact|deps|complexity)").argument("[target]","Target path or query").option("--depth <depth>","Analysis depth","3").option("--include-tests","Include test files").option("--incremental","Incremental indexing (index action only)").option("--git-since <ref>","Index changes since git ref (index action only)").option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").addHelpText("after",`
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.10.5");process.exit(0)}
2
+ import{a as A,b as x}from"./chunk-AMBIOEMO.js";import{c as b,d as w}from"./chunk-75MP7JMV.js";import"./chunk-S7HQOGVD.js";import{Command as z}from"commander";import e from"chalk";function j(S,$,P){return new z("code").description("Code intelligence analysis").argument("<action>","Action (index|search|impact|deps|complexity)").argument("[target]","Target path or query").option("--depth <depth>","Analysis depth","3").option("--include-tests","Include test files").option("--incremental","Incremental indexing (index action only)").option("--git-since <ref>","Index changes since git ref (index action only)").option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").addHelpText("after",`
3
3
  Examples:
4
4
  aqe code index src/ Index source files into knowledge graph
5
5
  aqe code index src/ --incremental Incremental index (only changed files)