agentic-qe 3.15.11 → 3.15.13

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 (522) hide show
  1. package/.claude/hooks/aqe-hook.cjs +38 -2
  2. package/.claude/skills/skills-manifest.json +1 -1
  3. package/CHANGELOG.md +267 -0
  4. package/assets/skills/skills-manifest.json +1 -1
  5. package/dist/cli/bundle.js +6 -6
  6. package/dist/cli/chunks/adapter-KCQDVYY2.js +2 -0
  7. package/dist/cli/chunks/{agent-booster-wasm-TIDSQ3ZK.js → agent-booster-wasm-6RRQWMNE.js} +2 -2
  8. package/dist/cli/chunks/{agent-handler-G3EPBVA7.js → agent-handler-AOH6TV7W.js} +2 -2
  9. package/dist/cli/chunks/{agent-memory-branch-ARC5C7GW.js → agent-memory-branch-2P54SF5N.js} +2 -2
  10. package/dist/cli/chunks/aqe-learning-engine-SAQOHSGN.js +2 -0
  11. package/dist/cli/chunks/{arena-K4I4QDXB.js → arena-NSVFCAF5.js} +2 -2
  12. package/dist/cli/chunks/{arena-36DTATJV.js → arena-X6MOGQHA.js} +4 -4
  13. package/dist/cli/chunks/{audit-WQSJSJZF.js → audit-27DJLQNM.js} +3 -3
  14. package/dist/cli/chunks/base-WCACU3FN.js +2 -0
  15. package/dist/cli/chunks/{better-sqlite3-BB4K67MT.js → better-sqlite3-BU5GXILS.js} +2 -2
  16. package/dist/cli/chunks/{brain-handler-CU3GOIU3.js → brain-handler-GTQNHHZS.js} +3 -3
  17. package/dist/cli/chunks/{branch-enumerator-NJQX7ZNB.js → branch-enumerator-5CLULOCU.js} +2 -2
  18. package/dist/cli/chunks/{browser-6YJF4FQW.js → browser-R4DMU3LN.js} +2 -2
  19. package/dist/cli/chunks/browser-workflow-G6IASEAP.js +2 -0
  20. package/dist/cli/chunks/{chunk-G4FAPO57.js → chunk-2G7TVT6W.js} +2 -2
  21. package/dist/cli/chunks/{chunk-HDNWSKHA.js → chunk-32ZMWEP3.js} +2 -2
  22. package/dist/cli/chunks/{chunk-FWSGPE3V.js → chunk-3AN5TNGD.js} +3 -3
  23. package/dist/cli/chunks/{chunk-X4J73KP3.js → chunk-3LJ7LQMV.js} +1 -1
  24. package/dist/cli/chunks/{chunk-3RHOPP7A.js → chunk-3QZEGE67.js} +1 -1
  25. package/dist/cli/chunks/{chunk-RBZCA7SD.js → chunk-3RZV5DGO.js} +2 -2
  26. package/dist/cli/chunks/{chunk-DDEOZPWJ.js → chunk-3Y2ROSCL.js} +2 -2
  27. package/dist/cli/chunks/{chunk-LD5CFK53.js → chunk-3Y7TJFHU.js} +2 -2
  28. package/dist/cli/chunks/{chunk-I36CRDHF.js → chunk-3YNLWPBF.js} +2 -2
  29. package/dist/cli/chunks/{chunk-ZMC543GI.js → chunk-42J34YG4.js} +2 -2
  30. package/dist/cli/chunks/{chunk-YNOCQ2SL.js → chunk-4OVC4RIL.js} +1 -1
  31. package/dist/cli/chunks/{chunk-2KFFEKSI.js → chunk-526QYFJU.js} +2 -2
  32. package/dist/cli/chunks/{chunk-LBX7M4LW.js → chunk-5FKWCZNF.js} +2 -2
  33. package/dist/cli/chunks/{chunk-OH5V5EJW.js → chunk-5K26BEYB.js} +2 -2
  34. package/dist/cli/chunks/{chunk-TCYSBC7Y.js → chunk-5MDERQH3.js} +1 -1
  35. package/dist/cli/chunks/{chunk-V5AADCBC.js → chunk-5VMAV6T6.js} +1 -1
  36. package/dist/cli/chunks/{chunk-YBBT3YYG.js → chunk-5ZGM3RMH.js} +1 -1
  37. package/dist/cli/chunks/{chunk-RTY7VSZB.js → chunk-6KATY3KS.js} +2 -2
  38. package/dist/cli/chunks/{chunk-LPU6PAJE.js → chunk-6Z7PRBSG.js} +2 -2
  39. package/dist/cli/chunks/{chunk-6NA3KZZT.js → chunk-72ASBE35.js} +7 -7
  40. package/dist/cli/chunks/{chunk-GBFUANTC.js → chunk-756CGMEH.js} +1 -1
  41. package/dist/cli/chunks/{chunk-UTTSH4NH.js → chunk-75RDHBAX.js} +3 -3
  42. package/dist/cli/chunks/{chunk-XGPTZUKQ.js → chunk-7CMTY45A.js} +2 -2
  43. package/dist/cli/chunks/{chunk-NC6K7SCQ.js → chunk-7JUC2MVZ.js} +2 -2
  44. package/dist/cli/chunks/{chunk-RTFKTKSO.js → chunk-7NA7JXNB.js} +2 -2
  45. package/dist/cli/chunks/{chunk-GWJWSLDA.js → chunk-7PLIEBY7.js} +2 -2
  46. package/dist/cli/chunks/{chunk-OURITHFV.js → chunk-7YTGHGK4.js} +2 -2
  47. package/dist/cli/chunks/{chunk-ITL3IN2E.js → chunk-A64JFBWI.js} +2 -2
  48. package/dist/cli/chunks/{chunk-OHR7C777.js → chunk-AL6FBH3E.js} +2 -2
  49. package/dist/cli/chunks/{chunk-5N25I53C.js → chunk-AQSVJNEH.js} +2 -2
  50. package/dist/cli/chunks/{chunk-FL32MTKT.js → chunk-ARJW4I2O.js} +2 -2
  51. package/dist/cli/chunks/{chunk-ZQHDA4O7.js → chunk-ASQYASNV.js} +1 -1
  52. package/dist/cli/chunks/{chunk-4HJKQIX5.js → chunk-BEGR4D6N.js} +2 -2
  53. package/dist/cli/chunks/{chunk-G77MLBDF.js → chunk-BK577VL7.js} +2 -2
  54. package/dist/cli/chunks/{chunk-NPZOBSAN.js → chunk-BLSLEVDI.js} +2 -2
  55. package/dist/cli/chunks/{chunk-R5LGV6GZ.js → chunk-BTVEYBW2.js} +2 -2
  56. package/dist/cli/chunks/{chunk-2CW7VRPH.js → chunk-C6JTLKG7.js} +5 -5
  57. package/dist/cli/chunks/{chunk-EWPUQCN4.js → chunk-C7JM7CD3.js} +2 -2
  58. package/dist/cli/chunks/{chunk-325QCVDI.js → chunk-CCMKSHAT.js} +2 -2
  59. package/dist/cli/chunks/{chunk-V7DA4HAK.js → chunk-CE7B5LU7.js} +1 -1
  60. package/dist/cli/chunks/{chunk-4RAQ7PJA.js → chunk-CM4LSLKR.js} +2 -2
  61. package/dist/cli/chunks/chunk-CRWPZT74.js +62 -0
  62. package/dist/cli/chunks/{chunk-U3LJNNVJ.js → chunk-CT6SAVXQ.js} +2 -2
  63. package/dist/cli/chunks/chunk-CV77DMDQ.js +2 -0
  64. package/dist/cli/chunks/{chunk-UMVSWQNB.js → chunk-DFUASIKA.js} +2 -2
  65. package/dist/cli/chunks/{chunk-KSE5TDM5.js → chunk-DLD7RUZ4.js} +2 -2
  66. package/dist/cli/chunks/{chunk-4MUBW4RT.js → chunk-DNDL7SOS.js} +2 -2
  67. package/dist/cli/chunks/{chunk-EJPK7OTR.js → chunk-DVGRPK7A.js} +2 -2
  68. package/dist/cli/chunks/{chunk-WCVCOT4E.js → chunk-E56B6IDX.js} +2 -2
  69. package/dist/cli/chunks/{chunk-7HEMJHPP.js → chunk-E7CLYGS7.js} +1 -1
  70. package/dist/cli/chunks/{chunk-R5GRABPQ.js → chunk-EXGMJFAT.js} +1 -1
  71. package/dist/cli/chunks/chunk-F3YS57NF.js +21 -0
  72. package/dist/cli/chunks/{chunk-I4K2HTQU.js → chunk-FZ76G4QJ.js} +1 -1
  73. package/dist/cli/chunks/{chunk-4UX35V7P.js → chunk-G2Q66Z23.js} +2 -2
  74. package/dist/cli/chunks/{chunk-KJCIMNHS.js → chunk-G6WDYBLQ.js} +1 -1
  75. package/dist/cli/chunks/{chunk-VWUZSNVC.js → chunk-G77ERMUD.js} +1 -1
  76. package/dist/cli/chunks/{chunk-FZHSG75I.js → chunk-GB6HBNH2.js} +2 -2
  77. package/dist/cli/chunks/{chunk-KDI5JOYZ.js → chunk-GHM6MQNK.js} +2 -2
  78. package/dist/cli/chunks/{chunk-H7BLYMNU.js → chunk-GHY6Z6KO.js} +5 -5
  79. package/dist/cli/chunks/{chunk-TFW7CCKS.js → chunk-GII6UM3F.js} +1 -1
  80. package/dist/cli/chunks/{chunk-DOBZPSKE.js → chunk-GU5HNCWI.js} +1 -1
  81. package/dist/cli/chunks/{chunk-AFFN6E6Q.js → chunk-H4GG2NLO.js} +2 -2
  82. package/dist/cli/chunks/{chunk-7R5HC56U.js → chunk-H4H2YSFH.js} +1 -1
  83. package/dist/cli/chunks/{chunk-J4JMCZVA.js → chunk-HD7YIFOI.js} +2 -2
  84. package/dist/cli/chunks/{chunk-5MTWCCZJ.js → chunk-HOAJUIBQ.js} +2 -2
  85. package/dist/cli/chunks/{chunk-T5KHJ3J7.js → chunk-HQZGPJYG.js} +2 -2
  86. package/dist/cli/chunks/{chunk-VEEYL2CZ.js → chunk-HZ5NXFXH.js} +2 -2
  87. package/dist/cli/chunks/{chunk-LQ4NUC6Q.js → chunk-I3C7JOXC.js} +2 -2
  88. package/dist/cli/chunks/{chunk-Z2EA7A4Z.js → chunk-IC3TQEOA.js} +1 -1
  89. package/dist/cli/chunks/{chunk-E44NNCEU.js → chunk-IJUHSJ2U.js} +2 -2
  90. package/dist/cli/chunks/{chunk-EH2S6AOR.js → chunk-J2ZIFFM6.js} +2 -2
  91. package/dist/cli/chunks/{chunk-GVKVJJQX.js → chunk-JGZ722G3.js} +2 -2
  92. package/dist/cli/chunks/{chunk-EK5GMOSO.js → chunk-JQGMW45H.js} +1 -1
  93. package/dist/cli/chunks/{chunk-XGBU3KEM.js → chunk-JRRXCODW.js} +2 -2
  94. package/dist/cli/chunks/{chunk-5WYZHDIZ.js → chunk-K3TLLJMX.js} +1 -1
  95. package/dist/cli/chunks/{chunk-LXQ3B4RY.js → chunk-K4CZA77U.js} +2 -2
  96. package/dist/cli/chunks/chunk-K65CGKLD.js +8 -0
  97. package/dist/cli/chunks/{chunk-HFFPYC4G.js → chunk-KADFXPPN.js} +2 -2
  98. package/dist/cli/chunks/{chunk-APPZATXA.js → chunk-KB56CPU4.js} +2 -2
  99. package/dist/cli/chunks/{chunk-25P77WA5.js → chunk-KCW47QR5.js} +1 -1
  100. package/dist/cli/chunks/{chunk-WM3SRRA6.js → chunk-KDNJ4F3P.js} +2 -2
  101. package/dist/cli/chunks/{chunk-5ERFHEEE.js → chunk-KDVZND5Q.js} +1 -1
  102. package/dist/cli/chunks/{chunk-YOCULVHR.js → chunk-KUAKV3IW.js} +1 -1
  103. package/dist/cli/chunks/{chunk-M5XYIQYZ.js → chunk-KV4T4MXK.js} +2 -2
  104. package/dist/cli/chunks/{chunk-MIK4RBEH.js → chunk-KWYH3FI4.js} +1 -1
  105. package/dist/cli/chunks/{chunk-UKKYMW3S.js → chunk-LFJALJOA.js} +2 -2
  106. package/dist/cli/chunks/{chunk-K7V2WZNF.js → chunk-LL7LDPXS.js} +1 -1
  107. package/dist/cli/chunks/{chunk-55CH76ZO.js → chunk-LUZNKJE6.js} +3 -3
  108. package/dist/cli/chunks/{chunk-OV5RPLKV.js → chunk-LWR3FV3Y.js} +2 -2
  109. package/dist/cli/chunks/{chunk-SMVVAVN2.js → chunk-LZYQHVD4.js} +2 -2
  110. package/dist/cli/chunks/{chunk-672XOJDG.js → chunk-M6AAGIG7.js} +1 -1
  111. package/dist/cli/chunks/{chunk-WCAVIJ64.js → chunk-MAMQA43L.js} +1 -1
  112. package/dist/cli/chunks/chunk-MB46UBGY.js +3 -0
  113. package/dist/cli/chunks/{chunk-AP3ADWDK.js → chunk-MFW5HSG4.js} +2 -2
  114. package/dist/cli/chunks/{chunk-NKTWKYHB.js → chunk-MGZ5FJUW.js} +2 -2
  115. package/dist/cli/chunks/{chunk-ERN43HOX.js → chunk-MVVB7C2E.js} +410 -410
  116. package/dist/cli/chunks/{chunk-57LNKSW7.js → chunk-N4CYAKOX.js} +2 -2
  117. package/dist/cli/chunks/chunk-NT4DBXSX.js +2 -0
  118. package/dist/cli/chunks/{chunk-BZPE3LDO.js → chunk-NU3W5WFT.js} +2 -2
  119. package/dist/cli/chunks/chunk-NURIILUB.js +2 -0
  120. package/dist/cli/chunks/{chunk-ITPGWGQS.js → chunk-NW7IBHJA.js} +4 -4
  121. package/dist/cli/chunks/{chunk-OD5D4LSZ.js → chunk-NZ3GUMB2.js} +2 -2
  122. package/dist/cli/chunks/{chunk-35M2X3C5.js → chunk-NZD4DPSU.js} +2 -2
  123. package/dist/cli/chunks/{chunk-EIDJNT5C.js → chunk-O6FGXMHD.js} +1 -1
  124. package/dist/cli/chunks/{chunk-OYJC3YON.js → chunk-OCAEXYFA.js} +2 -2
  125. package/dist/cli/chunks/{chunk-Y7B5EUIJ.js → chunk-OFACHK5O.js} +2 -2
  126. package/dist/cli/chunks/{chunk-5MNASJOH.js → chunk-P7A4NKTZ.js} +2 -2
  127. package/dist/cli/chunks/{chunk-M7XFBSIK.js → chunk-PB6J6HAA.js} +2 -2
  128. package/dist/cli/chunks/{chunk-5HQP4SLM.js → chunk-PHP5UBT4.js} +2 -2
  129. package/dist/cli/chunks/{chunk-KXS3Y2AX.js → chunk-PIDQVU3L.js} +2 -2
  130. package/dist/cli/chunks/{chunk-4UBVAJFO.js → chunk-PSFSPGUD.js} +2 -2
  131. package/dist/cli/chunks/chunk-PT4FMJPQ.js +3 -0
  132. package/dist/cli/chunks/{chunk-HDJUYAZG.js → chunk-Q3UDLV5Z.js} +1 -1
  133. package/dist/cli/chunks/{chunk-CIAL4YRY.js → chunk-QDEJ4CI2.js} +2 -2
  134. package/dist/cli/chunks/{chunk-S6IYEBAI.js → chunk-QPNG5ZN2.js} +2 -2
  135. package/dist/cli/chunks/{chunk-YPX2TV3M.js → chunk-R7SYRCRP.js} +1 -1
  136. package/dist/cli/chunks/{chunk-XNLIWQYE.js → chunk-RF7HWBHN.js} +2 -2
  137. package/dist/cli/chunks/{chunk-5YLOLACR.js → chunk-RFNW2LGD.js} +2 -2
  138. package/dist/cli/chunks/{chunk-2VLYUF7U.js → chunk-S5AZCIZS.js} +2 -2
  139. package/dist/cli/chunks/{chunk-ETVAYGCB.js → chunk-SE4VNN4I.js} +3 -3
  140. package/dist/cli/chunks/{chunk-E6PF35JZ.js → chunk-SG3NX7QE.js} +2 -2
  141. package/dist/cli/chunks/{chunk-VYTILW4R.js → chunk-SSU73QAX.js} +2 -2
  142. package/dist/cli/chunks/{chunk-ZP75ASUU.js → chunk-SVLQRAMF.js} +1 -1
  143. package/dist/cli/chunks/{chunk-JGJXXAS6.js → chunk-SYV2V3PL.js} +4 -4
  144. package/dist/cli/chunks/{chunk-4RH5I24Q.js → chunk-T3PGQFDI.js} +2 -2
  145. package/dist/cli/chunks/{chunk-O4JAKWWM.js → chunk-TCBBNUBP.js} +17 -17
  146. package/dist/cli/chunks/{chunk-QDESWOZP.js → chunk-TOQWL2ZF.js} +2 -2
  147. package/dist/cli/chunks/{chunk-NTB342NJ.js → chunk-TSQC2KKZ.js} +4 -4
  148. package/dist/cli/chunks/{chunk-NQZNMCZU.js → chunk-TWDW32W2.js} +2 -2
  149. package/dist/cli/chunks/{chunk-CO3DX2AX.js → chunk-TWJTK4CC.js} +2 -2
  150. package/dist/cli/chunks/{chunk-FUYOOKTH.js → chunk-U2FUXDDJ.js} +3 -3
  151. package/dist/cli/chunks/{chunk-XDI5X3FR.js → chunk-UDQSYWVF.js} +1 -1
  152. package/dist/cli/chunks/chunk-UOC3O6RP.js +5 -0
  153. package/dist/cli/chunks/chunk-UT2VZ33P.js +2 -0
  154. package/dist/cli/chunks/{chunk-IOZRKXR5.js → chunk-UTRV7T2N.js} +2 -2
  155. package/dist/cli/chunks/{chunk-ZMHCMJ4J.js → chunk-UXZSUMEA.js} +2 -2
  156. package/dist/cli/chunks/{chunk-G4CKPWF6.js → chunk-VRHRBAEM.js} +1 -1
  157. package/dist/cli/chunks/{chunk-AUUJBXWX.js → chunk-VRVMIPTM.js} +2 -2
  158. package/dist/cli/chunks/{chunk-IENZSO3K.js → chunk-VTDFVFST.js} +2 -2
  159. package/dist/cli/chunks/{chunk-JFLU7L3W.js → chunk-VTOBUZL6.js} +2 -2
  160. package/dist/cli/chunks/{chunk-KKYO2NKV.js → chunk-VU5TBX2V.js} +2 -2
  161. package/dist/cli/chunks/{chunk-XS2XF3YG.js → chunk-W26B7ERY.js} +1 -1
  162. package/dist/cli/chunks/{chunk-DOFREOPQ.js → chunk-W2QWSQVE.js} +2 -2
  163. package/dist/cli/chunks/{chunk-KSLLHFVY.js → chunk-W3INMZZ6.js} +1 -1
  164. package/dist/cli/chunks/{chunk-FLU5FDSC.js → chunk-W3PPFHI5.js} +59 -59
  165. package/dist/cli/chunks/chunk-WKGTGOYS.js +13 -0
  166. package/dist/cli/chunks/{chunk-4X4MWMHB.js → chunk-WNQS4WTS.js} +2 -2
  167. package/dist/cli/chunks/{chunk-XJKZ7FTR.js → chunk-WO274FRI.js} +2 -2
  168. package/dist/cli/chunks/{chunk-76SNL7GU.js → chunk-WOCGL4QP.js} +2 -2
  169. package/dist/cli/chunks/{chunk-HYXUN7BW.js → chunk-WQL7WCIZ.js} +1 -1
  170. package/dist/cli/chunks/{chunk-BTVWA35P.js → chunk-X2Z7F4EU.js} +2 -2
  171. package/dist/cli/chunks/{chunk-VBK2YAYY.js → chunk-X7N2JF2X.js} +2 -2
  172. package/dist/cli/chunks/{chunk-NT7JRHMH.js → chunk-XEAEYC6Y.js} +1 -1
  173. package/dist/cli/chunks/{chunk-G2IJFNZS.js → chunk-XNBOGCF3.js} +2 -2
  174. package/dist/cli/chunks/{chunk-LCVEEII4.js → chunk-XPRVF4YE.js} +2 -2
  175. package/dist/cli/chunks/{chunk-AMZKAJLJ.js → chunk-YBQH2VOP.js} +2 -2
  176. package/dist/cli/chunks/{chunk-JUMICXM6.js → chunk-YQFLQE53.js} +2 -2
  177. package/dist/cli/chunks/{chunk-M5RQ6U3G.js → chunk-YSZ5OE3Z.js} +2 -2
  178. package/dist/cli/chunks/{chunk-RQMCZQN2.js → chunk-YXRASAPI.js} +2 -2
  179. package/dist/cli/chunks/{chunk-X3PZCXWG.js → chunk-YZEXYO4W.js} +1 -1
  180. package/dist/cli/chunks/{chunk-TL6OFMXF.js → chunk-YZWBNBTW.js} +2 -2
  181. package/dist/cli/chunks/{chunk-CFWGGRE7.js → chunk-ZAKQLAHT.js} +1 -1
  182. package/dist/cli/chunks/ci-ENOASTYB.js +81 -0
  183. package/dist/cli/chunks/{ci-config-J665XNOX.js → ci-config-B26OXHQM.js} +2 -2
  184. package/dist/cli/chunks/{ci-output-PEQQQWVD.js → ci-output-JTCLLNOQ.js} +2 -2
  185. package/dist/cli/chunks/{circuit-breaker-HHB2JSKH.js → circuit-breaker-23JMFNM5.js} +2 -2
  186. package/dist/cli/chunks/{claude-flow-setup-JKUJRWPN.js → claude-flow-setup-ON6L462G.js} +2 -2
  187. package/dist/cli/chunks/client-TV3V2YZ5.js +2 -0
  188. package/dist/cli/chunks/{cline-installer-Y77BWTAN.js → cline-installer-OWQ4D2FQ.js} +2 -2
  189. package/dist/cli/chunks/{code-LV2HAGJY.js → code-2ZRL7SEU.js} +19 -18
  190. package/dist/cli/chunks/{code-index-extractor-4GKKSETB.js → code-index-extractor-JXSQVM67.js} +2 -2
  191. package/dist/cli/chunks/{codex-installer-WMKBYE5Y.js → codex-installer-7LXZYBSQ.js} +2 -2
  192. package/dist/cli/chunks/{completions-SBGFAOIJ.js → completions-C2LR623C.js} +2 -2
  193. package/dist/cli/chunks/{complexity-analyzer-AQHFIJXC.js → complexity-analyzer-TGQLHCYJ.js} +2 -2
  194. package/dist/cli/chunks/{continuedev-installer-26AYFS2E.js → continuedev-installer-RUGD24D2.js} +2 -2
  195. package/dist/cli/chunks/{copilot-installer-4UD3DK55.js → copilot-installer-ZLFVLEJP.js} +2 -2
  196. package/dist/cli/chunks/core-handlers-PZT4OLWR.js +2 -0
  197. package/dist/cli/chunks/{cost-tracker-TP4NZCG4.js → cost-tracker-RT4QL745.js} +2 -2
  198. package/dist/cli/chunks/{coverage-B2KIXHAI.js → coverage-NV3C4IMM.js} +11 -10
  199. package/dist/cli/chunks/cross-domain-router-QOFCZ7G4.js +2 -0
  200. package/dist/cli/chunks/{cursor-installer-AVZEQZ4W.js → cursor-installer-LJKLNFF6.js} +2 -2
  201. package/dist/cli/chunks/{daemon-XM2A7LQU.js → daemon-BMDXCQT5.js} +3 -3
  202. package/dist/cli/chunks/{daemon-P574WWBW.js → daemon-FBH3IRYN.js} +4 -4
  203. package/dist/cli/chunks/{dag-attention-scheduler-MIWOZ6ET.js → dag-attention-scheduler-JGDED55I.js} +2 -2
  204. package/dist/cli/chunks/{detect-TYR7HT23.js → detect-SZIHIVCJ.js} +2 -2
  205. package/dist/cli/chunks/{dist-node-2DGVQGLS.js → dist-node-FV3KWXQ6.js} +2 -2
  206. package/dist/cli/chunks/{domain-handler-RRA4ZOMF.js → domain-handler-GI5JWQOV.js} +2 -2
  207. package/dist/cli/chunks/{domain-plugins-IVZEZ5RB.js → domain-plugins-BUWY36TL.js} +2 -2
  208. package/dist/cli/chunks/domain-transfer-GCY7W5DA.js +2 -0
  209. package/dist/cli/chunks/dream-TRFBGDSQ.js +2 -0
  210. package/dist/cli/chunks/{embed-and-insert-pattern-VNIEOVPO.js → embed-and-insert-pattern-GPRR3ZGD.js} +2 -2
  211. package/dist/cli/chunks/{eval-QV4LVPUF.js → eval-XPB3IGAP.js} +2 -2
  212. package/dist/cli/chunks/{experience-capture-middleware-DAPKT763.js → experience-capture-middleware-2E554UB3.js} +3 -3
  213. package/dist/cli/chunks/{fast-paths-WVRFPHX7.js → fast-paths-ZSMWZPUC.js} +2 -2
  214. package/dist/cli/chunks/{feature-flags-DEFTUIYT.js → feature-flags-GIWVDVVC.js} +2 -2
  215. package/dist/cli/chunks/{feature-flags-O7ZXDDCD.js → feature-flags-N7EOGE5P.js} +2 -2
  216. package/dist/cli/chunks/file-discovery-WCKGMSPZ.js +2 -0
  217. package/dist/cli/chunks/fleet-HCHDOUCX.js +44 -0
  218. package/dist/cli/chunks/{gnn-wrapper-LS4LZJDR.js → gnn-wrapper-CZNCNXXZ.js} +2 -2
  219. package/dist/cli/chunks/{heartbeat-handler-RFTERD4K.js → heartbeat-handler-6YUIF2YQ.js} +4 -4
  220. package/dist/cli/chunks/heartbeat-scheduler-P44A2OX3.js +2 -0
  221. package/dist/cli/chunks/hnsw-adapter-ZJQIQJKC.js +2 -0
  222. package/dist/cli/chunks/hnsw-index-HMG2GH3Z.js +2 -0
  223. package/dist/cli/chunks/{hnsw-legacy-bridge-GPKGFFHY.js → hnsw-legacy-bridge-J3M3IK24.js} +2 -2
  224. package/dist/cli/chunks/{hnswlib-node-PHL3F2PR.js → hnswlib-node-ULGTGDZW.js} +2 -2
  225. package/dist/cli/chunks/{hooks-GYJ6D4QM.js → hooks-C4BUGYUQ.js} +28 -28
  226. package/dist/cli/chunks/hybrid-backend-B7M74PZG.js +2 -0
  227. package/dist/cli/chunks/{hypergraph-engine-YGEQPCKJ.js → hypergraph-engine-WINGVMPG.js} +2 -2
  228. package/dist/cli/chunks/{hypergraph-handler-ZIMM647V.js → hypergraph-handler-GADMWKAU.js} +3 -3
  229. package/dist/cli/chunks/impact-analyzer-PZYOVKQO.js +2 -0
  230. package/dist/cli/chunks/{init-guard-VOMBXJXG.js → init-guard-K2T4QWAO.js} +2 -2
  231. package/dist/cli/chunks/{init-handler-PSMUBWK5.js → init-handler-PCZTDZYI.js} +6 -6
  232. package/dist/cli/chunks/init-wizard-TZDJQK3U.js +2 -0
  233. package/dist/cli/chunks/kernel-Y6RRIOKW.js +2 -0
  234. package/dist/cli/chunks/{kilocode-installer-2YNTFBWJ.js → kilocode-installer-XENXNEIU.js} +2 -2
  235. package/dist/cli/chunks/{kiro-installer-XHJDPVAZ.js → kiro-installer-3PG2TJ67.js} +2 -2
  236. package/dist/cli/chunks/knowledge-graph-BVD5Z66M.js +2 -0
  237. package/dist/cli/chunks/{learning-GNSIDRNG.js → learning-6KDH7FK4.js} +3 -3
  238. package/dist/cli/chunks/{llm-router-LQDM7IU2.js → llm-router-RKVDEWU2.js} +4 -4
  239. package/dist/cli/chunks/llm-router-service-KHCAMSUU.js +2 -0
  240. package/dist/cli/chunks/{load-YATHI72E.js → load-ITHC564X.js} +2 -2
  241. package/dist/cli/chunks/load-test-RUF7DZA5.js +2 -0
  242. package/dist/cli/chunks/{mcp-4Y6GDLYK.js → mcp-TCL5UW3N.js} +2 -2
  243. package/dist/cli/chunks/{memory-OUW3L7H2.js → memory-BKDAY2N2.js} +5 -5
  244. package/dist/cli/chunks/memory-backend-7ZLFOVGG.js +2 -0
  245. package/dist/cli/chunks/{memory-handlers-G3LFF53U.js → memory-handlers-WN4FXFOA.js} +2 -2
  246. package/dist/cli/chunks/{multi-model-executor-UBZJXAD2.js → multi-model-executor-VHAT7ZPF.js} +2 -2
  247. package/dist/cli/chunks/{opencode-installer-AMMNWVH5.js → opencode-installer-E3VM3EEY.js} +2 -2
  248. package/dist/cli/chunks/{orchestrator-Y44WDOER.js → orchestrator-BMQ6X762.js} +58 -20
  249. package/dist/cli/chunks/pattern-null-store-RY6CVYHP.js +2 -0
  250. package/dist/cli/chunks/{pattern-usage-recorder-ESR42RME.js → pattern-usage-recorder-GOOR2BV5.js} +2 -2
  251. package/dist/cli/chunks/{pipeline-EDTS6OSC.js → pipeline-5NSFQQIX.js} +2 -2
  252. package/dist/cli/chunks/{platform-5WONJSUX.js → platform-SQM34J5G.js} +2 -2
  253. package/dist/cli/chunks/{plugin-IJXPCLD4.js → plugin-UQJZRMZG.js} +2 -2
  254. package/dist/cli/chunks/{prime-radiant-advanced-wasm-5ECKGZK6.js → prime-radiant-advanced-wasm-WMDJOL4S.js} +2 -2
  255. package/dist/cli/chunks/project-root-IO5KRNGL.js +2 -0
  256. package/dist/cli/chunks/protocol-executor-U2CUDWDE.js +2 -0
  257. package/dist/cli/chunks/{protocol-handler-DRD3GVNW.js → protocol-handler-OBDCVY6X.js} +2 -2
  258. package/dist/cli/chunks/{prove-KTGW2HMJ.js → prove-XDC7I4XT.js} +2 -2
  259. package/dist/cli/chunks/qe-reasoning-bank-DQSSX2IP.js +2 -0
  260. package/dist/cli/chunks/{quality-DV2WPRRS.js → quality-L4GQ6WX4.js} +2 -2
  261. package/dist/cli/chunks/{quality-gate-HFUAFVZC.js → quality-gate-MJG66LKN.js} +3 -3
  262. package/dist/cli/chunks/queen-coordinator-6FN4BZIX.js +2 -0
  263. package/dist/cli/chunks/real-embeddings-HW4G2LWL.js +2 -0
  264. package/dist/cli/chunks/{ref-validation-QWSKS5OY.js → ref-validation-FC7JOJ2C.js} +2 -2
  265. package/dist/cli/chunks/{roocode-installer-RBAYRCHX.js → roocode-installer-KWS4CEIC.js} +2 -2
  266. package/dist/cli/chunks/router-YUO3I7RU.js +2 -0
  267. package/dist/cli/chunks/routing-feedback-36SLQGJE.js +2 -0
  268. package/dist/cli/chunks/{routing-handler-FMPP3XKO.js → routing-handler-QF4WVB2S.js} +2 -2
  269. package/dist/cli/chunks/{ruvector-commands-KZZT4HWF.js → ruvector-commands-2MTCOUK6.js} +2 -2
  270. package/dist/cli/chunks/rvf-dual-writer-FRYZH3WZ.js +2 -0
  271. package/dist/cli/chunks/rvf-migration-adapter-XXNITL5I.js +2 -0
  272. package/dist/cli/chunks/{rvf-migration-coordinator-7CHEV35N.js → rvf-migration-coordinator-BREJCXWN.js} +2 -2
  273. package/dist/cli/chunks/rvf-native-adapter-D2WWKJIV.js +2 -0
  274. package/dist/cli/chunks/{rvf-store-integrity-Q2TH52SN.js → rvf-store-integrity-KKC6HOJD.js} +2 -2
  275. package/dist/cli/chunks/safe-db-4RRIGRXD.js +2 -0
  276. package/dist/cli/chunks/schedule-25RTO4DQ.js +2 -0
  277. package/dist/cli/chunks/scheduler-BPIOJZ5P.js +2 -0
  278. package/dist/cli/chunks/{security-CUEA3UIM.js → security-OSAE7VAP.js} +3 -3
  279. package/dist/cli/chunks/{shared-rvf-adapter-DROMBRV2.js → shared-rvf-adapter-COUOS665.js} +2 -2
  280. package/dist/cli/chunks/{shared-rvf-dual-writer-DBNABOP7.js → shared-rvf-dual-writer-YXMPZKQE.js} +2 -2
  281. package/dist/cli/chunks/sqlite-persistence-EDF47DDX.js +2 -0
  282. package/dist/cli/chunks/{standalone-memory-IAHA3M6B.js → standalone-memory-E6JBMOIL.js} +2 -2
  283. package/dist/cli/chunks/{status-handler-AFUCASTX.js → status-handler-AFTCIYIX.js} +2 -2
  284. package/dist/cli/chunks/{structural-health-AQRV6JJ6.js → structural-health-2FROCEI4.js} +2 -2
  285. package/dist/cli/chunks/{sync-XW5TLZ7M.js → sync-VAYTOWDC.js} +2 -2
  286. package/dist/cli/chunks/{sync-GX7FMJHL.js → sync-YIQYOFGW.js} +2 -2
  287. package/dist/cli/chunks/task-handler-KVQHDEX3.js +62 -0
  288. package/dist/cli/chunks/task-handlers-MVVECQA6.js +9 -0
  289. package/dist/cli/chunks/{test-D2XDJNDX.js → test-5JSVTOMY.js} +4 -4
  290. package/dist/cli/chunks/test-runner-process-LEPF2OSS.js +2 -0
  291. package/dist/cli/chunks/{test-scheduling-TS6I2PR7.js → test-scheduling-HBOHVLI3.js} +3 -3
  292. package/dist/cli/chunks/{token-bootstrap-HBBLPCZ3.js → token-bootstrap-5VEPTPFA.js} +2 -2
  293. package/dist/cli/chunks/{token-usage-3MBUX4PR.js → token-usage-TBJHDLY6.js} +2 -2
  294. package/dist/cli/chunks/{transformers-ZWMQO3L2.js → transformers-VAWYMHMZ.js} +2 -2
  295. package/dist/cli/chunks/tree-sitter-wasm-parser-TSZTCMFV.js +2 -0
  296. package/dist/cli/chunks/{types-5YEMGPSQ.js → types-R5SDZU2E.js} +2 -2
  297. package/dist/cli/chunks/unified-memory-TLGSSLMI.js +2 -0
  298. package/dist/cli/chunks/unified-memory-hnsw-MSUR7ZOO.js +2 -0
  299. package/dist/cli/chunks/unified-persistence-VFFOTWK7.js +2 -0
  300. package/dist/cli/chunks/{upgrade-2TPBKIHI.js → upgrade-K5PIHXRB.js} +2 -2
  301. package/dist/cli/chunks/{validate-XRAXXFW6.js → validate-RPTS7RYJ.js} +2 -2
  302. package/dist/cli/chunks/{validate-swarm-IYSCS3BZ.js → validate-swarm-B2ZL556X.js} +2 -2
  303. package/dist/cli/chunks/visual-security-6Q44XNLB.js +2 -0
  304. package/dist/cli/chunks/{web-tree-sitter-PZQ3ZG2P.js → web-tree-sitter-K4DUJC32.js} +2 -2
  305. package/dist/cli/chunks/{windsurf-installer-U6XWFRVT.js → windsurf-installer-OK2AJN35.js} +2 -2
  306. package/dist/cli/chunks/witness-chain-KDOMXDQX.js +2 -0
  307. package/dist/cli/chunks/witness-chain-N3OY2RMH.js +2 -0
  308. package/dist/cli/chunks/{witness-chain-repair-K7YX2AO6.js → witness-chain-repair-L6Y5RFXR.js} +2 -2
  309. package/dist/cli/chunks/{witness-chain-verifier-GUTC3W7N.js → witness-chain-verifier-N4CW7FZX.js} +2 -2
  310. package/dist/cli/chunks/{witness-key-manager-YBNKMOP6.js → witness-key-manager-TDNPS3WD.js} +2 -2
  311. package/dist/cli/chunks/{workflow-UAJUILFQ.js → workflow-XRZA3YCY.js} +4 -4
  312. package/dist/cli/chunks/workflow-orchestrator-CVNNT2RJ.js +2 -0
  313. package/dist/cli/chunks/{wrappers-AVZ3GPAL.js → wrappers-5JIFWKN6.js} +2 -2
  314. package/dist/cli/commands/ci.js +7 -0
  315. package/dist/cli/commands/code.js +6 -0
  316. package/dist/cli/commands/coverage.js +7 -1
  317. package/dist/cli/commands/fleet-run.d.ts +12 -0
  318. package/dist/cli/commands/fleet-run.js +175 -0
  319. package/dist/cli/commands/fleet.js +2 -117
  320. package/dist/cli/commands/hooks-handlers/stats-hooks.d.ts +4 -3
  321. package/dist/cli/commands/hooks-handlers/stats-hooks.js +22 -4
  322. package/dist/cli/handlers/task-handler.d.ts +5 -0
  323. package/dist/cli/handlers/task-handler.js +26 -0
  324. package/dist/cli/utils/coverage-verdict.d.ts +11 -2
  325. package/dist/cli/utils/coverage-verdict.js +26 -6
  326. package/dist/cli/utils/fleet-operation.d.ts +10 -2
  327. package/dist/cli/utils/fleet-operation.js +20 -3
  328. package/dist/cli/utils/fleet-result.d.ts +20 -4
  329. package/dist/cli/utils/fleet-result.js +32 -21
  330. package/dist/cli/utils/fleet-shard.d.ts +36 -0
  331. package/dist/cli/utils/fleet-shard.js +110 -0
  332. package/dist/coordination/handlers/code-intelligence-handlers.js +21 -1
  333. package/dist/coordination/handlers/coverage-collection.d.ts +2 -0
  334. package/dist/coordination/handlers/coverage-collection.js +2 -1
  335. package/dist/coordination/handlers/coverage-evidence.d.ts +75 -0
  336. package/dist/coordination/handlers/coverage-evidence.js +159 -0
  337. package/dist/coordination/handlers/coverage-handlers.js +16 -3
  338. package/dist/coordination/handlers/coverage-scope.d.ts +40 -0
  339. package/dist/coordination/handlers/coverage-scope.js +321 -0
  340. package/dist/coordination/handlers/coverage-target.d.ts +9 -0
  341. package/dist/coordination/handlers/coverage-target.js +15 -5
  342. package/dist/coordination/handlers/handler-types.d.ts +2 -2
  343. package/dist/coordination/handlers/handler-utils.d.ts +11 -0
  344. package/dist/coordination/handlers/handler-utils.js +22 -8
  345. package/dist/coordination/handlers/misc-handlers.js +5 -2
  346. package/dist/coordination/handlers/quality-handlers.js +2 -2
  347. package/dist/coordination/handlers/security-handlers.js +12 -2
  348. package/dist/coordination/protocols/security-audit.js +11 -1
  349. package/dist/coordination/task-executor.js +7 -2
  350. package/dist/domains/code-intelligence/coordinator-gnn.d.ts +2 -16
  351. package/dist/domains/code-intelligence/coordinator-gnn.js +1 -62
  352. package/dist/domains/code-intelligence/coordinator.d.ts +12 -6
  353. package/dist/domains/code-intelligence/coordinator.js +24 -27
  354. package/dist/domains/code-intelligence/interfaces.d.ts +9 -0
  355. package/dist/domains/code-intelligence/services/metric-collector/listing-process-owner.js +4 -1
  356. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +51 -5
  357. package/dist/domains/code-intelligence/services/semantic-analyzer.js +144 -78
  358. package/dist/domains/coverage-analysis/collected-metrics.d.ts +10 -0
  359. package/dist/domains/coverage-analysis/collected-metrics.js +29 -0
  360. package/dist/domains/coverage-analysis/services/coverage-analyzer.js +11 -3
  361. package/dist/domains/coverage-analysis/services/coverage-parser.d.ts +2 -0
  362. package/dist/domains/coverage-analysis/services/coverage-parser.js +18 -2
  363. package/dist/domains/quality-assessment/coherence/gate-controller.js +16 -4
  364. package/dist/domains/quality-assessment/coherence/lambda-calculator.d.ts +8 -0
  365. package/dist/domains/quality-assessment/coherence/lambda-calculator.js +57 -14
  366. package/dist/domains/quality-assessment/coherence/types.d.ts +12 -7
  367. package/dist/domains/quality-assessment/coordinator-gate-evaluation.js +3 -1
  368. package/dist/domains/quality-assessment/coordinator-reports.d.ts +30 -10
  369. package/dist/domains/quality-assessment/coordinator-reports.js +93 -57
  370. package/dist/domains/quality-assessment/coordinator.d.ts +14 -40
  371. package/dist/domains/quality-assessment/coordinator.js +10 -4
  372. package/dist/domains/quality-assessment/interfaces.d.ts +2 -0
  373. package/dist/domains/quality-assessment/services/coherence-gate.js +15 -2
  374. package/dist/domains/quality-assessment/services/quality-gate.js +6 -4
  375. package/dist/domains/security-compliance/index.d.ts +1 -1
  376. package/dist/domains/security-compliance/interfaces.d.ts +46 -5
  377. package/dist/domains/security-compliance/services/scanners/dast-auth-testing.d.ts +3 -3
  378. package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +15 -14
  379. package/dist/domains/security-compliance/services/scanners/dast-helpers.d.ts +8 -9
  380. package/dist/domains/security-compliance/services/scanners/dast-helpers.js +19 -44
  381. package/dist/domains/security-compliance/services/scanners/dast-injection-testing.d.ts +3 -3
  382. package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +13 -9
  383. package/dist/domains/security-compliance/services/scanners/dast-requests.d.ts +54 -0
  384. package/dist/domains/security-compliance/services/scanners/dast-requests.js +125 -0
  385. package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +5 -1
  386. package/dist/domains/security-compliance/services/scanners/dast-scanner.js +125 -155
  387. package/dist/domains/security-compliance/services/scanners/index.d.ts +1 -1
  388. package/dist/domains/security-compliance/services/scanners/index.js +1 -1
  389. package/dist/domains/security-compliance/services/scanners/scanner-types.d.ts +2 -2
  390. package/dist/domains/security-compliance/services/security-auditor-dast.js +183 -212
  391. package/dist/domains/security-compliance/services/security-auditor-reports.js +5 -1
  392. package/dist/domains/security-compliance/services/security-auditor.d.ts +11 -3
  393. package/dist/domains/security-compliance/services/security-auditor.js +106 -65
  394. package/dist/domains/test-execution/coordinator.d.ts +2 -1
  395. package/dist/domains/test-execution/coordinator.js +33 -27
  396. package/dist/domains/test-execution/interfaces.d.ts +5 -0
  397. package/dist/domains/test-execution/services/test-executor.d.ts +6 -0
  398. package/dist/domains/test-execution/services/test-executor.js +16 -4
  399. package/dist/domains/visual-accessibility/coordinator.js +34 -9
  400. package/dist/domains/visual-accessibility/interfaces.d.ts +27 -0
  401. package/dist/domains/visual-accessibility/plugin.js +5 -0
  402. package/dist/domains/visual-accessibility/services/accessibility-tester-heuristics.d.ts +13 -21
  403. package/dist/domains/visual-accessibility/services/accessibility-tester-heuristics.js +13 -297
  404. package/dist/domains/visual-accessibility/services/accessibility-tester.d.ts +13 -5
  405. package/dist/domains/visual-accessibility/services/accessibility-tester.js +96 -73
  406. package/dist/init/phases/10-workers.js +42 -4
  407. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +23 -1
  408. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +50 -15
  409. package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +7 -2
  410. package/dist/integrations/agentic-flow/reasoning-bank/index.js +8 -0
  411. package/dist/integrations/embeddings/index/HNSWIndex.js +8 -4
  412. package/dist/integrations/ruvector/transfer-coherence-stub.js +5 -10
  413. package/dist/learning/embedder-endpoint-client.d.ts +8 -0
  414. package/dist/learning/embedder-endpoint-client.js +20 -0
  415. package/dist/learning/embedder-recovery.d.ts +63 -0
  416. package/dist/learning/embedder-recovery.js +94 -0
  417. package/dist/learning/qe-reasoning-bank-types.d.ts +5 -0
  418. package/dist/learning/qe-reasoning-bank.d.ts +21 -0
  419. package/dist/learning/qe-reasoning-bank.js +54 -8
  420. package/dist/learning/real-embeddings.d.ts +23 -0
  421. package/dist/learning/real-embeddings.js +69 -2
  422. package/dist/learning/real-qe-reasoning-bank.d.ts +24 -4
  423. package/dist/learning/real-qe-reasoning-bank.js +58 -20
  424. package/dist/logging/redaction.js +142 -12
  425. package/dist/mcp/bundle.js +509 -497
  426. package/dist/mcp/daemon-mode.d.ts +126 -0
  427. package/dist/mcp/daemon-mode.js +257 -0
  428. package/dist/mcp/entry.d.ts +4 -0
  429. package/dist/mcp/entry.js +50 -2
  430. package/dist/mcp/handlers/domain-handler-configs.d.ts +8 -0
  431. package/dist/mcp/handlers/domain-handler-configs.js +14 -2
  432. package/dist/mcp/handlers/handler-factory.js +3 -0
  433. package/dist/mcp/handlers/model-route-handlers.d.ts +107 -0
  434. package/dist/mcp/handlers/model-route-handlers.js +139 -0
  435. package/dist/mcp/handlers/orchestrate-routes.d.ts +6 -1
  436. package/dist/mcp/handlers/orchestrate-routes.js +94 -3
  437. package/dist/mcp/handlers/task-handlers.d.ts +3 -242
  438. package/dist/mcp/handlers/task-handlers.js +11 -788
  439. package/dist/mcp/handlers/task-inference.d.ts +26 -0
  440. package/dist/mcp/handlers/task-inference.js +156 -0
  441. package/dist/mcp/handlers/task-learning-handlers.d.ts +92 -0
  442. package/dist/mcp/handlers/task-learning-handlers.js +230 -0
  443. package/dist/mcp/handlers/task-orchestrate-handler.d.ts +73 -0
  444. package/dist/mcp/handlers/task-orchestrate-handler.js +361 -0
  445. package/dist/mcp/protocol-server.js +15 -2
  446. package/dist/mcp/services/reasoning-bank-service.d.ts +6 -1
  447. package/dist/mcp/services/reasoning-bank-service.js +9 -0
  448. package/dist/mcp/tools/code-intelligence/analyze.js +3 -6
  449. package/dist/mcp/tools/coverage-analysis/index.d.ts +4 -0
  450. package/dist/mcp/tools/coverage-analysis/index.js +8 -2
  451. package/dist/mcp/tools/visual-accessibility/index.d.ts +7 -0
  452. package/dist/mcp/tools/visual-accessibility/index.js +29 -13
  453. package/dist/mcp/types.d.ts +14 -0
  454. package/dist/routing/advisor/redaction.js +22 -2
  455. package/dist/shared/events/domain-events.d.ts +2 -0
  456. package/dist/shared/llm/providers/response-deadline.js +16 -2
  457. package/dist/shared/metrics/code-metrics.js +21 -3
  458. package/dist/shared/parsers/typescript-parser.d.ts +6 -0
  459. package/dist/shared/parsers/typescript-parser.js +13 -1
  460. package/dist/shared/types/index.js +3 -1
  461. package/dist/strange-loop/infra-healing/infra-aware-agent-provider.js +8 -1
  462. package/package.json +3 -3
  463. package/dist/cli/chunks/adapter-V4GSGOOK.js +0 -2
  464. package/dist/cli/chunks/aqe-learning-engine-6WQTM5YR.js +0 -2
  465. package/dist/cli/chunks/base-AK7BXBX2.js +0 -2
  466. package/dist/cli/chunks/browser-workflow-VTDFBW7T.js +0 -2
  467. package/dist/cli/chunks/chunk-2DTX7YAZ.js +0 -6
  468. package/dist/cli/chunks/chunk-72ZBJD2E.js +0 -3
  469. package/dist/cli/chunks/chunk-EBPJY4DI.js +0 -3
  470. package/dist/cli/chunks/chunk-H43AFUKL.js +0 -2
  471. package/dist/cli/chunks/chunk-HJ3XNTTJ.js +0 -2
  472. package/dist/cli/chunks/chunk-IO5537OM.js +0 -2
  473. package/dist/cli/chunks/chunk-IW6WDGHM.js +0 -2
  474. package/dist/cli/chunks/chunk-K2HBNYAZ.js +0 -62
  475. package/dist/cli/chunks/chunk-LRL56ZYL.js +0 -21
  476. package/dist/cli/chunks/chunk-VLD7Z2ED.js +0 -13
  477. package/dist/cli/chunks/chunk-VO3DRK4P.js +0 -3
  478. package/dist/cli/chunks/ci-6GUFAZMJ.js +0 -81
  479. package/dist/cli/chunks/client-HL2COSFM.js +0 -2
  480. package/dist/cli/chunks/core-handlers-IX7ATLM6.js +0 -2
  481. package/dist/cli/chunks/cross-domain-router-YYKLAPJO.js +0 -2
  482. package/dist/cli/chunks/domain-transfer-DOBI67K6.js +0 -2
  483. package/dist/cli/chunks/dream-T6EP7B3F.js +0 -2
  484. package/dist/cli/chunks/file-discovery-JYMVTDMU.js +0 -2
  485. package/dist/cli/chunks/fleet-FVAUMKUT.js +0 -46
  486. package/dist/cli/chunks/heartbeat-scheduler-4N5MUJ7S.js +0 -2
  487. package/dist/cli/chunks/hnsw-adapter-ZPAJDSLR.js +0 -2
  488. package/dist/cli/chunks/hnsw-index-4CTH6RHB.js +0 -2
  489. package/dist/cli/chunks/hybrid-backend-AW6UTXQS.js +0 -2
  490. package/dist/cli/chunks/impact-analyzer-MZK3JMSV.js +0 -2
  491. package/dist/cli/chunks/init-wizard-FUC7KDVX.js +0 -2
  492. package/dist/cli/chunks/kernel-ZCPMCVMW.js +0 -2
  493. package/dist/cli/chunks/knowledge-graph-NUJKEDNF.js +0 -2
  494. package/dist/cli/chunks/llm-router-service-B2BFBQ76.js +0 -2
  495. package/dist/cli/chunks/load-test-ZHQ2MUGO.js +0 -2
  496. package/dist/cli/chunks/memory-backend-AAMQG6WH.js +0 -2
  497. package/dist/cli/chunks/pattern-null-store-RFNVA46O.js +0 -2
  498. package/dist/cli/chunks/project-root-7QL4KP5C.js +0 -2
  499. package/dist/cli/chunks/protocol-executor-2NW5BD4R.js +0 -2
  500. package/dist/cli/chunks/qe-reasoning-bank-G2JZOGKD.js +0 -2
  501. package/dist/cli/chunks/queen-coordinator-GRG5FT2A.js +0 -2
  502. package/dist/cli/chunks/real-embeddings-RQRVOKVM.js +0 -2
  503. package/dist/cli/chunks/router-LQB5SWAF.js +0 -2
  504. package/dist/cli/chunks/routing-feedback-OEEXA55N.js +0 -2
  505. package/dist/cli/chunks/rvf-dual-writer-BZK4M7BO.js +0 -2
  506. package/dist/cli/chunks/rvf-migration-adapter-EZZUJL2E.js +0 -2
  507. package/dist/cli/chunks/rvf-native-adapter-6COXTQZ3.js +0 -2
  508. package/dist/cli/chunks/safe-db-PE6G3L55.js +0 -2
  509. package/dist/cli/chunks/schedule-OLKQ6QYW.js +0 -2
  510. package/dist/cli/chunks/scheduler-LSGBDFAT.js +0 -2
  511. package/dist/cli/chunks/sqlite-persistence-HH4DNTYH.js +0 -2
  512. package/dist/cli/chunks/task-handler-TFKVUTNF.js +0 -60
  513. package/dist/cli/chunks/task-handlers-SS4ZDXNF.js +0 -9
  514. package/dist/cli/chunks/test-runner-process-PSSBNNGR.js +0 -2
  515. package/dist/cli/chunks/tree-sitter-wasm-parser-TYRQRJ2W.js +0 -2
  516. package/dist/cli/chunks/unified-memory-AGDZQ5XD.js +0 -2
  517. package/dist/cli/chunks/unified-memory-hnsw-X5TJ3JDE.js +0 -2
  518. package/dist/cli/chunks/unified-persistence-UCV7YETW.js +0 -2
  519. package/dist/cli/chunks/visual-security-ZLXRIQZV.js +0 -2
  520. package/dist/cli/chunks/witness-chain-CVIWYTD2.js +0 -2
  521. package/dist/cli/chunks/witness-chain-VBKORKOX.js +0 -2
  522. package/dist/cli/chunks/workflow-orchestrator-3ZN7MVCE.js +0 -2
