agentic-qe 3.15.10 → 3.15.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (536) hide show
  1. package/.claude/hooks/aqe-hook.cjs +38 -2
  2. package/.claude/skills/skills-manifest.json +1 -1
  3. package/CHANGELOG.md +263 -0
  4. package/README.md +8 -0
  5. package/assets/skills/skills-manifest.json +1 -1
  6. package/dist/adapters/a2a/agent-cards/generator.js +6 -3
  7. package/dist/adapters/a2a/tasks/task-router.js +3 -1
  8. package/dist/adapters/trajectory-adapter.js +1 -1
  9. package/dist/agents/claim-verifier/verifiers/output-verifier.d.ts +3 -1
  10. package/dist/agents/claim-verifier/verifiers/output-verifier.js +31 -2
  11. package/dist/agents/overlay-loader.js +26 -21
  12. package/dist/cli/bundle.js +6 -6
  13. package/dist/cli/chunks/adapter-HL7MOCQN.js +2 -0
  14. package/dist/cli/chunks/{agent-booster-wasm-H7ANGXW4.js → agent-booster-wasm-5VZCKTIJ.js} +2 -2
  15. package/dist/cli/chunks/{agent-handler-SVXSHEET.js → agent-handler-K3C6CQCD.js} +2 -2
  16. package/dist/cli/chunks/{agent-memory-branch-WKQH36XL.js → agent-memory-branch-NVFQ25WS.js} +2 -2
  17. package/dist/cli/chunks/aqe-learning-engine-OZ2DXB4G.js +2 -0
  18. package/dist/cli/chunks/{arena-EKOOFVST.js → arena-QGWIJADQ.js} +2 -2
  19. package/dist/cli/chunks/{arena-OPS36NFZ.js → arena-TSZVDSXS.js} +4 -4
  20. package/dist/cli/chunks/{audit-AO5NDZRI.js → audit-KIEE2SHJ.js} +3 -3
  21. package/dist/cli/chunks/base-WIM7G3HC.js +2 -0
  22. package/dist/cli/chunks/{better-sqlite3-TFLVEMMY.js → better-sqlite3-BNB32NW3.js} +2 -2
  23. package/dist/cli/chunks/{brain-handler-ADBBJPYW.js → brain-handler-MPC5SPYI.js} +3 -3
  24. package/dist/cli/chunks/{branch-enumerator-HGHUYYL5.js → branch-enumerator-LZ7UXKAY.js} +2 -2
  25. package/dist/cli/chunks/{browser-5LU6P4SZ.js → browser-VDHAW4RK.js} +2 -2
  26. package/dist/cli/chunks/browser-workflow-QRKCFVR3.js +2 -0
  27. package/dist/cli/chunks/{chunk-5LPYV3TK.js → chunk-23PQF7NN.js} +1 -1
  28. package/dist/cli/chunks/{chunk-2ZMF4NCF.js → chunk-26672ISV.js} +2 -2
  29. package/dist/cli/chunks/{chunk-U53ZB4IX.js → chunk-2ASQRBK2.js} +2 -2
  30. package/dist/cli/chunks/{chunk-7PJIR4ST.js → chunk-2E2QO44T.js} +2 -2
  31. package/dist/cli/chunks/{chunk-2T7RRL6G.js → chunk-2IVE5AR3.js} +1 -1
  32. package/dist/cli/chunks/{chunk-B6LTH6YV.js → chunk-2JYUA27M.js} +1 -1
  33. package/dist/cli/chunks/{chunk-PFG6VQ5Z.js → chunk-2PPSS4JD.js} +2 -2
  34. package/dist/cli/chunks/{chunk-NZYLNXT6.js → chunk-32UTHIY5.js} +5 -5
  35. package/dist/cli/chunks/{chunk-5E6GHSTY.js → chunk-33I2ZP6E.js} +2 -2
  36. package/dist/cli/chunks/{chunk-XLZYRTNO.js → chunk-35MIUSXQ.js} +2 -2
  37. package/dist/cli/chunks/{chunk-7LFZ4CHM.js → chunk-35NW676P.js} +2 -2
  38. package/dist/cli/chunks/{chunk-4G63WT4F.js → chunk-3EWQN37E.js} +2 -2
  39. package/dist/cli/chunks/{chunk-GZLZCZ42.js → chunk-3IU4LDZR.js} +2 -2
  40. package/dist/cli/chunks/{chunk-CESIR27V.js → chunk-47RMGDG4.js} +2 -2
  41. package/dist/cli/chunks/chunk-4A76VPU4.js +3 -0
  42. package/dist/cli/chunks/{chunk-DT7SIJOA.js → chunk-4CB3QPZM.js} +2 -2
  43. package/dist/cli/chunks/{chunk-ERQKYIP7.js → chunk-4HWUECVD.js} +5 -5
  44. package/dist/cli/chunks/{chunk-MA7JIQ6U.js → chunk-4KUOYDY2.js} +5 -5
  45. package/dist/cli/chunks/{chunk-VWNFAW2M.js → chunk-4LWMAAWK.js} +2 -2
  46. package/dist/cli/chunks/{chunk-IKISCIGH.js → chunk-4PU5GTZW.js} +2 -2
  47. package/dist/cli/chunks/{chunk-ZXPY654C.js → chunk-4SA7M34P.js} +1 -1
  48. package/dist/cli/chunks/{chunk-NGKNYIQZ.js → chunk-4Y6OEBJZ.js} +1 -1
  49. package/dist/cli/chunks/{chunk-KOBVYY6H.js → chunk-5A66EGEW.js} +2 -2
  50. package/dist/cli/chunks/{chunk-Z2O2YJAF.js → chunk-5ADXFUMO.js} +2 -2
  51. package/dist/cli/chunks/{chunk-YKMU4LBV.js → chunk-5S4UIDFK.js} +1 -1
  52. package/dist/cli/chunks/{chunk-Z7IYW5U7.js → chunk-5TAEW5OV.js} +1 -1
  53. package/dist/cli/chunks/chunk-5Z23ZMXZ.js +742 -0
  54. package/dist/cli/chunks/{chunk-6TB6YOCZ.js → chunk-65TH6RPD.js} +1 -1
  55. package/dist/cli/chunks/{chunk-3Y7SPD72.js → chunk-66PXR3NI.js} +2 -2
  56. package/dist/cli/chunks/{chunk-3P34JFQH.js → chunk-6E6HB4N4.js} +14 -14
  57. package/dist/cli/chunks/{chunk-6PX4OXQO.js → chunk-6QRI3JVE.js} +2 -2
  58. package/dist/cli/chunks/{chunk-WBM6N6IM.js → chunk-7DNR4KKR.js} +1 -1
  59. package/dist/cli/chunks/{chunk-6XCMKIZN.js → chunk-7JFDLL2F.js} +1 -1
  60. package/dist/cli/chunks/chunk-7OEFBWAG.js +5 -0
  61. package/dist/cli/chunks/{chunk-Y76IAYQD.js → chunk-7QEUHNKO.js} +1 -1
  62. package/dist/cli/chunks/{chunk-WQ4PYWSW.js → chunk-7TA5MUPW.js} +1 -1
  63. package/dist/cli/chunks/{chunk-2XGVTYVX.js → chunk-A2JCRXTK.js} +2 -2
  64. package/dist/cli/chunks/{chunk-ESUO3GTJ.js → chunk-A5Y7DAVQ.js} +2 -2
  65. package/dist/cli/chunks/{chunk-ATHWDAXB.js → chunk-ADUAJIAU.js} +2 -2
  66. package/dist/cli/chunks/{chunk-IU2IV4NE.js → chunk-AJEXPFAB.js} +1 -1
  67. package/dist/cli/chunks/{chunk-YK7JN5N7.js → chunk-BC4T6SCV.js} +4 -4
  68. package/dist/cli/chunks/{chunk-KSIWGGJI.js → chunk-BMG2JLSQ.js} +2 -2
  69. package/dist/cli/chunks/chunk-BOSMELJX.js +180 -0
  70. package/dist/cli/chunks/{chunk-7OZVZIBE.js → chunk-BYRCB5JT.js} +2 -2
  71. package/dist/cli/chunks/{chunk-FAUCT5KR.js → chunk-C3YOVASQ.js} +6 -5
  72. package/dist/cli/chunks/{chunk-DMFTELBS.js → chunk-C74M4WUI.js} +2 -2
  73. package/dist/cli/chunks/{chunk-2SXBBUM6.js → chunk-CA5UNWQF.js} +2 -2
  74. package/dist/cli/chunks/{chunk-UCJMVXO4.js → chunk-CDA5Z74H.js} +2 -2
  75. package/dist/cli/chunks/{chunk-NVYIZCSR.js → chunk-CPIBIR3X.js} +2 -2
  76. package/dist/cli/chunks/{chunk-YK3BVZY6.js → chunk-CU36D7TN.js} +2 -2
  77. package/dist/cli/chunks/{chunk-H32EPIR2.js → chunk-DAUEK66C.js} +1 -1
  78. package/dist/cli/chunks/{chunk-6KIL6CMD.js → chunk-DRCBRUGN.js} +2 -2
  79. package/dist/cli/chunks/{chunk-EWFECZ2U.js → chunk-DZGPUGUG.js} +2 -2
  80. package/dist/cli/chunks/{chunk-YDAQK5UF.js → chunk-EF6OERRR.js} +1 -1
  81. package/dist/cli/chunks/{chunk-KG336OV3.js → chunk-EN7GRVEQ.js} +2 -2
  82. package/dist/cli/chunks/{chunk-DBMNJSBV.js → chunk-ENGL7FIJ.js} +1 -1
  83. package/dist/cli/chunks/{chunk-FKL3R5JQ.js → chunk-FAGKBOX2.js} +2 -2
  84. package/dist/cli/chunks/{chunk-NAXGWDVM.js → chunk-FNUFTWEO.js} +3 -3
  85. package/dist/cli/chunks/{chunk-RWWOHCMG.js → chunk-FZJCBSN4.js} +2 -2
  86. package/dist/cli/chunks/{chunk-ABFFWZPC.js → chunk-G24SWTAX.js} +151 -149
  87. package/dist/cli/chunks/{chunk-ODJNUMV3.js → chunk-G3AABG4Q.js} +2 -2
  88. package/dist/cli/chunks/{chunk-FBXTQNRH.js → chunk-GJKZ7UQO.js} +2 -2
  89. package/dist/cli/chunks/{chunk-DEF34AFL.js → chunk-GKFV6CUD.js} +2 -2
  90. package/dist/cli/chunks/{chunk-SY2IB442.js → chunk-HLGFHHWV.js} +2 -2
  91. package/dist/cli/chunks/{chunk-CZGOSJQ4.js → chunk-HM3LSFTY.js} +2 -2
  92. package/dist/cli/chunks/chunk-HSA5IGGW.js +2 -0
  93. package/dist/cli/chunks/{chunk-GJHWY3ZX.js → chunk-HZBXJFGN.js} +2 -2
  94. package/dist/cli/chunks/chunk-IA55PFLG.js +7 -0
  95. package/dist/cli/chunks/{chunk-MNN5J4GU.js → chunk-ICKUINKD.js} +2 -2
  96. package/dist/cli/chunks/{chunk-XEB3NLJR.js → chunk-IETBWYHW.js} +2 -2
  97. package/dist/cli/chunks/{chunk-A55QKKT2.js → chunk-IL7GQNNE.js} +2 -2
  98. package/dist/cli/chunks/{chunk-LRZY4KS2.js → chunk-INZARYUD.js} +2 -2
  99. package/dist/cli/chunks/{chunk-OBAREPDC.js → chunk-IPA7K556.js} +2 -2
  100. package/dist/cli/chunks/{chunk-CFBEBXLO.js → chunk-IVTQF55W.js} +3 -3
  101. package/dist/cli/chunks/{chunk-FFTPAWM6.js → chunk-J7Y7ZBIT.js} +8 -8
  102. package/dist/cli/chunks/{chunk-I33O4BRQ.js → chunk-JGIJPDGD.js} +2 -2
  103. package/dist/cli/chunks/chunk-JNXK47OL.js +2 -0
  104. package/dist/cli/chunks/{chunk-PCEW6Q2C.js → chunk-JOWUS2X5.js} +1 -1
  105. package/dist/cli/chunks/{chunk-KI73QCR5.js → chunk-JR6CUKAI.js} +2 -2
  106. package/dist/cli/chunks/chunk-JRYWLOBD.js +21 -0
  107. package/dist/cli/chunks/{chunk-SO45NA4D.js → chunk-JW5PDJ5O.js} +11 -11
  108. package/dist/cli/chunks/{chunk-APSRPR4W.js → chunk-K3A3NWT3.js} +2 -2
  109. package/dist/cli/chunks/{chunk-FESZBPUB.js → chunk-KA5SHLMW.js} +2 -2
  110. package/dist/cli/chunks/{chunk-OPFGRS5S.js → chunk-KGA7VAI4.js} +2 -2
  111. package/dist/cli/chunks/chunk-KJDI5CHX.js +2 -0
  112. package/dist/cli/chunks/{chunk-V2RSNVMW.js → chunk-L3PV7VXK.js} +1 -1
  113. package/dist/cli/chunks/{chunk-C522H7XR.js → chunk-L7NGKANW.js} +32 -32
  114. package/dist/cli/chunks/{chunk-DNRWGATA.js → chunk-LFBA735S.js} +7 -7
  115. package/dist/cli/chunks/{chunk-V2M2XCR5.js → chunk-MAJXZYGK.js} +1 -1
  116. package/dist/cli/chunks/{chunk-FZOWULMH.js → chunk-MCPEC6OO.js} +1 -1
  117. package/dist/cli/chunks/{chunk-LMS3Y7JD.js → chunk-MCPXNUDK.js} +2 -2
  118. package/dist/cli/chunks/{chunk-GWZZ7DAO.js → chunk-MMEALJ4D.js} +2 -2
  119. package/dist/cli/chunks/{chunk-G3CZCUPM.js → chunk-MYF5CNGV.js} +2 -2
  120. package/dist/cli/chunks/{chunk-NNFZUTDH.js → chunk-MYUMJ2ZI.js} +1 -1
  121. package/dist/cli/chunks/{chunk-WDQ7IEZY.js → chunk-N7O3PF6Y.js} +2 -2
  122. package/dist/cli/chunks/{chunk-YAKGBHO4.js → chunk-NA3F6FEO.js} +2 -2
  123. package/dist/cli/chunks/chunk-NNBQZR73.js +6 -0
  124. package/dist/cli/chunks/{chunk-6C3II5OM.js → chunk-NV74SICL.js} +2 -2
  125. package/dist/cli/chunks/chunk-NVRYELCY.js +13 -0
  126. package/dist/cli/chunks/{chunk-UHTTW3IT.js → chunk-NX4BCSOZ.js} +2 -2
  127. package/dist/cli/chunks/{chunk-EN2QSKFF.js → chunk-O3IM4WRZ.js} +2 -2
  128. package/dist/cli/chunks/{chunk-S75EYIJG.js → chunk-O4QJMANM.js} +1 -1
  129. package/dist/cli/chunks/{chunk-NPPHWFA2.js → chunk-OHVYINGM.js} +18 -18
  130. package/dist/cli/chunks/{chunk-DE4YJQJF.js → chunk-P5E26N2X.js} +2 -2
  131. package/dist/cli/chunks/chunk-P7UFJ6DO.js +14 -0
  132. package/dist/cli/chunks/{chunk-XFVTGAAJ.js → chunk-PGSJBXTD.js} +2 -2
  133. package/dist/cli/chunks/{chunk-CZ2IF6MC.js → chunk-PT2NXS43.js} +1 -1
  134. package/dist/cli/chunks/{chunk-RK73HB2F.js → chunk-PTBOLBM4.js} +2 -2
  135. package/dist/cli/chunks/{chunk-EAU5KDFO.js → chunk-PX5OPXY6.js} +1 -1
  136. package/dist/cli/chunks/chunk-QCPVUNN3.js +2 -0
  137. package/dist/cli/chunks/{chunk-VKRTTFB6.js → chunk-QSGEBCDB.js} +2 -2
  138. package/dist/cli/chunks/{chunk-SKQUUE4F.js → chunk-QUJJYTJH.js} +2 -2
  139. package/dist/cli/chunks/chunk-QWG3SILX.js +59 -0
  140. package/dist/cli/chunks/{chunk-D6DA2KFD.js → chunk-RCOLPF3B.js} +2 -2
  141. package/dist/cli/chunks/{chunk-SU5H66SD.js → chunk-RYHG3I7J.js} +2 -2
  142. package/dist/cli/chunks/chunk-SBHM5X2S.js +4 -0
  143. package/dist/cli/chunks/{chunk-62OAY5KJ.js → chunk-SDRJJUPO.js} +1 -1
  144. package/dist/cli/chunks/{chunk-FB6TI3BH.js → chunk-SG2TX72G.js} +2 -2
  145. package/dist/cli/chunks/{chunk-H2PYU7MN.js → chunk-SITL5YZV.js} +4 -4
  146. package/dist/cli/chunks/{chunk-AI4VYSFS.js → chunk-SPC4RBLF.js} +2 -2
  147. package/dist/cli/chunks/{chunk-BQUAE3CP.js → chunk-SQVZ3TRU.js} +2 -2
  148. package/dist/cli/chunks/{chunk-TBLI254A.js → chunk-SUX5XB2Z.js} +2 -2
  149. package/dist/cli/chunks/{chunk-VFSYMOAL.js → chunk-T4EN5VVK.js} +2 -2
  150. package/dist/cli/chunks/{chunk-KNQ2ERFX.js → chunk-TGMXUZZC.js} +2 -2
  151. package/dist/cli/chunks/{chunk-7TB6FK4B.js → chunk-TLRHAMX5.js} +1 -1
  152. package/dist/cli/chunks/{chunk-V6JBOIMX.js → chunk-TOWOJGEI.js} +1 -1
  153. package/dist/cli/chunks/{chunk-JHIY4VCC.js → chunk-TSOQ2QLT.js} +3 -3
  154. package/dist/cli/chunks/{chunk-YYTGXD3R.js → chunk-TVA5GRIU.js} +2 -2
  155. package/dist/cli/chunks/{chunk-6MVVSSID.js → chunk-TXEUVUMO.js} +1 -1
  156. package/dist/cli/chunks/{chunk-7ZCDZHDB.js → chunk-U6IXYQO4.js} +2 -2
  157. package/dist/cli/chunks/{chunk-NW5JUCCG.js → chunk-U7ZHDGXG.js} +1 -1
  158. package/dist/cli/chunks/{chunk-UARKIZAS.js → chunk-UCSK2RMI.js} +2 -2
  159. package/dist/cli/chunks/{chunk-RPHY2DU6.js → chunk-UIKQPO4Y.js} +2 -2
  160. package/dist/cli/chunks/chunk-UJNGGFGX.js +2 -0
  161. package/dist/cli/chunks/{chunk-EDLFX4ZB.js → chunk-ULCW6IVQ.js} +2 -2
  162. package/dist/cli/chunks/{chunk-M2QV7PT7.js → chunk-UREDS662.js} +2 -2
  163. package/dist/cli/chunks/{chunk-MG27QY4D.js → chunk-URSTP3WI.js} +2 -2
  164. package/dist/cli/chunks/{chunk-2ZI5FKSF.js → chunk-UUZZXHUF.js} +2 -2
  165. package/dist/cli/chunks/{chunk-IPJ7Q3AJ.js → chunk-UZED4YZ5.js} +1 -1
  166. package/dist/cli/chunks/{chunk-VFKF2XO7.js → chunk-VF7FTD64.js} +1 -1
  167. package/dist/cli/chunks/{chunk-YCGP5VFP.js → chunk-VUR5THML.js} +2 -2
  168. package/dist/cli/chunks/{chunk-WDVRE6GN.js → chunk-VXVTFKRA.js} +2 -2
  169. package/dist/cli/chunks/chunk-VZBC6DP7.js +2 -0
  170. package/dist/cli/chunks/{chunk-GHBNRMSJ.js → chunk-W4II6SIH.js} +2 -2
  171. package/dist/cli/chunks/{chunk-TNMBRDCA.js → chunk-W5HQIYQU.js} +3 -3
  172. package/dist/cli/chunks/{chunk-H74Q7TJN.js → chunk-W7H55PY4.js} +1 -1
  173. package/dist/cli/chunks/{chunk-OY2AHLSF.js → chunk-WDEXOLK2.js} +1 -1
  174. package/dist/cli/chunks/{chunk-VJQYDYAJ.js → chunk-WGTEZT7G.js} +2 -2
  175. package/dist/cli/chunks/{chunk-GRCIBCJ2.js → chunk-WLRU6ESI.js} +2 -2
  176. package/dist/cli/chunks/{chunk-ACWFKES2.js → chunk-WTAUF6O4.js} +2 -2
  177. package/dist/cli/chunks/chunk-XCNSGSKV.js +3 -0
  178. package/dist/cli/chunks/{chunk-6S3WJGUV.js → chunk-XZOYKB22.js} +2 -2
  179. package/dist/cli/chunks/chunk-YIDAXOUX.js +8 -0
  180. package/dist/cli/chunks/{chunk-LQEURY7C.js → chunk-YLKIXEPP.js} +1 -1
  181. package/dist/cli/chunks/chunk-YNVEDFPQ.js +2 -0
  182. package/dist/cli/chunks/{chunk-PGYMKGOE.js → chunk-YUA6ZKKY.js} +2 -2
  183. package/dist/cli/chunks/{chunk-GJMLK5UT.js → chunk-YVJEUX3I.js} +2 -2
  184. package/dist/cli/chunks/{chunk-AH3ZD3NJ.js → chunk-YWWMNTBF.js} +2 -2
  185. package/dist/cli/chunks/{chunk-37OWRCUN.js → chunk-ZGROHCOW.js} +2 -2
  186. package/dist/cli/chunks/{chunk-OEKP73MC.js → chunk-ZPVGX4DI.js} +2 -2
  187. package/dist/cli/chunks/{chunk-6GP6W46M.js → chunk-ZROAMFX2.js} +2 -2
  188. package/dist/cli/chunks/{chunk-OY3NJNP2.js → chunk-ZYOYR3UR.js} +1 -1
  189. package/dist/cli/chunks/ci-BZNWW3I3.js +81 -0
  190. package/dist/cli/chunks/{ci-config-7ODMNAUM.js → ci-config-LOHNXOKV.js} +2 -2
  191. package/dist/cli/chunks/{ci-output-FXZ7ZZW3.js → ci-output-LCOQBSJL.js} +2 -2
  192. package/dist/cli/chunks/{circuit-breaker-4VOUEPOX.js → circuit-breaker-7LRXTLFE.js} +2 -2
  193. package/dist/cli/chunks/{claude-flow-setup-7D4SGLM4.js → claude-flow-setup-HBU4VWC3.js} +2 -2
  194. package/dist/cli/chunks/client-4PNYDFYS.js +2 -0
  195. package/dist/cli/chunks/{cline-installer-WRRT7BGQ.js → cline-installer-CO6MLH6X.js} +2 -2
  196. package/dist/cli/chunks/{code-ZDJRIL3S.js → code-SIXBS6JM.js} +3 -3
  197. package/dist/cli/chunks/{code-index-extractor-4S4SHM56.js → code-index-extractor-GWJKZ2IQ.js} +2 -2
  198. package/dist/cli/chunks/{codex-installer-YTRHNDWR.js → codex-installer-6NINVWXJ.js} +2 -2
  199. package/dist/cli/chunks/{completions-6N64JUXJ.js → completions-7VIX3GML.js} +2 -2
  200. package/dist/cli/chunks/{complexity-analyzer-I4A26VCJ.js → complexity-analyzer-FBQR6ZP2.js} +2 -2
  201. package/dist/cli/chunks/{continuedev-installer-IIDR66LB.js → continuedev-installer-VA7RIXW5.js} +2 -2
  202. package/dist/cli/chunks/{copilot-installer-SVVFY3S2.js → copilot-installer-4QEBC4MU.js} +2 -2
  203. package/dist/cli/chunks/core-handlers-ODO6LUWQ.js +2 -0
  204. package/dist/cli/chunks/{cost-tracker-VGFS6IBX.js → cost-tracker-GRYKHPWL.js} +2 -2
  205. package/dist/cli/chunks/coverage-USPMNKOU.js +50 -0
  206. package/dist/cli/chunks/cross-domain-router-DT4MHJKK.js +2 -0
  207. package/dist/cli/chunks/{cursor-installer-UPETT57E.js → cursor-installer-ZXIPSZVH.js} +2 -2
  208. package/dist/cli/chunks/{daemon-CQFNZLXU.js → daemon-D7F3RGI5.js} +3 -3
  209. package/dist/cli/chunks/{daemon-7BDJHEIJ.js → daemon-N2VRHPSJ.js} +4 -4
  210. package/dist/cli/chunks/{dag-attention-scheduler-PJVABHON.js → dag-attention-scheduler-NL6BA7BY.js} +2 -2
  211. package/dist/cli/chunks/{detect-56SKAGWX.js → detect-XC2HCIIT.js} +2 -2
  212. package/dist/cli/chunks/{dist-node-UYTYUMLN.js → dist-node-A3Y26MEI.js} +2 -2
  213. package/dist/cli/chunks/{domain-handler-YOYLBYJE.js → domain-handler-WV6SFXRB.js} +2 -2
  214. package/dist/cli/chunks/{domain-plugins-7TARX2XF.js → domain-plugins-KJIF6Z2B.js} +2 -2
  215. package/dist/cli/chunks/{domain-transfer-AKVSBD6E.js → domain-transfer-L3F6AES2.js} +2 -2
  216. package/dist/cli/chunks/dream-QOB3JCOM.js +2 -0
  217. package/dist/cli/chunks/{embed-and-insert-pattern-IS6HSR66.js → embed-and-insert-pattern-PA3Y4KGO.js} +2 -2
  218. package/dist/cli/chunks/{eval-GNB574IM.js → eval-YGEZNUVE.js} +2 -2
  219. package/dist/cli/chunks/{experience-capture-middleware-RCAOCKM7.js → experience-capture-middleware-D4T7NW6B.js} +3 -3
  220. package/dist/cli/chunks/{fast-paths-KTZ5SF54.js → fast-paths-6JYK7RYQ.js} +2 -2
  221. package/dist/cli/chunks/{feature-flags-KFHSR5YF.js → feature-flags-DKXMDVPE.js} +2 -2
  222. package/dist/cli/chunks/{feature-flags-ITX5LQ57.js → feature-flags-RBH2GDSR.js} +2 -2
  223. package/dist/cli/chunks/file-discovery-BN76S2PR.js +2 -0
  224. package/dist/cli/chunks/fleet-43YMXACN.js +46 -0
  225. package/dist/cli/chunks/{gnn-wrapper-RLFW3GSX.js → gnn-wrapper-MV54UC4C.js} +2 -2
  226. package/dist/cli/chunks/{heartbeat-handler-EM2URCYZ.js → heartbeat-handler-7DKMVQQH.js} +4 -4
  227. package/dist/cli/chunks/heartbeat-scheduler-3NNP4WCP.js +2 -0
  228. package/dist/cli/chunks/hnsw-adapter-MZR7Y4WF.js +2 -0
  229. package/dist/cli/chunks/hnsw-index-HE4AX22U.js +2 -0
  230. package/dist/cli/chunks/{hnsw-legacy-bridge-JMHEOIBH.js → hnsw-legacy-bridge-6IWREDQC.js} +2 -2
  231. package/dist/cli/chunks/{hnswlib-node-CBP73QHY.js → hnswlib-node-5BIESSCK.js} +2 -2
  232. package/dist/cli/chunks/{hooks-IP7XE34Z.js → hooks-3EETRM62.js} +30 -30
  233. package/dist/cli/chunks/hybrid-backend-IHUHB3Y2.js +2 -0
  234. package/dist/cli/chunks/{hypergraph-engine-ONAYHU25.js → hypergraph-engine-RSWCB2D3.js} +2 -2
  235. package/dist/cli/chunks/{hypergraph-handler-VINJRAID.js → hypergraph-handler-552LXKL3.js} +3 -3
  236. package/dist/cli/chunks/impact-analyzer-FI6GI6PD.js +2 -0
  237. package/dist/cli/chunks/{init-guard-RYVV5R3Z.js → init-guard-OTDBJ5HD.js} +2 -2
  238. package/dist/cli/chunks/{init-handler-MPRGWMOE.js → init-handler-3FK3TKEA.js} +26 -25
  239. package/dist/cli/chunks/init-wizard-WLQKH5Y5.js +2 -0
  240. package/dist/cli/chunks/kernel-2WZOQEZS.js +2 -0
  241. package/dist/cli/chunks/{kilocode-installer-OPD7JBRL.js → kilocode-installer-KZ2O4LF3.js} +2 -2
  242. package/dist/cli/chunks/{kiro-installer-M4OPUNK2.js → kiro-installer-MLCCXRF7.js} +2 -2
  243. package/dist/cli/chunks/knowledge-graph-G3LVKK6P.js +2 -0
  244. package/dist/cli/chunks/{learning-4UWTQLMF.js → learning-QUCMBD77.js} +3 -3
  245. package/dist/cli/chunks/{llm-router-SQ56FF6Z.js → llm-router-PDEV3UP2.js} +4 -4
  246. package/dist/cli/chunks/llm-router-service-MM75HKWJ.js +2 -0
  247. package/dist/cli/chunks/{load-HPHKDGGL.js → load-XFVVLO7E.js} +2 -2
  248. package/dist/cli/chunks/load-test-BEWEE44J.js +2 -0
  249. package/dist/cli/chunks/{mcp-TELMAC7Z.js → mcp-74G3CL2S.js} +2 -2
  250. package/dist/cli/chunks/{memory-PFQ3KPVJ.js → memory-XIFM6JNX.js} +5 -5
  251. package/dist/cli/chunks/memory-backend-NYKBBKZR.js +2 -0
  252. package/dist/cli/chunks/memory-handlers-ZCKURV6S.js +2 -0
  253. package/dist/cli/chunks/{multi-model-executor-3VDRX6TZ.js → multi-model-executor-7L4W3O2Q.js} +2 -2
  254. package/dist/cli/chunks/{opencode-installer-PJ576R63.js → opencode-installer-BPG422LF.js} +2 -2
  255. package/dist/cli/chunks/{orchestrator-72QP4UU7.js → orchestrator-OEAFLAEV.js} +61 -23
  256. package/dist/cli/chunks/pattern-null-store-QGPUIV6M.js +2 -0
  257. package/dist/cli/chunks/{pattern-usage-recorder-754YQW7C.js → pattern-usage-recorder-LOPNCULT.js} +2 -2
  258. package/dist/cli/chunks/{pipeline-AVXY4MVB.js → pipeline-VWTYUZB7.js} +2 -2
  259. package/dist/cli/chunks/{platform-3E3DXLYB.js → platform-WFJJ3X2E.js} +2 -2
  260. package/dist/cli/chunks/{plugin-7FUQAKRE.js → plugin-744TPUSG.js} +2 -2
  261. package/dist/cli/chunks/{prime-radiant-advanced-wasm-NIB4F5NV.js → prime-radiant-advanced-wasm-BD5BLNDR.js} +2 -2
  262. package/dist/cli/chunks/project-root-C7ELXZRK.js +2 -0
  263. package/dist/cli/chunks/protocol-executor-SUVE33BM.js +2 -0
  264. package/dist/cli/chunks/{protocol-handler-BQRYMUTG.js → protocol-handler-JIBILI74.js} +2 -2
  265. package/dist/cli/chunks/{prove-H52QGC6B.js → prove-MNOL5FYW.js} +2 -2
  266. package/dist/cli/chunks/qe-reasoning-bank-YWZMMGJB.js +2 -0
  267. package/dist/cli/chunks/{quality-QO4XPAUM.js → quality-JEGBDGGX.js} +2 -2
  268. package/dist/cli/chunks/{quality-gate-FBKE5E6F.js → quality-gate-SYJ6ROMI.js} +3 -3
  269. package/dist/cli/chunks/queen-coordinator-ZFAKXRN7.js +2 -0
  270. package/dist/cli/chunks/real-embeddings-ZWXS5ZFV.js +2 -0
  271. package/dist/cli/chunks/{ref-validation-LF76ZOBD.js → ref-validation-RRHUFW2N.js} +2 -2
  272. package/dist/cli/chunks/{roocode-installer-3BYEBTQ7.js → roocode-installer-XFO6JSVN.js} +2 -2
  273. package/dist/cli/chunks/router-4FTAVYLJ.js +2 -0
  274. package/dist/cli/chunks/routing-feedback-IO2KOWMJ.js +2 -0
  275. package/dist/cli/chunks/{routing-handler-DST7BVCU.js → routing-handler-L2K3JASE.js} +2 -2
  276. package/dist/cli/chunks/{ruvector-commands-XE32PGKC.js → ruvector-commands-A6CINHGM.js} +2 -2
  277. package/dist/cli/chunks/rvf-dual-writer-KCIRNE7C.js +2 -0
  278. package/dist/cli/chunks/rvf-migration-adapter-MFC5WTJU.js +2 -0
  279. package/dist/cli/chunks/{rvf-migration-coordinator-VP32XC75.js → rvf-migration-coordinator-T4RY7L53.js} +2 -2
  280. package/dist/cli/chunks/rvf-native-adapter-I3KWHE7X.js +2 -0
  281. package/dist/cli/chunks/{rvf-store-integrity-SH2AMVI7.js → rvf-store-integrity-IR33TGQS.js} +2 -2
  282. package/dist/cli/chunks/safe-db-QXDZ6QY3.js +2 -0
  283. package/dist/cli/chunks/schedule-CZKD6RIY.js +2 -0
  284. package/dist/cli/chunks/scheduler-BLA3Q4CH.js +2 -0
  285. package/dist/cli/chunks/{security-VSPNKCDS.js → security-Z5GDE2IH.js} +3 -3
  286. package/dist/cli/chunks/{shared-rvf-adapter-HX6AHL3P.js → shared-rvf-adapter-SIZMEHPM.js} +2 -2
  287. package/dist/cli/chunks/{shared-rvf-dual-writer-MX4FC2JE.js → shared-rvf-dual-writer-HLM65RDS.js} +2 -2
  288. package/dist/cli/chunks/sqlite-persistence-XIUYDJC4.js +2 -0
  289. package/dist/cli/chunks/{standalone-memory-O4QUTK6L.js → standalone-memory-SKSZG7P5.js} +2 -2
  290. package/dist/cli/chunks/{status-handler-Z2BP6EOG.js → status-handler-766YOOMJ.js} +2 -2
  291. package/dist/cli/chunks/{structural-health-R36WNLQG.js → structural-health-M45FNOLT.js} +2 -2
  292. package/dist/cli/chunks/{sync-QF5Y3EMZ.js → sync-6CJ24B5T.js} +2 -2
  293. package/dist/cli/chunks/{sync-2ELWUFQU.js → sync-B2U366I3.js} +2 -2
  294. package/dist/cli/chunks/{task-handler-43PYE75J.js → task-handler-P6IFLCKP.js} +17 -15
  295. package/dist/cli/chunks/task-handlers-DPWMUKFC.js +9 -0
  296. package/dist/cli/chunks/{test-UWA377D4.js → test-TODH7KRF.js} +11 -11
  297. package/dist/cli/chunks/test-runner-process-46IPK3GH.js +2 -0
  298. package/dist/cli/chunks/{test-scheduling-YQZPJRRN.js → test-scheduling-VMVMVRHT.js} +3 -3
  299. package/dist/cli/chunks/{token-bootstrap-F7C6UKTC.js → token-bootstrap-XQW7BMCK.js} +2 -2
  300. package/dist/cli/chunks/{token-usage-DO6WLMXP.js → token-usage-JCZEIRKO.js} +2 -2
  301. package/dist/cli/chunks/{transformers-H5RGFKVO.js → transformers-U2ML3OHE.js} +2 -2
  302. package/dist/cli/chunks/tree-sitter-wasm-parser-MOI2WWNJ.js +2 -0
  303. package/dist/cli/chunks/{types-PJS2FGPF.js → types-GGEPCHP6.js} +2 -2
  304. package/dist/cli/chunks/unified-memory-FL26RTV3.js +2 -0
  305. package/dist/cli/chunks/unified-memory-hnsw-E2BPTH3U.js +2 -0
  306. package/dist/cli/chunks/unified-persistence-5ZOUPKHF.js +2 -0
  307. package/dist/cli/chunks/{upgrade-4IC4F6AB.js → upgrade-T5GRM7HS.js} +2 -2
  308. package/dist/cli/chunks/{validate-DHUWW7PF.js → validate-XMUJPLP3.js} +2 -2
  309. package/dist/cli/chunks/{validate-swarm-OERQNOX5.js → validate-swarm-KJLF7JEH.js} +2 -2
  310. package/dist/cli/chunks/visual-security-IJVPO5FA.js +2 -0
  311. package/dist/cli/chunks/{web-tree-sitter-TV7DMKES.js → web-tree-sitter-LOHVZ7G5.js} +2 -2
  312. package/dist/cli/chunks/{windsurf-installer-QZPWSH37.js → windsurf-installer-33FBTXJU.js} +2 -2
  313. package/dist/cli/chunks/witness-chain-5FAFCQKP.js +2 -0
  314. package/dist/cli/chunks/witness-chain-V2M32W5D.js +2 -0
  315. package/dist/cli/chunks/{witness-chain-repair-RUXIOE7F.js → witness-chain-repair-VWBO4NXE.js} +2 -2
  316. package/dist/cli/chunks/{witness-chain-verifier-YXENHB42.js → witness-chain-verifier-BHJ3ZAEK.js} +2 -2
  317. package/dist/cli/chunks/{witness-key-manager-HL26AGFO.js → witness-key-manager-WNVPH2Z3.js} +2 -2
  318. package/dist/cli/chunks/{workflow-EOVVCN2E.js → workflow-6QR5MQTO.js} +4 -4
  319. package/dist/cli/chunks/workflow-orchestrator-3JLF3IX7.js +2 -0
  320. package/dist/cli/chunks/{wrappers-AGODHBOO.js → wrappers-EHOL62TS.js} +2 -2
  321. package/dist/cli/commands/ci.js +7 -0
  322. package/dist/cli/commands/coverage.js +7 -1
  323. package/dist/cli/commands/fleet.js +5 -2
  324. package/dist/cli/commands/hooks-handlers/stats-hooks.d.ts +4 -3
  325. package/dist/cli/commands/hooks-handlers/stats-hooks.js +22 -4
  326. package/dist/cli/commands/hooks-handlers/tool-loop-guardrail.js +11 -6
  327. package/dist/cli/commands/test.js +5 -2
  328. package/dist/cli/handlers/init-handler.d.ts +12 -0
  329. package/dist/cli/handlers/init-handler.js +27 -12
  330. package/dist/cli/handlers/task-handler.js +6 -0
  331. package/dist/cli/utils/ci-output.d.ts +2 -0
  332. package/dist/cli/utils/ci-output.js +2 -0
  333. package/dist/cli/utils/coverage-verdict.d.ts +11 -2
  334. package/dist/cli/utils/coverage-verdict.js +26 -6
  335. package/dist/cli/utils/fleet-operation.d.ts +5 -0
  336. package/dist/cli/utils/fleet-operation.js +7 -1
  337. package/dist/cli/utils/fleet-result.d.ts +5 -3
  338. package/dist/cli/utils/fleet-result.js +9 -3
  339. package/dist/cli/utils/progress.d.ts +16 -2
  340. package/dist/cli/utils/progress.js +31 -14
  341. package/dist/coordination/consensus/consensus-engine.js +3 -1
  342. package/dist/coordination/handlers/code-intelligence-handlers.js +3 -2
  343. package/dist/coordination/handlers/coverage-collection.d.ts +2 -0
  344. package/dist/coordination/handlers/coverage-collection.js +5 -2
  345. package/dist/coordination/handlers/coverage-evidence.d.ts +75 -0
  346. package/dist/coordination/handlers/coverage-evidence.js +159 -0
  347. package/dist/coordination/handlers/coverage-handlers.js +16 -3
  348. package/dist/coordination/handlers/coverage-runner.d.ts +3 -8
  349. package/dist/coordination/handlers/coverage-runner.js +6 -22
  350. package/dist/coordination/handlers/coverage-scope.d.ts +40 -0
  351. package/dist/coordination/handlers/coverage-scope.js +321 -0
  352. package/dist/coordination/handlers/coverage-stderr.d.ts +23 -0
  353. package/dist/coordination/handlers/coverage-stderr.js +39 -0
  354. package/dist/coordination/handlers/coverage-target.d.ts +9 -0
  355. package/dist/coordination/handlers/coverage-target.js +21 -8
  356. package/dist/coordination/handlers/handler-utils.d.ts +5 -0
  357. package/dist/coordination/handlers/handler-utils.js +11 -5
  358. package/dist/coordination/handlers/requirements-handlers.js +3 -2
  359. package/dist/coordination/handlers/security-handlers.js +34 -20
  360. package/dist/coordination/queen-coordinator.js +8 -3
  361. package/dist/coordination/task-executability.d.ts +12 -0
  362. package/dist/coordination/task-executability.js +27 -0
  363. package/dist/coordination/workflow-orchestrator.d.ts +6 -0
  364. package/dist/coordination/workflow-orchestrator.js +22 -8
  365. package/dist/domains/code-intelligence/services/metric-collector/listing-process-owner.js +4 -1
  366. package/dist/domains/code-intelligence/services/product-factors-bridge.js +7 -4
  367. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +8 -0
  368. package/dist/domains/code-intelligence/services/semantic-analyzer.js +10 -7
  369. package/dist/domains/coverage-analysis/services/coverage-parser.js +19 -10
  370. package/dist/domains/learning-optimization/interfaces.d.ts +2 -0
  371. package/dist/domains/learning-optimization/services/learning-coordinator.js +2 -1
  372. package/dist/domains/learning-optimization/services/metrics-optimizer.js +14 -4
  373. package/dist/domains/learning-optimization/services/production-intel.js +3 -1
  374. package/dist/domains/security-compliance/generic-finding-dedup.d.ts +40 -0
  375. package/dist/domains/security-compliance/generic-finding-dedup.js +63 -0
  376. package/dist/domains/security-compliance/services/scanners/dependency-resolver.js +14 -6
  377. package/dist/domains/security-compliance/services/scanners/sast-scanner.js +4 -2
  378. package/dist/domains/security-compliance/services/security-auditor-sast.js +2 -2
  379. package/dist/domains/security-compliance/services/security-auditor-secrets.js +2 -2
  380. package/dist/domains/security-compliance/services/security-auditor.js +3 -2
  381. package/dist/domains/test-execution/coordinator.d.ts +2 -1
  382. package/dist/domains/test-execution/coordinator.js +5 -14
  383. package/dist/domains/test-execution/interfaces.d.ts +11 -1
  384. package/dist/domains/test-execution/services/retry-outcome.d.ts +18 -0
  385. package/dist/domains/test-execution/services/retry-outcome.js +53 -0
  386. package/dist/domains/test-generation/coordinator.js +2 -2
  387. package/dist/domains/test-generation/services/pattern-matcher.js +4 -4
  388. package/dist/domains/test-generation/services/test-generator.js +2 -2
  389. package/dist/governance/evolution-pipeline-integration.js +3 -1
  390. package/dist/hooks/cross-phase-hooks.js +3 -1
  391. package/dist/init/init-wizard-steps.js +5 -1
  392. package/dist/init/phases/04-database.js +7 -0
  393. package/dist/init/phases/10-workers.js +42 -4
  394. package/dist/init/phases/12-verification.js +14 -4
  395. package/dist/init/settings-merge.js +7 -4
  396. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +29 -0
  397. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +70 -6
  398. package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +10 -3
  399. package/dist/integrations/agentic-flow/reasoning-bank/index.js +13 -0
  400. package/dist/integrations/ruvector/filter-adapter.js +2 -1
  401. package/dist/learning/dream/insight-generator.js +5 -4
  402. package/dist/learning/embedder-endpoint-client.d.ts +8 -0
  403. package/dist/learning/embedder-endpoint-client.js +20 -0
  404. package/dist/learning/embedder-recovery.d.ts +63 -0
  405. package/dist/learning/embedder-recovery.js +94 -0
  406. package/dist/learning/memory-auditor.js +3 -1
  407. package/dist/learning/qe-patterns.js +2 -1
  408. package/dist/learning/qe-reasoning-bank-types.d.ts +5 -0
  409. package/dist/learning/qe-reasoning-bank.d.ts +21 -0
  410. package/dist/learning/qe-reasoning-bank.js +54 -8
  411. package/dist/learning/real-embeddings.d.ts +23 -0
  412. package/dist/learning/real-embeddings.js +69 -2
  413. package/dist/learning/real-qe-reasoning-bank.d.ts +39 -0
  414. package/dist/learning/real-qe-reasoning-bank.js +108 -38
  415. package/dist/logging/redaction.js +142 -12
  416. package/dist/mcp/bundle.js +520 -503
  417. package/dist/mcp/daemon-mode.d.ts +126 -0
  418. package/dist/mcp/daemon-mode.js +257 -0
  419. package/dist/mcp/entry.d.ts +4 -0
  420. package/dist/mcp/entry.js +50 -2
  421. package/dist/mcp/handlers/domain-handler-configs.d.ts +2 -0
  422. package/dist/mcp/handlers/domain-handler-configs.js +13 -2
  423. package/dist/mcp/handlers/orchestrate-routes.d.ts +6 -1
  424. package/dist/mcp/handlers/orchestrate-routes.js +53 -0
  425. package/dist/mcp/handlers/task-handlers.d.ts +23 -1
  426. package/dist/mcp/handlers/task-handlers.js +90 -19
  427. package/dist/mcp/handlers/validation-pipeline-handler.js +9 -9
  428. package/dist/mcp/protocol-server.js +11 -8
  429. package/dist/mcp/qe-tool-bridge.js +3 -0
  430. package/dist/mcp/services/reasoning-bank-service.d.ts +9 -2
  431. package/dist/mcp/services/reasoning-bank-service.js +13 -0
  432. package/dist/mcp/tool-annotations.js +4 -1
  433. package/dist/mcp/tools/coherence/check.js +1 -0
  434. package/dist/mcp/tools/coherence/consensus.js +4 -2
  435. package/dist/mcp/tools/learning-optimization/optimize.js +1 -2
  436. package/dist/mcp/tools/mincut/index.js +3 -0
  437. package/dist/mcp/tools/quality-assessment/gate.js +7 -0
  438. package/dist/mcp/tools/qx-analysis/analyze.js +1 -0
  439. package/dist/mcp/tools/requirements-validation/quality-criteria.js +10 -3
  440. package/dist/mcp/tools/security-compliance/scan.js +4 -2
  441. package/dist/mcp/tools/test-execution/e2e-execute.js +2 -2
  442. package/dist/mcp/tools/test-execution/execute.js +3 -2
  443. package/dist/mcp/types.d.ts +14 -0
  444. package/dist/memory/crdt/crdt-store.js +5 -0
  445. package/dist/memory/crdt/lww-register.js +12 -2
  446. package/dist/optimization/early-exit-token-optimizer.js +3 -1
  447. package/dist/planning/goap-planner.js +5 -0
  448. package/dist/planning/plan-executor.js +5 -0
  449. package/dist/routing/advisor/redaction.js +22 -2
  450. package/dist/shared/io/confined-read.d.ts +74 -0
  451. package/dist/shared/io/confined-read.js +256 -0
  452. package/dist/shared/io/file-reader.d.ts +6 -6
  453. package/dist/shared/io/file-reader.js +16 -42
  454. package/dist/shared/llm/providers/claude-code.js +4 -1
  455. package/dist/shared/llm/providers/response-deadline.js +16 -2
  456. package/dist/shared/native-module-errors.d.ts +51 -0
  457. package/dist/shared/native-module-errors.js +129 -0
  458. package/dist/shared/safe-db.js +14 -4
  459. package/dist/shared/security/osv-client.js +4 -1
  460. package/dist/shared/types/index.js +3 -1
  461. package/dist/shared/types/test-frameworks.js +2 -2
  462. package/dist/strange-loop/infra-healing/infra-aware-agent-provider.js +8 -1
  463. package/dist/sync/readers/json-reader.js +2 -1
  464. package/dist/validation/anchor-set.d.ts +6 -0
  465. package/dist/validation/anchor-set.js +9 -1
  466. package/dist/validation/quality-gate-runner.d.ts +7 -1
  467. package/dist/validation/quality-gate-runner.js +3 -3
  468. package/package.json +3 -3
  469. package/dist/cli/chunks/adapter-TR5SLAZC.js +0 -2
  470. package/dist/cli/chunks/aqe-learning-engine-DXWKCHY2.js +0 -2
  471. package/dist/cli/chunks/base-GTB6POYE.js +0 -2
  472. package/dist/cli/chunks/browser-workflow-MSBOLYUY.js +0 -2
  473. package/dist/cli/chunks/chunk-4SJYIX54.js +0 -3
  474. package/dist/cli/chunks/chunk-6P7424AO.js +0 -21
  475. package/dist/cli/chunks/chunk-6X5DHU6Q.js +0 -14
  476. package/dist/cli/chunks/chunk-CMBLM26R.js +0 -2
  477. package/dist/cli/chunks/chunk-DKAC3E3B.js +0 -3
  478. package/dist/cli/chunks/chunk-DURHK377.js +0 -742
  479. package/dist/cli/chunks/chunk-FPUDRSFJ.js +0 -180
  480. package/dist/cli/chunks/chunk-G5I6KGMW.js +0 -59
  481. package/dist/cli/chunks/chunk-HOZUDE4C.js +0 -2
  482. package/dist/cli/chunks/chunk-N6PIIK6G.js +0 -3
  483. package/dist/cli/chunks/chunk-NSHU347M.js +0 -2
  484. package/dist/cli/chunks/chunk-PPSAMXYN.js +0 -13
  485. package/dist/cli/chunks/chunk-TYFZXDGZ.js +0 -4
  486. package/dist/cli/chunks/chunk-U4OICXV2.js +0 -6
  487. package/dist/cli/chunks/chunk-WSF24I3D.js +0 -2
  488. package/dist/cli/chunks/chunk-XBVUVFJK.js +0 -4
  489. package/dist/cli/chunks/chunk-XUZDBQ5X.js +0 -6
  490. package/dist/cli/chunks/chunk-YBSBABOS.js +0 -2
  491. package/dist/cli/chunks/chunk-ZG5666GJ.js +0 -2
  492. package/dist/cli/chunks/ci-MSKMVH5X.js +0 -81
  493. package/dist/cli/chunks/client-POSVREVS.js +0 -2
  494. package/dist/cli/chunks/core-handlers-V243GY7X.js +0 -2
  495. package/dist/cli/chunks/coverage-B7MCGNTE.js +0 -49
  496. package/dist/cli/chunks/cross-domain-router-N3AIEM3B.js +0 -2
  497. package/dist/cli/chunks/dream-UA7MKOPQ.js +0 -2
  498. package/dist/cli/chunks/file-discovery-YCMNKZAK.js +0 -2
  499. package/dist/cli/chunks/fleet-2Y3ZE6CE.js +0 -46
  500. package/dist/cli/chunks/heartbeat-scheduler-QH5V6G2P.js +0 -2
  501. package/dist/cli/chunks/hnsw-adapter-OJNFAGJS.js +0 -2
  502. package/dist/cli/chunks/hnsw-index-DFUNARVD.js +0 -2
  503. package/dist/cli/chunks/hybrid-backend-SSGQQEQ2.js +0 -2
  504. package/dist/cli/chunks/impact-analyzer-CRGCA7ZD.js +0 -2
  505. package/dist/cli/chunks/init-wizard-NIMZ4J55.js +0 -2
  506. package/dist/cli/chunks/kernel-JQK7PRAI.js +0 -2
  507. package/dist/cli/chunks/knowledge-graph-YPVVIKEU.js +0 -2
  508. package/dist/cli/chunks/llm-router-service-5OGAUOXF.js +0 -2
  509. package/dist/cli/chunks/load-test-UKNV5MWW.js +0 -2
  510. package/dist/cli/chunks/memory-backend-ZW4BTRNK.js +0 -2
  511. package/dist/cli/chunks/memory-handlers-FCXN437E.js +0 -2
  512. package/dist/cli/chunks/pattern-null-store-4DUV6MQC.js +0 -2
  513. package/dist/cli/chunks/project-root-JCAUNL6O.js +0 -2
  514. package/dist/cli/chunks/protocol-executor-RNZNZP3A.js +0 -2
  515. package/dist/cli/chunks/qe-reasoning-bank-WK6TQOG2.js +0 -2
  516. package/dist/cli/chunks/queen-coordinator-4452SXZQ.js +0 -2
  517. package/dist/cli/chunks/real-embeddings-RWGOVOXO.js +0 -2
  518. package/dist/cli/chunks/router-3DIS5X4R.js +0 -2
  519. package/dist/cli/chunks/routing-feedback-OPXRCXM7.js +0 -2
  520. package/dist/cli/chunks/rvf-dual-writer-JL6T727I.js +0 -2
  521. package/dist/cli/chunks/rvf-migration-adapter-V7IBDUCS.js +0 -2
  522. package/dist/cli/chunks/rvf-native-adapter-O3UQTEBK.js +0 -2
  523. package/dist/cli/chunks/safe-db-EVB4ZC7T.js +0 -2
  524. package/dist/cli/chunks/schedule-ORDDXXY4.js +0 -2
  525. package/dist/cli/chunks/scheduler-XFLJSFIU.js +0 -2
  526. package/dist/cli/chunks/sqlite-persistence-Y7B42CJ3.js +0 -2
  527. package/dist/cli/chunks/task-handlers-KPWAEMKH.js +0 -9
  528. package/dist/cli/chunks/test-runner-process-3XZUYST2.js +0 -2
  529. package/dist/cli/chunks/tree-sitter-wasm-parser-YTBCBHUO.js +0 -2
  530. package/dist/cli/chunks/unified-memory-EHD4VNFW.js +0 -2
  531. package/dist/cli/chunks/unified-memory-hnsw-ZODGM4UK.js +0 -2
  532. package/dist/cli/chunks/unified-persistence-MHSI7ABK.js +0 -2
  533. package/dist/cli/chunks/visual-security-54MLFKWY.js +0 -2
  534. package/dist/cli/chunks/witness-chain-LC6Q2W27.js +0 -2
  535. package/dist/cli/chunks/witness-chain-QUIBAF3W.js +0 -2
  536. package/dist/cli/chunks/workflow-orchestrator-UKHEJVSK.js +0 -2
