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
@@ -19,6 +19,7 @@ import { EventBus, MemoryBackend, AgentCoordinator } from '../../kernel/interfac
19
19
  import type { HybridRouter } from '../../shared/llm/router/hybrid-router.js';
20
20
  import { QualityAssessmentAPI, GateEvaluationRequest, GateResult, QualityAnalysisRequest, QualityReport, DeploymentRequest, DeploymentAdvice, ComplexityRequest, ComplexityReport, QualityMetrics } from './interfaces';
21
21
  import { ClaimVerifierService } from '../../agents/claim-verifier/index.js';
22
+ import * as ReportHelpers from './coordinator-reports.js';
22
23
  import type { QueenMinCutBridge } from '../../coordination/mincut/queen-integration';
23
24
  import type { ConsensusStats } from '../../coordination/consensus';
24
25
  import { BaseDomainCoordinator, type BaseDomainCoordinatorConfig } from '../base-domain-coordinator.js';
@@ -154,19 +155,13 @@ export declare class QualityAssessmentCoordinator extends BaseDomainCoordinator<
154
155
  generateReport(options: {
155
156
  format: 'json' | 'html' | 'markdown';
156
157
  includeRecommendations?: boolean;
157
- }): Promise<Result<{
158
- content: string;
159
- format: string;
160
- }, Error>>;
158
+ }): ReturnType<typeof ReportHelpers.generateReport>;
161
159
  /**
162
- * Get quality dashboard overview
160
+ * Get quality dashboard overview. #1020: built from measured evidence only;
161
+ * unmeasured metrics are -1 and listed in `unmeasured`.
163
162
  * @returns Result containing dashboard data
164
163
  */
165
- getQualityDashboard(): Promise<Result<{
166
- overallScore: number;
167
- metrics: QualityMetrics;
168
- trends: Record<string, number>;
169
- }, Error>>;
164
+ getQualityDashboard(): ReturnType<typeof ReportHelpers.getQualityDashboard>;
170
165
  /**
171
166
  * Analyze project risks
172
167
  * @param options - Risk analysis options
@@ -175,17 +170,10 @@ export declare class QualityAssessmentCoordinator extends BaseDomainCoordinator<
175
170
  analyzeRisks(options: {
176
171
  scope: 'project' | 'module' | 'file';
177
172
  includeSecurityRisks?: boolean;
178
- }): Promise<Result<{
179
- risks: Array<{
180
- id: string;
181
- severity: string;
182
- description: string;
183
- category: string;
184
- }>;
185
- overallRiskLevel: 'low' | 'medium' | 'high' | 'critical';
186
- }, Error>>;
173
+ }): ReturnType<typeof ReportHelpers.analyzeRisks>;
187
174
  /**
188
- * Evaluate a quality gate (simplified API)
175
+ * Evaluate a quality gate (simplified API). #1020: a metric the caller does
176
+ * not supply is unmeasured, so the gate cannot pass on it.
189
177
  * @param options - Quality gate evaluation options
190
178
  * @returns Result containing gate evaluation
191
179
  */
@@ -194,26 +182,21 @@ export declare class QualityAssessmentCoordinator extends BaseDomainCoordinator<
194
182
  metrics: Partial<QualityMetrics>;
195
183
  }): Promise<Result<{
196
184
  passed: boolean;
185
+ /** 0-100; -1 when a configured check is unmeasured. */
197
186
  score: number;
198
187
  violations: string[];
188
+ evidenceStatus?: GateResult['evidenceStatus'];
189
+ unmeasured?: string[];
199
190
  }, Error>>;
200
191
  /**
201
- * Assess deployment readiness
192
+ * Assess deployment readiness. #1020: never ready while an input is unmeasured.
202
193
  * @param options - Deployment readiness options
203
194
  * @returns Result containing readiness assessment
204
195
  */
