agentic-qe 3.15.11 → 3.15.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (431) hide show
  1. package/.claude/hooks/aqe-hook.cjs +38 -2
  2. package/.claude/skills/skills-manifest.json +1 -1
  3. package/CHANGELOG.md +149 -0
  4. package/assets/skills/skills-manifest.json +1 -1
  5. package/dist/cli/bundle.js +6 -6
  6. package/dist/cli/chunks/adapter-HL7MOCQN.js +2 -0
  7. package/dist/cli/chunks/{agent-booster-wasm-TIDSQ3ZK.js → agent-booster-wasm-5VZCKTIJ.js} +2 -2
  8. package/dist/cli/chunks/{agent-handler-G3EPBVA7.js → agent-handler-K3C6CQCD.js} +2 -2
  9. package/dist/cli/chunks/{agent-memory-branch-ARC5C7GW.js → agent-memory-branch-NVFQ25WS.js} +2 -2
  10. package/dist/cli/chunks/aqe-learning-engine-OZ2DXB4G.js +2 -0
  11. package/dist/cli/chunks/{arena-K4I4QDXB.js → arena-QGWIJADQ.js} +2 -2
  12. package/dist/cli/chunks/{arena-36DTATJV.js → arena-TSZVDSXS.js} +4 -4
  13. package/dist/cli/chunks/{audit-WQSJSJZF.js → audit-KIEE2SHJ.js} +3 -3
  14. package/dist/cli/chunks/base-WIM7G3HC.js +2 -0
  15. package/dist/cli/chunks/{better-sqlite3-BB4K67MT.js → better-sqlite3-BNB32NW3.js} +2 -2
  16. package/dist/cli/chunks/{brain-handler-CU3GOIU3.js → brain-handler-MPC5SPYI.js} +3 -3
  17. package/dist/cli/chunks/{branch-enumerator-NJQX7ZNB.js → branch-enumerator-LZ7UXKAY.js} +2 -2
  18. package/dist/cli/chunks/{browser-6YJF4FQW.js → browser-VDHAW4RK.js} +2 -2
  19. package/dist/cli/chunks/browser-workflow-QRKCFVR3.js +2 -0
  20. package/dist/cli/chunks/{chunk-V7DA4HAK.js → chunk-23PQF7NN.js} +1 -1
  21. package/dist/cli/chunks/{chunk-IENZSO3K.js → chunk-26672ISV.js} +2 -2
  22. package/dist/cli/chunks/{chunk-OURITHFV.js → chunk-2ASQRBK2.js} +2 -2
  23. package/dist/cli/chunks/{chunk-VBK2YAYY.js → chunk-2E2QO44T.js} +2 -2
  24. package/dist/cli/chunks/{chunk-NT7JRHMH.js → chunk-2IVE5AR3.js} +1 -1
  25. package/dist/cli/chunks/{chunk-672XOJDG.js → chunk-2JYUA27M.js} +1 -1
  26. package/dist/cli/chunks/{chunk-OHR7C777.js → chunk-2PPSS4JD.js} +2 -2
  27. package/dist/cli/chunks/{chunk-FUYOOKTH.js → chunk-32UTHIY5.js} +3 -3
  28. package/dist/cli/chunks/{chunk-UKKYMW3S.js → chunk-33I2ZP6E.js} +2 -2
  29. package/dist/cli/chunks/{chunk-76SNL7GU.js → chunk-35MIUSXQ.js} +2 -2
  30. package/dist/cli/chunks/{chunk-4X4MWMHB.js → chunk-35NW676P.js} +2 -2
  31. package/dist/cli/chunks/{chunk-BZPE3LDO.js → chunk-3EWQN37E.js} +2 -2
  32. package/dist/cli/chunks/{chunk-5N25I53C.js → chunk-3IU4LDZR.js} +2 -2
  33. package/dist/cli/chunks/{chunk-NKTWKYHB.js → chunk-47RMGDG4.js} +2 -2
  34. package/dist/cli/chunks/chunk-4A76VPU4.js +3 -0
  35. package/dist/cli/chunks/{chunk-4RH5I24Q.js → chunk-4CB3QPZM.js} +2 -2
  36. package/dist/cli/chunks/{chunk-U3LJNNVJ.js → chunk-4HWUECVD.js} +2 -2
  37. package/dist/cli/chunks/{chunk-T5KHJ3J7.js → chunk-4KUOYDY2.js} +2 -2
  38. package/dist/cli/chunks/{chunk-XNLIWQYE.js → chunk-4LWMAAWK.js} +2 -2
  39. package/dist/cli/chunks/{chunk-KKYO2NKV.js → chunk-4PU5GTZW.js} +2 -2
  40. package/dist/cli/chunks/{chunk-VWUZSNVC.js → chunk-4SA7M34P.js} +1 -1
  41. package/dist/cli/chunks/{chunk-5WYZHDIZ.js → chunk-4Y6OEBJZ.js} +1 -1
  42. package/dist/cli/chunks/{chunk-J4JMCZVA.js → chunk-5A66EGEW.js} +2 -2
  43. package/dist/cli/chunks/{chunk-HFFPYC4G.js → chunk-5ADXFUMO.js} +2 -2
  44. package/dist/cli/chunks/{chunk-KJCIMNHS.js → chunk-5S4UIDFK.js} +1 -1
  45. package/dist/cli/chunks/{chunk-YBBT3YYG.js → chunk-5TAEW5OV.js} +1 -1
  46. package/dist/cli/chunks/{chunk-FLU5FDSC.js → chunk-5Z23ZMXZ.js} +59 -59
  47. package/dist/cli/chunks/{chunk-YNOCQ2SL.js → chunk-65TH6RPD.js} +1 -1
  48. package/dist/cli/chunks/{chunk-XGPTZUKQ.js → chunk-66PXR3NI.js} +2 -2
  49. package/dist/cli/chunks/{chunk-ITPGWGQS.js → chunk-6E6HB4N4.js} +4 -4
  50. package/dist/cli/chunks/{chunk-EJPK7OTR.js → chunk-6QRI3JVE.js} +2 -2
  51. package/dist/cli/chunks/{chunk-ZP75ASUU.js → chunk-7DNR4KKR.js} +1 -1
  52. package/dist/cli/chunks/{chunk-V5AADCBC.js → chunk-7JFDLL2F.js} +1 -1
  53. package/dist/cli/chunks/chunk-7OEFBWAG.js +5 -0
  54. package/dist/cli/chunks/{chunk-EIDJNT5C.js → chunk-7QEUHNKO.js} +1 -1
  55. package/dist/cli/chunks/{chunk-7R5HC56U.js → chunk-7TA5MUPW.js} +1 -1
  56. package/dist/cli/chunks/{chunk-LCVEEII4.js → chunk-A2JCRXTK.js} +2 -2
  57. package/dist/cli/chunks/{chunk-JUMICXM6.js → chunk-A5Y7DAVQ.js} +2 -2
  58. package/dist/cli/chunks/{chunk-FZHSG75I.js → chunk-ADUAJIAU.js} +2 -2
  59. package/dist/cli/chunks/{chunk-TFW7CCKS.js → chunk-AJEXPFAB.js} +1 -1
  60. package/dist/cli/chunks/{chunk-JGJXXAS6.js → chunk-BC4T6SCV.js} +4 -4
  61. package/dist/cli/chunks/{chunk-4RAQ7PJA.js → chunk-BMG2JLSQ.js} +2 -2
  62. package/dist/cli/chunks/{chunk-Y7B5EUIJ.js → chunk-BOSMELJX.js} +2 -2
  63. package/dist/cli/chunks/{chunk-CIAL4YRY.js → chunk-BYRCB5JT.js} +2 -2
  64. package/dist/cli/chunks/{chunk-XS2XF3YG.js → chunk-C3YOVASQ.js} +1 -1
  65. package/dist/cli/chunks/{chunk-FL32MTKT.js → chunk-C74M4WUI.js} +2 -2
  66. package/dist/cli/chunks/{chunk-S6IYEBAI.js → chunk-CA5UNWQF.js} +2 -2
  67. package/dist/cli/chunks/{chunk-5MTWCCZJ.js → chunk-CDA5Z74H.js} +2 -2
  68. package/dist/cli/chunks/{chunk-DOFREOPQ.js → chunk-CPIBIR3X.js} +2 -2
  69. package/dist/cli/chunks/{chunk-UMVSWQNB.js → chunk-CU36D7TN.js} +2 -2
  70. package/dist/cli/chunks/{chunk-G4CKPWF6.js → chunk-DAUEK66C.js} +1 -1
  71. package/dist/cli/chunks/{chunk-2KFFEKSI.js → chunk-DRCBRUGN.js} +2 -2
  72. package/dist/cli/chunks/{chunk-EH2S6AOR.js → chunk-DZGPUGUG.js} +2 -2
  73. package/dist/cli/chunks/{chunk-HYXUN7BW.js → chunk-EF6OERRR.js} +1 -1
  74. package/dist/cli/chunks/{chunk-G77MLBDF.js → chunk-EN7GRVEQ.js} +2 -2
  75. package/dist/cli/chunks/{chunk-XDI5X3FR.js → chunk-ENGL7FIJ.js} +1 -1
  76. package/dist/cli/chunks/{chunk-HDNWSKHA.js → chunk-FAGKBOX2.js} +2 -2
  77. package/dist/cli/chunks/{chunk-FWSGPE3V.js → chunk-FNUFTWEO.js} +3 -3
  78. package/dist/cli/chunks/{chunk-AUUJBXWX.js → chunk-FZJCBSN4.js} +2 -2
  79. package/dist/cli/chunks/{chunk-ERN43HOX.js → chunk-G24SWTAX.js} +35 -35
  80. package/dist/cli/chunks/{chunk-VEEYL2CZ.js → chunk-G3AABG4Q.js} +2 -2
  81. package/dist/cli/chunks/{chunk-35M2X3C5.js → chunk-GJKZ7UQO.js} +2 -2
  82. package/dist/cli/chunks/{chunk-OV5RPLKV.js → chunk-GKFV6CUD.js} +2 -2
  83. package/dist/cli/chunks/{chunk-4HJKQIX5.js → chunk-HLGFHHWV.js} +2 -2
  84. package/dist/cli/chunks/{chunk-R5LGV6GZ.js → chunk-HM3LSFTY.js} +2 -2
  85. package/dist/cli/chunks/{chunk-M7XFBSIK.js → chunk-HSA5IGGW.js} +2 -2
  86. package/dist/cli/chunks/{chunk-GWJWSLDA.js → chunk-HZBXJFGN.js} +2 -2
  87. package/dist/cli/chunks/{chunk-4MUBW4RT.js → chunk-IA55PFLG.js} +2 -2
  88. package/dist/cli/chunks/{chunk-RBZCA7SD.js → chunk-ICKUINKD.js} +2 -2
  89. package/dist/cli/chunks/{chunk-KDI5JOYZ.js → chunk-IETBWYHW.js} +2 -2
  90. package/dist/cli/chunks/{chunk-325QCVDI.js → chunk-IL7GQNNE.js} +2 -2
  91. package/dist/cli/chunks/{chunk-BTVWA35P.js → chunk-INZARYUD.js} +2 -2
  92. package/dist/cli/chunks/{chunk-G2IJFNZS.js → chunk-IPA7K556.js} +2 -2
  93. package/dist/cli/chunks/{chunk-UTTSH4NH.js → chunk-IVTQF55W.js} +3 -3
  94. package/dist/cli/chunks/{chunk-2CW7VRPH.js → chunk-J7Y7ZBIT.js} +5 -5
  95. package/dist/cli/chunks/{chunk-M5RQ6U3G.js → chunk-JGIJPDGD.js} +2 -2
  96. package/dist/cli/chunks/{chunk-RQMCZQN2.js → chunk-JNXK47OL.js} +2 -2
  97. package/dist/cli/chunks/{chunk-X4J73KP3.js → chunk-JOWUS2X5.js} +1 -1
  98. package/dist/cli/chunks/{chunk-ZMC543GI.js → chunk-JR6CUKAI.js} +2 -2
  99. package/dist/cli/chunks/chunk-JRYWLOBD.js +21 -0
  100. package/dist/cli/chunks/{chunk-ETVAYGCB.js → chunk-JW5PDJ5O.js} +3 -3
  101. package/dist/cli/chunks/{chunk-OD5D4LSZ.js → chunk-K3A3NWT3.js} +2 -2
  102. package/dist/cli/chunks/{chunk-LPU6PAJE.js → chunk-KA5SHLMW.js} +2 -2
  103. package/dist/cli/chunks/{chunk-NPZOBSAN.js → chunk-KGA7VAI4.js} +2 -2
  104. package/dist/cli/chunks/{chunk-ZMHCMJ4J.js → chunk-KJDI5CHX.js} +2 -2
  105. package/dist/cli/chunks/{chunk-KSLLHFVY.js → chunk-L3PV7VXK.js} +1 -1
  106. package/dist/cli/chunks/{chunk-LD5CFK53.js → chunk-L7NGKANW.js} +2 -2
  107. package/dist/cli/chunks/{chunk-6NA3KZZT.js → chunk-LFBA735S.js} +7 -7
  108. package/dist/cli/chunks/{chunk-Z2EA7A4Z.js → chunk-MAJXZYGK.js} +1 -1
  109. package/dist/cli/chunks/{chunk-TCYSBC7Y.js → chunk-MCPEC6OO.js} +1 -1
  110. package/dist/cli/chunks/{chunk-LBX7M4LW.js → chunk-MCPXNUDK.js} +2 -2
  111. package/dist/cli/chunks/{chunk-5YLOLACR.js → chunk-MMEALJ4D.js} +2 -2
  112. package/dist/cli/chunks/{chunk-IOZRKXR5.js → chunk-MYF5CNGV.js} +2 -2
  113. package/dist/cli/chunks/{chunk-X3PZCXWG.js → chunk-MYUMJ2ZI.js} +1 -1
  114. package/dist/cli/chunks/{chunk-VYTILW4R.js → chunk-N7O3PF6Y.js} +2 -2
  115. package/dist/cli/chunks/{chunk-GVKVJJQX.js → chunk-NA3F6FEO.js} +2 -2
  116. package/dist/cli/chunks/{chunk-TL6OFMXF.js → chunk-NNBQZR73.js} +2 -2
  117. package/dist/cli/chunks/{chunk-KXS3Y2AX.js → chunk-NV74SICL.js} +2 -2
  118. package/dist/cli/chunks/chunk-NVRYELCY.js +13 -0
  119. package/dist/cli/chunks/{chunk-OH5V5EJW.js → chunk-NX4BCSOZ.js} +2 -2
  120. package/dist/cli/chunks/{chunk-XJKZ7FTR.js → chunk-O3IM4WRZ.js} +2 -2
  121. package/dist/cli/chunks/{chunk-3RHOPP7A.js → chunk-O4QJMANM.js} +1 -1
  122. package/dist/cli/chunks/{chunk-O4JAKWWM.js → chunk-OHVYINGM.js} +17 -17
  123. package/dist/cli/chunks/{chunk-APPZATXA.js → chunk-P5E26N2X.js} +2 -2
  124. package/dist/cli/chunks/{chunk-5ERFHEEE.js → chunk-P7UFJ6DO.js} +1 -1
  125. package/dist/cli/chunks/{chunk-5MNASJOH.js → chunk-PGSJBXTD.js} +2 -2
  126. package/dist/cli/chunks/{chunk-WCAVIJ64.js → chunk-PT2NXS43.js} +1 -1
  127. package/dist/cli/chunks/{chunk-EWPUQCN4.js → chunk-PTBOLBM4.js} +2 -2
  128. package/dist/cli/chunks/{chunk-EK5GMOSO.js → chunk-PX5OPXY6.js} +1 -1
  129. package/dist/cli/chunks/chunk-QCPVUNN3.js +2 -0
  130. package/dist/cli/chunks/{chunk-K2HBNYAZ.js → chunk-QSGEBCDB.js} +2 -2
  131. package/dist/cli/chunks/{chunk-G4FAPO57.js → chunk-QUJJYTJH.js} +2 -2
  132. package/dist/cli/chunks/{chunk-H7BLYMNU.js → chunk-QWG3SILX.js} +3 -3
  133. package/dist/cli/chunks/{chunk-LXQ3B4RY.js → chunk-RCOLPF3B.js} +2 -2
  134. package/dist/cli/chunks/{chunk-E44NNCEU.js → chunk-RYHG3I7J.js} +2 -2
  135. package/dist/cli/chunks/{chunk-RTFKTKSO.js → chunk-SBHM5X2S.js} +2 -2
  136. package/dist/cli/chunks/{chunk-DOBZPSKE.js → chunk-SDRJJUPO.js} +1 -1
  137. package/dist/cli/chunks/{chunk-RTY7VSZB.js → chunk-SG2TX72G.js} +2 -2
  138. package/dist/cli/chunks/{chunk-NTB342NJ.js → chunk-SITL5YZV.js} +4 -4
  139. package/dist/cli/chunks/{chunk-WM3SRRA6.js → chunk-SPC4RBLF.js} +2 -2
  140. package/dist/cli/chunks/{chunk-ITL3IN2E.js → chunk-SQVZ3TRU.js} +2 -2
  141. package/dist/cli/chunks/{chunk-CO3DX2AX.js → chunk-SUX5XB2Z.js} +2 -2
  142. package/dist/cli/chunks/{chunk-KSE5TDM5.js → chunk-T4EN5VVK.js} +2 -2
  143. package/dist/cli/chunks/{chunk-5HQP4SLM.js → chunk-TGMXUZZC.js} +2 -2
  144. package/dist/cli/chunks/{chunk-YOCULVHR.js → chunk-TLRHAMX5.js} +1 -1
  145. package/dist/cli/chunks/{chunk-GBFUANTC.js → chunk-TOWOJGEI.js} +1 -1
  146. package/dist/cli/chunks/{chunk-4UBVAJFO.js → chunk-TSOQ2QLT.js} +2 -2
  147. package/dist/cli/chunks/{chunk-SMVVAVN2.js → chunk-TVA5GRIU.js} +2 -2
  148. package/dist/cli/chunks/{chunk-K7V2WZNF.js → chunk-TXEUVUMO.js} +1 -1
  149. package/dist/cli/chunks/{chunk-LQ4NUC6Q.js → chunk-U6IXYQO4.js} +2 -2
  150. package/dist/cli/chunks/{chunk-HDJUYAZG.js → chunk-U7ZHDGXG.js} +1 -1
  151. package/dist/cli/chunks/{chunk-2VLYUF7U.js → chunk-UCSK2RMI.js} +2 -2
  152. package/dist/cli/chunks/{chunk-4UX35V7P.js → chunk-UIKQPO4Y.js} +2 -2
  153. package/dist/cli/chunks/chunk-UJNGGFGX.js +2 -0
  154. package/dist/cli/chunks/{chunk-AFFN6E6Q.js → chunk-ULCW6IVQ.js} +2 -2
  155. package/dist/cli/chunks/{chunk-WCVCOT4E.js → chunk-UREDS662.js} +2 -2
  156. package/dist/cli/chunks/{chunk-E6PF35JZ.js → chunk-URSTP3WI.js} +2 -2
  157. package/dist/cli/chunks/{chunk-I36CRDHF.js → chunk-UUZZXHUF.js} +2 -2
  158. package/dist/cli/chunks/{chunk-MIK4RBEH.js → chunk-UZED4YZ5.js} +1 -1
  159. package/dist/cli/chunks/{chunk-ZQHDA4O7.js → chunk-VF7FTD64.js} +1 -1
  160. package/dist/cli/chunks/{chunk-AMZKAJLJ.js → chunk-VUR5THML.js} +2 -2
  161. package/dist/cli/chunks/{chunk-H43AFUKL.js → chunk-VXVTFKRA.js} +2 -2
  162. package/dist/cli/chunks/chunk-VZBC6DP7.js +2 -0
  163. package/dist/cli/chunks/{chunk-DDEOZPWJ.js → chunk-W4II6SIH.js} +2 -2
  164. package/dist/cli/chunks/{chunk-55CH76ZO.js → chunk-W5HQIYQU.js} +3 -3
  165. package/dist/cli/chunks/{chunk-YPX2TV3M.js → chunk-W7H55PY4.js} +1 -1
  166. package/dist/cli/chunks/{chunk-CFWGGRE7.js → chunk-WDEXOLK2.js} +1 -1
  167. package/dist/cli/chunks/{chunk-XGBU3KEM.js → chunk-WGTEZT7G.js} +2 -2
  168. package/dist/cli/chunks/{chunk-NC6K7SCQ.js → chunk-WLRU6ESI.js} +2 -2
  169. package/dist/cli/chunks/{chunk-JFLU7L3W.js → chunk-WTAUF6O4.js} +2 -2
  170. package/dist/cli/chunks/chunk-XCNSGSKV.js +3 -0
  171. package/dist/cli/chunks/{chunk-57LNKSW7.js → chunk-XZOYKB22.js} +2 -2
  172. package/dist/cli/chunks/chunk-YIDAXOUX.js +8 -0
  173. package/dist/cli/chunks/{chunk-25P77WA5.js → chunk-YLKIXEPP.js} +1 -1
  174. package/dist/cli/chunks/{chunk-R5GRABPQ.js → chunk-YNVEDFPQ.js} +1 -1
  175. package/dist/cli/chunks/{chunk-NQZNMCZU.js → chunk-YUA6ZKKY.js} +2 -2
  176. package/dist/cli/chunks/{chunk-OYJC3YON.js → chunk-YVJEUX3I.js} +2 -2
  177. package/dist/cli/chunks/{chunk-QDESWOZP.js → chunk-YWWMNTBF.js} +2 -2
  178. package/dist/cli/chunks/{chunk-7HEMJHPP.js → chunk-ZGROHCOW.js} +1 -1
  179. package/dist/cli/chunks/{chunk-AP3ADWDK.js → chunk-ZPVGX4DI.js} +2 -2
  180. package/dist/cli/chunks/{chunk-M5XYIQYZ.js → chunk-ZROAMFX2.js} +2 -2
  181. package/dist/cli/chunks/{chunk-I4K2HTQU.js → chunk-ZYOYR3UR.js} +1 -1
  182. package/dist/cli/chunks/ci-BZNWW3I3.js +81 -0
  183. package/dist/cli/chunks/{ci-config-J665XNOX.js → ci-config-LOHNXOKV.js} +2 -2
  184. package/dist/cli/chunks/{ci-output-PEQQQWVD.js → ci-output-LCOQBSJL.js} +2 -2
  185. package/dist/cli/chunks/{circuit-breaker-HHB2JSKH.js → circuit-breaker-7LRXTLFE.js} +2 -2
  186. package/dist/cli/chunks/{claude-flow-setup-JKUJRWPN.js → claude-flow-setup-HBU4VWC3.js} +2 -2
  187. package/dist/cli/chunks/client-4PNYDFYS.js +2 -0
  188. package/dist/cli/chunks/{cline-installer-Y77BWTAN.js → cline-installer-CO6MLH6X.js} +2 -2
  189. package/dist/cli/chunks/{code-LV2HAGJY.js → code-SIXBS6JM.js} +3 -3
  190. package/dist/cli/chunks/{code-index-extractor-4GKKSETB.js → code-index-extractor-GWJKZ2IQ.js} +2 -2
  191. package/dist/cli/chunks/{codex-installer-WMKBYE5Y.js → codex-installer-6NINVWXJ.js} +2 -2
  192. package/dist/cli/chunks/{completions-SBGFAOIJ.js → completions-7VIX3GML.js} +2 -2
  193. package/dist/cli/chunks/{complexity-analyzer-AQHFIJXC.js → complexity-analyzer-FBQR6ZP2.js} +2 -2
  194. package/dist/cli/chunks/{continuedev-installer-26AYFS2E.js → continuedev-installer-VA7RIXW5.js} +2 -2
  195. package/dist/cli/chunks/{copilot-installer-4UD3DK55.js → copilot-installer-4QEBC4MU.js} +2 -2
  196. package/dist/cli/chunks/core-handlers-ODO6LUWQ.js +2 -0
  197. package/dist/cli/chunks/{cost-tracker-TP4NZCG4.js → cost-tracker-GRYKHPWL.js} +2 -2
  198. package/dist/cli/chunks/{coverage-B2KIXHAI.js → coverage-USPMNKOU.js} +11 -10
  199. package/dist/cli/chunks/cross-domain-router-DT4MHJKK.js +2 -0
  200. package/dist/cli/chunks/{cursor-installer-AVZEQZ4W.js → cursor-installer-ZXIPSZVH.js} +2 -2
  201. package/dist/cli/chunks/{daemon-XM2A7LQU.js → daemon-D7F3RGI5.js} +3 -3
  202. package/dist/cli/chunks/{daemon-P574WWBW.js → daemon-N2VRHPSJ.js} +4 -4
  203. package/dist/cli/chunks/{dag-attention-scheduler-MIWOZ6ET.js → dag-attention-scheduler-NL6BA7BY.js} +2 -2
  204. package/dist/cli/chunks/{detect-TYR7HT23.js → detect-XC2HCIIT.js} +2 -2
  205. package/dist/cli/chunks/{dist-node-2DGVQGLS.js → dist-node-A3Y26MEI.js} +2 -2
  206. package/dist/cli/chunks/{domain-handler-RRA4ZOMF.js → domain-handler-WV6SFXRB.js} +2 -2
  207. package/dist/cli/chunks/{domain-plugins-IVZEZ5RB.js → domain-plugins-KJIF6Z2B.js} +2 -2
  208. package/dist/cli/chunks/{domain-transfer-DOBI67K6.js → domain-transfer-L3F6AES2.js} +2 -2
  209. package/dist/cli/chunks/dream-QOB3JCOM.js +2 -0
  210. package/dist/cli/chunks/{embed-and-insert-pattern-VNIEOVPO.js → embed-and-insert-pattern-PA3Y4KGO.js} +2 -2
  211. package/dist/cli/chunks/{eval-QV4LVPUF.js → eval-YGEZNUVE.js} +2 -2
  212. package/dist/cli/chunks/{experience-capture-middleware-DAPKT763.js → experience-capture-middleware-D4T7NW6B.js} +3 -3
  213. package/dist/cli/chunks/{fast-paths-WVRFPHX7.js → fast-paths-6JYK7RYQ.js} +2 -2
  214. package/dist/cli/chunks/{feature-flags-O7ZXDDCD.js → feature-flags-DKXMDVPE.js} +2 -2
  215. package/dist/cli/chunks/{feature-flags-DEFTUIYT.js → feature-flags-RBH2GDSR.js} +2 -2
  216. package/dist/cli/chunks/file-discovery-BN76S2PR.js +2 -0
  217. package/dist/cli/chunks/fleet-43YMXACN.js +46 -0
  218. package/dist/cli/chunks/{gnn-wrapper-LS4LZJDR.js → gnn-wrapper-MV54UC4C.js} +2 -2
  219. package/dist/cli/chunks/{heartbeat-handler-RFTERD4K.js → heartbeat-handler-7DKMVQQH.js} +4 -4
  220. package/dist/cli/chunks/heartbeat-scheduler-3NNP4WCP.js +2 -0
  221. package/dist/cli/chunks/hnsw-adapter-MZR7Y4WF.js +2 -0
  222. package/dist/cli/chunks/hnsw-index-HE4AX22U.js +2 -0
  223. package/dist/cli/chunks/{hnsw-legacy-bridge-GPKGFFHY.js → hnsw-legacy-bridge-6IWREDQC.js} +2 -2
  224. package/dist/cli/chunks/{hnswlib-node-PHL3F2PR.js → hnswlib-node-5BIESSCK.js} +2 -2
  225. package/dist/cli/chunks/{hooks-GYJ6D4QM.js → hooks-3EETRM62.js} +28 -28
  226. package/dist/cli/chunks/hybrid-backend-IHUHB3Y2.js +2 -0
  227. package/dist/cli/chunks/{hypergraph-engine-YGEQPCKJ.js → hypergraph-engine-RSWCB2D3.js} +2 -2
  228. package/dist/cli/chunks/{hypergraph-handler-ZIMM647V.js → hypergraph-handler-552LXKL3.js} +3 -3
  229. package/dist/cli/chunks/impact-analyzer-FI6GI6PD.js +2 -0
  230. package/dist/cli/chunks/{init-guard-VOMBXJXG.js → init-guard-OTDBJ5HD.js} +2 -2
  231. package/dist/cli/chunks/{init-handler-PSMUBWK5.js → init-handler-3FK3TKEA.js} +6 -6
  232. package/dist/cli/chunks/init-wizard-WLQKH5Y5.js +2 -0
  233. package/dist/cli/chunks/kernel-2WZOQEZS.js +2 -0
  234. package/dist/cli/chunks/{kilocode-installer-2YNTFBWJ.js → kilocode-installer-KZ2O4LF3.js} +2 -2
  235. package/dist/cli/chunks/{kiro-installer-XHJDPVAZ.js → kiro-installer-MLCCXRF7.js} +2 -2
  236. package/dist/cli/chunks/knowledge-graph-G3LVKK6P.js +2 -0
  237. package/dist/cli/chunks/{learning-GNSIDRNG.js → learning-QUCMBD77.js} +3 -3
  238. package/dist/cli/chunks/{llm-router-LQDM7IU2.js → llm-router-PDEV3UP2.js} +4 -4
  239. package/dist/cli/chunks/llm-router-service-MM75HKWJ.js +2 -0
  240. package/dist/cli/chunks/{load-YATHI72E.js → load-XFVVLO7E.js} +2 -2
  241. package/dist/cli/chunks/load-test-BEWEE44J.js +2 -0
  242. package/dist/cli/chunks/{mcp-4Y6GDLYK.js → mcp-74G3CL2S.js} +2 -2
  243. package/dist/cli/chunks/{memory-OUW3L7H2.js → memory-XIFM6JNX.js} +5 -5
  244. package/dist/cli/chunks/memory-backend-NYKBBKZR.js +2 -0
  245. package/dist/cli/chunks/{memory-handlers-G3LFF53U.js → memory-handlers-ZCKURV6S.js} +2 -2
  246. package/dist/cli/chunks/{multi-model-executor-UBZJXAD2.js → multi-model-executor-7L4W3O2Q.js} +2 -2
  247. package/dist/cli/chunks/{opencode-installer-AMMNWVH5.js → opencode-installer-BPG422LF.js} +2 -2
  248. package/dist/cli/chunks/{orchestrator-Y44WDOER.js → orchestrator-OEAFLAEV.js} +58 -20
  249. package/dist/cli/chunks/pattern-null-store-QGPUIV6M.js +2 -0
  250. package/dist/cli/chunks/{pattern-usage-recorder-ESR42RME.js → pattern-usage-recorder-LOPNCULT.js} +2 -2
  251. package/dist/cli/chunks/{pipeline-EDTS6OSC.js → pipeline-VWTYUZB7.js} +2 -2
  252. package/dist/cli/chunks/{platform-5WONJSUX.js → platform-WFJJ3X2E.js} +2 -2
  253. package/dist/cli/chunks/{plugin-IJXPCLD4.js → plugin-744TPUSG.js} +2 -2
  254. package/dist/cli/chunks/{prime-radiant-advanced-wasm-5ECKGZK6.js → prime-radiant-advanced-wasm-BD5BLNDR.js} +2 -2
  255. package/dist/cli/chunks/project-root-C7ELXZRK.js +2 -0
  256. package/dist/cli/chunks/protocol-executor-SUVE33BM.js +2 -0
  257. package/dist/cli/chunks/{protocol-handler-DRD3GVNW.js → protocol-handler-JIBILI74.js} +2 -2
  258. package/dist/cli/chunks/{prove-KTGW2HMJ.js → prove-MNOL5FYW.js} +2 -2
  259. package/dist/cli/chunks/qe-reasoning-bank-YWZMMGJB.js +2 -0
  260. package/dist/cli/chunks/{quality-DV2WPRRS.js → quality-JEGBDGGX.js} +2 -2
  261. package/dist/cli/chunks/{quality-gate-HFUAFVZC.js → quality-gate-SYJ6ROMI.js} +3 -3
  262. package/dist/cli/chunks/queen-coordinator-ZFAKXRN7.js +2 -0
  263. package/dist/cli/chunks/real-embeddings-ZWXS5ZFV.js +2 -0
  264. package/dist/cli/chunks/{ref-validation-QWSKS5OY.js → ref-validation-RRHUFW2N.js} +2 -2
  265. package/dist/cli/chunks/{roocode-installer-RBAYRCHX.js → roocode-installer-XFO6JSVN.js} +2 -2
  266. package/dist/cli/chunks/router-4FTAVYLJ.js +2 -0
  267. package/dist/cli/chunks/routing-feedback-IO2KOWMJ.js +2 -0
  268. package/dist/cli/chunks/{routing-handler-FMPP3XKO.js → routing-handler-L2K3JASE.js} +2 -2
  269. package/dist/cli/chunks/{ruvector-commands-KZZT4HWF.js → ruvector-commands-A6CINHGM.js} +2 -2
  270. package/dist/cli/chunks/rvf-dual-writer-KCIRNE7C.js +2 -0
  271. package/dist/cli/chunks/rvf-migration-adapter-MFC5WTJU.js +2 -0
  272. package/dist/cli/chunks/{rvf-migration-coordinator-7CHEV35N.js → rvf-migration-coordinator-T4RY7L53.js} +2 -2
  273. package/dist/cli/chunks/rvf-native-adapter-I3KWHE7X.js +2 -0
  274. package/dist/cli/chunks/{rvf-store-integrity-Q2TH52SN.js → rvf-store-integrity-IR33TGQS.js} +2 -2
  275. package/dist/cli/chunks/safe-db-QXDZ6QY3.js +2 -0
  276. package/dist/cli/chunks/schedule-CZKD6RIY.js +2 -0
  277. package/dist/cli/chunks/scheduler-BLA3Q4CH.js +2 -0
  278. package/dist/cli/chunks/{security-CUEA3UIM.js → security-Z5GDE2IH.js} +3 -3
  279. package/dist/cli/chunks/{shared-rvf-adapter-DROMBRV2.js → shared-rvf-adapter-SIZMEHPM.js} +2 -2
  280. package/dist/cli/chunks/{shared-rvf-dual-writer-DBNABOP7.js → shared-rvf-dual-writer-HLM65RDS.js} +2 -2
  281. package/dist/cli/chunks/sqlite-persistence-XIUYDJC4.js +2 -0
  282. package/dist/cli/chunks/{standalone-memory-IAHA3M6B.js → standalone-memory-SKSZG7P5.js} +2 -2
  283. package/dist/cli/chunks/{status-handler-AFUCASTX.js → status-handler-766YOOMJ.js} +2 -2
  284. package/dist/cli/chunks/{structural-health-AQRV6JJ6.js → structural-health-M45FNOLT.js} +2 -2
  285. package/dist/cli/chunks/{sync-GX7FMJHL.js → sync-6CJ24B5T.js} +2 -2
  286. package/dist/cli/chunks/{sync-XW5TLZ7M.js → sync-B2U366I3.js} +2 -2
  287. package/dist/cli/chunks/{task-handler-TFKVUTNF.js → task-handler-P6IFLCKP.js} +17 -15
  288. package/dist/cli/chunks/task-handlers-DPWMUKFC.js +9 -0
  289. package/dist/cli/chunks/{test-D2XDJNDX.js → test-TODH7KRF.js} +4 -4
  290. package/dist/cli/chunks/test-runner-process-46IPK3GH.js +2 -0
  291. package/dist/cli/chunks/{test-scheduling-TS6I2PR7.js → test-scheduling-VMVMVRHT.js} +3 -3
  292. package/dist/cli/chunks/{token-bootstrap-HBBLPCZ3.js → token-bootstrap-XQW7BMCK.js} +2 -2
  293. package/dist/cli/chunks/{token-usage-3MBUX4PR.js → token-usage-JCZEIRKO.js} +2 -2
  294. package/dist/cli/chunks/{transformers-ZWMQO3L2.js → transformers-U2ML3OHE.js} +2 -2
  295. package/dist/cli/chunks/tree-sitter-wasm-parser-MOI2WWNJ.js +2 -0
  296. package/dist/cli/chunks/{types-5YEMGPSQ.js → types-GGEPCHP6.js} +2 -2
  297. package/dist/cli/chunks/unified-memory-FL26RTV3.js +2 -0
  298. package/dist/cli/chunks/unified-memory-hnsw-E2BPTH3U.js +2 -0
  299. package/dist/cli/chunks/unified-persistence-5ZOUPKHF.js +2 -0
  300. package/dist/cli/chunks/{upgrade-2TPBKIHI.js → upgrade-T5GRM7HS.js} +2 -2
  301. package/dist/cli/chunks/{validate-XRAXXFW6.js → validate-XMUJPLP3.js} +2 -2
  302. package/dist/cli/chunks/{validate-swarm-IYSCS3BZ.js → validate-swarm-KJLF7JEH.js} +2 -2
  303. package/dist/cli/chunks/visual-security-IJVPO5FA.js +2 -0
  304. package/dist/cli/chunks/{web-tree-sitter-PZQ3ZG2P.js → web-tree-sitter-LOHVZ7G5.js} +2 -2
  305. package/dist/cli/chunks/{windsurf-installer-U6XWFRVT.js → windsurf-installer-33FBTXJU.js} +2 -2
  306. package/dist/cli/chunks/witness-chain-5FAFCQKP.js +2 -0
  307. package/dist/cli/chunks/witness-chain-V2M32W5D.js +2 -0
  308. package/dist/cli/chunks/{witness-chain-repair-K7YX2AO6.js → witness-chain-repair-VWBO4NXE.js} +2 -2
  309. package/dist/cli/chunks/{witness-chain-verifier-GUTC3W7N.js → witness-chain-verifier-BHJ3ZAEK.js} +2 -2
  310. package/dist/cli/chunks/{witness-key-manager-YBNKMOP6.js → witness-key-manager-WNVPH2Z3.js} +2 -2
  311. package/dist/cli/chunks/{workflow-UAJUILFQ.js → workflow-6QR5MQTO.js} +4 -4
  312. package/dist/cli/chunks/workflow-orchestrator-3JLF3IX7.js +2 -0
  313. package/dist/cli/chunks/{wrappers-AVZ3GPAL.js → wrappers-EHOL62TS.js} +2 -2
  314. package/dist/cli/commands/ci.js +7 -0
  315. package/dist/cli/commands/coverage.js +7 -1
  316. package/dist/cli/commands/fleet.js +2 -2
  317. package/dist/cli/commands/hooks-handlers/stats-hooks.d.ts +4 -3
  318. package/dist/cli/commands/hooks-handlers/stats-hooks.js +22 -4
  319. package/dist/cli/handlers/task-handler.js +6 -0
  320. package/dist/cli/utils/coverage-verdict.d.ts +11 -2
  321. package/dist/cli/utils/coverage-verdict.js +26 -6
  322. package/dist/cli/utils/fleet-operation.d.ts +5 -0
  323. package/dist/cli/utils/fleet-operation.js +7 -1
  324. package/dist/cli/utils/fleet-result.d.ts +5 -3
  325. package/dist/cli/utils/fleet-result.js +9 -3
  326. package/dist/coordination/handlers/coverage-collection.d.ts +2 -0
  327. package/dist/coordination/handlers/coverage-collection.js +2 -1
  328. package/dist/coordination/handlers/coverage-evidence.d.ts +75 -0
  329. package/dist/coordination/handlers/coverage-evidence.js +159 -0
  330. package/dist/coordination/handlers/coverage-handlers.js +16 -3
  331. package/dist/coordination/handlers/coverage-scope.d.ts +40 -0
  332. package/dist/coordination/handlers/coverage-scope.js +321 -0
  333. package/dist/coordination/handlers/coverage-target.d.ts +9 -0
  334. package/dist/coordination/handlers/coverage-target.js +15 -5
  335. package/dist/coordination/handlers/handler-utils.d.ts +5 -0
  336. package/dist/coordination/handlers/handler-utils.js +8 -4
  337. package/dist/domains/code-intelligence/services/metric-collector/listing-process-owner.js +4 -1
  338. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +8 -0
  339. package/dist/domains/code-intelligence/services/semantic-analyzer.js +10 -7
  340. package/dist/init/phases/10-workers.js +42 -4
  341. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +23 -1
  342. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +50 -15
  343. package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +7 -2
  344. package/dist/integrations/agentic-flow/reasoning-bank/index.js +8 -0
  345. package/dist/learning/embedder-endpoint-client.d.ts +8 -0
  346. package/dist/learning/embedder-endpoint-client.js +20 -0
  347. package/dist/learning/embedder-recovery.d.ts +63 -0
  348. package/dist/learning/embedder-recovery.js +94 -0
  349. package/dist/learning/qe-reasoning-bank-types.d.ts +5 -0
  350. package/dist/learning/qe-reasoning-bank.d.ts +21 -0
  351. package/dist/learning/qe-reasoning-bank.js +54 -8
  352. package/dist/learning/real-embeddings.d.ts +23 -0
  353. package/dist/learning/real-embeddings.js +69 -2
  354. package/dist/learning/real-qe-reasoning-bank.d.ts +24 -4
  355. package/dist/learning/real-qe-reasoning-bank.js +58 -20
  356. package/dist/logging/redaction.js +142 -12
  357. package/dist/mcp/bundle.js +504 -492
  358. package/dist/mcp/daemon-mode.d.ts +126 -0
  359. package/dist/mcp/daemon-mode.js +257 -0
  360. package/dist/mcp/entry.d.ts +4 -0
  361. package/dist/mcp/entry.js +50 -2
  362. package/dist/mcp/handlers/domain-handler-configs.js +5 -0
  363. package/dist/mcp/handlers/orchestrate-routes.d.ts +6 -1
  364. package/dist/mcp/handlers/orchestrate-routes.js +53 -0
  365. package/dist/mcp/handlers/task-handlers.d.ts +11 -2
  366. package/dist/mcp/handlers/task-handlers.js +50 -5
  367. package/dist/mcp/protocol-server.js +3 -0
  368. package/dist/mcp/services/reasoning-bank-service.d.ts +6 -1
  369. package/dist/mcp/services/reasoning-bank-service.js +9 -0
  370. package/dist/mcp/types.d.ts +14 -0
  371. package/dist/routing/advisor/redaction.js +22 -2
  372. package/dist/shared/llm/providers/response-deadline.js +16 -2
  373. package/dist/shared/types/index.js +3 -1
  374. package/dist/strange-loop/infra-healing/infra-aware-agent-provider.js +8 -1
  375. package/package.json +3 -3
  376. package/dist/cli/chunks/adapter-V4GSGOOK.js +0 -2
  377. package/dist/cli/chunks/aqe-learning-engine-6WQTM5YR.js +0 -2
  378. package/dist/cli/chunks/base-AK7BXBX2.js +0 -2
  379. package/dist/cli/chunks/browser-workflow-VTDFBW7T.js +0 -2
  380. package/dist/cli/chunks/chunk-2DTX7YAZ.js +0 -6
  381. package/dist/cli/chunks/chunk-72ZBJD2E.js +0 -3
  382. package/dist/cli/chunks/chunk-EBPJY4DI.js +0 -3
  383. package/dist/cli/chunks/chunk-HJ3XNTTJ.js +0 -2
  384. package/dist/cli/chunks/chunk-IO5537OM.js +0 -2
  385. package/dist/cli/chunks/chunk-IW6WDGHM.js +0 -2
  386. package/dist/cli/chunks/chunk-LRL56ZYL.js +0 -21
  387. package/dist/cli/chunks/chunk-VLD7Z2ED.js +0 -13
  388. package/dist/cli/chunks/chunk-VO3DRK4P.js +0 -3
  389. package/dist/cli/chunks/ci-6GUFAZMJ.js +0 -81
  390. package/dist/cli/chunks/client-HL2COSFM.js +0 -2
  391. package/dist/cli/chunks/core-handlers-IX7ATLM6.js +0 -2
  392. package/dist/cli/chunks/cross-domain-router-YYKLAPJO.js +0 -2
  393. package/dist/cli/chunks/dream-T6EP7B3F.js +0 -2
  394. package/dist/cli/chunks/file-discovery-JYMVTDMU.js +0 -2
  395. package/dist/cli/chunks/fleet-FVAUMKUT.js +0 -46
  396. package/dist/cli/chunks/heartbeat-scheduler-4N5MUJ7S.js +0 -2
  397. package/dist/cli/chunks/hnsw-adapter-ZPAJDSLR.js +0 -2
  398. package/dist/cli/chunks/hnsw-index-4CTH6RHB.js +0 -2
  399. package/dist/cli/chunks/hybrid-backend-AW6UTXQS.js +0 -2
  400. package/dist/cli/chunks/impact-analyzer-MZK3JMSV.js +0 -2
  401. package/dist/cli/chunks/init-wizard-FUC7KDVX.js +0 -2
  402. package/dist/cli/chunks/kernel-ZCPMCVMW.js +0 -2
  403. package/dist/cli/chunks/knowledge-graph-NUJKEDNF.js +0 -2
  404. package/dist/cli/chunks/llm-router-service-B2BFBQ76.js +0 -2
  405. package/dist/cli/chunks/load-test-ZHQ2MUGO.js +0 -2
  406. package/dist/cli/chunks/memory-backend-AAMQG6WH.js +0 -2
  407. package/dist/cli/chunks/pattern-null-store-RFNVA46O.js +0 -2
  408. package/dist/cli/chunks/project-root-7QL4KP5C.js +0 -2
  409. package/dist/cli/chunks/protocol-executor-2NW5BD4R.js +0 -2
  410. package/dist/cli/chunks/qe-reasoning-bank-G2JZOGKD.js +0 -2
  411. package/dist/cli/chunks/queen-coordinator-GRG5FT2A.js +0 -2
  412. package/dist/cli/chunks/real-embeddings-RQRVOKVM.js +0 -2
  413. package/dist/cli/chunks/router-LQB5SWAF.js +0 -2
  414. package/dist/cli/chunks/routing-feedback-OEEXA55N.js +0 -2
  415. package/dist/cli/chunks/rvf-dual-writer-BZK4M7BO.js +0 -2
  416. package/dist/cli/chunks/rvf-migration-adapter-EZZUJL2E.js +0 -2
  417. package/dist/cli/chunks/rvf-native-adapter-6COXTQZ3.js +0 -2
  418. package/dist/cli/chunks/safe-db-PE6G3L55.js +0 -2
  419. package/dist/cli/chunks/schedule-OLKQ6QYW.js +0 -2
  420. package/dist/cli/chunks/scheduler-LSGBDFAT.js +0 -2
  421. package/dist/cli/chunks/sqlite-persistence-HH4DNTYH.js +0 -2
  422. package/dist/cli/chunks/task-handlers-SS4ZDXNF.js +0 -9
  423. package/dist/cli/chunks/test-runner-process-PSSBNNGR.js +0 -2
  424. package/dist/cli/chunks/tree-sitter-wasm-parser-TYRQRJ2W.js +0 -2
  425. package/dist/cli/chunks/unified-memory-AGDZQ5XD.js +0 -2
  426. package/dist/cli/chunks/unified-memory-hnsw-X5TJ3JDE.js +0 -2
  427. package/dist/cli/chunks/unified-persistence-UCV7YETW.js +0 -2
  428. package/dist/cli/chunks/visual-security-ZLXRIQZV.js +0 -2
  429. package/dist/cli/chunks/witness-chain-CVIWYTD2.js +0 -2
  430. package/dist/cli/chunks/witness-chain-VBKORKOX.js +0 -2
  431. package/dist/cli/chunks/workflow-orchestrator-3ZN7MVCE.js +0 -2
