agentic-qe 3.15.10 → 3.15.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (482) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +114 -0
  3. package/README.md +8 -0
  4. package/assets/skills/skills-manifest.json +1 -1
  5. package/dist/adapters/a2a/agent-cards/generator.js +6 -3
  6. package/dist/adapters/a2a/tasks/task-router.js +3 -1
  7. package/dist/adapters/trajectory-adapter.js +1 -1
  8. package/dist/agents/claim-verifier/verifiers/output-verifier.d.ts +3 -1
  9. package/dist/agents/claim-verifier/verifiers/output-verifier.js +31 -2
  10. package/dist/agents/overlay-loader.js +26 -21
  11. package/dist/cli/bundle.js +6 -6
  12. package/dist/cli/chunks/adapter-V4GSGOOK.js +2 -0
  13. package/dist/cli/chunks/{agent-booster-wasm-H7ANGXW4.js → agent-booster-wasm-TIDSQ3ZK.js} +2 -2
  14. package/dist/cli/chunks/{agent-handler-SVXSHEET.js → agent-handler-G3EPBVA7.js} +2 -2
  15. package/dist/cli/chunks/{agent-memory-branch-WKQH36XL.js → agent-memory-branch-ARC5C7GW.js} +2 -2
  16. package/dist/cli/chunks/aqe-learning-engine-6WQTM5YR.js +2 -0
  17. package/dist/cli/chunks/{arena-OPS36NFZ.js → arena-36DTATJV.js} +4 -4
  18. package/dist/cli/chunks/{arena-EKOOFVST.js → arena-K4I4QDXB.js} +2 -2
  19. package/dist/cli/chunks/{audit-AO5NDZRI.js → audit-WQSJSJZF.js} +3 -3
  20. package/dist/cli/chunks/base-AK7BXBX2.js +2 -0
  21. package/dist/cli/chunks/{better-sqlite3-TFLVEMMY.js → better-sqlite3-BB4K67MT.js} +2 -2
  22. package/dist/cli/chunks/{brain-handler-ADBBJPYW.js → brain-handler-CU3GOIU3.js} +3 -3
  23. package/dist/cli/chunks/{branch-enumerator-HGHUYYL5.js → branch-enumerator-NJQX7ZNB.js} +2 -2
  24. package/dist/cli/chunks/{browser-5LU6P4SZ.js → browser-6YJF4FQW.js} +2 -2
  25. package/dist/cli/chunks/browser-workflow-VTDFBW7T.js +2 -0
  26. package/dist/cli/chunks/{chunk-LQEURY7C.js → chunk-25P77WA5.js} +1 -1
  27. package/dist/cli/chunks/{chunk-FFTPAWM6.js → chunk-2CW7VRPH.js} +8 -8
  28. package/dist/cli/chunks/chunk-2DTX7YAZ.js +6 -0
  29. package/dist/cli/chunks/{chunk-6KIL6CMD.js → chunk-2KFFEKSI.js} +2 -2
  30. package/dist/cli/chunks/{chunk-UARKIZAS.js → chunk-2VLYUF7U.js} +2 -2
  31. package/dist/cli/chunks/{chunk-A55QKKT2.js → chunk-325QCVDI.js} +2 -2
  32. package/dist/cli/chunks/{chunk-FBXTQNRH.js → chunk-35M2X3C5.js} +2 -2
  33. package/dist/cli/chunks/{chunk-S75EYIJG.js → chunk-3RHOPP7A.js} +1 -1
  34. package/dist/cli/chunks/{chunk-SY2IB442.js → chunk-4HJKQIX5.js} +2 -2
  35. package/dist/cli/chunks/chunk-4MUBW4RT.js +7 -0
  36. package/dist/cli/chunks/{chunk-KSIWGGJI.js → chunk-4RAQ7PJA.js} +2 -2
  37. package/dist/cli/chunks/{chunk-DT7SIJOA.js → chunk-4RH5I24Q.js} +2 -2
  38. package/dist/cli/chunks/{chunk-JHIY4VCC.js → chunk-4UBVAJFO.js} +3 -3
  39. package/dist/cli/chunks/{chunk-RPHY2DU6.js → chunk-4UX35V7P.js} +2 -2
  40. package/dist/cli/chunks/{chunk-7LFZ4CHM.js → chunk-4X4MWMHB.js} +2 -2
  41. package/dist/cli/chunks/{chunk-TNMBRDCA.js → chunk-55CH76ZO.js} +3 -3
  42. package/dist/cli/chunks/{chunk-6S3WJGUV.js → chunk-57LNKSW7.js} +2 -2
  43. package/dist/cli/chunks/chunk-5ERFHEEE.js +14 -0
  44. package/dist/cli/chunks/{chunk-KNQ2ERFX.js → chunk-5HQP4SLM.js} +2 -2
  45. package/dist/cli/chunks/{chunk-XFVTGAAJ.js → chunk-5MNASJOH.js} +2 -2
  46. package/dist/cli/chunks/{chunk-UCJMVXO4.js → chunk-5MTWCCZJ.js} +2 -2
  47. package/dist/cli/chunks/{chunk-GZLZCZ42.js → chunk-5N25I53C.js} +2 -2
  48. package/dist/cli/chunks/{chunk-NGKNYIQZ.js → chunk-5WYZHDIZ.js} +1 -1
  49. package/dist/cli/chunks/{chunk-GWZZ7DAO.js → chunk-5YLOLACR.js} +2 -2
  50. package/dist/cli/chunks/{chunk-B6LTH6YV.js → chunk-672XOJDG.js} +1 -1
  51. package/dist/cli/chunks/{chunk-DNRWGATA.js → chunk-6NA3KZZT.js} +3 -3
  52. package/dist/cli/chunks/chunk-72ZBJD2E.js +3 -0
  53. package/dist/cli/chunks/{chunk-XLZYRTNO.js → chunk-76SNL7GU.js} +2 -2
  54. package/dist/cli/chunks/{chunk-37OWRCUN.js → chunk-7HEMJHPP.js} +2 -2
  55. package/dist/cli/chunks/{chunk-WQ4PYWSW.js → chunk-7R5HC56U.js} +1 -1
  56. package/dist/cli/chunks/{chunk-EDLFX4ZB.js → chunk-AFFN6E6Q.js} +2 -2
  57. package/dist/cli/chunks/{chunk-YCGP5VFP.js → chunk-AMZKAJLJ.js} +2 -2
  58. package/dist/cli/chunks/{chunk-OEKP73MC.js → chunk-AP3ADWDK.js} +2 -2
  59. package/dist/cli/chunks/{chunk-DE4YJQJF.js → chunk-APPZATXA.js} +2 -2
  60. package/dist/cli/chunks/{chunk-RWWOHCMG.js → chunk-AUUJBXWX.js} +2 -2
  61. package/dist/cli/chunks/{chunk-LRZY4KS2.js → chunk-BTVWA35P.js} +2 -2
  62. package/dist/cli/chunks/{chunk-4G63WT4F.js → chunk-BZPE3LDO.js} +2 -2
  63. package/dist/cli/chunks/{chunk-OY2AHLSF.js → chunk-CFWGGRE7.js} +1 -1
  64. package/dist/cli/chunks/{chunk-7OZVZIBE.js → chunk-CIAL4YRY.js} +2 -2
  65. package/dist/cli/chunks/{chunk-TBLI254A.js → chunk-CO3DX2AX.js} +2 -2
  66. package/dist/cli/chunks/{chunk-GHBNRMSJ.js → chunk-DDEOZPWJ.js} +2 -2
  67. package/dist/cli/chunks/{chunk-62OAY5KJ.js → chunk-DOBZPSKE.js} +1 -1
  68. package/dist/cli/chunks/{chunk-NVYIZCSR.js → chunk-DOFREOPQ.js} +2 -2
  69. package/dist/cli/chunks/{chunk-SU5H66SD.js → chunk-E44NNCEU.js} +2 -2
  70. package/dist/cli/chunks/{chunk-MG27QY4D.js → chunk-E6PF35JZ.js} +2 -2
  71. package/dist/cli/chunks/{chunk-4SJYIX54.js → chunk-EBPJY4DI.js} +2 -2
  72. package/dist/cli/chunks/{chunk-EWFECZ2U.js → chunk-EH2S6AOR.js} +2 -2
  73. package/dist/cli/chunks/{chunk-Y76IAYQD.js → chunk-EIDJNT5C.js} +1 -1
  74. package/dist/cli/chunks/{chunk-6PX4OXQO.js → chunk-EJPK7OTR.js} +2 -2
  75. package/dist/cli/chunks/{chunk-EAU5KDFO.js → chunk-EK5GMOSO.js} +1 -1
  76. package/dist/cli/chunks/{chunk-ABFFWZPC.js → chunk-ERN43HOX.js} +151 -149
  77. package/dist/cli/chunks/{chunk-SO45NA4D.js → chunk-ETVAYGCB.js} +11 -11
  78. package/dist/cli/chunks/{chunk-RK73HB2F.js → chunk-EWPUQCN4.js} +2 -2
  79. package/dist/cli/chunks/{chunk-DMFTELBS.js → chunk-FL32MTKT.js} +2 -2
  80. package/dist/cli/chunks/chunk-FLU5FDSC.js +742 -0
  81. package/dist/cli/chunks/{chunk-NZYLNXT6.js → chunk-FUYOOKTH.js} +5 -5
  82. package/dist/cli/chunks/{chunk-NAXGWDVM.js → chunk-FWSGPE3V.js} +3 -3
  83. package/dist/cli/chunks/{chunk-ATHWDAXB.js → chunk-FZHSG75I.js} +2 -2
  84. package/dist/cli/chunks/{chunk-OBAREPDC.js → chunk-G2IJFNZS.js} +2 -2
  85. package/dist/cli/chunks/{chunk-H32EPIR2.js → chunk-G4CKPWF6.js} +1 -1
  86. package/dist/cli/chunks/{chunk-SKQUUE4F.js → chunk-G4FAPO57.js} +2 -2
  87. package/dist/cli/chunks/{chunk-KG336OV3.js → chunk-G77MLBDF.js} +2 -2
  88. package/dist/cli/chunks/{chunk-V6JBOIMX.js → chunk-GBFUANTC.js} +1 -1
  89. package/dist/cli/chunks/{chunk-YAKGBHO4.js → chunk-GVKVJJQX.js} +2 -2
  90. package/dist/cli/chunks/{chunk-GJHWY3ZX.js → chunk-GWJWSLDA.js} +2 -2
  91. package/dist/cli/chunks/{chunk-WDVRE6GN.js → chunk-H43AFUKL.js} +2 -2
  92. package/dist/cli/chunks/chunk-H7BLYMNU.js +59 -0
  93. package/dist/cli/chunks/{chunk-NW5JUCCG.js → chunk-HDJUYAZG.js} +1 -1
  94. package/dist/cli/chunks/{chunk-FKL3R5JQ.js → chunk-HDNWSKHA.js} +2 -2
  95. package/dist/cli/chunks/{chunk-Z2O2YJAF.js → chunk-HFFPYC4G.js} +2 -2
  96. package/dist/cli/chunks/{chunk-WSF24I3D.js → chunk-HJ3XNTTJ.js} +2 -2
  97. package/dist/cli/chunks/{chunk-YDAQK5UF.js → chunk-HYXUN7BW.js} +1 -1
  98. package/dist/cli/chunks/{chunk-2ZI5FKSF.js → chunk-I36CRDHF.js} +2 -2
  99. package/dist/cli/chunks/{chunk-OY3NJNP2.js → chunk-I4K2HTQU.js} +1 -1
  100. package/dist/cli/chunks/{chunk-2ZMF4NCF.js → chunk-IENZSO3K.js} +2 -2
  101. package/dist/cli/chunks/chunk-IO5537OM.js +2 -0
  102. package/dist/cli/chunks/{chunk-G3CZCUPM.js → chunk-IOZRKXR5.js} +2 -2
  103. package/dist/cli/chunks/{chunk-BQUAE3CP.js → chunk-ITL3IN2E.js} +2 -2
  104. package/dist/cli/chunks/{chunk-3P34JFQH.js → chunk-ITPGWGQS.js} +14 -14
  105. package/dist/cli/chunks/{chunk-NSHU347M.js → chunk-IW6WDGHM.js} +1 -1
  106. package/dist/cli/chunks/{chunk-KOBVYY6H.js → chunk-J4JMCZVA.js} +2 -2
  107. package/dist/cli/chunks/{chunk-ACWFKES2.js → chunk-JFLU7L3W.js} +2 -2
  108. package/dist/cli/chunks/{chunk-YK7JN5N7.js → chunk-JGJXXAS6.js} +4 -4
  109. package/dist/cli/chunks/{chunk-ESUO3GTJ.js → chunk-JUMICXM6.js} +2 -2
  110. package/dist/cli/chunks/{chunk-VKRTTFB6.js → chunk-K2HBNYAZ.js} +2 -2
  111. package/dist/cli/chunks/{chunk-6MVVSSID.js → chunk-K7V2WZNF.js} +1 -1
  112. package/dist/cli/chunks/{chunk-XEB3NLJR.js → chunk-KDI5JOYZ.js} +2 -2
  113. package/dist/cli/chunks/{chunk-YKMU4LBV.js → chunk-KJCIMNHS.js} +1 -1
  114. package/dist/cli/chunks/{chunk-IKISCIGH.js → chunk-KKYO2NKV.js} +2 -2
  115. package/dist/cli/chunks/{chunk-VFSYMOAL.js → chunk-KSE5TDM5.js} +2 -2
  116. package/dist/cli/chunks/{chunk-V2RSNVMW.js → chunk-KSLLHFVY.js} +1 -1
  117. package/dist/cli/chunks/{chunk-6C3II5OM.js → chunk-KXS3Y2AX.js} +2 -2
  118. package/dist/cli/chunks/{chunk-LMS3Y7JD.js → chunk-LBX7M4LW.js} +2 -2
  119. package/dist/cli/chunks/{chunk-2XGVTYVX.js → chunk-LCVEEII4.js} +2 -2
  120. package/dist/cli/chunks/{chunk-C522H7XR.js → chunk-LD5CFK53.js} +32 -32
  121. package/dist/cli/chunks/{chunk-FESZBPUB.js → chunk-LPU6PAJE.js} +2 -2
  122. package/dist/cli/chunks/{chunk-7ZCDZHDB.js → chunk-LQ4NUC6Q.js} +2 -2
  123. package/dist/cli/chunks/chunk-LRL56ZYL.js +21 -0
  124. package/dist/cli/chunks/{chunk-D6DA2KFD.js → chunk-LXQ3B4RY.js} +2 -2
  125. package/dist/cli/chunks/{chunk-I33O4BRQ.js → chunk-M5RQ6U3G.js} +2 -2
  126. package/dist/cli/chunks/{chunk-6GP6W46M.js → chunk-M5XYIQYZ.js} +2 -2
  127. package/dist/cli/chunks/chunk-M7XFBSIK.js +2 -0
  128. package/dist/cli/chunks/{chunk-IPJ7Q3AJ.js → chunk-MIK4RBEH.js} +1 -1
  129. package/dist/cli/chunks/{chunk-GRCIBCJ2.js → chunk-NC6K7SCQ.js} +2 -2
  130. package/dist/cli/chunks/{chunk-CESIR27V.js → chunk-NKTWKYHB.js} +2 -2
  131. package/dist/cli/chunks/{chunk-OPFGRS5S.js → chunk-NPZOBSAN.js} +2 -2
  132. package/dist/cli/chunks/{chunk-PGYMKGOE.js → chunk-NQZNMCZU.js} +2 -2
  133. package/dist/cli/chunks/{chunk-2T7RRL6G.js → chunk-NT7JRHMH.js} +1 -1
  134. package/dist/cli/chunks/{chunk-H2PYU7MN.js → chunk-NTB342NJ.js} +1 -1
  135. package/dist/cli/chunks/{chunk-NPPHWFA2.js → chunk-O4JAKWWM.js} +13 -13
  136. package/dist/cli/chunks/{chunk-APSRPR4W.js → chunk-OD5D4LSZ.js} +2 -2
  137. package/dist/cli/chunks/{chunk-UHTTW3IT.js → chunk-OH5V5EJW.js} +2 -2
  138. package/dist/cli/chunks/{chunk-PFG6VQ5Z.js → chunk-OHR7C777.js} +2 -2
  139. package/dist/cli/chunks/{chunk-U53ZB4IX.js → chunk-OURITHFV.js} +2 -2
  140. package/dist/cli/chunks/{chunk-DEF34AFL.js → chunk-OV5RPLKV.js} +2 -2
  141. package/dist/cli/chunks/{chunk-GJMLK5UT.js → chunk-OYJC3YON.js} +2 -2
  142. package/dist/cli/chunks/{chunk-AH3ZD3NJ.js → chunk-QDESWOZP.js} +2 -2
  143. package/dist/cli/chunks/chunk-R5GRABPQ.js +2 -0
  144. package/dist/cli/chunks/{chunk-CZGOSJQ4.js → chunk-R5LGV6GZ.js} +2 -2
  145. package/dist/cli/chunks/{chunk-MNN5J4GU.js → chunk-RBZCA7SD.js} +2 -2
  146. package/dist/cli/chunks/chunk-RQMCZQN2.js +2 -0
  147. package/dist/cli/chunks/chunk-RTFKTKSO.js +4 -0
  148. package/dist/cli/chunks/{chunk-FB6TI3BH.js → chunk-RTY7VSZB.js} +2 -2
  149. package/dist/cli/chunks/{chunk-2SXBBUM6.js → chunk-S6IYEBAI.js} +2 -2
  150. package/dist/cli/chunks/{chunk-YYTGXD3R.js → chunk-SMVVAVN2.js} +2 -2
  151. package/dist/cli/chunks/{chunk-MA7JIQ6U.js → chunk-T5KHJ3J7.js} +5 -5
  152. package/dist/cli/chunks/{chunk-FZOWULMH.js → chunk-TCYSBC7Y.js} +1 -1
  153. package/dist/cli/chunks/{chunk-IU2IV4NE.js → chunk-TFW7CCKS.js} +1 -1
  154. package/dist/cli/chunks/chunk-TL6OFMXF.js +6 -0
  155. package/dist/cli/chunks/{chunk-ERQKYIP7.js → chunk-U3LJNNVJ.js} +5 -5
  156. package/dist/cli/chunks/{chunk-5E6GHSTY.js → chunk-UKKYMW3S.js} +2 -2
  157. package/dist/cli/chunks/{chunk-YK3BVZY6.js → chunk-UMVSWQNB.js} +2 -2
  158. package/dist/cli/chunks/{chunk-CFBEBXLO.js → chunk-UTTSH4NH.js} +3 -3
  159. package/dist/cli/chunks/{chunk-6XCMKIZN.js → chunk-V5AADCBC.js} +1 -1
  160. package/dist/cli/chunks/{chunk-5LPYV3TK.js → chunk-V7DA4HAK.js} +1 -1
  161. package/dist/cli/chunks/{chunk-7PJIR4ST.js → chunk-VBK2YAYY.js} +2 -2
  162. package/dist/cli/chunks/{chunk-ODJNUMV3.js → chunk-VEEYL2CZ.js} +2 -2
  163. package/dist/cli/chunks/{chunk-PPSAMXYN.js → chunk-VLD7Z2ED.js} +3 -3
  164. package/dist/cli/chunks/{chunk-N6PIIK6G.js → chunk-VO3DRK4P.js} +2 -2
  165. package/dist/cli/chunks/{chunk-ZXPY654C.js → chunk-VWUZSNVC.js} +1 -1
  166. package/dist/cli/chunks/{chunk-WDQ7IEZY.js → chunk-VYTILW4R.js} +2 -2
  167. package/dist/cli/chunks/{chunk-CZ2IF6MC.js → chunk-WCAVIJ64.js} +1 -1
  168. package/dist/cli/chunks/{chunk-M2QV7PT7.js → chunk-WCVCOT4E.js} +2 -2
  169. package/dist/cli/chunks/{chunk-AI4VYSFS.js → chunk-WM3SRRA6.js} +2 -2
  170. package/dist/cli/chunks/{chunk-NNFZUTDH.js → chunk-X3PZCXWG.js} +1 -1
  171. package/dist/cli/chunks/{chunk-PCEW6Q2C.js → chunk-X4J73KP3.js} +1 -1
  172. package/dist/cli/chunks/{chunk-DBMNJSBV.js → chunk-XDI5X3FR.js} +1 -1
  173. package/dist/cli/chunks/{chunk-VJQYDYAJ.js → chunk-XGBU3KEM.js} +2 -2
  174. package/dist/cli/chunks/{chunk-3Y7SPD72.js → chunk-XGPTZUKQ.js} +2 -2
  175. package/dist/cli/chunks/{chunk-EN2QSKFF.js → chunk-XJKZ7FTR.js} +2 -2
  176. package/dist/cli/chunks/{chunk-VWNFAW2M.js → chunk-XNLIWQYE.js} +2 -2
  177. package/dist/cli/chunks/{chunk-FAUCT5KR.js → chunk-XS2XF3YG.js} +6 -5
  178. package/dist/cli/chunks/chunk-Y7B5EUIJ.js +180 -0
  179. package/dist/cli/chunks/{chunk-Z7IYW5U7.js → chunk-YBBT3YYG.js} +1 -1
  180. package/dist/cli/chunks/{chunk-6TB6YOCZ.js → chunk-YNOCQ2SL.js} +1 -1
  181. package/dist/cli/chunks/{chunk-7TB6FK4B.js → chunk-YOCULVHR.js} +1 -1
  182. package/dist/cli/chunks/{chunk-H74Q7TJN.js → chunk-YPX2TV3M.js} +1 -1
  183. package/dist/cli/chunks/{chunk-V2M2XCR5.js → chunk-Z2EA7A4Z.js} +1 -1
  184. package/dist/cli/chunks/{chunk-KI73QCR5.js → chunk-ZMC543GI.js} +2 -2
  185. package/dist/cli/chunks/chunk-ZMHCMJ4J.js +2 -0
  186. package/dist/cli/chunks/{chunk-WBM6N6IM.js → chunk-ZP75ASUU.js} +1 -1
  187. package/dist/cli/chunks/{chunk-VFKF2XO7.js → chunk-ZQHDA4O7.js} +1 -1
  188. package/dist/cli/chunks/{ci-MSKMVH5X.js → ci-6GUFAZMJ.js} +2 -2
  189. package/dist/cli/chunks/{ci-config-7ODMNAUM.js → ci-config-J665XNOX.js} +2 -2
  190. package/dist/cli/chunks/{ci-output-FXZ7ZZW3.js → ci-output-PEQQQWVD.js} +2 -2
  191. package/dist/cli/chunks/{circuit-breaker-4VOUEPOX.js → circuit-breaker-HHB2JSKH.js} +2 -2
  192. package/dist/cli/chunks/{claude-flow-setup-7D4SGLM4.js → claude-flow-setup-JKUJRWPN.js} +2 -2
  193. package/dist/cli/chunks/client-HL2COSFM.js +2 -0
  194. package/dist/cli/chunks/{cline-installer-WRRT7BGQ.js → cline-installer-Y77BWTAN.js} +2 -2
  195. package/dist/cli/chunks/{code-ZDJRIL3S.js → code-LV2HAGJY.js} +3 -3
  196. package/dist/cli/chunks/{code-index-extractor-4S4SHM56.js → code-index-extractor-4GKKSETB.js} +2 -2
  197. package/dist/cli/chunks/{codex-installer-YTRHNDWR.js → codex-installer-WMKBYE5Y.js} +2 -2
  198. package/dist/cli/chunks/{completions-6N64JUXJ.js → completions-SBGFAOIJ.js} +2 -2
  199. package/dist/cli/chunks/{complexity-analyzer-I4A26VCJ.js → complexity-analyzer-AQHFIJXC.js} +2 -2
  200. package/dist/cli/chunks/{continuedev-installer-IIDR66LB.js → continuedev-installer-26AYFS2E.js} +2 -2
  201. package/dist/cli/chunks/{copilot-installer-SVVFY3S2.js → copilot-installer-4UD3DK55.js} +2 -2
  202. package/dist/cli/chunks/core-handlers-IX7ATLM6.js +2 -0
  203. package/dist/cli/chunks/{cost-tracker-VGFS6IBX.js → cost-tracker-TP4NZCG4.js} +2 -2
  204. package/dist/cli/chunks/{coverage-B7MCGNTE.js → coverage-B2KIXHAI.js} +3 -3
  205. package/dist/cli/chunks/cross-domain-router-YYKLAPJO.js +2 -0
  206. package/dist/cli/chunks/{cursor-installer-UPETT57E.js → cursor-installer-AVZEQZ4W.js} +2 -2
  207. package/dist/cli/chunks/{daemon-7BDJHEIJ.js → daemon-P574WWBW.js} +4 -4
  208. package/dist/cli/chunks/{daemon-CQFNZLXU.js → daemon-XM2A7LQU.js} +3 -3
  209. package/dist/cli/chunks/{dag-attention-scheduler-PJVABHON.js → dag-attention-scheduler-MIWOZ6ET.js} +2 -2
  210. package/dist/cli/chunks/{detect-56SKAGWX.js → detect-TYR7HT23.js} +2 -2
  211. package/dist/cli/chunks/{dist-node-UYTYUMLN.js → dist-node-2DGVQGLS.js} +2 -2
  212. package/dist/cli/chunks/{domain-handler-YOYLBYJE.js → domain-handler-RRA4ZOMF.js} +2 -2
  213. package/dist/cli/chunks/{domain-plugins-7TARX2XF.js → domain-plugins-IVZEZ5RB.js} +2 -2
  214. package/dist/cli/chunks/{domain-transfer-AKVSBD6E.js → domain-transfer-DOBI67K6.js} +2 -2
  215. package/dist/cli/chunks/dream-T6EP7B3F.js +2 -0
  216. package/dist/cli/chunks/{embed-and-insert-pattern-IS6HSR66.js → embed-and-insert-pattern-VNIEOVPO.js} +2 -2
  217. package/dist/cli/chunks/{eval-GNB574IM.js → eval-QV4LVPUF.js} +2 -2
  218. package/dist/cli/chunks/{experience-capture-middleware-RCAOCKM7.js → experience-capture-middleware-DAPKT763.js} +3 -3
  219. package/dist/cli/chunks/{fast-paths-KTZ5SF54.js → fast-paths-WVRFPHX7.js} +2 -2
  220. package/dist/cli/chunks/{feature-flags-ITX5LQ57.js → feature-flags-DEFTUIYT.js} +2 -2
  221. package/dist/cli/chunks/{feature-flags-KFHSR5YF.js → feature-flags-O7ZXDDCD.js} +2 -2
  222. package/dist/cli/chunks/file-discovery-JYMVTDMU.js +2 -0
  223. package/dist/cli/chunks/{fleet-2Y3ZE6CE.js → fleet-FVAUMKUT.js} +22 -22
  224. package/dist/cli/chunks/{gnn-wrapper-RLFW3GSX.js → gnn-wrapper-LS4LZJDR.js} +2 -2
  225. package/dist/cli/chunks/{heartbeat-handler-EM2URCYZ.js → heartbeat-handler-RFTERD4K.js} +4 -4
  226. package/dist/cli/chunks/heartbeat-scheduler-4N5MUJ7S.js +2 -0
  227. package/dist/cli/chunks/hnsw-adapter-ZPAJDSLR.js +2 -0
  228. package/dist/cli/chunks/hnsw-index-4CTH6RHB.js +2 -0
  229. package/dist/cli/chunks/{hnsw-legacy-bridge-JMHEOIBH.js → hnsw-legacy-bridge-GPKGFFHY.js} +2 -2
  230. package/dist/cli/chunks/{hnswlib-node-CBP73QHY.js → hnswlib-node-PHL3F2PR.js} +2 -2
  231. package/dist/cli/chunks/{hooks-IP7XE34Z.js → hooks-GYJ6D4QM.js} +30 -30
  232. package/dist/cli/chunks/hybrid-backend-AW6UTXQS.js +2 -0
  233. package/dist/cli/chunks/{hypergraph-engine-ONAYHU25.js → hypergraph-engine-YGEQPCKJ.js} +2 -2
  234. package/dist/cli/chunks/{hypergraph-handler-VINJRAID.js → hypergraph-handler-ZIMM647V.js} +3 -3
  235. package/dist/cli/chunks/impact-analyzer-MZK3JMSV.js +2 -0
  236. package/dist/cli/chunks/{init-guard-RYVV5R3Z.js → init-guard-VOMBXJXG.js} +2 -2
  237. package/dist/cli/chunks/{init-handler-MPRGWMOE.js → init-handler-PSMUBWK5.js} +26 -25
  238. package/dist/cli/chunks/init-wizard-FUC7KDVX.js +2 -0
  239. package/dist/cli/chunks/kernel-ZCPMCVMW.js +2 -0
  240. package/dist/cli/chunks/{kilocode-installer-OPD7JBRL.js → kilocode-installer-2YNTFBWJ.js} +2 -2
  241. package/dist/cli/chunks/{kiro-installer-M4OPUNK2.js → kiro-installer-XHJDPVAZ.js} +2 -2
  242. package/dist/cli/chunks/knowledge-graph-NUJKEDNF.js +2 -0
  243. package/dist/cli/chunks/{learning-4UWTQLMF.js → learning-GNSIDRNG.js} +3 -3
  244. package/dist/cli/chunks/{llm-router-SQ56FF6Z.js → llm-router-LQDM7IU2.js} +4 -4
  245. package/dist/cli/chunks/llm-router-service-B2BFBQ76.js +2 -0
  246. package/dist/cli/chunks/{load-HPHKDGGL.js → load-YATHI72E.js} +2 -2
  247. package/dist/cli/chunks/load-test-ZHQ2MUGO.js +2 -0
  248. package/dist/cli/chunks/{mcp-TELMAC7Z.js → mcp-4Y6GDLYK.js} +2 -2
  249. package/dist/cli/chunks/{memory-PFQ3KPVJ.js → memory-OUW3L7H2.js} +5 -5
  250. package/dist/cli/chunks/memory-backend-AAMQG6WH.js +2 -0
  251. package/dist/cli/chunks/memory-handlers-G3LFF53U.js +2 -0
  252. package/dist/cli/chunks/{multi-model-executor-3VDRX6TZ.js → multi-model-executor-UBZJXAD2.js} +2 -2
  253. package/dist/cli/chunks/{opencode-installer-PJ576R63.js → opencode-installer-AMMNWVH5.js} +2 -2
  254. package/dist/cli/chunks/{orchestrator-72QP4UU7.js → orchestrator-Y44WDOER.js} +19 -19
  255. package/dist/cli/chunks/pattern-null-store-RFNVA46O.js +2 -0
  256. package/dist/cli/chunks/{pattern-usage-recorder-754YQW7C.js → pattern-usage-recorder-ESR42RME.js} +2 -2
  257. package/dist/cli/chunks/{pipeline-AVXY4MVB.js → pipeline-EDTS6OSC.js} +2 -2
  258. package/dist/cli/chunks/{platform-3E3DXLYB.js → platform-5WONJSUX.js} +2 -2
  259. package/dist/cli/chunks/{plugin-7FUQAKRE.js → plugin-IJXPCLD4.js} +2 -2
  260. package/dist/cli/chunks/{prime-radiant-advanced-wasm-NIB4F5NV.js → prime-radiant-advanced-wasm-5ECKGZK6.js} +2 -2
  261. package/dist/cli/chunks/project-root-7QL4KP5C.js +2 -0
  262. package/dist/cli/chunks/protocol-executor-2NW5BD4R.js +2 -0
  263. package/dist/cli/chunks/{protocol-handler-BQRYMUTG.js → protocol-handler-DRD3GVNW.js} +2 -2
  264. package/dist/cli/chunks/{prove-H52QGC6B.js → prove-KTGW2HMJ.js} +2 -2
  265. package/dist/cli/chunks/qe-reasoning-bank-G2JZOGKD.js +2 -0
  266. package/dist/cli/chunks/{quality-QO4XPAUM.js → quality-DV2WPRRS.js} +2 -2
  267. package/dist/cli/chunks/{quality-gate-FBKE5E6F.js → quality-gate-HFUAFVZC.js} +3 -3
  268. package/dist/cli/chunks/queen-coordinator-GRG5FT2A.js +2 -0
  269. package/dist/cli/chunks/{real-embeddings-RWGOVOXO.js → real-embeddings-RQRVOKVM.js} +2 -2
  270. package/dist/cli/chunks/{ref-validation-LF76ZOBD.js → ref-validation-QWSKS5OY.js} +2 -2
  271. package/dist/cli/chunks/{roocode-installer-3BYEBTQ7.js → roocode-installer-RBAYRCHX.js} +2 -2
  272. package/dist/cli/chunks/router-LQB5SWAF.js +2 -0
  273. package/dist/cli/chunks/routing-feedback-OEEXA55N.js +2 -0
  274. package/dist/cli/chunks/{routing-handler-DST7BVCU.js → routing-handler-FMPP3XKO.js} +2 -2
  275. package/dist/cli/chunks/{ruvector-commands-XE32PGKC.js → ruvector-commands-KZZT4HWF.js} +2 -2
  276. package/dist/cli/chunks/rvf-dual-writer-BZK4M7BO.js +2 -0
  277. package/dist/cli/chunks/rvf-migration-adapter-EZZUJL2E.js +2 -0
  278. package/dist/cli/chunks/{rvf-migration-coordinator-VP32XC75.js → rvf-migration-coordinator-7CHEV35N.js} +2 -2
  279. package/dist/cli/chunks/rvf-native-adapter-6COXTQZ3.js +2 -0
  280. package/dist/cli/chunks/{rvf-store-integrity-SH2AMVI7.js → rvf-store-integrity-Q2TH52SN.js} +2 -2
  281. package/dist/cli/chunks/safe-db-PE6G3L55.js +2 -0
  282. package/dist/cli/chunks/schedule-OLKQ6QYW.js +2 -0
  283. package/dist/cli/chunks/scheduler-LSGBDFAT.js +2 -0
  284. package/dist/cli/chunks/{security-VSPNKCDS.js → security-CUEA3UIM.js} +3 -3
  285. package/dist/cli/chunks/{shared-rvf-adapter-HX6AHL3P.js → shared-rvf-adapter-DROMBRV2.js} +2 -2
  286. package/dist/cli/chunks/{shared-rvf-dual-writer-MX4FC2JE.js → shared-rvf-dual-writer-DBNABOP7.js} +2 -2
  287. package/dist/cli/chunks/sqlite-persistence-HH4DNTYH.js +2 -0
  288. package/dist/cli/chunks/{standalone-memory-O4QUTK6L.js → standalone-memory-IAHA3M6B.js} +2 -2
  289. package/dist/cli/chunks/{status-handler-Z2BP6EOG.js → status-handler-AFUCASTX.js} +2 -2
  290. package/dist/cli/chunks/{structural-health-R36WNLQG.js → structural-health-AQRV6JJ6.js} +2 -2
  291. package/dist/cli/chunks/{sync-QF5Y3EMZ.js → sync-GX7FMJHL.js} +2 -2
  292. package/dist/cli/chunks/{sync-2ELWUFQU.js → sync-XW5TLZ7M.js} +2 -2
  293. package/dist/cli/chunks/{task-handler-43PYE75J.js → task-handler-TFKVUTNF.js} +2 -2
  294. package/dist/cli/chunks/task-handlers-SS4ZDXNF.js +9 -0
  295. package/dist/cli/chunks/{test-UWA377D4.js → test-D2XDJNDX.js} +11 -11
  296. package/dist/cli/chunks/test-runner-process-PSSBNNGR.js +2 -0
  297. package/dist/cli/chunks/{test-scheduling-YQZPJRRN.js → test-scheduling-TS6I2PR7.js} +3 -3
  298. package/dist/cli/chunks/{token-bootstrap-F7C6UKTC.js → token-bootstrap-HBBLPCZ3.js} +2 -2
  299. package/dist/cli/chunks/{token-usage-DO6WLMXP.js → token-usage-3MBUX4PR.js} +2 -2
  300. package/dist/cli/chunks/{transformers-H5RGFKVO.js → transformers-ZWMQO3L2.js} +2 -2
  301. package/dist/cli/chunks/tree-sitter-wasm-parser-TYRQRJ2W.js +2 -0
  302. package/dist/cli/chunks/{types-PJS2FGPF.js → types-5YEMGPSQ.js} +2 -2
  303. package/dist/cli/chunks/unified-memory-AGDZQ5XD.js +2 -0
  304. package/dist/cli/chunks/unified-memory-hnsw-X5TJ3JDE.js +2 -0
  305. package/dist/cli/chunks/unified-persistence-UCV7YETW.js +2 -0
  306. package/dist/cli/chunks/{upgrade-4IC4F6AB.js → upgrade-2TPBKIHI.js} +2 -2
  307. package/dist/cli/chunks/{validate-DHUWW7PF.js → validate-XRAXXFW6.js} +2 -2
  308. package/dist/cli/chunks/{validate-swarm-OERQNOX5.js → validate-swarm-IYSCS3BZ.js} +2 -2
  309. package/dist/cli/chunks/visual-security-ZLXRIQZV.js +2 -0
  310. package/dist/cli/chunks/{web-tree-sitter-TV7DMKES.js → web-tree-sitter-PZQ3ZG2P.js} +2 -2
  311. package/dist/cli/chunks/{windsurf-installer-QZPWSH37.js → windsurf-installer-U6XWFRVT.js} +2 -2
  312. package/dist/cli/chunks/witness-chain-CVIWYTD2.js +2 -0
  313. package/dist/cli/chunks/witness-chain-VBKORKOX.js +2 -0
  314. package/dist/cli/chunks/{witness-chain-repair-RUXIOE7F.js → witness-chain-repair-K7YX2AO6.js} +2 -2
  315. package/dist/cli/chunks/{witness-chain-verifier-YXENHB42.js → witness-chain-verifier-GUTC3W7N.js} +2 -2
  316. package/dist/cli/chunks/{witness-key-manager-HL26AGFO.js → witness-key-manager-YBNKMOP6.js} +2 -2
  317. package/dist/cli/chunks/{workflow-EOVVCN2E.js → workflow-UAJUILFQ.js} +4 -4
  318. package/dist/cli/chunks/workflow-orchestrator-3ZN7MVCE.js +2 -0
  319. package/dist/cli/chunks/{wrappers-AGODHBOO.js → wrappers-AVZ3GPAL.js} +2 -2
  320. package/dist/cli/commands/fleet.js +4 -1
  321. package/dist/cli/commands/hooks-handlers/tool-loop-guardrail.js +11 -6
  322. package/dist/cli/commands/test.js +5 -2
  323. package/dist/cli/handlers/init-handler.d.ts +12 -0
  324. package/dist/cli/handlers/init-handler.js +27 -12
  325. package/dist/cli/utils/ci-output.d.ts +2 -0
  326. package/dist/cli/utils/ci-output.js +2 -0
  327. package/dist/cli/utils/progress.d.ts +16 -2
  328. package/dist/cli/utils/progress.js +31 -14
  329. package/dist/coordination/consensus/consensus-engine.js +3 -1
  330. package/dist/coordination/handlers/code-intelligence-handlers.js +3 -2
  331. package/dist/coordination/handlers/coverage-collection.js +3 -1
  332. package/dist/coordination/handlers/coverage-runner.d.ts +3 -8
  333. package/dist/coordination/handlers/coverage-runner.js +6 -22
  334. package/dist/coordination/handlers/coverage-stderr.d.ts +23 -0
  335. package/dist/coordination/handlers/coverage-stderr.js +39 -0
  336. package/dist/coordination/handlers/coverage-target.js +6 -3
  337. package/dist/coordination/handlers/handler-utils.js +3 -1
  338. package/dist/coordination/handlers/requirements-handlers.js +3 -2
  339. package/dist/coordination/handlers/security-handlers.js +34 -20
  340. package/dist/coordination/queen-coordinator.js +8 -3
  341. package/dist/coordination/task-executability.d.ts +12 -0
  342. package/dist/coordination/task-executability.js +27 -0
  343. package/dist/coordination/workflow-orchestrator.d.ts +6 -0
  344. package/dist/coordination/workflow-orchestrator.js +22 -8
  345. package/dist/domains/code-intelligence/services/product-factors-bridge.js +7 -4
  346. package/dist/domains/coverage-analysis/services/coverage-parser.js +19 -10
  347. package/dist/domains/learning-optimization/interfaces.d.ts +2 -0
  348. package/dist/domains/learning-optimization/services/learning-coordinator.js +2 -1
  349. package/dist/domains/learning-optimization/services/metrics-optimizer.js +14 -4
  350. package/dist/domains/learning-optimization/services/production-intel.js +3 -1
  351. package/dist/domains/security-compliance/generic-finding-dedup.d.ts +40 -0
  352. package/dist/domains/security-compliance/generic-finding-dedup.js +63 -0
  353. package/dist/domains/security-compliance/services/scanners/dependency-resolver.js +14 -6
  354. package/dist/domains/security-compliance/services/scanners/sast-scanner.js +4 -2
  355. package/dist/domains/security-compliance/services/security-auditor-sast.js +2 -2
  356. package/dist/domains/security-compliance/services/security-auditor-secrets.js +2 -2
  357. package/dist/domains/security-compliance/services/security-auditor.js +3 -2
  358. package/dist/domains/test-execution/coordinator.d.ts +2 -1
  359. package/dist/domains/test-execution/coordinator.js +5 -14
  360. package/dist/domains/test-execution/interfaces.d.ts +11 -1
  361. package/dist/domains/test-execution/services/retry-outcome.d.ts +18 -0
  362. package/dist/domains/test-execution/services/retry-outcome.js +53 -0
  363. package/dist/domains/test-generation/coordinator.js +2 -2
  364. package/dist/domains/test-generation/services/pattern-matcher.js +4 -4
  365. package/dist/domains/test-generation/services/test-generator.js +2 -2
  366. package/dist/governance/evolution-pipeline-integration.js +3 -1
  367. package/dist/hooks/cross-phase-hooks.js +3 -1
  368. package/dist/init/init-wizard-steps.js +5 -1
  369. package/dist/init/phases/04-database.js +7 -0
  370. package/dist/init/phases/12-verification.js +14 -4
  371. package/dist/init/settings-merge.js +7 -4
  372. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +7 -0
  373. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +31 -2
  374. package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +3 -1
  375. package/dist/integrations/agentic-flow/reasoning-bank/index.js +5 -0
  376. package/dist/integrations/ruvector/filter-adapter.js +2 -1
  377. package/dist/learning/dream/insight-generator.js +5 -4
  378. package/dist/learning/memory-auditor.js +3 -1
  379. package/dist/learning/qe-patterns.js +2 -1
  380. package/dist/learning/real-qe-reasoning-bank.d.ts +19 -0
  381. package/dist/learning/real-qe-reasoning-bank.js +70 -38
  382. package/dist/mcp/bundle.js +486 -481
  383. package/dist/mcp/handlers/domain-handler-configs.d.ts +2 -0
  384. package/dist/mcp/handlers/domain-handler-configs.js +8 -2
  385. package/dist/mcp/handlers/task-handlers.d.ts +13 -0
  386. package/dist/mcp/handlers/task-handlers.js +42 -16
  387. package/dist/mcp/handlers/validation-pipeline-handler.js +9 -9
  388. package/dist/mcp/protocol-server.js +8 -8
  389. package/dist/mcp/qe-tool-bridge.js +3 -0
  390. package/dist/mcp/services/reasoning-bank-service.d.ts +3 -1
  391. package/dist/mcp/services/reasoning-bank-service.js +4 -0
  392. package/dist/mcp/tool-annotations.js +4 -1
  393. package/dist/mcp/tools/coherence/check.js +1 -0
  394. package/dist/mcp/tools/coherence/consensus.js +4 -2
  395. package/dist/mcp/tools/learning-optimization/optimize.js +1 -2
  396. package/dist/mcp/tools/mincut/index.js +3 -0
  397. package/dist/mcp/tools/quality-assessment/gate.js +7 -0
  398. package/dist/mcp/tools/qx-analysis/analyze.js +1 -0
  399. package/dist/mcp/tools/requirements-validation/quality-criteria.js +10 -3
  400. package/dist/mcp/tools/security-compliance/scan.js +4 -2
  401. package/dist/mcp/tools/test-execution/e2e-execute.js +2 -2
  402. package/dist/mcp/tools/test-execution/execute.js +3 -2
  403. package/dist/memory/crdt/crdt-store.js +5 -0
  404. package/dist/memory/crdt/lww-register.js +12 -2
  405. package/dist/optimization/early-exit-token-optimizer.js +3 -1
  406. package/dist/planning/goap-planner.js +5 -0
  407. package/dist/planning/plan-executor.js +5 -0
  408. package/dist/shared/io/confined-read.d.ts +74 -0
  409. package/dist/shared/io/confined-read.js +256 -0
  410. package/dist/shared/io/file-reader.d.ts +6 -6
  411. package/dist/shared/io/file-reader.js +16 -42
  412. package/dist/shared/llm/providers/claude-code.js +4 -1
  413. package/dist/shared/native-module-errors.d.ts +51 -0
  414. package/dist/shared/native-module-errors.js +129 -0
  415. package/dist/shared/safe-db.js +14 -4
  416. package/dist/shared/security/osv-client.js +4 -1
  417. package/dist/shared/types/test-frameworks.js +2 -2
  418. package/dist/sync/readers/json-reader.js +2 -1
  419. package/dist/validation/anchor-set.d.ts +6 -0
  420. package/dist/validation/anchor-set.js +9 -1
  421. package/dist/validation/quality-gate-runner.d.ts +7 -1
  422. package/dist/validation/quality-gate-runner.js +3 -3
  423. package/package.json +1 -1
  424. package/dist/cli/chunks/adapter-TR5SLAZC.js +0 -2
  425. package/dist/cli/chunks/aqe-learning-engine-DXWKCHY2.js +0 -2
  426. package/dist/cli/chunks/base-GTB6POYE.js +0 -2
  427. package/dist/cli/chunks/browser-workflow-MSBOLYUY.js +0 -2
  428. package/dist/cli/chunks/chunk-6P7424AO.js +0 -21
  429. package/dist/cli/chunks/chunk-6X5DHU6Q.js +0 -14
  430. package/dist/cli/chunks/chunk-CMBLM26R.js +0 -2
  431. package/dist/cli/chunks/chunk-DKAC3E3B.js +0 -3
  432. package/dist/cli/chunks/chunk-DURHK377.js +0 -742
  433. package/dist/cli/chunks/chunk-FPUDRSFJ.js +0 -180
  434. package/dist/cli/chunks/chunk-G5I6KGMW.js +0 -59
  435. package/dist/cli/chunks/chunk-HOZUDE4C.js +0 -2
  436. package/dist/cli/chunks/chunk-TYFZXDGZ.js +0 -4
  437. package/dist/cli/chunks/chunk-U4OICXV2.js +0 -6
  438. package/dist/cli/chunks/chunk-XBVUVFJK.js +0 -4
  439. package/dist/cli/chunks/chunk-XUZDBQ5X.js +0 -6
  440. package/dist/cli/chunks/chunk-YBSBABOS.js +0 -2
  441. package/dist/cli/chunks/chunk-ZG5666GJ.js +0 -2
  442. package/dist/cli/chunks/client-POSVREVS.js +0 -2
  443. package/dist/cli/chunks/core-handlers-V243GY7X.js +0 -2
  444. package/dist/cli/chunks/cross-domain-router-N3AIEM3B.js +0 -2
  445. package/dist/cli/chunks/dream-UA7MKOPQ.js +0 -2
  446. package/dist/cli/chunks/file-discovery-YCMNKZAK.js +0 -2
  447. package/dist/cli/chunks/heartbeat-scheduler-QH5V6G2P.js +0 -2
  448. package/dist/cli/chunks/hnsw-adapter-OJNFAGJS.js +0 -2
  449. package/dist/cli/chunks/hnsw-index-DFUNARVD.js +0 -2
  450. package/dist/cli/chunks/hybrid-backend-SSGQQEQ2.js +0 -2
  451. package/dist/cli/chunks/impact-analyzer-CRGCA7ZD.js +0 -2
  452. package/dist/cli/chunks/init-wizard-NIMZ4J55.js +0 -2
  453. package/dist/cli/chunks/kernel-JQK7PRAI.js +0 -2
  454. package/dist/cli/chunks/knowledge-graph-YPVVIKEU.js +0 -2
  455. package/dist/cli/chunks/llm-router-service-5OGAUOXF.js +0 -2
  456. package/dist/cli/chunks/load-test-UKNV5MWW.js +0 -2
  457. package/dist/cli/chunks/memory-backend-ZW4BTRNK.js +0 -2
  458. package/dist/cli/chunks/memory-handlers-FCXN437E.js +0 -2
  459. package/dist/cli/chunks/pattern-null-store-4DUV6MQC.js +0 -2
  460. package/dist/cli/chunks/project-root-JCAUNL6O.js +0 -2
  461. package/dist/cli/chunks/protocol-executor-RNZNZP3A.js +0 -2
  462. package/dist/cli/chunks/qe-reasoning-bank-WK6TQOG2.js +0 -2
  463. package/dist/cli/chunks/queen-coordinator-4452SXZQ.js +0 -2
  464. package/dist/cli/chunks/router-3DIS5X4R.js +0 -2
  465. package/dist/cli/chunks/routing-feedback-OPXRCXM7.js +0 -2
  466. package/dist/cli/chunks/rvf-dual-writer-JL6T727I.js +0 -2
  467. package/dist/cli/chunks/rvf-migration-adapter-V7IBDUCS.js +0 -2
  468. package/dist/cli/chunks/rvf-native-adapter-O3UQTEBK.js +0 -2
  469. package/dist/cli/chunks/safe-db-EVB4ZC7T.js +0 -2
  470. package/dist/cli/chunks/schedule-ORDDXXY4.js +0 -2
  471. package/dist/cli/chunks/scheduler-XFLJSFIU.js +0 -2
  472. package/dist/cli/chunks/sqlite-persistence-Y7B42CJ3.js +0 -2
  473. package/dist/cli/chunks/task-handlers-KPWAEMKH.js +0 -9
  474. package/dist/cli/chunks/test-runner-process-3XZUYST2.js +0 -2
  475. package/dist/cli/chunks/tree-sitter-wasm-parser-YTBCBHUO.js +0 -2
  476. package/dist/cli/chunks/unified-memory-EHD4VNFW.js +0 -2
  477. package/dist/cli/chunks/unified-memory-hnsw-ZODGM4UK.js +0 -2
  478. package/dist/cli/chunks/unified-persistence-MHSI7ABK.js +0 -2
  479. package/dist/cli/chunks/visual-security-54MLFKWY.js +0 -2
  480. package/dist/cli/chunks/witness-chain-LC6Q2W27.js +0 -2
  481. package/dist/cli/chunks/witness-chain-QUIBAF3W.js +0 -2
  482. package/dist/cli/chunks/workflow-orchestrator-UKHEJVSK.js +0 -2
