agentic-qe 3.12.0 → 3.12.2

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 (362) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +83 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/cli/bundle.js +5 -5
  5. package/dist/cli/chunks/adapter-RL6GNUOS.js +2 -0
  6. package/dist/cli/chunks/{agent-booster-wasm-IO54X6IQ.js → agent-booster-wasm-3KYNICBC.js} +2 -2
  7. package/dist/cli/chunks/{agent-handler-A57SZUCW.js → agent-handler-NGPTMI6E.js} +2 -2
  8. package/dist/cli/chunks/{agent-memory-branch-BX7LRFGN.js → agent-memory-branch-GNTQKQMG.js} +2 -2
  9. package/dist/cli/chunks/aqe-learning-engine-UEEW6AQG.js +2 -0
  10. package/dist/cli/chunks/{arena-UTC4YY6Y.js → arena-HQEP2NWI.js} +4 -4
  11. package/dist/cli/chunks/{arena-Y3XTX6O7.js → arena-PA7VIYD4.js} +2 -2
  12. package/dist/cli/chunks/{audit-L4RL2AOY.js → audit-XSDM57GC.js} +3 -3
  13. package/dist/cli/chunks/base-JQA5YULE.js +2 -0
  14. package/dist/cli/chunks/{hnswlib-node-VS6L5VUG.js → better-sqlite3-RQCOOAZC.js} +2 -2
  15. package/dist/cli/chunks/{brain-handler-OHDPI5TQ.js → brain-handler-T7RDPKNM.js} +3 -3
  16. package/dist/cli/chunks/{branch-enumerator-ZRXE2CQ7.js → branch-enumerator-ZW7RNMUF.js} +2 -2
  17. package/dist/cli/chunks/{browser-NT33FG76.js → browser-4LU22CPP.js} +2 -2
  18. package/dist/cli/chunks/browser-workflow-XTKUHTIT.js +2 -0
  19. package/dist/cli/chunks/{chunk-XEYW3V5I.js → chunk-2L7K2J2T.js} +2 -2
  20. package/dist/cli/chunks/{chunk-VWJSWXHG.js → chunk-2R7J4ZGT.js} +1 -1
  21. package/dist/cli/chunks/{chunk-KZMRU7DL.js → chunk-2R7XZ2WP.js} +2 -2
  22. package/dist/cli/chunks/{chunk-2AR4B3DI.js → chunk-327YEKBU.js} +2 -2
  23. package/dist/cli/chunks/{chunk-HDJMD6UH.js → chunk-3AJUJAUJ.js} +1 -1
  24. package/dist/cli/chunks/{chunk-JOBCMNTP.js → chunk-3LELACAQ.js} +2 -2
  25. package/dist/cli/chunks/{chunk-JYX7AZHE.js → chunk-4FHJYJCH.js} +2 -2
  26. package/dist/cli/chunks/{chunk-KJWQ7ENF.js → chunk-4KEOBDEI.js} +2 -2
  27. package/dist/cli/chunks/{chunk-G6LR7FK7.js → chunk-56MXYSYY.js} +2 -2
  28. package/dist/cli/chunks/{chunk-5YGESYBC.js → chunk-5CGTBAVF.js} +1 -1
  29. package/dist/cli/chunks/{chunk-RZDNCTOA.js → chunk-5SM57X4D.js} +2 -2
  30. package/dist/cli/chunks/{chunk-O3C5RRDQ.js → chunk-5YLY2WT2.js} +3 -3
  31. package/dist/cli/chunks/{chunk-PQMLIVGV.js → chunk-6FBXYS6X.js} +2 -2
  32. package/dist/cli/chunks/{chunk-GGMQOEZZ.js → chunk-6N62KS3C.js} +2 -2
  33. package/dist/cli/chunks/{chunk-BB4OVXWF.js → chunk-6SWR2BN7.js} +1 -1
  34. package/dist/cli/chunks/{chunk-7HJHXSYT.js → chunk-6X65BGGK.js} +2 -2
  35. package/dist/cli/chunks/{chunk-P52YORQG.js → chunk-7DV42KFP.js} +2 -2
  36. package/dist/cli/chunks/{chunk-EZE2HRQB.js → chunk-7KMYBRKJ.js} +2 -2
  37. package/dist/cli/chunks/{chunk-335GHVJV.js → chunk-7OD6HFCP.js} +3 -3
  38. package/dist/cli/chunks/chunk-ABHKXMOJ.js +2 -0
  39. package/dist/cli/chunks/{chunk-L5ZLOW3K.js → chunk-ACDZ2CRV.js} +2 -2
  40. package/dist/cli/chunks/{chunk-NW7G57NR.js → chunk-ADZTWGEB.js} +2 -2
  41. package/dist/cli/chunks/{chunk-CC5G3K4X.js → chunk-AJ6DZXKK.js} +2 -2
  42. package/dist/cli/chunks/{chunk-SSXAW3ER.js → chunk-AL5QT6OX.js} +2 -2
  43. package/dist/cli/chunks/{chunk-FKPUPQQT.js → chunk-AMPYON7M.js} +2 -2
  44. package/dist/cli/chunks/{chunk-C4SZSPXY.js → chunk-APVXTHTA.js} +2 -2
  45. package/dist/cli/chunks/{chunk-FEEMJDUF.js → chunk-B7DI76SY.js} +2 -2
  46. package/dist/cli/chunks/{chunk-Q5YRPS4P.js → chunk-BDVOXGY5.js} +1 -1
  47. package/dist/cli/chunks/{chunk-VMP4M5PB.js → chunk-BDX54WJV.js} +1 -1
  48. package/dist/cli/chunks/{chunk-G5JQLUUO.js → chunk-BMRR3MBR.js} +2 -2
  49. package/dist/cli/chunks/{chunk-2UMCB7AH.js → chunk-BOR5MME3.js} +1 -1
  50. package/dist/cli/chunks/{chunk-HW62TB4T.js → chunk-BPSEFLJ6.js} +1 -1
  51. package/dist/cli/chunks/{chunk-DTOE3NYW.js → chunk-BUKGW63B.js} +12 -12
  52. package/dist/cli/chunks/{chunk-V2MD5EDD.js → chunk-C7VNQ4PY.js} +2 -2
  53. package/dist/cli/chunks/{chunk-W766S4SK.js → chunk-CDMAVNV5.js} +1 -1
  54. package/dist/cli/chunks/{chunk-K5SN66B4.js → chunk-CKFZOPZN.js} +2 -2
  55. package/dist/cli/chunks/{chunk-Y2MCIIJD.js → chunk-CMKCPRWX.js} +1 -1
  56. package/dist/cli/chunks/{chunk-DR7PCO3S.js → chunk-CQKEVUMO.js} +2 -2
  57. package/dist/cli/chunks/{chunk-2KHDGC7N.js → chunk-CTFW7CMI.js} +2 -2
  58. package/dist/cli/chunks/{chunk-5FR5GBUT.js → chunk-DGOZ3CGB.js} +2 -2
  59. package/dist/cli/chunks/{chunk-ZVPAFX4I.js → chunk-DTXHRALB.js} +2 -2
  60. package/dist/cli/chunks/{chunk-IJUYHIKN.js → chunk-E5XWCGSX.js} +2 -2
  61. package/dist/cli/chunks/{chunk-7ZIVDGSN.js → chunk-EGU54SNK.js} +1 -1
  62. package/dist/cli/chunks/{chunk-KI5BP4X5.js → chunk-EKTWIEEO.js} +2 -2
  63. package/dist/cli/chunks/{chunk-TJ6N4CCX.js → chunk-ERQL3D2O.js} +2 -2
  64. package/dist/cli/chunks/{chunk-CHO54B34.js → chunk-EZ3JVN6S.js} +2 -2
  65. package/dist/cli/chunks/{chunk-5VBPIJUZ.js → chunk-F3CKOVZM.js} +4 -4
  66. package/dist/cli/chunks/{chunk-RQN4HWGV.js → chunk-FKUH33L3.js} +2 -2
  67. package/dist/cli/chunks/{chunk-WNASEUBW.js → chunk-FTG4ZVTX.js} +11 -11
  68. package/dist/cli/chunks/{chunk-CMGYUCM7.js → chunk-FUBN5GPY.js} +1 -1
  69. package/dist/cli/chunks/{chunk-I6WHYRWB.js → chunk-GCQATSMK.js} +2 -2
  70. package/dist/cli/chunks/{chunk-TED4KOSK.js → chunk-GECWGFRR.js} +2 -2
  71. package/dist/cli/chunks/{chunk-BA6U7NSR.js → chunk-GP7IXYOY.js} +1 -1
  72. package/dist/cli/chunks/{chunk-CSEEGX5T.js → chunk-GUGUYFU5.js} +2 -2
  73. package/dist/cli/chunks/{chunk-KZ37VHMJ.js → chunk-HH5Y4NCR.js} +2 -2
  74. package/dist/cli/chunks/{chunk-DXOMRWDC.js → chunk-HNU32LN3.js} +1 -1
  75. package/dist/cli/chunks/{chunk-3AFNXU45.js → chunk-HU6ETNA7.js} +1 -1
  76. package/dist/cli/chunks/{chunk-KN5GOEYK.js → chunk-IKIKIHFQ.js} +2 -2
  77. package/dist/cli/chunks/{chunk-UGJQJSPB.js → chunk-ILNQPPKB.js} +1 -1
  78. package/dist/cli/chunks/{chunk-MJPYNGZ7.js → chunk-IQ56KMMH.js} +1 -1
  79. package/dist/cli/chunks/{chunk-SCMXIBI7.js → chunk-J6EFAKDQ.js} +2 -2
  80. package/dist/cli/chunks/{chunk-RMFRFING.js → chunk-K43YXI7C.js} +2 -2
  81. package/dist/cli/chunks/{chunk-FOPS6DRZ.js → chunk-KBAXD6PH.js} +1 -1
  82. package/dist/cli/chunks/{chunk-VS4GMNJK.js → chunk-KBXW7S3W.js} +3 -3
  83. package/dist/cli/chunks/{chunk-QJ6H2HQQ.js → chunk-KDGLNJPB.js} +1 -1
  84. package/dist/cli/chunks/{chunk-VA7TEOPM.js → chunk-KJJP446A.js} +1 -1
  85. package/dist/cli/chunks/{chunk-TC2JE5OK.js → chunk-KNOO6TFO.js} +3 -3
  86. package/dist/cli/chunks/{chunk-HAEUPIKW.js → chunk-KPV4N4KT.js} +2 -2
  87. package/dist/cli/chunks/{chunk-IKVNYK7Y.js → chunk-KV5OZ6T3.js} +2 -2
  88. package/dist/cli/chunks/{chunk-RG552ROA.js → chunk-LGEPR7MH.js} +3 -3
  89. package/dist/cli/chunks/{chunk-7WX3MKRS.js → chunk-LIAW5FD7.js} +2 -2
  90. package/dist/cli/chunks/{chunk-MUV56BPK.js → chunk-LOZAUP6L.js} +2 -2
  91. package/dist/cli/chunks/{chunk-BUYPRUNY.js → chunk-LWVUNBZO.js} +2 -2
  92. package/dist/cli/chunks/{chunk-FZRU73M4.js → chunk-M4XVEUUM.js} +2 -2
  93. package/dist/cli/chunks/{chunk-ICK3B24H.js → chunk-MALFTRCT.js} +2 -2
  94. package/dist/cli/chunks/{chunk-MBF3Q7FQ.js → chunk-MF4FULAI.js} +1 -1
  95. package/dist/cli/chunks/{chunk-7F7U2HUH.js → chunk-MNHGBG4D.js} +1 -1
  96. package/dist/cli/chunks/{chunk-XIFPIVZI.js → chunk-MNNNA57O.js} +2 -2
  97. package/dist/cli/chunks/{chunk-BZPF6GTL.js → chunk-N57BKUVE.js} +1 -1
  98. package/dist/cli/chunks/{chunk-TO5PQSDD.js → chunk-NDAJWCXN.js} +2 -2
  99. package/dist/cli/chunks/{chunk-NLHISTL2.js → chunk-OELLHV7S.js} +2 -2
  100. package/dist/cli/chunks/{chunk-PM566XEO.js → chunk-OEZNUXY7.js} +1 -1
  101. package/dist/cli/chunks/{chunk-4GU656WM.js → chunk-OIUIVV2N.js} +1 -1
  102. package/dist/cli/chunks/{chunk-CVGXB7IX.js → chunk-OMIGKGJJ.js} +2 -2
  103. package/dist/cli/chunks/{chunk-62RELCU6.js → chunk-OSAPKOGN.js} +1 -1
  104. package/dist/cli/chunks/{chunk-72VZGAMJ.js → chunk-P2FYRAC5.js} +1 -1
  105. package/dist/cli/chunks/{chunk-W2OMW6UU.js → chunk-P65S7AZA.js} +2 -2
  106. package/dist/cli/chunks/{chunk-VZ67ZDB3.js → chunk-PHIEJAQK.js} +3 -3
  107. package/dist/cli/chunks/chunk-PSA2SOON.js +18 -0
  108. package/dist/cli/chunks/{chunk-USB44IHJ.js → chunk-PXKVW6PT.js} +2 -2
  109. package/dist/cli/chunks/{chunk-64M3FFM4.js → chunk-QYST2TZW.js} +2 -2
  110. package/dist/cli/chunks/{chunk-MUAHFGIX.js → chunk-R554WVIG.js} +2 -2
  111. package/dist/cli/chunks/{chunk-TJEJ4UVX.js → chunk-R5HC6JVJ.js} +2 -2
  112. package/dist/cli/chunks/{chunk-6X3RJBA3.js → chunk-R6LDR3IO.js} +2 -2
  113. package/dist/cli/chunks/{chunk-OPIWFXME.js → chunk-RFQIC6ZF.js} +1 -1
  114. package/dist/cli/chunks/{chunk-EM2JIIAQ.js → chunk-RXEQB4OT.js} +2 -2
  115. package/dist/cli/chunks/{chunk-BGRJZH5Q.js → chunk-RXH2TC2K.js} +2 -2
  116. package/dist/cli/chunks/{chunk-DQDFACYW.js → chunk-SVUWAV6Y.js} +1 -1
  117. package/dist/cli/chunks/{chunk-POKMJTD2.js → chunk-SYLTJKN2.js} +1 -1
  118. package/dist/cli/chunks/{chunk-WJYTLRA5.js → chunk-T6TQPF5P.js} +3 -3
  119. package/dist/cli/chunks/{chunk-FI5SSLEF.js → chunk-T75VH6NT.js} +2 -2
  120. package/dist/cli/chunks/{chunk-EGH3H7QO.js → chunk-TERRRQVY.js} +1 -1
  121. package/dist/cli/chunks/{chunk-2ALNNXFF.js → chunk-TFVWUR2U.js} +2 -2
  122. package/dist/cli/chunks/{chunk-MK3J7JVZ.js → chunk-TLYZPOA7.js} +2 -2
  123. package/dist/cli/chunks/{chunk-RYUSZ43T.js → chunk-TMQ3S7HR.js} +1 -1
  124. package/dist/cli/chunks/{chunk-Z3W3R4CW.js → chunk-TQNNKW7K.js} +2 -2
  125. package/dist/cli/chunks/{chunk-PT3FTGKZ.js → chunk-TRHUH24V.js} +2 -2
  126. package/dist/cli/chunks/{chunk-5XFX25AJ.js → chunk-UEIIIDBJ.js} +2 -2
  127. package/dist/cli/chunks/{chunk-YKOTOCO6.js → chunk-UF3YOGHV.js} +2 -2
  128. package/dist/cli/chunks/{chunk-UUOXV3NS.js → chunk-UFPCNUJA.js} +10 -10
  129. package/dist/cli/chunks/{chunk-FZIHOMGY.js → chunk-V2QYW5KW.js} +2 -2
  130. package/dist/cli/chunks/{chunk-AAATFEIL.js → chunk-VHYACXLN.js} +2 -2
  131. package/dist/cli/chunks/chunk-VM6VBRRU.js +43 -0
  132. package/dist/cli/chunks/{chunk-ZT2WHCVM.js → chunk-VOHYQ6MX.js} +2 -2
  133. package/dist/cli/chunks/{chunk-C6GYLCTX.js → chunk-VQU2JXTK.js} +3 -3
  134. package/dist/cli/chunks/{chunk-FU5RNEXV.js → chunk-W7LBT3BF.js} +2 -2
  135. package/dist/cli/chunks/{chunk-GCF42L7M.js → chunk-WC5PM33J.js} +3 -3
  136. package/dist/cli/chunks/{chunk-WT4ZDDFM.js → chunk-WE5QHYL7.js} +1 -1
  137. package/dist/cli/chunks/chunk-WKWIUS5G.js +3 -0
  138. package/dist/cli/chunks/chunk-WL5VMIO4.js +2 -0
  139. package/dist/cli/chunks/{chunk-OHSVDMF7.js → chunk-WMNGPIP3.js} +1 -1
  140. package/dist/cli/chunks/{chunk-UVVKFBF7.js → chunk-WRMUQVKY.js} +2 -2
  141. package/dist/cli/chunks/{chunk-NNGCUJWQ.js → chunk-WY5CX3VH.js} +2 -2
  142. package/dist/cli/chunks/{chunk-36MPDANH.js → chunk-WYFEVPLO.js} +1 -1
  143. package/dist/cli/chunks/{chunk-RHC7TFPU.js → chunk-X47GHZY3.js} +2 -2
  144. package/dist/cli/chunks/{chunk-TR5GOGH3.js → chunk-XNNYHQLW.js} +5 -5
  145. package/dist/cli/chunks/{chunk-27JCWG5J.js → chunk-YDZIPP3Y.js} +2 -2
  146. package/dist/cli/chunks/{chunk-KDLYTJ5C.js → chunk-YRO7HNS4.js} +2 -2
  147. package/dist/cli/chunks/{chunk-SPEUF7ZL.js → chunk-YSCEUK55.js} +2 -2
  148. package/dist/cli/chunks/chunk-YY4KXDI6.js +2 -0
  149. package/dist/cli/chunks/{chunk-ZWC6CM4R.js → chunk-YYV3FYVB.js} +1 -1
  150. package/dist/cli/chunks/{chunk-AEX75YGI.js → chunk-YZ44FUVJ.js} +2 -2
  151. package/dist/cli/chunks/chunk-Z3FA5KR6.js +316 -0
  152. package/dist/cli/chunks/{chunk-G6RKUEGL.js → chunk-Z63IOTDW.js} +2 -2
  153. package/dist/cli/chunks/{chunk-6JNNZGI2.js → chunk-ZBYMF2QJ.js} +1 -1
  154. package/dist/cli/chunks/{chunk-JYXSVSH2.js → chunk-ZF65VOQH.js} +2 -2
  155. package/dist/cli/chunks/{chunk-4SALW7OT.js → chunk-ZHWXI4SK.js} +2 -2
  156. package/dist/cli/chunks/{chunk-LMJUQWR7.js → chunk-ZL7ZOIHO.js} +1 -1
  157. package/dist/cli/chunks/{ci-RJH5LAL3.js → ci-NT4DUGQ4.js} +2 -2
  158. package/dist/cli/chunks/{ci-output-62SGMGB2.js → ci-output-PXBD2QPH.js} +2 -2
  159. package/dist/cli/chunks/{circuit-breaker-QXTS5ZAW.js → circuit-breaker-ZPCCEEDX.js} +2 -2
  160. package/dist/cli/chunks/{claude-flow-setup-BBCCT5WV.js → claude-flow-setup-CZCDFZOE.js} +2 -2
  161. package/dist/cli/chunks/client-S7DIRNFJ.js +2 -0
  162. package/dist/cli/chunks/{cline-installer-IZCUJJ3I.js → cline-installer-6J2S7GLM.js} +2 -2
  163. package/dist/cli/chunks/{code-AWNVOZ7S.js → code-UTERK5AP.js} +2 -2
  164. package/dist/cli/chunks/{code-index-extractor-MX65BKMI.js → code-index-extractor-O3MJTOS2.js} +2 -2
  165. package/dist/cli/chunks/{codex-installer-EQT6JVLM.js → codex-installer-AZJIVXJR.js} +2 -2
  166. package/dist/cli/chunks/{completions-WOJAM45W.js → completions-A6ANQSZN.js} +2 -2
  167. package/dist/cli/chunks/{complexity-analyzer-3DJB7V3K.js → complexity-analyzer-MRSN7VUP.js} +2 -2
  168. package/dist/cli/chunks/{continuedev-installer-P4KWUTCJ.js → continuedev-installer-6LMKQRUI.js} +2 -2
  169. package/dist/cli/chunks/{copilot-installer-FFZWTMWQ.js → copilot-installer-KP3TWUNO.js} +2 -2
  170. package/dist/cli/chunks/core-handlers-NM2KCI6Z.js +2 -0
  171. package/dist/cli/chunks/{cost-tracker-CYBOV3NI.js → cost-tracker-R3C5IQPZ.js} +2 -2
  172. package/dist/cli/chunks/{coverage-GTZJBSC4.js → coverage-MR4QA2NM.js} +3 -3
  173. package/dist/cli/chunks/cross-domain-router-3TSZMCBM.js +2 -0
  174. package/dist/cli/chunks/{cursor-installer-WZIVXGGB.js → cursor-installer-LPZ7NGOS.js} +2 -2
  175. package/dist/cli/chunks/{daemon-JWMHEJEN.js → daemon-K3KW2UDV.js} +4 -4
  176. package/dist/cli/chunks/{daemon-MSFN2LXY.js → daemon-X5KXHRY3.js} +3 -3
  177. package/dist/cli/chunks/{dag-attention-scheduler-4TWOTTQE.js → dag-attention-scheduler-J4FJSGNN.js} +2 -2
  178. package/dist/cli/chunks/{detect-YZ6AGQPB.js → detect-22TX2NCA.js} +2 -2
  179. package/dist/cli/chunks/{dist-node-3EM2XH54.js → dist-node-QI4I4QPS.js} +2 -2
  180. package/dist/cli/chunks/{domain-handler-4XU5BINU.js → domain-handler-ZYZGPNOQ.js} +2 -2
  181. package/dist/cli/chunks/{domain-transfer-HUFC7I52.js → domain-transfer-2EEQTNIU.js} +2 -2
  182. package/dist/cli/chunks/dream-QIIJONYI.js +2 -0
  183. package/dist/cli/chunks/{embed-and-insert-pattern-J5ZFM6YX.js → embed-and-insert-pattern-LYCTU5BS.js} +2 -2
  184. package/dist/cli/chunks/eval-SOA72GUX.js +17 -0
  185. package/dist/cli/chunks/{experience-capture-middleware-E3RYQB6Z.js → experience-capture-middleware-AFFYOMYM.js} +3 -3
  186. package/dist/cli/chunks/{fast-paths-DKIYN2YS.js → fast-paths-WNMHOSUH.js} +2 -2
  187. package/dist/cli/chunks/{feature-flags-ZB63Z7N5.js → feature-flags-FT4YBZH4.js} +2 -2
  188. package/dist/cli/chunks/{feature-flags-S2RNZATS.js → feature-flags-HAP5IAAY.js} +2 -2
  189. package/dist/cli/chunks/{file-discovery-USJJLYQU.js → file-discovery-B4FFOH3Z.js} +2 -2
  190. package/dist/cli/chunks/{fleet-4MUPHSF5.js → fleet-2ICPYV3J.js} +3 -3
  191. package/dist/cli/chunks/{gnn-wrapper-PYOQZKX6.js → gnn-wrapper-XIBJAHMW.js} +2 -2
  192. package/dist/cli/chunks/{heartbeat-handler-HLO5XCG7.js → heartbeat-handler-NSLSKDOI.js} +4 -4
  193. package/dist/cli/chunks/heartbeat-scheduler-CDNGLJJO.js +2 -0
  194. package/dist/cli/chunks/hnsw-adapter-CR7Y4OAM.js +2 -0
  195. package/dist/cli/chunks/hnsw-index-TEDO4MQC.js +2 -0
  196. package/dist/cli/chunks/{hnsw-legacy-bridge-FZEH2KLM.js → hnsw-legacy-bridge-FTV4CCBB.js} +2 -2
  197. package/dist/cli/chunks/{better-sqlite3-LRDXKYOJ.js → hnswlib-node-BCASOCNU.js} +2 -2
  198. package/dist/cli/chunks/{hooks-R2757K57.js → hooks-SM4EU52N.js} +10 -10
  199. package/dist/cli/chunks/hybrid-router-O24ZDIP5.js +2 -0
  200. package/dist/cli/chunks/{hypergraph-engine-EAV3GJ5D.js → hypergraph-engine-RRMX4N3L.js} +2 -2
  201. package/dist/cli/chunks/{hypergraph-handler-5ERXAVGH.js → hypergraph-handler-MNFGDKAP.js} +3 -3
  202. package/dist/cli/chunks/impact-analyzer-PDM4SDB6.js +2 -0
  203. package/dist/cli/chunks/{init-handler-RXUSEMG7.js → init-handler-BNHIJ5TX.js} +6 -6
  204. package/dist/cli/chunks/init-wizard-F4KODPNW.js +2 -0
  205. package/dist/cli/chunks/kernel-77UM35L6.js +2 -0
  206. package/dist/cli/chunks/{kilocode-installer-ZUBVBHGT.js → kilocode-installer-GFKUKPLY.js} +2 -2
  207. package/dist/cli/chunks/{kiro-installer-TRTRQDGL.js → kiro-installer-YBIYKODN.js} +2 -2
  208. package/dist/cli/chunks/knowledge-graph-R6ZWWV2K.js +2 -0
  209. package/dist/cli/chunks/{learning-UYXWAU5D.js → learning-QEWUPCK6.js} +3 -3
  210. package/dist/cli/chunks/{llm-router-TB5OJPEV.js → llm-router-D5FQIMVQ.js} +5 -5
  211. package/dist/cli/chunks/llm-router-service-7QYCZ66H.js +2 -0
  212. package/dist/cli/chunks/{load-ELPSUIPV.js → load-CLBUCKZQ.js} +2 -2
  213. package/dist/cli/chunks/load-test-AWVA3CAQ.js +2 -0
  214. package/dist/cli/chunks/{mcp-UX7TK3XV.js → mcp-VOMG5DPV.js} +2 -2
  215. package/dist/cli/chunks/{memory-W3LG6H6N.js → memory-WZO63VSC.js} +5 -5
  216. package/dist/cli/chunks/memory-backend-YESSIHFW.js +2 -0
  217. package/dist/cli/chunks/memory-handlers-EOOWSUHI.js +2 -0
  218. package/dist/cli/chunks/{multi-model-executor-227LWZRY.js → multi-model-executor-7UKW43VV.js} +2 -2
  219. package/dist/cli/chunks/{opencode-installer-F4WKVWDL.js → opencode-installer-MLFPRRL2.js} +2 -2
  220. package/dist/cli/chunks/{orchestrator-V4DBMGK6.js → orchestrator-XNYDBGIN.js} +18 -18
  221. package/dist/cli/chunks/pattern-null-store-X3UXLJNL.js +2 -0
  222. package/dist/cli/chunks/{pattern-usage-recorder-BY3HEWSU.js → pattern-usage-recorder-ZAP7ASQI.js} +2 -2
  223. package/dist/cli/chunks/{pipeline-3F5RIESX.js → pipeline-4EJYOPBC.js} +2 -2
  224. package/dist/cli/chunks/{platform-KCGXTZO3.js → platform-ALPOWCOH.js} +2 -2
  225. package/dist/cli/chunks/{plugin-2H552KOV.js → plugin-S2RX3KHR.js} +2 -2
  226. package/dist/cli/chunks/{prime-radiant-advanced-wasm-EFKVL7VN.js → prime-radiant-advanced-wasm-P2JB73XX.js} +2 -2
  227. package/dist/cli/chunks/protocol-executor-KXDCTMWI.js +2 -0
  228. package/dist/cli/chunks/{protocol-handler-ELGYV7D2.js → protocol-handler-ZBJXSESA.js} +2 -2
  229. package/dist/cli/chunks/{prove-AYJCQYNI.js → prove-MYJ5YV45.js} +2 -2
  230. package/dist/cli/chunks/provider-manager-XJZVHYI6.js +2 -0
  231. package/dist/cli/chunks/qe-reasoning-bank-DPHPNIC6.js +2 -0
  232. package/dist/cli/chunks/{quality-HH7L5A7V.js → quality-NIACQC4M.js} +2 -2
  233. package/dist/cli/chunks/{quality-gate-NAQLXE4C.js → quality-gate-OAZ23ON5.js} +3 -3
  234. package/dist/cli/chunks/queen-coordinator-EVGWME5C.js +2 -0
  235. package/dist/cli/chunks/{real-embeddings-IO3F4ZFR.js → real-embeddings-6I4LP7PL.js} +2 -2
  236. package/dist/cli/chunks/{roocode-installer-X4TU5HO4.js → roocode-installer-LRQHP6MK.js} +2 -2
  237. package/dist/cli/chunks/router-R2N7TMAS.js +2 -0
  238. package/dist/cli/chunks/routing-feedback-G6W3H26L.js +2 -0
  239. package/dist/cli/chunks/{routing-handler-ZJKGDDMT.js → routing-handler-A7BW7MV4.js} +2 -2
  240. package/dist/cli/chunks/{ruvector-commands-NXCSUBN2.js → ruvector-commands-ZDRRFSJS.js} +2 -2
  241. package/dist/cli/chunks/{rvf-dual-writer-JMA74SKP.js → rvf-dual-writer-QWE3Z6BB.js} +2 -2
  242. package/dist/cli/chunks/{rvf-migration-adapter-BNTGH2KU.js → rvf-migration-adapter-6UDAP7QB.js} +2 -2
  243. package/dist/cli/chunks/{rvf-migration-coordinator-7T2HHUOH.js → rvf-migration-coordinator-FEW2N4R4.js} +2 -2
  244. package/dist/cli/chunks/rvf-native-adapter-D7R2GWXK.js +2 -0
  245. package/dist/cli/chunks/safe-db-CQZGF2KA.js +2 -0
  246. package/dist/cli/chunks/schedule-UP7E3LRC.js +2 -0
  247. package/dist/cli/chunks/scheduler-ENIZHYSL.js +2 -0
  248. package/dist/cli/chunks/{security-XSK2QHB3.js → security-KFXBV65O.js} +3 -3
  249. package/dist/cli/chunks/{shared-rvf-adapter-WLRKI7RY.js → shared-rvf-adapter-HDDCXCHY.js} +2 -2
  250. package/dist/cli/chunks/{shared-rvf-dual-writer-SZW3J7ZK.js → shared-rvf-dual-writer-CXXTB7CU.js} +2 -2
  251. package/dist/cli/chunks/sqlite-persistence-CEVJVWS5.js +2 -0
  252. package/dist/cli/chunks/status-handler-CXSVM236.js +47 -0
  253. package/dist/cli/chunks/{structural-health-4SJCFX63.js → structural-health-LMHSM7MJ.js} +2 -2
  254. package/dist/cli/chunks/{sync-7WAVNZGL.js → sync-DMOUY2EY.js} +2 -2
  255. package/dist/cli/chunks/{sync-ATR4DUSA.js → sync-REEFKICL.js} +2 -2
  256. package/dist/cli/chunks/{task-handler-O6REL34Y.js → task-handler-DMSNFIH3.js} +2 -2
  257. package/dist/cli/chunks/{task-handlers-WFV2ZYWW.js → task-handlers-3Z3QV7X7.js} +3 -3
  258. package/dist/cli/chunks/{test-4LXUVHEU.js → test-U6CGMDLN.js} +4 -4
  259. package/dist/cli/chunks/{test-scheduling-OTN3DMKY.js → test-scheduling-YHYA3BP5.js} +3 -3
  260. package/dist/cli/chunks/{token-bootstrap-VA7T4P42.js → token-bootstrap-MQCTJURQ.js} +2 -2
  261. package/dist/cli/chunks/{token-usage-TLT6OXXR.js → token-usage-EOOTM7Q3.js} +2 -2
  262. package/dist/cli/chunks/{transformers-JI7LZRQ3.js → transformers-EKDJW2H6.js} +2 -2
  263. package/dist/cli/chunks/{tree-sitter-wasm-parser-QNIMHB4K.js → tree-sitter-wasm-parser-HTGAXDQA.js} +2 -2
  264. package/dist/cli/chunks/{types-DJNWOAC6.js → types-GLRXY4RY.js} +2 -2
  265. package/dist/cli/chunks/unified-memory-PXOQ4N53.js +2 -0
  266. package/dist/cli/chunks/unified-memory-hnsw-VEXD6ASE.js +2 -0
  267. package/dist/cli/chunks/unified-persistence-46G6MZYC.js +2 -0
  268. package/dist/cli/chunks/{upgrade-VEW4FL23.js → upgrade-KU55H77X.js} +2 -2
  269. package/dist/cli/chunks/{validate-O3P6PF7B.js → validate-26VSBOJN.js} +2 -2
  270. package/dist/cli/chunks/{validate-swarm-M2HXHZVC.js → validate-swarm-OIALRDKF.js} +2 -2
  271. package/dist/cli/chunks/{vibium-GOU55LUO.js → vibium-LOTWW25P.js} +2 -2
  272. package/dist/cli/chunks/visual-security-4X3T3MFL.js +2 -0
  273. package/dist/cli/chunks/{web-tree-sitter-MXOI4GH3.js → web-tree-sitter-6LWPPBYU.js} +2 -2
  274. package/dist/cli/chunks/{windsurf-installer-6GKT53IH.js → windsurf-installer-ILOQYENG.js} +2 -2
  275. package/dist/cli/chunks/witness-chain-XW4S3LVW.js +2 -0
  276. package/dist/cli/chunks/{witness-chain-OXGQGL26.js → witness-chain-YBS6OHS4.js} +2 -2
  277. package/dist/cli/chunks/{witness-key-manager-PGFSQXUJ.js → witness-key-manager-SI3WV3ZQ.js} +2 -2
  278. package/dist/cli/chunks/{workflow-ENBWRMBA.js → workflow-GY6SJRQW.js} +4 -4
  279. package/dist/cli/chunks/workflow-orchestrator-IIVV6TCP.js +2 -0
  280. package/dist/cli/chunks/{wrappers-MHLNYANQ.js → wrappers-MMO5YKOZ.js} +2 -2
  281. package/dist/cli/commands/eval.js +73 -3
  282. package/dist/cli/commands/llm-router.js +2 -0
  283. package/dist/cli/handlers/status-handler.d.ts +5 -0
  284. package/dist/cli/handlers/status-handler.js +35 -0
  285. package/dist/coordination/consensus/providers/index.js +11 -0
  286. package/dist/init/init-wizard-hooks.js +11 -25
  287. package/dist/init/phases/07-hooks.js +15 -25
  288. package/dist/init/settings-merge.d.ts +44 -0
  289. package/dist/init/settings-merge.js +119 -4
  290. package/dist/mcp/bundle.js +412 -393
  291. package/dist/shared/llm/billing-modes.d.ts +24 -0
  292. package/dist/shared/llm/billing-modes.js +56 -0
  293. package/dist/shared/llm/cost-tracker.js +2 -0
  294. package/dist/shared/llm/interfaces.d.ts +61 -3
  295. package/dist/shared/llm/provider-manager.d.ts +34 -0
  296. package/dist/shared/llm/provider-manager.js +152 -3
  297. package/dist/shared/llm/providers/claude-code.d.ts +57 -0
  298. package/dist/shared/llm/providers/claude-code.js +312 -0
  299. package/dist/shared/llm/providers/cognitum.d.ts +64 -0
  300. package/dist/shared/llm/providers/cognitum.js +369 -0
  301. package/dist/shared/llm/providers/index.d.ts +2 -0
  302. package/dist/shared/llm/providers/index.js +2 -0
  303. package/dist/shared/llm/router/config-store.d.ts +31 -11
  304. package/dist/shared/llm/router/config-store.js +82 -12
  305. package/dist/shared/llm/router/hybrid-router.js +16 -0
  306. package/dist/shared/llm/router/types.js +7 -0
  307. package/dist/shared/llm/spend-ledger.d.ts +64 -0
  308. package/dist/shared/llm/spend-ledger.js +115 -0
  309. package/dist/shared/llm/translation/message-formatter.js +2 -0
  310. package/dist/shared/llm/translation/prompt-translator.js +2 -0
  311. package/dist/shared/llm/translation/tool-translator.js +2 -0
  312. package/dist/validation/index.d.ts +1 -0
  313. package/dist/validation/index.js +2 -0
  314. package/dist/validation/provider-llm-executor.d.ts +45 -0
  315. package/dist/validation/provider-llm-executor.js +98 -0
  316. package/package.json +1 -1
  317. package/dist/cli/chunks/adapter-6IWRIHF3.js +0 -2
  318. package/dist/cli/chunks/aqe-learning-engine-FSF5U67K.js +0 -2
  319. package/dist/cli/chunks/base-2CKCJU3O.js +0 -2
  320. package/dist/cli/chunks/browser-workflow-UGYJE64S.js +0 -2
  321. package/dist/cli/chunks/chunk-2AOOIAW3.js +0 -316
  322. package/dist/cli/chunks/chunk-3B4XXFKD.js +0 -18
  323. package/dist/cli/chunks/chunk-BBC526PL.js +0 -24
  324. package/dist/cli/chunks/chunk-ESDGCTC4.js +0 -2
  325. package/dist/cli/chunks/chunk-IDLNLSQI.js +0 -3
  326. package/dist/cli/chunks/chunk-MDT3LIXS.js +0 -2
  327. package/dist/cli/chunks/client-E2XUBCLK.js +0 -2
  328. package/dist/cli/chunks/core-handlers-46Z5VOO6.js +0 -2
  329. package/dist/cli/chunks/cross-domain-router-SXQ3HFRY.js +0 -2
  330. package/dist/cli/chunks/dream-R6MQQQ3N.js +0 -2
  331. package/dist/cli/chunks/eval-XYOA3EH2.js +0 -15
  332. package/dist/cli/chunks/heartbeat-scheduler-OSDPJT6A.js +0 -2
  333. package/dist/cli/chunks/hnsw-adapter-KMGSHBIN.js +0 -2
  334. package/dist/cli/chunks/hnsw-index-IMFRAOPE.js +0 -2
  335. package/dist/cli/chunks/hybrid-router-57QSWSWC.js +0 -2
  336. package/dist/cli/chunks/impact-analyzer-OC4MPBGA.js +0 -2
  337. package/dist/cli/chunks/init-wizard-CDBRL4PO.js +0 -2
  338. package/dist/cli/chunks/kernel-CQ7R3AAV.js +0 -2
  339. package/dist/cli/chunks/knowledge-graph-UXNH7RY4.js +0 -2
  340. package/dist/cli/chunks/llm-router-service-UV34YXBE.js +0 -2
  341. package/dist/cli/chunks/load-test-2VEN3PQZ.js +0 -2
  342. package/dist/cli/chunks/memory-backend-TZL5U6F3.js +0 -2
  343. package/dist/cli/chunks/memory-handlers-BNXAYS2P.js +0 -2
  344. package/dist/cli/chunks/pattern-null-store-KLX2RNHM.js +0 -2
  345. package/dist/cli/chunks/protocol-executor-5HJKW6MC.js +0 -2
  346. package/dist/cli/chunks/provider-manager-TRZSBXD3.js +0 -2
  347. package/dist/cli/chunks/qe-reasoning-bank-RCEYSLVV.js +0 -2
  348. package/dist/cli/chunks/queen-coordinator-6JFZD54W.js +0 -2
  349. package/dist/cli/chunks/router-KRLC46NS.js +0 -2
  350. package/dist/cli/chunks/routing-feedback-WW26H6SA.js +0 -2
  351. package/dist/cli/chunks/rvf-native-adapter-OVQKPQUH.js +0 -2
  352. package/dist/cli/chunks/safe-db-UQOCQIH2.js +0 -2
  353. package/dist/cli/chunks/schedule-EUX7ZQUK.js +0 -2
  354. package/dist/cli/chunks/scheduler-MALHQKNR.js +0 -2
  355. package/dist/cli/chunks/sqlite-persistence-OBCLRP4L.js +0 -2
  356. package/dist/cli/chunks/status-handler-HGCKYJX2.js +0 -46
  357. package/dist/cli/chunks/unified-memory-A5BS3LGX.js +0 -2
  358. package/dist/cli/chunks/unified-memory-hnsw-WJLJO5MY.js +0 -2
  359. package/dist/cli/chunks/unified-persistence-CFC2BKI5.js +0 -2
  360. package/dist/cli/chunks/visual-security-VPB6KVYJ.js +0 -2
  361. package/dist/cli/chunks/witness-chain-ZZAUAXDY.js +0 -2
  362. package/dist/cli/chunks/workflow-orchestrator-S4LBFTYD.js +0 -2