@@ -3,9 +3,10 @@
3
3
  * Implements WCAG 2.2 compliance auditing with browser mode support
4
4
  *
5
5
  * This service supports multiple modes of operation:
6
- * 1. Heuristic Mode (default): URL-pattern-based analysis without browser automation
7
- * 2. Browser Mode (agent-browser): Real DOM inspection via unified browser client
8
- * 3. Browser Mode (Vibium): Real DOM inspection via Vibium MCP integration
6
+ * 1. Browser Mode (agent-browser): Real DOM inspection via unified browser client
7
+ * 2. Browser Mode (Vibium): Real DOM inspection via Vibium MCP integration
8
+ * 3. Not measured: no browser could load the page. The report says so
9
+ * (`measured: false`) and carries no findings (#1145).
9
10
  *
10
11
  * Browser mode provides more accurate results by:
11
12
  * - Running actual axe-core accessibility checks in the browser
@@ -15,7 +16,8 @@
15
16
  * Browser Client Integration:
16
17
  * - Prefers agent-browser when available (supports snapshots and axe-core injection)
17
18
  * - Falls back to Vibium if agent-browser unavailable
18
- * - Uses heuristic mode when no browser tool is available
19
+ * - Reports "not measured" when no browser tool could audit the page; it never
20
+ * guesses findings from the URL (#1145)
19
21
  *
20
22
  * @module domains/visual-accessibility/services/accessibility-tester
21
23
  */
@@ -28,7 +30,7 @@ import { toError } from '../../../shared/error-utils.js';
28
30
  import { getBrowserClientForUseCase, } from '../../../integrations/browser/index.js';
29
31
  // Extracted modules
30
32
  import { WCAG_CRITERIA, getErrorMessage, auditWithBrowserClient, auditWithVibium, auditElementWithVibium, checkContrastWithVibium, checkKeyboardWithVibium, } from './accessibility-tester-browser.js';
31
- import { initializeRules, filterRulesByLevel, runRule, validateCriterion, analyzeContrastForElements, generateKeyboardReportWithHeuristics, hashUrl, } from './accessibility-tester-heuristics.js';
33
+ import { initializeRules, filterRulesByLevel, runSimulatedRule, hashUrl, } from './accessibility-tester-heuristics.js';
32
34
  const DEFAULT_CONFIG = {
33
35
  defaultWCAGLevel: 'AA',
34
36
  includeWarnings: true,
@@ -109,28 +111,29 @@ export class AccessibilityTesterService {
109
111
  async audit(url, options) {
110
112
  try {
111
113
  const wcagLevel = options?.wcagLevel || this.config.defaultWCAGLevel;
114
+ const failures = [];
112
115
  if (this.shouldUseBrowserMode()) {
113
116
  const browserClient = await this.getBrowserClient();
114
117
  if (browserClient) {
115
118
  const browserResult = await auditWithBrowserClient(browserClient, url, wcagLevel, this.config.browserConfig, options);
116
- if (browserResult.success) {
117
- await this.storeReport(browserResult.value);
118
- return browserResult;
119
- }
119
+ if (browserResult.success)
120
+ return await this.measuredReport(browserResult.value);
120
121
  const errorMsg = getErrorMessage(browserResult);
122
+ failures.push(errorMsg);
121
123
  logger.warn(`Browser client audit failed: ${errorMsg}`);
122
124
  }
123
125
  if (this.vibiumClient && isBrowserModeEnabled() && isAxeCoreEnabled()) {
124
126
  const vibiumResult = await auditWithVibium(this.vibiumClient, url, wcagLevel, this.config.browserConfig, options);
125
- if (vibiumResult.success) {
126
- await this.storeReport(vibiumResult.value);
127
- return vibiumResult;
128
- }
127
+ if (vibiumResult.success)
128
+ return await this.measuredReport(vibiumResult.value);
129
129
  const errorMsg = getErrorMessage(vibiumResult);
130
- logger.warn(`Vibium audit failed, falling back to heuristic mode: ${errorMsg}`);
130
+ failures.push(errorMsg);
131
+ logger.warn(`Vibium audit failed; the page is not measured: ${errorMsg}`);
131
132
  }
132
133
  }
133
- return this.auditWithHeuristics(url, wcagLevel, options);
134
+ if (this.config.simulationMode)
135
+ return this.auditSimulated(url, wcagLevel, options);
136
+ return ok(this.notMeasuredReport(url, wcagLevel, this.notMeasuredReason(failures)));
134
137
  }
135
138
  catch (error) {
136
139
  return err(toError(error));
@@ -139,12 +142,10 @@ export class AccessibilityTesterService {
139
142
  async auditElement(url, selector) {
140
143
  if (this.shouldUseBrowserMode() && this.vibiumClient) {
141
144
  const browserResult = await auditElementWithVibium(this.vibiumClient, url, selector, this.config.defaultWCAGLevel, this.config.browserConfig);
142
- if (browserResult.success) {
143
- await this.storeReport(browserResult.value);
144
- return browserResult;
145
- }
145
+ if (browserResult.success)
146
+ return await this.measuredReport(browserResult.value);
146
147
  const errorMsg = getErrorMessage(browserResult);
147
- logger.warn(`Browser mode element audit failed, falling back to heuristic mode: ${errorMsg}`);
148
+ logger.warn(`Browser mode element audit failed, falling back to a page audit: ${errorMsg}`);
148
149
  }
149
150
  return this.audit(url, {
150
151
  excludeSelectors: [],
@@ -152,9 +153,38 @@ export class AccessibilityTesterService {
152
153
  });
153
154
  }
154
155
  // ============================================================================
155
- // Heuristic Audit
156
+ // Unmeasured Results (#1145)
156
157
  // ============================================================================
157
- async auditWithHeuristics(url, wcagLevel, options) {
158
+ async measuredReport(report) {
159
+ const measured = { ...report, measured: true };
160
+ await this.storeReport(measured);
161
+ return ok(measured);
162
+ }
163
+ notMeasuredReason(failures) {
164
+ if (failures.length > 0)
165
+ return `no browser could audit the page (${failures.join('; ')})`;
166
+ if (!this.config.useBrowserMode)
167
+ return 'browser mode is disabled, and only a browser run measures a page';
168
+ return 'no browser is available (install agent-browser or connect Vibium) to load the page';
169
+ }
170
+ /** A report that says nothing was measured: no violations, no passes, no verdict. */
171
+ notMeasuredReport(url, wcagLevel, reason) {
172
+ return {
173
+ url,
174
+ timestamp: new Date(),
175
+ violations: [],
176
+ passes: [],
177
+ incomplete: filterRulesByLevel(this.rules, wcagLevel).map((rule) => ({
178
+ id: rule.id, description: rule.description, reason: 'Not measured: see notMeasuredReason', nodes: [],
179
+ })),
180
+ score: -1,
181
+ wcagLevel,
182
+ measured: false,
183
+ notMeasuredReason: reason,
184
+ };
185
+ }
186
+ /** Simulation mode: synthetic results, labelled unmeasured and never stored. */
187
+ async auditSimulated(url, wcagLevel, options) {
158
188
  try {
159
189
  const includeWarnings = options?.includeWarnings ?? this.config.includeWarnings;
160
190
  const applicableRules = includeWarnings
@@ -164,7 +194,7 @@ export class AccessibilityTesterService {
164
194
  const passes = [];
165
195
  const incomplete = [];
166
196
  for (const rule of applicableRules) {
167
- const result = runRule(rule, { url }, this.config.simulationMode, this.config.enableColorContrastCheck);
197
+ const result = runSimulatedRule(rule, { url });
168
198
  if (result.nodes.length > 0) {
169
199
  violations.push({
170
200
  id: rule.id,
@@ -192,19 +222,18 @@ export class AccessibilityTesterService {
192
222
  });
193
223
  }
194
224
  }
195
- const totalChecks = applicableRules.length;
196
- const failedChecks = violations.length;
197
- const score = Math.round(((totalChecks - failedChecks) / totalChecks) * 100);
198
225
  const report = {
199
226
  url,
200
227
  timestamp: new Date(),
201
228
  violations,
202
229
  passes,
203
230
  incomplete,
204
- score,
231
+ // The synthetic score is not a measurement: -1, like every unmeasured score
232
+ score: -1,
205
233
  wcagLevel,
234
+ measured: false,
235
+ notMeasuredReason: 'simulation mode: synthetic results, the page was not loaded',
206
236
  };
207
- await this.storeReport(report);
208
237
  return ok(report);
209
238
  }
210
239
  catch (error) {
@@ -216,25 +245,19 @@ export class AccessibilityTesterService {
216
245
  // ============================================================================
217
246
  async checkContrast(url) {
218
247
  try {
219
- const cacheKey = `visual-accessibility:contrast:${hashUrl(url)}`;
248
+ // v2 (#1145): never serve a guessed result cached by an earlier version.
249
+ const cacheKey = `visual-accessibility:contrast:v2:${hashUrl(url)}`;
220
250
  const cached = await this.memory.get(cacheKey);
221
251
  if (cached)
222
252
  return ok(cached);
223
- let analyses;
224
- if (this.shouldUseBrowserMode() && this.vibiumClient) {
225
- const browserResult = await checkContrastWithVibium(this.vibiumClient, url, this.config.defaultWCAGLevel, this.config.browserConfig);
226
- if (browserResult.success) {
227
- analyses = browserResult.value;
228
- }
229
- else {
230
- const errorMsg = getErrorMessage(browserResult);
231
- logger.warn(`Browser mode contrast check failed, falling back to heuristic mode: ${errorMsg}`);
232
- analyses = analyzeContrastForElements(url);
233
- }
253
+ if (!this.shouldUseBrowserMode() || !this.vibiumClient) {
254
+ return err(notMeasuredError('Color contrast', url, this.notMeasuredReason([])));
234
255
  }
235
- else {
236
- analyses = analyzeContrastForElements(url);
256
+ const browserResult = await checkContrastWithVibium(this.vibiumClient, url, this.config.defaultWCAGLevel, this.config.browserConfig);
257
+ if (!browserResult.success) {
258
+ return err(notMeasuredError('Color contrast', url, this.notMeasuredReason([getErrorMessage(browserResult)])));
237
259
  }
260
+ const analyses = browserResult.value;
238
261
  await this.memory.set(cacheKey, analyses, { namespace: 'visual-accessibility', ttl: 3600 });
239
262
  return ok(analyses);
240
263
  }
@@ -247,25 +270,23 @@ export class AccessibilityTesterService {
247
270
  // ============================================================================
248
271
  async validateWCAGLevel(url, level) {
249
272
  try {
250
- const levelOrder = { A: 1, AA: 2, AAA: 3 };
251
- const targetLevel = levelOrder[level];
252
- const applicableCriteria = Object.values(WCAG_CRITERIA).filter((c) => levelOrder[c.level] <= targetLevel);
253
- const failedCriteria = [];
254
- const passedCriteria = [];
255
- const urlHash = hashUrl(url);
256
- const hashNum = parseInt(urlHash, 36);
257
- for (const criterion of applicableCriteria) {
258
- const ruleResult = validateCriterion(criterion, hashNum);
259
- if (ruleResult.passed) {
260
- passedCriteria.push(criterion);
261
- }
262
- else {
263
- failedCriteria.push(criterion);
264
- }
273
+ const audit = await this.audit(url, { wcagLevel: level, includeWarnings: true });
274
+ if (!audit.success)
275
+ return err(audit.error);
276
+ if (audit.value.measured !== true) {
277
+ return err(notMeasuredError(`WCAG ${level} validation`, url, audit.value.notMeasuredReason ?? 'not audited'));
265
278
  }
266
- const passed = failedCriteria.length === 0;
279
+ const levelOrder = { A: 1, AA: 2, AAA: 3 };
280
+ const applicableCriteria = Object.values(WCAG_CRITERIA).filter((c) => levelOrder[c.level] <= levelOrder[level]);
281
+ const violated = new Set(audit.value.violations.flatMap((v) => v.wcagCriteria.map((c) => c.id)));
282
+ const failedCriteria = applicableCriteria.filter((c) => violated.has(c.id));
283
+ const passedCriteria = applicableCriteria.filter((c) => !violated.has(c.id));
267
284
  const score = Math.round((passedCriteria.length / applicableCriteria.length) * 100);
268
- return ok({ level, passed, failedCriteria, passedCriteria, score });
285
+ return ok({
286
+ level, passed: failedCriteria.length === 0, failedCriteria, passedCriteria, score, measured: true,
287
+ limitations: ['A passed criterion means no automated axe-core check failed for it; ' +
288
+ 'keyboard operation, focus order and similar criteria still need manual review.'],
289
+ });
269
290
  }
270
291
  catch (error) {
271
292
  return err(toError(error));
@@ -276,25 +297,20 @@ export class AccessibilityTesterService {
276
297
  // ============================================================================
277
298
  async checkKeyboardNavigation(url) {
278
299
  try {
279
- const cacheKey = `visual-accessibility:keyboard:${hashUrl(url)}`;
300
+ const cacheKey = `visual-accessibility:keyboard:v2:${hashUrl(url)}`;
280
301
  const cached = await this.memory.get(cacheKey);
281
302
  if (cached)
282
303
  return ok(cached);
283
- let report;
284
- if (this.shouldUseBrowserMode() && this.config.enableKeyboardCheck && this.vibiumClient) {
285
- const browserResult = await checkKeyboardWithVibium(this.vibiumClient, url, this.config.defaultWCAGLevel, this.config.browserConfig);
286
- if (browserResult.success) {
287
- report = browserResult.value;
288
- }
289
- else {
290
- const errorMsg = getErrorMessage(browserResult);
291
- logger.warn(`Browser mode keyboard check failed, falling back to heuristic mode: ${errorMsg}`);
292
- report = generateKeyboardReportWithHeuristics(url);
293
- }
304
+ if (!this.shouldUseBrowserMode() || !this.config.enableKeyboardCheck || !this.vibiumClient) {
305
+ const reason = this.config.enableKeyboardCheck
306
+ ? this.notMeasuredReason([]) : 'the keyboard check is disabled';
307
+ return err(notMeasuredError('Keyboard navigation', url, reason));
294
308
  }
295
- else {
296
- report = generateKeyboardReportWithHeuristics(url);
309
+ const browserResult = await checkKeyboardWithVibium(this.vibiumClient, url, this.config.defaultWCAGLevel, this.config.browserConfig);
310
+ if (!browserResult.success) {
311
+ return err(notMeasuredError('Keyboard navigation', url, this.notMeasuredReason([getErrorMessage(browserResult)])));
297
312
  }
313
+ const report = browserResult.value;
298
314
  await this.memory.set(cacheKey, report, { namespace: 'visual-accessibility', ttl: 3600 });
299
315
  return ok(report);
300
316
  }
@@ -322,6 +338,9 @@ export class AccessibilityTesterService {
322
338
  if (!wcagResult.success) {
323
339
  return err(new Error(`WCAG audit failed: ${wcagResult.error.message}`));
324
340
  }
341
+ if (wcagResult.value.measured !== true) {
342
+ return err(notMeasuredError('EU compliance', url, wcagResult.value.notMeasuredReason ?? 'not audited'));
343
+ }
325
344
  const euResult = await this.euComplianceService.validateCompliance(wcagResult.value, options);
326
345
  return euResult;
327
346
  }
@@ -348,4 +367,8 @@ export class AccessibilityTesterService {
348
367
  }
349
368
  }
350
369
  }
370
+ /** #1145: an unmeasured check is an error with its reason, never an empty pass. */
371
+ function notMeasuredError(check, url, reason) {
372
+ return new Error(`${check} NOT MEASURED for ${url}: ${reason}. No findings or verdict were produced.`);
373
+ }
351
374
  //# sourceMappingURL=accessibility-tester.js.map
@@ -173,6 +173,26 @@ if (workersSetting !== undefined && ['false', '0', 'off', 'no'].includes(workers
173
173
  process.exit(0);
174
174
  }
175
175
 
176
+ // #1207: keep daemon.log bounded. The server truncates it on its heartbeat once
177
+ // it passes AQE_DAEMON_LOG_MAX_SIZE (default 5M, 0 or off disables); a log left
178
+ // over that size by an earlier run is moved to daemon.log.1 here, before
179
+ // anything writes to it. rename() replaces daemon.log.1 and never follows it.
180
+ function logMaxBytes() {
181
+ const text = String(process.env.AQE_DAEMON_LOG_MAX_SIZE || '').trim().toLowerCase();
182
+ if (['0', 'off', 'false', 'no', 'none', 'disable', 'disabled'].includes(text)) return 0;
183
+ const m = /^(\\d+)\\s*([kmg]?)b?$/.exec(text);
184
+ const bytes = m ? Number(m[1]) * { '': 1, k: 1024, m: 1048576, g: 1073741824 }[m[2]] : NaN;
185
+ return Number.isSafeInteger(bytes) && bytes >= 1024 ? bytes : 5 * 1048576;
186
+ }
187
+ function rotateLogAtStart(file) {
188
+ const max = logMaxBytes();
189
+ try {
190
+ const s = fs.lstatSync(file);
191
+ if (max > 0 && s.isFile() && s.size > max) fs.renameSync(file, file + '.1');
192
+ } catch {}
193
+ }
194
+ rotateLogAtStart(logFile);
195
+
176
196
  const ts = new Date().toISOString();
177
197
  appendFileSync(logFile, '[' + ts + '] Starting AQE v3 Worker Daemon...\\n');
178
198
 
@@ -228,10 +248,28 @@ if (binCandidate && binCandidate.endsWith('bundle.js')) {
228
248
  appendFileSync(logFile, '[' + ts + '] Using: ' + mcpCmd + ' ' + mcpArgs.join(' ') + '\\n');
229
249
 
230
250
  // #1066: keep a user's AQE_WORKERS_ENABLED (for example false) instead of forcing it on.
231
- const env = { ...process.env, AQE_STORAGE_PATH: '.agentic-qe', AQE_LEARNING_ENABLED: 'true', AQE_WORKERS_ENABLED: workersSetting ?? 'true', AQE_HTTP_PORT: '0' };
232
- const child = spawn(mcpCmd, mcpArgs, { cwd: projectRoot, env, detached: true, stdio: ['ignore', 'pipe', 'pipe'] });
233
- child.stdout.on('data', d => appendFileSync(logFile, d));
234
- child.stderr.on('data', d => appendFileSync(logFile, d));
251
+ // #1158: AQE_MCP_DAEMON=1 is daemon mode. The server has no stdin here, so
252
+ // without it the stdin-EOF guard (#513) shut it down right after starting;
253
+ // in daemon mode it stops only on SIGTERM/SIGINT (stop-daemon.cjs).
254
+ const env = { ...process.env, AQE_STORAGE_PATH: '.agentic-qe', AQE_LEARNING_ENABLED: 'true', AQE_WORKERS_ENABLED: workersSetting ?? 'true', AQE_HTTP_PORT: '0', AQE_MCP_DAEMON: '1' };
255
+ // #1158: the server writes daemon.log itself, through a descriptor opened
256
+ // here with the same symlink rules as appendFileSync. Piping its output
257
+ // through this script kept the script from exiting while the daemon ran, and
258
+ // once the script was gone nothing was logged any more.
259
+ function openLogFd(file) {
260
+ if (!isRegularOrAbsent(file)) return 'ignore';
261
+ const c = fs.constants;
262
+ try { return fs.openSync(file, c.O_APPEND | c.O_CREAT | c.O_WRONLY | (c.O_NOFOLLOW || 0), 0o644); } catch { return 'ignore'; }
263
+ }
264
+ const logFd = openLogFd(logFile);
265
+ // #1207: name the file behind the server's stdout/stderr so it can rotate it.
266
+ if (typeof logFd === 'number') env.AQE_MCP_DAEMON_LOG = logFile; else delete env.AQE_MCP_DAEMON_LOG;
267
+ let child;
268
+ try {
269
+ child = spawn(mcpCmd, mcpArgs, { cwd: projectRoot, env, detached: true, stdio: ['ignore', logFd, logFd] });
270
+ } finally {
271
+ if (typeof logFd === 'number') { try { fs.closeSync(logFd); } catch {} }
272
+ }
235
273
  let exited = null;
236
274
  child.on('exit', (code, signal) => { exited = { code, signal }; });
237
275
  // #1116: a command that cannot be started (no npx on PATH: spawn ENOENT) emits
@@ -71,6 +71,15 @@ export interface ExperienceGuidance {
71
71
  /** Estimated token savings */
72
72
  readonly estimatedTokenSavings: number;
73
73
  }
74
+ /**
75
+ * #1204: whether similar-experience guidance can use vectors. 'unavailable'
76
+ * means the embedder failed (or there is none): experiences are stored
77
+ * without vectors and getGuidance returns no guidance.
78
+ */
79
+ export interface ExperienceGuidanceStatus {
80
+ mode: 'vector' | 'unavailable';
81
+ reason?: string;
82
+ }
74
83
  /**
75
84
  * Configuration for ExperienceReplay
76
85
  */
@@ -89,6 +98,8 @@ export interface ExperienceReplayConfig {
89
98
  autoPrune: boolean;
90
99
  /** Prune threshold (quality below this is removed) */
91
100
  pruneThreshold: number;
101
+ /** #1204: after the embedder fails, wait this long before retrying it (default 60 s). */
102
+ embedderRetryIntervalMs?: number;
92
103
  }
93
104
  /**
94
105
  * ExperienceReplay stores and retrieves successful experiences for learning.
@@ -113,7 +124,13 @@ export declare class ExperienceReplay {
113
124
  private prepared;
114
125
  private initialized;
115
126
  private initializationPromise;
116
- private embedderUnavailableLogged;
127
+ /**
128
+ * #1204: whether the embedder works; retried in the background after a
129
+ * failure, as the pattern banks do (#1187).
130
+ */
131
+ private readonly embedderRecovery;
132
+ /** Whether an embedding succeeded, to label later failures as runtime ones. */
133
+ private embedderWorked;
117
134
  private hnswIndex;
118
135
  private idToExperienceId;
119
136
  private experienceIdToHnswId;
@@ -155,8 +172,13 @@ export declare class ExperienceReplay {
155
172
  * #1022: embed text, or return null when no embedding runtime is available.
156
173
  * The experience is then stored without a vector (backfilled at a later
157
174
  * start that has an embedder) and similarity search finds no matches.
175
+ * #1204: a failure is reported by getEmbedderStatus(), labelled as a
176
+ * runtime failure when the embedder had worked, and warned about once per
177
+ * outage. The embedder is retried in the background after the interval.
158
178
  */
159
179
  private embedOrNull;
180
+ /** #1204: whether similar-experience guidance can use vectors, and if not why. */
181
+ getEmbedderStatus(): ExperienceGuidanceStatus;
160
182
  /**
161
183
  * Get guidance for a new task based on similar experiences
162
184
  *
@@ -14,7 +14,8 @@
14
14
  */
15
15
  import { v4 as uuidv4 } from 'uuid';
16
16
  import { getUnifiedMemory } from '../../../kernel/unified-memory.js';
17
- import { computeRealEmbedding, } from '../../../learning/real-embeddings.js';
17
+ import { computeRealEmbedding, cosineSimilarity, } from '../../../learning/real-embeddings.js';
18
+ import { EmbedderRecovery, probeEmbedder } from '../../../learning/embedder-recovery.js';
18
19
  import { CircularBuffer } from '../../../shared/utils/circular-buffer.js';
19
20
  import { HNSWEmbeddingIndex } from '../../embeddings/index/HNSWIndex.js';
20
21
  import { safeJsonParse } from '../../../shared/safe-json.js';
@@ -60,7 +61,13 @@ export class ExperienceReplay {
60
61
  prepared = new Map();
61
62
  initialized = false;
62
63
  initializationPromise = null;
63
- embedderUnavailableLogged = false;
64
+ /**
65
+ * #1204: whether the embedder works; retried in the background after a
66
+ * failure, as the pattern banks do (#1187).
67
+ */
68
+ embedderRecovery;
69
+ /** Whether an embedding succeeded, to label later failures as runtime ones. */
70
+ embedderWorked = false;
64
71
  // Real HNSW index for O(log n) similarity search (150x-12,500x faster than linear scan)
65
72
  hnswIndex;
66
73
  // Mapping from HNSW numeric IDs to experience string IDs
@@ -82,6 +89,11 @@ export class ExperienceReplay {
82
89
  constructor(config = {}) {
83
90
  this.config = { ...DEFAULT_CONFIG, ...config };
84
91
  this.recentExperiences = new CircularBuffer(100);
92
+ this.embedderRecovery = new EmbedderRecovery({
93
+ retryIntervalMs: this.config.embedderRetryIntervalMs,
94
+ probe: () => probeEmbedder(this.config.embedding),
95
+ onRecovered: () => console.log('[ExperienceReplay] Embedder available again: similar-experience guidance uses vectors'),
96
+ });
85
97
  // Initialize real HNSW index with optimal parameters for experience search
86
98
  this.hnswIndex = new HNSWEmbeddingIndex({
87
99
  dimension: 384, // all-MiniLM-L6-v2 dimension
@@ -461,20 +473,36 @@ export class ExperienceReplay {
461
473
  * #1022: embed text, or return null when no embedding runtime is available.
462
474
  * The experience is then stored without a vector (backfilled at a later
463
475
  * start that has an embedder) and similarity search finds no matches.
476
+ * #1204: a failure is reported by getEmbedderStatus(), labelled as a
477
+ * runtime failure when the embedder had worked, and warned about once per
478
+ * outage. The embedder is retried in the background after the interval.
464
479
  */
465
480
  async embedOrNull(text) {
481
+ if (!this.embedderRecovery.isAvailable())
482
+ return null;
466
483
  try {
467
- return await computeRealEmbedding(text, this.config.embedding);
484
+ const embedding = await computeRealEmbedding(text, this.config.embedding);
485
+ this.embedderWorked = true;
486
+ return embedding;
468
487
  }
469
488
  catch (error) {
470
- if (!this.embedderUnavailableLogged) {
471
- this.embedderUnavailableLogged = true;
472
- console.warn('[ExperienceReplay] No embedding runtime; experiences are stored without vectors ' +
473
- 'and similar-experience guidance is unavailable:', error instanceof Error ? error.message : error);
489
+ const message = error instanceof Error ? error.message : String(error);
490
+ const reason = this.embedderWorked ? `Embedder failed at runtime: ${message}` : message;
491
+ if (this.embedderRecovery.markUnavailable(reason)) {
492
+ console.warn(this.embedderWorked
493
+ ? '[ExperienceReplay] Embedder failed; experiences are stored without vectors and ' +
494
+ 'similar-experience guidance is unavailable until it recovers:'
495
+ : '[ExperienceReplay] No embedding runtime; experiences are stored without vectors ' +
496
+ 'and similar-experience guidance is unavailable:', message);
474
497
  }
475
498
  return null;
476
499
  }
477
500
  }
501
+ /** #1204: whether similar-experience guidance can use vectors, and if not why. */
502
+ getEmbedderStatus() {
503
+ const reason = this.embedderRecovery.unavailableReason;
504
+ return reason === null ? { mode: 'vector' } : { mode: 'unavailable', reason };
505
+ }
478
506
  /**
479
507
  * Get guidance for a new task based on similar experiences
480
508
  *
@@ -484,16 +512,19 @@ export class ExperienceReplay {
484
512
  */
485
513
  async getGuidance(task, domain) {
486
514
  this.ensureInitialized();
487
- // #1022: the reservoir blend below picks experiences without looking at
488
- // the query and gives them a coherence-derived similarity. Without an
489
- // embedding of the query nothing measures relevance, so return no guidance
490
- // rather than query-independent picks with a made-up similarity.
491
- if (!(await this.embedOrNull(scrubReasoningBlocks(task)))) {
515
+ // #1022: without an embedding of the query nothing measures relevance, so
516
+ // return no guidance rather than picks with a made-up similarity.
517
+ const queryEmbedding = await this.embedOrNull(scrubReasoningBlocks(task));
518
+ if (!queryEmbedding) {
492
519
  return null;
493
520
  }
494
521
  // Find similar experiences via HNSW
495
522
  const similar = await this.findSimilarExperiences(task, domain);
496
- // Blend in high-coherence experiences from reservoir buffer (R10, ADR-087)
523
+ // Blend in high-coherence experiences from reservoir buffer (R10, ADR-087).
524
+ // #1192: the buffer samples without looking at the query, so a sample is
525
+ // kept only when its similarity to the query embedding is measured and
526
+ // reaches the retrieval threshold. Samples without a comparable vector
527
+ // are skipped: every reported similarity is a measured one.
497
528
  if (this.reservoirBuffer && this.reservoirBuffer.size() > 0) {
498
529
  const reservoirSamples = this.reservoirBuffer.sample(Math.max(2, Math.floor(this.config.topK / 2)), 0.6);
499
530
  for (const entry of reservoirSamples) {
@@ -504,8 +535,12 @@ export class ExperienceReplay {
504
535
  // Skip if domain filter doesn't match
505
536
  if (domain && exp.domain !== domain)
506
537
  continue;
507
- // Add with a coherence-based similarity score
508
- similar.push({ experience: exp, similarity: entry.coherenceScore * 0.8 });
538
+ if (!exp.embedding || exp.embedding.length !== queryEmbedding.length)
539
+ continue;
540
+ const similarity = cosineSimilarity(queryEmbedding, exp.embedding);
541
+ if (similarity < this.config.similarityThreshold)
542
+ continue;
543
+ similar.push({ experience: exp, similarity });
509
544
  }
510
545
  }
511
546
  if (similar.length === 0) {
@@ -17,7 +17,7 @@
17
17
  */
18
18
  import { RealQEReasoningBank, type RealQEReasoningBankConfig, type RealQEPatternSearchResult, type PatternSearchStatus, type RealQERoutingRequest, type RealQERoutingResult, type LearningOutcome } from '../../../learning/real-qe-reasoning-bank.js';
19
19
  import { TrajectoryTracker, type Trajectory, type TrajectoryStep, type TrajectoryOptions, type TrajectoryTrackerConfig } from './trajectory-tracker.js';
20
- import { ExperienceReplay, type ExperienceGuidance, type ExperienceReplayConfig } from './experience-replay.js';
20
+ import { ExperienceReplay, type ExperienceGuidance, type ExperienceGuidanceStatus, type ExperienceReplayConfig } from './experience-replay.js';
21
21
  import { PatternEvolution, type PatternVersion, type DriftDetectionResult, type MergeCandidate, type PatternEvolutionConfig } from './pattern-evolution.js';
22
22
  import type { QEPattern, QEDomain, CreateQEPatternOptions } from '../../../learning/qe-patterns.js';
23
23
  export interface EnhancedReasoningBankAdapterStats {
@@ -32,7 +32,7 @@ export interface EnhancedReasoningBankAdapterStats {
32
32
  }
33
33
  import type { Result } from '../../../shared/types/index.js';
34
34
  export { TrajectoryTracker, createTrajectoryTracker, type Trajectory, type TrajectoryStep, type TrajectoryOptions, type TrajectoryTrackerConfig, } from './trajectory-tracker.js';
35
- export { ExperienceReplay, createExperienceReplay, type Experience, type ExperienceGuidance, type ExperienceReplayConfig, } from './experience-replay.js';
35
+ export { ExperienceReplay, createExperienceReplay, type Experience, type ExperienceGuidance, type ExperienceGuidanceStatus, type ExperienceReplayConfig, } from './experience-replay.js';
36
36
  export { PatternEvolution, createPatternEvolution, type PatternVersion, type DriftDetectionResult, type MergeCandidate, type PatternEvolutionConfig, } from './pattern-evolution.js';
37
37
  /**
38
38
  * Configuration for Enhanced ReasoningBank Adapter
@@ -185,6 +185,11 @@ export declare class EnhancedReasoningBankAdapter {
185
185
  }): Promise<Result<RealQEPatternSearchResult[]>>;
186
186
  /** #1022: whether pattern search uses vectors or text matching only. */
187
187
  getPatternSearchStatus(): PatternSearchStatus;
188
+ /**
189
+ * #1204: whether similar-experience guidance can use vectors; null when
190
+ * experience replay is disabled.
191
+ */
192
+ getExperienceGuidanceStatus(): ExperienceGuidanceStatus | null;
188
193
  /**
189
194
  * Record a pattern outcome with evolution tracking
190
195
  */
@@ -302,6 +302,14 @@ export class EnhancedReasoningBankAdapter {
302
302
  this.ensureInitialized();
303
303
  return this.reasoningBank.getPatternSearchStatus();
304
304
  }
305
+ /**
306
+ * #1204: whether similar-experience guidance can use vectors; null when
307
+ * experience replay is disabled.
308
+ */
309
+ getExperienceGuidanceStatus() {
310
+ this.ensureInitialized();
311
+ return this.experienceReplay?.getEmbedderStatus() ?? null;
312
+ }
305
313
  /**
306
314
  * Record a pattern outcome with evolution tracking
307
315
  */
@@ -10,6 +10,10 @@
10
10
  * @module integrations/embeddings/index/HNSWIndex
11
11
  */
12
12
  import { createRequire } from 'node:module';
13
+ // Static import so the bundlers inline the adapter. A runtime
14
+ // require('../../../kernel/hnsw-adapter.js') resolves against the bundle
15
+ // file instead and fails, which silently capped the index at 10,000 (#1237).
16
+ import { HnswAdapter } from '../../../kernel/hnsw-adapter.js';
13
17
  const require = createRequire(import.meta.url);
14
18
  let cachedHnswlibCtor = null;
15
19
  function loadHnswlibConstructor() {
@@ -70,8 +74,6 @@ export class HNSWEmbeddingIndex {
70
74
  // ADR-071: Route through unified HnswAdapter when flag is enabled
71
75
  if (this.useUnified && this.unifiedAdapters) {
72
76
  try {
73
- // eslint-disable-next-line @typescript-eslint/no-require-imports
74
- const { HnswAdapter } = require('../../../kernel/hnsw-adapter.js');
75
77
  const adapter = new HnswAdapter(`embedding-${namespace}`, {
76
78
  dimensions: this.config.dimension,
77
79
  M: this.config.M,
@@ -84,8 +86,10 @@ export class HNSWEmbeddingIndex {
84
86
  this.nextId.set(namespace, 0);
85
87
  return;
86
88
  }
87
- catch {
88
- // Fall through to hnswlib-node
89
+ catch (error) {
90
+ // Fall through to hnswlib-node, which holds at most 10,000 entries.
91
+ console.warn(`[HNSWEmbeddingIndex] Unified HNSW adapter unavailable for '${namespace}', ` +
92
+ `using the legacy index (max 10000 entries): ${error instanceof Error ? error.message : String(error)}`);
89
93
  }
90
94
  }
91
95
  // Legacy path: hnswlib-node
@@ -11,9 +11,11 @@
11
11
  *
12
12
  * @module integrations/ruvector/transfer-coherence-stub
13
13
  */
14
- import { createRequire } from 'module';
15
14
  import { getRuVectorFeatureFlags } from './feature-flags.js';
16
- const esmRequire = createRequire(import.meta.url);
15
+ // Static import so the bundlers inline the gate. A runtime
16
+ // require('./coherence-gate.js') resolves against the bundle file instead,
17
+ // fails, and silently returned the approve-everything stub (#1237).
18
+ import { CoherenceGate } from './coherence-gate-core.js';
17
19
  // ============================================================================
18
20
  // Stub Implementation
19
21
  // ============================================================================
@@ -49,14 +51,7 @@ export class TransferCoherenceStub {
49
51
  */
50
52
  export function createTransferCoherenceGate() {
51
53
  if (getRuVectorFeatureFlags().useCoherenceGate) {
52
- try {
53
- // Dynamic require to avoid circular dependency at module level
54
- const { CoherenceGate } = esmRequire('./coherence-gate.js');
55
- return new CoherenceGate();
56
- }
57
- catch {
58
- // Fall through to stub if CoherenceGate fails to load
59
- }
54
+ return new CoherenceGate();
60
55
  }
61
56
  return new TransferCoherenceStub();
62
57
  }
@@ -121,6 +121,14 @@ export declare class EmbedderEndpointClient {
121
121
  failures: number;
122
122
  trippedAt: number | null;
123
123
  };
124
+ /**
125
+ * #1204: probe the endpoint while the circuit breaker is open, as its single
126
+ * half-open trial. Other callers keep fast-failing meanwhile. A success
127
+ * closes the breaker and refreshes the identity; a failure keeps the
128
+ * breaker open for another full window. Lets a caller that rate-limits its
129
+ * own retries recover without also waiting out the breaker window.
130
+ */
131
+ probeThroughOpenBreaker(): Promise<EndpointIdentity>;
124
132
  /**
125
133
  * Close the underlying keep-alive agent. Tests should call this in afterEach.
126
134
  */