agentic-qe 3.15.12 → 3.15.14

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 (506) hide show
  1. package/.claude/helpers/brain-checkpoint.cjs +124 -5
  2. package/.claude/skills/skills-manifest.json +1 -1
  3. package/CHANGELOG.md +196 -0
  4. package/assets/skills/skills-manifest.json +1 -1
  5. package/dist/cli/bundle.js +6 -6
  6. package/dist/cli/chunks/adapter-23KA2YW7.js +2 -0
  7. package/dist/cli/chunks/{agent-booster-wasm-5VZCKTIJ.js → agent-booster-wasm-2DLAEZK6.js} +2 -2
  8. package/dist/cli/chunks/{agent-handler-K3C6CQCD.js → agent-handler-P3IY7XEE.js} +2 -2
  9. package/dist/cli/chunks/{agent-memory-branch-NVFQ25WS.js → agent-memory-branch-WWKC2H3G.js} +2 -2
  10. package/dist/cli/chunks/aqe-learning-engine-MUICAXW5.js +2 -0
  11. package/dist/cli/chunks/{arena-TSZVDSXS.js → arena-4BMFF6BS.js} +4 -4
  12. package/dist/cli/chunks/{arena-QGWIJADQ.js → arena-EIV5OALF.js} +2 -2
  13. package/dist/cli/chunks/{audit-KIEE2SHJ.js → audit-DNTI453H.js} +3 -3
  14. package/dist/cli/chunks/base-XPWGYDKD.js +2 -0
  15. package/dist/cli/chunks/{better-sqlite3-BNB32NW3.js → better-sqlite3-TQBQGNC6.js} +2 -2
  16. package/dist/cli/chunks/brain-handler-HY57CNAO.js +95 -0
  17. package/dist/cli/chunks/{branch-enumerator-LZ7UXKAY.js → branch-enumerator-THPMZPHQ.js} +2 -2
  18. package/dist/cli/chunks/{browser-VDHAW4RK.js → browser-O6JJOZCK.js} +2 -2
  19. package/dist/cli/chunks/browser-workflow-UMQVBVGK.js +2 -0
  20. package/dist/cli/chunks/{chunk-4PU5GTZW.js → chunk-2HPNGK7A.js} +2 -2
  21. package/dist/cli/chunks/{chunk-MCPXNUDK.js → chunk-2IJO3657.js} +2 -2
  22. package/dist/cli/chunks/{chunk-4Y6OEBJZ.js → chunk-2QLE6NDW.js} +1 -1
  23. package/dist/cli/chunks/{chunk-DZGPUGUG.js → chunk-2UZBLC5H.js} +2 -2
  24. package/dist/cli/chunks/{chunk-5A66EGEW.js → chunk-2W5MQDHM.js} +2 -2
  25. package/dist/cli/chunks/{chunk-JRYWLOBD.js → chunk-3FITMWWJ.js} +2 -2
  26. package/dist/cli/chunks/{chunk-RCOLPF3B.js → chunk-3TF27MG5.js} +2 -2
  27. package/dist/cli/chunks/{chunk-KGA7VAI4.js → chunk-3XACRXBY.js} +2 -2
  28. package/dist/cli/chunks/{chunk-SQVZ3TRU.js → chunk-43XHGWYH.js} +2 -2
  29. package/dist/cli/chunks/{chunk-JR6CUKAI.js → chunk-4RPBODN5.js} +2 -2
  30. package/dist/cli/chunks/{chunk-C3YOVASQ.js → chunk-4T7XV5KQ.js} +1 -1
  31. package/dist/cli/chunks/{chunk-N7O3PF6Y.js → chunk-4WLIOPHX.js} +2 -2
  32. package/dist/cli/chunks/{chunk-PGSJBXTD.js → chunk-52KOPIMI.js} +2 -2
  33. package/dist/cli/chunks/{chunk-4KUOYDY2.js → chunk-56NSE3LJ.js} +2 -2
  34. package/dist/cli/chunks/{chunk-3IU4LDZR.js → chunk-57DRT6UA.js} +2 -2
  35. package/dist/cli/chunks/{chunk-2JYUA27M.js → chunk-57FX3GP6.js} +1 -1
  36. package/dist/cli/chunks/{chunk-7QEUHNKO.js → chunk-5PLBQZ5J.js} +1 -1
  37. package/dist/cli/chunks/{chunk-VF7FTD64.js → chunk-5Y7UFHJD.js} +1 -1
  38. package/dist/cli/chunks/{chunk-7JFDLL2F.js → chunk-5Z4MO2F3.js} +1 -1
  39. package/dist/cli/chunks/chunk-65EE2EST.js +8 -0
  40. package/dist/cli/chunks/{chunk-66PXR3NI.js → chunk-6NIGSY5L.js} +2 -2
  41. package/dist/cli/chunks/chunk-6O63ZTVX.js +3 -0
  42. package/dist/cli/chunks/{chunk-ZYOYR3UR.js → chunk-6OI5SK7M.js} +1 -1
  43. package/dist/cli/chunks/{chunk-5TAEW5OV.js → chunk-6P4Q4RTC.js} +1 -1
  44. package/dist/cli/chunks/{chunk-W5HQIYQU.js → chunk-7724KXM2.js} +3 -3
  45. package/dist/cli/chunks/{chunk-A2JCRXTK.js → chunk-7MISCSL5.js} +2 -2
  46. package/dist/cli/chunks/{chunk-OHVYINGM.js → chunk-7MUO4DEH.js} +3 -3
  47. package/dist/cli/chunks/{chunk-QCPVUNN3.js → chunk-7QUSNBAA.js} +2 -2
  48. package/dist/cli/chunks/{chunk-YUA6ZKKY.js → chunk-7SQTLUEN.js} +2 -2
  49. package/dist/cli/chunks/{chunk-CA5UNWQF.js → chunk-7T6L3LFN.js} +2 -2
  50. package/dist/cli/chunks/{chunk-UREDS662.js → chunk-7TH4PJSU.js} +2 -2
  51. package/dist/cli/chunks/{chunk-TVA5GRIU.js → chunk-7Y3LXH57.js} +2 -2
  52. package/dist/cli/chunks/{chunk-A5Y7DAVQ.js → chunk-A2T56XVL.js} +2 -2
  53. package/dist/cli/chunks/{chunk-ZROAMFX2.js → chunk-AJVLVF7V.js} +2 -2
  54. package/dist/cli/chunks/{chunk-26672ISV.js → chunk-ARRBXCII.js} +2 -2
  55. package/dist/cli/chunks/{chunk-5S4UIDFK.js → chunk-AYLEH2UF.js} +1 -1
  56. package/dist/cli/chunks/{chunk-DRCBRUGN.js → chunk-BBYJBZHG.js} +2 -2
  57. package/dist/cli/chunks/{chunk-BMG2JLSQ.js → chunk-BM3EJLMV.js} +2 -2
  58. package/dist/cli/chunks/{chunk-6QRI3JVE.js → chunk-BNG4J3CE.js} +2 -2
  59. package/dist/cli/chunks/{chunk-EN7GRVEQ.js → chunk-BPDAQB3F.js} +2 -2
  60. package/dist/cli/chunks/{chunk-J7Y7ZBIT.js → chunk-BQJ7CV53.js} +9 -9
  61. package/dist/cli/chunks/{chunk-ADUAJIAU.js → chunk-C3OIBFAA.js} +2 -2
  62. package/dist/cli/chunks/{chunk-4LWMAAWK.js → chunk-CAZM63TP.js} +2 -2
  63. package/dist/cli/chunks/{chunk-UZED4YZ5.js → chunk-CIINJHOX.js} +1 -1
  64. package/dist/cli/chunks/{chunk-C74M4WUI.js → chunk-CPPYZYXC.js} +2 -2
  65. package/dist/cli/chunks/chunk-D3ZZ2NLL.js +62 -0
  66. package/dist/cli/chunks/{chunk-U7ZHDGXG.js → chunk-D5GB5PUU.js} +1 -1
  67. package/dist/cli/chunks/{chunk-HZBXJFGN.js → chunk-DLTB5KCR.js} +2 -2
  68. package/dist/cli/chunks/{chunk-NNBQZR73.js → chunk-DRLSJJIC.js} +2 -2
  69. package/dist/cli/chunks/{chunk-HLGFHHWV.js → chunk-DSQESXL4.js} +2 -2
  70. package/dist/cli/chunks/{chunk-LFBA735S.js → chunk-E2JLAW3U.js} +3 -3
  71. package/dist/cli/chunks/{chunk-PT2NXS43.js → chunk-E3QIQMMN.js} +1 -1
  72. package/dist/cli/chunks/{chunk-35MIUSXQ.js → chunk-E7OR6V3V.js} +2 -2
  73. package/dist/cli/chunks/{chunk-G24SWTAX.js → chunk-E7QTWGPI.js} +413 -413
  74. package/dist/cli/chunks/{chunk-PX5OPXY6.js → chunk-EC65UZ77.js} +1 -1
  75. package/dist/cli/chunks/{chunk-JNXK47OL.js → chunk-EIEEST4T.js} +2 -2
  76. package/dist/cli/chunks/{chunk-2PPSS4JD.js → chunk-FHPNWHY7.js} +2 -2
  77. package/dist/cli/chunks/{chunk-PTBOLBM4.js → chunk-FJOIBZUB.js} +2 -2
  78. package/dist/cli/chunks/{chunk-TXEUVUMO.js → chunk-FTYRPEJS.js} +1 -1
  79. package/dist/cli/chunks/{chunk-ZPVGX4DI.js → chunk-G7HGUQAE.js} +2 -2
  80. package/dist/cli/chunks/{chunk-EF6OERRR.js → chunk-GY4P7KAI.js} +1 -1
  81. package/dist/cli/chunks/{chunk-UUZZXHUF.js → chunk-H3C5FJRH.js} +2 -2
  82. package/dist/cli/chunks/{chunk-L3PV7VXK.js → chunk-H4LYXLAT.js} +1 -1
  83. package/dist/cli/chunks/{chunk-5Z23ZMXZ.js → chunk-HAYKLXCT.js} +63 -61
  84. package/dist/cli/chunks/{chunk-IPA7K556.js → chunk-HEDGFKC5.js} +2 -2
  85. package/dist/cli/chunks/{chunk-BC4T6SCV.js → chunk-HHBF2BZC.js} +4 -4
  86. package/dist/cli/chunks/{chunk-IVTQF55W.js → chunk-HSDWPQQY.js} +3 -3
  87. package/dist/cli/chunks/{chunk-SG2TX72G.js → chunk-HTVGHHX2.js} +2 -2
  88. package/dist/cli/chunks/{chunk-FZJCBSN4.js → chunk-HV43NX4A.js} +2 -2
  89. package/dist/cli/chunks/{chunk-MMEALJ4D.js → chunk-IDBA5GK2.js} +2 -2
  90. package/dist/cli/chunks/{chunk-IA55PFLG.js → chunk-INGXD5IX.js} +2 -2
  91. package/dist/cli/chunks/{chunk-RYHG3I7J.js → chunk-IQRPR4KB.js} +2 -2
  92. package/dist/cli/chunks/{chunk-7OEFBWAG.js → chunk-IRPNEXOU.js} +2 -2
  93. package/dist/cli/chunks/{chunk-P7UFJ6DO.js → chunk-J35JWDJE.js} +1 -1
  94. package/dist/cli/chunks/chunk-J6ASX536.js +2 -0
  95. package/dist/cli/chunks/{chunk-2ASQRBK2.js → chunk-JAOCHPYX.js} +2 -2
  96. package/dist/cli/chunks/{chunk-G3AABG4Q.js → chunk-JB7R77SH.js} +2 -2
  97. package/dist/cli/chunks/{chunk-HSA5IGGW.js → chunk-JI67T6Q2.js} +2 -2
  98. package/dist/cli/chunks/{chunk-ZGROHCOW.js → chunk-JJHLGGPP.js} +1 -1
  99. package/dist/cli/chunks/{chunk-L7NGKANW.js → chunk-JK6PMLQQ.js} +2 -2
  100. package/dist/cli/chunks/{chunk-IL7GQNNE.js → chunk-JO26SG47.js} +2 -2
  101. package/dist/cli/chunks/{chunk-3EWQN37E.js → chunk-JSSU4RIK.js} +2 -2
  102. package/dist/cli/chunks/{chunk-TOWOJGEI.js → chunk-K2SMP4OD.js} +1 -1
  103. package/dist/cli/chunks/{chunk-YVJEUX3I.js → chunk-K7GFYFBO.js} +2 -2
  104. package/dist/cli/chunks/{chunk-DAUEK66C.js → chunk-K7RT6ITZ.js} +1 -1
  105. package/dist/cli/chunks/{chunk-33I2ZP6E.js → chunk-KJ5A54ZH.js} +2 -2
  106. package/dist/cli/chunks/{chunk-W4II6SIH.js → chunk-L5VSLPMW.js} +2 -2
  107. package/dist/cli/chunks/{chunk-NVRYELCY.js → chunk-L752CNG3.js} +3 -3
  108. package/dist/cli/chunks/{chunk-MAJXZYGK.js → chunk-L7PC675Y.js} +1 -1
  109. package/dist/cli/chunks/{chunk-YWWMNTBF.js → chunk-LTGQJYYO.js} +2 -2
  110. package/dist/cli/chunks/{chunk-7DNR4KKR.js → chunk-M2TG7VDK.js} +1 -1
  111. package/dist/cli/chunks/{chunk-2E2QO44T.js → chunk-M5JEA6ZY.js} +2 -2
  112. package/dist/cli/chunks/{chunk-IETBWYHW.js → chunk-MB4UKUBV.js} +2 -2
  113. package/dist/cli/chunks/{chunk-W7H55PY4.js → chunk-MKYOE7NE.js} +1 -1
  114. package/dist/cli/chunks/{chunk-FNUFTWEO.js → chunk-MQXWG55U.js} +3 -3
  115. package/dist/cli/chunks/{chunk-O4QJMANM.js → chunk-MR2OPUSA.js} +1 -1
  116. package/dist/cli/chunks/{chunk-KA5SHLMW.js → chunk-N736GLWZ.js} +2 -2
  117. package/dist/cli/chunks/{chunk-NV74SICL.js → chunk-NHEG2DLN.js} +2 -2
  118. package/dist/cli/chunks/chunk-NKOLILT7.js +86 -0
  119. package/dist/cli/chunks/{chunk-KJDI5CHX.js → chunk-NPCXGX7N.js} +2 -2
  120. package/dist/cli/chunks/{chunk-2IVE5AR3.js → chunk-NZQYJCO6.js} +1 -1
  121. package/dist/cli/chunks/{chunk-4SA7M34P.js → chunk-O2AAYJUV.js} +1 -1
  122. package/dist/cli/chunks/{chunk-ULCW6IVQ.js → chunk-O32BFQV4.js} +2 -2
  123. package/dist/cli/chunks/{chunk-JOWUS2X5.js → chunk-O3ERGUXH.js} +1 -1
  124. package/dist/cli/chunks/{chunk-BYRCB5JT.js → chunk-O5CEL447.js} +2 -2
  125. package/dist/cli/chunks/{chunk-CPIBIR3X.js → chunk-O756AOUX.js} +2 -2
  126. package/dist/cli/chunks/{chunk-TSOQ2QLT.js → chunk-OCN53CCK.js} +2 -2
  127. package/dist/cli/chunks/{chunk-YLKIXEPP.js → chunk-OGEIHS76.js} +1 -1
  128. package/dist/cli/chunks/{chunk-ICKUINKD.js → chunk-OLUOVNUF.js} +2 -2
  129. package/dist/cli/chunks/{chunk-5ADXFUMO.js → chunk-P2TPH3TC.js} +2 -2
  130. package/dist/cli/chunks/{chunk-SBHM5X2S.js → chunk-PCQZIAXB.js} +2 -2
  131. package/dist/cli/chunks/{chunk-CDA5Z74H.js → chunk-PGN4TARY.js} +2 -2
  132. package/dist/cli/chunks/{chunk-P5E26N2X.js → chunk-PNRPVQGI.js} +2 -2
  133. package/dist/cli/chunks/{chunk-23PQF7NN.js → chunk-PWQWKYBG.js} +1 -1
  134. package/dist/cli/chunks/{chunk-T4EN5VVK.js → chunk-QNQE3EOH.js} +2 -2
  135. package/dist/cli/chunks/chunk-QP2HLKTS.js +2 -0
  136. package/dist/cli/chunks/{chunk-7TA5MUPW.js → chunk-QP6GL3O5.js} +1 -1
  137. package/dist/cli/chunks/{chunk-GKFV6CUD.js → chunk-QUZ745UQ.js} +2 -2
  138. package/dist/cli/chunks/{chunk-INZARYUD.js → chunk-R5RRWLRI.js} +2 -2
  139. package/dist/cli/chunks/{chunk-VZBC6DP7.js → chunk-RE6JTSDM.js} +1 -1
  140. package/dist/cli/chunks/{chunk-JGIJPDGD.js → chunk-TOJF3ZG4.js} +2 -2
  141. package/dist/cli/chunks/{chunk-WLRU6ESI.js → chunk-TSP6SU5V.js} +2 -2
  142. package/dist/cli/chunks/{chunk-6E6HB4N4.js → chunk-TW6Z6W4X.js} +4 -4
  143. package/dist/cli/chunks/{chunk-ENGL7FIJ.js → chunk-TWOV3I3A.js} +1 -1
  144. package/dist/cli/chunks/chunk-U4TML2VD.js +3 -0
  145. package/dist/cli/chunks/{chunk-O3IM4WRZ.js → chunk-U6IOQKCT.js} +2 -2
  146. package/dist/cli/chunks/{chunk-SPC4RBLF.js → chunk-UDSB3XCG.js} +2 -2
  147. package/dist/cli/chunks/{chunk-URSTP3WI.js → chunk-UFP7SN5V.js} +2 -2
  148. package/dist/cli/chunks/{chunk-MYF5CNGV.js → chunk-UMHFTQTR.js} +2 -2
  149. package/dist/cli/chunks/{chunk-65TH6RPD.js → chunk-UNYTHZDZ.js} +1 -1
  150. package/dist/cli/chunks/{chunk-FAGKBOX2.js → chunk-UPWLMIDY.js} +2 -2
  151. package/dist/cli/chunks/{chunk-4CB3QPZM.js → chunk-USAKCGHC.js} +2 -2
  152. package/dist/cli/chunks/{chunk-QUJJYTJH.js → chunk-V3MGY76S.js} +2 -2
  153. package/dist/cli/chunks/{chunk-WDEXOLK2.js → chunk-V6SE2ZU2.js} +1 -1
  154. package/dist/cli/chunks/{chunk-JW5PDJ5O.js → chunk-VCVRZD4Y.js} +3 -3
  155. package/dist/cli/chunks/{chunk-TGMXUZZC.js → chunk-VG32EEUG.js} +2 -2
  156. package/dist/cli/chunks/{chunk-MYUMJ2ZI.js → chunk-VGZOPQQY.js} +1 -1
  157. package/dist/cli/chunks/{chunk-BOSMELJX.js → chunk-VJBJRFUO.js} +2 -2
  158. package/dist/cli/chunks/{chunk-K3A3NWT3.js → chunk-WBC6WB32.js} +2 -2
  159. package/dist/cli/chunks/{chunk-QWG3SILX.js → chunk-WCM6WE7G.js} +5 -5
  160. package/dist/cli/chunks/{chunk-GJKZ7UQO.js → chunk-WCPSR4MJ.js} +2 -2
  161. package/dist/cli/chunks/{chunk-U6IXYQO4.js → chunk-WKI46WWN.js} +2 -2
  162. package/dist/cli/chunks/{chunk-NX4BCSOZ.js → chunk-WM2QRIRD.js} +2 -2
  163. package/dist/cli/chunks/{chunk-32UTHIY5.js → chunk-WRC3HLUY.js} +3 -3
  164. package/dist/cli/chunks/{chunk-AJEXPFAB.js → chunk-WUGXXNK4.js} +1 -1
  165. package/dist/cli/chunks/{chunk-NA3F6FEO.js → chunk-WZQADC5R.js} +2 -2
  166. package/dist/cli/chunks/{chunk-SDRJJUPO.js → chunk-X6NJOT3V.js} +1 -1
  167. package/dist/cli/chunks/{chunk-CU36D7TN.js → chunk-X6Q2N5S5.js} +2 -2
  168. package/dist/cli/chunks/{chunk-UIKQPO4Y.js → chunk-X7CUI7KH.js} +2 -2
  169. package/dist/cli/chunks/{chunk-MCPEC6OO.js → chunk-XMCSKYDE.js} +1 -1
  170. package/dist/cli/chunks/{chunk-WTAUF6O4.js → chunk-XN3KCKAM.js} +2 -2
  171. package/dist/cli/chunks/{chunk-TLRHAMX5.js → chunk-XSPMLJCQ.js} +1 -1
  172. package/dist/cli/chunks/{chunk-VUR5THML.js → chunk-XTZGAG6P.js} +2 -2
  173. package/dist/cli/chunks/{chunk-47RMGDG4.js → chunk-YE54T2NQ.js} +2 -2
  174. package/dist/cli/chunks/{chunk-HM3LSFTY.js → chunk-YEFTK4HD.js} +2 -2
  175. package/dist/cli/chunks/{chunk-4HWUECVD.js → chunk-YGC5QKQ4.js} +2 -2
  176. package/dist/cli/chunks/{chunk-SUX5XB2Z.js → chunk-YGOSSVY5.js} +2 -2
  177. package/dist/cli/chunks/{chunk-UJNGGFGX.js → chunk-YKQWIXUY.js} +2 -2
  178. package/dist/cli/chunks/{chunk-SITL5YZV.js → chunk-Z2S7DNFP.js} +2 -2
  179. package/dist/cli/chunks/{chunk-WGTEZT7G.js → chunk-Z54G2YOL.js} +2 -2
  180. package/dist/cli/chunks/{chunk-YNVEDFPQ.js → chunk-ZJGFQK27.js} +1 -1
  181. package/dist/cli/chunks/{chunk-35NW676P.js → chunk-ZUE524JL.js} +2 -2
  182. package/dist/cli/chunks/{ci-BZNWW3I3.js → ci-UMA2SMNW.js} +2 -2
  183. package/dist/cli/chunks/{ci-config-LOHNXOKV.js → ci-config-UQSILJFQ.js} +2 -2
  184. package/dist/cli/chunks/{ci-output-LCOQBSJL.js → ci-output-U6YZLLKH.js} +2 -2
  185. package/dist/cli/chunks/{circuit-breaker-7LRXTLFE.js → circuit-breaker-ATYQP6X2.js} +2 -2
  186. package/dist/cli/chunks/{claude-flow-setup-HBU4VWC3.js → claude-flow-setup-6YHFD7AN.js} +2 -2
  187. package/dist/cli/chunks/client-E43GWLQH.js +2 -0
  188. package/dist/cli/chunks/{cline-installer-CO6MLH6X.js → cline-installer-EPE7IOZE.js} +2 -2
  189. package/dist/cli/chunks/{code-SIXBS6JM.js → code-NUEJ4XYO.js} +19 -18
  190. package/dist/cli/chunks/{code-index-extractor-GWJKZ2IQ.js → code-index-extractor-D4DBT6OL.js} +2 -2
  191. package/dist/cli/chunks/{codex-installer-6NINVWXJ.js → codex-installer-633SM4LR.js} +2 -2
  192. package/dist/cli/chunks/{completions-7VIX3GML.js → completions-WUKVIW3L.js} +2 -2
  193. package/dist/cli/chunks/{complexity-analyzer-FBQR6ZP2.js → complexity-analyzer-F73ACR5H.js} +2 -2
  194. package/dist/cli/chunks/{continuedev-installer-VA7RIXW5.js → continuedev-installer-QH42TKMS.js} +2 -2
  195. package/dist/cli/chunks/{copilot-installer-4QEBC4MU.js → copilot-installer-Y3XC7BTT.js} +2 -2
  196. package/dist/cli/chunks/core-handlers-R5A3SQDY.js +2 -0
  197. package/dist/cli/chunks/{cost-tracker-GRYKHPWL.js → cost-tracker-57QPV7E3.js} +2 -2
  198. package/dist/cli/chunks/coverage-IBCHMBCR.js +51 -0
  199. package/dist/cli/chunks/cross-domain-router-LLYVPZF6.js +2 -0
  200. package/dist/cli/chunks/{cursor-installer-ZXIPSZVH.js → cursor-installer-F4UYQHIN.js} +2 -2
  201. package/dist/cli/chunks/{daemon-N2VRHPSJ.js → daemon-BYYPIJ7G.js} +4 -4
  202. package/dist/cli/chunks/{daemon-D7F3RGI5.js → daemon-XR4Q6YZF.js} +3 -3
  203. package/dist/cli/chunks/{dag-attention-scheduler-NL6BA7BY.js → dag-attention-scheduler-ZR5ZD3TW.js} +2 -2
  204. package/dist/cli/chunks/{detect-XC2HCIIT.js → detect-GEGYURLL.js} +2 -2
  205. package/dist/cli/chunks/{dist-node-A3Y26MEI.js → dist-node-JU3KT2JO.js} +2 -2
  206. package/dist/cli/chunks/{domain-handler-WV6SFXRB.js → domain-handler-7QI3FJGE.js} +2 -2
  207. package/dist/cli/chunks/{domain-plugins-KJIF6Z2B.js → domain-plugins-O2YRM2PD.js} +2 -2
  208. package/dist/cli/chunks/domain-transfer-7J3S2OS6.js +2 -0
  209. package/dist/cli/chunks/dream-6C4NURSE.js +2 -0
  210. package/dist/cli/chunks/{embed-and-insert-pattern-PA3Y4KGO.js → embed-and-insert-pattern-URES5Q6J.js} +2 -2
  211. package/dist/cli/chunks/{eval-YGEZNUVE.js → eval-RVMCIUOR.js} +2 -2
  212. package/dist/cli/chunks/{experience-capture-middleware-D4T7NW6B.js → experience-capture-middleware-SYJQSBKE.js} +3 -3
  213. package/dist/cli/chunks/{fast-paths-6JYK7RYQ.js → fast-paths-QUKPKWKZ.js} +2 -2
  214. package/dist/cli/chunks/{feature-flags-DKXMDVPE.js → feature-flags-5JCSKL2P.js} +2 -2
  215. package/dist/cli/chunks/{feature-flags-RBH2GDSR.js → feature-flags-K7JXNKJI.js} +2 -2
  216. package/dist/cli/chunks/file-discovery-J5IE5KP7.js +2 -0
  217. package/dist/cli/chunks/fleet-II4Q6HXK.js +44 -0
  218. package/dist/cli/chunks/{gnn-wrapper-MV54UC4C.js → gnn-wrapper-M7VO2EMS.js} +2 -2
  219. package/dist/cli/chunks/{heartbeat-handler-7DKMVQQH.js → heartbeat-handler-ND5CY26N.js} +4 -4
  220. package/dist/cli/chunks/heartbeat-scheduler-FC5PBTMN.js +2 -0
  221. package/dist/cli/chunks/hnsw-adapter-47UIVOBG.js +2 -0
  222. package/dist/cli/chunks/hnsw-index-3AKVLOZQ.js +2 -0
  223. package/dist/cli/chunks/{hnsw-legacy-bridge-6IWREDQC.js → hnsw-legacy-bridge-N3AUUUU7.js} +2 -2
  224. package/dist/cli/chunks/{hnswlib-node-5BIESSCK.js → hnswlib-node-NZY3E5EN.js} +2 -2
  225. package/dist/cli/chunks/{hooks-3EETRM62.js → hooks-QVJDTII5.js} +10 -10
  226. package/dist/cli/chunks/hybrid-backend-YAOSNX47.js +2 -0
  227. package/dist/cli/chunks/{hypergraph-engine-RSWCB2D3.js → hypergraph-engine-ZRY6MTDV.js} +2 -2
  228. package/dist/cli/chunks/{hypergraph-handler-552LXKL3.js → hypergraph-handler-56DO4XZQ.js} +3 -3
  229. package/dist/cli/chunks/impact-analyzer-4FMJXM4M.js +2 -0
  230. package/dist/cli/chunks/{init-guard-OTDBJ5HD.js → init-guard-DTF4EVUY.js} +2 -2
  231. package/dist/cli/chunks/{init-handler-3FK3TKEA.js → init-handler-M6CNQHMX.js} +6 -6
  232. package/dist/cli/chunks/init-wizard-RTLCRWDT.js +2 -0
  233. package/dist/cli/chunks/kernel-2OWIGGGT.js +2 -0
  234. package/dist/cli/chunks/{kilocode-installer-KZ2O4LF3.js → kilocode-installer-IJN7XKBH.js} +2 -2
  235. package/dist/cli/chunks/{kiro-installer-MLCCXRF7.js → kiro-installer-UKKPGPDC.js} +2 -2
  236. package/dist/cli/chunks/knowledge-graph-25XXKDJN.js +2 -0
  237. package/dist/cli/chunks/learning-W2HETWQ4.js +131 -0
  238. package/dist/cli/chunks/{llm-router-PDEV3UP2.js → llm-router-Y546K4VX.js} +4 -4
  239. package/dist/cli/chunks/llm-router-service-G3EIN4UB.js +2 -0
  240. package/dist/cli/chunks/{load-XFVVLO7E.js → load-MKAB2AXE.js} +2 -2
  241. package/dist/cli/chunks/load-test-D6QYNIVT.js +2 -0
  242. package/dist/cli/chunks/{mcp-74G3CL2S.js → mcp-AZKUS6K3.js} +2 -2
  243. package/dist/cli/chunks/{memory-XIFM6JNX.js → memory-ZDOQN2KU.js} +5 -5
  244. package/dist/cli/chunks/memory-backend-LDFFZMEQ.js +2 -0
  245. package/dist/cli/chunks/{memory-handlers-ZCKURV6S.js → memory-handlers-3SQVY7FE.js} +2 -2
  246. package/dist/cli/chunks/{multi-model-executor-7L4W3O2Q.js → multi-model-executor-WWVXDHG4.js} +2 -2
  247. package/dist/cli/chunks/{opencode-installer-BPG422LF.js → opencode-installer-YUJNXXWS.js} +2 -2
  248. package/dist/cli/chunks/{orchestrator-OEAFLAEV.js → orchestrator-Z6PWPLRE.js} +109 -25
  249. package/dist/cli/chunks/pattern-null-store-KDVRM7PW.js +2 -0
  250. package/dist/cli/chunks/{pattern-usage-recorder-LOPNCULT.js → pattern-usage-recorder-TPWPX32U.js} +2 -2
  251. package/dist/cli/chunks/{pipeline-VWTYUZB7.js → pipeline-4BBGTE4M.js} +2 -2
  252. package/dist/cli/chunks/{platform-WFJJ3X2E.js → platform-5GSHXCV5.js} +2 -2
  253. package/dist/cli/chunks/{plugin-744TPUSG.js → plugin-OFDVF5HS.js} +2 -2
  254. package/dist/cli/chunks/{prime-radiant-advanced-wasm-BD5BLNDR.js → prime-radiant-advanced-wasm-NC6MUYGJ.js} +2 -2
  255. package/dist/cli/chunks/project-root-DDGBWDP6.js +2 -0
  256. package/dist/cli/chunks/protocol-executor-KBOLLCWA.js +2 -0
  257. package/dist/cli/chunks/{protocol-handler-JIBILI74.js → protocol-handler-MPOAAEPA.js} +2 -2
  258. package/dist/cli/chunks/{prove-MNOL5FYW.js → prove-CDKMAIVM.js} +2 -2
  259. package/dist/cli/chunks/qe-reasoning-bank-GRXBT7FC.js +2 -0
  260. package/dist/cli/chunks/{quality-JEGBDGGX.js → quality-ZH4F7R7R.js} +2 -2
  261. package/dist/cli/chunks/{quality-gate-SYJ6ROMI.js → quality-gate-IDRMW6OE.js} +3 -3
  262. package/dist/cli/chunks/queen-coordinator-L2QWMJ5Q.js +2 -0
  263. package/dist/cli/chunks/{real-embeddings-ZWXS5ZFV.js → real-embeddings-I2UVNNB3.js} +2 -2
  264. package/dist/cli/chunks/{ref-validation-RRHUFW2N.js → ref-validation-Z5GCGVXK.js} +2 -2
  265. package/dist/cli/chunks/{roocode-installer-XFO6JSVN.js → roocode-installer-IZ2S7PH2.js} +2 -2
  266. package/dist/cli/chunks/router-FT5WJPUH.js +2 -0
  267. package/dist/cli/chunks/routing-feedback-EO2MKOUX.js +2 -0
  268. package/dist/cli/chunks/{routing-handler-L2K3JASE.js → routing-handler-NAX35VUW.js} +2 -2
  269. package/dist/cli/chunks/{ruvector-commands-A6CINHGM.js → ruvector-commands-5YW2SOFF.js} +2 -2
  270. package/dist/cli/chunks/rvf-dual-writer-WHBFQJVU.js +2 -0
  271. package/dist/cli/chunks/rvf-migration-adapter-YT3APF2I.js +2 -0
  272. package/dist/cli/chunks/{rvf-migration-coordinator-T4RY7L53.js → rvf-migration-coordinator-VUIZHTVG.js} +2 -2
  273. package/dist/cli/chunks/rvf-native-adapter-37PUFKQD.js +2 -0
  274. package/dist/cli/chunks/{rvf-store-integrity-IR33TGQS.js → rvf-store-integrity-IPGCAT6C.js} +2 -2
  275. package/dist/cli/chunks/safe-db-TDZKUOZJ.js +2 -0
  276. package/dist/cli/chunks/schedule-CRKTRY2A.js +2 -0
  277. package/dist/cli/chunks/scheduler-6ZBDVQWN.js +2 -0
  278. package/dist/cli/chunks/{security-Z5GDE2IH.js → security-3IH4BO5Z.js} +3 -3
  279. package/dist/cli/chunks/{shared-rvf-adapter-SIZMEHPM.js → shared-rvf-adapter-ABY7PAY2.js} +2 -2
  280. package/dist/cli/chunks/{shared-rvf-dual-writer-HLM65RDS.js → shared-rvf-dual-writer-6KENLN2W.js} +2 -2
  281. package/dist/cli/chunks/sqlite-persistence-FFJQAIKW.js +2 -0
  282. package/dist/cli/chunks/{standalone-memory-SKSZG7P5.js → standalone-memory-RLFAUGOW.js} +2 -2
  283. package/dist/cli/chunks/{status-handler-766YOOMJ.js → status-handler-FCOZBPE5.js} +2 -2
  284. package/dist/cli/chunks/{structural-health-M45FNOLT.js → structural-health-4RDA5UUM.js} +2 -2
  285. package/dist/cli/chunks/{sync-B2U366I3.js → sync-54LUAUTK.js} +2 -2
  286. package/dist/cli/chunks/{sync-6CJ24B5T.js → sync-KGEEXXCC.js} +2 -2
  287. package/dist/cli/chunks/task-handler-K3OXHYKU.js +62 -0
  288. package/dist/cli/chunks/task-handlers-6H7L2UT4.js +9 -0
  289. package/dist/cli/chunks/{test-TODH7KRF.js → test-S7IG6EIX.js} +4 -4
  290. package/dist/cli/chunks/test-runner-process-OTQDAJLN.js +2 -0
  291. package/dist/cli/chunks/{test-scheduling-VMVMVRHT.js → test-scheduling-7XYXI4L2.js} +3 -3
  292. package/dist/cli/chunks/{token-bootstrap-XQW7BMCK.js → token-bootstrap-3QMABE45.js} +2 -2
  293. package/dist/cli/chunks/{token-usage-JCZEIRKO.js → token-usage-Y2YTPOFE.js} +2 -2
  294. package/dist/cli/chunks/{transformers-U2ML3OHE.js → transformers-UCJ3HHHC.js} +2 -2
  295. package/dist/cli/chunks/tree-sitter-wasm-parser-D6JTTHTP.js +2 -0
  296. package/dist/cli/chunks/{types-GGEPCHP6.js → types-6CMFPETH.js} +2 -2
  297. package/dist/cli/chunks/unified-memory-QARWQKJ2.js +2 -0
  298. package/dist/cli/chunks/unified-memory-hnsw-LHY3DXCP.js +2 -0
  299. package/dist/cli/chunks/unified-persistence-WEYYGLHM.js +2 -0
  300. package/dist/cli/chunks/{upgrade-T5GRM7HS.js → upgrade-K25DN6WU.js} +2 -2
  301. package/dist/cli/chunks/{validate-XMUJPLP3.js → validate-T4V3TBY3.js} +2 -2
  302. package/dist/cli/chunks/{validate-swarm-KJLF7JEH.js → validate-swarm-XSRC576T.js} +2 -2
  303. package/dist/cli/chunks/visual-security-O4ALMCXQ.js +2 -0
  304. package/dist/cli/chunks/{web-tree-sitter-LOHVZ7G5.js → web-tree-sitter-YOZXHRTN.js} +2 -2
  305. package/dist/cli/chunks/{windsurf-installer-33FBTXJU.js → windsurf-installer-ITPU2IYL.js} +2 -2
  306. package/dist/cli/chunks/witness-chain-B3YW5NMS.js +2 -0
  307. package/dist/cli/chunks/witness-chain-PIYR72HJ.js +2 -0
  308. package/dist/cli/chunks/{witness-chain-repair-VWBO4NXE.js → witness-chain-repair-YUG7E3UX.js} +2 -2
  309. package/dist/cli/chunks/{witness-chain-verifier-BHJ3ZAEK.js → witness-chain-verifier-DTDSVKOG.js} +2 -2
  310. package/dist/cli/chunks/{witness-key-manager-WNVPH2Z3.js → witness-key-manager-EWACWGAW.js} +2 -2
  311. package/dist/cli/chunks/{workflow-6QR5MQTO.js → workflow-ZIQ4FV42.js} +4 -4
  312. package/dist/cli/chunks/workflow-orchestrator-3ZN2BCGY.js +2 -0
  313. package/dist/cli/chunks/{wrappers-EHOL62TS.js → wrappers-PW2O27LL.js} +2 -2
  314. package/dist/cli/commands/code.js +6 -0
  315. package/dist/cli/commands/coverage.js +6 -0
  316. package/dist/cli/commands/fleet-run.d.ts +12 -0
  317. package/dist/cli/commands/fleet-run.js +175 -0
  318. package/dist/cli/commands/fleet.js +2 -117
  319. package/dist/cli/commands/learning-prune.d.ts +14 -0
  320. package/dist/cli/commands/learning-prune.js +105 -0
  321. package/dist/cli/commands/learning.js +9 -0
  322. package/dist/cli/handlers/brain-handler.js +12 -1
  323. package/dist/cli/handlers/task-handler.d.ts +5 -0
  324. package/dist/cli/handlers/task-handler.js +20 -0
  325. package/dist/cli/utils/coverage-verdict.js +14 -3
  326. package/dist/cli/utils/fleet-operation.d.ts +5 -2
  327. package/dist/cli/utils/fleet-operation.js +13 -2
  328. package/dist/cli/utils/fleet-result.d.ts +16 -2
  329. package/dist/cli/utils/fleet-result.js +26 -21
  330. package/dist/cli/utils/fleet-shard.d.ts +36 -0
  331. package/dist/cli/utils/fleet-shard.js +110 -0
  332. package/dist/context/compaction/index.d.ts +7 -0
  333. package/dist/context/compaction/index.js +30 -6
  334. package/dist/coordination/handlers/code-intelligence-handlers.js +21 -1
  335. package/dist/coordination/handlers/coverage-evidence.d.ts +19 -0
  336. package/dist/coordination/handlers/coverage-evidence.js +31 -2
  337. package/dist/coordination/handlers/coverage-handlers.js +5 -1
  338. package/dist/coordination/handlers/coverage-target.js +8 -1
  339. package/dist/coordination/handlers/handler-types.d.ts +2 -2
  340. package/dist/coordination/handlers/handler-utils.d.ts +6 -0
  341. package/dist/coordination/handlers/handler-utils.js +14 -4
  342. package/dist/coordination/handlers/misc-handlers.js +5 -2
  343. package/dist/coordination/handlers/quality-handlers.js +11 -3
  344. package/dist/coordination/handlers/security-handlers.js +12 -2
  345. package/dist/coordination/protocols/security-audit.js +11 -1
  346. package/dist/coordination/result-saver-adapters.js +1 -0
  347. package/dist/coordination/result-saver.js +9 -5
  348. package/dist/coordination/task-executor.js +7 -2
  349. package/dist/domains/chaos-resilience/services/chaos-engineer.d.ts +1 -0
  350. package/dist/domains/chaos-resilience/services/chaos-engineer.js +23 -45
  351. package/dist/domains/code-intelligence/coordinator-gnn.d.ts +2 -16
  352. package/dist/domains/code-intelligence/coordinator-gnn.js +1 -62
  353. package/dist/domains/code-intelligence/coordinator.d.ts +12 -6
  354. package/dist/domains/code-intelligence/coordinator.js +24 -27
  355. package/dist/domains/code-intelligence/interfaces.d.ts +9 -0
  356. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +43 -5
  357. package/dist/domains/code-intelligence/services/semantic-analyzer.js +134 -71
  358. package/dist/domains/coverage-analysis/collected-metrics.d.ts +26 -0
  359. package/dist/domains/coverage-analysis/collected-metrics.js +54 -0
  360. package/dist/domains/coverage-analysis/services/coverage-analyzer.js +13 -3
  361. package/dist/domains/coverage-analysis/services/coverage-parser.d.ts +2 -0
  362. package/dist/domains/coverage-analysis/services/coverage-parser.js +18 -2
  363. package/dist/domains/defect-intelligence/services/defect-predictor.js +3 -6
  364. package/dist/domains/quality-assessment/coherence/gate-controller.js +16 -4
  365. package/dist/domains/quality-assessment/coherence/lambda-calculator.d.ts +8 -0
  366. package/dist/domains/quality-assessment/coherence/lambda-calculator.js +57 -14
  367. package/dist/domains/quality-assessment/coherence/types.d.ts +12 -7
  368. package/dist/domains/quality-assessment/coordinator-gate-evaluation.js +3 -1
  369. package/dist/domains/quality-assessment/coordinator-reports.d.ts +30 -10
  370. package/dist/domains/quality-assessment/coordinator-reports.js +93 -57
  371. package/dist/domains/quality-assessment/coordinator.d.ts +14 -40
  372. package/dist/domains/quality-assessment/coordinator.js +10 -4
  373. package/dist/domains/quality-assessment/coverage-report-event.d.ts +8 -0
  374. package/dist/domains/quality-assessment/coverage-report-event.js +22 -1
  375. package/dist/domains/quality-assessment/interfaces.d.ts +8 -0
  376. package/dist/domains/quality-assessment/services/coherence-gate.js +15 -2
  377. package/dist/domains/quality-assessment/services/quality-analyzer.d.ts +4 -0
  378. package/dist/domains/quality-assessment/services/quality-analyzer.js +63 -17
  379. package/dist/domains/quality-assessment/services/quality-gate.js +6 -4
  380. package/dist/domains/security-compliance/index.d.ts +1 -1
  381. package/dist/domains/security-compliance/interfaces.d.ts +46 -5
  382. package/dist/domains/security-compliance/services/scanners/dast-auth-testing.d.ts +3 -3
  383. package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +15 -14
  384. package/dist/domains/security-compliance/services/scanners/dast-helpers.d.ts +8 -9
  385. package/dist/domains/security-compliance/services/scanners/dast-helpers.js +19 -44
  386. package/dist/domains/security-compliance/services/scanners/dast-injection-testing.d.ts +3 -3
  387. package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +13 -9
  388. package/dist/domains/security-compliance/services/scanners/dast-requests.d.ts +54 -0
  389. package/dist/domains/security-compliance/services/scanners/dast-requests.js +125 -0
  390. package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +5 -1
  391. package/dist/domains/security-compliance/services/scanners/dast-scanner.js +125 -155
  392. package/dist/domains/security-compliance/services/scanners/index.d.ts +1 -1
  393. package/dist/domains/security-compliance/services/scanners/index.js +1 -1
  394. package/dist/domains/security-compliance/services/scanners/scanner-types.d.ts +2 -2
  395. package/dist/domains/security-compliance/services/security-auditor-dast.js +183 -212
  396. package/dist/domains/security-compliance/services/security-auditor-reports.js +5 -1
  397. package/dist/domains/security-compliance/services/security-auditor.d.ts +11 -3
  398. package/dist/domains/security-compliance/services/security-auditor.js +106 -65
  399. package/dist/domains/test-execution/coordinator.d.ts +2 -1
  400. package/dist/domains/test-execution/coordinator.js +33 -27
  401. package/dist/domains/test-execution/interfaces.d.ts +10 -0
  402. package/dist/domains/test-execution/services/test-executor.d.ts +6 -0
  403. package/dist/domains/test-execution/services/test-executor.js +22 -4
  404. package/dist/domains/visual-accessibility/coordinator.js +34 -9
  405. package/dist/domains/visual-accessibility/interfaces.d.ts +27 -0
  406. package/dist/domains/visual-accessibility/plugin.js +5 -0
  407. package/dist/domains/visual-accessibility/services/accessibility-tester-heuristics.d.ts +13 -21
  408. package/dist/domains/visual-accessibility/services/accessibility-tester-heuristics.js +13 -297
  409. package/dist/domains/visual-accessibility/services/accessibility-tester.d.ts +13 -5
  410. package/dist/domains/visual-accessibility/services/accessibility-tester.js +96 -73
  411. package/dist/init/phases/07-hooks.js +90 -6
  412. package/dist/integrations/embeddings/index/HNSWIndex.js +8 -4
  413. package/dist/integrations/ruvector/brain-rvf-exporter.d.ts +25 -0
  414. package/dist/integrations/ruvector/brain-rvf-exporter.js +154 -61
  415. package/dist/integrations/ruvector/transfer-coherence-stub.js +5 -10
  416. package/dist/learning/dream/dream-engine.d.ts +24 -1
  417. package/dist/learning/dream/dream-engine.js +57 -6
  418. package/dist/learning/learning-retention.d.ts +103 -0
  419. package/dist/learning/learning-retention.js +213 -0
  420. package/dist/mcp/bundle.js +508 -503
  421. package/dist/mcp/handlers/domain-handler-configs.d.ts +17 -1
  422. package/dist/mcp/handlers/domain-handler-configs.js +33 -16
  423. package/dist/mcp/handlers/handler-factory.js +3 -0
  424. package/dist/mcp/handlers/model-route-handlers.d.ts +107 -0
  425. package/dist/mcp/handlers/model-route-handlers.js +139 -0
  426. package/dist/mcp/handlers/orchestrate-routes.js +41 -3
  427. package/dist/mcp/handlers/task-handlers.d.ts +3 -251
  428. package/dist/mcp/handlers/task-handlers.js +6 -828
  429. package/dist/mcp/handlers/task-inference.d.ts +26 -0
  430. package/dist/mcp/handlers/task-inference.js +156 -0
  431. package/dist/mcp/handlers/task-learning-handlers.d.ts +92 -0
  432. package/dist/mcp/handlers/task-learning-handlers.js +230 -0
  433. package/dist/mcp/handlers/task-orchestrate-handler.d.ts +73 -0
  434. package/dist/mcp/handlers/task-orchestrate-handler.js +361 -0
  435. package/dist/mcp/protocol-server.js +13 -3
  436. package/dist/mcp/tools/chaos-resilience/inject.d.ts +3 -4
  437. package/dist/mcp/tools/chaos-resilience/inject.js +11 -81
  438. package/dist/mcp/tools/code-intelligence/analyze.js +3 -6
  439. package/dist/mcp/tools/coverage-analysis/index.d.ts +4 -0
  440. package/dist/mcp/tools/coverage-analysis/index.js +8 -2
  441. package/dist/mcp/tools/learning-optimization/dream.d.ts +8 -0
  442. package/dist/mcp/tools/learning-optimization/dream.js +4 -0
  443. package/dist/mcp/tools/visual-accessibility/index.d.ts +7 -0
  444. package/dist/mcp/tools/visual-accessibility/index.js +29 -13
  445. package/dist/shared/events/domain-events.d.ts +2 -0
  446. package/dist/shared/metrics/code-metrics.js +21 -3
  447. package/dist/shared/parsers/typescript-parser.d.ts +6 -0
  448. package/dist/shared/parsers/typescript-parser.js +13 -1
  449. package/package.json +1 -1
  450. package/dist/cli/chunks/adapter-HL7MOCQN.js +0 -2
  451. package/dist/cli/chunks/aqe-learning-engine-OZ2DXB4G.js +0 -2
  452. package/dist/cli/chunks/base-WIM7G3HC.js +0 -2
  453. package/dist/cli/chunks/brain-handler-MPC5SPYI.js +0 -94
  454. package/dist/cli/chunks/browser-workflow-QRKCFVR3.js +0 -2
  455. package/dist/cli/chunks/chunk-4A76VPU4.js +0 -3
  456. package/dist/cli/chunks/chunk-QSGEBCDB.js +0 -62
  457. package/dist/cli/chunks/chunk-UCSK2RMI.js +0 -2
  458. package/dist/cli/chunks/chunk-VXVTFKRA.js +0 -2
  459. package/dist/cli/chunks/chunk-XCNSGSKV.js +0 -3
  460. package/dist/cli/chunks/chunk-XZOYKB22.js +0 -79
  461. package/dist/cli/chunks/chunk-YIDAXOUX.js +0 -8
  462. package/dist/cli/chunks/client-4PNYDFYS.js +0 -2
  463. package/dist/cli/chunks/core-handlers-ODO6LUWQ.js +0 -2
  464. package/dist/cli/chunks/coverage-USPMNKOU.js +0 -50
  465. package/dist/cli/chunks/cross-domain-router-DT4MHJKK.js +0 -2
  466. package/dist/cli/chunks/domain-transfer-L3F6AES2.js +0 -2
  467. package/dist/cli/chunks/dream-QOB3JCOM.js +0 -2
  468. package/dist/cli/chunks/file-discovery-BN76S2PR.js +0 -2
  469. package/dist/cli/chunks/fleet-43YMXACN.js +0 -46
  470. package/dist/cli/chunks/heartbeat-scheduler-3NNP4WCP.js +0 -2
  471. package/dist/cli/chunks/hnsw-adapter-MZR7Y4WF.js +0 -2
  472. package/dist/cli/chunks/hnsw-index-HE4AX22U.js +0 -2
  473. package/dist/cli/chunks/hybrid-backend-IHUHB3Y2.js +0 -2
  474. package/dist/cli/chunks/impact-analyzer-FI6GI6PD.js +0 -2
  475. package/dist/cli/chunks/init-wizard-WLQKH5Y5.js +0 -2
  476. package/dist/cli/chunks/kernel-2WZOQEZS.js +0 -2
  477. package/dist/cli/chunks/knowledge-graph-G3LVKK6P.js +0 -2
  478. package/dist/cli/chunks/learning-QUCMBD77.js +0 -122
  479. package/dist/cli/chunks/llm-router-service-MM75HKWJ.js +0 -2
  480. package/dist/cli/chunks/load-test-BEWEE44J.js +0 -2
  481. package/dist/cli/chunks/memory-backend-NYKBBKZR.js +0 -2
  482. package/dist/cli/chunks/pattern-null-store-QGPUIV6M.js +0 -2
  483. package/dist/cli/chunks/project-root-C7ELXZRK.js +0 -2
  484. package/dist/cli/chunks/protocol-executor-SUVE33BM.js +0 -2
  485. package/dist/cli/chunks/qe-reasoning-bank-YWZMMGJB.js +0 -2
  486. package/dist/cli/chunks/queen-coordinator-ZFAKXRN7.js +0 -2
  487. package/dist/cli/chunks/router-4FTAVYLJ.js +0 -2
  488. package/dist/cli/chunks/routing-feedback-IO2KOWMJ.js +0 -2
  489. package/dist/cli/chunks/rvf-dual-writer-KCIRNE7C.js +0 -2
  490. package/dist/cli/chunks/rvf-migration-adapter-MFC5WTJU.js +0 -2
  491. package/dist/cli/chunks/rvf-native-adapter-I3KWHE7X.js +0 -2
  492. package/dist/cli/chunks/safe-db-QXDZ6QY3.js +0 -2
  493. package/dist/cli/chunks/schedule-CZKD6RIY.js +0 -2
  494. package/dist/cli/chunks/scheduler-BLA3Q4CH.js +0 -2
  495. package/dist/cli/chunks/sqlite-persistence-XIUYDJC4.js +0 -2
  496. package/dist/cli/chunks/task-handler-P6IFLCKP.js +0 -62
  497. package/dist/cli/chunks/task-handlers-DPWMUKFC.js +0 -9
  498. package/dist/cli/chunks/test-runner-process-46IPK3GH.js +0 -2
  499. package/dist/cli/chunks/tree-sitter-wasm-parser-MOI2WWNJ.js +0 -2
  500. package/dist/cli/chunks/unified-memory-FL26RTV3.js +0 -2
  501. package/dist/cli/chunks/unified-memory-hnsw-E2BPTH3U.js +0 -2
  502. package/dist/cli/chunks/unified-persistence-5ZOUPKHF.js +0 -2
  503. package/dist/cli/chunks/visual-security-IJVPO5FA.js +0 -2
  504. package/dist/cli/chunks/witness-chain-5FAFCQKP.js +0 -2
  505. package/dist/cli/chunks/witness-chain-V2M32W5D.js +0 -2
  506. package/dist/cli/chunks/workflow-orchestrator-3JLF3IX7.js +0 -2
