agentic-qe 3.15.11 → 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 (431) hide show
  1. package/.claude/hooks/aqe-hook.cjs +38 -2
  2. package/.claude/skills/skills-manifest.json +1 -1
  3. package/CHANGELOG.md +149 -0
  4. package/assets/skills/skills-manifest.json +1 -1
  5. package/dist/cli/bundle.js +6 -6
  6. package/dist/cli/chunks/adapter-HL7MOCQN.js +2 -0
  7. package/dist/cli/chunks/{agent-booster-wasm-TIDSQ3ZK.js → agent-booster-wasm-5VZCKTIJ.js} +2 -2
  8. package/dist/cli/chunks/{agent-handler-G3EPBVA7.js → agent-handler-K3C6CQCD.js} +2 -2
  9. package/dist/cli/chunks/{agent-memory-branch-ARC5C7GW.js → agent-memory-branch-NVFQ25WS.js} +2 -2
  10. package/dist/cli/chunks/aqe-learning-engine-OZ2DXB4G.js +2 -0
  11. package/dist/cli/chunks/{arena-K4I4QDXB.js → arena-QGWIJADQ.js} +2 -2
  12. package/dist/cli/chunks/{arena-36DTATJV.js → arena-TSZVDSXS.js} +4 -4
  13. package/dist/cli/chunks/{audit-WQSJSJZF.js → audit-KIEE2SHJ.js} +3 -3
  14. package/dist/cli/chunks/base-WIM7G3HC.js +2 -0
  15. package/dist/cli/chunks/{better-sqlite3-BB4K67MT.js → better-sqlite3-BNB32NW3.js} +2 -2
  16. package/dist/cli/chunks/{brain-handler-CU3GOIU3.js → brain-handler-MPC5SPYI.js} +3 -3
  17. package/dist/cli/chunks/{branch-enumerator-NJQX7ZNB.js → branch-enumerator-LZ7UXKAY.js} +2 -2
  18. package/dist/cli/chunks/{browser-6YJF4FQW.js → browser-VDHAW4RK.js} +2 -2
  19. package/dist/cli/chunks/browser-workflow-QRKCFVR3.js +2 -0
  20. package/dist/cli/chunks/{chunk-V7DA4HAK.js → chunk-23PQF7NN.js} +1 -1
  21. package/dist/cli/chunks/{chunk-IENZSO3K.js → chunk-26672ISV.js} +2 -2
  22. package/dist/cli/chunks/{chunk-OURITHFV.js → chunk-2ASQRBK2.js} +2 -2
  23. package/dist/cli/chunks/{chunk-VBK2YAYY.js → chunk-2E2QO44T.js} +2 -2
  24. package/dist/cli/chunks/{chunk-NT7JRHMH.js → chunk-2IVE5AR3.js} +1 -1
  25. package/dist/cli/chunks/{chunk-672XOJDG.js → chunk-2JYUA27M.js} +1 -1
  26. package/dist/cli/chunks/{chunk-OHR7C777.js → chunk-2PPSS4JD.js} +2 -2
  27. package/dist/cli/chunks/{chunk-FUYOOKTH.js → chunk-32UTHIY5.js} +3 -3
  28. package/dist/cli/chunks/{chunk-UKKYMW3S.js → chunk-33I2ZP6E.js} +2 -2
  29. package/dist/cli/chunks/{chunk-76SNL7GU.js → chunk-35MIUSXQ.js} +2 -2
  30. package/dist/cli/chunks/{chunk-4X4MWMHB.js → chunk-35NW676P.js} +2 -2
  31. package/dist/cli/chunks/{chunk-BZPE3LDO.js → chunk-3EWQN37E.js} +2 -2
  32. package/dist/cli/chunks/{chunk-5N25I53C.js → chunk-3IU4LDZR.js} +2 -2
  33. package/dist/cli/chunks/{chunk-NKTWKYHB.js → chunk-47RMGDG4.js} +2 -2
  34. package/dist/cli/chunks/chunk-4A76VPU4.js +3 -0
  35. package/dist/cli/chunks/{chunk-4RH5I24Q.js → chunk-4CB3QPZM.js} +2 -2
  36. package/dist/cli/chunks/{chunk-U3LJNNVJ.js → chunk-4HWUECVD.js} +2 -2
  37. package/dist/cli/chunks/{chunk-T5KHJ3J7.js → chunk-4KUOYDY2.js} +2 -2
  38. package/dist/cli/chunks/{chunk-XNLIWQYE.js → chunk-4LWMAAWK.js} +2 -2
  39. package/dist/cli/chunks/{chunk-KKYO2NKV.js → chunk-4PU5GTZW.js} +2 -2
  40. package/dist/cli/chunks/{chunk-VWUZSNVC.js → chunk-4SA7M34P.js} +1 -1
  41. package/dist/cli/chunks/{chunk-5WYZHDIZ.js → chunk-4Y6OEBJZ.js} +1 -1
  42. package/dist/cli/chunks/{chunk-J4JMCZVA.js → chunk-5A66EGEW.js} +2 -2
  43. package/dist/cli/chunks/{chunk-HFFPYC4G.js → chunk-5ADXFUMO.js} +2 -2
  44. package/dist/cli/chunks/{chunk-KJCIMNHS.js → chunk-5S4UIDFK.js} +1 -1
  45. package/dist/cli/chunks/{chunk-YBBT3YYG.js → chunk-5TAEW5OV.js} +1 -1
  46. package/dist/cli/chunks/{chunk-FLU5FDSC.js → chunk-5Z23ZMXZ.js} +59 -59
  47. package/dist/cli/chunks/{chunk-YNOCQ2SL.js → chunk-65TH6RPD.js} +1 -1
  48. package/dist/cli/chunks/{chunk-XGPTZUKQ.js → chunk-66PXR3NI.js} +2 -2
  49. package/dist/cli/chunks/{chunk-ITPGWGQS.js → chunk-6E6HB4N4.js} +4 -4
  50. package/dist/cli/chunks/{chunk-EJPK7OTR.js → chunk-6QRI3JVE.js} +2 -2
  51. package/dist/cli/chunks/{chunk-ZP75ASUU.js → chunk-7DNR4KKR.js} +1 -1
  52. package/dist/cli/chunks/{chunk-V5AADCBC.js → chunk-7JFDLL2F.js} +1 -1
  53. package/dist/cli/chunks/chunk-7OEFBWAG.js +5 -0
  54. package/dist/cli/chunks/{chunk-EIDJNT5C.js → chunk-7QEUHNKO.js} +1 -1
  55. package/dist/cli/chunks/{chunk-7R5HC56U.js → chunk-7TA5MUPW.js} +1 -1
  56. package/dist/cli/chunks/{chunk-LCVEEII4.js → chunk-A2JCRXTK.js} +2 -2
  57. package/dist/cli/chunks/{chunk-JUMICXM6.js → chunk-A5Y7DAVQ.js} +2 -2
  58. package/dist/cli/chunks/{chunk-FZHSG75I.js → chunk-ADUAJIAU.js} +2 -2
  59. package/dist/cli/chunks/{chunk-TFW7CCKS.js → chunk-AJEXPFAB.js} +1 -1
  60. package/dist/cli/chunks/{chunk-JGJXXAS6.js → chunk-BC4T6SCV.js} +4 -4
  61. package/dist/cli/chunks/{chunk-4RAQ7PJA.js → chunk-BMG2JLSQ.js} +2 -2
  62. package/dist/cli/chunks/{chunk-Y7B5EUIJ.js → chunk-BOSMELJX.js} +2 -2
  63. package/dist/cli/chunks/{chunk-CIAL4YRY.js → chunk-BYRCB5JT.js} +2 -2
  64. package/dist/cli/chunks/{chunk-XS2XF3YG.js → chunk-C3YOVASQ.js} +1 -1
  65. package/dist/cli/chunks/{chunk-FL32MTKT.js → chunk-C74M4WUI.js} +2 -2
  66. package/dist/cli/chunks/{chunk-S6IYEBAI.js → chunk-CA5UNWQF.js} +2 -2
  67. package/dist/cli/chunks/{chunk-5MTWCCZJ.js → chunk-CDA5Z74H.js} +2 -2
  68. package/dist/cli/chunks/{chunk-DOFREOPQ.js → chunk-CPIBIR3X.js} +2 -2
  69. package/dist/cli/chunks/{chunk-UMVSWQNB.js → chunk-CU36D7TN.js} +2 -2
  70. package/dist/cli/chunks/{chunk-G4CKPWF6.js → chunk-DAUEK66C.js} +1 -1
  71. package/dist/cli/chunks/{chunk-2KFFEKSI.js → chunk-DRCBRUGN.js} +2 -2
  72. package/dist/cli/chunks/{chunk-EH2S6AOR.js → chunk-DZGPUGUG.js} +2 -2
  73. package/dist/cli/chunks/{chunk-HYXUN7BW.js → chunk-EF6OERRR.js} +1 -1
  74. package/dist/cli/chunks/{chunk-G77MLBDF.js → chunk-EN7GRVEQ.js} +2 -2
  75. package/dist/cli/chunks/{chunk-XDI5X3FR.js → chunk-ENGL7FIJ.js} +1 -1
  76. package/dist/cli/chunks/{chunk-HDNWSKHA.js → chunk-FAGKBOX2.js} +2 -2
  77. package/dist/cli/chunks/{chunk-FWSGPE3V.js → chunk-FNUFTWEO.js} +3 -3
  78. package/dist/cli/chunks/{chunk-AUUJBXWX.js → chunk-FZJCBSN4.js} +2 -2
  79. package/dist/cli/chunks/{chunk-ERN43HOX.js → chunk-G24SWTAX.js} +35 -35
  80. package/dist/cli/chunks/{chunk-VEEYL2CZ.js → chunk-G3AABG4Q.js} +2 -2
  81. package/dist/cli/chunks/{chunk-35M2X3C5.js → chunk-GJKZ7UQO.js} +2 -2
  82. package/dist/cli/chunks/{chunk-OV5RPLKV.js → chunk-GKFV6CUD.js} +2 -2
  83. package/dist/cli/chunks/{chunk-4HJKQIX5.js → chunk-HLGFHHWV.js} +2 -2
  84. package/dist/cli/chunks/{chunk-R5LGV6GZ.js → chunk-HM3LSFTY.js} +2 -2
  85. package/dist/cli/chunks/{chunk-M7XFBSIK.js → chunk-HSA5IGGW.js} +2 -2
  86. package/dist/cli/chunks/{chunk-GWJWSLDA.js → chunk-HZBXJFGN.js} +2 -2
  87. package/dist/cli/chunks/{chunk-4MUBW4RT.js → chunk-IA55PFLG.js} +2 -2
  88. package/dist/cli/chunks/{chunk-RBZCA7SD.js → chunk-ICKUINKD.js} +2 -2
  89. package/dist/cli/chunks/{chunk-KDI5JOYZ.js → chunk-IETBWYHW.js} +2 -2
  90. package/dist/cli/chunks/{chunk-325QCVDI.js → chunk-IL7GQNNE.js} +2 -2
  91. package/dist/cli/chunks/{chunk-BTVWA35P.js → chunk-INZARYUD.js} +2 -2
  92. package/dist/cli/chunks/{chunk-G2IJFNZS.js → chunk-IPA7K556.js} +2 -2
  93. package/dist/cli/chunks/{chunk-UTTSH4NH.js → chunk-IVTQF55W.js} +3 -3
  94. package/dist/cli/chunks/{chunk-2CW7VRPH.js → chunk-J7Y7ZBIT.js} +5 -5
  95. package/dist/cli/chunks/{chunk-M5RQ6U3G.js → chunk-JGIJPDGD.js} +2 -2
  96. package/dist/cli/chunks/{chunk-RQMCZQN2.js → chunk-JNXK47OL.js} +2 -2
  97. package/dist/cli/chunks/{chunk-X4J73KP3.js → chunk-JOWUS2X5.js} +1 -1
  98. package/dist/cli/chunks/{chunk-ZMC543GI.js → chunk-JR6CUKAI.js} +2 -2
  99. package/dist/cli/chunks/chunk-JRYWLOBD.js +21 -0
  100. package/dist/cli/chunks/{chunk-ETVAYGCB.js → chunk-JW5PDJ5O.js} +3 -3
  101. package/dist/cli/chunks/{chunk-OD5D4LSZ.js → chunk-K3A3NWT3.js} +2 -2
  102. package/dist/cli/chunks/{chunk-LPU6PAJE.js → chunk-KA5SHLMW.js} +2 -2
  103. package/dist/cli/chunks/{chunk-NPZOBSAN.js → chunk-KGA7VAI4.js} +2 -2
  104. package/dist/cli/chunks/{chunk-ZMHCMJ4J.js → chunk-KJDI5CHX.js} +2 -2
  105. package/dist/cli/chunks/{chunk-KSLLHFVY.js → chunk-L3PV7VXK.js} +1 -1
  106. package/dist/cli/chunks/{chunk-LD5CFK53.js → chunk-L7NGKANW.js} +2 -2
  107. package/dist/cli/chunks/{chunk-6NA3KZZT.js → chunk-LFBA735S.js} +7 -7
  108. package/dist/cli/chunks/{chunk-Z2EA7A4Z.js → chunk-MAJXZYGK.js} +1 -1
  109. package/dist/cli/chunks/{chunk-TCYSBC7Y.js → chunk-MCPEC6OO.js} +1 -1
  110. package/dist/cli/chunks/{chunk-LBX7M4LW.js → chunk-MCPXNUDK.js} +2 -2
  111. package/dist/cli/chunks/{chunk-5YLOLACR.js → chunk-MMEALJ4D.js} +2 -2
  112. package/dist/cli/chunks/{chunk-IOZRKXR5.js → chunk-MYF5CNGV.js} +2 -2
  113. package/dist/cli/chunks/{chunk-X3PZCXWG.js → chunk-MYUMJ2ZI.js} +1 -1
  114. package/dist/cli/chunks/{chunk-VYTILW4R.js → chunk-N7O3PF6Y.js} +2 -2
  115. package/dist/cli/chunks/{chunk-GVKVJJQX.js → chunk-NA3F6FEO.js} +2 -2
  116. package/dist/cli/chunks/{chunk-TL6OFMXF.js → chunk-NNBQZR73.js} +2 -2
  117. package/dist/cli/chunks/{chunk-KXS3Y2AX.js → chunk-NV74SICL.js} +2 -2
  118. package/dist/cli/chunks/chunk-NVRYELCY.js +13 -0
  119. package/dist/cli/chunks/{chunk-OH5V5EJW.js → chunk-NX4BCSOZ.js} +2 -2
  120. package/dist/cli/chunks/{chunk-XJKZ7FTR.js → chunk-O3IM4WRZ.js} +2 -2
  121. package/dist/cli/chunks/{chunk-3RHOPP7A.js → chunk-O4QJMANM.js} +1 -1
  122. package/dist/cli/chunks/{chunk-O4JAKWWM.js → chunk-OHVYINGM.js} +17 -17
  123. package/dist/cli/chunks/{chunk-APPZATXA.js → chunk-P5E26N2X.js} +2 -2
  124. package/dist/cli/chunks/{chunk-5ERFHEEE.js → chunk-P7UFJ6DO.js} +1 -1
  125. package/dist/cli/chunks/{chunk-5MNASJOH.js → chunk-PGSJBXTD.js} +2 -2
  126. package/dist/cli/chunks/{chunk-WCAVIJ64.js → chunk-PT2NXS43.js} +1 -1
  127. package/dist/cli/chunks/{chunk-EWPUQCN4.js → chunk-PTBOLBM4.js} +2 -2
  128. package/dist/cli/chunks/{chunk-EK5GMOSO.js → chunk-PX5OPXY6.js} +1 -1
  129. package/dist/cli/chunks/chunk-QCPVUNN3.js +2 -0
  130. package/dist/cli/chunks/{chunk-K2HBNYAZ.js → chunk-QSGEBCDB.js} +2 -2
  131. package/dist/cli/chunks/{chunk-G4FAPO57.js → chunk-QUJJYTJH.js} +2 -2
  132. package/dist/cli/chunks/{chunk-H7BLYMNU.js → chunk-QWG3SILX.js} +3 -3
  133. package/dist/cli/chunks/{chunk-LXQ3B4RY.js → chunk-RCOLPF3B.js} +2 -2
  134. package/dist/cli/chunks/{chunk-E44NNCEU.js → chunk-RYHG3I7J.js} +2 -2
  135. package/dist/cli/chunks/{chunk-RTFKTKSO.js → chunk-SBHM5X2S.js} +2 -2
  136. package/dist/cli/chunks/{chunk-DOBZPSKE.js → chunk-SDRJJUPO.js} +1 -1
  137. package/dist/cli/chunks/{chunk-RTY7VSZB.js → chunk-SG2TX72G.js} +2 -2
  138. package/dist/cli/chunks/{chunk-NTB342NJ.js → chunk-SITL5YZV.js} +4 -4
  139. package/dist/cli/chunks/{chunk-WM3SRRA6.js → chunk-SPC4RBLF.js} +2 -2
  140. package/dist/cli/chunks/{chunk-ITL3IN2E.js → chunk-SQVZ3TRU.js} +2 -2
  141. package/dist/cli/chunks/{chunk-CO3DX2AX.js → chunk-SUX5XB2Z.js} +2 -2
  142. package/dist/cli/chunks/{chunk-KSE5TDM5.js → chunk-T4EN5VVK.js} +2 -2
  143. package/dist/cli/chunks/{chunk-5HQP4SLM.js → chunk-TGMXUZZC.js} +2 -2
  144. package/dist/cli/chunks/{chunk-YOCULVHR.js → chunk-TLRHAMX5.js} +1 -1
  145. package/dist/cli/chunks/{chunk-GBFUANTC.js → chunk-TOWOJGEI.js} +1 -1
  146. package/dist/cli/chunks/{chunk-4UBVAJFO.js → chunk-TSOQ2QLT.js} +2 -2
  147. package/dist/cli/chunks/{chunk-SMVVAVN2.js → chunk-TVA5GRIU.js} +2 -2
  148. package/dist/cli/chunks/{chunk-K7V2WZNF.js → chunk-TXEUVUMO.js} +1 -1
  149. package/dist/cli/chunks/{chunk-LQ4NUC6Q.js → chunk-U6IXYQO4.js} +2 -2
  150. package/dist/cli/chunks/{chunk-HDJUYAZG.js → chunk-U7ZHDGXG.js} +1 -1
  151. package/dist/cli/chunks/{chunk-2VLYUF7U.js → chunk-UCSK2RMI.js} +2 -2
  152. package/dist/cli/chunks/{chunk-4UX35V7P.js → chunk-UIKQPO4Y.js} +2 -2
  153. package/dist/cli/chunks/chunk-UJNGGFGX.js +2 -0
  154. package/dist/cli/chunks/{chunk-AFFN6E6Q.js → chunk-ULCW6IVQ.js} +2 -2
  155. package/dist/cli/chunks/{chunk-WCVCOT4E.js → chunk-UREDS662.js} +2 -2
  156. package/dist/cli/chunks/{chunk-E6PF35JZ.js → chunk-URSTP3WI.js} +2 -2
  157. package/dist/cli/chunks/{chunk-I36CRDHF.js → chunk-UUZZXHUF.js} +2 -2
  158. package/dist/cli/chunks/{chunk-MIK4RBEH.js → chunk-UZED4YZ5.js} +1 -1
  159. package/dist/cli/chunks/{chunk-ZQHDA4O7.js → chunk-VF7FTD64.js} +1 -1
  160. package/dist/cli/chunks/{chunk-AMZKAJLJ.js → chunk-VUR5THML.js} +2 -2
  161. package/dist/cli/chunks/{chunk-H43AFUKL.js → chunk-VXVTFKRA.js} +2 -2
  162. package/dist/cli/chunks/chunk-VZBC6DP7.js +2 -0
  163. package/dist/cli/chunks/{chunk-DDEOZPWJ.js → chunk-W4II6SIH.js} +2 -2
  164. package/dist/cli/chunks/{chunk-55CH76ZO.js → chunk-W5HQIYQU.js} +3 -3
  165. package/dist/cli/chunks/{chunk-YPX2TV3M.js → chunk-W7H55PY4.js} +1 -1
  166. package/dist/cli/chunks/{chunk-CFWGGRE7.js → chunk-WDEXOLK2.js} +1 -1
  167. package/dist/cli/chunks/{chunk-XGBU3KEM.js → chunk-WGTEZT7G.js} +2 -2
  168. package/dist/cli/chunks/{chunk-NC6K7SCQ.js → chunk-WLRU6ESI.js} +2 -2
  169. package/dist/cli/chunks/{chunk-JFLU7L3W.js → chunk-WTAUF6O4.js} +2 -2
  170. package/dist/cli/chunks/chunk-XCNSGSKV.js +3 -0
  171. package/dist/cli/chunks/{chunk-57LNKSW7.js → chunk-XZOYKB22.js} +2 -2
  172. package/dist/cli/chunks/chunk-YIDAXOUX.js +8 -0
  173. package/dist/cli/chunks/{chunk-25P77WA5.js → chunk-YLKIXEPP.js} +1 -1
  174. package/dist/cli/chunks/{chunk-R5GRABPQ.js → chunk-YNVEDFPQ.js} +1 -1
  175. package/dist/cli/chunks/{chunk-NQZNMCZU.js → chunk-YUA6ZKKY.js} +2 -2
  176. package/dist/cli/chunks/{chunk-OYJC3YON.js → chunk-YVJEUX3I.js} +2 -2
  177. package/dist/cli/chunks/{chunk-QDESWOZP.js → chunk-YWWMNTBF.js} +2 -2
  178. package/dist/cli/chunks/{chunk-7HEMJHPP.js → chunk-ZGROHCOW.js} +1 -1
  179. package/dist/cli/chunks/{chunk-AP3ADWDK.js → chunk-ZPVGX4DI.js} +2 -2
  180. package/dist/cli/chunks/{chunk-M5XYIQYZ.js → chunk-ZROAMFX2.js} +2 -2
  181. package/dist/cli/chunks/{chunk-I4K2HTQU.js → chunk-ZYOYR3UR.js} +1 -1
  182. package/dist/cli/chunks/ci-BZNWW3I3.js +81 -0
  183. package/dist/cli/chunks/{ci-config-J665XNOX.js → ci-config-LOHNXOKV.js} +2 -2
  184. package/dist/cli/chunks/{ci-output-PEQQQWVD.js → ci-output-LCOQBSJL.js} +2 -2
  185. package/dist/cli/chunks/{circuit-breaker-HHB2JSKH.js → circuit-breaker-7LRXTLFE.js} +2 -2
  186. package/dist/cli/chunks/{claude-flow-setup-JKUJRWPN.js → claude-flow-setup-HBU4VWC3.js} +2 -2
  187. package/dist/cli/chunks/client-4PNYDFYS.js +2 -0
  188. package/dist/cli/chunks/{cline-installer-Y77BWTAN.js → cline-installer-CO6MLH6X.js} +2 -2
  189. package/dist/cli/chunks/{code-LV2HAGJY.js → code-SIXBS6JM.js} +3 -3
  190. package/dist/cli/chunks/{code-index-extractor-4GKKSETB.js → code-index-extractor-GWJKZ2IQ.js} +2 -2
  191. package/dist/cli/chunks/{codex-installer-WMKBYE5Y.js → codex-installer-6NINVWXJ.js} +2 -2
  192. package/dist/cli/chunks/{completions-SBGFAOIJ.js → completions-7VIX3GML.js} +2 -2
  193. package/dist/cli/chunks/{complexity-analyzer-AQHFIJXC.js → complexity-analyzer-FBQR6ZP2.js} +2 -2
  194. package/dist/cli/chunks/{continuedev-installer-26AYFS2E.js → continuedev-installer-VA7RIXW5.js} +2 -2
  195. package/dist/cli/chunks/{copilot-installer-4UD3DK55.js → copilot-installer-4QEBC4MU.js} +2 -2
  196. package/dist/cli/chunks/core-handlers-ODO6LUWQ.js +2 -0
  197. package/dist/cli/chunks/{cost-tracker-TP4NZCG4.js → cost-tracker-GRYKHPWL.js} +2 -2
  198. package/dist/cli/chunks/{coverage-B2KIXHAI.js → coverage-USPMNKOU.js} +11 -10
  199. package/dist/cli/chunks/cross-domain-router-DT4MHJKK.js +2 -0
  200. package/dist/cli/chunks/{cursor-installer-AVZEQZ4W.js → cursor-installer-ZXIPSZVH.js} +2 -2
  201. package/dist/cli/chunks/{daemon-XM2A7LQU.js → daemon-D7F3RGI5.js} +3 -3
  202. package/dist/cli/chunks/{daemon-P574WWBW.js → daemon-N2VRHPSJ.js} +4 -4
  203. package/dist/cli/chunks/{dag-attention-scheduler-MIWOZ6ET.js → dag-attention-scheduler-NL6BA7BY.js} +2 -2
  204. package/dist/cli/chunks/{detect-TYR7HT23.js → detect-XC2HCIIT.js} +2 -2
  205. package/dist/cli/chunks/{dist-node-2DGVQGLS.js → dist-node-A3Y26MEI.js} +2 -2
  206. package/dist/cli/chunks/{domain-handler-RRA4ZOMF.js → domain-handler-WV6SFXRB.js} +2 -2
  207. package/dist/cli/chunks/{domain-plugins-IVZEZ5RB.js → domain-plugins-KJIF6Z2B.js} +2 -2
  208. package/dist/cli/chunks/{domain-transfer-DOBI67K6.js → domain-transfer-L3F6AES2.js} +2 -2
  209. package/dist/cli/chunks/dream-QOB3JCOM.js +2 -0
  210. package/dist/cli/chunks/{embed-and-insert-pattern-VNIEOVPO.js → embed-and-insert-pattern-PA3Y4KGO.js} +2 -2
  211. package/dist/cli/chunks/{eval-QV4LVPUF.js → eval-YGEZNUVE.js} +2 -2
  212. package/dist/cli/chunks/{experience-capture-middleware-DAPKT763.js → experience-capture-middleware-D4T7NW6B.js} +3 -3
  213. package/dist/cli/chunks/{fast-paths-WVRFPHX7.js → fast-paths-6JYK7RYQ.js} +2 -2
  214. package/dist/cli/chunks/{feature-flags-O7ZXDDCD.js → feature-flags-DKXMDVPE.js} +2 -2
  215. package/dist/cli/chunks/{feature-flags-DEFTUIYT.js → feature-flags-RBH2GDSR.js} +2 -2
  216. package/dist/cli/chunks/file-discovery-BN76S2PR.js +2 -0
  217. package/dist/cli/chunks/fleet-43YMXACN.js +46 -0
  218. package/dist/cli/chunks/{gnn-wrapper-LS4LZJDR.js → gnn-wrapper-MV54UC4C.js} +2 -2
  219. package/dist/cli/chunks/{heartbeat-handler-RFTERD4K.js → heartbeat-handler-7DKMVQQH.js} +4 -4
  220. package/dist/cli/chunks/heartbeat-scheduler-3NNP4WCP.js +2 -0
  221. package/dist/cli/chunks/hnsw-adapter-MZR7Y4WF.js +2 -0
  222. package/dist/cli/chunks/hnsw-index-HE4AX22U.js +2 -0
  223. package/dist/cli/chunks/{hnsw-legacy-bridge-GPKGFFHY.js → hnsw-legacy-bridge-6IWREDQC.js} +2 -2
  224. package/dist/cli/chunks/{hnswlib-node-PHL3F2PR.js → hnswlib-node-5BIESSCK.js} +2 -2
  225. package/dist/cli/chunks/{hooks-GYJ6D4QM.js → hooks-3EETRM62.js} +28 -28
  226. package/dist/cli/chunks/hybrid-backend-IHUHB3Y2.js +2 -0
  227. package/dist/cli/chunks/{hypergraph-engine-YGEQPCKJ.js → hypergraph-engine-RSWCB2D3.js} +2 -2
  228. package/dist/cli/chunks/{hypergraph-handler-ZIMM647V.js → hypergraph-handler-552LXKL3.js} +3 -3
  229. package/dist/cli/chunks/impact-analyzer-FI6GI6PD.js +2 -0
  230. package/dist/cli/chunks/{init-guard-VOMBXJXG.js → init-guard-OTDBJ5HD.js} +2 -2
  231. package/dist/cli/chunks/{init-handler-PSMUBWK5.js → init-handler-3FK3TKEA.js} +6 -6
  232. package/dist/cli/chunks/init-wizard-WLQKH5Y5.js +2 -0
  233. package/dist/cli/chunks/kernel-2WZOQEZS.js +2 -0
  234. package/dist/cli/chunks/{kilocode-installer-2YNTFBWJ.js → kilocode-installer-KZ2O4LF3.js} +2 -2
  235. package/dist/cli/chunks/{kiro-installer-XHJDPVAZ.js → kiro-installer-MLCCXRF7.js} +2 -2
  236. package/dist/cli/chunks/knowledge-graph-G3LVKK6P.js +2 -0
  237. package/dist/cli/chunks/{learning-GNSIDRNG.js → learning-QUCMBD77.js} +3 -3
  238. package/dist/cli/chunks/{llm-router-LQDM7IU2.js → llm-router-PDEV3UP2.js} +4 -4
  239. package/dist/cli/chunks/llm-router-service-MM75HKWJ.js +2 -0
  240. package/dist/cli/chunks/{load-YATHI72E.js → load-XFVVLO7E.js} +2 -2
  241. package/dist/cli/chunks/load-test-BEWEE44J.js +2 -0
  242. package/dist/cli/chunks/{mcp-4Y6GDLYK.js → mcp-74G3CL2S.js} +2 -2
  243. package/dist/cli/chunks/{memory-OUW3L7H2.js → memory-XIFM6JNX.js} +5 -5
  244. package/dist/cli/chunks/memory-backend-NYKBBKZR.js +2 -0
  245. package/dist/cli/chunks/{memory-handlers-G3LFF53U.js → memory-handlers-ZCKURV6S.js} +2 -2
  246. package/dist/cli/chunks/{multi-model-executor-UBZJXAD2.js → multi-model-executor-7L4W3O2Q.js} +2 -2
  247. package/dist/cli/chunks/{opencode-installer-AMMNWVH5.js → opencode-installer-BPG422LF.js} +2 -2
  248. package/dist/cli/chunks/{orchestrator-Y44WDOER.js → orchestrator-OEAFLAEV.js} +58 -20
  249. package/dist/cli/chunks/pattern-null-store-QGPUIV6M.js +2 -0
  250. package/dist/cli/chunks/{pattern-usage-recorder-ESR42RME.js → pattern-usage-recorder-LOPNCULT.js} +2 -2
  251. package/dist/cli/chunks/{pipeline-EDTS6OSC.js → pipeline-VWTYUZB7.js} +2 -2
  252. package/dist/cli/chunks/{platform-5WONJSUX.js → platform-WFJJ3X2E.js} +2 -2
  253. package/dist/cli/chunks/{plugin-IJXPCLD4.js → plugin-744TPUSG.js} +2 -2
  254. package/dist/cli/chunks/{prime-radiant-advanced-wasm-5ECKGZK6.js → prime-radiant-advanced-wasm-BD5BLNDR.js} +2 -2
  255. package/dist/cli/chunks/project-root-C7ELXZRK.js +2 -0
  256. package/dist/cli/chunks/protocol-executor-SUVE33BM.js +2 -0
  257. package/dist/cli/chunks/{protocol-handler-DRD3GVNW.js → protocol-handler-JIBILI74.js} +2 -2
  258. package/dist/cli/chunks/{prove-KTGW2HMJ.js → prove-MNOL5FYW.js} +2 -2
  259. package/dist/cli/chunks/qe-reasoning-bank-YWZMMGJB.js +2 -0
  260. package/dist/cli/chunks/{quality-DV2WPRRS.js → quality-JEGBDGGX.js} +2 -2
  261. package/dist/cli/chunks/{quality-gate-HFUAFVZC.js → quality-gate-SYJ6ROMI.js} +3 -3
  262. package/dist/cli/chunks/queen-coordinator-ZFAKXRN7.js +2 -0
  263. package/dist/cli/chunks/real-embeddings-ZWXS5ZFV.js +2 -0
  264. package/dist/cli/chunks/{ref-validation-QWSKS5OY.js → ref-validation-RRHUFW2N.js} +2 -2
  265. package/dist/cli/chunks/{roocode-installer-RBAYRCHX.js → roocode-installer-XFO6JSVN.js} +2 -2
  266. package/dist/cli/chunks/router-4FTAVYLJ.js +2 -0
  267. package/dist/cli/chunks/routing-feedback-IO2KOWMJ.js +2 -0
  268. package/dist/cli/chunks/{routing-handler-FMPP3XKO.js → routing-handler-L2K3JASE.js} +2 -2
  269. package/dist/cli/chunks/{ruvector-commands-KZZT4HWF.js → ruvector-commands-A6CINHGM.js} +2 -2
  270. package/dist/cli/chunks/rvf-dual-writer-KCIRNE7C.js +2 -0
  271. package/dist/cli/chunks/rvf-migration-adapter-MFC5WTJU.js +2 -0
  272. package/dist/cli/chunks/{rvf-migration-coordinator-7CHEV35N.js → rvf-migration-coordinator-T4RY7L53.js} +2 -2
  273. package/dist/cli/chunks/rvf-native-adapter-I3KWHE7X.js +2 -0
  274. package/dist/cli/chunks/{rvf-store-integrity-Q2TH52SN.js → rvf-store-integrity-IR33TGQS.js} +2 -2
  275. package/dist/cli/chunks/safe-db-QXDZ6QY3.js +2 -0
  276. package/dist/cli/chunks/schedule-CZKD6RIY.js +2 -0
  277. package/dist/cli/chunks/scheduler-BLA3Q4CH.js +2 -0
  278. package/dist/cli/chunks/{security-CUEA3UIM.js → security-Z5GDE2IH.js} +3 -3
  279. package/dist/cli/chunks/{shared-rvf-adapter-DROMBRV2.js → shared-rvf-adapter-SIZMEHPM.js} +2 -2
  280. package/dist/cli/chunks/{shared-rvf-dual-writer-DBNABOP7.js → shared-rvf-dual-writer-HLM65RDS.js} +2 -2
  281. package/dist/cli/chunks/sqlite-persistence-XIUYDJC4.js +2 -0
  282. package/dist/cli/chunks/{standalone-memory-IAHA3M6B.js → standalone-memory-SKSZG7P5.js} +2 -2
  283. package/dist/cli/chunks/{status-handler-AFUCASTX.js → status-handler-766YOOMJ.js} +2 -2
  284. package/dist/cli/chunks/{structural-health-AQRV6JJ6.js → structural-health-M45FNOLT.js} +2 -2
  285. package/dist/cli/chunks/{sync-GX7FMJHL.js → sync-6CJ24B5T.js} +2 -2
  286. package/dist/cli/chunks/{sync-XW5TLZ7M.js → sync-B2U366I3.js} +2 -2
  287. package/dist/cli/chunks/{task-handler-TFKVUTNF.js → task-handler-P6IFLCKP.js} +17 -15
  288. package/dist/cli/chunks/task-handlers-DPWMUKFC.js +9 -0
  289. package/dist/cli/chunks/{test-D2XDJNDX.js → test-TODH7KRF.js} +4 -4
  290. package/dist/cli/chunks/test-runner-process-46IPK3GH.js +2 -0
  291. package/dist/cli/chunks/{test-scheduling-TS6I2PR7.js → test-scheduling-VMVMVRHT.js} +3 -3
  292. package/dist/cli/chunks/{token-bootstrap-HBBLPCZ3.js → token-bootstrap-XQW7BMCK.js} +2 -2
  293. package/dist/cli/chunks/{token-usage-3MBUX4PR.js → token-usage-JCZEIRKO.js} +2 -2
  294. package/dist/cli/chunks/{transformers-ZWMQO3L2.js → transformers-U2ML3OHE.js} +2 -2
  295. package/dist/cli/chunks/tree-sitter-wasm-parser-MOI2WWNJ.js +2 -0
  296. package/dist/cli/chunks/{types-5YEMGPSQ.js → types-GGEPCHP6.js} +2 -2
  297. package/dist/cli/chunks/unified-memory-FL26RTV3.js +2 -0
  298. package/dist/cli/chunks/unified-memory-hnsw-E2BPTH3U.js +2 -0
  299. package/dist/cli/chunks/unified-persistence-5ZOUPKHF.js +2 -0
  300. package/dist/cli/chunks/{upgrade-2TPBKIHI.js → upgrade-T5GRM7HS.js} +2 -2
  301. package/dist/cli/chunks/{validate-XRAXXFW6.js → validate-XMUJPLP3.js} +2 -2
  302. package/dist/cli/chunks/{validate-swarm-IYSCS3BZ.js → validate-swarm-KJLF7JEH.js} +2 -2
  303. package/dist/cli/chunks/visual-security-IJVPO5FA.js +2 -0
  304. package/dist/cli/chunks/{web-tree-sitter-PZQ3ZG2P.js → web-tree-sitter-LOHVZ7G5.js} +2 -2
  305. package/dist/cli/chunks/{windsurf-installer-U6XWFRVT.js → windsurf-installer-33FBTXJU.js} +2 -2
  306. package/dist/cli/chunks/witness-chain-5FAFCQKP.js +2 -0
  307. package/dist/cli/chunks/witness-chain-V2M32W5D.js +2 -0
  308. package/dist/cli/chunks/{witness-chain-repair-K7YX2AO6.js → witness-chain-repair-VWBO4NXE.js} +2 -2
  309. package/dist/cli/chunks/{witness-chain-verifier-GUTC3W7N.js → witness-chain-verifier-BHJ3ZAEK.js} +2 -2
  310. package/dist/cli/chunks/{witness-key-manager-YBNKMOP6.js → witness-key-manager-WNVPH2Z3.js} +2 -2
  311. package/dist/cli/chunks/{workflow-UAJUILFQ.js → workflow-6QR5MQTO.js} +4 -4
  312. package/dist/cli/chunks/workflow-orchestrator-3JLF3IX7.js +2 -0
  313. package/dist/cli/chunks/{wrappers-AVZ3GPAL.js → wrappers-EHOL62TS.js} +2 -2
  314. package/dist/cli/commands/ci.js +7 -0
  315. package/dist/cli/commands/coverage.js +7 -1
  316. package/dist/cli/commands/fleet.js +2 -2
  317. package/dist/cli/commands/hooks-handlers/stats-hooks.d.ts +4 -3
  318. package/dist/cli/commands/hooks-handlers/stats-hooks.js +22 -4
  319. package/dist/cli/handlers/task-handler.js +6 -0
  320. package/dist/cli/utils/coverage-verdict.d.ts +11 -2
  321. package/dist/cli/utils/coverage-verdict.js +26 -6
  322. package/dist/cli/utils/fleet-operation.d.ts +5 -0
  323. package/dist/cli/utils/fleet-operation.js +7 -1
  324. package/dist/cli/utils/fleet-result.d.ts +5 -3
  325. package/dist/cli/utils/fleet-result.js +9 -3
  326. package/dist/coordination/handlers/coverage-collection.d.ts +2 -0
  327. package/dist/coordination/handlers/coverage-collection.js +2 -1
  328. package/dist/coordination/handlers/coverage-evidence.d.ts +75 -0
  329. package/dist/coordination/handlers/coverage-evidence.js +159 -0
  330. package/dist/coordination/handlers/coverage-handlers.js +16 -3
  331. package/dist/coordination/handlers/coverage-scope.d.ts +40 -0
  332. package/dist/coordination/handlers/coverage-scope.js +321 -0
  333. package/dist/coordination/handlers/coverage-target.d.ts +9 -0
  334. package/dist/coordination/handlers/coverage-target.js +15 -5
  335. package/dist/coordination/handlers/handler-utils.d.ts +5 -0
  336. package/dist/coordination/handlers/handler-utils.js +8 -4
  337. package/dist/domains/code-intelligence/services/metric-collector/listing-process-owner.js +4 -1
  338. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +8 -0
  339. package/dist/domains/code-intelligence/services/semantic-analyzer.js +10 -7
  340. package/dist/init/phases/10-workers.js +42 -4
  341. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +23 -1
  342. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +50 -15
  343. package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +7 -2
  344. package/dist/integrations/agentic-flow/reasoning-bank/index.js +8 -0
  345. package/dist/learning/embedder-endpoint-client.d.ts +8 -0
  346. package/dist/learning/embedder-endpoint-client.js +20 -0
  347. package/dist/learning/embedder-recovery.d.ts +63 -0
  348. package/dist/learning/embedder-recovery.js +94 -0
  349. package/dist/learning/qe-reasoning-bank-types.d.ts +5 -0
  350. package/dist/learning/qe-reasoning-bank.d.ts +21 -0
  351. package/dist/learning/qe-reasoning-bank.js +54 -8
  352. package/dist/learning/real-embeddings.d.ts +23 -0
  353. package/dist/learning/real-embeddings.js +69 -2
  354. package/dist/learning/real-qe-reasoning-bank.d.ts +24 -4
  355. package/dist/learning/real-qe-reasoning-bank.js +58 -20
  356. package/dist/logging/redaction.js +142 -12
  357. package/dist/mcp/bundle.js +504 -492
  358. package/dist/mcp/daemon-mode.d.ts +126 -0
  359. package/dist/mcp/daemon-mode.js +257 -0
  360. package/dist/mcp/entry.d.ts +4 -0
  361. package/dist/mcp/entry.js +50 -2
  362. package/dist/mcp/handlers/domain-handler-configs.js +5 -0
  363. package/dist/mcp/handlers/orchestrate-routes.d.ts +6 -1
  364. package/dist/mcp/handlers/orchestrate-routes.js +53 -0
  365. package/dist/mcp/handlers/task-handlers.d.ts +11 -2
  366. package/dist/mcp/handlers/task-handlers.js +50 -5
  367. package/dist/mcp/protocol-server.js +3 -0
  368. package/dist/mcp/services/reasoning-bank-service.d.ts +6 -1
  369. package/dist/mcp/services/reasoning-bank-service.js +9 -0
  370. package/dist/mcp/types.d.ts +14 -0
  371. package/dist/routing/advisor/redaction.js +22 -2
  372. package/dist/shared/llm/providers/response-deadline.js +16 -2
  373. package/dist/shared/types/index.js +3 -1
  374. package/dist/strange-loop/infra-healing/infra-aware-agent-provider.js +8 -1
  375. package/package.json +3 -3
  376. package/dist/cli/chunks/adapter-V4GSGOOK.js +0 -2
  377. package/dist/cli/chunks/aqe-learning-engine-6WQTM5YR.js +0 -2
  378. package/dist/cli/chunks/base-AK7BXBX2.js +0 -2
  379. package/dist/cli/chunks/browser-workflow-VTDFBW7T.js +0 -2
  380. package/dist/cli/chunks/chunk-2DTX7YAZ.js +0 -6
  381. package/dist/cli/chunks/chunk-72ZBJD2E.js +0 -3
  382. package/dist/cli/chunks/chunk-EBPJY4DI.js +0 -3
  383. package/dist/cli/chunks/chunk-HJ3XNTTJ.js +0 -2
  384. package/dist/cli/chunks/chunk-IO5537OM.js +0 -2
  385. package/dist/cli/chunks/chunk-IW6WDGHM.js +0 -2
  386. package/dist/cli/chunks/chunk-LRL56ZYL.js +0 -21
  387. package/dist/cli/chunks/chunk-VLD7Z2ED.js +0 -13
  388. package/dist/cli/chunks/chunk-VO3DRK4P.js +0 -3
  389. package/dist/cli/chunks/ci-6GUFAZMJ.js +0 -81
  390. package/dist/cli/chunks/client-HL2COSFM.js +0 -2
  391. package/dist/cli/chunks/core-handlers-IX7ATLM6.js +0 -2
  392. package/dist/cli/chunks/cross-domain-router-YYKLAPJO.js +0 -2
  393. package/dist/cli/chunks/dream-T6EP7B3F.js +0 -2
  394. package/dist/cli/chunks/file-discovery-JYMVTDMU.js +0 -2
  395. package/dist/cli/chunks/fleet-FVAUMKUT.js +0 -46
  396. package/dist/cli/chunks/heartbeat-scheduler-4N5MUJ7S.js +0 -2
  397. package/dist/cli/chunks/hnsw-adapter-ZPAJDSLR.js +0 -2
  398. package/dist/cli/chunks/hnsw-index-4CTH6RHB.js +0 -2
  399. package/dist/cli/chunks/hybrid-backend-AW6UTXQS.js +0 -2
  400. package/dist/cli/chunks/impact-analyzer-MZK3JMSV.js +0 -2
  401. package/dist/cli/chunks/init-wizard-FUC7KDVX.js +0 -2
  402. package/dist/cli/chunks/kernel-ZCPMCVMW.js +0 -2
  403. package/dist/cli/chunks/knowledge-graph-NUJKEDNF.js +0 -2
  404. package/dist/cli/chunks/llm-router-service-B2BFBQ76.js +0 -2
  405. package/dist/cli/chunks/load-test-ZHQ2MUGO.js +0 -2
  406. package/dist/cli/chunks/memory-backend-AAMQG6WH.js +0 -2
  407. package/dist/cli/chunks/pattern-null-store-RFNVA46O.js +0 -2
  408. package/dist/cli/chunks/project-root-7QL4KP5C.js +0 -2
  409. package/dist/cli/chunks/protocol-executor-2NW5BD4R.js +0 -2
  410. package/dist/cli/chunks/qe-reasoning-bank-G2JZOGKD.js +0 -2
  411. package/dist/cli/chunks/queen-coordinator-GRG5FT2A.js +0 -2
  412. package/dist/cli/chunks/real-embeddings-RQRVOKVM.js +0 -2
  413. package/dist/cli/chunks/router-LQB5SWAF.js +0 -2
  414. package/dist/cli/chunks/routing-feedback-OEEXA55N.js +0 -2
  415. package/dist/cli/chunks/rvf-dual-writer-BZK4M7BO.js +0 -2
  416. package/dist/cli/chunks/rvf-migration-adapter-EZZUJL2E.js +0 -2
  417. package/dist/cli/chunks/rvf-native-adapter-6COXTQZ3.js +0 -2
  418. package/dist/cli/chunks/safe-db-PE6G3L55.js +0 -2
  419. package/dist/cli/chunks/schedule-OLKQ6QYW.js +0 -2
  420. package/dist/cli/chunks/scheduler-LSGBDFAT.js +0 -2
  421. package/dist/cli/chunks/sqlite-persistence-HH4DNTYH.js +0 -2
  422. package/dist/cli/chunks/task-handlers-SS4ZDXNF.js +0 -9
  423. package/dist/cli/chunks/test-runner-process-PSSBNNGR.js +0 -2
  424. package/dist/cli/chunks/tree-sitter-wasm-parser-TYRQRJ2W.js +0 -2
  425. package/dist/cli/chunks/unified-memory-AGDZQ5XD.js +0 -2
  426. package/dist/cli/chunks/unified-memory-hnsw-X5TJ3JDE.js +0 -2
  427. package/dist/cli/chunks/unified-persistence-UCV7YETW.js +0 -2
  428. package/dist/cli/chunks/visual-security-ZLXRIQZV.js +0 -2
  429. package/dist/cli/chunks/witness-chain-CVIWYTD2.js +0 -2
  430. package/dist/cli/chunks/witness-chain-VBKORKOX.js +0 -2
  431. package/dist/cli/chunks/workflow-orchestrator-3ZN7MVCE.js +0 -2
