agentic-qe 3.15.8 → 3.15.10

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 (642) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +434 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/adapters/a2ui/catalog/component-schemas.js +2 -1
  5. package/dist/adapters/a2ui/data/json-pointer-resolver.js +10 -5
  6. package/dist/adapters/a2ui/integration/agui-sync.js +10 -6
  7. package/dist/adapters/a2ui/integration/surface-state-bridge.js +9 -5
  8. package/dist/adapters/ag-ui/json-patch.js +10 -6
  9. package/dist/agents/claim-verifier/claim-verifier-service.js +13 -8
  10. package/dist/audit/witness-chain.d.ts +1 -1
  11. package/dist/bridge/captured-experience-bridge.js +12 -13
  12. package/dist/cli/bundle.js +6 -6
  13. package/dist/cli/chunks/adapter-TR5SLAZC.js +2 -0
  14. package/dist/cli/chunks/agent-booster-wasm-H7ANGXW4.js +2 -0
  15. package/dist/cli/chunks/{agent-handler-2NQFHAWE.js → agent-handler-SVXSHEET.js} +2 -2
  16. package/dist/cli/chunks/{agent-memory-branch-457ECHHK.js → agent-memory-branch-WKQH36XL.js} +2 -2
  17. package/dist/cli/chunks/aqe-learning-engine-DXWKCHY2.js +2 -0
  18. package/dist/cli/chunks/{arena-JV3WSEHU.js → arena-EKOOFVST.js} +2 -2
  19. package/dist/cli/chunks/{arena-IYBQ3GPY.js → arena-OPS36NFZ.js} +4 -4
  20. package/dist/cli/chunks/{audit-5OS3T3K6.js → audit-AO5NDZRI.js} +3 -3
  21. package/dist/cli/chunks/base-GTB6POYE.js +2 -0
  22. package/dist/cli/chunks/{better-sqlite3-IQKBFVAO.js → better-sqlite3-TFLVEMMY.js} +2 -2
  23. package/dist/cli/chunks/{brain-handler-KA3SGAFM.js → brain-handler-ADBBJPYW.js} +3 -3
  24. package/dist/cli/chunks/{branch-enumerator-QZDU2VOQ.js → branch-enumerator-HGHUYYL5.js} +2 -2
  25. package/dist/cli/chunks/browser-5LU6P4SZ.js +4 -0
  26. package/dist/cli/chunks/browser-workflow-MSBOLYUY.js +2 -0
  27. package/dist/cli/chunks/{chunk-CRUQ6RXU.js → chunk-2SXBBUM6.js} +2 -2
  28. package/dist/cli/chunks/{chunk-4GUVVGJX.js → chunk-2T7RRL6G.js} +1 -1
  29. package/dist/cli/chunks/{chunk-OJWEZYLR.js → chunk-2XGVTYVX.js} +2 -2
  30. package/dist/cli/chunks/{chunk-LVHZK7GW.js → chunk-2ZI5FKSF.js} +2 -2
  31. package/dist/cli/chunks/chunk-2ZMF4NCF.js +4 -0
  32. package/dist/cli/chunks/{chunk-62T7U25U.js → chunk-37OWRCUN.js} +1 -1
  33. package/dist/cli/chunks/{chunk-UQLAN5TX.js → chunk-3P34JFQH.js} +5 -5
  34. package/dist/cli/chunks/{chunk-UDCYQLTD.js → chunk-3Y7SPD72.js} +2 -2
  35. package/dist/cli/chunks/{chunk-PPIM7B5G.js → chunk-4G63WT4F.js} +2 -2
  36. package/dist/cli/chunks/chunk-4SJYIX54.js +3 -0
  37. package/dist/cli/chunks/chunk-5E6GHSTY.js +3 -0
  38. package/dist/cli/chunks/{chunk-4TZLZRZ4.js → chunk-5LPYV3TK.js} +1 -1
  39. package/dist/cli/chunks/{chunk-YUP3APSN.js → chunk-62OAY5KJ.js} +1 -1
  40. package/dist/cli/chunks/{chunk-VQRBBR27.js → chunk-6C3II5OM.js} +2 -2
  41. package/dist/cli/chunks/{chunk-RG42LDOB.js → chunk-6GP6W46M.js} +2 -2
  42. package/dist/cli/chunks/{chunk-KMZW2P3R.js → chunk-6KIL6CMD.js} +2 -2
  43. package/dist/cli/chunks/{chunk-UKKFZJME.js → chunk-6MVVSSID.js} +1 -1
  44. package/dist/cli/chunks/{chunk-VVK4ECVJ.js → chunk-6P7424AO.js} +2 -2
  45. package/dist/cli/chunks/{chunk-A2UGPKCS.js → chunk-6PX4OXQO.js} +2 -2
  46. package/dist/cli/chunks/{chunk-JLTGO5BB.js → chunk-6S3WJGUV.js} +2 -2
  47. package/dist/cli/chunks/{chunk-GSOK4M6V.js → chunk-6TB6YOCZ.js} +1 -1
  48. package/dist/cli/chunks/{chunk-VWRNG3UK.js → chunk-6X5DHU6Q.js} +1 -1
  49. package/dist/cli/chunks/{chunk-5YOO5QSE.js → chunk-6XCMKIZN.js} +1 -1
  50. package/dist/cli/chunks/{chunk-4C3RYBTT.js → chunk-7LFZ4CHM.js} +2 -2
  51. package/dist/cli/chunks/{chunk-O4RRVTXN.js → chunk-7OZVZIBE.js} +2 -2
  52. package/dist/cli/chunks/{chunk-2JCLACCS.js → chunk-7PJIR4ST.js} +2 -2
  53. package/dist/cli/chunks/{chunk-NWFBF3KT.js → chunk-7TB6FK4B.js} +1 -1
  54. package/dist/cli/chunks/{chunk-FJAO4UX2.js → chunk-7ZCDZHDB.js} +2 -2
  55. package/dist/cli/chunks/chunk-A55QKKT2.js +2 -0
  56. package/dist/cli/chunks/{chunk-ZOVAZTXE.js → chunk-ABFFWZPC.js} +273 -278
  57. package/dist/cli/chunks/{chunk-FWXNFPLS.js → chunk-ACWFKES2.js} +2 -2
  58. package/dist/cli/chunks/{chunk-IJSFZO7P.js → chunk-AH3ZD3NJ.js} +2 -2
  59. package/dist/cli/chunks/{chunk-7SLEUVPZ.js → chunk-AI4VYSFS.js} +2 -2
  60. package/dist/cli/chunks/chunk-APSRPR4W.js +2 -0
  61. package/dist/cli/chunks/chunk-ATHWDAXB.js +3 -0
  62. package/dist/cli/chunks/{chunk-2GSAAUW3.js → chunk-B6LTH6YV.js} +2 -2
  63. package/dist/cli/chunks/chunk-BQUAE3CP.js +3 -0
  64. package/dist/cli/chunks/{chunk-7XGM7Q2N.js → chunk-C522H7XR.js} +54 -33
  65. package/dist/cli/chunks/{chunk-7DHSHD5B.js → chunk-CESIR27V.js} +2 -2
  66. package/dist/cli/chunks/{chunk-V7VZSNDK.js → chunk-CFBEBXLO.js} +3 -3
  67. package/dist/cli/chunks/{chunk-NZATJ2C6.js → chunk-CMBLM26R.js} +2 -2
  68. package/dist/cli/chunks/{chunk-7CVMT64N.js → chunk-CZ2IF6MC.js} +1 -1
  69. package/dist/cli/chunks/{chunk-YVWMJZ6O.js → chunk-CZGOSJQ4.js} +2 -2
  70. package/dist/cli/chunks/{chunk-TMNEK7TP.js → chunk-D6DA2KFD.js} +2 -2
  71. package/dist/cli/chunks/{chunk-UTNKMPTC.js → chunk-DBMNJSBV.js} +1 -1
  72. package/dist/cli/chunks/{chunk-JFWQFB3S.js → chunk-DE4YJQJF.js} +2 -2
  73. package/dist/cli/chunks/{chunk-767SR7WH.js → chunk-DEF34AFL.js} +2 -2
  74. package/dist/cli/chunks/{chunk-ZWMFKZEQ.js → chunk-DKAC3E3B.js} +2 -2
  75. package/dist/cli/chunks/{chunk-CDLG3Q2O.js → chunk-DMFTELBS.js} +2 -2
  76. package/dist/cli/chunks/{chunk-P4UT4LBE.js → chunk-DNRWGATA.js} +10 -10
  77. package/dist/cli/chunks/{chunk-PUYQ6EKC.js → chunk-DT7SIJOA.js} +2 -2
  78. package/dist/cli/chunks/{chunk-ST7ASEJO.js → chunk-DURHK377.js} +69 -69
  79. package/dist/cli/chunks/{chunk-V4QJ3MMT.js → chunk-EAU5KDFO.js} +1 -1
  80. package/dist/cli/chunks/{chunk-BLZEOGQE.js → chunk-EDLFX4ZB.js} +2 -2
  81. package/dist/cli/chunks/{chunk-ZBI7PJFX.js → chunk-EN2QSKFF.js} +2 -2
  82. package/dist/cli/chunks/{chunk-U7CIY3YR.js → chunk-ERQKYIP7.js} +2 -2
  83. package/dist/cli/chunks/{chunk-X7ZQIFES.js → chunk-ESUO3GTJ.js} +2 -2
  84. package/dist/cli/chunks/{chunk-SHEVM5PF.js → chunk-EWFECZ2U.js} +2 -2
  85. package/dist/cli/chunks/{chunk-JWPYMRIX.js → chunk-FAUCT5KR.js} +3 -3
  86. package/dist/cli/chunks/{chunk-KMVFBYJO.js → chunk-FB6TI3BH.js} +2 -2
  87. package/dist/cli/chunks/{chunk-22DOS3PM.js → chunk-FBXTQNRH.js} +2 -2
  88. package/dist/cli/chunks/{chunk-W5A36V3Z.js → chunk-FESZBPUB.js} +2 -2
  89. package/dist/cli/chunks/chunk-FFTPAWM6.js +141 -0
  90. package/dist/cli/chunks/{chunk-VWSGWYRB.js → chunk-FKL3R5JQ.js} +2 -2
  91. package/dist/cli/chunks/{chunk-2DPHFCMW.js → chunk-FPUDRSFJ.js} +2 -2
  92. package/dist/cli/chunks/{chunk-VKFVJCIH.js → chunk-FZOWULMH.js} +1 -1
  93. package/dist/cli/chunks/{chunk-HXCGV5UJ.js → chunk-G3CZCUPM.js} +2 -2
  94. package/dist/cli/chunks/{chunk-GENNJRNK.js → chunk-G5I6KGMW.js} +22 -22
  95. package/dist/cli/chunks/{chunk-J7FLNP5L.js → chunk-GHBNRMSJ.js} +2 -2
  96. package/dist/cli/chunks/{chunk-I77D65X5.js → chunk-GJHWY3ZX.js} +2 -2
  97. package/dist/cli/chunks/{chunk-DKFSCJEF.js → chunk-GJMLK5UT.js} +2 -2
  98. package/dist/cli/chunks/{chunk-52YRSWPS.js → chunk-GRCIBCJ2.js} +2 -2
  99. package/dist/cli/chunks/{chunk-NW7HTOSN.js → chunk-GWZZ7DAO.js} +2 -2
  100. package/dist/cli/chunks/{chunk-D4IBIMWI.js → chunk-GZLZCZ42.js} +2 -2
  101. package/dist/cli/chunks/{chunk-FEN2DHFM.js → chunk-H2PYU7MN.js} +1 -1
  102. package/dist/cli/chunks/{chunk-4I35ARWW.js → chunk-H32EPIR2.js} +1 -1
  103. package/dist/cli/chunks/{chunk-MUDBF2JC.js → chunk-H74Q7TJN.js} +1 -1
  104. package/dist/cli/chunks/chunk-HOZUDE4C.js +2 -0
  105. package/dist/cli/chunks/{chunk-MMY52Y6R.js → chunk-I33O4BRQ.js} +2 -2
  106. package/dist/cli/chunks/{chunk-ZG7UKWBB.js → chunk-IKISCIGH.js} +2 -2
  107. package/dist/cli/chunks/{chunk-SFPGLUXS.js → chunk-IPJ7Q3AJ.js} +1 -1
  108. package/dist/cli/chunks/{chunk-2ZRNXEVI.js → chunk-IU2IV4NE.js} +1 -1
  109. package/dist/cli/chunks/{chunk-XOOBLZXR.js → chunk-JHIY4VCC.js} +2 -2
  110. package/dist/cli/chunks/{chunk-PJGQ2TKN.js → chunk-KG336OV3.js} +2 -2
  111. package/dist/cli/chunks/{chunk-YRH7KMTU.js → chunk-KI73QCR5.js} +2 -2
  112. package/dist/cli/chunks/{chunk-FAYXES7R.js → chunk-KNQ2ERFX.js} +2 -2
  113. package/dist/cli/chunks/{chunk-CQ3SBRDP.js → chunk-KOBVYY6H.js} +2 -2
  114. package/dist/cli/chunks/{chunk-3N627QRU.js → chunk-KSIWGGJI.js} +8 -8
  115. package/dist/cli/chunks/{chunk-2UN4JOTN.js → chunk-LMS3Y7JD.js} +2 -2
  116. package/dist/cli/chunks/{chunk-RSMPJWQH.js → chunk-LQEURY7C.js} +1 -1
  117. package/dist/cli/chunks/{chunk-NQDYOF35.js → chunk-LRZY4KS2.js} +2 -2
  118. package/dist/cli/chunks/{chunk-U3BWBP6B.js → chunk-M2QV7PT7.js} +2 -2
  119. package/dist/cli/chunks/{chunk-WLXGUQOZ.js → chunk-MA7JIQ6U.js} +2 -2
  120. package/dist/cli/chunks/{chunk-Y5ZBF7MA.js → chunk-MG27QY4D.js} +2 -2
  121. package/dist/cli/chunks/chunk-MNN5J4GU.js +12 -0
  122. package/dist/cli/chunks/chunk-N6PIIK6G.js +3 -0
  123. package/dist/cli/chunks/chunk-NAXGWDVM.js +12 -0
  124. package/dist/cli/chunks/{chunk-DCYUHCPK.js → chunk-NGKNYIQZ.js} +1 -1
  125. package/dist/cli/chunks/chunk-NNFZUTDH.js +2 -0
  126. package/dist/cli/chunks/{chunk-UTFMMZ57.js → chunk-NPPHWFA2.js} +3 -3
  127. package/dist/cli/chunks/chunk-NSHU347M.js +2 -0
  128. package/dist/cli/chunks/{chunk-NF63NHJH.js → chunk-NVYIZCSR.js} +2 -2
  129. package/dist/cli/chunks/{chunk-YNQPHRUZ.js → chunk-NW5JUCCG.js} +1 -1
  130. package/dist/cli/chunks/{chunk-G6CLO74Q.js → chunk-NZYLNXT6.js} +3 -3
  131. package/dist/cli/chunks/{chunk-R2NHGESM.js → chunk-OBAREPDC.js} +2 -2
  132. package/dist/cli/chunks/{chunk-X3HM7SV4.js → chunk-ODJNUMV3.js} +2 -2
  133. package/dist/cli/chunks/{chunk-OCLAMZJG.js → chunk-OEKP73MC.js} +2 -2
  134. package/dist/cli/chunks/{chunk-5MBNRTT5.js → chunk-OPFGRS5S.js} +2 -2
  135. package/dist/cli/chunks/{chunk-K5R3WUJP.js → chunk-OY2AHLSF.js} +1 -1
  136. package/dist/cli/chunks/{chunk-KJNUETCB.js → chunk-OY3NJNP2.js} +1 -1
  137. package/dist/cli/chunks/{chunk-P2EA62YS.js → chunk-PCEW6Q2C.js} +1 -1
  138. package/dist/cli/chunks/{chunk-HNGNRIZZ.js → chunk-PFG6VQ5Z.js} +2 -2
  139. package/dist/cli/chunks/{chunk-DN3AKAPY.js → chunk-PGYMKGOE.js} +2 -2
  140. package/dist/cli/chunks/{chunk-BEVWCF3Q.js → chunk-PPSAMXYN.js} +3 -3
  141. package/dist/cli/chunks/chunk-RK73HB2F.js +2 -0
  142. package/dist/cli/chunks/{chunk-6E7EOHMN.js → chunk-RPHY2DU6.js} +2 -2
  143. package/dist/cli/chunks/{chunk-7C6FMLQR.js → chunk-RWWOHCMG.js} +25 -20
  144. package/dist/cli/chunks/{chunk-5ONJ7AV6.js → chunk-S75EYIJG.js} +1 -1
  145. package/dist/cli/chunks/chunk-SKQUUE4F.js +5 -0
  146. package/dist/cli/chunks/chunk-SO45NA4D.js +180 -0
  147. package/dist/cli/chunks/{chunk-SWY6KGMF.js → chunk-SU5H66SD.js} +2 -2
  148. package/dist/cli/chunks/{chunk-ZOHS32SI.js → chunk-SY2IB442.js} +2 -2
  149. package/dist/cli/chunks/{chunk-MV4S3TEC.js → chunk-TBLI254A.js} +2 -2
  150. package/dist/cli/chunks/{chunk-5DZDLOY6.js → chunk-TNMBRDCA.js} +3 -3
  151. package/dist/cli/chunks/{chunk-FEPFXXI7.js → chunk-TYFZXDGZ.js} +2 -2
  152. package/dist/cli/chunks/{chunk-A6GCO6ZU.js → chunk-U4OICXV2.js} +2 -2
  153. package/dist/cli/chunks/{chunk-G77Q22EN.js → chunk-U53ZB4IX.js} +2 -2
  154. package/dist/cli/chunks/chunk-UARKIZAS.js +2 -0
  155. package/dist/cli/chunks/{chunk-6GIC2263.js → chunk-UCJMVXO4.js} +2 -2
  156. package/dist/cli/chunks/{chunk-DAFMHM64.js → chunk-UHTTW3IT.js} +2 -2
  157. package/dist/cli/chunks/{chunk-2QRGIEQV.js → chunk-V2M2XCR5.js} +1 -1
  158. package/dist/cli/chunks/{chunk-XZQVC3GD.js → chunk-V2RSNVMW.js} +1 -1
  159. package/dist/cli/chunks/{chunk-GGSTLKY5.js → chunk-V6JBOIMX.js} +1 -1
  160. package/dist/cli/chunks/{chunk-BTMEOZYY.js → chunk-VFKF2XO7.js} +1 -1
  161. package/dist/cli/chunks/{chunk-4C7KE2EL.js → chunk-VFSYMOAL.js} +2 -2
  162. package/dist/cli/chunks/{chunk-D4O3TJI7.js → chunk-VJQYDYAJ.js} +2 -2
  163. package/dist/cli/chunks/{chunk-PZ7FJ4UG.js → chunk-VKRTTFB6.js} +2 -2
  164. package/dist/cli/chunks/{chunk-CQ5G64EA.js → chunk-VWNFAW2M.js} +2 -2
  165. package/dist/cli/chunks/{chunk-DY37YMMQ.js → chunk-WBM6N6IM.js} +1 -1
  166. package/dist/cli/chunks/{chunk-K4N2MBCE.js → chunk-WDQ7IEZY.js} +2 -2
  167. package/dist/cli/chunks/{chunk-HI6OBDDY.js → chunk-WDVRE6GN.js} +2 -2
  168. package/dist/cli/chunks/{chunk-PICEGWGB.js → chunk-WQ4PYWSW.js} +1 -1
  169. package/dist/cli/chunks/{chunk-NHOMVBCI.js → chunk-WSF24I3D.js} +2 -2
  170. package/dist/cli/chunks/{chunk-LPSMVBB3.js → chunk-XBVUVFJK.js} +2 -2
  171. package/dist/cli/chunks/{chunk-J6LL25QJ.js → chunk-XEB3NLJR.js} +2 -2
  172. package/dist/cli/chunks/{chunk-SJMZZMHP.js → chunk-XFVTGAAJ.js} +2 -2
  173. package/dist/cli/chunks/{chunk-KVMKYUOE.js → chunk-XLZYRTNO.js} +2 -2
  174. package/dist/cli/chunks/chunk-XUZDBQ5X.js +6 -0
  175. package/dist/cli/chunks/{chunk-WAWKAYPY.js → chunk-Y76IAYQD.js} +1 -1
  176. package/dist/cli/chunks/{chunk-3LFLO2WK.js → chunk-YAKGBHO4.js} +2 -2
  177. package/dist/cli/chunks/{chunk-TC52M542.js → chunk-YBSBABOS.js} +2 -2
  178. package/dist/cli/chunks/{chunk-BQUIZ5QT.js → chunk-YCGP5VFP.js} +2 -2
  179. package/dist/cli/chunks/{chunk-T2TDTBFV.js → chunk-YDAQK5UF.js} +1 -1
  180. package/dist/cli/chunks/{chunk-LHRVSK44.js → chunk-YK3BVZY6.js} +2 -2
  181. package/dist/cli/chunks/{chunk-QFYUZYRA.js → chunk-YK7JN5N7.js} +4 -4
  182. package/dist/cli/chunks/{chunk-IMSRWNWF.js → chunk-YKMU4LBV.js} +1 -1
  183. package/dist/cli/chunks/{chunk-NLYUC63R.js → chunk-YYTGXD3R.js} +2 -2
  184. package/dist/cli/chunks/{chunk-OWBFVAEH.js → chunk-Z2O2YJAF.js} +2 -2
  185. package/dist/cli/chunks/{chunk-KITKQUBX.js → chunk-Z7IYW5U7.js} +1 -1
  186. package/dist/cli/chunks/{chunk-4NTLGGXO.js → chunk-ZG5666GJ.js} +1 -1
  187. package/dist/cli/chunks/{chunk-4YUBWU3E.js → chunk-ZXPY654C.js} +1 -1
  188. package/dist/cli/chunks/{ci-7NUCRGWO.js → ci-MSKMVH5X.js} +2 -2
  189. package/dist/cli/chunks/{ci-config-VQVECCFI.js → ci-config-7ODMNAUM.js} +2 -2
  190. package/dist/cli/chunks/{ci-output-P7GQ6TKF.js → ci-output-FXZ7ZZW3.js} +2 -2
  191. package/dist/cli/chunks/{circuit-breaker-5YP6N6HE.js → circuit-breaker-4VOUEPOX.js} +2 -2
  192. package/dist/cli/chunks/{claude-flow-setup-W5H7CMU6.js → claude-flow-setup-7D4SGLM4.js} +2 -2
  193. package/dist/cli/chunks/client-POSVREVS.js +2 -0
  194. package/dist/cli/chunks/{cline-installer-OYANSZ54.js → cline-installer-WRRT7BGQ.js} +2 -2
  195. package/dist/cli/chunks/{code-OMT4UEZI.js → code-ZDJRIL3S.js} +25 -24
  196. package/dist/cli/chunks/{code-index-extractor-M2JEWKNF.js → code-index-extractor-4S4SHM56.js} +2 -2
  197. package/dist/cli/chunks/{codex-installer-YBS6N5O3.js → codex-installer-YTRHNDWR.js} +2 -2
  198. package/dist/cli/chunks/{completions-U7GS5RG6.js → completions-6N64JUXJ.js} +2 -2
  199. package/dist/cli/chunks/{complexity-analyzer-QSXPIUIU.js → complexity-analyzer-I4A26VCJ.js} +2 -2
  200. package/dist/cli/chunks/{continuedev-installer-W5TTT743.js → continuedev-installer-IIDR66LB.js} +2 -2
  201. package/dist/cli/chunks/{copilot-installer-KC2RT24C.js → copilot-installer-SVVFY3S2.js} +2 -2
  202. package/dist/cli/chunks/core-handlers-V243GY7X.js +2 -0
  203. package/dist/cli/chunks/{cost-tracker-OQPVR6V4.js → cost-tracker-VGFS6IBX.js} +2 -2
  204. package/dist/cli/chunks/{coverage-TCO2A2NX.js → coverage-B7MCGNTE.js} +3 -3
  205. package/dist/cli/chunks/cross-domain-router-N3AIEM3B.js +2 -0
  206. package/dist/cli/chunks/{cursor-installer-MH7GWD4L.js → cursor-installer-UPETT57E.js} +2 -2
  207. package/dist/cli/chunks/daemon-7BDJHEIJ.js +18 -0
  208. package/dist/cli/chunks/{daemon-UJEARJZ2.js → daemon-CQFNZLXU.js} +7 -7
  209. package/dist/cli/chunks/{dag-attention-scheduler-F3SUJU5O.js → dag-attention-scheduler-PJVABHON.js} +2 -2
  210. package/dist/cli/chunks/{detect-5QTCRB32.js → detect-56SKAGWX.js} +2 -2
  211. package/dist/cli/chunks/{dist-node-XKZPHDBO.js → dist-node-UYTYUMLN.js} +2 -2
  212. package/dist/cli/chunks/{domain-handler-V3UEADKW.js → domain-handler-YOYLBYJE.js} +2 -2
  213. package/dist/cli/chunks/{domain-plugins-7PES4UHZ.js → domain-plugins-7TARX2XF.js} +2 -2
  214. package/dist/cli/chunks/domain-transfer-AKVSBD6E.js +2 -0
  215. package/dist/cli/chunks/dream-UA7MKOPQ.js +2 -0
  216. package/dist/cli/chunks/{embed-and-insert-pattern-D2HWORHF.js → embed-and-insert-pattern-IS6HSR66.js} +2 -2
  217. package/dist/cli/chunks/{eval-UF2UBAUC.js → eval-GNB574IM.js} +2 -2
  218. package/dist/cli/chunks/{experience-capture-middleware-2OUCEHHM.js → experience-capture-middleware-RCAOCKM7.js} +3 -3
  219. package/dist/cli/chunks/{fast-paths-KV5DKKHC.js → fast-paths-KTZ5SF54.js} +2 -2
  220. package/dist/cli/chunks/{feature-flags-MTW6NMR3.js → feature-flags-ITX5LQ57.js} +2 -2
  221. package/dist/cli/chunks/{feature-flags-6YWMTNO5.js → feature-flags-KFHSR5YF.js} +2 -2
  222. package/dist/cli/chunks/file-discovery-YCMNKZAK.js +2 -0
  223. package/dist/cli/chunks/fleet-2Y3ZE6CE.js +46 -0
  224. package/dist/cli/chunks/{gnn-wrapper-52V6ANOY.js → gnn-wrapper-RLFW3GSX.js} +2 -2
  225. package/dist/cli/chunks/{heartbeat-handler-X7NHNRC7.js → heartbeat-handler-EM2URCYZ.js} +4 -4
  226. package/dist/cli/chunks/heartbeat-scheduler-QH5V6G2P.js +2 -0
  227. package/dist/cli/chunks/hnsw-adapter-OJNFAGJS.js +2 -0
  228. package/dist/cli/chunks/hnsw-index-DFUNARVD.js +2 -0
  229. package/dist/cli/chunks/{hnsw-legacy-bridge-DZBE3KMK.js → hnsw-legacy-bridge-JMHEOIBH.js} +2 -2
  230. package/dist/cli/chunks/{hnswlib-node-2AWWUJAZ.js → hnswlib-node-CBP73QHY.js} +2 -2
  231. package/dist/cli/chunks/{hooks-XLPVROL3.js → hooks-IP7XE34Z.js} +34 -34
  232. package/dist/cli/chunks/hybrid-backend-SSGQQEQ2.js +2 -0
  233. package/dist/cli/chunks/{hypergraph-engine-6TI7YP6P.js → hypergraph-engine-ONAYHU25.js} +2 -2
  234. package/dist/cli/chunks/{hypergraph-handler-DBIBBOXS.js → hypergraph-handler-VINJRAID.js} +3 -3
  235. package/dist/cli/chunks/impact-analyzer-CRGCA7ZD.js +2 -0
  236. package/dist/cli/chunks/{init-guard-OSO6MIDD.js → init-guard-RYVV5R3Z.js} +2 -2
  237. package/dist/cli/chunks/{init-handler-7S7IHMUF.js → init-handler-MPRGWMOE.js} +6 -6
  238. package/dist/cli/chunks/init-wizard-NIMZ4J55.js +2 -0
  239. package/dist/cli/chunks/kernel-JQK7PRAI.js +2 -0
  240. package/dist/cli/chunks/{kilocode-installer-2KBRFXMA.js → kilocode-installer-OPD7JBRL.js} +2 -2
  241. package/dist/cli/chunks/{kiro-installer-5VFR4OQZ.js → kiro-installer-M4OPUNK2.js} +2 -2
  242. package/dist/cli/chunks/knowledge-graph-YPVVIKEU.js +2 -0
  243. package/dist/cli/chunks/{learning-G5NHL3DV.js → learning-4UWTQLMF.js} +24 -24
  244. package/dist/cli/chunks/{llm-router-4EAPPMHS.js → llm-router-SQ56FF6Z.js} +4 -4
  245. package/dist/cli/chunks/llm-router-service-5OGAUOXF.js +2 -0
  246. package/dist/cli/chunks/{load-UYMZPEY6.js → load-HPHKDGGL.js} +2 -2
  247. package/dist/cli/chunks/load-test-UKNV5MWW.js +2 -0
  248. package/dist/cli/chunks/mcp-TELMAC7Z.js +2 -0
  249. package/dist/cli/chunks/{memory-QL53YIHP.js → memory-PFQ3KPVJ.js} +5 -5
  250. package/dist/cli/chunks/memory-backend-ZW4BTRNK.js +2 -0
  251. package/dist/cli/chunks/memory-handlers-FCXN437E.js +2 -0
  252. package/dist/cli/chunks/{multi-model-executor-PDDDXF2B.js → multi-model-executor-3VDRX6TZ.js} +2 -2
  253. package/dist/cli/chunks/{opencode-installer-75D2SKOT.js → opencode-installer-PJ576R63.js} +2 -2
  254. package/dist/cli/chunks/{orchestrator-3WIZBV4T.js → orchestrator-72QP4UU7.js} +64 -19
  255. package/dist/cli/chunks/pattern-null-store-4DUV6MQC.js +2 -0
  256. package/dist/cli/chunks/{pattern-usage-recorder-TEX2JGHA.js → pattern-usage-recorder-754YQW7C.js} +2 -2
  257. package/dist/cli/chunks/pipeline-AVXY4MVB.js +19 -0
  258. package/dist/cli/chunks/{platform-WPSKRJE7.js → platform-3E3DXLYB.js} +2 -2
  259. package/dist/cli/chunks/{plugin-UUFOVVMU.js → plugin-7FUQAKRE.js} +2 -2
  260. package/dist/cli/chunks/{prime-radiant-advanced-wasm-PDFSYWKZ.js → prime-radiant-advanced-wasm-NIB4F5NV.js} +2 -2
  261. package/dist/cli/chunks/project-root-JCAUNL6O.js +2 -0
  262. package/dist/cli/chunks/protocol-executor-RNZNZP3A.js +2 -0
  263. package/dist/cli/chunks/{protocol-handler-3VRYRIQB.js → protocol-handler-BQRYMUTG.js} +2 -2
  264. package/dist/cli/chunks/{prove-2NAUROGF.js → prove-H52QGC6B.js} +2 -2
  265. package/dist/cli/chunks/qe-reasoning-bank-WK6TQOG2.js +2 -0
  266. package/dist/cli/chunks/{quality-ZIEI2WGA.js → quality-QO4XPAUM.js} +2 -2
  267. package/dist/cli/chunks/{quality-gate-KWJO4SWQ.js → quality-gate-FBKE5E6F.js} +3 -3
  268. package/dist/cli/chunks/queen-coordinator-4452SXZQ.js +2 -0
  269. package/dist/cli/chunks/{real-embeddings-TSZ4UIAE.js → real-embeddings-RWGOVOXO.js} +2 -2
  270. package/dist/cli/chunks/{ref-validation-DWFFRETJ.js → ref-validation-LF76ZOBD.js} +2 -2
  271. package/dist/cli/chunks/{roocode-installer-XTZHLUBO.js → roocode-installer-3BYEBTQ7.js} +2 -2
  272. package/dist/cli/chunks/router-3DIS5X4R.js +2 -0
  273. package/dist/cli/chunks/routing-feedback-OPXRCXM7.js +2 -0
  274. package/dist/cli/chunks/{routing-handler-GG525TDM.js → routing-handler-DST7BVCU.js} +2 -2
  275. package/dist/cli/chunks/{ruvector-commands-QKRJDM7Z.js → ruvector-commands-XE32PGKC.js} +2 -2
  276. package/dist/cli/chunks/rvf-dual-writer-JL6T727I.js +2 -0
  277. package/dist/cli/chunks/rvf-migration-adapter-V7IBDUCS.js +2 -0
  278. package/dist/cli/chunks/{rvf-migration-coordinator-FF52OS6Q.js → rvf-migration-coordinator-VP32XC75.js} +2 -2
  279. package/dist/cli/chunks/rvf-native-adapter-O3UQTEBK.js +2 -0
  280. package/dist/cli/chunks/{rvf-store-integrity-M6DXTAZ4.js → rvf-store-integrity-SH2AMVI7.js} +2 -2
  281. package/dist/cli/chunks/safe-db-EVB4ZC7T.js +2 -0
  282. package/dist/cli/chunks/schedule-ORDDXXY4.js +2 -0
  283. package/dist/cli/chunks/scheduler-XFLJSFIU.js +2 -0
  284. package/dist/cli/chunks/{security-EHXSW22U.js → security-VSPNKCDS.js} +3 -3
  285. package/dist/cli/chunks/{shared-rvf-adapter-6EH7UVJL.js → shared-rvf-adapter-HX6AHL3P.js} +2 -2
  286. package/dist/cli/chunks/{shared-rvf-dual-writer-WML274E7.js → shared-rvf-dual-writer-MX4FC2JE.js} +2 -2
  287. package/dist/cli/chunks/sqlite-persistence-Y7B42CJ3.js +2 -0
  288. package/dist/cli/chunks/{standalone-memory-C7QKAXS4.js → standalone-memory-O4QUTK6L.js} +2 -2
  289. package/dist/cli/chunks/{status-handler-VLI7MRLM.js → status-handler-Z2BP6EOG.js} +2 -2
  290. package/dist/cli/chunks/{structural-health-3LPG6MQN.js → structural-health-R36WNLQG.js} +2 -2
  291. package/dist/cli/chunks/sync-2ELWUFQU.js +2 -0
  292. package/dist/cli/chunks/{sync-JFJEJBVK.js → sync-QF5Y3EMZ.js} +2 -2
  293. package/dist/cli/chunks/{task-handler-IED3K6E4.js → task-handler-43PYE75J.js} +13 -7
  294. package/dist/cli/chunks/task-handlers-KPWAEMKH.js +9 -0
  295. package/dist/cli/chunks/{test-GPKT3CKZ.js → test-UWA377D4.js} +16 -16
  296. package/dist/cli/chunks/test-runner-process-3XZUYST2.js +2 -0
  297. package/dist/cli/chunks/{test-scheduling-Z42XXZP6.js → test-scheduling-YQZPJRRN.js} +3 -3
  298. package/dist/cli/chunks/token-bootstrap-F7C6UKTC.js +2 -0
  299. package/dist/cli/chunks/{token-usage-6Y2ERYIY.js → token-usage-DO6WLMXP.js} +2 -2
  300. package/dist/cli/chunks/{transformers-MB63T2XO.js → transformers-H5RGFKVO.js} +2 -2
  301. package/dist/cli/chunks/tree-sitter-wasm-parser-YTBCBHUO.js +2 -0
  302. package/dist/cli/chunks/{types-J4J6QV3I.js → types-PJS2FGPF.js} +2 -2
  303. package/dist/cli/chunks/unified-memory-EHD4VNFW.js +2 -0
  304. package/dist/cli/chunks/unified-memory-hnsw-ZODGM4UK.js +2 -0
  305. package/dist/cli/chunks/unified-persistence-MHSI7ABK.js +2 -0
  306. package/dist/cli/chunks/{upgrade-U4XU7LFM.js → upgrade-4IC4F6AB.js} +2 -2
  307. package/dist/cli/chunks/{validate-B57HA4YK.js → validate-DHUWW7PF.js} +2 -2
  308. package/dist/cli/chunks/{validate-swarm-UPPA4M6T.js → validate-swarm-OERQNOX5.js} +2 -2
  309. package/dist/cli/chunks/visual-security-54MLFKWY.js +2 -0
  310. package/dist/cli/chunks/{web-tree-sitter-GDZMUKOZ.js → web-tree-sitter-TV7DMKES.js} +2 -2
  311. package/dist/cli/chunks/{windsurf-installer-VJRWCHXP.js → windsurf-installer-QZPWSH37.js} +2 -2
  312. package/dist/cli/chunks/witness-chain-LC6Q2W27.js +2 -0
  313. package/dist/cli/chunks/witness-chain-QUIBAF3W.js +2 -0
  314. package/dist/cli/chunks/witness-chain-repair-RUXIOE7F.js +2 -0
  315. package/dist/cli/chunks/{witness-chain-verifier-Z23FVABW.js → witness-chain-verifier-YXENHB42.js} +2 -2
  316. package/dist/cli/chunks/{witness-key-manager-745MJ7WO.js → witness-key-manager-HL26AGFO.js} +2 -2
  317. package/dist/cli/chunks/{workflow-T245QNQM.js → workflow-EOVVCN2E.js} +4 -4
  318. package/dist/cli/chunks/workflow-orchestrator-UKHEJVSK.js +2 -0
  319. package/dist/cli/chunks/wrappers-AGODHBOO.js +2 -0
  320. package/dist/cli/commands/code.js +8 -0
  321. package/dist/cli/commands/daemon.js +8 -0
  322. package/dist/cli/commands/fleet.js +27 -15
  323. package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +9 -2
  324. package/dist/cli/commands/hooks-handlers/session-hooks.js +2 -2
  325. package/dist/cli/commands/hooks-handlers/stats-hooks.js +3 -2
  326. package/dist/cli/commands/learning.js +5 -3
  327. package/dist/cli/commands/ruvector-commands.js +2 -1
  328. package/dist/cli/commands/test.js +6 -0
  329. package/dist/cli/handlers/task-handler.js +21 -1
  330. package/dist/cli/utils/ci-output.d.ts +9 -0
  331. package/dist/cli/utils/fleet-operation.d.ts +32 -0
  332. package/dist/cli/utils/fleet-operation.js +71 -0
  333. package/dist/cli/utils/fleet-result.d.ts +31 -0
  334. package/dist/cli/utils/fleet-result.js +124 -0
  335. package/dist/context/sources/git-source.js +6 -2
  336. package/dist/coordination/handlers/code-intelligence-handlers.js +74 -7
  337. package/dist/coordination/handlers/coverage-collection.js +9 -10
  338. package/dist/coordination/handlers/coverage-handlers.js +31 -4
  339. package/dist/coordination/handlers/coverage-runner.d.ts +2 -1
  340. package/dist/coordination/handlers/coverage-runner.js +9 -2
  341. package/dist/coordination/handlers/coverage-target.d.ts +13 -3
  342. package/dist/coordination/handlers/coverage-target.js +224 -7
  343. package/dist/coordination/handlers/handler-types.d.ts +2 -0
  344. package/dist/coordination/handlers/requirements-handlers.js +16 -2
  345. package/dist/coordination/handlers/security-handlers.js +11 -1
  346. package/dist/coordination/handlers/test-execution-handlers.js +57 -12
  347. package/dist/coordination/index.d.ts +2 -2
  348. package/dist/coordination/index.js +1 -1
  349. package/dist/coordination/mincut/queen-integration.d.ts +39 -1
  350. package/dist/coordination/mincut/queen-integration.js +83 -6
  351. package/dist/coordination/protocols/learning-consolidation-archive.d.ts +35 -0
  352. package/dist/coordination/protocols/learning-consolidation-archive.js +34 -0
  353. package/dist/coordination/protocols/learning-consolidation.d.ts +62 -3
  354. package/dist/coordination/protocols/learning-consolidation.js +187 -60
  355. package/dist/coordination/queen-coordinator.d.ts +13 -2
  356. package/dist/coordination/queen-coordinator.js +43 -8
  357. package/dist/coordination/queen-event-handlers.js +15 -1
  358. package/dist/coordination/queen-lifecycle.js +9 -0
  359. package/dist/coordination/queen-task-management.d.ts +18 -24
  360. package/dist/coordination/queen-task-management.js +94 -127
  361. package/dist/coordination/queen-task-queue.d.ts +41 -0
  362. package/dist/coordination/queen-task-queue.js +194 -0
  363. package/dist/coordination/queen-types.d.ts +11 -1
  364. package/dist/coordination/queen-types.js +8 -0
  365. package/dist/coordination/queen-work-stealing.d.ts +6 -1
  366. package/dist/coordination/queen-work-stealing.js +7 -4
  367. package/dist/coordination/result-saver-adapters.d.ts +15 -0
  368. package/dist/coordination/result-saver-adapters.js +57 -0
  369. package/dist/coordination/result-saver.d.ts +1 -1
  370. package/dist/coordination/result-saver.js +8 -5
  371. package/dist/coordination/task-dag/dag-algorithms.d.ts +33 -0
  372. package/dist/coordination/task-dag/dag-algorithms.js +162 -0
  373. package/dist/coordination/task-dag/dag-obligations.d.ts +21 -0
  374. package/dist/coordination/task-dag/dag-obligations.js +83 -0
  375. package/dist/coordination/task-dag/dag.d.ts +69 -19
  376. package/dist/coordination/task-dag/dag.js +215 -269
  377. package/dist/coordination/task-dag/index.d.ts +12 -4
  378. package/dist/coordination/task-dag/index.js +11 -3
  379. package/dist/coordination/task-dag/prerequisite-ledger.d.ts +84 -0
  380. package/dist/coordination/task-dag/prerequisite-ledger.js +252 -0
  381. package/dist/coordination/task-dag/scheduler.d.ts +19 -9
  382. package/dist/coordination/task-dag/scheduler.js +36 -12
  383. package/dist/coordination/task-dag/types.d.ts +160 -1
  384. package/dist/coordination/task-dag/types.js +2 -1
  385. package/dist/coordination/task-executability.d.ts +18 -0
  386. package/dist/coordination/task-executability.js +31 -0
  387. package/dist/coordination/task-executor.d.ts +1 -0
  388. package/dist/coordination/task-executor.js +5 -0
  389. package/dist/coordination/yaml-pipeline-loader.js +5 -2
  390. package/dist/domains/code-intelligence/coordinator.js +35 -9
  391. package/dist/domains/code-intelligence/index-path-guard.d.ts +52 -0
  392. package/dist/domains/code-intelligence/index-path-guard.js +95 -0
  393. package/dist/domains/code-intelligence/interfaces.d.ts +12 -0
  394. package/dist/domains/code-intelligence/plugin.js +5 -1
  395. package/dist/domains/code-intelligence/services/knowledge-graph.d.ts +6 -0
  396. package/dist/domains/code-intelligence/services/knowledge-graph.js +42 -5
  397. package/dist/domains/code-intelligence/services/metric-collector/index.d.ts +2 -2
  398. package/dist/domains/code-intelligence/services/metric-collector/index.js +2 -3
  399. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.d.ts +1 -1
  400. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +11 -36
  401. package/dist/domains/code-intelligence/services/metric-collector/test-counter.d.ts +1 -1
  402. package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +45 -103
  403. package/dist/domains/contract-testing/coordinator.js +3 -1
  404. package/dist/domains/contract-testing/services/api-compatibility.js +7 -6
  405. package/dist/domains/contract-testing/services/contract-validator.js +6 -4
  406. package/dist/domains/contract-testing/services/schema-validator.js +8 -5
  407. package/dist/domains/defect-intelligence/interfaces.d.ts +2 -0
  408. package/dist/domains/defect-intelligence/plugin.js +11 -2
  409. package/dist/domains/defect-intelligence/prediction-history.d.ts +27 -0
  410. package/dist/domains/defect-intelligence/prediction-history.js +68 -0
  411. package/dist/domains/defect-intelligence/services/defect-predictor.js +29 -12
  412. package/dist/domains/enterprise-integration/services/message-broker-service.js +3 -2
  413. package/dist/domains/enterprise-integration/services/odata-service.js +2 -1
  414. package/dist/domains/enterprise-integration/services/sap-integration-service.js +3 -2
  415. package/dist/domains/learning-optimization/active-patterns.d.ts +14 -14
  416. package/dist/domains/learning-optimization/active-patterns.js +17 -14
  417. package/dist/domains/learning-optimization/coordinator-helpers.js +2 -3
  418. package/dist/domains/learning-optimization/coordinator.d.ts +0 -3
  419. package/dist/domains/learning-optimization/coordinator.js +52 -107
  420. package/dist/domains/learning-optimization/index.d.ts +1 -1
  421. package/dist/domains/learning-optimization/interfaces.d.ts +62 -6
  422. package/dist/domains/learning-optimization/pattern-archive.d.ts +31 -0
  423. package/dist/domains/learning-optimization/pattern-archive.js +56 -0
  424. package/dist/domains/learning-optimization/pattern-consolidation.d.ts +12 -0
  425. package/dist/domains/learning-optimization/pattern-consolidation.js +41 -0
  426. package/dist/domains/learning-optimization/plugin.js +11 -1
  427. package/dist/domains/learning-optimization/reward-source.d.ts +50 -0
  428. package/dist/domains/learning-optimization/reward-source.js +65 -0
  429. package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +7 -5
  430. package/dist/domains/learning-optimization/services/learning-coordinator.js +98 -75
  431. package/dist/domains/learning-optimization/services/metrics-optimizer.d.ts +14 -4
  432. package/dist/domains/learning-optimization/services/metrics-optimizer.js +129 -63
  433. package/dist/domains/learning-optimization/services/transfer-specialist.js +25 -15
  434. package/dist/domains/security-compliance/plugin.js +17 -3
  435. package/dist/domains/security-compliance/sast-path-guard.d.ts +9 -0
  436. package/dist/domains/security-compliance/sast-path-guard.js +17 -0
  437. package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +46 -56
  438. package/dist/domains/security-compliance/services/scanners/dast-helpers.js +76 -91
  439. package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +52 -62
  440. package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +21 -1
  441. package/dist/domains/security-compliance/services/scanners/dast-scanner.js +29 -24
  442. package/dist/domains/security-compliance/services/scanners/scanner-orchestrator.js +4 -1
  443. package/dist/domains/test-execution/coordinator.d.ts +5 -0
  444. package/dist/domains/test-execution/coordinator.js +35 -20
  445. package/dist/domains/test-execution/interfaces.d.ts +41 -0
  446. package/dist/domains/test-execution/plugin.js +19 -4
  447. package/dist/domains/test-execution/services/flaky-detector.js +9 -7
  448. package/dist/domains/test-execution/services/retry-handler.js +46 -7
  449. package/dist/domains/test-execution/services/runner-test-cases.d.ts +32 -0
  450. package/dist/domains/test-execution/services/runner-test-cases.js +87 -0
  451. package/dist/domains/test-execution/services/test-executor.d.ts +5 -0
  452. package/dist/domains/test-execution/services/test-executor.js +31 -9
  453. package/dist/domains/test-generation/plugin.js +7 -2
  454. package/dist/domains/test-generation/services/test-data-generator.js +3 -1
  455. package/dist/domains/visual-accessibility/services/axe-core-audit.js +1 -1
  456. package/dist/hooks/cross-phase-hooks.js +2 -1
  457. package/dist/init/fleet-integration.js +2 -0
  458. package/dist/init/init-wizard-steps.js +2 -0
  459. package/dist/init/phases/06-code-intelligence.js +2 -0
  460. package/dist/init/phases/10-workers.js +51 -6
  461. package/dist/integrations/browser/agent-browser/client.js +37 -52
  462. package/dist/integrations/browser/agent-browser/command-executor.d.ts +33 -27
  463. package/dist/integrations/browser/agent-browser/command-executor.js +53 -54
  464. package/dist/integrations/browser/agent-browser/session-manager.d.ts +1 -1
  465. package/dist/integrations/browser/agent-browser/session-manager.js +8 -9
  466. package/dist/integrations/browser/web-content-fetcher.js +9 -3
  467. package/dist/integrations/vibium/client.js +2 -2
  468. package/dist/integrations/vibium/runtime.d.ts +1 -1
  469. package/dist/integrations/vibium/runtime.js +14 -11
  470. package/dist/kernel/anti-drift-middleware.d.ts +44 -5
  471. package/dist/kernel/anti-drift-middleware.js +147 -11
  472. package/dist/kernel/interfaces.d.ts +5 -0
  473. package/dist/kernel/unified-memory-schemas.d.ts +3 -2
  474. package/dist/kernel/unified-memory-schemas.js +3 -2
  475. package/dist/kernel/unified-memory.js +25 -6
  476. package/dist/learning/dream/dream-commit.d.ts +65 -0
  477. package/dist/learning/dream/dream-commit.js +104 -0
  478. package/dist/learning/dream/dream-engine.d.ts +81 -31
  479. package/dist/learning/dream/dream-engine.js +225 -168
  480. package/dist/learning/dream/dream-insights-pruner.d.ts +24 -4
  481. package/dist/learning/dream/dream-insights-pruner.js +85 -11
  482. package/dist/learning/dream/index.d.ts +3 -2
  483. package/dist/learning/dream/index.js +3 -1
  484. package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -1
  485. package/dist/learning/dream/rvcow-branch-manager.js +8 -1
  486. package/dist/learning/dream/speculative-dreamer.d.ts +50 -74
  487. package/dist/learning/dream/speculative-dreamer.js +64 -111
  488. package/dist/learning/dream/spreading-activation.d.ts +2 -1
  489. package/dist/learning/dream/spreading-activation.js +15 -6
  490. package/dist/learning/experience-capture.d.ts +9 -0
  491. package/dist/learning/experience-capture.js +18 -4
  492. package/dist/learning/qe-reasoning-bank-types.d.ts +17 -2
  493. package/dist/learning/qe-reasoning-bank.js +22 -11
  494. package/dist/learning/skill-validation-learner.d.ts +2 -0
  495. package/dist/learning/skill-validation-learner.js +29 -21
  496. package/dist/learning/sqlite-persistence.d.ts +6 -0
  497. package/dist/learning/sqlite-persistence.js +16 -2
  498. package/dist/learning/usage-outcome.d.ts +68 -0
  499. package/dist/learning/usage-outcome.js +84 -0
  500. package/dist/mcp/background-workers.d.ts +13 -1
  501. package/dist/mcp/background-workers.js +23 -3
  502. package/dist/mcp/bundle.js +602 -551
  503. package/dist/mcp/handlers/core-handlers.js +11 -0
  504. package/dist/mcp/handlers/domain-handler-configs.d.ts +19 -0
  505. package/dist/mcp/handlers/domain-handler-configs.js +76 -30
  506. package/dist/mcp/handlers/handler-factory.d.ts +2 -1
  507. package/dist/mcp/handlers/handler-factory.js +37 -15
  508. package/dist/mcp/handlers/orchestrate-routes.d.ts +36 -0
  509. package/dist/mcp/handlers/orchestrate-routes.js +88 -0
  510. package/dist/mcp/handlers/task-handlers.d.ts +3 -0
  511. package/dist/mcp/handlers/task-handlers.js +69 -6
  512. package/dist/mcp/handlers/validation-pipeline-handler.js +6 -2
  513. package/dist/mcp/metrics/metrics-collector.d.ts +11 -9
  514. package/dist/mcp/metrics/metrics-collector.js +13 -26
  515. package/dist/mcp/protocol-server.js +10 -3
  516. package/dist/mcp/security/schema-validator.js +3 -2
  517. package/dist/mcp/tools/code-intelligence/c4.js +11 -1
  518. package/dist/mcp/tools/coverage-analysis/index.js +31 -2
  519. package/dist/mcp/tools/learning-optimization/dream.d.ts +8 -8
  520. package/dist/mcp/tools/learning-optimization/dream.js +38 -34
  521. package/dist/mcp/tools/learning-optimization/optimize.d.ts +52 -5
  522. package/dist/mcp/tools/learning-optimization/optimize.js +164 -80
  523. package/dist/mcp/tools/quality-assessment/gate.js +12 -1
  524. package/dist/mcp/tools/requirements-validation/quality-criteria.js +9 -2
  525. package/dist/memory/crdt/lww-register.js +11 -1
  526. package/dist/migration/agent-compat.js +7 -5
  527. package/dist/migrations/20261018_add_dream_insights_archive.d.ts +27 -0
  528. package/dist/migrations/20261018_add_dream_insights_archive.js +57 -0
  529. package/dist/routing/calibration/ema-calibrator.js +3 -1
  530. package/dist/shared/base-domain-plugin.d.ts +4 -0
  531. package/dist/shared/base-domain-plugin.js +6 -0
  532. package/dist/shared/git/git-analyzer.d.ts +49 -0
  533. package/dist/shared/git/git-analyzer.js +159 -319
  534. package/dist/shared/git/git-process.d.ts +22 -0
  535. package/dist/shared/git/git-process.js +37 -0
  536. package/dist/shared/git/index.d.ts +1 -0
  537. package/dist/shared/git/index.js +1 -0
  538. package/dist/shared/io/payload-path-guard.d.ts +75 -0
  539. package/dist/shared/io/payload-path-guard.js +190 -0
  540. package/dist/shared/llm/cache.js +4 -1
  541. package/dist/shared/llm/router/agent-router-config.js +2 -1
  542. package/dist/shared/llm/translation/tool-translator.js +2 -1
  543. package/dist/shared/security/compliance-patterns.js +3 -1
  544. package/dist/shared/test-runner-args.d.ts +5 -0
  545. package/dist/shared/test-runner-args.js +6 -1
  546. package/dist/shared/test-runner-process.d.ts +32 -0
  547. package/dist/shared/test-runner-process.js +105 -0
  548. package/dist/shared/test-runner-verdict.d.ts +9 -1
  549. package/dist/shared/test-runner-verdict.js +15 -4
  550. package/dist/shared/types/index.d.ts +9 -0
  551. package/dist/shared/types/index.js +13 -0
  552. package/dist/shared/utils/namespaced-search.d.ts +56 -0
  553. package/dist/shared/utils/namespaced-search.js +71 -0
  554. package/dist/shared/utils/safe-expression-evaluator.js +4 -3
  555. package/dist/strange-loop/infra-healing/infra-action-executor.js +7 -3
  556. package/dist/strange-loop/infra-healing/infra-healing-orchestrator.js +10 -9
  557. package/dist/strange-loop/infra-healing/recovery-playbook.js +13 -3
  558. package/dist/validation/gate-reexecute.js +7 -4
  559. package/dist/workers/daemon.d.ts +2 -0
  560. package/dist/workers/daemon.js +23 -6
  561. package/dist/workers/namespaced-keys.d.ts +4 -7
  562. package/dist/workers/namespaced-keys.js +4 -15
  563. package/dist/workers/quality-daemon/ci-monitor.js +9 -5
  564. package/dist/workers/quality-daemon/git-watcher.js +9 -9
  565. package/dist/workers/worker-env.d.ts +16 -8
  566. package/dist/workers/worker-env.js +25 -12
  567. package/dist/workers/worker-manager.js +4 -0
  568. package/dist/workers/workers/defect-predictor.d.ts +8 -3
  569. package/dist/workers/workers/defect-predictor.js +48 -49
  570. package/dist/workers/workers/learning-consolidation.d.ts +3 -1
  571. package/dist/workers/workers/learning-consolidation.js +22 -8
  572. package/dist/workflows/browser/workflow-loader.js +8 -5
  573. package/package.json +1 -1
  574. package/dist/cli/chunks/adapter-FC4EY447.js +0 -2
  575. package/dist/cli/chunks/agent-booster-wasm-W3V5P7LE.js +0 -2
  576. package/dist/cli/chunks/aqe-learning-engine-AUAL6UBL.js +0 -2
  577. package/dist/cli/chunks/base-2XML4WH7.js +0 -2
  578. package/dist/cli/chunks/browser-ZL7OLKJQ.js +0 -4
  579. package/dist/cli/chunks/browser-workflow-2IFEUAAK.js +0 -2
  580. package/dist/cli/chunks/chunk-4GYFONJB.js +0 -4
  581. package/dist/cli/chunks/chunk-6CKTLVYV.js +0 -2
  582. package/dist/cli/chunks/chunk-7H3GNRNA.js +0 -4
  583. package/dist/cli/chunks/chunk-EUVSSIGR.js +0 -12
  584. package/dist/cli/chunks/chunk-I4U7YCXG.js +0 -180
  585. package/dist/cli/chunks/chunk-J7RCI25Q.js +0 -2
  586. package/dist/cli/chunks/chunk-KNHLOANK.js +0 -4
  587. package/dist/cli/chunks/chunk-KNQUHGNY.js +0 -2
  588. package/dist/cli/chunks/chunk-LZWBUVCK.js +0 -5
  589. package/dist/cli/chunks/chunk-PIEKGKW6.js +0 -12
  590. package/dist/cli/chunks/chunk-PWA6XBW4.js +0 -120
  591. package/dist/cli/chunks/chunk-X6VYQVUM.js +0 -2
  592. package/dist/cli/chunks/chunk-YTYS2XSY.js +0 -2
  593. package/dist/cli/chunks/chunk-Z3LDUPLQ.js +0 -6
  594. package/dist/cli/chunks/client-RFUSQRUZ.js +0 -2
  595. package/dist/cli/chunks/core-handlers-ZC7QB432.js +0 -2
  596. package/dist/cli/chunks/cross-domain-router-GRBK7YFZ.js +0 -2
  597. package/dist/cli/chunks/daemon-JER6HE2J.js +0 -12
  598. package/dist/cli/chunks/domain-transfer-NF7UJW7B.js +0 -2
  599. package/dist/cli/chunks/dream-VALD726W.js +0 -2
  600. package/dist/cli/chunks/file-discovery-VL73ASNI.js +0 -2
  601. package/dist/cli/chunks/fleet-GJ66QFXK.js +0 -43
  602. package/dist/cli/chunks/heartbeat-scheduler-FSX7A3ZA.js +0 -2
  603. package/dist/cli/chunks/hnsw-adapter-UX2QT6RL.js +0 -2
  604. package/dist/cli/chunks/hnsw-index-WRDDAMXH.js +0 -2
  605. package/dist/cli/chunks/hybrid-backend-O67NGIB5.js +0 -2
  606. package/dist/cli/chunks/impact-analyzer-6VXWWYWM.js +0 -2
  607. package/dist/cli/chunks/init-wizard-VH34J4TL.js +0 -2
  608. package/dist/cli/chunks/kernel-KJD24NO7.js +0 -2
  609. package/dist/cli/chunks/knowledge-graph-343O2HEZ.js +0 -2
  610. package/dist/cli/chunks/llm-router-service-2M4BT2AO.js +0 -2
  611. package/dist/cli/chunks/load-test-OTQ2JQ5F.js +0 -2
  612. package/dist/cli/chunks/mcp-NOTDZBW5.js +0 -2
  613. package/dist/cli/chunks/memory-backend-4QSNRRV6.js +0 -2
  614. package/dist/cli/chunks/memory-handlers-YFFYRSM6.js +0 -2
  615. package/dist/cli/chunks/pattern-null-store-5USH5MNR.js +0 -2
  616. package/dist/cli/chunks/pipeline-7ATPA6LU.js +0 -19
  617. package/dist/cli/chunks/project-root-SRTA6TBL.js +0 -2
  618. package/dist/cli/chunks/protocol-executor-4WYPCNBS.js +0 -2
  619. package/dist/cli/chunks/qe-reasoning-bank-I4D6SFS4.js +0 -2
  620. package/dist/cli/chunks/queen-coordinator-24UMTZTE.js +0 -2
  621. package/dist/cli/chunks/router-AUD4GATI.js +0 -2
  622. package/dist/cli/chunks/routing-feedback-2FE6SIKQ.js +0 -2
  623. package/dist/cli/chunks/rvf-dual-writer-P5LEUF25.js +0 -2
  624. package/dist/cli/chunks/rvf-migration-adapter-ZCYD5YJS.js +0 -2
  625. package/dist/cli/chunks/rvf-native-adapter-QGV6BW2W.js +0 -2
  626. package/dist/cli/chunks/safe-db-Q6JUKG2A.js +0 -2
  627. package/dist/cli/chunks/schedule-44OSMGE5.js +0 -2
  628. package/dist/cli/chunks/scheduler-V3HO2QQT.js +0 -2
  629. package/dist/cli/chunks/sqlite-persistence-N5T7DWMR.js +0 -2
  630. package/dist/cli/chunks/sync-4IMMQEPT.js +0 -2
  631. package/dist/cli/chunks/task-handlers-FH6DNTHW.js +0 -9
  632. package/dist/cli/chunks/token-bootstrap-HMM3AHXM.js +0 -2
  633. package/dist/cli/chunks/tree-sitter-wasm-parser-56GDQCMR.js +0 -2
  634. package/dist/cli/chunks/unified-memory-RQ3Q4CU3.js +0 -2
  635. package/dist/cli/chunks/unified-memory-hnsw-ZOP5FEYX.js +0 -2
  636. package/dist/cli/chunks/unified-persistence-72OCJJKK.js +0 -2
  637. package/dist/cli/chunks/visual-security-7F5UV23J.js +0 -2
  638. package/dist/cli/chunks/witness-chain-KZ57QUFE.js +0 -2
  639. package/dist/cli/chunks/witness-chain-LFASSMZK.js +0 -2
  640. package/dist/cli/chunks/witness-chain-repair-TPHN4DXN.js +0 -2
  641. package/dist/cli/chunks/workflow-orchestrator-ZNWEUYBN.js +0 -2
  642. package/dist/cli/chunks/wrappers-WCAYIQUX.js +0 -2
