agentic-qe 3.15.10 → 3.15.12

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 (536) hide show
  1. package/.claude/hooks/aqe-hook.cjs +38 -2
  2. package/.claude/skills/skills-manifest.json +1 -1
  3. package/CHANGELOG.md +263 -0
  4. package/README.md +8 -0
  5. package/assets/skills/skills-manifest.json +1 -1
  6. package/dist/adapters/a2a/agent-cards/generator.js +6 -3
  7. package/dist/adapters/a2a/tasks/task-router.js +3 -1
  8. package/dist/adapters/trajectory-adapter.js +1 -1
  9. package/dist/agents/claim-verifier/verifiers/output-verifier.d.ts +3 -1
  10. package/dist/agents/claim-verifier/verifiers/output-verifier.js +31 -2
  11. package/dist/agents/overlay-loader.js +26 -21
  12. package/dist/cli/bundle.js +6 -6
  13. package/dist/cli/chunks/adapter-HL7MOCQN.js +2 -0
  14. package/dist/cli/chunks/{agent-booster-wasm-H7ANGXW4.js → agent-booster-wasm-5VZCKTIJ.js} +2 -2
  15. package/dist/cli/chunks/{agent-handler-SVXSHEET.js → agent-handler-K3C6CQCD.js} +2 -2
  16. package/dist/cli/chunks/{agent-memory-branch-WKQH36XL.js → agent-memory-branch-NVFQ25WS.js} +2 -2
  17. package/dist/cli/chunks/aqe-learning-engine-OZ2DXB4G.js +2 -0
  18. package/dist/cli/chunks/{arena-EKOOFVST.js → arena-QGWIJADQ.js} +2 -2
  19. package/dist/cli/chunks/{arena-OPS36NFZ.js → arena-TSZVDSXS.js} +4 -4
  20. package/dist/cli/chunks/{audit-AO5NDZRI.js → audit-KIEE2SHJ.js} +3 -3
  21. package/dist/cli/chunks/base-WIM7G3HC.js +2 -0
  22. package/dist/cli/chunks/{better-sqlite3-TFLVEMMY.js → better-sqlite3-BNB32NW3.js} +2 -2
  23. package/dist/cli/chunks/{brain-handler-ADBBJPYW.js → brain-handler-MPC5SPYI.js} +3 -3
  24. package/dist/cli/chunks/{branch-enumerator-HGHUYYL5.js → branch-enumerator-LZ7UXKAY.js} +2 -2
  25. package/dist/cli/chunks/{browser-5LU6P4SZ.js → browser-VDHAW4RK.js} +2 -2
  26. package/dist/cli/chunks/browser-workflow-QRKCFVR3.js +2 -0
  27. package/dist/cli/chunks/{chunk-5LPYV3TK.js → chunk-23PQF7NN.js} +1 -1
  28. package/dist/cli/chunks/{chunk-2ZMF4NCF.js → chunk-26672ISV.js} +2 -2
  29. package/dist/cli/chunks/{chunk-U53ZB4IX.js → chunk-2ASQRBK2.js} +2 -2
  30. package/dist/cli/chunks/{chunk-7PJIR4ST.js → chunk-2E2QO44T.js} +2 -2
  31. package/dist/cli/chunks/{chunk-2T7RRL6G.js → chunk-2IVE5AR3.js} +1 -1
  32. package/dist/cli/chunks/{chunk-B6LTH6YV.js → chunk-2JYUA27M.js} +1 -1
  33. package/dist/cli/chunks/{chunk-PFG6VQ5Z.js → chunk-2PPSS4JD.js} +2 -2
  34. package/dist/cli/chunks/{chunk-NZYLNXT6.js → chunk-32UTHIY5.js} +5 -5
  35. package/dist/cli/chunks/{chunk-5E6GHSTY.js → chunk-33I2ZP6E.js} +2 -2
  36. package/dist/cli/chunks/{chunk-XLZYRTNO.js → chunk-35MIUSXQ.js} +2 -2
  37. package/dist/cli/chunks/{chunk-7LFZ4CHM.js → chunk-35NW676P.js} +2 -2
  38. package/dist/cli/chunks/{chunk-4G63WT4F.js → chunk-3EWQN37E.js} +2 -2
  39. package/dist/cli/chunks/{chunk-GZLZCZ42.js → chunk-3IU4LDZR.js} +2 -2
  40. package/dist/cli/chunks/{chunk-CESIR27V.js → chunk-47RMGDG4.js} +2 -2
  41. package/dist/cli/chunks/chunk-4A76VPU4.js +3 -0
  42. package/dist/cli/chunks/{chunk-DT7SIJOA.js → chunk-4CB3QPZM.js} +2 -2
  43. package/dist/cli/chunks/{chunk-ERQKYIP7.js → chunk-4HWUECVD.js} +5 -5
  44. package/dist/cli/chunks/{chunk-MA7JIQ6U.js → chunk-4KUOYDY2.js} +5 -5
  45. package/dist/cli/chunks/{chunk-VWNFAW2M.js → chunk-4LWMAAWK.js} +2 -2
  46. package/dist/cli/chunks/{chunk-IKISCIGH.js → chunk-4PU5GTZW.js} +2 -2
  47. package/dist/cli/chunks/{chunk-ZXPY654C.js → chunk-4SA7M34P.js} +1 -1
  48. package/dist/cli/chunks/{chunk-NGKNYIQZ.js → chunk-4Y6OEBJZ.js} +1 -1
  49. package/dist/cli/chunks/{chunk-KOBVYY6H.js → chunk-5A66EGEW.js} +2 -2
  50. package/dist/cli/chunks/{chunk-Z2O2YJAF.js → chunk-5ADXFUMO.js} +2 -2
  51. package/dist/cli/chunks/{chunk-YKMU4LBV.js → chunk-5S4UIDFK.js} +1 -1
  52. package/dist/cli/chunks/{chunk-Z7IYW5U7.js → chunk-5TAEW5OV.js} +1 -1
  53. package/dist/cli/chunks/chunk-5Z23ZMXZ.js +742 -0
  54. package/dist/cli/chunks/{chunk-6TB6YOCZ.js → chunk-65TH6RPD.js} +1 -1
  55. package/dist/cli/chunks/{chunk-3Y7SPD72.js → chunk-66PXR3NI.js} +2 -2
  56. package/dist/cli/chunks/{chunk-3P34JFQH.js → chunk-6E6HB4N4.js} +14 -14
  57. package/dist/cli/chunks/{chunk-6PX4OXQO.js → chunk-6QRI3JVE.js} +2 -2
  58. package/dist/cli/chunks/{chunk-WBM6N6IM.js → chunk-7DNR4KKR.js} +1 -1
  59. package/dist/cli/chunks/{chunk-6XCMKIZN.js → chunk-7JFDLL2F.js} +1 -1
  60. package/dist/cli/chunks/chunk-7OEFBWAG.js +5 -0
  61. package/dist/cli/chunks/{chunk-Y76IAYQD.js → chunk-7QEUHNKO.js} +1 -1
  62. package/dist/cli/chunks/{chunk-WQ4PYWSW.js → chunk-7TA5MUPW.js} +1 -1
  63. package/dist/cli/chunks/{chunk-2XGVTYVX.js → chunk-A2JCRXTK.js} +2 -2
  64. package/dist/cli/chunks/{chunk-ESUO3GTJ.js → chunk-A5Y7DAVQ.js} +2 -2
  65. package/dist/cli/chunks/{chunk-ATHWDAXB.js → chunk-ADUAJIAU.js} +2 -2
  66. package/dist/cli/chunks/{chunk-IU2IV4NE.js → chunk-AJEXPFAB.js} +1 -1
  67. package/dist/cli/chunks/{chunk-YK7JN5N7.js → chunk-BC4T6SCV.js} +4 -4
  68. package/dist/cli/chunks/{chunk-KSIWGGJI.js → chunk-BMG2JLSQ.js} +2 -2
  69. package/dist/cli/chunks/chunk-BOSMELJX.js +180 -0
  70. package/dist/cli/chunks/{chunk-7OZVZIBE.js → chunk-BYRCB5JT.js} +2 -2
  71. package/dist/cli/chunks/{chunk-FAUCT5KR.js → chunk-C3YOVASQ.js} +6 -5
  72. package/dist/cli/chunks/{chunk-DMFTELBS.js → chunk-C74M4WUI.js} +2 -2
  73. package/dist/cli/chunks/{chunk-2SXBBUM6.js → chunk-CA5UNWQF.js} +2 -2
  74. package/dist/cli/chunks/{chunk-UCJMVXO4.js → chunk-CDA5Z74H.js} +2 -2
  75. package/dist/cli/chunks/{chunk-NVYIZCSR.js → chunk-CPIBIR3X.js} +2 -2
  76. package/dist/cli/chunks/{chunk-YK3BVZY6.js → chunk-CU36D7TN.js} +2 -2
  77. package/dist/cli/chunks/{chunk-H32EPIR2.js → chunk-DAUEK66C.js} +1 -1
  78. package/dist/cli/chunks/{chunk-6KIL6CMD.js → chunk-DRCBRUGN.js} +2 -2
  79. package/dist/cli/chunks/{chunk-EWFECZ2U.js → chunk-DZGPUGUG.js} +2 -2
  80. package/dist/cli/chunks/{chunk-YDAQK5UF.js → chunk-EF6OERRR.js} +1 -1
  81. package/dist/cli/chunks/{chunk-KG336OV3.js → chunk-EN7GRVEQ.js} +2 -2
  82. package/dist/cli/chunks/{chunk-DBMNJSBV.js → chunk-ENGL7FIJ.js} +1 -1
  83. package/dist/cli/chunks/{chunk-FKL3R5JQ.js → chunk-FAGKBOX2.js} +2 -2
  84. package/dist/cli/chunks/{chunk-NAXGWDVM.js → chunk-FNUFTWEO.js} +3 -3
  85. package/dist/cli/chunks/{chunk-RWWOHCMG.js → chunk-FZJCBSN4.js} +2 -2
  86. package/dist/cli/chunks/{chunk-ABFFWZPC.js → chunk-G24SWTAX.js} +151 -149
  87. package/dist/cli/chunks/{chunk-ODJNUMV3.js → chunk-G3AABG4Q.js} +2 -2
  88. package/dist/cli/chunks/{chunk-FBXTQNRH.js → chunk-GJKZ7UQO.js} +2 -2
  89. package/dist/cli/chunks/{chunk-DEF34AFL.js → chunk-GKFV6CUD.js} +2 -2
  90. package/dist/cli/chunks/{chunk-SY2IB442.js → chunk-HLGFHHWV.js} +2 -2
  91. package/dist/cli/chunks/{chunk-CZGOSJQ4.js → chunk-HM3LSFTY.js} +2 -2
  92. package/dist/cli/chunks/chunk-HSA5IGGW.js +2 -0
  93. package/dist/cli/chunks/{chunk-GJHWY3ZX.js → chunk-HZBXJFGN.js} +2 -2
  94. package/dist/cli/chunks/chunk-IA55PFLG.js +7 -0
  95. package/dist/cli/chunks/{chunk-MNN5J4GU.js → chunk-ICKUINKD.js} +2 -2
  96. package/dist/cli/chunks/{chunk-XEB3NLJR.js → chunk-IETBWYHW.js} +2 -2
  97. package/dist/cli/chunks/{chunk-A55QKKT2.js → chunk-IL7GQNNE.js} +2 -2
  98. package/dist/cli/chunks/{chunk-LRZY4KS2.js → chunk-INZARYUD.js} +2 -2
  99. package/dist/cli/chunks/{chunk-OBAREPDC.js → chunk-IPA7K556.js} +2 -2
  100. package/dist/cli/chunks/{chunk-CFBEBXLO.js → chunk-IVTQF55W.js} +3 -3
  101. package/dist/cli/chunks/{chunk-FFTPAWM6.js → chunk-J7Y7ZBIT.js} +8 -8
  102. package/dist/cli/chunks/{chunk-I33O4BRQ.js → chunk-JGIJPDGD.js} +2 -2
  103. package/dist/cli/chunks/chunk-JNXK47OL.js +2 -0
  104. package/dist/cli/chunks/{chunk-PCEW6Q2C.js → chunk-JOWUS2X5.js} +1 -1
  105. package/dist/cli/chunks/{chunk-KI73QCR5.js → chunk-JR6CUKAI.js} +2 -2
  106. package/dist/cli/chunks/chunk-JRYWLOBD.js +21 -0
  107. package/dist/cli/chunks/{chunk-SO45NA4D.js → chunk-JW5PDJ5O.js} +11 -11
  108. package/dist/cli/chunks/{chunk-APSRPR4W.js → chunk-K3A3NWT3.js} +2 -2
  109. package/dist/cli/chunks/{chunk-FESZBPUB.js → chunk-KA5SHLMW.js} +2 -2
  110. package/dist/cli/chunks/{chunk-OPFGRS5S.js → chunk-KGA7VAI4.js} +2 -2
  111. package/dist/cli/chunks/chunk-KJDI5CHX.js +2 -0
  112. package/dist/cli/chunks/{chunk-V2RSNVMW.js → chunk-L3PV7VXK.js} +1 -1
  113. package/dist/cli/chunks/{chunk-C522H7XR.js → chunk-L7NGKANW.js} +32 -32
  114. package/dist/cli/chunks/{chunk-DNRWGATA.js → chunk-LFBA735S.js} +7 -7
  115. package/dist/cli/chunks/{chunk-V2M2XCR5.js → chunk-MAJXZYGK.js} +1 -1
  116. package/dist/cli/chunks/{chunk-FZOWULMH.js → chunk-MCPEC6OO.js} +1 -1
  117. package/dist/cli/chunks/{chunk-LMS3Y7JD.js → chunk-MCPXNUDK.js} +2 -2
  118. package/dist/cli/chunks/{chunk-GWZZ7DAO.js → chunk-MMEALJ4D.js} +2 -2
  119. package/dist/cli/chunks/{chunk-G3CZCUPM.js → chunk-MYF5CNGV.js} +2 -2
  120. package/dist/cli/chunks/{chunk-NNFZUTDH.js → chunk-MYUMJ2ZI.js} +1 -1
  121. package/dist/cli/chunks/{chunk-WDQ7IEZY.js → chunk-N7O3PF6Y.js} +2 -2
  122. package/dist/cli/chunks/{chunk-YAKGBHO4.js → chunk-NA3F6FEO.js} +2 -2
  123. package/dist/cli/chunks/chunk-NNBQZR73.js +6 -0
  124. package/dist/cli/chunks/{chunk-6C3II5OM.js → chunk-NV74SICL.js} +2 -2
  125. package/dist/cli/chunks/chunk-NVRYELCY.js +13 -0
  126. package/dist/cli/chunks/{chunk-UHTTW3IT.js → chunk-NX4BCSOZ.js} +2 -2
  127. package/dist/cli/chunks/{chunk-EN2QSKFF.js → chunk-O3IM4WRZ.js} +2 -2
  128. package/dist/cli/chunks/{chunk-S75EYIJG.js → chunk-O4QJMANM.js} +1 -1
  129. package/dist/cli/chunks/{chunk-NPPHWFA2.js → chunk-OHVYINGM.js} +18 -18
  130. package/dist/cli/chunks/{chunk-DE4YJQJF.js → chunk-P5E26N2X.js} +2 -2
  131. package/dist/cli/chunks/chunk-P7UFJ6DO.js +14 -0
  132. package/dist/cli/chunks/{chunk-XFVTGAAJ.js → chunk-PGSJBXTD.js} +2 -2
  133. package/dist/cli/chunks/{chunk-CZ2IF6MC.js → chunk-PT2NXS43.js} +1 -1
  134. package/dist/cli/chunks/{chunk-RK73HB2F.js → chunk-PTBOLBM4.js} +2 -2
  135. package/dist/cli/chunks/{chunk-EAU5KDFO.js → chunk-PX5OPXY6.js} +1 -1
  136. package/dist/cli/chunks/chunk-QCPVUNN3.js +2 -0
  137. package/dist/cli/chunks/{chunk-VKRTTFB6.js → chunk-QSGEBCDB.js} +2 -2
  138. package/dist/cli/chunks/{chunk-SKQUUE4F.js → chunk-QUJJYTJH.js} +2 -2
  139. package/dist/cli/chunks/chunk-QWG3SILX.js +59 -0
  140. package/dist/cli/chunks/{chunk-D6DA2KFD.js → chunk-RCOLPF3B.js} +2 -2
  141. package/dist/cli/chunks/{chunk-SU5H66SD.js → chunk-RYHG3I7J.js} +2 -2
  142. package/dist/cli/chunks/chunk-SBHM5X2S.js +4 -0
  143. package/dist/cli/chunks/{chunk-62OAY5KJ.js → chunk-SDRJJUPO.js} +1 -1
  144. package/dist/cli/chunks/{chunk-FB6TI3BH.js → chunk-SG2TX72G.js} +2 -2
  145. package/dist/cli/chunks/{chunk-H2PYU7MN.js → chunk-SITL5YZV.js} +4 -4
  146. package/dist/cli/chunks/{chunk-AI4VYSFS.js → chunk-SPC4RBLF.js} +2 -2
  147. package/dist/cli/chunks/{chunk-BQUAE3CP.js → chunk-SQVZ3TRU.js} +2 -2
  148. package/dist/cli/chunks/{chunk-TBLI254A.js → chunk-SUX5XB2Z.js} +2 -2
  149. package/dist/cli/chunks/{chunk-VFSYMOAL.js → chunk-T4EN5VVK.js} +2 -2
  150. package/dist/cli/chunks/{chunk-KNQ2ERFX.js → chunk-TGMXUZZC.js} +2 -2
  151. package/dist/cli/chunks/{chunk-7TB6FK4B.js → chunk-TLRHAMX5.js} +1 -1
  152. package/dist/cli/chunks/{chunk-V6JBOIMX.js → chunk-TOWOJGEI.js} +1 -1
  153. package/dist/cli/chunks/{chunk-JHIY4VCC.js → chunk-TSOQ2QLT.js} +3 -3
  154. package/dist/cli/chunks/{chunk-YYTGXD3R.js → chunk-TVA5GRIU.js} +2 -2
  155. package/dist/cli/chunks/{chunk-6MVVSSID.js → chunk-TXEUVUMO.js} +1 -1
  156. package/dist/cli/chunks/{chunk-7ZCDZHDB.js → chunk-U6IXYQO4.js} +2 -2
  157. package/dist/cli/chunks/{chunk-NW5JUCCG.js → chunk-U7ZHDGXG.js} +1 -1
  158. package/dist/cli/chunks/{chunk-UARKIZAS.js → chunk-UCSK2RMI.js} +2 -2
  159. package/dist/cli/chunks/{chunk-RPHY2DU6.js → chunk-UIKQPO4Y.js} +2 -2
  160. package/dist/cli/chunks/chunk-UJNGGFGX.js +2 -0
  161. package/dist/cli/chunks/{chunk-EDLFX4ZB.js → chunk-ULCW6IVQ.js} +2 -2
  162. package/dist/cli/chunks/{chunk-M2QV7PT7.js → chunk-UREDS662.js} +2 -2
  163. package/dist/cli/chunks/{chunk-MG27QY4D.js → chunk-URSTP3WI.js} +2 -2
  164. package/dist/cli/chunks/{chunk-2ZI5FKSF.js → chunk-UUZZXHUF.js} +2 -2
  165. package/dist/cli/chunks/{chunk-IPJ7Q3AJ.js → chunk-UZED4YZ5.js} +1 -1
  166. package/dist/cli/chunks/{chunk-VFKF2XO7.js → chunk-VF7FTD64.js} +1 -1
  167. package/dist/cli/chunks/{chunk-YCGP5VFP.js → chunk-VUR5THML.js} +2 -2
  168. package/dist/cli/chunks/{chunk-WDVRE6GN.js → chunk-VXVTFKRA.js} +2 -2
  169. package/dist/cli/chunks/chunk-VZBC6DP7.js +2 -0
  170. package/dist/cli/chunks/{chunk-GHBNRMSJ.js → chunk-W4II6SIH.js} +2 -2
  171. package/dist/cli/chunks/{chunk-TNMBRDCA.js → chunk-W5HQIYQU.js} +3 -3
  172. package/dist/cli/chunks/{chunk-H74Q7TJN.js → chunk-W7H55PY4.js} +1 -1
  173. package/dist/cli/chunks/{chunk-OY2AHLSF.js → chunk-WDEXOLK2.js} +1 -1
  174. package/dist/cli/chunks/{chunk-VJQYDYAJ.js → chunk-WGTEZT7G.js} +2 -2
  175. package/dist/cli/chunks/{chunk-GRCIBCJ2.js → chunk-WLRU6ESI.js} +2 -2
  176. package/dist/cli/chunks/{chunk-ACWFKES2.js → chunk-WTAUF6O4.js} +2 -2
  177. package/dist/cli/chunks/chunk-XCNSGSKV.js +3 -0
  178. package/dist/cli/chunks/{chunk-6S3WJGUV.js → chunk-XZOYKB22.js} +2 -2
  179. package/dist/cli/chunks/chunk-YIDAXOUX.js +8 -0
  180. package/dist/cli/chunks/{chunk-LQEURY7C.js → chunk-YLKIXEPP.js} +1 -1
  181. package/dist/cli/chunks/chunk-YNVEDFPQ.js +2 -0
  182. package/dist/cli/chunks/{chunk-PGYMKGOE.js → chunk-YUA6ZKKY.js} +2 -2
  183. package/dist/cli/chunks/{chunk-GJMLK5UT.js → chunk-YVJEUX3I.js} +2 -2
  184. package/dist/cli/chunks/{chunk-AH3ZD3NJ.js → chunk-YWWMNTBF.js} +2 -2
  185. package/dist/cli/chunks/{chunk-37OWRCUN.js → chunk-ZGROHCOW.js} +2 -2
  186. package/dist/cli/chunks/{chunk-OEKP73MC.js → chunk-ZPVGX4DI.js} +2 -2
  187. package/dist/cli/chunks/{chunk-6GP6W46M.js → chunk-ZROAMFX2.js} +2 -2
  188. package/dist/cli/chunks/{chunk-OY3NJNP2.js → chunk-ZYOYR3UR.js} +1 -1
  189. package/dist/cli/chunks/ci-BZNWW3I3.js +81 -0
  190. package/dist/cli/chunks/{ci-config-7ODMNAUM.js → ci-config-LOHNXOKV.js} +2 -2
  191. package/dist/cli/chunks/{ci-output-FXZ7ZZW3.js → ci-output-LCOQBSJL.js} +2 -2
  192. package/dist/cli/chunks/{circuit-breaker-4VOUEPOX.js → circuit-breaker-7LRXTLFE.js} +2 -2
  193. package/dist/cli/chunks/{claude-flow-setup-7D4SGLM4.js → claude-flow-setup-HBU4VWC3.js} +2 -2
  194. package/dist/cli/chunks/client-4PNYDFYS.js +2 -0
  195. package/dist/cli/chunks/{cline-installer-WRRT7BGQ.js → cline-installer-CO6MLH6X.js} +2 -2
  196. package/dist/cli/chunks/{code-ZDJRIL3S.js → code-SIXBS6JM.js} +3 -3
  197. package/dist/cli/chunks/{code-index-extractor-4S4SHM56.js → code-index-extractor-GWJKZ2IQ.js} +2 -2
  198. package/dist/cli/chunks/{codex-installer-YTRHNDWR.js → codex-installer-6NINVWXJ.js} +2 -2
  199. package/dist/cli/chunks/{completions-6N64JUXJ.js → completions-7VIX3GML.js} +2 -2
  200. package/dist/cli/chunks/{complexity-analyzer-I4A26VCJ.js → complexity-analyzer-FBQR6ZP2.js} +2 -2
  201. package/dist/cli/chunks/{continuedev-installer-IIDR66LB.js → continuedev-installer-VA7RIXW5.js} +2 -2
  202. package/dist/cli/chunks/{copilot-installer-SVVFY3S2.js → copilot-installer-4QEBC4MU.js} +2 -2
  203. package/dist/cli/chunks/core-handlers-ODO6LUWQ.js +2 -0
  204. package/dist/cli/chunks/{cost-tracker-VGFS6IBX.js → cost-tracker-GRYKHPWL.js} +2 -2
  205. package/dist/cli/chunks/coverage-USPMNKOU.js +50 -0
  206. package/dist/cli/chunks/cross-domain-router-DT4MHJKK.js +2 -0
  207. package/dist/cli/chunks/{cursor-installer-UPETT57E.js → cursor-installer-ZXIPSZVH.js} +2 -2
  208. package/dist/cli/chunks/{daemon-CQFNZLXU.js → daemon-D7F3RGI5.js} +3 -3
  209. package/dist/cli/chunks/{daemon-7BDJHEIJ.js → daemon-N2VRHPSJ.js} +4 -4
  210. package/dist/cli/chunks/{dag-attention-scheduler-PJVABHON.js → dag-attention-scheduler-NL6BA7BY.js} +2 -2
  211. package/dist/cli/chunks/{detect-56SKAGWX.js → detect-XC2HCIIT.js} +2 -2
  212. package/dist/cli/chunks/{dist-node-UYTYUMLN.js → dist-node-A3Y26MEI.js} +2 -2
  213. package/dist/cli/chunks/{domain-handler-YOYLBYJE.js → domain-handler-WV6SFXRB.js} +2 -2
  214. package/dist/cli/chunks/{domain-plugins-7TARX2XF.js → domain-plugins-KJIF6Z2B.js} +2 -2
  215. package/dist/cli/chunks/{domain-transfer-AKVSBD6E.js → domain-transfer-L3F6AES2.js} +2 -2
  216. package/dist/cli/chunks/dream-QOB3JCOM.js +2 -0
  217. package/dist/cli/chunks/{embed-and-insert-pattern-IS6HSR66.js → embed-and-insert-pattern-PA3Y4KGO.js} +2 -2
  218. package/dist/cli/chunks/{eval-GNB574IM.js → eval-YGEZNUVE.js} +2 -2
  219. package/dist/cli/chunks/{experience-capture-middleware-RCAOCKM7.js → experience-capture-middleware-D4T7NW6B.js} +3 -3
  220. package/dist/cli/chunks/{fast-paths-KTZ5SF54.js → fast-paths-6JYK7RYQ.js} +2 -2
  221. package/dist/cli/chunks/{feature-flags-KFHSR5YF.js → feature-flags-DKXMDVPE.js} +2 -2
  222. package/dist/cli/chunks/{feature-flags-ITX5LQ57.js → feature-flags-RBH2GDSR.js} +2 -2
  223. package/dist/cli/chunks/file-discovery-BN76S2PR.js +2 -0
  224. package/dist/cli/chunks/fleet-43YMXACN.js +46 -0
  225. package/dist/cli/chunks/{gnn-wrapper-RLFW3GSX.js → gnn-wrapper-MV54UC4C.js} +2 -2
  226. package/dist/cli/chunks/{heartbeat-handler-EM2URCYZ.js → heartbeat-handler-7DKMVQQH.js} +4 -4
  227. package/dist/cli/chunks/heartbeat-scheduler-3NNP4WCP.js +2 -0
  228. package/dist/cli/chunks/hnsw-adapter-MZR7Y4WF.js +2 -0
  229. package/dist/cli/chunks/hnsw-index-HE4AX22U.js +2 -0
  230. package/dist/cli/chunks/{hnsw-legacy-bridge-JMHEOIBH.js → hnsw-legacy-bridge-6IWREDQC.js} +2 -2
  231. package/dist/cli/chunks/{hnswlib-node-CBP73QHY.js → hnswlib-node-5BIESSCK.js} +2 -2
  232. package/dist/cli/chunks/{hooks-IP7XE34Z.js → hooks-3EETRM62.js} +30 -30
  233. package/dist/cli/chunks/hybrid-backend-IHUHB3Y2.js +2 -0
  234. package/dist/cli/chunks/{hypergraph-engine-ONAYHU25.js → hypergraph-engine-RSWCB2D3.js} +2 -2
  235. package/dist/cli/chunks/{hypergraph-handler-VINJRAID.js → hypergraph-handler-552LXKL3.js} +3 -3
  236. package/dist/cli/chunks/impact-analyzer-FI6GI6PD.js +2 -0
  237. package/dist/cli/chunks/{init-guard-RYVV5R3Z.js → init-guard-OTDBJ5HD.js} +2 -2
  238. package/dist/cli/chunks/{init-handler-MPRGWMOE.js → init-handler-3FK3TKEA.js} +26 -25
  239. package/dist/cli/chunks/init-wizard-WLQKH5Y5.js +2 -0
  240. package/dist/cli/chunks/kernel-2WZOQEZS.js +2 -0
  241. package/dist/cli/chunks/{kilocode-installer-OPD7JBRL.js → kilocode-installer-KZ2O4LF3.js} +2 -2
  242. package/dist/cli/chunks/{kiro-installer-M4OPUNK2.js → kiro-installer-MLCCXRF7.js} +2 -2
  243. package/dist/cli/chunks/knowledge-graph-G3LVKK6P.js +2 -0
  244. package/dist/cli/chunks/{learning-4UWTQLMF.js → learning-QUCMBD77.js} +3 -3
  245. package/dist/cli/chunks/{llm-router-SQ56FF6Z.js → llm-router-PDEV3UP2.js} +4 -4
  246. package/dist/cli/chunks/llm-router-service-MM75HKWJ.js +2 -0
  247. package/dist/cli/chunks/{load-HPHKDGGL.js → load-XFVVLO7E.js} +2 -2
  248. package/dist/cli/chunks/load-test-BEWEE44J.js +2 -0
  249. package/dist/cli/chunks/{mcp-TELMAC7Z.js → mcp-74G3CL2S.js} +2 -2
  250. package/dist/cli/chunks/{memory-PFQ3KPVJ.js → memory-XIFM6JNX.js} +5 -5
  251. package/dist/cli/chunks/memory-backend-NYKBBKZR.js +2 -0
  252. package/dist/cli/chunks/memory-handlers-ZCKURV6S.js +2 -0
  253. package/dist/cli/chunks/{multi-model-executor-3VDRX6TZ.js → multi-model-executor-7L4W3O2Q.js} +2 -2
  254. package/dist/cli/chunks/{opencode-installer-PJ576R63.js → opencode-installer-BPG422LF.js} +2 -2
  255. package/dist/cli/chunks/{orchestrator-72QP4UU7.js → orchestrator-OEAFLAEV.js} +61 -23
  256. package/dist/cli/chunks/pattern-null-store-QGPUIV6M.js +2 -0
  257. package/dist/cli/chunks/{pattern-usage-recorder-754YQW7C.js → pattern-usage-recorder-LOPNCULT.js} +2 -2
  258. package/dist/cli/chunks/{pipeline-AVXY4MVB.js → pipeline-VWTYUZB7.js} +2 -2
  259. package/dist/cli/chunks/{platform-3E3DXLYB.js → platform-WFJJ3X2E.js} +2 -2
  260. package/dist/cli/chunks/{plugin-7FUQAKRE.js → plugin-744TPUSG.js} +2 -2
  261. package/dist/cli/chunks/{prime-radiant-advanced-wasm-NIB4F5NV.js → prime-radiant-advanced-wasm-BD5BLNDR.js} +2 -2
  262. package/dist/cli/chunks/project-root-C7ELXZRK.js +2 -0
  263. package/dist/cli/chunks/protocol-executor-SUVE33BM.js +2 -0
  264. package/dist/cli/chunks/{protocol-handler-BQRYMUTG.js → protocol-handler-JIBILI74.js} +2 -2
  265. package/dist/cli/chunks/{prove-H52QGC6B.js → prove-MNOL5FYW.js} +2 -2
  266. package/dist/cli/chunks/qe-reasoning-bank-YWZMMGJB.js +2 -0
  267. package/dist/cli/chunks/{quality-QO4XPAUM.js → quality-JEGBDGGX.js} +2 -2
  268. package/dist/cli/chunks/{quality-gate-FBKE5E6F.js → quality-gate-SYJ6ROMI.js} +3 -3
  269. package/dist/cli/chunks/queen-coordinator-ZFAKXRN7.js +2 -0
  270. package/dist/cli/chunks/real-embeddings-ZWXS5ZFV.js +2 -0
  271. package/dist/cli/chunks/{ref-validation-LF76ZOBD.js → ref-validation-RRHUFW2N.js} +2 -2
  272. package/dist/cli/chunks/{roocode-installer-3BYEBTQ7.js → roocode-installer-XFO6JSVN.js} +2 -2
  273. package/dist/cli/chunks/router-4FTAVYLJ.js +2 -0
  274. package/dist/cli/chunks/routing-feedback-IO2KOWMJ.js +2 -0
  275. package/dist/cli/chunks/{routing-handler-DST7BVCU.js → routing-handler-L2K3JASE.js} +2 -2
  276. package/dist/cli/chunks/{ruvector-commands-XE32PGKC.js → ruvector-commands-A6CINHGM.js} +2 -2
  277. package/dist/cli/chunks/rvf-dual-writer-KCIRNE7C.js +2 -0
  278. package/dist/cli/chunks/rvf-migration-adapter-MFC5WTJU.js +2 -0
  279. package/dist/cli/chunks/{rvf-migration-coordinator-VP32XC75.js → rvf-migration-coordinator-T4RY7L53.js} +2 -2
  280. package/dist/cli/chunks/rvf-native-adapter-I3KWHE7X.js +2 -0
  281. package/dist/cli/chunks/{rvf-store-integrity-SH2AMVI7.js → rvf-store-integrity-IR33TGQS.js} +2 -2
  282. package/dist/cli/chunks/safe-db-QXDZ6QY3.js +2 -0
  283. package/dist/cli/chunks/schedule-CZKD6RIY.js +2 -0
  284. package/dist/cli/chunks/scheduler-BLA3Q4CH.js +2 -0
  285. package/dist/cli/chunks/{security-VSPNKCDS.js → security-Z5GDE2IH.js} +3 -3
  286. package/dist/cli/chunks/{shared-rvf-adapter-HX6AHL3P.js → shared-rvf-adapter-SIZMEHPM.js} +2 -2
  287. package/dist/cli/chunks/{shared-rvf-dual-writer-MX4FC2JE.js → shared-rvf-dual-writer-HLM65RDS.js} +2 -2
  288. package/dist/cli/chunks/sqlite-persistence-XIUYDJC4.js +2 -0
  289. package/dist/cli/chunks/{standalone-memory-O4QUTK6L.js → standalone-memory-SKSZG7P5.js} +2 -2
  290. package/dist/cli/chunks/{status-handler-Z2BP6EOG.js → status-handler-766YOOMJ.js} +2 -2
  291. package/dist/cli/chunks/{structural-health-R36WNLQG.js → structural-health-M45FNOLT.js} +2 -2
  292. package/dist/cli/chunks/{sync-QF5Y3EMZ.js → sync-6CJ24B5T.js} +2 -2
  293. package/dist/cli/chunks/{sync-2ELWUFQU.js → sync-B2U366I3.js} +2 -2
  294. package/dist/cli/chunks/{task-handler-43PYE75J.js → task-handler-P6IFLCKP.js} +17 -15
  295. package/dist/cli/chunks/task-handlers-DPWMUKFC.js +9 -0
  296. package/dist/cli/chunks/{test-UWA377D4.js → test-TODH7KRF.js} +11 -11
  297. package/dist/cli/chunks/test-runner-process-46IPK3GH.js +2 -0
  298. package/dist/cli/chunks/{test-scheduling-YQZPJRRN.js → test-scheduling-VMVMVRHT.js} +3 -3
  299. package/dist/cli/chunks/{token-bootstrap-F7C6UKTC.js → token-bootstrap-XQW7BMCK.js} +2 -2
  300. package/dist/cli/chunks/{token-usage-DO6WLMXP.js → token-usage-JCZEIRKO.js} +2 -2
  301. package/dist/cli/chunks/{transformers-H5RGFKVO.js → transformers-U2ML3OHE.js} +2 -2
  302. package/dist/cli/chunks/tree-sitter-wasm-parser-MOI2WWNJ.js +2 -0
  303. package/dist/cli/chunks/{types-PJS2FGPF.js → types-GGEPCHP6.js} +2 -2
  304. package/dist/cli/chunks/unified-memory-FL26RTV3.js +2 -0
  305. package/dist/cli/chunks/unified-memory-hnsw-E2BPTH3U.js +2 -0
  306. package/dist/cli/chunks/unified-persistence-5ZOUPKHF.js +2 -0
  307. package/dist/cli/chunks/{upgrade-4IC4F6AB.js → upgrade-T5GRM7HS.js} +2 -2
  308. package/dist/cli/chunks/{validate-DHUWW7PF.js → validate-XMUJPLP3.js} +2 -2
  309. package/dist/cli/chunks/{validate-swarm-OERQNOX5.js → validate-swarm-KJLF7JEH.js} +2 -2
  310. package/dist/cli/chunks/visual-security-IJVPO5FA.js +2 -0
  311. package/dist/cli/chunks/{web-tree-sitter-TV7DMKES.js → web-tree-sitter-LOHVZ7G5.js} +2 -2
  312. package/dist/cli/chunks/{windsurf-installer-QZPWSH37.js → windsurf-installer-33FBTXJU.js} +2 -2
  313. package/dist/cli/chunks/witness-chain-5FAFCQKP.js +2 -0
  314. package/dist/cli/chunks/witness-chain-V2M32W5D.js +2 -0
  315. package/dist/cli/chunks/{witness-chain-repair-RUXIOE7F.js → witness-chain-repair-VWBO4NXE.js} +2 -2
  316. package/dist/cli/chunks/{witness-chain-verifier-YXENHB42.js → witness-chain-verifier-BHJ3ZAEK.js} +2 -2
  317. package/dist/cli/chunks/{witness-key-manager-HL26AGFO.js → witness-key-manager-WNVPH2Z3.js} +2 -2
  318. package/dist/cli/chunks/{workflow-EOVVCN2E.js → workflow-6QR5MQTO.js} +4 -4
  319. package/dist/cli/chunks/workflow-orchestrator-3JLF3IX7.js +2 -0
  320. package/dist/cli/chunks/{wrappers-AGODHBOO.js → wrappers-EHOL62TS.js} +2 -2
  321. package/dist/cli/commands/ci.js +7 -0
  322. package/dist/cli/commands/coverage.js +7 -1
  323. package/dist/cli/commands/fleet.js +5 -2
  324. package/dist/cli/commands/hooks-handlers/stats-hooks.d.ts +4 -3
  325. package/dist/cli/commands/hooks-handlers/stats-hooks.js +22 -4
  326. package/dist/cli/commands/hooks-handlers/tool-loop-guardrail.js +11 -6
  327. package/dist/cli/commands/test.js +5 -2
  328. package/dist/cli/handlers/init-handler.d.ts +12 -0
  329. package/dist/cli/handlers/init-handler.js +27 -12
  330. package/dist/cli/handlers/task-handler.js +6 -0
  331. package/dist/cli/utils/ci-output.d.ts +2 -0
  332. package/dist/cli/utils/ci-output.js +2 -0
  333. package/dist/cli/utils/coverage-verdict.d.ts +11 -2
  334. package/dist/cli/utils/coverage-verdict.js +26 -6
  335. package/dist/cli/utils/fleet-operation.d.ts +5 -0
  336. package/dist/cli/utils/fleet-operation.js +7 -1
  337. package/dist/cli/utils/fleet-result.d.ts +5 -3
  338. package/dist/cli/utils/fleet-result.js +9 -3
  339. package/dist/cli/utils/progress.d.ts +16 -2
  340. package/dist/cli/utils/progress.js +31 -14
  341. package/dist/coordination/consensus/consensus-engine.js +3 -1
  342. package/dist/coordination/handlers/code-intelligence-handlers.js +3 -2
  343. package/dist/coordination/handlers/coverage-collection.d.ts +2 -0
  344. package/dist/coordination/handlers/coverage-collection.js +5 -2
  345. package/dist/coordination/handlers/coverage-evidence.d.ts +75 -0
  346. package/dist/coordination/handlers/coverage-evidence.js +159 -0
  347. package/dist/coordination/handlers/coverage-handlers.js +16 -3
  348. package/dist/coordination/handlers/coverage-runner.d.ts +3 -8
  349. package/dist/coordination/handlers/coverage-runner.js +6 -22
  350. package/dist/coordination/handlers/coverage-scope.d.ts +40 -0
  351. package/dist/coordination/handlers/coverage-scope.js +321 -0
  352. package/dist/coordination/handlers/coverage-stderr.d.ts +23 -0
  353. package/dist/coordination/handlers/coverage-stderr.js +39 -0
  354. package/dist/coordination/handlers/coverage-target.d.ts +9 -0
  355. package/dist/coordination/handlers/coverage-target.js +21 -8
  356. package/dist/coordination/handlers/handler-utils.d.ts +5 -0
  357. package/dist/coordination/handlers/handler-utils.js +11 -5
  358. package/dist/coordination/handlers/requirements-handlers.js +3 -2
  359. package/dist/coordination/handlers/security-handlers.js +34 -20
  360. package/dist/coordination/queen-coordinator.js +8 -3
  361. package/dist/coordination/task-executability.d.ts +12 -0
  362. package/dist/coordination/task-executability.js +27 -0
  363. package/dist/coordination/workflow-orchestrator.d.ts +6 -0
  364. package/dist/coordination/workflow-orchestrator.js +22 -8
  365. package/dist/domains/code-intelligence/services/metric-collector/listing-process-owner.js +4 -1
  366. package/dist/domains/code-intelligence/services/product-factors-bridge.js +7 -4
  367. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +8 -0
  368. package/dist/domains/code-intelligence/services/semantic-analyzer.js +10 -7
  369. package/dist/domains/coverage-analysis/services/coverage-parser.js +19 -10
  370. package/dist/domains/learning-optimization/interfaces.d.ts +2 -0
  371. package/dist/domains/learning-optimization/services/learning-coordinator.js +2 -1
  372. package/dist/domains/learning-optimization/services/metrics-optimizer.js +14 -4
  373. package/dist/domains/learning-optimization/services/production-intel.js +3 -1
  374. package/dist/domains/security-compliance/generic-finding-dedup.d.ts +40 -0
  375. package/dist/domains/security-compliance/generic-finding-dedup.js +63 -0
  376. package/dist/domains/security-compliance/services/scanners/dependency-resolver.js +14 -6
  377. package/dist/domains/security-compliance/services/scanners/sast-scanner.js +4 -2
  378. package/dist/domains/security-compliance/services/security-auditor-sast.js +2 -2
  379. package/dist/domains/security-compliance/services/security-auditor-secrets.js +2 -2
  380. package/dist/domains/security-compliance/services/security-auditor.js +3 -2
  381. package/dist/domains/test-execution/coordinator.d.ts +2 -1
  382. package/dist/domains/test-execution/coordinator.js +5 -14
  383. package/dist/domains/test-execution/interfaces.d.ts +11 -1
  384. package/dist/domains/test-execution/services/retry-outcome.d.ts +18 -0
  385. package/dist/domains/test-execution/services/retry-outcome.js +53 -0
  386. package/dist/domains/test-generation/coordinator.js +2 -2
  387. package/dist/domains/test-generation/services/pattern-matcher.js +4 -4
  388. package/dist/domains/test-generation/services/test-generator.js +2 -2
  389. package/dist/governance/evolution-pipeline-integration.js +3 -1
  390. package/dist/hooks/cross-phase-hooks.js +3 -1
  391. package/dist/init/init-wizard-steps.js +5 -1
  392. package/dist/init/phases/04-database.js +7 -0
  393. package/dist/init/phases/10-workers.js +42 -4
  394. package/dist/init/phases/12-verification.js +14 -4
  395. package/dist/init/settings-merge.js +7 -4
  396. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +29 -0
  397. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +70 -6
  398. package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +10 -3
  399. package/dist/integrations/agentic-flow/reasoning-bank/index.js +13 -0
  400. package/dist/integrations/ruvector/filter-adapter.js +2 -1
  401. package/dist/learning/dream/insight-generator.js +5 -4
  402. package/dist/learning/embedder-endpoint-client.d.ts +8 -0
  403. package/dist/learning/embedder-endpoint-client.js +20 -0
  404. package/dist/learning/embedder-recovery.d.ts +63 -0
  405. package/dist/learning/embedder-recovery.js +94 -0
  406. package/dist/learning/memory-auditor.js +3 -1
  407. package/dist/learning/qe-patterns.js +2 -1
  408. package/dist/learning/qe-reasoning-bank-types.d.ts +5 -0
  409. package/dist/learning/qe-reasoning-bank.d.ts +21 -0
  410. package/dist/learning/qe-reasoning-bank.js +54 -8
  411. package/dist/learning/real-embeddings.d.ts +23 -0
  412. package/dist/learning/real-embeddings.js +69 -2
  413. package/dist/learning/real-qe-reasoning-bank.d.ts +39 -0
  414. package/dist/learning/real-qe-reasoning-bank.js +108 -38
  415. package/dist/logging/redaction.js +142 -12
  416. package/dist/mcp/bundle.js +520 -503
  417. package/dist/mcp/daemon-mode.d.ts +126 -0
  418. package/dist/mcp/daemon-mode.js +257 -0
  419. package/dist/mcp/entry.d.ts +4 -0
  420. package/dist/mcp/entry.js +50 -2
  421. package/dist/mcp/handlers/domain-handler-configs.d.ts +2 -0
  422. package/dist/mcp/handlers/domain-handler-configs.js +13 -2
  423. package/dist/mcp/handlers/orchestrate-routes.d.ts +6 -1
  424. package/dist/mcp/handlers/orchestrate-routes.js +53 -0
  425. package/dist/mcp/handlers/task-handlers.d.ts +23 -1
  426. package/dist/mcp/handlers/task-handlers.js +90 -19
  427. package/dist/mcp/handlers/validation-pipeline-handler.js +9 -9
  428. package/dist/mcp/protocol-server.js +11 -8
  429. package/dist/mcp/qe-tool-bridge.js +3 -0
  430. package/dist/mcp/services/reasoning-bank-service.d.ts +9 -2
  431. package/dist/mcp/services/reasoning-bank-service.js +13 -0
  432. package/dist/mcp/tool-annotations.js +4 -1
  433. package/dist/mcp/tools/coherence/check.js +1 -0
  434. package/dist/mcp/tools/coherence/consensus.js +4 -2
  435. package/dist/mcp/tools/learning-optimization/optimize.js +1 -2
  436. package/dist/mcp/tools/mincut/index.js +3 -0
  437. package/dist/mcp/tools/quality-assessment/gate.js +7 -0
  438. package/dist/mcp/tools/qx-analysis/analyze.js +1 -0
  439. package/dist/mcp/tools/requirements-validation/quality-criteria.js +10 -3
  440. package/dist/mcp/tools/security-compliance/scan.js +4 -2
  441. package/dist/mcp/tools/test-execution/e2e-execute.js +2 -2
  442. package/dist/mcp/tools/test-execution/execute.js +3 -2
  443. package/dist/mcp/types.d.ts +14 -0
  444. package/dist/memory/crdt/crdt-store.js +5 -0
  445. package/dist/memory/crdt/lww-register.js +12 -2
  446. package/dist/optimization/early-exit-token-optimizer.js +3 -1
  447. package/dist/planning/goap-planner.js +5 -0
  448. package/dist/planning/plan-executor.js +5 -0
  449. package/dist/routing/advisor/redaction.js +22 -2
  450. package/dist/shared/io/confined-read.d.ts +74 -0
  451. package/dist/shared/io/confined-read.js +256 -0
  452. package/dist/shared/io/file-reader.d.ts +6 -6
  453. package/dist/shared/io/file-reader.js +16 -42
  454. package/dist/shared/llm/providers/claude-code.js +4 -1
  455. package/dist/shared/llm/providers/response-deadline.js +16 -2
  456. package/dist/shared/native-module-errors.d.ts +51 -0
  457. package/dist/shared/native-module-errors.js +129 -0
  458. package/dist/shared/safe-db.js +14 -4
  459. package/dist/shared/security/osv-client.js +4 -1
  460. package/dist/shared/types/index.js +3 -1
  461. package/dist/shared/types/test-frameworks.js +2 -2
  462. package/dist/strange-loop/infra-healing/infra-aware-agent-provider.js +8 -1
  463. package/dist/sync/readers/json-reader.js +2 -1
  464. package/dist/validation/anchor-set.d.ts +6 -0
  465. package/dist/validation/anchor-set.js +9 -1
  466. package/dist/validation/quality-gate-runner.d.ts +7 -1
  467. package/dist/validation/quality-gate-runner.js +3 -3
  468. package/package.json +3 -3
  469. package/dist/cli/chunks/adapter-TR5SLAZC.js +0 -2
  470. package/dist/cli/chunks/aqe-learning-engine-DXWKCHY2.js +0 -2
  471. package/dist/cli/chunks/base-GTB6POYE.js +0 -2
  472. package/dist/cli/chunks/browser-workflow-MSBOLYUY.js +0 -2
  473. package/dist/cli/chunks/chunk-4SJYIX54.js +0 -3
  474. package/dist/cli/chunks/chunk-6P7424AO.js +0 -21
  475. package/dist/cli/chunks/chunk-6X5DHU6Q.js +0 -14
  476. package/dist/cli/chunks/chunk-CMBLM26R.js +0 -2
  477. package/dist/cli/chunks/chunk-DKAC3E3B.js +0 -3
  478. package/dist/cli/chunks/chunk-DURHK377.js +0 -742
  479. package/dist/cli/chunks/chunk-FPUDRSFJ.js +0 -180
  480. package/dist/cli/chunks/chunk-G5I6KGMW.js +0 -59
  481. package/dist/cli/chunks/chunk-HOZUDE4C.js +0 -2
  482. package/dist/cli/chunks/chunk-N6PIIK6G.js +0 -3
  483. package/dist/cli/chunks/chunk-NSHU347M.js +0 -2
  484. package/dist/cli/chunks/chunk-PPSAMXYN.js +0 -13
  485. package/dist/cli/chunks/chunk-TYFZXDGZ.js +0 -4
  486. package/dist/cli/chunks/chunk-U4OICXV2.js +0 -6
  487. package/dist/cli/chunks/chunk-WSF24I3D.js +0 -2
  488. package/dist/cli/chunks/chunk-XBVUVFJK.js +0 -4
  489. package/dist/cli/chunks/chunk-XUZDBQ5X.js +0 -6
  490. package/dist/cli/chunks/chunk-YBSBABOS.js +0 -2
  491. package/dist/cli/chunks/chunk-ZG5666GJ.js +0 -2
  492. package/dist/cli/chunks/ci-MSKMVH5X.js +0 -81
  493. package/dist/cli/chunks/client-POSVREVS.js +0 -2
  494. package/dist/cli/chunks/core-handlers-V243GY7X.js +0 -2
  495. package/dist/cli/chunks/coverage-B7MCGNTE.js +0 -49
  496. package/dist/cli/chunks/cross-domain-router-N3AIEM3B.js +0 -2
  497. package/dist/cli/chunks/dream-UA7MKOPQ.js +0 -2
  498. package/dist/cli/chunks/file-discovery-YCMNKZAK.js +0 -2
  499. package/dist/cli/chunks/fleet-2Y3ZE6CE.js +0 -46
  500. package/dist/cli/chunks/heartbeat-scheduler-QH5V6G2P.js +0 -2
  501. package/dist/cli/chunks/hnsw-adapter-OJNFAGJS.js +0 -2
  502. package/dist/cli/chunks/hnsw-index-DFUNARVD.js +0 -2
  503. package/dist/cli/chunks/hybrid-backend-SSGQQEQ2.js +0 -2
  504. package/dist/cli/chunks/impact-analyzer-CRGCA7ZD.js +0 -2
  505. package/dist/cli/chunks/init-wizard-NIMZ4J55.js +0 -2
  506. package/dist/cli/chunks/kernel-JQK7PRAI.js +0 -2
  507. package/dist/cli/chunks/knowledge-graph-YPVVIKEU.js +0 -2
  508. package/dist/cli/chunks/llm-router-service-5OGAUOXF.js +0 -2
  509. package/dist/cli/chunks/load-test-UKNV5MWW.js +0 -2
  510. package/dist/cli/chunks/memory-backend-ZW4BTRNK.js +0 -2
  511. package/dist/cli/chunks/memory-handlers-FCXN437E.js +0 -2
  512. package/dist/cli/chunks/pattern-null-store-4DUV6MQC.js +0 -2
  513. package/dist/cli/chunks/project-root-JCAUNL6O.js +0 -2
  514. package/dist/cli/chunks/protocol-executor-RNZNZP3A.js +0 -2
  515. package/dist/cli/chunks/qe-reasoning-bank-WK6TQOG2.js +0 -2
  516. package/dist/cli/chunks/queen-coordinator-4452SXZQ.js +0 -2
  517. package/dist/cli/chunks/real-embeddings-RWGOVOXO.js +0 -2
  518. package/dist/cli/chunks/router-3DIS5X4R.js +0 -2
  519. package/dist/cli/chunks/routing-feedback-OPXRCXM7.js +0 -2
  520. package/dist/cli/chunks/rvf-dual-writer-JL6T727I.js +0 -2
  521. package/dist/cli/chunks/rvf-migration-adapter-V7IBDUCS.js +0 -2
  522. package/dist/cli/chunks/rvf-native-adapter-O3UQTEBK.js +0 -2
  523. package/dist/cli/chunks/safe-db-EVB4ZC7T.js +0 -2
  524. package/dist/cli/chunks/schedule-ORDDXXY4.js +0 -2
  525. package/dist/cli/chunks/scheduler-XFLJSFIU.js +0 -2
  526. package/dist/cli/chunks/sqlite-persistence-Y7B42CJ3.js +0 -2
  527. package/dist/cli/chunks/task-handlers-KPWAEMKH.js +0 -9
  528. package/dist/cli/chunks/test-runner-process-3XZUYST2.js +0 -2
  529. package/dist/cli/chunks/tree-sitter-wasm-parser-YTBCBHUO.js +0 -2
  530. package/dist/cli/chunks/unified-memory-EHD4VNFW.js +0 -2
  531. package/dist/cli/chunks/unified-memory-hnsw-ZODGM4UK.js +0 -2
  532. package/dist/cli/chunks/unified-persistence-MHSI7ABK.js +0 -2
  533. package/dist/cli/chunks/visual-security-54MLFKWY.js +0 -2
  534. package/dist/cli/chunks/witness-chain-LC6Q2W27.js +0 -2
  535. package/dist/cli/chunks/witness-chain-QUIBAF3W.js +0 -2
  536. package/dist/cli/chunks/workflow-orchestrator-UKHEJVSK.js +0 -2