@@ -0,0 +1,105 @@
1
+ /**
2
+ * `aqe learning prune` (#1239)
3
+ *
4
+ * Bounds the learning tables on demand. A dry run by default: it prints the
5
+ * row counts each step would change and writes nothing. `--apply` makes the
6
+ * changes, after a verified backup of memory.db unless `--no-backup`.
7
+ *
8
+ * The two default steps (failed dream cycles, outcome concepts) also run
9
+ * after every committed dream. The other two drop data that may still be of
10
+ * use, so they run only when asked for here.
11
+ */
12
+ import path from 'node:path';
13
+ import { randomUUID } from 'node:crypto';
14
+ import { existsSync } from 'node:fs';
15
+ import chalk from 'chalk';
16
+ import { openDatabase } from '../../shared/safe-db.js';
17
+ import { backupLearningDatabase } from './learning-snapshot.js';
18
+ import { getDbPath, printError, printJson } from './learning-helpers.js';
19
+ import { DEFAULT_FAILED_DREAM_CYCLE_RETENTION_DAYS, DEFAULT_OUTCOME_CONCEPT_CAP, MIN_OUTCOME_CONCEPT_CAP, capOutcomeConcepts, compactConsolidatedExperiences, describeRetention, pruneFailedDreamCycles, pruneRoutingOutcomes, } from '../../learning/learning-retention.js';
20
+ function wholeNumber(flag, raw, min) {
21
+ if (!/^\d+$/.test(raw) || Number(raw) < min) {
22
+ throw new Error(`${flag} must be a whole number >= ${min}, got "${raw}"`);
23
+ }
24
+ return Number(raw);
25
+ }
26
+ export function registerPruneCommand(learning) {
27
+ learning
28
+ .command('prune')
29
+ .description('Bound learning-table growth (dry run unless --apply)')
30
+ .option('--dry-run', 'Print the row counts that would change; write nothing (default)')
31
+ .option('--apply', 'Make the changes (backs up memory.db first)')
32
+ .option('--no-backup', 'With --apply: skip the backup')
33
+ .option('--failed-dream-cycles-days <n>', 'Remove failed/interrupted dream cycles older than n days', String(DEFAULT_FAILED_DREAM_CYCLE_RETENTION_DAYS))
34
+ .option('--outcome-concepts-max <n>', 'Keep the newest n outcome concept nodes', String(DEFAULT_OUTCOME_CONCEPT_CAP))
35
+ .option('--compact-experiences', 'Opt-in: clear result_json and embedding of archived/merged experiences')
36
+ .option('--routing-outcomes-older-than <days>', 'Opt-in: remove routing outcomes older than this')
37
+ .option('--json', 'Output as JSON')
38
+ .addHelpText('after', `
39
+ Examples:
40
+ aqe learning prune # dry run of the default steps
41
+ aqe learning prune --compact-experiences # dry run, including compaction
42
+ aqe learning prune --compact-experiences --apply # back up, then compact
43
+
44
+ Rows deleted inside the file are reused by SQLite; run VACUUM to shrink the file itself.`)
45
+ .action(async (options) => {
46
+ try {
47
+ if (options.apply && options.dryRun)
48
+ throw new Error('--apply and --dry-run cannot be combined');
49
+ const dryRun = !options.apply;
50
+ const failedDays = wholeNumber('--failed-dream-cycles-days', options.failedDreamCyclesDays, 1);
51
+ const outcomeMax = wholeNumber('--outcome-concepts-max', options.outcomeConceptsMax, MIN_OUTCOME_CONCEPT_CAP);
52
+ const routingDays = options.routingOutcomesOlderThan === undefined
53
+ ? undefined
54
+ : wholeNumber('--routing-outcomes-older-than', options.routingOutcomesOlderThan, 1);
55
+ const dbPath = getDbPath();
56
+ if (!existsSync(dbPath))
57
+ throw new Error(`No learning database found at: ${dbPath}`);
58
+ let backupPath;
59
+ if (!dryRun && options.backup) {
60
+ const stamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 23);
61
+ const output = path.join(path.dirname(dbPath), 'backups', `pre-prune-${stamp}-${randomUUID()}.db`);
62
+ backupPath = (await backupLearningDatabase(dbPath, output, { verify: true })).backupPath;
63
+ }
64
+ const db = openDatabase(dbPath, { readonly: dryRun, fileMustExist: true });
65
+ const results = [];
66
+ try {
67
+ results.push(pruneFailedDreamCycles(db, { retentionDays: failedDays, dryRun }));
68
+ results.push(capOutcomeConcepts(db, { maxNodes: outcomeMax, dryRun }));
69
+ if (options.compactExperiences)
70
+ results.push(compactConsolidatedExperiences(db, { dryRun }));
71
+ if (routingDays !== undefined) {
72
+ results.push(pruneRoutingOutcomes(db, { olderThanDays: routingDays, dryRun }));
73
+ }
74
+ }
75
+ finally {
76
+ db.close();
77
+ }
78
+ if (options.json) {
79
+ printJson({ dryRun, dbPath, backupPath, steps: results });
80
+ return;
81
+ }
82
+ console.log(chalk.bold(`\nLearning prune${dryRun ? ' (dry run, nothing written)' : ''}\n`));
83
+ console.log(` Database: ${dbPath}`);
84
+ if (backupPath)
85
+ console.log(` Backup: ${backupPath}`);
86
+ for (const step of results) {
87
+ const extra = step.payloadBytes !== undefined
88
+ ? `, ${(step.payloadBytes / (1024 * 1024)).toFixed(1)} MB of payload`
89
+ : '';
90
+ console.log(` ${describeRetention(step)}${extra}`);
91
+ }
92
+ if (dryRun)
93
+ console.log(chalk.gray('\n Re-run with --apply to make these changes.'));
94
+ if (!options.compactExperiences || routingDays === undefined) {
95
+ console.log(chalk.gray(' Opt-in steps: --compact-experiences, --routing-outcomes-older-than <days>.'));
96
+ }
97
+ console.log('');
98
+ }
99
+ catch (error) {
100
+ printError(`prune failed: ${error instanceof Error ? error.message : String(error)}`);
101
+ process.exitCode = 1;
102
+ }
103
+ });
104
+ }
105
+ //# sourceMappingURL=learning-prune.js.map
@@ -22,6 +22,8 @@ import { createLearningMetricsTracker, } from '../../learning/metrics-tracker.js
22
22
  import { createRegretTracker, } from '../../learning/regret-tracker.js';