@@ -69,9 +69,41 @@ export interface ITestRunResult {
69
69
  skipped: number;
70
70
  duration: number;
71
71
  failedTests: IFailedTest[];
72
+ /**
73
+ * #1110: every test case as listed in the runner's own JSON report. Absent
74
+ * when the runner gave no per-test entries for the whole run (e.g. a
75
+ * summary-line fallback); never synthesized from counts.
76
+ */
77
+ testCases?: ITestCaseResult[];
72
78
  coverage?: ICoverageData;
73
79
  /** Per-file coverage data for granular quality assessment */
74
80
  fileCoverages?: IFileCoverageData[];
81
+ /** #1130: what the requested retries of failed tests did. Absent when none were requested. */
82
+ retries?: IRunRetrySummary;
83
+ }
84
+ /** #1130: the measured outcome of a run's retries, per failed test. */
85
+ export interface IRunRetrySummary {
86
+ /** Reruns that executed a test (an unmatched retry runs nothing and is not counted). */
87
+ totalRetries: number;
88
+ nowPassing: number;
89
+ stillFailing: number;
90
+ tests: Array<{
91
+ name: string;
92
+ file: string;
93
+ attempts: number;
94
+ passed: boolean;
95
+ unmatched?: boolean;
96
+ }>;
97
+ }
98
+ /** One test case taken verbatim from a runner report (#1110). */
99
+ export interface ITestCaseResult {
100
+ name: string;
101
+ file: string;
102
+ status: 'passed' | 'failed' | 'skipped';
103
+ /** Runner-reported duration in ms; omitted when the runner reported none. */
104
+ duration?: number;
105
+ /** The runner's failure message for a failed test, when it reported one. */
106
+ failureMessage?: string;
75
107
  }
