agentic-qe 3.14.1 → 3.14.3

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 (387) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +109 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/cli/bundle.js +7 -7
  5. package/dist/cli/chunks/adapter-AKQYU6UH.js +2 -0
  6. package/dist/cli/chunks/{agent-booster-wasm-OY5Y2CUM.js → agent-booster-wasm-TQOMLWWX.js} +2 -2
  7. package/dist/cli/chunks/{agent-handler-TUOH55LD.js → agent-handler-Q3SEMMI2.js} +2 -2
  8. package/dist/cli/chunks/{agent-memory-branch-XM3IYKT3.js → agent-memory-branch-SJXAQSZI.js} +2 -2
  9. package/dist/cli/chunks/aqe-learning-engine-MICRPL3N.js +2 -0
  10. package/dist/cli/chunks/{arena-DOCLIEBL.js → arena-7RC7TBGW.js} +4 -4
  11. package/dist/cli/chunks/{arena-UMFJZKG7.js → arena-UPB7TKUY.js} +2 -2
  12. package/dist/cli/chunks/{audit-KZLU5VLW.js → audit-IXN5R4WB.js} +3 -3
  13. package/dist/cli/chunks/base-DZK36ITB.js +2 -0
  14. package/dist/cli/chunks/{better-sqlite3-MIEZBNUI.js → better-sqlite3-RP4DEGK3.js} +2 -2
  15. package/dist/cli/chunks/{brain-handler-6PZN46B7.js → brain-handler-H5OVZ22L.js} +3 -3
  16. package/dist/cli/chunks/{branch-enumerator-XCETHA4F.js → branch-enumerator-VPRWDGFJ.js} +2 -2
  17. package/dist/cli/chunks/{browser-UEXISDCJ.js → browser-B6E7JPPJ.js} +2 -2
  18. package/dist/cli/chunks/browser-workflow-ADK54DOE.js +2 -0
  19. package/dist/cli/chunks/{chunk-PS6Y662P.js → chunk-26GM5CWD.js} +3 -3
  20. package/dist/cli/chunks/{chunk-IGRTQ6VT.js → chunk-2GNRW3OD.js} +2 -2
  21. package/dist/cli/chunks/{chunk-QIY43XQJ.js → chunk-2IGT5WNQ.js} +1 -1
  22. package/dist/cli/chunks/{chunk-LSXQPMPI.js → chunk-2WT7AKKK.js} +2 -2
  23. package/dist/cli/chunks/{chunk-5F5V4QYU.js → chunk-33VPWGCM.js} +3 -3
  24. package/dist/cli/chunks/{chunk-KXMW7XTJ.js → chunk-37BASGWC.js} +2 -2
  25. package/dist/cli/chunks/{chunk-5KP62DC3.js → chunk-3ABRGG3C.js} +2 -2
  26. package/dist/cli/chunks/{chunk-T7XYQX5G.js → chunk-3P6NCFI2.js} +2 -2
  27. package/dist/cli/chunks/{chunk-EEJP3WTQ.js → chunk-42VSQ2MX.js} +3 -3
  28. package/dist/cli/chunks/chunk-44WISFTU.js +2 -0
  29. package/dist/cli/chunks/{chunk-5T6PAUZD.js → chunk-4C6UJIHB.js} +1 -1
  30. package/dist/cli/chunks/{chunk-5TYGSQOL.js → chunk-4JBFJTHJ.js} +1 -1
  31. package/dist/cli/chunks/{chunk-FH7SCX2I.js → chunk-4OUPCTBS.js} +2 -2
  32. package/dist/cli/chunks/{chunk-UUE5CBZQ.js → chunk-4Q35TI6Z.js} +2 -2
  33. package/dist/cli/chunks/{chunk-HJD52N32.js → chunk-4RP5VUBI.js} +2 -2
  34. package/dist/cli/chunks/{chunk-GRVR3Y6I.js → chunk-4TXAP3YH.js} +1 -1
  35. package/dist/cli/chunks/{chunk-IIBXGHZT.js → chunk-4UDZLD42.js} +2 -2
  36. package/dist/cli/chunks/{chunk-GO66DCIZ.js → chunk-4W7QVUNO.js} +2 -2
  37. package/dist/cli/chunks/{chunk-AESYVAPH.js → chunk-4XPPMADQ.js} +2 -2
  38. package/dist/cli/chunks/{chunk-3FFMUB3B.js → chunk-527HQAY7.js} +2 -2
  39. package/dist/cli/chunks/chunk-5BLFXQEB.js +96 -0
  40. package/dist/cli/chunks/{chunk-QMTBWHGR.js → chunk-5DFHE4H5.js} +3 -3
  41. package/dist/cli/chunks/{chunk-AZUC7E5S.js → chunk-5F6DWHQG.js} +2 -2
  42. package/dist/cli/chunks/{chunk-6HMNN2Y2.js → chunk-5FOZO7KM.js} +81 -65
  43. package/dist/cli/chunks/{chunk-L4WATX6B.js → chunk-5IAB5NRZ.js} +2 -2
  44. package/dist/cli/chunks/{chunk-JMULRLD4.js → chunk-5P3G6ZW4.js} +1 -1
  45. package/dist/cli/chunks/{chunk-ND6JBUVH.js → chunk-5Y5TC6BY.js} +2 -2
  46. package/dist/cli/chunks/{chunk-DKSLJZVA.js → chunk-6F2RM6X2.js} +1 -1
  47. package/dist/cli/chunks/{chunk-J7VAD4RG.js → chunk-72UJXEKQ.js} +2 -2
  48. package/dist/cli/chunks/{chunk-RCHDSUVU.js → chunk-74PK3NEW.js} +2 -2
  49. package/dist/cli/chunks/{chunk-FHBGALBG.js → chunk-7BUERZYL.js} +2 -2
  50. package/dist/cli/chunks/{chunk-IYB3GRXF.js → chunk-7FYMDKQH.js} +174 -169
  51. package/dist/cli/chunks/{chunk-CBWF42ET.js → chunk-7G6UX2QN.js} +2 -2
  52. package/dist/cli/chunks/{chunk-GH3NJOTC.js → chunk-7JQHPANT.js} +3 -3
  53. package/dist/cli/chunks/{chunk-J2VF7ZO7.js → chunk-7SLAZAVU.js} +2 -2
  54. package/dist/cli/chunks/{chunk-GYTWUOKU.js → chunk-7Y2CEXRS.js} +4 -4
  55. package/dist/cli/chunks/{chunk-7AF55H2D.js → chunk-AB4U6ZNI.js} +2 -2
  56. package/dist/cli/chunks/chunk-AWNYEAGB.js +2 -0
  57. package/dist/cli/chunks/chunk-B2ZONZPZ.js +5 -0
  58. package/dist/cli/chunks/{chunk-FZ47ZCRL.js → chunk-B5XFDFBT.js} +1 -1
  59. package/dist/cli/chunks/{chunk-TLD727EF.js → chunk-B7SWW5A6.js} +2 -2
  60. package/dist/cli/chunks/chunk-BN7DKW5D.js +2 -0
  61. package/dist/cli/chunks/{chunk-UWRMPRY5.js → chunk-C46DMCWF.js} +1 -1
  62. package/dist/cli/chunks/{chunk-5NSSJUWW.js → chunk-CB5JPRIZ.js} +2 -2
  63. package/dist/cli/chunks/{chunk-A6RB34Y6.js → chunk-CBOPBYPU.js} +1 -1
  64. package/dist/cli/chunks/{chunk-FRRRDCXY.js → chunk-CR3QGHVN.js} +2 -2
  65. package/dist/cli/chunks/{chunk-J33LKXVH.js → chunk-D4Z2N74A.js} +1 -1
  66. package/dist/cli/chunks/{chunk-HKU5PPS7.js → chunk-DBA3N742.js} +1 -1
  67. package/dist/cli/chunks/{chunk-JJ4GUO4K.js → chunk-DX3C5HPN.js} +1 -1
  68. package/dist/cli/chunks/{chunk-NNJ63W77.js → chunk-E3FBW6G2.js} +1 -1
  69. package/dist/cli/chunks/{chunk-6Z6Y3YBX.js → chunk-ELU4IC3I.js} +1 -1
  70. package/dist/cli/chunks/{chunk-MFAN5W27.js → chunk-EY4OQHU3.js} +1 -1
  71. package/dist/cli/chunks/{chunk-S53ZUAVI.js → chunk-F67AV5P2.js} +2 -2
  72. package/dist/cli/chunks/chunk-FD2JFEQC.js +2 -0
  73. package/dist/cli/chunks/chunk-FKG5OQFT.js +2 -0
  74. package/dist/cli/chunks/{chunk-RXPHQ4ZE.js → chunk-FUE6LL72.js} +2 -2
  75. package/dist/cli/chunks/{chunk-HPQU6XZH.js → chunk-G5C2XVZC.js} +1 -1
  76. package/dist/cli/chunks/{chunk-N22LMACN.js → chunk-G6DCESPU.js} +2 -2
  77. package/dist/cli/chunks/{chunk-VUXHJPUS.js → chunk-G6ZHTF42.js} +2 -2
  78. package/dist/cli/chunks/{chunk-QM6EJHP5.js → chunk-GNTVFN7D.js} +1 -1
  79. package/dist/cli/chunks/{chunk-B6Y6AF4M.js → chunk-H5ZRV5K5.js} +2 -2
  80. package/dist/cli/chunks/{chunk-X5G3UDWP.js → chunk-H6XBM2LY.js} +2 -2
  81. package/dist/cli/chunks/{chunk-KXTN3FR4.js → chunk-HOQQCY2K.js} +2 -2
  82. package/dist/cli/chunks/{chunk-NAJCQJSK.js → chunk-HRUU7E3D.js} +2 -2
  83. package/dist/cli/chunks/{chunk-ODNLKYOM.js → chunk-HXE5NBJG.js} +1 -1
  84. package/dist/cli/chunks/{chunk-CCZZZBAO.js → chunk-I4NDQGKP.js} +2 -2
  85. package/dist/cli/chunks/{chunk-SEKOMKNG.js → chunk-IFFZR6GY.js} +1 -1
  86. package/dist/cli/chunks/{chunk-WFJKLM6Z.js → chunk-IKIITGU5.js} +3 -3
  87. package/dist/cli/chunks/{chunk-PYAH4K2U.js → chunk-IP7NSFQQ.js} +2 -2
  88. package/dist/cli/chunks/{chunk-3BRR2FLH.js → chunk-IQEJGZV6.js} +3 -3
  89. package/dist/cli/chunks/{chunk-HRUQWABO.js → chunk-IU4EBTA2.js} +3 -3
  90. package/dist/cli/chunks/{chunk-5Y2QFSVZ.js → chunk-JBB7E26R.js} +2 -2
  91. package/dist/cli/chunks/{chunk-ZAHCVRR7.js → chunk-JRYZKBY2.js} +2 -2
  92. package/dist/cli/chunks/{chunk-PMUF7WU6.js → chunk-JV4FZUE7.js} +2 -2
  93. package/dist/cli/chunks/{chunk-PS5NIMWJ.js → chunk-KF63AYXD.js} +2 -2
  94. package/dist/cli/chunks/{chunk-F7TRO2OM.js → chunk-KPMGTVB4.js} +1 -1
  95. package/dist/cli/chunks/chunk-L2GKMBDP.js +2 -0
  96. package/dist/cli/chunks/{chunk-LMPK63PO.js → chunk-LHGNNZ76.js} +3 -3
  97. package/dist/cli/chunks/{chunk-HBAQVJDP.js → chunk-LKN7JQTW.js} +2 -2
  98. package/dist/cli/chunks/{chunk-JZUWPDVS.js → chunk-LLVGTEHU.js} +1 -1
  99. package/dist/cli/chunks/{chunk-7XL2D56F.js → chunk-LS3EUMBP.js} +6 -6
  100. package/dist/cli/chunks/{chunk-MDLLEUFN.js → chunk-LTBCAFTZ.js} +3 -3
  101. package/dist/cli/chunks/{chunk-S4WIAKPL.js → chunk-LVLBIKJD.js} +1 -1
  102. package/dist/cli/chunks/{chunk-ERTGGFXZ.js → chunk-MDZ6RRLX.js} +2 -2
  103. package/dist/cli/chunks/{chunk-OBLHI4HA.js → chunk-MWWAMDHI.js} +1 -1
  104. package/dist/cli/chunks/{chunk-45S5553E.js → chunk-MXMFGSWR.js} +2 -2
  105. package/dist/cli/chunks/{chunk-HCCILQGN.js → chunk-N4H2QOT5.js} +2 -2
  106. package/dist/cli/chunks/{chunk-L66BWYQH.js → chunk-NBWQBQO5.js} +1 -1
  107. package/dist/cli/chunks/{chunk-RYHCYTFE.js → chunk-NN76NTOX.js} +1 -1
  108. package/dist/cli/chunks/{chunk-75SC3GEX.js → chunk-NTSXHZTC.js} +2 -2
  109. package/dist/cli/chunks/{chunk-PZZX57ZA.js → chunk-OV5EZO3U.js} +2 -2
  110. package/dist/cli/chunks/{chunk-7GF6IRSU.js → chunk-OVDKWCD7.js} +2 -2
  111. package/dist/cli/chunks/{chunk-DFXQLHQM.js → chunk-OVPJQWHW.js} +2 -2
  112. package/dist/cli/chunks/{chunk-Y63V33M6.js → chunk-OY7MLMEX.js} +5 -5
  113. package/dist/cli/chunks/{chunk-LJ63HPPN.js → chunk-OYMLHX2B.js} +1 -1
  114. package/dist/cli/chunks/{chunk-FPBQ7BXU.js → chunk-PI74GOE4.js} +2 -2
  115. package/dist/cli/chunks/{chunk-LQDFWLKK.js → chunk-PZTVH2AS.js} +2 -2
  116. package/dist/cli/chunks/{chunk-UCJEAK7D.js → chunk-QLWNXBRU.js} +2 -2
  117. package/dist/cli/chunks/{chunk-O7KF3GBV.js → chunk-R2AFVFRF.js} +1 -1
  118. package/dist/cli/chunks/{chunk-TF33GKWA.js → chunk-RKJZWWB7.js} +2 -2
  119. package/dist/cli/chunks/{chunk-FOAFRC2W.js → chunk-ROX7NLS4.js} +2 -2
  120. package/dist/cli/chunks/{chunk-OBKMLOHU.js → chunk-RTJ2M6V6.js} +2 -2
  121. package/dist/cli/chunks/{chunk-7AYTM426.js → chunk-SG47AXJG.js} +1 -1
  122. package/dist/cli/chunks/{chunk-3AYNHOWS.js → chunk-SGXSB7YO.js} +1 -1
  123. package/dist/cli/chunks/{chunk-Z5YU2TDS.js → chunk-SHGKY3QB.js} +2 -2
  124. package/dist/cli/chunks/{chunk-TT7DF2GX.js → chunk-SJPZSCZP.js} +2 -2
  125. package/dist/cli/chunks/{chunk-RUEHSOE6.js → chunk-SQ3PPISY.js} +1 -1
  126. package/dist/cli/chunks/{chunk-NEEZ6M4W.js → chunk-STRDSVH3.js} +2 -2
  127. package/dist/cli/chunks/{chunk-DKXSJDII.js → chunk-T35GZXTU.js} +2 -2
  128. package/dist/cli/chunks/{chunk-KHUO4NCW.js → chunk-T62DH4GG.js} +2 -2
  129. package/dist/cli/chunks/{chunk-6YIMLUH6.js → chunk-TFHQE6NK.js} +2 -2
  130. package/dist/cli/chunks/{chunk-ZC3HC6FO.js → chunk-TGLAWI62.js} +1 -1
  131. package/dist/cli/chunks/{chunk-4MT62HKK.js → chunk-TISSZFHO.js} +1 -1
  132. package/dist/cli/chunks/{chunk-3XRXUVUI.js → chunk-TJEIOE7F.js} +1 -1
  133. package/dist/cli/chunks/{chunk-TQ2JZVZ3.js → chunk-TTMHIOQ3.js} +2 -2
  134. package/dist/cli/chunks/{chunk-VEWYUEVY.js → chunk-UHQY3GK7.js} +2 -2
  135. package/dist/cli/chunks/{chunk-MZ2PJUN6.js → chunk-UMENRGHK.js} +2 -2
  136. package/dist/cli/chunks/{chunk-H2DX36SC.js → chunk-UMNYF5EZ.js} +2 -2
  137. package/dist/cli/chunks/{chunk-SZRDEPUY.js → chunk-UTVRQEZM.js} +3 -3
  138. package/dist/cli/chunks/{chunk-4ZLFUO4I.js → chunk-UYJHYMEQ.js} +2 -2
  139. package/dist/cli/chunks/{chunk-6DDMHZWH.js → chunk-V4AOVDCJ.js} +2 -2
  140. package/dist/cli/chunks/{chunk-CGDW47WP.js → chunk-VIDBBB6F.js} +2 -2
  141. package/dist/cli/chunks/{chunk-6B77GPWL.js → chunk-VWNHKYK7.js} +2 -2
  142. package/dist/cli/chunks/{chunk-EPBWFTHH.js → chunk-WYMGK5DX.js} +2 -2
  143. package/dist/cli/chunks/{chunk-3WSH4HD2.js → chunk-XA7CG3LH.js} +2 -2
  144. package/dist/cli/chunks/{chunk-FFRKTZYP.js → chunk-XX7HUSX2.js} +2 -2
  145. package/dist/cli/chunks/{chunk-PMREFRPP.js → chunk-XXCYQXK3.js} +2 -2
  146. package/dist/cli/chunks/{chunk-EHW62JL2.js → chunk-Y2DVFVGI.js} +1 -1
  147. package/dist/cli/chunks/{chunk-D6RCRTTR.js → chunk-Y5SQBI2F.js} +2 -2
  148. package/dist/cli/chunks/{chunk-VVP2ROXD.js → chunk-YAKS3CAB.js} +2 -2
  149. package/dist/cli/chunks/{chunk-C3XNFIOM.js → chunk-YCBDE2N7.js} +2 -2
  150. package/dist/cli/chunks/{chunk-RVCMZUSJ.js → chunk-YDNSLLBS.js} +2 -2
  151. package/dist/cli/chunks/{chunk-TGFJUL6M.js → chunk-YEXPFHV6.js} +2 -2
  152. package/dist/cli/chunks/{chunk-UN7EHLRV.js → chunk-YGB6R5DW.js} +1 -1
  153. package/dist/cli/chunks/{chunk-JNSTKE3K.js → chunk-YL7T3VV7.js} +2 -2
  154. package/dist/cli/chunks/{chunk-3TMUCJNJ.js → chunk-ZHXWGNYM.js} +1 -1
  155. package/dist/cli/chunks/{chunk-DKUKGBJE.js → chunk-ZK5JKHP4.js} +1 -1
  156. package/dist/cli/chunks/{chunk-IYIMLLUV.js → chunk-ZN3J6TZD.js} +1 -1
  157. package/dist/cli/chunks/{chunk-3JMSXOU4.js → chunk-ZUG5MOUB.js} +2 -2
  158. package/dist/cli/chunks/{ci-Q2VX75PS.js → ci-YVKDQWIX.js} +2 -2
  159. package/dist/cli/chunks/ci-output-LK3MBXLZ.js +2 -0
  160. package/dist/cli/chunks/{circuit-breaker-JMRLG2XI.js → circuit-breaker-7AIXACR7.js} +2 -2
  161. package/dist/cli/chunks/{claude-flow-setup-IMXYALBU.js → claude-flow-setup-UA7EO6VN.js} +2 -2
  162. package/dist/cli/chunks/client-M72GXFVQ.js +2 -0
  163. package/dist/cli/chunks/{cline-installer-HWFASEGE.js → cline-installer-YDDCKKEV.js} +2 -2
  164. package/dist/cli/chunks/{code-3V37TCAD.js → code-URB7UAKW.js} +2 -2
  165. package/dist/cli/chunks/{code-index-extractor-5V54WGFL.js → code-index-extractor-BL6HWH4Q.js} +2 -2
  166. package/dist/cli/chunks/{codex-installer-UCA5AVE6.js → codex-installer-2AVEO4EA.js} +2 -2
  167. package/dist/cli/chunks/{completions-2DMRCQU6.js → completions-RCKBSSSS.js} +2 -2
  168. package/dist/cli/chunks/{complexity-analyzer-MMQRXBTD.js → complexity-analyzer-LEDG62YK.js} +2 -2
  169. package/dist/cli/chunks/{continuedev-installer-FAARXP3S.js → continuedev-installer-VOTCEBFH.js} +2 -2
  170. package/dist/cli/chunks/{copilot-installer-AKQALMB5.js → copilot-installer-NVTGLZX3.js} +2 -2
  171. package/dist/cli/chunks/core-handlers-C32RAMVI.js +2 -0
  172. package/dist/cli/chunks/{cost-tracker-AXWHDND5.js → cost-tracker-GJIFB2BM.js} +2 -2
  173. package/dist/cli/chunks/{coverage-ZLSKKCG5.js → coverage-ZTPJWXWE.js} +3 -3
  174. package/dist/cli/chunks/cross-domain-router-UGFUCPKC.js +2 -0
  175. package/dist/cli/chunks/{cursor-installer-UALCQKVD.js → cursor-installer-CMGJQMHX.js} +2 -2
  176. package/dist/cli/chunks/{daemon-4LNOPJGN.js → daemon-V456IWR3.js} +8 -8
  177. package/dist/cli/chunks/{daemon-K3DFGCXC.js → daemon-Y2I3YVIU.js} +4 -4
  178. package/dist/cli/chunks/{dag-attention-scheduler-LCQ7MYKC.js → dag-attention-scheduler-ZCBBOD3D.js} +2 -2
  179. package/dist/cli/chunks/{detect-P7PEN3MZ.js → detect-2GHEA4A3.js} +2 -2
  180. package/dist/cli/chunks/{dist-node-I72BJC2D.js → dist-node-44AGYJCH.js} +2 -2
  181. package/dist/cli/chunks/{domain-handler-LROF6KWN.js → domain-handler-IDLIEP6X.js} +2 -2
  182. package/dist/cli/chunks/{domain-transfer-M2ZSSTPV.js → domain-transfer-KLEXGIRF.js} +2 -2
  183. package/dist/cli/chunks/dream-UFBBXY5W.js +2 -0
  184. package/dist/cli/chunks/{embed-and-insert-pattern-MTBPUGO4.js → embed-and-insert-pattern-DUW6K35A.js} +2 -2
  185. package/dist/cli/chunks/{eval-O24ALB3W.js → eval-PR6YWDFM.js} +2 -2
  186. package/dist/cli/chunks/{experience-capture-middleware-7JXEOGRE.js → experience-capture-middleware-CJJJN7CF.js} +3 -3
  187. package/dist/cli/chunks/{fast-paths-4CFYJV4U.js → fast-paths-LGLLKX6P.js} +2 -2
  188. package/dist/cli/chunks/{feature-flags-CHPUA7IM.js → feature-flags-33D3I4DD.js} +2 -2
  189. package/dist/cli/chunks/{feature-flags-E6PIM6ZB.js → feature-flags-QL4NCEGW.js} +2 -2
  190. package/dist/cli/chunks/{file-discovery-2ANIAUCP.js → file-discovery-GKCYJPFZ.js} +2 -2
  191. package/dist/cli/chunks/{fleet-2MQ3OGCP.js → fleet-QNT6X2YI.js} +3 -3
  192. package/dist/cli/chunks/{gnn-wrapper-P7JW3622.js → gnn-wrapper-ELSGT67Z.js} +2 -2
  193. package/dist/cli/chunks/{heartbeat-handler-WWWZSA7V.js → heartbeat-handler-ZUI3DOOP.js} +4 -4
  194. package/dist/cli/chunks/heartbeat-scheduler-VQWHSGTY.js +2 -0
  195. package/dist/cli/chunks/hnsw-adapter-BS3NXWGU.js +2 -0
  196. package/dist/cli/chunks/hnsw-index-JP26B4HW.js +2 -0
  197. package/dist/cli/chunks/{hnsw-legacy-bridge-W634ZOTV.js → hnsw-legacy-bridge-EZMM5JWL.js} +2 -2
  198. package/dist/cli/chunks/{hnswlib-node-SLZDLMKM.js → hnswlib-node-G4CE3EOS.js} +2 -2
  199. package/dist/cli/chunks/{hooks-3BFAZGG7.js → hooks-LCVXXA55.js} +10 -10
  200. package/dist/cli/chunks/{hypergraph-engine-XJSGXP2J.js → hypergraph-engine-6Z7RQ3HI.js} +2 -2
  201. package/dist/cli/chunks/{hypergraph-handler-RVUWZMOX.js → hypergraph-handler-PLI2GYPK.js} +3 -3
  202. package/dist/cli/chunks/impact-analyzer-WRE4CWPJ.js +2 -0
  203. package/dist/cli/chunks/{init-handler-FYOZNNNO.js → init-handler-7VH3QJ5Y.js} +6 -6
  204. package/dist/cli/chunks/init-wizard-OFOEYB75.js +2 -0
  205. package/dist/cli/chunks/kernel-MXNFWNUD.js +2 -0
  206. package/dist/cli/chunks/{kilocode-installer-MAAKFVSB.js → kilocode-installer-U3MW62DE.js} +2 -2
  207. package/dist/cli/chunks/{kiro-installer-GX3TLZC5.js → kiro-installer-PPEAC44T.js} +2 -2
  208. package/dist/cli/chunks/knowledge-graph-7JE2TVKJ.js +2 -0
  209. package/dist/cli/chunks/{learning-T4QZ6C26.js → learning-7B5NITDV.js} +3 -3
  210. package/dist/cli/chunks/{llm-router-N2M4WXOC.js → llm-router-BNEPT5OB.js} +4 -4
  211. package/dist/cli/chunks/llm-router-service-GTDVDKSU.js +2 -0
  212. package/dist/cli/chunks/{load-6RU3G4P2.js → load-VO7ABNHV.js} +2 -2
  213. package/dist/cli/chunks/load-test-JZ4CLSBF.js +2 -0
  214. package/dist/cli/chunks/{mcp-EFBO7BAU.js → mcp-THXEINCL.js} +2 -2
  215. package/dist/cli/chunks/{memory-AXU2M3DN.js → memory-FZTT7ADM.js} +5 -5
  216. package/dist/cli/chunks/memory-backend-Q54CC5A5.js +2 -0
  217. package/dist/cli/chunks/memory-handlers-IIBJXKHZ.js +2 -0
  218. package/dist/cli/chunks/{multi-model-executor-W7AFGVNH.js → multi-model-executor-HEDVOZ6X.js} +2 -2
  219. package/dist/cli/chunks/{opencode-installer-KJE2RLCH.js → opencode-installer-GQ7J5SBG.js} +2 -2
  220. package/dist/cli/chunks/{orchestrator-CL6MLGVU.js → orchestrator-66JK2OS5.js} +5 -5
  221. package/dist/cli/chunks/pattern-null-store-W33O7FYO.js +2 -0
  222. package/dist/cli/chunks/{pattern-usage-recorder-7SNSJ7K2.js → pattern-usage-recorder-O6XHM2G5.js} +2 -2
  223. package/dist/cli/chunks/{pipeline-3UU6ON3F.js → pipeline-UOG6UO6D.js} +2 -2
  224. package/dist/cli/chunks/{platform-SNMPIDIT.js → platform-Q7UH7FZQ.js} +2 -2
  225. package/dist/cli/chunks/{plugin-65IIUUCU.js → plugin-7OFLNGOS.js} +2 -2
  226. package/dist/cli/chunks/{prime-radiant-advanced-wasm-WWWJRLRP.js → prime-radiant-advanced-wasm-OSRDK2FW.js} +2 -2
  227. package/dist/cli/chunks/protocol-executor-VGN4M7XY.js +2 -0
  228. package/dist/cli/chunks/{protocol-handler-SEBHCLLJ.js → protocol-handler-WLYTX6FS.js} +2 -2
  229. package/dist/cli/chunks/{prove-N4X7CCJ4.js → prove-QVNE4V3J.js} +2 -2
  230. package/dist/cli/chunks/qe-reasoning-bank-7VB5LJGS.js +2 -0
  231. package/dist/cli/chunks/{quality-LBCJWXMU.js → quality-DNE2RKE5.js} +2 -2
  232. package/dist/cli/chunks/{quality-gate-KZIQI7QT.js → quality-gate-2K35GCSI.js} +3 -3
  233. package/dist/cli/chunks/queen-coordinator-HIDMJMMG.js +2 -0
  234. package/dist/cli/chunks/{real-embeddings-XCZFHFME.js → real-embeddings-SF42ML7G.js} +2 -2
  235. package/dist/cli/chunks/{roocode-installer-P3O6B7PT.js → roocode-installer-NCEZPF5L.js} +2 -2
  236. package/dist/cli/chunks/router-CTIJS4D7.js +2 -0
  237. package/dist/cli/chunks/routing-feedback-LFYYZS5J.js +2 -0
  238. package/dist/cli/chunks/{routing-handler-OXZ4DOV4.js → routing-handler-4MXXZRYP.js} +2 -2
  239. package/dist/cli/chunks/{ruvector-commands-PSY5IDSL.js → ruvector-commands-WDFMMCMK.js} +2 -2
  240. package/dist/cli/chunks/rvf-dual-writer-MNPMIWVM.js +2 -0
  241. package/dist/cli/chunks/rvf-migration-adapter-DXOKSSNW.js +2 -0
  242. package/dist/cli/chunks/{rvf-migration-coordinator-4SUT7GTJ.js → rvf-migration-coordinator-JT7ZCJY7.js} +2 -2
  243. package/dist/cli/chunks/rvf-native-adapter-PZKUKA7R.js +2 -0
  244. package/dist/cli/chunks/{rvf-store-integrity-TCKC22FH.js → rvf-store-integrity-Q3FGYKFT.js} +2 -2
  245. package/dist/cli/chunks/safe-db-73BLFV2C.js +2 -0
  246. package/dist/cli/chunks/schedule-YVTGTTI4.js +2 -0
  247. package/dist/cli/chunks/scheduler-5DSAFIRQ.js +2 -0
  248. package/dist/cli/chunks/security-CJJ3WJSB.js +13 -0
  249. package/dist/cli/chunks/{shared-rvf-adapter-ZJFN52C2.js → shared-rvf-adapter-6RGCTLHD.js} +2 -2
  250. package/dist/cli/chunks/{shared-rvf-dual-writer-V2R37HWV.js → shared-rvf-dual-writer-KIA6Q6MT.js} +2 -2
  251. package/dist/cli/chunks/sqlite-persistence-LRG4IPCU.js +2 -0
  252. package/dist/cli/chunks/{status-handler-XEKWNVDR.js → status-handler-BADQV2KA.js} +2 -2
  253. package/dist/cli/chunks/{structural-health-QMIW6WUN.js → structural-health-VMYEYRZG.js} +2 -2
  254. package/dist/cli/chunks/{sync-H5SXWXPP.js → sync-PXLROLHB.js} +2 -2
  255. package/dist/cli/chunks/{sync-GDYJ2ULT.js → sync-ULY7T5II.js} +2 -2
  256. package/dist/cli/chunks/{task-handler-EPLKCQHY.js → task-handler-L7E2I267.js} +2 -2
  257. package/dist/cli/chunks/{task-handlers-22NTLWTC.js → task-handlers-6DPKE4AK.js} +3 -3
  258. package/dist/cli/chunks/{test-WHJFRZ3F.js → test-WCLURQUT.js} +11 -11
  259. package/dist/cli/chunks/test-scheduling-4CNJA6TW.js +15 -0
  260. package/dist/cli/chunks/{token-bootstrap-BW5WA6PY.js → token-bootstrap-GTI24JAL.js} +2 -2
  261. package/dist/cli/chunks/{token-usage-4A4O57R6.js → token-usage-DRVG6PKO.js} +2 -2
  262. package/dist/cli/chunks/{transformers-FYTBRV46.js → transformers-IMDDAMYQ.js} +2 -2
  263. package/dist/cli/chunks/{tree-sitter-wasm-parser-TZIJPLF3.js → tree-sitter-wasm-parser-WBZIHVFA.js} +2 -2
  264. package/dist/cli/chunks/{types-B2L6LKFA.js → types-TXMY5M2K.js} +2 -2
  265. package/dist/cli/chunks/unified-memory-VBQ572X4.js +2 -0
  266. package/dist/cli/chunks/unified-memory-hnsw-J3L74ZRY.js +2 -0
  267. package/dist/cli/chunks/unified-persistence-EM2VYRTQ.js +2 -0
  268. package/dist/cli/chunks/{upgrade-O6U7EA7V.js → upgrade-6ALSDWDD.js} +2 -2
  269. package/dist/cli/chunks/{validate-FHNZ5XL3.js → validate-XF4ZG3LC.js} +2 -2
  270. package/dist/cli/chunks/{validate-swarm-YOLLUEHE.js → validate-swarm-P5TAFRDA.js} +2 -2
  271. package/dist/cli/chunks/{vibium-UXRPEIXB.js → vibium-2XDXKNKZ.js} +2 -2
  272. package/dist/cli/chunks/visual-security-GX4S7K6O.js +2 -0
  273. package/dist/cli/chunks/{web-tree-sitter-JJ5UIYFD.js → web-tree-sitter-4JVRQPX5.js} +2 -2
  274. package/dist/cli/chunks/{windsurf-installer-I4QMQPIL.js → windsurf-installer-WYJXVDO5.js} +2 -2
  275. package/dist/cli/chunks/witness-chain-QGKMHCNW.js +2 -0
  276. package/dist/cli/chunks/{witness-chain-BIJ7WDGS.js → witness-chain-RPZ2SE2V.js} +2 -2
  277. package/dist/cli/chunks/{witness-key-manager-3SMMLJLP.js → witness-key-manager-LXG2VBQQ.js} +2 -2
  278. package/dist/cli/chunks/{workflow-33PUXXJV.js → workflow-2OYNO7UU.js} +4 -4
  279. package/dist/cli/chunks/workflow-orchestrator-KWHIJMFV.js +2 -0
  280. package/dist/cli/chunks/{wrappers-ASAU36VK.js → wrappers-DIJNNFU6.js} +2 -2
  281. package/dist/cli/commands/daemon.js +3 -0
  282. package/dist/cli/commands/security.js +167 -100
  283. package/dist/cli/commands/test.js +1 -0
  284. package/dist/cli/foreground-command.d.ts +3 -0
  285. package/dist/cli/foreground-command.js +22 -0
  286. package/dist/cli/index.js +4 -0
  287. package/dist/cli/utils/ci-output.d.ts +17 -0
  288. package/dist/cli/utils/ci-output.js +34 -2
  289. package/dist/coordination/handlers/handler-types.d.ts +3 -0
  290. package/dist/coordination/handlers/quality-handlers.js +10 -0
  291. package/dist/coordination/handlers/security-handlers.js +168 -72
  292. package/dist/coordination/handlers/test-execution-handlers.js +37 -43
  293. package/dist/coordination/protocols/security-audit.d.ts +3 -0
  294. package/dist/coordination/protocols/security-audit.js +61 -39
  295. package/dist/coordination/result-saver.js +36 -5
  296. package/dist/coordination/task-executor.d.ts +3 -1
  297. package/dist/coordination/task-executor.js +4 -0
  298. package/dist/domains/security-compliance/interfaces.d.ts +5 -0
  299. package/dist/domains/security-compliance/interfaces.js +0 -6
  300. package/dist/domains/security-compliance/scan-discovery.d.ts +12 -0
  301. package/dist/domains/security-compliance/scan-discovery.js +105 -0
  302. package/dist/domains/security-compliance/scan-evidence.d.ts +57 -0
  303. package/dist/domains/security-compliance/scan-evidence.js +2 -0
  304. package/dist/domains/security-compliance/services/scanners/sast-scanner.d.ts +3 -2
  305. package/dist/domains/security-compliance/services/scanners/sast-scanner.js +109 -65
  306. package/dist/domains/security-compliance/services/semgrep-integration.d.ts +9 -2
  307. package/dist/domains/security-compliance/services/semgrep-integration.js +68 -20
  308. package/dist/domains/test-execution/services/flaky-detector.js +14 -3
  309. package/dist/domains/test-execution/services/retry-handler.js +18 -8
  310. package/dist/domains/test-execution/services/test-executor.js +46 -12
  311. package/dist/init/init-wizard-hooks.js +2 -2
  312. package/dist/integrations/agentic-flow/reasoning-bank/index.js +3 -20
  313. package/dist/integrations/coherence/engines/cohomology-adapter.js +100 -30
  314. package/dist/mcp/bundle.js +499 -478
  315. package/dist/mcp/handlers/domain-handler-configs.d.ts +22 -1
  316. package/dist/mcp/handlers/domain-handler-configs.js +50 -19
  317. package/dist/mcp/handlers/domain-handlers.d.ts +7 -5
  318. package/dist/mcp/handlers/domain-handlers.js +7 -5
  319. package/dist/mcp/index.d.ts +1 -0
  320. package/dist/mcp/index.js +1 -0
  321. package/dist/mcp/protocol-server.js +20 -7
  322. package/dist/mcp/qe-tool-bridge.js +1 -0
  323. package/dist/mcp/tool-annotations.d.ts +25 -0
  324. package/dist/mcp/tool-annotations.js +75 -0
  325. package/dist/mcp/tool-registry.js +17 -12
  326. package/dist/mcp/tools/base.d.ts +7 -1
  327. package/dist/mcp/tools/base.js +8 -0
  328. package/dist/mcp/tools/registry.d.ts +3 -0
  329. package/dist/mcp/tools/registry.js +1 -0
  330. package/dist/mcp/types.d.ts +20 -0
  331. package/dist/shared/llm/router/hybrid-router.d.ts +4 -0
  332. package/dist/shared/llm/router/hybrid-router.js +74 -26
  333. package/dist/shared/llm/router/types.d.ts +9 -2
  334. package/dist/shared/test-runner-verdict.d.ts +29 -0
  335. package/dist/shared/test-runner-verdict.js +43 -0
  336. package/dist/shared/vitest-json-report.d.ts +45 -0
  337. package/dist/shared/vitest-json-report.js +71 -0
  338. package/dist/test-scheduling/executors/vitest-executor.js +18 -6
  339. package/dist/validation/frontier-judge.d.ts +7 -4
  340. package/dist/validation/frontier-judge.js +11 -6
  341. package/package.json +8 -7
  342. package/dist/cli/chunks/adapter-I2N7PEKG.js +0 -2
  343. package/dist/cli/chunks/aqe-learning-engine-U4ALUH6A.js +0 -2
  344. package/dist/cli/chunks/base-RCYIBNHM.js +0 -2
  345. package/dist/cli/chunks/browser-workflow-L6TDB5O5.js +0 -2
  346. package/dist/cli/chunks/chunk-CGZ7LTUK.js +0 -2
  347. package/dist/cli/chunks/chunk-H5LSXVWY.js +0 -5
  348. package/dist/cli/chunks/chunk-QAE4BOIV.js +0 -2
  349. package/dist/cli/chunks/chunk-RXHI6CKK.js +0 -81
  350. package/dist/cli/chunks/chunk-YXN47QOI.js +0 -2
  351. package/dist/cli/chunks/ci-output-MD5GTVR2.js +0 -2
  352. package/dist/cli/chunks/client-L4PIXCGV.js +0 -2
  353. package/dist/cli/chunks/core-handlers-KROSXP4V.js +0 -2
  354. package/dist/cli/chunks/cross-domain-router-WMTYBOON.js +0 -2
  355. package/dist/cli/chunks/dream-AV63YQ2Y.js +0 -2
  356. package/dist/cli/chunks/heartbeat-scheduler-5IZUGMC2.js +0 -2
  357. package/dist/cli/chunks/hnsw-adapter-NV2NNBJL.js +0 -2
  358. package/dist/cli/chunks/hnsw-index-GRJ3KA2O.js +0 -2
  359. package/dist/cli/chunks/impact-analyzer-YM4QUWVH.js +0 -2
  360. package/dist/cli/chunks/init-wizard-YESXGIK6.js +0 -2
  361. package/dist/cli/chunks/kernel-VH5SKESU.js +0 -2
  362. package/dist/cli/chunks/knowledge-graph-F3NL4WJV.js +0 -2
  363. package/dist/cli/chunks/llm-router-service-HQYCJMPK.js +0 -2
  364. package/dist/cli/chunks/load-test-GWRGKWMN.js +0 -2
  365. package/dist/cli/chunks/memory-backend-7A2PFKPV.js +0 -2
  366. package/dist/cli/chunks/memory-handlers-65CXN76C.js +0 -2
  367. package/dist/cli/chunks/pattern-null-store-K2WPRYCP.js +0 -2
  368. package/dist/cli/chunks/protocol-executor-TJDLEHND.js +0 -2
  369. package/dist/cli/chunks/qe-reasoning-bank-CGRMFPDM.js +0 -2
  370. package/dist/cli/chunks/queen-coordinator-FKP6QZAQ.js +0 -2
  371. package/dist/cli/chunks/router-KZ5BISAM.js +0 -2
  372. package/dist/cli/chunks/routing-feedback-O4Y5TTR6.js +0 -2
  373. package/dist/cli/chunks/rvf-dual-writer-NG3UF3D5.js +0 -2
  374. package/dist/cli/chunks/rvf-migration-adapter-PUHVTKQY.js +0 -2
  375. package/dist/cli/chunks/rvf-native-adapter-ODXFKZ6G.js +0 -2
  376. package/dist/cli/chunks/safe-db-BUQDNH2R.js +0 -2
  377. package/dist/cli/chunks/schedule-ZXNDZNNB.js +0 -2
  378. package/dist/cli/chunks/scheduler-YUQQWWW3.js +0 -2
  379. package/dist/cli/chunks/security-RQGUQGSI.js +0 -14
  380. package/dist/cli/chunks/sqlite-persistence-HVSX46C7.js +0 -2
  381. package/dist/cli/chunks/test-scheduling-KZVFZOQN.js +0 -15
  382. package/dist/cli/chunks/unified-memory-AHN4RVBP.js +0 -2
  383. package/dist/cli/chunks/unified-memory-hnsw-XB7JPF74.js +0 -2
  384. package/dist/cli/chunks/unified-persistence-53KWNFQJ.js +0 -2
  385. package/dist/cli/chunks/visual-security-CRPYS7L7.js +0 -2
  386. package/dist/cli/chunks/witness-chain-5WCR2CAS.js +0 -2
  387. package/dist/cli/chunks/workflow-orchestrator-RZWCLTT5.js +0 -2
