agentic-qe 3.15.3 → 3.15.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (355) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +69 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/cli/bundle.js +5 -5
  5. package/dist/cli/chunks/adapter-T54G3TBK.js +2 -0
  6. package/dist/cli/chunks/{agent-booster-wasm-CYG3PKHH.js → agent-booster-wasm-MHJBRXMK.js} +2 -2
  7. package/dist/cli/chunks/{agent-handler-WTFYFZKL.js → agent-handler-G64SD7J2.js} +2 -2
  8. package/dist/cli/chunks/{agent-memory-branch-G6WE3ZXU.js → agent-memory-branch-G4UXFPKH.js} +2 -2
  9. package/dist/cli/chunks/aqe-learning-engine-HLCJJ3JM.js +2 -0
  10. package/dist/cli/chunks/{arena-ZFXQEVUQ.js → arena-63M3M6EW.js} +2 -2
  11. package/dist/cli/chunks/{arena-S72QW44C.js → arena-QJMKYPHS.js} +4 -4
  12. package/dist/cli/chunks/{audit-KPYIEQJ3.js → audit-UDFVTWSX.js} +3 -3
  13. package/dist/cli/chunks/base-VLD755UU.js +2 -0
  14. package/dist/cli/chunks/{better-sqlite3-L2M3TI5D.js → better-sqlite3-JLX2G56I.js} +2 -2
  15. package/dist/cli/chunks/{brain-handler-FHKLQTB4.js → brain-handler-PWF32LLW.js} +3 -3
  16. package/dist/cli/chunks/{branch-enumerator-3BSHOPOK.js → branch-enumerator-PB7QWXDP.js} +2 -2
  17. package/dist/cli/chunks/{browser-JUIJPL6Y.js → browser-CYNV2F3U.js} +2 -2
  18. package/dist/cli/chunks/browser-workflow-6M6VLWRF.js +2 -0
  19. package/dist/cli/chunks/{chunk-P36IODAM.js → chunk-2534PXIV.js} +2 -2
  20. package/dist/cli/chunks/{chunk-PUPEKA2J.js → chunk-2DRMTRBM.js} +2 -2
  21. package/dist/cli/chunks/{chunk-6EQDA4EC.js → chunk-2ICC4H6K.js} +2 -2
  22. package/dist/cli/chunks/{chunk-MUSYQF53.js → chunk-2LL35V3A.js} +2 -2
  23. package/dist/cli/chunks/{chunk-2MEWIXW4.js → chunk-2MU4WCMQ.js} +2 -2
  24. package/dist/cli/chunks/{chunk-CNQUU6CF.js → chunk-33IUCP34.js} +2 -2
  25. package/dist/cli/chunks/{chunk-U5AVZ3T2.js → chunk-35A22AUL.js} +1 -1
  26. package/dist/cli/chunks/{chunk-VUBLJBHQ.js → chunk-3BDDOFYW.js} +2 -2
  27. package/dist/cli/chunks/{chunk-FXTZXZCU.js → chunk-3C2BFLYC.js} +3 -3
  28. package/dist/cli/chunks/{chunk-4JVVVKAX.js → chunk-3MSBVOYW.js} +2 -2
  29. package/dist/cli/chunks/{chunk-P6EGRAQG.js → chunk-3ZIVBTX6.js} +2 -2
  30. package/dist/cli/chunks/{chunk-TBVPNN65.js → chunk-4GLR2S2M.js} +2 -2
  31. package/dist/cli/chunks/{chunk-6W6GZHQA.js → chunk-54ITMOFM.js} +4 -4
  32. package/dist/cli/chunks/{chunk-Z7UGEQ4G.js → chunk-54XTJBHV.js} +1 -1
  33. package/dist/cli/chunks/{chunk-L6OSEWOS.js → chunk-5B5D5KCV.js} +1 -1
  34. package/dist/cli/chunks/{chunk-HV3ZVUHO.js → chunk-5GWTJJEO.js} +1 -1
  35. package/dist/cli/chunks/{chunk-WSUYEVSY.js → chunk-5H7MR6HP.js} +1 -1
  36. package/dist/cli/chunks/{chunk-RQUSJEON.js → chunk-5SS2Z7JC.js} +2 -2
  37. package/dist/cli/chunks/chunk-5XXLWJU7.js +2 -0
  38. package/dist/cli/chunks/{chunk-ZATQLTYL.js → chunk-6EHVPFHW.js} +1 -1
  39. package/dist/cli/chunks/{chunk-2M75CW5Q.js → chunk-6HO3XRXE.js} +2 -2
  40. package/dist/cli/chunks/{chunk-ASUXS4N4.js → chunk-6HTO4BLV.js} +2 -2
  41. package/dist/cli/chunks/{chunk-POVP6O6K.js → chunk-6QPW4OVH.js} +1 -1
  42. package/dist/cli/chunks/{chunk-3ZTBV6M3.js → chunk-6TMUZGM2.js} +1 -1
  43. package/dist/cli/chunks/{chunk-RRSZ27A7.js → chunk-73MTUM6F.js} +2 -2
  44. package/dist/cli/chunks/{chunk-CFXROOIU.js → chunk-73PCVMGA.js} +2 -2
  45. package/dist/cli/chunks/{chunk-O66D4NEJ.js → chunk-76PRW2KY.js} +2 -2
  46. package/dist/cli/chunks/{chunk-XTGVGZ4J.js → chunk-7INP6HZH.js} +3 -3
  47. package/dist/cli/chunks/{chunk-ZL2GYU7H.js → chunk-7X2IVMXN.js} +2 -2
  48. package/dist/cli/chunks/{chunk-F5BREV2Q.js → chunk-A4OPQJ4A.js} +5 -5
  49. package/dist/cli/chunks/{chunk-2TBHPYOU.js → chunk-ADF6LGHZ.js} +2 -2
  50. package/dist/cli/chunks/{chunk-RWQDRPN5.js → chunk-AHVN3UQZ.js} +2 -2
  51. package/dist/cli/chunks/{chunk-QZBFMXO5.js → chunk-AOKSLWON.js} +54 -54
  52. package/dist/cli/chunks/{chunk-S7D4GD7H.js → chunk-ASKPTGUU.js} +2 -2
  53. package/dist/cli/chunks/{chunk-LEB6O2IN.js → chunk-B7GJXQD2.js} +2 -2
  54. package/dist/cli/chunks/{chunk-PBUWNMZ2.js → chunk-B7J3O2WM.js} +1 -1
  55. package/dist/cli/chunks/{chunk-WI7I6LMM.js → chunk-BBKLVHDQ.js} +1 -1
  56. package/dist/cli/chunks/{chunk-ED5HUPUR.js → chunk-BND6M2JX.js} +2 -2
  57. package/dist/cli/chunks/{chunk-5QUOM357.js → chunk-BPGFCUDO.js} +1 -1
  58. package/dist/cli/chunks/{chunk-QSVNVDA5.js → chunk-BY3IL56R.js} +1 -1
  59. package/dist/cli/chunks/{chunk-7SWHW5AC.js → chunk-BY5PLEPZ.js} +20 -20
  60. package/dist/cli/chunks/{chunk-OT6SOPAL.js → chunk-BZWZTGMF.js} +2 -2
  61. package/dist/cli/chunks/{chunk-7PDC4SKR.js → chunk-C5EN5WB6.js} +1 -1
  62. package/dist/cli/chunks/{chunk-APV5UWTU.js → chunk-CFXFGQEN.js} +2 -2
  63. package/dist/cli/chunks/{chunk-AEL4XJGJ.js → chunk-CQ3WSTJ2.js} +2 -2
  64. package/dist/cli/chunks/{chunk-A3IQU2ND.js → chunk-D7RVZ5C2.js} +2 -2
  65. package/dist/cli/chunks/{chunk-B23ROYST.js → chunk-DAYMT7TH.js} +21 -21
  66. package/dist/cli/chunks/{chunk-OTTTHNIT.js → chunk-DBIK4OFX.js} +1 -1
  67. package/dist/cli/chunks/{chunk-DLA3EHKJ.js → chunk-DEJM2P5K.js} +1 -1
  68. package/dist/cli/chunks/{chunk-OMHISPPF.js → chunk-DF4Y3HPO.js} +1 -1
  69. package/dist/cli/chunks/{chunk-DWG4TN6A.js → chunk-DFJGXXCL.js} +1 -1
  70. package/dist/cli/chunks/{chunk-7UUSV2SK.js → chunk-DPL4ZXTE.js} +1 -1
  71. package/dist/cli/chunks/{chunk-GPZH6OPP.js → chunk-DVE5SM5G.js} +3 -3
  72. package/dist/cli/chunks/{chunk-X335K4SU.js → chunk-EGHK6NMH.js} +2 -2
  73. package/dist/cli/chunks/{chunk-YJH7UFA2.js → chunk-EWUFVWRT.js} +2 -2
  74. package/dist/cli/chunks/{chunk-KCBCYF7M.js → chunk-EY5IUF7U.js} +2 -2
  75. package/dist/cli/chunks/{chunk-AOZJ6UUZ.js → chunk-FDK2GF4G.js} +2 -2
  76. package/dist/cli/chunks/{chunk-OGARNKLS.js → chunk-FRBCX46J.js} +2 -2
  77. package/dist/cli/chunks/{chunk-UZDTRCVU.js → chunk-G3ZUB3HD.js} +2 -2
  78. package/dist/cli/chunks/{chunk-OKNMZLGB.js → chunk-GAXTPQCZ.js} +2 -2
  79. package/dist/cli/chunks/{chunk-VX7CQUO7.js → chunk-GJVRQBLI.js} +2 -2
  80. package/dist/cli/chunks/{chunk-SKHP5WUP.js → chunk-GLKLEHK3.js} +2 -2
  81. package/dist/cli/chunks/{chunk-UTALYUMW.js → chunk-HCDTLV5J.js} +2 -2
  82. package/dist/cli/chunks/{chunk-7IJVCDDC.js → chunk-HEDLZWPM.js} +1 -1
  83. package/dist/cli/chunks/{chunk-V5NYGDSX.js → chunk-HEKCN5XQ.js} +2 -2
  84. package/dist/cli/chunks/{chunk-WW4RJ6BH.js → chunk-HFSBONCS.js} +2 -2
  85. package/dist/cli/chunks/{chunk-5LEUEWJY.js → chunk-HX5KQK7I.js} +2 -2
  86. package/dist/cli/chunks/{chunk-RDTR43YN.js → chunk-I43QRLLB.js} +2 -2
  87. package/dist/cli/chunks/{chunk-AQTQ24SK.js → chunk-I53365HG.js} +3 -3
  88. package/dist/cli/chunks/{chunk-RGD2CG23.js → chunk-I5A3HGO6.js} +2 -2
  89. package/dist/cli/chunks/{chunk-IARE5VGI.js → chunk-I6E4X3L3.js} +1 -1
  90. package/dist/cli/chunks/{chunk-YW4GM36K.js → chunk-IKWAPHJA.js} +2 -2
  91. package/dist/cli/chunks/{chunk-QUXX2DP7.js → chunk-ISASRHZP.js} +2 -2
  92. package/dist/cli/chunks/{chunk-BDKQSEEY.js → chunk-J3RNVHDH.js} +1 -1
  93. package/dist/cli/chunks/{chunk-QVNMTMDJ.js → chunk-JFQDWAU3.js} +2 -2
  94. package/dist/cli/chunks/{chunk-2GJJGO5D.js → chunk-JL3TI43V.js} +2 -2
  95. package/dist/cli/chunks/{chunk-6TYTBQPV.js → chunk-K2VUYRMG.js} +2 -2
  96. package/dist/cli/chunks/{chunk-A5H7TF7C.js → chunk-KOLHZSEC.js} +2 -2
  97. package/dist/cli/chunks/{chunk-WTMLRMKW.js → chunk-LGA6J4I4.js} +2 -2
  98. package/dist/cli/chunks/{chunk-CF3BPD2R.js → chunk-LJRZAALA.js} +154 -155
  99. package/dist/cli/chunks/{chunk-BO43BGHX.js → chunk-LOLAEDZD.js} +2 -2
  100. package/dist/cli/chunks/{chunk-XXW4KFBB.js → chunk-LPSE6DOQ.js} +1 -1
  101. package/dist/cli/chunks/{chunk-3UUMGWHW.js → chunk-LRTF5RMG.js} +4 -4
  102. package/dist/cli/chunks/{chunk-FPFGN2Z5.js → chunk-LXYTC62V.js} +2 -2
  103. package/dist/cli/chunks/{chunk-W7EHNX3Y.js → chunk-LY53L6NH.js} +2 -2
  104. package/dist/cli/chunks/{chunk-SP2JO53K.js → chunk-LZSLJJII.js} +2 -2
  105. package/dist/cli/chunks/{chunk-HSR53REE.js → chunk-M6SJALLA.js} +2 -2
  106. package/dist/cli/chunks/{chunk-AS54N3H7.js → chunk-MBV57LKC.js} +2 -2
  107. package/dist/cli/chunks/{chunk-6AKJ73X3.js → chunk-MGH4XIHH.js} +2 -2
  108. package/dist/cli/chunks/{chunk-HW4V7BVV.js → chunk-MVTUFPM2.js} +2 -2
  109. package/dist/cli/chunks/{chunk-4IYHYHTG.js → chunk-N6CRIUTO.js} +2 -2
  110. package/dist/cli/chunks/{chunk-X33LID2T.js → chunk-NBMQOP2R.js} +1 -1
  111. package/dist/cli/chunks/{chunk-D6PUDLJ4.js → chunk-NIJMLEAX.js} +2 -2
  112. package/dist/cli/chunks/{chunk-YTRGMILO.js → chunk-O7TMY4GS.js} +2 -2
  113. package/dist/cli/chunks/{chunk-PPA53NJB.js → chunk-OFQDM73J.js} +2 -2
  114. package/dist/cli/chunks/{chunk-M3ONCPSU.js → chunk-OG4KHX7S.js} +2 -2
  115. package/dist/cli/chunks/{chunk-3MNKYCLH.js → chunk-OHH6BUZK.js} +1 -1
  116. package/dist/cli/chunks/{chunk-HR7RL4PB.js → chunk-OOK6GPJR.js} +2 -2
  117. package/dist/cli/chunks/{chunk-XV2TIODR.js → chunk-P7GM3EE7.js} +1 -1
  118. package/dist/cli/chunks/{chunk-6V6XVGCL.js → chunk-PB2WSCBW.js} +3 -3
  119. package/dist/cli/chunks/{chunk-JJBTM4JO.js → chunk-PCWZCXBD.js} +2 -2
  120. package/dist/cli/chunks/{chunk-POTVF6BY.js → chunk-PEA4DVXW.js} +1 -1
  121. package/dist/cli/chunks/{chunk-WQZBKLAG.js → chunk-PJAXWCFC.js} +1 -1
  122. package/dist/cli/chunks/{chunk-KGS6H2HB.js → chunk-PMXWDTDK.js} +2 -2
  123. package/dist/cli/chunks/chunk-QIAX3JJB.js +3 -0
  124. package/dist/cli/chunks/{chunk-YGEC3PSD.js → chunk-R47LNH5W.js} +2 -2
  125. package/dist/cli/chunks/{chunk-M3ACHBC7.js → chunk-RA3MI5WK.js} +2 -2
  126. package/dist/cli/chunks/{chunk-HVIFA73X.js → chunk-RB2SL5GD.js} +2 -2
  127. package/dist/cli/chunks/{chunk-YHZGFWJE.js → chunk-RG67RZIX.js} +2 -2
  128. package/dist/cli/chunks/{chunk-5WOBFN2T.js → chunk-RI4JPBZD.js} +2 -2
  129. package/dist/cli/chunks/{chunk-NT6FYFJA.js → chunk-RJ5CZ7B6.js} +2 -2
  130. package/dist/cli/chunks/{chunk-A6PII4R4.js → chunk-RJMBHZYL.js} +1 -1
  131. package/dist/cli/chunks/{chunk-VHBZADYK.js → chunk-RWZ4F44Y.js} +2 -2
  132. package/dist/cli/chunks/{chunk-UGNTLSBL.js → chunk-S5D3HCGN.js} +2 -2
  133. package/dist/cli/chunks/{chunk-366IBPZB.js → chunk-SCL2OYN7.js} +2 -2
  134. package/dist/cli/chunks/{chunk-EQGT4VLC.js → chunk-SIUUAKCE.js} +1 -1
  135. package/dist/cli/chunks/{chunk-LPZAB3N2.js → chunk-SJB4KMZS.js} +3 -3
  136. package/dist/cli/chunks/{chunk-YCGU2LI7.js → chunk-SOSJFEFB.js} +2 -2
  137. package/dist/cli/chunks/{chunk-YQ3ZW47V.js → chunk-SZWXUG36.js} +2 -2
  138. package/dist/cli/chunks/{chunk-VGN46ZT4.js → chunk-T3BMCEQR.js} +2 -2
  139. package/dist/cli/chunks/{chunk-4N7YXTV3.js → chunk-TB22Y3WW.js} +1 -1
  140. package/dist/cli/chunks/{chunk-FTUNC4EI.js → chunk-TVQPYP2Z.js} +3 -3
  141. package/dist/cli/chunks/{chunk-JVQK6NGI.js → chunk-U2E5F3VZ.js} +2 -2
  142. package/dist/cli/chunks/{chunk-UCSGZVJX.js → chunk-UK5HY6LC.js} +1 -1
  143. package/dist/cli/chunks/{chunk-35VDOH4Y.js → chunk-UORI2CZ4.js} +1 -1
  144. package/dist/cli/chunks/{chunk-DH5NWHH2.js → chunk-V3NZ23X6.js} +2 -2
  145. package/dist/cli/chunks/{chunk-YGKU2QRC.js → chunk-VAXQUD5G.js} +1 -1
  146. package/dist/cli/chunks/{chunk-3Y4GX5FL.js → chunk-VMSO6DMF.js} +2 -2
  147. package/dist/cli/chunks/{chunk-GJB3LPCS.js → chunk-W3PPYNHF.js} +2 -2
  148. package/dist/cli/chunks/{chunk-7TW5UGDP.js → chunk-W6TJXK5Y.js} +2 -2
  149. package/dist/cli/chunks/{chunk-SRDECRTL.js → chunk-WEDVLKRB.js} +2 -2
  150. package/dist/cli/chunks/{chunk-4TM5K6EZ.js → chunk-WI5AEB7Q.js} +2 -2
  151. package/dist/cli/chunks/{chunk-Z7JPWXW2.js → chunk-WO4NSPLX.js} +2 -2
  152. package/dist/cli/chunks/{chunk-WSND64RL.js → chunk-WW6WUMS7.js} +2 -2
  153. package/dist/cli/chunks/{chunk-VOKIUF7I.js → chunk-WYO5VN2L.js} +1 -1
  154. package/dist/cli/chunks/{chunk-34Y4CIHD.js → chunk-X5S5UEM6.js} +2 -2
  155. package/dist/cli/chunks/{chunk-D5V6C3XG.js → chunk-XHCCH7UC.js} +3 -3
  156. package/dist/cli/chunks/{chunk-MZDUBFLP.js → chunk-XKIFNKHV.js} +1 -1
  157. package/dist/cli/chunks/{chunk-DE3QNPTG.js → chunk-XZ5Z56OP.js} +1 -1
  158. package/dist/cli/chunks/{chunk-RWLOERKK.js → chunk-YQ6BK7QC.js} +2 -2
  159. package/dist/cli/chunks/{chunk-HU474NXP.js → chunk-YUWUFYHK.js} +1 -1
  160. package/dist/cli/chunks/{chunk-ZJW4HRUA.js → chunk-YZ2AGC7O.js} +1 -1
  161. package/dist/cli/chunks/{chunk-WLOHTLHO.js → chunk-Z56QTRRB.js} +2 -2
  162. package/dist/cli/chunks/{chunk-EBIMVSPH.js → chunk-ZAOQIVHG.js} +2 -2
  163. package/dist/cli/chunks/{chunk-K65X6CQA.js → chunk-ZF5JTQEE.js} +1 -1
  164. package/dist/cli/chunks/{chunk-VRT736E3.js → chunk-ZKXZTIVF.js} +2 -2
  165. package/dist/cli/chunks/{chunk-ZI6NJEBY.js → chunk-ZP6ANUP7.js} +1 -1
  166. package/dist/cli/chunks/{chunk-I5VJ3FBC.js → chunk-ZURYZEHX.js} +2 -2
  167. package/dist/cli/chunks/{ci-JPISJ25U.js → ci-NGMGB43T.js} +3 -3
  168. package/dist/cli/chunks/{ci-output-DPHTFIGX.js → ci-output-BMJABAEX.js} +2 -2
  169. package/dist/cli/chunks/{circuit-breaker-PQ65VU2M.js → circuit-breaker-GYD5CMJQ.js} +2 -2
  170. package/dist/cli/chunks/{claude-flow-setup-GKHVO7AD.js → claude-flow-setup-MMOYVBVD.js} +2 -2
  171. package/dist/cli/chunks/client-FUHNNK5O.js +2 -0
  172. package/dist/cli/chunks/{cline-installer-HWMQZJ64.js → cline-installer-B2SOZ44R.js} +2 -2
  173. package/dist/cli/chunks/{code-OTY7BF3D.js → code-V3FIRAXD.js} +3 -3
  174. package/dist/cli/chunks/{code-index-extractor-FG3TMHHR.js → code-index-extractor-CV6A756Z.js} +2 -2
  175. package/dist/cli/chunks/{codex-installer-63JARKKS.js → codex-installer-EUC6J47Y.js} +2 -2
  176. package/dist/cli/chunks/{completions-4ZHONFML.js → completions-DQQIBAHR.js} +2 -2
  177. package/dist/cli/chunks/{complexity-analyzer-FYHTJW5Y.js → complexity-analyzer-HPXMXP5I.js} +2 -2
  178. package/dist/cli/chunks/{continuedev-installer-ZAWDSUR3.js → continuedev-installer-RCIYXH6V.js} +2 -2
  179. package/dist/cli/chunks/{copilot-installer-5QK565JX.js → copilot-installer-VUH32SHF.js} +2 -2
  180. package/dist/cli/chunks/core-handlers-F7TLX4LM.js +2 -0
  181. package/dist/cli/chunks/{cost-tracker-AWWMPPBJ.js → cost-tracker-YLCKLOAL.js} +2 -2
  182. package/dist/cli/chunks/{coverage-SMFQEGKE.js → coverage-IVKDV236.js} +3 -3
  183. package/dist/cli/chunks/cross-domain-router-EGWPY67O.js +2 -0
  184. package/dist/cli/chunks/{cursor-installer-3BL7JACV.js → cursor-installer-B42FN62K.js} +2 -2
  185. package/dist/cli/chunks/{daemon-R6ULBHHF.js → daemon-DECQRQII.js} +3 -3
  186. package/dist/cli/chunks/{daemon-OJ624POF.js → daemon-IPTOSCHM.js} +4 -4
  187. package/dist/cli/chunks/{dag-attention-scheduler-J6I3LTMY.js → dag-attention-scheduler-RY7CDYSC.js} +2 -2
  188. package/dist/cli/chunks/{detect-5Q5W33UR.js → detect-NW53BMJN.js} +2 -2
  189. package/dist/cli/chunks/{dist-node-GJNW56NA.js → dist-node-LE6KHXAB.js} +2 -2
  190. package/dist/cli/chunks/{domain-handler-IZQY2G44.js → domain-handler-JGXFT4LW.js} +2 -2
  191. package/dist/cli/chunks/{domain-plugins-PIGO3KI2.js → domain-plugins-GY3RYKKK.js} +2 -2
  192. package/dist/cli/chunks/{domain-transfer-NU3B4FQG.js → domain-transfer-CGBRXNTC.js} +2 -2
  193. package/dist/cli/chunks/dream-V4QN6OF5.js +2 -0
  194. package/dist/cli/chunks/{embed-and-insert-pattern-5QDDRPWV.js → embed-and-insert-pattern-65H4XHWR.js} +2 -2
  195. package/dist/cli/chunks/{eval-TB5HOAUY.js → eval-YPYIZQUR.js} +2 -2
  196. package/dist/cli/chunks/{experience-capture-middleware-SIYVLKDE.js → experience-capture-middleware-4JXVF5PL.js} +3 -3
  197. package/dist/cli/chunks/{fast-paths-T7QELS6D.js → fast-paths-HYQTAF2S.js} +2 -2
  198. package/dist/cli/chunks/{feature-flags-TNZ7ZAJV.js → feature-flags-HNSAFFX2.js} +2 -2
  199. package/dist/cli/chunks/{feature-flags-T3CNNYMJ.js → feature-flags-YACUH6OW.js} +2 -2
  200. package/dist/cli/chunks/{file-discovery-M45P2ZCY.js → file-discovery-R73BYEXB.js} +2 -2
  201. package/dist/cli/chunks/{fleet-DSBZPHBZ.js → fleet-6M3BP4OO.js} +3 -3
  202. package/dist/cli/chunks/{gnn-wrapper-EHODCF32.js → gnn-wrapper-QLD7KHXV.js} +2 -2
  203. package/dist/cli/chunks/{heartbeat-handler-V5DBVF7V.js → heartbeat-handler-EZP333X4.js} +4 -4
  204. package/dist/cli/chunks/heartbeat-scheduler-3N3L6CRM.js +2 -0
  205. package/dist/cli/chunks/hnsw-adapter-2BXJYDXI.js +2 -0
  206. package/dist/cli/chunks/hnsw-index-2DLI5OVO.js +2 -0
  207. package/dist/cli/chunks/{hnsw-legacy-bridge-IYKDYA2F.js → hnsw-legacy-bridge-47CUCSAU.js} +2 -2
  208. package/dist/cli/chunks/{hnswlib-node-DKG4LW3X.js → hnswlib-node-SVNYDJZH.js} +2 -2
  209. package/dist/cli/chunks/{hooks-VKNMAILY.js → hooks-6V5LMWP6.js} +10 -10
  210. package/dist/cli/chunks/hybrid-backend-OW4J65YH.js +2 -0
  211. package/dist/cli/chunks/{hypergraph-engine-AXZVP7A7.js → hypergraph-engine-L2FOBIFF.js} +2 -2
  212. package/dist/cli/chunks/{hypergraph-handler-6EO6JN4Z.js → hypergraph-handler-DU6Z57EE.js} +3 -3
  213. package/dist/cli/chunks/impact-analyzer-ZH5I2RG6.js +2 -0
  214. package/dist/cli/chunks/{init-handler-N3NG3RHN.js → init-handler-HETPWU67.js} +6 -6
  215. package/dist/cli/chunks/init-wizard-NIKM3ZOK.js +2 -0
  216. package/dist/cli/chunks/kernel-2EOSVM6X.js +2 -0
  217. package/dist/cli/chunks/{kilocode-installer-JICGAHLM.js → kilocode-installer-NHKYGJ7Q.js} +2 -2
  218. package/dist/cli/chunks/{kiro-installer-VYBFP6ZH.js → kiro-installer-24UK6GGR.js} +2 -2
  219. package/dist/cli/chunks/knowledge-graph-D3BPWNNO.js +2 -0
  220. package/dist/cli/chunks/{learning-3BHEZEPK.js → learning-QLVRZNHT.js} +3 -3
  221. package/dist/cli/chunks/{llm-router-GPTEZCUN.js → llm-router-XRMI2VMG.js} +4 -4
  222. package/dist/cli/chunks/llm-router-service-TJPPZFUN.js +2 -0
  223. package/dist/cli/chunks/{load-W5BIRPU4.js → load-W5UWL5C7.js} +2 -2
  224. package/dist/cli/chunks/load-test-RFT7IDOL.js +2 -0
  225. package/dist/cli/chunks/{mcp-EBV4DZPG.js → mcp-N7ALQ4BL.js} +2 -2
  226. package/dist/cli/chunks/{memory-7F6YYKNL.js → memory-WV52DLSA.js} +5 -5
  227. package/dist/cli/chunks/memory-backend-O2O4CFKZ.js +2 -0
  228. package/dist/cli/chunks/{memory-handlers-OGLJHAAJ.js → memory-handlers-DAEGUDBD.js} +2 -2
  229. package/dist/cli/chunks/{multi-model-executor-3ZIA2YOL.js → multi-model-executor-3FVTZCSO.js} +2 -2
  230. package/dist/cli/chunks/{opencode-installer-2XRZUTLR.js → opencode-installer-NTPWGHUW.js} +2 -2
  231. package/dist/cli/chunks/{orchestrator-VSZVJUJW.js → orchestrator-ORGJ6VAA.js} +5 -5
  232. package/dist/cli/chunks/pattern-null-store-TUBNXS34.js +2 -0
  233. package/dist/cli/chunks/{pattern-usage-recorder-I2IGVHRL.js → pattern-usage-recorder-WWXHUH5U.js} +2 -2
  234. package/dist/cli/chunks/{pipeline-5G3O6WBY.js → pipeline-ZOKZFXTH.js} +2 -2
  235. package/dist/cli/chunks/{platform-6GUFDIA3.js → platform-CDNL322F.js} +2 -2
  236. package/dist/cli/chunks/{plugin-GYXE4CIC.js → plugin-ZVLFNZZ4.js} +2 -2
  237. package/dist/cli/chunks/{prime-radiant-advanced-wasm-THX6JLGZ.js → prime-radiant-advanced-wasm-FVJDU2JY.js} +2 -2
  238. package/dist/cli/chunks/{project-root-QJRBKZQU.js → project-root-UCHQH3QL.js} +2 -2
  239. package/dist/cli/chunks/protocol-executor-6FQTTO3Y.js +2 -0
  240. package/dist/cli/chunks/{protocol-handler-B54LRU26.js → protocol-handler-4YBN5R23.js} +2 -2
  241. package/dist/cli/chunks/{prove-PCY2WQOD.js → prove-BHDHY664.js} +2 -2
  242. package/dist/cli/chunks/qe-reasoning-bank-TKPND56C.js +2 -0
  243. package/dist/cli/chunks/{quality-LPVDZC7U.js → quality-46AK277P.js} +2 -2
  244. package/dist/cli/chunks/{quality-gate-L3KXL6WE.js → quality-gate-WANE7TCN.js} +3 -3
  245. package/dist/cli/chunks/queen-coordinator-DWMXLPJG.js +2 -0
  246. package/dist/cli/chunks/{real-embeddings-N3H523PJ.js → real-embeddings-56MNGJGJ.js} +2 -2
  247. package/dist/cli/chunks/{ref-validation-6BKDPHZ7.js → ref-validation-S7UWXQIP.js} +2 -2
  248. package/dist/cli/chunks/{roocode-installer-NSGGTWXE.js → roocode-installer-TEYOQYL6.js} +2 -2
  249. package/dist/cli/chunks/router-QIMUYRCC.js +2 -0
  250. package/dist/cli/chunks/routing-feedback-4OH5ZNF4.js +2 -0
  251. package/dist/cli/chunks/{routing-handler-SRQNUBG3.js → routing-handler-KDTLMRWD.js} +2 -2
  252. package/dist/cli/chunks/{ruvector-commands-2IGULGDE.js → ruvector-commands-AOUDXCYE.js} +2 -2
  253. package/dist/cli/chunks/rvf-dual-writer-S6JBZL54.js +2 -0
  254. package/dist/cli/chunks/rvf-migration-adapter-TSGMLMYR.js +2 -0
  255. package/dist/cli/chunks/{rvf-migration-coordinator-ZD6WK5CK.js → rvf-migration-coordinator-V74MVBHS.js} +2 -2
  256. package/dist/cli/chunks/rvf-native-adapter-Z7QOW47S.js +2 -0
  257. package/dist/cli/chunks/{rvf-store-integrity-QULKUBBI.js → rvf-store-integrity-QI47Y354.js} +2 -2
  258. package/dist/cli/chunks/safe-db-JLOVBJNC.js +2 -0
  259. package/dist/cli/chunks/schedule-IM6XOBGR.js +2 -0
  260. package/dist/cli/chunks/scheduler-XL2SVVK5.js +2 -0
  261. package/dist/cli/chunks/{security-JW4EBARW.js → security-SN6MWOJT.js} +3 -3
  262. package/dist/cli/chunks/{shared-rvf-adapter-VQ7NJTGY.js → shared-rvf-adapter-2LB56LP4.js} +2 -2
  263. package/dist/cli/chunks/{shared-rvf-dual-writer-SKTS52HK.js → shared-rvf-dual-writer-WU7PFKQM.js} +2 -2
  264. package/dist/cli/chunks/sqlite-persistence-LWMIIC4U.js +2 -0
  265. package/dist/cli/chunks/{standalone-memory-3N4YJCSY.js → standalone-memory-F6FSRFWC.js} +2 -2
  266. package/dist/cli/chunks/{status-handler-5BQ2IIDG.js → status-handler-DHD5MS4G.js} +2 -2
  267. package/dist/cli/chunks/{structural-health-WGYR2RJB.js → structural-health-P6HPSQMR.js} +2 -2
  268. package/dist/cli/chunks/{sync-DLKSXTIR.js → sync-LISJGDSE.js} +2 -2
  269. package/dist/cli/chunks/{sync-R5OKUBTQ.js → sync-SNAXAVCN.js} +2 -2
  270. package/dist/cli/chunks/{task-handler-Z5KNTSUX.js → task-handler-ZT44NT5Z.js} +2 -2
  271. package/dist/cli/chunks/{task-handlers-RZFMYFSC.js → task-handlers-R6DQ5324.js} +3 -3
  272. package/dist/cli/chunks/{test-LHWKZJRN.js → test-MUFHR4JQ.js} +4 -4
  273. package/dist/cli/chunks/{test-scheduling-EN7WXUMS.js → test-scheduling-TAUSLZJP.js} +3 -3
  274. package/dist/cli/chunks/{token-bootstrap-4V3OO4EC.js → token-bootstrap-UGRH7OPU.js} +2 -2
  275. package/dist/cli/chunks/{token-usage-PFC2BYBS.js → token-usage-IX65ECBR.js} +2 -2
  276. package/dist/cli/chunks/{transformers-VZCC4SHC.js → transformers-QKPSVW2W.js} +2 -2
  277. package/dist/cli/chunks/{tree-sitter-wasm-parser-ZYDQXGKN.js → tree-sitter-wasm-parser-Z7PPA2JO.js} +2 -2
  278. package/dist/cli/chunks/{types-I6AWHZZQ.js → types-ULNNGGGH.js} +2 -2
  279. package/dist/cli/chunks/unified-memory-F5IJY7W7.js +2 -0
  280. package/dist/cli/chunks/unified-memory-hnsw-C3WAMAQL.js +2 -0
  281. package/dist/cli/chunks/unified-persistence-EWXXOTCB.js +2 -0
  282. package/dist/cli/chunks/{upgrade-T7SG75PA.js → upgrade-ECI3YUYA.js} +2 -2
  283. package/dist/cli/chunks/{validate-YLYEHTY3.js → validate-3JKRUW2S.js} +2 -2
  284. package/dist/cli/chunks/{validate-swarm-VTLTRUE3.js → validate-swarm-LZWANCIE.js} +2 -2
  285. package/dist/cli/chunks/visual-security-CKLTAIAB.js +2 -0
  286. package/dist/cli/chunks/{web-tree-sitter-JUM7ZY5M.js → web-tree-sitter-N5V4A6XG.js} +2 -2
  287. package/dist/cli/chunks/{windsurf-installer-4KS2466T.js → windsurf-installer-5TBM5B3C.js} +2 -2
  288. package/dist/cli/chunks/{witness-chain-E4X6TOCT.js → witness-chain-MFP3HBWQ.js} +2 -2
  289. package/dist/cli/chunks/witness-chain-Z6LWFEZS.js +2 -0
  290. package/dist/cli/chunks/{witness-chain-repair-MB53OZO6.js → witness-chain-repair-5QWRFVUK.js} +2 -2
  291. package/dist/cli/chunks/{witness-chain-verifier-LBWJHO7Y.js → witness-chain-verifier-SRAT7LVY.js} +2 -2
  292. package/dist/cli/chunks/{witness-key-manager-5IHVMXHJ.js → witness-key-manager-FYZXQTLJ.js} +2 -2
  293. package/dist/cli/chunks/{workflow-XUQXIRNE.js → workflow-M7TUYYXY.js} +5 -5
  294. package/dist/cli/chunks/workflow-orchestrator-OFTAR2NA.js +2 -0
  295. package/dist/cli/chunks/{wrappers-YVF5SQUN.js → wrappers-COU73OQ6.js} +2 -2
  296. package/dist/cli/commands/workflow.js +3 -0
  297. package/dist/cli/scheduler/persistent-scheduler.d.ts +2 -0
  298. package/dist/cli/scheduler/persistent-scheduler.js +12 -2
  299. package/dist/domains/code-intelligence/services/metric-collector/listing-process-owner.d.ts +3 -0
  300. package/dist/domains/code-intelligence/services/metric-collector/listing-process-owner.js +57 -0
  301. package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +124 -36
  302. package/dist/mcp/bundle.js +414 -415
  303. package/dist/mcp/handlers/domain-handler-configs.d.ts +42 -0
  304. package/dist/mcp/services/session-store.js +11 -1
  305. package/dist/mcp/types.d.ts +18 -0
  306. package/dist/memory/crdt/convergence-tracker.js +14 -24
  307. package/dist/memory/crdt/crdt-store.js +15 -0
  308. package/dist/memory/crdt/lww-register.js +3 -3
  309. package/dist/memory/crdt/or-set.js +18 -0
  310. package/dist/planning/goap-planner.js +18 -10
  311. package/dist/shared/embeddings/embedding-cache.d.ts +3 -3
  312. package/dist/shared/embeddings/embedding-cache.js +8 -8
  313. package/dist/shared/embeddings/nomic-embedder.js +9 -6
  314. package/dist/shared/llm/cache.js +1 -1
  315. package/package.json +1 -1
  316. package/dist/cli/chunks/adapter-WQSFQES5.js +0 -2
  317. package/dist/cli/chunks/aqe-learning-engine-TDHBBADE.js +0 -2
  318. package/dist/cli/chunks/base-CZSB27VO.js +0 -2
  319. package/dist/cli/chunks/browser-workflow-AEMIS6PA.js +0 -2
  320. package/dist/cli/chunks/chunk-INVDDFJC.js +0 -2
  321. package/dist/cli/chunks/chunk-QDQLL2QB.js +0 -3
  322. package/dist/cli/chunks/client-BS7I637W.js +0 -2
  323. package/dist/cli/chunks/core-handlers-UG7RMTK5.js +0 -2
  324. package/dist/cli/chunks/cross-domain-router-NX7F6TOF.js +0 -2
  325. package/dist/cli/chunks/dream-GYEH57FW.js +0 -2
  326. package/dist/cli/chunks/heartbeat-scheduler-4TJ3T7LR.js +0 -2
  327. package/dist/cli/chunks/hnsw-adapter-PHFK4EAP.js +0 -2
  328. package/dist/cli/chunks/hnsw-index-434XDDBH.js +0 -2
  329. package/dist/cli/chunks/hybrid-backend-DYVJQENQ.js +0 -2
  330. package/dist/cli/chunks/impact-analyzer-CBAST6M2.js +0 -2
  331. package/dist/cli/chunks/init-wizard-DWIJW7HY.js +0 -2
  332. package/dist/cli/chunks/kernel-AQGCS4X2.js +0 -2
  333. package/dist/cli/chunks/knowledge-graph-2ICXFUUV.js +0 -2
  334. package/dist/cli/chunks/llm-router-service-C47RGTH6.js +0 -2
  335. package/dist/cli/chunks/load-test-LRDAW3N6.js +0 -2
  336. package/dist/cli/chunks/memory-backend-UFBAYPQ6.js +0 -2
  337. package/dist/cli/chunks/pattern-null-store-27FCITT3.js +0 -2
  338. package/dist/cli/chunks/protocol-executor-XWXXTMEW.js +0 -2
  339. package/dist/cli/chunks/qe-reasoning-bank-3RMYXENE.js +0 -2
  340. package/dist/cli/chunks/queen-coordinator-AS6DZ7UJ.js +0 -2
  341. package/dist/cli/chunks/router-OVNLNGHO.js +0 -2
  342. package/dist/cli/chunks/routing-feedback-TBOWEB6H.js +0 -2
  343. package/dist/cli/chunks/rvf-dual-writer-YJYRCYGT.js +0 -2
  344. package/dist/cli/chunks/rvf-migration-adapter-VMRQ2SFO.js +0 -2
  345. package/dist/cli/chunks/rvf-native-adapter-B75L3ALW.js +0 -2
  346. package/dist/cli/chunks/safe-db-CRQHMCV6.js +0 -2
  347. package/dist/cli/chunks/schedule-L3DKJRXU.js +0 -2
  348. package/dist/cli/chunks/scheduler-VRHYUGY5.js +0 -2
  349. package/dist/cli/chunks/sqlite-persistence-JVAZETTL.js +0 -2
  350. package/dist/cli/chunks/unified-memory-WOOCCIUM.js +0 -2
  351. package/dist/cli/chunks/unified-memory-hnsw-PDDHFLUB.js +0 -2
  352. package/dist/cli/chunks/unified-persistence-6ETD3JSC.js +0 -2
  353. package/dist/cli/chunks/visual-security-O4OT2YPY.js +0 -2
  354. package/dist/cli/chunks/witness-chain-67JHPDCN.js +0 -2
  355. package/dist/cli/chunks/workflow-orchestrator-ZVFSNRYZ.js +0 -2