@@ -298,8 +298,43 @@ const FAST_HOOKS = new Set(['guard', 'pre-command']);
298
298
  const SPAWN_TIMEOUT_MS = Number(process.env.AQE_HOOK_TIMEOUT_MS)
299
299
  || (FAST_HOOKS.has(args[0]) ? 2500 : 4500);
300
300
 
301
+ // Credential shapes scrubbed from health-log lines (#740). The child's stderr
302
+ // can echo hook arguments (commands, prompts) and provider errors. This file is
303
+ // copied standalone into user projects and cannot import the AQE logger, so it
304
+ // carries a compact copy of src/logging/redaction.ts's detectors; the parity
305
+ // test (tests/unit/logging/redaction-copies.test.ts) keeps them in step. Every
306
+ // pattern is linear: bounded or single-pass quantifiers only.
307
+ const HEALTH_REDACTIONS = [
308
+ [/-----BEGIN[^-\n]{0,64}PRIVATE KEY-----(?:[\s\S]*?-----END[^-\n]{0,64}PRIVATE KEY-----|[\s\S]*)/g, '<REDACTED:private_key>'],
309
+ [/(:\/\/)[^\s/@:"']*:[^\s/@"']+@/g, '$1<REDACTED:credentials>@'],
310
+ [/\b((?:authorization|x-api-key):\s*(?:(?:Bearer|Basic|Token)\s+)?)[^\s"']+/gi, '$1<REDACTED:credential>'],
311
+ [/\b(set-cookie|cookie):\s*[^\n]+/gi, '$1: <REDACTED:cookie>'],
312
+ [/\b(Bearer)\s+([A-Za-z0-9._~+/=-]{8,})/gi,
313
+ (match, scheme, value) => (isProseWord(value) ? match : `${scheme} <REDACTED:credential>`)],
314
+ [/\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}/g, '<REDACTED:jwt>'],
315
+ [/\b(?:sk-(?:ant-|proj-)?[A-Za-z0-9_-]{16,}|gh[pousr]_[A-Za-z0-9_]{16,}|github_pat_[A-Za-z0-9_]{16,}|glpat-[A-Za-z0-9_-]{20,}|xox[bpsa]-[A-Za-z0-9-]{10,}|hf_[A-Za-z0-9]{30,}|npm_[A-Za-z0-9]{36,}|cog_[A-Za-z0-9-]{20,}|[spr]k_(?:live|test)_[A-Za-z0-9]{10,}|AIzaSy[A-Za-z0-9_-]{33}|A[KS]IA[0-9A-Z]{16})/g,
316
+ '<REDACTED:token>'],
317
+ // key=value, key: value, "key": "value" and --key value for sensitive key names.
318
+ [/((?:^|[^A-Za-z0-9])[A-Za-z0-9_-]{0,64}?(?:token|secret|password|passwd|passphrase|api[_-]?key|credentials?|private[_-]?key)["']?\s*[:=]\s*["']?)[^\s"'&,;}]+/gi,
319
+ '$1<REDACTED:credential>'],
320
+ [/(--?[A-Za-z0-9-]{0,64}?(?:token|secret|password|api-?key)\s+)[^\s-][^\s]*/gi, '$1<REDACTED:credential>'],
321
+ ];
322
+
323
+ /** "use Bearer authorization" is prose; digits, mixed case, symbols or >16 letters mean a token. */
324
+ function isProseWord(value) {
325
+ return /^[A-Z]?[a-z]+\.?$/.test(value) && value.replace(/\.$/, '').length <= 16;
326
+ }
327
+
328
+ /** Redact credential-shaped text before it reaches the health log. */
329
+ function redactHealthText(text) {
330
+ let out = String(text);
331
+ for (const [regex, replacement] of HEALTH_REDACTIONS) out = out.replace(regex, replacement);
332
+ return out;
333
+ }
334
+
301
335
  function recordHookHealth(line) {
302
336
  try {
337
+ line = redactHealthText(line);
303
338
  const logPath = path.join(PROJECT, '.agentic-qe', 'hooks-health.log');
304
339
  // Throttle: skip if we logged within the last 5 min (avoid a line/turn).
305
340
  // lstat, so a planted symlink's TARGET mtime never decides anything.
@@ -399,7 +434,8 @@ function superviseSpawn(cmd, cmdArgs, subcmd, ts) {
399
434
  // Child exited non-zero with no JSON payload — e.g. an empty-task throw
400
435
  // when the harness didn't populate $PROMPT/$TOOL_INPUT_*.
401
436
  recordHookHealth(`[${ts()}] EMPTY-RESULT hook exited status=${res.status} `
402
- + `with no JSON output (cmd=${subcmd}). stderr: ${stderr.slice(0, 300)}\n`);
437
+ // Redact before truncating, so a cut can never leave a token too short to match.
438
+ + `with no JSON output (cmd=${subcmd}). stderr: ${redactHealthText(stderr.slice(0, 4096)).slice(0, 300)}\n`);
403
439
  }
404
440
  return out;
405
441
  }
@@ -426,6 +462,6 @@ function main() {
426
462
  // requiring this file never spawns anything.
427
463
  // brain-checkpoint.cjs checks for this export (and the require.main guard
428
464
  // below) before requiring this file; keep both.
429
- module.exports = { resolveAqeInvocation, parseCmdShimTarget };
465
+ module.exports = { resolveAqeInvocation, parseCmdShimTarget, redactHealthText };
430
466
 
431
467
  if (require.main === module) main();
@@ -940,7 +940,7 @@
940
940
  },
941
941
  "metadata": {
942
942
  "generatedBy": "Agentic QE Fleet",
943
- "fleetVersion": "3.15.10",
943
+ "fleetVersion": "3.15.12",
944
944
  "manifestVersion": "1.4.0",
945
945
  "lastUpdated": "2026-04-13T00:00:00.000Z",
946
946
  "contributors": [
package/CHANGELOG.md CHANGED
@@ -5,6 +5,269 @@ All notable changes to the Agentic QE project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [3.15.12] - 2026-10-23
9
+
10
+ A coverage verdict now needs evidence for the whole target. A report that
11
+ leaves out source files, or is older than the code, gives INSUFFICIENT
12
+ EVIDENCE instead of PASSED. Coverage tasks sent through `task_orchestrate`
13
+ work. The worker daemon started by `start-daemon.cjs` stays running and keeps
14
+ its log small. When the embedder fails after startup, pattern learning falls
15
+ back to text search instead of failing, and retries the embedder without
16
+ stalling anyone. Redaction catches more secrets and stops redacting plain
17
+ prose. CI and the Docker image use the patched October Node releases.
18
+
19
+ ### Changed
20
+
21
+ - **Coverage verdicts need complete, current evidence** ([#1154], [#1199]):
22
+ `aqe fleet run analyze`, `aqe coverage`, `aqe ci` and MCP
23
+ `coverage_analyze_sublinear` no longer report a pass from a coverage report
24
+ that covers only part of the target or is older than the sources. Source
25
+ files under the target that the report doesn't list are counted as
26
+ unmeasured and named, and a stale report is flagged. Either one gives
27
+ **INSUFFICIENT EVIDENCE**: `aqe coverage` and `aqe ci` exit with 3, and the
28
+ fleet verdict is FAILED. Only production source files inside the project's
29
+ own coverage scope count. That scope is read from the include/exclude
30
+ settings in vitest/vite, jest, nyc or c8 config, so files you exclude there
31
+ are not required. To fix a failing verdict, regenerate the report for the
32
+ whole target (for example `npm test -- --coverage`), or exclude the files
33
+ that are not meant to be measured. JSON output carries `evidenceStatus`,
34
+ `unmeasuredFiles` and `staleReport`.
35
+ - **Invalid task priorities are rejected** ([#1117], [#1131], by
36
+ @rudycelekli): `task_orchestrate` used to turn any unknown priority into
37
+ `p1`, including `""` and `null`, and could downgrade a requested `p0`. It
38
+ now accepts `critical`, `high`, `medium`, `low` and `p0`–`p3` and rejects
39
+ anything else with a message. `aqe task list --priority` and MCP
40
+ `task_list` validate their filter the same way, instead of silently
41
+ listing nothing.
42
+
43
+ ### Fixed
44
+
45
+ - **Coverage tasks from `task_orchestrate` work** ([#1200], [#1202]): they
46
+ always failed with "Invalid analyze-coverage payload: missing
47
+ coverageData". They now run through the same code as
48
+ `coverage_analyze_sublinear`, with the same figures and evidence checks.
49
+ The target is the single `filePaths` entry, else a path named in the task
50
+ text, else the project. A task that names more than one target is refused
51
+ and asked for one.
52
+ - **The worker daemon stays running** ([#1158], [#1208]): `start-daemon.cjs`
53
+ started the MCP server with no stdin, and the server read that as a
54
+ disconnected client and shut down within seconds. The script now starts
55
+ the server in daemon mode (`AQE_MCP_DAEMON=1`). It ignores stdin EOF, logs a
56
+ heartbeat each minute and stops on SIGTERM, which `stop-daemon.cjs` sends.
57
+ Daemon mode is honoured only when nothing is attached to stdin, so a
58
+ normal MCP client still shuts its server down when it disconnects.
59
+ **Re-run `aqe init` once** so the project's `start-daemon.cjs` is
60
+ regenerated.
61
+ - **`daemon.log` stays small** ([#1207], [#1214]): the daemon moves the log
62
+ to `daemon.log.1` when it passes 5 MB. Set `AQE_DAEMON_LOG_MAX_SIZE` to
63
+ change the cap (`0` or `off` disables it), and
64
+ `AQE_DAEMON_HEARTBEAT_SECONDS` to change the heartbeat interval.
65
+ - **An embedder that fails after startup no longer breaks pattern learning**
66
+ ([#1187], [#1203], [#1204], [#1215]): when the embedding endpoint went down
67
+ mid-session, pattern search threw and lost its text matches, storing a
68
+ pattern failed, and the status still said `vector`. Now:
69
+ - search returns its text matches, labelled `lexical-only` with the reason;
70
+ - patterns are stored without a vector (`aqe learning backfill-embeddings`
71
+ adds it later);
72
+ - `aqe hooks learn` and `aqe hooks search` work in text-only mode instead
73
+ of exiting 1, and the hint names the configured endpoint and why it
74
+ failed.
75
+
76
+ The embedder is retried every 60 s (`embedderRetryIntervalMs`), in the
77
+ background, so the call that triggers a retry never waits for it. Recovery
78
+ takes about one interval, down from two. `task_orchestrate` reports
79
+ experience guidance the same way, in `learning.experienceGuidance`.
80
+ - **Experience guidance reports only measured similarity** ([#1192],
81
+ [#1215]): reservoir samples, picked without looking at the task, were
82
+ blended in with a similarity derived from their coherence score. A sample
83
+ is now included only when its similarity to the task was actually computed
84
+ and meets the threshold. Some tasks get less guidance as a result.
85
+ - **Slow stream consumers no longer time out** ([#962], [#1197]): a
86
+ streaming LLM call's idle deadline fired when the caller paused between
87
+ chunks, even after the server had sent everything. It now measures network
88
+ silence, reading up to 1 MiB ahead of the consumer.
89
+ - **One interrupt reaches the host once** ([#992], [#1198]): when a test
90
+ count was interrupted, AQE re-raised the signal even if the program
91
+ embedding it had its own handler, so a host that counts Ctrl-C presses saw
92
+ two.
93
+ - **Cached code analyses belong to the right code** ([#1190], by
94
+ @rudycelekli): the semantic analyzer keyed its analysis and embedding
95
+ caches with a weak 32-bit hash, so two different snippets could share an
96
+ entry and get each other's results or embeddings. Entries are now keyed by
97
+ SHA-256 of the content.
98
+ - **Infra health with a custom agent prefix** ([#1189], by @rudycelekli): a
99
+ prefix containing regex characters recovered the wrong service name, so a
100
+ service that was down reported as healthy. The prefix is now stripped
101
+ literally.
102
+
103
+ ### Security
104
+
105
+ - **More secrets are redacted** ([#740], [#1195], [#1213]): logs, MCP tool
106
+ errors, the CLI fatal handler and kernel errors now redact:
107
+ - Hugging Face (`hf_`), npm (`npm_`) and Cognitum (`cog_`) tokens;
108
+ - `Authorization: Token …` headers;
109
+ - private-key blocks that are missing their END line;
110
+ - whole objects and arrays stored under a sensitive key (for example
111
+ `"apiKey": {…}`), not only plain values.
112
+
113
+ `.agentic-qe/hooks-health.log` and the OpenCode plugin's output are
114
+ redacted too. Error logs show the error's `code` and `status` again.
115
+ - **Less over-redaction** ([#740], [#1195], [#1196], [#1213]): prose such as
116
+ "Basic authentication" or "use Bearer authorization" is no longer replaced.
117
+ Real Basic credentials and Bearer tokens, and any value in an
118
+ `Authorization:` header, still are.
119
+ - **Patched Node releases** ([#1206]): CI, the release workflow, the Docker
120
+ image and `.nvmrc` use Node 24.22.1, and the Node 22 compatibility job uses
121
+ 22.23.4. Both include the October 2026 Node security fixes. The supported
122
+ minimum stays `>=22.13.0`.
123
+
124
+ ### Changed (development)
125
+
126
+ - `vitest` and `@vitest/coverage-v8` 5.0.1 → 5.0.5 (dev dependencies), which
127
+ clears two `@vitest/mocker` advisories ([#1210]).
128
+
129
+ [#740]: https://github.com/proffesor-for-testing/agentic-qe/issues/740
130
+ [#962]: https://github.com/proffesor-for-testing/agentic-qe/issues/962
131
+ [#992]: https://github.com/proffesor-for-testing/agentic-qe/issues/992
132
+ [#1117]: https://github.com/proffesor-for-testing/agentic-qe/issues/1117
133
+ [#1131]: https://github.com/proffesor-for-testing/agentic-qe/pull/1131
134
+ [#1154]: https://github.com/proffesor-for-testing/agentic-qe/issues/1154
135
+ [#1158]: https://github.com/proffesor-for-testing/agentic-qe/issues/1158
136
+ [#1187]: https://github.com/proffesor-for-testing/agentic-qe/issues/1187
137
+ [#1189]: https://github.com/proffesor-for-testing/agentic-qe/pull/1189
138
+ [#1190]: https://github.com/proffesor-for-testing/agentic-qe/pull/1190
139
+ [#1192]: https://github.com/proffesor-for-testing/agentic-qe/issues/1192
140
+ [#1195]: https://github.com/proffesor-for-testing/agentic-qe/pull/1195
141
+ [#1196]: https://github.com/proffesor-for-testing/agentic-qe/issues/1196
142
+ [#1197]: https://github.com/proffesor-for-testing/agentic-qe/pull/1197
143
+ [#1198]: https://github.com/proffesor-for-testing/agentic-qe/pull/1198
144
+ [#1199]: https://github.com/proffesor-for-testing/agentic-qe/pull/1199
145
+ [#1200]: https://github.com/proffesor-for-testing/agentic-qe/issues/1200
146
+ [#1202]: https://github.com/proffesor-for-testing/agentic-qe/pull/1202
147
+ [#1203]: https://github.com/proffesor-for-testing/agentic-qe/pull/1203
148
+ [#1204]: https://github.com/proffesor-for-testing/agentic-qe/issues/1204
149
+ [#1206]: https://github.com/proffesor-for-testing/agentic-qe/pull/1206
150
+ [#1207]: https://github.com/proffesor-for-testing/agentic-qe/issues/1207
151
+ [#1208]: https://github.com/proffesor-for-testing/agentic-qe/pull/1208
152
+ [#1210]: https://github.com/proffesor-for-testing/agentic-qe/pull/1210
153
+ [#1213]: https://github.com/proffesor-for-testing/agentic-qe/pull/1213
154
+ [#1214]: https://github.com/proffesor-for-testing/agentic-qe/pull/1214
155
+ [#1215]: https://github.com/proffesor-for-testing/agentic-qe/pull/1215
156
+
157
+ ## [3.15.11] - 2026-10-22
158
+
159
+ AQE now works on npm 12 and on a plain install without the optional
160
+ embedding package, and its MCP tools load in VS Code Copilot. When the
161
+ database cannot start, `aqe init` prints the real cause and the command that
162
+ fixes it. `aqe fleet run` progress output is readable, a test that passes on
163
+ retry counts as passed and flaky, and an `eval()` is no longer reported twice.
164
+ Four security fixes close the follow-ups from the 3.15.10 review: a checked
165
+ file is read from exactly what was checked, runner stderr is redacted before
166
+ it is cut, and names like `constructor` or `__proto__` are plain names in
167
+ every data lookup.
168
+
169
+ ### Fixed
170
+
171
+ - **`aqe init` explains a missing database driver** ([#1173], [#1175]): on
172
+ npm 12, `npm install -g agentic-qe` blocks the install script of
173
+ `better-sqlite3`, so its native binary is never built. `aqe init` then
174
+ failed at "Initialize persistence database" with no error printed. Now
175
+ `init` prints the real error, and every command that opens the database
176
+ (`init`, `health`, `status`, `memory`, MCP fleet init) names the cause and
177
+ prints the exact fix:
178
+ `npm install -g agentic-qe --allow-scripts=agentic-qe,better-sqlite3,hnswlib-node`.
179
+ The README and getting-started guide include the npm 12 install note.
180
+ - **MCP tools load in VS Code Copilot** ([#1185], [#1193]): Copilot refused
181
+ `fleet_init` and 17 other tools with "tool parameters array type must have
182
+ items". Every list parameter in every tool schema now declares what its
183
+ elements are, including the `qe/*` domain tools, whose element types were
184
+ dropped when they were published.
185
+ - **`task_orchestrate` and `aqe eval` work without an embedder** ([#1022],
186
+ [#1181]): on a plain install without `@huggingface/transformers`,
187
+ `task_orchestrate` always failed with "Transformer initialization
188
+ previously failed" and `aqe eval` failed to load. Both now work. Pattern
189
+ learning stores patterns without a vector and searches them by text; its
190
+ response says so in a new `learning` field (`patternSearch: "vector"`,
191
+ `"lexical-only"` with the reason, or `"unavailable"`). Text matches report
192
+ `similarity: 0` because no similarity was measured. Experience guidance is
193
+ not produced without an embedding of the task, instead of guidance for an
194
+ unrelated task with a made-up similarity.
195
+ - **`aqe fleet run` progress output** ([#1168], [#1177]): the progress header
196
+ shows `Fleet Progress` instead of a literal `{name}` and a stray `0`. When
197
+ the verdict is FAILED, the completion line no longer says "successfully".
198
+ - **A test that passes on retry counts as passed and flaky** ([#1170],
199
+ [#1177]): MCP `test_execute_parallel` and `aqe test execute` (text, JSON and
200
+ markdown) now count it as passed, report it as flaky, and agree with
201
+ `retryStats`. MCP and the CLI share one default retry count, 2 (MCP used 3).
202
+ - **`sast-scan` runs without naming a domain** ([#1170], [#1177]):
203
+ `task_submit` and `aqe task submit` route it to `security-compliance`. A
204
+ task type no loaded domain handles is still rejected, with an error that
205
+ says so.
206
+ - **One `eval()` is reported once** ([#1170], [#1177], [#1184]):
207
+ `security_scan_comprehensive` dropped a duplicate generic eval/exec finding
208
+ only when SAST reported eval injection (CWE-95) on the same file and line,
209
+ at the same or a higher severity, and the line has no `exec()`. Secret, CORS
210
+ and debug findings are always kept. The generic rule reports every matching
211
+ line, and its findings name the scanned path.
212
+ - **Learning recommendations stay in their domain and objective** ([#1091],
213
+ thanks @rudycelekli): a strategy tuned to maximize coverage can no longer
214
+ be recommended for minimizing latency or for another domain.
215
+ - **CRDT sync rejects non-finite timestamps** ([#1087], thanks
216
+ @rudycelekli): a remote register with a `NaN` or infinite timestamp is
217
+ skipped at merge instead of winning every later comparison; valid
218
+ registers, including cleared ones, keep converging.
219
+
220
+ ### Security
221
+
222
+ - **A checked file is read from exactly what was checked** ([#1161],
223
+ [#1179]): the path guard checked a path, and the handler opened it again
224
+ later by name, so a file or symlink swapped in between was read
225
+ unchecked. Fixed-name files inside an accepted folder (coverage reports,
226
+ `package.json`, dependency manifests) were not checked at all, so a
227
+ committed symlink could pull an outside file into results or point a
228
+ coverage report at `/dev/zero`. One shared reader now opens the file once
229
+ without following a final symlink, checks the open file (regular, within the
230
+ size limit, inside the project) and reads from it. Code index, SAST,
231
+ security scans, contract and requirements validation, test generation, C4
232
+ and every coverage report parser use it.
233
+ - **Test runner stderr is redacted before it is cut** ([#1150], [#1180]):
234
+ when coverage tests crashed without a report, `coverage_analyze_sublinear`
235
+ quoted the runner's raw stderr, and a secret cut at the 2 KB boundary left a
236
+ fragment no redaction pattern recognizes. Stderr is now redacted first, then
237
+ cut. Claim-verifier command evidence and the claude-code provider's parse
238
+ error are redacted the same way.
239
+ - **`constructor`, `__proto__` and other built-in names are plain names**
240
+ ([#1157], [#1182]): names from callers, files or stored data matched
241
+ built-in JavaScript members. A pipeline condition on `input.constructor`
242
+ ran a step that should be skipped, a dependency named `constructor` crashed
243
+ `qe/code/c4` and hid real findings, an agent-overlay `__proto__:` section
244
+ wrote onto every object, and a tool named `constructor` could claim to be
245
+ read-only. Every such lookup now reads own entries only.
246
+
247
+ ### Changed
248
+
249
+ - `vite` (dev dependency) 8.3.0 → 8.3.4 ([#1172]).
250
+
251
+ [#1022]: https://github.com/proffesor-for-testing/agentic-qe/issues/1022
252
+ [#1087]: https://github.com/proffesor-for-testing/agentic-qe/pull/1087
253
+ [#1091]: https://github.com/proffesor-for-testing/agentic-qe/pull/1091
254
+ [#1150]: https://github.com/proffesor-for-testing/agentic-qe/issues/1150
255
+ [#1157]: https://github.com/proffesor-for-testing/agentic-qe/issues/1157
256
+ [#1161]: https://github.com/proffesor-for-testing/agentic-qe/issues/1161
257
+ [#1168]: https://github.com/proffesor-for-testing/agentic-qe/issues/1168
258
+ [#1170]: https://github.com/proffesor-for-testing/agentic-qe/issues/1170
259
+ [#1172]: https://github.com/proffesor-for-testing/agentic-qe/pull/1172
260
+ [#1173]: https://github.com/proffesor-for-testing/agentic-qe/issues/1173
261
+ [#1175]: https://github.com/proffesor-for-testing/agentic-qe/pull/1175
262
+ [#1177]: https://github.com/proffesor-for-testing/agentic-qe/pull/1177
263
+ [#1179]: https://github.com/proffesor-for-testing/agentic-qe/pull/1179
264
+ [#1180]: https://github.com/proffesor-for-testing/agentic-qe/pull/1180
265
+ [#1181]: https://github.com/proffesor-for-testing/agentic-qe/pull/1181
266
+ [#1182]: https://github.com/proffesor-for-testing/agentic-qe/pull/1182
267
+ [#1184]: https://github.com/proffesor-for-testing/agentic-qe/pull/1184
268
+ [#1185]: https://github.com/proffesor-for-testing/agentic-qe/issues/1185
269
+ [#1193]: https://github.com/proffesor-for-testing/agentic-qe/pull/1193
270
+
8
271
  ## [3.15.10] - 2026-10-19
9
272
 
10
273
  Files named in a request are now read only when they are inside your
package/README.md CHANGED
@@ -34,6 +34,14 @@ aqe init --auto
34
34
  aqe health
35
35
  ```
36
36
 
37
+ **npm 12+:** dependency install scripts are blocked unless allowed, and AQE's SQLite store (`better-sqlite3`) needs its install script to fetch its native binary. Name the packages when you install:
38
+
39
+ ```bash
40
+ npm install -g agentic-qe --allow-scripts=agentic-qe,better-sqlite3,hnswlib-node
41
+ ```
42
+
43
+ Include `agentic-qe` in the command — npm's warning suggests `npm install -g --allow-scripts=...` without a package name, which installs the current directory instead. If `aqe init` reports that the `better-sqlite3` native module could not be loaded on an existing install, rebuild it with `npm rebuild -g better-sqlite3 --allow-scripts=better-sqlite3` (for a project-local install: `npm install-scripts approve better-sqlite3 && npm rebuild better-sqlite3`). `hnswlib-node` is optional; AQE runs without it.
44
+
37
45
  `aqe init --auto` analyzes your project and configures the default Claude Code surface, including MCP. Review the generated project files. For another client, select its setup flag below and use its MCP connection flow.
38
46
 
39
47
  In your coding agent, start with a narrow request:
@@ -940,7 +940,7 @@
940
940
  },
941
941
  "metadata": {
942
942
  "generatedBy": "Agentic QE Fleet",
943
- "fleetVersion": "3.15.10",
943
+ "fleetVersion": "3.15.12",
944
944
  "manifestVersion": "1.4.0",
945
945
  "lastUpdated": "2026-04-13T00:00:00.000Z",
946
946
  "contributors": [
@@ -53,15 +53,18 @@ export function parseFrontmatter(markdown) {
53
53
  if (keyValueMatch) {
54
54
  const [, indent, key, value] = keyValueMatch;
55
55
  const currentIndent = indent.length;
56
+ // #1157: keys come from agent markdown; skip ones that would re-prototype
57
+ // the result (and, for a top-level key, the nested block under it).
58
+ const unsafe = key === '__proto__' || key === 'constructor' || key === 'prototype';
56
59
  if (currentIndent === 0) {
57
60
  // Top-level key
58
61
  if (currentKey && indentLevel > 0) {
59
62
  result[currentKey] = nestedObj;
60
63
  nestedObj = {};
61
64
  }
62
- currentKey = key;
65
+ currentKey = unsafe ? '' : key;
63
66
  indentLevel = 0;
64
- if (value.trim()) {
67
+ if (value.trim() && !unsafe) {
65
68
  // Clean up quoted values
66
69
  result[key] = value.replace(/^["']|["']$/g, '');
67
70
  }
@@ -69,7 +72,7 @@ export function parseFrontmatter(markdown) {
69
72
  else if (currentIndent > 0 && currentKey) {
70
73
  // Nested key
71
74
  indentLevel = currentIndent;
72
- if (value.trim()) {
75
+ if (value.trim() && !unsafe) {
73
76
  nestedObj[key] = value.replace(/^["']|["']$/g, '');
74
77
  }
75
78
  }
@@ -401,7 +401,9 @@ export class TaskRouter extends EventEmitter {
401
401
  // Check capabilities
402
402
  if (request.requiredCapabilities) {
403
403
  for (const cap of request.requiredCapabilities) {
404
- if (!agent.capabilities[cap]) {
404
+ // #1157: the capability name comes from the routing request; an
405
+ // inherited member such as `toString` is not a capability.
406
+ if (!Object.hasOwn(agent.capabilities, cap) || !agent.capabilities[cap]) {
405
407
  return false;
406
408
  }
407
409
  }
@@ -135,7 +135,7 @@ export class TrajectoryAdapter {
135
135
  acc[type] = [];
136
136
  acc[type].push(t);
137
137
  return acc;
138
- }, {});
138
+ }, createSafeRecord()); // #1157: workflow types are stored data
139
139
  // Extract common sequences within each workflow type
140
140
  for (const [workflowType, trajs] of Object.entries(successfulByType)) {
141
141
  const commonSequences = this.findCommonSequences(trajs);
@@ -92,7 +92,9 @@ export declare class OutputBasedVerifier {
92
92
  */
93
93
  private verifyExistingEvidence;
94
94
  /**
95
- * Truncate output if it exceeds max size.
95
+ * Redact command output, then truncate it if it exceeds max size. #1150:
96
+ * redaction runs first, so a cut cannot leave a fragment of a secret that
97
+ * the redaction patterns no longer recognise.
96
98
  */
97
99
  private truncateOutput;
98
100
  }
@@ -12,6 +12,32 @@
12
12
  import { execFile } from 'node:child_process';
13
13
  import { promisify } from 'node:util';
14
14
  import { generateContentHash } from '../index.js';
15
+ import { redactLogText } from '../../../logging/redaction.js';
16
+ /** Output above this size is redacted in line-aligned pieces. */
17
+ const REDACT_PIECE_CHARS = 256 * 1024;
18
+ /**
19
+ * Redact command output of any size (#1150). redactLogText drops a string over
20
+ * its scan limit instead of scanning it, and maxBuffer lets output reach 1 MB,
21
+ * so long output is redacted in pieces cut at line ends, and a credential on
22
+ * one line is never split between pieces. A line longer than a piece stays
23
+ * whole; one over the scan limit is dropped by redactLogText, never cut.
24
+ */
25
+ function redactOutput(raw) {
26
+ if (raw.length <= REDACT_PIECE_CHARS)
27
+ return redactLogText(raw, Number.POSITIVE_INFINITY);
28
+ const parts = [];
29
+ for (let start = 0; start < raw.length;) {
30
+ let end = Math.min(start + REDACT_PIECE_CHARS, raw.length);
31
+ if (end < raw.length) {
32
+ const lineEnd = raw.lastIndexOf('\n', end - 1);
33
+ const next = raw.indexOf('\n', end);
34
+ end = lineEnd >= start ? lineEnd + 1 : next === -1 ? raw.length : next + 1;
35
+ }
36
+ parts.push(redactLogText(raw.slice(start, end), Number.POSITIVE_INFINITY));
37
+ start = end;
38
+ }
39
+ return parts.join('');
40
+ }
15
41
  const execFileAsync = promisify(execFile);
16
42
  const ALLOWED_COMMANDS = new Map([
17
43
  ['npm run build', { bin: 'npm', args: ['run', 'build'] }],
@@ -347,9 +373,12 @@ export class OutputBasedVerifier {
347
373
  return { evidence, verified, reasoning, confidence };
348
374
  }
349
375
  /**
350
- * Truncate output if it exceeds max size.
376
+ * Redact command output, then truncate it if it exceeds max size. #1150:
377
+ * redaction runs first, so a cut cannot leave a fragment of a secret that
378
+ * the redaction patterns no longer recognise.
351
379
  */
352
- truncateOutput(output) {
380
+ truncateOutput(raw) {
381
+ const output = redactOutput(raw);
353
382
  if (output.length <= this.config.maxOutputSize) {
354
383
  return output;
355
384
  }
@@ -8,6 +8,11 @@ import { readFileSync, existsSync, readdirSync } from 'fs';
8
8
  import { join, basename } from 'path';
9
9
  import { validateOverlay } from './overlay-schema.js';
10
10
  const OVERRIDES_DIR = '.claude/agent-overrides';
11
+ /**
12
+ * #1157: keys come from the overlay file. These would reach Object.prototype
13
+ * (or the Object constructor) through a plain object, so they are skipped.
14
+ */
15
+ const UNSAFE_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
11
16
  /**
12
17
  * Parse YAML-like overlay files.
13
18
  * Uses a simple parser to avoid adding a yaml dependency.
@@ -15,9 +20,17 @@ const OVERRIDES_DIR = '.claude/agent-overrides';
15
20
  */
16
21
  function parseSimpleYaml(content) {
17
22
  const result = {};
23
+ // An own section object for `name`; an inherited member never counts.
24
+ const sectionOf = (name) => {
25
+ const existing = Object.hasOwn(result, name) ? result[name] : undefined;
26
+ if (existing !== null && typeof existing === 'object')
27
+ return existing;
28
+ const fresh = {};
29
+ result[name] = fresh;
30
+ return fresh;
31
+ };
18
32
  const lines = content.split('\n');
19
33
  let currentSection = null;
20
- let currentSubSection = null;
21
34
  let currentArray = null;
22
35
  let currentArrayKey = null;
23
36
  for (const rawLine of lines) {
@@ -37,15 +50,8 @@ function parseSimpleYaml(content) {
37
50
  }
38
51
  // Flush any pending array
39
52
  if (currentArray && currentArrayKey) {
40
- if (currentSubSection && currentSection) {
41
- const section = result[currentSection] || {};
42
- section[currentArrayKey] = currentArray;
43
- result[currentSection] = section;
44
- }
45
- else if (currentSection) {
46
- const section = result[currentSection] || {};
47
- section[currentArrayKey] = currentArray;
48
- result[currentSection] = section;
53
+ if (currentSection) {
54
+ sectionOf(currentSection)[currentArrayKey] = currentArray;
49
55
  }
50
56
  currentArray = null;
51
57
  currentArrayKey = null;
@@ -56,39 +62,38 @@ function parseSimpleYaml(content) {
56
62
  continue;
57
63
  const [, key, rawValue] = match;
58
64
  const value = rawValue.trim().replace(/^["']|["']$/g, '');
65
+ if (UNSAFE_KEYS.has(key)) {
66
+ // Skip the key, and a whole section under it.
67
+ if (indent === 0) {
68
+ currentSection = null;
69
+ }
70
+ continue;
71
+ }
59
72
  if (indent === 0) {
60
73
  // Top-level key
61
74
  if (value === '' || value === undefined) {
62
75
  currentSection = key;
63
- currentSubSection = null;
64
- if (!result[key])
65
- result[key] = {};
76
+ sectionOf(key);
66
77
  }
67
78
  else {
68
79
  result[key] = parseValue(value);
69
80
  currentSection = null;
70
- currentSubSection = null;
71
81
  }
72
82
  }
73
83
  else if (indent <= 4 && currentSection) {
74
84
  if (value === '' || value === undefined) {
75
85
  // Sub-section or array start
76
- currentSubSection = key;
77
86
  currentArray = [];
78
87
  currentArrayKey = key;
79
88
  }
80
89
  else {
81
- const section = result[currentSection] || {};
82
- section[key] = parseValue(value);
83
- result[currentSection] = section;
90
+ sectionOf(currentSection)[key] = parseValue(value);
84
91
  }
85
92
  }
86
93
  }
87
94
  // Flush final array
88
95
  if (currentArray && currentArrayKey && currentSection) {
89
- const section = result[currentSection] || {};
90
- section[currentArrayKey] = currentArray;
91
- result[currentSection] = section;
96
+ sectionOf(currentSection)[currentArrayKey] = currentArray;
92
97
  }
93
98
  return result;
94
99
  }