205
196
  assessDeploymentReadiness(options: {
206
197
  environment: 'development' | 'staging' | 'production';
207
198
  changeSet: string[];
208
- }): Promise<Result<{
209
- ready: boolean;
210
- risks: Array<{
211
- id: string;
212
- severity: string;
213
- description: string;
214
- }>;
215
- score: number;
216
- }, Error>>;
199
+ }): ReturnType<typeof ReportHelpers.assessDeploymentReadiness>;
217
200
  /**
218
201
  * Analyze technical debt
219
202
  * @param options - Technical debt analysis options
@@ -222,16 +205,7 @@ export declare class QualityAssessmentCoordinator extends BaseDomainCoordinator<
222
205
  analyzeTechnicalDebt(options: {
223
206
  projectPath: string;
224
207
  includeCodeSmells?: boolean;
225
- }): Promise<Result<{
226
- totalDebt: number;
227
- items: Array<{
228
- file: string;
229
- type: string;
230
- effort: number;
231
- description: string;
232
- }>;
233
- debtRatio: number;
234
- }, Error>>;
208
+ }): ReturnType<typeof ReportHelpers.analyzeTechnicalDebt>;
235
209
  private spawnQualityGateAgent;
236
210
  private spawnQualityAnalyzerAgent;
237
211
  private spawnDeploymentAdvisorAgent;
@@ -236,7 +236,9 @@ export class QualityAssessmentCoordinator extends BaseDomainCoordinator {
236
236
  // V3 Integration: Use consensus for borderline cases (CONSENSUS-MIXIN-001)
237
237
  // Borderline cases are pass/fail decisions where metrics are close to thresholds
238
238
  let finalResult = result.value;
239
- if (this.config.enableConsensus && this.isBorderlineGateResult(request.metrics, request.thresholds, result.value)) {
239
+ // #1020: a verdict on missing evidence is not borderline; it is not a verdict.
240
+ if (this.config.enableConsensus && result.value.evidenceStatus !== 'insufficient-evidence'
241
+ && this.isBorderlineGateResult(request.metrics, request.thresholds, result.value)) {
240
242
  const consensusResult = await this.verifyGateVerdictWithConsensus(effectiveRequest, result.value);
241
243
  if (consensusResult) {
242
244
  finalResult = consensusResult;
@@ -544,7 +546,8 @@ export class QualityAssessmentCoordinator extends BaseDomainCoordinator {
544
546
  return ReportHelpers.generateReport(this.memory, options);
545
547
  }
546
548
  /**
547
- * Get quality dashboard overview
549
+ * Get quality dashboard overview. #1020: built from measured evidence only;
550
+ * unmeasured metrics are -1 and listed in `unmeasured`.
548
551
  * @returns Result containing dashboard data
549
552
  */
550
553
  async getQualityDashboard() {
@@ -559,7 +562,8 @@ export class QualityAssessmentCoordinator extends BaseDomainCoordinator {
559
562
  return ReportHelpers.analyzeRisks(this.memory, options);
560
563
  }
561
564
  /**
562
- * Evaluate a quality gate (simplified API)
565
+ * Evaluate a quality gate (simplified API). #1020: a metric the caller does
566
+ * not supply is unmeasured, so the gate cannot pass on it.
563
567
  * @param options - Quality gate evaluation options
564
568
  * @returns Result containing gate evaluation
565
569
  */
@@ -573,10 +577,12 @@ export class QualityAssessmentCoordinator extends BaseDomainCoordinator {
573
577
  passed: result.value.passed,
574
578
  score: result.value.overallScore,
575
579
  violations: result.value.failedChecks,
580
+ ...(result.value.evidenceStatus ? { evidenceStatus: result.value.evidenceStatus } : {}),
581
+ ...(result.value.unmeasured ? { unmeasured: result.value.unmeasured } : {}),
576
582
  });
577
583
  }
578
584
  /**
579
- * Assess deployment readiness
585
+ * Assess deployment readiness. #1020: never ready while an input is unmeasured.
580
586
  * @param options - Deployment readiness options
581
587
  * @returns Result containing readiness assessment
582
588
  */
@@ -34,6 +34,14 @@ export interface MeasuredFileCoverage {
34
34
  function: number | null;
35
35
  statement: number | null;
36
36
  measured: true;
37
+ /**
38
+ * #1219: the line counts behind `line`, so a reader can weight several
39
+ * files by size. Absent on records written before 3.15.13.
40
+ */
41
+ lines?: {
42
+ covered: number;
43
+ total: number;
44
+ };
37
45
  }
38
46
  /**
39
47
  * Return the measured summary to store, or `null` when the payload is not
@@ -53,6 +53,27 @@ export function measuredFileCoverage(record) {
53
53
  if (r.measured !== true || !isPercent(r.line))
54
54
  return null;
55
55
  const opt = (v) => (isPercent(v) ? v : null);
56
- return { line: r.line, branch: opt(r.branch), function: opt(r.function), statement: opt(r.statement), measured: true };
56
+ const lines = lineCounts(r.lines, r.line);
57
+ return {
58
+ line: r.line, branch: opt(r.branch), function: opt(r.function), statement: opt(r.statement), measured: true,
59
+ ...(lines ? { lines } : {}),
60
+ };
61
+ }
62
+ /**
63
+ * #1219: whole, consistent line counts (`covered / total` within rounding of
64
+ * the stored percentage), or `undefined` when the record has none or they do
65
+ * not describe its own percentage.
66
+ */
67
+ function lineCounts(value, line) {
68
+ if (!value || typeof value !== 'object')
69
+ return undefined;
70
+ const { covered, total } = value;
71
+ if (!Number.isSafeInteger(covered) || !Number.isSafeInteger(total))
72
+ return undefined;
73
+ const c = covered;
74
+ const t = total;
75
+ if (t <= 0 || c < 0 || c > t || Math.abs((c / t) * 100 - line) > 0.01)
76
+ return undefined;
77
+ return { covered: c, total: t };
57
78
  }
