agentic-qe 3.15.12 → 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 (467) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +118 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/cli/bundle.js +6 -6
  5. package/dist/cli/chunks/adapter-KCQDVYY2.js +2 -0
  6. package/dist/cli/chunks/{agent-booster-wasm-5VZCKTIJ.js → agent-booster-wasm-6RRQWMNE.js} +2 -2
  7. package/dist/cli/chunks/{agent-handler-K3C6CQCD.js → agent-handler-AOH6TV7W.js} +2 -2
  8. package/dist/cli/chunks/{agent-memory-branch-NVFQ25WS.js → agent-memory-branch-2P54SF5N.js} +2 -2
  9. package/dist/cli/chunks/aqe-learning-engine-SAQOHSGN.js +2 -0
  10. package/dist/cli/chunks/{arena-QGWIJADQ.js → arena-NSVFCAF5.js} +2 -2
  11. package/dist/cli/chunks/{arena-TSZVDSXS.js → arena-X6MOGQHA.js} +4 -4
  12. package/dist/cli/chunks/{audit-KIEE2SHJ.js → audit-27DJLQNM.js} +3 -3
  13. package/dist/cli/chunks/base-WCACU3FN.js +2 -0
  14. package/dist/cli/chunks/{better-sqlite3-BNB32NW3.js → better-sqlite3-BU5GXILS.js} +2 -2
  15. package/dist/cli/chunks/{brain-handler-MPC5SPYI.js → brain-handler-GTQNHHZS.js} +3 -3
  16. package/dist/cli/chunks/{branch-enumerator-LZ7UXKAY.js → branch-enumerator-5CLULOCU.js} +2 -2
  17. package/dist/cli/chunks/{browser-VDHAW4RK.js → browser-R4DMU3LN.js} +2 -2
  18. package/dist/cli/chunks/browser-workflow-G6IASEAP.js +2 -0
  19. package/dist/cli/chunks/{chunk-QUJJYTJH.js → chunk-2G7TVT6W.js} +2 -2
  20. package/dist/cli/chunks/{chunk-FAGKBOX2.js → chunk-32ZMWEP3.js} +2 -2
  21. package/dist/cli/chunks/{chunk-FNUFTWEO.js → chunk-3AN5TNGD.js} +3 -3
  22. package/dist/cli/chunks/{chunk-JOWUS2X5.js → chunk-3LJ7LQMV.js} +1 -1
  23. package/dist/cli/chunks/{chunk-O4QJMANM.js → chunk-3QZEGE67.js} +1 -1
  24. package/dist/cli/chunks/{chunk-ICKUINKD.js → chunk-3RZV5DGO.js} +2 -2
  25. package/dist/cli/chunks/{chunk-W4II6SIH.js → chunk-3Y2ROSCL.js} +2 -2
  26. package/dist/cli/chunks/{chunk-L7NGKANW.js → chunk-3Y7TJFHU.js} +2 -2
  27. package/dist/cli/chunks/{chunk-UUZZXHUF.js → chunk-3YNLWPBF.js} +2 -2
  28. package/dist/cli/chunks/{chunk-JR6CUKAI.js → chunk-42J34YG4.js} +2 -2
  29. package/dist/cli/chunks/{chunk-65TH6RPD.js → chunk-4OVC4RIL.js} +1 -1
  30. package/dist/cli/chunks/{chunk-DRCBRUGN.js → chunk-526QYFJU.js} +2 -2
  31. package/dist/cli/chunks/{chunk-MCPXNUDK.js → chunk-5FKWCZNF.js} +2 -2
  32. package/dist/cli/chunks/{chunk-NX4BCSOZ.js → chunk-5K26BEYB.js} +2 -2
  33. package/dist/cli/chunks/{chunk-MCPEC6OO.js → chunk-5MDERQH3.js} +1 -1
  34. package/dist/cli/chunks/{chunk-7JFDLL2F.js → chunk-5VMAV6T6.js} +1 -1
  35. package/dist/cli/chunks/{chunk-5TAEW5OV.js → chunk-5ZGM3RMH.js} +1 -1
  36. package/dist/cli/chunks/{chunk-SG2TX72G.js → chunk-6KATY3KS.js} +2 -2
  37. package/dist/cli/chunks/{chunk-KA5SHLMW.js → chunk-6Z7PRBSG.js} +2 -2
  38. package/dist/cli/chunks/{chunk-LFBA735S.js → chunk-72ASBE35.js} +3 -3
  39. package/dist/cli/chunks/{chunk-TOWOJGEI.js → chunk-756CGMEH.js} +1 -1
  40. package/dist/cli/chunks/{chunk-IVTQF55W.js → chunk-75RDHBAX.js} +3 -3
  41. package/dist/cli/chunks/{chunk-66PXR3NI.js → chunk-7CMTY45A.js} +2 -2
  42. package/dist/cli/chunks/{chunk-WLRU6ESI.js → chunk-7JUC2MVZ.js} +2 -2
  43. package/dist/cli/chunks/{chunk-SBHM5X2S.js → chunk-7NA7JXNB.js} +2 -2
  44. package/dist/cli/chunks/{chunk-HZBXJFGN.js → chunk-7PLIEBY7.js} +2 -2
  45. package/dist/cli/chunks/{chunk-2ASQRBK2.js → chunk-7YTGHGK4.js} +2 -2
  46. package/dist/cli/chunks/{chunk-SQVZ3TRU.js → chunk-A64JFBWI.js} +2 -2
  47. package/dist/cli/chunks/{chunk-2PPSS4JD.js → chunk-AL6FBH3E.js} +2 -2
  48. package/dist/cli/chunks/{chunk-3IU4LDZR.js → chunk-AQSVJNEH.js} +2 -2
  49. package/dist/cli/chunks/{chunk-C74M4WUI.js → chunk-ARJW4I2O.js} +2 -2
  50. package/dist/cli/chunks/{chunk-VF7FTD64.js → chunk-ASQYASNV.js} +1 -1
  51. package/dist/cli/chunks/{chunk-HLGFHHWV.js → chunk-BEGR4D6N.js} +2 -2
  52. package/dist/cli/chunks/{chunk-EN7GRVEQ.js → chunk-BK577VL7.js} +2 -2
  53. package/dist/cli/chunks/{chunk-KGA7VAI4.js → chunk-BLSLEVDI.js} +2 -2
  54. package/dist/cli/chunks/{chunk-HM3LSFTY.js → chunk-BTVEYBW2.js} +2 -2
  55. package/dist/cli/chunks/{chunk-J7Y7ZBIT.js → chunk-C6JTLKG7.js} +5 -5
  56. package/dist/cli/chunks/{chunk-PTBOLBM4.js → chunk-C7JM7CD3.js} +2 -2
  57. package/dist/cli/chunks/{chunk-IL7GQNNE.js → chunk-CCMKSHAT.js} +2 -2
  58. package/dist/cli/chunks/{chunk-23PQF7NN.js → chunk-CE7B5LU7.js} +1 -1
  59. package/dist/cli/chunks/{chunk-BMG2JLSQ.js → chunk-CM4LSLKR.js} +2 -2
  60. package/dist/cli/chunks/chunk-CRWPZT74.js +62 -0
  61. package/dist/cli/chunks/{chunk-4HWUECVD.js → chunk-CT6SAVXQ.js} +2 -2
  62. package/dist/cli/chunks/chunk-CV77DMDQ.js +2 -0
  63. package/dist/cli/chunks/{chunk-CU36D7TN.js → chunk-DFUASIKA.js} +2 -2
  64. package/dist/cli/chunks/{chunk-T4EN5VVK.js → chunk-DLD7RUZ4.js} +2 -2
  65. package/dist/cli/chunks/{chunk-IA55PFLG.js → chunk-DNDL7SOS.js} +2 -2
  66. package/dist/cli/chunks/{chunk-6QRI3JVE.js → chunk-DVGRPK7A.js} +2 -2
  67. package/dist/cli/chunks/{chunk-UREDS662.js → chunk-E56B6IDX.js} +2 -2
  68. package/dist/cli/chunks/{chunk-ZGROHCOW.js → chunk-E7CLYGS7.js} +1 -1
  69. package/dist/cli/chunks/{chunk-YNVEDFPQ.js → chunk-EXGMJFAT.js} +1 -1
  70. package/dist/cli/chunks/{chunk-JRYWLOBD.js → chunk-F3YS57NF.js} +2 -2
  71. package/dist/cli/chunks/{chunk-ZYOYR3UR.js → chunk-FZ76G4QJ.js} +1 -1
  72. package/dist/cli/chunks/{chunk-UIKQPO4Y.js → chunk-G2Q66Z23.js} +2 -2
  73. package/dist/cli/chunks/{chunk-5S4UIDFK.js → chunk-G6WDYBLQ.js} +1 -1
  74. package/dist/cli/chunks/{chunk-4SA7M34P.js → chunk-G77ERMUD.js} +1 -1
  75. package/dist/cli/chunks/{chunk-ADUAJIAU.js → chunk-GB6HBNH2.js} +2 -2
  76. package/dist/cli/chunks/{chunk-IETBWYHW.js → chunk-GHM6MQNK.js} +2 -2
  77. package/dist/cli/chunks/{chunk-QWG3SILX.js → chunk-GHY6Z6KO.js} +5 -5
  78. package/dist/cli/chunks/{chunk-AJEXPFAB.js → chunk-GII6UM3F.js} +1 -1
  79. package/dist/cli/chunks/{chunk-SDRJJUPO.js → chunk-GU5HNCWI.js} +1 -1
  80. package/dist/cli/chunks/{chunk-ULCW6IVQ.js → chunk-H4GG2NLO.js} +2 -2
  81. package/dist/cli/chunks/{chunk-7TA5MUPW.js → chunk-H4H2YSFH.js} +1 -1
  82. package/dist/cli/chunks/{chunk-5A66EGEW.js → chunk-HD7YIFOI.js} +2 -2
  83. package/dist/cli/chunks/{chunk-CDA5Z74H.js → chunk-HOAJUIBQ.js} +2 -2
  84. package/dist/cli/chunks/{chunk-4KUOYDY2.js → chunk-HQZGPJYG.js} +2 -2
  85. package/dist/cli/chunks/{chunk-G3AABG4Q.js → chunk-HZ5NXFXH.js} +2 -2
  86. package/dist/cli/chunks/{chunk-U6IXYQO4.js → chunk-I3C7JOXC.js} +2 -2
  87. package/dist/cli/chunks/{chunk-MAJXZYGK.js → chunk-IC3TQEOA.js} +1 -1
  88. package/dist/cli/chunks/{chunk-RYHG3I7J.js → chunk-IJUHSJ2U.js} +2 -2
  89. package/dist/cli/chunks/{chunk-DZGPUGUG.js → chunk-J2ZIFFM6.js} +2 -2
  90. package/dist/cli/chunks/{chunk-NA3F6FEO.js → chunk-JGZ722G3.js} +2 -2
  91. package/dist/cli/chunks/{chunk-PX5OPXY6.js → chunk-JQGMW45H.js} +1 -1
  92. package/dist/cli/chunks/{chunk-WGTEZT7G.js → chunk-JRRXCODW.js} +2 -2
  93. package/dist/cli/chunks/{chunk-4Y6OEBJZ.js → chunk-K3TLLJMX.js} +1 -1
  94. package/dist/cli/chunks/{chunk-RCOLPF3B.js → chunk-K4CZA77U.js} +2 -2
  95. package/dist/cli/chunks/{chunk-YIDAXOUX.js → chunk-K65CGKLD.js} +2 -2
  96. package/dist/cli/chunks/{chunk-5ADXFUMO.js → chunk-KADFXPPN.js} +2 -2
  97. package/dist/cli/chunks/{chunk-P5E26N2X.js → chunk-KB56CPU4.js} +2 -2
  98. package/dist/cli/chunks/{chunk-YLKIXEPP.js → chunk-KCW47QR5.js} +1 -1
  99. package/dist/cli/chunks/{chunk-SPC4RBLF.js → chunk-KDNJ4F3P.js} +2 -2
  100. package/dist/cli/chunks/{chunk-P7UFJ6DO.js → chunk-KDVZND5Q.js} +1 -1
  101. package/dist/cli/chunks/{chunk-TLRHAMX5.js → chunk-KUAKV3IW.js} +1 -1
  102. package/dist/cli/chunks/{chunk-ZROAMFX2.js → chunk-KV4T4MXK.js} +2 -2
  103. package/dist/cli/chunks/{chunk-UZED4YZ5.js → chunk-KWYH3FI4.js} +1 -1
  104. package/dist/cli/chunks/{chunk-33I2ZP6E.js → chunk-LFJALJOA.js} +2 -2
  105. package/dist/cli/chunks/{chunk-TXEUVUMO.js → chunk-LL7LDPXS.js} +1 -1
  106. package/dist/cli/chunks/{chunk-W5HQIYQU.js → chunk-LUZNKJE6.js} +3 -3
  107. package/dist/cli/chunks/{chunk-GKFV6CUD.js → chunk-LWR3FV3Y.js} +2 -2
  108. package/dist/cli/chunks/{chunk-TVA5GRIU.js → chunk-LZYQHVD4.js} +2 -2
  109. package/dist/cli/chunks/{chunk-2JYUA27M.js → chunk-M6AAGIG7.js} +1 -1
  110. package/dist/cli/chunks/{chunk-PT2NXS43.js → chunk-MAMQA43L.js} +1 -1
  111. package/dist/cli/chunks/chunk-MB46UBGY.js +3 -0
  112. package/dist/cli/chunks/{chunk-ZPVGX4DI.js → chunk-MFW5HSG4.js} +2 -2
  113. package/dist/cli/chunks/{chunk-47RMGDG4.js → chunk-MGZ5FJUW.js} +2 -2
  114. package/dist/cli/chunks/{chunk-G24SWTAX.js → chunk-MVVB7C2E.js} +410 -410
  115. package/dist/cli/chunks/{chunk-XZOYKB22.js → chunk-N4CYAKOX.js} +2 -2
  116. package/dist/cli/chunks/{chunk-QCPVUNN3.js → chunk-NT4DBXSX.js} +2 -2
  117. package/dist/cli/chunks/{chunk-3EWQN37E.js → chunk-NU3W5WFT.js} +2 -2
  118. package/dist/cli/chunks/{chunk-VZBC6DP7.js → chunk-NURIILUB.js} +1 -1
  119. package/dist/cli/chunks/{chunk-6E6HB4N4.js → chunk-NW7IBHJA.js} +4 -4
  120. package/dist/cli/chunks/{chunk-K3A3NWT3.js → chunk-NZ3GUMB2.js} +2 -2
  121. package/dist/cli/chunks/{chunk-GJKZ7UQO.js → chunk-NZD4DPSU.js} +2 -2
  122. package/dist/cli/chunks/{chunk-7QEUHNKO.js → chunk-O6FGXMHD.js} +1 -1
  123. package/dist/cli/chunks/{chunk-YVJEUX3I.js → chunk-OCAEXYFA.js} +2 -2
  124. package/dist/cli/chunks/{chunk-BOSMELJX.js → chunk-OFACHK5O.js} +2 -2
  125. package/dist/cli/chunks/{chunk-PGSJBXTD.js → chunk-P7A4NKTZ.js} +2 -2
  126. package/dist/cli/chunks/{chunk-HSA5IGGW.js → chunk-PB6J6HAA.js} +2 -2
  127. package/dist/cli/chunks/{chunk-TGMXUZZC.js → chunk-PHP5UBT4.js} +2 -2
  128. package/dist/cli/chunks/{chunk-NV74SICL.js → chunk-PIDQVU3L.js} +2 -2
  129. package/dist/cli/chunks/{chunk-TSOQ2QLT.js → chunk-PSFSPGUD.js} +2 -2
  130. package/dist/cli/chunks/{chunk-4A76VPU4.js → chunk-PT4FMJPQ.js} +2 -2
  131. package/dist/cli/chunks/{chunk-U7ZHDGXG.js → chunk-Q3UDLV5Z.js} +1 -1
  132. package/dist/cli/chunks/{chunk-BYRCB5JT.js → chunk-QDEJ4CI2.js} +2 -2
  133. package/dist/cli/chunks/{chunk-CA5UNWQF.js → chunk-QPNG5ZN2.js} +2 -2
  134. package/dist/cli/chunks/{chunk-W7H55PY4.js → chunk-R7SYRCRP.js} +1 -1
  135. package/dist/cli/chunks/{chunk-4LWMAAWK.js → chunk-RF7HWBHN.js} +2 -2
  136. package/dist/cli/chunks/{chunk-MMEALJ4D.js → chunk-RFNW2LGD.js} +2 -2
  137. package/dist/cli/chunks/{chunk-UCSK2RMI.js → chunk-S5AZCIZS.js} +2 -2
  138. package/dist/cli/chunks/{chunk-JW5PDJ5O.js → chunk-SE4VNN4I.js} +3 -3
  139. package/dist/cli/chunks/{chunk-URSTP3WI.js → chunk-SG3NX7QE.js} +2 -2
  140. package/dist/cli/chunks/{chunk-N7O3PF6Y.js → chunk-SSU73QAX.js} +2 -2
  141. package/dist/cli/chunks/{chunk-7DNR4KKR.js → chunk-SVLQRAMF.js} +1 -1
  142. package/dist/cli/chunks/{chunk-BC4T6SCV.js → chunk-SYV2V3PL.js} +4 -4
  143. package/dist/cli/chunks/{chunk-4CB3QPZM.js → chunk-T3PGQFDI.js} +2 -2
  144. package/dist/cli/chunks/{chunk-OHVYINGM.js → chunk-TCBBNUBP.js} +3 -3
  145. package/dist/cli/chunks/{chunk-YWWMNTBF.js → chunk-TOQWL2ZF.js} +2 -2
  146. package/dist/cli/chunks/{chunk-SITL5YZV.js → chunk-TSQC2KKZ.js} +2 -2
  147. package/dist/cli/chunks/{chunk-YUA6ZKKY.js → chunk-TWDW32W2.js} +2 -2
  148. package/dist/cli/chunks/{chunk-SUX5XB2Z.js → chunk-TWJTK4CC.js} +2 -2
  149. package/dist/cli/chunks/{chunk-32UTHIY5.js → chunk-U2FUXDDJ.js} +3 -3
  150. package/dist/cli/chunks/{chunk-ENGL7FIJ.js → chunk-UDQSYWVF.js} +1 -1
  151. package/dist/cli/chunks/{chunk-7OEFBWAG.js → chunk-UOC3O6RP.js} +2 -2
  152. package/dist/cli/chunks/chunk-UT2VZ33P.js +2 -0
  153. package/dist/cli/chunks/{chunk-MYF5CNGV.js → chunk-UTRV7T2N.js} +2 -2
  154. package/dist/cli/chunks/{chunk-KJDI5CHX.js → chunk-UXZSUMEA.js} +2 -2
  155. package/dist/cli/chunks/{chunk-DAUEK66C.js → chunk-VRHRBAEM.js} +1 -1
  156. package/dist/cli/chunks/{chunk-FZJCBSN4.js → chunk-VRVMIPTM.js} +2 -2
  157. package/dist/cli/chunks/{chunk-26672ISV.js → chunk-VTDFVFST.js} +2 -2
  158. package/dist/cli/chunks/{chunk-WTAUF6O4.js → chunk-VTOBUZL6.js} +2 -2
  159. package/dist/cli/chunks/{chunk-4PU5GTZW.js → chunk-VU5TBX2V.js} +2 -2
  160. package/dist/cli/chunks/{chunk-C3YOVASQ.js → chunk-W26B7ERY.js} +1 -1
  161. package/dist/cli/chunks/{chunk-CPIBIR3X.js → chunk-W2QWSQVE.js} +2 -2
  162. package/dist/cli/chunks/{chunk-L3PV7VXK.js → chunk-W3INMZZ6.js} +1 -1
  163. package/dist/cli/chunks/{chunk-5Z23ZMXZ.js → chunk-W3PPFHI5.js} +54 -54
  164. package/dist/cli/chunks/{chunk-NVRYELCY.js → chunk-WKGTGOYS.js} +3 -3
  165. package/dist/cli/chunks/{chunk-35NW676P.js → chunk-WNQS4WTS.js} +2 -2
  166. package/dist/cli/chunks/{chunk-O3IM4WRZ.js → chunk-WO274FRI.js} +2 -2
  167. package/dist/cli/chunks/{chunk-35MIUSXQ.js → chunk-WOCGL4QP.js} +2 -2
  168. package/dist/cli/chunks/{chunk-EF6OERRR.js → chunk-WQL7WCIZ.js} +1 -1
  169. package/dist/cli/chunks/{chunk-INZARYUD.js → chunk-X2Z7F4EU.js} +2 -2
  170. package/dist/cli/chunks/{chunk-2E2QO44T.js → chunk-X7N2JF2X.js} +2 -2
  171. package/dist/cli/chunks/{chunk-2IVE5AR3.js → chunk-XEAEYC6Y.js} +1 -1
  172. package/dist/cli/chunks/{chunk-IPA7K556.js → chunk-XNBOGCF3.js} +2 -2
  173. package/dist/cli/chunks/{chunk-A2JCRXTK.js → chunk-XPRVF4YE.js} +2 -2
  174. package/dist/cli/chunks/{chunk-VUR5THML.js → chunk-YBQH2VOP.js} +2 -2
  175. package/dist/cli/chunks/{chunk-A5Y7DAVQ.js → chunk-YQFLQE53.js} +2 -2
  176. package/dist/cli/chunks/{chunk-JGIJPDGD.js → chunk-YSZ5OE3Z.js} +2 -2
  177. package/dist/cli/chunks/{chunk-JNXK47OL.js → chunk-YXRASAPI.js} +2 -2
  178. package/dist/cli/chunks/{chunk-MYUMJ2ZI.js → chunk-YZEXYO4W.js} +1 -1
  179. package/dist/cli/chunks/{chunk-NNBQZR73.js → chunk-YZWBNBTW.js} +2 -2
  180. package/dist/cli/chunks/{chunk-WDEXOLK2.js → chunk-ZAKQLAHT.js} +1 -1
  181. package/dist/cli/chunks/{ci-BZNWW3I3.js → ci-ENOASTYB.js} +2 -2
  182. package/dist/cli/chunks/{ci-config-LOHNXOKV.js → ci-config-B26OXHQM.js} +2 -2
  183. package/dist/cli/chunks/{ci-output-LCOQBSJL.js → ci-output-JTCLLNOQ.js} +2 -2
  184. package/dist/cli/chunks/{circuit-breaker-7LRXTLFE.js → circuit-breaker-23JMFNM5.js} +2 -2
  185. package/dist/cli/chunks/{claude-flow-setup-HBU4VWC3.js → claude-flow-setup-ON6L462G.js} +2 -2
  186. package/dist/cli/chunks/client-TV3V2YZ5.js +2 -0
  187. package/dist/cli/chunks/{cline-installer-CO6MLH6X.js → cline-installer-OWQ4D2FQ.js} +2 -2
  188. package/dist/cli/chunks/{code-SIXBS6JM.js → code-2ZRL7SEU.js} +19 -18
  189. package/dist/cli/chunks/{code-index-extractor-GWJKZ2IQ.js → code-index-extractor-JXSQVM67.js} +2 -2
  190. package/dist/cli/chunks/{codex-installer-6NINVWXJ.js → codex-installer-7LXZYBSQ.js} +2 -2
  191. package/dist/cli/chunks/{completions-7VIX3GML.js → completions-C2LR623C.js} +2 -2
  192. package/dist/cli/chunks/{complexity-analyzer-FBQR6ZP2.js → complexity-analyzer-TGQLHCYJ.js} +2 -2
  193. package/dist/cli/chunks/{continuedev-installer-VA7RIXW5.js → continuedev-installer-RUGD24D2.js} +2 -2
  194. package/dist/cli/chunks/{copilot-installer-4QEBC4MU.js → copilot-installer-ZLFVLEJP.js} +2 -2
  195. package/dist/cli/chunks/core-handlers-PZT4OLWR.js +2 -0
  196. package/dist/cli/chunks/{cost-tracker-GRYKHPWL.js → cost-tracker-RT4QL745.js} +2 -2
  197. package/dist/cli/chunks/{coverage-USPMNKOU.js → coverage-NV3C4IMM.js} +3 -3
  198. package/dist/cli/chunks/cross-domain-router-QOFCZ7G4.js +2 -0
  199. package/dist/cli/chunks/{cursor-installer-ZXIPSZVH.js → cursor-installer-LJKLNFF6.js} +2 -2
  200. package/dist/cli/chunks/{daemon-D7F3RGI5.js → daemon-BMDXCQT5.js} +3 -3
  201. package/dist/cli/chunks/{daemon-N2VRHPSJ.js → daemon-FBH3IRYN.js} +4 -4
  202. package/dist/cli/chunks/{dag-attention-scheduler-NL6BA7BY.js → dag-attention-scheduler-JGDED55I.js} +2 -2
  203. package/dist/cli/chunks/{detect-XC2HCIIT.js → detect-SZIHIVCJ.js} +2 -2
  204. package/dist/cli/chunks/{dist-node-A3Y26MEI.js → dist-node-FV3KWXQ6.js} +2 -2
  205. package/dist/cli/chunks/{domain-handler-WV6SFXRB.js → domain-handler-GI5JWQOV.js} +2 -2
  206. package/dist/cli/chunks/{domain-plugins-KJIF6Z2B.js → domain-plugins-BUWY36TL.js} +2 -2
  207. package/dist/cli/chunks/domain-transfer-GCY7W5DA.js +2 -0
  208. package/dist/cli/chunks/dream-TRFBGDSQ.js +2 -0
  209. package/dist/cli/chunks/{embed-and-insert-pattern-PA3Y4KGO.js → embed-and-insert-pattern-GPRR3ZGD.js} +2 -2
  210. package/dist/cli/chunks/{eval-YGEZNUVE.js → eval-XPB3IGAP.js} +2 -2
  211. package/dist/cli/chunks/{experience-capture-middleware-D4T7NW6B.js → experience-capture-middleware-2E554UB3.js} +3 -3
  212. package/dist/cli/chunks/{fast-paths-6JYK7RYQ.js → fast-paths-ZSMWZPUC.js} +2 -2
  213. package/dist/cli/chunks/{feature-flags-RBH2GDSR.js → feature-flags-GIWVDVVC.js} +2 -2
  214. package/dist/cli/chunks/{feature-flags-DKXMDVPE.js → feature-flags-N7EOGE5P.js} +2 -2
  215. package/dist/cli/chunks/file-discovery-WCKGMSPZ.js +2 -0
  216. package/dist/cli/chunks/fleet-HCHDOUCX.js +44 -0
  217. package/dist/cli/chunks/{gnn-wrapper-MV54UC4C.js → gnn-wrapper-CZNCNXXZ.js} +2 -2
  218. package/dist/cli/chunks/{heartbeat-handler-7DKMVQQH.js → heartbeat-handler-6YUIF2YQ.js} +4 -4
  219. package/dist/cli/chunks/heartbeat-scheduler-P44A2OX3.js +2 -0
  220. package/dist/cli/chunks/hnsw-adapter-ZJQIQJKC.js +2 -0
  221. package/dist/cli/chunks/hnsw-index-HMG2GH3Z.js +2 -0
  222. package/dist/cli/chunks/{hnsw-legacy-bridge-6IWREDQC.js → hnsw-legacy-bridge-J3M3IK24.js} +2 -2
  223. package/dist/cli/chunks/{hnswlib-node-5BIESSCK.js → hnswlib-node-ULGTGDZW.js} +2 -2
  224. package/dist/cli/chunks/{hooks-3EETRM62.js → hooks-C4BUGYUQ.js} +10 -10
  225. package/dist/cli/chunks/hybrid-backend-B7M74PZG.js +2 -0
  226. package/dist/cli/chunks/{hypergraph-engine-RSWCB2D3.js → hypergraph-engine-WINGVMPG.js} +2 -2
  227. package/dist/cli/chunks/{hypergraph-handler-552LXKL3.js → hypergraph-handler-GADMWKAU.js} +3 -3
  228. package/dist/cli/chunks/impact-analyzer-PZYOVKQO.js +2 -0
  229. package/dist/cli/chunks/{init-guard-OTDBJ5HD.js → init-guard-K2T4QWAO.js} +2 -2
  230. package/dist/cli/chunks/{init-handler-3FK3TKEA.js → init-handler-PCZTDZYI.js} +6 -6
  231. package/dist/cli/chunks/init-wizard-TZDJQK3U.js +2 -0
  232. package/dist/cli/chunks/kernel-Y6RRIOKW.js +2 -0
  233. package/dist/cli/chunks/{kilocode-installer-KZ2O4LF3.js → kilocode-installer-XENXNEIU.js} +2 -2
  234. package/dist/cli/chunks/{kiro-installer-MLCCXRF7.js → kiro-installer-3PG2TJ67.js} +2 -2
  235. package/dist/cli/chunks/knowledge-graph-BVD5Z66M.js +2 -0
  236. package/dist/cli/chunks/{learning-QUCMBD77.js → learning-6KDH7FK4.js} +3 -3
  237. package/dist/cli/chunks/{llm-router-PDEV3UP2.js → llm-router-RKVDEWU2.js} +4 -4
  238. package/dist/cli/chunks/llm-router-service-KHCAMSUU.js +2 -0
  239. package/dist/cli/chunks/{load-XFVVLO7E.js → load-ITHC564X.js} +2 -2
  240. package/dist/cli/chunks/load-test-RUF7DZA5.js +2 -0
  241. package/dist/cli/chunks/{mcp-74G3CL2S.js → mcp-TCL5UW3N.js} +2 -2
  242. package/dist/cli/chunks/{memory-XIFM6JNX.js → memory-BKDAY2N2.js} +5 -5
  243. package/dist/cli/chunks/memory-backend-7ZLFOVGG.js +2 -0
  244. package/dist/cli/chunks/{memory-handlers-ZCKURV6S.js → memory-handlers-WN4FXFOA.js} +2 -2
  245. package/dist/cli/chunks/{multi-model-executor-7L4W3O2Q.js → multi-model-executor-VHAT7ZPF.js} +2 -2
  246. package/dist/cli/chunks/{opencode-installer-BPG422LF.js → opencode-installer-E3VM3EEY.js} +2 -2
  247. package/dist/cli/chunks/{orchestrator-OEAFLAEV.js → orchestrator-BMQ6X762.js} +5 -5
  248. package/dist/cli/chunks/pattern-null-store-RY6CVYHP.js +2 -0
  249. package/dist/cli/chunks/{pattern-usage-recorder-LOPNCULT.js → pattern-usage-recorder-GOOR2BV5.js} +2 -2
  250. package/dist/cli/chunks/{pipeline-VWTYUZB7.js → pipeline-5NSFQQIX.js} +2 -2
  251. package/dist/cli/chunks/{platform-WFJJ3X2E.js → platform-SQM34J5G.js} +2 -2
  252. package/dist/cli/chunks/{plugin-744TPUSG.js → plugin-UQJZRMZG.js} +2 -2
  253. package/dist/cli/chunks/{prime-radiant-advanced-wasm-BD5BLNDR.js → prime-radiant-advanced-wasm-WMDJOL4S.js} +2 -2
  254. package/dist/cli/chunks/project-root-IO5KRNGL.js +2 -0
  255. package/dist/cli/chunks/protocol-executor-U2CUDWDE.js +2 -0
  256. package/dist/cli/chunks/{protocol-handler-JIBILI74.js → protocol-handler-OBDCVY6X.js} +2 -2
  257. package/dist/cli/chunks/{prove-MNOL5FYW.js → prove-XDC7I4XT.js} +2 -2
  258. package/dist/cli/chunks/qe-reasoning-bank-DQSSX2IP.js +2 -0
  259. package/dist/cli/chunks/{quality-JEGBDGGX.js → quality-L4GQ6WX4.js} +2 -2
  260. package/dist/cli/chunks/{quality-gate-SYJ6ROMI.js → quality-gate-MJG66LKN.js} +3 -3
  261. package/dist/cli/chunks/queen-coordinator-6FN4BZIX.js +2 -0
  262. package/dist/cli/chunks/{real-embeddings-ZWXS5ZFV.js → real-embeddings-HW4G2LWL.js} +2 -2
  263. package/dist/cli/chunks/{ref-validation-RRHUFW2N.js → ref-validation-FC7JOJ2C.js} +2 -2
  264. package/dist/cli/chunks/{roocode-installer-XFO6JSVN.js → roocode-installer-KWS4CEIC.js} +2 -2
  265. package/dist/cli/chunks/router-YUO3I7RU.js +2 -0
  266. package/dist/cli/chunks/routing-feedback-36SLQGJE.js +2 -0
  267. package/dist/cli/chunks/{routing-handler-L2K3JASE.js → routing-handler-QF4WVB2S.js} +2 -2
  268. package/dist/cli/chunks/{ruvector-commands-A6CINHGM.js → ruvector-commands-2MTCOUK6.js} +2 -2
  269. package/dist/cli/chunks/rvf-dual-writer-FRYZH3WZ.js +2 -0
  270. package/dist/cli/chunks/rvf-migration-adapter-XXNITL5I.js +2 -0
  271. package/dist/cli/chunks/{rvf-migration-coordinator-T4RY7L53.js → rvf-migration-coordinator-BREJCXWN.js} +2 -2
  272. package/dist/cli/chunks/rvf-native-adapter-D2WWKJIV.js +2 -0
  273. package/dist/cli/chunks/{rvf-store-integrity-IR33TGQS.js → rvf-store-integrity-KKC6HOJD.js} +2 -2
  274. package/dist/cli/chunks/safe-db-4RRIGRXD.js +2 -0
  275. package/dist/cli/chunks/schedule-25RTO4DQ.js +2 -0
  276. package/dist/cli/chunks/scheduler-BPIOJZ5P.js +2 -0
  277. package/dist/cli/chunks/{security-Z5GDE2IH.js → security-OSAE7VAP.js} +3 -3
  278. package/dist/cli/chunks/{shared-rvf-adapter-SIZMEHPM.js → shared-rvf-adapter-COUOS665.js} +2 -2
  279. package/dist/cli/chunks/{shared-rvf-dual-writer-HLM65RDS.js → shared-rvf-dual-writer-YXMPZKQE.js} +2 -2
  280. package/dist/cli/chunks/sqlite-persistence-EDF47DDX.js +2 -0
  281. package/dist/cli/chunks/{standalone-memory-SKSZG7P5.js → standalone-memory-E6JBMOIL.js} +2 -2
  282. package/dist/cli/chunks/{status-handler-766YOOMJ.js → status-handler-AFTCIYIX.js} +2 -2
  283. package/dist/cli/chunks/{structural-health-M45FNOLT.js → structural-health-2FROCEI4.js} +2 -2
  284. package/dist/cli/chunks/{sync-B2U366I3.js → sync-VAYTOWDC.js} +2 -2
  285. package/dist/cli/chunks/{sync-6CJ24B5T.js → sync-YIQYOFGW.js} +2 -2
  286. package/dist/cli/chunks/task-handler-KVQHDEX3.js +62 -0
  287. package/dist/cli/chunks/task-handlers-MVVECQA6.js +9 -0
  288. package/dist/cli/chunks/{test-TODH7KRF.js → test-5JSVTOMY.js} +4 -4
  289. package/dist/cli/chunks/test-runner-process-LEPF2OSS.js +2 -0
  290. package/dist/cli/chunks/{test-scheduling-VMVMVRHT.js → test-scheduling-HBOHVLI3.js} +3 -3
  291. package/dist/cli/chunks/{token-bootstrap-XQW7BMCK.js → token-bootstrap-5VEPTPFA.js} +2 -2
  292. package/dist/cli/chunks/{token-usage-JCZEIRKO.js → token-usage-TBJHDLY6.js} +2 -2
  293. package/dist/cli/chunks/{transformers-U2ML3OHE.js → transformers-VAWYMHMZ.js} +2 -2
  294. package/dist/cli/chunks/tree-sitter-wasm-parser-TSZTCMFV.js +2 -0
  295. package/dist/cli/chunks/{types-GGEPCHP6.js → types-R5SDZU2E.js} +2 -2
  296. package/dist/cli/chunks/unified-memory-TLGSSLMI.js +2 -0
  297. package/dist/cli/chunks/unified-memory-hnsw-MSUR7ZOO.js +2 -0
  298. package/dist/cli/chunks/unified-persistence-VFFOTWK7.js +2 -0
  299. package/dist/cli/chunks/{upgrade-T5GRM7HS.js → upgrade-K5PIHXRB.js} +2 -2
  300. package/dist/cli/chunks/{validate-XMUJPLP3.js → validate-RPTS7RYJ.js} +2 -2
  301. package/dist/cli/chunks/{validate-swarm-KJLF7JEH.js → validate-swarm-B2ZL556X.js} +2 -2
  302. package/dist/cli/chunks/visual-security-6Q44XNLB.js +2 -0
  303. package/dist/cli/chunks/{web-tree-sitter-LOHVZ7G5.js → web-tree-sitter-K4DUJC32.js} +2 -2
  304. package/dist/cli/chunks/{windsurf-installer-33FBTXJU.js → windsurf-installer-OK2AJN35.js} +2 -2
  305. package/dist/cli/chunks/witness-chain-KDOMXDQX.js +2 -0
  306. package/dist/cli/chunks/witness-chain-N3OY2RMH.js +2 -0
  307. package/dist/cli/chunks/{witness-chain-repair-VWBO4NXE.js → witness-chain-repair-L6Y5RFXR.js} +2 -2
  308. package/dist/cli/chunks/{witness-chain-verifier-BHJ3ZAEK.js → witness-chain-verifier-N4CW7FZX.js} +2 -2
  309. package/dist/cli/chunks/{witness-key-manager-WNVPH2Z3.js → witness-key-manager-TDNPS3WD.js} +2 -2
  310. package/dist/cli/chunks/{workflow-6QR5MQTO.js → workflow-XRZA3YCY.js} +4 -4
  311. package/dist/cli/chunks/workflow-orchestrator-CVNNT2RJ.js +2 -0
  312. package/dist/cli/chunks/{wrappers-EHOL62TS.js → wrappers-5JIFWKN6.js} +2 -2
  313. package/dist/cli/commands/code.js +6 -0
  314. package/dist/cli/commands/fleet-run.d.ts +12 -0
  315. package/dist/cli/commands/fleet-run.js +175 -0
  316. package/dist/cli/commands/fleet.js +2 -117
  317. package/dist/cli/handlers/task-handler.d.ts +5 -0
  318. package/dist/cli/handlers/task-handler.js +20 -0
  319. package/dist/cli/utils/fleet-operation.d.ts +5 -2
  320. package/dist/cli/utils/fleet-operation.js +13 -2
  321. package/dist/cli/utils/fleet-result.d.ts +16 -2
  322. package/dist/cli/utils/fleet-result.js +26 -21
  323. package/dist/cli/utils/fleet-shard.d.ts +36 -0
  324. package/dist/cli/utils/fleet-shard.js +110 -0
  325. package/dist/coordination/handlers/code-intelligence-handlers.js +21 -1
  326. package/dist/coordination/handlers/handler-types.d.ts +2 -2
  327. package/dist/coordination/handlers/handler-utils.d.ts +6 -0
  328. package/dist/coordination/handlers/handler-utils.js +14 -4
  329. package/dist/coordination/handlers/misc-handlers.js +5 -2
  330. package/dist/coordination/handlers/quality-handlers.js +2 -2
  331. package/dist/coordination/handlers/security-handlers.js +12 -2
  332. package/dist/coordination/protocols/security-audit.js +11 -1
  333. package/dist/coordination/task-executor.js +7 -2
  334. package/dist/domains/code-intelligence/coordinator-gnn.d.ts +2 -16
  335. package/dist/domains/code-intelligence/coordinator-gnn.js +1 -62
  336. package/dist/domains/code-intelligence/coordinator.d.ts +12 -6
  337. package/dist/domains/code-intelligence/coordinator.js +24 -27
  338. package/dist/domains/code-intelligence/interfaces.d.ts +9 -0
  339. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +43 -5
  340. package/dist/domains/code-intelligence/services/semantic-analyzer.js +134 -71
  341. package/dist/domains/coverage-analysis/collected-metrics.d.ts +10 -0
  342. package/dist/domains/coverage-analysis/collected-metrics.js +29 -0
  343. package/dist/domains/coverage-analysis/services/coverage-analyzer.js +11 -3
  344. package/dist/domains/coverage-analysis/services/coverage-parser.d.ts +2 -0
  345. package/dist/domains/coverage-analysis/services/coverage-parser.js +18 -2
  346. package/dist/domains/quality-assessment/coherence/gate-controller.js +16 -4
  347. package/dist/domains/quality-assessment/coherence/lambda-calculator.d.ts +8 -0
  348. package/dist/domains/quality-assessment/coherence/lambda-calculator.js +57 -14
  349. package/dist/domains/quality-assessment/coherence/types.d.ts +12 -7
  350. package/dist/domains/quality-assessment/coordinator-gate-evaluation.js +3 -1
  351. package/dist/domains/quality-assessment/coordinator-reports.d.ts +30 -10
  352. package/dist/domains/quality-assessment/coordinator-reports.js +93 -57
  353. package/dist/domains/quality-assessment/coordinator.d.ts +14 -40
  354. package/dist/domains/quality-assessment/coordinator.js +10 -4
  355. package/dist/domains/quality-assessment/interfaces.d.ts +2 -0
  356. package/dist/domains/quality-assessment/services/coherence-gate.js +15 -2
  357. package/dist/domains/quality-assessment/services/quality-gate.js +6 -4
  358. package/dist/domains/security-compliance/index.d.ts +1 -1
  359. package/dist/domains/security-compliance/interfaces.d.ts +46 -5
  360. package/dist/domains/security-compliance/services/scanners/dast-auth-testing.d.ts +3 -3
  361. package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +15 -14
  362. package/dist/domains/security-compliance/services/scanners/dast-helpers.d.ts +8 -9
  363. package/dist/domains/security-compliance/services/scanners/dast-helpers.js +19 -44
  364. package/dist/domains/security-compliance/services/scanners/dast-injection-testing.d.ts +3 -3
  365. package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +13 -9
  366. package/dist/domains/security-compliance/services/scanners/dast-requests.d.ts +54 -0
  367. package/dist/domains/security-compliance/services/scanners/dast-requests.js +125 -0
  368. package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +5 -1
  369. package/dist/domains/security-compliance/services/scanners/dast-scanner.js +125 -155
  370. package/dist/domains/security-compliance/services/scanners/index.d.ts +1 -1
  371. package/dist/domains/security-compliance/services/scanners/index.js +1 -1
  372. package/dist/domains/security-compliance/services/scanners/scanner-types.d.ts +2 -2
  373. package/dist/domains/security-compliance/services/security-auditor-dast.js +183 -212
  374. package/dist/domains/security-compliance/services/security-auditor-reports.js +5 -1
  375. package/dist/domains/security-compliance/services/security-auditor.d.ts +11 -3
  376. package/dist/domains/security-compliance/services/security-auditor.js +106 -65
  377. package/dist/domains/test-execution/coordinator.d.ts +2 -1
  378. package/dist/domains/test-execution/coordinator.js +33 -27
  379. package/dist/domains/test-execution/interfaces.d.ts +5 -0
  380. package/dist/domains/test-execution/services/test-executor.d.ts +6 -0
  381. package/dist/domains/test-execution/services/test-executor.js +16 -4
  382. package/dist/domains/visual-accessibility/coordinator.js +34 -9
  383. package/dist/domains/visual-accessibility/interfaces.d.ts +27 -0
  384. package/dist/domains/visual-accessibility/plugin.js +5 -0
  385. package/dist/domains/visual-accessibility/services/accessibility-tester-heuristics.d.ts +13 -21
  386. package/dist/domains/visual-accessibility/services/accessibility-tester-heuristics.js +13 -297
  387. package/dist/domains/visual-accessibility/services/accessibility-tester.d.ts +13 -5
  388. package/dist/domains/visual-accessibility/services/accessibility-tester.js +96 -73
  389. package/dist/integrations/embeddings/index/HNSWIndex.js +8 -4
  390. package/dist/integrations/ruvector/transfer-coherence-stub.js +5 -10
  391. package/dist/mcp/bundle.js +480 -480
  392. package/dist/mcp/handlers/domain-handler-configs.d.ts +8 -0
  393. package/dist/mcp/handlers/domain-handler-configs.js +9 -2
  394. package/dist/mcp/handlers/handler-factory.js +3 -0
  395. package/dist/mcp/handlers/model-route-handlers.d.ts +107 -0
  396. package/dist/mcp/handlers/model-route-handlers.js +139 -0
  397. package/dist/mcp/handlers/orchestrate-routes.js +41 -3
  398. package/dist/mcp/handlers/task-handlers.d.ts +3 -251
  399. package/dist/mcp/handlers/task-handlers.js +6 -828
  400. package/dist/mcp/handlers/task-inference.d.ts +26 -0
  401. package/dist/mcp/handlers/task-inference.js +156 -0
  402. package/dist/mcp/handlers/task-learning-handlers.d.ts +92 -0
  403. package/dist/mcp/handlers/task-learning-handlers.js +230 -0
  404. package/dist/mcp/handlers/task-orchestrate-handler.d.ts +73 -0
  405. package/dist/mcp/handlers/task-orchestrate-handler.js +361 -0
  406. package/dist/mcp/protocol-server.js +12 -2
  407. package/dist/mcp/tools/code-intelligence/analyze.js +3 -6
  408. package/dist/mcp/tools/coverage-analysis/index.d.ts +4 -0
  409. package/dist/mcp/tools/coverage-analysis/index.js +8 -2
  410. package/dist/mcp/tools/visual-accessibility/index.d.ts +7 -0
  411. package/dist/mcp/tools/visual-accessibility/index.js +29 -13
  412. package/dist/shared/events/domain-events.d.ts +2 -0
  413. package/dist/shared/metrics/code-metrics.js +21 -3
  414. package/dist/shared/parsers/typescript-parser.d.ts +6 -0
  415. package/dist/shared/parsers/typescript-parser.js +13 -1
  416. package/package.json +1 -1
  417. package/dist/cli/chunks/adapter-HL7MOCQN.js +0 -2
  418. package/dist/cli/chunks/aqe-learning-engine-OZ2DXB4G.js +0 -2
  419. package/dist/cli/chunks/base-WIM7G3HC.js +0 -2
  420. package/dist/cli/chunks/browser-workflow-QRKCFVR3.js +0 -2
  421. package/dist/cli/chunks/chunk-QSGEBCDB.js +0 -62
  422. package/dist/cli/chunks/chunk-UJNGGFGX.js +0 -2
  423. package/dist/cli/chunks/chunk-VXVTFKRA.js +0 -2
  424. package/dist/cli/chunks/chunk-XCNSGSKV.js +0 -3
  425. package/dist/cli/chunks/client-4PNYDFYS.js +0 -2
  426. package/dist/cli/chunks/core-handlers-ODO6LUWQ.js +0 -2
  427. package/dist/cli/chunks/cross-domain-router-DT4MHJKK.js +0 -2
  428. package/dist/cli/chunks/domain-transfer-L3F6AES2.js +0 -2
  429. package/dist/cli/chunks/dream-QOB3JCOM.js +0 -2
  430. package/dist/cli/chunks/file-discovery-BN76S2PR.js +0 -2
  431. package/dist/cli/chunks/fleet-43YMXACN.js +0 -46
  432. package/dist/cli/chunks/heartbeat-scheduler-3NNP4WCP.js +0 -2
  433. package/dist/cli/chunks/hnsw-adapter-MZR7Y4WF.js +0 -2
  434. package/dist/cli/chunks/hnsw-index-HE4AX22U.js +0 -2
  435. package/dist/cli/chunks/hybrid-backend-IHUHB3Y2.js +0 -2
  436. package/dist/cli/chunks/impact-analyzer-FI6GI6PD.js +0 -2
  437. package/dist/cli/chunks/init-wizard-WLQKH5Y5.js +0 -2
  438. package/dist/cli/chunks/kernel-2WZOQEZS.js +0 -2
  439. package/dist/cli/chunks/knowledge-graph-G3LVKK6P.js +0 -2
  440. package/dist/cli/chunks/llm-router-service-MM75HKWJ.js +0 -2
  441. package/dist/cli/chunks/load-test-BEWEE44J.js +0 -2
  442. package/dist/cli/chunks/memory-backend-NYKBBKZR.js +0 -2
  443. package/dist/cli/chunks/pattern-null-store-QGPUIV6M.js +0 -2
  444. package/dist/cli/chunks/project-root-C7ELXZRK.js +0 -2
  445. package/dist/cli/chunks/protocol-executor-SUVE33BM.js +0 -2
  446. package/dist/cli/chunks/qe-reasoning-bank-YWZMMGJB.js +0 -2
  447. package/dist/cli/chunks/queen-coordinator-ZFAKXRN7.js +0 -2
  448. package/dist/cli/chunks/router-4FTAVYLJ.js +0 -2
  449. package/dist/cli/chunks/routing-feedback-IO2KOWMJ.js +0 -2
  450. package/dist/cli/chunks/rvf-dual-writer-KCIRNE7C.js +0 -2
  451. package/dist/cli/chunks/rvf-migration-adapter-MFC5WTJU.js +0 -2
  452. package/dist/cli/chunks/rvf-native-adapter-I3KWHE7X.js +0 -2
  453. package/dist/cli/chunks/safe-db-QXDZ6QY3.js +0 -2
  454. package/dist/cli/chunks/schedule-CZKD6RIY.js +0 -2
  455. package/dist/cli/chunks/scheduler-BLA3Q4CH.js +0 -2
  456. package/dist/cli/chunks/sqlite-persistence-XIUYDJC4.js +0 -2
  457. package/dist/cli/chunks/task-handler-P6IFLCKP.js +0 -62
  458. package/dist/cli/chunks/task-handlers-DPWMUKFC.js +0 -9
  459. package/dist/cli/chunks/test-runner-process-46IPK3GH.js +0 -2
  460. package/dist/cli/chunks/tree-sitter-wasm-parser-MOI2WWNJ.js +0 -2
  461. package/dist/cli/chunks/unified-memory-FL26RTV3.js +0 -2
  462. package/dist/cli/chunks/unified-memory-hnsw-E2BPTH3U.js +0 -2
  463. package/dist/cli/chunks/unified-persistence-5ZOUPKHF.js +0 -2
  464. package/dist/cli/chunks/visual-security-IJVPO5FA.js +0 -2
  465. package/dist/cli/chunks/witness-chain-5FAFCQKP.js +0 -2
  466. package/dist/cli/chunks/witness-chain-V2M32W5D.js +0 -2
  467. package/dist/cli/chunks/workflow-orchestrator-3JLF3IX7.js +0 -2
