agentic-qe 3.15.12 → 3.15.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (506) hide show
  1. package/.claude/helpers/brain-checkpoint.cjs +124 -5
  2. package/.claude/skills/skills-manifest.json +1 -1
  3. package/CHANGELOG.md +196 -0
  4. package/assets/skills/skills-manifest.json +1 -1
  5. package/dist/cli/bundle.js +6 -6
  6. package/dist/cli/chunks/adapter-23KA2YW7.js +2 -0
  7. package/dist/cli/chunks/{agent-booster-wasm-5VZCKTIJ.js → agent-booster-wasm-2DLAEZK6.js} +2 -2
  8. package/dist/cli/chunks/{agent-handler-K3C6CQCD.js → agent-handler-P3IY7XEE.js} +2 -2
  9. package/dist/cli/chunks/{agent-memory-branch-NVFQ25WS.js → agent-memory-branch-WWKC2H3G.js} +2 -2
  10. package/dist/cli/chunks/aqe-learning-engine-MUICAXW5.js +2 -0
  11. package/dist/cli/chunks/{arena-TSZVDSXS.js → arena-4BMFF6BS.js} +4 -4
  12. package/dist/cli/chunks/{arena-QGWIJADQ.js → arena-EIV5OALF.js} +2 -2
  13. package/dist/cli/chunks/{audit-KIEE2SHJ.js → audit-DNTI453H.js} +3 -3
  14. package/dist/cli/chunks/base-XPWGYDKD.js +2 -0
  15. package/dist/cli/chunks/{better-sqlite3-BNB32NW3.js → better-sqlite3-TQBQGNC6.js} +2 -2
  16. package/dist/cli/chunks/brain-handler-HY57CNAO.js +95 -0
  17. package/dist/cli/chunks/{branch-enumerator-LZ7UXKAY.js → branch-enumerator-THPMZPHQ.js} +2 -2
  18. package/dist/cli/chunks/{browser-VDHAW4RK.js → browser-O6JJOZCK.js} +2 -2
  19. package/dist/cli/chunks/browser-workflow-UMQVBVGK.js +2 -0
  20. package/dist/cli/chunks/{chunk-4PU5GTZW.js → chunk-2HPNGK7A.js} +2 -2
  21. package/dist/cli/chunks/{chunk-MCPXNUDK.js → chunk-2IJO3657.js} +2 -2
  22. package/dist/cli/chunks/{chunk-4Y6OEBJZ.js → chunk-2QLE6NDW.js} +1 -1
  23. package/dist/cli/chunks/{chunk-DZGPUGUG.js → chunk-2UZBLC5H.js} +2 -2
  24. package/dist/cli/chunks/{chunk-5A66EGEW.js → chunk-2W5MQDHM.js} +2 -2
  25. package/dist/cli/chunks/{chunk-JRYWLOBD.js → chunk-3FITMWWJ.js} +2 -2
  26. package/dist/cli/chunks/{chunk-RCOLPF3B.js → chunk-3TF27MG5.js} +2 -2
  27. package/dist/cli/chunks/{chunk-KGA7VAI4.js → chunk-3XACRXBY.js} +2 -2
  28. package/dist/cli/chunks/{chunk-SQVZ3TRU.js → chunk-43XHGWYH.js} +2 -2
  29. package/dist/cli/chunks/{chunk-JR6CUKAI.js → chunk-4RPBODN5.js} +2 -2
  30. package/dist/cli/chunks/{chunk-C3YOVASQ.js → chunk-4T7XV5KQ.js} +1 -1
  31. package/dist/cli/chunks/{chunk-N7O3PF6Y.js → chunk-4WLIOPHX.js} +2 -2
  32. package/dist/cli/chunks/{chunk-PGSJBXTD.js → chunk-52KOPIMI.js} +2 -2
  33. package/dist/cli/chunks/{chunk-4KUOYDY2.js → chunk-56NSE3LJ.js} +2 -2
  34. package/dist/cli/chunks/{chunk-3IU4LDZR.js → chunk-57DRT6UA.js} +2 -2
  35. package/dist/cli/chunks/{chunk-2JYUA27M.js → chunk-57FX3GP6.js} +1 -1
  36. package/dist/cli/chunks/{chunk-7QEUHNKO.js → chunk-5PLBQZ5J.js} +1 -1
  37. package/dist/cli/chunks/{chunk-VF7FTD64.js → chunk-5Y7UFHJD.js} +1 -1
  38. package/dist/cli/chunks/{chunk-7JFDLL2F.js → chunk-5Z4MO2F3.js} +1 -1
  39. package/dist/cli/chunks/chunk-65EE2EST.js +8 -0
  40. package/dist/cli/chunks/{chunk-66PXR3NI.js → chunk-6NIGSY5L.js} +2 -2
  41. package/dist/cli/chunks/chunk-6O63ZTVX.js +3 -0
  42. package/dist/cli/chunks/{chunk-ZYOYR3UR.js → chunk-6OI5SK7M.js} +1 -1
  43. package/dist/cli/chunks/{chunk-5TAEW5OV.js → chunk-6P4Q4RTC.js} +1 -1
  44. package/dist/cli/chunks/{chunk-W5HQIYQU.js → chunk-7724KXM2.js} +3 -3
  45. package/dist/cli/chunks/{chunk-A2JCRXTK.js → chunk-7MISCSL5.js} +2 -2
  46. package/dist/cli/chunks/{chunk-OHVYINGM.js → chunk-7MUO4DEH.js} +3 -3
  47. package/dist/cli/chunks/{chunk-QCPVUNN3.js → chunk-7QUSNBAA.js} +2 -2
  48. package/dist/cli/chunks/{chunk-YUA6ZKKY.js → chunk-7SQTLUEN.js} +2 -2
  49. package/dist/cli/chunks/{chunk-CA5UNWQF.js → chunk-7T6L3LFN.js} +2 -2
  50. package/dist/cli/chunks/{chunk-UREDS662.js → chunk-7TH4PJSU.js} +2 -2
  51. package/dist/cli/chunks/{chunk-TVA5GRIU.js → chunk-7Y3LXH57.js} +2 -2
  52. package/dist/cli/chunks/{chunk-A5Y7DAVQ.js → chunk-A2T56XVL.js} +2 -2
  53. package/dist/cli/chunks/{chunk-ZROAMFX2.js → chunk-AJVLVF7V.js} +2 -2
  54. package/dist/cli/chunks/{chunk-26672ISV.js → chunk-ARRBXCII.js} +2 -2
  55. package/dist/cli/chunks/{chunk-5S4UIDFK.js → chunk-AYLEH2UF.js} +1 -1
  56. package/dist/cli/chunks/{chunk-DRCBRUGN.js → chunk-BBYJBZHG.js} +2 -2
  57. package/dist/cli/chunks/{chunk-BMG2JLSQ.js → chunk-BM3EJLMV.js} +2 -2
  58. package/dist/cli/chunks/{chunk-6QRI3JVE.js → chunk-BNG4J3CE.js} +2 -2
  59. package/dist/cli/chunks/{chunk-EN7GRVEQ.js → chunk-BPDAQB3F.js} +2 -2
  60. package/dist/cli/chunks/{chunk-J7Y7ZBIT.js → chunk-BQJ7CV53.js} +9 -9
  61. package/dist/cli/chunks/{chunk-ADUAJIAU.js → chunk-C3OIBFAA.js} +2 -2
  62. package/dist/cli/chunks/{chunk-4LWMAAWK.js → chunk-CAZM63TP.js} +2 -2
  63. package/dist/cli/chunks/{chunk-UZED4YZ5.js → chunk-CIINJHOX.js} +1 -1
  64. package/dist/cli/chunks/{chunk-C74M4WUI.js → chunk-CPPYZYXC.js} +2 -2
  65. package/dist/cli/chunks/chunk-D3ZZ2NLL.js +62 -0
  66. package/dist/cli/chunks/{chunk-U7ZHDGXG.js → chunk-D5GB5PUU.js} +1 -1
  67. package/dist/cli/chunks/{chunk-HZBXJFGN.js → chunk-DLTB5KCR.js} +2 -2
  68. package/dist/cli/chunks/{chunk-NNBQZR73.js → chunk-DRLSJJIC.js} +2 -2
  69. package/dist/cli/chunks/{chunk-HLGFHHWV.js → chunk-DSQESXL4.js} +2 -2
  70. package/dist/cli/chunks/{chunk-LFBA735S.js → chunk-E2JLAW3U.js} +3 -3
  71. package/dist/cli/chunks/{chunk-PT2NXS43.js → chunk-E3QIQMMN.js} +1 -1
  72. package/dist/cli/chunks/{chunk-35MIUSXQ.js → chunk-E7OR6V3V.js} +2 -2
  73. package/dist/cli/chunks/{chunk-G24SWTAX.js → chunk-E7QTWGPI.js} +413 -413
  74. package/dist/cli/chunks/{chunk-PX5OPXY6.js → chunk-EC65UZ77.js} +1 -1
  75. package/dist/cli/chunks/{chunk-JNXK47OL.js → chunk-EIEEST4T.js} +2 -2
  76. package/dist/cli/chunks/{chunk-2PPSS4JD.js → chunk-FHPNWHY7.js} +2 -2
  77. package/dist/cli/chunks/{chunk-PTBOLBM4.js → chunk-FJOIBZUB.js} +2 -2
  78. package/dist/cli/chunks/{chunk-TXEUVUMO.js → chunk-FTYRPEJS.js} +1 -1
  79. package/dist/cli/chunks/{chunk-ZPVGX4DI.js → chunk-G7HGUQAE.js} +2 -2
  80. package/dist/cli/chunks/{chunk-EF6OERRR.js → chunk-GY4P7KAI.js} +1 -1
  81. package/dist/cli/chunks/{chunk-UUZZXHUF.js → chunk-H3C5FJRH.js} +2 -2
  82. package/dist/cli/chunks/{chunk-L3PV7VXK.js → chunk-H4LYXLAT.js} +1 -1
  83. package/dist/cli/chunks/{chunk-5Z23ZMXZ.js → chunk-HAYKLXCT.js} +63 -61
  84. package/dist/cli/chunks/{chunk-IPA7K556.js → chunk-HEDGFKC5.js} +2 -2
  85. package/dist/cli/chunks/{chunk-BC4T6SCV.js → chunk-HHBF2BZC.js} +4 -4
  86. package/dist/cli/chunks/{chunk-IVTQF55W.js → chunk-HSDWPQQY.js} +3 -3
  87. package/dist/cli/chunks/{chunk-SG2TX72G.js → chunk-HTVGHHX2.js} +2 -2
  88. package/dist/cli/chunks/{chunk-FZJCBSN4.js → chunk-HV43NX4A.js} +2 -2
  89. package/dist/cli/chunks/{chunk-MMEALJ4D.js → chunk-IDBA5GK2.js} +2 -2
  90. package/dist/cli/chunks/{chunk-IA55PFLG.js → chunk-INGXD5IX.js} +2 -2
  91. package/dist/cli/chunks/{chunk-RYHG3I7J.js → chunk-IQRPR4KB.js} +2 -2
  92. package/dist/cli/chunks/{chunk-7OEFBWAG.js → chunk-IRPNEXOU.js} +2 -2
  93. package/dist/cli/chunks/{chunk-P7UFJ6DO.js → chunk-J35JWDJE.js} +1 -1
  94. package/dist/cli/chunks/chunk-J6ASX536.js +2 -0
  95. package/dist/cli/chunks/{chunk-2ASQRBK2.js → chunk-JAOCHPYX.js} +2 -2
  96. package/dist/cli/chunks/{chunk-G3AABG4Q.js → chunk-JB7R77SH.js} +2 -2
  97. package/dist/cli/chunks/{chunk-HSA5IGGW.js → chunk-JI67T6Q2.js} +2 -2
  98. package/dist/cli/chunks/{chunk-ZGROHCOW.js → chunk-JJHLGGPP.js} +1 -1
  99. package/dist/cli/chunks/{chunk-L7NGKANW.js → chunk-JK6PMLQQ.js} +2 -2
  100. package/dist/cli/chunks/{chunk-IL7GQNNE.js → chunk-JO26SG47.js} +2 -2
  101. package/dist/cli/chunks/{chunk-3EWQN37E.js → chunk-JSSU4RIK.js} +2 -2
  102. package/dist/cli/chunks/{chunk-TOWOJGEI.js → chunk-K2SMP4OD.js} +1 -1
  103. package/dist/cli/chunks/{chunk-YVJEUX3I.js → chunk-K7GFYFBO.js} +2 -2
  104. package/dist/cli/chunks/{chunk-DAUEK66C.js → chunk-K7RT6ITZ.js} +1 -1
  105. package/dist/cli/chunks/{chunk-33I2ZP6E.js → chunk-KJ5A54ZH.js} +2 -2
  106. package/dist/cli/chunks/{chunk-W4II6SIH.js → chunk-L5VSLPMW.js} +2 -2
  107. package/dist/cli/chunks/{chunk-NVRYELCY.js → chunk-L752CNG3.js} +3 -3
  108. package/dist/cli/chunks/{chunk-MAJXZYGK.js → chunk-L7PC675Y.js} +1 -1
  109. package/dist/cli/chunks/{chunk-YWWMNTBF.js → chunk-LTGQJYYO.js} +2 -2
  110. package/dist/cli/chunks/{chunk-7DNR4KKR.js → chunk-M2TG7VDK.js} +1 -1
  111. package/dist/cli/chunks/{chunk-2E2QO44T.js → chunk-M5JEA6ZY.js} +2 -2
  112. package/dist/cli/chunks/{chunk-IETBWYHW.js → chunk-MB4UKUBV.js} +2 -2
  113. package/dist/cli/chunks/{chunk-W7H55PY4.js → chunk-MKYOE7NE.js} +1 -1
  114. package/dist/cli/chunks/{chunk-FNUFTWEO.js → chunk-MQXWG55U.js} +3 -3
  115. package/dist/cli/chunks/{chunk-O4QJMANM.js → chunk-MR2OPUSA.js} +1 -1
  116. package/dist/cli/chunks/{chunk-KA5SHLMW.js → chunk-N736GLWZ.js} +2 -2
  117. package/dist/cli/chunks/{chunk-NV74SICL.js → chunk-NHEG2DLN.js} +2 -2
  118. package/dist/cli/chunks/chunk-NKOLILT7.js +86 -0
  119. package/dist/cli/chunks/{chunk-KJDI5CHX.js → chunk-NPCXGX7N.js} +2 -2
  120. package/dist/cli/chunks/{chunk-2IVE5AR3.js → chunk-NZQYJCO6.js} +1 -1
  121. package/dist/cli/chunks/{chunk-4SA7M34P.js → chunk-O2AAYJUV.js} +1 -1
  122. package/dist/cli/chunks/{chunk-ULCW6IVQ.js → chunk-O32BFQV4.js} +2 -2
  123. package/dist/cli/chunks/{chunk-JOWUS2X5.js → chunk-O3ERGUXH.js} +1 -1
  124. package/dist/cli/chunks/{chunk-BYRCB5JT.js → chunk-O5CEL447.js} +2 -2
  125. package/dist/cli/chunks/{chunk-CPIBIR3X.js → chunk-O756AOUX.js} +2 -2
  126. package/dist/cli/chunks/{chunk-TSOQ2QLT.js → chunk-OCN53CCK.js} +2 -2
  127. package/dist/cli/chunks/{chunk-YLKIXEPP.js → chunk-OGEIHS76.js} +1 -1
  128. package/dist/cli/chunks/{chunk-ICKUINKD.js → chunk-OLUOVNUF.js} +2 -2
  129. package/dist/cli/chunks/{chunk-5ADXFUMO.js → chunk-P2TPH3TC.js} +2 -2
  130. package/dist/cli/chunks/{chunk-SBHM5X2S.js → chunk-PCQZIAXB.js} +2 -2
  131. package/dist/cli/chunks/{chunk-CDA5Z74H.js → chunk-PGN4TARY.js} +2 -2
  132. package/dist/cli/chunks/{chunk-P5E26N2X.js → chunk-PNRPVQGI.js} +2 -2
  133. package/dist/cli/chunks/{chunk-23PQF7NN.js → chunk-PWQWKYBG.js} +1 -1
  134. package/dist/cli/chunks/{chunk-T4EN5VVK.js → chunk-QNQE3EOH.js} +2 -2
  135. package/dist/cli/chunks/chunk-QP2HLKTS.js +2 -0
  136. package/dist/cli/chunks/{chunk-7TA5MUPW.js → chunk-QP6GL3O5.js} +1 -1
  137. package/dist/cli/chunks/{chunk-GKFV6CUD.js → chunk-QUZ745UQ.js} +2 -2
  138. package/dist/cli/chunks/{chunk-INZARYUD.js → chunk-R5RRWLRI.js} +2 -2
  139. package/dist/cli/chunks/{chunk-VZBC6DP7.js → chunk-RE6JTSDM.js} +1 -1
  140. package/dist/cli/chunks/{chunk-JGIJPDGD.js → chunk-TOJF3ZG4.js} +2 -2
  141. package/dist/cli/chunks/{chunk-WLRU6ESI.js → chunk-TSP6SU5V.js} +2 -2
  142. package/dist/cli/chunks/{chunk-6E6HB4N4.js → chunk-TW6Z6W4X.js} +4 -4
  143. package/dist/cli/chunks/{chunk-ENGL7FIJ.js → chunk-TWOV3I3A.js} +1 -1
  144. package/dist/cli/chunks/chunk-U4TML2VD.js +3 -0
  145. package/dist/cli/chunks/{chunk-O3IM4WRZ.js → chunk-U6IOQKCT.js} +2 -2
  146. package/dist/cli/chunks/{chunk-SPC4RBLF.js → chunk-UDSB3XCG.js} +2 -2
  147. package/dist/cli/chunks/{chunk-URSTP3WI.js → chunk-UFP7SN5V.js} +2 -2
  148. package/dist/cli/chunks/{chunk-MYF5CNGV.js → chunk-UMHFTQTR.js} +2 -2
  149. package/dist/cli/chunks/{chunk-65TH6RPD.js → chunk-UNYTHZDZ.js} +1 -1
  150. package/dist/cli/chunks/{chunk-FAGKBOX2.js → chunk-UPWLMIDY.js} +2 -2
  151. package/dist/cli/chunks/{chunk-4CB3QPZM.js → chunk-USAKCGHC.js} +2 -2
  152. package/dist/cli/chunks/{chunk-QUJJYTJH.js → chunk-V3MGY76S.js} +2 -2
  153. package/dist/cli/chunks/{chunk-WDEXOLK2.js → chunk-V6SE2ZU2.js} +1 -1
  154. package/dist/cli/chunks/{chunk-JW5PDJ5O.js → chunk-VCVRZD4Y.js} +3 -3
  155. package/dist/cli/chunks/{chunk-TGMXUZZC.js → chunk-VG32EEUG.js} +2 -2
  156. package/dist/cli/chunks/{chunk-MYUMJ2ZI.js → chunk-VGZOPQQY.js} +1 -1
  157. package/dist/cli/chunks/{chunk-BOSMELJX.js → chunk-VJBJRFUO.js} +2 -2
  158. package/dist/cli/chunks/{chunk-K3A3NWT3.js → chunk-WBC6WB32.js} +2 -2
  159. package/dist/cli/chunks/{chunk-QWG3SILX.js → chunk-WCM6WE7G.js} +5 -5
  160. package/dist/cli/chunks/{chunk-GJKZ7UQO.js → chunk-WCPSR4MJ.js} +2 -2
  161. package/dist/cli/chunks/{chunk-U6IXYQO4.js → chunk-WKI46WWN.js} +2 -2
  162. package/dist/cli/chunks/{chunk-NX4BCSOZ.js → chunk-WM2QRIRD.js} +2 -2
  163. package/dist/cli/chunks/{chunk-32UTHIY5.js → chunk-WRC3HLUY.js} +3 -3
  164. package/dist/cli/chunks/{chunk-AJEXPFAB.js → chunk-WUGXXNK4.js} +1 -1
  165. package/dist/cli/chunks/{chunk-NA3F6FEO.js → chunk-WZQADC5R.js} +2 -2
  166. package/dist/cli/chunks/{chunk-SDRJJUPO.js → chunk-X6NJOT3V.js} +1 -1
  167. package/dist/cli/chunks/{chunk-CU36D7TN.js → chunk-X6Q2N5S5.js} +2 -2
  168. package/dist/cli/chunks/{chunk-UIKQPO4Y.js → chunk-X7CUI7KH.js} +2 -2
  169. package/dist/cli/chunks/{chunk-MCPEC6OO.js → chunk-XMCSKYDE.js} +1 -1
  170. package/dist/cli/chunks/{chunk-WTAUF6O4.js → chunk-XN3KCKAM.js} +2 -2
  171. package/dist/cli/chunks/{chunk-TLRHAMX5.js → chunk-XSPMLJCQ.js} +1 -1
  172. package/dist/cli/chunks/{chunk-VUR5THML.js → chunk-XTZGAG6P.js} +2 -2
  173. package/dist/cli/chunks/{chunk-47RMGDG4.js → chunk-YE54T2NQ.js} +2 -2
  174. package/dist/cli/chunks/{chunk-HM3LSFTY.js → chunk-YEFTK4HD.js} +2 -2
  175. package/dist/cli/chunks/{chunk-4HWUECVD.js → chunk-YGC5QKQ4.js} +2 -2
  176. package/dist/cli/chunks/{chunk-SUX5XB2Z.js → chunk-YGOSSVY5.js} +2 -2
  177. package/dist/cli/chunks/{chunk-UJNGGFGX.js → chunk-YKQWIXUY.js} +2 -2
  178. package/dist/cli/chunks/{chunk-SITL5YZV.js → chunk-Z2S7DNFP.js} +2 -2
  179. package/dist/cli/chunks/{chunk-WGTEZT7G.js → chunk-Z54G2YOL.js} +2 -2
  180. package/dist/cli/chunks/{chunk-YNVEDFPQ.js → chunk-ZJGFQK27.js} +1 -1
  181. package/dist/cli/chunks/{chunk-35NW676P.js → chunk-ZUE524JL.js} +2 -2
  182. package/dist/cli/chunks/{ci-BZNWW3I3.js → ci-UMA2SMNW.js} +2 -2
  183. package/dist/cli/chunks/{ci-config-LOHNXOKV.js → ci-config-UQSILJFQ.js} +2 -2
  184. package/dist/cli/chunks/{ci-output-LCOQBSJL.js → ci-output-U6YZLLKH.js} +2 -2
  185. package/dist/cli/chunks/{circuit-breaker-7LRXTLFE.js → circuit-breaker-ATYQP6X2.js} +2 -2
  186. package/dist/cli/chunks/{claude-flow-setup-HBU4VWC3.js → claude-flow-setup-6YHFD7AN.js} +2 -2
  187. package/dist/cli/chunks/client-E43GWLQH.js +2 -0
  188. package/dist/cli/chunks/{cline-installer-CO6MLH6X.js → cline-installer-EPE7IOZE.js} +2 -2
  189. package/dist/cli/chunks/{code-SIXBS6JM.js → code-NUEJ4XYO.js} +19 -18
  190. package/dist/cli/chunks/{code-index-extractor-GWJKZ2IQ.js → code-index-extractor-D4DBT6OL.js} +2 -2
  191. package/dist/cli/chunks/{codex-installer-6NINVWXJ.js → codex-installer-633SM4LR.js} +2 -2
  192. package/dist/cli/chunks/{completions-7VIX3GML.js → completions-WUKVIW3L.js} +2 -2
  193. package/dist/cli/chunks/{complexity-analyzer-FBQR6ZP2.js → complexity-analyzer-F73ACR5H.js} +2 -2
  194. package/dist/cli/chunks/{continuedev-installer-VA7RIXW5.js → continuedev-installer-QH42TKMS.js} +2 -2
  195. package/dist/cli/chunks/{copilot-installer-4QEBC4MU.js → copilot-installer-Y3XC7BTT.js} +2 -2
  196. package/dist/cli/chunks/core-handlers-R5A3SQDY.js +2 -0
  197. package/dist/cli/chunks/{cost-tracker-GRYKHPWL.js → cost-tracker-57QPV7E3.js} +2 -2
  198. package/dist/cli/chunks/coverage-IBCHMBCR.js +51 -0
  199. package/dist/cli/chunks/cross-domain-router-LLYVPZF6.js +2 -0
  200. package/dist/cli/chunks/{cursor-installer-ZXIPSZVH.js → cursor-installer-F4UYQHIN.js} +2 -2
  201. package/dist/cli/chunks/{daemon-N2VRHPSJ.js → daemon-BYYPIJ7G.js} +4 -4
  202. package/dist/cli/chunks/{daemon-D7F3RGI5.js → daemon-XR4Q6YZF.js} +3 -3
  203. package/dist/cli/chunks/{dag-attention-scheduler-NL6BA7BY.js → dag-attention-scheduler-ZR5ZD3TW.js} +2 -2
  204. package/dist/cli/chunks/{detect-XC2HCIIT.js → detect-GEGYURLL.js} +2 -2
  205. package/dist/cli/chunks/{dist-node-A3Y26MEI.js → dist-node-JU3KT2JO.js} +2 -2
  206. package/dist/cli/chunks/{domain-handler-WV6SFXRB.js → domain-handler-7QI3FJGE.js} +2 -2
  207. package/dist/cli/chunks/{domain-plugins-KJIF6Z2B.js → domain-plugins-O2YRM2PD.js} +2 -2
  208. package/dist/cli/chunks/domain-transfer-7J3S2OS6.js +2 -0
  209. package/dist/cli/chunks/dream-6C4NURSE.js +2 -0
  210. package/dist/cli/chunks/{embed-and-insert-pattern-PA3Y4KGO.js → embed-and-insert-pattern-URES5Q6J.js} +2 -2
  211. package/dist/cli/chunks/{eval-YGEZNUVE.js → eval-RVMCIUOR.js} +2 -2
  212. package/dist/cli/chunks/{experience-capture-middleware-D4T7NW6B.js → experience-capture-middleware-SYJQSBKE.js} +3 -3
  213. package/dist/cli/chunks/{fast-paths-6JYK7RYQ.js → fast-paths-QUKPKWKZ.js} +2 -2
  214. package/dist/cli/chunks/{feature-flags-DKXMDVPE.js → feature-flags-5JCSKL2P.js} +2 -2
  215. package/dist/cli/chunks/{feature-flags-RBH2GDSR.js → feature-flags-K7JXNKJI.js} +2 -2
  216. package/dist/cli/chunks/file-discovery-J5IE5KP7.js +2 -0
  217. package/dist/cli/chunks/fleet-II4Q6HXK.js +44 -0
  218. package/dist/cli/chunks/{gnn-wrapper-MV54UC4C.js → gnn-wrapper-M7VO2EMS.js} +2 -2
  219. package/dist/cli/chunks/{heartbeat-handler-7DKMVQQH.js → heartbeat-handler-ND5CY26N.js} +4 -4
  220. package/dist/cli/chunks/heartbeat-scheduler-FC5PBTMN.js +2 -0
  221. package/dist/cli/chunks/hnsw-adapter-47UIVOBG.js +2 -0
  222. package/dist/cli/chunks/hnsw-index-3AKVLOZQ.js +2 -0
  223. package/dist/cli/chunks/{hnsw-legacy-bridge-6IWREDQC.js → hnsw-legacy-bridge-N3AUUUU7.js} +2 -2
  224. package/dist/cli/chunks/{hnswlib-node-5BIESSCK.js → hnswlib-node-NZY3E5EN.js} +2 -2
  225. package/dist/cli/chunks/{hooks-3EETRM62.js → hooks-QVJDTII5.js} +10 -10
  226. package/dist/cli/chunks/hybrid-backend-YAOSNX47.js +2 -0
  227. package/dist/cli/chunks/{hypergraph-engine-RSWCB2D3.js → hypergraph-engine-ZRY6MTDV.js} +2 -2
  228. package/dist/cli/chunks/{hypergraph-handler-552LXKL3.js → hypergraph-handler-56DO4XZQ.js} +3 -3
  229. package/dist/cli/chunks/impact-analyzer-4FMJXM4M.js +2 -0
  230. package/dist/cli/chunks/{init-guard-OTDBJ5HD.js → init-guard-DTF4EVUY.js} +2 -2
  231. package/dist/cli/chunks/{init-handler-3FK3TKEA.js → init-handler-M6CNQHMX.js} +6 -6
  232. package/dist/cli/chunks/init-wizard-RTLCRWDT.js +2 -0
  233. package/dist/cli/chunks/kernel-2OWIGGGT.js +2 -0
  234. package/dist/cli/chunks/{kilocode-installer-KZ2O4LF3.js → kilocode-installer-IJN7XKBH.js} +2 -2
  235. package/dist/cli/chunks/{kiro-installer-MLCCXRF7.js → kiro-installer-UKKPGPDC.js} +2 -2
  236. package/dist/cli/chunks/knowledge-graph-25XXKDJN.js +2 -0
  237. package/dist/cli/chunks/learning-W2HETWQ4.js +131 -0
  238. package/dist/cli/chunks/{llm-router-PDEV3UP2.js → llm-router-Y546K4VX.js} +4 -4
  239. package/dist/cli/chunks/llm-router-service-G3EIN4UB.js +2 -0
  240. package/dist/cli/chunks/{load-XFVVLO7E.js → load-MKAB2AXE.js} +2 -2
  241. package/dist/cli/chunks/load-test-D6QYNIVT.js +2 -0
  242. package/dist/cli/chunks/{mcp-74G3CL2S.js → mcp-AZKUS6K3.js} +2 -2
  243. package/dist/cli/chunks/{memory-XIFM6JNX.js → memory-ZDOQN2KU.js} +5 -5
  244. package/dist/cli/chunks/memory-backend-LDFFZMEQ.js +2 -0
  245. package/dist/cli/chunks/{memory-handlers-ZCKURV6S.js → memory-handlers-3SQVY7FE.js} +2 -2
  246. package/dist/cli/chunks/{multi-model-executor-7L4W3O2Q.js → multi-model-executor-WWVXDHG4.js} +2 -2
  247. package/dist/cli/chunks/{opencode-installer-BPG422LF.js → opencode-installer-YUJNXXWS.js} +2 -2
  248. package/dist/cli/chunks/{orchestrator-OEAFLAEV.js → orchestrator-Z6PWPLRE.js} +109 -25
  249. package/dist/cli/chunks/pattern-null-store-KDVRM7PW.js +2 -0
  250. package/dist/cli/chunks/{pattern-usage-recorder-LOPNCULT.js → pattern-usage-recorder-TPWPX32U.js} +2 -2
  251. package/dist/cli/chunks/{pipeline-VWTYUZB7.js → pipeline-4BBGTE4M.js} +2 -2
  252. package/dist/cli/chunks/{platform-WFJJ3X2E.js → platform-5GSHXCV5.js} +2 -2
  253. package/dist/cli/chunks/{plugin-744TPUSG.js → plugin-OFDVF5HS.js} +2 -2
  254. package/dist/cli/chunks/{prime-radiant-advanced-wasm-BD5BLNDR.js → prime-radiant-advanced-wasm-NC6MUYGJ.js} +2 -2
  255. package/dist/cli/chunks/project-root-DDGBWDP6.js +2 -0
  256. package/dist/cli/chunks/protocol-executor-KBOLLCWA.js +2 -0
  257. package/dist/cli/chunks/{protocol-handler-JIBILI74.js → protocol-handler-MPOAAEPA.js} +2 -2
  258. package/dist/cli/chunks/{prove-MNOL5FYW.js → prove-CDKMAIVM.js} +2 -2
  259. package/dist/cli/chunks/qe-reasoning-bank-GRXBT7FC.js +2 -0
  260. package/dist/cli/chunks/{quality-JEGBDGGX.js → quality-ZH4F7R7R.js} +2 -2
  261. package/dist/cli/chunks/{quality-gate-SYJ6ROMI.js → quality-gate-IDRMW6OE.js} +3 -3
  262. package/dist/cli/chunks/queen-coordinator-L2QWMJ5Q.js +2 -0
  263. package/dist/cli/chunks/{real-embeddings-ZWXS5ZFV.js → real-embeddings-I2UVNNB3.js} +2 -2
  264. package/dist/cli/chunks/{ref-validation-RRHUFW2N.js → ref-validation-Z5GCGVXK.js} +2 -2
  265. package/dist/cli/chunks/{roocode-installer-XFO6JSVN.js → roocode-installer-IZ2S7PH2.js} +2 -2
  266. package/dist/cli/chunks/router-FT5WJPUH.js +2 -0
  267. package/dist/cli/chunks/routing-feedback-EO2MKOUX.js +2 -0
  268. package/dist/cli/chunks/{routing-handler-L2K3JASE.js → routing-handler-NAX35VUW.js} +2 -2
  269. package/dist/cli/chunks/{ruvector-commands-A6CINHGM.js → ruvector-commands-5YW2SOFF.js} +2 -2
  270. package/dist/cli/chunks/rvf-dual-writer-WHBFQJVU.js +2 -0
  271. package/dist/cli/chunks/rvf-migration-adapter-YT3APF2I.js +2 -0
  272. package/dist/cli/chunks/{rvf-migration-coordinator-T4RY7L53.js → rvf-migration-coordinator-VUIZHTVG.js} +2 -2
  273. package/dist/cli/chunks/rvf-native-adapter-37PUFKQD.js +2 -0
  274. package/dist/cli/chunks/{rvf-store-integrity-IR33TGQS.js → rvf-store-integrity-IPGCAT6C.js} +2 -2
  275. package/dist/cli/chunks/safe-db-TDZKUOZJ.js +2 -0
  276. package/dist/cli/chunks/schedule-CRKTRY2A.js +2 -0
  277. package/dist/cli/chunks/scheduler-6ZBDVQWN.js +2 -0
  278. package/dist/cli/chunks/{security-Z5GDE2IH.js → security-3IH4BO5Z.js} +3 -3
  279. package/dist/cli/chunks/{shared-rvf-adapter-SIZMEHPM.js → shared-rvf-adapter-ABY7PAY2.js} +2 -2
  280. package/dist/cli/chunks/{shared-rvf-dual-writer-HLM65RDS.js → shared-rvf-dual-writer-6KENLN2W.js} +2 -2
  281. package/dist/cli/chunks/sqlite-persistence-FFJQAIKW.js +2 -0
  282. package/dist/cli/chunks/{standalone-memory-SKSZG7P5.js → standalone-memory-RLFAUGOW.js} +2 -2
  283. package/dist/cli/chunks/{status-handler-766YOOMJ.js → status-handler-FCOZBPE5.js} +2 -2
  284. package/dist/cli/chunks/{structural-health-M45FNOLT.js → structural-health-4RDA5UUM.js} +2 -2
  285. package/dist/cli/chunks/{sync-B2U366I3.js → sync-54LUAUTK.js} +2 -2
  286. package/dist/cli/chunks/{sync-6CJ24B5T.js → sync-KGEEXXCC.js} +2 -2
  287. package/dist/cli/chunks/task-handler-K3OXHYKU.js +62 -0
  288. package/dist/cli/chunks/task-handlers-6H7L2UT4.js +9 -0
  289. package/dist/cli/chunks/{test-TODH7KRF.js → test-S7IG6EIX.js} +4 -4
  290. package/dist/cli/chunks/test-runner-process-OTQDAJLN.js +2 -0
  291. package/dist/cli/chunks/{test-scheduling-VMVMVRHT.js → test-scheduling-7XYXI4L2.js} +3 -3
  292. package/dist/cli/chunks/{token-bootstrap-XQW7BMCK.js → token-bootstrap-3QMABE45.js} +2 -2
  293. package/dist/cli/chunks/{token-usage-JCZEIRKO.js → token-usage-Y2YTPOFE.js} +2 -2
  294. package/dist/cli/chunks/{transformers-U2ML3OHE.js → transformers-UCJ3HHHC.js} +2 -2
  295. package/dist/cli/chunks/tree-sitter-wasm-parser-D6JTTHTP.js +2 -0
  296. package/dist/cli/chunks/{types-GGEPCHP6.js → types-6CMFPETH.js} +2 -2
  297. package/dist/cli/chunks/unified-memory-QARWQKJ2.js +2 -0
  298. package/dist/cli/chunks/unified-memory-hnsw-LHY3DXCP.js +2 -0
  299. package/dist/cli/chunks/unified-persistence-WEYYGLHM.js +2 -0
  300. package/dist/cli/chunks/{upgrade-T5GRM7HS.js → upgrade-K25DN6WU.js} +2 -2
  301. package/dist/cli/chunks/{validate-XMUJPLP3.js → validate-T4V3TBY3.js} +2 -2
  302. package/dist/cli/chunks/{validate-swarm-KJLF7JEH.js → validate-swarm-XSRC576T.js} +2 -2
  303. package/dist/cli/chunks/visual-security-O4ALMCXQ.js +2 -0
  304. package/dist/cli/chunks/{web-tree-sitter-LOHVZ7G5.js → web-tree-sitter-YOZXHRTN.js} +2 -2
  305. package/dist/cli/chunks/{windsurf-installer-33FBTXJU.js → windsurf-installer-ITPU2IYL.js} +2 -2
  306. package/dist/cli/chunks/witness-chain-B3YW5NMS.js +2 -0
  307. package/dist/cli/chunks/witness-chain-PIYR72HJ.js +2 -0
  308. package/dist/cli/chunks/{witness-chain-repair-VWBO4NXE.js → witness-chain-repair-YUG7E3UX.js} +2 -2
  309. package/dist/cli/chunks/{witness-chain-verifier-BHJ3ZAEK.js → witness-chain-verifier-DTDSVKOG.js} +2 -2
  310. package/dist/cli/chunks/{witness-key-manager-WNVPH2Z3.js → witness-key-manager-EWACWGAW.js} +2 -2
  311. package/dist/cli/chunks/{workflow-6QR5MQTO.js → workflow-ZIQ4FV42.js} +4 -4
  312. package/dist/cli/chunks/workflow-orchestrator-3ZN2BCGY.js +2 -0
  313. package/dist/cli/chunks/{wrappers-EHOL62TS.js → wrappers-PW2O27LL.js} +2 -2
  314. package/dist/cli/commands/code.js +6 -0
  315. package/dist/cli/commands/coverage.js +6 -0
  316. package/dist/cli/commands/fleet-run.d.ts +12 -0
  317. package/dist/cli/commands/fleet-run.js +175 -0
  318. package/dist/cli/commands/fleet.js +2 -117
  319. package/dist/cli/commands/learning-prune.d.ts +14 -0
  320. package/dist/cli/commands/learning-prune.js +105 -0
  321. package/dist/cli/commands/learning.js +9 -0
  322. package/dist/cli/handlers/brain-handler.js +12 -1
  323. package/dist/cli/handlers/task-handler.d.ts +5 -0
  324. package/dist/cli/handlers/task-handler.js +20 -0
  325. package/dist/cli/utils/coverage-verdict.js +14 -3
  326. package/dist/cli/utils/fleet-operation.d.ts +5 -2
  327. package/dist/cli/utils/fleet-operation.js +13 -2
  328. package/dist/cli/utils/fleet-result.d.ts +16 -2
  329. package/dist/cli/utils/fleet-result.js +26 -21
  330. package/dist/cli/utils/fleet-shard.d.ts +36 -0
  331. package/dist/cli/utils/fleet-shard.js +110 -0
  332. package/dist/context/compaction/index.d.ts +7 -0
  333. package/dist/context/compaction/index.js +30 -6
  334. package/dist/coordination/handlers/code-intelligence-handlers.js +21 -1
  335. package/dist/coordination/handlers/coverage-evidence.d.ts +19 -0
  336. package/dist/coordination/handlers/coverage-evidence.js +31 -2
  337. package/dist/coordination/handlers/coverage-handlers.js +5 -1
  338. package/dist/coordination/handlers/coverage-target.js +8 -1
  339. package/dist/coordination/handlers/handler-types.d.ts +2 -2
  340. package/dist/coordination/handlers/handler-utils.d.ts +6 -0
  341. package/dist/coordination/handlers/handler-utils.js +14 -4
  342. package/dist/coordination/handlers/misc-handlers.js +5 -2
  343. package/dist/coordination/handlers/quality-handlers.js +11 -3
  344. package/dist/coordination/handlers/security-handlers.js +12 -2
  345. package/dist/coordination/protocols/security-audit.js +11 -1
  346. package/dist/coordination/result-saver-adapters.js +1 -0
  347. package/dist/coordination/result-saver.js +9 -5
  348. package/dist/coordination/task-executor.js +7 -2
  349. package/dist/domains/chaos-resilience/services/chaos-engineer.d.ts +1 -0
  350. package/dist/domains/chaos-resilience/services/chaos-engineer.js +23 -45
  351. package/dist/domains/code-intelligence/coordinator-gnn.d.ts +2 -16
  352. package/dist/domains/code-intelligence/coordinator-gnn.js +1 -62
  353. package/dist/domains/code-intelligence/coordinator.d.ts +12 -6
  354. package/dist/domains/code-intelligence/coordinator.js +24 -27
  355. package/dist/domains/code-intelligence/interfaces.d.ts +9 -0
  356. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +43 -5
  357. package/dist/domains/code-intelligence/services/semantic-analyzer.js +134 -71
  358. package/dist/domains/coverage-analysis/collected-metrics.d.ts +26 -0
  359. package/dist/domains/coverage-analysis/collected-metrics.js +54 -0
  360. package/dist/domains/coverage-analysis/services/coverage-analyzer.js +13 -3
  361. package/dist/domains/coverage-analysis/services/coverage-parser.d.ts +2 -0
  362. package/dist/domains/coverage-analysis/services/coverage-parser.js +18 -2
  363. package/dist/domains/defect-intelligence/services/defect-predictor.js +3 -6
  364. package/dist/domains/quality-assessment/coherence/gate-controller.js +16 -4
  365. package/dist/domains/quality-assessment/coherence/lambda-calculator.d.ts +8 -0
  366. package/dist/domains/quality-assessment/coherence/lambda-calculator.js +57 -14
  367. package/dist/domains/quality-assessment/coherence/types.d.ts +12 -7
  368. package/dist/domains/quality-assessment/coordinator-gate-evaluation.js +3 -1
  369. package/dist/domains/quality-assessment/coordinator-reports.d.ts +30 -10
  370. package/dist/domains/quality-assessment/coordinator-reports.js +93 -57
  371. package/dist/domains/quality-assessment/coordinator.d.ts +14 -40
  372. package/dist/domains/quality-assessment/coordinator.js +10 -4
  373. package/dist/domains/quality-assessment/coverage-report-event.d.ts +8 -0
  374. package/dist/domains/quality-assessment/coverage-report-event.js +22 -1
  375. package/dist/domains/quality-assessment/interfaces.d.ts +8 -0
  376. package/dist/domains/quality-assessment/services/coherence-gate.js +15 -2
  377. package/dist/domains/quality-assessment/services/quality-analyzer.d.ts +4 -0
  378. package/dist/domains/quality-assessment/services/quality-analyzer.js +63 -17
  379. package/dist/domains/quality-assessment/services/quality-gate.js +6 -4
  380. package/dist/domains/security-compliance/index.d.ts +1 -1
  381. package/dist/domains/security-compliance/interfaces.d.ts +46 -5
  382. package/dist/domains/security-compliance/services/scanners/dast-auth-testing.d.ts +3 -3
  383. package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +15 -14
  384. package/dist/domains/security-compliance/services/scanners/dast-helpers.d.ts +8 -9
  385. package/dist/domains/security-compliance/services/scanners/dast-helpers.js +19 -44
  386. package/dist/domains/security-compliance/services/scanners/dast-injection-testing.d.ts +3 -3
  387. package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +13 -9
  388. package/dist/domains/security-compliance/services/scanners/dast-requests.d.ts +54 -0
  389. package/dist/domains/security-compliance/services/scanners/dast-requests.js +125 -0
  390. package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +5 -1
  391. package/dist/domains/security-compliance/services/scanners/dast-scanner.js +125 -155
  392. package/dist/domains/security-compliance/services/scanners/index.d.ts +1 -1
  393. package/dist/domains/security-compliance/services/scanners/index.js +1 -1
  394. package/dist/domains/security-compliance/services/scanners/scanner-types.d.ts +2 -2
  395. package/dist/domains/security-compliance/services/security-auditor-dast.js +183 -212
  396. package/dist/domains/security-compliance/services/security-auditor-reports.js +5 -1
  397. package/dist/domains/security-compliance/services/security-auditor.d.ts +11 -3
  398. package/dist/domains/security-compliance/services/security-auditor.js +106 -65
  399. package/dist/domains/test-execution/coordinator.d.ts +2 -1
  400. package/dist/domains/test-execution/coordinator.js +33 -27
  401. package/dist/domains/test-execution/interfaces.d.ts +10 -0
  402. package/dist/domains/test-execution/services/test-executor.d.ts +6 -0
  403. package/dist/domains/test-execution/services/test-executor.js +22 -4
  404. package/dist/domains/visual-accessibility/coordinator.js +34 -9
  405. package/dist/domains/visual-accessibility/interfaces.d.ts +27 -0
  406. package/dist/domains/visual-accessibility/plugin.js +5 -0
  407. package/dist/domains/visual-accessibility/services/accessibility-tester-heuristics.d.ts +13 -21
  408. package/dist/domains/visual-accessibility/services/accessibility-tester-heuristics.js +13 -297
  409. package/dist/domains/visual-accessibility/services/accessibility-tester.d.ts +13 -5
  410. package/dist/domains/visual-accessibility/services/accessibility-tester.js +96 -73
  411. package/dist/init/phases/07-hooks.js +90 -6
  412. package/dist/integrations/embeddings/index/HNSWIndex.js +8 -4
  413. package/dist/integrations/ruvector/brain-rvf-exporter.d.ts +25 -0
  414. package/dist/integrations/ruvector/brain-rvf-exporter.js +154 -61
  415. package/dist/integrations/ruvector/transfer-coherence-stub.js +5 -10
  416. package/dist/learning/dream/dream-engine.d.ts +24 -1
  417. package/dist/learning/dream/dream-engine.js +57 -6
  418. package/dist/learning/learning-retention.d.ts +103 -0
  419. package/dist/learning/learning-retention.js +213 -0
  420. package/dist/mcp/bundle.js +508 -503
  421. package/dist/mcp/handlers/domain-handler-configs.d.ts +17 -1
  422. package/dist/mcp/handlers/domain-handler-configs.js +33 -16
  423. package/dist/mcp/handlers/handler-factory.js +3 -0
  424. package/dist/mcp/handlers/model-route-handlers.d.ts +107 -0
  425. package/dist/mcp/handlers/model-route-handlers.js +139 -0
  426. package/dist/mcp/handlers/orchestrate-routes.js +41 -3
  427. package/dist/mcp/handlers/task-handlers.d.ts +3 -251
  428. package/dist/mcp/handlers/task-handlers.js +6 -828
  429. package/dist/mcp/handlers/task-inference.d.ts +26 -0
  430. package/dist/mcp/handlers/task-inference.js +156 -0
  431. package/dist/mcp/handlers/task-learning-handlers.d.ts +92 -0
  432. package/dist/mcp/handlers/task-learning-handlers.js +230 -0
  433. package/dist/mcp/handlers/task-orchestrate-handler.d.ts +73 -0
  434. package/dist/mcp/handlers/task-orchestrate-handler.js +361 -0
  435. package/dist/mcp/protocol-server.js +13 -3
  436. package/dist/mcp/tools/chaos-resilience/inject.d.ts +3 -4
  437. package/dist/mcp/tools/chaos-resilience/inject.js +11 -81
  438. package/dist/mcp/tools/code-intelligence/analyze.js +3 -6
  439. package/dist/mcp/tools/coverage-analysis/index.d.ts +4 -0
  440. package/dist/mcp/tools/coverage-analysis/index.js +8 -2
  441. package/dist/mcp/tools/learning-optimization/dream.d.ts +8 -0
  442. package/dist/mcp/tools/learning-optimization/dream.js +4 -0
  443. package/dist/mcp/tools/visual-accessibility/index.d.ts +7 -0
  444. package/dist/mcp/tools/visual-accessibility/index.js +29 -13
  445. package/dist/shared/events/domain-events.d.ts +2 -0
  446. package/dist/shared/metrics/code-metrics.js +21 -3
  447. package/dist/shared/parsers/typescript-parser.d.ts +6 -0
  448. package/dist/shared/parsers/typescript-parser.js +13 -1
  449. package/package.json +1 -1
  450. package/dist/cli/chunks/adapter-HL7MOCQN.js +0 -2
  451. package/dist/cli/chunks/aqe-learning-engine-OZ2DXB4G.js +0 -2
  452. package/dist/cli/chunks/base-WIM7G3HC.js +0 -2
  453. package/dist/cli/chunks/brain-handler-MPC5SPYI.js +0 -94
  454. package/dist/cli/chunks/browser-workflow-QRKCFVR3.js +0 -2
  455. package/dist/cli/chunks/chunk-4A76VPU4.js +0 -3
  456. package/dist/cli/chunks/chunk-QSGEBCDB.js +0 -62
  457. package/dist/cli/chunks/chunk-UCSK2RMI.js +0 -2
  458. package/dist/cli/chunks/chunk-VXVTFKRA.js +0 -2
  459. package/dist/cli/chunks/chunk-XCNSGSKV.js +0 -3
  460. package/dist/cli/chunks/chunk-XZOYKB22.js +0 -79
  461. package/dist/cli/chunks/chunk-YIDAXOUX.js +0 -8
  462. package/dist/cli/chunks/client-4PNYDFYS.js +0 -2
  463. package/dist/cli/chunks/core-handlers-ODO6LUWQ.js +0 -2
  464. package/dist/cli/chunks/coverage-USPMNKOU.js +0 -50
  465. package/dist/cli/chunks/cross-domain-router-DT4MHJKK.js +0 -2
  466. package/dist/cli/chunks/domain-transfer-L3F6AES2.js +0 -2
  467. package/dist/cli/chunks/dream-QOB3JCOM.js +0 -2
  468. package/dist/cli/chunks/file-discovery-BN76S2PR.js +0 -2
  469. package/dist/cli/chunks/fleet-43YMXACN.js +0 -46
  470. package/dist/cli/chunks/heartbeat-scheduler-3NNP4WCP.js +0 -2
  471. package/dist/cli/chunks/hnsw-adapter-MZR7Y4WF.js +0 -2
  472. package/dist/cli/chunks/hnsw-index-HE4AX22U.js +0 -2
  473. package/dist/cli/chunks/hybrid-backend-IHUHB3Y2.js +0 -2
  474. package/dist/cli/chunks/impact-analyzer-FI6GI6PD.js +0 -2
  475. package/dist/cli/chunks/init-wizard-WLQKH5Y5.js +0 -2
  476. package/dist/cli/chunks/kernel-2WZOQEZS.js +0 -2
  477. package/dist/cli/chunks/knowledge-graph-G3LVKK6P.js +0 -2
  478. package/dist/cli/chunks/learning-QUCMBD77.js +0 -122
  479. package/dist/cli/chunks/llm-router-service-MM75HKWJ.js +0 -2
  480. package/dist/cli/chunks/load-test-BEWEE44J.js +0 -2
  481. package/dist/cli/chunks/memory-backend-NYKBBKZR.js +0 -2
  482. package/dist/cli/chunks/pattern-null-store-QGPUIV6M.js +0 -2
  483. package/dist/cli/chunks/project-root-C7ELXZRK.js +0 -2
  484. package/dist/cli/chunks/protocol-executor-SUVE33BM.js +0 -2
  485. package/dist/cli/chunks/qe-reasoning-bank-YWZMMGJB.js +0 -2
  486. package/dist/cli/chunks/queen-coordinator-ZFAKXRN7.js +0 -2
  487. package/dist/cli/chunks/router-4FTAVYLJ.js +0 -2
  488. package/dist/cli/chunks/routing-feedback-IO2KOWMJ.js +0 -2
  489. package/dist/cli/chunks/rvf-dual-writer-KCIRNE7C.js +0 -2
  490. package/dist/cli/chunks/rvf-migration-adapter-MFC5WTJU.js +0 -2
  491. package/dist/cli/chunks/rvf-native-adapter-I3KWHE7X.js +0 -2
  492. package/dist/cli/chunks/safe-db-QXDZ6QY3.js +0 -2
  493. package/dist/cli/chunks/schedule-CZKD6RIY.js +0 -2
  494. package/dist/cli/chunks/scheduler-BLA3Q4CH.js +0 -2
  495. package/dist/cli/chunks/sqlite-persistence-XIUYDJC4.js +0 -2
  496. package/dist/cli/chunks/task-handler-P6IFLCKP.js +0 -62
  497. package/dist/cli/chunks/task-handlers-DPWMUKFC.js +0 -9
  498. package/dist/cli/chunks/test-runner-process-46IPK3GH.js +0 -2
  499. package/dist/cli/chunks/tree-sitter-wasm-parser-MOI2WWNJ.js +0 -2
  500. package/dist/cli/chunks/unified-memory-FL26RTV3.js +0 -2
  501. package/dist/cli/chunks/unified-memory-hnsw-E2BPTH3U.js +0 -2
  502. package/dist/cli/chunks/unified-persistence-5ZOUPKHF.js +0 -2
  503. package/dist/cli/chunks/visual-security-IJVPO5FA.js +0 -2
  504. package/dist/cli/chunks/witness-chain-5FAFCQKP.js +0 -2
  505. package/dist/cli/chunks/witness-chain-V2M32W5D.js +0 -2
  506. package/dist/cli/chunks/workflow-orchestrator-3JLF3IX7.js +0 -2
