agentic-qe 3.14.2 → 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 (372) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +72 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/cli/bundle.js +5 -5
  5. package/dist/cli/chunks/adapter-AKQYU6UH.js +2 -0
  6. package/dist/cli/chunks/{agent-booster-wasm-SD5N32MX.js → agent-booster-wasm-TQOMLWWX.js} +2 -2
  7. package/dist/cli/chunks/{agent-handler-OZRSJM7F.js → agent-handler-Q3SEMMI2.js} +2 -2
  8. package/dist/cli/chunks/{agent-memory-branch-NYTRANRN.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-EX3SC2DP.js → arena-7RC7TBGW.js} +4 -4
  11. package/dist/cli/chunks/{arena-FOTVSRK4.js → arena-UPB7TKUY.js} +2 -2
  12. package/dist/cli/chunks/{audit-Q5GHSUQY.js → audit-IXN5R4WB.js} +3 -3
  13. package/dist/cli/chunks/base-DZK36ITB.js +2 -0
  14. package/dist/cli/chunks/{better-sqlite3-S7M5R2HS.js → better-sqlite3-RP4DEGK3.js} +2 -2
  15. package/dist/cli/chunks/{brain-handler-5FSA46R5.js → brain-handler-H5OVZ22L.js} +3 -3
  16. package/dist/cli/chunks/{branch-enumerator-RWAXTGEU.js → branch-enumerator-VPRWDGFJ.js} +2 -2
  17. package/dist/cli/chunks/{browser-IGDESJGF.js → browser-B6E7JPPJ.js} +2 -2
  18. package/dist/cli/chunks/browser-workflow-ADK54DOE.js +2 -0
  19. package/dist/cli/chunks/{chunk-E3Q7WNJD.js → chunk-26GM5CWD.js} +3 -3
  20. package/dist/cli/chunks/{chunk-BWRHOIYC.js → chunk-2GNRW3OD.js} +2 -2
  21. package/dist/cli/chunks/{chunk-ZCDXJ27H.js → chunk-2IGT5WNQ.js} +1 -1
  22. package/dist/cli/chunks/{chunk-7SK6IMGZ.js → chunk-2WT7AKKK.js} +2 -2
  23. package/dist/cli/chunks/{chunk-DVHWLAEO.js → chunk-33VPWGCM.js} +3 -3
  24. package/dist/cli/chunks/{chunk-NAZVPZJS.js → chunk-37BASGWC.js} +2 -2
  25. package/dist/cli/chunks/{chunk-Q335R4MR.js → chunk-3ABRGG3C.js} +2 -2
  26. package/dist/cli/chunks/{chunk-IWFL6EFI.js → chunk-3P6NCFI2.js} +2 -2
  27. package/dist/cli/chunks/{chunk-4AKGBUYD.js → chunk-42VSQ2MX.js} +3 -3
  28. package/dist/cli/chunks/{chunk-2LKAMMMI.js → chunk-44WISFTU.js} +2 -2
  29. package/dist/cli/chunks/{chunk-RFNEHNJV.js → chunk-4C6UJIHB.js} +1 -1
  30. package/dist/cli/chunks/{chunk-CTCQOYBS.js → chunk-4JBFJTHJ.js} +1 -1
  31. package/dist/cli/chunks/{chunk-GJAWEUIN.js → chunk-4OUPCTBS.js} +2 -2
  32. package/dist/cli/chunks/{chunk-2EHFEMRU.js → chunk-4Q35TI6Z.js} +2 -2
  33. package/dist/cli/chunks/{chunk-N3RN4QTC.js → chunk-4RP5VUBI.js} +2 -2
  34. package/dist/cli/chunks/{chunk-ZYLSOBOR.js → chunk-4TXAP3YH.js} +1 -1
  35. package/dist/cli/chunks/{chunk-KZOBLLXW.js → chunk-4UDZLD42.js} +2 -2
  36. package/dist/cli/chunks/{chunk-UYTWDS2R.js → chunk-4W7QVUNO.js} +2 -2
  37. package/dist/cli/chunks/{chunk-4ZUZDFAA.js → chunk-4XPPMADQ.js} +2 -2
  38. package/dist/cli/chunks/{chunk-TENYL5TI.js → chunk-527HQAY7.js} +2 -2
  39. package/dist/cli/chunks/chunk-5BLFXQEB.js +96 -0
  40. package/dist/cli/chunks/{chunk-OX6T26CD.js → chunk-5DFHE4H5.js} +3 -3
  41. package/dist/cli/chunks/{chunk-T46LOLW3.js → chunk-5F6DWHQG.js} +2 -2
  42. package/dist/cli/chunks/{chunk-FVGTINVR.js → chunk-5FOZO7KM.js} +81 -65
  43. package/dist/cli/chunks/{chunk-T4C56HBW.js → chunk-5IAB5NRZ.js} +2 -2
  44. package/dist/cli/chunks/{chunk-4MH22236.js → chunk-5P3G6ZW4.js} +1 -1
  45. package/dist/cli/chunks/{chunk-7AFBNU6K.js → chunk-5Y5TC6BY.js} +2 -2
  46. package/dist/cli/chunks/{chunk-VSYBMNIR.js → chunk-6F2RM6X2.js} +1 -1
  47. package/dist/cli/chunks/{chunk-ICKLBATY.js → chunk-72UJXEKQ.js} +2 -2
  48. package/dist/cli/chunks/{chunk-A7N3YUDJ.js → chunk-74PK3NEW.js} +2 -2
  49. package/dist/cli/chunks/{chunk-PMUBG2RU.js → chunk-7BUERZYL.js} +2 -2
  50. package/dist/cli/chunks/{chunk-HZMLNM2T.js → chunk-7FYMDKQH.js} +174 -169
  51. package/dist/cli/chunks/{chunk-67A6PEZM.js → chunk-7G6UX2QN.js} +2 -2
  52. package/dist/cli/chunks/{chunk-G2CLZVYI.js → chunk-7JQHPANT.js} +3 -3
  53. package/dist/cli/chunks/{chunk-TLPL3EQY.js → chunk-7SLAZAVU.js} +2 -2
  54. package/dist/cli/chunks/{chunk-4UCMTYFQ.js → chunk-7Y2CEXRS.js} +4 -4
  55. package/dist/cli/chunks/{chunk-2H5YJ5ZK.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-6F4WHN7D.js → chunk-B5XFDFBT.js} +1 -1
  59. package/dist/cli/chunks/{chunk-5EHLGOWW.js → chunk-B7SWW5A6.js} +2 -2
  60. package/dist/cli/chunks/{chunk-P64DMQ2C.js → chunk-BN7DKW5D.js} +1 -1
  61. package/dist/cli/chunks/{chunk-CIESXO73.js → chunk-C46DMCWF.js} +1 -1
  62. package/dist/cli/chunks/{chunk-HZ6NEJMO.js → chunk-CB5JPRIZ.js} +2 -2
  63. package/dist/cli/chunks/{chunk-SEHCX4NH.js → chunk-CBOPBYPU.js} +1 -1
  64. package/dist/cli/chunks/{chunk-LWUJQGCS.js → chunk-CR3QGHVN.js} +2 -2
  65. package/dist/cli/chunks/{chunk-NHHWLJQF.js → chunk-D4Z2N74A.js} +1 -1
  66. package/dist/cli/chunks/{chunk-4K27ESCA.js → chunk-DBA3N742.js} +1 -1
  67. package/dist/cli/chunks/{chunk-2TG24LYQ.js → chunk-DX3C5HPN.js} +1 -1
  68. package/dist/cli/chunks/{chunk-S4MR6RTE.js → chunk-E3FBW6G2.js} +1 -1
  69. package/dist/cli/chunks/{chunk-GHUPID5E.js → chunk-ELU4IC3I.js} +1 -1
  70. package/dist/cli/chunks/{chunk-C7AXRI7E.js → chunk-EY4OQHU3.js} +1 -1
  71. package/dist/cli/chunks/{chunk-6LMLN5R2.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-UIGEUEBT.js → chunk-FUE6LL72.js} +2 -2
  75. package/dist/cli/chunks/{chunk-4RT7I7PI.js → chunk-G5C2XVZC.js} +1 -1
  76. package/dist/cli/chunks/{chunk-WVY22NHZ.js → chunk-G6DCESPU.js} +2 -2
  77. package/dist/cli/chunks/{chunk-3DFFFXXO.js → chunk-G6ZHTF42.js} +2 -2
  78. package/dist/cli/chunks/{chunk-CH2TQCV5.js → chunk-GNTVFN7D.js} +1 -1
  79. package/dist/cli/chunks/{chunk-WMW47QMR.js → chunk-H5ZRV5K5.js} +2 -2
  80. package/dist/cli/chunks/{chunk-4M6A3PVJ.js → chunk-H6XBM2LY.js} +2 -2
  81. package/dist/cli/chunks/{chunk-4N44UJGI.js → chunk-HOQQCY2K.js} +2 -2
  82. package/dist/cli/chunks/{chunk-D4RCV4LY.js → chunk-HRUU7E3D.js} +2 -2
  83. package/dist/cli/chunks/{chunk-EAJK25IS.js → chunk-HXE5NBJG.js} +1 -1
  84. package/dist/cli/chunks/{chunk-IUNMW454.js → chunk-I4NDQGKP.js} +2 -2
  85. package/dist/cli/chunks/{chunk-CJHVOBJY.js → chunk-IFFZR6GY.js} +1 -1
  86. package/dist/cli/chunks/{chunk-YN6W2XIT.js → chunk-IKIITGU5.js} +3 -3
  87. package/dist/cli/chunks/{chunk-JIUF6NV6.js → chunk-IP7NSFQQ.js} +2 -2
  88. package/dist/cli/chunks/{chunk-3C2K4YMS.js → chunk-IQEJGZV6.js} +3 -3
  89. package/dist/cli/chunks/{chunk-RGH3WGWD.js → chunk-IU4EBTA2.js} +3 -3
  90. package/dist/cli/chunks/{chunk-QW4LN5NK.js → chunk-JBB7E26R.js} +2 -2
  91. package/dist/cli/chunks/{chunk-RYJHREYS.js → chunk-JRYZKBY2.js} +2 -2
  92. package/dist/cli/chunks/{chunk-6EHN7Q2Q.js → chunk-JV4FZUE7.js} +2 -2
  93. package/dist/cli/chunks/{chunk-PZKZY6PB.js → chunk-KF63AYXD.js} +2 -2
  94. package/dist/cli/chunks/{chunk-ZFGND4QK.js → chunk-KPMGTVB4.js} +1 -1
  95. package/dist/cli/chunks/chunk-L2GKMBDP.js +2 -0
  96. package/dist/cli/chunks/{chunk-7FWP7CZY.js → chunk-LHGNNZ76.js} +3 -3
  97. package/dist/cli/chunks/{chunk-HSJ5FQCF.js → chunk-LKN7JQTW.js} +2 -2
  98. package/dist/cli/chunks/{chunk-EH5OCHAJ.js → chunk-LLVGTEHU.js} +1 -1
  99. package/dist/cli/chunks/{chunk-TYVQNYXX.js → chunk-LS3EUMBP.js} +6 -6
  100. package/dist/cli/chunks/{chunk-F2KRT2II.js → chunk-LTBCAFTZ.js} +3 -3
  101. package/dist/cli/chunks/{chunk-PVHO6KLB.js → chunk-LVLBIKJD.js} +1 -1
  102. package/dist/cli/chunks/{chunk-5WJUNRTY.js → chunk-MDZ6RRLX.js} +2 -2
  103. package/dist/cli/chunks/{chunk-W4OQYLYO.js → chunk-MWWAMDHI.js} +1 -1
  104. package/dist/cli/chunks/{chunk-N5ZRUOMR.js → chunk-MXMFGSWR.js} +2 -2
  105. package/dist/cli/chunks/{chunk-L2F7FVIU.js → chunk-N4H2QOT5.js} +2 -2
  106. package/dist/cli/chunks/{chunk-R5RNOLHI.js → chunk-NBWQBQO5.js} +1 -1
  107. package/dist/cli/chunks/{chunk-IVGVOGIZ.js → chunk-NN76NTOX.js} +1 -1
  108. package/dist/cli/chunks/{chunk-OBCKP3G4.js → chunk-NTSXHZTC.js} +2 -2
  109. package/dist/cli/chunks/{chunk-YF5OP6CR.js → chunk-OV5EZO3U.js} +2 -2
  110. package/dist/cli/chunks/{chunk-JQ2ZD3WO.js → chunk-OVDKWCD7.js} +2 -2
  111. package/dist/cli/chunks/{chunk-WBH4C4BG.js → chunk-OVPJQWHW.js} +2 -2
  112. package/dist/cli/chunks/{chunk-6SZKLWZT.js → chunk-OY7MLMEX.js} +5 -5
  113. package/dist/cli/chunks/{chunk-NG2UVPTW.js → chunk-OYMLHX2B.js} +1 -1
  114. package/dist/cli/chunks/{chunk-RVCWSAXI.js → chunk-PI74GOE4.js} +2 -2
  115. package/dist/cli/chunks/{chunk-42WUDDUU.js → chunk-PZTVH2AS.js} +2 -2
  116. package/dist/cli/chunks/{chunk-4PH7O5ZH.js → chunk-QLWNXBRU.js} +2 -2
  117. package/dist/cli/chunks/{chunk-FPHPP5TQ.js → chunk-R2AFVFRF.js} +1 -1
  118. package/dist/cli/chunks/{chunk-MWQTACNA.js → chunk-RKJZWWB7.js} +2 -2
  119. package/dist/cli/chunks/{chunk-FREF6Y4L.js → chunk-ROX7NLS4.js} +2 -2
  120. package/dist/cli/chunks/{chunk-K574FLVB.js → chunk-RTJ2M6V6.js} +2 -2
  121. package/dist/cli/chunks/{chunk-NWFIJNEB.js → chunk-SG47AXJG.js} +1 -1
  122. package/dist/cli/chunks/{chunk-UHTAI4ZB.js → chunk-SGXSB7YO.js} +1 -1
  123. package/dist/cli/chunks/{chunk-PWEIDHT7.js → chunk-SHGKY3QB.js} +2 -2
  124. package/dist/cli/chunks/{chunk-MH73D5TN.js → chunk-SJPZSCZP.js} +2 -2
  125. package/dist/cli/chunks/{chunk-3WV4H33V.js → chunk-SQ3PPISY.js} +1 -1
  126. package/dist/cli/chunks/{chunk-RCI64RIJ.js → chunk-STRDSVH3.js} +2 -2
  127. package/dist/cli/chunks/{chunk-GHQ5PUOV.js → chunk-T35GZXTU.js} +2 -2
  128. package/dist/cli/chunks/{chunk-DRO5NJZA.js → chunk-T62DH4GG.js} +2 -2
  129. package/dist/cli/chunks/{chunk-W2FLULF4.js → chunk-TFHQE6NK.js} +2 -2
  130. package/dist/cli/chunks/{chunk-LML5VTFK.js → chunk-TGLAWI62.js} +1 -1
  131. package/dist/cli/chunks/{chunk-KFXZDQ5J.js → chunk-TISSZFHO.js} +1 -1
  132. package/dist/cli/chunks/{chunk-KPFG4OIM.js → chunk-TJEIOE7F.js} +1 -1
  133. package/dist/cli/chunks/{chunk-57TNBR2P.js → chunk-TTMHIOQ3.js} +2 -2
  134. package/dist/cli/chunks/{chunk-ARMZYHYL.js → chunk-UHQY3GK7.js} +2 -2
  135. package/dist/cli/chunks/{chunk-ADK7DF3G.js → chunk-UMENRGHK.js} +2 -2
  136. package/dist/cli/chunks/{chunk-ZWRQ5VAU.js → chunk-UMNYF5EZ.js} +2 -2
  137. package/dist/cli/chunks/{chunk-G6AV2HGY.js → chunk-UTVRQEZM.js} +3 -3
  138. package/dist/cli/chunks/{chunk-VOYJJ3KA.js → chunk-UYJHYMEQ.js} +2 -2
  139. package/dist/cli/chunks/{chunk-KEEBUVGV.js → chunk-V4AOVDCJ.js} +2 -2
  140. package/dist/cli/chunks/{chunk-HBTC4L53.js → chunk-VIDBBB6F.js} +2 -2
  141. package/dist/cli/chunks/{chunk-PFXX5Q32.js → chunk-VWNHKYK7.js} +2 -2
  142. package/dist/cli/chunks/{chunk-DW6ZMNMR.js → chunk-WYMGK5DX.js} +2 -2
  143. package/dist/cli/chunks/{chunk-CJCT452S.js → chunk-XA7CG3LH.js} +2 -2
  144. package/dist/cli/chunks/{chunk-QFUX7ELG.js → chunk-XX7HUSX2.js} +2 -2
  145. package/dist/cli/chunks/{chunk-WXMSRBQF.js → chunk-XXCYQXK3.js} +2 -2
  146. package/dist/cli/chunks/{chunk-6VKJAMZY.js → chunk-Y2DVFVGI.js} +1 -1
  147. package/dist/cli/chunks/{chunk-JDXLCNKV.js → chunk-Y5SQBI2F.js} +2 -2
  148. package/dist/cli/chunks/{chunk-QXTW7XCS.js → chunk-YAKS3CAB.js} +2 -2
  149. package/dist/cli/chunks/{chunk-Q3JHS3UD.js → chunk-YCBDE2N7.js} +2 -2
  150. package/dist/cli/chunks/{chunk-VNAKBHJI.js → chunk-YDNSLLBS.js} +2 -2
  151. package/dist/cli/chunks/{chunk-S7N4BKI3.js → chunk-YEXPFHV6.js} +2 -2
  152. package/dist/cli/chunks/{chunk-CG2MUD7U.js → chunk-YGB6R5DW.js} +1 -1
  153. package/dist/cli/chunks/{chunk-NNOMDM4N.js → chunk-YL7T3VV7.js} +2 -2
  154. package/dist/cli/chunks/{chunk-U54OOA24.js → chunk-ZHXWGNYM.js} +1 -1
  155. package/dist/cli/chunks/{chunk-NRR23SJV.js → chunk-ZK5JKHP4.js} +1 -1
  156. package/dist/cli/chunks/{chunk-XPLSLHRB.js → chunk-ZN3J6TZD.js} +1 -1
  157. package/dist/cli/chunks/{chunk-RHJVDCLV.js → chunk-ZUG5MOUB.js} +2 -2
  158. package/dist/cli/chunks/{ci-NTRH7PAW.js → ci-YVKDQWIX.js} +2 -2
  159. package/dist/cli/chunks/ci-output-LK3MBXLZ.js +2 -0
  160. package/dist/cli/chunks/{circuit-breaker-4WST3QSA.js → circuit-breaker-7AIXACR7.js} +2 -2
  161. package/dist/cli/chunks/{claude-flow-setup-KB4TKMYI.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-W2ZHQ6WM.js → cline-installer-YDDCKKEV.js} +2 -2
  164. package/dist/cli/chunks/{code-TF2AVR5D.js → code-URB7UAKW.js} +2 -2
  165. package/dist/cli/chunks/{code-index-extractor-RMDRUVQJ.js → code-index-extractor-BL6HWH4Q.js} +2 -2
  166. package/dist/cli/chunks/{codex-installer-VSTRHJHV.js → codex-installer-2AVEO4EA.js} +2 -2
  167. package/dist/cli/chunks/{completions-3Q37QVFR.js → completions-RCKBSSSS.js} +2 -2
  168. package/dist/cli/chunks/{complexity-analyzer-3FNFLACD.js → complexity-analyzer-LEDG62YK.js} +2 -2
  169. package/dist/cli/chunks/{continuedev-installer-VTEXM455.js → continuedev-installer-VOTCEBFH.js} +2 -2
  170. package/dist/cli/chunks/{copilot-installer-AGY7DQUS.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-LTZAQBX7.js → cost-tracker-GJIFB2BM.js} +2 -2
  173. package/dist/cli/chunks/{coverage-TT64IOS4.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-OVOJIOHN.js → cursor-installer-CMGJQMHX.js} +2 -2
  176. package/dist/cli/chunks/{daemon-DMFZMXKA.js → daemon-V456IWR3.js} +3 -3
  177. package/dist/cli/chunks/{daemon-XCULEHWY.js → daemon-Y2I3YVIU.js} +4 -4
  178. package/dist/cli/chunks/{dag-attention-scheduler-WW2RX4B5.js → dag-attention-scheduler-ZCBBOD3D.js} +2 -2
  179. package/dist/cli/chunks/{detect-QNWIM232.js → detect-2GHEA4A3.js} +2 -2
  180. package/dist/cli/chunks/{dist-node-6GQIY3CG.js → dist-node-44AGYJCH.js} +2 -2
  181. package/dist/cli/chunks/{domain-handler-6RJPDELX.js → domain-handler-IDLIEP6X.js} +2 -2
  182. package/dist/cli/chunks/{domain-transfer-WK524LBS.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-SO6GWJW7.js → embed-and-insert-pattern-DUW6K35A.js} +2 -2
  185. package/dist/cli/chunks/{eval-GL544IPO.js → eval-PR6YWDFM.js} +2 -2
  186. package/dist/cli/chunks/{experience-capture-middleware-BCCJ35OX.js → experience-capture-middleware-CJJJN7CF.js} +3 -3
  187. package/dist/cli/chunks/{fast-paths-CATDDBEU.js → fast-paths-LGLLKX6P.js} +2 -2
  188. package/dist/cli/chunks/{feature-flags-BUXNAORY.js → feature-flags-33D3I4DD.js} +2 -2
  189. package/dist/cli/chunks/{feature-flags-KNNWWP5G.js → feature-flags-QL4NCEGW.js} +2 -2
  190. package/dist/cli/chunks/{file-discovery-S4HF3O7D.js → file-discovery-GKCYJPFZ.js} +2 -2
  191. package/dist/cli/chunks/{fleet-DQVQQONW.js → fleet-QNT6X2YI.js} +3 -3
  192. package/dist/cli/chunks/{gnn-wrapper-G7ABZUG7.js → gnn-wrapper-ELSGT67Z.js} +2 -2
  193. package/dist/cli/chunks/{heartbeat-handler-UFMELIWT.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-YIILSRXI.js → hnsw-legacy-bridge-EZMM5JWL.js} +2 -2
  198. package/dist/cli/chunks/{hnswlib-node-TSVRMXDH.js → hnswlib-node-G4CE3EOS.js} +2 -2
  199. package/dist/cli/chunks/{hooks-OHQPNK74.js → hooks-LCVXXA55.js} +10 -10
  200. package/dist/cli/chunks/{hypergraph-engine-LY7PJDSL.js → hypergraph-engine-6Z7RQ3HI.js} +2 -2
  201. package/dist/cli/chunks/{hypergraph-handler-YGDYZO6H.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-MTK65LI3.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-3IICU4RS.js → kilocode-installer-U3MW62DE.js} +2 -2
  207. package/dist/cli/chunks/{kiro-installer-MXOVQYQA.js → kiro-installer-PPEAC44T.js} +2 -2
  208. package/dist/cli/chunks/knowledge-graph-7JE2TVKJ.js +2 -0
  209. package/dist/cli/chunks/{learning-EV5LSOOM.js → learning-7B5NITDV.js} +3 -3
  210. package/dist/cli/chunks/{llm-router-7LYDJUOT.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-F4PVAMXQ.js → load-VO7ABNHV.js} +2 -2
  213. package/dist/cli/chunks/load-test-JZ4CLSBF.js +2 -0
  214. package/dist/cli/chunks/{mcp-DUYJUEME.js → mcp-THXEINCL.js} +2 -2
  215. package/dist/cli/chunks/{memory-XTTYORAS.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-R6XCTMCF.js → multi-model-executor-HEDVOZ6X.js} +2 -2
  219. package/dist/cli/chunks/{opencode-installer-33ULBU2F.js → opencode-installer-GQ7J5SBG.js} +2 -2
  220. package/dist/cli/chunks/{orchestrator-34ZJEKTJ.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-GZ2M3F2E.js → pattern-usage-recorder-O6XHM2G5.js} +2 -2
  223. package/dist/cli/chunks/{pipeline-SR5OTY45.js → pipeline-UOG6UO6D.js} +2 -2
  224. package/dist/cli/chunks/{platform-VKJFJIAW.js → platform-Q7UH7FZQ.js} +2 -2
  225. package/dist/cli/chunks/{plugin-5C5UBQUQ.js → plugin-7OFLNGOS.js} +2 -2
  226. package/dist/cli/chunks/{prime-radiant-advanced-wasm-KO2PQI3D.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-ZF74NIKA.js → protocol-handler-WLYTX6FS.js} +2 -2
  229. package/dist/cli/chunks/{prove-MO5TQQU4.js → prove-QVNE4V3J.js} +2 -2
  230. package/dist/cli/chunks/qe-reasoning-bank-7VB5LJGS.js +2 -0
  231. package/dist/cli/chunks/{quality-EYIN6AER.js → quality-DNE2RKE5.js} +2 -2
  232. package/dist/cli/chunks/{quality-gate-V6OQM57O.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-AR7TZX7U.js → real-embeddings-SF42ML7G.js} +2 -2
  235. package/dist/cli/chunks/{roocode-installer-46E626VZ.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-ZNRVW6QW.js → routing-handler-4MXXZRYP.js} +2 -2
  239. package/dist/cli/chunks/{ruvector-commands-4L2CQMWS.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-H4RVGBIA.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-OJGWWPLL.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-M6NNIZ5W.js → shared-rvf-adapter-6RGCTLHD.js} +2 -2
  250. package/dist/cli/chunks/{shared-rvf-dual-writer-LHMFCYVE.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-GMIOXQIE.js → status-handler-BADQV2KA.js} +2 -2
  253. package/dist/cli/chunks/{structural-health-YZXHVHM6.js → structural-health-VMYEYRZG.js} +2 -2
  254. package/dist/cli/chunks/{sync-GMPCPV5L.js → sync-PXLROLHB.js} +2 -2
  255. package/dist/cli/chunks/{sync-N56UQGCS.js → sync-ULY7T5II.js} +2 -2
  256. package/dist/cli/chunks/{task-handler-VTNRGAXP.js → task-handler-L7E2I267.js} +2 -2
  257. package/dist/cli/chunks/{task-handlers-FYSDH55N.js → task-handlers-6DPKE4AK.js} +3 -3
  258. package/dist/cli/chunks/{test-GQNCKRSP.js → test-WCLURQUT.js} +11 -11
  259. package/dist/cli/chunks/test-scheduling-4CNJA6TW.js +15 -0
  260. package/dist/cli/chunks/{token-bootstrap-76SRNXGG.js → token-bootstrap-GTI24JAL.js} +2 -2
  261. package/dist/cli/chunks/{token-usage-O7CZDP5Q.js → token-usage-DRVG6PKO.js} +2 -2
  262. package/dist/cli/chunks/{transformers-LTU4LSSC.js → transformers-IMDDAMYQ.js} +2 -2
  263. package/dist/cli/chunks/{tree-sitter-wasm-parser-NQSQCMBM.js → tree-sitter-wasm-parser-WBZIHVFA.js} +2 -2
  264. package/dist/cli/chunks/{types-OP6IWE6N.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-OQWRBZ3R.js → upgrade-6ALSDWDD.js} +2 -2
  269. package/dist/cli/chunks/{validate-TH5SRP3E.js → validate-XF4ZG3LC.js} +2 -2
  270. package/dist/cli/chunks/{validate-swarm-UITL2JUS.js → validate-swarm-P5TAFRDA.js} +2 -2
  271. package/dist/cli/chunks/{vibium-O6PRAG4J.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-XBFBY4OF.js → web-tree-sitter-4JVRQPX5.js} +2 -2
  274. package/dist/cli/chunks/{windsurf-installer-DVT5NRNY.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-VRSH2F36.js → witness-chain-RPZ2SE2V.js} +2 -2
  277. package/dist/cli/chunks/{witness-key-manager-GFHRDKQ4.js → witness-key-manager-LXG2VBQQ.js} +2 -2
  278. package/dist/cli/chunks/{workflow-HAZ6YKOG.js → workflow-2OYNO7UU.js} +4 -4
  279. package/dist/cli/chunks/workflow-orchestrator-KWHIJMFV.js +2 -0
  280. package/dist/cli/chunks/{wrappers-5LLLT7GM.js → wrappers-DIJNNFU6.js} +2 -2
  281. package/dist/cli/commands/security.js +167 -100
  282. package/dist/cli/commands/test.js +1 -0
  283. package/dist/cli/utils/ci-output.d.ts +17 -0
  284. package/dist/cli/utils/ci-output.js +34 -2
  285. package/dist/coordination/handlers/handler-types.d.ts +3 -0
  286. package/dist/coordination/handlers/quality-handlers.js +10 -0
  287. package/dist/coordination/handlers/security-handlers.js +168 -72
  288. package/dist/coordination/handlers/test-execution-handlers.js +37 -43
  289. package/dist/coordination/protocols/security-audit.d.ts +3 -0
  290. package/dist/coordination/protocols/security-audit.js +61 -39
  291. package/dist/coordination/result-saver.js +36 -5
  292. package/dist/coordination/task-executor.d.ts +3 -1
  293. package/dist/coordination/task-executor.js +4 -0
  294. package/dist/domains/security-compliance/interfaces.d.ts +5 -0
  295. package/dist/domains/security-compliance/interfaces.js +0 -6
  296. package/dist/domains/security-compliance/scan-discovery.d.ts +12 -0
  297. package/dist/domains/security-compliance/scan-discovery.js +105 -0
  298. package/dist/domains/security-compliance/scan-evidence.d.ts +57 -0
  299. package/dist/domains/security-compliance/scan-evidence.js +2 -0
  300. package/dist/domains/security-compliance/services/scanners/sast-scanner.d.ts +3 -2
  301. package/dist/domains/security-compliance/services/scanners/sast-scanner.js +109 -65
  302. package/dist/domains/security-compliance/services/semgrep-integration.d.ts +9 -2
  303. package/dist/domains/security-compliance/services/semgrep-integration.js +68 -20
  304. package/dist/domains/test-execution/services/flaky-detector.js +14 -3
  305. package/dist/domains/test-execution/services/retry-handler.js +18 -8
  306. package/dist/domains/test-execution/services/test-executor.js +46 -12
  307. package/dist/init/init-wizard-hooks.js +2 -2
  308. package/dist/integrations/agentic-flow/reasoning-bank/index.js +3 -20
  309. package/dist/integrations/coherence/engines/cohomology-adapter.js +100 -30
  310. package/dist/mcp/bundle.js +499 -478
  311. package/dist/mcp/handlers/domain-handler-configs.d.ts +22 -1
  312. package/dist/mcp/handlers/domain-handler-configs.js +50 -19
  313. package/dist/mcp/handlers/domain-handlers.d.ts +7 -5
  314. package/dist/mcp/handlers/domain-handlers.js +7 -5
  315. package/dist/mcp/protocol-server.js +9 -5
  316. package/dist/mcp/types.d.ts +5 -0
  317. package/dist/shared/llm/router/hybrid-router.d.ts +4 -0
  318. package/dist/shared/llm/router/hybrid-router.js +74 -26
  319. package/dist/shared/llm/router/types.d.ts +9 -2
  320. package/dist/shared/test-runner-verdict.d.ts +29 -0
  321. package/dist/shared/test-runner-verdict.js +43 -0
  322. package/dist/shared/vitest-json-report.d.ts +45 -0
  323. package/dist/shared/vitest-json-report.js +71 -0
  324. package/dist/test-scheduling/executors/vitest-executor.js +18 -6
  325. package/dist/validation/frontier-judge.d.ts +7 -4
  326. package/dist/validation/frontier-judge.js +11 -6
  327. package/package.json +6 -6
  328. package/dist/cli/chunks/adapter-OJF6LAJV.js +0 -2
  329. package/dist/cli/chunks/aqe-learning-engine-FGT474XB.js +0 -2
  330. package/dist/cli/chunks/base-HH765JFV.js +0 -2
  331. package/dist/cli/chunks/browser-workflow-NPM4FUPI.js +0 -2
  332. package/dist/cli/chunks/chunk-OC2CKU7I.js +0 -2
  333. package/dist/cli/chunks/chunk-PHHXHG2W.js +0 -2
  334. package/dist/cli/chunks/chunk-U2AY57XZ.js +0 -5
  335. package/dist/cli/chunks/chunk-WBMRADQP.js +0 -81
  336. package/dist/cli/chunks/ci-output-F57RSD35.js +0 -2
  337. package/dist/cli/chunks/client-GPZEC54E.js +0 -2
  338. package/dist/cli/chunks/core-handlers-YMGHYIBR.js +0 -2
  339. package/dist/cli/chunks/cross-domain-router-ECBNTGYJ.js +0 -2
  340. package/dist/cli/chunks/dream-EHGKCFWH.js +0 -2
  341. package/dist/cli/chunks/heartbeat-scheduler-UFEL2CBW.js +0 -2
  342. package/dist/cli/chunks/hnsw-adapter-BLSD45CX.js +0 -2
  343. package/dist/cli/chunks/hnsw-index-A3RZODEN.js +0 -2
  344. package/dist/cli/chunks/impact-analyzer-OXHD3FOH.js +0 -2
  345. package/dist/cli/chunks/init-wizard-PKZL7QBU.js +0 -2
  346. package/dist/cli/chunks/kernel-XWPM72UJ.js +0 -2
  347. package/dist/cli/chunks/knowledge-graph-FRKR5XWI.js +0 -2
  348. package/dist/cli/chunks/llm-router-service-R7A5HHDM.js +0 -2
  349. package/dist/cli/chunks/load-test-5IKDWSYL.js +0 -2
  350. package/dist/cli/chunks/memory-backend-7VW5QCMO.js +0 -2
  351. package/dist/cli/chunks/memory-handlers-VZH3R2TQ.js +0 -2
  352. package/dist/cli/chunks/pattern-null-store-BU6LCB2W.js +0 -2
  353. package/dist/cli/chunks/protocol-executor-BSP5LWJN.js +0 -2
  354. package/dist/cli/chunks/qe-reasoning-bank-J2RC7P25.js +0 -2
  355. package/dist/cli/chunks/queen-coordinator-XI5AJV2V.js +0 -2
  356. package/dist/cli/chunks/router-VXQYYA3D.js +0 -2
  357. package/dist/cli/chunks/routing-feedback-HZQTASFF.js +0 -2
  358. package/dist/cli/chunks/rvf-dual-writer-BDTLLJER.js +0 -2
  359. package/dist/cli/chunks/rvf-migration-adapter-IB343MDN.js +0 -2
  360. package/dist/cli/chunks/rvf-native-adapter-Y7SN7LHU.js +0 -2
  361. package/dist/cli/chunks/safe-db-2VTKKBJU.js +0 -2
  362. package/dist/cli/chunks/schedule-QJ4CFGJY.js +0 -2
  363. package/dist/cli/chunks/scheduler-2NHDQPC3.js +0 -2
  364. package/dist/cli/chunks/security-JF3BVNRO.js +0 -14
  365. package/dist/cli/chunks/sqlite-persistence-NVVAPZN3.js +0 -2
  366. package/dist/cli/chunks/test-scheduling-GPRXSIRP.js +0 -15
  367. package/dist/cli/chunks/unified-memory-DSTIEDSH.js +0 -2
  368. package/dist/cli/chunks/unified-memory-hnsw-KBV3P4OS.js +0 -2
  369. package/dist/cli/chunks/unified-persistence-XKCOUBKY.js +0 -2
  370. package/dist/cli/chunks/visual-security-TTWSPZTZ.js +0 -2
  371. package/dist/cli/chunks/witness-chain-2KY73HPN.js +0 -2
  372. package/dist/cli/chunks/workflow-orchestrator-UK56AVOT.js +0 -2