@@ -16,8 +16,7 @@ import { createPersistentScheduler } from '../scheduler/index.js';
16
16
  import { integrateCodeIntelligence } from '../../init/fleet-integration.js';
17
17
  import { runFleetInitWizard } from '../wizards/fleet-wizard.js';
18
18
  import { FleetProgressManager, createTimedSpinner } from '../utils/progress.js';
19
- import { FLEET_OPERATIONS, planFleetOperation } from '../utils/fleet-operation.js';
20
- import { reportFleetVerdict } from '../utils/fleet-result.js';
19
+ import { registerFleetRunCommand } from './fleet-run.js';
21
20
  import { writeOutput, toJSON } from '../utils/ci-output.js';
22
21
  export function createFleetCommand(context, cleanupAndExit, ensureInitialized, registerDomainWorkflowActions) {
23
22
  const fleetCmd = new Command('fleet')
@@ -215,121 +214,7 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
215
214
  await cleanupAndExit(1);
216
215
  }
217
216
  });
218
- fleetCmd
219
- .command('run')
220
- .description('Run a coordinated fleet operation')
221
- .argument('<operation>', 'Operation type (test|analyze|scan)')
222
- .option('-t, --target <path>', 'Target path', '.')
223
- .option('--parallel <count>', 'Number of parallel agents', '4')
224
- .action(async (operation, options) => {
225
- if (!await ensureInitialized())
226
- return cleanupAndExit(1);
227
- try {
228
- const parallelCount = Number(options.parallel);
229
- if (!Number.isSafeInteger(parallelCount) || parallelCount < 1) {
230
- throw new Error('--parallel must be a positive integer');
231
- }
232
- if (!FLEET_OPERATIONS.includes(operation)) {
233
- throw new Error(`Unsupported operation: ${operation}`);
234
- }
235
- // #1125: each operation runs a real domain handler with the input it
236
- // needs, taken from the target; without that input it is refused.
237
- const plan = await planFleetOperation(operation, options.target);
238
- if (!plan.success) {
239
- console.error(chalk.red(`\n Operation '${operation}' cannot run: ${plan.error}`));
240
- return cleanupAndExit(1);
241
- }
242
- const { domain, payload } = plan.task;
243
- const taskType = plan.task.type;
244
- // #1081: refuse an operation whose task no domain plugin executes,
245
- // instead of submitting work that can only fail at dispatch.
246
- const executable = context.queen.validateTaskExecutable(taskType, [domain]);
247
- if (!executable.success) {
248
- console.error(chalk.red(`\n Operation '${operation}' cannot run: ${executable.error.message}`));
249
- return cleanupAndExit(1);
250
- }
251
- console.log(chalk.blue(`\n Fleet Operation: ${operation}\n`));
252
- const progress = new FleetProgressManager({
253
- title: `${operation.charAt(0).toUpperCase() + operation.slice(1)} Progress`,
254
- showEta: true,
255
- });
256
- progress.start(parallelCount);
257
- const agentOperations = Array.from({ length: parallelCount }, (_, i) => {
258
- const agentId = `${operation}-agent-${i + 1}`;
259
- return {
260
- id: agentId,
261
- name: `${operation}-worker-${i + 1}`,
262
- domain,
263
- };
264
- });
265
- for (const op of agentOperations) {
266
- progress.addAgent({
267
- id: op.id,
268
- name: op.name,
269
- status: 'pending',
270
- progress: 0,
271
- });
272
- }
273
- const results = await Promise.all(agentOperations.map(async (op) => {
274
- progress.updateAgent(op.id, 0, { status: 'running' });
275
- try {
276
- const taskResult = await context.queen.submitTask({
277
- type: taskType,
278
- priority: 'p1',
279
- targetDomains: [domain],
280
- payload: { ...payload, target: options.target, workerId: op.id },
281
- timeout: 60000,
282
- });
283
- if (!taskResult.success) {
284
- throw taskResult.error;
285
- }
286
- // Submission is only an acknowledgement. Keep the process alive
287
- // until the domain reports a terminal result or the task expires.
288
- const deadline = Date.now() + 60000;
289
- while (Date.now() < deadline) {
290
- const task = context.queen.getTaskStatus(taskResult.value);
291
- if (!task)
292
- throw new Error(`Task status unavailable: ${taskResult.value}`);
293
- if (task.status === 'completed') {
294
- progress.completeAgent(op.id, true);
295
- return { id: op.id, success: true, result: task.result };
296
- }
297
- if (task.status === 'failed' || task.status === 'cancelled') {
298
- throw new Error(task.error || `Task ${task.status}`);
299
- }
300
- await new Promise(resolve => setTimeout(resolve, 250));
301
- }
302
- throw new Error(`Task timed out: ${taskResult.value}`);
303
- }
304
- catch (error) {
305
- console.error(chalk.red(` ${op.name}: ${error instanceof Error ? error.message : String(error)}`));
306
- progress.completeAgent(op.id, false);
307
- return { id: op.id, success: false, result: undefined };
308
- }
309
- }));
310
- // #1168: a completed agent is not a passed check, so the completion
311
- // line only says "successfully" when the verdict passes.
312
- const verdictPassed = reportFleetVerdict(operation, results, () => { }, plan.task.insufficientEvidence);
313
- progress.stop({ verdictFailed: !verdictPassed });
314
- const successful = results.filter(r => r.success).length;
315
- const failed = results.filter(r => !r.success).length;
316
- console.log(chalk.blue('\n Operation Summary:'));
317
- console.log(chalk.gray(` Operation: ${operation}`));
318
- console.log(chalk.gray(` Target: ${options.target}`));
319
- console.log(chalk.gray(` Completed: ${successful}`));
320
- if (failed > 0) {
321
- console.log(chalk.red(` Failed: ${failed}`));
322
- }
323
- // #1125 review: a completed task is not a passed check.
324
- const passed = reportFleetVerdict(operation, results, undefined, plan.task.insufficientEvidence);
325
- console.log('');
326
- await cleanupAndExit(passed ? 0 : 1);
327
- }
328
- catch (error) {
329
- console.error(chalk.red('\n Fleet operation failed:'), error);
330
- await cleanupAndExit(1);
331
- }
332
- });
217
+ registerFleetRunCommand(fleetCmd, context, cleanupAndExit, ensureInitialized);
333
218
  fleetCmd
