agentic-qe 3.15.10 → 3.15.11

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 (482) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +114 -0
  3. package/README.md +8 -0
  4. package/assets/skills/skills-manifest.json +1 -1
  5. package/dist/adapters/a2a/agent-cards/generator.js +6 -3
  6. package/dist/adapters/a2a/tasks/task-router.js +3 -1
  7. package/dist/adapters/trajectory-adapter.js +1 -1
  8. package/dist/agents/claim-verifier/verifiers/output-verifier.d.ts +3 -1
  9. package/dist/agents/claim-verifier/verifiers/output-verifier.js +31 -2
  10. package/dist/agents/overlay-loader.js +26 -21
  11. package/dist/cli/bundle.js +6 -6
  12. package/dist/cli/chunks/adapter-V4GSGOOK.js +2 -0
  13. package/dist/cli/chunks/{agent-booster-wasm-H7ANGXW4.js → agent-booster-wasm-TIDSQ3ZK.js} +2 -2
  14. package/dist/cli/chunks/{agent-handler-SVXSHEET.js → agent-handler-G3EPBVA7.js} +2 -2
  15. package/dist/cli/chunks/{agent-memory-branch-WKQH36XL.js → agent-memory-branch-ARC5C7GW.js} +2 -2
  16. package/dist/cli/chunks/aqe-learning-engine-6WQTM5YR.js +2 -0
  17. package/dist/cli/chunks/{arena-OPS36NFZ.js → arena-36DTATJV.js} +4 -4
  18. package/dist/cli/chunks/{arena-EKOOFVST.js → arena-K4I4QDXB.js} +2 -2
  19. package/dist/cli/chunks/{audit-AO5NDZRI.js → audit-WQSJSJZF.js} +3 -3
  20. package/dist/cli/chunks/base-AK7BXBX2.js +2 -0
  21. package/dist/cli/chunks/{better-sqlite3-TFLVEMMY.js → better-sqlite3-BB4K67MT.js} +2 -2
  22. package/dist/cli/chunks/{brain-handler-ADBBJPYW.js → brain-handler-CU3GOIU3.js} +3 -3
  23. package/dist/cli/chunks/{branch-enumerator-HGHUYYL5.js → branch-enumerator-NJQX7ZNB.js} +2 -2
  24. package/dist/cli/chunks/{browser-5LU6P4SZ.js → browser-6YJF4FQW.js} +2 -2
  25. package/dist/cli/chunks/browser-workflow-VTDFBW7T.js +2 -0
  26. package/dist/cli/chunks/{chunk-LQEURY7C.js → chunk-25P77WA5.js} +1 -1
  27. package/dist/cli/chunks/{chunk-FFTPAWM6.js → chunk-2CW7VRPH.js} +8 -8
  28. package/dist/cli/chunks/chunk-2DTX7YAZ.js +6 -0
  29. package/dist/cli/chunks/{chunk-6KIL6CMD.js → chunk-2KFFEKSI.js} +2 -2
  30. package/dist/cli/chunks/{chunk-UARKIZAS.js → chunk-2VLYUF7U.js} +2 -2
  31. package/dist/cli/chunks/{chunk-A55QKKT2.js → chunk-325QCVDI.js} +2 -2
  32. package/dist/cli/chunks/{chunk-FBXTQNRH.js → chunk-35M2X3C5.js} +2 -2
  33. package/dist/cli/chunks/{chunk-S75EYIJG.js → chunk-3RHOPP7A.js} +1 -1
  34. package/dist/cli/chunks/{chunk-SY2IB442.js → chunk-4HJKQIX5.js} +2 -2
  35. package/dist/cli/chunks/chunk-4MUBW4RT.js +7 -0
  36. package/dist/cli/chunks/{chunk-KSIWGGJI.js → chunk-4RAQ7PJA.js} +2 -2
  37. package/dist/cli/chunks/{chunk-DT7SIJOA.js → chunk-4RH5I24Q.js} +2 -2
  38. package/dist/cli/chunks/{chunk-JHIY4VCC.js → chunk-4UBVAJFO.js} +3 -3
  39. package/dist/cli/chunks/{chunk-RPHY2DU6.js → chunk-4UX35V7P.js} +2 -2
  40. package/dist/cli/chunks/{chunk-7LFZ4CHM.js → chunk-4X4MWMHB.js} +2 -2
  41. package/dist/cli/chunks/{chunk-TNMBRDCA.js → chunk-55CH76ZO.js} +3 -3
  42. package/dist/cli/chunks/{chunk-6S3WJGUV.js → chunk-57LNKSW7.js} +2 -2
  43. package/dist/cli/chunks/chunk-5ERFHEEE.js +14 -0
  44. package/dist/cli/chunks/{chunk-KNQ2ERFX.js → chunk-5HQP4SLM.js} +2 -2
  45. package/dist/cli/chunks/{chunk-XFVTGAAJ.js → chunk-5MNASJOH.js} +2 -2
  46. package/dist/cli/chunks/{chunk-UCJMVXO4.js → chunk-5MTWCCZJ.js} +2 -2
  47. package/dist/cli/chunks/{chunk-GZLZCZ42.js → chunk-5N25I53C.js} +2 -2
  48. package/dist/cli/chunks/{chunk-NGKNYIQZ.js → chunk-5WYZHDIZ.js} +1 -1
  49. package/dist/cli/chunks/{chunk-GWZZ7DAO.js → chunk-5YLOLACR.js} +2 -2
  50. package/dist/cli/chunks/{chunk-B6LTH6YV.js → chunk-672XOJDG.js} +1 -1
  51. package/dist/cli/chunks/{chunk-DNRWGATA.js → chunk-6NA3KZZT.js} +3 -3
  52. package/dist/cli/chunks/chunk-72ZBJD2E.js +3 -0
  53. package/dist/cli/chunks/{chunk-XLZYRTNO.js → chunk-76SNL7GU.js} +2 -2
  54. package/dist/cli/chunks/{chunk-37OWRCUN.js → chunk-7HEMJHPP.js} +2 -2
  55. package/dist/cli/chunks/{chunk-WQ4PYWSW.js → chunk-7R5HC56U.js} +1 -1
  56. package/dist/cli/chunks/{chunk-EDLFX4ZB.js → chunk-AFFN6E6Q.js} +2 -2
  57. package/dist/cli/chunks/{chunk-YCGP5VFP.js → chunk-AMZKAJLJ.js} +2 -2
  58. package/dist/cli/chunks/{chunk-OEKP73MC.js → chunk-AP3ADWDK.js} +2 -2
  59. package/dist/cli/chunks/{chunk-DE4YJQJF.js → chunk-APPZATXA.js} +2 -2
  60. package/dist/cli/chunks/{chunk-RWWOHCMG.js → chunk-AUUJBXWX.js} +2 -2
  61. package/dist/cli/chunks/{chunk-LRZY4KS2.js → chunk-BTVWA35P.js} +2 -2
  62. package/dist/cli/chunks/{chunk-4G63WT4F.js → chunk-BZPE3LDO.js} +2 -2
  63. package/dist/cli/chunks/{chunk-OY2AHLSF.js → chunk-CFWGGRE7.js} +1 -1
  64. package/dist/cli/chunks/{chunk-7OZVZIBE.js → chunk-CIAL4YRY.js} +2 -2
  65. package/dist/cli/chunks/{chunk-TBLI254A.js → chunk-CO3DX2AX.js} +2 -2
  66. package/dist/cli/chunks/{chunk-GHBNRMSJ.js → chunk-DDEOZPWJ.js} +2 -2
  67. package/dist/cli/chunks/{chunk-62OAY5KJ.js → chunk-DOBZPSKE.js} +1 -1
  68. package/dist/cli/chunks/{chunk-NVYIZCSR.js → chunk-DOFREOPQ.js} +2 -2
  69. package/dist/cli/chunks/{chunk-SU5H66SD.js → chunk-E44NNCEU.js} +2 -2
  70. package/dist/cli/chunks/{chunk-MG27QY4D.js → chunk-E6PF35JZ.js} +2 -2
  71. package/dist/cli/chunks/{chunk-4SJYIX54.js → chunk-EBPJY4DI.js} +2 -2
  72. package/dist/cli/chunks/{chunk-EWFECZ2U.js → chunk-EH2S6AOR.js} +2 -2
  73. package/dist/cli/chunks/{chunk-Y76IAYQD.js → chunk-EIDJNT5C.js} +1 -1
  74. package/dist/cli/chunks/{chunk-6PX4OXQO.js → chunk-EJPK7OTR.js} +2 -2
  75. package/dist/cli/chunks/{chunk-EAU5KDFO.js → chunk-EK5GMOSO.js} +1 -1
  76. package/dist/cli/chunks/{chunk-ABFFWZPC.js → chunk-ERN43HOX.js} +151 -149
  77. package/dist/cli/chunks/{chunk-SO45NA4D.js → chunk-ETVAYGCB.js} +11 -11
  78. package/dist/cli/chunks/{chunk-RK73HB2F.js → chunk-EWPUQCN4.js} +2 -2
  79. package/dist/cli/chunks/{chunk-DMFTELBS.js → chunk-FL32MTKT.js} +2 -2
  80. package/dist/cli/chunks/chunk-FLU5FDSC.js +742 -0
  81. package/dist/cli/chunks/{chunk-NZYLNXT6.js → chunk-FUYOOKTH.js} +5 -5
  82. package/dist/cli/chunks/{chunk-NAXGWDVM.js → chunk-FWSGPE3V.js} +3 -3
  83. package/dist/cli/chunks/{chunk-ATHWDAXB.js → chunk-FZHSG75I.js} +2 -2
  84. package/dist/cli/chunks/{chunk-OBAREPDC.js → chunk-G2IJFNZS.js} +2 -2
  85. package/dist/cli/chunks/{chunk-H32EPIR2.js → chunk-G4CKPWF6.js} +1 -1
  86. package/dist/cli/chunks/{chunk-SKQUUE4F.js → chunk-G4FAPO57.js} +2 -2
  87. package/dist/cli/chunks/{chunk-KG336OV3.js → chunk-G77MLBDF.js} +2 -2
  88. package/dist/cli/chunks/{chunk-V6JBOIMX.js → chunk-GBFUANTC.js} +1 -1
  89. package/dist/cli/chunks/{chunk-YAKGBHO4.js → chunk-GVKVJJQX.js} +2 -2
  90. package/dist/cli/chunks/{chunk-GJHWY3ZX.js → chunk-GWJWSLDA.js} +2 -2
  91. package/dist/cli/chunks/{chunk-WDVRE6GN.js → chunk-H43AFUKL.js} +2 -2
  92. package/dist/cli/chunks/chunk-H7BLYMNU.js +59 -0
  93. package/dist/cli/chunks/{chunk-NW5JUCCG.js → chunk-HDJUYAZG.js} +1 -1
  94. package/dist/cli/chunks/{chunk-FKL3R5JQ.js → chunk-HDNWSKHA.js} +2 -2
  95. package/dist/cli/chunks/{chunk-Z2O2YJAF.js → chunk-HFFPYC4G.js} +2 -2
  96. package/dist/cli/chunks/{chunk-WSF24I3D.js → chunk-HJ3XNTTJ.js} +2 -2
  97. package/dist/cli/chunks/{chunk-YDAQK5UF.js → chunk-HYXUN7BW.js} +1 -1
  98. package/dist/cli/chunks/{chunk-2ZI5FKSF.js → chunk-I36CRDHF.js} +2 -2
  99. package/dist/cli/chunks/{chunk-OY3NJNP2.js → chunk-I4K2HTQU.js} +1 -1
  100. package/dist/cli/chunks/{chunk-2ZMF4NCF.js → chunk-IENZSO3K.js} +2 -2
  101. package/dist/cli/chunks/chunk-IO5537OM.js +2 -0
  102. package/dist/cli/chunks/{chunk-G3CZCUPM.js → chunk-IOZRKXR5.js} +2 -2
  103. package/dist/cli/chunks/{chunk-BQUAE3CP.js → chunk-ITL3IN2E.js} +2 -2
  104. package/dist/cli/chunks/{chunk-3P34JFQH.js → chunk-ITPGWGQS.js} +14 -14
  105. package/dist/cli/chunks/{chunk-NSHU347M.js → chunk-IW6WDGHM.js} +1 -1
  106. package/dist/cli/chunks/{chunk-KOBVYY6H.js → chunk-J4JMCZVA.js} +2 -2
  107. package/dist/cli/chunks/{chunk-ACWFKES2.js → chunk-JFLU7L3W.js} +2 -2
  108. package/dist/cli/chunks/{chunk-YK7JN5N7.js → chunk-JGJXXAS6.js} +4 -4
  109. package/dist/cli/chunks/{chunk-ESUO3GTJ.js → chunk-JUMICXM6.js} +2 -2
  110. package/dist/cli/chunks/{chunk-VKRTTFB6.js → chunk-K2HBNYAZ.js} +2 -2
  111. package/dist/cli/chunks/{chunk-6MVVSSID.js → chunk-K7V2WZNF.js} +1 -1
  112. package/dist/cli/chunks/{chunk-XEB3NLJR.js → chunk-KDI5JOYZ.js} +2 -2
  113. package/dist/cli/chunks/{chunk-YKMU4LBV.js → chunk-KJCIMNHS.js} +1 -1
  114. package/dist/cli/chunks/{chunk-IKISCIGH.js → chunk-KKYO2NKV.js} +2 -2
  115. package/dist/cli/chunks/{chunk-VFSYMOAL.js → chunk-KSE5TDM5.js} +2 -2
  116. package/dist/cli/chunks/{chunk-V2RSNVMW.js → chunk-KSLLHFVY.js} +1 -1
  117. package/dist/cli/chunks/{chunk-6C3II5OM.js → chunk-KXS3Y2AX.js} +2 -2
  118. package/dist/cli/chunks/{chunk-LMS3Y7JD.js → chunk-LBX7M4LW.js} +2 -2
  119. package/dist/cli/chunks/{chunk-2XGVTYVX.js → chunk-LCVEEII4.js} +2 -2
  120. package/dist/cli/chunks/{chunk-C522H7XR.js → chunk-LD5CFK53.js} +32 -32
  121. package/dist/cli/chunks/{chunk-FESZBPUB.js → chunk-LPU6PAJE.js} +2 -2
  122. package/dist/cli/chunks/{chunk-7ZCDZHDB.js → chunk-LQ4NUC6Q.js} +2 -2
  123. package/dist/cli/chunks/chunk-LRL56ZYL.js +21 -0
  124. package/dist/cli/chunks/{chunk-D6DA2KFD.js → chunk-LXQ3B4RY.js} +2 -2
  125. package/dist/cli/chunks/{chunk-I33O4BRQ.js → chunk-M5RQ6U3G.js} +2 -2
  126. package/dist/cli/chunks/{chunk-6GP6W46M.js → chunk-M5XYIQYZ.js} +2 -2
  127. package/dist/cli/chunks/chunk-M7XFBSIK.js +2 -0
  128. package/dist/cli/chunks/{chunk-IPJ7Q3AJ.js → chunk-MIK4RBEH.js} +1 -1
  129. package/dist/cli/chunks/{chunk-GRCIBCJ2.js → chunk-NC6K7SCQ.js} +2 -2
  130. package/dist/cli/chunks/{chunk-CESIR27V.js → chunk-NKTWKYHB.js} +2 -2
  131. package/dist/cli/chunks/{chunk-OPFGRS5S.js → chunk-NPZOBSAN.js} +2 -2
  132. package/dist/cli/chunks/{chunk-PGYMKGOE.js → chunk-NQZNMCZU.js} +2 -2
  133. package/dist/cli/chunks/{chunk-2T7RRL6G.js → chunk-NT7JRHMH.js} +1 -1
  134. package/dist/cli/chunks/{chunk-H2PYU7MN.js → chunk-NTB342NJ.js} +1 -1
  135. package/dist/cli/chunks/{chunk-NPPHWFA2.js → chunk-O4JAKWWM.js} +13 -13
  136. package/dist/cli/chunks/{chunk-APSRPR4W.js → chunk-OD5D4LSZ.js} +2 -2
  137. package/dist/cli/chunks/{chunk-UHTTW3IT.js → chunk-OH5V5EJW.js} +2 -2
  138. package/dist/cli/chunks/{chunk-PFG6VQ5Z.js → chunk-OHR7C777.js} +2 -2
  139. package/dist/cli/chunks/{chunk-U53ZB4IX.js → chunk-OURITHFV.js} +2 -2
  140. package/dist/cli/chunks/{chunk-DEF34AFL.js → chunk-OV5RPLKV.js} +2 -2
  141. package/dist/cli/chunks/{chunk-GJMLK5UT.js → chunk-OYJC3YON.js} +2 -2
  142. package/dist/cli/chunks/{chunk-AH3ZD3NJ.js → chunk-QDESWOZP.js} +2 -2
  143. package/dist/cli/chunks/chunk-R5GRABPQ.js +2 -0
  144. package/dist/cli/chunks/{chunk-CZGOSJQ4.js → chunk-R5LGV6GZ.js} +2 -2
  145. package/dist/cli/chunks/{chunk-MNN5J4GU.js → chunk-RBZCA7SD.js} +2 -2
  146. package/dist/cli/chunks/chunk-RQMCZQN2.js +2 -0
  147. package/dist/cli/chunks/chunk-RTFKTKSO.js +4 -0
  148. package/dist/cli/chunks/{chunk-FB6TI3BH.js → chunk-RTY7VSZB.js} +2 -2
  149. package/dist/cli/chunks/{chunk-2SXBBUM6.js → chunk-S6IYEBAI.js} +2 -2
  150. package/dist/cli/chunks/{chunk-YYTGXD3R.js → chunk-SMVVAVN2.js} +2 -2
  151. package/dist/cli/chunks/{chunk-MA7JIQ6U.js → chunk-T5KHJ3J7.js} +5 -5
  152. package/dist/cli/chunks/{chunk-FZOWULMH.js → chunk-TCYSBC7Y.js} +1 -1
  153. package/dist/cli/chunks/{chunk-IU2IV4NE.js → chunk-TFW7CCKS.js} +1 -1
  154. package/dist/cli/chunks/chunk-TL6OFMXF.js +6 -0
  155. package/dist/cli/chunks/{chunk-ERQKYIP7.js → chunk-U3LJNNVJ.js} +5 -5
  156. package/dist/cli/chunks/{chunk-5E6GHSTY.js → chunk-UKKYMW3S.js} +2 -2
  157. package/dist/cli/chunks/{chunk-YK3BVZY6.js → chunk-UMVSWQNB.js} +2 -2
  158. package/dist/cli/chunks/{chunk-CFBEBXLO.js → chunk-UTTSH4NH.js} +3 -3
  159. package/dist/cli/chunks/{chunk-6XCMKIZN.js → chunk-V5AADCBC.js} +1 -1
  160. package/dist/cli/chunks/{chunk-5LPYV3TK.js → chunk-V7DA4HAK.js} +1 -1
  161. package/dist/cli/chunks/{chunk-7PJIR4ST.js → chunk-VBK2YAYY.js} +2 -2
  162. package/dist/cli/chunks/{chunk-ODJNUMV3.js → chunk-VEEYL2CZ.js} +2 -2
  163. package/dist/cli/chunks/{chunk-PPSAMXYN.js → chunk-VLD7Z2ED.js} +3 -3
  164. package/dist/cli/chunks/{chunk-N6PIIK6G.js → chunk-VO3DRK4P.js} +2 -2
  165. package/dist/cli/chunks/{chunk-ZXPY654C.js → chunk-VWUZSNVC.js} +1 -1
  166. package/dist/cli/chunks/{chunk-WDQ7IEZY.js → chunk-VYTILW4R.js} +2 -2
  167. package/dist/cli/chunks/{chunk-CZ2IF6MC.js → chunk-WCAVIJ64.js} +1 -1
  168. package/dist/cli/chunks/{chunk-M2QV7PT7.js → chunk-WCVCOT4E.js} +2 -2
  169. package/dist/cli/chunks/{chunk-AI4VYSFS.js → chunk-WM3SRRA6.js} +2 -2
  170. package/dist/cli/chunks/{chunk-NNFZUTDH.js → chunk-X3PZCXWG.js} +1 -1
  171. package/dist/cli/chunks/{chunk-PCEW6Q2C.js → chunk-X4J73KP3.js} +1 -1
  172. package/dist/cli/chunks/{chunk-DBMNJSBV.js → chunk-XDI5X3FR.js} +1 -1
  173. package/dist/cli/chunks/{chunk-VJQYDYAJ.js → chunk-XGBU3KEM.js} +2 -2
  174. package/dist/cli/chunks/{chunk-3Y7SPD72.js → chunk-XGPTZUKQ.js} +2 -2
  175. package/dist/cli/chunks/{chunk-EN2QSKFF.js → chunk-XJKZ7FTR.js} +2 -2
  176. package/dist/cli/chunks/{chunk-VWNFAW2M.js → chunk-XNLIWQYE.js} +2 -2
  177. package/dist/cli/chunks/{chunk-FAUCT5KR.js → chunk-XS2XF3YG.js} +6 -5
  178. package/dist/cli/chunks/chunk-Y7B5EUIJ.js +180 -0
  179. package/dist/cli/chunks/{chunk-Z7IYW5U7.js → chunk-YBBT3YYG.js} +1 -1
  180. package/dist/cli/chunks/{chunk-6TB6YOCZ.js → chunk-YNOCQ2SL.js} +1 -1
  181. package/dist/cli/chunks/{chunk-7TB6FK4B.js → chunk-YOCULVHR.js} +1 -1
  182. package/dist/cli/chunks/{chunk-H74Q7TJN.js → chunk-YPX2TV3M.js} +1 -1
  183. package/dist/cli/chunks/{chunk-V2M2XCR5.js → chunk-Z2EA7A4Z.js} +1 -1
  184. package/dist/cli/chunks/{chunk-KI73QCR5.js → chunk-ZMC543GI.js} +2 -2
  185. package/dist/cli/chunks/chunk-ZMHCMJ4J.js +2 -0
  186. package/dist/cli/chunks/{chunk-WBM6N6IM.js → chunk-ZP75ASUU.js} +1 -1
  187. package/dist/cli/chunks/{chunk-VFKF2XO7.js → chunk-ZQHDA4O7.js} +1 -1
  188. package/dist/cli/chunks/{ci-MSKMVH5X.js → ci-6GUFAZMJ.js} +2 -2
  189. package/dist/cli/chunks/{ci-config-7ODMNAUM.js → ci-config-J665XNOX.js} +2 -2
  190. package/dist/cli/chunks/{ci-output-FXZ7ZZW3.js → ci-output-PEQQQWVD.js} +2 -2
  191. package/dist/cli/chunks/{circuit-breaker-4VOUEPOX.js → circuit-breaker-HHB2JSKH.js} +2 -2
  192. package/dist/cli/chunks/{claude-flow-setup-7D4SGLM4.js → claude-flow-setup-JKUJRWPN.js} +2 -2
  193. package/dist/cli/chunks/client-HL2COSFM.js +2 -0
  194. package/dist/cli/chunks/{cline-installer-WRRT7BGQ.js → cline-installer-Y77BWTAN.js} +2 -2
  195. package/dist/cli/chunks/{code-ZDJRIL3S.js → code-LV2HAGJY.js} +3 -3
  196. package/dist/cli/chunks/{code-index-extractor-4S4SHM56.js → code-index-extractor-4GKKSETB.js} +2 -2
  197. package/dist/cli/chunks/{codex-installer-YTRHNDWR.js → codex-installer-WMKBYE5Y.js} +2 -2
  198. package/dist/cli/chunks/{completions-6N64JUXJ.js → completions-SBGFAOIJ.js} +2 -2
  199. package/dist/cli/chunks/{complexity-analyzer-I4A26VCJ.js → complexity-analyzer-AQHFIJXC.js} +2 -2
  200. package/dist/cli/chunks/{continuedev-installer-IIDR66LB.js → continuedev-installer-26AYFS2E.js} +2 -2
  201. package/dist/cli/chunks/{copilot-installer-SVVFY3S2.js → copilot-installer-4UD3DK55.js} +2 -2
  202. package/dist/cli/chunks/core-handlers-IX7ATLM6.js +2 -0
  203. package/dist/cli/chunks/{cost-tracker-VGFS6IBX.js → cost-tracker-TP4NZCG4.js} +2 -2
  204. package/dist/cli/chunks/{coverage-B7MCGNTE.js → coverage-B2KIXHAI.js} +3 -3
  205. package/dist/cli/chunks/cross-domain-router-YYKLAPJO.js +2 -0
  206. package/dist/cli/chunks/{cursor-installer-UPETT57E.js → cursor-installer-AVZEQZ4W.js} +2 -2
  207. package/dist/cli/chunks/{daemon-7BDJHEIJ.js → daemon-P574WWBW.js} +4 -4
  208. package/dist/cli/chunks/{daemon-CQFNZLXU.js → daemon-XM2A7LQU.js} +3 -3
  209. package/dist/cli/chunks/{dag-attention-scheduler-PJVABHON.js → dag-attention-scheduler-MIWOZ6ET.js} +2 -2
  210. package/dist/cli/chunks/{detect-56SKAGWX.js → detect-TYR7HT23.js} +2 -2
  211. package/dist/cli/chunks/{dist-node-UYTYUMLN.js → dist-node-2DGVQGLS.js} +2 -2
  212. package/dist/cli/chunks/{domain-handler-YOYLBYJE.js → domain-handler-RRA4ZOMF.js} +2 -2
  213. package/dist/cli/chunks/{domain-plugins-7TARX2XF.js → domain-plugins-IVZEZ5RB.js} +2 -2
  214. package/dist/cli/chunks/{domain-transfer-AKVSBD6E.js → domain-transfer-DOBI67K6.js} +2 -2
  215. package/dist/cli/chunks/dream-T6EP7B3F.js +2 -0
  216. package/dist/cli/chunks/{embed-and-insert-pattern-IS6HSR66.js → embed-and-insert-pattern-VNIEOVPO.js} +2 -2
  217. package/dist/cli/chunks/{eval-GNB574IM.js → eval-QV4LVPUF.js} +2 -2
  218. package/dist/cli/chunks/{experience-capture-middleware-RCAOCKM7.js → experience-capture-middleware-DAPKT763.js} +3 -3
  219. package/dist/cli/chunks/{fast-paths-KTZ5SF54.js → fast-paths-WVRFPHX7.js} +2 -2
  220. package/dist/cli/chunks/{feature-flags-ITX5LQ57.js → feature-flags-DEFTUIYT.js} +2 -2
  221. package/dist/cli/chunks/{feature-flags-KFHSR5YF.js → feature-flags-O7ZXDDCD.js} +2 -2
  222. package/dist/cli/chunks/file-discovery-JYMVTDMU.js +2 -0
  223. package/dist/cli/chunks/{fleet-2Y3ZE6CE.js → fleet-FVAUMKUT.js} +22 -22
  224. package/dist/cli/chunks/{gnn-wrapper-RLFW3GSX.js → gnn-wrapper-LS4LZJDR.js} +2 -2
  225. package/dist/cli/chunks/{heartbeat-handler-EM2URCYZ.js → heartbeat-handler-RFTERD4K.js} +4 -4
  226. package/dist/cli/chunks/heartbeat-scheduler-4N5MUJ7S.js +2 -0
  227. package/dist/cli/chunks/hnsw-adapter-ZPAJDSLR.js +2 -0
  228. package/dist/cli/chunks/hnsw-index-4CTH6RHB.js +2 -0
  229. package/dist/cli/chunks/{hnsw-legacy-bridge-JMHEOIBH.js → hnsw-legacy-bridge-GPKGFFHY.js} +2 -2
  230. package/dist/cli/chunks/{hnswlib-node-CBP73QHY.js → hnswlib-node-PHL3F2PR.js} +2 -2
  231. package/dist/cli/chunks/{hooks-IP7XE34Z.js → hooks-GYJ6D4QM.js} +30 -30
  232. package/dist/cli/chunks/hybrid-backend-AW6UTXQS.js +2 -0
  233. package/dist/cli/chunks/{hypergraph-engine-ONAYHU25.js → hypergraph-engine-YGEQPCKJ.js} +2 -2
  234. package/dist/cli/chunks/{hypergraph-handler-VINJRAID.js → hypergraph-handler-ZIMM647V.js} +3 -3
  235. package/dist/cli/chunks/impact-analyzer-MZK3JMSV.js +2 -0
  236. package/dist/cli/chunks/{init-guard-RYVV5R3Z.js → init-guard-VOMBXJXG.js} +2 -2
  237. package/dist/cli/chunks/{init-handler-MPRGWMOE.js → init-handler-PSMUBWK5.js} +26 -25
  238. package/dist/cli/chunks/init-wizard-FUC7KDVX.js +2 -0
  239. package/dist/cli/chunks/kernel-ZCPMCVMW.js +2 -0
  240. package/dist/cli/chunks/{kilocode-installer-OPD7JBRL.js → kilocode-installer-2YNTFBWJ.js} +2 -2
  241. package/dist/cli/chunks/{kiro-installer-M4OPUNK2.js → kiro-installer-XHJDPVAZ.js} +2 -2
  242. package/dist/cli/chunks/knowledge-graph-NUJKEDNF.js +2 -0
  243. package/dist/cli/chunks/{learning-4UWTQLMF.js → learning-GNSIDRNG.js} +3 -3
  244. package/dist/cli/chunks/{llm-router-SQ56FF6Z.js → llm-router-LQDM7IU2.js} +4 -4
  245. package/dist/cli/chunks/llm-router-service-B2BFBQ76.js +2 -0
  246. package/dist/cli/chunks/{load-HPHKDGGL.js → load-YATHI72E.js} +2 -2
  247. package/dist/cli/chunks/load-test-ZHQ2MUGO.js +2 -0
  248. package/dist/cli/chunks/{mcp-TELMAC7Z.js → mcp-4Y6GDLYK.js} +2 -2
  249. package/dist/cli/chunks/{memory-PFQ3KPVJ.js → memory-OUW3L7H2.js} +5 -5
  250. package/dist/cli/chunks/memory-backend-AAMQG6WH.js +2 -0
  251. package/dist/cli/chunks/memory-handlers-G3LFF53U.js +2 -0
  252. package/dist/cli/chunks/{multi-model-executor-3VDRX6TZ.js → multi-model-executor-UBZJXAD2.js} +2 -2
  253. package/dist/cli/chunks/{opencode-installer-PJ576R63.js → opencode-installer-AMMNWVH5.js} +2 -2
  254. package/dist/cli/chunks/{orchestrator-72QP4UU7.js → orchestrator-Y44WDOER.js} +19 -19
  255. package/dist/cli/chunks/pattern-null-store-RFNVA46O.js +2 -0
  256. package/dist/cli/chunks/{pattern-usage-recorder-754YQW7C.js → pattern-usage-recorder-ESR42RME.js} +2 -2
  257. package/dist/cli/chunks/{pipeline-AVXY4MVB.js → pipeline-EDTS6OSC.js} +2 -2
  258. package/dist/cli/chunks/{platform-3E3DXLYB.js → platform-5WONJSUX.js} +2 -2
  259. package/dist/cli/chunks/{plugin-7FUQAKRE.js → plugin-IJXPCLD4.js} +2 -2
  260. package/dist/cli/chunks/{prime-radiant-advanced-wasm-NIB4F5NV.js → prime-radiant-advanced-wasm-5ECKGZK6.js} +2 -2
  261. package/dist/cli/chunks/project-root-7QL4KP5C.js +2 -0
  262. package/dist/cli/chunks/protocol-executor-2NW5BD4R.js +2 -0
  263. package/dist/cli/chunks/{protocol-handler-BQRYMUTG.js → protocol-handler-DRD3GVNW.js} +2 -2
  264. package/dist/cli/chunks/{prove-H52QGC6B.js → prove-KTGW2HMJ.js} +2 -2
  265. package/dist/cli/chunks/qe-reasoning-bank-G2JZOGKD.js +2 -0
  266. package/dist/cli/chunks/{quality-QO4XPAUM.js → quality-DV2WPRRS.js} +2 -2
  267. package/dist/cli/chunks/{quality-gate-FBKE5E6F.js → quality-gate-HFUAFVZC.js} +3 -3
  268. package/dist/cli/chunks/queen-coordinator-GRG5FT2A.js +2 -0
  269. package/dist/cli/chunks/{real-embeddings-RWGOVOXO.js → real-embeddings-RQRVOKVM.js} +2 -2
  270. package/dist/cli/chunks/{ref-validation-LF76ZOBD.js → ref-validation-QWSKS5OY.js} +2 -2
  271. package/dist/cli/chunks/{roocode-installer-3BYEBTQ7.js → roocode-installer-RBAYRCHX.js} +2 -2
  272. package/dist/cli/chunks/router-LQB5SWAF.js +2 -0
  273. package/dist/cli/chunks/routing-feedback-OEEXA55N.js +2 -0
  274. package/dist/cli/chunks/{routing-handler-DST7BVCU.js → routing-handler-FMPP3XKO.js} +2 -2
  275. package/dist/cli/chunks/{ruvector-commands-XE32PGKC.js → ruvector-commands-KZZT4HWF.js} +2 -2
  276. package/dist/cli/chunks/rvf-dual-writer-BZK4M7BO.js +2 -0
  277. package/dist/cli/chunks/rvf-migration-adapter-EZZUJL2E.js +2 -0
  278. package/dist/cli/chunks/{rvf-migration-coordinator-VP32XC75.js → rvf-migration-coordinator-7CHEV35N.js} +2 -2
  279. package/dist/cli/chunks/rvf-native-adapter-6COXTQZ3.js +2 -0
  280. package/dist/cli/chunks/{rvf-store-integrity-SH2AMVI7.js → rvf-store-integrity-Q2TH52SN.js} +2 -2
  281. package/dist/cli/chunks/safe-db-PE6G3L55.js +2 -0
  282. package/dist/cli/chunks/schedule-OLKQ6QYW.js +2 -0
  283. package/dist/cli/chunks/scheduler-LSGBDFAT.js +2 -0
  284. package/dist/cli/chunks/{security-VSPNKCDS.js → security-CUEA3UIM.js} +3 -3
  285. package/dist/cli/chunks/{shared-rvf-adapter-HX6AHL3P.js → shared-rvf-adapter-DROMBRV2.js} +2 -2
  286. package/dist/cli/chunks/{shared-rvf-dual-writer-MX4FC2JE.js → shared-rvf-dual-writer-DBNABOP7.js} +2 -2
  287. package/dist/cli/chunks/sqlite-persistence-HH4DNTYH.js +2 -0
  288. package/dist/cli/chunks/{standalone-memory-O4QUTK6L.js → standalone-memory-IAHA3M6B.js} +2 -2
  289. package/dist/cli/chunks/{status-handler-Z2BP6EOG.js → status-handler-AFUCASTX.js} +2 -2
  290. package/dist/cli/chunks/{structural-health-R36WNLQG.js → structural-health-AQRV6JJ6.js} +2 -2
  291. package/dist/cli/chunks/{sync-QF5Y3EMZ.js → sync-GX7FMJHL.js} +2 -2
  292. package/dist/cli/chunks/{sync-2ELWUFQU.js → sync-XW5TLZ7M.js} +2 -2
  293. package/dist/cli/chunks/{task-handler-43PYE75J.js → task-handler-TFKVUTNF.js} +2 -2
  294. package/dist/cli/chunks/task-handlers-SS4ZDXNF.js +9 -0
  295. package/dist/cli/chunks/{test-UWA377D4.js → test-D2XDJNDX.js} +11 -11
  296. package/dist/cli/chunks/test-runner-process-PSSBNNGR.js +2 -0
  297. package/dist/cli/chunks/{test-scheduling-YQZPJRRN.js → test-scheduling-TS6I2PR7.js} +3 -3
  298. package/dist/cli/chunks/{token-bootstrap-F7C6UKTC.js → token-bootstrap-HBBLPCZ3.js} +2 -2
  299. package/dist/cli/chunks/{token-usage-DO6WLMXP.js → token-usage-3MBUX4PR.js} +2 -2
  300. package/dist/cli/chunks/{transformers-H5RGFKVO.js → transformers-ZWMQO3L2.js} +2 -2
  301. package/dist/cli/chunks/tree-sitter-wasm-parser-TYRQRJ2W.js +2 -0
  302. package/dist/cli/chunks/{types-PJS2FGPF.js → types-5YEMGPSQ.js} +2 -2
  303. package/dist/cli/chunks/unified-memory-AGDZQ5XD.js +2 -0
  304. package/dist/cli/chunks/unified-memory-hnsw-X5TJ3JDE.js +2 -0
  305. package/dist/cli/chunks/unified-persistence-UCV7YETW.js +2 -0
  306. package/dist/cli/chunks/{upgrade-4IC4F6AB.js → upgrade-2TPBKIHI.js} +2 -2
  307. package/dist/cli/chunks/{validate-DHUWW7PF.js → validate-XRAXXFW6.js} +2 -2
  308. package/dist/cli/chunks/{validate-swarm-OERQNOX5.js → validate-swarm-IYSCS3BZ.js} +2 -2
  309. package/dist/cli/chunks/visual-security-ZLXRIQZV.js +2 -0
  310. package/dist/cli/chunks/{web-tree-sitter-TV7DMKES.js → web-tree-sitter-PZQ3ZG2P.js} +2 -2
  311. package/dist/cli/chunks/{windsurf-installer-QZPWSH37.js → windsurf-installer-U6XWFRVT.js} +2 -2
  312. package/dist/cli/chunks/witness-chain-CVIWYTD2.js +2 -0
  313. package/dist/cli/chunks/witness-chain-VBKORKOX.js +2 -0
  314. package/dist/cli/chunks/{witness-chain-repair-RUXIOE7F.js → witness-chain-repair-K7YX2AO6.js} +2 -2
  315. package/dist/cli/chunks/{witness-chain-verifier-YXENHB42.js → witness-chain-verifier-GUTC3W7N.js} +2 -2
  316. package/dist/cli/chunks/{witness-key-manager-HL26AGFO.js → witness-key-manager-YBNKMOP6.js} +2 -2
  317. package/dist/cli/chunks/{workflow-EOVVCN2E.js → workflow-UAJUILFQ.js} +4 -4
  318. package/dist/cli/chunks/workflow-orchestrator-3ZN7MVCE.js +2 -0
  319. package/dist/cli/chunks/{wrappers-AGODHBOO.js → wrappers-AVZ3GPAL.js} +2 -2
  320. package/dist/cli/commands/fleet.js +4 -1
  321. package/dist/cli/commands/hooks-handlers/tool-loop-guardrail.js +11 -6
  322. package/dist/cli/commands/test.js +5 -2
  323. package/dist/cli/handlers/init-handler.d.ts +12 -0
  324. package/dist/cli/handlers/init-handler.js +27 -12
  325. package/dist/cli/utils/ci-output.d.ts +2 -0
  326. package/dist/cli/utils/ci-output.js +2 -0
  327. package/dist/cli/utils/progress.d.ts +16 -2
  328. package/dist/cli/utils/progress.js +31 -14
  329. package/dist/coordination/consensus/consensus-engine.js +3 -1
  330. package/dist/coordination/handlers/code-intelligence-handlers.js +3 -2
  331. package/dist/coordination/handlers/coverage-collection.js +3 -1
  332. package/dist/coordination/handlers/coverage-runner.d.ts +3 -8
  333. package/dist/coordination/handlers/coverage-runner.js +6 -22
  334. package/dist/coordination/handlers/coverage-stderr.d.ts +23 -0
  335. package/dist/coordination/handlers/coverage-stderr.js +39 -0
  336. package/dist/coordination/handlers/coverage-target.js +6 -3
  337. package/dist/coordination/handlers/handler-utils.js +3 -1
  338. package/dist/coordination/handlers/requirements-handlers.js +3 -2
  339. package/dist/coordination/handlers/security-handlers.js +34 -20
  340. package/dist/coordination/queen-coordinator.js +8 -3
  341. package/dist/coordination/task-executability.d.ts +12 -0
  342. package/dist/coordination/task-executability.js +27 -0
  343. package/dist/coordination/workflow-orchestrator.d.ts +6 -0
  344. package/dist/coordination/workflow-orchestrator.js +22 -8
  345. package/dist/domains/code-intelligence/services/product-factors-bridge.js +7 -4
  346. package/dist/domains/coverage-analysis/services/coverage-parser.js +19 -10
  347. package/dist/domains/learning-optimization/interfaces.d.ts +2 -0
  348. package/dist/domains/learning-optimization/services/learning-coordinator.js +2 -1
  349. package/dist/domains/learning-optimization/services/metrics-optimizer.js +14 -4
  350. package/dist/domains/learning-optimization/services/production-intel.js +3 -1
  351. package/dist/domains/security-compliance/generic-finding-dedup.d.ts +40 -0
  352. package/dist/domains/security-compliance/generic-finding-dedup.js +63 -0
  353. package/dist/domains/security-compliance/services/scanners/dependency-resolver.js +14 -6
  354. package/dist/domains/security-compliance/services/scanners/sast-scanner.js +4 -2
  355. package/dist/domains/security-compliance/services/security-auditor-sast.js +2 -2
  356. package/dist/domains/security-compliance/services/security-auditor-secrets.js +2 -2
  357. package/dist/domains/security-compliance/services/security-auditor.js +3 -2
  358. package/dist/domains/test-execution/coordinator.d.ts +2 -1
  359. package/dist/domains/test-execution/coordinator.js +5 -14
  360. package/dist/domains/test-execution/interfaces.d.ts +11 -1
  361. package/dist/domains/test-execution/services/retry-outcome.d.ts +18 -0
  362. package/dist/domains/test-execution/services/retry-outcome.js +53 -0
  363. package/dist/domains/test-generation/coordinator.js +2 -2
  364. package/dist/domains/test-generation/services/pattern-matcher.js +4 -4
  365. package/dist/domains/test-generation/services/test-generator.js +2 -2
  366. package/dist/governance/evolution-pipeline-integration.js +3 -1
  367. package/dist/hooks/cross-phase-hooks.js +3 -1
  368. package/dist/init/init-wizard-steps.js +5 -1
  369. package/dist/init/phases/04-database.js +7 -0
  370. package/dist/init/phases/12-verification.js +14 -4
  371. package/dist/init/settings-merge.js +7 -4
  372. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +7 -0
  373. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +31 -2
  374. package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +3 -1
  375. package/dist/integrations/agentic-flow/reasoning-bank/index.js +5 -0
  376. package/dist/integrations/ruvector/filter-adapter.js +2 -1
  377. package/dist/learning/dream/insight-generator.js +5 -4
  378. package/dist/learning/memory-auditor.js +3 -1
  379. package/dist/learning/qe-patterns.js +2 -1
  380. package/dist/learning/real-qe-reasoning-bank.d.ts +19 -0
  381. package/dist/learning/real-qe-reasoning-bank.js +70 -38
  382. package/dist/mcp/bundle.js +486 -481
  383. package/dist/mcp/handlers/domain-handler-configs.d.ts +2 -0
  384. package/dist/mcp/handlers/domain-handler-configs.js +8 -2
  385. package/dist/mcp/handlers/task-handlers.d.ts +13 -0
  386. package/dist/mcp/handlers/task-handlers.js +42 -16
  387. package/dist/mcp/handlers/validation-pipeline-handler.js +9 -9
  388. package/dist/mcp/protocol-server.js +8 -8
  389. package/dist/mcp/qe-tool-bridge.js +3 -0
  390. package/dist/mcp/services/reasoning-bank-service.d.ts +3 -1
  391. package/dist/mcp/services/reasoning-bank-service.js +4 -0
  392. package/dist/mcp/tool-annotations.js +4 -1
  393. package/dist/mcp/tools/coherence/check.js +1 -0
  394. package/dist/mcp/tools/coherence/consensus.js +4 -2
  395. package/dist/mcp/tools/learning-optimization/optimize.js +1 -2
  396. package/dist/mcp/tools/mincut/index.js +3 -0
  397. package/dist/mcp/tools/quality-assessment/gate.js +7 -0
  398. package/dist/mcp/tools/qx-analysis/analyze.js +1 -0
  399. package/dist/mcp/tools/requirements-validation/quality-criteria.js +10 -3
  400. package/dist/mcp/tools/security-compliance/scan.js +4 -2
  401. package/dist/mcp/tools/test-execution/e2e-execute.js +2 -2
  402. package/dist/mcp/tools/test-execution/execute.js +3 -2
  403. package/dist/memory/crdt/crdt-store.js +5 -0
  404. package/dist/memory/crdt/lww-register.js +12 -2
  405. package/dist/optimization/early-exit-token-optimizer.js +3 -1
  406. package/dist/planning/goap-planner.js +5 -0
  407. package/dist/planning/plan-executor.js +5 -0
  408. package/dist/shared/io/confined-read.d.ts +74 -0
  409. package/dist/shared/io/confined-read.js +256 -0
  410. package/dist/shared/io/file-reader.d.ts +6 -6
  411. package/dist/shared/io/file-reader.js +16 -42
  412. package/dist/shared/llm/providers/claude-code.js +4 -1
  413. package/dist/shared/native-module-errors.d.ts +51 -0
  414. package/dist/shared/native-module-errors.js +129 -0
  415. package/dist/shared/safe-db.js +14 -4
  416. package/dist/shared/security/osv-client.js +4 -1
  417. package/dist/shared/types/test-frameworks.js +2 -2
  418. package/dist/sync/readers/json-reader.js +2 -1
  419. package/dist/validation/anchor-set.d.ts +6 -0
  420. package/dist/validation/anchor-set.js +9 -1
  421. package/dist/validation/quality-gate-runner.d.ts +7 -1
  422. package/dist/validation/quality-gate-runner.js +3 -3
  423. package/package.json +1 -1
  424. package/dist/cli/chunks/adapter-TR5SLAZC.js +0 -2
  425. package/dist/cli/chunks/aqe-learning-engine-DXWKCHY2.js +0 -2
  426. package/dist/cli/chunks/base-GTB6POYE.js +0 -2
  427. package/dist/cli/chunks/browser-workflow-MSBOLYUY.js +0 -2
  428. package/dist/cli/chunks/chunk-6P7424AO.js +0 -21
  429. package/dist/cli/chunks/chunk-6X5DHU6Q.js +0 -14
  430. package/dist/cli/chunks/chunk-CMBLM26R.js +0 -2
  431. package/dist/cli/chunks/chunk-DKAC3E3B.js +0 -3
  432. package/dist/cli/chunks/chunk-DURHK377.js +0 -742
  433. package/dist/cli/chunks/chunk-FPUDRSFJ.js +0 -180
  434. package/dist/cli/chunks/chunk-G5I6KGMW.js +0 -59
  435. package/dist/cli/chunks/chunk-HOZUDE4C.js +0 -2
  436. package/dist/cli/chunks/chunk-TYFZXDGZ.js +0 -4
  437. package/dist/cli/chunks/chunk-U4OICXV2.js +0 -6
  438. package/dist/cli/chunks/chunk-XBVUVFJK.js +0 -4
  439. package/dist/cli/chunks/chunk-XUZDBQ5X.js +0 -6
  440. package/dist/cli/chunks/chunk-YBSBABOS.js +0 -2
  441. package/dist/cli/chunks/chunk-ZG5666GJ.js +0 -2
  442. package/dist/cli/chunks/client-POSVREVS.js +0 -2
  443. package/dist/cli/chunks/core-handlers-V243GY7X.js +0 -2
  444. package/dist/cli/chunks/cross-domain-router-N3AIEM3B.js +0 -2
  445. package/dist/cli/chunks/dream-UA7MKOPQ.js +0 -2
  446. package/dist/cli/chunks/file-discovery-YCMNKZAK.js +0 -2
  447. package/dist/cli/chunks/heartbeat-scheduler-QH5V6G2P.js +0 -2
  448. package/dist/cli/chunks/hnsw-adapter-OJNFAGJS.js +0 -2
  449. package/dist/cli/chunks/hnsw-index-DFUNARVD.js +0 -2
  450. package/dist/cli/chunks/hybrid-backend-SSGQQEQ2.js +0 -2
  451. package/dist/cli/chunks/impact-analyzer-CRGCA7ZD.js +0 -2
  452. package/dist/cli/chunks/init-wizard-NIMZ4J55.js +0 -2
  453. package/dist/cli/chunks/kernel-JQK7PRAI.js +0 -2
  454. package/dist/cli/chunks/knowledge-graph-YPVVIKEU.js +0 -2
  455. package/dist/cli/chunks/llm-router-service-5OGAUOXF.js +0 -2
  456. package/dist/cli/chunks/load-test-UKNV5MWW.js +0 -2
  457. package/dist/cli/chunks/memory-backend-ZW4BTRNK.js +0 -2
  458. package/dist/cli/chunks/memory-handlers-FCXN437E.js +0 -2
  459. package/dist/cli/chunks/pattern-null-store-4DUV6MQC.js +0 -2
  460. package/dist/cli/chunks/project-root-JCAUNL6O.js +0 -2
  461. package/dist/cli/chunks/protocol-executor-RNZNZP3A.js +0 -2
  462. package/dist/cli/chunks/qe-reasoning-bank-WK6TQOG2.js +0 -2
  463. package/dist/cli/chunks/queen-coordinator-4452SXZQ.js +0 -2
  464. package/dist/cli/chunks/router-3DIS5X4R.js +0 -2
  465. package/dist/cli/chunks/routing-feedback-OPXRCXM7.js +0 -2
  466. package/dist/cli/chunks/rvf-dual-writer-JL6T727I.js +0 -2
  467. package/dist/cli/chunks/rvf-migration-adapter-V7IBDUCS.js +0 -2
  468. package/dist/cli/chunks/rvf-native-adapter-O3UQTEBK.js +0 -2
  469. package/dist/cli/chunks/safe-db-EVB4ZC7T.js +0 -2
  470. package/dist/cli/chunks/schedule-ORDDXXY4.js +0 -2
  471. package/dist/cli/chunks/scheduler-XFLJSFIU.js +0 -2
  472. package/dist/cli/chunks/sqlite-persistence-Y7B42CJ3.js +0 -2
  473. package/dist/cli/chunks/task-handlers-KPWAEMKH.js +0 -9
  474. package/dist/cli/chunks/test-runner-process-3XZUYST2.js +0 -2
  475. package/dist/cli/chunks/tree-sitter-wasm-parser-YTBCBHUO.js +0 -2
  476. package/dist/cli/chunks/unified-memory-EHD4VNFW.js +0 -2
  477. package/dist/cli/chunks/unified-memory-hnsw-ZODGM4UK.js +0 -2
  478. package/dist/cli/chunks/unified-persistence-MHSI7ABK.js +0 -2
  479. package/dist/cli/chunks/visual-security-54MLFKWY.js +0 -2
  480. package/dist/cli/chunks/witness-chain-LC6Q2W27.js +0 -2
  481. package/dist/cli/chunks/witness-chain-QUIBAF3W.js +0 -2
  482. package/dist/cli/chunks/workflow-orchestrator-UKHEJVSK.js +0 -2