@@ -13,6 +13,8 @@ import { toErrorMessage, toError } from '../../../shared/error-utils.js';
13
13
  import { safeJsonParse } from '../../../shared/safe-json.js';
14
14
  import { secureRandom, secureRandomInt } from '../../../shared/utils/crypto-random.js';
15
15
  import { writeQualityEvidence } from '../../quality-assessment/quality-evidence.js';
16
+ import { getTestRunnerExecutionError, TestRunnerExecutionError } from '../../../shared/test-runner-verdict.js';
17
+ import { createVitestJsonReport } from '../../../shared/vitest-json-report.js';
16
18
  const DEFAULT_CONFIG = {
17
19
  simulateForTesting: false,
18
20
  simulatedTestsPerFile: 5,
@@ -340,6 +342,9 @@ Provide:
340
342
  // Production mode: spawn actual test runner process
341
343
  const result = await this.spawnTestRunner(files, framework, timeout);
342
344
  if (result.success === false) {
345
+ // Runner/suite errors have no trustworthy assertion receipt to aggregate.
346
+ if (result.error instanceof TestRunnerExecutionError)
347
+ throw result.error;
343
348
  // Return as a failed test rather than throwing — allows other files to still run
344
349
  return {
345
350
  total: files.length,
@@ -368,12 +373,16 @@ Provide:
368
373
  return err(new Error(`Test file not found: ${missingFile}`));
369
374
  }
370
375
  // Build command based on framework
371
- const { command, args } = this.buildTestCommand(files, framework);
376
+ const { command, args, report } = this.buildTestCommand(files, framework);
372
377
  const fileLabel = files.join(', ');
373
378
  return new Promise((resolve) => {
374
379
  let stdout = '';
375
380
  let stderr = '';
376
381
  let killed = false;
382
+ const finish = (result) => {
383
+ report?.cleanup();
384
+ resolve(result);
385
+ };
377
386
  // Spawn the test runner process
378
387
  // Note: shell: false (default) to prevent command injection (CWE-78)
379
388
  // Arguments are passed as array to avoid shell interpretation
@@ -389,7 +398,7 @@ Provide:
389
398
  const timeoutId = setTimeout(() => {
390
399
  killed = true;
391
400
  proc.kill('SIGTERM');
392
- resolve(err(new Error(`Test execution timed out after ${timeout}ms for files: ${fileLabel}`)));
401
+ finish(err(new Error(`Test execution timed out after ${timeout}ms for files: ${fileLabel}`)));
393
402
  }, timeout);
394
403
  proc.stdout?.on('data', (data) => {
395
404
  stdout += data.toString();
@@ -402,8 +411,10 @@ Provide:
402
411
  if (killed) {
403
412
  return; // Already handled by timeout
404
413
  }
405
- // Parse results based on framework
406
- const parseResult = this.parseTestOutput(stdout, stderr, fileLabel, framework, code);
414
+ // Parse results based on framework. Vitest 5 writes the JSON report to
415
+ // a file instead of stdout, so read it back through the report handle.
416
+ const reportText = report ? report.read(stdout) : stdout;
417
+ const parseResult = this.parseTestOutput(reportText, stderr, fileLabel, framework, code);
407
418
  // If no coverage in stdout JSON, try reading from disk
408
419
  // (vitest/jest write coverage to coverage/coverage-summary.json)
409
420
  if (parseResult.success && !parseResult.value.coverage && ['vitest', 'jest'].includes(framework.toLowerCase())) {
@@ -415,11 +426,11 @@ Provide:
415
426
  }
416
427
  }
417
428
  }
418
- resolve(parseResult);
429
+ finish(parseResult);
419
430
  });
420
431
  proc.on('error', (error) => {
421
432
  clearTimeout(timeoutId);
422
- resolve(err(new Error(`Failed to spawn test runner: ${error.message}. Is '${command}' installed?`)));
433
+ finish(err(new Error(`Failed to spawn test runner: ${error.message}. Is '${command}' installed?`)));
423
434
  });
424
435
  });
