agentic-qe 3.15.11 → 3.15.13

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 (522) hide show
  1. package/.claude/hooks/aqe-hook.cjs +38 -2
  2. package/.claude/skills/skills-manifest.json +1 -1
  3. package/CHANGELOG.md +267 -0
  4. package/assets/skills/skills-manifest.json +1 -1
  5. package/dist/cli/bundle.js +6 -6
  6. package/dist/cli/chunks/adapter-KCQDVYY2.js +2 -0
  7. package/dist/cli/chunks/{agent-booster-wasm-TIDSQ3ZK.js → agent-booster-wasm-6RRQWMNE.js} +2 -2
  8. package/dist/cli/chunks/{agent-handler-G3EPBVA7.js → agent-handler-AOH6TV7W.js} +2 -2
  9. package/dist/cli/chunks/{agent-memory-branch-ARC5C7GW.js → agent-memory-branch-2P54SF5N.js} +2 -2
  10. package/dist/cli/chunks/aqe-learning-engine-SAQOHSGN.js +2 -0
  11. package/dist/cli/chunks/{arena-K4I4QDXB.js → arena-NSVFCAF5.js} +2 -2
  12. package/dist/cli/chunks/{arena-36DTATJV.js → arena-X6MOGQHA.js} +4 -4
  13. package/dist/cli/chunks/{audit-WQSJSJZF.js → audit-27DJLQNM.js} +3 -3
  14. package/dist/cli/chunks/base-WCACU3FN.js +2 -0
  15. package/dist/cli/chunks/{better-sqlite3-BB4K67MT.js → better-sqlite3-BU5GXILS.js} +2 -2
  16. package/dist/cli/chunks/{brain-handler-CU3GOIU3.js → brain-handler-GTQNHHZS.js} +3 -3
  17. package/dist/cli/chunks/{branch-enumerator-NJQX7ZNB.js → branch-enumerator-5CLULOCU.js} +2 -2
  18. package/dist/cli/chunks/{browser-6YJF4FQW.js → browser-R4DMU3LN.js} +2 -2
  19. package/dist/cli/chunks/browser-workflow-G6IASEAP.js +2 -0
  20. package/dist/cli/chunks/{chunk-G4FAPO57.js → chunk-2G7TVT6W.js} +2 -2
  21. package/dist/cli/chunks/{chunk-HDNWSKHA.js → chunk-32ZMWEP3.js} +2 -2
  22. package/dist/cli/chunks/{chunk-FWSGPE3V.js → chunk-3AN5TNGD.js} +3 -3
  23. package/dist/cli/chunks/{chunk-X4J73KP3.js → chunk-3LJ7LQMV.js} +1 -1
  24. package/dist/cli/chunks/{chunk-3RHOPP7A.js → chunk-3QZEGE67.js} +1 -1
  25. package/dist/cli/chunks/{chunk-RBZCA7SD.js → chunk-3RZV5DGO.js} +2 -2
  26. package/dist/cli/chunks/{chunk-DDEOZPWJ.js → chunk-3Y2ROSCL.js} +2 -2
  27. package/dist/cli/chunks/{chunk-LD5CFK53.js → chunk-3Y7TJFHU.js} +2 -2
  28. package/dist/cli/chunks/{chunk-I36CRDHF.js → chunk-3YNLWPBF.js} +2 -2
  29. package/dist/cli/chunks/{chunk-ZMC543GI.js → chunk-42J34YG4.js} +2 -2
  30. package/dist/cli/chunks/{chunk-YNOCQ2SL.js → chunk-4OVC4RIL.js} +1 -1
  31. package/dist/cli/chunks/{chunk-2KFFEKSI.js → chunk-526QYFJU.js} +2 -2
  32. package/dist/cli/chunks/{chunk-LBX7M4LW.js → chunk-5FKWCZNF.js} +2 -2
  33. package/dist/cli/chunks/{chunk-OH5V5EJW.js → chunk-5K26BEYB.js} +2 -2
  34. package/dist/cli/chunks/{chunk-TCYSBC7Y.js → chunk-5MDERQH3.js} +1 -1
  35. package/dist/cli/chunks/{chunk-V5AADCBC.js → chunk-5VMAV6T6.js} +1 -1
  36. package/dist/cli/chunks/{chunk-YBBT3YYG.js → chunk-5ZGM3RMH.js} +1 -1
  37. package/dist/cli/chunks/{chunk-RTY7VSZB.js → chunk-6KATY3KS.js} +2 -2
  38. package/dist/cli/chunks/{chunk-LPU6PAJE.js → chunk-6Z7PRBSG.js} +2 -2
  39. package/dist/cli/chunks/{chunk-6NA3KZZT.js → chunk-72ASBE35.js} +7 -7
  40. package/dist/cli/chunks/{chunk-GBFUANTC.js → chunk-756CGMEH.js} +1 -1
  41. package/dist/cli/chunks/{chunk-UTTSH4NH.js → chunk-75RDHBAX.js} +3 -3
  42. package/dist/cli/chunks/{chunk-XGPTZUKQ.js → chunk-7CMTY45A.js} +2 -2
  43. package/dist/cli/chunks/{chunk-NC6K7SCQ.js → chunk-7JUC2MVZ.js} +2 -2
  44. package/dist/cli/chunks/{chunk-RTFKTKSO.js → chunk-7NA7JXNB.js} +2 -2
  45. package/dist/cli/chunks/{chunk-GWJWSLDA.js → chunk-7PLIEBY7.js} +2 -2
  46. package/dist/cli/chunks/{chunk-OURITHFV.js → chunk-7YTGHGK4.js} +2 -2
  47. package/dist/cli/chunks/{chunk-ITL3IN2E.js → chunk-A64JFBWI.js} +2 -2
  48. package/dist/cli/chunks/{chunk-OHR7C777.js → chunk-AL6FBH3E.js} +2 -2
  49. package/dist/cli/chunks/{chunk-5N25I53C.js → chunk-AQSVJNEH.js} +2 -2
  50. package/dist/cli/chunks/{chunk-FL32MTKT.js → chunk-ARJW4I2O.js} +2 -2
  51. package/dist/cli/chunks/{chunk-ZQHDA4O7.js → chunk-ASQYASNV.js} +1 -1
  52. package/dist/cli/chunks/{chunk-4HJKQIX5.js → chunk-BEGR4D6N.js} +2 -2
  53. package/dist/cli/chunks/{chunk-G77MLBDF.js → chunk-BK577VL7.js} +2 -2
  54. package/dist/cli/chunks/{chunk-NPZOBSAN.js → chunk-BLSLEVDI.js} +2 -2
  55. package/dist/cli/chunks/{chunk-R5LGV6GZ.js → chunk-BTVEYBW2.js} +2 -2
  56. package/dist/cli/chunks/{chunk-2CW7VRPH.js → chunk-C6JTLKG7.js} +5 -5
  57. package/dist/cli/chunks/{chunk-EWPUQCN4.js → chunk-C7JM7CD3.js} +2 -2
  58. package/dist/cli/chunks/{chunk-325QCVDI.js → chunk-CCMKSHAT.js} +2 -2
  59. package/dist/cli/chunks/{chunk-V7DA4HAK.js → chunk-CE7B5LU7.js} +1 -1
  60. package/dist/cli/chunks/{chunk-4RAQ7PJA.js → chunk-CM4LSLKR.js} +2 -2
  61. package/dist/cli/chunks/chunk-CRWPZT74.js +62 -0
  62. package/dist/cli/chunks/{chunk-U3LJNNVJ.js → chunk-CT6SAVXQ.js} +2 -2
  63. package/dist/cli/chunks/chunk-CV77DMDQ.js +2 -0
  64. package/dist/cli/chunks/{chunk-UMVSWQNB.js → chunk-DFUASIKA.js} +2 -2
  65. package/dist/cli/chunks/{chunk-KSE5TDM5.js → chunk-DLD7RUZ4.js} +2 -2
  66. package/dist/cli/chunks/{chunk-4MUBW4RT.js → chunk-DNDL7SOS.js} +2 -2
  67. package/dist/cli/chunks/{chunk-EJPK7OTR.js → chunk-DVGRPK7A.js} +2 -2
  68. package/dist/cli/chunks/{chunk-WCVCOT4E.js → chunk-E56B6IDX.js} +2 -2
  69. package/dist/cli/chunks/{chunk-7HEMJHPP.js → chunk-E7CLYGS7.js} +1 -1
  70. package/dist/cli/chunks/{chunk-R5GRABPQ.js → chunk-EXGMJFAT.js} +1 -1
  71. package/dist/cli/chunks/chunk-F3YS57NF.js +21 -0
  72. package/dist/cli/chunks/{chunk-I4K2HTQU.js → chunk-FZ76G4QJ.js} +1 -1
  73. package/dist/cli/chunks/{chunk-4UX35V7P.js → chunk-G2Q66Z23.js} +2 -2
  74. package/dist/cli/chunks/{chunk-KJCIMNHS.js → chunk-G6WDYBLQ.js} +1 -1
  75. package/dist/cli/chunks/{chunk-VWUZSNVC.js → chunk-G77ERMUD.js} +1 -1
  76. package/dist/cli/chunks/{chunk-FZHSG75I.js → chunk-GB6HBNH2.js} +2 -2
  77. package/dist/cli/chunks/{chunk-KDI5JOYZ.js → chunk-GHM6MQNK.js} +2 -2
  78. package/dist/cli/chunks/{chunk-H7BLYMNU.js → chunk-GHY6Z6KO.js} +5 -5
  79. package/dist/cli/chunks/{chunk-TFW7CCKS.js → chunk-GII6UM3F.js} +1 -1
  80. package/dist/cli/chunks/{chunk-DOBZPSKE.js → chunk-GU5HNCWI.js} +1 -1
  81. package/dist/cli/chunks/{chunk-AFFN6E6Q.js → chunk-H4GG2NLO.js} +2 -2
  82. package/dist/cli/chunks/{chunk-7R5HC56U.js → chunk-H4H2YSFH.js} +1 -1
  83. package/dist/cli/chunks/{chunk-J4JMCZVA.js → chunk-HD7YIFOI.js} +2 -2
  84. package/dist/cli/chunks/{chunk-5MTWCCZJ.js → chunk-HOAJUIBQ.js} +2 -2
  85. package/dist/cli/chunks/{chunk-T5KHJ3J7.js → chunk-HQZGPJYG.js} +2 -2
  86. package/dist/cli/chunks/{chunk-VEEYL2CZ.js → chunk-HZ5NXFXH.js} +2 -2
  87. package/dist/cli/chunks/{chunk-LQ4NUC6Q.js → chunk-I3C7JOXC.js} +2 -2
  88. package/dist/cli/chunks/{chunk-Z2EA7A4Z.js → chunk-IC3TQEOA.js} +1 -1
  89. package/dist/cli/chunks/{chunk-E44NNCEU.js → chunk-IJUHSJ2U.js} +2 -2
  90. package/dist/cli/chunks/{chunk-EH2S6AOR.js → chunk-J2ZIFFM6.js} +2 -2
  91. package/dist/cli/chunks/{chunk-GVKVJJQX.js → chunk-JGZ722G3.js} +2 -2
  92. package/dist/cli/chunks/{chunk-EK5GMOSO.js → chunk-JQGMW45H.js} +1 -1
  93. package/dist/cli/chunks/{chunk-XGBU3KEM.js → chunk-JRRXCODW.js} +2 -2
  94. package/dist/cli/chunks/{chunk-5WYZHDIZ.js → chunk-K3TLLJMX.js} +1 -1
  95. package/dist/cli/chunks/{chunk-LXQ3B4RY.js → chunk-K4CZA77U.js} +2 -2
  96. package/dist/cli/chunks/chunk-K65CGKLD.js +8 -0
  97. package/dist/cli/chunks/{chunk-HFFPYC4G.js → chunk-KADFXPPN.js} +2 -2
  98. package/dist/cli/chunks/{chunk-APPZATXA.js → chunk-KB56CPU4.js} +2 -2
  99. package/dist/cli/chunks/{chunk-25P77WA5.js → chunk-KCW47QR5.js} +1 -1
  100. package/dist/cli/chunks/{chunk-WM3SRRA6.js → chunk-KDNJ4F3P.js} +2 -2
  101. package/dist/cli/chunks/{chunk-5ERFHEEE.js → chunk-KDVZND5Q.js} +1 -1
  102. package/dist/cli/chunks/{chunk-YOCULVHR.js → chunk-KUAKV3IW.js} +1 -1
  103. package/dist/cli/chunks/{chunk-M5XYIQYZ.js → chunk-KV4T4MXK.js} +2 -2
  104. package/dist/cli/chunks/{chunk-MIK4RBEH.js → chunk-KWYH3FI4.js} +1 -1
  105. package/dist/cli/chunks/{chunk-UKKYMW3S.js → chunk-LFJALJOA.js} +2 -2
  106. package/dist/cli/chunks/{chunk-K7V2WZNF.js → chunk-LL7LDPXS.js} +1 -1
  107. package/dist/cli/chunks/{chunk-55CH76ZO.js → chunk-LUZNKJE6.js} +3 -3
  108. package/dist/cli/chunks/{chunk-OV5RPLKV.js → chunk-LWR3FV3Y.js} +2 -2
  109. package/dist/cli/chunks/{chunk-SMVVAVN2.js → chunk-LZYQHVD4.js} +2 -2
  110. package/dist/cli/chunks/{chunk-672XOJDG.js → chunk-M6AAGIG7.js} +1 -1
  111. package/dist/cli/chunks/{chunk-WCAVIJ64.js → chunk-MAMQA43L.js} +1 -1
  112. package/dist/cli/chunks/chunk-MB46UBGY.js +3 -0
  113. package/dist/cli/chunks/{chunk-AP3ADWDK.js → chunk-MFW5HSG4.js} +2 -2
  114. package/dist/cli/chunks/{chunk-NKTWKYHB.js → chunk-MGZ5FJUW.js} +2 -2
  115. package/dist/cli/chunks/{chunk-ERN43HOX.js → chunk-MVVB7C2E.js} +410 -410
  116. package/dist/cli/chunks/{chunk-57LNKSW7.js → chunk-N4CYAKOX.js} +2 -2
  117. package/dist/cli/chunks/chunk-NT4DBXSX.js +2 -0
  118. package/dist/cli/chunks/{chunk-BZPE3LDO.js → chunk-NU3W5WFT.js} +2 -2
  119. package/dist/cli/chunks/chunk-NURIILUB.js +2 -0
  120. package/dist/cli/chunks/{chunk-ITPGWGQS.js → chunk-NW7IBHJA.js} +4 -4
  121. package/dist/cli/chunks/{chunk-OD5D4LSZ.js → chunk-NZ3GUMB2.js} +2 -2
  122. package/dist/cli/chunks/{chunk-35M2X3C5.js → chunk-NZD4DPSU.js} +2 -2
  123. package/dist/cli/chunks/{chunk-EIDJNT5C.js → chunk-O6FGXMHD.js} +1 -1
  124. package/dist/cli/chunks/{chunk-OYJC3YON.js → chunk-OCAEXYFA.js} +2 -2
  125. package/dist/cli/chunks/{chunk-Y7B5EUIJ.js → chunk-OFACHK5O.js} +2 -2
  126. package/dist/cli/chunks/{chunk-5MNASJOH.js → chunk-P7A4NKTZ.js} +2 -2
  127. package/dist/cli/chunks/{chunk-M7XFBSIK.js → chunk-PB6J6HAA.js} +2 -2
  128. package/dist/cli/chunks/{chunk-5HQP4SLM.js → chunk-PHP5UBT4.js} +2 -2
  129. package/dist/cli/chunks/{chunk-KXS3Y2AX.js → chunk-PIDQVU3L.js} +2 -2
  130. package/dist/cli/chunks/{chunk-4UBVAJFO.js → chunk-PSFSPGUD.js} +2 -2
  131. package/dist/cli/chunks/chunk-PT4FMJPQ.js +3 -0
  132. package/dist/cli/chunks/{chunk-HDJUYAZG.js → chunk-Q3UDLV5Z.js} +1 -1
  133. package/dist/cli/chunks/{chunk-CIAL4YRY.js → chunk-QDEJ4CI2.js} +2 -2
  134. package/dist/cli/chunks/{chunk-S6IYEBAI.js → chunk-QPNG5ZN2.js} +2 -2
  135. package/dist/cli/chunks/{chunk-YPX2TV3M.js → chunk-R7SYRCRP.js} +1 -1
  136. package/dist/cli/chunks/{chunk-XNLIWQYE.js → chunk-RF7HWBHN.js} +2 -2
  137. package/dist/cli/chunks/{chunk-5YLOLACR.js → chunk-RFNW2LGD.js} +2 -2
  138. package/dist/cli/chunks/{chunk-2VLYUF7U.js → chunk-S5AZCIZS.js} +2 -2
  139. package/dist/cli/chunks/{chunk-ETVAYGCB.js → chunk-SE4VNN4I.js} +3 -3
  140. package/dist/cli/chunks/{chunk-E6PF35JZ.js → chunk-SG3NX7QE.js} +2 -2
  141. package/dist/cli/chunks/{chunk-VYTILW4R.js → chunk-SSU73QAX.js} +2 -2
  142. package/dist/cli/chunks/{chunk-ZP75ASUU.js → chunk-SVLQRAMF.js} +1 -1
  143. package/dist/cli/chunks/{chunk-JGJXXAS6.js → chunk-SYV2V3PL.js} +4 -4
  144. package/dist/cli/chunks/{chunk-4RH5I24Q.js → chunk-T3PGQFDI.js} +2 -2
  145. package/dist/cli/chunks/{chunk-O4JAKWWM.js → chunk-TCBBNUBP.js} +17 -17
  146. package/dist/cli/chunks/{chunk-QDESWOZP.js → chunk-TOQWL2ZF.js} +2 -2
  147. package/dist/cli/chunks/{chunk-NTB342NJ.js → chunk-TSQC2KKZ.js} +4 -4
  148. package/dist/cli/chunks/{chunk-NQZNMCZU.js → chunk-TWDW32W2.js} +2 -2
  149. package/dist/cli/chunks/{chunk-CO3DX2AX.js → chunk-TWJTK4CC.js} +2 -2
  150. package/dist/cli/chunks/{chunk-FUYOOKTH.js → chunk-U2FUXDDJ.js} +3 -3
  151. package/dist/cli/chunks/{chunk-XDI5X3FR.js → chunk-UDQSYWVF.js} +1 -1
  152. package/dist/cli/chunks/chunk-UOC3O6RP.js +5 -0
  153. package/dist/cli/chunks/chunk-UT2VZ33P.js +2 -0
  154. package/dist/cli/chunks/{chunk-IOZRKXR5.js → chunk-UTRV7T2N.js} +2 -2
  155. package/dist/cli/chunks/{chunk-ZMHCMJ4J.js → chunk-UXZSUMEA.js} +2 -2
  156. package/dist/cli/chunks/{chunk-G4CKPWF6.js → chunk-VRHRBAEM.js} +1 -1
  157. package/dist/cli/chunks/{chunk-AUUJBXWX.js → chunk-VRVMIPTM.js} +2 -2
  158. package/dist/cli/chunks/{chunk-IENZSO3K.js → chunk-VTDFVFST.js} +2 -2
  159. package/dist/cli/chunks/{chunk-JFLU7L3W.js → chunk-VTOBUZL6.js} +2 -2
  160. package/dist/cli/chunks/{chunk-KKYO2NKV.js → chunk-VU5TBX2V.js} +2 -2
  161. package/dist/cli/chunks/{chunk-XS2XF3YG.js → chunk-W26B7ERY.js} +1 -1
  162. package/dist/cli/chunks/{chunk-DOFREOPQ.js → chunk-W2QWSQVE.js} +2 -2
  163. package/dist/cli/chunks/{chunk-KSLLHFVY.js → chunk-W3INMZZ6.js} +1 -1
  164. package/dist/cli/chunks/{chunk-FLU5FDSC.js → chunk-W3PPFHI5.js} +59 -59
  165. package/dist/cli/chunks/chunk-WKGTGOYS.js +13 -0
  166. package/dist/cli/chunks/{chunk-4X4MWMHB.js → chunk-WNQS4WTS.js} +2 -2
  167. package/dist/cli/chunks/{chunk-XJKZ7FTR.js → chunk-WO274FRI.js} +2 -2
  168. package/dist/cli/chunks/{chunk-76SNL7GU.js → chunk-WOCGL4QP.js} +2 -2
  169. package/dist/cli/chunks/{chunk-HYXUN7BW.js → chunk-WQL7WCIZ.js} +1 -1
  170. package/dist/cli/chunks/{chunk-BTVWA35P.js → chunk-X2Z7F4EU.js} +2 -2
  171. package/dist/cli/chunks/{chunk-VBK2YAYY.js → chunk-X7N2JF2X.js} +2 -2
  172. package/dist/cli/chunks/{chunk-NT7JRHMH.js → chunk-XEAEYC6Y.js} +1 -1
  173. package/dist/cli/chunks/{chunk-G2IJFNZS.js → chunk-XNBOGCF3.js} +2 -2
  174. package/dist/cli/chunks/{chunk-LCVEEII4.js → chunk-XPRVF4YE.js} +2 -2
  175. package/dist/cli/chunks/{chunk-AMZKAJLJ.js → chunk-YBQH2VOP.js} +2 -2
  176. package/dist/cli/chunks/{chunk-JUMICXM6.js → chunk-YQFLQE53.js} +2 -2
  177. package/dist/cli/chunks/{chunk-M5RQ6U3G.js → chunk-YSZ5OE3Z.js} +2 -2
  178. package/dist/cli/chunks/{chunk-RQMCZQN2.js → chunk-YXRASAPI.js} +2 -2
  179. package/dist/cli/chunks/{chunk-X3PZCXWG.js → chunk-YZEXYO4W.js} +1 -1
  180. package/dist/cli/chunks/{chunk-TL6OFMXF.js → chunk-YZWBNBTW.js} +2 -2
  181. package/dist/cli/chunks/{chunk-CFWGGRE7.js → chunk-ZAKQLAHT.js} +1 -1
  182. package/dist/cli/chunks/ci-ENOASTYB.js +81 -0
  183. package/dist/cli/chunks/{ci-config-J665XNOX.js → ci-config-B26OXHQM.js} +2 -2
  184. package/dist/cli/chunks/{ci-output-PEQQQWVD.js → ci-output-JTCLLNOQ.js} +2 -2
  185. package/dist/cli/chunks/{circuit-breaker-HHB2JSKH.js → circuit-breaker-23JMFNM5.js} +2 -2
  186. package/dist/cli/chunks/{claude-flow-setup-JKUJRWPN.js → claude-flow-setup-ON6L462G.js} +2 -2
  187. package/dist/cli/chunks/client-TV3V2YZ5.js +2 -0
  188. package/dist/cli/chunks/{cline-installer-Y77BWTAN.js → cline-installer-OWQ4D2FQ.js} +2 -2
  189. package/dist/cli/chunks/{code-LV2HAGJY.js → code-2ZRL7SEU.js} +19 -18
  190. package/dist/cli/chunks/{code-index-extractor-4GKKSETB.js → code-index-extractor-JXSQVM67.js} +2 -2
  191. package/dist/cli/chunks/{codex-installer-WMKBYE5Y.js → codex-installer-7LXZYBSQ.js} +2 -2
  192. package/dist/cli/chunks/{completions-SBGFAOIJ.js → completions-C2LR623C.js} +2 -2
  193. package/dist/cli/chunks/{complexity-analyzer-AQHFIJXC.js → complexity-analyzer-TGQLHCYJ.js} +2 -2
  194. package/dist/cli/chunks/{continuedev-installer-26AYFS2E.js → continuedev-installer-RUGD24D2.js} +2 -2
  195. package/dist/cli/chunks/{copilot-installer-4UD3DK55.js → copilot-installer-ZLFVLEJP.js} +2 -2
  196. package/dist/cli/chunks/core-handlers-PZT4OLWR.js +2 -0
  197. package/dist/cli/chunks/{cost-tracker-TP4NZCG4.js → cost-tracker-RT4QL745.js} +2 -2
  198. package/dist/cli/chunks/{coverage-B2KIXHAI.js → coverage-NV3C4IMM.js} +11 -10
  199. package/dist/cli/chunks/cross-domain-router-QOFCZ7G4.js +2 -0
  200. package/dist/cli/chunks/{cursor-installer-AVZEQZ4W.js → cursor-installer-LJKLNFF6.js} +2 -2
  201. package/dist/cli/chunks/{daemon-XM2A7LQU.js → daemon-BMDXCQT5.js} +3 -3
  202. package/dist/cli/chunks/{daemon-P574WWBW.js → daemon-FBH3IRYN.js} +4 -4
  203. package/dist/cli/chunks/{dag-attention-scheduler-MIWOZ6ET.js → dag-attention-scheduler-JGDED55I.js} +2 -2
  204. package/dist/cli/chunks/{detect-TYR7HT23.js → detect-SZIHIVCJ.js} +2 -2
  205. package/dist/cli/chunks/{dist-node-2DGVQGLS.js → dist-node-FV3KWXQ6.js} +2 -2
  206. package/dist/cli/chunks/{domain-handler-RRA4ZOMF.js → domain-handler-GI5JWQOV.js} +2 -2
  207. package/dist/cli/chunks/{domain-plugins-IVZEZ5RB.js → domain-plugins-BUWY36TL.js} +2 -2
  208. package/dist/cli/chunks/domain-transfer-GCY7W5DA.js +2 -0
  209. package/dist/cli/chunks/dream-TRFBGDSQ.js +2 -0
  210. package/dist/cli/chunks/{embed-and-insert-pattern-VNIEOVPO.js → embed-and-insert-pattern-GPRR3ZGD.js} +2 -2
  211. package/dist/cli/chunks/{eval-QV4LVPUF.js → eval-XPB3IGAP.js} +2 -2
  212. package/dist/cli/chunks/{experience-capture-middleware-DAPKT763.js → experience-capture-middleware-2E554UB3.js} +3 -3
  213. package/dist/cli/chunks/{fast-paths-WVRFPHX7.js → fast-paths-ZSMWZPUC.js} +2 -2
  214. package/dist/cli/chunks/{feature-flags-DEFTUIYT.js → feature-flags-GIWVDVVC.js} +2 -2
  215. package/dist/cli/chunks/{feature-flags-O7ZXDDCD.js → feature-flags-N7EOGE5P.js} +2 -2
  216. package/dist/cli/chunks/file-discovery-WCKGMSPZ.js +2 -0
  217. package/dist/cli/chunks/fleet-HCHDOUCX.js +44 -0
  218. package/dist/cli/chunks/{gnn-wrapper-LS4LZJDR.js → gnn-wrapper-CZNCNXXZ.js} +2 -2
  219. package/dist/cli/chunks/{heartbeat-handler-RFTERD4K.js → heartbeat-handler-6YUIF2YQ.js} +4 -4
  220. package/dist/cli/chunks/heartbeat-scheduler-P44A2OX3.js +2 -0
  221. package/dist/cli/chunks/hnsw-adapter-ZJQIQJKC.js +2 -0
  222. package/dist/cli/chunks/hnsw-index-HMG2GH3Z.js +2 -0
  223. package/dist/cli/chunks/{hnsw-legacy-bridge-GPKGFFHY.js → hnsw-legacy-bridge-J3M3IK24.js} +2 -2
  224. package/dist/cli/chunks/{hnswlib-node-PHL3F2PR.js → hnswlib-node-ULGTGDZW.js} +2 -2
  225. package/dist/cli/chunks/{hooks-GYJ6D4QM.js → hooks-C4BUGYUQ.js} +28 -28
  226. package/dist/cli/chunks/hybrid-backend-B7M74PZG.js +2 -0
  227. package/dist/cli/chunks/{hypergraph-engine-YGEQPCKJ.js → hypergraph-engine-WINGVMPG.js} +2 -2
  228. package/dist/cli/chunks/{hypergraph-handler-ZIMM647V.js → hypergraph-handler-GADMWKAU.js} +3 -3
  229. package/dist/cli/chunks/impact-analyzer-PZYOVKQO.js +2 -0
  230. package/dist/cli/chunks/{init-guard-VOMBXJXG.js → init-guard-K2T4QWAO.js} +2 -2
  231. package/dist/cli/chunks/{init-handler-PSMUBWK5.js → init-handler-PCZTDZYI.js} +6 -6
  232. package/dist/cli/chunks/init-wizard-TZDJQK3U.js +2 -0
  233. package/dist/cli/chunks/kernel-Y6RRIOKW.js +2 -0
  234. package/dist/cli/chunks/{kilocode-installer-2YNTFBWJ.js → kilocode-installer-XENXNEIU.js} +2 -2
  235. package/dist/cli/chunks/{kiro-installer-XHJDPVAZ.js → kiro-installer-3PG2TJ67.js} +2 -2
  236. package/dist/cli/chunks/knowledge-graph-BVD5Z66M.js +2 -0
  237. package/dist/cli/chunks/{learning-GNSIDRNG.js → learning-6KDH7FK4.js} +3 -3
  238. package/dist/cli/chunks/{llm-router-LQDM7IU2.js → llm-router-RKVDEWU2.js} +4 -4
  239. package/dist/cli/chunks/llm-router-service-KHCAMSUU.js +2 -0
  240. package/dist/cli/chunks/{load-YATHI72E.js → load-ITHC564X.js} +2 -2
  241. package/dist/cli/chunks/load-test-RUF7DZA5.js +2 -0
  242. package/dist/cli/chunks/{mcp-4Y6GDLYK.js → mcp-TCL5UW3N.js} +2 -2
  243. package/dist/cli/chunks/{memory-OUW3L7H2.js → memory-BKDAY2N2.js} +5 -5
  244. package/dist/cli/chunks/memory-backend-7ZLFOVGG.js +2 -0
  245. package/dist/cli/chunks/{memory-handlers-G3LFF53U.js → memory-handlers-WN4FXFOA.js} +2 -2
  246. package/dist/cli/chunks/{multi-model-executor-UBZJXAD2.js → multi-model-executor-VHAT7ZPF.js} +2 -2
  247. package/dist/cli/chunks/{opencode-installer-AMMNWVH5.js → opencode-installer-E3VM3EEY.js} +2 -2
  248. package/dist/cli/chunks/{orchestrator-Y44WDOER.js → orchestrator-BMQ6X762.js} +58 -20
  249. package/dist/cli/chunks/pattern-null-store-RY6CVYHP.js +2 -0
  250. package/dist/cli/chunks/{pattern-usage-recorder-ESR42RME.js → pattern-usage-recorder-GOOR2BV5.js} +2 -2
  251. package/dist/cli/chunks/{pipeline-EDTS6OSC.js → pipeline-5NSFQQIX.js} +2 -2
  252. package/dist/cli/chunks/{platform-5WONJSUX.js → platform-SQM34J5G.js} +2 -2
  253. package/dist/cli/chunks/{plugin-IJXPCLD4.js → plugin-UQJZRMZG.js} +2 -2
  254. package/dist/cli/chunks/{prime-radiant-advanced-wasm-5ECKGZK6.js → prime-radiant-advanced-wasm-WMDJOL4S.js} +2 -2
  255. package/dist/cli/chunks/project-root-IO5KRNGL.js +2 -0
  256. package/dist/cli/chunks/protocol-executor-U2CUDWDE.js +2 -0
  257. package/dist/cli/chunks/{protocol-handler-DRD3GVNW.js → protocol-handler-OBDCVY6X.js} +2 -2
  258. package/dist/cli/chunks/{prove-KTGW2HMJ.js → prove-XDC7I4XT.js} +2 -2
  259. package/dist/cli/chunks/qe-reasoning-bank-DQSSX2IP.js +2 -0
  260. package/dist/cli/chunks/{quality-DV2WPRRS.js → quality-L4GQ6WX4.js} +2 -2
  261. package/dist/cli/chunks/{quality-gate-HFUAFVZC.js → quality-gate-MJG66LKN.js} +3 -3
  262. package/dist/cli/chunks/queen-coordinator-6FN4BZIX.js +2 -0
  263. package/dist/cli/chunks/real-embeddings-HW4G2LWL.js +2 -0
  264. package/dist/cli/chunks/{ref-validation-QWSKS5OY.js → ref-validation-FC7JOJ2C.js} +2 -2
  265. package/dist/cli/chunks/{roocode-installer-RBAYRCHX.js → roocode-installer-KWS4CEIC.js} +2 -2
  266. package/dist/cli/chunks/router-YUO3I7RU.js +2 -0
  267. package/dist/cli/chunks/routing-feedback-36SLQGJE.js +2 -0
  268. package/dist/cli/chunks/{routing-handler-FMPP3XKO.js → routing-handler-QF4WVB2S.js} +2 -2
  269. package/dist/cli/chunks/{ruvector-commands-KZZT4HWF.js → ruvector-commands-2MTCOUK6.js} +2 -2
  270. package/dist/cli/chunks/rvf-dual-writer-FRYZH3WZ.js +2 -0
  271. package/dist/cli/chunks/rvf-migration-adapter-XXNITL5I.js +2 -0
  272. package/dist/cli/chunks/{rvf-migration-coordinator-7CHEV35N.js → rvf-migration-coordinator-BREJCXWN.js} +2 -2
  273. package/dist/cli/chunks/rvf-native-adapter-D2WWKJIV.js +2 -0
  274. package/dist/cli/chunks/{rvf-store-integrity-Q2TH52SN.js → rvf-store-integrity-KKC6HOJD.js} +2 -2
  275. package/dist/cli/chunks/safe-db-4RRIGRXD.js +2 -0
  276. package/dist/cli/chunks/schedule-25RTO4DQ.js +2 -0
  277. package/dist/cli/chunks/scheduler-BPIOJZ5P.js +2 -0
  278. package/dist/cli/chunks/{security-CUEA3UIM.js → security-OSAE7VAP.js} +3 -3
  279. package/dist/cli/chunks/{shared-rvf-adapter-DROMBRV2.js → shared-rvf-adapter-COUOS665.js} +2 -2
  280. package/dist/cli/chunks/{shared-rvf-dual-writer-DBNABOP7.js → shared-rvf-dual-writer-YXMPZKQE.js} +2 -2
  281. package/dist/cli/chunks/sqlite-persistence-EDF47DDX.js +2 -0
  282. package/dist/cli/chunks/{standalone-memory-IAHA3M6B.js → standalone-memory-E6JBMOIL.js} +2 -2
  283. package/dist/cli/chunks/{status-handler-AFUCASTX.js → status-handler-AFTCIYIX.js} +2 -2
  284. package/dist/cli/chunks/{structural-health-AQRV6JJ6.js → structural-health-2FROCEI4.js} +2 -2
  285. package/dist/cli/chunks/{sync-XW5TLZ7M.js → sync-VAYTOWDC.js} +2 -2
  286. package/dist/cli/chunks/{sync-GX7FMJHL.js → sync-YIQYOFGW.js} +2 -2
  287. package/dist/cli/chunks/task-handler-KVQHDEX3.js +62 -0
  288. package/dist/cli/chunks/task-handlers-MVVECQA6.js +9 -0
  289. package/dist/cli/chunks/{test-D2XDJNDX.js → test-5JSVTOMY.js} +4 -4
  290. package/dist/cli/chunks/test-runner-process-LEPF2OSS.js +2 -0
  291. package/dist/cli/chunks/{test-scheduling-TS6I2PR7.js → test-scheduling-HBOHVLI3.js} +3 -3
  292. package/dist/cli/chunks/{token-bootstrap-HBBLPCZ3.js → token-bootstrap-5VEPTPFA.js} +2 -2
  293. package/dist/cli/chunks/{token-usage-3MBUX4PR.js → token-usage-TBJHDLY6.js} +2 -2
  294. package/dist/cli/chunks/{transformers-ZWMQO3L2.js → transformers-VAWYMHMZ.js} +2 -2
  295. package/dist/cli/chunks/tree-sitter-wasm-parser-TSZTCMFV.js +2 -0
  296. package/dist/cli/chunks/{types-5YEMGPSQ.js → types-R5SDZU2E.js} +2 -2
  297. package/dist/cli/chunks/unified-memory-TLGSSLMI.js +2 -0
  298. package/dist/cli/chunks/unified-memory-hnsw-MSUR7ZOO.js +2 -0
  299. package/dist/cli/chunks/unified-persistence-VFFOTWK7.js +2 -0
  300. package/dist/cli/chunks/{upgrade-2TPBKIHI.js → upgrade-K5PIHXRB.js} +2 -2
  301. package/dist/cli/chunks/{validate-XRAXXFW6.js → validate-RPTS7RYJ.js} +2 -2
  302. package/dist/cli/chunks/{validate-swarm-IYSCS3BZ.js → validate-swarm-B2ZL556X.js} +2 -2
  303. package/dist/cli/chunks/visual-security-6Q44XNLB.js +2 -0
  304. package/dist/cli/chunks/{web-tree-sitter-PZQ3ZG2P.js → web-tree-sitter-K4DUJC32.js} +2 -2
  305. package/dist/cli/chunks/{windsurf-installer-U6XWFRVT.js → windsurf-installer-OK2AJN35.js} +2 -2
  306. package/dist/cli/chunks/witness-chain-KDOMXDQX.js +2 -0
  307. package/dist/cli/chunks/witness-chain-N3OY2RMH.js +2 -0
  308. package/dist/cli/chunks/{witness-chain-repair-K7YX2AO6.js → witness-chain-repair-L6Y5RFXR.js} +2 -2
  309. package/dist/cli/chunks/{witness-chain-verifier-GUTC3W7N.js → witness-chain-verifier-N4CW7FZX.js} +2 -2
  310. package/dist/cli/chunks/{witness-key-manager-YBNKMOP6.js → witness-key-manager-TDNPS3WD.js} +2 -2
  311. package/dist/cli/chunks/{workflow-UAJUILFQ.js → workflow-XRZA3YCY.js} +4 -4
  312. package/dist/cli/chunks/workflow-orchestrator-CVNNT2RJ.js +2 -0
  313. package/dist/cli/chunks/{wrappers-AVZ3GPAL.js → wrappers-5JIFWKN6.js} +2 -2
  314. package/dist/cli/commands/ci.js +7 -0
  315. package/dist/cli/commands/code.js +6 -0
  316. package/dist/cli/commands/coverage.js +7 -1
  317. package/dist/cli/commands/fleet-run.d.ts +12 -0
  318. package/dist/cli/commands/fleet-run.js +175 -0
  319. package/dist/cli/commands/fleet.js +2 -117
  320. package/dist/cli/commands/hooks-handlers/stats-hooks.d.ts +4 -3
  321. package/dist/cli/commands/hooks-handlers/stats-hooks.js +22 -4
  322. package/dist/cli/handlers/task-handler.d.ts +5 -0
  323. package/dist/cli/handlers/task-handler.js +26 -0
  324. package/dist/cli/utils/coverage-verdict.d.ts +11 -2
  325. package/dist/cli/utils/coverage-verdict.js +26 -6
  326. package/dist/cli/utils/fleet-operation.d.ts +10 -2
  327. package/dist/cli/utils/fleet-operation.js +20 -3
  328. package/dist/cli/utils/fleet-result.d.ts +20 -4
  329. package/dist/cli/utils/fleet-result.js +32 -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/coordination/handlers/code-intelligence-handlers.js +21 -1
  333. package/dist/coordination/handlers/coverage-collection.d.ts +2 -0
  334. package/dist/coordination/handlers/coverage-collection.js +2 -1
  335. package/dist/coordination/handlers/coverage-evidence.d.ts +75 -0
  336. package/dist/coordination/handlers/coverage-evidence.js +159 -0
  337. package/dist/coordination/handlers/coverage-handlers.js +16 -3
  338. package/dist/coordination/handlers/coverage-scope.d.ts +40 -0
  339. package/dist/coordination/handlers/coverage-scope.js +321 -0
  340. package/dist/coordination/handlers/coverage-target.d.ts +9 -0
  341. package/dist/coordination/handlers/coverage-target.js +15 -5
  342. package/dist/coordination/handlers/handler-types.d.ts +2 -2
  343. package/dist/coordination/handlers/handler-utils.d.ts +11 -0
  344. package/dist/coordination/handlers/handler-utils.js +22 -8
  345. package/dist/coordination/handlers/misc-handlers.js +5 -2
  346. package/dist/coordination/handlers/quality-handlers.js +2 -2
  347. package/dist/coordination/handlers/security-handlers.js +12 -2
  348. package/dist/coordination/protocols/security-audit.js +11 -1
  349. package/dist/coordination/task-executor.js +7 -2
  350. package/dist/domains/code-intelligence/coordinator-gnn.d.ts +2 -16
  351. package/dist/domains/code-intelligence/coordinator-gnn.js +1 -62
  352. package/dist/domains/code-intelligence/coordinator.d.ts +12 -6
  353. package/dist/domains/code-intelligence/coordinator.js +24 -27
  354. package/dist/domains/code-intelligence/interfaces.d.ts +9 -0
  355. package/dist/domains/code-intelligence/services/metric-collector/listing-process-owner.js +4 -1
  356. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +51 -5
  357. package/dist/domains/code-intelligence/services/semantic-analyzer.js +144 -78
  358. package/dist/domains/coverage-analysis/collected-metrics.d.ts +10 -0
  359. package/dist/domains/coverage-analysis/collected-metrics.js +29 -0
  360. package/dist/domains/coverage-analysis/services/coverage-analyzer.js +11 -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/quality-assessment/coherence/gate-controller.js +16 -4
  364. package/dist/domains/quality-assessment/coherence/lambda-calculator.d.ts +8 -0
  365. package/dist/domains/quality-assessment/coherence/lambda-calculator.js +57 -14
  366. package/dist/domains/quality-assessment/coherence/types.d.ts +12 -7
  367. package/dist/domains/quality-assessment/coordinator-gate-evaluation.js +3 -1
  368. package/dist/domains/quality-assessment/coordinator-reports.d.ts +30 -10
  369. package/dist/domains/quality-assessment/coordinator-reports.js +93 -57
  370. package/dist/domains/quality-assessment/coordinator.d.ts +14 -40
  371. package/dist/domains/quality-assessment/coordinator.js +10 -4
  372. package/dist/domains/quality-assessment/interfaces.d.ts +2 -0
  373. package/dist/domains/quality-assessment/services/coherence-gate.js +15 -2
  374. package/dist/domains/quality-assessment/services/quality-gate.js +6 -4
  375. package/dist/domains/security-compliance/index.d.ts +1 -1
  376. package/dist/domains/security-compliance/interfaces.d.ts +46 -5
  377. package/dist/domains/security-compliance/services/scanners/dast-auth-testing.d.ts +3 -3
  378. package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +15 -14
  379. package/dist/domains/security-compliance/services/scanners/dast-helpers.d.ts +8 -9
  380. package/dist/domains/security-compliance/services/scanners/dast-helpers.js +19 -44
  381. package/dist/domains/security-compliance/services/scanners/dast-injection-testing.d.ts +3 -3
  382. package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +13 -9
  383. package/dist/domains/security-compliance/services/scanners/dast-requests.d.ts +54 -0
  384. package/dist/domains/security-compliance/services/scanners/dast-requests.js +125 -0
  385. package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +5 -1
  386. package/dist/domains/security-compliance/services/scanners/dast-scanner.js +125 -155
  387. package/dist/domains/security-compliance/services/scanners/index.d.ts +1 -1
  388. package/dist/domains/security-compliance/services/scanners/index.js +1 -1
  389. package/dist/domains/security-compliance/services/scanners/scanner-types.d.ts +2 -2
  390. package/dist/domains/security-compliance/services/security-auditor-dast.js +183 -212
  391. package/dist/domains/security-compliance/services/security-auditor-reports.js +5 -1
  392. package/dist/domains/security-compliance/services/security-auditor.d.ts +11 -3
  393. package/dist/domains/security-compliance/services/security-auditor.js +106 -65
  394. package/dist/domains/test-execution/coordinator.d.ts +2 -1
  395. package/dist/domains/test-execution/coordinator.js +33 -27
  396. package/dist/domains/test-execution/interfaces.d.ts +5 -0
  397. package/dist/domains/test-execution/services/test-executor.d.ts +6 -0
  398. package/dist/domains/test-execution/services/test-executor.js +16 -4
  399. package/dist/domains/visual-accessibility/coordinator.js +34 -9
  400. package/dist/domains/visual-accessibility/interfaces.d.ts +27 -0
  401. package/dist/domains/visual-accessibility/plugin.js +5 -0
  402. package/dist/domains/visual-accessibility/services/accessibility-tester-heuristics.d.ts +13 -21
  403. package/dist/domains/visual-accessibility/services/accessibility-tester-heuristics.js +13 -297
  404. package/dist/domains/visual-accessibility/services/accessibility-tester.d.ts +13 -5
  405. package/dist/domains/visual-accessibility/services/accessibility-tester.js +96 -73
  406. package/dist/init/phases/10-workers.js +42 -4
  407. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +23 -1
  408. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +50 -15
  409. package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +7 -2
  410. package/dist/integrations/agentic-flow/reasoning-bank/index.js +8 -0
  411. package/dist/integrations/embeddings/index/HNSWIndex.js +8 -4
  412. package/dist/integrations/ruvector/transfer-coherence-stub.js +5 -10
  413. package/dist/learning/embedder-endpoint-client.d.ts +8 -0
  414. package/dist/learning/embedder-endpoint-client.js +20 -0
  415. package/dist/learning/embedder-recovery.d.ts +63 -0
  416. package/dist/learning/embedder-recovery.js +94 -0
  417. package/dist/learning/qe-reasoning-bank-types.d.ts +5 -0
  418. package/dist/learning/qe-reasoning-bank.d.ts +21 -0
  419. package/dist/learning/qe-reasoning-bank.js +54 -8
  420. package/dist/learning/real-embeddings.d.ts +23 -0
  421. package/dist/learning/real-embeddings.js +69 -2
  422. package/dist/learning/real-qe-reasoning-bank.d.ts +24 -4
  423. package/dist/learning/real-qe-reasoning-bank.js +58 -20
  424. package/dist/logging/redaction.js +142 -12
  425. package/dist/mcp/bundle.js +509 -497
  426. package/dist/mcp/daemon-mode.d.ts +126 -0
  427. package/dist/mcp/daemon-mode.js +257 -0
  428. package/dist/mcp/entry.d.ts +4 -0
  429. package/dist/mcp/entry.js +50 -2
  430. package/dist/mcp/handlers/domain-handler-configs.d.ts +8 -0
  431. package/dist/mcp/handlers/domain-handler-configs.js +14 -2
  432. package/dist/mcp/handlers/handler-factory.js +3 -0
  433. package/dist/mcp/handlers/model-route-handlers.d.ts +107 -0
  434. package/dist/mcp/handlers/model-route-handlers.js +139 -0
  435. package/dist/mcp/handlers/orchestrate-routes.d.ts +6 -1
  436. package/dist/mcp/handlers/orchestrate-routes.js +94 -3
  437. package/dist/mcp/handlers/task-handlers.d.ts +3 -242
  438. package/dist/mcp/handlers/task-handlers.js +11 -788
  439. package/dist/mcp/handlers/task-inference.d.ts +26 -0
  440. package/dist/mcp/handlers/task-inference.js +156 -0
  441. package/dist/mcp/handlers/task-learning-handlers.d.ts +92 -0
  442. package/dist/mcp/handlers/task-learning-handlers.js +230 -0
  443. package/dist/mcp/handlers/task-orchestrate-handler.d.ts +73 -0
  444. package/dist/mcp/handlers/task-orchestrate-handler.js +361 -0
  445. package/dist/mcp/protocol-server.js +15 -2
  446. package/dist/mcp/services/reasoning-bank-service.d.ts +6 -1
  447. package/dist/mcp/services/reasoning-bank-service.js +9 -0
  448. package/dist/mcp/tools/code-intelligence/analyze.js +3 -6
  449. package/dist/mcp/tools/coverage-analysis/index.d.ts +4 -0
  450. package/dist/mcp/tools/coverage-analysis/index.js +8 -2
  451. package/dist/mcp/tools/visual-accessibility/index.d.ts +7 -0
  452. package/dist/mcp/tools/visual-accessibility/index.js +29 -13
  453. package/dist/mcp/types.d.ts +14 -0
  454. package/dist/routing/advisor/redaction.js +22 -2
  455. package/dist/shared/events/domain-events.d.ts +2 -0
  456. package/dist/shared/llm/providers/response-deadline.js +16 -2
  457. package/dist/shared/metrics/code-metrics.js +21 -3
  458. package/dist/shared/parsers/typescript-parser.d.ts +6 -0
  459. package/dist/shared/parsers/typescript-parser.js +13 -1
  460. package/dist/shared/types/index.js +3 -1
  461. package/dist/strange-loop/infra-healing/infra-aware-agent-provider.js +8 -1
  462. package/package.json +3 -3
  463. package/dist/cli/chunks/adapter-V4GSGOOK.js +0 -2
  464. package/dist/cli/chunks/aqe-learning-engine-6WQTM5YR.js +0 -2
  465. package/dist/cli/chunks/base-AK7BXBX2.js +0 -2
  466. package/dist/cli/chunks/browser-workflow-VTDFBW7T.js +0 -2
  467. package/dist/cli/chunks/chunk-2DTX7YAZ.js +0 -6
  468. package/dist/cli/chunks/chunk-72ZBJD2E.js +0 -3
  469. package/dist/cli/chunks/chunk-EBPJY4DI.js +0 -3
  470. package/dist/cli/chunks/chunk-H43AFUKL.js +0 -2
  471. package/dist/cli/chunks/chunk-HJ3XNTTJ.js +0 -2
  472. package/dist/cli/chunks/chunk-IO5537OM.js +0 -2
  473. package/dist/cli/chunks/chunk-IW6WDGHM.js +0 -2
  474. package/dist/cli/chunks/chunk-K2HBNYAZ.js +0 -62
  475. package/dist/cli/chunks/chunk-LRL56ZYL.js +0 -21
  476. package/dist/cli/chunks/chunk-VLD7Z2ED.js +0 -13
  477. package/dist/cli/chunks/chunk-VO3DRK4P.js +0 -3
  478. package/dist/cli/chunks/ci-6GUFAZMJ.js +0 -81
  479. package/dist/cli/chunks/client-HL2COSFM.js +0 -2
  480. package/dist/cli/chunks/core-handlers-IX7ATLM6.js +0 -2
  481. package/dist/cli/chunks/cross-domain-router-YYKLAPJO.js +0 -2
  482. package/dist/cli/chunks/domain-transfer-DOBI67K6.js +0 -2
  483. package/dist/cli/chunks/dream-T6EP7B3F.js +0 -2
  484. package/dist/cli/chunks/file-discovery-JYMVTDMU.js +0 -2
  485. package/dist/cli/chunks/fleet-FVAUMKUT.js +0 -46
  486. package/dist/cli/chunks/heartbeat-scheduler-4N5MUJ7S.js +0 -2
  487. package/dist/cli/chunks/hnsw-adapter-ZPAJDSLR.js +0 -2
  488. package/dist/cli/chunks/hnsw-index-4CTH6RHB.js +0 -2
  489. package/dist/cli/chunks/hybrid-backend-AW6UTXQS.js +0 -2
  490. package/dist/cli/chunks/impact-analyzer-MZK3JMSV.js +0 -2
  491. package/dist/cli/chunks/init-wizard-FUC7KDVX.js +0 -2
  492. package/dist/cli/chunks/kernel-ZCPMCVMW.js +0 -2
  493. package/dist/cli/chunks/knowledge-graph-NUJKEDNF.js +0 -2
  494. package/dist/cli/chunks/llm-router-service-B2BFBQ76.js +0 -2
  495. package/dist/cli/chunks/load-test-ZHQ2MUGO.js +0 -2
  496. package/dist/cli/chunks/memory-backend-AAMQG6WH.js +0 -2
  497. package/dist/cli/chunks/pattern-null-store-RFNVA46O.js +0 -2
  498. package/dist/cli/chunks/project-root-7QL4KP5C.js +0 -2
  499. package/dist/cli/chunks/protocol-executor-2NW5BD4R.js +0 -2
  500. package/dist/cli/chunks/qe-reasoning-bank-G2JZOGKD.js +0 -2
  501. package/dist/cli/chunks/queen-coordinator-GRG5FT2A.js +0 -2
  502. package/dist/cli/chunks/real-embeddings-RQRVOKVM.js +0 -2
  503. package/dist/cli/chunks/router-LQB5SWAF.js +0 -2
  504. package/dist/cli/chunks/routing-feedback-OEEXA55N.js +0 -2
  505. package/dist/cli/chunks/rvf-dual-writer-BZK4M7BO.js +0 -2
  506. package/dist/cli/chunks/rvf-migration-adapter-EZZUJL2E.js +0 -2
  507. package/dist/cli/chunks/rvf-native-adapter-6COXTQZ3.js +0 -2
  508. package/dist/cli/chunks/safe-db-PE6G3L55.js +0 -2
  509. package/dist/cli/chunks/schedule-OLKQ6QYW.js +0 -2
  510. package/dist/cli/chunks/scheduler-LSGBDFAT.js +0 -2
  511. package/dist/cli/chunks/sqlite-persistence-HH4DNTYH.js +0 -2
  512. package/dist/cli/chunks/task-handler-TFKVUTNF.js +0 -60
  513. package/dist/cli/chunks/task-handlers-SS4ZDXNF.js +0 -9
  514. package/dist/cli/chunks/test-runner-process-PSSBNNGR.js +0 -2
  515. package/dist/cli/chunks/tree-sitter-wasm-parser-TYRQRJ2W.js +0 -2
  516. package/dist/cli/chunks/unified-memory-AGDZQ5XD.js +0 -2
  517. package/dist/cli/chunks/unified-memory-hnsw-X5TJ3JDE.js +0 -2
  518. package/dist/cli/chunks/unified-persistence-UCV7YETW.js +0 -2
  519. package/dist/cli/chunks/visual-security-ZLXRIQZV.js +0 -2
  520. package/dist/cli/chunks/witness-chain-CVIWYTD2.js +0 -2
  521. package/dist/cli/chunks/witness-chain-VBKORKOX.js +0 -2
  522. package/dist/cli/chunks/workflow-orchestrator-3ZN7MVCE.js +0 -2