334
219
  .command('status')
335
220
  .description('Show fleet status with agent progress')
@@ -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
  }
@@ -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
@@ -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
  });
@@ -13,8 +13,8 @@ import type { TestGeneratorService } from '../../domains/test-generation';
13
13
  import type { KnowledgeGraphService } from '../../domains/code-intelligence';
14
14
  import type { ICodeIntelligenceCoordinator } from '../../domains/code-intelligence/coordinator';
15
15
  import type { QualityAnalyzerService } from '../../domains/quality-assessment';
16
- /** The coordinator surface the MCP index-code handler needs (#999). */
17
- export type ProjectMetricsCollector = Pick<ICodeIntelligenceCoordinator, 'collectProjectMetrics'>;
16
+ /** The coordinator surface the MCP index-code handler needs (#999, #1224). */
17
+ export type ProjectMetricsCollector = Pick<ICodeIntelligenceCoordinator, 'collectProjectMetrics' | 'indexForSearch'>;
18
18
  /** Signature of a single task handler */
19
19
  export type InstanceTaskHandler = (task: QueenTask) => Promise<Result<unknown, Error>>;
20
20
  /**
@@ -123,6 +123,12 @@ export declare function discoverSourceFiles(targetPath: string, options?: {
123
123
  includeTests?: boolean;
124
124
  languages?: string[];
125
125
  maxFiles?: number;
126
+ /**
127
+ * #1020: also include component files (.vue, .svelte) and symlinked files.
128
+ * For callers that judge the whole source scope (quality assessment) and
129
+ * read through a reader that contains symlinks to the project root.
130
+ */
131
+ completeScope?: boolean;
126
132
  }): Promise<string[]>;