425
436
  }
@@ -429,11 +440,16 @@ Provide:
429
440
  buildTestCommand(fileOrFiles, framework) {
430
441
  const files = Array.isArray(fileOrFiles) ? fileOrFiles : [fileOrFiles];
431
442
  switch (framework.toLowerCase()) {
432
- case 'vitest':
443
+ case 'vitest': {
444
+ // --outputFile makes Vitest 4 and 5 both write the JSON report to a
445
+ // file we own; Vitest 5 no longer prints it to stdout.
446
+ const report = createVitestJsonReport();
433
447
  return {
434
448
  command: 'npx',
435
- args: ['vitest', 'run', ...files, '--reporter=json', '--no-color'],
449
+ args: ['vitest', 'run', ...files, '--reporter=json', '--no-color', ...report.args],
450
+ report,
436
451
  };
452
+ }
437
453
  case 'jest':
438
454
  return {
439
455
  command: 'npx',
@@ -452,12 +468,15 @@ Provide:
452
468
  command: process.execPath,
453
469
  args: ['--test', ...files],
454
470
  };
455
- default:
471
+ default: {
456
472
  // Default to vitest
473
+ const report = createVitestJsonReport();
457
474
  return {
458
475
  command: 'npx',
459
- args: ['vitest', 'run', ...files, '--reporter=json', '--no-color'],
476
+ args: ['vitest', 'run', ...files, '--reporter=json', '--no-color', ...report.args],
477
+ report,
460
478
  };
479
+ }
461
480
  }
462
481
  }