@@ -0,0 +1,2 @@
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.12");process.exit(0)}
2
+ import{a as h,b as i,c as j,d as k}from"./chunk-SUX5XB2Z.js";import"./chunk-IETBWYHW.js";import{a,b,c,d,e,f,g}from"./chunk-2IVE5AR3.js";import"./chunk-L7NGKANW.js";import"./chunk-66PXR3NI.js";import"./chunk-WTAUF6O4.js";import"./chunk-SPC4RBLF.js";import"./chunk-WGTEZT7G.js";import"./chunk-IPA7K556.js";import"./chunk-ZROAMFX2.js";import"./chunk-YUA6ZKKY.js";import"./chunk-3IU4LDZR.js";import"./chunk-YVJEUX3I.js";import"./chunk-6QRI3JVE.js";import"./chunk-YWWMNTBF.js";import"./chunk-UJNGGFGX.js";import"./chunk-ADUAJIAU.js";import"./chunk-7OEFBWAG.js";import"./chunk-QCPVUNN3.js";import"./chunk-35MIUSXQ.js";import"./chunk-DZGPUGUG.js";import"./chunk-4LWMAAWK.js";import"./chunk-IA55PFLG.js";import"./chunk-W4II6SIH.js";import"./chunk-O3IM4WRZ.js";import"./chunk-WDEXOLK2.js";export{g as CHAIN_REANCHOR_ACTION,a as GENESIS_PREV_HASH,h as WitnessChain,k as _resetWitnessChainForTests,j as createWitnessChain,i as getWitnessChain,d as hashWith,e as serializeEntry,b as sha256,c as shake256,f as signaturePayload};
@@ -0,0 +1,2 @@
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.12");process.exit(0)}
2
+ import{a,b,c,d,e,f,g}from"./chunk-VUR5THML.js";import"./chunk-UJNGGFGX.js";import"./chunk-ADUAJIAU.js";import"./chunk-7OEFBWAG.js";import"./chunk-QCPVUNN3.js";import"./chunk-35MIUSXQ.js";import"./chunk-WDEXOLK2.js";export{c as PersistentWitnessChain,a as SPRTAccumulator,b as WitnessChain,f as createPersistentWitnessChain,e as createWitnessChain,d as createWitnessChainSQLitePersistence,g as isWitnessChainFeatureEnabled};
@@ -1,2 +1,2 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.11");process.exit(0)}
2
- import{a as E}from"./chunk-CO3DX2AX.js";import"./chunk-KDI5JOYZ.js";import{b as R,c as b,e as A,h as y,k as C}from"./chunk-NT7JRHMH.js";import"./chunk-LD5CFK53.js";import"./chunk-XGPTZUKQ.js";import"./chunk-JFLU7L3W.js";import"./chunk-WM3SRRA6.js";import"./chunk-XGBU3KEM.js";import"./chunk-G2IJFNZS.js";import"./chunk-M5XYIQYZ.js";import"./chunk-NQZNMCZU.js";import"./chunk-5N25I53C.js";import"./chunk-OYJC3YON.js";import"./chunk-EJPK7OTR.js";import"./chunk-QDESWOZP.js";import"./chunk-IO5537OM.js";import"./chunk-FZHSG75I.js";import"./chunk-VO3DRK4P.js";import"./chunk-HJ3XNTTJ.js";import"./chunk-76SNL7GU.js";import"./chunk-EH2S6AOR.js";import"./chunk-XNLIWQYE.js";import{d as g,e as _}from"./chunk-4MUBW4RT.js";import"./chunk-DDEOZPWJ.js";import"./chunk-XJKZ7FTR.js";import"./chunk-CFWGGRE7.js";_();import{existsSync as v}from"node:fs";import{basename as I}from"node:path";var w={includeArchive:!0};function l(e){let r=n=>C(e,n)?e.prepare(`SELECT COUNT(*) AS n FROM ${n}`).get().n:0;return{live:r("witness_chain"),archive:r("witness_chain_archive")}}function O(e){return{status:e.status,entriesChecked:e.entriesChecked,forks:e.forks.length,unacknowledgedForks:e.forks.length-e.acknowledgedForks.length,...e.tamperedAt!==void 0?{tamperedAt:e.tamperedAt}:{},...e.tamperReason?{tamperReason:e.tamperReason}:{}}}function $(e){return e.forkDetails.filter(r=>!r.acknowledged).map(({id:r,parentId:n,prevHash:s,actionHash:c})=>({id:r,parentId:n,prevHash:s,actionHash:c}))}function x(e,r){let n=new Set,s=e.prepare("SELECT prev_hash FROM witness_chain UNION ALL SELECT prev_hash FROM witness_chain_archive").pluck().iterate();for(let t of s)n.add(t);let c=[],a=new Set;for(let t of["witness_chain","witness_chain_archive"]){let f=e.prepare(`SELECT * FROM ${t} ORDER BY id ASC`).iterate();for(let o of f){if(o.id===r||a.has(o.id))continue;a.add(o.id);let i=A(o);!n.has(b(i))&&!n.has(R(i))&&c.push({id:o.id,hash:y(o)})}}return c.sort((t,f)=>t.id-f.id)}function S(e){return`Refusing to repair: tampering detected at id=${e.tamperedAt} (${e.tamperReason}). Only accidental forks can be re-anchored; restore from a backup and investigate.`}function M(e){let r=`${e}.bak-${Math.floor(Date.now()/1e3)}`;if(!v(r))return r;let n=1;for(;v(`${r}-${n}`);)n++;return`${r}-${n}`}function W(e,r){let n=M(e),s=g(e,{readonly:!0,fileMustExist:!0});try{s.prepare("VACUUM INTO ?").run(n)}finally{s.close()}let c=g(n,{readonly:!0,fileMustExist:!0});try{let a=c.pragma("integrity_check",{simple:!0});if(a!=="ok")throw new Error(`backup integrity_check failed: ${String(a)}`);let t=l(c);if(t.live!==r.live||t.archive!==r.archive)throw new Error(`backup holds ${JSON.stringify(t)} witness rows, expected ${JSON.stringify(r)}`)}finally{c.close()}return n}async function L(e,r){let n=r.dryRun===!0,s=new E(e,r.keyManager??void 0);await s.initialize();let c=l(e),a=s.verify(w),t={dryRun:n,before:O(a),rowsBefore:c,rowsAfter:c};if(a.tampered)return{...t,action:"refused",message:S(a),forksAcknowledged:[]};let f=$(a);if(f.length===0){let d=a.forks.length>0?`Nothing to repair: all ${a.forks.length} fork(s) are already re-anchored.`:"Nothing to repair: the audit chain has no forks.";return{...t,action:"none",message:d,forksAcknowledged:[]}}if(n)return{...t,action:"would-reanchor",forksAcknowledged:f.map(d=>d.id),message:`Dry run: would back up the database and append a CHAIN_REANCHOR entry acknowledging ${f.length} fork(s). Nothing was written.`};let o,i=e.transaction(()=>{let d=l(e),p=s.verify(w);if(p.tampered)return{kind:"refused",check:p};let h=$(p);if(h.length===0)return{kind:"noop"};o=W(r.dbPath,d);let m=e.prepare("SELECT * FROM witness_chain ORDER BY id DESC LIMIT 1").get(),T=s.append("CHAIN_REANCHOR",{reason:"fork-repair",issue:"https://github.com/proffesor-for-testing/agentic-qe/issues/753",note:"Acknowledges accidental forks from pre-3.14.5 concurrent appends; no rows were changed.",forkCount:h.length,forks:h,pins:x(e,m.id),verifiedTipId:m.id,verifiedTipHash:y(m),entriesChecked:p.entriesChecked,rows:d,backup:I(o)},r.actor??"aqe-audit-repair"),k=l(e);if(k.live!==d.live+1||k.archive!==d.archive)throw new Error(`row-count check failed: before ${JSON.stringify(d)}, after ${JSON.stringify(k)}`);return{kind:"reanchored",entry:T,forks:h,txAfter:k}}).immediate();if(i.kind==="refused")return{...t,action:"refused",message:S(i.check),forksAcknowledged:[]};if(i.kind==="noop")return{...t,action:"none",message:"Nothing to repair (another process re-anchored first).",forksAcknowledged:[]};let u=s.verify(w),N=u.valid&&!u.tampered;return{...t,action:"reanchored",after:O(u),rowsAfter:i.txAfter,forksAcknowledged:i.forks.map(d=>d.id),reanchorId:i.entry.id,backupPath:o,message:N?`Re-anchored ${i.forks.length} fork(s) with CHAIN_REANCHOR id=${i.entry.id}; chain now ${u.status}. Backup: ${o}`:`Appended CHAIN_REANCHOR id=${i.entry.id}, but the chain still verifies as ${u.status}. Backup: ${o}`}}export{L as repairWitnessChainForks};
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.12");process.exit(0)}
2
+ import{a as E}from"./chunk-SUX5XB2Z.js";import"./chunk-IETBWYHW.js";import{b as R,c as b,e as A,h as y,k as C}from"./chunk-2IVE5AR3.js";import"./chunk-L7NGKANW.js";import"./chunk-66PXR3NI.js";import"./chunk-WTAUF6O4.js";import"./chunk-SPC4RBLF.js";import"./chunk-WGTEZT7G.js";import"./chunk-IPA7K556.js";import"./chunk-ZROAMFX2.js";import"./chunk-YUA6ZKKY.js";import"./chunk-3IU4LDZR.js";import"./chunk-YVJEUX3I.js";import"./chunk-6QRI3JVE.js";import"./chunk-YWWMNTBF.js";import"./chunk-UJNGGFGX.js";import"./chunk-ADUAJIAU.js";import"./chunk-7OEFBWAG.js";import"./chunk-QCPVUNN3.js";import"./chunk-35MIUSXQ.js";import"./chunk-DZGPUGUG.js";import"./chunk-4LWMAAWK.js";import{d as g,e as _}from"./chunk-IA55PFLG.js";import"./chunk-W4II6SIH.js";import"./chunk-O3IM4WRZ.js";import"./chunk-WDEXOLK2.js";_();import{existsSync as v}from"node:fs";import{basename as I}from"node:path";var w={includeArchive:!0};function l(e){let r=n=>C(e,n)?e.prepare(`SELECT COUNT(*) AS n FROM ${n}`).get().n:0;return{live:r("witness_chain"),archive:r("witness_chain_archive")}}function O(e){return{status:e.status,entriesChecked:e.entriesChecked,forks:e.forks.length,unacknowledgedForks:e.forks.length-e.acknowledgedForks.length,...e.tamperedAt!==void 0?{tamperedAt:e.tamperedAt}:{},...e.tamperReason?{tamperReason:e.tamperReason}:{}}}function $(e){return e.forkDetails.filter(r=>!r.acknowledged).map(({id:r,parentId:n,prevHash:s,actionHash:c})=>({id:r,parentId:n,prevHash:s,actionHash:c}))}function x(e,r){let n=new Set,s=e.prepare("SELECT prev_hash FROM witness_chain UNION ALL SELECT prev_hash FROM witness_chain_archive").pluck().iterate();for(let t of s)n.add(t);let c=[],a=new Set;for(let t of["witness_chain","witness_chain_archive"]){let f=e.prepare(`SELECT * FROM ${t} ORDER BY id ASC`).iterate();for(let o of f){if(o.id===r||a.has(o.id))continue;a.add(o.id);let i=A(o);!n.has(b(i))&&!n.has(R(i))&&c.push({id:o.id,hash:y(o)})}}return c.sort((t,f)=>t.id-f.id)}function S(e){return`Refusing to repair: tampering detected at id=${e.tamperedAt} (${e.tamperReason}). Only accidental forks can be re-anchored; restore from a backup and investigate.`}function M(e){let r=`${e}.bak-${Math.floor(Date.now()/1e3)}`;if(!v(r))return r;let n=1;for(;v(`${r}-${n}`);)n++;return`${r}-${n}`}function W(e,r){let n=M(e),s=g(e,{readonly:!0,fileMustExist:!0});try{s.prepare("VACUUM INTO ?").run(n)}finally{s.close()}let c=g(n,{readonly:!0,fileMustExist:!0});try{let a=c.pragma("integrity_check",{simple:!0});if(a!=="ok")throw new Error(`backup integrity_check failed: ${String(a)}`);let t=l(c);if(t.live!==r.live||t.archive!==r.archive)throw new Error(`backup holds ${JSON.stringify(t)} witness rows, expected ${JSON.stringify(r)}`)}finally{c.close()}return n}async function L(e,r){let n=r.dryRun===!0,s=new E(e,r.keyManager??void 0);await s.initialize();let c=l(e),a=s.verify(w),t={dryRun:n,before:O(a),rowsBefore:c,rowsAfter:c};if(a.tampered)return{...t,action:"refused",message:S(a),forksAcknowledged:[]};let f=$(a);if(f.length===0){let d=a.forks.length>0?`Nothing to repair: all ${a.forks.length} fork(s) are already re-anchored.`:"Nothing to repair: the audit chain has no forks.";return{...t,action:"none",message:d,forksAcknowledged:[]}}if(n)return{...t,action:"would-reanchor",forksAcknowledged:f.map(d=>d.id),message:`Dry run: would back up the database and append a CHAIN_REANCHOR entry acknowledging ${f.length} fork(s). Nothing was written.`};let o,i=e.transaction(()=>{let d=l(e),p=s.verify(w);if(p.tampered)return{kind:"refused",check:p};let h=$(p);if(h.length===0)return{kind:"noop"};o=W(r.dbPath,d);let m=e.prepare("SELECT * FROM witness_chain ORDER BY id DESC LIMIT 1").get(),T=s.append("CHAIN_REANCHOR",{reason:"fork-repair",issue:"https://github.com/proffesor-for-testing/agentic-qe/issues/753",note:"Acknowledges accidental forks from pre-3.14.5 concurrent appends; no rows were changed.",forkCount:h.length,forks:h,pins:x(e,m.id),verifiedTipId:m.id,verifiedTipHash:y(m),entriesChecked:p.entriesChecked,rows:d,backup:I(o)},r.actor??"aqe-audit-repair"),k=l(e);if(k.live!==d.live+1||k.archive!==d.archive)throw new Error(`row-count check failed: before ${JSON.stringify(d)}, after ${JSON.stringify(k)}`);return{kind:"reanchored",entry:T,forks:h,txAfter:k}}).immediate();if(i.kind==="refused")return{...t,action:"refused",message:S(i.check),forksAcknowledged:[]};if(i.kind==="noop")return{...t,action:"none",message:"Nothing to repair (another process re-anchored first).",forksAcknowledged:[]};let u=s.verify(w),N=u.valid&&!u.tampered;return{...t,action:"reanchored",after:O(u),rowsAfter:i.txAfter,forksAcknowledged:i.forks.map(d=>d.id),reanchorId:i.entry.id,backupPath:o,message:N?`Re-anchored ${i.forks.length} fork(s) with CHAIN_REANCHOR id=${i.entry.id}; chain now ${u.status}. Backup: ${o}`:`Appended CHAIN_REANCHOR id=${i.entry.id}, but the chain still verifies as ${u.status}. Backup: ${o}`}}export{L as repairWitnessChainForks};
@@ -1,2 +1,2 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.11");process.exit(0)}
2
- import{g as a,h as b,i as c,j as d,k as e}from"./chunk-NT7JRHMH.js";import"./chunk-CFWGGRE7.js";export{a as CHAIN_REANCHOR_ACTION,c as WitnessChainVerifier,b as ownHash,e as tableExists,d as verifyWitnessChain};
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.12");process.exit(0)}
2
+ import{g as a,h as b,i as c,j as d,k as e}from"./chunk-2IVE5AR3.js";import"./chunk-WDEXOLK2.js";export{a as CHAIN_REANCHOR_ACTION,c as WitnessChainVerifier,b as ownHash,e as tableExists,d as verifyWitnessChain};
@@ -1,2 +1,2 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.11");process.exit(0)}
2
- import{a,b,c}from"./chunk-KDI5JOYZ.js";import"./chunk-EH2S6AOR.js";import"./chunk-XNLIWQYE.js";import"./chunk-CFWGGRE7.js";export{a as WitnessKeyManager,c as _resetDefaultWitnessKeyManagerForTests,b as getDefaultWitnessKeyManager};
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.12");process.exit(0)}
2
+ import{a,b,c}from"./chunk-IETBWYHW.js";import"./chunk-DZGPUGUG.js";import"./chunk-4LWMAAWK.js";import"./chunk-WDEXOLK2.js";export{a as WitnessKeyManager,c as _resetDefaultWitnessKeyManagerForTests,b as getDefaultWitnessKeyManager};
@@ -1,5 +1,5 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.11");process.exit(0)}
2
- import{b as $}from"./chunk-VWUZSNVC.js";import"./chunk-WCVCOT4E.js";import{a as k,b as W,c as b,g as C}from"./chunk-BZPE3LDO.js";import"./chunk-TCYSBC7Y.js";import{c as v}from"./chunk-JFLU7L3W.js";import"./chunk-IW6WDGHM.js";import"./chunk-DDEOZPWJ.js";import"./chunk-CFWGGRE7.js";import{Command as D}from"commander";import o from"chalk";function O(f,i){let h=f.indexOf("=");return h>0&&(i[f.substring(0,h)]=f.substring(h+1)),i}function V(f,i,h){let m=new D("workflow").description("Manage QE workflows and pipelines (ADR-041)");return m.command("run <file>").description("Execute a QE pipeline from YAML file").option("-w, --watch","Watch execution progress").option("-v, --verbose","Show detailed output").option("--params <json>","Additional parameters as JSON","{}").action(async(n,t)=>{if(!await h())return;let c=(await import("path")).resolve(n);try{console.log(o.blue(`
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.12");process.exit(0)}
2
+ import{b as $}from"./chunk-4SA7M34P.js";import"./chunk-UREDS662.js";import{a as k,b as W,c as b,g as C}from"./chunk-3EWQN37E.js";import"./chunk-MCPEC6OO.js";import{c as v}from"./chunk-WTAUF6O4.js";import"./chunk-VZBC6DP7.js";import"./chunk-W4II6SIH.js";import"./chunk-WDEXOLK2.js";import{Command as D}from"commander";import o from"chalk";function O(f,i){let h=f.indexOf("=");return h>0&&(i[f.substring(0,h)]=f.substring(h+1)),i}function V(f,i,h){let m=new D("workflow").description("Manage QE workflows and pipelines (ADR-041)");return m.command("run <file>").description("Execute a QE pipeline from YAML file").option("-w, --watch","Watch execution progress").option("-v, --verbose","Show detailed output").option("--params <json>","Additional parameters as JSON","{}").action(async(n,t)=>{if(!await h())return;let c=(await import("path")).resolve(n);try{console.log(o.blue(`
3
3
  Running workflow from: ${n}
4
4
  `));let l=k(c);if(!l.success||!l.workflow){console.log(o.red("Failed to parse pipeline:"));for(let d of l.errors)console.log(o.red(` ${d}`));await i(1)}let u={...v(t.params,"params")};if(l.pipeline){for(let d of l.pipeline.stages)if(d.params)for(let[y,p]of Object.entries(d.params))u[y]=p}if(!f.workflowOrchestrator.getWorkflow(l.workflow.id)){let d=f.workflowOrchestrator.registerWorkflow(l.workflow);d.success||(console.log(o.red(`Failed to register workflow: ${d.error.message}`)),await i(1))}let g=await f.workflowOrchestrator.executeWorkflow(l.workflow.id,u);if(!g.success){console.log(o.red(`Failed to start workflow: ${g.error.message}`)),await i(1);return}let a=g.value;if(console.log(o.cyan(` Execution ID: ${a}`)),console.log(o.gray(` Workflow: ${l.workflow.name}`)),console.log(o.gray(` Stages: ${l.workflow.steps.length}`)),console.log(""),t.watch){console.log(o.blue(`Workflow Progress:
5
5
  `));let d,y=Date.now();for(;;){let w=f.workflowOrchestrator.getWorkflowStatus(a);if(!w)break;if(!d||d.progress!==w.progress||d.status!==w.status||JSON.stringify(d.currentSteps)!==JSON.stringify(w.currentSteps)){process.stdout.write("\r\x1B[K");let S="\u2588".repeat(Math.floor(w.progress/5))+"\u2591".repeat(20-Math.floor(w.progress/5)),R=w.status==="completed"?o.green:w.status==="failed"?o.red:w.status==="running"?o.yellow:o.gray;console.log(` [${S}] ${w.progress}% - ${R(w.status)}`),w.currentSteps.length>0&&t.verbose&&console.log(o.gray(` Running: ${w.currentSteps.join(", ")}`)),d=w}if(w.status==="completed"||w.status==="failed"||w.status==="cancelled")break;await new Promise(S=>setTimeout(S,500))}let p=f.workflowOrchestrator.getWorkflowStatus(a);if(p){console.log("");let w=p.duration||Date.now()-y;p.status==="completed"?(console.log(o.green("Workflow completed successfully")),console.log(o.gray(` Duration: ${$(w)}`)),console.log(o.gray(` Completed: ${p.completedSteps.length} stages`)),p.skippedSteps.length>0&&console.log(o.yellow(` Skipped: ${p.skippedSteps.length} stages`))):p.status==="failed"?(console.log(o.red("Workflow failed")),console.log(o.red(` Error: ${p.error}`)),console.log(o.gray(` Failed stages: ${p.failedSteps.join(", ")}`))):console.log(o.yellow(`Workflow ${p.status}`))}console.log(""),await i(p?.status==="completed"?0:1);return}else console.log(o.green("Workflow execution started")),console.log(o.gray(` Use 'aqe workflow status ${a}' to check progress`));console.log(""),await i(0)}catch(l){console.error(o.red(`
@@ -35,10 +35,10 @@ Workflow cancelled: ${n}
35
35
  `)):console.log(o.red(`
36
36
  Failed to cancel workflow: ${t.error.message}
37
37
  `)),await i(t.success?0:1)}catch(t){console.error(o.red(`
38
- Failed to cancel workflow:`),t),await i(1)}}),m.command("browser-list").description("List available browser workflow templates").action(async()=>{try{let{BrowserWorkflowTool:n}=await import("./browser-workflow-VTDFBW7T.js"),e=await new n().invoke({});if(e.success&&e.data){console.log(o.blue(`
38
+ Failed to cancel workflow:`),t),await i(1)}}),m.command("browser-list").description("List available browser workflow templates").action(async()=>{try{let{BrowserWorkflowTool:n}=await import("./browser-workflow-QRKCFVR3.js"),e=await new n().invoke({});if(e.success&&e.data){console.log(o.blue(`
39
39
  Browser Workflow Templates:
40
40
  `));for(let c of e.data.availableTemplates)console.log(` ${o.cyan(c)}`);console.log("")}else console.log(o.red(`Failed: ${e.error||"Unknown error"}`));await i(0)}catch(n){console.error(o.red(`
41
- Failed:`),n),await i(1)}}),m.command("browser-load [template]").description("Load and validate a browser workflow template or inline YAML").option("--yaml <yaml>","Inline YAML workflow definition").option("-v, --var <key=value>","Variable override (repeatable)",O,{}).option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(n,t)=>{try{let{BrowserWorkflowTool:e}=await import("./browser-workflow-VTDFBW7T.js"),{writeOutput:c,toJSON:l}=await import("./ci-output-PEQQQWVD.js"),s=new e,u={variables:t.var||{}};if(t.yaml)u.workflowYaml=t.yaml;else if(n)if(n.endsWith(".yaml")||n.endsWith(".yml")){let g=await import("fs"),d=(await import("path")).resolve(n);g.existsSync(d)||(console.log(o.red(`
41
+ Failed:`),n),await i(1)}}),m.command("browser-load [template]").description("Load and validate a browser workflow template or inline YAML").option("--yaml <yaml>","Inline YAML workflow definition").option("-v, --var <key=value>","Variable override (repeatable)",O,{}).option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(n,t)=>{try{let{BrowserWorkflowTool:e}=await import("./browser-workflow-QRKCFVR3.js"),{writeOutput:c,toJSON:l}=await import("./ci-output-LCOQBSJL.js"),s=new e,u={variables:t.var||{}};if(t.yaml)u.workflowYaml=t.yaml;else if(n)if(n.endsWith(".yaml")||n.endsWith(".yml")){let g=await import("fs"),d=(await import("path")).resolve(n);g.existsSync(d)||(console.log(o.red(`
42
42
  File not found: ${d}
43
43
  `)),await i(1)),u.workflowYaml=g.readFileSync(d,"utf-8")}else u.templateName=n;else console.log(o.red(`
44
44
  Provide a template name or --yaml. Use "workflow browser-list" to see templates.
@@ -0,0 +1,2 @@
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.12");process.exit(0)}
2
+ import{a,b,d as c,e as d}from"./chunk-4KUOYDY2.js";import"./chunk-INZARYUD.js";import"./chunk-L7NGKANW.js";import"./chunk-66PXR3NI.js";import"./chunk-WTAUF6O4.js";import"./chunk-SPC4RBLF.js";import"./chunk-WGTEZT7G.js";import"./chunk-IPA7K556.js";import"./chunk-ZROAMFX2.js";import"./chunk-YUA6ZKKY.js";import"./chunk-3IU4LDZR.js";import"./chunk-YVJEUX3I.js";import"./chunk-6QRI3JVE.js";import"./chunk-7TA5MUPW.js";import"./chunk-VZBC6DP7.js";import"./chunk-YWWMNTBF.js";import"./chunk-UJNGGFGX.js";import"./chunk-ADUAJIAU.js";import"./chunk-7OEFBWAG.js";import"./chunk-QCPVUNN3.js";import"./chunk-35MIUSXQ.js";import"./chunk-DZGPUGUG.js";import"./chunk-4LWMAAWK.js";import"./chunk-IA55PFLG.js";import"./chunk-W4II6SIH.js";import"./chunk-O3IM4WRZ.js";import"./chunk-WDEXOLK2.js";export{b as DEFAULT_WORKFLOW_CONFIG,a as WorkflowEvents,c as WorkflowOrchestrator,d as createWorkflowOrchestrator};
@@ -1,2 +1,2 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.11");process.exit(0)}
2
- import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}from"./chunk-VEEYL2CZ.js";import{a as v,b as w,c as x,d as y,e as z,f as A,g as B,h as C,i as D,j as E,k as F,l as G,m as H,n as I,o as J,p as K}from"./chunk-JUMICXM6.js";import"./chunk-LD5CFK53.js";import"./chunk-XGPTZUKQ.js";import"./chunk-JFLU7L3W.js";import"./chunk-WM3SRRA6.js";import"./chunk-XGBU3KEM.js";import"./chunk-G2IJFNZS.js";import"./chunk-M5XYIQYZ.js";import"./chunk-NQZNMCZU.js";import"./chunk-5N25I53C.js";import"./chunk-OYJC3YON.js";import"./chunk-EJPK7OTR.js";import"./chunk-QDESWOZP.js";import"./chunk-IO5537OM.js";import"./chunk-FZHSG75I.js";import"./chunk-VO3DRK4P.js";import"./chunk-HJ3XNTTJ.js";import"./chunk-76SNL7GU.js";import"./chunk-EH2S6AOR.js";import"./chunk-XNLIWQYE.js";import"./chunk-4MUBW4RT.js";import"./chunk-DDEOZPWJ.js";import"./chunk-XJKZ7FTR.js";import"./chunk-CFWGGRE7.js";export{z as GNNLayerFactory,i as QEFlashAttention,x as QEGNNEmbeddingIndex,y as QEGNNIndexFactory,a as QESONA,e as QE_FLASH_ATTENTION_CONFIG,g as QE_PERFORMANCE_TARGETS,f as QE_SONA_CONFIG,A as TensorCompressionFactory,u as batchComputeAttention,K as batchDifferentiableSearch,M as checkRuvectorPackagesAvailable,c as createDomainQESONA,j as createQEFlashAttention,b as createQESONA,D as getDifferentiableSearch,F as getGetCompressionLevel,E as getHierarchicalForward,G as getInit,h as getOptimalBlockConfig,k as getQEFlashAttentionConfig,n as getRuvectorDotProductAttention,m as getRuvectorFlashAttention,p as getRuvectorHyperbolicAttention,B as getRuvectorLayer,q as getRuvectorLinearAttention,r as getRuvectorMoEAttention,o as getRuvectorMultiHeadAttention,L as getRuvectorPackageVersions,C as getTensorCompress,l as getWorkloadTypes,N as initAllRuvectorPackages,w as initGNN,d as isAttentionAvailable,v as isGNNAvailable,s as toFloat32Array,H as toFloat32ArrayGNN,J as toIEmbedding,t as toNumberArrayAttn,I as toNumberArrayGNN};
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.12");process.exit(0)}
2
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}from"./chunk-G3AABG4Q.js";import{a as v,b as w,c as x,d as y,e as z,f as A,g as B,h as C,i as D,j as E,k as F,l as G,m as H,n as I,o as J,p as K}from"./chunk-A5Y7DAVQ.js";import"./chunk-L7NGKANW.js";import"./chunk-66PXR3NI.js";import"./chunk-WTAUF6O4.js";import"./chunk-SPC4RBLF.js";import"./chunk-WGTEZT7G.js";import"./chunk-IPA7K556.js";import"./chunk-ZROAMFX2.js";import"./chunk-YUA6ZKKY.js";import"./chunk-3IU4LDZR.js";import"./chunk-YVJEUX3I.js";import"./chunk-6QRI3JVE.js";import"./chunk-YWWMNTBF.js";import"./chunk-UJNGGFGX.js";import"./chunk-ADUAJIAU.js";import"./chunk-7OEFBWAG.js";import"./chunk-QCPVUNN3.js";import"./chunk-35MIUSXQ.js";import"./chunk-DZGPUGUG.js";import"./chunk-4LWMAAWK.js";import"./chunk-IA55PFLG.js";import"./chunk-W4II6SIH.js";import"./chunk-O3IM4WRZ.js";import"./chunk-WDEXOLK2.js";export{z as GNNLayerFactory,i as QEFlashAttention,x as QEGNNEmbeddingIndex,y as QEGNNIndexFactory,a as QESONA,e as QE_FLASH_ATTENTION_CONFIG,g as QE_PERFORMANCE_TARGETS,f as QE_SONA_CONFIG,A as TensorCompressionFactory,u as batchComputeAttention,K as batchDifferentiableSearch,M as checkRuvectorPackagesAvailable,c as createDomainQESONA,j as createQEFlashAttention,b as createQESONA,D as getDifferentiableSearch,F as getGetCompressionLevel,E as getHierarchicalForward,G as getInit,h as getOptimalBlockConfig,k as getQEFlashAttentionConfig,n as getRuvectorDotProductAttention,m as getRuvectorFlashAttention,p as getRuvectorHyperbolicAttention,B as getRuvectorLayer,q as getRuvectorLinearAttention,r as getRuvectorMoEAttention,o as getRuvectorMultiHeadAttention,L as getRuvectorPackageVersions,C as getTensorCompress,l as getWorkloadTypes,N as initAllRuvectorPackages,w as initGNN,d as isAttentionAvailable,v as isGNNAvailable,s as toFloat32Array,H as toFloat32ArrayGNN,J as toIEmbedding,t as toNumberArrayAttn,I as toNumberArrayGNN};
@@ -86,6 +86,13 @@ async function executePhase(phase, context, outputDir, phaseIndex, coverageThres
86
86
  const pct = (v) => (v === null || v === undefined ? 'n/a' : `${Math.round(v * 10) / 10}%`);
87
87
  switch (outcome.kind) {
88
88
  case 'measured': {
89
+ if (outcome.insufficientEvidence.length > 0) {
90
+ // #1154: target files missing from the report, or a stale report.
91
+ status = 'warning';
92
+ phaseExitCode = coverageExitCode(outcome, threshold);
93
+ summary = `INSUFFICIENT EVIDENCE — ${outcome.insufficientEvidence.join('; ')}`;
94
+ break;
95
+ }
89
96
  status = outcome.verdict.meetsThreshold ? 'passed' : 'warning';
90
97
  summary = `Line: ${pct(outcome.summary.line)}, Branch: ${pct(outcome.summary.branch)} — ` +
91
98
  `${outcome.verdict.meetsThreshold ? 'meets' : 'below'} ${threshold}% threshold (measured)`;
@@ -149,7 +149,13 @@ missing coverage evidence.`)
149
149
  console.log(` Branches: ${color(summary.branch)(fmt(summary.branch))}`);
150
150
  console.log(` Functions: ${color(summary.function)(fmt(summary.function))}`);
151
151
  console.log(` Statements: ${color(summary.statement)(fmt(summary.statement))}`);
152
- if (outcome.kind === 'measured') {
152
+ if (outcome.kind === 'measured' && outcome.insufficientEvidence.length > 0) {
153
+ // #1154: figures over part of the target, or from a stale report, are not a pass.
154
+ console.log(`\n Threshold: ${chalk.red(`Not met (${threshold}%) — INSUFFICIENT EVIDENCE`)}`);
155
+ for (const reason of outcome.insufficientEvidence)
156
+ console.log(chalk.yellow(` - ${reason}`));
157
+ }
158
+ else if (outcome.kind === 'measured') {
153
159
  console.log(`\n Threshold: ${outcome.verdict.meetsThreshold ? chalk.green(`Met (${threshold}%)`) : chalk.red(`Not met (${threshold}%)`)}`);
154
160
  }
155
161
  else {
@@ -309,7 +309,7 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
309
309
  }));
310
310
  // #1168: a completed agent is not a passed check, so the completion
311
311
  // line only says "successfully" when the verdict passes.
312
- const verdictPassed = reportFleetVerdict(operation, results, () => { });
312
+ const verdictPassed = reportFleetVerdict(operation, results, () => { }, plan.task.insufficientEvidence);
313
313
  progress.stop({ verdictFailed: !verdictPassed });
314
314
  const successful = results.filter(r => r.success).length;
315
315
  const failed = results.filter(r => !r.success).length;
@@ -321,7 +321,7 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
321
321
  console.log(chalk.red(` Failed: ${failed}`));
322
322
  }
323
323
  // #1125 review: a completed task is not a passed check.
324
- const passed = reportFleetVerdict(operation, results);
324
+ const passed = reportFleetVerdict(operation, results, undefined, plan.task.insufficientEvidence);
325
325
  console.log('');
326
326
  await cleanupAndExit(passed ? 0 : 1);
327
327
  }
@@ -11,12 +11,13 @@ import { Command } from 'commander';
11
11
  * - `sqlite`: an embedder produced the vector and SQLite holds it (vector
12
12
  * search uses it now); only the ANN index (patterns.rvf) was not open in
13
13
  * this process. It is ingested automatically the next time the index opens.
14
- * - `pending`: no vector (no embedding runtime); text search only until an
15
- * embedder is configured and `aqe learning backfill-embeddings` runs.
14
+ * - `pending`: no vector (no embedding runtime, or #1204: the configured
15
+ * embedder failed); text search only until an embedder works and
16
+ * `aqe learning backfill-embeddings` runs.
16
17
  */
17
18
  export declare function describeVectorIndexState(pattern: {
18
19
  embedding?: ArrayLike<number>;
19
- }, indexUnavailableCause?: string): {
20
+ }, indexUnavailableCause?: string, embedderFailure?: string | null): {
20
21
  vectorIndex: 'indexed' | 'sqlite' | 'pending';
21
22
  notice?: string;
22
23
  };
@@ -9,6 +9,7 @@ import { QE_HOOK_EVENTS } from '../../../learning/qe-hooks.js';
9
9
  import { safeJsonParse } from '../../../shared/safe-json.js';
10
10
  import { committedPendingIndexPatternId } from '../../../learning/pattern-mutation-error.js';
11
11
  import { formatLearningOutcomes, formatPatternSuccessRate } from '../../../learning/usage-outcome.js';
12
+ import { redactEndpoint } from '../../../learning/embedder-endpoint-client.js';
12
13
  import { getHooksSystem, printJson, printSuccess, printError, } from './hooks-shared.js';
13
14
  /**
14
15
  * How a learned pattern reached vector search, by cause (#981, review N1).
@@ -16,11 +17,28 @@ import { getHooksSystem, printJson, printSuccess, printError, } from './hooks-sh
16
17
  * - `sqlite`: an embedder produced the vector and SQLite holds it (vector
17
18
  * search uses it now); only the ANN index (patterns.rvf) was not open in
18
19
  * this process. It is ingested automatically the next time the index opens.
19
- * - `pending`: no vector (no embedding runtime); text search only until an
20
- * embedder is configured and `aqe learning backfill-embeddings` runs.
20
+ * - `pending`: no vector (no embedding runtime, or #1204: the configured
21
+ * embedder failed); text search only until an embedder works and
22
+ * `aqe learning backfill-embeddings` runs.
21
23
  */
22
- export function describeVectorIndexState(pattern, indexUnavailableCause) {
24
+ export function describeVectorIndexState(pattern, indexUnavailableCause, embedderFailure) {
23
25
  const hasVector = Boolean(pattern.embedding && pattern.embedding.length > 0);
26
+ if (!hasVector && embedderFailure) {
27
+ const endpoint = process.env.AQE_EMBEDDER_ENDPOINT;
28
+ const embedder = endpoint
29
+ ? `the configured embedding endpoint (AQE_EMBEDDER_ENDPOINT=${redactEndpoint(endpoint)})`
30
+ : 'the embedder';
31
+ // The embedder's own wording says "transformer" for the endpoint path too.
32
+ const reason = endpoint
33
+ ? embedderFailure.replace(/^(Transformer initialization previously failed|Failed to initialize transformer model): /, '')
34
+ : embedderFailure;
35
+ return {
36
+ vectorIndex: 'pending',
37
+ notice: `Pattern stored in SQLite without a vector: ${embedder} failed: ${reason}. ` +
38
+ 'Text search finds it now. Once the embedder works again, run ' +
39
+ '`aqe learning backfill-embeddings` to enable semantic search for it.',
40
+ };
41
+ }
24
42
  if (!hasVector) {
25
43
  return {
26
44
  vectorIndex: 'pending',
@@ -212,7 +230,7 @@ export function registerStatsHooks(hooks) {
212
230
  if (!pattern) {
213
231
  throw new Error('learn failed: no pattern returned');
214
232
  }
215
- const { vectorIndex, notice: pendingWarning } = describeVectorIndexState(pattern, indexCause);
233
+ const { vectorIndex, notice: pendingWarning } = describeVectorIndexState(pattern, indexCause, reasoningBank.getEmbedderFailure());
216
234
  if (options.json) {
217
235
  printJson({
218
236
  success: true,
@@ -185,6 +185,12 @@ export class TaskHandler {
185
185
  async executeList(options, context) {
186
186
  if (!await this.ensureInitialized())
187
187
  return this.cleanupAndExit(1);
188
+ // #1117: an unvalidated filter silently matches nothing, which reads as
189
+ // "no tasks" rather than "bad flag". Parity with `task submit`.
190
+ if (options.priority !== undefined && !isPriority(options.priority)) {
191
+ console.error(chalk.red(`\n ${invalidPriorityMessage(options.priority)}\n`));
192
+ return this.cleanupAndExit(1);
193
+ }
188
194
  try {
189
195
  const tasks = context.queen.listTasks({
190
196
  status: options.status,
@@ -8,7 +8,10 @@
8
8
  *
9
9
  * - measured — an instrumented report covers the target: judged on the
10
10
  * metrics the report collected (an uncollected metric is null,
11
- * never 0%, and is left out of the threshold);
11
+ * never 0%, and is left out of the threshold). When target
12
+ * files are missing from the report, or the report is older
13
+ * than the sources, the evidence is insufficient (#1154): the
14
+ * threshold is not met and the exit code is 3;
12
15
  * - unmeasured — the report has no entry for the target, the runner ran 0
13
16
  * tests, or only test files were reported: no figure, exit 3;
14
17
  * - estimate — no report exists, so the CLI shows a labelled STATIC
@@ -18,6 +21,7 @@
18
21
  */
19
22
  import { type CoverageData } from './coverage-data.js';
20
23
  import { type NoDataReason } from '../../coordination/handlers/coverage-target.js';
24
+ import { type CoverageEvidence } from '../../coordination/handlers/coverage-evidence.js';
21
25
  /** `aqe coverage` exit code when no coverage measurement exists for the target (#995). */
22
26
  export declare const EXIT_UNMEASURED = 3;
23
27
  /** Provenance labels, the same vocabulary as MCP `coverage_analyze_sublinear`. */
@@ -27,6 +31,7 @@ export type CliCoverage = {
27
31
  kind: 'data';
28
32
  data: CoverageData;
29
33
  projectRoot?: string;
34
+ evidence?: CoverageEvidence;
30
35
  } | {
31
36
  kind: 'no-data';
32
37
  reason: NoDataReason;
@@ -112,6 +117,9 @@ export type CliCoverageOutcome = {
112
117
  meetsThreshold: boolean;
113
118
  };
114
119
  recommendations: string[];
120
+ /** #1154: why the report cannot support a verdict for the target; empty when it can. */
121
+ insufficientEvidence: string[];
122
+ evidence?: CoverageEvidence;
115
123
  };
116
124
  /** Caller-facing explanation of a static estimate. */
117
125
  export declare function estimateMessage(): string;
@@ -122,7 +130,8 @@ export declare function estimateMessage(): string;
122
130
  export declare function evaluateCliCoverage(api: CoverageAnalyzeAPI, targetPath: string, threshold: number, log?: (message: string) => void): Promise<CliCoverageOutcome>;
123
131
  /**
124
132
  * Exit code: 0 meets (by more than 5%), 1 below / error, 2 within 5% above,
125
- * 3 UNMEASURED (not in the report, 0 tests, test-only report, or estimate only).
133
+ * 3 UNMEASURED (not in the report, 0 tests, test-only report, or estimate only)
134
+ * or insufficient evidence (target files missing from the report, stale report).
126
135
  */
127
136
  export declare function coverageExitCode(outcome: CliCoverageOutcome, threshold: number): number;
128
137
  /** The `-F json` document for an outcome (same shape in every case). */
@@ -8,7 +8,10 @@
8
8
  *
9
9
  * - measured — an instrumented report covers the target: judged on the
10
10
  * metrics the report collected (an uncollected metric is null,
11
- * never 0%, and is left out of the threshold);
11
+ * never 0%, and is left out of the threshold). When target
12
+ * files are missing from the report, or the report is older
13
+ * than the sources, the evidence is insufficient (#1154): the
14
+ * threshold is not met and the exit code is 3;
12
15
  * - unmeasured — the report has no entry for the target, the runner ran 0
13
16
  * tests, or only test files were reported: no figure, exit 3;
14
17
  * - estimate — no report exists, so the CLI shows a labelled STATIC
@@ -20,6 +23,7 @@ import chalk from 'chalk';
20
23
  import { walkSourceFiles } from './file-discovery.js';
21
24
  import { buildCoverageData, summarizeCoverage } from './coverage-data.js';
22
25
  import { describeNoData, reconcileRecommendations, resolveExistingCoverage, thresholdVerdict, } from '../../coordination/handlers/coverage-target.js';
26
+ import { describeEvidence } from '../../coordination/handlers/coverage-evidence.js';
23
27
  /** `aqe coverage` exit code when no coverage measurement exists for the target (#995). */
24
28
  export const EXIT_UNMEASURED = 3;
25
29
  /** Provenance labels, the same vocabulary as MCP `coverage_analyze_sublinear`. */
@@ -46,8 +50,12 @@ export async function resolveCliCoverageData(targetPath, log = message => consol
46
50
  if (existing.status === 'evaluated') {
47
51
  const { evaluation, projectRoot } = existing;
48
52
  if (evaluation.status === 'measured') {
49
- const files = evaluation.files;
50
- return { kind: 'data', data: { files, summary: summarizeCoverage(files), instrumented: true }, projectRoot };
53
+ const { files, evidence } = evaluation;
54
+ const data = {
55
+ files, summary: summarizeCoverage(files), instrumented: true,
56
+ ...(evidence.unmeasuredFiles.length > 0 ? { unmeasuredFiles: evidence.unmeasuredFiles } : {}),
57
+ };
58
+ return { kind: 'data', data, projectRoot, evidence };
51
59
  }
52
60
  return { kind: 'no-data', reason: evaluation.reason, message: describeNoData(evaluation.reason, targetPath, projectRoot) };
53
61
  }
@@ -104,12 +112,17 @@ export async function evaluateCliCoverage(api, targetPath, threshold, log) {
104
112
  // #995 review NB5: a metric the report never collected is null — not 0 —
105
113
  // and is left out of the threshold verdict (same rule as MCP).
106
114
  const collected = metricsCollected(data);
107
- const verdict = thresholdVerdict(report.summary, threshold, collected);
115
+ const figures = thresholdVerdict(report.summary, threshold, collected);
116
+ // #1154: figures over part of the target, or from a stale report, never meet the threshold.
117
+ const insufficientEvidence = describeEvidence(resolved.evidence, resolved.projectRoot ?? targetPath);
118
+ const verdict = { ...figures, meetsThreshold: figures.meetsThreshold && insufficientEvidence.length === 0 };
108
119
  return {
109
120
  kind: 'measured',
110
121
  data,
111
122
  collected,
112
123
  verdict,
124
+ insufficientEvidence,
125
+ ...(resolved.evidence ? { evidence: resolved.evidence } : {}),
113
126
  summary: {
114
127
  ...report.summary,
115
128
  branch: collected.branch ? report.summary.branch : null,
@@ -117,16 +130,19 @@ export async function evaluateCliCoverage(api, targetPath, threshold, log) {
117
130
  statement: collected.statement ? report.summary.statement : null,
118
131
  },
119
132
  // NB-A: the shortfall advice comes from the same verdict (shared with MCP).
120
- recommendations: reconcileRecommendations(report.recommendations ?? [], verdict, threshold, collected),
133
+ recommendations: reconcileRecommendations(report.recommendations ?? [], figures, threshold, collected),
121
134
  };
122
135
  }
123
136
  /**
124
137
  * Exit code: 0 meets (by more than 5%), 1 below / error, 2 within 5% above,
125
- * 3 UNMEASURED (not in the report, 0 tests, test-only report, or estimate only).
138
+ * 3 UNMEASURED (not in the report, 0 tests, test-only report, or estimate only)
139
+ * or insufficient evidence (target files missing from the report, stale report).
126
140
  */
127
141
  export function coverageExitCode(outcome, threshold) {
128
142
  switch (outcome.kind) {
129
143
  case 'measured': {
144
+ if (outcome.insufficientEvidence.length > 0)
145
+ return EXIT_UNMEASURED;
130
146
  const { overall, meetsThreshold } = outcome.verdict;
131
147
  if (!meetsThreshold)
132
148
  return 1;
@@ -158,6 +174,10 @@ export function coverageJson(outcome, threshold, target) {
158
174
  functionDataCollected: outcome.collected.function,
159
175
  statementDataCollected: outcome.collected.statement,
160
176
  ...(outcome.data.unmeasuredFiles?.length ? { unmeasuredFiles: outcome.data.unmeasuredFiles } : {}),
177
+ ...(outcome.evidence ? { evidenceStatus: outcome.evidence.status } : {}),
178
+ ...(outcome.evidence?.stale ? { staleReport: outcome.evidence.stale } : {}),
179
+ ...(outcome.insufficientEvidence.length > 0
180
+ ? { warning: `INSUFFICIENT EVIDENCE: ${outcome.insufficientEvidence.join('; ')}` } : {}),
161
181
  };
162
182
  case 'estimate':
163
183
  return {
@@ -17,6 +17,11 @@ export interface FleetOperationTask {
17
17
  domain: DomainName;
18
18
  type: string;
19
19
  payload: Record<string, unknown>;
20
+ /**
21
+ * #1154: why the input cannot support a passing verdict (target files missing
22
+ * from the coverage report, a stale report). The verdict fails while non-empty.
23
+ */
24
+ insufficientEvidence?: string[];
20
25
  }
21
26
  export type FleetOperationPlan = {
22
27
  success: true;
@@ -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('');
@@ -141,6 +141,8 @@ export declare function isRustProject(targetPath: string): boolean;
141
141
  export declare function collectRustCoverage(targetPath: string, options?: {
142
142
  timeoutMs?: number;
143
143
  }): Promise<CollectedCoverage | null>;
144
+ /** Production source files under a directory (test, build and vendored directories skipped). */
145
+ export declare function walkSourceFiles(targetPath: string): string[];
144
146
  /**
145
147
  * Static coverage estimate from source shape, for when no instrumentation could
146
148
  * be run.
@@ -502,7 +502,8 @@ function withRecomputedSummary(files) {
502
502
  },
503
503
  };
504
504
  }
505
- function walkSourceFiles(targetPath) {
505
+ /** Production source files under a directory (test, build and vendored directories skipped). */
506
+ export function walkSourceFiles(targetPath) {
506
507
  const found = [];
507
508
  // Classification is relative to the analysis root (see isTestPath).
508
509
  const rootDir = targetPath;
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Coverage evidence: is a report complete and current for its target? (#1154)
3
+ *
4
+ * A report judged over only the files it happens to contain says nothing
5
+ * about the target's other files. `aqe fleet run analyze --target src` printed
6
+ * "100% over 1 files" and "Verdict: PASSED" from a report that listed
7
+ * `src/math.js` while `src/unsafe.js` had no measurement at all, and a report
8
+ * written before the sources last changed was judged as if it were current.
9
+ *
10
+ * This module answers two questions for every caller of the shared resolver
11
+ * (MCP `coverage_analyze_sublinear` / `task_orchestrate`, `aqe coverage`,
12
+ * `aqe ci`, `aqe fleet run analyze`):
13
+ * 1. Which production source files under the target are not in the report?
14
+ * They are UNMEASURED: not 0%, and not left out silently.
15
+ * 2. Is the report older than source files it is judged against? (stale)
16
+ * Either one makes the evidence insufficient: no verdict may pass on it.
17
+ */
18
+ import type { FileCoverage } from '../../domains/coverage-analysis/interfaces';
19
+ /** The report is older than these source files. */
20
+ export interface StaleReport {
21
+ reportPath: string;
22
+ reportModified: string;
23
+ newerFiles: string[];
24
+ }
25
+ export interface CoverageEvidence {
26
+ /** `insufficient-evidence` when any target file is unmeasured or the report is stale. */
27
+ status: 'complete' | 'insufficient-evidence';
28
+ /** Production source files under the target with no entry in the report (absolute paths). */
29
+ unmeasuredFiles: string[];
30
+ /** Production source files under the target, measured or not. */
31
+ targetFiles: number;
32
+ stale?: StaleReport;
33
+ /** The coverage config whose include/exclude scoped `unmeasuredFiles`, if any. */
34
+ coverageScope?: {
35
+ source: string;
36
+ readable: boolean;
37
+ };
38
+ }
39
+ /**
40
+ * Production source files under a directory `target` that the report has no
41
+ * entry for. Only files in a language the report covers count: a JS report
42
+ * does not make a Python helper script unmeasured. Files the project's coverage
43
+ * config leaves out (include/exclude) were never meant to be measured and do
44
+ * not count either.
45
+ */
46
+ export declare function findUnmeasuredSourceFiles(reportFiles: FileCoverage[], projectRoot: string, target: string): {
47
+ targetFiles: string[];
48
+ unmeasured: string[];
49
+ coverageScope?: {
50
+ source: string;
51
+ readable: boolean;
52
+ };
53
+ };
54
+ /** Source files modified after the report was written; `undefined` when the report is current. */
55
+ export declare function findStaleness(reportPath: string, sourceFiles: string[]): StaleReport | undefined;
56
+ /**
57
+ * The evidence a report gives for `target`.
58
+ *
59
+ * `measuredFiles` are the report entries already scoped to the target.
60
+ * Completeness is checked only when `checkCompleteness` is set (a directory
61
+ * target, not a report file given as the target), staleness only when the
62
+ * report's path is known (not for a report the run just wrote).
63
+ */
64
+ export declare function assessCoverageEvidence(report: {
65
+ files: FileCoverage[];
66
+ }, measuredFiles: FileCoverage[], projectRoot: string, target: string, options?: {
67
+ reportPath?: string;
68
+ checkCompleteness?: boolean;
69
+ }): CoverageEvidence;
70
+ /**
71
+ * Why the evidence is insufficient, one sentence per problem; empty when it is
72
+ * complete. Shared by MCP and CLI so the wording cannot drift.
73
+ */
74
+ export declare function describeEvidence(evidence: CoverageEvidence | undefined, projectRoot: string): string[];
75
+ //# sourceMappingURL=coverage-evidence.d.ts.map