@@ -8,7 +8,10 @@
8
8
  *
9
9
  * - measured — an instrumented report covers the target: judged on the
10
10
  * metrics the report collected (an uncollected metric is null,
11
- * never 0%, and is left out of the threshold);
11
+ * never 0%, and is left out of the threshold). When target
12
+ * files are missing from the report, or the report is older
13
+ * than the sources, the evidence is insufficient (#1154): the
14
+ * threshold is not met and the exit code is 3;
12
15
  * - unmeasured — the report has no entry for the target, the runner ran 0
13
16
  * tests, or only test files were reported: no figure, exit 3;
14
17
  * - estimate — no report exists, so the CLI shows a labelled STATIC
@@ -18,6 +21,7 @@
18
21
  */
19
22
  import { type CoverageData } from './coverage-data.js';
20
23
  import { type NoDataReason } from '../../coordination/handlers/coverage-target.js';
24
+ import { type CoverageEvidence } from '../../coordination/handlers/coverage-evidence.js';
21
25
  /** `aqe coverage` exit code when no coverage measurement exists for the target (#995). */
22
26
  export declare const EXIT_UNMEASURED = 3;
23
27
  /** Provenance labels, the same vocabulary as MCP `coverage_analyze_sublinear`. */
@@ -27,6 +31,7 @@ export type CliCoverage = {
27
31
  kind: 'data';
28
32
  data: CoverageData;
29
33
  projectRoot?: string;
34
+ evidence?: CoverageEvidence;
30
35
  } | {
31
36
  kind: 'no-data';
32
37
  reason: NoDataReason;
@@ -112,6 +117,9 @@ export type CliCoverageOutcome = {
112
117
  meetsThreshold: boolean;
113
118
  };
114
119
  recommendations: string[];
120
+ /** #1154: why the report cannot support a verdict for the target; empty when it can. */
121
+ insufficientEvidence: string[];
122
+ evidence?: CoverageEvidence;
115
123
  };
116
124
  /** Caller-facing explanation of a static estimate. */
117
125
  export declare function estimateMessage(): string;
@@ -122,7 +130,8 @@ export declare function estimateMessage(): string;
122
130
  export declare function evaluateCliCoverage(api: CoverageAnalyzeAPI, targetPath: string, threshold: number, log?: (message: string) => void): Promise<CliCoverageOutcome>;
123
131
  /**
124
132
  * Exit code: 0 meets (by more than 5%), 1 below / error, 2 within 5% above,
125
- * 3 UNMEASURED (not in the report, 0 tests, test-only report, or estimate only).
133
+ * 3 UNMEASURED (not in the report, 0 tests, test-only report, or estimate only)
134
+ * or insufficient evidence (target files missing from the report, stale report).
126
135
  */
127
136
  export declare function coverageExitCode(outcome: CliCoverageOutcome, threshold: number): number;
128
137
  /** The `-F json` document for an outcome (same shape in every case). */
@@ -8,7 +8,10 @@
8
8
  *
9
9
  * - measured — an instrumented report covers the target: judged on the
10
10
  * metrics the report collected (an uncollected metric is null,
11
- * never 0%, and is left out of the threshold);
11
+ * never 0%, and is left out of the threshold). When target
12
+ * files are missing from the report, or the report is older
13
+ * than the sources, the evidence is insufficient (#1154): the
14
+ * threshold is not met and the exit code is 3;
12
15
  * - unmeasured — the report has no entry for the target, the runner ran 0
13
16
  * tests, or only test files were reported: no figure, exit 3;
14
17
  * - estimate — no report exists, so the CLI shows a labelled STATIC
@@ -20,6 +23,7 @@ import chalk from 'chalk';
20
23
  import { walkSourceFiles } from './file-discovery.js';
21
24
  import { buildCoverageData, summarizeCoverage } from './coverage-data.js';
22
25
  import { describeNoData, reconcileRecommendations, resolveExistingCoverage, thresholdVerdict, } from '../../coordination/handlers/coverage-target.js';
26
+ import { describeEvidence } from '../../coordination/handlers/coverage-evidence.js';
23
27
  /** `aqe coverage` exit code when no coverage measurement exists for the target (#995). */
24
28
  export const EXIT_UNMEASURED = 3;
25
29
  /** Provenance labels, the same vocabulary as MCP `coverage_analyze_sublinear`. */
@@ -46,8 +50,12 @@ export async function resolveCliCoverageData(targetPath, log = message => consol
46
50
  if (existing.status === 'evaluated') {
47
51
  const { evaluation, projectRoot } = existing;
48
52
  if (evaluation.status === 'measured') {
49
- const files = evaluation.files;
50
- return { kind: 'data', data: { files, summary: summarizeCoverage(files), instrumented: true }, projectRoot };
53
+ const { files, evidence } = evaluation;
54
+ const data = {
55
+ files, summary: summarizeCoverage(files), instrumented: true,
56
+ ...(evidence.unmeasuredFiles.length > 0 ? { unmeasuredFiles: evidence.unmeasuredFiles } : {}),
57
+ };
58
+ return { kind: 'data', data, projectRoot, evidence };
51
59
  }
52
60
  return { kind: 'no-data', reason: evaluation.reason, message: describeNoData(evaluation.reason, targetPath, projectRoot) };
53
61
  }
@@ -104,12 +112,17 @@ export async function evaluateCliCoverage(api, targetPath, threshold, log) {
104
112
  // #995 review NB5: a metric the report never collected is null — not 0 —
105
113
  // and is left out of the threshold verdict (same rule as MCP).
106
114
  const collected = metricsCollected(data);
107
- const verdict = thresholdVerdict(report.summary, threshold, collected);
115
+ const figures = thresholdVerdict(report.summary, threshold, collected);
116
+ // #1154: figures over part of the target, or from a stale report, never meet the threshold.
117
+ const insufficientEvidence = describeEvidence(resolved.evidence, resolved.projectRoot ?? targetPath);
118
+ const verdict = { ...figures, meetsThreshold: figures.meetsThreshold && insufficientEvidence.length === 0 };
108
119
  return {
109
120
  kind: 'measured',
110
121
  data,
111
122
  collected,
112
123
  verdict,
124
+ insufficientEvidence,
125
+ ...(resolved.evidence ? { evidence: resolved.evidence } : {}),
113
126
  summary: {
114
127
  ...report.summary,
115
128
  branch: collected.branch ? report.summary.branch : null,
@@ -117,16 +130,19 @@ export async function evaluateCliCoverage(api, targetPath, threshold, log) {
117
130
  statement: collected.statement ? report.summary.statement : null,
118
131
  },
119
132
  // NB-A: the shortfall advice comes from the same verdict (shared with MCP).
120
- recommendations: reconcileRecommendations(report.recommendations ?? [], verdict, threshold, collected),
133
+ recommendations: reconcileRecommendations(report.recommendations ?? [], figures, threshold, collected),
121
134
  };
122
135
  }
123
136
  /**
124
137
  * Exit code: 0 meets (by more than 5%), 1 below / error, 2 within 5% above,
125
- * 3 UNMEASURED (not in the report, 0 tests, test-only report, or estimate only).
138
+ * 3 UNMEASURED (not in the report, 0 tests, test-only report, or estimate only)
139
+ * or insufficient evidence (target files missing from the report, stale report).
126
140
  */
127
141
  export function coverageExitCode(outcome, threshold) {
128
142
  switch (outcome.kind) {
129
143
  case 'measured': {
144
+ if (outcome.insufficientEvidence.length > 0)
145
+ return EXIT_UNMEASURED;
130
146
  const { overall, meetsThreshold } = outcome.verdict;
131
147
  if (!meetsThreshold)
132
148
  return 1;
@@ -158,6 +174,10 @@ export function coverageJson(outcome, threshold, target) {
158
174
  functionDataCollected: outcome.collected.function,
159
175
  statementDataCollected: outcome.collected.statement,
160
176
  ...(outcome.data.unmeasuredFiles?.length ? { unmeasuredFiles: outcome.data.unmeasuredFiles } : {}),
177
+ ...(outcome.evidence ? { evidenceStatus: outcome.evidence.status } : {}),
178
+ ...(outcome.evidence?.stale ? { staleReport: outcome.evidence.stale } : {}),
179
+ ...(outcome.insufficientEvidence.length > 0
180
+ ? { warning: `INSUFFICIENT EVIDENCE: ${outcome.insufficientEvidence.join('; ')}` } : {}),
161
181
  };
162
182
  case 'estimate':
163
183
  return {
@@ -17,6 +17,11 @@ export interface FleetOperationTask {
17
17
  domain: DomainName;
18
18
  type: string;
19
19
  payload: Record<string, unknown>;
20
+ /**
21
+ * #1154: why the input cannot support a passing verdict (target files missing
22
+ * from the coverage report, a stale report). The verdict fails while non-empty.
23
+ */
24
+ insufficientEvidence?: string[];
20
25
  }
21
26
  export type FleetOperationPlan = {
22
27
  success: true;
@@ -27,6 +32,9 @@ export type FleetOperationPlan = {
27
32
  };
28
33
  /** Coverage threshold `analyze` judges against, as `aqe coverage` does by default. */
29
34
  export declare const FLEET_COVERAGE_THRESHOLD = 80;
30
- /** Build the domain task for a fleet operation on `target`, or say why it cannot run. */
31
- 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>;
32
40
  //# sourceMappingURL=fleet-operation.d.ts.map
@@ -15,18 +15,30 @@ import { extname, resolve } from 'node:path';
15
15
  import { walkSourceFiles } from './file-discovery.js';
16
16
  import { summarizeCoverage } from './coverage-data.js';
17
17
  import { describeNoData, resolveExistingCoverage } from '../../coordination/handlers/coverage-target.js';
18
+ import { describeEvidence } from '../../coordination/handlers/coverage-evidence.js';
18
19
  import { MAX_SAST_FILE_BYTES } from '../../domains/security-compliance/sast-path-guard.js';
20
+ import { confinePayloadPaths } from '../../shared/io/payload-path-guard.js';
19
21
  export const FLEET_OPERATIONS = ['test', 'analyze', 'scan'];
20
22
  /** Coverage threshold `analyze` judges against, as `aqe coverage` does by default. */
21
23
  export const FLEET_COVERAGE_THRESHOLD = 80;
22
24
  /** Extensions the built-in SAST patterns cover (sast-scanner.ts). */
23
25
  const SAST_EXTENSIONS = new Set(['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs']);
24
26
  const refuse = (error) => ({ success: false, error });
25
- /** Build the domain task for a fleet operation on `target`, or say why it cannot run. */
26
- 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) {
27
32
  const targetPath = resolve(target);
28
33
  if (!existsSync(targetPath))
29
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
+ }
30
42
  switch (operation) {
31
43
  case 'test': {
32
44
  const sourceFiles = walkSourceFiles(targetPath, { includeTests: false });
@@ -61,9 +73,14 @@ export async function planFleetOperation(operation, target) {
61
73
  if (evaluation.status !== 'measured')
62
74
  return refuse(describeNoData(evaluation.reason, target, projectRoot));
63
75
  const coverageData = { files: evaluation.files, summary: summarizeCoverage(evaluation.files) };
76
+ const insufficientEvidence = describeEvidence(evaluation.evidence, projectRoot);
64
77
  return {
65
78
  success: true,
66
- task: { domain: 'coverage-analysis', type: 'analyze-coverage', payload: { coverageData, threshold: FLEET_COVERAGE_THRESHOLD } },
79
+ task: {
80
+ domain: 'coverage-analysis', type: 'analyze-coverage',
81
+ payload: { coverageData, threshold: FLEET_COVERAGE_THRESHOLD },
82
+ ...(insufficientEvidence.length > 0 ? { insufficientEvidence } : {}),
83
+ },
67
84
  };
68
85
  }
69
86
  }
@@ -8,7 +8,8 @@
8
8
  * - test fails when no test was generated or a generated test failed
9
9
  * the test quality gate;
10
10
  * - analyze fails when coverage over the collected metrics is below the
11
- * threshold (an uncollected metric is not counted as 0%).
11
+ * threshold (an uncollected metric is not counted as 0%), or when
12
+ * the report leaves target files unmeasured or is stale (#1154).
12
13
  * A result without the expected shape fails rather than passing unread.
13
14
  */
14
15
  import { type FleetOperation } from './fleet-operation.js';
@@ -20,12 +21,27 @@ export interface FleetResultSummary {
20
21
  }
21
22
  /** Summarize one completed task's result for its fleet operation. */
22
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
+ }
23
32
  /**
24
- * Print each distinct worker result once and the verdict over all workers.
25
- * Returns whether the operation passed.
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.
35
+ * `insufficientEvidence` (from the operation's plan) fails the verdict whatever
36
+ * the workers returned.
26
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. */
27
43
  export declare function reportFleetVerdict(operation: FleetOperation, workers: ReadonlyArray<{
28
44
  success: boolean;
29
45
  result: unknown;
30
- }>, log?: (line: string) => void): boolean;
46
+ }>, log?: (line: string) => void, insufficientEvidence?: readonly string[]): boolean;
31
47
  //# sourceMappingURL=fleet-result.d.ts.map
@@ -8,12 +8,14 @@
8
8
  * - test fails when no test was generated or a generated test failed
9
9
  * the test quality gate;
10
10
  * - analyze fails when coverage over the collected metrics is below the
11
- * threshold (an uncollected metric is not counted as 0%).
11
+ * threshold (an uncollected metric is not counted as 0%), or when
12
+ * the report leaves target files unmeasured or is stale (#1154).
12
13
  * A result without the expected shape fails rather than passing unread.
13
14
  */
14
15
  import chalk from 'chalk';
15
16
  import { FLEET_COVERAGE_THRESHOLD } from './fleet-operation.js';
16
17
  import { thresholdVerdict } from '../../coordination/handlers/coverage-target.js';
18
+ import { combineFleetResults } from './fleet-shard.js';
17
19
  const SEVERITIES = ['critical', 'high', 'medium', 'low', 'informational'];
18
20
  const MAX_LISTED_FINDINGS = 10;
19
21
  const asRecord = (value) => value !== null && typeof value === 'object' ? value : undefined;
@@ -32,8 +34,9 @@ function summarizeScan(result) {
32
34
  `Files scanned: ${coverage?.filesScanned ?? 'n/a'} (evidence: ${completeness})`,
33
35
  ...findings.slice(0, MAX_LISTED_FINDINGS).map(f => ` [${f.severity ?? '?'}] ${f.title ?? 'untitled'} @ ${f.location?.file ?? '?'}:${f.location?.line ?? '?'}`),
34
36
  ];
35
- if (findings.length > MAX_LISTED_FINDINGS)
36
- 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
+ }
37
40
  const reasons = [];
38
41
  if (count('critical') + count('high') > 0)
39
42
  reasons.push(`${count('critical')} critical and ${count('high')} high findings`);
@@ -96,29 +99,37 @@ export function summarizeFleetResult(operation, result) {
96
99
  }
97
100
  }
98
101
  /**
99
- * Print each distinct worker result once and the verdict over all workers.
100
- * Returns whether the operation passed.
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.
104
+ * `insufficientEvidence` (from the operation's plan) fails the verdict whatever
105
+ * the workers returned.
101
106
  */
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);
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. */
120
+ export function reportFleetVerdict(operation, workers, log = line => console.log(line), insufficientEvidence = []) {
121
+ const verdict = judgeFleetRun(operation, workers, insufficientEvidence);
122
+ if (verdict.summary) {
110
123
  log('');
111
- for (const line of summary.lines)
124
+ for (const line of verdict.summary.lines)
112
125
  log(` ${line}`);
113
126
  }
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`);
127
+ for (const reason of insufficientEvidence)
128
+ log(chalk.yellow(` Evidence: ${reason}`));
118
129
  log('');
119
- log(reasons.length === 0
130
+ log(verdict.passed
120
131
  ? chalk.green(' Verdict: PASSED')
121
- : chalk.red(` Verdict: FAILED (${reasons.join('; ')})`));
122
- return reasons.length === 0;
132
+ : chalk.red(` Verdict: FAILED (${verdict.reasons.join('; ')})`));
133
+ return verdict.passed;
123
134
  }
124
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
@@ -52,6 +52,25 @@ async function confineTarget(taskType, target) {
52
52
  return ok(undefined);
53
53
  return requirePayloadPath(taskType, 'target', target, { allowDirectory: true, allowMissing: true });
54
54
  }
55
+ /**
56
+ * #1224: index the files for the code-intelligence search (the index the
57
+ * Queen's `search` task reads), not only the knowledge graph. Returns warnings
58
+ * for the index result.
59
+ */
60
+ async function indexFilesForSearch(ctx, indexedFiles) {
61
+ const unavailable = 'Search index not updated: the code-intelligence domain is unavailable, so a code search will not find these files.';
62
+ if (!ctx.getCodeIntelligenceCoordinator)
63
+ return [unavailable];
64
+ try {
65
+ const coordinator = await ctx.getCodeIntelligenceCoordinator();
66
+ if (!coordinator)
67
+ return [unavailable];
68
+ return (await coordinator.indexForSearch(indexedFiles)).warnings;
69
+ }
70
+ catch (error) {
71
+ return [`Search index not updated: ${toError(error).message}`];
72
+ }
73
+ }
55
74
  export function registerCodeIntelligenceHandlers(ctx) {
56
75
  // Register code indexing handler - REAL IMPLEMENTATION
57
76
  ctx.registerHandler('index-code', async (task) => {
@@ -108,6 +127,7 @@ export function registerCodeIntelligenceHandlers(ctx) {
108
127
  // caller's target the way #997 resolves it. Best-effort: indexing has
109
128
  // already succeeded, so a metric failure only omits projectMetrics.
110
129
  const projectMetrics = await collectProjectMetricsForTarget(ctx, targetPath, indexedFiles);
130
+ const searchWarnings = await indexFilesForSearch(ctx, indexedFiles);
111
131
  // Detect languages from files
112
132
  const detectedLanguages = new Set();
113
133
  const extToLang = {
@@ -140,7 +160,7 @@ export function registerCodeIntelligenceHandlers(ctx) {
140
160
  languages: Array.from(detectedLanguages),
141
161
  duration: indexResult.duration,
142
162
  errors: indexResult.errors,
143
- warnings: indexResult.warnings,
163
+ warnings: [...(indexResult.warnings ?? []), ...searchWarnings],
144
164
  skipped: indexResult.skipped ?? [],
145
165
  ...(projectMetrics ? { projectMetrics } : {}),
146
166
  });
@@ -141,6 +141,8 @@ export declare function isRustProject(targetPath: string): boolean;
141
141
  export declare function collectRustCoverage(targetPath: string, options?: {
142
142
  timeoutMs?: number;
143
143
  }): Promise<CollectedCoverage | null>;
144
+ /** Production source files under a directory (test, build and vendored directories skipped). */
145
+ export declare function walkSourceFiles(targetPath: string): string[];
144
146
  /**
145
147
  * Static coverage estimate from source shape, for when no instrumentation could
146
148
  * be run.
@@ -502,7 +502,8 @@ function withRecomputedSummary(files) {
502
502
  },
503
503
  };
504
504
  }
505
- function walkSourceFiles(targetPath) {
505
+ /** Production source files under a directory (test, build and vendored directories skipped). */
506
+ export function walkSourceFiles(targetPath) {
506
507
  const found = [];
507
508
  // Classification is relative to the analysis root (see isTestPath).
508
509
  const rootDir = targetPath;
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Coverage evidence: is a report complete and current for its target? (#1154)
3
+ *
4
+ * A report judged over only the files it happens to contain says nothing
5
+ * about the target's other files. `aqe fleet run analyze --target src` printed
6
+ * "100% over 1 files" and "Verdict: PASSED" from a report that listed
7
+ * `src/math.js` while `src/unsafe.js` had no measurement at all, and a report
8
+ * written before the sources last changed was judged as if it were current.
9
+ *
10
+ * This module answers two questions for every caller of the shared resolver
11
+ * (MCP `coverage_analyze_sublinear` / `task_orchestrate`, `aqe coverage`,
12
+ * `aqe ci`, `aqe fleet run analyze`):
13
+ * 1. Which production source files under the target are not in the report?
14
+ * They are UNMEASURED: not 0%, and not left out silently.
15
+ * 2. Is the report older than source files it is judged against? (stale)
16
+ * Either one makes the evidence insufficient: no verdict may pass on it.
17
+ */
18
+ import type { FileCoverage } from '../../domains/coverage-analysis/interfaces';
19
+ /** The report is older than these source files. */
20
+ export interface StaleReport {
21
+ reportPath: string;
22
+ reportModified: string;
23
+ newerFiles: string[];
24
+ }
25
+ export interface CoverageEvidence {
26
+ /** `insufficient-evidence` when any target file is unmeasured or the report is stale. */
27
+ status: 'complete' | 'insufficient-evidence';
28
+ /** Production source files under the target with no entry in the report (absolute paths). */
29
+ unmeasuredFiles: string[];
30
+ /** Production source files under the target, measured or not. */
31
+ targetFiles: number;
32
+ stale?: StaleReport;
33
+ /** The coverage config whose include/exclude scoped `unmeasuredFiles`, if any. */
34
+ coverageScope?: {
35
+ source: string;
36
+ readable: boolean;
37
+ };
38
+ }
39
+ /**
40
+ * Production source files under a directory `target` that the report has no
41
+ * entry for. Only files in a language the report covers count: a JS report
42
+ * does not make a Python helper script unmeasured. Files the project's coverage
43
+ * config leaves out (include/exclude) were never meant to be measured and do
44
+ * not count either.
45
+ */
46
+ export declare function findUnmeasuredSourceFiles(reportFiles: FileCoverage[], projectRoot: string, target: string): {
47
+ targetFiles: string[];
48
+ unmeasured: string[];
49
+ coverageScope?: {
50
+ source: string;
51
+ readable: boolean;
52
+ };
53
+ };
54
+ /** Source files modified after the report was written; `undefined` when the report is current. */
55
+ export declare function findStaleness(reportPath: string, sourceFiles: string[]): StaleReport | undefined;
56
+ /**
57
+ * The evidence a report gives for `target`.
58
+ *
59
+ * `measuredFiles` are the report entries already scoped to the target.
60
+ * Completeness is checked only when `checkCompleteness` is set (a directory
61
+ * target, not a report file given as the target), staleness only when the
62
+ * report's path is known (not for a report the run just wrote).
63
+ */
64
+ export declare function assessCoverageEvidence(report: {
65
+ files: FileCoverage[];
66
+ }, measuredFiles: FileCoverage[], projectRoot: string, target: string, options?: {
67
+ reportPath?: string;
68
+ checkCompleteness?: boolean;
69
+ }): CoverageEvidence;
70
+ /**
71
+ * Why the evidence is insufficient, one sentence per problem; empty when it is
72
+ * complete. Shared by MCP and CLI so the wording cannot drift.
73
+ */
74
+ export declare function describeEvidence(evidence: CoverageEvidence | undefined, projectRoot: string): string[];
75
+ //# sourceMappingURL=coverage-evidence.d.ts.map