463
482
  /**
@@ -555,11 +574,14 @@ Provide:
555
574
  duration: assertion.duration || 0,
556
575
  });
557
576
  }
558
- else if (assertion.status === 'skipped' || assertion.status === 'pending') {
577
+ else if (assertion.status === 'skipped' || assertion.status === 'pending' || assertion.status === 'todo') {
559
578
  skipped++;
560
579
  }
561
580
  }
562
581
  }
582
+ const executionError = getTestRunnerExecutionError('vitest', file, exitCode, { passed, failed, skipped }, stderr + '\n' + stdout, json);
583
+ if (executionError)
584
+ return err(executionError);
563
585
  const covData = this.extractCoverageFromJson(json);
564
586
  return ok({
565
587
  total: passed + failed + skipped,
@@ -606,11 +628,14 @@ Provide:
606
628
  duration: assertion.duration || 0,
607
629
  });
608
630
  }
609
- else if (assertion.status === 'skipped' || assertion.status === 'pending') {
631
+ else if (assertion.status === 'skipped' || assertion.status === 'pending' || assertion.status === 'todo') {
610
632
  skipped++;
611
633
  }
612
634
  }
613
635
  }
636
+ const executionError = getTestRunnerExecutionError('jest', file, exitCode, { passed, failed, skipped }, stderr + '\n' + stdout, json);
637
+ if (executionError)
638
+ return err(executionError);
614
639
  const covData = this.extractCoverageFromJson(json);
615
640
  return ok({
616
641
  total: passed + failed + skipped,
@@ -646,6 +671,9 @@ Provide:
646
671
  duration: failure.duration || 0,
647
672
  });
648
673
  }
674
+ const executionError = getTestRunnerExecutionError('mocha', file, exitCode, { passed, failed, skipped }, stderr + '\n' + stdout);
675
+ if (executionError)
676
+ return err(executionError);
649
677
  return ok({
650
678
  total: passed + failed + skipped,
651
679
  passed,
@@ -673,6 +701,9 @@ Provide:
673
701
  const passed = parseInt(vitestMatch[1], 10) || 0;
674
702
  const failed = parseInt(vitestMatch[2], 10) || 0;
675
703
  const skipped = parseInt(vitestMatch[3], 10) || 0;
704
+ const executionError = getTestRunnerExecutionError('Test runner', file, exitCode, { passed, failed, skipped }, combinedOutput);
705
+ if (executionError)
706
+ return err(executionError);
676
707
  return ok({
677
708
  total: passed + failed + skipped,
678
709
  passed,
@@ -688,6 +719,9 @@ Provide:
688
719
  const failed = parseInt(jestMatch[1], 10) || 0;
689
720
  const skipped = parseInt(jestMatch[2], 10) || 0;
690
721
  const passed = parseInt(jestMatch[3], 10) || 0;
722
+ const executionError = getTestRunnerExecutionError('Test runner', file, exitCode, { passed, failed, skipped }, combinedOutput);
723
+ if (executionError)
724
+ return err(executionError);
691
725
  return ok({
692
726
  total: passed + failed + skipped,
693
727
  passed,
@@ -406,9 +406,9 @@ mcp__agentic-qe__test_generate_enhanced({
406
406
  detectAntiPatterns: true
407
407
  })
408
408
 
409
- // Parallel test execution with retry
409
+ // Parallel test execution with retry (concrete paths; expand globs before calling)
410
410
  mcp__agentic-qe__test_execute_parallel({
411
- testFiles: ["tests/**/*.test.ts"],
411
+ testFiles: ["tests/auth.test.ts", "tests/session.test.ts"],
412
412
  parallelism: 4,