76
108
  export interface IFileCoverageData {
77
109
  path: string;
@@ -128,6 +160,15 @@ export interface IRetryResult {
128
160
  nowPassing: number;
129
161
  stillFailing: number;
130
162
  flakyDetected: string[];
163
+ /** Failed tests whose retry filter selected no test, so none was rerun (#1141). */
164
+ unmatched?: string[];
165
+ /** #1130: the outcome per retried test. */
166
+ tests?: Array<{
167
+ testId: string;
168
+ attempts: number;
169
+ passed: boolean;
170
+ unmatched?: boolean;
171
+ }>;
131
172
  }
132
173
  export interface IExecutionStats {
133
174
  runId: string;
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { err } from '../../shared/types/index.js';
6
6
  import { BaseDomainPlugin } from '../domain-interface.js';
7
+ import { requirePayloadFiles } from '../../shared/io/payload-path-guard.js';
7
8
  import { createTestExecutionCoordinator } from './coordinator.js';
8
9
  import { getGlobalInfraHealing } from '../../strange-loop/infra-healing/global-instance.js';
9
10
  import { isMeasuredGapPayload } from '../../shared/events/domain-events.js';
@@ -60,11 +61,22 @@ export class TestExecutionPlugin extends BaseDomainPlugin {
60
61
  if (!this.coordinator) {
61
62
  return err(new Error('Coordinator not initialized'));
62
63
  }
64
+ // #1126: a runner executes the files it is given, so only files and
65
+ // directories (#909 Jest targets) inside the project, passed on as the
66
+ // real paths that were checked. A missing one is still reported by the
67
+ // runner.
68
+ let testFiles;
69
+ if (payload.testFiles !== undefined) {
70
+ const confined = await requirePayloadFiles('execute-tests', 'testFiles', payload.testFiles, { allowMissing: true, allowDirectory: true });
71
+ if (!confined.success)
72
+ return confined;
73
+ testFiles = confined.value;
74
+ }
63
75
  // Support both simple and full request formats
64
- if (payload.testFiles && Array.isArray(payload.testFiles)) {
76
+ if (testFiles) {
65
77
  // Simple request format
66
78
  const request = {
67
- testFiles: payload.testFiles,
79
+ testFiles,
68
80
  parallel: payload.parallel,
69
81
  retryCount: payload.retryCount,
70
82
  timeout: payload.timeout,
@@ -75,7 +87,7 @@ export class TestExecutionPlugin extends BaseDomainPlugin {
75
87
  else if (payload.framework) {
76
88
  // Full request format
77
89
  const request = {
78
- testFiles: payload.testFiles || [],
90
+ testFiles: [],
79
91
  framework: payload.framework,
80
92
  timeout: payload.timeout,
81
93
  env: payload.env,
@@ -96,8 +108,11 @@ export class TestExecutionPlugin extends BaseDomainPlugin {
96
108
  if (!testFiles) {
97
109
  return err(new Error('Invalid detect-flaky payload: missing testFiles'));
98
110
  }
111
+ const confined = await requirePayloadFiles('detect-flaky', 'testFiles', testFiles, { allowMissing: true, allowDirectory: true });
112
+ if (!confined.success)
113
+ return confined;
99
114
  return this.coordinator.detectFlaky({
100
- testFiles,
115
+ testFiles: confined.value,
101
116
  runs: runs ?? 5,
102
117
  threshold: threshold ?? 0.1,
103
118
  });
@@ -15,6 +15,7 @@ import { getTestRunnerExecutionError } from '../../../shared/test-runner-verdict
15
15
  import { createVitestJsonReport, needsVitestJsonReportFile } from '../../../shared/vitest-json-report.js';
16
16
  import { isJestCommand, jestExactPathPattern, runnerFilePath } from '../../../shared/test-runner-args.js';
17
17
  import { secureRandom } from '../../../shared/utils/crypto-random.js';
18
+ import { redactFailureText } from './runner-test-cases.js';
18
19
  const DEFAULT_FLAKY_CONFIG = {
19
20
  simulateForTesting: false,
20
21
  simulatedFlakinessRate: RETRY_CONSTANTS.DEFAULT_FLAKY_RATE,
@@ -132,7 +133,8 @@ export class FlakyDetectorService {
132
133
  async recordExecution(testId, result) {
133
134
  // Add to in-memory history
134
135
  const history = this.testHistory.get(testId) ?? [];
135
- history.push(result);
136
+ // #1122: test-history is persisted, so failure text is stored redacted.
137
+ history.push(result.error ? { ...result, error: redactFailureText(result.error) } : result);
136
138
  // Keep only last 100 executions
137
139
  if (history.length > 100) {
138
140
  history.shift();
@@ -336,7 +338,7 @@ export class FlakyDetectorService {
336
338
  runId,
337
339
  passed: code === 0,
338
340
  duration,
339
- error: code !== 0 ? stderr || `Exit code: ${code}` : undefined,
341
+ error: code !== 0 ? redactFailureText(stderr || `Exit code: ${code}`) : undefined,
340
342
  timestamp: new Date(),
341
343
  context: {
342
344
  parallelRuns: 1,
@@ -365,7 +367,7 @@ export class FlakyDetectorService {
365
367
  passed: code === 0,
366
368
  duration,
367
369
  error: code !== 0
368
- ? stderr || `Exit code: ${code}, Parse error: ${parseError}`
370
+ ? redactFailureText(stderr || `Exit code: ${code}, Parse error: ${parseError}`)
369
371
  : undefined,
370
372
  timestamp: new Date(),
371
373
  context: {
@@ -479,8 +481,8 @@ export class FlakyDetectorService {
479
481
  runId,
480
482
  passed: test.status === 'passed',
481
483
  duration: test.duration || 0,
482
- error: test.status === 'failed'
483
- ? test.failureMessages?.join('\n')
484
+ error: test.status === 'failed' && test.failureMessages
485
+ ? redactFailureText(test.failureMessages.join('\n'))
484
486
  : undefined,
485
487
  timestamp: new Date(),
486
488
  context: {
@@ -505,8 +507,8 @@ export class FlakyDetectorService {
505
507
  runId,
506
508
  passed: assertion.status === 'passed',
507
509
  duration: assertion.duration || 0,
508
- error: assertion.status === 'failed'
509
- ? assertion.failureMessages?.join('\n')
510
+ error: assertion.status === 'failed' && assertion.failureMessages
511
+ ? redactFailureText(assertion.failureMessages.join('\n'))
510
512
  : undefined,
511
513
  timestamp: new Date(),
512
514
  context: {
@@ -14,6 +14,7 @@ import { toError } from '../../../shared/error-utils.js';
14
14
  import { safeJsonParse } from '../../../shared/safe-json.js';
15
15
  import { secureRandom } from '../../../shared/utils/crypto-random.js';
16
16
  import { terminateTestRunner, trackTestRunnerExit } from '../../../shared/test-runner-process.js';
17
+ import { redactFailureText } from './runner-test-cases.js';
17
18
  /**
18
19
  * Whether a runner-reported test file and the requested target are the same
19
20
  * file. Runners report real paths, so a target given through a symlink must be
@@ -104,6 +105,8 @@ export class RetryHandlerService {
104
105
  const nowPassing = [];
105
106
  const stillFailing = [];
106
107
  const flakyDetected = [];
108
+ const unmatched = [];
109
+ const tests = [];
107
110
  for (const test of failedTests) {
108
111
  const result = await this.retryTest(test, maxRetries, backoff, baseDelay, maxDelay, onRetry);
109
112
  stats.totalRetries += result.attempts;
@@ -118,11 +121,18 @@ export class RetryHandlerService {
118
121
  else {
119
122
  stillFailing.push(test.testId);
120
123
  stats.failed++;
124
+ if (result.unmatched)
125
+ unmatched.push(test.testId);
121
126
  }
127
+ tests.push({
128
+ testId: test.testId, attempts: result.attempts, passed: result.passed,
129
+ ...(result.unmatched ? { unmatched: true } : {}),
130
+ });
122
131
  // Record retry history
123
132
  await this.recordRetry(test.testId, result);
124
133
  }
125
134
  stats.flakyDetected = flakyDetected;
135
+ stats.unmatched = unmatched;
126
136
  stats.endTime = Date.now();
127
137
  this.runStats.set(runId, stats);
128
138
  // Persist stats
@@ -136,6 +146,8 @@ export class RetryHandlerService {
136
146
  nowPassing: nowPassing.length,
137
147
  stillFailing: stillFailing.length,
138
148
  flakyDetected,
149
+ unmatched,
150
+ tests,
139
151
  };
140
152
  return ok(retryResult);
141
153
  }
@@ -218,7 +230,8 @@ export class RetryHandlerService {
218
230
  }
219
231
  async retryTest(test, maxRetries, backoff, baseDelay, maxDelay, onRetry) {
220
232
  let attempts = 0;
221
- let lastError = test.error;
233
+ // #1122: the final error is persisted in retry-history, so keep it redacted.
234
+ let lastError = redactFailureText(test.error);
222
235
  while (attempts < maxRetries) {
223
236
  // Check if should retry
224
237
  const shouldRetry = await this.shouldRetry(test.testId, attempts, lastError);
@@ -232,9 +245,16 @@ export class RetryHandlerService {
232
245
  if (onRetry) {
233
246
  onRetry(test.testId, attempts + 1);
234
247
  }
235
- attempts++;
236
248
  // Execute test (simulated - in real implementation, would run actual test)
237
249
  const result = await this.executeTest(test);
250
+ // #1141: a filter that selected no test reran nothing. Report that
251
+ // instead of counting it as a retry, and stop: another attempt would
252
+ // select nothing again.
253
+ if (result.unmatched) {
254
+ logger.warn(`Retry of "${test.testName}" matched no test in ${test.file}; nothing was rerun.`);
255
+ return { testId: test.testId, passed: false, attempts, finalError: lastError, unmatched: true };
256
+ }
257
+ attempts++;
238
258
  if (result.passed) {
239
259
  return {
240
260
  testId: test.testId,
@@ -243,7 +263,7 @@ export class RetryHandlerService {
243
263
  finalError: undefined,
244
264
  };
245
265
  }
246
- lastError = result.error ?? lastError;
266
+ lastError = result.error !== undefined ? redactFailureText(result.error) : lastError;
247
267
  }
248
268
  return {
249
269
  testId: test.testId,
@@ -477,9 +497,16 @@ export class RetryHandlerService {
477
497
  const result = safeJsonParse(vitestMatch[0]);
478
498
  // Vitest's positional file filter uses prefix matching. A passing
479
499
  // sibling must not clear a failure in the requested file (#972).
480
- const targetPassed = !targetFile || result.testResults?.some((file) => typeof file.name === 'string'
481
- && sameTestFile(file.name, targetFile, this.config.cwd ?? process.cwd())
482
- && file.assertionResults?.some(assertion => assertion.status === 'passed'));
500
+ const targetHas = (status) => result.testResults?.some((file) => typeof file.name === 'string'
501
+ && (!targetFile || sameTestFile(file.name, targetFile, this.config.cwd ?? process.cwd()))
502
+ && file.assertionResults?.some(assertion => assertion.status === status)) === true;
503
+ const targetPassed = !targetFile || targetHas('passed');
504
+ const nothingRan = targetFile
505
+ ? Array.isArray(result.testResults) && !targetPassed && !targetHas('failed')
506
+ : result.numPassedTests === 0;
507
+ if (nothingRan && result.numFailedTests === 0 && result.numFailedTestSuites === 0) {
508
+ return UNMATCHED;
509
+ }
483
510
  if (exitCode === 0 && result.success !== false
484
511
  && result.numFailedTests === 0 && result.numFailedTestSuites === 0
485
512
  && Number.isFinite(result.numPassedTests) && result.numPassedTests > 0
@@ -501,6 +528,10 @@ export class RetryHandlerService {
501
528
  const jestMatch = stdout.match(/\{[\s\S]*"numFailedTests"[\s\S]*\}/);
502
529
  if (jestMatch) {
503
530
  const result = safeJsonParse(jestMatch[0]);
531
+ if (result.numPassedTests === 0 && result.numFailedTests === 0
532
+ && result.numFailedTestSuites === 0) {
533
+ return UNMATCHED;
534
+ }
504
535
  if (exitCode === 0 && result.success !== false
505
536
  && result.numFailedTests === 0 && result.numFailedTestSuites === 0
506
537
  && Number.isFinite(result.numPassedTests) && result.numPassedTests > 0) {
@@ -517,6 +548,8 @@ export class RetryHandlerService {
517
548
  const mochaMatch = stdout.match(/\{[\s\S]*"stats"[\s\S]*"failures"[\s\S]*\}/);
518
549
  if (mochaMatch) {
519
550
  const result = safeJsonParse(mochaMatch[0]);
551
+ if (result.stats?.passes === 0 && result.stats?.failures === 0)
552
+ return UNMATCHED;
520
553
  if (exitCode === 0 && result.stats?.failures === 0
521
554
  && Number.isFinite(result.stats?.passes) && result.stats.passes > 0) {
522
555
  return { passed: true };
@@ -538,7 +571,7 @@ export class RetryHandlerService {
538
571
  const errorOutput = stderr || stdout || `Test failed with exit code ${exitCode}`;
539
572
  return {
540
573
  passed: false,
541
- error: errorOutput.substring(0, 1000), // Truncate long error messages
574
+ error: redactFailureText(errorOutput).substring(0, 1000), // Truncate long error messages
542
575
  };
543
576
  }
544
577
  calculateDelay(attempt, backoff, baseDelay, maxDelay) {
@@ -573,6 +606,7 @@ export class RetryHandlerService {
573
606
  attempts: result.attempts,
574
607
  passed: result.passed,
575
608
  error: result.finalError,
609
+ ...(result.unmatched ? { unmatched: true } : {}),
576
610
  timestamp: new Date(),
577
611
  });
578
612
  // Keep last 50 entries
@@ -616,4 +650,9 @@ export class RetryHandlerService {
616
650
  };
617
651
  }
618
652
  }
653
+ const UNMATCHED = {
654
+ passed: false,
655
+ unmatched: true,
656
+ error: 'The retry filter matched no test, so nothing was rerun.',
657
+ };
619
658
  //# sourceMappingURL=retry-handler.js.map
@@ -0,0 +1,32 @@
1
+ /**
2
+ * #1110: per-test results read from a Vitest/Jest JSON report.
3
+ *
4
+ * Both runners emit `testResults[].assertionResults[]`. Each entry becomes one
5
+ * test case with the runner's own name, status and duration; nothing is
6
+ * derived from aggregate counts.
7
+ */
8
+ import type { ITestCaseResult } from '../interfaces';
9
+ /**
10
+ * #1122: failure text goes back over MCP and into saved results, so
11
+ * credential-shaped values (e.g. a connection string) are redacted first.
12
+ * The text is not shortened here; callers apply their own caps.
13
+ */
14
+ export declare function redactFailureText(text: string): string;
15
+ /** Failed tests with `error` and `stack` redacted (#1122). */
16
+ export declare function redactFailedTests<T extends {
17
+ error: string;
18
+ stack?: string;
19
+ }>(tests: T[]): T[];
20
+ /**
21
+ * Test cases listed in a runner JSON report, or undefined when the report
22
+ * has no per-test entries.
23
+ */
24
+ export declare function testCasesFromRunnerReport(report: {
25
+ testResults?: unknown;
26
+ }, fallbackFile: string): ITestCaseResult[] | undefined;
27
+ /** Concatenate per-run test cases; undefined unless every run listed its tests. */
28
+ export declare function mergeTestCases(runs: ReadonlyArray<{
29
+ testCases?: ITestCaseResult[];
30
+ total: number;
31
+ }>): ITestCaseResult[] | undefined;
32
+ //# sourceMappingURL=runner-test-cases.d.ts.map
@@ -0,0 +1,87 @@
1
+ /**
2
+ * #1110: per-test results read from a Vitest/Jest JSON report.
3
+ *
4
+ * Both runners emit `testResults[].assertionResults[]`. Each entry becomes one
5
+ * test case with the runner's own name, status and duration; nothing is
6
+ * derived from aggregate counts.
7
+ */
8
+ import { redactLogText } from '../../../logging/redaction.js';
9
+ const SKIPPED_STATUSES = new Set(['skipped', 'pending', 'todo']);
10
+ /** Upper bound on a reported failure message, so one stack cannot swamp the output. */
11
+ const MAX_FAILURE_MESSAGE_LENGTH = 4000;
12
+ function failureMessageOf(assertion) {
13
+ if (!Array.isArray(assertion.failureMessages))
14
+ return undefined;
15
+ const joined = assertion.failureMessages.filter((m) => typeof m === 'string').join('\n').trim();
16
+ if (!joined)
17
+ return undefined;
18
+ const message = redactFailureText(joined);
19
+ return message.length > MAX_FAILURE_MESSAGE_LENGTH
20
+ ? `${message.slice(0, MAX_FAILURE_MESSAGE_LENGTH)}… [truncated]`
21
+ : message;
22
+ }
23
+ /**
24
+ * #1122: failure text goes back over MCP and into saved results, so
25
+ * credential-shaped values (e.g. a connection string) are redacted first.
26
+ * The text is not shortened here; callers apply their own caps.
27
+ */
28
+ export function redactFailureText(text) {
29
+ return redactLogText(text, Number.POSITIVE_INFINITY);
30
+ }
31
+ /** Failed tests with `error` and `stack` redacted (#1122). */
32
+ export function redactFailedTests(tests) {
33
+ return tests.map(test => ({
34
+ ...test,
35
+ error: redactFailureText(test.error),
36
+ ...(typeof test.stack === 'string' ? { stack: redactFailureText(test.stack) } : {}),
37
+ }));
38
+ }
39
+ function toStatus(status) {
40
+ if (status === 'passed' || status === 'failed')
41
+ return status;
42
+ return typeof status === 'string' && SKIPPED_STATUSES.has(status) ? 'skipped' : undefined;
43
+ }
44
+ /**
45
+ * Test cases listed in a runner JSON report, or undefined when the report
46
+ * has no per-test entries.
47
+ */
48
+ export function testCasesFromRunnerReport(report, fallbackFile) {
49
+ if (!Array.isArray(report.testResults))
50
+ return undefined;
51
+ const cases = [];
52
+ for (const fileResult of report.testResults) {
53
+ const file = typeof fileResult?.name === 'string' ? fileResult.name : fallbackFile;
54
+ const assertions = Array.isArray(fileResult?.assertionResults) ? fileResult.assertionResults : [];
55
+ for (const assertion of assertions) {
56
+ // A malformed entry is skipped; the caller's count check then drops the list.
57
+ if (!assertion || typeof assertion !== 'object')
58
+ continue;
59
+ const status = toStatus(assertion.status);
60
+ if (!status)
61
+ continue;
62
+ const name = typeof assertion.fullName === 'string' && assertion.fullName
63
+ ? assertion.fullName
64
+ : typeof assertion.title === 'string' ? assertion.title : '';
65
+ if (!name)
66
+ continue;
67
+ const duration = typeof assertion.duration === 'number' && Number.isFinite(assertion.duration)
68
+ ? assertion.duration
69
+ : undefined;
70
+ const failureMessage = status === 'failed' ? failureMessageOf(assertion) : undefined;
71
+ cases.push({
72
+ name, file, status,
73
+ ...(duration !== undefined ? { duration } : {}),
74
+ ...(failureMessage ? { failureMessage } : {}),
75
+ });
76
+ }
77
+ }
78
+ return cases.length > 0 ? cases : undefined;
79
+ }
80
+ /** Concatenate per-run test cases; undefined unless every run listed its tests. */
81
+ export function mergeTestCases(runs) {
82
+ if (runs.length === 0 || runs.some(run => run.total > 0 && !run.testCases))
83
+ return undefined;
84
+ const merged = runs.flatMap(run => run.testCases ?? []);
85
+ return merged.length > 0 ? merged : undefined;
86
+ }
87
+ //# sourceMappingURL=runner-test-cases.js.map
@@ -127,6 +127,11 @@ export declare class TestExecutorService implements ITestExecutionService {
127
127
  * Parse vitest JSON output
128
128
  */
129
129
  private parseVitestOutput;
130
+ /**
131
+ * #1110: the report's per-test entries, kept only when they account for
132
+ * every counted test; a partial list would misstate the run.
133
+ */
134
+ private reportedTestCases;
130
135
  /**
131
136
  * Parse jest JSON output
132
137
  */
@@ -17,7 +17,8 @@ import { secureRandom, secureRandomInt } from '../../../shared/utils/crypto-rand
17
17
  import { writeTestRunEvidence } from '../../quality-assessment/quality-evidence.js';
18
18
  import { istanbulLineHits } from '../../../coordination/handlers/handler-utils.js';
19
19
  import { fileCoverageKey } from '../../coverage-analysis/collected-metrics.js';
20
- import { getTestRunnerExecutionError, TestRunnerExecutionError } from '../../../shared/test-runner-verdict.js';
20
+ import { mergeTestCases, redactFailedTests, redactFailureText, testCasesFromRunnerReport } from './runner-test-cases.js';
21
+ import { capDiagnostics, getTestRunnerExecutionError, TestRunnerExecutionError } from '../../../shared/test-runner-verdict.js';
21
22
  import { createVitestJsonReport } from '../../../shared/vitest-json-report.js';
22
23
  import { jestExactPathPattern, runnerFilePath } from '../../../shared/test-runner-args.js';
23
24
  import { getClaudeModelForTier } from '../../../shared/llm/model-registry.js';
@@ -75,7 +76,8 @@ export class TestExecutorService {
75
76
  failed: results.failed,
76
77
  skipped: results.skipped,
77
78
  duration,
78
- failedTests: results.failedTests,
79
+ failedTests: redactFailedTests(results.failedTests),
80
+ ...(results.testCases ? { testCases: results.testCases } : {}),
79
81
  coverage: results.coverage,
80
82
  fileCoverages: results.fileCoverages,
81
83
  };
@@ -130,7 +132,8 @@ export class TestExecutorService {
130
132
  failed: aggregated.failed,
131
133
  skipped: aggregated.skipped,
132
134
  duration,
133
- failedTests: aggregated.failedTests,
135
+ failedTests: redactFailedTests(aggregated.failedTests),
136
+ ...(aggregated.testCases ? { testCases: aggregated.testCases } : {}),
134
137
  coverage: aggregated.coverage,
135
138
  fileCoverages: aggregated.fileCoverages,
136
139
  };
@@ -257,7 +260,7 @@ export class TestExecutorService {
257
260
  if (!this.isLLMAnalysisAvailable() || failures.length === 0)
258
261
  return null;
259
262
  try {
260
- const failureSummary = failures.slice(0, 5).map(f => `- ${f.testName}: ${f.error?.substring(0, 200) || 'Unknown error'}`).join('\n');
263
+ const failureSummary = failures.slice(0, 5).map(f => `- ${f.testName}: ${f.error ? redactFailureText(f.error).substring(0, 200) : 'Unknown error'}`).join('\n');
261
264
  const response = await this.llmRouter.chat({
262
265
  model: this.getModelForTier(this.config.llmModelTier),
263
266
  messages: [{
@@ -331,12 +334,14 @@ Provide:
331
334
  ? this.mergeSequentialCoverage(executionResults)
332
335
  : undefined;
333
336
  const separateRuns = testFiles.length > 1 && !this.config.simulateForTesting;
337
+ const testCases = mergeTestCases(executionResults);
334
338
  return {
335
339
  total: passed + failed + skipped,
336
340
  passed,
337
341
  failed,
338
342
  skipped,
339
343
  failedTests,
344
+ ...(testCases ? { testCases } : {}),
340
345
  coverage: separateRuns ? merged?.summary : this.aggregateCoverage(coverages),
341
346
  fileCoverages: separateRuns ? merged?.perFile
342
347
  : allFileCoverages.length > 0 ? allFileCoverages : undefined,
@@ -502,7 +507,7 @@ Provide:
502
507
  return;
503
508
  }
504
509
  if (reportText === undefined) {
505
- finish(err(new Error(`The current Vitest JSON report is missing for ${fileLabel}.`)));
510
+ finish(err(new TestRunnerExecutionError(`The current Vitest JSON report is missing for ${fileLabel}.`)));
506
511
  return;
507
512
  }
508
513
  const parseResult = this.parseTestOutput(reportText, stderr, fileLabel, framework, code);
@@ -619,7 +624,7 @@ Provide:
619
624
  }
620
625
  catch (error) {
621
626
  return err(new Error(`Failed to parse test output for ${file}: ${toErrorMessage(error)}\n` +
622
- `stdout: ${stdout.slice(0, 500)}\nstderr: ${stderr.slice(0, 500)}`));
627
+ `stdout: ${capDiagnostics(stdout, 500)}\nstderr: ${capDiagnostics(stderr, 500)}`));
623
628
  }
624
629
  }
625
630
  /**
@@ -702,12 +707,14 @@ Provide:
702
707
  if (executionError)
703
708
  return err(executionError);
704
709
  const covData = this.extractCoverageFromJson(json);
710
+ const testCases = this.reportedTestCases(json, file, passed + failed + skipped);
705
711
  return ok({
706
712
  total: passed + failed + skipped,
707
713
  passed,
708
714
  failed,
709
715
  skipped,
710
716
  failedTests,
717
+ ...(testCases ? { testCases } : {}),
711
718
  coverage: covData.summary,
712
719
  fileCoverages: covData.perFile.length > 0 ? covData.perFile : undefined,
713
720
  rawCoverageMap: isRecord(json.coverageMap) && !json.coverageMap.total ? json.coverageMap : undefined,
@@ -721,6 +728,14 @@ Provide:
721
728
  // Example: "Tests 5 passed | 1 failed | 1 skipped (7)"
722
729
  return this.parseTestSummaryLine(stdout, stderr, file, exitCode);
723
730
  }
731
+ /**
732
+ * #1110: the report's per-test entries, kept only when they account for
733
+ * every counted test; a partial list would misstate the run.
734
+ */
735
+ reportedTestCases(json, file, total) {
736
+ const cases = testCasesFromRunnerReport(json, file);
737
+ return cases && cases.length === total ? cases : undefined;
738
+ }
724
739
  /**
725
740
  * Parse jest JSON output
726
741
  */
@@ -757,12 +772,14 @@ Provide:
757
772
  if (executionError)
758
773
  return err(executionError);
759
774
  const covData = this.extractCoverageFromJson(json);
775
+ const testCases = this.reportedTestCases(json, file, passed + failed + skipped);
760
776
  return ok({
761
777
  total: passed + failed + skipped,
762
778
  passed,
763
779
  failed,
764
780
  skipped,
765
781
  failedTests,
782
+ ...(testCases ? { testCases } : {}),
766
783
  coverage: covData.summary,
767
784
  fileCoverages: covData.perFile.length > 0 ? covData.perFile : undefined,
768
785
  rawCoverageMap: isRecord(json.coverageMap) && !json.coverageMap.total ? json.coverageMap : undefined,
@@ -863,7 +880,7 @@ Provide:
863
880
  ];
864
881
  for (const indicator of errorMessages) {
865
882
  if (combinedOutput.includes(indicator)) {
866
- return err(new Error(`Test execution failed for ${file} (exit code ${exitCode}):\n${combinedOutput.slice(0, 1000)}`));
883
+ return err(new Error(`Test execution failed for ${file} (exit code ${exitCode}):\n${capDiagnostics(combinedOutput, 1000)}`));
867
884
  }
868
885
  }
869
886
  }
@@ -877,7 +894,7 @@ Provide:
877
894
  }
878
895
  // Could not parse output - return error with details
879
896
  return err(new Error(`Unable to parse test results for ${file}. Exit code: ${exitCode}\n` +
880
- `Output: ${combinedOutput.slice(0, 500)}`));
897
+ `Output: ${capDiagnostics(combinedOutput, 500)}`));
881
898
  }
882
899
  /**
883
900
  * Create generic failure entries when we know tests failed but can't parse details
@@ -991,6 +1008,9 @@ Provide:
991
1008
  aggregated.skipped += result.skipped;
992
1009
  aggregated.failedTests.push(...result.failedTests);
993
1010
  }
1011
+ const testCases = mergeTestCases(results);
1012
+ if (testCases)
1013
+ aggregated.testCases = testCases;
994
1014
  aggregated.coverage = this.aggregateCoverage(results.map(r => r.coverage).filter((c) => c !== undefined));
995
1015
  // Collect per-file coverages from all worker results
996
1016
  const allFileCoverages = results.flatMap(r => r.fileCoverages ?? []);
@@ -1182,7 +1202,9 @@ Provide:
1182
1202
  // #1028 N1: the record names the test files it ran, so per-test duration
1183
1203
  // is compared only between runs of the same test set.
1184
1204
  const files = testFiles && testFiles.length > 0 ? [...new Set(testFiles)].sort() : undefined;
1185
- await this.memory.set(`test-run:${runId}`, files ? { ...result, testFiles: files } : result, {
1205
+ // Per-test entries are returned to the caller, not persisted with the run record.
1206
+ const { testCases: _testCases, ...record } = result;
1207
+ await this.memory.set(`test-run:${runId}`, files ? { ...record, testFiles: files } : record, {
1186
1208
  namespace: 'test-execution',
1187
1209
  persist: true,
1188
1210
  });
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { err } from '../../shared/types/index.js';
6
6
  import { BaseDomainPlugin } from '../domain-interface.js';
7
+ import { MAX_PAYLOAD_FILE_BYTES, requirePayloadFiles } from '../../shared/io/payload-path-guard.js';
7
8
  import { TestGenerationCoordinator, } from './coordinator.js';
8
9
  // D9: live routing-feedback so free-tier outcomes lift routing confidence.
9
10
  import { RoutingFeedbackCollector } from '../../routing/routing-feedback.js';
@@ -73,12 +74,16 @@ export class TestGenerationPlugin extends BaseDomainPlugin {
73
74
  if (!this.coordinator) {
74
75
  return err(new Error('Coordinator not initialized'));
75
76
  }
76
- const sourceFiles = payload.sourceFiles;
77
77
  const testType = payload.testType;
78
78
  const framework = payload.framework;
79
- if (!sourceFiles || sourceFiles.length === 0) {
79
+ if (!Array.isArray(payload.sourceFiles) || payload.sourceFiles.length === 0) {
80
80
  return err(new Error('Invalid generate-tests payload: missing sourceFiles'));
81
81
  }
82
+ // #1126: the generator reads each file whole, so only project files.
83
+ const confined = await requirePayloadFiles('generate-tests', 'sourceFiles', payload.sourceFiles, { maxBytes: MAX_PAYLOAD_FILE_BYTES });
84
+ if (!confined.success)
85
+ return confined;
86
+ const sourceFiles = confined.value;
82
87
  const request = {
83
88
  sourceFiles,
84
89
  testType: testType ?? 'unit',
@@ -230,7 +230,9 @@ export class TestDataGeneratorService {
230
230
  const parts = methodPath.split('.');
231
231
  let result = f;
232
232
  for (const part of parts) {
233
- if (result && typeof result === 'object' && part in result) {
233
+ // #1136: a member every object inherits (`constructor`, `toString`)
234
+ // is not a faker method.
235
+ if (result && typeof result === 'object' && part in result && !(part in Object.prototype)) {
234
236
  const next = result[part];
235
237
  if (typeof next === 'function') {
236
238
  result = next();
@@ -85,7 +85,7 @@ export class AccessibilityAuditor {
85
85
  // Check for vibium
86
86
  try {
87
87
  await loadVibium();
88
- this.toolsAvailable.vibium = isVibiumReady();
88
+ this.toolsAvailable.vibium = await isVibiumReady();
89
89
  }
90
90
  catch {
91
91
  this.toolsAvailable.vibium = false;