23
23
  import { openDatabase } from '../../shared/safe-db.js';
24
24
  import { backupLearningDatabase, restoreLearningDatabase } from './learning-snapshot.js';
25
+ import { registerPruneCommand } from './learning-prune.js';
26
+ import { describeDreamRetention } from '../../learning/learning-retention.js';
25
27
  import { createSQLitePatternStore } from '../../learning/sqlite-persistence.js';
26
28
  import { getActiveEmbeddingSpaceIdentity } from '../../learning/real-embeddings.js';
27
29
  import { inspectEmbeddingSpaceRows } from '../../learning/embedding-space.js';
@@ -75,6 +77,7 @@ Examples:
75
77
  registerRepairCommand(learning);
76
78
  registerHealthCommand(learning);
77
79
  registerLoopHealthCommand(learning);
80
+ registerPruneCommand(learning);
78
81
  return learning;
79
82
  }
80
83
  // ============================================================================
@@ -1244,6 +1247,9 @@ function registerDreamCommand(learning) {
1244
1247
  conceptsProcessed: result.cycle.conceptsProcessed, associationsFound: result.cycle.associationsFound,
1245
1248
  insightsGenerated: result.cycle.insightsGenerated, activationStats: result.activationStats,
1246
1249
  patternsCreated: result.patternsCreated,
1250
+ retention: result.retention
1251
+ ? { enabled: result.retention.enabled, steps: describeDreamRetention(result.retention) }
1252
+ : undefined,
1247
1253
  insights: result.insights.map(i => ({ id: i.id, type: i.type, description: i.description, noveltyScore: i.noveltyScore, confidenceScore: i.confidenceScore, actionable: i.actionable })),
1248
1254
  });