@@ -0,0 +1,312 @@
1
+ /**
2
+ * Agentic QE v3 — Claude Code (subscription) Provider (ADR-123, issue #557)
3
+ *
4
+ * Runs QE analysis on the user's Claude Pro/Max subscription by shelling out
5
+ * to the Claude Code CLI (`claude -p --output-format json`) instead of calling
6
+ * `api.anthropic.com` with a paid API key. The CLI authenticates with the
7
+ * user's existing OAuth login and draws from the subscription's shared usage
8
+ * allowance, so the worst case is "hit the plan rate limit and pause" rather
9
+ * than a surprise per-token bill.
10
+ *
11
+ * LOAD-BEARING: the child process env has ANTHROPIC_API_KEY / CLAUDE_API_KEY /
12
+ * ANTHROPIC_AUTH_TOKEN stripped. If any is present, the CLI silently reverts
13
+ * to API-key billing and this provider would be a lie. `parity` test coverage
14
+ * asserts the strip.
15
+ */
16
+ import { spawn } from 'node:child_process';
17
+ import { createLLMError, } from '../interfaces';
18
+ import { TokenMetricsCollector } from '../../../learning/token-tracker.js';
19
+ /** Env vars whose presence flips the CLI from subscription to API billing. */
20
+ export const API_BILLING_ENV_VARS = [
21
+ 'ANTHROPIC_API_KEY',
22
+ 'CLAUDE_API_KEY',
23
+ 'ANTHROPIC_AUTH_TOKEN',
24
+ ];
25
+ export const DEFAULT_CLAUDE_CODE_CONFIG = {
26
+ model: 'sonnet',
27
+ maxTokens: 4096,
28
+ temperature: 0.7,
29
+ timeoutMs: 120000,
30
+ maxRetries: 1,
31
+ binaryPath: 'claude',
32
+ maxConcurrency: 2,
33
+ disallowedTools: ['Bash', 'Edit', 'Write', 'NotebookEdit', 'WebFetch', 'WebSearch', 'Task'],
34
+ };
35
+ export class ClaudeCodeProvider {
36
+ type = 'claude-code';
37
+ name = 'Claude Code (subscription)';
38
+ billingMode = 'subscription';
39
+ config;
40
+ requestId = 0;
41
+ availabilityCache;
42
+ active = 0;
43
+ queue = [];
44
+ constructor(config = {}) {
45
+ this.config = { ...DEFAULT_CLAUDE_CODE_CONFIG, ...config };
46
+ const envConc = Number.parseInt(process.env.AQE_CLAUDE_CODE_CONCURRENCY ?? '', 10);
47
+ if (Number.isFinite(envConc) && envConc > 0) {
48
+ this.config.maxConcurrency = envConc;
49
+ }
50
+ }
51
+ async isAvailable() {
52
+ // Cache for 60s — spawning `claude --version` per call is wasteful.
53
+ const now = Date.now();
54
+ if (this.availabilityCache && now - this.availabilityCache.at < 60_000) {
55
+ return this.availabilityCache.available;
56
+ }
57
+ let available = false;
58
+ try {
59
+ const { code } = await this.runProcess(['--version'], undefined, 5000);
60
+ available = code === 0;
61
+ }
62
+ catch {
63
+ available = false;
64
+ }
65
+ this.availabilityCache = { at: now, available };
66
+ return available;
67
+ }
68
+ async healthCheck() {
69
+ const start = Date.now();
70
+ const available = await this.isAvailable();
71
+ const latencyMs = Date.now() - start;
72
+ if (!available) {
73
+ return {
74
+ healthy: false,
75
+ latencyMs,
76
+ error: `Claude Code CLI ("${this.config.binaryPath}") not found or not runnable. ` +
77
+ `Install Claude Code and log in with your Pro/Max account.`,
78
+ };
79
+ }
80
+ return {
81
+ healthy: true,
82
+ latencyMs,
83
+ models: this.getSupportedModels(),
84
+ details: { binaryPath: this.config.binaryPath, billing: 'subscription' },
85
+ };
86
+ }
87
+ async generate(input, options) {
88
+ const model = this.toCliModel(options?.model ?? this.config.model);
89
+ const requestId = `claude-code-${++this.requestId}-${Date.now()}`;
90
+ const { prompt, systemPrompt } = this.flatten(input, options?.systemPrompt);
91
+ const args = ['-p', '--output-format', 'json', '--model', model];
92
+ if (systemPrompt) {
93
+ args.push('--append-system-prompt', systemPrompt);
94
+ }
95
+ const disallowed = this.config.disallowedTools ?? [];
96
+ if (disallowed.length > 0) {
97
+ args.push('--disallowedTools', ...disallowed);
98
+ }
99
+ const start = Date.now();
100
+ const timeoutMs = options?.timeoutMs ?? this.config.timeoutMs ?? 120000;
101
+ const { code, stdout, stderr } = await this.withConcurrency(() => this.runProcess(args, prompt, timeoutMs));
102
+ const latencyMs = Date.now() - start;
103
+ if (code !== 0 && !stdout.trim()) {
104
+ throw this.classifyError(stderr || `claude exited with code ${code}`, model);
105
+ }
106
+ let data;
107
+ try {
108
+ data = JSON.parse(stdout);
109
+ }
110
+ catch {
111
+ throw createLLMError(`Could not parse claude -p JSON output: ${stdout.slice(0, 200)}`, 'PROVIDER_UNAVAILABLE', { provider: 'claude-code', model, retryable: true });
112
+ }
113
+ if (data.is_error) {
114
+ throw this.classifyError(data.result ?? data.api_error_status ?? 'claude error', model);
115
+ }
116
+ const u = data.usage ?? {};
117
+ const usage = {
118
+ promptTokens: u.input_tokens ?? 0,
119
+ completionTokens: u.output_tokens ?? 0,
120
+ totalTokens: (u.input_tokens ?? 0) + (u.output_tokens ?? 0),
121
+ cacheCreationTokens: u.cache_creation_input_tokens ?? 0,
122
+ cacheReadTokens: u.cache_read_input_tokens ?? 0,
123
+ };
124
+ // The concrete model that actually served the request (modelUsage key).
125
+ const resolvedModel = (data.modelUsage && Object.keys(data.modelUsage)[0]) || model;
126
+ TokenMetricsCollector.recordTokenUsage(requestId, 'claude-code-provider', 'llm', 'generate', {
127
+ inputTokens: usage.promptTokens,
128
+ outputTokens: usage.completionTokens,
129
+ totalTokens: usage.totalTokens,
130
+ // Subscription: no marginal API charge. total_cost_usd is the
131
+ // API-equivalent figure, recorded for visibility only, not billed.
132
+ estimatedCostUsd: 0,
133
+ });
134
+ return {
135
+ content: data.result ?? '',
136
+ model: resolvedModel,
137
+ provider: 'claude-code',
138
+ usage,
139
+ // Subscription billing: marginal monetary cost is $0. The figure is
140
+ // authoritative (we know the subscription doesn't bill per token), so
141
+ // it's a provider receipt, not a local estimate.
142
+ cost: { inputCost: 0, outputCost: 0, totalCost: 0, currency: 'USD', source: 'provider-receipt' },
143
+ latencyMs,
144
+ finishReason: this.mapFinishReason(data.stop_reason),
145
+ cached: false,
146
+ requestId,
147
+ };
148
+ }
149
+ async embed(_text, _options) {
150
+ throw createLLMError('Claude Code provider does not support embeddings. Use openai, ollama, or cognitum.', 'MODEL_NOT_FOUND', { provider: 'claude-code', retryable: false });
151
+ }
152
+ async complete(prompt, options) {
153
+ const response = await this.generate(prompt, {
154
+ model: options?.model,
155
+ temperature: options?.temperature ?? 0.2,
156
+ maxTokens: options?.maxTokens ?? 256,
157
+ });
158
+ return {
159
+ completion: response.content,
160
+ model: response.model,
161
+ provider: 'claude-code',
162
+ usage: response.usage,
163
+ latencyMs: response.latencyMs,
164
+ cached: response.cached,
165
+ };
166
+ }
167
+ getConfig() {
168
+ return { ...this.config };
169
+ }
170
+ getSupportedModels() {
171
+ return ['opus', 'sonnet', 'haiku'];
172
+ }
173
+ getCostPerToken() {
174
+ // Subscription — no per-token monetary cost.
175
+ return { input: 0, output: 0 };
176
+ }
177
+ async dispose() {
178
+ // No persistent resources.
179
+ }
180
+ // -- internals -------------------------------------------------------------
181
+ /** Map an AQE canonical/model id to a CLI alias the `claude` binary accepts. */
182
+ toCliModel(model) {
183
+ const m = model.toLowerCase();
184
+ if (m.includes('opus'))
185
+ return 'opus';
186
+ if (m.includes('haiku'))
187
+ return 'haiku';
188
+ if (m.includes('sonnet'))
189
+ return 'sonnet';
190
+ return model;
191
+ }
192
+ flatten(input, systemPromptOpt) {
193
+ if (typeof input === 'string') {
194
+ return { prompt: input, systemPrompt: systemPromptOpt };
195
+ }
196
+ const systemParts = input.filter((m) => m.role === 'system').map((m) => m.content);
197
+ if (systemPromptOpt)
198
+ systemParts.unshift(systemPromptOpt);
199
+ const convo = input
200
+ .filter((m) => m.role !== 'system')
201
+ .map((m) => `${m.role === 'assistant' ? 'Assistant' : 'User'}: ${m.content}`)
202
+ .join('\n\n');
203
+ return {
204
+ prompt: convo,
205
+ systemPrompt: systemParts.length > 0 ? systemParts.join('\n\n') : undefined,
206
+ };
207
+ }
208
+ mapFinishReason(reason) {
209
+ switch (reason) {
210
+ case 'max_tokens':
211
+ return 'length';
212
+ case 'end_turn':
213
+ case 'stop_sequence':
214
+ default:
215
+ return 'stop';
216
+ }
217
+ }
218
+ classifyError(message, model) {
219
+ const lower = message.toLowerCase();
220
+ if (lower.includes('rate limit') ||
221
+ lower.includes('usage limit') ||
222
+ lower.includes('429') ||
223
+ lower.includes('quota')) {
224
+ // The *desired* failure mode: plan limit reached → pause and retry later.
225
+ return createLLMError(message, 'RATE_LIMITED', {
226
+ provider: 'claude-code',
227
+ model,
228
+ retryable: true,
229
+ retryAfterMs: 60_000,
230
+ });
231
+ }
232
+ return createLLMError(message, 'PROVIDER_UNAVAILABLE', {
233
+ provider: 'claude-code',
234
+ model,
235
+ retryable: true,
236
+ });
237
+ }
238
+ /**
239
+ * Build the child env with API-billing keys stripped (LOAD-BEARING).
240
+ * Exported logic tested by parity/env-strip tests.
241
+ */
242
+ static childEnv(base = process.env) {
243
+ const env = { ...base };
244
+ for (const key of API_BILLING_ENV_VARS) {
245
+ delete env[key];
246
+ }
247
+ return env;
248
+ }
249
+ runProcess(args, stdin, timeoutMs) {
250
+ return new Promise((resolve, reject) => {
251
+ const child = spawn(this.config.binaryPath ?? 'claude', args, {
252
+ env: ClaudeCodeProvider.childEnv(),
253
+ stdio: ['pipe', 'pipe', 'pipe'],
254
+ });
255
+ let stdout = '';
256
+ let stderr = '';
257
+ let settled = false;
258
+ const timer = setTimeout(() => {
259
+ if (settled)
260
+ return;
261
+ settled = true;
262
+ child.kill('SIGKILL');
263
+ reject(createLLMError('claude -p timed out', 'TIMEOUT', {
264
+ provider: 'claude-code',
265
+ retryable: true,
266
+ }));
267
+ }, timeoutMs);
268
+ child.stdout.on('data', (d) => (stdout += d.toString()));
269
+ child.stderr.on('data', (d) => (stderr += d.toString()));
270
+ child.on('error', (err) => {
271
+ if (settled)
272
+ return;
273
+ settled = true;
274
+ clearTimeout(timer);
275
+ reject(createLLMError(`Failed to spawn claude: ${err.message}`, 'PROVIDER_UNAVAILABLE', {
276
+ provider: 'claude-code',
277
+ retryable: false,
278
+ cause: err,
279
+ }));
280
+ });
281
+ child.on('close', (code) => {
282
+ if (settled)
283
+ return;
284
+ settled = true;
285
+ clearTimeout(timer);
286
+ resolve({ code: code ?? 0, stdout, stderr });
287
+ });
288
+ if (stdin !== undefined) {
289
+ child.stdin.write(stdin);
290
+ }
291
+ child.stdin.end();
292
+ });
293
+ }
294
+ /** Simple semaphore so we don't spawn unbounded `claude` subprocesses. */
295
+ async withConcurrency(fn) {
296
+ const limit = this.config.maxConcurrency ?? 2;
297
+ if (this.active >= limit) {
298
+ await new Promise((resolve) => this.queue.push(resolve));
299
+ }
300
+ this.active++;
301
+ try {
302
+ return await fn();
303
+ }
304
+ finally {
305
+ this.active--;
306
+ const next = this.queue.shift();
307
+ if (next)
308
+ next();
309
+ }
310
+ }
311
+ }
312
+ //# sourceMappingURL=claude-code.js.map
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Agentic QE v3 — Cognitum Provider (ADR-123)
3
+ *
4
+ * api.cognitum.one is an OpenAI-compatible (and Anthropic-compatible) LLM
5
+ * gateway with two properties that matter for issue #557:
6
+ * 1. Every response carries an `x_cognitum` receipt with an authoritative
7
+ * per-request `price_usd` — so cost is a provider receipt, not a local
8
+ * price-table estimate.
9
+ * 2. It enforces a server-side hard spend cap (`/v1/usage` → `hardCapUsd`),
10
+ * so the worst case is "provider pauses at the cap", not a surprise bill.
11
+ *
12
+ * Models are tiers (`cognitum-auto|low|mid|high`); the gateway resolves each
13
+ * to a concrete model and reports it back in the receipt (`resolved_model`).
14
+ */
15
+ import { LLMProvider, LLMProviderType, BillingMode, CognitumConfig, Message, GenerateOptions, EmbedOptions, CompleteOptions, LLMResponse, EmbeddingResponse, CompletionResponse, HealthCheckResult } from '../interfaces';
16
+ export type { CognitumConfig };
17
+ export declare const DEFAULT_COGNITUM_CONFIG: CognitumConfig;
18
+ /** Server-side budget snapshot from GET /v1/usage. */
19
+ export interface CognitumBudget {
20
+ servingBudgetUsd: number;
21
+ hardCapUsd: number;
22
+ committedUsd: number;
23
+ headroomUsd: number;
24
+ status: string;
25
+ headroomExhausted: boolean;
26
+ }
27
+ export declare class CognitumProvider implements LLMProvider {
28
+ readonly type: LLMProviderType;
29
+ readonly name: string;
30
+ readonly billingMode: BillingMode;
31
+ private config;
32
+ private requestId;
33
+ constructor(config?: Partial<CognitumConfig>);
34
+ isAvailable(): Promise<boolean>;
35
+ healthCheck(): Promise<HealthCheckResult>;
36
+ generate(input: string | Message[], options?: GenerateOptions): Promise<LLMResponse>;
37
+ embed(text: string, options?: EmbedOptions): Promise<EmbeddingResponse>;
38
+ complete(prompt: string, options?: CompleteOptions): Promise<CompletionResponse>;
39
+ getConfig(): CognitumConfig;
40
+ getSupportedModels(): string[];
41
+ getCostPerToken(): {
42
+ input: number;
43
+ output: number;
44
+ };
45
+ dispose(): Promise<void>;
46
+ /**
47
+ * ADR-123: read the provider's server-side budget so `aqe health` and the
48
+ * billing notice can show real remaining headroom. Returns undefined on any
49
+ * failure (best-effort — never throws).
50
+ */
51
+ getRemoteBudget(): Promise<CognitumBudget | undefined>;
52
+ /** Build a CostInfo from the authoritative receipt price. */
53
+ private receiptCost;
54
+ private getApiKey;
55
+ private getBaseUrl;
56
+ private getHeaders;
57
+ private formatMessages;
58
+ private mapFinishReason;
59
+ private toApiError;
60
+ private fetchWithTimeout;
61
+ private fetchWithRetry;
62
+ private sleep;
63
+ }
64
+ //# sourceMappingURL=cognitum.d.ts.map