@@ -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
  });
@@ -16,6 +16,7 @@
16
16
  * Either one makes the evidence insufficient: no verdict may pass on it.
17
17
  */
18
18
  import type { FileCoverage } from '../../domains/coverage-analysis/interfaces';
19
+ import type { ExcludedCoverageEntry } from '../../domains/coverage-analysis/collected-metrics.js';
19
20
  /** The report is older than these source files. */
20
21
  export interface StaleReport {
21
22
  reportPath: string;
@@ -35,6 +36,17 @@ export interface CoverageEvidence {
35
36
  source: string;
36
37
  readable: boolean;
37
38
  };
39
+ /**
40
+ * #1219: report entries left out of the figures because they are not a
41
+ * measurement of a project file (outside the root, a Windows path on POSIX,
42
+ * or one file under two spellings).
43
+ */
44
+ excludedEntries?: ExcludedCoverageEntry[];
45
+ /**
46
+ * #1219: project files the report lists under two spellings. Which entry is
47
+ * right is unknown, so they are UNMEASURED and the evidence is insufficient.
48
+ */
49
+ conflictingFiles?: string[];
38
50
  }
39
51
  /**
40
52
  * Production source files under a directory `target` that the report has no
@@ -66,10 +78,17 @@ export declare function assessCoverageEvidence(report: {
66
78
  }, measuredFiles: FileCoverage[], projectRoot: string, target: string, options?: {
67
79
  reportPath?: string;
68
80
  checkCompleteness?: boolean;
81
+ excluded?: ExcludedCoverageEntry[];
69
82
  }): CoverageEvidence;
70
83
  /**
71
84
  * Why the evidence is insufficient, one sentence per problem; empty when it is
72
85
  * complete. Shared by MCP and CLI so the wording cannot drift.
73
86
  */