1249
1255
  }
@@ -1255,6 +1261,9 @@ function registerDreamCommand(learning) {
1255
1261
  console.log(` Concepts: ${result.cycle.conceptsProcessed}`);
1256
1262
  console.log(` Associations: ${result.cycle.associationsFound}`);
1257
1263
  console.log(` Insights: ${result.cycle.insightsGenerated}`);
1264
+ for (const line of result.retention ? describeDreamRetention(result.retention) : []) {
1265
+ console.log(` Retention: ${line}`);
1266
+ }
1258
1267
  if (result.activationStats) {
1259
1268
  console.log(chalk.bold('\n Activation Stats:'));
1260
1269
  console.log(` Iterations: ${result.activationStats.totalIterations}`);
@@ -107,13 +107,24 @@ export class BrainHandler {
107
107
  console.log(` RVF Size: ${chalk.cyan(formatBytes(rvf.fileSizeBytes))}`);
108
108
  console.log(` Segments: ${chalk.cyan(rvf.totalSegments)}`);
109
109
  }
110
+ const skippedVectors = manifest.stats
111
+ .skippedCacheRows?.vectors;
112
+ if (skippedVectors) {
113
+ console.log(` Skipped: ${chalk.gray(`${skippedVectors} code-index vectors (regenerable: aqe code index <path>)`)}`);
114
+ }
110
115
  console.log(` Checksum: ${chalk.gray(manifest.checksum)}`);
111
116
  console.log(` Output: ${chalk.cyan(path.resolve(options.output))}`);
112
117
  console.log('');
113
118
  await this.cleanupAndExit(0);
114
119
  }
115
120
  catch (error) {
116
- console.error(chalk.red('\n Brain export failed:'), error);
121
+ if (error?.code === 'RVF_KERNEL_TOO_LARGE') {
122
+ // Expected condition, not a crash: the message names the size and the fix.
123
+ console.error(chalk.red('\n Brain export failed:'), error.message);
124
+ }
125
+ else {
126
+ console.error(chalk.red('\n Brain export failed:'), error);
127
+ }
117
128
  await this.cleanupAndExit(1);
118
129
  }
119
130
  }