@@ -139,8 +139,11 @@ export class HybridRouter {
139
139
  async selectProvider(params) {
140
140
  await this.ensureInitialized();
141
141
  const startTime = Date.now();
142
+ // Strict requests carry their own execution identity. They must neither
143
+ // consume an ordinary cached decision nor replace one used by other callers.
144
+ const cacheDecision = this.config.cacheDecisions && !params.strictModel;
142
145
  // Check cache first
143
- if (this.config.cacheDecisions) {
146
+ if (cacheDecision) {
144
147
  const cacheKey = this.generateCacheKey(params);
145
148
  const cached = this.decisionCache.get(cacheKey);
146
149
  if (cached) {
@@ -152,26 +155,31 @@ export class HybridRouter {
152
155
  this.routerMetrics.recordCacheMiss();
153
156
  }
154
157
  let decision;
155
- switch (this.config.mode) {
156
- case 'manual':
157
- decision = await this.selectManual(params);
158
- break;
159
- case 'rule-based':
160
- decision = await this.selectRuleBased(params);
161
- break;
162
- case 'cost-optimized':
163
- decision = await this.selectCostOptimized(params);
164
- break;
165
- case 'performance-optimized':
166
- decision = await this.selectPerformanceOptimized(params);
167
- break;
168
- default:
169
- decision = await this.selectRuleBased(params);
158
+ if (params.strictModel) {
159
+ decision = this.selectStrict(params);
160
+ }
161
+ else {
162
+ switch (this.config.mode) {
163
+ case 'manual':
164
+ decision = await this.selectManual(params);
165
+ break;
166
+ case 'rule-based':
167
+ decision = await this.selectRuleBased(params);
168
+ break;
169
+ case 'cost-optimized':
170
+ decision = await this.selectCostOptimized(params);
171
+ break;
172
+ case 'performance-optimized':
173
+ decision = await this.selectPerformanceOptimized(params);
174
+ break;
175
+ default:
176
+ decision = await this.selectRuleBased(params);
177
+ }
170
178
  }
171
179
  // Update decision time
172
180
  decision.metadata.decisionTimeMs = Date.now() - startTime;
173
181
  // Cache the decision
174
- if (this.config.cacheDecisions) {
182
+ if (cacheDecision) {
175
183
  const cacheKey = this.generateCacheKey(params);
176
184
  this.decisionCache.set(cacheKey, decision);
177
185
  }
@@ -194,6 +202,9 @@ export class HybridRouter {
194
202
  // applies the same pin independently for advisor escalations.
195
203
  const agentName = params.agentType ?? '';
196
204
  if (shouldCyberPin(agentName) && (isOpus47(decision.model) || isOpus47(decision.providerModelId))) {
205
+ if (params.strictModel) {
206
+ throw createLLMError(`Strict model request for ${decision.model} conflicts with the cyber verification pin for ${agentName}`, 'MODEL_NOT_FOUND', { provider: decision.providerType, model: decision.model, retryable: false });
207
+ }
197
208
  const originalModel = decision.model;
198
209
  const originalProviderModelId = decision.providerModelId;
199
210
  decision.model = applyCyberPin(agentName, decision.model, CYBER_PIN_CHAT_FALLBACK);
@@ -313,6 +324,18 @@ export class HybridRouter {
313
324
  // ============================================================================
314
325
  // Provider Selection Methods
315
326
  // ============================================================================
327
+ /** Select an explicitly pinned model without rules, shared cache, or fallback. */
328
+ selectStrict(params) {
329
+ if (!params.model?.trim()) {
330
+ throw createLLMError('strictModel requires an explicit nonempty model', 'MODEL_NOT_FOUND', { retryable: false });
331
+ }
332
+ const providerType = (params.preferredProvider ?? this.config.defaultProvider);
333
+ const provider = this.providerManager.getProvider(providerType);
334
+ if (!provider) {
335
+ throw createLLMError(`Strict model provider ${providerType} is unavailable`, 'PROVIDER_UNAVAILABLE', { provider: providerType, model: params.model, retryable: false });
336
+ }
337
+ return this.createDecision(provider, providerType, params.model, 'manual');
338
+ }
316
339
  /**
317
340
  * Manual selection - use preferredProvider or default
318
341
  */
@@ -452,7 +475,7 @@ export class HybridRouter {
452
475
  // surfaced by the rule-based E2E test in
453
476
  // tests/e2e/llm-router-real-providers.test.ts.
454
477
  const defaultProviderType = this.config.defaultProvider;
455
- if (defaultProviderType && defaultProviderType !== decision.providerType) {
478
+ if (!params.strictModel && defaultProviderType && defaultProviderType !== decision.providerType) {
456
479
  executionOrder.push({
457
480
  provider: defaultProviderType,
458
481
  model: this.config.defaultModel,
@@ -464,13 +487,15 @@ export class HybridRouter {
464
487
  // openrouter/gemini/azure-openai/bedrock from ADR-043) and
465
488
  // ProviderManager.createProvider() builds all of them. The narrower
466
489
  // list silently excluded users' actual fallback providers.
467
- for (const entry of fallbackChain.entries) {
468
- if (!entry.enabled)
469
- continue;
470
- if (entry.provider === decision.providerType)
471
- continue;
472
- for (const model of entry.models) {
473
- executionOrder.push({ provider: entry.provider, model });
490
+ if (!params.strictModel) {
491
+ for (const entry of fallbackChain.entries) {
492
+ if (!entry.enabled)
493
+ continue;
494
+ if (entry.provider === decision.providerType)
495
+ continue;
496
+ for (const model of entry.models) {
497
+ executionOrder.push({ provider: entry.provider, model });
498
+ }
474
499
  }
475
500
  }
476
501
  // Capability-aware guard: when the request needs tools, drop any candidate
@@ -520,6 +545,17 @@ export class HybridRouter {
520
545
  // ADR-123: persist the charge to the cross-process ledger so budgets
521
546
  // hold across a fleet of processes. ADR-124 M2.3: attribute to the agent.
522
547
  this.providerManager.recordResponseSpend(response, params.agentType);
548
+ // A provider can return an unexpected model even when its request was
549
+ // pinned. Account for the completed call, but do not accept that answer
550
+ // as evidence from the requested model (e.g. a frontier quality judge).
551
+ if (params.strictModel) {
552
+ if (response.provider !== providerType) {
553
+ throw createLLMError(`Strict model provider mismatch: expected ${providerType}, received ${response.provider}`, 'PROVIDER_UNAVAILABLE', { provider: providerType, model, retryable: false });
554
+ }
555
+ if (!this.isSameModel(decision.model, response.model)) {
556
+ throw createLLMError(`Strict model mismatch: expected ${decision.model}, received ${response.model}`, 'MODEL_NOT_FOUND', { provider: providerType, model, retryable: false });
557
+ }
558
+ }
523
559
  const callLatency = Date.now() - callStartTime;
524
560
  // Record success in legacy tracker
525
561
  this.metrics.recordSuccess(providerType);
@@ -585,7 +621,7 @@ export class HybridRouter {
585
621
  // delay (because no need to wait) but DOES continue to the next
586
622
  // entry in executionOrder. Only retryable errors get the delay.
587
623
  const nonRetryable = isLLMError(error) && !error.retryable;
588
- if (!nonRetryable && attempts < fallbackBehavior.maxAttempts) {
624
+ if (!params.strictModel && !nonRetryable && attempts < fallbackBehavior.maxAttempts) {
589
625
  await this.delay(fallbackBehavior.delayMs);
590
626
  }
591
627
  }
@@ -595,6 +631,18 @@ export class HybridRouter {
595
631
  // ============================================================================
596
632
  // Helper Methods
597
633
  // ============================================================================
634
+ /** Compare identity independently of the API transport hosting the model. */
635
+ isSameModel(expected, actual) {
636
+ if (expected === actual)
637
+ return true;
638
+ try {
639
+ return normalizeModelId(expected) === normalizeModelId(actual);
640
+ }
641
+ catch {
642
+ // Unregistered model IDs are only equivalent when they match exactly.
643
+ return false;
644
+ }
645
+ }
598
646
  /**
599
647
  * Create a routing decision with proper model ID normalization (ADR-043)
600
648
  */
@@ -686,9 +686,16 @@ export interface ChatParams {
686
686
  agentType?: string;
687
687
  /** Task complexity hint */
688
688
  complexity?: TaskComplexity;
689
- /** Specific model to use (for manual mode) - canonical or provider-specific ID */
689
+ /** Specific model to use (for manual mode or strictModel) - canonical or provider-specific ID */
690
690
  model?: string;
691
- /** Preferred provider (for manual mode) - supports extended providers */
691
+ /**
692
+ * Require the explicit model on preferredProvider (or the configured default).
693
+ * Bypasses routing rules and decision caching, disallows provider/model
694
+ * fallback, and rejects responses from a different provider or model.
695
+ * Equivalent canonical and provider-specific model IDs are accepted.
696
+ */
697
+ strictModel?: boolean;
698
+ /** Preferred provider (for manual mode or strictModel) - supports extended providers */
692
699
  preferredProvider?: ExtendedProviderType;
693
700
  /** Required capabilities (legacy) */
694
701
  requiredCapabilities?: string[];
@@ -0,0 +1,29 @@
1
+ /** A runner or suite error is not an assertion result. */
2
+ export declare class TestRunnerExecutionError extends Error {
3
+ constructor(message: string);
4
+ }
5
+ interface RunnerCounts {
6
+ passed: number;
7
+ failed: number;
8
+ skipped: number;
9
+ }
10
+ interface RunnerReport {
11
+ success?: boolean;
12
+ numFailedTestSuites?: number;
13
+ numRuntimeErrorTestSuites?: number;
14
+ testResults?: Array<{
15
+ status?: string;
16
+ message?: string;
17
+ assertionResults?: Array<{
18
+ status?: string;
19
+ }>;
20
+ }>;
21
+ }
22
+ /**
23
+ * Preserve ordinary assertion failures, but reject incomplete/failed execution
24
+ * that assertion counts cannot represent. Process status is authoritative even
25
+ * when a runner emits success=true (for example, Vitest unhandled rejections).
26
+ */
27
+ export declare function getTestRunnerExecutionError(runner: string, files: string, exitCode: number | null, counts: RunnerCounts, output: string, report?: RunnerReport): TestRunnerExecutionError | undefined;
28
+ export {};
29
+ //# sourceMappingURL=test-runner-verdict.d.ts.map
@@ -0,0 +1,43 @@
1
+ /** A runner or suite error is not an assertion result. */
2
+ export class TestRunnerExecutionError extends Error {
3
+ constructor(message) {
4
+ super(message);
5
+ this.name = 'TestRunnerExecutionError';
6
+ }
7
+ }
8
+ /**
9
+ * Preserve ordinary assertion failures, but reject incomplete/failed execution
10
+ * that assertion counts cannot represent. Process status is authoritative even
11
+ * when a runner emits success=true (for example, Vitest unhandled rejections).
12
+ */
13
+ export function getTestRunnerExecutionError(runner, files, exitCode, counts, output, report) {
14
+ const suites = report?.testResults ?? [];
15
+ const suiteErrors = suites.filter(suite => suite.status === 'failed' && (
16
+ // Jest also uses message for ordinary assertion failures; Vitest reserves
17
+ // it for suite errors such as collection and afterAll failures.
18
+ (runner === 'vitest' && suite.message)
19
+ || !suite.assertionResults?.some(assertion => assertion.status === 'failed')));
20
+ let reason;
21
+ if (exitCode === null) {
22
+ reason = 'terminated without an exit code';
23
+ }
24
+ else if (counts.passed + counts.failed + counts.skipped === 0) {
25
+ reason = 'reported zero tests';
26
+ }
27
+ else if (suiteErrors.length > 0 || (report?.numRuntimeErrorTestSuites ?? 0) > 0
28
+ || ((report?.numFailedTestSuites ?? 0) > 0 && counts.failed === 0)) {
29
+ reason = 'reported a suite execution error';
30
+ }
31
+ else if ((exitCode !== 0 || report?.success === false) && counts.failed === 0) {
32
+ reason = 'failed without a failed assertion';
33
+ }
34
+ if (!reason)
35
+ return undefined;
36
+ const diagnostics = [
37
+ ...suiteErrors.map(suite => suite.message).filter(Boolean),
38
+ output.trim(),
39
+ ].filter(Boolean).join('\n').slice(0, 4000);
40
+ return new TestRunnerExecutionError(`${runner} ${reason} for ${files} (exit code ${exitCode ?? 'unknown'}).` +
41
+ (diagnostics ? `\n${diagnostics}` : ''));
42
+ }
43
+ //# sourceMappingURL=test-runner-verdict.js.map
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Vitest JSON report handling that works on Vitest 4 and 5.
3
+ *
4
+ * Vitest 5 no longer prints the `--reporter=json` document to stdout; it
5
+ * writes `.vitest/json/output.json` and prints only
6
+ * `JSON report written to <path>`. Vitest 4 prints the document to stdout
7
+ * unless `--outputFile` is given, in which case it behaves like Vitest 5.
8
+ *
9
+ * Passing an explicit `--outputFile` therefore gives one contract on both
10
+ * majors: the report is always in a file we own. Every runner integration
11
+ * that spawns `vitest run --reporter=json` must go through this module
12
+ * instead of parsing stdout directly.
13
+ */
14
+ export interface VitestJsonReport {
15
+ /** Absolute path the report will be written to. */
16
+ readonly path: string;
17
+ /** CLI arguments to append to `vitest run --reporter=json`. */
18
+ readonly args: readonly string[];
19
+ /**
20
+ * Return the text that carries the JSON document: the report file when the
21
+ * runner wrote one, otherwise the captured stdout (older runners, or a run
22
+ * that died before reporting).
23
+ */
24
+ read(stdout: string): string;
25
+ /** Remove the temporary report directory. Safe to call more than once. */
26
+ cleanup(): void;
27
+ }
28
+ /**
29
+ * Resolve the JSON document text for a finished Vitest run.
30
+ * Exported separately so the precedence rule is unit-testable without spawning.
31
+ */
32
+ export declare function resolveVitestJsonOutput(stdout: string, reportPath: string | undefined): string;
33
+ /**
34
+ * Create a per-run report location. The directory is unique per call so
35
+ * concurrent runs never read each other's output.
36
+ */
37
+ export declare function createVitestJsonReport(): VitestJsonReport;
38
+ /**
39
+ * True when a command vector (runner command plus arguments) is a
40
+ * `vitest ... --reporter=json` invocation that has not already been given an
41
+ * output file. Pass the runner command as the first element when the caller
42
+ * configures it separately (for example `testRunner: 'vitest'`).
43
+ */
44
+ export declare function needsVitestJsonReportFile(args: readonly string[]): boolean;
45
+ //# sourceMappingURL=vitest-json-report.d.ts.map
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Vitest JSON report handling that works on Vitest 4 and 5.
3
+ *
4
+ * Vitest 5 no longer prints the `--reporter=json` document to stdout; it
5
+ * writes `.vitest/json/output.json` and prints only
6
+ * `JSON report written to <path>`. Vitest 4 prints the document to stdout
7
+ * unless `--outputFile` is given, in which case it behaves like Vitest 5.
8
+ *
9
+ * Passing an explicit `--outputFile` therefore gives one contract on both
10
+ * majors: the report is always in a file we own. Every runner integration
11
+ * that spawns `vitest run --reporter=json` must go through this module
12
+ * instead of parsing stdout directly.
13
+ */
14
+ import { existsSync, mkdtempSync, readFileSync, rmSync } from 'node:fs';
15
+ import { tmpdir } from 'node:os';
16
+ import { join } from 'node:path';
17
+ /**
18
+ * Resolve the JSON document text for a finished Vitest run.
19
+ * Exported separately so the precedence rule is unit-testable without spawning.
20
+ */
21
+ export function resolveVitestJsonOutput(stdout, reportPath) {
22
+ if (reportPath && existsSync(reportPath)) {
23
+ try {
24
+ const content = readFileSync(reportPath, 'utf-8');
25
+ if (content.trim().length > 0)
26
+ return content;
27
+ }
28
+ catch {
29
+ // Unreadable report: fall back to stdout below.
30
+ }
31
+ }
32
+ return stdout;
33
+ }
34
+ /**
35
+ * Create a per-run report location. The directory is unique per call so
36
+ * concurrent runs never read each other's output.
37
+ */
38
+ export function createVitestJsonReport() {
39
+ const dir = mkdtempSync(join(tmpdir(), 'aqe-vitest-report-'));
40
+ const path = join(dir, 'report.json');
41
+ let cleaned = false;
42
+ return {
43
+ path,
44
+ args: [`--outputFile=${path}`],
45
+ read: (stdout) => resolveVitestJsonOutput(stdout, path),
46
+ cleanup: () => {
47
+ if (cleaned)
48
+ return;
49
+ cleaned = true;
50
+ try {
51
+ rmSync(dir, { recursive: true, force: true });
52
+ }
53
+ catch {
54
+ // Best effort: a leftover temp dir is not worth failing a test run over.
55
+ }
56
+ },
57
+ };
58
+ }
59
+ /**
60
+ * True when a command vector (runner command plus arguments) is a
61
+ * `vitest ... --reporter=json` invocation that has not already been given an
62
+ * output file. Pass the runner command as the first element when the caller
63
+ * configures it separately (for example `testRunner: 'vitest'`).
64
+ */
65
+ export function needsVitestJsonReportFile(args) {
66
+ const isVitest = args.some(arg => /(^|[\\/])vitest(\.cmd|\.js|\.mjs)?$/i.test(arg));
67
+ const jsonReporter = args.some((arg, i) => arg === '--reporter=json' || (arg === '--reporter' && args[i + 1] === 'json'));
68
+ const hasOutputFile = args.some(arg => arg.startsWith('--outputFile'));
69
+ return isVitest && jsonReporter && !hasOutputFile;
70
+ }
71
+ //# sourceMappingURL=vitest-json-report.js.map
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import { spawn } from 'child_process';
8
8
  import { safeJsonParse } from '../../shared/safe-json.js';
9
+ import { createVitestJsonReport } from '../../shared/vitest-json-report.js';
9
10
  // ============================================================================
10
11
  // Vitest Executor Implementation
11
12
  // ============================================================================
@@ -95,16 +96,27 @@ export class VitestPhaseExecutor {
95
96
  return args;
96
97
  }
97
98
  async runVitest(args, timeoutMs) {
98
- const { stdout, exitCode } = await this.runCommand(this.config.vitestPath || 'npx', args, timeoutMs);
99
- // Parse JSON output from Vitest
99
+ // Vitest 5 writes --reporter=json output to a file instead of stdout; an
100
+ // explicit --outputFile gives Vitest 4 and 5 the same contract.
101
+ const report = createVitestJsonReport();
102
+ let document;
103
+ let exitCode;
100
104
  try {
101
- // Vitest outputs JSON to stdout when using --reporter=json
102
- const jsonStart = stdout.indexOf('{');
103
- const jsonEnd = stdout.lastIndexOf('}');
105
+ const run = await this.runCommand(this.config.vitestPath || 'npx', [...args, ...report.args], timeoutMs);
106
+ exitCode = run.exitCode;
107
+ document = report.read(run.stdout);
108
+ }
109
+ finally {
110
+ report.cleanup();
111
+ }
112
+ // Parse JSON report from Vitest
113
+ try {
114
+ const jsonStart = document.indexOf('{');
115
+ const jsonEnd = document.lastIndexOf('}');
104
116
  if (jsonStart === -1 || jsonEnd === -1) {
105
117
  throw new Error('No JSON output from Vitest');
106
118
  }
107
- const jsonStr = stdout.slice(jsonStart, jsonEnd + 1);
119
+ const jsonStr = document.slice(jsonStart, jsonEnd + 1);
108
120
  return safeJsonParse(jsonStr);
109
121
  }
110
122
  catch (parseError) {
@@ -53,8 +53,10 @@ export declare function createFrontierJudge(opts: FrontierJudgeOptions): Judge;
53
53
  /**
54
54
  * Build a `complete()` seam backed by the shared HybridRouter, pinned to a
55
55
  * frontier model. This is where the ADR-111 "never economize the oracle" rule is
56
- * enforced: `model` defaults to a frontier Opus and `preferredProvider` lets the
57
- * caller route to a frontier provider explicitly.
56
+ * enforced: `model` defaults to a frontier Opus and strict per-request routing
57
+ * prevents shared routing rules or fallback from substituting another model.
58
+ * `preferredProvider` selects a provider explicitly; otherwise the configured
59
+ * default is used. An unavailable or mismatched judge stays inconclusive.
58
60
  */
59
61
  export declare function routerComplete(router: HybridRouter, opts?: {
60
62
  model?: string;
@@ -90,8 +92,9 @@ export declare function buildGradePrompt(artifact: string, checklist: Requiremen
90
92
  /**
91
93
  * Parse the model response into a set of 0-based unmet requirement indices.
92
94
  * Returns `null` when the response cannot be parsed into the strict contract
93
- * (so the caller treats it as a non-real opinion). Out-of-range and duplicate
94
- * numbers are ignored — a garbled index list never inflates the unmet count.
95
+ * (so the caller treats it as a non-real opinion). Invalid and duplicate entries
96
+ * are ignored when valid indices remain. A nonempty list with no valid indices
97
+ * is unparseable, not evidence that every requirement is met.
95
98
  */
96
99
  export declare function parseUnmetIndices(raw: string, total: number): Set<number> | null;
97
100
  /** Reject with a timeout error if `p` does not settle within `ms`. */
@@ -80,8 +80,10 @@ export function createFrontierJudge(opts) {
80
80
  /**
81
81
  * Build a `complete()` seam backed by the shared HybridRouter, pinned to a
82
82
  * frontier model. This is where the ADR-111 "never economize the oracle" rule is
83
- * enforced: `model` defaults to a frontier Opus and `preferredProvider` lets the
84
- * caller route to a frontier provider explicitly.
83
+ * enforced: `model` defaults to a frontier Opus and strict per-request routing
84
+ * prevents shared routing rules or fallback from substituting another model.
85
+ * `preferredProvider` selects a provider explicitly; otherwise the configured
86
+ * default is used. An unavailable or mismatched judge stays inconclusive.
85
87
  */
86
88
  export function routerComplete(router, opts = {}) {
87
89
  const model = opts.model ?? DEFAULT_OPUS_MODEL;
@@ -89,6 +91,7 @@ export function routerComplete(router, opts = {}) {
89
91
  const res = await router.chat({
90
92
  messages: [{ role: 'user', content: prompt }],
91
93
  model,
94
+ strictModel: true,
92
95
  preferredProvider: opts.preferredProvider,
93
96
  temperature: opts.temperature ?? 0,
94
97
  maxTokens: opts.maxTokens ?? 1024,
@@ -154,16 +157,18 @@ export function buildGradePrompt(artifact, checklist) {
154
157
  /**
155
158
  * Parse the model response into a set of 0-based unmet requirement indices.
156
159
  * Returns `null` when the response cannot be parsed into the strict contract
157
- * (so the caller treats it as a non-real opinion). Out-of-range and duplicate
158
- * numbers are ignored — a garbled index list never inflates the unmet count.
160
+ * (so the caller treats it as a non-real opinion). Invalid and duplicate entries
161
+ * are ignored when valid indices remain. A nonempty list with no valid indices
162
+ * is unparseable, not evidence that every requirement is met.
159
163
  */
160
164
  export function parseUnmetIndices(raw, total) {
161
165
  const obj = extractJsonObject(raw);
162
166
  if (obj == null || !Array.isArray(obj.unmet)) {
163
167
  return null;
164
168
  }
169
+ const unmet = obj.unmet;
165
170
  const out = new Set();
166
- for (const v of obj.unmet) {
171
+ for (const v of unmet) {
167
172
  const n = typeof v === 'number' ? v : typeof v === 'string' ? Number(v.trim()) : NaN;
168
173
  if (!Number.isInteger(n))
169
174
  continue;
@@ -171,7 +176,7 @@ export function parseUnmetIndices(raw, total) {
171
176
  if (idx >= 0 && idx < total)
172
177
  out.add(idx);
173
178
  }
174
- return out;
179
+ return unmet.length > 0 && out.size === 0 ? null : out;
175
180
  }
176
181
  /** Extract the first balanced top-level JSON object from arbitrary model text. */
177
182
  function extractJsonObject(raw) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-qe",
3
- "version": "3.14.1",
3
+ "version": "3.14.3",
4
4
  "description": "Agentic Quality Engineering V3 - Domain-Driven Design Architecture with 13 Bounded Contexts, O(log n) coverage analysis, ReasoningBank learning, 60 specialized QE agents, mathematical Coherence verification, deep Claude Flow integration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -83,7 +83,7 @@
83
83
  "test:unit:mcp": "vitest run tests/unit/mcp --exclude='**/mcp/handlers/domain-handlers.test.ts' --fileParallelism=false",
84
84
  "test:ci": "vitest run --exclude='**/browser/**' --exclude='**/*.e2e.test.ts' --exclude='**/vibium/**' --exclude='**/integration/browser/**' --exclude='**/browser-swarm-coordinator.test.ts' --exclude='**/mcp/handlers/domain-handlers.test.ts' --exclude='**/fixtures/init-corpus/**'",
85
85
  "test:e2e": "vitest run tests/integration/browser --testTimeout=120000",
86
- "test:safe": "NODE_OPTIONS='--max-old-space-size=768 --expose-gc' vitest run --maxForks=1",
86
+ "test:safe": "NODE_OPTIONS='--max-old-space-size=768 --expose-gc' vitest run --maxWorkers=1",
87
87
  "test:dev": "npm run test:unit:fast",
88
88
  "test:all": "npm test -- --run",
89
89
  "test:mcp": "npm run test:unit:mcp",
@@ -229,7 +229,7 @@
229
229
  "rvlite": "^0.2.4"
230
230
  },
231
231
  "resolutions": {
232
- "adm-zip": ">=0.6.0",
232
+ "adm-zip": ">=0.6.1",
233
233
  "graceful-fs": "^4.2.11",
234
234
  "stack-utils": "^2.0.6",
235
235
  "tar": ">=7.5.7",
@@ -238,7 +238,7 @@
238
238
  "ws": "^8.21.0"
239
239
  },
240
240
  "overrides": {
241
- "adm-zip": ">=0.6.0",
241
+ "adm-zip": ">=0.6.1",
242
242
  "@ruvector/gnn-linux-x64-musl": "npm:@ruvector/gnn-linux-x64-gnu@0.1.25",
243
243
  "@ruvector/gnn-linux-arm64-musl": "npm:@ruvector/gnn-linux-arm64-gnu@0.1.25",
244
244
  "tar": ">=7.5.7",
@@ -250,7 +250,8 @@
250
250
  "@opentelemetry/auto-instrumentations-node": ">=0.75.0",
251
251
  "@opentelemetry/exporter-prometheus": ">=0.217.0",
252
252
  "@hono/node-server": ">=2.0.5",
253
- "sharp": ">=0.35.0"
253
+ "hono": ">=4.13.5",
254
+ "sharp": ">=0.35.4"
254
255
  },
255
256
  "devDependencies": {
256
257
  "@claude-flow/guidance": "3.0.0-alpha.1",
@@ -264,7 +265,7 @@
264
265
  "@types/ws": "^8.18.1",
265
266
  "@typescript-eslint/eslint-plugin": "^8.59.3",
266
267
  "@typescript-eslint/parser": "^8.59.3",
267
- "@vitest/coverage-v8": "^4.0.16",
268
+ "@vitest/coverage-v8": "^5.0.1",
268
269
  "ajv": "^8.20.0",
269
270
  "ajv-formats": "^3.0.1",
270
271
  "dotenv": "^17.2.3",
@@ -274,7 +275,7 @@
274
275
  "glob": "^13.0.0",
275
276
  "msw": "^2.12.7",
276
277
  "tsx": "^4.21.0",
277
- "vitest": "^4.0.16"
278
+ "vitest": "^5.0.1"
278
279
  },
279
280
  "engines": {
280
281
  "node": ">=22.13.0",
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.1");process.exit(0)}
2
- import{a,b,c}from"./chunk-MDLLEUFN.js";import"./chunk-FRRRDCXY.js";import"./chunk-3AYNHOWS.js";import"./chunk-VVP2ROXD.js";import"./chunk-NAJCQJSK.js";import"./chunk-EHW62JL2.js";export{a as AgentBoosterAdapter,b as createAgentBoosterAdapter,c as createAgentBoosterAdapterSync};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.1");process.exit(0)}
2
- import{a,b,c,d,e,f}from"./chunk-3BRR2FLH.js";import"./chunk-H5LSXVWY.js";import"./chunk-HRUQWABO.js";import"./chunk-SEKOMKNG.js";import"./chunk-GYTWUOKU.js";import"./chunk-FHBGALBG.js";import"./chunk-ODNLKYOM.js";import"./chunk-MFAN5W27.js";import"./chunk-L66BWYQH.js";import"./chunk-CCZZZBAO.js";import"./chunk-5KP62DC3.js";import"./chunk-TT7DF2GX.js";import"./chunk-PZZX57ZA.js";import"./chunk-6B77GPWL.js";import"./chunk-LQDFWLKK.js";import"./chunk-PS6Y662P.js";import"./chunk-6YIMLUH6.js";import"./chunk-HJD52N32.js";import"./chunk-AZUC7E5S.js";import"./chunk-CGZ7LTUK.js";import"./chunk-J7VAD4RG.js";import"./chunk-D6RCRTTR.js";import"./chunk-VVP2ROXD.js";import"./chunk-5TYGSQOL.js";import"./chunk-HBAQVJDP.js";import"./chunk-DKSLJZVA.js";import"./chunk-UWRMPRY5.js";import"./chunk-NAJCQJSK.js";import"./chunk-LJ63HPPN.js";import"./chunk-45S5553E.js";import"./chunk-CGDW47WP.js";import"./chunk-FPBQ7BXU.js";import"./chunk-L4WATX6B.js";import"./chunk-7GF6IRSU.js";import"./chunk-3WSH4HD2.js";import"./chunk-TGFJUL6M.js";import"./chunk-PYAH4K2U.js";import"./chunk-DKXSJDII.js";import"./chunk-EHW62JL2.js";export{b as AQELearningEngine,a as DEFAULT_ENGINE_CONFIG,c as DEFAULT_META_LEARNING_CONFIG,d as MetaLearningEngine,e as createAQELearningEngine,f as createDefaultLearningEngine};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.1");process.exit(0)}
2
- import{a,b,c,d,e,f,g,h,i,j,k,l}from"./chunk-YXN47QOI.js";import"./chunk-RCHDSUVU.js";import"./chunk-6YIMLUH6.js";import"./chunk-HJD52N32.js";import"./chunk-AZUC7E5S.js";import"./chunk-CGZ7LTUK.js";import"./chunk-J7VAD4RG.js";import"./chunk-D6RCRTTR.js";import"./chunk-VVP2ROXD.js";import"./chunk-NAJCQJSK.js";import"./chunk-LJ63HPPN.js";import"./chunk-ND6JBUVH.js";import"./chunk-45S5553E.js";import"./chunk-CGDW47WP.js";import"./chunk-FPBQ7BXU.js";import"./chunk-L4WATX6B.js";import"./chunk-7GF6IRSU.js";import"./chunk-3WSH4HD2.js";import"./chunk-TGFJUL6M.js";import"./chunk-PYAH4K2U.js";import"./chunk-DKXSJDII.js";import"./chunk-EHW62JL2.js";export{l as MCPToolBase,k as defaultToolLogger,j as getKernel,i as getLLMRouter,e as getMemoryBackend,g as getSharedLLMRouter,c as getSharedMemoryBackend,a as isMemoryOnlyMode,b as registerRvfResetFn,h as resetSharedLLMRouter,d as resetSharedMemoryBackend,f as setSharedLLMRouter};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.1");process.exit(0)}
2
- import{a}from"./chunk-X5G3UDWP.js";import"./chunk-YXN47QOI.js";import"./chunk-RCHDSUVU.js";import"./chunk-6YIMLUH6.js";import"./chunk-HJD52N32.js";import"./chunk-AZUC7E5S.js";import"./chunk-CGZ7LTUK.js";import"./chunk-J7VAD4RG.js";import"./chunk-D6RCRTTR.js";import"./chunk-VVP2ROXD.js";import"./chunk-NAJCQJSK.js";import"./chunk-LJ63HPPN.js";import"./chunk-ND6JBUVH.js";import"./chunk-45S5553E.js";import"./chunk-CGDW47WP.js";import"./chunk-FPBQ7BXU.js";import"./chunk-L4WATX6B.js";import"./chunk-7GF6IRSU.js";import"./chunk-3WSH4HD2.js";import"./chunk-TGFJUL6M.js";import"./chunk-PYAH4K2U.js";import"./chunk-DKXSJDII.js";import"./chunk-EHW62JL2.js";export{a as BrowserWorkflowTool};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.1");process.exit(0)}
2
- import{a as e,b as g,e as r}from"./chunk-J7VAD4RG.js";import{c as o}from"./chunk-EHW62JL2.js";var L=o(()=>{"use strict";e();g();r()});export{L as a};