74
87
  export declare function describeEvidence(evidence: CoverageEvidence | undefined, projectRoot: string): string[];
88
+ /**
89
+ * #1219: one line naming the report entries left out of the figures as not
90
+ * project files (empty when none were). A note, not an evidence gap: those
91
+ * entries never were the project's coverage. Shared by MCP and CLI.
92
+ */
93
+ export declare function describeExcludedEntries(evidence: CoverageEvidence | undefined): string[];
75
94
  //# sourceMappingURL=coverage-evidence.d.ts.map
@@ -115,12 +115,16 @@ export function assessCoverageEvidence(report, measuredFiles, projectRoot, targe
115
115
  const stale = options.reportPath
116
116
  ? findStaleness(options.reportPath, [...sources].filter(file => fs.existsSync(file)))
117
117
  : undefined;
118
+ const excluded = options.excluded ?? [];
119
+ const conflicting = [...new Set(excluded.flatMap(e => (e.file ? [e.file] : [])))].sort();
118
120
  return {
119
- status: unmeasured.length > 0 || stale ? 'insufficient-evidence' : 'complete',
121
+ status: unmeasured.length > 0 || stale || conflicting.length > 0 ? 'insufficient-evidence' : 'complete',
120
122
  unmeasuredFiles: unmeasured,
121
- targetFiles: sources.size,
123
+ targetFiles: sources.size + conflicting.filter(file => !sources.has(file)).length,
122
124
  ...(stale ? { stale } : {}),
123
125
  ...(coverageScope ? { coverageScope } : {}),
126
+ ...(excluded.length > 0 ? { excludedEntries: excluded } : {}),
127
+ ...(conflicting.length > 0 ? { conflictingFiles: conflicting } : {}),
124
128
  };
125
129
  }