@@ -8,7 +8,10 @@
8
8
  *
9
9
  * - measured — an instrumented report covers the target: judged on the
10
10
  * metrics the report collected (an uncollected metric is null,
11
- * never 0%, and is left out of the threshold);
11
+ * never 0%, and is left out of the threshold). When target
12
+ * files are missing from the report, or the report is older
13
+ * than the sources, the evidence is insufficient (#1154): the
14
+ * threshold is not met and the exit code is 3;
12
15
  * - unmeasured — the report has no entry for the target, the runner ran 0
13
16
  * tests, or only test files were reported: no figure, exit 3;
14
17
  * - estimate — no report exists, so the CLI shows a labelled STATIC
@@ -20,6 +23,7 @@ import chalk from 'chalk';
20
23
  import { walkSourceFiles } from './file-discovery.js';
21
24
  import { buildCoverageData, summarizeCoverage } from './coverage-data.js';
22
25
  import { describeNoData, reconcileRecommendations, resolveExistingCoverage, thresholdVerdict, } from '../../coordination/handlers/coverage-target.js';
26
+ import { describeEvidence } from '../../coordination/handlers/coverage-evidence.js';
23
27
  /** `aqe coverage` exit code when no coverage measurement exists for the target (#995). */
24
28
  export const EXIT_UNMEASURED = 3;
25
29
  /** Provenance labels, the same vocabulary as MCP `coverage_analyze_sublinear`. */
@@ -46,8 +50,12 @@ export async function resolveCliCoverageData(targetPath, log = message => consol
46
50
  if (existing.status === 'evaluated') {
47
51
  const { evaluation, projectRoot } = existing;
48
52
  if (evaluation.status === 'measured') {
49
- const files = evaluation.files;
50
- return { kind: 'data', data: { files, summary: summarizeCoverage(files), instrumented: true }, projectRoot };
53
+ const { files, evidence } = evaluation;
54
+ const data = {
55
+ files, summary: summarizeCoverage(files), instrumented: true,
56
+ ...(evidence.unmeasuredFiles.length > 0 ? { unmeasuredFiles: evidence.unmeasuredFiles } : {}),
57
+ };
58
+ return { kind: 'data', data, projectRoot, evidence };
51
59
  }
52
60
  return { kind: 'no-data', reason: evaluation.reason, message: describeNoData(evaluation.reason, targetPath, projectRoot) };
53
61
  }
@@ -104,12 +112,17 @@ export async function evaluateCliCoverage(api, targetPath, threshold, log) {
104
112
  // #995 review NB5: a metric the report never collected is null — not 0 —
105
113
  // and is left out of the threshold verdict (same rule as MCP).
106
114
  const collected = metricsCollected(data);
107
- const verdict = thresholdVerdict(report.summary, threshold, collected);
115
+ const figures = thresholdVerdict(report.summary, threshold, collected);
116
+ // #1154: figures over part of the target, or from a stale report, never meet the threshold.
117
+ const insufficientEvidence = describeEvidence(resolved.evidence, resolved.projectRoot ?? targetPath);
118
+ const verdict = { ...figures, meetsThreshold: figures.meetsThreshold && insufficientEvidence.length === 0 };
108
119
  return {
109
120
  kind: 'measured',
110
121
  data,
111
122
  collected,
112
123
  verdict,
124
+ insufficientEvidence,
125
+ ...(resolved.evidence ? { evidence: resolved.evidence } : {}),
113
126
  summary: {
114
127
  ...report.summary,
115
128
  branch: collected.branch ? report.summary.branch : null,
@@ -117,16 +130,19 @@ export async function evaluateCliCoverage(api, targetPath, threshold, log) {
117
130
  statement: collected.statement ? report.summary.statement : null,
118
131
  },
119
132
  // NB-A: the shortfall advice comes from the same verdict (shared with MCP).
120
- recommendations: reconcileRecommendations(report.recommendations ?? [], verdict, threshold, collected),
133
+ recommendations: reconcileRecommendations(report.recommendations ?? [], figures, threshold, collected),
121
134
  };
122
135
  }
123
136
  /**
124
137
  * Exit code: 0 meets (by more than 5%), 1 below / error, 2 within 5% above,
125
- * 3 UNMEASURED (not in the report, 0 tests, test-only report, or estimate only).
138
+ * 3 UNMEASURED (not in the report, 0 tests, test-only report, or estimate only)
139
+ * or insufficient evidence (target files missing from the report, stale report).
126
140
  */
127
141
  export function coverageExitCode(outcome, threshold) {
128
142
  switch (outcome.kind) {
129
143
  case 'measured': {
144
+ if (outcome.insufficientEvidence.length > 0)
145
+ return EXIT_UNMEASURED;
130
146
  const { overall, meetsThreshold } = outcome.verdict;
131
147
  if (!meetsThreshold)
132
148
  return 1;
@@ -158,6 +174,10 @@ export function coverageJson(outcome, threshold, target) {
158
174
  functionDataCollected: outcome.collected.function,
159
175
  statementDataCollected: outcome.collected.statement,
160
176
  ...(outcome.data.unmeasuredFiles?.length ? { unmeasuredFiles: outcome.data.unmeasuredFiles } : {}),
177
+ ...(outcome.evidence ? { evidenceStatus: outcome.evidence.status } : {}),
178
+ ...(outcome.evidence?.stale ? { staleReport: outcome.evidence.stale } : {}),
179
+ ...(outcome.insufficientEvidence.length > 0
180
+ ? { warning: `INSUFFICIENT EVIDENCE: ${outcome.insufficientEvidence.join('; ')}` } : {}),
161
181
  };
162
182
  case 'estimate':
163
183
  return {
@@ -17,6 +17,11 @@ export interface FleetOperationTask {
17
17
  domain: DomainName;
18
18
  type: string;
19
19
  payload: Record<string, unknown>;
20
+ /**
21
+ * #1154: why the input cannot support a passing verdict (target files missing
22
+ * from the coverage report, a stale report). The verdict fails while non-empty.
23
+ */
24
+ insufficientEvidence?: string[];
20
25
  }
21
26
  export type FleetOperationPlan = {
22
27
  success: true;
@@ -15,6 +15,7 @@ import { extname, resolve } from 'node:path';
15
15
  import { walkSourceFiles } from './file-discovery.js';
16
16
  import { summarizeCoverage } from './coverage-data.js';
17
17
  import { describeNoData, resolveExistingCoverage } from '../../coordination/handlers/coverage-target.js';
18
+ import { describeEvidence } from '../../coordination/handlers/coverage-evidence.js';
18
19
  import { MAX_SAST_FILE_BYTES } from '../../domains/security-compliance/sast-path-guard.js';
19
20
  export const FLEET_OPERATIONS = ['test', 'analyze', 'scan'];
20
21
  /** Coverage threshold `analyze` judges against, as `aqe coverage` does by default. */
@@ -61,9 +62,14 @@ export async function planFleetOperation(operation, target) {
61
62
  if (evaluation.status !== 'measured')
62
63
  return refuse(describeNoData(evaluation.reason, target, projectRoot));
63
64
  const coverageData = { files: evaluation.files, summary: summarizeCoverage(evaluation.files) };
65
+ const insufficientEvidence = describeEvidence(evaluation.evidence, projectRoot);
64
66
  return {
65
67
  success: true,
66
- task: { domain: 'coverage-analysis', type: 'analyze-coverage', payload: { coverageData, threshold: FLEET_COVERAGE_THRESHOLD } },
68
+ task: {
69
+ domain: 'coverage-analysis', type: 'analyze-coverage',
70
+ payload: { coverageData, threshold: FLEET_COVERAGE_THRESHOLD },
71
+ ...(insufficientEvidence.length > 0 ? { insufficientEvidence } : {}),
72
+ },
67
73
  };
68
74
  }
69
75
  }
@@ -8,7 +8,8 @@
8
8
  * - test fails when no test was generated or a generated test failed
9
9
  * the test quality gate;
10
10
  * - analyze fails when coverage over the collected metrics is below the
11
- * threshold (an uncollected metric is not counted as 0%).
11
+ * threshold (an uncollected metric is not counted as 0%), or when
12
+ * the report leaves target files unmeasured or is stale (#1154).
12
13
  * A result without the expected shape fails rather than passing unread.
13
14
  */
14
15
  import { type FleetOperation } from './fleet-operation.js';
@@ -22,10 +23,11 @@ export interface FleetResultSummary {
22
23
  export declare function summarizeFleetResult(operation: FleetOperation, result: unknown): FleetResultSummary;
23
24
  /**
24
25
  * Print each distinct worker result once and the verdict over all workers.
25
- * Returns whether the operation passed.
26
+ * `insufficientEvidence` (from the operation's plan) fails the verdict whatever
27
+ * the workers returned. Returns whether the operation passed.
26
28
  */
27
29
  export declare function reportFleetVerdict(operation: FleetOperation, workers: ReadonlyArray<{
28
30
  success: boolean;
29
31
  result: unknown;
30
- }>, log?: (line: string) => void): boolean;
32
+ }>, log?: (line: string) => void, insufficientEvidence?: readonly string[]): boolean;
31
33
  //# sourceMappingURL=fleet-result.d.ts.map
@@ -8,7 +8,8 @@
8
8
  * - test fails when no test was generated or a generated test failed
9
9
  * the test quality gate;
10
10
  * - analyze fails when coverage over the collected metrics is below the
11
- * threshold (an uncollected metric is not counted as 0%).
11
+ * threshold (an uncollected metric is not counted as 0%), or when
12
+ * the report leaves target files unmeasured or is stale (#1154).
12
13
  * A result without the expected shape fails rather than passing unread.
13
14
  */
14
15
  import chalk from 'chalk';
@@ -97,9 +98,10 @@ export function summarizeFleetResult(operation, result) {
97
98
  }
98
99
  /**
99
100
  * Print each distinct worker result once and the verdict over all workers.
100
- * Returns whether the operation passed.
101
+ * `insufficientEvidence` (from the operation's plan) fails the verdict whatever
102
+ * the workers returned. Returns whether the operation passed.
101
103
  */
102
- export function reportFleetVerdict(operation, workers, log = line => console.log(line)) {
104
+ export function reportFleetVerdict(operation, workers, log = line => console.log(line), insufficientEvidence = []) {
103
105
  const summaries = workers.filter(w => w.success).map(w => summarizeFleetResult(operation, w.result));
104
106
  const shown = new Set();
105
107
  for (const summary of summaries) {
@@ -111,8 +113,12 @@ export function reportFleetVerdict(operation, workers, log = line => console.log
111
113
  for (const line of summary.lines)
112
114
  log(` ${line}`);
113
115
  }
116
+ for (const reason of insufficientEvidence)
117
+ log(chalk.yellow(` Evidence: ${reason}`));
114
118
  const incomplete = workers.filter(w => !w.success).length;
115
119
  const reasons = [...new Set(summaries.flatMap(s => s.reasons))];
120
+ if (insufficientEvidence.length > 0)
121
+ reasons.push('insufficient evidence: the coverage report is incomplete or stale for the target');
116
122
  if (incomplete > 0)
117
123
  reasons.unshift(`${incomplete} of ${workers.length} workers did not complete`);
118
124
  log('');
@@ -21,6 +21,14 @@ export interface FleetProgressOptions {
21
21
  showPercentage?: boolean;
22
22
  format?: string;
23
23
  }
24
+ /** Options for {@link FleetProgressManager.stop}. */
25
+ export interface FleetProgressStopOptions {
26
+ /**
27
+ * The operation's verdict failed (#1168). The agents still completed, but
28
+ * the summary line must not call that a success.
29
+ */
30
+ verdictFailed?: boolean;
31
+ }
24
32
  export interface SpinnerOptions {
25
33
  text: string;
26
34
  color?: 'cyan' | 'green' | 'yellow' | 'red' | 'blue' | 'magenta' | 'white';
@@ -43,7 +51,7 @@ export declare class FleetProgressManager {
43
51
  /**
44
52
  * Start the fleet progress display
45
53
  */
46
- start(totalAgents: number): void;
54
+ start(_totalAgents: number): void;
47
55
  /**
48
56
  * Add an agent to track
49
57
  */
@@ -63,11 +71,17 @@ export declare class FleetProgressManager {
63
71
  /**
64
72
  * Stop the progress display
65
73
  */
66
- stop(): void;
74
+ stop(options?: FleetProgressStopOptions): void;
67
75
  /**
68
76
  * Update the fleet-level progress bar
69
77
  */
70
78
  private updateFleetProgress;
79
+ /**
80
+ * Create a bar and apply its payload. Without a TTY, cli-progress's
81
+ * MultiBar.create() returns before starting the bar, dropping the payload,
82
+ * so the final render printed a literal `{name}` (#1168).
83
+ */
84
+ private createBar;
71
85
  private getAgentNameDisplay;
72
86
  private getStatusIcon;
73
87
  private truncateName;
@@ -13,6 +13,7 @@ import { getCLIConfig, shouldUseColors } from '../config/cli-config.js';
13
13
  // ============================================================================
14
14
  // Fleet Progress Manager - Multi-bar progress for parallel agents
15
15
  // ============================================================================
16
+ const FLEET_BAR_NAME = chalk.white('Fleet Progress'.padEnd(30));
16
17
  export class FleetProgressManager {
17
18
  multiBar;
18
19
  agentBars = new Map();
@@ -31,10 +32,12 @@ export class FleetProgressManager {
31
32
  showPercentage: true,
32
33
  ...options,
33
34
  };
34
- // Custom format for multi-bar display (respects color config)
35
+ // Custom format for multi-bar display (respects color config).
36
+ // `{eta}` is a cli-progress built-in that overrides the payload, so the
37
+ // formatted ETA travels as `{etaText}` (#1168).
35
38
  const barColor = useColors ? chalk.cyan('{bar}') : '{bar}';
36
39
  const format = this.options.format ||
37
- `{name} ${barColor} {percentage}% | {status} {eta}`;
40
+ `{name} ${barColor} {percentage}% | {status} {etaText}`;
38
41
  this.multiBar = new MultiBar({
39
42
  clearOnComplete: false,
40
43
  hideCursor: true,
@@ -48,15 +51,15 @@ export class FleetProgressManager {
48
51
  /**
49
52
  * Start the fleet progress display
50
53
  */
51
- start(totalAgents) {
54
+ start(_totalAgents) {
52
55
  this.isActive = true;
53
56
  this.startTime = Date.now();
54
57
  // Create fleet-level progress bar
55
58
  console.log(chalk.blue(`\n${this.options.title}\n`));
56
- this.fleetBar = this.multiBar.create(100, 0, {
57
- name: chalk.white('Fleet Progress'.padEnd(30)),
59
+ this.fleetBar = this.createBar(0, {
60
+ name: FLEET_BAR_NAME,
58
61
  status: '',
59
- eta: '',
62
+ etaText: '',
60
63
  });
61
64
  }
62
65
  /**
@@ -66,10 +69,10 @@ export class FleetProgressManager {
66
69
  if (!this.isActive)
67
70
  return;
68
71
  this.agentStates.set(agent.id, agent);
69
- const bar = this.multiBar.create(100, agent.progress, {
72
+ const bar = this.createBar(agent.progress, {
70
73
  name: chalk.gray(this.truncateName(agent.name, 30).padEnd(30)),
71
74
  status: this.getStatusIcon(agent.status),
72
- eta: agent.eta ? this.formatEta(agent.eta) : '',
75
+ etaText: agent.eta ? this.formatEta(agent.eta) : '',
73
76
  });
74
77
  this.agentBars.set(agent.id, bar);
75
78
  this.updateFleetProgress();
@@ -96,7 +99,7 @@ export class FleetProgressManager {
96
99
  bar.update(state.progress, {
97
100
  name: this.getAgentNameDisplay(state),
98
101
  status: this.getStatusIcon(state.status),
99
- eta: state.eta ? this.formatEta(state.eta) : '',
102
+ etaText: state.eta ? this.formatEta(state.eta) : '',
100
103
  });
101
104
  this.updateFleetProgress();
102
105
  }
@@ -115,14 +118,14 @@ export class FleetProgressManager {
115
118
  bar.update(state.progress, {
116
119
  name: this.getAgentNameDisplay(state),
117
120
  status: this.getStatusIcon(state.status),
118
- eta: '',
121
+ etaText: '',
119
122
  });
120
123
  this.updateFleetProgress();
121
124
  }
122
125
  /**
123
126
  * Stop the progress display
124
127
  */
125
- stop() {
128
+ stop(options = {}) {
126
129
  if (!this.isActive)
127
130
  return;
128
131
  this.isActive = false;
@@ -135,7 +138,10 @@ export class FleetProgressManager {
135
138
  const total = this.agentStates.size;
136
139
  const duration = Date.now() - this.startTime;
137
140
  console.log('');
138
- if (failed === 0) {
141
+ if (failed === 0 && options.verdictFailed) {
142
+ console.log(chalk.yellow(`All ${completed}/${total} agents completed (${this.formatDuration(duration)})`));
143
+ }
144
+ else if (failed === 0) {
139
145
  console.log(chalk.green(`All ${completed}/${total} agents completed successfully (${this.formatDuration(duration)})`));
140
146
  }
141
147
  else {
@@ -155,10 +161,21 @@ export class FleetProgressManager {
155
161
  const completed = agents.filter(a => a.status === 'completed').length;
156
162
  const running = agents.filter(a => a.status === 'running').length;
157
163
  this.fleetBar.update(avgProgress, {
164
+ name: FLEET_BAR_NAME,
158
165
  status: chalk.gray(`${completed}/${agents.length} complete, ${running} running`),
159
- eta: this.options.showEta ? this.estimateFleetEta(agents) : '',
166
+ etaText: this.options.showEta ? this.estimateFleetEta(agents) : '',
160
167
  });
161
168
  }
169
+ /**
170
+ * Create a bar and apply its payload. Without a TTY, cli-progress's
171
+ * MultiBar.create() returns before starting the bar, dropping the payload,
172
+ * so the final render printed a literal `{name}` (#1168).
173
+ */
174
+ createBar(value, payload) {
175
+ const bar = this.multiBar.create(100, value, payload);
176
+ bar.update(value, payload);
177
+ return bar;
178
+ }
162
179
  getAgentNameDisplay(agent) {
163
180
  const name = this.truncateName(agent.name, 26);
164
181
  switch (agent.status) {
@@ -448,7 +465,7 @@ export class EtaEstimator {
448
465
  * Create a simple spinner for async operations
449
466
  */
450
467
  export function withSpinner(text, operation) {
451
- const { spinner, succeed, fail } = createTimedSpinner(text);
468
+ const { succeed, fail } = createTimedSpinner(text);
452
469
  return operation()
453
470
  .then((result) => {
454
471
  succeed();
@@ -12,6 +12,7 @@ import { DEFAULT_CONSENSUS_CONFIG, } from './interfaces.js';
12
12
  import { buildVerificationPrompt, parseVerificationResponse, buildModelVote, } from './model-provider.js';
13
13
  import { ok, err } from '../../shared/types/index.js';
14
14
  import { toErrorMessage, toError } from '../../shared/error-utils.js';
15
+ import { createSafeRecord } from '../../shared/utils/safe-record.js';
15
16
  import { createStrategy, } from './strategies/index.js';
16
17
  import { createSycophancyScorer } from './sycophancy-scorer.js';
17
18
  // ============================================================================
@@ -268,7 +269,8 @@ export class ConsensusEngineImpl {
268
269
  averageExecutionTime: 0,
269
270
  totalCost: 0,
270
271
  humanReviewCount: 0,
271
- modelStats: {},
272
+ // #1157: keyed by provider model ids.
273
+ modelStats: createSafeRecord(),
272
274
  };
273
275
  }
274
276
  /**
@@ -4,7 +4,6 @@
4
4
  * Extracted from task-executor.ts registerHandlers().
5
5
  * Covers: index-code, predict-defects
6
6
  */
7
- import * as fs from 'fs/promises';
8
7
  import { randomUUID } from 'node:crypto';
9
8
  import { prunePredictionHistory } from '../../domains/defect-intelligence/prediction-history.js';
10
9
  import * as path from 'path';
@@ -15,6 +14,7 @@ import { resolveProjectRootFromPaths } from '../../domains/code-intelligence/pro
15
14
  import { nothingIndexedError } from '../../domains/code-intelligence/index-path-guard.js';
16
15
  import { createLogger } from '../../logging/logger-factory.js';
17
16
  import { requirePayloadPath } from '../../shared/io/payload-path-guard.js';
17
+ import { readConfinedText } from '../../shared/io/confined-read.js';
18
18
  const logger = createLogger('CodeIntelligenceHandlers');
19
19
  async function collectProjectMetricsForTarget(ctx, targetPath, indexedFiles) {
20
20
  if (!ctx.getCodeIntelligenceCoordinator)
@@ -177,7 +177,8 @@ export function registerCodeIntelligenceHandlers(ctx) {
177
177
  let filesSkipped = 0;
178
178
  for (const filePath of sourceFiles) {
179
179
  try {
180
- const content = await fs.readFile(filePath, 'utf-8');
180
+ // #1161: validate the opened descriptor, not the name listed earlier.
181
+ const content = await readConfinedText(filePath, { outsideRoot: 'allow' });
181
182
  const lines = content.split('\n');
182
183
  const lineCount = lines.length;
183
184
  // Calculate complexity indicators from real code
@@ -141,6 +141,8 @@ export declare function isRustProject(targetPath: string): boolean;
141
141
  export declare function collectRustCoverage(targetPath: string, options?: {
142
142
  timeoutMs?: number;
143
143
  }): Promise<CollectedCoverage | null>;
144
+ /** Production source files under a directory (test, build and vendored directories skipped). */
145
+ export declare function walkSourceFiles(targetPath: string): string[];
144
146
  /**
145
147
  * Static coverage estimate from source shape, for when no instrumentation could
146
148
  * be run.
@@ -19,6 +19,7 @@
19
19
  * caller.
20
20
  */
21
21
  import * as fs from 'fs';
22
+ import { readConfinedTextSync } from '../../shared/io/confined-read.js';
22
23
  import * as os from 'os';
23
24
  import * as path from 'path';
24
25
  import { parseLcovInfo } from './handler-utils.js';
@@ -501,7 +502,8 @@ function withRecomputedSummary(files) {
501
502
  },
502
503
  };
503
504
  }
504
- function walkSourceFiles(targetPath) {
505
+ /** Production source files under a directory (test, build and vendored directories skipped). */
506
+ export function walkSourceFiles(targetPath) {
505
507
  const found = [];
506
508
  // Classification is relative to the analysis root (see isTestPath).
507
509
  const rootDir = targetPath;
@@ -558,8 +560,9 @@ export function buildEstimatedCoverage(targetPath) {
558
560
  return null;
559
561
  const files = sourceFiles.map(filePath => {
560
562
  let content = '';
563
+ // #1161: a source file linked out of the project is treated as unreadable.
561
564
  try {
562
- content = fs.readFileSync(filePath, 'utf-8');
565
+ content = readConfinedTextSync(filePath, { outsideRoot: 'allow' });
563
566
  }
564
567
  catch { /* unreadable — treat as empty */ }
565
568
  const ext = path.extname(filePath);
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Coverage evidence: is a report complete and current for its target? (#1154)
3
+ *
4
+ * A report judged over only the files it happens to contain says nothing
5
+ * about the target's other files. `aqe fleet run analyze --target src` printed
6
+ * "100% over 1 files" and "Verdict: PASSED" from a report that listed
7
+ * `src/math.js` while `src/unsafe.js` had no measurement at all, and a report
8
+ * written before the sources last changed was judged as if it were current.
9
+ *
10
+ * This module answers two questions for every caller of the shared resolver
11
+ * (MCP `coverage_analyze_sublinear` / `task_orchestrate`, `aqe coverage`,
12
+ * `aqe ci`, `aqe fleet run analyze`):
13
+ * 1. Which production source files under the target are not in the report?
14
+ * They are UNMEASURED: not 0%, and not left out silently.
15
+ * 2. Is the report older than source files it is judged against? (stale)
16
+ * Either one makes the evidence insufficient: no verdict may pass on it.
17
+ */
18
+ import type { FileCoverage } from '../../domains/coverage-analysis/interfaces';
19
+ /** The report is older than these source files. */
20
+ export interface StaleReport {
21
+ reportPath: string;
22
+ reportModified: string;
23
+ newerFiles: string[];
24
+ }
25
+ export interface CoverageEvidence {
26
+ /** `insufficient-evidence` when any target file is unmeasured or the report is stale. */
27
+ status: 'complete' | 'insufficient-evidence';
28
+ /** Production source files under the target with no entry in the report (absolute paths). */
29
+ unmeasuredFiles: string[];
30
+ /** Production source files under the target, measured or not. */
31
+ targetFiles: number;
32
+ stale?: StaleReport;
33
+ /** The coverage config whose include/exclude scoped `unmeasuredFiles`, if any. */
34
+ coverageScope?: {
35
+ source: string;
36
+ readable: boolean;
37
+ };
38
+ }
39
+ /**
40
+ * Production source files under a directory `target` that the report has no
41
+ * entry for. Only files in a language the report covers count: a JS report
42
+ * does not make a Python helper script unmeasured. Files the project's coverage
43
+ * config leaves out (include/exclude) were never meant to be measured and do
44
+ * not count either.
45
+ */
46
+ export declare function findUnmeasuredSourceFiles(reportFiles: FileCoverage[], projectRoot: string, target: string): {
47
+ targetFiles: string[];
48
+ unmeasured: string[];
49
+ coverageScope?: {
50
+ source: string;
51
+ readable: boolean;
52
+ };
53
+ };
54
+ /** Source files modified after the report was written; `undefined` when the report is current. */
55
+ export declare function findStaleness(reportPath: string, sourceFiles: string[]): StaleReport | undefined;
56
+ /**
57
+ * The evidence a report gives for `target`.
58
+ *
59
+ * `measuredFiles` are the report entries already scoped to the target.
60
+ * Completeness is checked only when `checkCompleteness` is set (a directory
61
+ * target, not a report file given as the target), staleness only when the
62
+ * report's path is known (not for a report the run just wrote).
63
+ */
64
+ export declare function assessCoverageEvidence(report: {
65
+ files: FileCoverage[];
66
+ }, measuredFiles: FileCoverage[], projectRoot: string, target: string, options?: {
67
+ reportPath?: string;
68
+ checkCompleteness?: boolean;
69
+ }): CoverageEvidence;
70
+ /**
71
+ * Why the evidence is insufficient, one sentence per problem; empty when it is
72
+ * complete. Shared by MCP and CLI so the wording cannot drift.
73
+ */
74
+ export declare function describeEvidence(evidence: CoverageEvidence | undefined, projectRoot: string): string[];
75
+ //# sourceMappingURL=coverage-evidence.d.ts.map