413
413
  retryFailures: true,
414
414
  maxRetries: 3,
@@ -155,15 +155,6 @@ export class EnhancedReasoningBankAdapter {
155
155
  ...guidance.suggestedActions.map(a => `Action: ${a}`),
156
156
  ...result.guidance,
157
157
  ];
158
- this.stats.tokensSavedEstimate += guidance.estimatedTokenSavings;
159
- this.stats.experiencesApplied++;
160
- // Record application of each source experience for reuse tracking
161
- for (const src of guidance.sourceExperiences) {
162
- this.experienceReplay.recordApplication(src.id, request.task, true, // success=true at routing time; updated later via recordOutcome
163
- Math.round(guidance.estimatedTokenSavings)).catch(err => {
164
- console.warn(`[EnhancedAdapter] Failed to record experience application: ${err}`);
165
- });
166
- }
167
158
  }
168
159
  }
169
160
  // Find similar past trajectories
@@ -265,17 +256,8 @@ export class EnhancedReasoningBankAdapter {
265
256
  if (!this.experienceReplay) {
266
257
  return null;
267
258
  }
268
- const guidance = await this.experienceReplay.getGuidance(task, domain);
269
- if (guidance) {
270
- this.stats.experiencesApplied++;
271
- // Record application for reuse tracking (experience_applications table)
272
- for (const src of guidance.sourceExperiences) {
273
- this.experienceReplay.recordApplication(src.id, task, true, Math.round(guidance.estimatedTokenSavings)).catch(err => {
274
- console.warn(`[EnhancedAdapter] Failed to record experience application: ${err}`);
275
- });
276
- }
277
- }
278
- return guidance;
259
+ // Retrieving guidance does not establish that it was applied successfully.
260
+ return this.experienceReplay.getGuidance(task, domain);
279
261
  }