@@ -13,6 +13,8 @@ import { BasePhase, } from './phase-interface.js';
13
13
  import { openDatabase } from '../../shared/safe-db.js';
14
14
  /** The `# <ISO timestamp>` header line written by configToYAML(). */
15
15
  const CONFIG_TIMESTAMP_LINE = /^# \d{4}-\d{2}-\d{2}T[\d:.]+Z$/;
16
+ /** #1157: config keys that would reach Object.prototype through a plain object. */
17
+ const UNSAFE_YAML_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
16
18
  /**
17
19
  * Verification phase - verifies installation and writes markers
18
20
  */
@@ -173,8 +175,12 @@ export class VerificationPhase extends BasePhase {
173
175
  // Top-level key (no indentation)
174
176
  const topMatch = line.match(/^(\w+):\s*(.*)$/);
175
177
  if (topMatch) {
176
- currentSection = topMatch[1];
178
+ // #1157: keys come from config.yaml; a `__proto__` section (and
179
+ // everything under it) is skipped instead of re-prototyping result.
180
+ currentSection = UNSAFE_YAML_KEYS.has(topMatch[1]) ? '' : topMatch[1];
177
181
  currentSubSection = '';
182
+ if (!currentSection)
183
+ continue;
178
184
  const value = topMatch[2].trim();
179
185
  if (value && !value.startsWith('"')) {
180
186
  // Simple value
@@ -191,9 +197,11 @@ export class VerificationPhase extends BasePhase {
191
197
  // Second-level key (2-space indent)
192
198
  const subMatch = line.match(/^ {2}(\w+):\s*(.*)$/);
193
199
  if (subMatch && currentSection) {
194
- currentSubSection = subMatch[1];
200
+ currentSubSection = UNSAFE_YAML_KEYS.has(subMatch[1]) ? '' : subMatch[1];
201
+ if (!currentSubSection)
202
+ continue;
195
203
  const value = subMatch[2].trim();
196
- if (!result[currentSection]) {
204
+ if (!Object.hasOwn(result, currentSection) || !result[currentSection]) {
197
205
  result[currentSection] = {};
198
206
  }
199
207
  if (value) {
@@ -210,8 +218,10 @@ export class VerificationPhase extends BasePhase {
210
218
  if (thirdMatch && currentSection && currentSubSection) {
211
219
  const key = thirdMatch[1];
212
220
  const value = thirdMatch[2].trim();
221
+ if (UNSAFE_YAML_KEYS.has(key))
222
+ continue;
213
223
  const section = result[currentSection];
214
- if (!section[currentSubSection]) {
224
+ if (!Object.hasOwn(section, currentSubSection) || !section[currentSubSection]) {
215
225
  section[currentSubSection] = {};
216
226
  }
217
227
  if (typeof section[currentSubSection] === 'object' && !Array.isArray(section[currentSubSection])) {
@@ -8,6 +8,7 @@
8
8
  * - Generates full env vars and v3 settings sections
9
9
  */
10
10
  import { existsSync, readFileSync, writeFileSync } from 'fs';
11
+ import { getOwn, setOwn } from '../shared/utils/safe-record.js';
11
12
  /**
12
13
  * Create a one-time `.backup` of an existing settings.json before AQE modifies
13
14
  * it — mirroring the CLAUDE.md backup convention.
@@ -75,22 +76,24 @@ export function isAqeHookEntry(entry) {
75
76
  * 3. Preserve any hook types not in the new config
76
77
  */
77
78
  export function mergeHooksSmart(existingHooks, newAqeHooks) {
79
+ // #1157: hook types come from the user's settings.json; read and write own
80
+ // entries only, so a type named `constructor` or `__proto__` is kept as-is.
78
81
  const merged = {};
79
82
  // Process hook types that have new AQE entries
80
83
  for (const [hookType, newEntries] of Object.entries(newAqeHooks)) {
81
- const existing = existingHooks[hookType] || [];
84
+ const existing = getOwn(existingHooks, hookType) || [];
82
85
  // Keep only non-AQE entries from existing config
83
86
  const userEntries = Array.isArray(existing)
84
87
  ? existing.filter((entry) => !isAqeHookEntry(entry))
85
88
  : [];
86
89
  // New AQE hooks go after user hooks (except PreToolUse guard which should be first)
87
- merged[hookType] = [...newEntries, ...userEntries];
90
+ setOwn(merged, hookType, [...newEntries, ...userEntries]);
88
91
  }
89
92
  // Preserve hook types that are not in our new config (user's custom hook types)
90
93
  for (const [hookType, hookArray] of Object.entries(existingHooks)) {
91
- if (!merged[hookType]) {
94
+ if (!Object.hasOwn(merged, hookType)) {
92
95
  // This hook type isn't one we manage — keep it as-is
93
- merged[hookType] = hookArray;
96
+ setOwn(merged, hookType, hookArray);
94
97
  }
95
98
  }
96
99
  return merged;
@@ -113,6 +113,7 @@ export declare class ExperienceReplay {
113
113
  private prepared;
114
114
  private initialized;
115
115
  private initializationPromise;
116
+ private embedderUnavailableLogged;
116
117
  private hnswIndex;
117
118
  private idToExperienceId;
118
119
  private experienceIdToHnswId;
@@ -150,6 +151,12 @@ export declare class ExperienceReplay {
150
151
  * @returns The stored experience
151
152
  */
152
153
  storeExperience(trajectory: Trajectory, strategy: string, tags?: string[]): Promise<Experience | null>;
154
+ /**
155
+ * #1022: embed text, or return null when no embedding runtime is available.
156
+ * The experience is then stored without a vector (backfilled at a later
157
+ * start that has an embedder) and similarity search finds no matches.
158
+ */
159
+ private embedOrNull;
153
160
  /**
154
161
  * Get guidance for a new task based on similar experiences
155
162
  *
@@ -60,6 +60,7 @@ export class ExperienceReplay {
60
60
  prepared = new Map();
61
61
  initialized = false;
62
62
  initializationPromise = null;
63
+ embedderUnavailableLogged = false;
63
64
  // Real HNSW index for O(log n) similarity search (150x-12,500x faster than linear scan)
64
65
  hnswIndex;
65
66
  // Mapping from HNSW numeric IDs to experience string IDs
@@ -399,7 +400,7 @@ export class ExperienceReplay {
399
400
  .map(s => scrubReasoningBlocks(s.action));
400
401
  // Generate embedding for similarity search
401
402
  const embeddingText = `${task} ${strategy} ${keyActions.join(' ')}`;
402
- const embedding = await computeRealEmbedding(embeddingText, this.config.embedding);
403
+ const embedding = (await this.embedOrNull(embeddingText)) ?? undefined;
403
404
  const id = uuidv4();
404
405
  const domain = trajectory.domain || 'test-generation';
405
406
  const experience = {
@@ -456,6 +457,24 @@ export class ExperienceReplay {
456
457
  }
457
458
  return experience;
458
459
  }
460
+ /**
461
+ * #1022: embed text, or return null when no embedding runtime is available.
462
+ * The experience is then stored without a vector (backfilled at a later
463
+ * start that has an embedder) and similarity search finds no matches.
464
+ */
465
+ async embedOrNull(text) {
466
+ try {
467
+ return await computeRealEmbedding(text, this.config.embedding);
468
+ }
469
+ catch (error) {
470
+ if (!this.embedderUnavailableLogged) {
471
+ this.embedderUnavailableLogged = true;
472
+ console.warn('[ExperienceReplay] No embedding runtime; experiences are stored without vectors ' +
473
+ 'and similar-experience guidance is unavailable:', error instanceof Error ? error.message : error);
474
+ }
475
+ return null;
476
+ }
477
+ }
459
478
  /**
460
479
  * Get guidance for a new task based on similar experiences
461
480
  *
@@ -465,6 +484,13 @@ export class ExperienceReplay {
465
484
  */
466
485
  async getGuidance(task, domain) {
467
486
  this.ensureInitialized();
487
+ // #1022: the reservoir blend below picks experiences without looking at
488
+ // the query and gives them a coherence-derived similarity. Without an
489
+ // embedding of the query nothing measures relevance, so return no guidance
490
+ // rather than query-independent picks with a made-up similarity.
491
+ if (!(await this.embedOrNull(scrubReasoningBlocks(task)))) {
492
+ return null;
493
+ }
468
494
  // Find similar experiences via HNSW
469
495
  const similar = await this.findSimilarExperiences(task, domain);
470
496
  // Blend in high-coherence experiences from reservoir buffer (R10, ADR-087)
@@ -546,7 +572,10 @@ export class ExperienceReplay {
546
572
  // Generate embedding for the task
547
573
  // ADR-099: scrub so query embeddings match the scrubbed stored embeddings
548
574
  task = scrubReasoningBlocks(task);
549
- const taskEmbedding = await computeRealEmbedding(task, this.config.embedding);
575
+ const taskEmbedding = await this.embedOrNull(task);
576
+ if (!taskEmbedding) {
577
+ return [];
578
+ }
550
579
  // Create query embedding for HNSW search
551
580
  const queryEmbedding = {
552
581
  vector: taskEmbedding,
@@ -15,7 +15,7 @@
15
15
  * - Automatic strategy recommendations
16
16
  * - Pattern quality improvement over time
17
17
  */
18
- import { RealQEReasoningBank, type RealQEReasoningBankConfig, type RealQEPatternSearchResult, type RealQERoutingRequest, type RealQERoutingResult, type LearningOutcome } from '../../../learning/real-qe-reasoning-bank.js';
18
+ import { RealQEReasoningBank, type RealQEReasoningBankConfig, type RealQEPatternSearchResult, type PatternSearchStatus, type RealQERoutingRequest, type RealQERoutingResult, type LearningOutcome } from '../../../learning/real-qe-reasoning-bank.js';
19
19
  import { TrajectoryTracker, type Trajectory, type TrajectoryStep, type TrajectoryOptions, type TrajectoryTrackerConfig } from './trajectory-tracker.js';
20
20
  import { ExperienceReplay, type ExperienceGuidance, type ExperienceReplayConfig } from './experience-replay.js';
21
21
  import { PatternEvolution, type PatternVersion, type DriftDetectionResult, type MergeCandidate, type PatternEvolutionConfig } from './pattern-evolution.js';
@@ -183,6 +183,8 @@ export declare class EnhancedReasoningBankAdapter {
183
183
  domain?: QEDomain;
184
184
  minSimilarity?: number;
185
185
  }): Promise<Result<RealQEPatternSearchResult[]>>;
186
+ /** #1022: whether pattern search uses vectors or text matching only. */
187
+ getPatternSearchStatus(): PatternSearchStatus;
186
188
  /**
187
189
  * Record a pattern outcome with evolution tracking
188
190
  */
@@ -297,6 +297,11 @@ export class EnhancedReasoningBankAdapter {
297
297
  this.ensureInitialized();
298
298
  return this.reasoningBank.searchQEPatterns(query, options);
299
299
  }
300
+ /** #1022: whether pattern search uses vectors or text matching only. */
301
+ getPatternSearchStatus() {
302
+ this.ensureInitialized();
303
+ return this.reasoningBank.getPatternSearchStatus();
304
+ }
300
305
  /**
301
306
  * Record a pattern outcome with evolution tracking
302
307
  */
@@ -69,7 +69,8 @@ function resolveField(result, fieldPath) {
69
69
  for (const part of parts) {
70
70
  if (current === null || current === undefined)
71
71
  break;
72
- if (typeof current === 'object') {
72
+ // #1157: an inherited member such as `toString` is not a field.
73
+ if (typeof current === 'object' && Object.hasOwn(current, part)) {
73
74
  current = current[part];
74
75
  }
75
76
  else {
@@ -14,6 +14,7 @@
14
14
  * @module learning/dream/insight-generator
15
15
  */
16
16
  import { randomUUID } from 'crypto';
17
+ import { getOwn, setOwn } from '../../shared/utils/safe-record.js';
17
18
  /**
18
19
  * Default insight configuration
19
20
  */
@@ -320,10 +321,10 @@ export class InsightGenerator {
320
321
  };
321
322
  for (const node of activeNodes) {
322
323
  const typeKey = node.conceptType ?? 'pattern';
323
- if (!byType[typeKey]) {
324
- byType[typeKey] = [];
325
- }
326
- byType[typeKey].push(node);
324
+ // #1157: concept types come from stored nodes; own buckets only.
325
+ const bucket = getOwn(byType, typeKey) ?? [];
326
+ setOwn(byType, typeKey, bucket);
327
+ bucket.push(node);
327
328
  }
328
329
  // Gap: Error without resolution
329
330
  for (const errorNode of byType.error ?? []) {
@@ -59,6 +59,7 @@
59
59
  import { randomUUID } from 'crypto';
60
60
  import { LoggerFactory } from '../logging/index.js';
61
61
  import { toErrorMessage } from '../shared/error-utils.js';
62
+ import { createSafeRecord } from '../shared/utils/safe-record.js';
62
63
  const logger = LoggerFactory.create('MemoryAuditor');
63
64
  /**
64
65
  * Default auditor configuration
@@ -319,7 +320,8 @@ export class MemoryCoherenceAuditor {
319
320
  * Group patterns by domain
320
321
  */
321
322
  groupByDomain(patterns) {
322
- const groups = {};
323
+ // #1157: domains come from stored pattern rows.
324
+ const groups = createSafeRecord();
323
325
  for (const pattern of patterns) {
324
326
  const domain = pattern.qeDomain;
325
327
  if (!groups[domain]) {
@@ -163,7 +163,8 @@ export function validateQEPattern(pattern) {
163
163
  export function applyPatternTemplate(template, variables) {
164
164
  let content = template.content;
165
165
  for (const variable of template.variables) {
166
- const value = variables[variable.name] ?? variable.defaultValue;
166
+ // #1157: the variable name comes from a stored pattern; read own values only.
167
+ const value = (Object.hasOwn(variables, variable.name) ? variables[variable.name] : undefined) ?? variable.defaultValue;
167
168
  if (variable.required && value === undefined) {
168
169
  throw new Error(`Required variable ${variable.name} not provided`);
169
170
  }
@@ -38,6 +38,17 @@ export interface RealQEPatternSearchResult {
38
38
  matchType: 'vector' | 'lexical';
39
39
  canReuse: boolean;
40
40
  }
41
+ /**
42
+ * #1022: how pattern search works in this process. Without an embedding
43
+ * runtime the bank stores patterns text-only (vectors pending, filled later by
44
+ * `aqe learning backfill-embeddings`) and searches by SQLite FTS text matching
45
+ * only. No similarity score is computed in that mode.
46
+ */
47
+ export interface PatternSearchStatus {
48
+ mode: 'vector' | 'lexical-only';
49
+ /** Why vector search is unavailable (only for 'lexical-only'). */
50
+ reason?: string;
51
+ }
41
52
  export interface RealQERoutingRequest {
42
53
  task: string;
43
54
  taskType?: 'test-generation' | 'analysis' | 'debugging' | 'optimization';
@@ -94,6 +105,8 @@ export interface RealQEReasoningBankStats {
94
105
  transformerAvailable: boolean;
95
106
  embeddingDimension: number;
96
107
  sqliteDbPath: string;
108
+ /** #1022: whether pattern search uses vectors, or text matching only */
109
+ patternSearch: PatternSearchStatus;
97
110
  /** ADR-061: Asymmetric learning metrics */
98
111
  asymmetricLearning?: {
99
112
  failurePenaltyRatio: string;
@@ -119,6 +132,8 @@ export declare class RealQEReasoningBank {
119
132
  private hnswIndex;
120
133
  private patternIdMap;
121
134
  private initialized;
135
+ /** #1022: set when no embedding runtime is available; null when vectors work. */
136
+ private embedderUnavailableReason;
122
137
  private stats;
123
138
  private routingLatencies;
124
139
  private readonly asymmetricEngine;
@@ -128,6 +143,8 @@ export declare class RealQEReasoningBank {
128
143
  * Initialize the QE ReasoningBank
129
144
  */
130
145
  initialize(): Promise<void>;
146
+ /** #1022: whether pattern search uses vectors or text matching only. */
147
+ getPatternSearchStatus(): PatternSearchStatus;
131
148
  /**
132
149
  * Initialize HNSW index for fast similarity search
133
150
  */
@@ -153,6 +170,8 @@ export declare class RealQEReasoningBank {
153
170
  domain?: QEDomain;
154
171
  minSimilarity?: number;
155
172
  }): Promise<Result<RealQEPatternSearchResult[]>>;
173
+ /** Append HNSW vector matches for `query` to `patterns`. */
174
+ private collectVectorMatches;
156
175
  /**
157
176
  * Route a task to optimal agent
158
177
  */
@@ -80,6 +80,8 @@ export class RealQEReasoningBank {
80
80
  hnswIndex = null;
81
81
  patternIdMap = new Map();
82
82
  initialized = false;
83
+ /** #1022: set when no embedding runtime is available; null when vectors work. */
84
+ embedderUnavailableReason = null;
83
85
  // Statistics tracking - using CircularBuffer for O(1) operations (ADR memory leak fix)
84
86
  stats = {
85
87
  routingRequests: 0,
@@ -167,12 +169,24 @@ export class RealQEReasoningBank {
167
169
  await this.sqliteStore.initialize();
168
170
  logger.info('SQLite persistence initialized');
169
171
  // Establish executable provenance before any persisted vectors enter ANN.
170
- await computeRealEmbedding(EMBEDDING_SPACE_CANARY, this.qeConfig.embeddings);
171
- // Initialize HNSW index
172
- await this.initializeHNSW();
173
- logger.info('HNSW index initialized');
174
- // Load existing patterns into HNSW
175
- await this.loadPatternsIntoHNSW();
172
+ // #1022: without an embedding runtime (no @huggingface/transformers and no
173
+ // AQE_EMBEDDER_ENDPOINT) run text-only instead of failing: no vector is
174
+ // computed, stored or searched (ADR-097: no hash-embedding fallback).
175
+ try {
176
+ await computeRealEmbedding(EMBEDDING_SPACE_CANARY, this.qeConfig.embeddings);
177
+ }
178
+ catch (error) {
179
+ this.embedderUnavailableReason = toErrorMessage(error);
180
+ logger.warn('No embedding runtime: patterns are stored without vectors (pending ' +
181
+ '`aqe learning backfill-embeddings`) and searched by text matching only', { reason: this.embedderUnavailableReason });
182
+ }
183
+ if (this.embedderUnavailableReason === null) {
184
+ // Initialize HNSW index
185
+ await this.initializeHNSW();
186
+ logger.info('HNSW index initialized');
187
+ // Load existing patterns into HNSW
188
+ await this.loadPatternsIntoHNSW();
189
+ }
176
190
  // Load foundational patterns ONLY if this is a brand-new database (no tables or genuinely empty).
177
191
  // CRITICAL: Do NOT overwrite existing data. If patterns were unexpectedly wiped,
178
192
  // loading 22 seed patterns would mask the data loss. Log a warning instead.
@@ -193,6 +207,12 @@ export class RealQEReasoningBank {
193
207
  const initTime = performance.now() - startTime;
194
208
  logger.info('Fully initialized', { durationMs: Math.round(initTime) });
195
209
  }
210
+ /** #1022: whether pattern search uses vectors or text matching only. */
211
+ getPatternSearchStatus() {
212
+ return this.embedderUnavailableReason === null
213
+ ? { mode: 'vector' }
214
+ : { mode: 'lexical-only', reason: this.embedderUnavailableReason };
215
+ }
196
216
  /**
197
217
  * Initialize HNSW index for fast similarity search
198
218
  */
@@ -311,9 +331,12 @@ export class RealQEReasoningBank {
311
331
  async storeQEPattern(options) {
312
332
  // Require explicit initialization - don't auto-initialize to avoid memory issues
313
333
  try {
314
- // Generate REAL embedding using transformer model
334
+ // Generate REAL embedding using transformer model. #1022: without an
335
+ // embedding runtime the pattern is stored text-only (vector pending).
315
336
  const textToEmbed = `${options.name} ${options.description || ''} ${options.context?.tags?.join(' ') || ''}`;
316
- const embedding = await computeRealEmbedding(textToEmbed, this.qeConfig.embeddings);
337
+ const embedding = this.embedderUnavailableReason === null
338
+ ? await computeRealEmbedding(textToEmbed, this.qeConfig.embeddings)
339
+ : undefined;
317
340
  // Detect QE domain
318
341
  const qeDomain = detectQEDomain(textToEmbed) || 'test-generation';
319
342
  // ADR-058: Check MemoryWriteGate for contradictions before storing
@@ -374,7 +397,7 @@ export class RealQEReasoningBank {
374
397
  // Store in SQLite
375
398
  this.sqliteStore.storePattern(pattern, embedding);
376
399
  // Add to HNSW index
377
- if (this.hnswIndex) {
400
+ if (this.hnswIndex && embedding) {
378
401
  const index = this.hnswIndex.getCurrentCount();
379
402
  this.hnswIndex.addPoint(embedding, index);
380
403
  this.patternIdMap.set(index, patternId);
@@ -410,38 +433,15 @@ export class RealQEReasoningBank {
410
433
  // Require explicit initialization - don't auto-initialize to avoid memory issues
411
434
  const startTime = performance.now();
412
435
  try {
413
- if (!this.hnswIndex) {
414
- return err(new Error('HNSW index not available'));
415
- }
416
- // Generate REAL embedding for query
417
- const queryEmbedding = await computeRealEmbedding(query, this.qeConfig.embeddings);
418
- // Search HNSW index
419
436
  const limit = options.limit || 10;
420
- const results = this.hnswIndex.searchKnn(queryEmbedding, limit * 2); // Get extra for filtering
421
437
  const patterns = [];
422
- for (let i = 0; i < results.neighbors.length; i++) {
423
- const hnswIndex = results.neighbors[i];
424
- const distance = results.distances[i];
425
- const similarity = 1 - distance; // Convert distance to similarity
426
- if (options.minSimilarity !== undefined && similarity < options.minSimilarity) {
427
- continue;
428
- }
429
- const patternId = this.patternIdMap.get(hnswIndex);
430
- if (!patternId)
431
- continue;
432
- const pattern = this.sqliteStore.getPattern(patternId);
433
- if (!pattern)
434
- continue;
435
- // Filter by domain if specified
436
- if (options.domain && pattern.qeDomain !== options.domain) {
437
- continue;
438
+ // #1022: without an embedding runtime only the lexical (FTS) branch
439
+ // below runs; its hits are labelled matchType 'lexical'.
440
+ if (this.embedderUnavailableReason === null) {
441
+ if (!this.hnswIndex) {
442
+ return err(new Error('HNSW index not available'));
438
443
  }
439
- const reuse = DEFAULT_PATTERN_STORE_CONFIG.reuseOptimization;
440
- const ageDays = (Date.now() - new Date(pattern.lastUsedAt).getTime()) / 86_400_000;
441
- patterns.push({ pattern, similarity, score: similarity, matchType: 'vector',
442
- canReuse: Boolean(pattern.reusable && similarity >= reuse.minSimilarityForReuse
443
- && pattern.successRate >= reuse.minSuccessRateForReuse && ageDays <= reuse.maxAgeForReuse),
444
- });
444
+ await this.collectVectorMatches(query, limit, options, patterns);
445
445
  }
446
446
  const existing = new Map(patterns.map(hit => [hit.pattern.id, hit]));
447
447
  for (const lexical of this.sqliteStore.searchFTS(query, limit * 2)) {
@@ -471,6 +471,37 @@ export class RealQEReasoningBank {
471
471
  return err(toError(error));
472
472
  }
473
473
  }
474
+ /** Append HNSW vector matches for `query` to `patterns`. */
475
+ async collectVectorMatches(query, limit, options, patterns) {
476
+ // Generate REAL embedding for query
477
+ const queryEmbedding = await computeRealEmbedding(query, this.qeConfig.embeddings);
478
+ // Search HNSW index
479
+ const results = this.hnswIndex.searchKnn(queryEmbedding, limit * 2); // Get extra for filtering
480
+ for (let i = 0; i < results.neighbors.length; i++) {
481
+ const hnswIndex = results.neighbors[i];
482
+ const distance = results.distances[i];
483
+ const similarity = 1 - distance; // Convert distance to similarity
484
+ if (options.minSimilarity !== undefined && similarity < options.minSimilarity) {
485
+ continue;
486
+ }
487
+ const patternId = this.patternIdMap.get(hnswIndex);
488
+ if (!patternId)
489
+ continue;
490
+ const pattern = this.sqliteStore.getPattern(patternId);
491
+ if (!pattern)
492
+ continue;
493
+ // Filter by domain if specified
494
+ if (options.domain && pattern.qeDomain !== options.domain) {
495
+ continue;
496
+ }
497
+ const reuse = DEFAULT_PATTERN_STORE_CONFIG.reuseOptimization;
498
+ const ageDays = (Date.now() - new Date(pattern.lastUsedAt).getTime()) / 86_400_000;
499
+ patterns.push({ pattern, similarity, score: similarity, matchType: 'vector',
500
+ canReuse: Boolean(pattern.reusable && similarity >= reuse.minSimilarityForReuse
501
+ && pattern.successRate >= reuse.minSuccessRateForReuse && ageDays <= reuse.maxAgeForReuse),
502
+ });
503
+ }
504
+ }
474
505
  /**
475
506
  * Route a task to optimal agent
476
507
  */
@@ -701,6 +732,7 @@ export class RealQEReasoningBank {
701
732
  : 0,
702
733
  embeddingCacheSize: 0, // Would need to track this in real-embeddings
703
734
  transformerAvailable: isTransformerAvailable(),
735
+ patternSearch: this.getPatternSearchStatus(),
704
736
  embeddingDimension: getEmbeddingDimension(),
705
737
  sqliteDbPath: this.qeConfig.sqlite.dbPath || '.agentic-qe/memory.db',
706
738
  // ADR-061: Asymmetric learning stats