@@ -12,11 +12,14 @@
12
12
  *
13
13
  * @see docs/plans/AQE_V3_IMPROVEMENTS_PLAN.md - Phase 5, RM-003
14
14
  */
15
- import { execSync, spawnSync } from 'child_process';
16
- import { existsSync, readFileSync, readdirSync } from 'fs';
17
- import { join, extname } from 'path';
15
+ import { execSync, spawn, spawnSync } from 'child_process';
16
+ import { createRequire } from 'module';
17
+ import { existsSync, mkdtempSync, readFileSync, readdirSync, rmSync, statSync } from 'fs';
18
+ import { tmpdir } from 'os';
19
+ import { join, extname, resolve } from 'path';
18
20
  import { DEFAULT_METRIC_CONFIG, } from './interfaces.js';
19
21
  import { safeJsonParse } from '../../../../shared/safe-json.js';
22
+ import { ownListingProcess } from './listing-process-owner.js';
20
23
  // ============================================================================
21
24
  // Main Test Counting Function
22
25
  // ============================================================================
@@ -177,53 +180,138 @@ export function checkTestRunners(projectPath) {
177
180
  // ============================================================================
178
181
  /**
179
182
  * Count tests using Vitest
180
- * Uses `vitest list` for accurate test discovery WITHOUT execution.
183
+ * Uses `vitest list` for accurate test discovery without executing test callbacks.
181
184
  *
182
185
  * IMPORTANT: We use `vitest list` (not `vitest --run`) because:
183
186
  * - `vitest --run` EXECUTES tests, causing OOM in test-of-tests scenarios
184
- * - `vitest list` only enumerates tests without running them
187
+ * - Collection imports test modules but does not run test callbacks
185
188
  */
186
- function countVitestTests(projectPath, config) {
189
+ async function countVitestTests(projectPath, config) {
190
+ let listingDirectory;
187
191
  try {
188
- // Use vitest list for safe enumeration (NO execution). --json emits one
189
- // entry per discovered test in Vitest 4 and 5; --reporter=json does not.
190
- const output = execSync('npx vitest list --json', {
191
- cwd: projectPath,
192
- encoding: 'utf-8',
193
- timeout: Math.min(config.timeout, 30000), // Cap at 30s for listing
194
- maxBuffer: 10 * 1024 * 1024, // 10MB buffer (reduced from 50MB)
195
- });
192
+ let supportsStaticParse = false;
196
193
  try {
197
- const data = safeJsonParse(output);
198
- // Vitest list --json returns a flat array of { name, file, location? }.
199
- if (Array.isArray(data) && data.every(test => test && typeof test.name === 'string' && typeof test.file === 'string')) {
200
- return classifyTests(data.length, 'vitest', projectPath);
201
- }
202
- // Preserve compatibility with older structured runner output.
203
- if (data && typeof data.numTotalTests === 'number') {
204
- return classifyTests(data.numTotalTests, 'vitest', projectPath);
205
- }
194
+ const projectRequire = createRequire(resolve(projectPath, 'package.json'));
195
+ const pkg = safeJsonParse(readFileSync(projectRequire.resolve('vitest/package.json'), 'utf-8'));
196
+ const [major, minor] = String(pkg.version).split('.').map(Number);
197
+ supportsStaticParse = major > 4 || (major === 4 && minor >= 1);
206
198
  }
207
199
  catch {
208
- // JSON parse failed, try line counting
200
+ // Retain native listing without new flags for unresolved/older runners.
209
201
  }
210
- // Fallback: count test entries from text output
211
- // vitest list outputs lines like "✓ test name" or "○ test name"
212
- const lines = output.split('\n');
213
- const testLines = lines.filter(line => line.trim().startsWith('✓') ||
214
- line.trim().startsWith('○') ||
215
- line.includes(' > ') // nested test format: "describe > test name"
216
- );
217
- if (testLines.length > 0) {
218
- return classifyTests(testLines.length, 'vitest', projectPath);
202
+ listingDirectory = mkdtempSync(join(tmpdir(), 'aqe-vitest-list-'));
203
+ const readListing = (file) => {
204
+ try {
205
+ if (statSync(file).size > 10 * 1024 * 1024)
206
+ return undefined;
207
+ const data = safeJsonParse(readFileSync(file, 'utf-8'));
208
+ if (Array.isArray(data) && data.every(test => test && typeof test.name === 'string' && typeof test.file === 'string'))
209
+ return data.length;
210
+ if (data && typeof data.numTotalTests === 'number')
211
+ return data.numTotalTests;
212
+ }
213
+ catch { /* Missing/invalid artifacts are not authoritative counts. */ }
214
+ return undefined;
215
+ };
216
+ const listTests = async (mode) => {
217
+ // Separate artifacts prevent a failed attempt from contaminating recovery.
218
+ const file = join(listingDirectory, `${mode}.json`);
219
+ const args = ['vitest', 'list', `--json=${file}`];
220
+ if (mode !== 'legacy')
221
+ args.push(mode === 'static' ? '--static-parse' : '--no-static-parse');
222
+ const succeeded = await new Promise((resolveAttempt) => {
223
+ const windows = process.platform === 'win32';
224
+ // Keep Windows artifact paths in a quoted environment expansion;
225
+ // interpolating a caller-controlled temporary path into cmd is unsafe.
226
+ const flag = mode === 'legacy' ? ''
227
+ : mode === 'static' ? ' --static-parse' : ' --no-static-parse';
228
+ const command = windows ? `npx vitest list --json="%AQE_VITEST_LIST_JSON%"${flag}` : 'npx';
229
+ const child = spawn(command, windows ? [] : args, {
230
+ cwd: projectPath, detached: !windows, shell: windows,
231
+ env: { ...process.env, AQE_VITEST_LIST_JSON: file },
232
+ stdio: ['ignore', 'pipe', 'pipe'],
233
+ });
234
+ let stopped = false;
235
+ let bytes = 0;
236
+ const stopTree = () => {
237
+ if (!child.pid)
238
+ return;
239
+ try {
240
+ if (windows) {
241
+ // Windows has no POSIX process groups; terminate this owned tree.
242
+ spawnSync('taskkill', ['/PID', String(child.pid), '/T', '/F'], {
243
+ stdio: 'ignore', timeout: 5000,
244
+ });
245
+ }
246
+ else {
247
+ process.kill(-child.pid, 'SIGKILL');
248
+ }
249
+ }
250
+ catch { /* The process group may already have exited. */ }
251
+ };
252
+ const releaseOwnership = ownListingProcess(listingDirectory, stopTree);
253
+ const timer = setTimeout(() => { stopped = true; stopTree(); }, Math.min(config.timeout, 30000));
254
+ const consume = (chunk) => {
255
+ bytes += chunk.length;
256
+ if (bytes > 10 * 1024 * 1024) {
257
+ stopped = true;
258
+ stopTree();
259
+ }
260
+ };
261
+ child.stdout?.on('data', consume);
262
+ child.stderr?.on('data', consume);
263
+ child.once('error', () => { clearTimeout(timer); stopTree(); releaseOwnership(); resolveAttempt(false); });
264
+ child.once('close', (code) => {
265
+ clearTimeout(timer);
266
+ // A wrapper may exit while its descendants are still importing modules.
267
+ stopTree();
268
+ releaseOwnership();
269
+ resolveAttempt(!stopped && code === 0);
270
+ });
271
+ });
272
+ return succeeded ? readListing(file) : undefined;
273
+ };
274
+ if (!supportsStaticParse) {
275
+ const total = await listTests('legacy');
276
+ return total === undefined ? countTestsByFilePattern(projectPath, config)
277
+ : classifyTests(total, 'vitest', projectPath);
219
278
  }
220
- // If vitest list produced no usable output, fall back to file pattern
221
- return countTestsByFilePattern(projectPath, config);
279
+ // Inspect cheap static discovery before importing project test modules.
280
+ // Above 1,000 static declarations or 100 files, retain the native static
281
+ // count instead of paying the collection timeout for every metrics call.
282
+ const staticTotal = await listTests('static');
283
+ const staticFile = join(listingDirectory, 'static.json');
284
+ let staticFiles = 0;
285
+ if (staticTotal !== undefined) {
286
+ try {
287
+ const data = safeJsonParse(readFileSync(staticFile, 'utf-8'));
288
+ if (Array.isArray(data))
289
+ staticFiles = new Set(data.map(test => test.file)).size;
290
+ }
291
+ catch { /* The validated count remains usable. */ }
292
+ if (staticTotal > 1000 || staticFiles > 100) {
293
+ return classifyTests(staticTotal, 'vitest', projectPath);
294
+ }
295
+ }
296
+ // Collection expands parameterized/computed declarations but imports every
297
+ // test module (with setup/describe side effects). One throwing import loses
298
+ // expansion for the whole suite; preserve its static count when available.
299
+ const collectedTotal = await listTests('collection');
300
+ const total = collectedTotal ?? staticTotal;
301
+ return total === undefined ? countTestsByFilePattern(projectPath, config)
302
+ : classifyTests(total, 'vitest', projectPath);
222
303
  }
223
304
  catch {
224
- // vitest list failed (not installed, timeout, etc.) - fall back to file pattern
225
305
  return countTestsByFilePattern(projectPath, config);
226
306
  }
307
+ finally {
308
+ if (listingDirectory) {
309
+ try {
310
+ rmSync(listingDirectory, { recursive: true, force: true });
311
+ }
312
+ catch { /* Cleanup failure must not change an otherwise valid count. */ }
313
+ }
314
+ }
227
315
  }
228
316
  /**
229
317
  * Count tests using Jest