agentic-qe 3.15.9 → 3.15.11

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 (668) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +365 -0
  3. package/README.md +8 -0
  4. package/assets/skills/skills-manifest.json +1 -1
  5. package/dist/adapters/a2a/agent-cards/generator.js +6 -3
  6. package/dist/adapters/a2a/tasks/task-router.js +3 -1
  7. package/dist/adapters/a2ui/catalog/component-schemas.js +2 -1
  8. package/dist/adapters/a2ui/data/json-pointer-resolver.js +10 -5
  9. package/dist/adapters/a2ui/integration/agui-sync.js +10 -6
  10. package/dist/adapters/a2ui/integration/surface-state-bridge.js +9 -5
  11. package/dist/adapters/ag-ui/json-patch.js +10 -6
  12. package/dist/adapters/trajectory-adapter.js +1 -1
  13. package/dist/agents/claim-verifier/verifiers/output-verifier.d.ts +3 -1
  14. package/dist/agents/claim-verifier/verifiers/output-verifier.js +31 -2
  15. package/dist/agents/overlay-loader.js +26 -21
  16. package/dist/audit/witness-chain.d.ts +1 -1
  17. package/dist/cli/bundle.js +6 -6
  18. package/dist/cli/chunks/adapter-V4GSGOOK.js +2 -0
  19. package/dist/cli/chunks/agent-booster-wasm-TIDSQ3ZK.js +2 -0
  20. package/dist/cli/chunks/{agent-handler-RIYHTHVZ.js → agent-handler-G3EPBVA7.js} +2 -2
  21. package/dist/cli/chunks/{agent-memory-branch-WSUCUHOO.js → agent-memory-branch-ARC5C7GW.js} +2 -2
  22. package/dist/cli/chunks/aqe-learning-engine-6WQTM5YR.js +2 -0
  23. package/dist/cli/chunks/{arena-YAJZX6MC.js → arena-36DTATJV.js} +4 -4
  24. package/dist/cli/chunks/{arena-KRIBMIXX.js → arena-K4I4QDXB.js} +2 -2
  25. package/dist/cli/chunks/{audit-7ZNOXWP3.js → audit-WQSJSJZF.js} +3 -3
  26. package/dist/cli/chunks/base-AK7BXBX2.js +2 -0
  27. package/dist/cli/chunks/{better-sqlite3-ZQAT4I6H.js → better-sqlite3-BB4K67MT.js} +2 -2
  28. package/dist/cli/chunks/{brain-handler-452WCPZC.js → brain-handler-CU3GOIU3.js} +3 -3
  29. package/dist/cli/chunks/{branch-enumerator-IJFXJRPN.js → branch-enumerator-NJQX7ZNB.js} +2 -2
  30. package/dist/cli/chunks/browser-6YJF4FQW.js +4 -0
  31. package/dist/cli/chunks/browser-workflow-VTDFBW7T.js +2 -0
  32. package/dist/cli/chunks/{chunk-LMU5DUDK.js → chunk-25P77WA5.js} +1 -1
  33. package/dist/cli/chunks/chunk-2CW7VRPH.js +141 -0
  34. package/dist/cli/chunks/chunk-2DTX7YAZ.js +6 -0
  35. package/dist/cli/chunks/{chunk-4JCY45KV.js → chunk-2KFFEKSI.js} +2 -2
  36. package/dist/cli/chunks/chunk-2VLYUF7U.js +2 -0
  37. package/dist/cli/chunks/{chunk-55HRSNGN.js → chunk-325QCVDI.js} +2 -2
  38. package/dist/cli/chunks/{chunk-2TDIS6YK.js → chunk-35M2X3C5.js} +2 -2
  39. package/dist/cli/chunks/{chunk-J5KNRVXR.js → chunk-3RHOPP7A.js} +1 -1
  40. package/dist/cli/chunks/{chunk-NTAD5UX4.js → chunk-4HJKQIX5.js} +2 -2
  41. package/dist/cli/chunks/chunk-4MUBW4RT.js +7 -0
  42. package/dist/cli/chunks/{chunk-VQHVHVSF.js → chunk-4RAQ7PJA.js} +8 -8
  43. package/dist/cli/chunks/{chunk-JWGRWMZP.js → chunk-4RH5I24Q.js} +2 -2
  44. package/dist/cli/chunks/{chunk-QQ5SZH4D.js → chunk-4UBVAJFO.js} +3 -3
  45. package/dist/cli/chunks/{chunk-ZBDRLF43.js → chunk-4UX35V7P.js} +2 -2
  46. package/dist/cli/chunks/{chunk-ZANDSVCK.js → chunk-4X4MWMHB.js} +2 -2
  47. package/dist/cli/chunks/{chunk-47TYABPD.js → chunk-55CH76ZO.js} +3 -3
  48. package/dist/cli/chunks/{chunk-LEAKYZ37.js → chunk-57LNKSW7.js} +2 -2
  49. package/dist/cli/chunks/chunk-5ERFHEEE.js +14 -0
  50. package/dist/cli/chunks/{chunk-HGTWAZWU.js → chunk-5HQP4SLM.js} +2 -2
  51. package/dist/cli/chunks/{chunk-XYCKHYBM.js → chunk-5MNASJOH.js} +2 -2
  52. package/dist/cli/chunks/{chunk-2HL3UM5P.js → chunk-5MTWCCZJ.js} +2 -2
  53. package/dist/cli/chunks/{chunk-4SUOVLJ6.js → chunk-5N25I53C.js} +2 -2
  54. package/dist/cli/chunks/{chunk-XOVNZT7F.js → chunk-5WYZHDIZ.js} +1 -1
  55. package/dist/cli/chunks/{chunk-J3DTDJDT.js → chunk-5YLOLACR.js} +2 -2
  56. package/dist/cli/chunks/{chunk-TSYQDRNK.js → chunk-672XOJDG.js} +2 -2
  57. package/dist/cli/chunks/{chunk-KLGYIEJK.js → chunk-6NA3KZZT.js} +10 -10
  58. package/dist/cli/chunks/chunk-72ZBJD2E.js +3 -0
  59. package/dist/cli/chunks/{chunk-2I2UPJS7.js → chunk-76SNL7GU.js} +2 -2
  60. package/dist/cli/chunks/{chunk-F3PQZX44.js → chunk-7HEMJHPP.js} +2 -2
  61. package/dist/cli/chunks/{chunk-FV7VAG74.js → chunk-7R5HC56U.js} +1 -1
  62. package/dist/cli/chunks/{chunk-L42JPFCC.js → chunk-AFFN6E6Q.js} +2 -2
  63. package/dist/cli/chunks/{chunk-NDKLQW6N.js → chunk-AMZKAJLJ.js} +2 -2
  64. package/dist/cli/chunks/{chunk-K5DJXMAA.js → chunk-AP3ADWDK.js} +2 -2
  65. package/dist/cli/chunks/{chunk-BHKXMIWX.js → chunk-APPZATXA.js} +2 -2
  66. package/dist/cli/chunks/{chunk-XDBD4GXO.js → chunk-AUUJBXWX.js} +25 -20
  67. package/dist/cli/chunks/{chunk-AJ4YDSOI.js → chunk-BTVWA35P.js} +2 -2
  68. package/dist/cli/chunks/{chunk-WGDR2KIR.js → chunk-BZPE3LDO.js} +2 -2
  69. package/dist/cli/chunks/{chunk-HZ5NC6U5.js → chunk-CFWGGRE7.js} +1 -1
  70. package/dist/cli/chunks/{chunk-UYLYMWV5.js → chunk-CIAL4YRY.js} +2 -2
  71. package/dist/cli/chunks/{chunk-D6XVGFTI.js → chunk-CO3DX2AX.js} +2 -2
  72. package/dist/cli/chunks/{chunk-N3KEY4XJ.js → chunk-DDEOZPWJ.js} +2 -2
  73. package/dist/cli/chunks/{chunk-XWIUFYM3.js → chunk-DOBZPSKE.js} +1 -1
  74. package/dist/cli/chunks/{chunk-PX2B5TS2.js → chunk-DOFREOPQ.js} +2 -2
  75. package/dist/cli/chunks/{chunk-47V7FQGX.js → chunk-E44NNCEU.js} +2 -2
  76. package/dist/cli/chunks/{chunk-I6S35FRO.js → chunk-E6PF35JZ.js} +2 -2
  77. package/dist/cli/chunks/chunk-EBPJY4DI.js +3 -0
  78. package/dist/cli/chunks/{chunk-4V27J6YN.js → chunk-EH2S6AOR.js} +2 -2
  79. package/dist/cli/chunks/{chunk-AQTVVLNP.js → chunk-EIDJNT5C.js} +1 -1
  80. package/dist/cli/chunks/{chunk-SVHUYVUR.js → chunk-EJPK7OTR.js} +2 -2
  81. package/dist/cli/chunks/{chunk-HAROIAJE.js → chunk-EK5GMOSO.js} +1 -1
  82. package/dist/cli/chunks/{chunk-LCJTEUDC.js → chunk-ERN43HOX.js} +430 -433
  83. package/dist/cli/chunks/chunk-ETVAYGCB.js +180 -0
  84. package/dist/cli/chunks/chunk-EWPUQCN4.js +2 -0
  85. package/dist/cli/chunks/{chunk-AOFO4N32.js → chunk-FL32MTKT.js} +2 -2
  86. package/dist/cli/chunks/chunk-FLU5FDSC.js +742 -0
  87. package/dist/cli/chunks/{chunk-KR3M44CF.js → chunk-FUYOOKTH.js} +5 -5
  88. package/dist/cli/chunks/chunk-FWSGPE3V.js +12 -0
  89. package/dist/cli/chunks/chunk-FZHSG75I.js +3 -0
  90. package/dist/cli/chunks/{chunk-5D2I7JUP.js → chunk-G2IJFNZS.js} +2 -2
  91. package/dist/cli/chunks/{chunk-ABFDB4X3.js → chunk-G4CKPWF6.js} +1 -1
  92. package/dist/cli/chunks/{chunk-ETG7O5E5.js → chunk-G4FAPO57.js} +5 -5
  93. package/dist/cli/chunks/{chunk-W32YU3VI.js → chunk-G77MLBDF.js} +2 -2
  94. package/dist/cli/chunks/{chunk-5JWGCIQW.js → chunk-GBFUANTC.js} +1 -1
  95. package/dist/cli/chunks/{chunk-UOWHE77F.js → chunk-GVKVJJQX.js} +2 -2
  96. package/dist/cli/chunks/{chunk-2YH62JCN.js → chunk-GWJWSLDA.js} +2 -2
  97. package/dist/cli/chunks/{chunk-FLASM2XB.js → chunk-H43AFUKL.js} +2 -2
  98. package/dist/cli/chunks/chunk-H7BLYMNU.js +59 -0
  99. package/dist/cli/chunks/{chunk-5NS3USRW.js → chunk-HDJUYAZG.js} +1 -1
  100. package/dist/cli/chunks/{chunk-A6YIH4C4.js → chunk-HDNWSKHA.js} +2 -2
  101. package/dist/cli/chunks/{chunk-763SUL4B.js → chunk-HFFPYC4G.js} +2 -2
  102. package/dist/cli/chunks/{chunk-DGTLJNJH.js → chunk-HJ3XNTTJ.js} +2 -2
  103. package/dist/cli/chunks/{chunk-GBUIG3FS.js → chunk-HYXUN7BW.js} +1 -1
  104. package/dist/cli/chunks/{chunk-3LYU7BLY.js → chunk-I36CRDHF.js} +2 -2
  105. package/dist/cli/chunks/{chunk-GII5WVAK.js → chunk-I4K2HTQU.js} +1 -1
  106. package/dist/cli/chunks/chunk-IENZSO3K.js +4 -0
  107. package/dist/cli/chunks/chunk-IO5537OM.js +2 -0
  108. package/dist/cli/chunks/{chunk-AVB5QY2Q.js → chunk-IOZRKXR5.js} +2 -2
  109. package/dist/cli/chunks/chunk-ITL3IN2E.js +3 -0
  110. package/dist/cli/chunks/{chunk-YRBBBUJX.js → chunk-ITPGWGQS.js} +14 -14
  111. package/dist/cli/chunks/{chunk-JNNZK7KH.js → chunk-IW6WDGHM.js} +1 -1
  112. package/dist/cli/chunks/{chunk-SNBYYO6F.js → chunk-J4JMCZVA.js} +2 -2
  113. package/dist/cli/chunks/{chunk-PVIA2FPD.js → chunk-JFLU7L3W.js} +2 -2
  114. package/dist/cli/chunks/{chunk-GCWSX2NY.js → chunk-JGJXXAS6.js} +4 -4
  115. package/dist/cli/chunks/{chunk-KFUUIAR4.js → chunk-JUMICXM6.js} +2 -2
  116. package/dist/cli/chunks/{chunk-A4RU67VX.js → chunk-K2HBNYAZ.js} +2 -2
  117. package/dist/cli/chunks/{chunk-CTZJUV5I.js → chunk-K7V2WZNF.js} +1 -1
  118. package/dist/cli/chunks/{chunk-VRGCKBF7.js → chunk-KDI5JOYZ.js} +2 -2
  119. package/dist/cli/chunks/{chunk-C6RTMTEH.js → chunk-KJCIMNHS.js} +1 -1
  120. package/dist/cli/chunks/{chunk-N3NP6PTT.js → chunk-KKYO2NKV.js} +2 -2
  121. package/dist/cli/chunks/{chunk-XQ3DDY7X.js → chunk-KSE5TDM5.js} +2 -2
  122. package/dist/cli/chunks/{chunk-YZGSJG34.js → chunk-KSLLHFVY.js} +1 -1
  123. package/dist/cli/chunks/{chunk-VCMINU7K.js → chunk-KXS3Y2AX.js} +2 -2
  124. package/dist/cli/chunks/{chunk-REUFWGMA.js → chunk-LBX7M4LW.js} +2 -2
  125. package/dist/cli/chunks/{chunk-HCYQHWI2.js → chunk-LCVEEII4.js} +2 -2
  126. package/dist/cli/chunks/{chunk-OCESWNAZ.js → chunk-LD5CFK53.js} +54 -33
  127. package/dist/cli/chunks/{chunk-XOLDMK23.js → chunk-LPU6PAJE.js} +2 -2
  128. package/dist/cli/chunks/{chunk-KVBEGOJE.js → chunk-LQ4NUC6Q.js} +2 -2
  129. package/dist/cli/chunks/chunk-LRL56ZYL.js +21 -0
  130. package/dist/cli/chunks/{chunk-FL3OYGCS.js → chunk-LXQ3B4RY.js} +2 -2
  131. package/dist/cli/chunks/{chunk-PMCRCEW5.js → chunk-M5RQ6U3G.js} +2 -2
  132. package/dist/cli/chunks/{chunk-EFBLP43U.js → chunk-M5XYIQYZ.js} +2 -2
  133. package/dist/cli/chunks/chunk-M7XFBSIK.js +2 -0
  134. package/dist/cli/chunks/{chunk-Q3JVJRVJ.js → chunk-MIK4RBEH.js} +1 -1
  135. package/dist/cli/chunks/{chunk-NHZIWIQZ.js → chunk-NC6K7SCQ.js} +2 -2
  136. package/dist/cli/chunks/{chunk-TUYJ53V4.js → chunk-NKTWKYHB.js} +2 -2
  137. package/dist/cli/chunks/{chunk-2URBI52G.js → chunk-NPZOBSAN.js} +2 -2
  138. package/dist/cli/chunks/{chunk-7KII4CQG.js → chunk-NQZNMCZU.js} +2 -2
  139. package/dist/cli/chunks/{chunk-7JKB3Q7O.js → chunk-NT7JRHMH.js} +1 -1
  140. package/dist/cli/chunks/{chunk-MZS32SYS.js → chunk-NTB342NJ.js} +1 -1
  141. package/dist/cli/chunks/{chunk-ZVSLCEVC.js → chunk-O4JAKWWM.js} +13 -13
  142. package/dist/cli/chunks/chunk-OD5D4LSZ.js +2 -0
  143. package/dist/cli/chunks/{chunk-HWK5L7IJ.js → chunk-OH5V5EJW.js} +2 -2
  144. package/dist/cli/chunks/{chunk-7QTB5VJZ.js → chunk-OHR7C777.js} +2 -2
  145. package/dist/cli/chunks/{chunk-JAV5WPSY.js → chunk-OURITHFV.js} +2 -2
  146. package/dist/cli/chunks/{chunk-3CJCROMW.js → chunk-OV5RPLKV.js} +2 -2
  147. package/dist/cli/chunks/{chunk-ZXBCCO2H.js → chunk-OYJC3YON.js} +2 -2
  148. package/dist/cli/chunks/{chunk-2BA45H64.js → chunk-QDESWOZP.js} +2 -2
  149. package/dist/cli/chunks/chunk-R5GRABPQ.js +2 -0
  150. package/dist/cli/chunks/{chunk-GKPQ2GRR.js → chunk-R5LGV6GZ.js} +2 -2
  151. package/dist/cli/chunks/chunk-RBZCA7SD.js +12 -0
  152. package/dist/cli/chunks/chunk-RQMCZQN2.js +2 -0
  153. package/dist/cli/chunks/chunk-RTFKTKSO.js +4 -0
  154. package/dist/cli/chunks/{chunk-IFEIY3NQ.js → chunk-RTY7VSZB.js} +2 -2
  155. package/dist/cli/chunks/{chunk-UOJBR4J3.js → chunk-S6IYEBAI.js} +2 -2
  156. package/dist/cli/chunks/{chunk-JP4P3P3D.js → chunk-SMVVAVN2.js} +2 -2
  157. package/dist/cli/chunks/{chunk-TNMQVG4A.js → chunk-T5KHJ3J7.js} +5 -5
  158. package/dist/cli/chunks/{chunk-7QGYJ5OY.js → chunk-TCYSBC7Y.js} +1 -1
  159. package/dist/cli/chunks/{chunk-WRRCQ2UE.js → chunk-TFW7CCKS.js} +1 -1
  160. package/dist/cli/chunks/chunk-TL6OFMXF.js +6 -0
  161. package/dist/cli/chunks/{chunk-UNUTC6TX.js → chunk-U3LJNNVJ.js} +5 -5
  162. package/dist/cli/chunks/chunk-UKKYMW3S.js +3 -0
  163. package/dist/cli/chunks/{chunk-HTZJSQ3C.js → chunk-UMVSWQNB.js} +2 -2
  164. package/dist/cli/chunks/{chunk-PBZI2ZPV.js → chunk-UTTSH4NH.js} +3 -3
  165. package/dist/cli/chunks/{chunk-DDPPSSHW.js → chunk-V5AADCBC.js} +1 -1
  166. package/dist/cli/chunks/{chunk-OXTFSIGN.js → chunk-V7DA4HAK.js} +1 -1
  167. package/dist/cli/chunks/{chunk-32UTLDNY.js → chunk-VBK2YAYY.js} +2 -2
  168. package/dist/cli/chunks/{chunk-F4JYIRW2.js → chunk-VEEYL2CZ.js} +2 -2
  169. package/dist/cli/chunks/{chunk-BXO536GT.js → chunk-VLD7Z2ED.js} +3 -3
  170. package/dist/cli/chunks/chunk-VO3DRK4P.js +3 -0
  171. package/dist/cli/chunks/{chunk-6EPHNJTL.js → chunk-VWUZSNVC.js} +1 -1
  172. package/dist/cli/chunks/{chunk-XUIA5KMS.js → chunk-VYTILW4R.js} +2 -2
  173. package/dist/cli/chunks/{chunk-YZYDTABJ.js → chunk-WCAVIJ64.js} +1 -1
  174. package/dist/cli/chunks/{chunk-KIKWJM6J.js → chunk-WCVCOT4E.js} +2 -2
  175. package/dist/cli/chunks/{chunk-OG2UI6A3.js → chunk-WM3SRRA6.js} +2 -2
  176. package/dist/cli/chunks/chunk-X3PZCXWG.js +2 -0
  177. package/dist/cli/chunks/{chunk-P73W2K7T.js → chunk-X4J73KP3.js} +1 -1
  178. package/dist/cli/chunks/{chunk-37BIGMJI.js → chunk-XDI5X3FR.js} +1 -1
  179. package/dist/cli/chunks/{chunk-V5PXQSFS.js → chunk-XGBU3KEM.js} +2 -2
  180. package/dist/cli/chunks/{chunk-ICP2ORGI.js → chunk-XGPTZUKQ.js} +2 -2
  181. package/dist/cli/chunks/{chunk-6OOYIO3W.js → chunk-XJKZ7FTR.js} +2 -2
  182. package/dist/cli/chunks/{chunk-H3KBIWTO.js → chunk-XNLIWQYE.js} +2 -2
  183. package/dist/cli/chunks/{chunk-4W4DYVSH.js → chunk-XS2XF3YG.js} +6 -5
  184. package/dist/cli/chunks/chunk-Y7B5EUIJ.js +180 -0
  185. package/dist/cli/chunks/{chunk-QTVWUQTB.js → chunk-YBBT3YYG.js} +1 -1
  186. package/dist/cli/chunks/{chunk-7X2Y727E.js → chunk-YNOCQ2SL.js} +1 -1
  187. package/dist/cli/chunks/{chunk-DINZR5CF.js → chunk-YOCULVHR.js} +1 -1
  188. package/dist/cli/chunks/{chunk-KIXYKUCI.js → chunk-YPX2TV3M.js} +1 -1
  189. package/dist/cli/chunks/{chunk-OXZLKP6C.js → chunk-Z2EA7A4Z.js} +1 -1
  190. package/dist/cli/chunks/{chunk-W5VJRDDG.js → chunk-ZMC543GI.js} +2 -2
  191. package/dist/cli/chunks/chunk-ZMHCMJ4J.js +2 -0
  192. package/dist/cli/chunks/{chunk-72AMFDC7.js → chunk-ZP75ASUU.js} +1 -1
  193. package/dist/cli/chunks/{chunk-JUVHZG7I.js → chunk-ZQHDA4O7.js} +1 -1
  194. package/dist/cli/chunks/{ci-7SGRCFPS.js → ci-6GUFAZMJ.js} +2 -2
  195. package/dist/cli/chunks/{ci-config-MX3URPZA.js → ci-config-J665XNOX.js} +2 -2
  196. package/dist/cli/chunks/{ci-output-M47NJY6D.js → ci-output-PEQQQWVD.js} +2 -2
  197. package/dist/cli/chunks/{circuit-breaker-5GAK45SW.js → circuit-breaker-HHB2JSKH.js} +2 -2
  198. package/dist/cli/chunks/{claude-flow-setup-YXYSRH4Y.js → claude-flow-setup-JKUJRWPN.js} +2 -2
  199. package/dist/cli/chunks/client-HL2COSFM.js +2 -0
  200. package/dist/cli/chunks/{cline-installer-DLJ5QD5N.js → cline-installer-Y77BWTAN.js} +2 -2
  201. package/dist/cli/chunks/{code-ONKLMVQ2.js → code-LV2HAGJY.js} +3 -3
  202. package/dist/cli/chunks/{code-index-extractor-2232LGZN.js → code-index-extractor-4GKKSETB.js} +2 -2
  203. package/dist/cli/chunks/{codex-installer-UOWLYCMH.js → codex-installer-WMKBYE5Y.js} +2 -2
  204. package/dist/cli/chunks/{completions-MHX7GCC7.js → completions-SBGFAOIJ.js} +2 -2
  205. package/dist/cli/chunks/{complexity-analyzer-43ZUJKZU.js → complexity-analyzer-AQHFIJXC.js} +2 -2
  206. package/dist/cli/chunks/{continuedev-installer-6Q5JR4FF.js → continuedev-installer-26AYFS2E.js} +2 -2
  207. package/dist/cli/chunks/{copilot-installer-CZUMVHSI.js → copilot-installer-4UD3DK55.js} +2 -2
  208. package/dist/cli/chunks/core-handlers-IX7ATLM6.js +2 -0
  209. package/dist/cli/chunks/{cost-tracker-VS5ZW3XN.js → cost-tracker-TP4NZCG4.js} +2 -2
  210. package/dist/cli/chunks/{coverage-VWKTWZ6D.js → coverage-B2KIXHAI.js} +3 -3
  211. package/dist/cli/chunks/cross-domain-router-YYKLAPJO.js +2 -0
  212. package/dist/cli/chunks/{cursor-installer-YIFEMORH.js → cursor-installer-AVZEQZ4W.js} +2 -2
  213. package/dist/cli/chunks/daemon-P574WWBW.js +18 -0
  214. package/dist/cli/chunks/{daemon-SHWJSJW5.js → daemon-XM2A7LQU.js} +3 -3
  215. package/dist/cli/chunks/{dag-attention-scheduler-TCC2WM46.js → dag-attention-scheduler-MIWOZ6ET.js} +2 -2
  216. package/dist/cli/chunks/{detect-IGTWSQMA.js → detect-TYR7HT23.js} +2 -2
  217. package/dist/cli/chunks/{dist-node-TCOTJVQX.js → dist-node-2DGVQGLS.js} +2 -2
  218. package/dist/cli/chunks/{domain-handler-55ZVYODR.js → domain-handler-RRA4ZOMF.js} +2 -2
  219. package/dist/cli/chunks/{domain-plugins-GJRWOHQP.js → domain-plugins-IVZEZ5RB.js} +2 -2
  220. package/dist/cli/chunks/domain-transfer-DOBI67K6.js +2 -0
  221. package/dist/cli/chunks/dream-T6EP7B3F.js +2 -0
  222. package/dist/cli/chunks/{embed-and-insert-pattern-XAMNIKQL.js → embed-and-insert-pattern-VNIEOVPO.js} +2 -2
  223. package/dist/cli/chunks/{eval-GO22R4OZ.js → eval-QV4LVPUF.js} +2 -2
  224. package/dist/cli/chunks/{experience-capture-middleware-F2BRMJ3Y.js → experience-capture-middleware-DAPKT763.js} +3 -3
  225. package/dist/cli/chunks/{fast-paths-6RGPYALD.js → fast-paths-WVRFPHX7.js} +2 -2
  226. package/dist/cli/chunks/{feature-flags-ZGS3KLPH.js → feature-flags-DEFTUIYT.js} +2 -2
  227. package/dist/cli/chunks/{feature-flags-MIWQIOHU.js → feature-flags-O7ZXDDCD.js} +2 -2
  228. package/dist/cli/chunks/file-discovery-JYMVTDMU.js +2 -0
  229. package/dist/cli/chunks/fleet-FVAUMKUT.js +46 -0
  230. package/dist/cli/chunks/{gnn-wrapper-ALBJVW6T.js → gnn-wrapper-LS4LZJDR.js} +2 -2
  231. package/dist/cli/chunks/{heartbeat-handler-ZMM53NDY.js → heartbeat-handler-RFTERD4K.js} +4 -4
  232. package/dist/cli/chunks/heartbeat-scheduler-4N5MUJ7S.js +2 -0
  233. package/dist/cli/chunks/hnsw-adapter-ZPAJDSLR.js +2 -0
  234. package/dist/cli/chunks/hnsw-index-4CTH6RHB.js +2 -0
  235. package/dist/cli/chunks/{hnsw-legacy-bridge-RYUJPA7B.js → hnsw-legacy-bridge-GPKGFFHY.js} +2 -2
  236. package/dist/cli/chunks/{hnswlib-node-XM6XF3YV.js → hnswlib-node-PHL3F2PR.js} +2 -2
  237. package/dist/cli/chunks/{hooks-X62O7TJO.js → hooks-GYJ6D4QM.js} +36 -36
  238. package/dist/cli/chunks/hybrid-backend-AW6UTXQS.js +2 -0
  239. package/dist/cli/chunks/{hypergraph-engine-ZBWUPTVD.js → hypergraph-engine-YGEQPCKJ.js} +2 -2
  240. package/dist/cli/chunks/{hypergraph-handler-DUMF6SJV.js → hypergraph-handler-ZIMM647V.js} +3 -3
  241. package/dist/cli/chunks/impact-analyzer-MZK3JMSV.js +2 -0
  242. package/dist/cli/chunks/{init-guard-S4I2R46S.js → init-guard-VOMBXJXG.js} +2 -2
  243. package/dist/cli/chunks/{init-handler-L4KJHVWS.js → init-handler-PSMUBWK5.js} +26 -25
  244. package/dist/cli/chunks/init-wizard-FUC7KDVX.js +2 -0
  245. package/dist/cli/chunks/kernel-ZCPMCVMW.js +2 -0
  246. package/dist/cli/chunks/{kilocode-installer-GNNB5FCZ.js → kilocode-installer-2YNTFBWJ.js} +2 -2
  247. package/dist/cli/chunks/{kiro-installer-HR6ZAH7T.js → kiro-installer-XHJDPVAZ.js} +2 -2
  248. package/dist/cli/chunks/knowledge-graph-NUJKEDNF.js +2 -0
  249. package/dist/cli/chunks/{learning-4IEEOHJS.js → learning-GNSIDRNG.js} +24 -24
  250. package/dist/cli/chunks/{llm-router-ZFMORP36.js → llm-router-LQDM7IU2.js} +4 -4
  251. package/dist/cli/chunks/llm-router-service-B2BFBQ76.js +2 -0
  252. package/dist/cli/chunks/{load-ZM43WGDO.js → load-YATHI72E.js} +2 -2
  253. package/dist/cli/chunks/load-test-ZHQ2MUGO.js +2 -0
  254. package/dist/cli/chunks/mcp-4Y6GDLYK.js +2 -0
  255. package/dist/cli/chunks/{memory-W5FZGVAD.js → memory-OUW3L7H2.js} +5 -5
  256. package/dist/cli/chunks/memory-backend-AAMQG6WH.js +2 -0
  257. package/dist/cli/chunks/memory-handlers-G3LFF53U.js +2 -0
  258. package/dist/cli/chunks/{multi-model-executor-SXXGAQ2G.js → multi-model-executor-UBZJXAD2.js} +2 -2
  259. package/dist/cli/chunks/{opencode-installer-PIRBUAB5.js → opencode-installer-AMMNWVH5.js} +2 -2
  260. package/dist/cli/chunks/{orchestrator-H5SQCQTB.js → orchestrator-Y44WDOER.js} +69 -25
  261. package/dist/cli/chunks/pattern-null-store-RFNVA46O.js +2 -0
  262. package/dist/cli/chunks/{pattern-usage-recorder-XZTWDI2T.js → pattern-usage-recorder-ESR42RME.js} +2 -2
  263. package/dist/cli/chunks/pipeline-EDTS6OSC.js +19 -0
  264. package/dist/cli/chunks/{platform-KJDABL5C.js → platform-5WONJSUX.js} +2 -2
  265. package/dist/cli/chunks/{plugin-V4KSBVVM.js → plugin-IJXPCLD4.js} +2 -2
  266. package/dist/cli/chunks/{prime-radiant-advanced-wasm-JDHTKQAT.js → prime-radiant-advanced-wasm-5ECKGZK6.js} +2 -2
  267. package/dist/cli/chunks/project-root-7QL4KP5C.js +2 -0
  268. package/dist/cli/chunks/protocol-executor-2NW5BD4R.js +2 -0
  269. package/dist/cli/chunks/{protocol-handler-BNRONTQV.js → protocol-handler-DRD3GVNW.js} +2 -2
  270. package/dist/cli/chunks/{prove-ELLL6XMX.js → prove-KTGW2HMJ.js} +2 -2
  271. package/dist/cli/chunks/qe-reasoning-bank-G2JZOGKD.js +2 -0
  272. package/dist/cli/chunks/{quality-NH2QA4D4.js → quality-DV2WPRRS.js} +2 -2
  273. package/dist/cli/chunks/{quality-gate-JTKLF7GW.js → quality-gate-HFUAFVZC.js} +3 -3
  274. package/dist/cli/chunks/queen-coordinator-GRG5FT2A.js +2 -0
  275. package/dist/cli/chunks/{real-embeddings-J3KCKLPB.js → real-embeddings-RQRVOKVM.js} +2 -2
  276. package/dist/cli/chunks/{ref-validation-HNXQRP4F.js → ref-validation-QWSKS5OY.js} +2 -2
  277. package/dist/cli/chunks/{roocode-installer-COJ6CX6S.js → roocode-installer-RBAYRCHX.js} +2 -2
  278. package/dist/cli/chunks/router-LQB5SWAF.js +2 -0
  279. package/dist/cli/chunks/routing-feedback-OEEXA55N.js +2 -0
  280. package/dist/cli/chunks/{routing-handler-WM33ZILE.js → routing-handler-FMPP3XKO.js} +2 -2
  281. package/dist/cli/chunks/{ruvector-commands-BBLXEA7A.js → ruvector-commands-KZZT4HWF.js} +2 -2
  282. package/dist/cli/chunks/rvf-dual-writer-BZK4M7BO.js +2 -0
  283. package/dist/cli/chunks/rvf-migration-adapter-EZZUJL2E.js +2 -0
  284. package/dist/cli/chunks/{rvf-migration-coordinator-P7H6HCAG.js → rvf-migration-coordinator-7CHEV35N.js} +2 -2
  285. package/dist/cli/chunks/rvf-native-adapter-6COXTQZ3.js +2 -0
  286. package/dist/cli/chunks/{rvf-store-integrity-R5SPVRFP.js → rvf-store-integrity-Q2TH52SN.js} +2 -2
  287. package/dist/cli/chunks/safe-db-PE6G3L55.js +2 -0
  288. package/dist/cli/chunks/schedule-OLKQ6QYW.js +2 -0
  289. package/dist/cli/chunks/scheduler-LSGBDFAT.js +2 -0
  290. package/dist/cli/chunks/{security-AUDTRX3I.js → security-CUEA3UIM.js} +3 -3
  291. package/dist/cli/chunks/{shared-rvf-adapter-PVDGBGI2.js → shared-rvf-adapter-DROMBRV2.js} +2 -2
  292. package/dist/cli/chunks/{shared-rvf-dual-writer-LZ2GMSS2.js → shared-rvf-dual-writer-DBNABOP7.js} +2 -2
  293. package/dist/cli/chunks/sqlite-persistence-HH4DNTYH.js +2 -0
  294. package/dist/cli/chunks/{standalone-memory-XNOAI4G4.js → standalone-memory-IAHA3M6B.js} +2 -2
  295. package/dist/cli/chunks/{status-handler-K72XZE4T.js → status-handler-AFUCASTX.js} +2 -2
  296. package/dist/cli/chunks/{structural-health-NF3YY7U5.js → structural-health-AQRV6JJ6.js} +2 -2
  297. package/dist/cli/chunks/{sync-VBD5Y3E2.js → sync-GX7FMJHL.js} +2 -2
  298. package/dist/cli/chunks/sync-XW5TLZ7M.js +2 -0
  299. package/dist/cli/chunks/{task-handler-24S3WFVJ.js → task-handler-TFKVUTNF.js} +2 -2
  300. package/dist/cli/chunks/task-handlers-SS4ZDXNF.js +9 -0
  301. package/dist/cli/chunks/{test-XFSGQELD.js → test-D2XDJNDX.js} +17 -17
  302. package/dist/cli/chunks/test-runner-process-PSSBNNGR.js +2 -0
  303. package/dist/cli/chunks/{test-scheduling-VYUQ4CDE.js → test-scheduling-TS6I2PR7.js} +3 -3
  304. package/dist/cli/chunks/token-bootstrap-HBBLPCZ3.js +2 -0
  305. package/dist/cli/chunks/{token-usage-VLQ6WO2L.js → token-usage-3MBUX4PR.js} +2 -2
  306. package/dist/cli/chunks/{transformers-TOFMWWNM.js → transformers-ZWMQO3L2.js} +2 -2
  307. package/dist/cli/chunks/tree-sitter-wasm-parser-TYRQRJ2W.js +2 -0
  308. package/dist/cli/chunks/{types-JTWLBAZJ.js → types-5YEMGPSQ.js} +2 -2
  309. package/dist/cli/chunks/unified-memory-AGDZQ5XD.js +2 -0
  310. package/dist/cli/chunks/unified-memory-hnsw-X5TJ3JDE.js +2 -0
  311. package/dist/cli/chunks/unified-persistence-UCV7YETW.js +2 -0
  312. package/dist/cli/chunks/{upgrade-4ABM72T4.js → upgrade-2TPBKIHI.js} +2 -2
  313. package/dist/cli/chunks/{validate-UDJCWKXI.js → validate-XRAXXFW6.js} +2 -2
  314. package/dist/cli/chunks/{validate-swarm-TODOUWNN.js → validate-swarm-IYSCS3BZ.js} +2 -2
  315. package/dist/cli/chunks/visual-security-ZLXRIQZV.js +2 -0
  316. package/dist/cli/chunks/{web-tree-sitter-WBMAJPM5.js → web-tree-sitter-PZQ3ZG2P.js} +2 -2
  317. package/dist/cli/chunks/{windsurf-installer-BTT53TUL.js → windsurf-installer-U6XWFRVT.js} +2 -2
  318. package/dist/cli/chunks/witness-chain-CVIWYTD2.js +2 -0
  319. package/dist/cli/chunks/witness-chain-VBKORKOX.js +2 -0
  320. package/dist/cli/chunks/witness-chain-repair-K7YX2AO6.js +2 -0
  321. package/dist/cli/chunks/{witness-chain-verifier-FRY3LMGH.js → witness-chain-verifier-GUTC3W7N.js} +2 -2
  322. package/dist/cli/chunks/{witness-key-manager-X7QHQQWL.js → witness-key-manager-YBNKMOP6.js} +2 -2
  323. package/dist/cli/chunks/{workflow-QMZPAWQW.js → workflow-UAJUILFQ.js} +4 -4
  324. package/dist/cli/chunks/workflow-orchestrator-3ZN7MVCE.js +2 -0
  325. package/dist/cli/chunks/wrappers-AVZ3GPAL.js +2 -0
  326. package/dist/cli/commands/fleet.js +23 -13
  327. package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +9 -2
  328. package/dist/cli/commands/hooks-handlers/session-hooks.js +2 -2
  329. package/dist/cli/commands/hooks-handlers/stats-hooks.js +3 -2
  330. package/dist/cli/commands/hooks-handlers/tool-loop-guardrail.js +11 -6
  331. package/dist/cli/commands/learning.js +5 -3
  332. package/dist/cli/commands/ruvector-commands.js +2 -1
  333. package/dist/cli/commands/test.js +11 -2
  334. package/dist/cli/handlers/init-handler.d.ts +12 -0
  335. package/dist/cli/handlers/init-handler.js +27 -12
  336. package/dist/cli/utils/ci-output.d.ts +11 -0
  337. package/dist/cli/utils/ci-output.js +2 -0
  338. package/dist/cli/utils/fleet-operation.d.ts +32 -0
  339. package/dist/cli/utils/fleet-operation.js +71 -0
  340. package/dist/cli/utils/fleet-result.d.ts +31 -0
  341. package/dist/cli/utils/fleet-result.js +124 -0
  342. package/dist/cli/utils/progress.d.ts +16 -2
  343. package/dist/cli/utils/progress.js +31 -14
  344. package/dist/context/sources/git-source.js +6 -2
  345. package/dist/coordination/consensus/consensus-engine.js +3 -1
  346. package/dist/coordination/handlers/code-intelligence-handlers.js +63 -7
  347. package/dist/coordination/handlers/coverage-collection.js +3 -1
  348. package/dist/coordination/handlers/coverage-handlers.js +10 -1
  349. package/dist/coordination/handlers/coverage-runner.d.ts +3 -8
  350. package/dist/coordination/handlers/coverage-runner.js +6 -22
  351. package/dist/coordination/handlers/coverage-stderr.d.ts +23 -0
  352. package/dist/coordination/handlers/coverage-stderr.js +39 -0
  353. package/dist/coordination/handlers/coverage-target.js +6 -3
  354. package/dist/coordination/handlers/handler-utils.js +3 -1
  355. package/dist/coordination/handlers/requirements-handlers.js +18 -3
  356. package/dist/coordination/handlers/security-handlers.js +45 -21
  357. package/dist/coordination/handlers/test-execution-handlers.js +25 -7
  358. package/dist/coordination/mincut/queen-integration.d.ts +39 -1
  359. package/dist/coordination/mincut/queen-integration.js +83 -6
  360. package/dist/coordination/protocols/learning-consolidation-archive.d.ts +2 -6
  361. package/dist/coordination/protocols/learning-consolidation-archive.js +4 -27
  362. package/dist/coordination/protocols/learning-consolidation.d.ts +24 -0
  363. package/dist/coordination/protocols/learning-consolidation.js +71 -22
  364. package/dist/coordination/queen-coordinator.d.ts +1 -1
  365. package/dist/coordination/queen-coordinator.js +27 -10
  366. package/dist/coordination/queen-event-handlers.js +13 -0
  367. package/dist/coordination/queen-task-management.d.ts +18 -24
  368. package/dist/coordination/queen-task-management.js +62 -168
  369. package/dist/coordination/queen-task-queue.d.ts +41 -0
  370. package/dist/coordination/queen-task-queue.js +194 -0
  371. package/dist/coordination/queen-types.d.ts +1 -1
  372. package/dist/coordination/queen-work-stealing.d.ts +6 -1
  373. package/dist/coordination/queen-work-stealing.js +7 -4
  374. package/dist/coordination/result-saver-adapters.d.ts +15 -0
  375. package/dist/coordination/result-saver-adapters.js +57 -0
  376. package/dist/coordination/result-saver.d.ts +1 -1
  377. package/dist/coordination/result-saver.js +8 -5
  378. package/dist/coordination/task-executability.d.ts +12 -0
  379. package/dist/coordination/task-executability.js +27 -0
  380. package/dist/coordination/workflow-orchestrator.d.ts +6 -0
  381. package/dist/coordination/workflow-orchestrator.js +22 -8
  382. package/dist/coordination/yaml-pipeline-loader.js +5 -2
  383. package/dist/domains/code-intelligence/index-path-guard.d.ts +5 -2
  384. package/dist/domains/code-intelligence/index-path-guard.js +20 -50
  385. package/dist/domains/code-intelligence/plugin.js +5 -1
  386. package/dist/domains/code-intelligence/services/metric-collector/index.d.ts +2 -2
  387. package/dist/domains/code-intelligence/services/metric-collector/index.js +2 -3
  388. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.d.ts +1 -1
  389. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +11 -36
  390. package/dist/domains/code-intelligence/services/metric-collector/test-counter.d.ts +1 -1
  391. package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +45 -103
  392. package/dist/domains/code-intelligence/services/product-factors-bridge.js +7 -4
  393. package/dist/domains/contract-testing/services/api-compatibility.js +7 -6
  394. package/dist/domains/contract-testing/services/contract-validator.js +6 -4
  395. package/dist/domains/contract-testing/services/schema-validator.js +8 -5
  396. package/dist/domains/coverage-analysis/services/coverage-parser.js +19 -10
  397. package/dist/domains/defect-intelligence/interfaces.d.ts +2 -0
  398. package/dist/domains/defect-intelligence/plugin.js +11 -2
  399. package/dist/domains/defect-intelligence/prediction-history.d.ts +27 -0
  400. package/dist/domains/defect-intelligence/prediction-history.js +68 -0
  401. package/dist/domains/defect-intelligence/services/defect-predictor.js +25 -10
  402. package/dist/domains/enterprise-integration/services/message-broker-service.js +3 -2
  403. package/dist/domains/enterprise-integration/services/odata-service.js +2 -1
  404. package/dist/domains/enterprise-integration/services/sap-integration-service.js +3 -2
  405. package/dist/domains/learning-optimization/active-patterns.d.ts +2 -2
  406. package/dist/domains/learning-optimization/active-patterns.js +2 -2
  407. package/dist/domains/learning-optimization/coordinator.js +9 -5
  408. package/dist/domains/learning-optimization/interfaces.d.ts +8 -2
  409. package/dist/domains/learning-optimization/pattern-archive.d.ts +31 -0
  410. package/dist/domains/learning-optimization/pattern-archive.js +56 -0
  411. package/dist/domains/learning-optimization/pattern-consolidation.d.ts +12 -0
  412. package/dist/domains/learning-optimization/pattern-consolidation.js +41 -0
  413. package/dist/domains/learning-optimization/reward-source.d.ts +13 -0
  414. package/dist/domains/learning-optimization/reward-source.js +8 -1
  415. package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +5 -3
  416. package/dist/domains/learning-optimization/services/learning-coordinator.js +47 -59
  417. package/dist/domains/learning-optimization/services/metrics-optimizer.js +14 -4
  418. package/dist/domains/learning-optimization/services/production-intel.js +3 -1
  419. package/dist/domains/security-compliance/generic-finding-dedup.d.ts +40 -0
  420. package/dist/domains/security-compliance/generic-finding-dedup.js +63 -0
  421. package/dist/domains/security-compliance/plugin.js +17 -3
  422. package/dist/domains/security-compliance/sast-path-guard.d.ts +9 -0
  423. package/dist/domains/security-compliance/sast-path-guard.js +17 -0
  424. package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +46 -56
  425. package/dist/domains/security-compliance/services/scanners/dast-helpers.js +76 -91
  426. package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +52 -62
  427. package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +21 -1
  428. package/dist/domains/security-compliance/services/scanners/dast-scanner.js +29 -24
  429. package/dist/domains/security-compliance/services/scanners/dependency-resolver.js +14 -6
  430. package/dist/domains/security-compliance/services/scanners/sast-scanner.js +4 -2
  431. package/dist/domains/security-compliance/services/scanners/scanner-orchestrator.js +4 -1
  432. package/dist/domains/security-compliance/services/security-auditor-sast.js +2 -2
  433. package/dist/domains/security-compliance/services/security-auditor-secrets.js +2 -2
  434. package/dist/domains/security-compliance/services/security-auditor.js +3 -2
  435. package/dist/domains/test-execution/coordinator.d.ts +6 -0
  436. package/dist/domains/test-execution/coordinator.js +28 -22
  437. package/dist/domains/test-execution/interfaces.d.ts +36 -1
  438. package/dist/domains/test-execution/plugin.js +19 -4
  439. package/dist/domains/test-execution/services/flaky-detector.js +9 -7
  440. package/dist/domains/test-execution/services/retry-handler.js +46 -7
  441. package/dist/domains/test-execution/services/retry-outcome.d.ts +18 -0
  442. package/dist/domains/test-execution/services/retry-outcome.js +53 -0
  443. package/dist/domains/test-execution/services/runner-test-cases.d.ts +11 -0
  444. package/dist/domains/test-execution/services/runner-test-cases.js +20 -2
  445. package/dist/domains/test-execution/services/test-executor.js +8 -8
  446. package/dist/domains/test-generation/coordinator.js +2 -2
  447. package/dist/domains/test-generation/plugin.js +7 -2
  448. package/dist/domains/test-generation/services/pattern-matcher.js +4 -4
  449. package/dist/domains/test-generation/services/test-data-generator.js +3 -1
  450. package/dist/domains/test-generation/services/test-generator.js +2 -2
  451. package/dist/domains/visual-accessibility/services/axe-core-audit.js +1 -1
  452. package/dist/governance/evolution-pipeline-integration.js +3 -1
  453. package/dist/hooks/cross-phase-hooks.js +5 -2
  454. package/dist/init/init-wizard-steps.js +5 -1
  455. package/dist/init/phases/04-database.js +7 -0
  456. package/dist/init/phases/10-workers.js +50 -6
  457. package/dist/init/phases/12-verification.js +14 -4
  458. package/dist/init/settings-merge.js +7 -4
  459. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +7 -0
  460. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +31 -2
  461. package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +3 -1
  462. package/dist/integrations/agentic-flow/reasoning-bank/index.js +5 -0
  463. package/dist/integrations/browser/agent-browser/client.js +37 -52
  464. package/dist/integrations/browser/agent-browser/command-executor.d.ts +33 -27
  465. package/dist/integrations/browser/agent-browser/command-executor.js +53 -54
  466. package/dist/integrations/browser/agent-browser/session-manager.d.ts +1 -1
  467. package/dist/integrations/browser/agent-browser/session-manager.js +8 -9
  468. package/dist/integrations/browser/web-content-fetcher.js +9 -3
  469. package/dist/integrations/ruvector/filter-adapter.js +2 -1
  470. package/dist/integrations/vibium/client.js +2 -2
  471. package/dist/integrations/vibium/runtime.d.ts +1 -1
  472. package/dist/integrations/vibium/runtime.js +14 -11
  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 +9 -3
  481. package/dist/learning/dream/dream-insights-pruner.js +16 -30
  482. package/dist/learning/dream/index.d.ts +3 -2
  483. package/dist/learning/dream/index.js +3 -1
  484. package/dist/learning/dream/insight-generator.js +5 -4
  485. package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -1
  486. package/dist/learning/dream/rvcow-branch-manager.js +8 -1
  487. package/dist/learning/dream/speculative-dreamer.d.ts +50 -74
  488. package/dist/learning/dream/speculative-dreamer.js +64 -111
  489. package/dist/learning/dream/spreading-activation.d.ts +2 -1
  490. package/dist/learning/dream/spreading-activation.js +15 -6
  491. package/dist/learning/experience-capture.d.ts +9 -0
  492. package/dist/learning/experience-capture.js +18 -4
  493. package/dist/learning/memory-auditor.js +3 -1
  494. package/dist/learning/qe-patterns.js +2 -1
  495. package/dist/learning/qe-reasoning-bank-types.d.ts +17 -2
  496. package/dist/learning/qe-reasoning-bank.js +22 -11
  497. package/dist/learning/real-qe-reasoning-bank.d.ts +19 -0
  498. package/dist/learning/real-qe-reasoning-bank.js +70 -38
  499. package/dist/learning/sqlite-persistence.d.ts +6 -0
  500. package/dist/learning/sqlite-persistence.js +16 -2
  501. package/dist/learning/usage-outcome.d.ts +68 -0
  502. package/dist/learning/usage-outcome.js +84 -0
  503. package/dist/mcp/background-workers.d.ts +13 -1
  504. package/dist/mcp/background-workers.js +17 -3
  505. package/dist/mcp/bundle.js +612 -580
  506. package/dist/mcp/handlers/core-handlers.js +11 -0
  507. package/dist/mcp/handlers/domain-handler-configs.d.ts +7 -0
  508. package/dist/mcp/handlers/domain-handler-configs.js +19 -5
  509. package/dist/mcp/handlers/handler-factory.d.ts +2 -1
  510. package/dist/mcp/handlers/handler-factory.js +36 -15
  511. package/dist/mcp/handlers/orchestrate-routes.d.ts +36 -0
  512. package/dist/mcp/handlers/orchestrate-routes.js +88 -0
  513. package/dist/mcp/handlers/task-handlers.d.ts +16 -0
  514. package/dist/mcp/handlers/task-handlers.js +77 -24
  515. package/dist/mcp/handlers/validation-pipeline-handler.js +14 -10
  516. package/dist/mcp/protocol-server.js +10 -8
  517. package/dist/mcp/qe-tool-bridge.js +3 -0
  518. package/dist/mcp/security/schema-validator.js +3 -2
  519. package/dist/mcp/services/reasoning-bank-service.d.ts +3 -1
  520. package/dist/mcp/services/reasoning-bank-service.js +4 -0
  521. package/dist/mcp/tool-annotations.js +4 -1
  522. package/dist/mcp/tools/code-intelligence/c4.js +11 -1
  523. package/dist/mcp/tools/coherence/check.js +1 -0
  524. package/dist/mcp/tools/coherence/consensus.js +4 -2
  525. package/dist/mcp/tools/coverage-analysis/index.js +31 -2
  526. package/dist/mcp/tools/learning-optimization/dream.d.ts +8 -8
  527. package/dist/mcp/tools/learning-optimization/dream.js +38 -34
  528. package/dist/mcp/tools/learning-optimization/optimize.d.ts +18 -2
  529. package/dist/mcp/tools/learning-optimization/optimize.js +59 -12
  530. package/dist/mcp/tools/mincut/index.js +3 -0
  531. package/dist/mcp/tools/quality-assessment/gate.js +19 -1
  532. package/dist/mcp/tools/qx-analysis/analyze.js +1 -0
  533. package/dist/mcp/tools/requirements-validation/quality-criteria.js +17 -3
  534. package/dist/mcp/tools/security-compliance/scan.js +4 -2
  535. package/dist/mcp/tools/test-execution/e2e-execute.js +2 -2
  536. package/dist/mcp/tools/test-execution/execute.js +3 -2
  537. package/dist/memory/crdt/crdt-store.js +5 -0
  538. package/dist/memory/crdt/lww-register.js +12 -2
  539. package/dist/migration/agent-compat.js +7 -5
  540. package/dist/migrations/20261018_add_dream_insights_archive.d.ts +27 -0
  541. package/dist/migrations/20261018_add_dream_insights_archive.js +57 -0
  542. package/dist/optimization/early-exit-token-optimizer.js +3 -1
  543. package/dist/planning/goap-planner.js +5 -0
  544. package/dist/planning/plan-executor.js +5 -0
  545. package/dist/shared/git/git-analyzer.d.ts +49 -0
  546. package/dist/shared/git/git-analyzer.js +159 -319
  547. package/dist/shared/git/git-process.d.ts +22 -0
  548. package/dist/shared/git/git-process.js +37 -0
  549. package/dist/shared/git/index.d.ts +1 -0
  550. package/dist/shared/git/index.js +1 -0
  551. package/dist/shared/io/confined-read.d.ts +74 -0
  552. package/dist/shared/io/confined-read.js +256 -0
  553. package/dist/shared/io/file-reader.d.ts +6 -6
  554. package/dist/shared/io/file-reader.js +16 -42
  555. package/dist/shared/io/payload-path-guard.d.ts +75 -0
  556. package/dist/shared/io/payload-path-guard.js +190 -0
  557. package/dist/shared/llm/providers/claude-code.js +4 -1
  558. package/dist/shared/llm/router/agent-router-config.js +2 -1
  559. package/dist/shared/llm/translation/tool-translator.js +2 -1
  560. package/dist/shared/native-module-errors.d.ts +51 -0
  561. package/dist/shared/native-module-errors.js +129 -0
  562. package/dist/shared/safe-db.js +14 -4
  563. package/dist/shared/security/osv-client.js +4 -1
  564. package/dist/shared/test-runner-args.d.ts +5 -0
  565. package/dist/shared/test-runner-args.js +6 -1
  566. package/dist/shared/test-runner-process.d.ts +6 -0
  567. package/dist/shared/test-runner-process.js +14 -0
  568. package/dist/shared/test-runner-verdict.d.ts +9 -1
  569. package/dist/shared/test-runner-verdict.js +15 -4
  570. package/dist/shared/types/test-frameworks.js +2 -2
  571. package/dist/shared/utils/namespaced-search.d.ts +14 -0
  572. package/dist/shared/utils/namespaced-search.js +19 -1
  573. package/dist/shared/utils/safe-expression-evaluator.js +4 -3
  574. package/dist/strange-loop/infra-healing/recovery-playbook.js +13 -3
  575. package/dist/sync/readers/json-reader.js +2 -1
  576. package/dist/validation/anchor-set.d.ts +6 -0
  577. package/dist/validation/anchor-set.js +9 -1
  578. package/dist/validation/gate-reexecute.js +7 -4
  579. package/dist/validation/quality-gate-runner.d.ts +7 -1
  580. package/dist/validation/quality-gate-runner.js +3 -3
  581. package/dist/workers/daemon.js +13 -1
  582. package/dist/workers/quality-daemon/git-watcher.js +9 -9
  583. package/dist/workers/workers/defect-predictor.d.ts +8 -3
  584. package/dist/workers/workers/defect-predictor.js +48 -49
  585. package/dist/workers/workers/learning-consolidation.d.ts +2 -0
  586. package/dist/workers/workers/learning-consolidation.js +12 -1
  587. package/dist/workflows/browser/workflow-loader.js +8 -5
  588. package/package.json +1 -1
  589. package/dist/cli/chunks/adapter-R2Q4QGXQ.js +0 -2
  590. package/dist/cli/chunks/agent-booster-wasm-427FRKWG.js +0 -2
  591. package/dist/cli/chunks/aqe-learning-engine-3RENLQWP.js +0 -2
  592. package/dist/cli/chunks/base-67DXSAYM.js +0 -2
  593. package/dist/cli/chunks/browser-CT3MTV6G.js +0 -4
  594. package/dist/cli/chunks/browser-workflow-NDXRROWZ.js +0 -2
  595. package/dist/cli/chunks/chunk-2XITOPYV.js +0 -6
  596. package/dist/cli/chunks/chunk-4URT6JO2.js +0 -2
  597. package/dist/cli/chunks/chunk-5LAAZLUC.js +0 -4
  598. package/dist/cli/chunks/chunk-6PXA2BQJ.js +0 -742
  599. package/dist/cli/chunks/chunk-6YL6JOQB.js +0 -4
  600. package/dist/cli/chunks/chunk-7DMA5NYL.js +0 -4
  601. package/dist/cli/chunks/chunk-AR2E4B7K.js +0 -6
  602. package/dist/cli/chunks/chunk-F2SQPP6U.js +0 -4
  603. package/dist/cli/chunks/chunk-FJ4VTLLK.js +0 -2
  604. package/dist/cli/chunks/chunk-FV3NHVC7.js +0 -59
  605. package/dist/cli/chunks/chunk-G3BKZNFL.js +0 -120
  606. package/dist/cli/chunks/chunk-GR3JYE5A.js +0 -2
  607. package/dist/cli/chunks/chunk-J3WGK22W.js +0 -2
  608. package/dist/cli/chunks/chunk-JEP4ULR6.js +0 -21
  609. package/dist/cli/chunks/chunk-JK2ME6IT.js +0 -2
  610. package/dist/cli/chunks/chunk-KHSRIPBP.js +0 -180
  611. package/dist/cli/chunks/chunk-KTSLTZSG.js +0 -2
  612. package/dist/cli/chunks/chunk-N5PDFGCQ.js +0 -180
  613. package/dist/cli/chunks/chunk-O3JLOVZX.js +0 -4
  614. package/dist/cli/chunks/chunk-P2CXVNKK.js +0 -4
  615. package/dist/cli/chunks/chunk-THAY7WHO.js +0 -12
  616. package/dist/cli/chunks/chunk-VU2EL424.js +0 -14
  617. package/dist/cli/chunks/chunk-VXZJOKOX.js +0 -2
  618. package/dist/cli/chunks/chunk-VYLM2YV5.js +0 -12
  619. package/dist/cli/chunks/chunk-XZJ2O3VC.js +0 -2
  620. package/dist/cli/chunks/client-ZP3CTVRF.js +0 -2
  621. package/dist/cli/chunks/core-handlers-JSRXQWPE.js +0 -2
  622. package/dist/cli/chunks/cross-domain-router-7UKODQWG.js +0 -2
  623. package/dist/cli/chunks/daemon-YIFT46FH.js +0 -34
  624. package/dist/cli/chunks/domain-transfer-6EF75EKU.js +0 -2
  625. package/dist/cli/chunks/dream-UDLM6M55.js +0 -2
  626. package/dist/cli/chunks/file-discovery-THWOUQ7Z.js +0 -2
  627. package/dist/cli/chunks/fleet-ADL57COA.js +0 -44
  628. package/dist/cli/chunks/heartbeat-scheduler-HGOC5KH3.js +0 -2
  629. package/dist/cli/chunks/hnsw-adapter-EPSA6AP7.js +0 -2
  630. package/dist/cli/chunks/hnsw-index-RMFOPYGY.js +0 -2
  631. package/dist/cli/chunks/hybrid-backend-NZ3G4WBX.js +0 -2
  632. package/dist/cli/chunks/impact-analyzer-WZC6NHFP.js +0 -2
  633. package/dist/cli/chunks/init-wizard-422UZYQ5.js +0 -2
  634. package/dist/cli/chunks/kernel-N7PJ6FCE.js +0 -2
  635. package/dist/cli/chunks/knowledge-graph-SZCVQF37.js +0 -2
  636. package/dist/cli/chunks/llm-router-service-4DE5WDUZ.js +0 -2
  637. package/dist/cli/chunks/load-test-POMIF4Q4.js +0 -2
  638. package/dist/cli/chunks/mcp-CRZKZE37.js +0 -2
  639. package/dist/cli/chunks/memory-backend-4P6AHSOY.js +0 -2
  640. package/dist/cli/chunks/memory-handlers-NK6NV3GE.js +0 -2
  641. package/dist/cli/chunks/pattern-null-store-CCHQHGQG.js +0 -2
  642. package/dist/cli/chunks/pipeline-5LMLBIJ7.js +0 -19
  643. package/dist/cli/chunks/project-root-X72FSM2F.js +0 -2
  644. package/dist/cli/chunks/protocol-executor-QW6XN6QN.js +0 -2
  645. package/dist/cli/chunks/qe-reasoning-bank-ZD3WF647.js +0 -2
  646. package/dist/cli/chunks/queen-coordinator-S4U4MKK2.js +0 -2
  647. package/dist/cli/chunks/router-CXZKOOTR.js +0 -2
  648. package/dist/cli/chunks/routing-feedback-IYFANYY5.js +0 -2
  649. package/dist/cli/chunks/rvf-dual-writer-HCLQ5WUQ.js +0 -2
  650. package/dist/cli/chunks/rvf-migration-adapter-XCLUWOO3.js +0 -2
  651. package/dist/cli/chunks/rvf-native-adapter-MRT5H3IP.js +0 -2
  652. package/dist/cli/chunks/safe-db-WFODRGVZ.js +0 -2
  653. package/dist/cli/chunks/schedule-RO55OQXG.js +0 -2
  654. package/dist/cli/chunks/scheduler-XXMJCH24.js +0 -2
  655. package/dist/cli/chunks/sqlite-persistence-AWRIS4MK.js +0 -2
  656. package/dist/cli/chunks/sync-UVXA6CT2.js +0 -2
  657. package/dist/cli/chunks/task-handlers-GUYW2EPJ.js +0 -9
  658. package/dist/cli/chunks/token-bootstrap-EDK6FNQ3.js +0 -2
  659. package/dist/cli/chunks/tree-sitter-wasm-parser-MI3NZKUD.js +0 -2
  660. package/dist/cli/chunks/unified-memory-6JWHV6EF.js +0 -2
  661. package/dist/cli/chunks/unified-memory-hnsw-4UANU6NU.js +0 -2
  662. package/dist/cli/chunks/unified-persistence-KGGNA46H.js +0 -2
  663. package/dist/cli/chunks/visual-security-6VZNQLH7.js +0 -2
  664. package/dist/cli/chunks/witness-chain-AKKHWEWU.js +0 -2
  665. package/dist/cli/chunks/witness-chain-TATPXQRK.js +0 -2
  666. package/dist/cli/chunks/witness-chain-repair-2HGJGE7O.js +0 -2
  667. package/dist/cli/chunks/workflow-orchestrator-4GAW7HNZ.js +0 -2
  668. package/dist/cli/chunks/wrappers-ZD5NBHYI.js +0 -2
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Agentic QE v3 - `aqe fleet run` result summary (#1125 review)
3
+ *
4
+ * A completed task is not a passed check. The summary shows what each
5
+ * operation's handler returned and turns it into a verdict:
6
+ * - scan fails on a critical or high finding, or when the scan evidence
7
+ * says not every requested file was analyzed;
8
+ * - test fails when no test was generated or a generated test failed
9
+ * the test quality gate;
10
+ * - analyze fails when coverage over the collected metrics is below the
11
+ * threshold (an uncollected metric is not counted as 0%).
12
+ * A result without the expected shape fails rather than passing unread.
13
+ */
14
+ import chalk from 'chalk';
15
+ import { FLEET_COVERAGE_THRESHOLD } from './fleet-operation.js';
16
+ import { thresholdVerdict } from '../../coordination/handlers/coverage-target.js';
17
+ const SEVERITIES = ['critical', 'high', 'medium', 'low', 'informational'];
18
+ const MAX_LISTED_FINDINGS = 10;
19
+ const asRecord = (value) => value !== null && typeof value === 'object' ? value : undefined;
20
+ const pct = (value) => typeof value === 'number' ? `${value}%` : 'n/a';
21
+ function summarizeScan(result) {
22
+ const summary = asRecord(result.summary);
23
+ const findings = Array.isArray(result.vulnerabilities) ? result.vulnerabilities : undefined;
24
+ if (!summary || !findings)
25
+ return unreadable('scan');
26
+ const count = (severity) => Number(summary[severity] ?? 0);
27
+ const coverage = asRecord(result.coverage);
28
+ const evidence = asRecord(result.evidence);
29
+ const completeness = typeof evidence?.completeness === 'string' ? evidence.completeness : 'unknown';
30
+ const lines = [
31
+ `Findings: ${SEVERITIES.map(s => `${s} ${count(s)}`).join(', ')}`,
32
+ `Files scanned: ${coverage?.filesScanned ?? 'n/a'} (evidence: ${completeness})`,
33
+ ...findings.slice(0, MAX_LISTED_FINDINGS).map(f => ` [${f.severity ?? '?'}] ${f.title ?? 'untitled'} @ ${f.location?.file ?? '?'}:${f.location?.line ?? '?'}`),
34
+ ];
35
+ if (findings.length > MAX_LISTED_FINDINGS)
36
+ lines.push(` … ${findings.length - MAX_LISTED_FINDINGS} more`);
37
+ const reasons = [];
38
+ if (count('critical') + count('high') > 0)
39
+ reasons.push(`${count('critical')} critical and ${count('high')} high findings`);
40
+ if (completeness !== 'complete')
41
+ reasons.push(`scan evidence is ${completeness}: not every requested file was analyzed`);
42
+ return { lines, passed: reasons.length === 0, reasons };
43
+ }
44
+ function summarizeTests(result) {
45
+ if (!Array.isArray(result.tests))
46
+ return unreadable('test');
47
+ const tests = result.tests;
48
+ const assertions = tests.reduce((sum, t) => sum + (typeof t.assertions === 'number' ? t.assertions : 0), 0);
49
+ const modes = [...new Set(tests.map(t => t.generationMode).filter((m) => typeof m === 'string'))];
50
+ const gateFailed = tests.filter(t => asRecord(t.qualityGateResult)?.passed === false);
51
+ const lines = [
52
+ `Tests generated: ${tests.length}, assertions: ${assertions}` +
53
+ (modes.length > 0 ? `, generation mode: ${modes.join(', ')}` : ''),
54
+ `Quality gate: ${gateFailed.length === 0 ? 'passed' : `failed for ${gateFailed.length} of ${tests.length} tests`}`,
55
+ ...gateFailed.slice(0, MAX_LISTED_FINDINGS).map(t => ` ${t.testFile ?? t.name ?? t.id}`),
56
+ ];
57
+ const reasons = [];
58
+ if (tests.length === 0)
59
+ reasons.push('no tests were generated');
60
+ if (gateFailed.length > 0)
61
+ reasons.push(`${gateFailed.length} generated tests failed the test quality gate`);
62
+ return { lines, passed: reasons.length === 0, reasons };
63
+ }
64
+ function summarizeCoverage(result) {
65
+ const summary = asRecord(result.summary);
66
+ if (!summary || typeof summary.line !== 'number')
67
+ return unreadable('analyze');
68
+ const collected = asRecord(result.collected);
69
+ const isCollected = (name) => collected?.[name] !== false;
70
+ // An uncollected metric is 0 by construction (#1027 B2): show it as n/a and
71
+ // leave it out of the verdict, as `aqe coverage` does (#995).
72
+ const metric = (name) => isCollected(name) ? pct(summary[name]) : 'n/a (not collected)';
73
+ const num = (name) => typeof summary[name] === 'number' ? summary[name] : 0;
74
+ const verdict = thresholdVerdict({ line: num('line'), branch: num('branch'), function: num('function'), statement: num('statement') }, FLEET_COVERAGE_THRESHOLD, { branch: isCollected('branch'), function: isCollected('function'), statement: isCollected('statement') });
75
+ const lines = [
76
+ `Coverage: line ${pct(summary.line)}, branch ${metric('branch')}, function ${metric('function')}, ` +
77
+ `statement ${metric('statement')} over ${summary.files ?? 'n/a'} files`,
78
+ `Overall over collected metrics: ${verdict.overall.toFixed(1)}% (threshold ${FLEET_COVERAGE_THRESHOLD}%)`,
79
+ ];
80
+ const reasons = verdict.meetsThreshold ? [] : [`coverage is below the ${FLEET_COVERAGE_THRESHOLD}% threshold`];
81
+ return { lines, passed: reasons.length === 0, reasons };
82
+ }
83
+ function unreadable(operation) {
84
+ const reason = `the ${operation} result has no readable summary`;
85
+ return { lines: [`Result: ${reason}`], passed: false, reasons: [reason] };
86
+ }
87
+ /** Summarize one completed task's result for its fleet operation. */
88
+ export function summarizeFleetResult(operation, result) {
89
+ const record = asRecord(result);
90
+ if (!record)
91
+ return unreadable(operation);
92
+ switch (operation) {
93
+ case 'scan': return summarizeScan(record);
94
+ case 'test': return summarizeTests(record);
95
+ case 'analyze': return summarizeCoverage(record);
96
+ }
97
+ }
98
+ /**
99
+ * Print each distinct worker result once and the verdict over all workers.
100
+ * Returns whether the operation passed.
101
+ */
102
+ export function reportFleetVerdict(operation, workers, log = line => console.log(line)) {
103
+ const summaries = workers.filter(w => w.success).map(w => summarizeFleetResult(operation, w.result));
104
+ const shown = new Set();
105
+ for (const summary of summaries) {
106
+ const text = summary.lines.join('\n');
107
+ if (shown.has(text))
108
+ continue;
109
+ shown.add(text);
110
+ log('');
111
+ for (const line of summary.lines)
112
+ log(` ${line}`);
113
+ }
114
+ const incomplete = workers.filter(w => !w.success).length;
115
+ const reasons = [...new Set(summaries.flatMap(s => s.reasons))];
116
+ if (incomplete > 0)
117
+ reasons.unshift(`${incomplete} of ${workers.length} workers did not complete`);
118
+ log('');
119
+ log(reasons.length === 0
120
+ ? chalk.green(' Verdict: PASSED')
121
+ : chalk.red(` Verdict: FAILED (${reasons.join('; ')})`));
122
+ return reasons.length === 0;
123
+ }
124
+ //# sourceMappingURL=fleet-result.js.map
@@ -21,6 +21,14 @@ export interface FleetProgressOptions {
21
21
  showPercentage?: boolean;
22
22
  format?: string;
23
23
  }
24
+ /** Options for {@link FleetProgressManager.stop}. */
25
+ export interface FleetProgressStopOptions {
26
+ /**
27
+ * The operation's verdict failed (#1168). The agents still completed, but
28
+ * the summary line must not call that a success.
29
+ */
30
+ verdictFailed?: boolean;
31
+ }
24
32
  export interface SpinnerOptions {
25
33
  text: string;
26
34
  color?: 'cyan' | 'green' | 'yellow' | 'red' | 'blue' | 'magenta' | 'white';
@@ -43,7 +51,7 @@ export declare class FleetProgressManager {
43
51
  /**
44
52
  * Start the fleet progress display
45
53
  */
46
- start(totalAgents: number): void;
54
+ start(_totalAgents: number): void;
47
55
  /**
48
56
  * Add an agent to track
49
57
  */
@@ -63,11 +71,17 @@ export declare class FleetProgressManager {
63
71
  /**
64
72
  * Stop the progress display
65
73
  */
66
- stop(): void;
74
+ stop(options?: FleetProgressStopOptions): void;
67
75
  /**
68
76
  * Update the fleet-level progress bar
69
77
  */
70
78
  private updateFleetProgress;
79
+ /**
80
+ * Create a bar and apply its payload. Without a TTY, cli-progress's
81
+ * MultiBar.create() returns before starting the bar, dropping the payload,
82
+ * so the final render printed a literal `{name}` (#1168).
83
+ */
84
+ private createBar;
71
85
  private getAgentNameDisplay;
72
86
  private getStatusIcon;
73
87
  private truncateName;
@@ -13,6 +13,7 @@ import { getCLIConfig, shouldUseColors } from '../config/cli-config.js';
13
13
  // ============================================================================
14
14
  // Fleet Progress Manager - Multi-bar progress for parallel agents
15
15
  // ============================================================================
16
+ const FLEET_BAR_NAME = chalk.white('Fleet Progress'.padEnd(30));
16
17
  export class FleetProgressManager {
17
18
  multiBar;
18
19
  agentBars = new Map();
@@ -31,10 +32,12 @@ export class FleetProgressManager {
31
32
  showPercentage: true,
32
33
  ...options,
33
34
  };
34
- // Custom format for multi-bar display (respects color config)
35
+ // Custom format for multi-bar display (respects color config).
36
+ // `{eta}` is a cli-progress built-in that overrides the payload, so the
37
+ // formatted ETA travels as `{etaText}` (#1168).
35
38
  const barColor = useColors ? chalk.cyan('{bar}') : '{bar}';
36
39
  const format = this.options.format ||
37
- `{name} ${barColor} {percentage}% | {status} {eta}`;
40
+ `{name} ${barColor} {percentage}% | {status} {etaText}`;
38
41
  this.multiBar = new MultiBar({
39
42
  clearOnComplete: false,
40
43
  hideCursor: true,
@@ -48,15 +51,15 @@ export class FleetProgressManager {
48
51
  /**
49
52
  * Start the fleet progress display
50
53
  */
51
- start(totalAgents) {
54
+ start(_totalAgents) {
52
55
  this.isActive = true;
53
56
  this.startTime = Date.now();
54
57
  // Create fleet-level progress bar
55
58
  console.log(chalk.blue(`\n${this.options.title}\n`));
56
- this.fleetBar = this.multiBar.create(100, 0, {
57
- name: chalk.white('Fleet Progress'.padEnd(30)),
59
+ this.fleetBar = this.createBar(0, {
60
+ name: FLEET_BAR_NAME,
58
61
  status: '',
59
- eta: '',
62
+ etaText: '',
60
63
  });
61
64
  }
62
65
  /**
@@ -66,10 +69,10 @@ export class FleetProgressManager {
66
69
  if (!this.isActive)
67
70
  return;
68
71
  this.agentStates.set(agent.id, agent);
69
- const bar = this.multiBar.create(100, agent.progress, {
72
+ const bar = this.createBar(agent.progress, {
70
73
  name: chalk.gray(this.truncateName(agent.name, 30).padEnd(30)),
71
74
  status: this.getStatusIcon(agent.status),
72
- eta: agent.eta ? this.formatEta(agent.eta) : '',
75
+ etaText: agent.eta ? this.formatEta(agent.eta) : '',
73
76
  });
74
77
  this.agentBars.set(agent.id, bar);
75
78
  this.updateFleetProgress();
@@ -96,7 +99,7 @@ export class FleetProgressManager {
96
99
  bar.update(state.progress, {
97
100
  name: this.getAgentNameDisplay(state),
98
101
  status: this.getStatusIcon(state.status),
99
- eta: state.eta ? this.formatEta(state.eta) : '',
102
+ etaText: state.eta ? this.formatEta(state.eta) : '',
100
103
  });
101
104
  this.updateFleetProgress();
102
105
  }
@@ -115,14 +118,14 @@ export class FleetProgressManager {
115
118
  bar.update(state.progress, {
116
119
  name: this.getAgentNameDisplay(state),
117
120
  status: this.getStatusIcon(state.status),
118
- eta: '',
121
+ etaText: '',
119
122
  });
120
123
  this.updateFleetProgress();
121
124
  }
122
125
  /**
123
126
  * Stop the progress display
124
127
  */
125
- stop() {
128
+ stop(options = {}) {
126
129
  if (!this.isActive)
127
130
  return;
128
131
  this.isActive = false;
@@ -135,7 +138,10 @@ export class FleetProgressManager {
135
138
  const total = this.agentStates.size;
136
139
  const duration = Date.now() - this.startTime;
137
140
  console.log('');
138
- if (failed === 0) {
141
+ if (failed === 0 && options.verdictFailed) {
142
+ console.log(chalk.yellow(`All ${completed}/${total} agents completed (${this.formatDuration(duration)})`));
143
+ }
144
+ else if (failed === 0) {
139
145
  console.log(chalk.green(`All ${completed}/${total} agents completed successfully (${this.formatDuration(duration)})`));
140
146
  }
141
147
  else {
@@ -155,10 +161,21 @@ export class FleetProgressManager {
155
161
  const completed = agents.filter(a => a.status === 'completed').length;
156
162
  const running = agents.filter(a => a.status === 'running').length;
157
163
  this.fleetBar.update(avgProgress, {
164
+ name: FLEET_BAR_NAME,
158
165
  status: chalk.gray(`${completed}/${agents.length} complete, ${running} running`),
159
- eta: this.options.showEta ? this.estimateFleetEta(agents) : '',
166
+ etaText: this.options.showEta ? this.estimateFleetEta(agents) : '',
160
167
  });
161
168
  }
169
+ /**
170
+ * Create a bar and apply its payload. Without a TTY, cli-progress's
171
+ * MultiBar.create() returns before starting the bar, dropping the payload,
172
+ * so the final render printed a literal `{name}` (#1168).
173
+ */
174
+ createBar(value, payload) {
175
+ const bar = this.multiBar.create(100, value, payload);
176
+ bar.update(value, payload);
177
+ return bar;
178
+ }
162
179
  getAgentNameDisplay(agent) {
163
180
  const name = this.truncateName(agent.name, 26);
164
181
  switch (agent.status) {
@@ -448,7 +465,7 @@ export class EtaEstimator {
448
465
  * Create a simple spinner for async operations
449
466
  */
450
467
  export function withSpinner(text, operation) {
451
- const { spinner, succeed, fail } = createTimedSpinner(text);
468
+ const { succeed, fail } = createTimedSpinner(text);
452
469
  return operation()
453
470
  .then((result) => {
454
471
  succeed();
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Git Source - Recent commit context for target files
3
3
  */
4
- import { execFileSync } from 'node:child_process';
4
+ import { runGit } from '../../shared/git/git-process.js';
5
5
  export class GitContextSource {
6
6
  cwd;
7
7
  id = 'git';
@@ -18,7 +18,11 @@ export class GitContextSource {
18
18
  // filePaths can originate from MCP tool arguments. Pass each path as
19
19
  // one argv element; interpolating it into a shell command would allow
20
20
  // command execution via quotes or shell metacharacters.
21
- const log = execFileSync('git', ['log', '--oneline', '-5', '--', file], { cwd: this.cwd ?? process.cwd(), encoding: 'utf-8', timeout: 5000, stdio: ['ignore', 'pipe', 'ignore'] }).trim();
21
+ // Async, in its own process group, so a slow git can neither stall
22
+ // the MCP server's event loop nor outlive its timeout (#1115).
23
+ const log = (await runGit(['log', '--oneline', '-5', '--', file], {
24
+ cwd: this.cwd ?? process.cwd(), timeout: 5000,
25
+ })).trim();
22
26
  if (log) {
23
27
  const content = `Recent commits for ${file}:\n${log}`;
24
28
  fragments.push({
@@ -12,6 +12,7 @@ import { DEFAULT_CONSENSUS_CONFIG, } from './interfaces.js';
12
12
  import { buildVerificationPrompt, parseVerificationResponse, buildModelVote, } from './model-provider.js';
13
13
  import { ok, err } from '../../shared/types/index.js';
14
14
  import { toErrorMessage, toError } from '../../shared/error-utils.js';
15
+ import { createSafeRecord } from '../../shared/utils/safe-record.js';
15
16
  import { createStrategy, } from './strategies/index.js';
16
17
  import { createSycophancyScorer } from './sycophancy-scorer.js';
17
18
  // ============================================================================
@@ -268,7 +269,8 @@ export class ConsensusEngineImpl {
268
269
  averageExecutionTime: 0,
269
270
  totalCost: 0,
270
271
  humanReviewCount: 0,
271
- modelStats: {},
272
+ // #1157: keyed by provider model ids.
273
+ modelStats: createSafeRecord(),
272
274
  };
273
275
  }
274
276
  /**
@@ -4,7 +4,8 @@
4
4
  * Extracted from task-executor.ts registerHandlers().
5
5
  * Covers: index-code, predict-defects
6
6
  */
7
- import * as fs from 'fs/promises';
7
+ import { randomUUID } from 'node:crypto';
8
+ import { prunePredictionHistory } from '../../domains/defect-intelligence/prediction-history.js';
8
9
  import * as path from 'path';
9
10
  import { ok, err } from '../../shared/types/index.js';
10
11
  import { toError } from '../../shared/error-utils.js';
@@ -12,6 +13,8 @@ import { discoverSourceFiles } from './handler-utils.js';
12
13
  import { resolveProjectRootFromPaths } from '../../domains/code-intelligence/project-root-resolver.js';
13
14
  import { nothingIndexedError } from '../../domains/code-intelligence/index-path-guard.js';
14
15
  import { createLogger } from '../../logging/logger-factory.js';
16
+ import { requirePayloadPath } from '../../shared/io/payload-path-guard.js';
17
+ import { readConfinedText } from '../../shared/io/confined-read.js';
15
18
  const logger = createLogger('CodeIntelligenceHandlers');
16
19
  async function collectProjectMetricsForTarget(ctx, targetPath, indexedFiles) {
17
20
  if (!ctx.getCodeIntelligenceCoordinator)
@@ -43,13 +46,24 @@ async function collectProjectMetricsForTarget(ctx, targetPath, indexedFiles) {
43
46
  return undefined;
44
47
  }
45
48
  }
49
+ /** #1126: a caller-named target must be a file or directory inside the project. */
50
+ async function confineTarget(taskType, target) {
51
+ if (!target || target === '.')
52
+ return ok(undefined);
53
+ return requirePayloadPath(taskType, 'target', target, { allowDirectory: true, allowMissing: true });
54
+ }
46
55
  export function registerCodeIntelligenceHandlers(ctx) {
47
56
  // Register code indexing handler - REAL IMPLEMENTATION
48
57
  ctx.registerHandler('index-code', async (task) => {
49
58
  const payload = task.payload;
50
59
  try {
60
+ // #1126: refuse an outside target before listing it, so the error
61
+ // cannot name the files in an outside directory.
62
+ const confined = await confineTarget('index-code', payload.target);
63
+ if (!confined.success)
64
+ return confined;
51
65
  const kg = ctx.getKnowledgeGraph();
52
- const targetPath = payload.target || process.cwd();
66
+ const targetPath = confined.value ?? (payload.target || process.cwd());
53
67
  const startTime = Date.now();
54
68
  // Discover files to index
55
69
  const filesToIndex = await discoverSourceFiles(targetPath, {
@@ -139,7 +153,10 @@ export function registerCodeIntelligenceHandlers(ctx) {
139
153
  ctx.registerHandler('predict-defects', async (task) => {
140
154
  const payload = task.payload;
141
155
  try {
142
- const targetPath = payload.target || process.cwd();
156
+ const confined = await confineTarget('predict-defects', payload.target);
157
+ if (!confined.success)
158
+ return confined;
159
+ const targetPath = confined.value ?? path.resolve(payload.target || process.cwd());
143
160
  const minConfidence = payload.minConfidence || 0.5;
144
161
  // Discover actual source files in the target directory
145
162
  const sourceFiles = await discoverSourceFiles(targetPath, { includeTests: false });
@@ -156,9 +173,12 @@ export function registerCodeIntelligenceHandlers(ctx) {
156
173
  }
157
174
  // Analyze each file for defect indicators based on real metrics
158
175
  const predictedDefects = [];
176
+ const predictions = [];
177
+ let filesSkipped = 0;
159
178
  for (const filePath of sourceFiles) {
160
179
  try {
161
- const content = await fs.readFile(filePath, 'utf-8');
180
+ // #1161: validate the opened descriptor, not the name listed earlier.
181
+ const content = await readConfinedText(filePath, { outsideRoot: 'allow' });
162
182
  const lines = content.split('\n');
163
183
  const lineCount = lines.length;
164
184
  // Calculate complexity indicators from real code
@@ -206,6 +226,18 @@ export function registerCodeIntelligenceHandlers(ctx) {
206
226
  reasons.push('Potentially long functions');
207
227
  }
208
228
  probability = Math.min(probability, 0.95);
229
+ // Keep every analyzed file, including a clean reanalysis below the
230
+ // display threshold. Absolute paths retain the project-relative
231
+ // identity when the caller targeted a nested directory (#1050).
232
+ const roundedProbability = Math.round(probability * 100) / 100;
233
+ predictions.push({
234
+ file: path.resolve(filePath),
235
+ probability: roundedProbability,
236
+ riskLevel: probability >= 0.8 ? 'critical' : probability >= 0.6 ? 'high'
237
+ : probability >= 0.4 ? 'medium' : probability >= 0.2 ? 'low' : 'info',
238
+ factors: [{ name: 'staticCodeIndicators', contribution: roundedProbability }],
239
+ recommendations: reasons,
240
+ });
209
241
  if (probability >= minConfidence) {
210
242
  // Use relative path for readability
211
243
  const relativePath = filePath.startsWith(targetPath)
@@ -219,9 +251,27 @@ export function registerCodeIntelligenceHandlers(ctx) {
219
251
  }
220
252
  }
221
253
  catch {
254
+ filesSkipped++;
222
255
  // Skip files that can't be read
223
256
  }
224
257
  }
258
+ if (predictions.length === 0) {
259
+ return err(new Error(`Defect prediction could not read any of ${sourceFiles.length} source files`));
260
+ }
261
+ // Record the run in the schema consumed by the background worker.
262
+ // These are static risk estimates from files actually read, not an
263
+ // empirically calibrated likelihood of future production defects.
264
+ const id = randomUUID();
265
+ await ctx.memory.set(`defect-intelligence:predictor:prediction:${id}`, {
266
+ id,
267
+ timestamp: new Date().toISOString(),
268
+ predictions,
269
+ predictionMethod: 'static-code-indicators',
270
+ estimated: true,
271
+ filesSkipped,
272
+ scanStatus: filesSkipped > 0 ? 'partial' : 'complete',
273
+ }, { namespace: 'defect-intelligence', ttl: 86400 * 7 });
274
+ await prunePredictionHistory(ctx.memory);
225
275
  // Sort by probability descending
226
276
  predictedDefects.sort((a, b) => b.probability - a.probability);
227
277
  // Calculate overall risk score
@@ -232,7 +282,7 @@ export function registerCodeIntelligenceHandlers(ctx) {
232
282
  // Generate recommendations from actual findings
233
283
  const recommendations = [];
234
284
  if (predictedDefects.length > 0) {
235
- recommendations.push(`${predictedDefects.length} files flagged for potential defects out of ${sourceFiles.length} analyzed`);
285
+ recommendations.push(`${predictedDefects.length} files flagged for potential defects out of ${predictions.length} analyzed`);
236
286
  const topFile = predictedDefects[0];
237
287
  recommendations.push(`Highest risk: ${topFile.file} (${Math.round(topFile.probability * 100)}%) — ${topFile.reason}`);
238
288
  }
@@ -243,13 +293,19 @@ export function registerCodeIntelligenceHandlers(ctx) {
243
293
  recommendations.push('Address TODO/FIXME comments to reduce technical debt');
244
294
  }
245
295
  if (predictedDefects.length === 0) {
246
- recommendations.push('No files exceeded the defect probability threshold — code looks healthy');
296
+ recommendations.push(filesSkipped > 0
297
+ ? `No analyzed files exceeded the threshold; ${filesSkipped} unreadable source files remain unassessed`
298
+ : 'No files exceeded the defect probability threshold — code looks healthy');
247
299
  }
248
300
  return ok({
249
301
  predictedDefects: predictedDefects.slice(0, 20), // Top 20
250
302
  riskScore,
251
303
  recommendations,
252
- filesAnalyzed: sourceFiles.length,
304
+ filesAnalyzed: predictions.length,
305
+ filesSkipped,
306
+ scanStatus: filesSkipped > 0 ? 'partial' : 'complete',
307
+ predictionMethod: 'static-code-indicators',
308
+ estimated: true,
253
309
  });
254
310
  }
255
311
  catch (error) {
@@ -19,6 +19,7 @@
19
19
  * caller.
20
20
  */
21
21
  import * as fs from 'fs';
22
+ import { readConfinedTextSync } from '../../shared/io/confined-read.js';
22
23
  import * as os from 'os';
23
24
  import * as path from 'path';
24
25
  import { parseLcovInfo } from './handler-utils.js';
@@ -558,8 +559,9 @@ export function buildEstimatedCoverage(targetPath) {
558
559
  return null;
559
560
  const files = sourceFiles.map(filePath => {
560
561
  let content = '';
562
+ // #1161: a source file linked out of the project is treated as unreadable.
561
563
  try {
562
- content = fs.readFileSync(filePath, 'utf-8');
564
+ content = readConfinedTextSync(filePath, { outsideRoot: 'allow' });
563
565
  }
564
566
  catch { /* unreadable — treat as empty */ }
565
567
  const ext = path.extname(filePath);
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import { ok, err } from '../../shared/types/index.js';
8
8
  import { toError } from '../../shared/error-utils.js';
9
+ import { requirePayloadPath } from '../../shared/io/payload-path-guard.js';
9
10
  import { buildEstimatedCoverage, collectRustCoverage, findCargoRoot, isCoverageExecDisabled, isRustProject, } from './coverage-collection.js';
10
11
  import { describeNoData, evaluateCoverageForTarget, isUnmeasured, packageFilterForTarget, resolveExistingCoverage, scopeCoverageToTarget, reconcileRecommendations, thresholdVerdict, } from './coverage-target.js';
11
12
  import { randomUUID } from 'crypto';
@@ -200,8 +201,16 @@ export function registerCoverageHandlers(ctx) {
200
201
  ctx.registerHandler('analyze-coverage', async (task) => {
201
202
  const payload = task.payload;
202
203
  try {
204
+ // #1126: collect coverage (which may run the tests) only inside the
205
+ // project. A missing target keeps its own message below.
206
+ let targetPath = payload.target || process.cwd();
207
+ if (payload.target && payload.target !== '.') {
208
+ const confined = await requirePayloadPath('analyze-coverage', 'target', payload.target, { allowDirectory: true, allowMissing: true });
209
+ if (!confined.success)
210
+ return confined;
211
+ targetPath = confined.value;
212
+ }
203
213
  const analyzer = ctx.getCoverageAnalyzer();
204
- const targetPath = payload.target || process.cwd();
205
214
  const threshold = payload.threshold || 80;
206
215
  const { collected, ranTests, noData, projectRoot, notes, runStatus, testRun } = await collectCoverage(targetPath);
207
216
  // #995 review N5: say so plainly instead of "no coverage data found".
@@ -25,6 +25,8 @@
25
25
  * fate. Hosts should shut down via a handled signal.
26
26
  */
27
27
  import type { CoverageData } from '../../domains/coverage-analysis/interfaces';
28
+ import { summarizeStderr } from './coverage-stderr';
29
+ export { summarizeStderr };
28
30
  export type JsRunnerName = 'vitest' | 'jest' | 'nyc';
29
31
  export interface JsCoverageInvocation {
30
32
  runner: JsRunnerName;
@@ -64,7 +66,7 @@ export interface JsCoverageRun {
64
66
  numFailedTests?: number | null;
65
67
  numPendingTests?: number | null;
66
68
  numFailedTestSuites?: number | null;
67
- /** The runner's first error line plus the last ~2 KB of its stderr, for diagnosing a crash. */
69
+ /** The runner's first error line plus the last ~2 KB of its stderr, redacted (#1150), for diagnosing a crash. */
68
70
  stderrTail: string;
69
71
  }
70
72
  /**
@@ -74,13 +76,6 @@ export interface JsCoverageRun {
74
76
  * every test passing). Without counts (nyc), the exit code decides.
75
77
  */
76
78
  export declare function testRunStatus(run: JsCoverageRun): 'passed' | 'failed';
77
- /**
78
- * Summarise a runner's stderr for a caller: the FIRST error-looking line (or
79
- * the first ~512 bytes) plus the last ~2 KB (#995 review NB-C). A tail alone
80
- * loses the cause when a long stack follows it — a vitest config syntax error
81
- * prints `[PARSE_ERROR] …` first and then kilobytes of frames.
82
- */
83
- export declare function summarizeStderr(head: string, tail: string, totalBytes: number): string;
84
79
  /**
85
80
  * Find an installed package's bin script, walking up `node_modules` from the
86
81
  * project root (hoisted monorepo installs live above the package).
@@ -30,6 +30,8 @@ import * as os from 'os';
30
30
  import * as path from 'path';
31
31
  import { safeJsonParse } from '../../shared/safe-json.js';
32
32
  import { loadCoverageReportFile } from './coverage-target.js';
33
+ import { STDERR_WINDOW_BYTES, summarizeStderr } from './coverage-stderr.js';
34
+ export { summarizeStderr };
33
35
  /**
34
36
  * Outcome of a coverage run's tests (#1027 NB2): 'failed' when the runner's
35
37
  * own result reports a failed test or test suite, 'passed' when it reports
@@ -43,25 +45,6 @@ export function testRunStatus(run) {
43
45
  return run.exitedCleanly ? 'passed' : 'failed';
44
46
  }
45
47
  const RESULTS_FILE = 'test-results.json';
46
- const STDERR_TAIL_BYTES = 2048;
47
- const STDERR_HEAD_BYTES = 4096;
48
- const STDERR_PREFIX_BYTES = 512;
49
- const ERROR_LINE_RE = /^.*(?:error|\[[A-Z][A-Z_]{2,}\]|ERR_[A-Z_]+).*$/im;
50
- /**
51
- * Summarise a runner's stderr for a caller: the FIRST error-looking line (or
52
- * the first ~512 bytes) plus the last ~2 KB (#995 review NB-C). A tail alone
53
- * loses the cause when a long stack follows it — a vitest config syntax error
54
- * prints `[PARSE_ERROR] …` first and then kilobytes of frames.
55
- */
56
- export function summarizeStderr(head, tail, totalBytes) {
57
- if (totalBytes <= STDERR_TAIL_BYTES)
58
- return tail.trim();
59
- const errorLine = ERROR_LINE_RE.exec(head)?.[0]?.trim();
60
- const prefix = (errorLine ?? head.slice(0, STDERR_PREFIX_BYTES)).trim();
61
- if (prefix && tail.includes(prefix))
62
- return tail.trim();
63
- return `${prefix}\n…\n${tail.trim()}`;
64
- }
65
48
  // ============================================================================
66
49
  // Locating the runner
67
50
  // ============================================================================
@@ -348,9 +331,10 @@ export async function runProcessTree(command, args, options) {
348
331
  child.stderr?.on('data', (chunk) => {
349
332
  const text = chunk.toString('utf-8');
350
333
  stderrBytes += chunk.length;
351
- if (stderrHead.length < STDERR_HEAD_BYTES)
352
- stderrHead = (stderrHead + text).slice(0, STDERR_HEAD_BYTES);
353
- stderrTail = (stderrTail + text).slice(-STDERR_TAIL_BYTES);
334
+ // #1150: raw windows only; summarizeStderr redacts them before slicing.
335
+ if (stderrHead.length < STDERR_WINDOW_BYTES)
336
+ stderrHead = (stderrHead + text).slice(0, STDERR_WINDOW_BYTES);
337
+ stderrTail = (stderrTail + text).slice(-STDERR_WINDOW_BYTES);
354
338
  });
355
339
  // A grandchild holding the pipe open must not keep the host alive.
356
340
  child.stderr?.on('error', () => { });
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Caller-facing summary of a coverage runner's stderr.
3
+ *
4
+ * #1150: the summary reaches `provenance.notes` of a SUCCESS result, where the
5
+ * #1139 error backstop never sees it, so it is redacted here. Redaction runs
6
+ * BEFORE slicing: a slice boundary that cut a token or connection string in
7
+ * half would leave a fragment the redaction patterns no longer recognise.
8
+ * The collector therefore keeps a wide raw window at each end of the stream;
9
+ * each window is redacted whole, and only then are the short head and tail
10
+ * taken from it. A secret cut by a window edge lies far outside the part
11
+ * that is kept.
12
+ */
13
+ /** Raw stderr kept at each end of the stream, before redaction. */
14
+ export declare const STDERR_WINDOW_BYTES: number;
15
+ /**
16
+ * Summarise a runner's stderr for a caller: the FIRST error-looking line (or
17
+ * the first ~512 bytes) plus the last ~2 KB (#995 review NB-C). A tail alone
18
+ * loses the cause when a long stack follows it — a vitest config syntax error
19
+ * prints `[PARSE_ERROR] …` first and then kilobytes of frames. `head` and
20
+ * `tail` are the raw windows at each end; both are redacted before slicing.
21
+ */
22
+ export declare function summarizeStderr(head: string, tail: string, totalBytes: number): string;
23
+ //# sourceMappingURL=coverage-stderr.d.ts.map