280
262
  /**
281
263
  * Record that an experience was applied
@@ -290,6 +272,7 @@ export class EnhancedReasoningBankAdapter {
290
272
  if (!this.experienceReplay)
291
273
  return;
292
274
  await this.experienceReplay.recordApplication(experienceId, task, success, tokensSaved);
275
+ this.stats.experiencesApplied++;
293
276
  this.stats.tokensSavedEstimate += tokensSaved;
294
277
  }
295
278
  // ============================================================================
@@ -19,6 +19,10 @@ import { WasmNotLoadedError, DEFAULT_COHERENCE_LOGGER } from '../types.js';
19
19
  // ============================================================================
20
20
  // WASM Engine Wrapper
21
21
  // ============================================================================
22
+ // Dense restriction maps are copied into WASM. Bound each native call to
23
+ // 32 MiB of matrix cells and 256 MiB of cumulative cells per operation.
24
+ const MAX_NATIVE_BATCH_CELLS = 4 * 1024 * 1024;
25
+ const MAX_NATIVE_TOTAL_CELLS = 32 * 1024 * 1024;
22
26
  /**
23
27
  * Creates an ICohomologyEngine wrapper around the raw WASM engine
24
28
  * Translates from snake_case adapter interface to camelCase WASM API
@@ -53,19 +57,78 @@ function createCohomologyEngineWrapper(rawEngine) {
53
57
  // WASM sheaf cohomology expects:
54
58
  // { nodes: [{id: number, label: string, section: number[], weight: number}], edges: [...] }
55
59
  // "section" is the sheaf theory term for local data at each stalk
56
- const buildGraph = () => ({
57
- nodes: Array.from(nodes.entries()).map(([id, data]) => ({
58
- id: getOrCreateIndex(id), // Convert string ID to numeric index
59
- label: id, // Original string ID as label
60
- section: Array.from(data.embedding), // Sheaf section = the embedding data
61
- weight: 1.0, // Node weight (importance) - default to 1.0
62
- })),
63
- edges: edges.map(e => ({
64
- source: getOrCreateIndex(e.source), // Convert to numeric
65
- target: getOrCreateIndex(e.target), // Convert to numeric
66
- weight: e.weight,
67
- })),
68
- });
60
+ function* buildGraphs() {
61
+ // Native edge endpoints address the current nodes array by position, not
62
+ // node.id. Rebuild indices after removals or edges added before nodes.
63
+ stringToIndex.clear();
64
+ indexToString.clear();
65
+ nextIndex = 0;
66
+ const dimension = nodes.values().next().value?.embedding.length;
67
+ const graphNodes = Array.from(nodes.entries()).map(([id, data]) => {
68
+ if (data.embedding.length !== dimension) {
69
+ throw new RangeError('Cohomology graphs require matching embedding dimensions');
70
+ }
71
+ return {
72
+ id: getOrCreateIndex(id),
73
+ label: id,
74
+ section: Array.from(data.embedding),
75
+ weight: 1.0,
76
+ };
77
+ });
78
+ // Validate the complete operation before allocating any dense matrices or
79
+ // calling WASM. A rejected graph must never yield partial energy/results.
80
+ let totalCells = 0;
81
+ const preparedEdges = edges.map(edge => {
82
+ const source = nodes.get(edge.source);
83
+ const target = nodes.get(edge.target);
84
+ if (!source || !target) {
85
+ throw new Error(`Cohomology edge references an unknown node: ${edge.source} -> ${edge.target}`);
86
+ }
87
+ const dimension = source.embedding.length;
88
+ const cells = dimension * dimension;
89
+ if (cells > MAX_NATIVE_BATCH_CELLS) {
90
+ throw new RangeError(`Cohomology restriction map exceeds ${MAX_NATIVE_BATCH_CELLS} cells`);
91
+ }
92
+ totalCells += cells;
93
+ if (totalCells > MAX_NATIVE_TOTAL_CELLS) {
94
+ throw new RangeError(`Cohomology graph exceeds ${MAX_NATIVE_TOTAL_CELLS} restriction-map cells`);
95
+ }
96
+ return { ...edge, dimension, cells };
97
+ });
98
+ let batch = [];
99
+ let batchCells = 0;
100
+ const restrictionMaps = new Map();
101
+ for (const edge of preparedEdges) {
102
+ if (batchCells + edge.cells > MAX_NATIVE_BATCH_CELLS) {
103
+ yield { nodes: graphNodes, edges: batch };
104
+ batch = [];
105
+ batchCells = 0;
106
+ restrictionMaps.clear();
107
+ }
108
+ let restrictionMap = restrictionMaps.get(edge.dimension);
109
+ if (!restrictionMap) {
110
+ // Sections share embedding coordinates; use a row-major identity map.
111
+ // Sharing the read-only JS matrix avoids per-edge JS allocations.
112
+ restrictionMap = Array(edge.cells).fill(0);
113
+ for (let i = 0; i < edge.dimension; i++) {
114
+ restrictionMap[i * edge.dimension + i] = 1;
115
+ }
116
+ restrictionMaps.set(edge.dimension, restrictionMap);
117
+ }
118
+ batch.push({
119
+ source: stringToIndex.get(edge.source),
120
+ target: stringToIndex.get(edge.target),
121
+ weight: edge.weight,
122
+ restriction_map: restrictionMap,
123
+ source_dim: edge.dimension,
124
+ target_dim: edge.dimension,
125
+ });
126
+ batchCells += edge.cells;
127
+ }
128
+ if (batch.length > 0 || preparedEdges.length === 0) {
129
+ yield { nodes: graphNodes, edges: batch };
130
+ }
131
+ }
69
132
  return {
70
133
  add_node(id, embedding) {
71
134
  nodes.set(id, { embedding });
@@ -79,8 +142,7 @@ function createCohomologyEngineWrapper(rawEngine) {
79
142
  },
80
143
  remove_node(id) {
81
144
  nodes.delete(id);
82
- // Note: We don't remove from index mappings to maintain consistency
83
- // (indices are reused to avoid graph corruption)
145
+ // Native indices are rebuilt from current node order on serialization.
84
146
  // Remove associated edges
85
147
  for (let i = edges.length - 1; i >= 0; i--) {
86
148
  if (edges[i].source === id || edges[i].target === id) {
@@ -94,22 +156,30 @@ function createCohomologyEngineWrapper(rawEngine) {
94
156
  edges.splice(idx, 1);
95
157
  },
96
158
  sheaf_laplacian_energy() {
97
- const graph = buildGraph();
98
- return rawEngine.consistencyEnergy(graph);
159
+ // Native consistency energy is the sum of independent edge energies.
160
+ let energy = 0;
161
+ for (const graph of buildGraphs()) {
162
+ energy += rawEngine.consistencyEnergy(graph);
163
+ }
164
+ return energy;
99
165
  },
100
166
  detect_contradictions(threshold) {
101
- const graph = buildGraph();
102
- const obstructions = rawEngine.detectObstructions(graph);
103
- if (!obstructions)
104
- return [];
105
- return obstructions
106
- .filter(o => o.energy > threshold)
107
- .map(o => ({
108
- node1: getStringId(o.node1), // Convert back to string ID
109
- node2: getStringId(o.node2), // Convert back to string ID
110
- severity: o.energy,
111
- distance: o.energy,
112
- }));
167
+ const contradictions = [];
168
+ for (const graph of buildGraphs()) {
169
+ const obstructions = rawEngine.detectObstructions(graph);
170
+ for (const obstruction of obstructions ?? []) {
171
+ if (obstruction.magnitude > threshold) {
172
+ contradictions.push({
173
+ node1: getStringId(obstruction.source_node),
174
+ node2: getStringId(obstruction.target_node),
175
+ severity: obstruction.magnitude,
176
+ distance: obstruction.magnitude,
177
+ });
178
+ }
179
+ }
180
+ }
181
+ // Preserve the native global descending-magnitude order across batches.
182
+ return contradictions.sort((a, b) => b.distance - a.distance);
113
183
  },
114
184
  clear() {
115
185
  nodes.clear();
@@ -297,7 +367,7 @@ export class CohomologyAdapter {
297
367
  nodeIds: [raw.node1, raw.node2],
298
368
  severity: this.severityFromDistance(raw.severity),
299
369
  description: this.generateContradictionDescription(raw),
300
- confidence: 1 - raw.distance, // Higher distance = lower confidence it's a true contradiction
370
+ confidence: Math.max(0, 1 - raw.distance), // Native magnitudes can exceed one
301
371
  resolution: this.suggestResolution(raw),
302
372
  };
303
373
  }