127
133
  /**
128
134
  * Generate security recommendations based on findings
@@ -417,11 +417,11 @@ export function parseCoberturaXml(content) {
417
417
  */
418
418
  export async function discoverSourceFiles(targetPath, options = {}) {
419
419
  const files = [];
420
- const { includeTests = true, languages, maxFiles = 5000 } = options;
420
+ const { includeTests = true, languages, maxFiles = 5000, completeScope = false } = options;
421
421
  // Determine file extensions to include
422
422
  // Default: scan ALL common source languages unless explicitly filtered
423
423
  let extensions = [
424
- '.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs', // JavaScript/TypeScript
424
+ '.ts', '.tsx', '.mts', '.cts', '.js', '.jsx', '.mjs', '.cjs', // JavaScript/TypeScript
425
425
  '.py', '.pyw', // Python
426
426
  '.go', // Go
427
427
  '.rs', // Rust
@@ -437,7 +437,7 @@ export async function discoverSourceFiles(targetPath, options = {}) {
437
437
  extensions = [];
438
438
  for (const lang of languages) {
439
439
  if (lang === 'typescript')
440
- extensions.push('.ts', '.tsx');
440
+ extensions.push('.ts', '.tsx', '.mts', '.cts');
441
441
  if (lang === 'javascript')
442
442
  extensions.push('.js', '.jsx', '.mjs', '.cjs');
443
443
  if (lang === 'python')
@@ -464,6 +464,8 @@ export async function discoverSourceFiles(targetPath, options = {}) {
464
464
  extensions.push('.scala');
465
465
  }
466
466
  }
467
+ if (completeScope && (!languages || languages.length === 0))
468
+ extensions.push('.vue', '.svelte');
467
469
  async function walkDir(dir) {
468
470
  try {
469
471
  const entries = await fs.readdir(dir, { withFileTypes: true });
@@ -488,7 +490,7 @@ export async function discoverSourceFiles(targetPath, options = {}) {
488
490
  return; // Cap reached
489
491
  await walkDir(fullPath);
490
492
  }
491
- else if (entry.isFile()) {
493
+ else if (entry.isFile() || (completeScope && entry.isSymbolicLink() && await isFileTarget(fullPath))) {
492
494
  const ext = path.extname(entry.name);
493
495
  // Check extension
494
496
  if (!extensions.includes(ext))
@@ -515,6 +517,14 @@ export async function discoverSourceFiles(targetPath, options = {}) {
515
517
  // Directory not accessible
516
518
  }
517
519
  }
520
+ async function isFileTarget(linkPath) {
521
+ try {
522
+ return (await fs.stat(linkPath)).isFile();
523
+ }
524
+ catch {
525
+ return false; // dangling link
526
+ }
527
+ }
518
528
  // Check if targetPath is a file or directory
519
529
  try {
520
530
  const stat = await fs.stat(targetPath);
@@ -16,8 +16,11 @@ export function registerMiscHandlers(ctx) {
16
16
  passed: false,
17
17
  violations: [],
18
18
  warnings: [],
19
- score: 0,
20
- note: 'Accessibility testing requires a browser environment (Puppeteer/Playwright). ' +
19
+ // #1145: nothing was audited, so `passed: false` is not a verdict and the score is -1
20
+ score: -1,
21
+ measured: false,
22
+ note: 'Accessibility NOT MEASURED: this is not a failing result. ' +
23
+ 'Accessibility testing requires a browser environment (Puppeteer/Playwright). ' +
21
24
  'Use tools like axe-core, pa11y, or Lighthouse CLI for WCAG compliance testing. ' +
22
25
  'Example: npx pa11y ' + (payload.url || '<url>'),
23
26
  });
@@ -89,13 +89,13 @@ async function resolveAnalysisScope(payload) {
89
89
  throw new CallerInputError(`target ${JSON.stringify(payload.target)} does not exist.`);
90
90
  if (stat.isFile())
91
91
  return { sourceFiles: [target], explicitFiles: [target], scope: target };
92
- return { sourceFiles: await discoverSourceFiles(target, { includeTests: false }), explicitFiles: [], scope: target };
92
+ return { sourceFiles: await discoverSourceFiles(target, { includeTests: false, completeScope: true }), explicitFiles: [], scope: target };
93
93
  }
94
94
  // Default to src/ — scanning the entire project root is too slow
95
95
  // (node_modules, dist, .git, etc. make it hang on large projects)
96
96
  const srcDir = nodePath.join(root, 'src');
97
97
  const targetDir = existsSync(srcDir) ? srcDir : root;
98
- return { sourceFiles: await discoverSourceFiles(targetDir, { includeTests: false }), explicitFiles: [], scope: targetDir };
98
+ return { sourceFiles: await discoverSourceFiles(targetDir, { includeTests: false, completeScope: true }), explicitFiles: [], scope: targetDir };
99
99
  }
100
100
  /** #1021: one line per partially measured metric, naming the gap. */
101
101
  function describePartialMetrics(partial) {