@@ -5,6 +5,11 @@
5
5
  */
6
6
  import { Command } from 'commander';
7
7
  import { ICommandHandler, CLIContext } from './interfaces.js';
8
+ /**
9
+ * What a completed task's result says it could not check (#1135, #1052):
10
+ * `incompleteChecks`, or a top-level status of incomplete/failed with its reason.
11
+ */
12
+ export declare function incompleteResultReasons(result: unknown): string[];
8
13
  export declare class TaskHandler implements ICommandHandler {
9
14
  readonly name = "task";
10
15
  readonly description = "Manage QE tasks";
@@ -13,6 +13,20 @@ import { writeOutput, toJSON } from '../utils/ci-output.js';
13
13
  // ============================================================================
14
14
  // Task Handler
15
15
  // ============================================================================
16
+ /**
17
+ * What a completed task's result says it could not check (#1135, #1052):
18
+ * `incompleteChecks`, or a top-level status of incomplete/failed with its reason.
19
+ */
20
+ export function incompleteResultReasons(result) {
21
+ if (!result || typeof result !== 'object')
22
+ return [];
23
+ const { status, error, incompleteChecks } = result;
24
+ const reasons = Array.isArray(incompleteChecks) ? incompleteChecks.filter((reason) => typeof reason === 'string') : [];
25
+ if (reasons.length === 0 && (status === 'incomplete' || status === 'failed')) {
26
+ reasons.push(typeof error === 'string' ? error : `result status is ${status}`);
27
+ }
28
+ return reasons;
29
+ }
16
30
  export class TaskHandler {
17
31
  name = 'task';
18
32
  description = 'Manage QE tasks';
@@ -149,6 +163,12 @@ export class TaskHandler {
149
163
  const taskStatus = context.queen.getTaskStatus(taskId);
150
164
  if (taskStatus) {
151
165
  if (taskStatus.status === 'completed') {
166
+ // #1135, #1052: a result that reports an incomplete or failed check is not a clean run.
167
+ const incomplete = incompleteResultReasons(taskStatus.result);
168
+ if (incomplete.length > 0) {
169
+ waitSpinner.fail(`Task completed, but its result is incomplete: ${incomplete.join('; ')}`);
170
+ return this.cleanupAndExit(1);
171
+ }
152
172
  waitSpinner.succeed('Task completed successfully');
153
173
  completed = true;
154
174
  }
@@ -23,7 +23,7 @@ import chalk from 'chalk';
23
23
  import { walkSourceFiles } from './file-discovery.js';
24
24
  import { buildCoverageData, summarizeCoverage } from './coverage-data.js';
25
25
  import { describeNoData, reconcileRecommendations, resolveExistingCoverage, thresholdVerdict, } from '../../coordination/handlers/coverage-target.js';
26
- import { describeEvidence } from '../../coordination/handlers/coverage-evidence.js';
26
+ import { describeEvidence, describeExcludedEntries } from '../../coordination/handlers/coverage-evidence.js';
27
27
  /** `aqe coverage` exit code when no coverage measurement exists for the target (#995). */
28
28
  export const EXIT_UNMEASURED = 3;
29
29
  /** Provenance labels, the same vocabulary as MCP `coverage_analyze_sublinear`. */
@@ -157,6 +157,15 @@ export function coverageExitCode(outcome, threshold) {
157
157
  return 1;
158
158
  }
159
159
  }
160
+ /** The JSON `warning`: the evidence gaps, then the report entries left out (#1219). */
161
+ function coverageWarning(insufficient, excludedNotes) {
162
+ if (insufficient.length === 0 && excludedNotes.length === 0)
163
+ return {};
164
+ const gaps = insufficient.length > 0 ? `INSUFFICIENT EVIDENCE: ${insufficient.join('; ')}` : '';
165
+ if (excludedNotes.length === 0)
166
+ return { warning: gaps };
167
+ return { warning: [gaps && gaps.replace(/\.?$/, '.'), ...excludedNotes].filter(Boolean).join(' ') };
168
+ }
160
169
  /** The `-F json` document for an outcome (same shape in every case). */
161
170
  export function coverageJson(outcome, threshold, target) {
162
171
  const nulls = { line: null, branch: null, function: null, statement: null };
@@ -176,8 +185,10 @@ export function coverageJson(outcome, threshold, target) {
176
185
  ...(outcome.data.unmeasuredFiles?.length ? { unmeasuredFiles: outcome.data.unmeasuredFiles } : {}),
177
186
  ...(outcome.evidence ? { evidenceStatus: outcome.evidence.status } : {}),
178
187
  ...(outcome.evidence?.stale ? { staleReport: outcome.evidence.stale } : {}),
179
- ...(outcome.insufficientEvidence.length > 0
180
- ? { warning: `INSUFFICIENT EVIDENCE: ${outcome.insufficientEvidence.join('; ')}` } : {}),
188
+ // #1219: report entries that are not project files, left out of the figures.
189
+ ...(outcome.evidence?.conflictingFiles ? { conflictingFiles: outcome.evidence.conflictingFiles } : {}),
190
+ ...(outcome.evidence?.excludedEntries ? { excludedReportEntries: outcome.evidence.excludedEntries } : {}),
191
+ ...coverageWarning(outcome.insufficientEvidence, describeExcludedEntries(outcome.evidence)),
181
192
  };
182
193
  case 'estimate':
183
194
  return {
@@ -32,6 +32,9 @@ export type FleetOperationPlan = {
32
32
  };
33
33
  /** Coverage threshold `analyze` judges against, as `aqe coverage` does by default. */
34
34
  export declare const FLEET_COVERAGE_THRESHOLD = 80;
35
- /** Build the domain task for a fleet operation on `target`, or say why it cannot run. */
36
- export declare function planFleetOperation(operation: FleetOperation, target: string): Promise<FleetOperationPlan>;
35
+ /**
36
+ * Build the domain task for a fleet operation on `target`, or say why it
37
+ * cannot run. `projectRoot` defaults to the project `aqe` runs in.
38
+ */
39
+ export declare function planFleetOperation(operation: FleetOperation, target: string, projectRoot?: string): Promise<FleetOperationPlan>;
37
40
  //# sourceMappingURL=fleet-operation.d.ts.map
@@ -17,17 +17,28 @@ import { summarizeCoverage } from './coverage-data.js';
17
17
  import { describeNoData, resolveExistingCoverage } from '../../coordination/handlers/coverage-target.js';
18
18
  import { describeEvidence } from '../../coordination/handlers/coverage-evidence.js';
19
19
  import { MAX_SAST_FILE_BYTES } from '../../domains/security-compliance/sast-path-guard.js';
20
+ import { confinePayloadPaths } from '../../shared/io/payload-path-guard.js';
20
21
  export const FLEET_OPERATIONS = ['test', 'analyze', 'scan'];
21
22
  /** Coverage threshold `analyze` judges against, as `aqe coverage` does by default. */
22
23
  export const FLEET_COVERAGE_THRESHOLD = 80;
23
24
  /** Extensions the built-in SAST patterns cover (sast-scanner.ts). */
24
25
  const SAST_EXTENSIONS = new Set(['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs']);
25
26
  const refuse = (error) => ({ success: false, error });
26
- /** Build the domain task for a fleet operation on `target`, or say why it cannot run. */
27
- export async function planFleetOperation(operation, target) {
27
+ /**
28
+ * Build the domain task for a fleet operation on `target`, or say why it
29
+ * cannot run. `projectRoot` defaults to the project `aqe` runs in.
30
+ */
31
+ export async function planFleetOperation(operation, target, projectRoot) {
28
32
  const targetPath = resolve(target);
29
33
  if (!existsSync(targetPath))
30
34
  return refuse(`Target does not exist: ${target}`);
35
+ // #1146: the target is confined to the project, as handler paths are
36
+ // (#1096): a symlink that leads out of the project is refused here instead
37
+ // of failing every worker later.
38
+ const { skipped } = await confinePayloadPaths([target], { projectRoot, allowDirectory: true });
39
+ if (skipped[0]?.reason === 'outside-project-root') {
40
+ return refuse(`Target ${target} resolves outside the project. Run aqe from the project the target belongs to.`);
41
+ }
31
42
  switch (operation) {
32
43
  case 'test': {
33
44
  const sourceFiles = walkSourceFiles(targetPath, { includeTests: false });
@@ -21,11 +21,25 @@ export interface FleetResultSummary {
21
21
  }
22
22
  /** Summarize one completed task's result for its fleet operation. */
23
23
  export declare function summarizeFleetResult(operation: FleetOperation, result: unknown): FleetResultSummary;
24
+ export interface FleetVerdict {
25
+ /** The workers' results combined into one (#1146); undefined when no worker completed. */
26
+ combined: unknown;
27
+ /** Summary of the combined result; undefined when no worker completed. */
28
+ summary?: FleetResultSummary;
29
+ passed: boolean;
30
+ reasons: string[];
31
+ }
24
32
  /**
25
- * Print each distinct worker result once and the verdict over all workers.
33
+ * Judge a fleet run: the completed workers' results are combined (each worker
34
+ * handled its own share of the target, #1146) and summarized once.
26
35
  * `insufficientEvidence` (from the operation's plan) fails the verdict whatever
27
- * the workers returned. Returns whether the operation passed.
36
+ * the workers returned.
28
37
  */
38
+ export declare function judgeFleetRun(operation: FleetOperation, workers: ReadonlyArray<{
39
+ success: boolean;
40
+ result: unknown;
41
+ }>, insufficientEvidence?: readonly string[]): FleetVerdict;
42
+ /** Print the combined result and the verdict over all workers. Returns whether the operation passed. */
29
43
  export declare function reportFleetVerdict(operation: FleetOperation, workers: ReadonlyArray<{
30
44
  success: boolean;
31
45
  result: unknown;
@@ -15,6 +15,7 @@
15
15
  import chalk from 'chalk';
16
16
  import { FLEET_COVERAGE_THRESHOLD } from './fleet-operation.js';
17
17
  import { thresholdVerdict } from '../../coordination/handlers/coverage-target.js';
18
+ import { combineFleetResults } from './fleet-shard.js';
18
19
  const SEVERITIES = ['critical', 'high', 'medium', 'low', 'informational'];
19
20
  const MAX_LISTED_FINDINGS = 10;
20
21
  const asRecord = (value) => value !== null && typeof value === 'object' ? value : undefined;
@@ -33,8 +34,9 @@ function summarizeScan(result) {
33
34
  `Files scanned: ${coverage?.filesScanned ?? 'n/a'} (evidence: ${completeness})`,
34
35
  ...findings.slice(0, MAX_LISTED_FINDINGS).map(f => ` [${f.severity ?? '?'}] ${f.title ?? 'untitled'} @ ${f.location?.file ?? '?'}:${f.location?.line ?? '?'}`),
35
36
  ];
36
- if (findings.length > MAX_LISTED_FINDINGS)
37
- lines.push(` … ${findings.length - MAX_LISTED_FINDINGS} more`);
37
+ if (findings.length > MAX_LISTED_FINDINGS) {
38
+ lines.push(` … ${findings.length - MAX_LISTED_FINDINGS} more (--format json lists every finding)`);
39
+ }
38
40
  const reasons = [];
39
41
  if (count('critical') + count('high') > 0)
40
42
  reasons.push(`${count('critical')} critical and ${count('high')} high findings`);
@@ -97,34 +99,37 @@ export function summarizeFleetResult(operation, result) {
97
99
  }
98
100
  }
99
101
  /**
100
- * Print each distinct worker result once and the verdict over all workers.
102
+ * Judge a fleet run: the completed workers' results are combined (each worker
103
+ * handled its own share of the target, #1146) and summarized once.
101
104
  * `insufficientEvidence` (from the operation's plan) fails the verdict whatever
102
- * the workers returned. Returns whether the operation passed.
105
+ * the workers returned.
103
106
  */
107
+ export function judgeFleetRun(operation, workers, insufficientEvidence = []) {
108
+ const completed = workers.filter(w => w.success).map(w => w.result);
109
+ const combined = completed.length > 0 ? combineFleetResults(operation, completed) : undefined;
110
+ const summary = completed.length > 0 ? summarizeFleetResult(operation, combined) : undefined;
111
+ const incomplete = workers.length - completed.length;
112
+ const reasons = [...(summary?.reasons ?? [])];
113
+ if (insufficientEvidence.length > 0)
114
+ reasons.push('insufficient evidence: the coverage report is incomplete or stale for the target');
115
+ if (incomplete > 0)
116
+ reasons.unshift(`${incomplete} of ${workers.length} workers did not complete`);
117
+ return { combined, ...(summary ? { summary } : {}), passed: reasons.length === 0, reasons };
118
+ }
119
+ /** Print the combined result and the verdict over all workers. Returns whether the operation passed. */
104
120
  export function reportFleetVerdict(operation, workers, log = line => console.log(line), insufficientEvidence = []) {
105
- const summaries = workers.filter(w => w.success).map(w => summarizeFleetResult(operation, w.result));
106
- const shown = new Set();
107
- for (const summary of summaries) {
108
- const text = summary.lines.join('\n');
109
- if (shown.has(text))
110
- continue;
111
- shown.add(text);
121
+ const verdict = judgeFleetRun(operation, workers, insufficientEvidence);
122
+ if (verdict.summary) {
112
123
  log('');
113
- for (const line of summary.lines)
124
+ for (const line of verdict.summary.lines)
114
125
  log(` ${line}`);
115
126
  }
116
127
  for (const reason of insufficientEvidence)
117
128
  log(chalk.yellow(` Evidence: ${reason}`));
118
- const incomplete = workers.filter(w => !w.success).length;
119
- const reasons = [...new Set(summaries.flatMap(s => s.reasons))];
120
- if (insufficientEvidence.length > 0)
121
- reasons.push('insufficient evidence: the coverage report is incomplete or stale for the target');
122
- if (incomplete > 0)
123
- reasons.unshift(`${incomplete} of ${workers.length} workers did not complete`);
124
129
  log('');
125
- log(reasons.length === 0
130
+ log(verdict.passed
126
131
  ? chalk.green(' Verdict: PASSED')
127
- : chalk.red(` Verdict: FAILED (${reasons.join('; ')})`));
128
- return reasons.length === 0;
132
+ : chalk.red(` Verdict: FAILED (${verdict.reasons.join('; ')})`));
133
+ return verdict.passed;
129
134
  }
130
135
  //# sourceMappingURL=fleet-result.js.map
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Agentic QE v3 - `aqe fleet run` work split (#1146)
3
+ *
4
+ * `--parallel N` used to submit the same payload N times, so every worker did
5
+ * the whole job again. Now the target's files are split across the workers:
6
+ * - scan -> each worker scans its own share of the files
7
+ * - test -> each worker generates tests for its own share of the source files
8
+ * - analyze -> one coverage report is judged as a whole, so it runs as one task
9
+ * The shard results are then combined into one result for the verdict. Only
10
+ * figures the workers returned are combined; nothing is estimated.
11
+ */
12
+ import type { FleetOperation } from './fleet-operation.js';
13
+ /** Workers used when --parallel is not given. */
14
+ export declare const DEFAULT_FLEET_WORKERS = 4;
15
+ export interface FleetShardPlan {
16
+ /** One payload per worker. */
17
+ payloads: Array<Record<string, unknown>>;
18
+ /** Files given to each worker (empty for an operation that is not split). */
19
+ files: string[][];
20
+ /** Why fewer workers run than were asked for, if they do. */
21
+ note?: string;
22
+ }
23
+ /** Split `items` into at most `parts` contiguous chunks whose sizes differ by at most one. */
24
+ export declare function splitEvenly<T>(items: readonly T[], parts: number): T[][];
25
+ /**
26
+ * Split an operation's payload across workers. `requested` is the --parallel
27
+ * value, or undefined when the flag was not given.
28
+ */
29
+ export declare function shardFleetPayload(operation: FleetOperation, payload: Record<string, unknown>, requested: number | undefined): FleetShardPlan;
30
+ /**
31
+ * Combine the results of the workers that completed into one result of the
32
+ * operation's shape. Returns undefined when a result cannot be read, so the
33
+ * verdict fails as unreadable instead of passing on part of the results.
34
+ */
35
+ export declare function combineFleetResults(operation: FleetOperation, results: readonly unknown[]): unknown;
36
+ //# sourceMappingURL=fleet-shard.d.ts.map
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Agentic QE v3 - `aqe fleet run` work split (#1146)
3
+ *
4
+ * `--parallel N` used to submit the same payload N times, so every worker did
5
+ * the whole job again. Now the target's files are split across the workers:
6
+ * - scan -> each worker scans its own share of the files
7
+ * - test -> each worker generates tests for its own share of the source files
8
+ * - analyze -> one coverage report is judged as a whole, so it runs as one task
9
+ * The shard results are then combined into one result for the verdict. Only
10
+ * figures the workers returned are combined; nothing is estimated.
11
+ */
12
+ /** Workers used when --parallel is not given. */
13
+ export const DEFAULT_FLEET_WORKERS = 4;
14
+ /** The payload field each splittable operation's files are in. */
15
+ const SHARD_FIELD = { scan: 'files', test: 'sourceFiles' };
16
+ /** Split `items` into at most `parts` contiguous chunks whose sizes differ by at most one. */
17
+ export function splitEvenly(items, parts) {
18
+ const count = Math.max(1, Math.min(parts, items.length));
19
+ const base = Math.floor(items.length / count);
20
+ const extra = items.length % count;
21
+ const chunks = [];
22
+ let start = 0;
23
+ for (let i = 0; i < count; i++) {
24
+ const size = base + (i < extra ? 1 : 0);
25
+ chunks.push(items.slice(start, start + size));
26
+ start += size;
27
+ }
28
+ return chunks;
29
+ }
30
+ /**
31
+ * Split an operation's payload across workers. `requested` is the --parallel
32
+ * value, or undefined when the flag was not given.
33
+ */
34
+ export function shardFleetPayload(operation, payload, requested) {
35
+ const field = SHARD_FIELD[operation];
36
+ if (!field) {
37
+ const note = requested !== undefined && requested > 1
38
+ ? `${operation} judges one coverage report as a whole, so it runs as one task; --parallel ${requested} does not apply.`
39
+ : undefined;
40
+ return { payloads: [payload], files: [[]], ...(note ? { note } : {}) };
41
+ }
42
+ const files = Array.isArray(payload[field]) ? payload[field] : [];
43
+ const wanted = requested ?? DEFAULT_FLEET_WORKERS;
44
+ const chunks = splitEvenly(files, wanted);
45
+ const note = requested !== undefined && chunks.length < requested
46
+ ? `--parallel ${requested} asks for more workers than there are files (${files.length}); ${chunks.length} run.`
47
+ : undefined;
48
+ return {
49
+ payloads: chunks.map(chunk => ({ ...payload, [field]: chunk })),
50
+ files: chunks,
51
+ ...(note ? { note } : {}),
52
+ };
53
+ }
54
+ const asRecord = (value) => value !== null && typeof value === 'object' && !Array.isArray(value) ? value : undefined;
55
+ const SCAN_COUNTS = ['critical', 'high', 'medium', 'low', 'informational', 'totalFiles'];
56
+ function sum(records, key) {
57
+ const values = records.map(r => r?.[key]);
58
+ return values.every(v => typeof v === 'number') ? values.reduce((a, b) => a + b, 0) : undefined;
59
+ }
60
+ function combineScans(results) {
61
+ if (!results.every(r => asRecord(r.summary) && Array.isArray(r.vulnerabilities)))
62
+ return undefined;
63
+ const summaries = results.map(r => asRecord(r.summary));
64
+ const summary = {};
65
+ for (const key of SCAN_COUNTS) {
66
+ const total = sum(summaries, key);
67
+ if (total !== undefined)
68
+ summary[key] = total;
69
+ }
70
+ const coverages = results.map(r => asRecord(r.coverage));
71
+ const filesScanned = sum(coverages, 'filesScanned');
72
+ const linesScanned = sum(coverages, 'linesScanned');
73
+ // Complete only when every shard says so; a shard without evidence leaves it unknown.
74
+ const completeness = results.map(r => asRecord(r.evidence)?.completeness);
75
+ const combinedCompleteness = !completeness.every(c => typeof c === 'string') ? undefined
76
+ : completeness.every(c => c === 'complete') ? 'complete'
77
+ : completeness.every(c => c === 'none') ? 'none' : 'partial';
78
+ return {
79
+ vulnerabilities: results.flatMap(r => r.vulnerabilities),
80
+ summary,
81
+ ...(filesScanned !== undefined || linesScanned !== undefined
82
+ ? { coverage: { ...(filesScanned !== undefined ? { filesScanned } : {}), ...(linesScanned !== undefined ? { linesScanned } : {}) } }
83
+ : {}),
84
+ ...(combinedCompleteness ? { evidence: { completeness: combinedCompleteness } } : {}),
85
+ };
86
+ }
87
+ /**
88
+ * Combine the results of the workers that completed into one result of the
89
+ * operation's shape. Returns undefined when a result cannot be read, so the
90
+ * verdict fails as unreadable instead of passing on part of the results.
91
+ */
92
+ export function combineFleetResults(operation, results) {
93
+ if (results.length === 0)
94
+ return undefined;
95
+ if (results.length === 1)
96
+ return results[0];
97
+ const records = results.map(asRecord);
98
+ if (records.some(r => !r))
99
+ return undefined;
100
+ const valid = records;
101
+ switch (operation) {
102
+ case 'scan': return combineScans(valid);
103
+ case 'test':
104
+ return valid.every(r => Array.isArray(r.tests)) ? { tests: valid.flatMap(r => r.tests) } : undefined;
105
+ case 'analyze':
106
+ // Never split, so several results mean duplicated work; none is preferred.
107
+ return undefined;
108
+ }
109
+ }
110
+ //# sourceMappingURL=fleet-shard.js.map
@@ -79,6 +79,13 @@ export declare class CompactionPipeline {
79
79
  * Triggers Tier 4 reactive compaction immediately.
80
80
  */
81
81
  handleOverflow(trigger?: 'status_413' | 'context_overflow'): Promise<Tier4Result>;
82
+ /** Get the active conversation history (a copy) as the next tier would see it. */
83
+ getConversationHistory(): ConversationMessage[];
84
+ /**
85
+ * Set the budget to the token estimate of the retained history (#1249), so
86
+ * it describes what is actually kept rather than a tier's reported saving.
87
+ */
88
+ private reconcileBudget;
82
89
  /** Get compaction statistics for the session_cache_stats tool. */
83
90
  getStats(): {
84
91
  conversationMessages: number;
@@ -120,10 +120,22 @@ export class CompactionPipeline {
120
120
  tierResults.push(t2);
121
121
  tiersExecuted.push(2);
122
122
  totalTokensSaved += t2.tokensSaved;
123
- // Replace conversation history with preserved messages
123
+ // #1249: keep the Tier-2 summary in history ahead of the preserved
124
+ // tail. It used to be dropped, so the summarized messages had no
125
+ // representation left and Tier 3 saw only the tail.
124
126
  if (t2.removedMessageCount > 0) {
125
- this.conversationHistory = [...t2.preservedMessages];
126
- this.budget.releaseTokens(t2.tokensSaved);
127
+ const summaryMessage = t2.summary
128
+ ? [{
129
+ role: 'assistant',
130
+ content: t2.summary,
131
+ timestamp: Date.now(),
132
+ estimatedTokens: t2.summaryTokens,
133
+ id: t2.summaryItem?.id,
134
+ provenance: t2.summaryItem,
135
+ }]
136
+ : [];
137
+ this.conversationHistory = [...summaryMessage, ...t2.preservedMessages];
138
+ this.reconcileBudget();
127
139
  }
128
140
  }
129
141
  if (maxTier >= 3 && this.budget.shouldAutoCompact()) {
@@ -142,7 +154,7 @@ export class CompactionPipeline {
142
154
  id: t3.summaryItem?.id,
143
155
  provenance: t3.summaryItem,
144
156
  }];
145
- this.budget.releaseTokens(t3.tokensSaved);
157
+ this.reconcileBudget();
146
158
  }
147
159
  }
148
160
  if (maxTier >= 4 && this.budget.isBlocking()) {
@@ -153,7 +165,7 @@ export class CompactionPipeline {
153
165
  totalTokensSaved += t4.tokensSaved;
154
166
  if (t4.droppedCount > 0) {
155
167
  this.conversationHistory = [...t4.survivingMessages];
156
- this.budget.releaseTokens(t4.tokensSaved);
168
+ this.reconcileBudget();
157
169
  }
158
170
  }
159
171
  }
@@ -175,10 +187,22 @@ export class CompactionPipeline {
175
187
  const result = this.tier4.compact(this.conversationHistory, trigger);
176
188
  if (result.droppedCount > 0) {
177
189
  this.conversationHistory = [...result.survivingMessages];
178
- this.budget.releaseTokens(result.tokensSaved);
190
+ this.reconcileBudget();
179
191
  }
180
192
  return result;
181
193
  }
194
+ /** Get the active conversation history (a copy) as the next tier would see it. */
195
+ getConversationHistory() {
196
+ return [...this.conversationHistory];
197
+ }
198
+ /**
199
+ * Set the budget to the token estimate of the retained history (#1249), so
200
+ * it describes what is actually kept rather than a tier's reported saving.
201
+ */
202
+ reconcileBudget() {
203
+ const retained = this.conversationHistory.reduce((sum, m) => sum + (m.estimatedTokens ?? estimateTokensPadded(m.content)), 0);
204
+ this.budget.setUsedTokens(retained);
205
+ }
182
206
  /** Get compaction statistics for the session_cache_stats tool. */
183
207
  getStats() {
184
208
  return {