@@ -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.10");process.exit(0)}
2
- import{a as E}from"./chunk-TBLI254A.js";import"./chunk-XEB3NLJR.js";import{b as R,c as b,e as A,h as y,k as C}from"./chunk-2T7RRL6G.js";import"./chunk-C522H7XR.js";import"./chunk-3Y7SPD72.js";import"./chunk-ACWFKES2.js";import"./chunk-AI4VYSFS.js";import"./chunk-VJQYDYAJ.js";import"./chunk-OBAREPDC.js";import"./chunk-6GP6W46M.js";import"./chunk-PGYMKGOE.js";import"./chunk-GZLZCZ42.js";import"./chunk-GJMLK5UT.js";import"./chunk-6PX4OXQO.js";import"./chunk-AH3ZD3NJ.js";import"./chunk-HOZUDE4C.js";import"./chunk-ATHWDAXB.js";import"./chunk-N6PIIK6G.js";import"./chunk-WSF24I3D.js";import"./chunk-GHBNRMSJ.js";import"./chunk-XLZYRTNO.js";import"./chunk-EWFECZ2U.js";import"./chunk-VWNFAW2M.js";import{a as g,b as _}from"./chunk-XBVUVFJK.js";import"./chunk-EN2QSKFF.js";import"./chunk-OY2AHLSF.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.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,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.10");process.exit(0)}
2
- import{g as a,h as b,i as c,j as d,k as e}from"./chunk-2T7RRL6G.js";import"./chunk-OY2AHLSF.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.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,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.10");process.exit(0)}
2
- import{a,b,c}from"./chunk-XEB3NLJR.js";import"./chunk-EWFECZ2U.js";import"./chunk-VWNFAW2M.js";import"./chunk-OY2AHLSF.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.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,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.10");process.exit(0)}
2
- import{b as $}from"./chunk-ZXPY654C.js";import"./chunk-M2QV7PT7.js";import{a as k,b as W,c as b,g as C}from"./chunk-4G63WT4F.js";import"./chunk-FZOWULMH.js";import{c as v}from"./chunk-ACWFKES2.js";import"./chunk-NSHU347M.js";import"./chunk-GHBNRMSJ.js";import"./chunk-OY2AHLSF.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.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(`
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-MSBOLYUY.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-VTDFBW7T.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-MSBOLYUY.js"),{writeOutput:c,toJSON:l}=await import("./ci-output-FXZ7ZZW3.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-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(`
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.11");process.exit(0)}
2
+ import{a,b,d as c,e as d}from"./chunk-T5KHJ3J7.js";import"./chunk-BTVWA35P.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-7R5HC56U.js";import"./chunk-IW6WDGHM.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{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.10");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-ODJNUMV3.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-ESUO3GTJ.js";import"./chunk-C522H7XR.js";import"./chunk-3Y7SPD72.js";import"./chunk-ACWFKES2.js";import"./chunk-AI4VYSFS.js";import"./chunk-VJQYDYAJ.js";import"./chunk-OBAREPDC.js";import"./chunk-6GP6W46M.js";import"./chunk-PGYMKGOE.js";import"./chunk-GZLZCZ42.js";import"./chunk-GJMLK5UT.js";import"./chunk-6PX4OXQO.js";import"./chunk-AH3ZD3NJ.js";import"./chunk-HOZUDE4C.js";import"./chunk-ATHWDAXB.js";import"./chunk-N6PIIK6G.js";import"./chunk-WSF24I3D.js";import"./chunk-GHBNRMSJ.js";import"./chunk-XLZYRTNO.js";import"./chunk-EWFECZ2U.js";import"./chunk-VWNFAW2M.js";import"./chunk-XBVUVFJK.js";import"./chunk-EN2QSKFF.js";import"./chunk-OY2AHLSF.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.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};
@@ -307,7 +307,10 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
307
307
  return { id: op.id, success: false, result: undefined };
308
308
  }
309
309
  }));
310
- progress.stop();
310
+ // #1168: a completed agent is not a passed check, so the completion
311
+ // line only says "successfully" when the verdict passes.
312
+ const verdictPassed = reportFleetVerdict(operation, results, () => { });
313
+ progress.stop({ verdictFailed: !verdictPassed });
311
314
  const successful = results.filter(r => r.success).length;
312
315
  const failed = results.filter(r => !r.success).length;
313
316
  console.log(chalk.blue('\n Operation Summary:'));
@@ -17,6 +17,7 @@
17
17
  */
18
18
  import * as fs from 'fs';
19
19
  import * as path from 'path';
20
+ import { createSafeRecord, getOwn, setOwn } from '../../../shared/utils/safe-record.js';
20
21
  export class ToolLoopGuardrail {
21
22
  statePath;
22
23
  warnThreshold;
@@ -46,7 +47,7 @@ export class ToolLoopGuardrail {
46
47
  if (!sig) {
47
48
  return { verdict: 'allow', consecutiveFailures: 0, halfOpen: false };
48
49
  }
49
- const entry = this.readState()[sig];
50
+ const entry = getOwn(this.readState(), sig);
50
51
  if (!entry || entry.consecutiveFailures < this.warnThreshold) {
51
52
  return { verdict: 'allow', consecutiveFailures: entry?.consecutiveFailures ?? 0, halfOpen: false };
52
53
  }
@@ -89,16 +90,16 @@ export class ToolLoopGuardrail {
89
90
  try {
90
91
  const state = this.readState();
91
92
  if (success) {
92
- if (state[sig]) {
93
+ if (getOwn(state, sig)) {
93
94
  delete state[sig];
94
95
  this.writeState(state, now);
95
96
  }
96
97
  return;
97
98
  }
98
- const entry = state[sig] ?? { consecutiveFailures: 0, lastFailureAt: now };
99
+ const entry = getOwn(state, sig) ?? { consecutiveFailures: 0, lastFailureAt: now };
99
100
  entry.consecutiveFailures += 1;
100
101
  entry.lastFailureAt = now;
101
- state[sig] = entry;
102
+ setOwn(state, sig, entry);
102
103
  this.writeState(state, now);
103
104
  }
104
105
  catch {
@@ -113,10 +114,14 @@ export class ToolLoopGuardrail {
113
114
  try {
114
115
  const raw = fs.readFileSync(this.statePath, 'utf8');
115
116
  const parsed = JSON.parse(raw);
116
- return typeof parsed === 'object' && parsed !== null ? parsed : {};
117
+ // #1157: keys are command signatures (`__proto__` is a valid command
118
+ // string), so the state never inherits from Object.prototype.
119
+ return typeof parsed === 'object' && parsed !== null
120
+ ? Object.assign(createSafeRecord(), parsed)
121
+ : createSafeRecord();
117
122
  }
118
123
  catch {
119
- return {}; // missing or corrupt sidecar → clean slate
124
+ return createSafeRecord(); // missing or corrupt sidecar → clean slate
120
125
  }
121
126
  }
122
127
  writeState(state, now) {
@@ -11,6 +11,7 @@ import { writeTestRunEvidence } from '../../domains/quality-assessment/quality-e
11
11
  import { validateBehaviorExamples } from '../../domains/test-generation/services/behavior-example-validation.js';
12
12
  import { findProjectRoot } from '../../kernel/project-root.js';
13
13
  import { writeGeneratedTestFile } from '../utils/generated-test-writer.js';
14
+ import { DEFAULT_TEST_RETRY_COUNT } from '../../domains/test-execution/services/retry-outcome.js';
14
15
  export function createTestCommand(context, cleanupAndExit, ensureInitialized) {
15
16
  const testCmd = new Command('test')
16
17
  .description('Test generation, execution, scheduling, and load testing')
@@ -179,7 +180,8 @@ export function createTestCommand(context, cleanupAndExit, ensureInitialized) {
179
180
  testFiles,
180
181
  framework: options.framework,
181
182
  parallel: true,
182
- retryCount: 2,
183
+ // #1170: the same default as MCP test_execute_parallel.
184
+ retryCount: DEFAULT_TEST_RETRY_COUNT,
183
185
  });
184
186
  if (result.success && result.value) {
185
187
  const run = result.value;
@@ -211,7 +213,8 @@ export function createTestCommand(context, cleanupAndExit, ensureInitialized) {
211
213
  console.log(chalk.green(`Test run complete`));
212
214
  console.log(`\n Results:`);
213
215
  console.log(` Total: ${chalk.white(total)}`);
214
- console.log(` Passed: ${chalk.green(run.passed)}`);
216
+ console.log(` Passed: ${chalk.green(run.passed)}` +
217
+ (run.flaky ? ` (${chalk.yellow(run.flaky)} flaky: passed on a retry)` : ''));
215
218
  console.log(` Failed: ${chalk.red(run.failed)}`);
216
219
  console.log(` Skipped: ${chalk.yellow(run.skipped)}`);
217
220
  console.log(` Duration: ${chalk.cyan(run.duration + 'ms')}`);
@@ -134,6 +134,18 @@ interface InitOptions {
134
134
  statusline?: boolean;
135
135
  modular?: boolean;
136
136
  }
137
+ interface DisplayedInitStep {
138
+ step: string;
139
+ status: string;
140
+ message?: string;
141
+ durationMs: number;
142
+ }
143
+ /**
144
+ * Render init step results. A failed step's message is printed under it —
145
+ * previously only the step name was shown and the CLI then said "Check errors
146
+ * above" with no error anywhere on screen (#1173).
147
+ */
148
+ export declare function formatInitStepLines(steps: readonly DisplayedInitStep[]): string[];
137
149
  export declare function createInitHandler(cleanupAndExit: (code: number) => Promise<never>): InitHandler;
138
150
  export {};
139
151
  //# sourceMappingURL=init-handler.d.ts.map
@@ -245,12 +245,7 @@ export class InitHandler {
245
245
  return;
246
246
  }
247
247
  // Display step results
248
- for (const step of result.steps) {
249
- const statusIcon = step.status === 'success' ? '*' : step.status === 'error' ? 'x' : '!';
250
- const statusColor = step.status === 'success' ? chalk.green : step.status === 'error' ? chalk.red : chalk.yellow;
251
- console.log(statusColor(` ${statusIcon} ${step.step} (${step.durationMs}ms)`));
252
- }
253
- console.log('');
248
+ printInitSteps(result.steps);
254
249
  // Claude Flow integration (after base init)
255
250
  let cfResult;
256
251
  if (!options.skipClaudeFlow && (options.withClaudeFlow || result.success)) {
@@ -340,12 +335,7 @@ export class InitHandler {
340
335
  console.log(chalk.white(' Analyzing project...\n'));
341
336
  const result = await orchestrator.initialize();
342
337
  // Display step results
343
- for (const step of result.steps) {
344
- const statusIcon = step.status === 'success' ? '*' : step.status === 'error' ? 'x' : '!';
345
- const statusColor = step.status === 'success' ? chalk.green : step.status === 'error' ? chalk.red : chalk.yellow;
346
- console.log(statusColor(` ${statusIcon} ${step.step} (${step.durationMs}ms)`));
347
- }
348
- console.log('');
338
+ printInitSteps(result.steps);
349
339
  if (result.success) {
350
340
  console.log(chalk.green(' AQE v3 initialized successfully!\n'));
351
341
  // Show summary
@@ -548,6 +538,31 @@ function isPeerInstalled(pkg) {
548
538
  return code === 'ERR_PACKAGE_PATH_NOT_EXPORTED';
549
539
  }
550
540
  }
541
+ /**
542
+ * Render init step results. A failed step's message is printed under it —
543
+ * previously only the step name was shown and the CLI then said "Check errors
544
+ * above" with no error anywhere on screen (#1173).
545
+ */
546
+ export function formatInitStepLines(steps) {
547
+ const lines = [];
548
+ for (const step of steps) {
549
+ const statusIcon = step.status === 'success' ? '*' : step.status === 'error' ? 'x' : '!';
550
+ const statusColor = step.status === 'success' ? chalk.green : step.status === 'error' ? chalk.red : chalk.yellow;
551
+ lines.push(statusColor(` ${statusIcon} ${step.step} (${step.durationMs}ms)`));
552
+ if (step.status === 'error' && step.message) {
553
+ for (const line of step.message.split('\n')) {
554
+ lines.push(chalk.red(` ${line}`));
555
+ }
556
+ }
557
+ }
558
+ return lines;
559
+ }
560
+ function printInitSteps(steps) {
561
+ for (const line of formatInitStepLines(steps)) {
562
+ console.log(line);
563
+ }
564
+ console.log('');
565
+ }
551
566
  function printOptionalPeerHints() {
552
567
  const missing = OPTIONAL_PEERS.filter(({ pkg }) => !isPeerInstalled(pkg));
553
568
  if (missing.length === 0)
@@ -76,6 +76,8 @@ export interface TestRunSummary {
76
76
  unmatched?: boolean;
77
77
  }>;
78
78
  };
79
+ /** #1170: tests that failed and then passed on a retry; counted in `passed`. */
80
+ flaky?: number;
79
81
  }
80
82
  export interface CoverageResult {
81
83
  /** `null` = the report never collected that metric (#995); not 0%. */
@@ -333,6 +333,8 @@ export function testRunToMarkdown(summary) {
333
333
  md += `|--------|-------|\n`;
334
334
  md += `| Total | ${total} |\n`;
335
335
  md += `| Passed | ${summary.passed} |\n`;
336
+ if (summary.flaky)
337
+ md += `| Flaky (passed on a retry) | ${summary.flaky} |\n`;
336
338
  md += `| Failed | ${summary.failed} |\n`;
337
339
  md += `| Skipped | ${summary.skipped} |\n`;
338
340
  md += `\n**Result:** ${summary.failed === 0 ? '\u2705 All tests passed' : '\u274C Some tests failed'}\n`;
@@ -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
@@ -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';
@@ -558,8 +559,9 @@ export function buildEstimatedCoverage(targetPath) {
558
559
  return null;
559
560
  const files = sourceFiles.map(filePath => {
560
561
  let content = '';
562
+ // #1161: a source file linked out of the project is treated as unreadable.
561
563
  try {
562
- content = fs.readFileSync(filePath, 'utf-8');
564
+ content = readConfinedTextSync(filePath, { outsideRoot: 'allow' });
563
565
  }
564
566
  catch { /* unreadable — treat as empty */ }
565
567
  const ext = path.extname(filePath);
@@ -25,6 +25,8 @@
25
25
  * fate. Hosts should shut down via a handled signal.
26
26
  */
27
27
  import type { CoverageData } from '../../domains/coverage-analysis/interfaces';
28
+ import { summarizeStderr } from './coverage-stderr';
29
+ export { summarizeStderr };
28
30
  export type JsRunnerName = 'vitest' | 'jest' | 'nyc';
29
31
  export interface JsCoverageInvocation {
30
32
  runner: JsRunnerName;
@@ -64,7 +66,7 @@ export interface JsCoverageRun {
64
66
  numFailedTests?: number | null;
65
67
  numPendingTests?: number | null;
66
68
  numFailedTestSuites?: number | null;
67
- /** The runner's first error line plus the last ~2 KB of its stderr, for diagnosing a crash. */
69
+ /** The runner's first error line plus the last ~2 KB of its stderr, redacted (#1150), for diagnosing a crash. */
68
70
  stderrTail: string;
69
71
  }
70
72
  /**
@@ -74,13 +76,6 @@ export interface JsCoverageRun {
74
76
  * every test passing). Without counts (nyc), the exit code decides.
75
77
  */
76
78
  export declare function testRunStatus(run: JsCoverageRun): 'passed' | 'failed';
77
- /**
78
- * Summarise a runner's stderr for a caller: the FIRST error-looking line (or
79
- * the first ~512 bytes) plus the last ~2 KB (#995 review NB-C). A tail alone
80
- * loses the cause when a long stack follows it — a vitest config syntax error
81
- * prints `[PARSE_ERROR] …` first and then kilobytes of frames.
82
- */
83
- export declare function summarizeStderr(head: string, tail: string, totalBytes: number): string;
84
79
  /**
85
80
  * Find an installed package's bin script, walking up `node_modules` from the
86
81
  * project root (hoisted monorepo installs live above the package).
@@ -30,6 +30,8 @@ import * as os from 'os';
30
30
  import * as path from 'path';
31
31
  import { safeJsonParse } from '../../shared/safe-json.js';
32
32
  import { loadCoverageReportFile } from './coverage-target.js';
33
+ import { STDERR_WINDOW_BYTES, summarizeStderr } from './coverage-stderr.js';
34
+ export { summarizeStderr };
33
35
  /**
34
36
  * Outcome of a coverage run's tests (#1027 NB2): 'failed' when the runner's
35
37
  * own result reports a failed test or test suite, 'passed' when it reports
@@ -43,25 +45,6 @@ export function testRunStatus(run) {
43
45
  return run.exitedCleanly ? 'passed' : 'failed';
44
46
  }
45
47
  const RESULTS_FILE = 'test-results.json';
46
- const STDERR_TAIL_BYTES = 2048;
47
- const STDERR_HEAD_BYTES = 4096;
48
- const STDERR_PREFIX_BYTES = 512;
49
- const ERROR_LINE_RE = /^.*(?:error|\[[A-Z][A-Z_]{2,}\]|ERR_[A-Z_]+).*$/im;
50
- /**
51
- * Summarise a runner's stderr for a caller: the FIRST error-looking line (or
52
- * the first ~512 bytes) plus the last ~2 KB (#995 review NB-C). A tail alone
53
- * loses the cause when a long stack follows it — a vitest config syntax error
54
- * prints `[PARSE_ERROR] …` first and then kilobytes of frames.
55
- */
56
- export function summarizeStderr(head, tail, totalBytes) {
57
- if (totalBytes <= STDERR_TAIL_BYTES)
58
- return tail.trim();
59
- const errorLine = ERROR_LINE_RE.exec(head)?.[0]?.trim();
60
- const prefix = (errorLine ?? head.slice(0, STDERR_PREFIX_BYTES)).trim();
61
- if (prefix && tail.includes(prefix))
62
- return tail.trim();
63
- return `${prefix}\n…\n${tail.trim()}`;
64
- }
65
48
  // ============================================================================
66
49
  // Locating the runner
67
50
  // ============================================================================
@@ -348,9 +331,10 @@ export async function runProcessTree(command, args, options) {
348
331
  child.stderr?.on('data', (chunk) => {
349
332
  const text = chunk.toString('utf-8');
350
333
  stderrBytes += chunk.length;
351
- if (stderrHead.length < STDERR_HEAD_BYTES)
352
- stderrHead = (stderrHead + text).slice(0, STDERR_HEAD_BYTES);
353
- stderrTail = (stderrTail + text).slice(-STDERR_TAIL_BYTES);
334
+ // #1150: raw windows only; summarizeStderr redacts them before slicing.
335
+ if (stderrHead.length < STDERR_WINDOW_BYTES)
336
+ stderrHead = (stderrHead + text).slice(0, STDERR_WINDOW_BYTES);
337
+ stderrTail = (stderrTail + text).slice(-STDERR_WINDOW_BYTES);
354
338
  });
355
339
  // A grandchild holding the pipe open must not keep the host alive.
356
340
  child.stderr?.on('error', () => { });