58
79
  //# sourceMappingURL=coverage-report-event.js.map
@@ -54,7 +54,9 @@ export interface GateResult {
54
54
  gateName: string;
55
55
  passed: boolean;
56
56
  checks: GateCheck[];
57
+ /** 0-100; -1 when any configured check is unmeasured (#1020). */
57
58
  overallScore: number;
59
+ /** Measured checks that failed their threshold; unmeasured checks are not listed (#1020). */
58
60
  failedChecks: string[];
59
61
  /** Gate service evidence state; absent for other gate implementations. */
60
62
  evidenceStatus?: 'measured' | 'insufficient-evidence';
@@ -101,6 +103,12 @@ export interface QualityReport {
101
103
  * value covers `analysedFiles` of `totalFiles`; `failed` lists the gaps.
102
104
  */
103
105
  partial?: PartialQualityMetric[];
106
+ /**
107
+ * The weighted score over the measured metrics only, present when a
108
+ * requested metric is unmeasured. `score.overall` is then -1: a score that
109
+ * leaves out unmeasured metrics is not the overall score (#1223 convention).
110
+ */
111
+ subsetScore?: number;
104
112
  }
105
113
  /** #1021: a file excluded from static analysis, with the reason. */
106
114
  export interface ExcludedQualityFile {
@@ -11,7 +11,10 @@ import { QualityTier, DEFAULT_COHERENCE_GATE_POLICY, } from '../coherence/index.
11
11
  import { createLambdaCalculator, } from '../coherence/lambda-calculator.js';
12
12
  import { createCoherenceGateController, } from '../coherence/gate-controller.js';
13
13
  import { toError } from '../../../shared/error-utils.js';
14
+ import { isMeasuredMetricValue } from '../evidence-sufficiency.js';
14
15
  import { createPartitionDetector, } from '../coherence/partition-detector.js';
16
+ /** #996: the sentinel for an input with no measured value. */
17
+ const UNMEASURED = -1;
15
18
  /**
16
19
  * Default service configuration
17
20
  */
@@ -175,13 +178,23 @@ export class CoherenceGateService extends QualityGateService {
175
178
  * Convert QualityMetrics to coherence input format
176
179
  */
177
180
  convertToCoherenceMetrics(metrics, previousLambda) {
181
+ // #1020: QualityMetrics carries no latency or flaky-test data, so those
182
+ // inputs are unmeasured (-1) instead of an invented "fast, not flaky"
183
+ // value. The total vulnerability count is weighted as critical, so the
184
+ // high/medium breakdown adds nothing when the total was measured.
185
+ const vulns = isMeasuredMetricValue(metrics.securityVulnerabilities) ? 0 : UNMEASURED;
178
186
  return {
179
187
  lineCoverage: metrics.coverage,
180
188
  testPassRate: metrics.testsPassing,
181
189
  criticalVulns: metrics.securityVulnerabilities,
182
- p95Latency: 100, // Default if not provided
190
+ highVulns: vulns,
191
+ mediumVulns: vulns,
192
+ p95Latency: UNMEASURED,
183
193
  targetLatency: 200, // Default target
184
- maintainabilityIndex: 100 - metrics.technicalDebt * 10, // Convert debt hours to index
194
+ maintainabilityIndex: isMeasuredMetricValue(metrics.technicalDebt)
195
+ ? 100 - metrics.technicalDebt * 10 // Convert debt hours to index
196
+ : UNMEASURED,
197
+ flakyTestRatio: UNMEASURED,
185
198
  duplicationPercent: metrics.duplications,
186
199
  previousLambda,
187
200
  };
@@ -126,6 +126,10 @@ export declare class QualityAnalyzerService implements IQualityAnalyzerService {
126
126
  * Never a fixed fallback value.
127
127
  */
128
128
  private collectFileMetrics;
129
+ /**
130
+ * The file's own measured coverage record, or `null`. #1219: never the
131
+ * project-wide `coverage:latest` summary — that is not this file's coverage.
132
+ */
129
133
  private getStoredCoverage;
130
134
  private aggregateMetrics;
131
135
  private calculateQualityScore;
@@ -9,7 +9,7 @@ import { getCodeMetricsAnalyzer } from '../../../shared/metrics/index.js';
9
9
  import { toError } from '../../../shared/error-utils.js';
10
10
  import { safeJsonParse } from '../../../shared/safe-json.js';
11
11
  import { getClaudeModelForTier } from '../../../shared/llm/model-registry.js';
12
- import { measuredCoverageSummary, measuredFileCoverage } from '../coverage-report-event.js';
12
+ import { measuredFileCoverage } from '../coverage-report-event.js';
13
13
  import { fileCoverageLookupKeys } from '../../coverage-analysis/collected-metrics.js';
14
14
  /** Metrics the static analyzer produces when the caller asks for all of them. */
15
15
  const ANALYZER_METRICS = ['coverage', 'complexity', 'maintainability', 'duplication', 'testability'];
@@ -25,6 +25,22 @@ const PARSED_METRICS = new Set(['complexity', 'maintainability', 'testability'])
25
25
  export const MIN_ANALYSED_SHARE = 0.95;
26
26
  /** #1011: the sentinel for "not measured" in score and complexity fields. */
27
27
  const UNMEASURED = -1;
28
+ /**
29
+ * #1219: covered lines over total lines across the files, or `null` when a
30
+ * record has no line counts (a mean of percentages would weight a 10-line
31
+ * file like a 1000-line one).
32
+ */
33
+ function lineWeightedCoverage(records) {
34
+ let covered = 0;
35
+ let total = 0;
36
+ for (const record of records) {
37
+ if (!record.lines)
38
+ return null;
39
+ covered += record.lines.covered;
40
+ total += record.lines.total;
41
+ }
42
+ return total > 0 ? (covered / total) * 100 : null;
43
+ }
28
44
  /** First reasons of a failure list, for a one-line explanation. */
29
45
  function summariseFailures(failures) {
30
46
  return failures.slice(0, 3).map((f) => f.reason).join('; ')
@@ -262,11 +278,16 @@ Focus on:
262
278
  return err(new Error('No source files provided for analysis'));
263
279
  }
264
280
  // Analyze metrics for each file; failures become unmeasured (#1011)
265
- const { fileMetrics, unmeasured, excluded, partial } = await this.collectFileMetrics(sourceFiles, includeMetrics, request.explicitFiles ?? []);
281
+ const { fileMetrics, scopeValues, unmeasured, excluded, partial } = await this.collectFileMetrics(sourceFiles, includeMetrics, request.explicitFiles ?? []);
266
282
  // Calculate aggregated metrics
267
- const metricDetails = this.aggregateMetrics(fileMetrics);
268
- // Calculate overall quality score
269
- const score = this.calculateQualityScore(metricDetails);
283
+ const metricDetails = this.aggregateMetrics(fileMetrics, scopeValues);
284
+ // Calculate overall quality score. With a requested metric unmeasured
285
+ // there is no overall score (-1, as the gate's overallScore since
286
+ // #1223); the score over the measured metrics is kept as subsetScore.
287
+ const computed = this.calculateQualityScore(metricDetails);
288
+ const insufficient = unmeasured.length > 0;
289
+ const score = insufficient ? { ...computed, overall: UNMEASURED } : computed;
290
+ const subsetScore = insufficient && computed.overall >= 0 ? computed.overall : undefined;
270
291
  // Generate trends if enabled
271
292
  const trends = this.config.enableTrendAnalysis
272
293
  ? await this.generateTrends(metricDetails, compareBaseline)
@@ -290,6 +311,7 @@ Focus on:
290
311
  unmeasured,
291
312
  excluded,
292
313
  partial,
314
+ ...(subsetScore !== undefined ? { subsetScore } : {}),
293
315
  };
294
316
  // Store the report
295
317
  await this.storeReport(report, sourceFiles);
@@ -395,6 +417,8 @@ Focus on:
395
417
  const unreadable = [];
396
418
  const readable = [];
397
419
  const missingCoverage = [];
420
+ const coverageRecords = [];
421
+ const scopeValues = {};
398
422
  const explicit = new Set(explicitFiles);
399
423
  const needsAnalysis = requested.some((m) => PARSED_METRICS.has(m) || m === 'duplication');
400
424
  for (const file of files) {
@@ -430,7 +454,8 @@ Focus on:
430
454
  // Coverage requires external data (from test runners) — never fabricate a number
431
455
  const storedCoverage = await this.getStoredCoverage(file);
432
456
  if (storedCoverage !== null) {
433
- metrics.coverage = storedCoverage;
457
+ metrics.coverage = storedCoverage.line;
458
+ coverageRecords.push(storedCoverage);
434
459
  }
435
460
  else {
436
461
  missingCoverage.push(file);
@@ -442,11 +467,33 @@ Focus on:
442
467
  if (missingCoverage.length > 0) {
443
468
  for (const metrics of fileMetrics.values())
444
469
  delete metrics.coverage;
470
+ // #1219: the project-wide summary is not a measurement of these files.
445
471
  unmeasured.push({
446
472
  metric: 'coverage',
447
- reason: `no measured coverage recorded for ${missingCoverage.length} of ${total} file(s)`,
473
+ reason: `no measured coverage recorded for ${missingCoverage.length} of ${total} file(s) `
474
+ + `(${missingCoverage.slice(0, 3).join(', ')}${missingCoverage.length > 3 ? ', …' : ''}); `
475
+ + 'a project-wide coverage figure is not a measurement of these files',
476
+ files: missingCoverage,
448
477
  });
449
478
  }
479
+ else if (coverageRecords.length > 1) {
480
+ const weighted = lineWeightedCoverage(coverageRecords);
481
+ if (weighted === null) {
482
+ for (const metrics of fileMetrics.values())
483
+ delete metrics.coverage;
484
+ const legacy = coverageRecords.filter((r) => !r.lines).length;
485
+ // #1219: a plain mean of per-file percentages is not the scope's coverage.
486
+ unmeasured.push({
487
+ metric: 'coverage',
488
+ reason: `${legacy} of ${coverageRecords.length} per-file coverage record(s) carry no line counts `
489
+ + '(written before 3.15.13), so the files cannot be weighted by size and a mean of their '
490
+ + 'percentages is not the coverage of the scope; re-run coverage to record line counts',
491
+ });
492
+ }
493
+ else {
494
+ scopeValues.coverage = weighted;
495
+ }
496
+ }
450
497
  /** Decide whether a metric with these failures is measured, partial or unmeasured. */
451
498
  const judge = (metric, failures) => {
452
499
  const analysed = total - failures.length;
@@ -502,8 +549,12 @@ Focus on:
502
549
  unmeasured.push({ metric: 'duplication', reason: `duplication detection failed: ${toError(error).message}` });
503
550
  }
504
551
  }
505
- return { fileMetrics, unmeasured, excluded, partial };
552
+ return { fileMetrics, scopeValues, unmeasured, excluded, partial };
506
553
  }
554
+ /**
555
+ * The file's own measured coverage record, or `null`. #1219: never the
556
+ * project-wide `coverage:latest` summary — that is not this file's coverage.
557
+ */
507
558
  async getStoredCoverage(file) {
508
559
  try {
509
560
  // 1. Try per-file coverage stored by test executor
@@ -512,21 +563,16 @@ Focus on:
512
563
  for (const key of fileCoverageLookupKeys(file)) {
513
564
  const fileCoverage = measuredFileCoverage(await this.memory.get(key));
514
565
  if (fileCoverage)
515
- return fileCoverage.line;
516
- }
517
- // 2. Fall back to project-wide summary from coverage-analyzer
518
- const summary = measuredCoverageSummary(await this.memory.get('coverage:latest'));
519
- if (summary) {
520
- return summary.line;
566
+ return fileCoverage;
521
567
  }
522
- // No coverage data available — return null (never fabricate)
568
+ // No coverage data for this file — return null (never fabricate)
523
569
  return null;
524
570
  }
525
571
  catch {
526
572
  return null;
527
573
  }
528
574
  }
529
- aggregateMetrics(fileMetrics) {
575
+ aggregateMetrics(fileMetrics, scopeValues = {}) {
530
576
  const aggregated = new Map();
531
577
  // Collect all values per metric
532
578
  for (const metrics of fileMetrics.values()) {
@@ -539,7 +585,7 @@ Focus on:
539
585
  // Calculate averages and generate details
540
586
  const details = [];
541
587
  for (const [name, values] of aggregated.entries()) {
542
- const average = values.reduce((a, b) => a + b, 0) / values.length;
588
+ const average = scopeValues[name] ?? values.reduce((a, b) => a + b, 0) / values.length;
543
589
  const rating = this.getMetricRating(average, name);
544
590
  const trend = this.estimateTrend(values);
545
591
  details.push({
@@ -87,14 +87,16 @@ export class QualityGateService {
87
87
  const unmeasured = checks
88
88
  .filter((check) => !isMeasuredMetricValue(check.value))
89
89
  .map((check) => check.name);
90
- // Collect failed checks
90
+ // Collect failed checks. #1020: an unmeasured check did not fail a
91
+ // threshold; it is listed in `unmeasured` only.
91
92
  for (const check of checks) {
92
- if (!check.passed) {
93
+ if (!check.passed && isMeasuredMetricValue(check.value)) {
93
94
  failedChecks.push(check.name);
94
95
  }
95
96
  }
96
- // Calculate overall score (0-100)
97
- const overallScore = this.calculateOverallScore(checks);
97
+ // Calculate overall score (0-100). #1020: -1 = no measured score, the
98
+ // same sentinel quality_assess uses; never a score over partial data.
99
+ const overallScore = unmeasured.length === 0 ? this.calculateOverallScore(checks) : -1;
98
100
  // Determine pass/fail based on critical checks
99
101
  const passed = unmeasured.length === 0 && this.determineGateStatus(checks);
100
102
  const result = {
@@ -9,5 +9,5 @@ export { SecurityComplianceCoordinator, type IExtendedSecurityComplianceCoordina
9
9
  export { SecurityScannerService, type ISecurityScannerService, type SecurityScannerConfig, type FullScanResult, } from './services/security-scanner.js';
10
10
  export { SecurityAuditorService, type ISecurityAuditorService, type SecurityAuditorConfig, type SecurityPostureSummary, type TriagedVulnerabilities, } from './services/security-auditor.js';
11
11
  export { ComplianceValidatorService, type IExtendedComplianceValidationService, type ComplianceValidatorConfig, type MultiStandardReport, type DataType, type DataHandlingReport, type DataLocation, type ComplianceEvidence, type ControlEvidence, } from './services/compliance-validator.js';
12
- export type { Vulnerability, VulnerabilitySeverity, VulnerabilityCategory, VulnerabilityLocation, DependencyInfo, RemediationAdvice, ComplianceStandard, ComplianceRule, ComplianceViolation, ComplianceContext, ComplianceReport, GapAnalysis, ComplianceGap, RemediationAction, SASTResult, DASTResult, DASTOptions, DependencyScanResult, SecretScanResult, DetectedSecret, ScanSummary, ScanStatus, RuleSet, FalsePositiveCheck, SecurityCoverage, AuthCredentials, PackageSecurityInfo, OutdatedPackage, UpgradeRecommendation, SecurityAuditOptions, SecurityAuditReport, SecurityPosture, ISASTService, IDASTService, IDependencySecurityService, IComplianceValidationService, ISecurityComplianceCoordinator, IVulnerabilityRepository, IComplianceReportRepository, SecurityScanCompletedEvent, VulnerabilityDetectedEvent, ComplianceCheckCompletedEvent, } from './interfaces.js';
12
+ export type { Vulnerability, VulnerabilitySeverity, VulnerabilityCategory, VulnerabilityLocation, DependencyInfo, RemediationAdvice, ComplianceStandard, ComplianceRule, ComplianceViolation, ComplianceContext, ComplianceReport, GapAnalysis, ComplianceGap, RemediationAction, SASTResult, DASTResult, DASTScanStatus, DASTRequestFailure, DASTOptions, DependencyScanResult, SecretScanResult, DetectedSecret, ScanSummary, ScanStatus, RuleSet, FalsePositiveCheck, SecurityCoverage, AuthCredentials, PackageSecurityInfo, OutdatedPackage, UpgradeRecommendation, SecurityAuditOptions, SecurityAuditReport, SecurityPosture, ISASTService, IDASTService, IDependencySecurityService, IComplianceValidationService, ISecurityComplianceCoordinator, IVulnerabilityRepository, IComplianceReportRepository, SecurityScanCompletedEvent, VulnerabilityDetectedEvent, ComplianceCheckCompletedEvent, } from './interfaces.js';
13
13
  //# sourceMappingURL=index.d.ts.map
@@ -179,12 +179,32 @@ export interface DASTOptions {
179
179
  readonly activeScanning?: boolean;
180
180
  readonly timeout?: number;
181
181
  }
182
+ /**
183
+ * Completeness of a DAST scan (#1135), on the model of DependencyScanStatus (#1049).
184
+ * - complete: every planned request was answered; the findings (or none) are a measurement.
185
+ * - incomplete: the target answered, some probes did not; the findings are real, the rest is unmeasured.
186
+ * - failed: the target could not be scanned. Never read as "no findings".
187
+ */
188
+ export type DASTScanStatus = 'complete' | 'incomplete' | 'failed';
189
+ /** A DAST request the target did not answer (#1135). */
190
+ export interface DASTRequestFailure {
191
+ /** Origin and path of the request; query strings and credentials are not kept. */
192
+ readonly url: string;
193
+ /** DAST_REQUEST_FAILED, DAST_REQUEST_TIMEOUT, DAST_TLS_FAILED, DAST_RATE_LIMITED, ... */
194
+ readonly code: string;
195
+ readonly reason: string;
196
+ }
182
197
  export interface DASTResult {
183
198
  readonly scanId: string;
184
199
  readonly targetUrl: string;
185
200
  readonly vulnerabilities: Vulnerability[];
186
201
  readonly summary: ScanSummary;
187
202
  readonly crawledUrls: number;
203
+ readonly status: DASTScanStatus;
204
+ /** Requests the target did not answer; non-empty means the scan is not complete. */
205
+ readonly failedRequests: DASTRequestFailure[];
206
+ /** Why the scan is incomplete/failed; absent when complete. */
207
+ readonly error?: string;
188
208
  }
189
209
  export interface AuthCredentials {
190
210
  readonly type: 'basic' | 'bearer' | 'cookie' | 'oauth';
@@ -213,6 +233,16 @@ export interface IDependencySecurityService {
213
233
  export interface DependencyScanResult {
214
234
  readonly vulnerabilities: Vulnerability[];
215
235
  readonly outdatedPackages: OutdatedPackage[];
236
+ /**
237
+ * #1221: whether the latest version of every dependency was looked up. Only
238
+ * 'complete' means `outdatedPackages` is the full list; 'incomplete' and
239
+ * 'failed' list the packages not checked in `outdatedUnchecked`, and
240
+ * 'not-run' means this scan does not look up latest versions. An empty
241
+ * `outdatedPackages` is "up to date" only when this is 'complete'.
242
+ */
243
+ readonly outdatedStatus: 'complete' | 'incomplete' | 'failed' | 'not-run';
244
+ /** #1221: dependencies whose latest version could not be looked up, and why. */
245
+ readonly outdatedUnchecked: UncheckedDependency[];
216
246
  readonly summary: ScanSummary;
217
247
  /**
218
248
  * #1049: whether the advisory lookup covered every dependency. Only
@@ -227,7 +257,7 @@ export interface DependencyScanResult {
227
257
  /** Why the scan is incomplete/failed; absent when complete. */
228
258
  readonly error?: string;
229
259
  }
230
- /** A dependency whose advisories could not be checked, and why (#1049). */
260
+ /** A dependency whose advisories (#1049) or latest version (#1221) could not be checked, and why. */
231
261
  export interface UncheckedDependency {
232
262
  readonly name: string;
233
263
  /** The spec as declared in the manifest. */
@@ -249,8 +279,13 @@ export interface PackageSecurityInfo {
249
279
  readonly name: string;
250
280
  readonly version: string;
251
281
  readonly vulnerabilities: Vulnerability[];
252
- readonly latestVersion: string;
253
- readonly isDeprecated: boolean;
282
+ /** null when the registry lookup failed (#1052). */
283
+ readonly latestVersion: string | null;
284
+ /** null when deprecation could not be checked, never `false` (#1052). */
285
+ readonly isDeprecated: boolean | null;
286
+ /** incomplete when a registry lookup failed; `unchecked` says which and why. */
287
+ readonly status: 'complete' | 'incomplete';
288
+ readonly unchecked?: string[];
254
289
  }
255
290
  export interface OutdatedPackage {
256
291
  readonly name: string;
@@ -261,9 +296,13 @@ export interface OutdatedPackage {
261
296
  export interface UpgradeRecommendation {
262
297
  readonly package: string;
263
298
  readonly fromVersion: string;
264
- readonly toVersion: string;
299
+ /** null when the registry lookup failed; see `unchecked` (#1052). */
300
+ readonly toVersion: string | null;
265
301
  readonly fixesVulnerabilities: string[];
266
- readonly breakingChanges: boolean;
302
+ /** null when the target version is unknown. */
303
+ readonly breakingChanges: boolean | null;
304
+ /** Why no target version could be looked up; absent when it was. */
305
+ readonly unchecked?: string;
267
306
  }
268
307
  /**
269
308
  * Compliance Validation Service
@@ -358,6 +397,8 @@ export interface SecurityAuditReport {
358
397
  readonly secretScanResults?: SecretScanResult;
359
398
  readonly overallRiskScore: RiskScore;
360
399
  readonly recommendations: string[];
400
+ /** Checks that ran but could not complete (#1052); absent when every included check completed. */
401
+ readonly incompleteChecks?: string[];
361
402
  }
362
403
  export interface SecretScanResult {
363
404
  readonly secretsFound: DetectedSecret[];
@@ -2,15 +2,15 @@
2
2
  * Agentic QE v3 - DAST Authorization Testing
3
3
  * Authorization bypass and IDOR testing utilities
4
4
  */
5
- import type { Vulnerability, AuthCredentials } from './scanner-types.js';
5
+ import type { Vulnerability, AuthCredentials, DASTRequestFailure } from './scanner-types.js';
6
6
  /**
7
7
  * Test for authorization bypass on protected endpoints
8
8
  */
9
- export declare function testAuthorizationBypass(parsedUrl: URL, authHeaders: Record<string, string>, crawledUrls: number, maxDepth: number, vulnerabilities: Vulnerability[]): Promise<number>;
9
+ export declare function testAuthorizationBypass(parsedUrl: URL, authHeaders: Record<string, string>, crawledUrls: number, maxDepth: number, vulnerabilities: Vulnerability[], failures?: DASTRequestFailure[]): Promise<number>;
10
10
  /**
11
11
  * Test for Insecure Direct Object References (IDOR)
12
12
  */
13
- export declare function testIDOR(parsedUrl: URL, authHeaders: Record<string, string>, crawledUrls: number, maxDepth: number, vulnerabilities: Vulnerability[]): Promise<number>;
13
+ export declare function testIDOR(parsedUrl: URL, authHeaders: Record<string, string>, crawledUrls: number, maxDepth: number, vulnerabilities: Vulnerability[], failures?: DASTRequestFailure[]): Promise<number>;
14
14
  /**
15
15
  * Validate authentication credentials
16
16
  */
@@ -3,13 +3,14 @@
3
3
  * Authorization bypass and IDOR testing utilities
4
4
  */
5
5
  import { v4 as uuidv4 } from 'uuid';
6
+ import { probe } from './dast-requests.js';
6
7
  // ============================================================================
7
8
  // Authorization Testing
8
9
  // ============================================================================
9
10
  /**
10
11
  * Test for authorization bypass on protected endpoints
11
12
  */
12
- export async function testAuthorizationBypass(parsedUrl, authHeaders, crawledUrls, maxDepth, vulnerabilities) {
13
+ export async function testAuthorizationBypass(parsedUrl, authHeaders, crawledUrls, maxDepth, vulnerabilities, failures) {
13
14
  const protectedEndpoints = [
14
15
  '/admin',
15
16
  '/dashboard',
@@ -23,21 +24,21 @@ export async function testAuthorizationBypass(parsedUrl, authHeaders, crawledUrl
23
24
  break;
24
25
  const testUrl = new URL(endpoint, parsedUrl.origin).toString();
25
26
  // Try with authentication
26
- const authResponse = await fetch(testUrl, {
27
+ const authResponse = await probe(testUrl, {
27
28
  method: 'GET',
28
29
  headers: { ...authHeaders },
29
30
  signal: AbortSignal.timeout(5000),
30
- });
31
- if (authResponse.ok) {
31
+ }, failures);
32
+ if (authResponse?.ok) {
32
33
  crawledUrls++;
33
34
  // Try without authentication
34
- const unauthResponse = await fetch(testUrl, {
35
+ const unauthResponse = await probe(testUrl, {
35
36
  method: 'GET',
36
37
  signal: AbortSignal.timeout(5000),
37
- });
38
- if (unauthResponse.ok && unauthResponse.status === 200) {
39
- const authText = await authResponse.text();
40
- const unauthText = await unauthResponse.text();
38
+ }, failures);
39
+ if (unauthResponse?.ok && unauthResponse.status === 200) {
40
+ const authText = authResponse.text;
41
+ const unauthText = unauthResponse.text;
41
42
  if (authText.length > 100 && unauthText.length > 100 &&
42
43
  Math.abs(authText.length - unauthText.length) < authText.length * 0.1) {
43
44
  vulnerabilities.push({
@@ -59,7 +60,7 @@ export async function testAuthorizationBypass(parsedUrl, authHeaders, crawledUrl
59
60
  /**
60
61
  * Test for Insecure Direct Object References (IDOR)
61
62
  */
62
- export async function testIDOR(parsedUrl, authHeaders, crawledUrls, maxDepth, vulnerabilities) {
63
+ export async function testIDOR(parsedUrl, authHeaders, crawledUrls, maxDepth, vulnerabilities, failures) {
63
64
  const idorEndpoints = [
64
65
  '/api/users/1',
65
66
  '/api/users/2',
@@ -70,14 +71,14 @@ export async function testIDOR(parsedUrl, authHeaders, crawledUrls, maxDepth, vu
70
71
  if (crawledUrls >= maxDepth * 15)
71
72
  break;
72
73
  const testUrl = new URL(endpoint, parsedUrl.origin).toString();
73
- const response = await fetch(testUrl, {
74
+ const response = await probe(testUrl, {
74
75
  method: 'GET',
75
76
  headers: { ...authHeaders },
76
77
  signal: AbortSignal.timeout(5000),
77
- });
78
- if (response.ok) {
78
+ }, failures);
79
+ if (response?.ok) {
79
80
  crawledUrls++;
80
- const text = await response.text();
81
+ const text = response.text;
81
82
  if (text.includes('email') || text.includes('password') || text.includes('phone')) {
82
83
  vulnerabilities.push({
83
84
  id: uuidv4(),