@@ -13,6 +13,7 @@ import { toErrorMessage } from '../../shared/error-utils.js';
13
13
  import { ALL_DOMAINS, invalidPriorityMessage, isDomainName, isPriority } from '../../shared/types/index.js';
14
14
  import { validateIndexPaths, validateIndexTaskPayload } from '../../domains/code-intelligence/index-path-guard.js';
15
15
  import { routeInferredTask } from './orchestrate-routes.js';
16
+ import { getTaskExecutor } from './handler-factory.js';
16
17
  // ============================================================================
17
18
  // Task Type to Workflow Mapping (Issue #206)
18
19
  // Maps TaskTypes to their associated workflow IDs for auto-execution
@@ -111,6 +112,11 @@ export async function handleTaskList(params) {
111
112
  error: 'Fleet not initialized. Call fleet_init first.',
112
113
  };
113
114
  }
115
+ // A priority outside the allowed set is an error, not an empty list.
116
+ // Parity with `aqe task list --priority`.
117
+ if (params.priority !== undefined && !isPriority(params.priority)) {
118
+ return { success: false, error: invalidPriorityMessage(params.priority) };
119
+ }
114
120
  const { queen } = getFleetState();
115
121
  try {
116
122
  const tasks = queen.listTasks({
@@ -250,6 +256,11 @@ async function getOrchestrateLearningContext(task, guidanceDomain, patternDomain
250
256
  learning: { patternSearch: 'unavailable', reason: toErrorMessage(error) },
251
257
  };
252
258
  }
259
+ // #1204: a background embedder retry can finish while this call runs.
260
+ // Report vector matching only if the embedder was usable for the whole
261
+ // call, so hints found by text alone are never labelled vector.
262
+ const patternStatusBefore = service.getPatternSearchStatus();
263
+ const experienceStatusBefore = service.getExperienceGuidanceStatus();
253
264
  const experienceGuidance = await service.getExperienceGuidance(task, guidanceDomain);
254
265
  // Bring HNSW A (qe_patterns) into the routing decision alongside HNSW C
255
266
  // (experienceGuidance). Without this, only past trajectories influenced
@@ -258,13 +269,25 @@ async function getOrchestrateLearningContext(task, guidanceDomain, patternDomain
258
269
  const patternHintMatches = await service
259
270
  .searchPatternMatches(task, { limit: 5, domain: patternDomain })
260
271
  .catch(() => []);
261
- const status = service.getPatternSearchStatus();
272
+ const status = notVectorIfEither(patternStatusBefore, service.getPatternSearchStatus());
273
+ const experienceStatusAfter = service.getExperienceGuidanceStatus();
274
+ const experienceStatus = experienceStatusBefore && experienceStatusAfter
275
+ ? notVectorIfEither(experienceStatusBefore, experienceStatusAfter)
276
+ : experienceStatusAfter;
262
277
  return {
263
278
  experienceGuidance,
264
279
  patternHintMatches,
265
- learning: { patternSearch: status.mode, ...(status.reason ? { reason: status.reason } : {}) },
280
+ learning: {
281
+ patternSearch: status.mode,
282
+ ...(status.reason ? { reason: status.reason } : {}),
283
+ ...(experienceStatus ? { experienceGuidance: experienceStatus } : {}),
284
+ },
266
285
  };
267
286
  }
287
+ /** #1204: the status before the call unless it was vector; otherwise the one after. */
288
+ function notVectorIfEither(before, after) {
289
+ return before.mode === 'vector' ? after : before;
290
+ }
268
291
  export async function handleTaskOrchestrate(params) {
269
292
  if (!isFleetInitialized()) {
270
293
  return {
@@ -280,6 +303,11 @@ export async function handleTaskOrchestrate(params) {
280
303
  return { success: false, error: filePaths.error.message };
281
304
  }
282
305
  }
306
+ // #1117: an unrecognised priority used to fall through to p1 (and a
307
+ // requested p0 was downgraded). Reject it up front, as task_submit does.
308
+ if (params.priority !== undefined && mapPriority(params.priority) === undefined) {
309
+ return { success: false, error: invalidOrchestratePriorityMessage(params.priority) };
310
+ }
283
311
  const { queen, workflowOrchestrator } = getFleetState();
284
312
  try {
285
313
  // ADR-051: Route task to optimal model tier BEFORE execution
@@ -306,7 +334,7 @@ export async function handleTaskOrchestrate(params) {
306
334
  const { experienceGuidance, patternHintMatches, learning } = await getOrchestrateLearningContext(params.task, params.context?.project, params.context?.project ?? inferredDomain);
307
335
  // Parse task description to determine task type
308
336
  const taskType = inferTaskType(params.task);
309
- const priority = mapPriority(params.priority || 'medium');
337
+ const priority = mapPriority(params.priority ?? 'medium') ?? 'p2';
310
338
  // Issue #206: Check if this task type has an associated workflow
311
339
  const workflowId = TASK_WORKFLOW_MAP[taskType];
312
340
  if (workflowId && workflowOrchestrator) {
@@ -391,6 +419,9 @@ export async function handleTaskOrchestrate(params) {
391
419
  }
392
420
  const submitType = route.kind === 'route' ? route.type : taskType;
393
421
  const targetDomains = route.kind === 'route' ? [route.domain] : [];
422
+ // #1200: a caller-owned task runs through the MCP task executor, as the
423
+ // domain's own tool does; the Queen does not dispatch it.
424
+ const callerExecutor = route.kind === 'route' && route.executionOwner === 'caller' ? getTaskExecutor() : null;
394
425
  // #1081: the type must have a domain handler. Otherwise the Queen can
395
426
  // only fail the task at dispatch, so reject it here with the reason.
396
427
  const executable = queen.validateTaskExecutable(submitType, targetDomains);
@@ -424,6 +455,7 @@ export async function handleTaskOrchestrate(params) {
424
455
  Object.assign(taskPayload, route.payload);
425
456
  const result = await queen.submitTask({
426
457
  type: submitType,
458
+ ...(callerExecutor ? { executionOwner: 'caller' } : {}),
427
459
  priority,
428
460
  targetDomains,
429
461
  payload: {
@@ -478,6 +510,14 @@ export async function handleTaskOrchestrate(params) {
478
510
  // Issue N1: Trajectory auto-close is handled by subscribeTrajectoryEvents(),
479
511
  // which listens for TaskCompleted/TaskFailed on the event router.
480
512
  // No per-task polling needed.
513
+ // #1200: run a caller-owned task after its trajectory started, without
514
+ // waiting: the executor's TaskCompleted / TaskFailed settle it for task_status.
515
+ const execution = callerExecutor ? queen.getTaskStatus(taskId) : undefined;
516
+ if (callerExecutor && execution) {
517
+ void callerExecutor.execute(execution.task).catch(error => {
518
+ console.error(`[TaskOrchestrate] Task ${taskId} failed to execute: ${toErrorMessage(error)}`);
519
+ });
520
+ }
481
521
  // Trajectory judge: opt-in LLM scoring of recent unscored trajectories.
482
522
  // Hook-created rows in qe_trajectories never receive feedback unless
483
523
  // something goes back and judges them. This catches up by scoring ≤5
@@ -768,7 +808,9 @@ function inferTaskType(description) {
768
808
  return 'generate-tests';
769
809
  }
770
810
  /**
771
- * Map priority string to Priority type
811
+ * Map a task_orchestrate priority to the canonical Priority type.
812
+ * Accepts the named levels and the canonical p0-p3 values; returns
813
+ * undefined for anything else so the caller can reject it (#1117).
772
814
  */
773
815
  function mapPriority(priority) {
774
816
  switch (priority) {
@@ -781,9 +823,12 @@ function mapPriority(priority) {
781
823
  case 'low':
782
824
  return 'p3';
783
825
  default:
784
- return 'p1';
826
+ return isPriority(priority) ? priority : undefined;
785
827
  }
786
828
  }
829
+ function invalidOrchestratePriorityMessage(value) {
830
+ return `${invalidPriorityMessage(value)} (or critical, high, medium, low)`;
831
+ }
787
832
  /**
788
833
  * Record a task outcome for ReasoningBank learning
789
834
  * ADR-051: Enables cross-session learning from task execution
@@ -684,6 +684,8 @@ export class MCPProtocolServer {
684
684
  isCacheable: false,
685
685
  parameters: [
686
686
  { name: 'status', type: 'string', description: 'Filter by status' },
687
+ { name: 'priority', type: 'string', description: 'Filter by priority', enum: ['p0', 'p1', 'p2', 'p3'] },
688
+ { name: 'domain', type: 'string', description: 'Filter by assigned domain' },
687
689
  { name: 'limit', type: 'number', description: 'Maximum results', default: 50 },
688
690
  ],
689
691
  },
@@ -722,6 +724,7 @@ export class MCPProtocolServer {
722
724
  { name: 'task', type: 'string', description: 'Task description', required: true },
723
725
  { name: 'strategy', type: 'string', description: 'Execution strategy', enum: ['parallel', 'sequential', 'adaptive'] },
724
726
  { name: 'filePaths', type: 'array', description: 'Project files the task works on. A security scan or quality assessment runs on these files and is refused without them.', items: { type: 'string' } },
727
+ { name: 'priority', type: 'string', description: 'Task priority (default: medium/p2)', enum: ['p0', 'p1', 'p2', 'p3', 'critical', 'high', 'medium', 'low'] },
725
728
  ],
726
729
  },
727
730
  handler: (params) => handleTaskOrchestrate(params),
@@ -11,7 +11,7 @@
11
11
  * - Pattern evolution and consolidation
12
12
  * - Synchronous learning (no fire-and-forget)
13
13
  */
14
- import { type Trajectory, type TrajectoryStep as TrackerTrajectoryStep, type TrajectoryOptions, type ExperienceGuidance, type EnhancedReasoningBankAdapterStats } from '../../integrations/agentic-flow/reasoning-bank/index.js';
14
+ import { type Trajectory, type TrajectoryStep as TrackerTrajectoryStep, type TrajectoryOptions, type ExperienceGuidance, type ExperienceGuidanceStatus, type EnhancedReasoningBankAdapterStats } from '../../integrations/agentic-flow/reasoning-bank/index.js';
15
15
  import { type RealQERoutingRequest, type RealQERoutingResult, type RealQEReasoningBankStats, type PatternSearchStatus, type RealQEPatternSearchResult } from '../../learning/real-qe-reasoning-bank.js';
16
16
  import type { QEPattern, QEDomain } from '../../learning/qe-patterns.js';
17
17
  /**
@@ -210,6 +210,11 @@ export declare class ReasoningBankService {
210
210
  }): Promise<RealQEPatternSearchResult[]>;
211
211
  /** #1022: whether pattern search uses vectors or text matching only. */
212
212
  getPatternSearchStatus(): PatternSearchStatus;
213
+ /**
214
+ * #1204: whether similar-experience guidance can use vectors; null when
215
+ * experience replay is disabled or the service is disposed.
216
+ */
217
+ getExperienceGuidanceStatus(): ExperienceGuidanceStatus | null;
213
218
  /**
214
219
  * Get service statistics
215
220
  */
@@ -519,6 +519,15 @@ export class ReasoningBankService {
519
519
  getPatternSearchStatus() {
520
520
  return this.enhancedAdapter.getPatternSearchStatus();
521
521
  }
522
+ /**
523
+ * #1204: whether similar-experience guidance can use vectors; null when
524
+ * experience replay is disabled or the service is disposed.
525
+ */
526
+ getExperienceGuidanceStatus() {
527
+ if (!this.config.enableExperienceReplay || this.disposed)
528
+ return null;
529
+ return this.enhancedAdapter.getExperienceGuidanceStatus();
530
+ }
522
531
  /**
523
532
  * Get service statistics
524
533
  */
@@ -584,6 +584,20 @@ export interface CoverageAnalyzeResult {
584
584
  * this is "no measurement", never 0%.
585
585
  */
586
586
  unmeasured?: boolean;
587
+ /**
588
+ * #1154: `insufficient-evidence` when source files under the target are not
589
+ * in the report, or the report is older than the sources. The figures then
590
+ * cover the measured files only and must not be read as a pass.
591
+ */
592
+ evidenceStatus?: 'complete' | 'insufficient-evidence';
593
+ /** #1154: source files under the target with no entry in the report. */
594
+ unmeasuredFiles?: string[];
595
+ /** #1154: the report is older than these source files. */
596
+ staleReport?: {
597
+ reportPath: string;
598
+ reportModified: string;
599
+ newerFiles: string[];
600
+ };
587
601
  /** Caveats the caller should surface (e.g. "no instrumentation ran"). */
588
602
  warning?: string;
589
603
  }
@@ -26,7 +26,7 @@ const PATTERNS = [
26
26
  },
27
27
  {
28
28
  category: 'api_key_header',
29
- regex: /(Authorization:\s*Bearer\s+)\S+/gi,
29
+ regex: /(Authorization:\s*(?:Bearer|Token)\s+)\S+/gi,
30
30
  replacement: '$1<REDACTED:api_key>',
31
31
  modes: ['strict', 'balanced'],
32
32
  },
@@ -38,7 +38,8 @@ const PATTERNS = [
38
38
  },
39
39
  {
40
40
  category: 'private_key',
41
- regex: /-----BEGIN\s[\w\s]*PRIVATE KEY-----[\s\S]*?-----END\s[\w\s]*PRIVATE KEY-----/g,
41
+ // A block with no END line (truncated output) is redacted to end of input.
42
+ regex: /-----BEGIN\s[\w\s]*PRIVATE KEY-----(?:[\s\S]*?-----END\s[\w\s]*PRIVATE KEY-----|[\s\S]*)/g,
42
43
  replacement: '<REDACTED:private_key>',
43
44
  modes: ['strict', 'balanced'],
44
45
  },
@@ -66,6 +67,25 @@ const PATTERNS = [
66
67
  replacement: '<REDACTED:slack_token>',
67
68
  modes: ['strict', 'balanced'],
68
69
  },
70
+ {
71
+ category: 'huggingface_token',
72
+ regex: /\bhf_[A-Za-z0-9]{30,}\b/g,
73
+ replacement: '<REDACTED:huggingface_token>',
74
+ modes: ['strict', 'balanced'],
75
+ },
76
+ {
77
+ category: 'npm_token',
78
+ regex: /\bnpm_[A-Za-z0-9]{36,}\b/g,
79
+ replacement: '<REDACTED:npm_token>',
80
+ modes: ['strict', 'balanced'],
81
+ },
82
+ {
83
+ // Cognitum API keys; the trailing lookahead skips snake_case identifiers.
84
+ category: 'cognitum_key',
85
+ regex: /\bcog_[A-Za-z0-9-]{20,}(?!\w)/g,
86
+ replacement: '<REDACTED:cognitum_key>',
87
+ modes: ['strict', 'balanced'],
88
+ },
69
89
  {
70
90
  category: 'stripe_key',
71
91
  regex: /\b(sk_live_|pk_live_|sk_test_|pk_test_|rk_live_|rk_test_)[A-Za-z0-9]{10,}\b/g,
@@ -1,3 +1,4 @@
1
+ const IDLE_READ_AHEAD_BYTES = 1024 * 1024;
1
2
  /**
2
3
  * Bound headers and bodies; streaming callers may use an idle body deadline.
3
4
  * `maxDurationMs` adds an absolute cap from the start of the request, so an
@@ -40,22 +41,35 @@ export async function fetchWithResponseDeadline(url, options, timeoutMs, timeout
40
41
  resetIdleDeadline();
41
42
  const reader = response.body.getReader();
42
43
  let finished = false;
44
+ let expiry;
43
45
  const finish = () => {
44
46
  finished = true;
45
47
  clearTimers();
46
48
  };
49
+ // Idle streams read ahead of the consumer, so the deadline measures network
50
+ // silence rather than consumer pauses (#962). The read-ahead is bounded; a
51
+ // consumer stalled behind a full buffer still meets the deadline.
52
+ const highWaterMark = bodyDeadline === 'idle' ? IDLE_READ_AHEAD_BYTES : 0;
53
+ // Bytes already received are delivered before the deadline error surfaces.
54
+ const failWhenDrained = (controller) => {
55
+ if (expiry && controller.desiredSize === highWaterMark)
56
+ controller.error(expiry);
57
+ };
47
58
  const body = new ReadableStream({
48
59
  start(controller) {
49
60
  expireBody = error => {
50
61
  if (finished)
51
62
  return;
52
63
  finish();
53
- controller.error(error);
64
+ expiry = error;
65
+ failWhenDrained(controller);
54
66
  // Cancel also settles any pending read before releasing its lock.
55
67
  void reader.cancel(error).catch(() => { }).finally(() => reader.releaseLock());
56
68
  };
57
69
  },
58
70
  async pull(controller) {
71
+ if (expiry)
72
+ return failWhenDrained(controller);
59
73
  try {
60
74
  const result = await reader.read();
61
75
  if (finished)
@@ -89,7 +103,7 @@ export async function fetchWithResponseDeadline(url, options, timeoutMs, timeout
89
103
  reader.releaseLock();
90
104
  }
91
105
  },
92
- }, { highWaterMark: 0 });
106
+ }, new ByteLengthQueuingStrategy({ highWaterMark }));
93
107
  const bounded = new Response(body, {
94
108
  status: response.status,
95
109
  statusText: response.statusText,
@@ -43,6 +43,8 @@ export function isPriority(value) {
43
43
  }
44
44
  /** Shared rejection message so `task_submit` and `aqe task submit` stay in parity (#1108). */
45
45
  export function invalidPriorityMessage(value) {
46
- return `Invalid priority: ${String(value)}. Valid priorities: ${ALL_PRIORITIES.join(', ')}`;
46
+ // An empty string would otherwise render as "Invalid priority: ." (#1117).
47
+ const shown = value === '' ? '(empty)' : String(value);
48
+ return `Invalid priority: ${shown}. Valid priorities: ${ALL_PRIORITIES.join(', ')}`;
47
49
  }
48
50
  //# sourceMappingURL=index.js.map
@@ -79,7 +79,14 @@ export class InfraAwareAgentProvider {
79
79
  * Failing services get responsiveness=0, healthy services get 1.0.
80
80
  */
81
81
  getInfraAgentHealth(agentId) {
82
- const serviceName = agentId.replace(new RegExp(`^${this.prefix}`), '');
82
+ // The prefix is a literal, not a pattern: createInfraAgents() builds ids
83
+ // by concatenation and getAgentHealth() routes by startsWith(). Strip it
84
+ // the same way so a prefix containing regex metacharacters still recovers
85
+ // the real service name instead of silently reporting a down service as
86
+ // healthy (and so an unparseable prefix can't throw).
87
+ const serviceName = agentId.startsWith(this.prefix)
88
+ ? agentId.slice(this.prefix.length)
89
+ : agentId;
83
90
  const failingServices = this.observer.getFailingServices();
84
91
  const isFailing = failingServices.has(serviceName);
85
92
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-qe",
3
- "version": "3.15.11",
3
+ "version": "3.15.12",
4
4
  "description": "Agentic Quality Engineering V3 - Domain-Driven Design Architecture with 13 Bounded Contexts, O(log n) coverage analysis, ReasoningBank learning, 60 specialized QE agents, mathematical Coherence verification, deep Claude Flow integration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -271,7 +271,7 @@
271
271
  "@types/ws": "^8.18.1",
272
272
  "@typescript-eslint/eslint-plugin": "^8.59.3",
273
273
  "@typescript-eslint/parser": "^8.59.3",
274
- "@vitest/coverage-v8": "^5.0.1",
274
+ "@vitest/coverage-v8": "^5.0.5",
275
275
  "ajv": "^8.20.0",
276
276
  "ajv-formats": "^3.0.1",
277
277
  "dotenv": "^17.2.3",
@@ -282,7 +282,7 @@
282
282
  "msw": "^2.12.7",
283
283
  "tsx": "^4.21.0",
284
284
  "vibium": "^26.8.21",
285
- "vitest": "^5.0.1"
285
+ "vitest": "^5.0.5"
286
286
  },
287
287
  "engines": {
288
288
  "node": ">=22.13.0",
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.11");process.exit(0)}
2
- import{a,b,c}from"./chunk-UTTSH4NH.js";import"./chunk-HDNWSKHA.js";import"./chunk-YPX2TV3M.js";import"./chunk-JFLU7L3W.js";import"./chunk-DDEOZPWJ.js";import"./chunk-CFWGGRE7.js";export{a as AgentBoosterAdapter,b as createAgentBoosterAdapter,c as createAgentBoosterAdapterSync};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.11");process.exit(0)}
2
- import{a,b,c,d,e,f}from"./chunk-FWSGPE3V.js";import"./chunk-I36CRDHF.js";import"./chunk-6NA3KZZT.js";import"./chunk-NTB342NJ.js";import"./chunk-JGJXXAS6.js";import"./chunk-35M2X3C5.js";import"./chunk-7HEMJHPP.js";import"./chunk-DOBZPSKE.js";import"./chunk-V5AADCBC.js";import"./chunk-CO3DX2AX.js";import"./chunk-KDI5JOYZ.js";import"./chunk-NT7JRHMH.js";import"./chunk-CIAL4YRY.js";import"./chunk-AUUJBXWX.js";import"./chunk-YNOCQ2SL.js";import"./chunk-IOZRKXR5.js";import"./chunk-LD5CFK53.js";import"./chunk-XGPTZUKQ.js";import"./chunk-JFLU7L3W.js";import"./chunk-WM3SRRA6.js";import"./chunk-XGBU3KEM.js";import"./chunk-G2IJFNZS.js";import"./chunk-M5XYIQYZ.js";import"./chunk-NQZNMCZU.js";import"./chunk-5N25I53C.js";import"./chunk-OYJC3YON.js";import"./chunk-VLD7Z2ED.js";import"./chunk-EJPK7OTR.js";import"./chunk-7R5HC56U.js";import"./chunk-IW6WDGHM.js";import"./chunk-QDESWOZP.js";import"./chunk-IO5537OM.js";import"./chunk-FZHSG75I.js";import"./chunk-VO3DRK4P.js";import"./chunk-HJ3XNTTJ.js";import"./chunk-76SNL7GU.js";import"./chunk-DOFREOPQ.js";import"./chunk-EH2S6AOR.js";import"./chunk-XNLIWQYE.js";import"./chunk-Z2EA7A4Z.js";import"./chunk-J4JMCZVA.js";import"./chunk-4MUBW4RT.js";import"./chunk-DDEOZPWJ.js";import"./chunk-XJKZ7FTR.js";import"./chunk-CFWGGRE7.js";export{b as AQELearningEngine,a as DEFAULT_ENGINE_CONFIG,c as DEFAULT_META_LEARNING_CONFIG,d as MetaLearningEngine,e as createAQELearningEngine,f as createDefaultLearningEngine};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.11");process.exit(0)}
2
- import{a,b,c,d,e,f,g,h,i,j,k,l}from"./chunk-ZMHCMJ4J.js";import"./chunk-RTY7VSZB.js";import"./chunk-OV5RPLKV.js";import"./chunk-LD5CFK53.js";import"./chunk-XGPTZUKQ.js";import"./chunk-JFLU7L3W.js";import"./chunk-WM3SRRA6.js";import"./chunk-XGBU3KEM.js";import"./chunk-G2IJFNZS.js";import"./chunk-M5XYIQYZ.js";import"./chunk-NQZNMCZU.js";import"./chunk-5N25I53C.js";import"./chunk-OYJC3YON.js";import"./chunk-EJPK7OTR.js";import"./chunk-7R5HC56U.js";import"./chunk-QDESWOZP.js";import"./chunk-IO5537OM.js";import"./chunk-FZHSG75I.js";import"./chunk-VO3DRK4P.js";import"./chunk-HJ3XNTTJ.js";import"./chunk-76SNL7GU.js";import"./chunk-EH2S6AOR.js";import"./chunk-XNLIWQYE.js";import"./chunk-4MUBW4RT.js";import"./chunk-DDEOZPWJ.js";import"./chunk-XJKZ7FTR.js";import"./chunk-CFWGGRE7.js";export{l as MCPToolBase,k as defaultToolLogger,j as getKernel,i as getLLMRouter,e as getMemoryBackend,g as getSharedLLMRouter,c as getSharedMemoryBackend,a as isMemoryOnlyMode,b as registerRvfResetFn,h as resetSharedLLMRouter,d as resetSharedMemoryBackend,f as setSharedLLMRouter};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.11");process.exit(0)}
2
- import{a}from"./chunk-HFFPYC4G.js";import"./chunk-ZMHCMJ4J.js";import"./chunk-RTY7VSZB.js";import"./chunk-OV5RPLKV.js";import"./chunk-LD5CFK53.js";import"./chunk-XGPTZUKQ.js";import"./chunk-JFLU7L3W.js";import"./chunk-WM3SRRA6.js";import"./chunk-XGBU3KEM.js";import"./chunk-G2IJFNZS.js";import"./chunk-M5XYIQYZ.js";import"./chunk-NQZNMCZU.js";import"./chunk-5N25I53C.js";import"./chunk-OYJC3YON.js";import"./chunk-EJPK7OTR.js";import"./chunk-7R5HC56U.js";import"./chunk-QDESWOZP.js";import"./chunk-IO5537OM.js";import"./chunk-FZHSG75I.js";import"./chunk-VO3DRK4P.js";import"./chunk-HJ3XNTTJ.js";import"./chunk-76SNL7GU.js";import"./chunk-EH2S6AOR.js";import"./chunk-XNLIWQYE.js";import"./chunk-4MUBW4RT.js";import"./chunk-DDEOZPWJ.js";import"./chunk-XJKZ7FTR.js";import"./chunk-CFWGGRE7.js";export{a as BrowserWorkflowTool};
@@ -1,6 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.11");process.exit(0)}
2
- import{a as F,c as $,d as N,e as b,f as L}from"./chunk-72ZBJD2E.js";import{c as _,d as v}from"./chunk-M7XFBSIK.js";import{c as C,e as se}from"./chunk-ITL3IN2E.js";import{c as A,d as re}from"./chunk-EH2S6AOR.js";import*as p from"fs";import*as X from"os";import*as l from"path";import*as f from"fs";import*as O from"os";import*as u from"path";se();function oe(n=process.env){let t=(n.AQE_COVERAGE_NO_EXEC??"").trim().toLowerCase();return t?t!=="false"&&t!=="0"&&t!=="no"&&t!=="off":!1}var ae=new Set([".ts",".tsx",".js",".jsx",".mjs",".cjs",".py",".go",".rs",".java",".rb"]),I=new Set(["node_modules","dist","build","coverage",".git",".claude",".agentic-qe","__pycache__",".venv","target","vendor"]),W=new Set(["tests","test","__tests__","benches","examples","spec"]),ie=[/\.test\./i,/\.spec\./i,/_test\./i,/_spec\./i,/^test_/i,/^test\./i,/^conftest\./i];function y(n,t){let e=n.split(u.sep).join("/"),r=u.basename(e);if(ie.some(s=>s.test(r)))return!0;let o=e;if(t){let s=u.resolve(t).split(u.sep).join("/"),i=u.resolve(n).split(u.sep).join("/");(i===s||i.startsWith(`${s}/`))&&(o=i.slice(s.length).replace(/^\//,""))}return o.split("/").some(s=>W.has(s))}function ce(n){let t=n.split(""),e=n.length,r=0,o=(s,i)=>{for(let a=s;a<i&&a<e;a++)n[a]!==`
3
- `&&(t[a]=" ")};for(;r<e;){let s=n[r];if(s==="/"&&n[r+1]==="/"){let a=n.indexOf(`
4
- `,r),c=a===-1?e:a;o(r,c),r=c;continue}if(s==="/"&&n[r+1]==="*"){let a=0,c=r;for(;r<e;){if(n[r]==="/"&&n[r+1]==="*"){a++,r+=2;continue}if(n[r]==="*"&&n[r+1]==="/"){if(a--,r+=2,a===0)break;continue}r++}o(c,r);continue}let i=/^b?r(#*)"/.exec(n.slice(r,r+300));if(i){let a=`"${i[1]}`,c=r+i[0].length,g=n.indexOf(a,c),h=g===-1?e:g+a.length;o(r,h),r=h;continue}if(s==='"'){let a=r;for(r++;r<e;){if(n[r]==="\\"){r+=2;continue}if(n[r]==='"'){r++;break}r++}o(a,r);continue}if(s==="'"){let a=-1;if(n[r+1]==="\\"){let c=n.indexOf("'",r+2);c!==-1&&c<=r+5&&(a=c+1)}else n[r+2]==="'"&&(a=r+3);if(a!==-1){o(r,a),r=a;continue}}r++}return t.join("")}function le(n,t){if(t!==".rs")return[];let e=ce(n).split(`
5
- `),r=[];for(let o=0;o<e.length;o++){if(!/#\s*\[\s*cfg\s*\(\s*test\s*\)\s*\]/.test(e[o]))continue;let s=-1;for(let c=o;c<Math.min(e.length,o+10);c++){let g=e[c],h=g.indexOf("{"),d=g.indexOf(";");if(d!==-1&&(h===-1||d<h))break;if(h!==-1){let x=e.slice(o,c+1).join(" ");/\bmod\s+\w+/.test(x)&&(s=c);break}}if(s===-1)continue;let i=0,a=-1;for(let c=s;c<e.length;c++){for(let g of e[c])g==="{"?i++:g==="}"&&i--;if(i<=0){a=c;break}}r.push([o+1,(a===-1?e.length-1:a)+1]),o=a===-1?e.length:a}return r}function ue(n){if(n.length===0)return 0;let t=n.split(`
6
- `);return t[t.length-1]===""&&t.pop(),t.length}function U(n,t=6){let e=u.resolve(n);try{if(!f.existsSync(e))return null;f.statSync(e).isDirectory()||(e=u.dirname(e))}catch{return null}for(let r=0;r<=t;r++){if(f.existsSync(u.join(e,"Cargo.toml")))return f.realpathSync(e);let o=u.dirname(e);if(o===e)break;e=o}return null}function J(n,t=0){if(t>4)return!1;let e;try{e=f.readdirSync(n,{withFileTypes:!0})}catch{return!1}for(let r of e)if(r.isFile()&&u.extname(r.name)===".rs")return!0;for(let r of e)if(r.isDirectory()&&!I.has(r.name)&&J(u.join(n,r.name),t+1))return!0;return!1}function Fe(n){let t=U(n);if(t===null)return!1;let e=u.resolve(n);return e===t||J(e)}async function $e(n,t={}){if(oe())return null;let e=t.timeoutMs??3e5,r=U(n);if(!r)return null;let o=await C("cargo",["llvm-cov","--version"],{cwd:r,timeout:3e4});if(o.error||o.status!==0)return null;let s=u.join(f.mkdtempSync(u.join(O.tmpdir(),"aqe-rust-cov-")),"lcov.info");try{let i=await C("cargo",["llvm-cov","--lcov","--output-path",s],{cwd:r,timeout:e});if(i.error||i.status!==0||!f.existsSync(s))return null;let c=b(f.readFileSync(s,"utf-8")).files.filter(d=>!y(d.path,r));if(c.length===0)return null;let g=z(c),h=c.some(d=>d.branches.total>0);return{data:g,provenance:{method:"cargo-llvm-cov",estimated:!1,branchDataCollected:h,functionDataCollected:c.some(d=>d.functions.total>0),notes:h?[]:["cargo-llvm-cov reported no branch data (Rust branch coverage requires a nightly toolchain with -Z coverage-options=branch). Branch coverage is reported as null rather than assumed."]}}}catch{return null}finally{try{f.rmSync(u.dirname(s),{recursive:!0,force:!0})}catch{}}}var M={".rs":{fn:/\bfn\s+\w+/g,branch:/\b(if|match|while|for)\b|\?\?|\|\||&&/g},".go":{fn:/\bfunc\s+\w*/g,branch:/\b(if|switch|case|for|select)\b|\|\||&&/g},".py":{fn:/\b(def|lambda)\b/g,branch:/\b(if|elif|for|while|except)\b|\band\b|\bor\b/g},".java":{fn:/\b(public|private|protected|static)[\w<>,\s[\]]+\w+\s*\(/g,branch:/\b(if|switch|case|for|while|catch)\b|\|\||&&/g},".rb":{fn:/\bdef\s+\w+/g,branch:/\b(if|elsif|unless|case|when|while)\b|\|\||&&/g},default:{fn:/\bfunction\b|=>|\b\w+\s*\([^)]*\)\s*\{/g,branch:/\b(if|switch|case|for|while|catch)\b|\?\?|\|\||&&/g}};function fe(n){return M[n]??M.default}function P(n,t){return(n.match(new RegExp(t.source,t.flags))||[]).length}function z(n){let t=s=>n.reduce((i,a)=>i+s(a),0),e=(s,i)=>i>0?Math.round(s/i*100):0,r=t(s=>s.lines.total),o=t(s=>s.lines.covered);return{files:n,summary:{line:e(o,r),branch:e(t(s=>s.branches.covered),t(s=>s.branches.total)),function:e(t(s=>s.functions.covered),t(s=>s.functions.total)),statement:e(o,r),files:n.length}}}function pe(n){let t=[],e=n;function r(o,s){if(s>6)return;let i;try{i=f.readdirSync(o,{withFileTypes:!0})}catch{return}for(let a of i){let c=u.join(o,a.name);if(a.isDirectory()){if(I.has(a.name)||W.has(a.name))continue;r(c,s+1)}else if(a.isFile()){if(!ae.has(u.extname(a.name))||y(c,e))continue;t.push(c)}}}return r(n,0),t}function Ne(n){if(!f.existsSync(n)||!f.statSync(n).isDirectory())return null;let t=pe(n);if(t.length===0)return null;let e=t.map(r=>{let o="";try{o=v(r,{outsideRoot:"allow"})}catch{}let s=u.extname(r),i=ue(o),a=le(o,s),c=m=>a.some(([w,R])=>m>=w&&m<=R),g=a.reduce((m,[w,R])=>m+(R-w+1),0),h=Math.max(i-g,0),d=fe(s),x=P(o,d.fn),Y=a.length>0,K=ge(r),Z=Y||K,H=P(o,d.branch),Q=Math.min(H*.005,.15),ee=Math.min(h*1e-4,.1),te=Math.max(.05,Math.min(.95,Z?.85-Q-ee:.2)),j=Math.floor(h*te),D=[];for(let m=1;m<=i;m++)c(m)||D.push(m);let ne=D.slice(j);return{path:r,lines:{covered:j,total:h},branches:{covered:0,total:0},functions:{covered:0,total:x},statements:{covered:j,total:h},uncoveredLines:ne,uncoveredBranches:[]}});return{data:z(e),provenance:{method:"static-estimation",estimated:!0,branchDataCollected:!1,functionDataCollected:!1,notes:["No instrumentation ran. These numbers are a STATIC ESTIMATE derived from source shape (file size, declaration counts, presence of a test file) \u2014 they are not measured coverage and must not be reported as such.","Branch and function coverage were not collected and are reported as null."]}}}function ge(n){let t=u.extname(n),e=n.slice(0,-t.length);return[`${e}.test${t}`,`${e}.spec${t}`,`${e}_test${t}`,`${e}.test${t}`.replace("/src/","/tests/"),`${e}.spec${t}`.replace("/src/","/tests/"),`${e}${t}`.replace("/src/","/tests/")].some(o=>{try{return f.existsSync(o)}catch{return!1}})}re();var he=["package.json","pyproject.toml","setup.py","setup.cfg","go.mod","Cargo.toml","pom.xml","build.gradle","build.gradle.kts",".git"],de=["vitest.config.ts","vitest.config.js","vitest.config.mts","vitest.config.mjs","vitest.config.cts","vitest.config.cjs","vitest.workspace.ts","vitest.workspace.js","vitest.workspace.mts","vitest.workspace.mjs","vitest.workspace.json","vite.config.ts","vite.config.js","vite.config.mts","vite.config.mjs","jest.config.ts","jest.config.js","jest.config.mts","jest.config.mjs","jest.config.cts","jest.config.cjs","jest.config.json"];function G(n){return de.some(t=>p.existsSync(l.join(n,t)))?!0:T(n)?.jest!==void 0}function S(n){let t=T(n);if(!t)return null;let e={...t.devDependencies,...t.dependencies};return e.jest||e["@jest/core"]?"jest":e.mocha||e.nyc?"nyc":e.vitest?"vitest":null}function me(n){try{return p.readdirSync(n).some(t=>/^\.(mocharc|nycrc)(\.|$)/.test(t))}catch{return!1}}function ve(n,t){if(me(n))return(S(t)??"vitest")==="nyc";let e=S(n);return e===null||e===(S(t)??"vitest")}function T(n){try{let t=JSON.parse(v(l.join(n,"package.json"),{outsideRoot:"allow"}));return typeof t=="object"&&t!==null?t:null}catch{return null}}function V(n){let t=[],e=!1,o=T(n)?.workspaces,s=Array.isArray(o)?o:typeof o=="object"&&o!==null&&Array.isArray(o.packages)?o.packages:null;o!=null&&typeof o=="object"&&(e=!0),s&&t.push(...s.filter(i=>typeof i=="string"));try{let i=v(l.join(n,"pnpm-workspace.yaml"),{outsideRoot:"allow"});e=!0;let a=!1;for(let c of i.split(/\r?\n/)){let g=c.replace(/\s+#.*$/,"").trimEnd();if(/^packages\s*:/.test(g)){a=!0;continue}if(a){let h=/^\s+-\s+(.+)$/.exec(g);h?t.push(h[1].trim().replace(/^['"]|['"]$/g,"")):/^\S/.test(g)&&(a=!1)}}}catch{}return e?t:null}function be(n){let r=n.replace(/^\.\//,"").replace(/\/+$/,"").replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*\//g,"\0").replace(/\*\*/g,"").replace(/\*/g,"[^/]*").replace(/\?/g,"[^/]").split("\0").join("(?:.*/)?").split("").join(".*");return new RegExp(`^${r}$`)}function ye(n,t){let e=V(n);if(!e)return!1;let r=l.relative(n,t).split(l.sep).join("/");if(r===""||r.startsWith("..")||l.isAbsolute(r))return!1;let o=!1;for(let s of e){let i=s.startsWith("!"),a=i?s.slice(1):s;l.isAbsolute(a)||/^[A-Za-z]:/.test(a)||a.split(/[\\/]/).includes("..")||be(a).test(r)&&(o=!i)}return o}function k(n,t){let e=l.relative(t,n);return e===""||!e.startsWith("..")&&!l.isAbsolute(e)}function xe(n){try{return p.realpathSync(l.resolve(A(n)))}catch{return null}}function q(n,t=12){let e;try{let a=l.resolve(n);if(!p.existsSync(a))return null;let c=p.realpathSync(a);e=p.statSync(c).isDirectory()?c:l.dirname(c)}catch{return null}let r=null;try{r=p.realpathSync(X.homedir())}catch{r=null}let o=e,s=null,i=null;for(let a=0;a<=t;a++){if(r!==null&&e===r&&e!==o)return s;if(!s&&he.some(g=>p.existsSync(l.join(e,g)))){if(s=e,G(e)||!p.existsSync(l.join(e,"package.json")))return e}else if(s&&V(e)!==null)return i??=xe(o)??"",i&&k(e,i)&&k(s,i)&&ye(e,s)&&G(e)&&ve(s,e)?e:s;if(s&&p.existsSync(l.join(e,".git")))return s;let c=l.dirname(e);if(c===e)return s;e=c}return s}function We(n,t){try{let e=p.realpathSync(t),r=p.realpathSync(l.resolve(n)),o=p.statSync(r).isDirectory()?r:l.dirname(r);for(;o!==e&&k(o,e);){if(p.existsSync(l.join(o,"package.json")))return`${l.relative(e,o).split(l.sep).join("/")}/`;let s=l.dirname(o);if(s===o)break;o=s}}catch{}return null}var je=new Set(["lcov.info","coverage-final.json","coverage-summary.json","coverage.xml","cobertura-coverage.xml","cobertura.xml"]);function we(n){let t=l.basename(n).toLowerCase();return je.has(t)||t.endsWith(".lcov")||t.endsWith(".lcov.info")}async function Re(n){let t;try{t=await _(n,{outsideRoot:"allow"})}catch{return null}if(t.trim().length===0)return null;try{let e=l.basename(n).toLowerCase(),r;if(e.endsWith(".json")){let o=JSON.parse(t);if(Se(o))r=N(t);else if(Ce(o))r=$(t);else return null}else e.endsWith(".xml")?r=L(t):r=b(t);return r.files.length>0?r:null}catch{return null}}function Ce(n){let t=Object.values(n);return t.length>0&&t.every(e=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&typeof e.s=="object"&&typeof e.statementMap=="object")}function Se(n){let t=n.total;return typeof t=="object"&&t!==null&&typeof t.lines=="object"}function Ee(n,t){let e=l.relative(t,n);return e===""||!e.startsWith("..")&&!l.isAbsolute(e)}function E(n){try{return p.realpathSync(n)}catch{return l.resolve(n)}}function ke(n,t,e){let r=E(t),o=E(e);return o===r?[...n.files]:n.files.filter(s=>{let i=l.isAbsolute(s.path)?E(s.path):l.resolve(r,s.path);return Ee(i,o)})}function B(n,t,e,r={}){if(r.numTotalTests===0)return{status:"no-data",reason:"no-tests-ran"};let o=ke(n,t,e);if(o.length===0)return{status:"no-data",reason:"target-not-covered"};let s=o.filter(i=>!y(i.path,t));return s.length===0?{status:"no-data",reason:"test-only-report"}:{status:"measured",files:s}}async function Ue(n){let t=l.resolve(n),e;try{e=p.statSync(t)}catch{return{status:"target-missing",target:t}}if(e.isFile()&&we(t)){let s=l.dirname(t),i=q(s)??(l.basename(s)==="coverage"?l.dirname(s):s),a=await Re(t),c=a?B(a,i,i):{status:"no-data",reason:"unreadable-report"};return{status:"evaluated",target:t,projectRoot:i,source:"report-file",evaluation:c}}let r=q(t)??(e.isDirectory()?t:l.dirname(t)),o=await F(r);return o?{status:"evaluated",target:t,projectRoot:r,source:"project-report",evaluation:B(o,r,t)}:{status:"no-report",target:t,projectRoot:r}}function Je(n,t,e){let r=[n.line];e.statement!==!1&&r.push(n.statement),e.branch&&r.push(n.branch),e.function&&r.push(n.function);let o=r.reduce((s,i)=>s+i,0)/r.length;return{overall:o,meetsThreshold:o>=t}}var Te=/^Coverage is [\d.]+% below threshold/i;function ze(n,t,e,r){let o=n.filter(s=>!Te.test(s)&&(r.branch||!/branch coverage/i.test(s))&&(r.function||!/function coverage/i.test(s)));return t.meetsThreshold?o:[`Coverage is ${(e-t.overall).toFixed(1)}% below threshold. Focus on high-risk files first.`,...o]}function Ge(n){return n==="target-not-covered"||n==="no-tests-ran"}function qe(n,t,e){switch(n){case"target-missing":return`Target does not exist: ${t}`;case"unreadable-report":return`Unreadable coverage report: ${t}. It could not be parsed or lists no files. Supported: lcov.info, istanbul coverage-final.json / coverage-summary.json, Cobertura XML. Raw V8 output is not supported \u2014 convert it with c8 or your runner's istanbul reporter.`;case"test-only-report":return"The coverage report contains only test files, so there is no production coverage to report. Coverage OF a test file is not a meaningful metric. Check that your coverage tool is instrumenting your source directory.";case"target-not-covered":return`Target is UNMEASURED: the coverage data for project ${e??"?"} has no entry for any production file under ${t}. This is not 0% coverage \u2014 no measurement exists for it. Check your coverage tool's include/exclude settings, or regenerate the report.`;case"no-tests-ran":return`Target is UNMEASURED: the test runner reported running 0 tests from ${e??"?"}. This is not 0% coverage.`}}export{oe as a,U as b,Fe as c,$e as d,Ne as e,We as f,Re as g,ke as h,B as i,Ue as j,Je as k,ze as l,Ge as m,qe as n};
@@ -1,3 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.11");process.exit(0)}
2
- import{c as P}from"./chunk-TCYSBC7Y.js";import{c as J}from"./chunk-M7XFBSIK.js";import{b as E,d as q}from"./chunk-JFLU7L3W.js";import*as O from"fs/promises";import*as y from"path";q();async function Z(o){let i=[y.join(o,"coverage","coverage-final.json"),y.join(o,"coverage","lcov.info"),y.join(o,".nyc_output","coverage-final.json"),y.join(o,"coverage-final.json"),y.join(o,"coverage","coverage-summary.json"),y.join(o,"coverage.xml"),y.join(o,"htmlcov","status.json"),y.join(o,"cobertura-coverage.xml")];for(let t of i)try{let a=await J(t,{outsideRoot:"allow"});if(t.endsWith("coverage-summary.json"))return X(a);if(t.endsWith(".json"))return K(a);if(t.endsWith(".info"))return $(a);if(t.endsWith(".xml"))return G(a)}catch{}return null}function U(o){let i=new Map,t=o.statementMap||{};for(let[a,l]of Object.entries(o.s||{})){let r=t[a]?.start?.line;if(typeof r!="number")continue;let e=i.get(r);(e===void 0||e<l)&&i.set(r,l)}return i}function K(o){let i=E(o),t=[],a=0,l=0,r=0,e=0,c=0,n=0,h=0,u=0;for(let[m,g]of Object.entries(i)){let p=g,f=p.s||{},F=p.branchMap||{},v=p.b||{},R=p.f||{},s=U(p),x=s.size,C=[...s.values()].filter(d=>d>0).length,b=Object.values(v).flat().length,w=Object.values(v).flat().filter(d=>d>0).length,M=Object.keys(R).length,L=Object.values(R).filter(d=>d>0).length,I=Object.keys(f).length,B=Object.values(f).filter(d=>d>0).length,_=[...s.entries()].filter(([,d])=>d===0).map(([d])=>d),k=[];for(let[d,N]of Object.entries(v)){let W=F[d];N.forEach((D,j)=>{D===0&&W?.locations?.[j]?.start?.line&&k.push(W.locations[j].start.line)})}t.push({path:m,lines:{covered:C,total:x},branches:{covered:w,total:b},functions:{covered:L,total:M},statements:{covered:B,total:I},uncoveredLines:_.sort((d,N)=>d-N),uncoveredBranches:Array.from(new Set(k)).sort((d,N)=>d-N)}),a+=x,l+=C,r+=b,e+=w,c+=M,n+=L,h+=I,u+=B}return{files:t,summary:{line:a>0?l/a*100:0,branch:r>0?e/r*100:0,function:c>0?n/c*100:0,statement:h>0?u/h*100:0,files:t.length}}}function X(o){let i=E(o),t=e=>({covered:Number(e?.covered)||0,total:Number(e?.total)||0}),a=[];for(let[e,c]of Object.entries(i))e==="total"||typeof c!="object"||c===null||!c.lines||a.push({path:e,lines:t(c.lines),branches:t(c.branches),functions:t(c.functions),statements:t(c.statements??c.lines),uncoveredLines:[],uncoveredBranches:[]});let l=e=>a.reduce((c,n)=>({covered:c.covered+e(n).covered,total:c.total+e(n).total}),{covered:0,total:0}),r=e=>e.total>0?e.covered/e.total*100:0;return{files:a,summary:{line:r(l(e=>e.lines)),branch:r(l(e=>e.branches)),function:r(l(e=>e.functions)),statement:r(l(e=>e.statements)),files:a.length}}}function $(o){let i=[],t=o.split(`
3
- `),a=null,l=0,r=0,e=0,c=0,n=0,h=0,u=[],m=[];for(let s of t)if(s.startsWith("SF:"))a=s.slice(3);else if(s.startsWith("LF:"))l=parseInt(s.slice(3),10);else if(s.startsWith("LH:"))r=parseInt(s.slice(3),10);else if(s.startsWith("BRF:"))e=parseInt(s.slice(4),10);else if(s.startsWith("BRH:"))c=parseInt(s.slice(4),10);else if(s.startsWith("FNF:"))n=parseInt(s.slice(4),10);else if(s.startsWith("FNH:"))h=parseInt(s.slice(4),10);else if(s.startsWith("DA:")){let[x,C]=s.slice(3).split(",").map(b=>parseInt(b,10));C===0&&u.push(x)}else if(s.startsWith("BRDA:")){let x=s.slice(5).split(","),C=parseInt(x[0],10),b=x[3];(b==="0"||b==="-")&&m.push(C)}else s==="end_of_record"&&a&&(i.push({path:a,lines:{covered:r,total:l},branches:{covered:c,total:e},functions:{covered:h,total:n},statements:{covered:0,total:0},uncoveredLines:Array.from(new Set(u)),uncoveredBranches:Array.from(new Set(m))}),a=null,l=r=0,e=c=0,n=h=0,u.length=0,m.length=0);let g=0,p=0,f=0,F=0,v=0,R=0;for(let s of i)g+=s.lines.total,p+=s.lines.covered,f+=s.branches.total,F+=s.branches.covered,v+=s.functions.total,R+=s.functions.covered;return{files:i,summary:{line:g>0?p/g*100:0,branch:f>0?F/f*100:0,function:v>0?R/v*100:0,statement:g>0?p/g*100:0,files:i.length}}}function G(o){let i=[];function t(f,F){let v=f.match(new RegExp(`${F}=["']([^"']*)["']`));return v?v[1]:null}let a=/<class\s[^>]*?>/g,l;for(;(l=a.exec(o))!==null;){let f=l[0],F=t(f,"filename");if(!F)continue;let v=parseFloat(t(f,"line-rate")||"NaN"),R=parseFloat(t(f,"branch-rate")||"NaN"),s=l.index,x=o.indexOf("</class>",s),C=x>s?o.slice(s,x):"",b=0,w=0,M=0,L=0,I=0,B=0,_=[],k=[],d=/<line\s([^>]*?)\/>/g,N;for(;(N=d.exec(C))!==null;){let j=N[1],S=parseInt(t(j,"number")||"0",10),A=parseInt(t(j,"hits")||"0",10),z=t(j,"branch")==="true",T=t(j,"condition-coverage");b++,A>0?w++:_.push(S),z&&(M++,(T?parseInt(T,10):A>0?100:0)===100?L++:k.push(S))}let W=/<method\s([^>]*?)>/g,D;for(;(D=W.exec(C))!==null;){I++;let j=D.index,S=C.indexOf("</method>",j);if(S>j){let A=C.slice(j,S),z=/<line\s([^>]*?)\/>/g,T=!1,H;for(;(H=z.exec(A))!==null;)if(parseInt(t(H[1],"hits")||"0",10)>0){T=!0;break}T&&B++}}b===0&&!isNaN(v)&&(b=100,w=Math.round(Math.max(0,Math.min(1,v))*100)),i.push({path:F,lines:{covered:w,total:b},branches:{covered:L,total:M},functions:{covered:B,total:I},statements:{covered:0,total:0},uncoveredLines:_,uncoveredBranches:k})}let r=0,e=0,c=0,n=0,h=0,u=0;for(let f of i)r+=f.lines.total,e+=f.lines.covered,c+=f.branches.total,n+=f.branches.covered,h+=f.functions.total,u+=f.functions.covered;let m=o.match(/<coverage\s[^>]*?>/),g=m?parseFloat(t(m[0],"line-rate")||"NaN")*100:NaN,p=m?parseFloat(t(m[0],"branch-rate")||"NaN")*100:NaN;return{files:i,summary:{line:isNaN(g)?r>0?e/r*100:0:g,branch:isNaN(p)?c>0?n/c*100:0:p,function:h>0?u/h*100:0,statement:r>0?e/r*100:0,files:i.length}}}async function ee(o,i={}){let t=[],{includeTests:a=!0,languages:l,maxFiles:r=5e3}=i,e=[".ts",".tsx",".js",".jsx",".mjs",".cjs",".py",".pyw",".go",".rs",".java",".kt",".kts",".rb",".cs",".php",".swift",".c",".h",".cpp",".hpp",".cc",".scala"];if(l&&l.length>0){e=[];for(let n of l)n==="typescript"&&e.push(".ts",".tsx"),n==="javascript"&&e.push(".js",".jsx",".mjs",".cjs"),n==="python"&&e.push(".py",".pyw"),n==="go"&&e.push(".go"),n==="rust"&&e.push(".rs"),n==="java"&&e.push(".java"),n==="kotlin"&&e.push(".kt",".kts"),n==="ruby"&&e.push(".rb"),(n==="csharp"||n==="c#")&&e.push(".cs"),n==="php"&&e.push(".php"),n==="swift"&&e.push(".swift"),(n==="c"||n==="cpp"||n==="c++")&&e.push(".c",".h",".cpp",".hpp",".cc"),n==="scala"&&e.push(".scala")}async function c(n){try{let h=await O.readdir(n,{withFileTypes:!0});for(let u of h){let m=y.join(n,u.name);if(u.isDirectory()){if(["node_modules",".git","dist","build","coverage",".nyc_output","__pycache__",".venv","venv",".tox",".mypy_cache","target",".gradle","vendor",".bundle",".cache",".npm",".yarn",".next",".nuxt",".svelte-kit","out",".turbo","tmp","temp",".tmp"].includes(u.name)||P(n,u.name,n===o))continue;if(t.length>=r)return;await c(m)}else if(u.isFile()){let g=y.extname(u.name);if(!e.includes(g)||!a&&(u.name.includes(".test.")||u.name.includes(".spec.")||u.name.endsWith("_test.ts")||u.name.endsWith("_test.js")||m.includes("/__tests__/")||m.includes("/test/")||m.includes("/tests/")))continue;if(t.length>=r)return;t.push(m)}}}catch{}}try{if((await O.stat(o)).isFile())return[o];await c(o)}catch{}return t}function te(o){let i=new Set,t={injection:"Use parameterized queries and input validation to prevent injection attacks",xss:"Sanitize user input and use Content-Security-Policy headers","sensitive-data":"Never hardcode secrets; use environment variables or secret managers","access-control":"Implement proper authentication and authorization checks","security-misconfiguration":"Review and harden security configurations","insecure-deserialization":"Avoid deserializing untrusted data; use safe alternatives","broken-auth":"Use strong authentication mechanisms and secure session management",dependencies:"Keep dependencies updated and regularly audit for vulnerabilities"};for(let r of o){let e=t[r.category];e&&i.add(e)}let a=o.some(r=>r.severity==="critical"),l=o.some(r=>r.severity==="high");return a&&i.add("CRITICAL: Address critical vulnerabilities immediately before deployment"),l&&i.add("Prioritize fixing high-severity issues in the next sprint"),i.size===0&&o.length===0&&i.add("No vulnerabilities found - maintain current security practices"),Array.from(i)}export{Z as a,U as b,K as c,X as d,$ as e,G as f,ee as g,te as h};
@@ -1,3 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.11");process.exit(0)}
2
- import{a as b,b as y}from"./chunk-UKKYMW3S.js";import{b as v}from"./chunk-LPU6PAJE.js";import{j as d,k as g,l as f,n as l}from"./chunk-2DTX7YAZ.js";import p from"chalk";var C=3,h="instrumented-report",k="static-estimation";async function D(e,r=a=>console.log(a)){let a=await d(e);if(a.status==="target-missing")return{kind:"no-data",reason:"target-missing",message:l("target-missing",e,null)};if(a.status==="evaluated"){let{evaluation:n,projectRoot:t}=a;if(n.status==="measured"){let u=n.files;return{kind:"data",data:{files:u,summary:b(u),instrumented:!0},projectRoot:t}}return{kind:"no-data",reason:n.reason,message:l(n.reason,e,t)}}let s=v(a.target,{includeTests:!1});return s.length===0?{kind:"no-sources"}:(r(p.gray(` Analyzing ${s.length} files...
3
- `)),{kind:"data",data:y(s,a.projectRoot),projectRoot:a.projectRoot})}function R(e){return{branch:e.files.some(r=>r.branches.total>0),function:e.files.some(r=>r.functions.total>0),statement:e.files.some(r=>r.statements.total>0)}}var T=e=>e==="target-missing"||e==="unreadable-report";function x(){return"UNMEASURED: no coverage report exists for this project, so these figures are a STATIC ESTIMATE derived from source shape \u2014 not measured coverage. No threshold verdict is given and nothing is stored as evidence. Run your tests with coverage first (e.g. `npm test -- --coverage`) and re-run."}async function j(e,r,a,s){let n=await D(r,s);if(n.kind==="no-sources")return n;if(n.kind==="no-data")return T(n.reason)?{kind:"error",reason:n.reason,message:n.message}:{kind:"unmeasured",reason:n.reason,message:n.message};let t=n.data,u=t.instrumented,m=await e.analyze({coverageData:t,threshold:a,includeFileDetails:!0,measured:u,...n.projectRoot?{projectRoot:n.projectRoot}:{}});if(!m.success||!m.value)return{kind:"analysis-failed",message:m.error?.message||"Coverage analysis failed"};let o=m.value;if(!u)return{kind:"estimate",data:t,summary:{...o.summary},message:x()};let i=R(t),c=g(o.summary,a,i);return{kind:"measured",data:t,collected:i,verdict:c,summary:{...o.summary,branch:i.branch?o.summary.branch:null,function:i.function?o.summary.function:null,statement:i.statement?o.summary.statement:null},recommendations:f(o.recommendations??[],c,a,i)}}function M(e,r){switch(e.kind){case"measured":{let{overall:a,meetsThreshold:s}=e.verdict;return s?a<r+5?2:0:1}case"estimate":case"unmeasured":return C;case"no-sources":return 0;default:return 1}}function S(e,r,a){let s={line:null,branch:null,function:null,statement:null};switch(e.kind){case"measured":return{summary:e.summary,meetsThreshold:e.verdict.meetsThreshold,threshold:r,recommendations:e.recommendations,measured:!0,estimated:!1,coverageMethod:h,branchDataCollected:e.collected.branch,functionDataCollected:e.collected.function,statementDataCollected:e.collected.statement,...e.data.unmeasuredFiles?.length?{unmeasuredFiles:e.data.unmeasuredFiles}:{}};case"estimate":return{summary:e.summary,meetsThreshold:null,threshold:r,measured:!1,estimated:!0,unmeasured:!0,coverageMethod:k,reason:"no-coverage-report",target:a,warning:e.message};case"unmeasured":case"error":return{summary:s,meetsThreshold:null,threshold:r,measured:!1,unmeasured:e.kind==="unmeasured",reason:e.reason,target:a,warning:e.message};case"analysis-failed":return{summary:s,meetsThreshold:null,threshold:r,measured:!1,target:a,error:e.message};case"no-sources":return{summary:s,meetsThreshold:null,threshold:r,measured:!1,target:a,warning:"No source files found"}}}export{C as a,D as b,j as c,M as d,S as e};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.11");process.exit(0)}
2
- import{b as _}from"./chunk-CFWGGRE7.js";function p(e){return g.has(e)}function m(e){return l.has(e)}function b(e){return/^qe-security|^qe-pentest/.test(e)}function x(e,t="strict"){if(t==="off")return{text:e,redactions:[],replacementCount:0};let r=e,s=new Set,c=0;for(let a of d){if(!a.modes.includes(t))continue;let i=new RegExp(a.regex.source,a.regex.flags),n=r.match(i);n&&n.length>0&&(s.add(a.category),c+=n.length,r=r.replace(i,a.replacement))}return{text:r,redactions:Array.from(s).sort(),replacementCount:c}}function E(e,t,r){if(b(e)&&!m(t))throw new o(`Security agent "${e}" may only use providers: ${[...l].join(", ")}. Got: "${t}". OpenRouter is excluded (third-party proxy risk).`,6);if(r==="off"&&!p(t))throw new o(`Redaction mode "off" is only allowed for self-hosted providers (${[...g].join(", ")}). Got: "${t}".`,6)}var d,g,l,o,A=_(()=>{"use strict";d=[{category:"aws_key",regex:/\b(AKIA[0-9A-Z]{16})\b/g,replacement:"<REDACTED:aws_key>",modes:["strict","balanced"]},{category:"env_value",regex:/^([A-Z][A-Z0-9_]{2,})=(.+)$/gm,replacement:"$1=<REDACTED:env_value>",modes:["strict","balanced"]},{category:"api_key_header",regex:/(Authorization:\s*Bearer\s+)\S+/gi,replacement:"$1<REDACTED:api_key>",modes:["strict","balanced"]},{category:"api_key_header",regex:/(x-api-key:\s*)\S+/gi,replacement:"$1<REDACTED:api_key>",modes:["strict","balanced"]},{category:"private_key",regex:/-----BEGIN\s[\w\s]*PRIVATE KEY-----[\s\S]*?-----END\s[\w\s]*PRIVATE KEY-----/g,replacement:"<REDACTED:private_key>",modes:["strict","balanced"]},{category:"jwt",regex:/\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g,replacement:"<REDACTED:jwt>",modes:["strict","balanced"]},{category:"github_token",regex:/\b(ghp_|gho_|ghs_|ghr_|github_pat_)[A-Za-z0-9_]{16,}\b/g,replacement:"<REDACTED:github_token>",modes:["strict","balanced"]},{category:"gitlab_token",regex:/\b(glpat-)[A-Za-z0-9_-]{20,}\b/g,replacement:"<REDACTED:gitlab_token>",modes:["strict","balanced"]},{category:"slack_token",regex:/\b(xoxb-|xoxp-|xoxs-|xoxa-)[A-Za-z0-9-]{10,}\b/g,replacement:"<REDACTED:slack_token>",modes:["strict","balanced"]},{category:"stripe_key",regex:/\b(sk_live_|pk_live_|sk_test_|pk_test_|rk_live_|rk_test_)[A-Za-z0-9]{10,}\b/g,replacement:"<REDACTED:stripe_key>",modes:["strict","balanced"]},{category:"google_api_key",regex:/\bAIzaSy[A-Za-z0-9_-]{33}\b/g,replacement:"<REDACTED:google_api_key>",modes:["strict","balanced"]},{category:"aws_session_token",regex:/\bASIA[0-9A-Z]{16}\b/g,replacement:"<REDACTED:aws_session_token>",modes:["strict","balanced"]},{category:"connection_string",regex:/\b(mongodb(\+srv)?|postgres(ql)?|mysql|redis|amqp):\/\/[^\s"']+/gi,replacement:"<REDACTED:connection_string>",modes:["strict","balanced"]},{category:"generic_secret",regex:/\b(password|secret|token|apikey|api_key|access_key|secret_key)\s*[:=]\s*['"]?(?!ghp_|gho_|ghs_|ghr_|github_pat_|glpat-|xoxb-|xoxp-|xoxs-|xoxa-|sk_live_|pk_live_|sk_test_|pk_test_|rk_live_|rk_test_|AIzaSy|AKIA|ASIA|<REDACTED:)[^\s'"]{8,}['"]?/gi,replacement:"<REDACTED:generic_secret>",modes:["strict","balanced"]},{category:"email",regex:/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g,replacement:"<REDACTED:pii_email>",modes:["strict"]},{category:"phone",regex:/\b(\+?1?[-.\s]?)?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}\b/g,replacement:"<REDACTED:pii_phone>",modes:["strict"]},{category:"ssn",regex:/\b\d{3}-\d{2}-\d{4}\b/g,replacement:"<REDACTED:pii_ssn>",modes:["strict"]}],g=new Set(["ollama"]),l=new Set(["claude","ollama"]);o=class extends Error{constructor(r,s){super(r);this.exitCode=s;this.name="AdvisorRedactionError"}exitCode}});export{p as a,x as b,E as c,A as d};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.11");process.exit(0)}
2
- import{a as e,b as g,e as t}from"./chunk-FZHSG75I.js";import{d as r}from"./chunk-VO3DRK4P.js";import{b as o}from"./chunk-CFWGGRE7.js";var L=o(()=>{"use strict";e();g();t();r()});export{L as a};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.11");process.exit(0)}
2
- var t=["test-generation","test-execution","coverage-analysis","quality-assessment","defect-intelligence","requirements-validation","code-intelligence","security-compliance","contract-testing","visual-accessibility","chaos-resilience","learning-optimization","enterprise-integration","coordination"];function r(e){return typeof e=="string"&&t.includes(e)}function i(e){return{success:!0,value:e}}function o(e){return{success:!1,error:e}}var n=["p0","p1","p2","p3"];function a(e){return typeof e=="string"&&n.includes(e)}function s(e){return`Invalid priority: ${String(e)}. Valid priorities: ${n.join(", ")}`}export{t as a,r as b,i as c,o as d,a as e,s as f};
@@ -1,21 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.11");process.exit(0)}
2
- import{a as K}from"./chunk-V7DA4HAK.js";import{a as C,e as x,f as Y}from"./chunk-U3LJNNVJ.js";import{a as O}from"./chunk-XDI5X3FR.js";import{a as H,b as F,c as G,d as j,f as V}from"./chunk-NTB342NJ.js";import{c as $,d as J}from"./chunk-JGJXXAS6.js";import{a as W,b as U,g as _,j as z}from"./chunk-7HEMJHPP.js";import{i as B}from"./chunk-AUUJBXWX.js";import{b as q,d as ne}from"./chunk-JFLU7L3W.js";import{a as D,g as S,i as M,k as L,l as v,p as A}from"./chunk-VLD7Z2ED.js";import{i as N}from"./chunk-7R5HC56U.js";import{c as p,d as h}from"./chunk-IW6WDGHM.js";import{a as te}from"./chunk-IO5537OM.js";import{c as I}from"./chunk-FZHSG75I.js";import{a as w,b as f,e as ee}from"./chunk-DDEOZPWJ.js";te();ee();ne();var c=I.create("RealQEReasoningBank"),ie={sqlite:{dbPath:".agentic-qe/memory.db",walMode:!0,useUnified:!0},embeddings:{modelName:"Xenova/all-MiniLM-L6-v2",quantized:!0,enableCache:!0},enableLearning:!0,enableRouting:!0,enableGuidance:!0,hnsw:{M:16,efConstruction:200,efSearch:100},routingWeights:{similarity:.3,performance:.4,capabilities:.3},coherenceThreshold:.4},Q=class{constructor(e={},t){this.coherenceService=t;this.qeConfig={...ie,...e},this.sqliteStore=B(this.qeConfig.sqlite),this.asymmetricEngine=new K}coherenceService;qeConfig;sqliteStore;hnswIndex=null;patternIdMap=new Map;initialized=!1;embedderUnavailableReason=null;stats={routingRequests:0,totalRoutingLatency:0,learningOutcomes:0,successfulOutcomes:0};routingLatencies=new O(1e3);asymmetricEngine;agentCapabilities={"qe-test-generator":{domains:["test-generation"],capabilities:["test-generation","tdd","bdd","unit-test","integration-test"],performanceScore:.85},"qe-coverage-analyzer":{domains:["coverage-analysis"],capabilities:["coverage-analysis","gap-detection","risk-scoring"],performanceScore:.92},"qe-coverage-specialist":{domains:["coverage-analysis"],capabilities:["sublinear-analysis","branch-coverage","mutation-testing"],performanceScore:.88},"qe-test-architect":{domains:["test-generation","coverage-analysis"],capabilities:["test-strategy","test-pyramid","architecture"],performanceScore:.9},"qe-api-contract-validator":{domains:["contract-testing"],capabilities:["contract-testing","openapi","graphql","pact"],performanceScore:.87},"qe-security-auditor":{domains:["security-compliance"],capabilities:["sast","dast","vulnerability","owasp"],performanceScore:.82},"qe-visual-tester":{domains:["visual-accessibility"],capabilities:["screenshot","visual-regression","percy","chromatic"],performanceScore:.8},"qe-a11y-ally":{domains:["visual-accessibility"],capabilities:["wcag","aria","screen-reader","contrast"],performanceScore:.85},"qe-performance-tester":{domains:["chaos-resilience"],capabilities:["load-testing","stress-testing","k6","artillery"],performanceScore:.83},"qe-flaky-investigator":{domains:["test-execution"],capabilities:["flaky-detection","test-stability","retry"],performanceScore:.78},"qe-chaos-engineer":{domains:["chaos-resilience"],capabilities:["chaos-testing","resilience","fault-injection"],performanceScore:.75}};async initialize(){if(this.initialized)return;let e=performance.now();await this.sqliteStore.initialize(),c.info("SQLite persistence initialized");try{await S(D,this.qeConfig.embeddings)}catch(n){this.embedderUnavailableReason=w(n),c.warn("No embedding runtime: patterns are stored without vectors (pending `aqe learning backfill-embeddings`) and searched by text matching only",{reason:this.embedderUnavailableReason})}this.embedderUnavailableReason===null&&(await this.initializeHNSW(),c.info("HNSW index initialized"),await this.loadPatternsIntoHNSW()),this.sqliteStore.getStats().totalPatterns===0&&(this.sqliteStore.hasAnyHistoricalData?.()??!1?c.error("qe_patterns table is EMPTY but historical data exists \u2014 possible data loss! Restore from backup instead of loading seed patterns. Skipping foundational pattern load to avoid masking data loss."):await this.loadFoundationalPatterns()),this.initialized=!0;let i=performance.now()-e;c.info("Fully initialized",{durationMs:Math.round(i)})}getPatternSearchStatus(){return this.embedderUnavailableReason===null?{mode:"vector"}:{mode:"lexical-only",reason:this.embedderUnavailableReason}}async initializeHNSW(){try{let e=await import("./hnswlib-node-PHL3F2PR.js"),i=e.default?.HierarchicalNSW||e.HierarchicalNSW;if(typeof i!="function")throw new Error("HierarchicalNSW not found in hnswlib-node module");let n=i,r=v();this.hnswIndex=new n("cosine",r),this.hnswIndex.initIndex(1e5,this.qeConfig.hnsw.M,this.qeConfig.hnsw.efConstruction),this.hnswIndex.setEf(this.qeConfig.hnsw.efSearch),c.info("HNSW initialized",{dimension:r,M:this.qeConfig.hnsw.M})}catch(e){throw c.error("HNSW initialization failed",e instanceof Error?e:void 0),e}}async loadPatternsIntoHNSW(){if(!this.hnswIndex)return;let e=this.sqliteStore.getAllEmbeddings(),t=v(),i=0,n=0,r=A()?.spaceId;for(let{patternId:s,embedding:a,spaceId:o}of e){if(!r||o!==r||!a||!Array.isArray(a)||a.length!==t){n++;continue}let d=this.hnswIndex.getCurrentCount();this.hnswIndex.addPoint(a,d),this.patternIdMap.set(d,s),i++}n>0&&c.warn("Skipped invalid embeddings",{skipped:n,expectedDim:t}),c.info("Loaded patterns into HNSW index",{count:i})}async loadFoundationalPatterns(){let e=[{patternType:"test-template",name:"AAA Unit Test",description:"Arrange-Act-Assert pattern for clear, maintainable unit tests",template:{type:"code",content:`describe('{{className}}', () => {
3
- describe('{{methodName}}', () => {
4
- it('should {{expectedBehavior}}', {{async}} () => {
5
- // Arrange
6
- {{arrangeCode}}
7
-
8
- // Act
9
- {{actCode}}
10
-
11
- // Assert
12
- {{assertCode}}
13
- });
14
- });
15
- });`,variables:[{name:"className",type:"string",required:!0},{name:"methodName",type:"string",required:!0},{name:"expectedBehavior",type:"string",required:!0}]},context:{testType:"unit",tags:["unit-test","aaa","best-practice"]}},{patternType:"coverage-strategy",name:"Risk-Based Coverage",description:"Prioritize coverage by code risk and complexity",template:{type:"prompt",content:"Analyze coverage gaps focusing on critical business logic, error handling, and high-complexity functions.",variables:[]},context:{tags:["coverage","risk-based"]}}];for(let t of e)try{await this.storeQEPattern(t)}catch(i){c.warn("Failed to load foundational pattern",{name:t.name,error:i})}c.info("Loaded foundational patterns",{count:e.length})}async storeQEPattern(e){try{let t=`${e.name} ${e.description||""} ${e.context?.tags?.join(" ")||""}`,i=this.embedderUnavailableReason===null?await S(t,this.qeConfig.embeddings):void 0,n=W(t)||"test-generation";if(C())try{let a=Y(e.name,{description:e.description,template:e.template,patternType:e.patternType},n,{tags:e.context?.tags}),o=await x.evaluateWrite(a);if(!o.allowed&&(c.warn("Pattern blocked by MemoryWriteGate",{name:e.name,reason:o.reason,conflicts:o.conflictingPatterns?.join(", ")||"none"}),o.reason?.includes("strict")))return h(new Error(`Pattern blocked by governance: ${o.reason}`))}catch(a){c.warn("MemoryWriteGate check error (continuing)",{error:a})}let r=N(),s={id:r,patternType:e.patternType,qeDomain:n,domain:n,name:e.name,description:e.description||"",confidence:.5,usageCount:0,successRate:0,qualityScore:0,tier:"short-term",template:e.template,context:{tags:[],...e.context},createdAt:new Date,lastUsedAt:new Date,successfulUses:0,embedding:i,reusable:!1,reuseCount:0,averageTokenSavings:0};if(this.sqliteStore.storePattern(s,i),this.hnswIndex&&i){let a=this.hnswIndex.getCurrentCount();this.hnswIndex.addPoint(i,a),this.patternIdMap.set(a,r)}if(C())try{x.registerPattern({key:r,value:{name:s.name,description:s.description,patternType:s.patternType},domain:s.domain})}catch(a){c.warn("Pattern registration with MemoryWriteGate failed",{error:a})}return p(s)}catch(t){return h(f(t))}}async searchQEPatterns(e,t={}){let i=performance.now();try{let n=t.limit||10,r=[];if(this.embedderUnavailableReason===null){if(!this.hnswIndex)return h(new Error("HNSW index not available"));await this.collectVectorMatches(e,n,t,r)}let s=new Map(r.map(o=>[o.pattern.id,o]));for(let o of this.sqliteStore.searchFTS(e,n*2)){let d=s.get(o.id);if(d){d.score=J(d.score,o.ftsScore*o.coverage);continue}if(t.minSimilarity!==void 0)continue;let m=this.sqliteStore.getPattern(o.id);!m||t.domain&&m.qeDomain!==t.domain||r.push({pattern:m,score:.5*o.ftsScore*o.coverage,similarity:0,matchType:"lexical",canReuse:!1})}r.sort((o,d)=>d.score-o.score);let a=performance.now()-i;return a>10&&c.warn("Slow search",{searchTimeMs:Number(a.toFixed(1))}),p(r.slice(0,n))}catch(n){return h(f(n))}}async collectVectorMatches(e,t,i,n){let r=await S(e,this.qeConfig.embeddings),s=this.hnswIndex.searchKnn(r,t*2);for(let a=0;a<s.neighbors.length;a++){let o=s.neighbors[a],m=1-s.distances[a];if(i.minSimilarity!==void 0&&m<i.minSimilarity)continue;let b=this.patternIdMap.get(o);if(!b)continue;let l=this.sqliteStore.getPattern(b);if(!l||i.domain&&l.qeDomain!==i.domain)continue;let u=$.reuseOptimization,g=(Date.now()-new Date(l.lastUsedAt).getTime())/864e5;n.push({pattern:l,similarity:m,score:m,matchType:"vector",canReuse:!!(l.reusable&&m>=u.minSimilarityForReuse&&l.successRate>=u.minSuccessRateForReuse&&g<=u.maxAgeForReuse)})}}async routeTask(e){let t=performance.now();this.stats.routingRequests++;try{let i=e.domain?[e.domain]:U(e.task);i.length===0&&i.push("test-generation");let n=await this.searchQEPatterns(e.task,{limit:10,domain:i[0]}),r=n.success?n.value.map(l=>l.pattern):[],s=[];for(let[l,u]of Object.entries(this.agentCapabilities)){let g=0,y=[],T=i.filter(P=>u.domains.includes(P)).length,E=T>0?T/i.length*.4:0;if(g+=E*this.qeConfig.routingWeights.similarity,E>0&&y.push(`Domain: ${(E*100).toFixed(0)}%`),e.capabilities&&e.capabilities.length>0){let P=e.capabilities.filter(X=>u.capabilities.some(Z=>Z.toLowerCase().includes(X.toLowerCase()))).length,R=P>0?P/e.capabilities.length*.3:0;g+=R*this.qeConfig.routingWeights.capabilities,R>0&&y.push(`Caps: ${(R*100).toFixed(0)}%`)}else g+=.15*this.qeConfig.routingWeights.capabilities;g+=u.performanceScore*.3*this.qeConfig.routingWeights.performance,y.push(`Perf: ${(u.performanceScore*100).toFixed(0)}%`),s.push({agent:l,score:g,reasoning:y})}s.sort((l,u)=>u.score-l.score);let a=s[0],o=s.slice(1,4),d=[];if(this.qeConfig.enableGuidance&&i.length>0){let l=F(i[0],{framework:e.context?.framework,language:e.context?.language,includeAntiPatterns:!0});d.push(...l.slice(0,5))}let m=performance.now()-t;this.stats.totalRoutingLatency+=m,this.routingLatencies.push(m);let b={recommendedAgent:a.agent,confidence:a.score,alternatives:o.map(l=>({agent:l.agent,score:l.score})),domains:i,patterns:r,guidance:d,reasoning:a.reasoning.join("; "),latencyMs:m};return p(V(e.includePatternGuidance,b,n.success?n.value:[]))}catch(i){return h(f(i))}}async recordOutcome(e){if(!this.qeConfig.enableLearning)return p(void 0);try{this.sqliteStore.recordUsage(e.patternId,e.success,e.metrics,e.feedback),this.stats.learningOutcomes++,e.success&&this.stats.successfulOutcomes++;let t=this.sqliteStore.getPattern(e.patternId);if(t){let i=t.qeDomain,n=this.asymmetricEngine.computeConfidenceUpdate(t.confidence,e.success?"success":"failure",i);this.asymmetricEngine.shouldQuarantine(n,i).shouldQuarantine&&c.info("Pattern quarantined (asymmetric drop)",{name:t.name}),this.sqliteStore.updatePattern(e.patternId,{confidence:n}),await this.checkPatternPromotionWithCoherence(t)&&(this.sqliteStore.promotePattern(e.patternId),c.info("Pattern promoted to long-term",{name:t.name}))}return p(void 0)}catch(t){return h(f(t))}}async checkPatternPromotionWithCoherence(e){let t=_(e);if(!t.meetsUsageCriteria||!t.meetsQualityCriteria)return!1;if(this.coherenceService&&this.coherenceService.isInitialized()){let r=[...await this.getLongTermPatterns(),e].map(a=>({id:a.id,embedding:a.embedding||[],weight:a.confidence,metadata:{name:a.name,domain:a.qeDomain}})),s=await this.coherenceService.checkCoherence(r);if(s.energy>=(this.qeConfig.coherenceThreshold||.4))return c.info("Pattern promotion blocked due to coherence violation",{name:e.name,energy:s.energy}),s.contradictions&&s.contradictions.length>0&&c.info("Conflicts with existing patterns",{conflictingNodeIds:s.contradictions.map(a=>a.nodeIds).flat()}),!1}return!0}async getLongTermPatterns(){return this.sqliteStore.getPatterns({limit:1e3}).filter(t=>t.tier==="long-term")}shouldPromote(e){return e.tier==="short-term"&&e.successfulUses>=3&&e.successRate>=.7&&e.confidence>=.6}getQEGuidance(e){return H(e)}generateQEContext(e,t){return j(e,t||{})}checkQEAntiPatterns(e,t){return G(e,t)}async getQEStats(){let e=this.sqliteStore.getStats(),t=this.routingLatencies.percentile(95)||0,i={};for(let n of z)i[n]=e.byDomain[n]||0;return{totalPatterns:e.totalPatterns,byDomain:i,byTier:e.byTier,routingRequests:this.stats.routingRequests,avgRoutingLatencyMs:this.stats.routingRequests>0?this.stats.totalRoutingLatency/this.stats.routingRequests:0,p95RoutingLatencyMs:t,learningOutcomes:this.stats.learningOutcomes,patternSuccessRate:this.stats.learningOutcomes>0?this.stats.successfulOutcomes/this.stats.learningOutcomes:0,embeddingCacheSize:0,transformerAvailable:L(),patternSearch:this.getPatternSearchStatus(),embeddingDimension:v(),sqliteDbPath:this.qeConfig.sqlite.dbPath||".agentic-qe/memory.db",asymmetricLearning:{failurePenaltyRatio:"10:1",quarantinedPatterns:this.sqliteStore.getPatterns({limit:1e4}).filter(n=>n.quarantined===!0).length,rehabilitatedPatterns:this.sqliteStore.getPatterns({limit:1e4}).filter(n=>n.quarantined===!1&&n.quarantinedAt).length,avgConfidenceDelta:this.stats.learningOutcomes>0?this.stats.successfulOutcomes/this.stats.learningOutcomes-.5:0}}}async storeLoopPattern(e){try{let t=await this.storeQEPattern({patternType:"anti-pattern",name:`loop-detection:${e.toolCallSignature}`,description:`Tool call loop detected for agent ${e.agentId} during ${e.taskType}. Steering: ${e.steeringUsed}. Resolved: ${e.resolved}`,template:{type:"prompt",content:e.steeringUsed,variables:[]},context:{tags:["anti-pattern","loop-detection","learning-optimization",e.taskType]}});return t.success?{success:!0,patternId:t.value.id}:{success:!1,error:t.error?.message??"Unknown error"}}catch(t){return{success:!1,error:w(t)}}}async recordPatternOutcome(e,t,i){let n=this.sqliteStore.getPattern(e);if(!n)return;let r=n.usageCount+1,s=t?n.successfulUses+1:n.successfulUses,a=s/r,o=.3,d=(1-o)*n.qualityScore+o*i,m=Math.min(1,.5+r*.05+a*.3);this.sqliteStore.updatePattern(e,{usageCount:r,successfulUses:s,successRate:a,qualityScore:d,confidence:m})}async checkPatternPromotion(e,t,i,n){let r=this.sqliteStore.getPattern(e);return r?r.tier==="short-term"?t>=3&&i>=.6&&n>=.5:r.tier==="long-term"?t>=10&&i>=.75&&n>=.7:!1:!1}async promotePattern(e){this.sqliteStore.promotePattern(e)}async demotePattern(e){let t=this.sqliteStore.getPattern(e);if(!t)return;let i=["short-term","working","long-term"],n=i.indexOf(t.tier);if(n>0){let r=i[n-1];this.sqliteStore.updatePattern(e,{tier:r}),c.info("Pattern demoted",{name:t.name,newTier:r})}}cleanupPatternIdMap(){if(!this.initialized)return 0;let e=0,t=this.sqliteStore.getPatterns({limit:1e5}),i=new Set(t.map(n=>n.id));for(let[n,r]of Array.from(this.patternIdMap.entries()))i.has(r)||(this.patternIdMap.delete(n),e++);return e>0&&c.info("Cleaned stale patternIdMap entries",{count:e}),e}removePatternFromHNSW(e){for(let[t,i]of Array.from(this.patternIdMap.entries()))if(i===e)return this.patternIdMap.delete(t),c.info("Removed pattern from HNSW mapping",{patternId:e}),!0;return!1}getMemoryStats(){return{patternIdMapSize:this.patternIdMap.size,routingLatenciesSize:this.routingLatencies.length,hnswIndexCount:this.hnswIndex?.getCurrentCount()??0}}async storeTrajectory(e){return this.sqliteStore.getDb().prepare(`
16
- INSERT OR REPLACE INTO qe_trajectories (
17
- id, task, agent, domain, started_at, ended_at, success, steps_json, metadata_json
18
- ) VALUES (?, ?, ?, ?, datetime('now'), datetime('now'), ?, ?, ?)
19
- `).run(e.id,e.task,e.agent??null,e.domain??null,e.success?1:0,JSON.stringify(e.steps),JSON.stringify(e.metrics??{})),e.id}async getTrajectories(e,t=50){let i=this.sqliteStore.getDb(),n="SELECT * FROM qe_trajectories",r=[];return e&&(n+=" WHERE domain = ?",r.push(e)),n+=" ORDER BY ended_at DESC LIMIT ?",r.push(t),i.prepare(n).all(...r).map(a=>({id:a.id,task:a.task,agent:a.agent??void 0,domain:a.domain,success:a.success===1,steps:q(a.steps_json||"[]"),metrics:a.metadata_json?q(a.metadata_json):void 0}))}async linkPatternToTrajectory(e,t){let i=this.sqliteStore.getDb(),n=this.sqliteStore.getPattern(e);if(n){let r={...n.context,sourceTrajectoryId:t};i.prepare(`
20
- UPDATE qe_patterns SET context_json = ?, updated_at = datetime('now') WHERE id = ?
21
- `).run(JSON.stringify(r),e)}}async getEnhancedAdapter(){return{message:"Use EnhancedReasoningBankAdapter for full agentic-flow integration",importPath:"../integrations/agentic-flow/reasoning-bank/index.js"}}async dispose(){this.sqliteStore.close(),M(),this.hnswIndex=null,this.patternIdMap.clear(),this.routingLatencies.clear(),this.stats.routingRequests=0,this.stats.totalRoutingLatency=0,this.stats.learningOutcomes=0,this.stats.successfulOutcomes=0,this.initialized=!1,c.info("Disposed")}async destroy(){return this.dispose()}};function xe(k={},e){return new Q(k,e)}export{xe as a};