126
130
  const MAX_LISTED = 5;
@@ -148,6 +152,12 @@ export function describeEvidence(evidence, projectRoot) {
148
152
  'the report with coverage for the whole target, or exclude files that are not meant to be measured in the ' +
149
153
  `coverage tool's include/exclude config.${scopeNote}`);
150
154
  }
155
+ const conflicting = evidence.conflictingFiles ?? [];
156
+ if (conflicting.length > 0) {
157
+ reasons.push(`${conflicting.length} source file${conflicting.length === 1 ? ' is' : 's are'} listed in the coverage ` +
158
+ 'report under two spellings (e.g. `./src/a.ts` and `src/a.ts`), so which entry is right is unknown; ' +
159
+ `they are UNMEASURED and left out of the figures: ${listFiles(conflicting, projectRoot)}`);
160
+ }
151
161
  if (evidence.stale) {
152
162
  const m = evidence.stale.newerFiles.length;
153
163
  reasons.push(`the coverage report ${path.relative(projectRoot, evidence.stale.reportPath) || evidence.stale.reportPath} ` +
@@ -156,4 +166,23 @@ export function describeEvidence(evidence, projectRoot) {
156
166
  }
157
167
  return reasons;
158
168
  }
169
+ const EXCLUDED_WHY = {
170
+ 'outside-project': 'outside the project root',
171
+ 'windows-path': 'a Windows path, which cannot name a file here',
172
+ 'duplicate-spelling': 'a second spelling of a file the report already lists',
173
+ };
174
+ /**
175
+ * #1219: one line naming the report entries left out of the figures as not
176
+ * project files (empty when none were). A note, not an evidence gap: those
177
+ * entries never were the project's coverage. Shared by MCP and CLI.
178
+ */
179
+ export function describeExcludedEntries(evidence) {
180
+ const outside = (evidence?.excludedEntries ?? []).filter(e => e.reason !== 'duplicate-spelling');
181
+ if (outside.length === 0)
182
+ return [];
183
+ const shown = outside.slice(0, MAX_LISTED).map(e => `${e.path} (${EXCLUDED_WHY[e.reason]})`);
184
+ const more = outside.length > MAX_LISTED ? `, … ${outside.length - MAX_LISTED} more` : '';
185
+ return [`${outside.length} coverage report entr${outside.length === 1 ? 'y is' : 'ies are'} not a project file and ` +
186
+ `${outside.length === 1 ? 'is' : 'are'} left out of the figures: ${shown.join(', ')}${more}.`];
187
+ }
159
188
  //# sourceMappingURL=coverage-evidence.js.map
@@ -9,7 +9,7 @@ import { toError } from '../../shared/error-utils.js';
9
9
  import { requirePayloadPath } from '../../shared/io/payload-path-guard.js';
10
10
  import { buildEstimatedCoverage, collectRustCoverage, findCargoRoot, isCoverageExecDisabled, isRustProject, } from './coverage-collection.js';
11
11
  import { describeNoData, evaluateCoverageForTarget, isUnmeasured, packageFilterForTarget, resolveExistingCoverage, scopeCoverageToTarget, reconcileRecommendations, thresholdVerdict, } from './coverage-target.js';
12
- import { describeEvidence } from './coverage-evidence.js';
12
+ import { describeEvidence, describeExcludedEntries } from './coverage-evidence.js';
13
13
  import { randomUUID } from 'crypto';
14
14
  import * as path from 'path';
15
15
  import { describeRunFailure, runJsCoverage, testRunStatus } from './coverage-runner.js';
@@ -289,6 +289,8 @@ export function registerCoverageHandlers(ctx) {
289
289
  if (evidenceReasons.length > 0) {
290
290
  warnings.push(`INSUFFICIENT EVIDENCE — the threshold is not met on this report: ${evidenceReasons.join('; ').replace(/\.?$/, '.')}`);
291
291
  }
292
+ // #1219: entries that are not project files are named, not silently dropped.
293
+ warnings.push(...describeExcludedEntries(evidence));
292
294
  // #569: the analyzer generates recommendations from the summary numbers.
293
295
  // When branch or function data was never collected, those numbers are 0
294
296
  // by construction, and the resulting advice ("Branch coverage is
@@ -325,6 +327,8 @@ export function registerCoverageHandlers(ctx) {
325
327
  evidenceStatus: evidence.status,
326
328
  unmeasuredFiles: evidence.unmeasuredFiles,
327
329
  ...(evidence.stale ? { staleReport: evidence.stale } : {}),
330
+ ...(evidence.conflictingFiles ? { conflictingFiles: evidence.conflictingFiles } : {}),
331
+ ...(evidence.excludedEntries ? { excludedReportEntries: evidence.excludedEntries } : {}),
328
332
  } : {}),
329
333
  delta: report.delta,
330
334
  recommendations,
@@ -26,6 +26,7 @@ import { loadCoverageReport, parseCoberturaXml, parseCoverageJson, parseCoverage
26
26
  import { isTestPath } from './coverage-collection.js';
27
27
  import { assessCoverageEvidence } from './coverage-evidence.js';
28
28
  import { findProjectRoot } from '../../kernel/project-root.js';
29
+ import { classifyProjectCoveragePaths } from '../../domains/coverage-analysis/collected-metrics.js';
29
30
  // ============================================================================
30
31
  // Project root
31
32
  // ============================================================================
@@ -428,7 +429,12 @@ export function scopeCoverageToTarget(data, root, target) {
428
429
  export function evaluateCoverageForTarget(report, projectRoot, target, options = {}) {
429
430
  if (options.numTotalTests === 0)
430
431
  return { status: 'no-data', reason: 'no-tests-ran' };
431
- const scoped = scopeCoverageToTarget(report, projectRoot, target);
432
+ // #1219: an entry that is not a measurement of a project file (outside the
433
+ // root, a Windows path on POSIX, one file under two spellings) is not part
434
+ // of the figures — the same rule as the per-file records (#1030).
435
+ const inTarget = scopeCoverageToTarget(report, projectRoot, target);
436
+ const { keys, excluded } = classifyProjectCoveragePaths(inTarget.map(f => f.path), projectRoot);
437
+ const scoped = inTarget.filter(f => keys.has(f.path));
432
438
  if (scoped.length === 0)
433
439
  return { status: 'no-data', reason: 'target-not-covered' };
434
440
  // Coverage OF a test file is not production coverage (#569). A report with
@@ -438,6 +444,7 @@ export function evaluateCoverageForTarget(report, projectRoot, target, options =
438
444
  return { status: 'no-data', reason: 'test-only-report' };
439
445
  const evidence = assessCoverageEvidence(report, production, projectRoot, target, {
440
446
  reportPath: options.reportPath, checkCompleteness: options.checkCompleteness,
447
+ excluded: excluded.filter(e => !e.file || !isTestPath(e.file, projectRoot)),
441
448
  });
442
449
  return { status: 'measured', files: production, evidence };
443
450
  }
@@ -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) {
@@ -222,8 +222,16 @@ export function registerQualityHandlers(ctx) {
222
222
  const insufficient = sufficiency.evidenceStatus !== 'measured';
223
223
  const passed = !insufficient && measuredFailures.length === 0 && report.score.overall >= threshold;
224
224
  const recommendations = report.recommendations.map(r => `[${r.type}] ${r.title}: ${r.description}`);
225
+ // A score that leaves out unmeasured metrics is not the overall score:
226
+ // -1 with the reason, as the gate's overallScore since #1223. The score
227
+ // over the measured metrics stays available, labelled as a subset.
228
+ const subsetScore = report.subsetScore ?? report.score.overall;
225
229
  return ok({
226
- qualityScore: report.score.overall,
230
+ qualityScore: insufficient ? UNMEASURED : report.score.overall,
231
+ ...(insufficient ? {
232
+ qualityScoreReason: `not computed: ${sufficiency.unmeasured.join(', ')} unmeasured`,
233
+ ...(subsetScore >= 0 ? { subsetScore } : {}),
234
+ } : {}),
227
235
  passed,
228
236
  threshold,
229
237
  metrics: {
@@ -263,8 +263,12 @@ export function registerSecurityHandlers(ctx) {
263
263
  });
264
264
  if (result.success) {
265
265
  dastResult = result.value;
266
- // Legacy DAST results contain findings, but no execution coverage receipt.
267
- engines.push({ ...unverifiedEngine('dast', 'url'), target: payload.targetUrl });
266
+ // #1135: probes the target did not answer make DAST partial; the
267
+ // findings it did collect are kept. A complete run still has no
268
+ // execution coverage receipt, so it stays unverified.
269
+ engines.push(dastResult.status === 'incomplete'
270
+ ? { ...partialDastEngine(dastResult.failedRequests), target: payload.targetUrl }
271
+ : { ...unverifiedEngine('dast', 'url'), target: payload.targetUrl });
268
272
  }
269
273
  else {
270
274
  engines.push({ ...failedEngine('dast', 'url', result.error), target: payload.targetUrl });
@@ -399,6 +403,12 @@ function safeErrorCode(error) {
399
403
  const code = error?.code;
400
404
  return typeof code === 'string' && /^[A-Z0-9_]{1,32}$/.test(code) ? code : 'UNKNOWN';
401
405
  }
406
+ function partialDastEngine(failedRequests) {
407
+ const codes = [...new Set(failedRequests.map(failure => failure.code))].join(', ');
408
+ return { id: 'dast', requested: true, required: true, status: 'partial', scope: 'url',
409
+ ruleCoverage: 'unknown', errors: [`dast incomplete: ${failedRequests.length} request(s) not answered (${codes}).`],
410
+ limitations: failedRequests.slice(0, 20).map(failure => `dast not answered: ${failure.url} (${failure.code}: ${failure.reason})`) };
411
+ }
402
412
  function unverifiedEngine(id, scope) {
403
413
  return { id, requested: true, required: true, status: 'unverified', scope,
404
414
  ruleCoverage: 'unknown', errors: [], limitations: [`${id} returned no execution receipt; coverage is unverified.`] };
@@ -164,11 +164,16 @@ export class SecurityAuditProtocol {
164
164
  const dastResult = await this.runDASTScan(this.config.targetUrl);
165
165
  if (dastResult.success) {
166
166
  this.currentAudit = { ...this.currentAudit, dastResult: dastResult.value };
167
+ if (dastResult.value.status !== 'complete') {
168
+ this.recordIncompleteCheck(`DAST scan is incomplete: ${dastResult.value.error ?? 'some requests were not answered'}`);
169
+ }
167
170
  this.recordIncompleteCheck('DAST coverage is unverified: the scanner returned no execution receipt');
168
171
  await this.publishVulnerabilities(dastResult.value.vulnerabilities);
169
172
  }
170
173
  else {
171
- this.recordIncompleteCheck('DAST scan did not complete');
174
+ // #1135: keep the scanner's reason (DAST_AUTHENTICATION_FAILED, DAST_TARGET_UNAVAILABLE, ...).
175
+ const code = dastResult.error.code;
176
+ this.recordIncompleteCheck(`DAST scan did not complete${typeof code === 'string' ? ` (${code})` : ''}: ${dastResult.error.message}`);
172
177
  }
173
178
  }
174
179
  else if (auditOptions.includeDAST) {
@@ -284,7 +289,10 @@ export class SecurityAuditProtocol {
284
289
  // Convert scanner result to protocol result format
285
290
  return ok({
286
291
  vulnerabilities: scanResult.value.vulnerabilities,
292
+ // #1221: this scanner does not look up latest versions; empty is not "up to date".
287
293
  outdatedPackages: [],
294
+ outdatedStatus: 'not-run',
295
+ outdatedUnchecked: [],
288
296
  summary: scanResult.value.summary,
289
297
  status: scanResult.value.status,
290
298
  measured: scanResult.value.measured,
@@ -360,6 +368,8 @@ export class SecurityAuditProtocol {
360
368
  if (scanResult.success) {
361
369
  return ok(scanResult.value);
362
370
  }
371
+ // #1135: the scanner's own failure, with its code, not a generic "unavailable".
372
+ return err(scanResult.error);
363
373
  }
364
374
  catch (scannerError) {
365
375
  // Scanner unavailable - log error
@@ -37,6 +37,7 @@ function qualityReport(result) {
37
37
  : [];
38
38
  return {
39
39
  ...(typeof score.overall === 'number' ? { qualityScore: score.overall } : {}),
40
+ ...(typeof data.subsetScore === 'number' ? { subsetScore: data.subsetScore } : {}),
40
41
  passed: false,
41
42
  gateEvaluated: false,
42
43
  metrics: Object.fromEntries(metrics.filter(m => m.name && typeof m.value === 'number').map(m => [m.name, m.value])),
@@ -501,11 +501,15 @@ ${data.recommendations.map((r, i) => `${i + 1}. ${r}`).join('\n')}
501
501
  ## Quality Score
502
502
 
503
503
  ${typeof data.qualityScore !== 'number' ? 'N/A — measured gate uses individual checks.'
504
- : data.qualityScore < 0 ? 'Not measured — no requested metric had measured data (#1011).'
505
- : data.evidenceStatus === 'insufficient-evidence'
506
- ? `Subset score over measured metrics: ${data.qualityScore.toFixed(1)} (not a verdict)`
507
- + (data.scoreBasis?.length ? `\nBased on: ${data.scoreBasis.join(', ')}` : '')
508
- : `**${data.qualityScore.toFixed(1)}** / 100`}
504
+ : data.qualityScore < 0 && typeof data.subsetScore === 'number'
505
+ ? `Not computed — unmeasured: ${data.unmeasured?.join(', ') || 'unknown'}.\n`
506
+ + `Subset score over measured metrics: ${data.subsetScore.toFixed(1)} (not a verdict)`
507
+ + (data.scoreBasis?.length ? `\nBased on: ${data.scoreBasis.join(', ')}` : '')
508
+ : data.qualityScore < 0 ? 'Not measured — no requested metric had measured data (#1011).'
509
+ : data.evidenceStatus === 'insufficient-evidence'
510
+ ? `Subset score over measured metrics: ${data.qualityScore.toFixed(1)} (not a verdict)`
511
+ + (data.scoreBasis?.length ? `\nBased on: ${data.scoreBasis.join(', ')}` : '')
512
+ : `**${data.qualityScore.toFixed(1)}** / 100`}
509
513
 
510
514
  ## Metrics
511
515
 
@@ -15,6 +15,7 @@
15
15
  import { v4 as uuidv4 } from 'uuid';
16
16
  import { isCallerInputError, toErrorMessage } from '../shared/error-utils.js';
17
17
  import { InsufficientQualityEvidenceError } from '../domains/quality-assessment/quality-evidence.js';
18
+ import { isLearnableResult } from '../learning/learnable-result.js';
18
19
  import { createResultSaver } from './result-saver.js';
19
20
  import { getProjectStorePath } from '../kernel/project-root.js';
20
21
  import { createLogger } from '../logging/logger-factory.js';
@@ -487,8 +488,12 @@ export class DomainTaskExecutor {
487
488
  };
488
489
  }
489
490
  await this.publishTaskCompleted(task.id, result.value, domain);
490
- // ADR-051: Record successful outcome
491
- this.recordOutcome(task, routingTier, true, Date.now() - startTime).catch((e) => { logger.warn('recordOutcome failed', { error: e instanceof Error ? e.message : String(e), taskId: task.id }); });
491
+ // ADR-051: Record successful outcome. #1020: a run without evidence (a
492
+ // coverage estimate, an insufficient-evidence quality run) completed as a
493
+ // task but is not a success to learn routing from.
494
+ if (isLearnableResult(domain, result.value)) {
495
+ this.recordOutcome(task, routingTier, true, Date.now() - startTime).catch((e) => { logger.warn('recordOutcome failed', { error: e instanceof Error ? e.message : String(e), taskId: task.id }); });
496
+ }
492
497
  // Save results to files if enabled. A task can opt out per call with
493
498
  // payload.saveResults === false (#925); the executor-wide config still
494
499
  // acts as the global switch.
@@ -89,6 +89,7 @@ export declare class ChaosEngineerService implements IChaosEngineeringService {
89
89
  private executeCommandProbe;
90
90
  private executeMetricProbe;
91
91
  private performFaultInjection;
92
+ private notInjected;
92
93
  private injectLatency;
93
94
  private injectError;
94
95
  private injectTimeout;
@@ -609,32 +609,25 @@ Provide:
609
609
  }
610
610
  return err(new Error(`Unknown fault type: ${fault.type}`));
611
611
  }
612
+ // #1258: these fault types need infrastructure this process does not control
613
+ // (a network proxy, service mesh, firewall or DNS server). They used to log a
614
+ // note and return ok(1), so an experiment reported a fault that never ran.
615
+ // They now fail with the reason, and injectFault() records injected: false.
616
+ notInjected(fault, requirement) {
617
+ return err(new Error(`${fault.type} fault not injected into ${fault.target.selector}: requires ${requirement}, ` +
618
+ 'which this process does not control. Nothing was changed on the target.'));
619
+ }
612
620
  async injectLatency(fault) {
613
- // Latency injection is typically done at proxy/network level
614
- // For simulation, we store the config and check during probe execution
615
- const latencyMs = fault.parameters.latencyMs ?? 100;
616
- logger.info(`Latency injection configured: ${latencyMs}ms for ${fault.target.selector}`);
617
- logger.info(`Note: Actual latency injection requires network proxy (e.g., Toxiproxy, tc)`);
618
- return ok(1);
621
+ return this.notInjected(fault, 'a network proxy (e.g., Toxiproxy, tc)');
619
622
  }
620
623
  async injectError(fault) {
621
- // Error injection typically requires proxy/service mesh
622
- const errorCode = fault.parameters.errorCode ?? 500;
623
- logger.info(`Error injection configured: ${errorCode} for ${fault.target.selector}`);
624
- logger.info(`Note: Actual error injection requires service mesh (e.g., Istio, Linkerd)`);
625
- return ok(1);
624
+ return this.notInjected(fault, 'a service mesh or proxy (e.g., Istio, Linkerd, Toxiproxy)');
626
625
  }
627
626
  async injectTimeout(fault) {
628
- // Timeout injection via proxy configuration
629
- logger.info(`Timeout injection configured for ${fault.target.selector}`);
630
- logger.info(`Note: Actual timeout injection requires network proxy configuration`);
631
- return ok(1);
627
+ return this.notInjected(fault, 'a network proxy (e.g., Toxiproxy)');
632
628
  }
633
629
  async injectPacketLoss(fault) {
634
- const lossPercent = fault.parameters.packetLossPercent ?? 10;
635
- logger.info(`Packet loss configured: ${lossPercent}% for ${fault.target.selector}`);
636
- logger.info(`Note: Actual packet loss requires tc/iptables (Linux) or similar`);
637
- return ok(1);
630
+ return this.notInjected(fault, 'tc/iptables (Linux) or a network proxy');
638
631
  }
639
632
  async injectCpuStress(fault) {
640
633
  // Real CPU stress implementation using busy loops
@@ -689,34 +682,18 @@ Provide:
689
682
  }
690
683
  }
691
684
  async injectDiskStress(fault) {
692
- // Disk stress would require file system operations
693
- logger.info(`Disk stress configured for ${fault.target.selector}`);
694
- logger.info(`Note: Actual disk stress requires file system write permissions`);
695
- return ok(1);
685
+ return this.notInjected(fault, 'file system stress tooling (e.g., stress-ng)');
696
686
  }
697
687
  async injectNetworkPartition(fault) {
698
- // Network partition typically requires iptables or similar
699
- logger.info(`Network partition configured for ${fault.target.selector}`);
700
- logger.info(`Note: Actual network partition requires iptables/firewall rules`);
701
- return ok(1);
688
+ return this.notInjected(fault, 'iptables/firewall rules');
702
689
  }
703
690
  async injectDnsFailure(fault) {
704
- // DNS failure injection via /etc/hosts or DNS server configuration
705
- logger.info(`DNS failure configured for ${fault.target.selector}`);
706
- logger.info(`Note: Actual DNS failure requires DNS server or /etc/hosts modification`);
707
- return ok(1);
691
+ return this.notInjected(fault, 'a DNS server or /etc/hosts modification');
708
692
  }
709
693
  async injectProcessKill(fault) {
710
- // Process kill via system commands
711
- const processPattern = fault.target.selector;
712
- logger.info(`Process kill configured for pattern: ${processPattern}`);
713
- logger.info(`Note: Actual process kill requires appropriate permissions`);
714
- // In dry-run mode or without permissions, just log
715
- if (this.config.enableDryRun) {
716
- logger.info(`Would kill processes matching: ${processPattern}`);
717
- return ok(0);
718
- }
719
- return ok(1);
694
+ // No process is signalled here, so a dry run and a real run both report
695
+ // the fault as not injected rather than counting a target as affected.
696
+ return this.notInjected(fault, 'process signalling with appropriate permissions (e.g., Chaos Monkey, Litmus)');
720
697
  }
721
698
  async performFaultRemoval(fault) {
722
699
  logger.info(`Removing fault: ${fault.id} (${fault.type})`);
@@ -817,14 +794,15 @@ Provide:
817
794
  if (!finalSteadyState) {
818
795
  return 'failed';
819
796
  }
820
- if (execution.result.hypothesisValidated) {
821
- return 'completed';
822
- }
823
- // Check if any faults failed to inject
797
+ // #1258: a fault that was not injected means the experiment did not run as
798
+ // designed, so a hypothesis "validated" without it is not a completed run.
824
799
  const failedFaults = execution.result.faultResults.filter((f) => !f.injected);
825
800
  if (failedFaults.length > 0) {
826
801
  return 'failed';
827
802
  }
803
+ if (execution.result.hypothesisValidated) {
804
+ return 'completed';
805
+ }
828
806
  return 'completed';
829
807
  }
830
808
  async rollbackExperiment(experiment) {
@@ -2,10 +2,10 @@
2
2
  * Code Intelligence - GNN Integration
3
3
  * Extracted from coordinator.ts for CQ-004 (file size reduction)
4
4
  *
5
- * Contains: GNN embedding indexing, code embedding generation, GNN search
5
+ * Contains: GNN embedding indexing, code embedding generation
6
6
  */
7
7
  import { QEGNNEmbeddingIndex } from '../../integrations/ruvector/wrappers';
8
- import type { ImpactRequest, SearchResult } from './interfaces';
8
+ import type { ImpactRequest } from './interfaces';
9
9
  import { FileReader } from '../../shared/io';
10
10
  export declare function initializeGNNIndex(domainKey: string): QEGNNEmbeddingIndex;
11
11
  /**
@@ -23,24 +23,10 @@ export declare function generateGraphMAEEmbeddings(fileReader: FileReader, paths
23
23
  * Generate code embedding using semantic features
24
24
  */
25
25
  export declare function generateCodeEmbedding(path: string, content: string): Promise<number[]>;
26
- /**
27
- * Search code with GNN for enhanced similarity
28
- */
29
- export declare function searchCodeWithGNN(gnnIndex: QEGNNEmbeddingIndex, query: string): Promise<Array<{
30
- file: string;
31
- similarity: number;
32
- }>>;
33
26
  /**
34
27
  * Enhance impact analysis with GNN semantic similarity
35
28
  */
36
29
  export declare function enhanceImpactAnalysisWithGNN(gnnIndex: QEGNNEmbeddingIndex, fileReader: FileReader, request: ImpactRequest): Promise<void>;
37
- /**
38
- * Merge search results from semantic search and GNN
39
- */
40
- export declare function mergeSearchResults(semanticResults: SearchResult[], gnnResults: Array<{
41
- file: string;
42
- similarity: number;
43
- }>): SearchResult[];
44
30
  /**
45
31
  * R6: Train GNN embeddings with memory-bounded cold-tier training.
46
32
  * Uses LRU hotset caching when the graph exceeds hotsetSize, falling