agentic-qe 3.9.18 → 3.9.20

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 (314) hide show
  1. package/.claude/helpers/statusline-v3.cjs +1 -1
  2. package/.claude/skills/skills-manifest.json +1 -1
  3. package/CHANGELOG.md +62 -0
  4. package/assets/skills/skills-manifest.json +1 -1
  5. package/dist/adapters/claude-flow/trajectory-bridge.d.ts +12 -1
  6. package/dist/adapters/claude-flow/trajectory-bridge.js +33 -31
  7. package/dist/cli/bundle.js +5 -5
  8. package/dist/cli/chunks/adapter-UOX57IAN.js +2 -0
  9. package/dist/cli/chunks/{agent-booster-wasm-RJHBIG5V.js → agent-booster-wasm-T5JB3MOF.js} +2 -2
  10. package/dist/cli/chunks/{agent-handler-CXS6EE2V.js → agent-handler-EASMQSQO.js} +2 -2
  11. package/dist/cli/chunks/{agent-memory-branch-7NV5DD5A.js → agent-memory-branch-7GWN2KCG.js} +2 -2
  12. package/dist/cli/chunks/aqe-learning-engine-KZES2SKE.js +2 -0
  13. package/dist/cli/chunks/{audit-3NWGSPJW.js → audit-VHV4GXPW.js} +2 -2
  14. package/dist/cli/chunks/base-7MXMBRSW.js +2 -0
  15. package/dist/cli/chunks/{better-sqlite3-NXOMSJDC.js → better-sqlite3-GNK7MDXZ.js} +2 -2
  16. package/dist/cli/chunks/{brain-handler-6N5WWZVA.js → brain-handler-ALXZKWO4.js} +3 -3
  17. package/dist/cli/chunks/{branch-enumerator-I7UTOCAW.js → branch-enumerator-JNYLOLMM.js} +2 -2
  18. package/dist/cli/chunks/{browser-6VOFWA52.js → browser-FXRW6LID.js} +2 -2
  19. package/dist/cli/chunks/browser-workflow-4C5R54CZ.js +2 -0
  20. package/dist/cli/chunks/{chunk-BFM47L3X.js → chunk-2J5OO63R.js} +2 -2
  21. package/dist/cli/chunks/{chunk-7OGUAZGJ.js → chunk-35HDLA22.js} +1 -1
  22. package/dist/cli/chunks/{chunk-P6HIDCTQ.js → chunk-3BFNYFXV.js} +1 -1
  23. package/dist/cli/chunks/{chunk-KFITGSW3.js → chunk-3CLKKAGH.js} +2 -2
  24. package/dist/cli/chunks/{chunk-WC5A7C5L.js → chunk-3GPNZPM4.js} +1 -1
  25. package/dist/cli/chunks/{chunk-HLXPD4Y2.js → chunk-3HQ4VKK6.js} +79 -67
  26. package/dist/cli/chunks/{chunk-ENYQUSSK.js → chunk-3ZHUKLU7.js} +2 -2
  27. package/dist/cli/chunks/{chunk-4BIWQLD3.js → chunk-4G6OH5LQ.js} +2 -2
  28. package/dist/cli/chunks/{chunk-ODGACHEZ.js → chunk-4HD7YRW7.js} +2 -2
  29. package/dist/cli/chunks/{chunk-MBGWDELE.js → chunk-4IUNBRKQ.js} +2 -2
  30. package/dist/cli/chunks/{chunk-S2XBAOXE.js → chunk-4PNLBMKY.js} +1 -1
  31. package/dist/cli/chunks/{chunk-FTIHPDWV.js → chunk-4SBMTHTA.js} +2 -2
  32. package/dist/cli/chunks/{chunk-H5JZZH2C.js → chunk-5GA4BUQU.js} +2 -2
  33. package/dist/cli/chunks/{chunk-AMRUZ6XG.js → chunk-5ILP2ZDZ.js} +2 -2
  34. package/dist/cli/chunks/{chunk-G2H4W7NN.js → chunk-5LM2W3NE.js} +1 -1
  35. package/dist/cli/chunks/{chunk-BGSYFAEJ.js → chunk-6LKEFWKI.js} +3 -3
  36. package/dist/cli/chunks/{chunk-MDCTQOUJ.js → chunk-6R7SJ5FS.js} +1 -1
  37. package/dist/cli/chunks/{chunk-7XLTLFP5.js → chunk-7I6ROJGF.js} +2 -2
  38. package/dist/cli/chunks/{chunk-4666TC3P.js → chunk-7J34I3CI.js} +2 -2
  39. package/dist/cli/chunks/{chunk-6QSB4XOL.js → chunk-7OGFOHG5.js} +2 -2
  40. package/dist/cli/chunks/{chunk-B6BAK2JI.js → chunk-7Q7SCQMQ.js} +2 -2
  41. package/dist/cli/chunks/{chunk-X2T4TI7D.js → chunk-7R45TEY6.js} +2 -2
  42. package/dist/cli/chunks/{chunk-27MW2RFA.js → chunk-7WXYQDML.js} +2 -2
  43. package/dist/cli/chunks/{chunk-IJPTWPXG.js → chunk-7Y4QQ6JL.js} +1 -1
  44. package/dist/cli/chunks/{chunk-QGSELG75.js → chunk-AFMLL2G3.js} +2 -2
  45. package/dist/cli/chunks/{chunk-JBW2A2O6.js → chunk-AVVRA6FG.js} +2 -2
  46. package/dist/cli/chunks/{chunk-2A4JCRAW.js → chunk-BIODM56C.js} +2 -2
  47. package/dist/cli/chunks/{chunk-KMHGQD76.js → chunk-BJF77EFA.js} +2 -2
  48. package/dist/cli/chunks/chunk-BKGCMWFL.js +12 -0
  49. package/dist/cli/chunks/{chunk-JMK5OCWL.js → chunk-BXGAXGME.js} +2 -2
  50. package/dist/cli/chunks/{chunk-RPT7HCMH.js → chunk-CEVIRL2S.js} +2 -2
  51. package/dist/cli/chunks/{chunk-DC3PADV3.js → chunk-CPVGZYEP.js} +1 -1
  52. package/dist/cli/chunks/chunk-CQSME43Z.js +69 -0
  53. package/dist/cli/chunks/{chunk-VRHKEJR6.js → chunk-DERQRIAR.js} +3 -3
  54. package/dist/cli/chunks/{chunk-XBWVHO6G.js → chunk-DJCLA5AG.js} +2 -2
  55. package/dist/cli/chunks/{chunk-EN2A2CVT.js → chunk-DODH6CEQ.js} +1 -1
  56. package/dist/cli/chunks/{chunk-4U2JKV44.js → chunk-DSPH4GI3.js} +1 -1
  57. package/dist/cli/chunks/{chunk-HZKY5KPB.js → chunk-EJQRDMON.js} +1 -1
  58. package/dist/cli/chunks/{chunk-OXL6JSVR.js → chunk-EYSGJZ7Y.js} +9 -9
  59. package/dist/cli/chunks/chunk-F32R4LVS.js +2 -0
  60. package/dist/cli/chunks/{chunk-DCB2VUYM.js → chunk-F3PX6EJX.js} +1 -1
  61. package/dist/cli/chunks/{chunk-RI3NTZ2I.js → chunk-FAQPPMEC.js} +2 -2
  62. package/dist/cli/chunks/{chunk-6G3RNT5H.js → chunk-FHDYN73D.js} +2 -2
  63. package/dist/cli/chunks/{chunk-DQCWNCOT.js → chunk-FPBNTPCM.js} +2 -2
  64. package/dist/cli/chunks/{chunk-TFUWIKGZ.js → chunk-FUTRX4ZT.js} +2 -2
  65. package/dist/cli/chunks/{chunk-IS2PMHB5.js → chunk-G7HYTJDG.js} +2 -2
  66. package/dist/cli/chunks/{chunk-4ELLGWTS.js → chunk-GJACTPDK.js} +2 -2
  67. package/dist/cli/chunks/{chunk-EZN7QMOZ.js → chunk-GXO42P3X.js} +4 -4
  68. package/dist/cli/chunks/{chunk-FKNYOKIK.js → chunk-H647PYXW.js} +1 -1
  69. package/dist/cli/chunks/{chunk-MLVVYUFS.js → chunk-HCFRGEMK.js} +1 -1
  70. package/dist/cli/chunks/{chunk-DOSDUAVZ.js → chunk-HW47UOFK.js} +2 -2
  71. package/dist/cli/chunks/{chunk-JGNVI5UB.js → chunk-HXQ7GAUV.js} +3 -3
  72. package/dist/cli/chunks/{chunk-BRWWIY6O.js → chunk-ICLWWAGZ.js} +2 -2
  73. package/dist/cli/chunks/{chunk-A26GU6YU.js → chunk-IHBRFVGA.js} +1 -1
  74. package/dist/cli/chunks/{chunk-ZURHHRSA.js → chunk-J7SDO52P.js} +2 -2
  75. package/dist/cli/chunks/{chunk-6ZMQL3U6.js → chunk-JCPXG42O.js} +2 -2
  76. package/dist/cli/chunks/{chunk-BSQTOKNR.js → chunk-K2D5L7YV.js} +1 -1
  77. package/dist/cli/chunks/{chunk-JZG23IPV.js → chunk-KMDZOVCF.js} +1 -1
  78. package/dist/cli/chunks/{chunk-VW7FKTFO.js → chunk-KNOZWD6E.js} +2 -2
  79. package/dist/cli/chunks/{chunk-JZTB35EQ.js → chunk-LATJ2LKJ.js} +1 -1
  80. package/dist/cli/chunks/{chunk-WMJCFDTA.js → chunk-LGSPAQSP.js} +2 -2
  81. package/dist/cli/chunks/{chunk-D7SS56EG.js → chunk-LJW7BTMK.js} +2 -2
  82. package/dist/cli/chunks/{chunk-ZHA5Z5V4.js → chunk-LSYMQG52.js} +1 -1
  83. package/dist/cli/chunks/{chunk-6KTF7QB3.js → chunk-MIST354H.js} +2 -2
  84. package/dist/cli/chunks/{chunk-AGPZVE6B.js → chunk-MXAEZHW6.js} +2 -2
  85. package/dist/cli/chunks/{chunk-6IBFYVLK.js → chunk-MXDGMXJA.js} +2 -2
  86. package/dist/cli/chunks/{chunk-R3U3ARVJ.js → chunk-MXHJUAM7.js} +2 -2
  87. package/dist/cli/chunks/{chunk-BXTHB2A2.js → chunk-NGWGOMOP.js} +2 -2
  88. package/dist/cli/chunks/{chunk-UNPTSPAO.js → chunk-NN6VRHNL.js} +2 -2
  89. package/dist/cli/chunks/{chunk-LVABI4OA.js → chunk-NQIOXSHW.js} +1 -1
  90. package/dist/cli/chunks/{chunk-CSYQKVZY.js → chunk-NWYYWFUO.js} +1 -1
  91. package/dist/cli/chunks/{chunk-CCM7MBLA.js → chunk-O3PLWCCD.js} +2 -2
  92. package/dist/cli/chunks/{chunk-3DLD7OMF.js → chunk-OD5SVOVP.js} +1 -1
  93. package/dist/cli/chunks/{chunk-FDDB7QTM.js → chunk-P2ABIGYB.js} +1 -1
  94. package/dist/cli/chunks/{chunk-QTUTQLOY.js → chunk-Q4OITFDX.js} +2 -2
  95. package/dist/cli/chunks/{chunk-3GA7M5NK.js → chunk-QAZYSC3T.js} +2 -2
  96. package/dist/cli/chunks/{chunk-UPP5V7Y3.js → chunk-QCLEA3CM.js} +2 -2
  97. package/dist/cli/chunks/{chunk-ZWR4PZ4Z.js → chunk-QKOPJ5CZ.js} +2 -2
  98. package/dist/cli/chunks/{chunk-Z4YHL4JU.js → chunk-QLZPCEVI.js} +1 -1
  99. package/dist/cli/chunks/{chunk-7GGSUXVM.js → chunk-QMGXALN3.js} +2 -2
  100. package/dist/cli/chunks/{chunk-SQHM6WUF.js → chunk-QMUZMIV7.js} +3 -3
  101. package/dist/cli/chunks/{chunk-5SZLQCFP.js → chunk-QQMHE4RT.js} +2 -2
  102. package/dist/cli/chunks/{chunk-NBQW7MXF.js → chunk-RCPFDAOC.js} +1 -1
  103. package/dist/cli/chunks/{chunk-JD6KE6DJ.js → chunk-RVWGW7TI.js} +2 -2
  104. package/dist/cli/chunks/{chunk-ZJEVL5O3.js → chunk-RXXKU3VP.js} +2 -2
  105. package/dist/cli/chunks/{chunk-AZGESIFV.js → chunk-RYBFRFKY.js} +1 -1
  106. package/dist/cli/chunks/{chunk-WKQSZTU6.js → chunk-S6SRHNJV.js} +2 -2
  107. package/dist/cli/chunks/{chunk-BADBKGZE.js → chunk-SGGY4QYU.js} +2 -2
  108. package/dist/cli/chunks/{chunk-YZIOM7JL.js → chunk-SH2UPGO7.js} +2 -2
  109. package/dist/cli/chunks/{chunk-PM77Z4PR.js → chunk-SL7WTN5Z.js} +2 -2
  110. package/dist/cli/chunks/{chunk-KV6PIOHN.js → chunk-SMQ5OARZ.js} +1 -1
  111. package/dist/cli/chunks/{chunk-YQL6JH2Y.js → chunk-SYXPLFK7.js} +2 -2
  112. package/dist/cli/chunks/{chunk-6BGSH2YR.js → chunk-T3TEQH2H.js} +1 -1
  113. package/dist/cli/chunks/{chunk-YNVVRND7.js → chunk-T5MMSSSF.js} +2 -2
  114. package/dist/cli/chunks/{chunk-BY44ODHD.js → chunk-TG6P44UT.js} +4 -4
  115. package/dist/cli/chunks/{chunk-TPL3CBMS.js → chunk-TV5OVFKK.js} +1 -1
  116. package/dist/cli/chunks/{chunk-54TOOHER.js → chunk-U7RTH6F4.js} +2 -2
  117. package/dist/cli/chunks/{chunk-XTCV5UOJ.js → chunk-UABC2Z3S.js} +2 -2
  118. package/dist/cli/chunks/{chunk-I3POPZT5.js → chunk-UAE37LHP.js} +2 -2
  119. package/dist/cli/chunks/{chunk-5ROA7KOT.js → chunk-UHWRRJBH.js} +1 -1
  120. package/dist/cli/chunks/{chunk-J7BG55VG.js → chunk-UNAVOVD7.js} +3 -3
  121. package/dist/cli/chunks/{chunk-MJ7UYPGY.js → chunk-V5UB75TQ.js} +2 -2
  122. package/dist/cli/chunks/{chunk-WH7ZOJCF.js → chunk-VQI6JQQP.js} +1 -1
  123. package/dist/cli/chunks/{chunk-KYLE6ZSC.js → chunk-WALYYW6B.js} +4 -4
  124. package/dist/cli/chunks/{chunk-UFGFV4BO.js → chunk-WF6MKBRI.js} +2 -2
  125. package/dist/cli/chunks/{chunk-F7XU7KZL.js → chunk-X3NADG4S.js} +2 -2
  126. package/dist/cli/chunks/{chunk-7ZIKFJ6X.js → chunk-XJRXB5Z5.js} +2 -2
  127. package/dist/cli/chunks/{chunk-V2N7KWT7.js → chunk-Y6U4CCPP.js} +1 -1
  128. package/dist/cli/chunks/{chunk-VXQK4GKV.js → chunk-YPUDYGIU.js} +1 -1
  129. package/dist/cli/chunks/{chunk-K5NFP7B5.js → chunk-YPVPWDKL.js} +2 -2
  130. package/dist/cli/chunks/{chunk-VZO5I23B.js → chunk-Z5MG54R4.js} +1 -1
  131. package/dist/cli/chunks/{chunk-QTNDHCZ7.js → chunk-Z65DB2Z7.js} +3 -3
  132. package/dist/cli/chunks/{chunk-XSLKR2DM.js → chunk-ZBBHJGPI.js} +2 -2
  133. package/dist/cli/chunks/{chunk-RGLCMGNZ.js → chunk-ZCH5MNST.js} +2 -2
  134. package/dist/cli/chunks/{chunk-QW2RFI73.js → chunk-ZTWHRDUY.js} +2 -2
  135. package/dist/cli/chunks/{ci-LYAVZLM3.js → ci-TE3744OR.js} +2 -2
  136. package/dist/cli/chunks/{ci-output-L7TR2NCN.js → ci-output-GSNS52SY.js} +2 -2
  137. package/dist/cli/chunks/{circuit-breaker-AQOGJGKI.js → circuit-breaker-7ROW7QBW.js} +2 -2
  138. package/dist/cli/chunks/{claude-flow-setup-SO2ZN26K.js → claude-flow-setup-Z5GPMILN.js} +2 -2
  139. package/dist/cli/chunks/client-S5TFLKHN.js +2 -0
  140. package/dist/cli/chunks/{cline-installer-XCXFH4UR.js → cline-installer-6D4SAAM4.js} +2 -2
  141. package/dist/cli/chunks/{code-3Z2HMS5I.js → code-JZKH7FRS.js} +2 -2
  142. package/dist/cli/chunks/{code-index-extractor-KE362AJX.js → code-index-extractor-JJFTZLOK.js} +2 -2
  143. package/dist/cli/chunks/{codex-installer-GTD3GFTF.js → codex-installer-O5KIPN3Z.js} +2 -2
  144. package/dist/cli/chunks/{completions-EDCXRRJO.js → completions-QNMAUYKK.js} +2 -2
  145. package/dist/cli/chunks/{complexity-analyzer-QMN3V6D3.js → complexity-analyzer-JYJ7TLYE.js} +2 -2
  146. package/dist/cli/chunks/{continuedev-installer-U6HN376C.js → continuedev-installer-JYMVLG6S.js} +2 -2
  147. package/dist/cli/chunks/{copilot-installer-54PZIREM.js → copilot-installer-SSV6GF5G.js} +2 -2
  148. package/dist/cli/chunks/{cost-tracker-33O475QA.js → cost-tracker-2VZ3IMJZ.js} +2 -2
  149. package/dist/cli/chunks/{coverage-B7E545AJ.js → coverage-KW4V5D5L.js} +3 -3
  150. package/dist/cli/chunks/cross-domain-router-GZG5GU7Q.js +2 -0
  151. package/dist/cli/chunks/{cursor-installer-LKKSPZUM.js → cursor-installer-QVGDAHOI.js} +2 -2
  152. package/dist/cli/chunks/{daemon-DVOHWXUR.js → daemon-JKMFDYK2.js} +3 -3
  153. package/dist/cli/chunks/{dag-attention-scheduler-EQOHQBUG.js → dag-attention-scheduler-WKRV7DFE.js} +2 -2
  154. package/dist/cli/chunks/{detect-OCB2XT6C.js → detect-ROCCKX63.js} +2 -2
  155. package/dist/cli/chunks/{dist-node-HSG4QK4G.js → dist-node-QGU7TJTW.js} +2 -2
  156. package/dist/cli/chunks/{domain-handler-USGF4CIG.js → domain-handler-3UJHQPOR.js} +2 -2
  157. package/dist/cli/chunks/{domain-transfer-OUERZRGL.js → domain-transfer-R47ISVU5.js} +2 -2
  158. package/dist/cli/chunks/dream-PGYTIOQS.js +2 -0
  159. package/dist/cli/chunks/embed-and-insert-pattern-ZVK7WSY2.js +3 -0
  160. package/dist/cli/chunks/{eval-LHYXXWFK.js → eval-WNZWXFOW.js} +2 -2
  161. package/dist/cli/chunks/{fast-paths-UTK7BN63.js → fast-paths-QPF47RZJ.js} +2 -2
  162. package/dist/cli/chunks/{feature-flags-XB6ALB3X.js → feature-flags-2MAHHM66.js} +2 -2
  163. package/dist/cli/chunks/{feature-flags-XEP6B4GN.js → feature-flags-PGIG2W3G.js} +2 -2
  164. package/dist/cli/chunks/{file-discovery-O4DUCNHK.js → file-discovery-JL6FCXRB.js} +2 -2
  165. package/dist/cli/chunks/{fleet-37NGGRJI.js → fleet-LMBZU2GU.js} +3 -3
  166. package/dist/cli/chunks/{gnn-wrapper-5E7T3IQX.js → gnn-wrapper-GFNFVEER.js} +2 -2
  167. package/dist/cli/chunks/{heartbeat-handler-Q44PCI7K.js → heartbeat-handler-YN7ES3AX.js} +4 -4
  168. package/dist/cli/chunks/{heartbeat-scheduler-6JPB2AQS.js → heartbeat-scheduler-SII2KJSQ.js} +2 -2
  169. package/dist/cli/chunks/hnsw-adapter-ANJKCXK6.js +2 -0
  170. package/dist/cli/chunks/hnsw-index-D4CJEP7L.js +2 -0
  171. package/dist/cli/chunks/{hnsw-legacy-bridge-B55GGQYA.js → hnsw-legacy-bridge-CPMBYE7C.js} +2 -2
  172. package/dist/cli/chunks/{hnswlib-node-B3D2XIL5.js → hnswlib-node-NWNBNU3W.js} +2 -2
  173. package/dist/cli/chunks/hooks-EYSB7XDW.js +225 -0
  174. package/dist/cli/chunks/{hybrid-router-RV34PYQD.js → hybrid-router-BR7O6WT2.js} +2 -2
  175. package/dist/cli/chunks/{hypergraph-engine-FT5YK5RF.js → hypergraph-engine-HAKGWDYX.js} +2 -2
  176. package/dist/cli/chunks/{hypergraph-handler-EUS6MIYW.js → hypergraph-handler-UCI3LXUF.js} +3 -3
  177. package/dist/cli/chunks/impact-analyzer-55JW3OK6.js +2 -0
  178. package/dist/cli/chunks/{init-handler-3MV32TKZ.js → init-handler-7RYGU3W5.js} +6 -6
  179. package/dist/cli/chunks/init-wizard-MWKJNVB2.js +2 -0
  180. package/dist/cli/chunks/kernel-5MKKDS4J.js +2 -0
  181. package/dist/cli/chunks/{kilocode-installer-RZPRXQI2.js → kilocode-installer-W6ITMEFA.js} +2 -2
  182. package/dist/cli/chunks/{kiro-installer-BGDBNZHI.js → kiro-installer-2BO34D3O.js} +2 -2
  183. package/dist/cli/chunks/knowledge-graph-2A7AE7L7.js +2 -0
  184. package/dist/cli/chunks/{learning-KNEBWLEZ.js → learning-GEXYG72Z.js} +3 -3
  185. package/dist/cli/chunks/{llm-router-Q2VQPOQ3.js → llm-router-EGHA5YOC.js} +4 -4
  186. package/dist/cli/chunks/{load-RL53SYBD.js → load-VU2OOAEF.js} +2 -2
  187. package/dist/cli/chunks/load-test-UD4ZXCGG.js +2 -0
  188. package/dist/cli/chunks/{mcp-GTINFFUF.js → mcp-NVQFFQ2R.js} +2 -2
  189. package/dist/cli/chunks/{memory-STPMUUAK.js → memory-JNXMKTZQ.js} +5 -5
  190. package/dist/cli/chunks/memory-backend-X3Z4IAYG.js +2 -0
  191. package/dist/cli/chunks/{memory-handlers-LWX3LPVF.js → memory-handlers-NLGQ5I7K.js} +2 -2
  192. package/dist/cli/chunks/{multi-model-executor-36ZYYDA6.js → multi-model-executor-SG6OME2A.js} +2 -2
  193. package/dist/cli/chunks/{opencode-installer-KTCQKS2K.js → opencode-installer-AY4JCZIM.js} +2 -2
  194. package/dist/cli/chunks/{orchestrator-6EGOOXQG.js → orchestrator-GWI7HQG6.js} +6 -6
  195. package/dist/cli/chunks/{pipeline-WSLAIOYC.js → pipeline-7T6IAMC7.js} +2 -2
  196. package/dist/cli/chunks/{platform-MNUN663B.js → platform-IXUST66M.js} +2 -2
  197. package/dist/cli/chunks/{plugin-PLDTG4A2.js → plugin-PW7F6MVH.js} +2 -2
  198. package/dist/cli/chunks/{prime-radiant-advanced-wasm-B4UFONWB.js → prime-radiant-advanced-wasm-BUAZHZCM.js} +2 -2
  199. package/dist/cli/chunks/protocol-executor-AB6KPFK5.js +2 -0
  200. package/dist/cli/chunks/{protocol-handler-VAVLLAI2.js → protocol-handler-6746OC4P.js} +2 -2
  201. package/dist/cli/chunks/{prove-WVNPDWUC.js → prove-VYV5DQGC.js} +2 -2
  202. package/dist/cli/chunks/{provider-manager-VJF4D6AW.js → provider-manager-GEO3CUOO.js} +3 -3
  203. package/dist/cli/chunks/qe-reasoning-bank-Y4IDDIYA.js +2 -0
  204. package/dist/cli/chunks/{quality-LTMHVQBG.js → quality-4XXENNNW.js} +2 -2
  205. package/dist/cli/chunks/queen-coordinator-GBSTXGA2.js +2 -0
  206. package/dist/cli/chunks/{real-embeddings-6ACQACTM.js → real-embeddings-ZVEZVXVT.js} +2 -2
  207. package/dist/cli/chunks/{roocode-installer-T5ZWC3SS.js → roocode-installer-ZRNDOIDL.js} +2 -2
  208. package/dist/cli/chunks/router-JA2X4MF6.js +2 -0
  209. package/dist/cli/chunks/routing-feedback-YCVJIWFM.js +2 -0
  210. package/dist/cli/chunks/{routing-handler-Y2O2I2HM.js → routing-handler-MPSJ7DDI.js} +2 -2
  211. package/dist/cli/chunks/{ruvector-commands-F2V36B4W.js → ruvector-commands-V4BVCY2U.js} +2 -2
  212. package/dist/cli/chunks/{rvf-dual-writer-R6CNMPQD.js → rvf-dual-writer-X4VNU5KH.js} +2 -2
  213. package/dist/cli/chunks/{rvf-migration-adapter-IDVOB3LN.js → rvf-migration-adapter-KOYYJSNH.js} +2 -2
  214. package/dist/cli/chunks/{rvf-migration-coordinator-VM4AMFZG.js → rvf-migration-coordinator-SF5IBKTK.js} +2 -2
  215. package/dist/cli/chunks/rvf-native-adapter-5YN7EEB5.js +2 -0
  216. package/dist/cli/chunks/safe-db-S46Y7IC5.js +2 -0
  217. package/dist/cli/chunks/schedule-KSDHFWSY.js +2 -0
  218. package/dist/cli/chunks/scheduler-PLFJHU54.js +2 -0
  219. package/dist/cli/chunks/{security-WQ7YMR6M.js → security-AA5GBNNU.js} +3 -3
  220. package/dist/cli/chunks/shared-rvf-adapter-MLXVW4N6.js +2 -0
  221. package/dist/cli/chunks/{shared-rvf-dual-writer-HYI64CBX.js → shared-rvf-dual-writer-EGP3BYIY.js} +2 -2
  222. package/dist/cli/chunks/sqlite-persistence-RK3JWKB4.js +2 -0
  223. package/dist/cli/chunks/{status-handler-BH2WCMPA.js → status-handler-ARHPRXJ4.js} +2 -2
  224. package/dist/cli/chunks/{structural-health-XWX6FKVF.js → structural-health-IDV4RBZV.js} +2 -2
  225. package/dist/cli/chunks/{sync-PRDGCHE2.js → sync-7BRLSLDG.js} +2 -2
  226. package/dist/cli/chunks/{task-handler-YFHFBMHO.js → task-handler-XY42QA3K.js} +2 -2
  227. package/dist/cli/chunks/task-handlers-QEHOKEJC.js +9 -0
  228. package/dist/cli/chunks/{test-ZBTQ4Z66.js → test-TQIHDBEX.js} +4 -4
  229. package/dist/cli/chunks/{test-scheduling-F47Y3KNO.js → test-scheduling-BBVOLGFT.js} +3 -3
  230. package/dist/cli/chunks/{token-bootstrap-XOGAEQPG.js → token-bootstrap-BUHTWVEF.js} +2 -2
  231. package/dist/cli/chunks/{token-usage-2KZ7WE5J.js → token-usage-MRVQ7G3H.js} +2 -2
  232. package/dist/cli/chunks/{transformers-KCJ7PWZ4.js → transformers-3PFLFSWR.js} +2 -2
  233. package/dist/cli/chunks/{tree-sitter-wasm-parser-H6DL2DFA.js → tree-sitter-wasm-parser-6GDZQNFV.js} +2 -2
  234. package/dist/cli/chunks/{types-633TMIO3.js → types-F2LWFMRI.js} +2 -2
  235. package/dist/cli/chunks/unified-memory-JVZZMZRE.js +2 -0
  236. package/dist/cli/chunks/unified-memory-hnsw-EJJHCMFR.js +2 -0
  237. package/dist/cli/chunks/unified-persistence-IEKOYCBL.js +2 -0
  238. package/dist/cli/chunks/{upgrade-CH742GRF.js → upgrade-N676MSDA.js} +2 -2
  239. package/dist/cli/chunks/{validate-44WH3CKE.js → validate-56AA6YYM.js} +2 -2
  240. package/dist/cli/chunks/{validate-swarm-W2A7CUM7.js → validate-swarm-YPHV7MMC.js} +2 -2
  241. package/dist/cli/chunks/{vibium-B25MIEBK.js → vibium-ABPFT3DX.js} +2 -2
  242. package/dist/cli/chunks/visual-security-APS7K3TZ.js +2 -0
  243. package/dist/cli/chunks/{web-tree-sitter-B54K47HF.js → web-tree-sitter-KN4PWKMV.js} +2 -2
  244. package/dist/cli/chunks/{windsurf-installer-EWL7COTI.js → windsurf-installer-IZOJBDNN.js} +2 -2
  245. package/dist/cli/chunks/witness-chain-DMHO7R75.js +2 -0
  246. package/dist/cli/chunks/{witness-chain-DWNP7VR6.js → witness-chain-H2DM5WMB.js} +2 -2
  247. package/dist/cli/chunks/{workflow-LT2J7U23.js → workflow-R42PK45F.js} +4 -4
  248. package/dist/cli/chunks/workflow-orchestrator-BDHRNVOG.js +2 -0
  249. package/dist/cli/chunks/{wrappers-OAZ6MKXO.js → wrappers-6TIJNWN4.js} +2 -2
  250. package/dist/cli/commands/hooks-handlers/command-hooks.js +104 -11
  251. package/dist/cli/commands/hooks-handlers/hooks-dream-learning.d.ts +98 -0
  252. package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +339 -1
  253. package/dist/cli/commands/hooks-handlers/hooks-shared.d.ts +20 -1
  254. package/dist/cli/commands/hooks-handlers/hooks-shared.js +35 -3
  255. package/dist/cli/commands/hooks-handlers/routing-hooks.js +15 -5
  256. package/dist/cli/commands/hooks-handlers/task-hooks.js +216 -5
  257. package/dist/cli/commands/init.js +3 -1
  258. package/dist/coordination/consensus/providers/claude-provider.js +1 -1
  259. package/dist/coordination/task-executor.js +11 -2
  260. package/dist/init/phases/07-hooks.js +2 -2
  261. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +82 -0
  262. package/dist/integrations/ruvector/hypergraph-engine.js +63 -4
  263. package/dist/integrations/ruvector/hypergraph-schema.d.ts +6 -2
  264. package/dist/learning/dream/dream-engine.js +8 -0
  265. package/dist/learning/embed-and-insert-pattern.d.ts +36 -0
  266. package/dist/learning/embed-and-insert-pattern.js +52 -0
  267. package/dist/learning/pattern-store.d.ts +8 -0
  268. package/dist/learning/pattern-store.js +66 -43
  269. package/dist/mcp/bundle.js +372 -357
  270. package/dist/mcp/entry.js +36 -1
  271. package/dist/mcp/handlers/core-handlers.js +2 -2
  272. package/dist/mcp/handlers/task-handlers.js +45 -0
  273. package/dist/mcp/handlers/trajectory-judge.d.ts +13 -0
  274. package/dist/mcp/handlers/trajectory-judge.js +100 -0
  275. package/dist/shared/llm/providers/claude.js +1 -1
  276. package/dist/workers/workers/learning-consolidation.js +6 -1
  277. package/package.json +1 -1
  278. package/dist/cli/chunks/adapter-C7AKAAPC.js +0 -2
  279. package/dist/cli/chunks/aqe-learning-engine-7P3AXQNO.js +0 -2
  280. package/dist/cli/chunks/base-GIDVLEPA.js +0 -2
  281. package/dist/cli/chunks/browser-workflow-DAUS4Z5V.js +0 -2
  282. package/dist/cli/chunks/chunk-4XYQJ4LQ.js +0 -2
  283. package/dist/cli/chunks/chunk-NKOLFLXF.js +0 -66
  284. package/dist/cli/chunks/chunk-RHYGRUNU.js +0 -24
  285. package/dist/cli/chunks/client-LIKTMSIP.js +0 -2
  286. package/dist/cli/chunks/cross-domain-router-SSBT32Q3.js +0 -2
  287. package/dist/cli/chunks/dream-FAHB6BWB.js +0 -2
  288. package/dist/cli/chunks/hnsw-adapter-GQM3ONQE.js +0 -2
  289. package/dist/cli/chunks/hnsw-index-XF3NY4R4.js +0 -2
  290. package/dist/cli/chunks/hooks-MOBQSJLJ.js +0 -101
  291. package/dist/cli/chunks/impact-analyzer-V6PBIMZH.js +0 -2
  292. package/dist/cli/chunks/init-wizard-7ROJWLEO.js +0 -2
  293. package/dist/cli/chunks/kernel-AOUBGDXU.js +0 -2
  294. package/dist/cli/chunks/knowledge-graph-SJA3YGMQ.js +0 -2
  295. package/dist/cli/chunks/load-test-NSHIGHCV.js +0 -2
  296. package/dist/cli/chunks/memory-backend-SZAYMQVP.js +0 -2
  297. package/dist/cli/chunks/protocol-executor-22KKAYX2.js +0 -2
  298. package/dist/cli/chunks/qe-reasoning-bank-N7ZXOAEN.js +0 -2
  299. package/dist/cli/chunks/queen-coordinator-BC54OCHH.js +0 -2
  300. package/dist/cli/chunks/router-YTQZRTIB.js +0 -2
  301. package/dist/cli/chunks/routing-feedback-AASAMEUY.js +0 -2
  302. package/dist/cli/chunks/rvf-native-adapter-VHIHJOPA.js +0 -2
  303. package/dist/cli/chunks/safe-db-NVEBL662.js +0 -2
  304. package/dist/cli/chunks/schedule-KVUFE56T.js +0 -2
  305. package/dist/cli/chunks/scheduler-6GRLJZ2A.js +0 -2
  306. package/dist/cli/chunks/shared-rvf-adapter-XORIDF3Q.js +0 -2
  307. package/dist/cli/chunks/sqlite-persistence-25TDMX6G.js +0 -2
  308. package/dist/cli/chunks/task-handlers-4OQRADMG.js +0 -2
  309. package/dist/cli/chunks/unified-memory-BTX45KY5.js +0 -2
  310. package/dist/cli/chunks/unified-memory-hnsw-MMHMQ4CP.js +0 -2
  311. package/dist/cli/chunks/unified-persistence-GA7HKYZC.js +0 -2
  312. package/dist/cli/chunks/visual-security-HPF5HCYF.js +0 -2
  313. package/dist/cli/chunks/witness-chain-LROQLFND.js +0 -2
  314. package/dist/cli/chunks/workflow-orchestrator-VFRKGG5Y.js +0 -2
package/dist/mcp/entry.js CHANGED
@@ -207,10 +207,45 @@ async function main() {
207
207
  version,
208
208
  });
209
209
  originalStderrWrite('[MCP] Ready\n');
210
+ // Eagerly initialize CrossPhaseHooks so kv_store / qcsd-memory rows
211
+ // actually grow under sustained queen-event-handlers traffic. The lazy
212
+ // singleton in hooks/cross-phase-hooks.ts is created on first use, but
213
+ // its initialize() (config-load + memory wiring) only runs when
214
+ // explicitly called. Doing it here means hook events fire through a
215
+ // fully-initialized executor from the first MCP request.
216
+ try {
217
+ const { getCrossPhaseHookExecutor } = await import('../hooks/cross-phase-hooks.js');
218
+ await getCrossPhaseHookExecutor().initialize();
219
+ originalStderrWrite('[MCP] CrossPhaseHooks initialized (eager init via patch 010)\n');
220
+ }
221
+ catch (cpErr) {
222
+ originalStderrWrite(`[MCP] WARNING: CrossPhaseHooks eager init failed: ${cpErr instanceof Error ? cpErr.message : 'unknown'}\n`);
223
+ }
224
+ // Pre-warm ReasoningBankService so HNSW A is populated before the first
225
+ // task_orchestrate arrives. Fire-and-forget: getReasoningBankService()
226
+ // builds the singleton + EnhancedReasoningBankAdapter.initialize() +
227
+ // HNSW A index population. Without this, the first task_orchestrate pays
228
+ // the cold-start cost and routing falls through to context-only matches.
229
+ void (async () => {
230
+ try {
231
+ const { getReasoningBankService } = await import('./services/reasoning-bank-service.js');
232
+ await getReasoningBankService();
233
+ originalStderrWrite('[MCP] ReasoningBank prewarmed\n');
234
+ }
235
+ catch (rbErr) {
236
+ originalStderrWrite(`[MCP] WARNING: ReasoningBank prewarm failed: ${rbErr instanceof Error ? rbErr.message : 'unknown'}\n`);
237
+ }
238
+ })();
210
239
  // IMP-10: Start background workers (heartbeat scheduler, etc.)
211
240
  try {
212
241
  const { getDaemon } = await import('../workers/daemon.js');
213
- const daemon = getDaemon({ autoStart: false });
242
+ // ADR-001 Bug A fix: use the canonical getDaemon() default. Passing
243
+ // `{ autoStart: false }` here would neuter workerManager.startAll() —
244
+ // the only call path that schedules per-worker setInterval timers, so
245
+ // workers would register but never tick. DEFAULT_CONFIG.autoStart=true
246
+ // (workers/daemon.ts) is the contracted default; matches the
247
+ // shutdownDaemon() call site above.
248
+ const daemon = getDaemon();
214
249
  await daemon.start();
215
250
  const status = daemon.getStatus();
216
251
  originalStderrWrite(`[MCP] Background workers started (${status.workerManager.totalWorkers} workers)\n`);
@@ -472,8 +472,8 @@ export async function handleAQEHealth() {
472
472
  const hnswEnabled = process.env.AQE_V3_HNSW_ENABLED === 'true';
473
473
  hnswStats.enabled = hnswEnabled;
474
474
  const memAny = mem;
475
- if (hnswEnabled && typeof memAny.getVectorCount === 'function') {
476
- hnswStats.vectorCount = await memAny.getVectorCount();
475
+ if (hnswEnabled && typeof memAny.vectorCount === 'function') {
476
+ hnswStats.vectorCount = await memAny.vectorCount();
477
477
  }
478
478
  }
479
479
  catch {
@@ -8,6 +8,7 @@
8
8
  import { getFleetState, isFleetInitialized } from './core-handlers';
9
9
  import { getTaskRouter, } from '../services/task-router';
10
10
  import { getReasoningBankService, startTaskTrajectory, endTaskTrajectory, } from '../services/reasoning-bank-service';
11
+ import { scoreUnjudgedTrajectories } from './trajectory-judge.js';
11
12
  import { toErrorMessage } from '../../shared/error-utils.js';
12
13
  // ============================================================================
13
14
  // Task Type to Workflow Mapping (Issue #206)
@@ -224,6 +225,16 @@ export async function handleTaskOrchestrate(params) {
224
225
  // INTEGRATION FIX: Get ReasoningBank guidance for the task
225
226
  const reasoningBankService = await getReasoningBankService();
226
227
  const experienceGuidance = await reasoningBankService.getExperienceGuidance(params.task, params.context?.project);
228
+ // Bring HNSW A (qe_patterns) into the routing decision alongside HNSW C
229
+ // (experienceGuidance). Without this, only past trajectories influenced
230
+ // routing — the catalog of consolidated long-term patterns was never
231
+ // consulted for new tasks. Fail-soft: empty array on error.
232
+ const patternHintMatches = await reasoningBankService
233
+ .searchPatterns(params.task, {
234
+ limit: 5,
235
+ domain: params.context?.project ?? inferredDomain,
236
+ })
237
+ .catch(() => []);
227
238
  // Parse task description to determine task type
228
239
  const taskType = inferTaskType(params.task);
229
240
  const priority = mapPriority(params.priority || 'medium');
@@ -254,6 +265,19 @@ export async function handleTaskOrchestrate(params) {
254
265
  executionStrategy: routingResult.executionStrategy,
255
266
  complexity: routingResult.decision.complexityAnalysis.overall,
256
267
  },
268
+ // HNSW A pattern hints (mirrors the submitTask payload below); the
269
+ // workflow branch routes through executeWorkflow, so the same catalog
270
+ // of consolidated long-term patterns should reach it.
271
+ patternHints: patternHintMatches.length > 0
272
+ ? patternHintMatches.map(p => ({
273
+ patternId: p.id,
274
+ name: p.name,
275
+ description: p.description,
276
+ confidence: p.confidence,
277
+ similarity: p.qualityScore,
278
+ canReuse: p.tier === 'long-term',
279
+ }))
280
+ : undefined,
257
281
  };
258
282
  const workflowResult = await workflowOrchestrator.executeWorkflow(workflowId, workflowInput);
259
283
  if (!workflowResult.success) {
@@ -325,6 +349,17 @@ export async function handleTaskOrchestrate(params) {
325
349
  confidence: experienceGuidance.confidence,
326
350
  tokenSavings: experienceGuidance.estimatedTokenSavings,
327
351
  } : undefined,
352
+ // HNSW A pattern hints for the executing agent
353
+ patternHints: patternHintMatches.length > 0
354
+ ? patternHintMatches.map(p => ({
355
+ patternId: p.id,
356
+ name: p.name,
357
+ description: p.description,
358
+ confidence: p.confidence,
359
+ similarity: p.qualityScore,
360
+ canReuse: p.tier === 'long-term',
361
+ }))
362
+ : undefined,
328
363
  },
329
364
  timeout: 600000, // 10 minutes for orchestrated tasks
330
365
  });
@@ -343,6 +378,16 @@ export async function handleTaskOrchestrate(params) {
343
378
  // Issue N1: Trajectory auto-close is handled by subscribeTrajectoryEvents(),
344
379
  // which listens for TaskCompleted/TaskFailed on the event router.
345
380
  // No per-task polling needed.
381
+ // Trajectory judge: opt-in LLM scoring of recent unscored trajectories.
382
+ // Hook-created rows in qe_trajectories never receive feedback unless
383
+ // something goes back and judges them. This catches up by scoring ≤5
384
+ // rows per task_orchestrate call. Opt-in (AQE_TRAJECTORY_JUDGE=1)
385
+ // because it makes paid LLM calls.
386
+ if (process.env.AQE_TRAJECTORY_JUDGE === '1' && process.env.ANTHROPIC_API_KEY) {
387
+ void scoreUnjudgedTrajectories().catch(err => {
388
+ console.warn('[TrajectoryJudge] failed:', err instanceof Error ? err.message : err);
389
+ });
390
+ }
346
391
  return {
347
392
  success: true,
348
393
  data: {
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Trajectory Judge — opt-in LLM scoring of unscored qe_trajectories rows.
3
+ *
4
+ * Picks ≤5 rows where feedback IS NULL AND ended_at IS NOT NULL, asks Claude
5
+ * Haiku to score them, and writes a structured feedback JSON back into
6
+ * qe_trajectories.feedback. Quality is embedded in the feedback JSON since
7
+ * the canonical schema has no `quality` column.
8
+ *
9
+ * Uses the proxy-aware path from patch 380 (ANTHROPIC_BASE_URL) so this honors
10
+ * any local proxy in front of api.anthropic.com.
11
+ */
12
+ export declare function scoreUnjudgedTrajectories(): Promise<void>;
13
+ //# sourceMappingURL=trajectory-judge.d.ts.map
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Trajectory Judge — opt-in LLM scoring of unscored qe_trajectories rows.
3
+ *
4
+ * Picks ≤5 rows where feedback IS NULL AND ended_at IS NOT NULL, asks Claude
5
+ * Haiku to score them, and writes a structured feedback JSON back into
6
+ * qe_trajectories.feedback. Quality is embedded in the feedback JSON since
7
+ * the canonical schema has no `quality` column.
8
+ *
9
+ * Uses the proxy-aware path from patch 380 (ANTHROPIC_BASE_URL) so this honors
10
+ * any local proxy in front of api.anthropic.com.
11
+ */
12
+ import { getUnifiedMemory } from '../../kernel/unified-memory.js';
13
+ const MODEL_ID = 'claude-haiku-4-5-20251001';
14
+ const MAX_TOKENS = 200;
15
+ const BATCH_SIZE = 5;
16
+ export async function scoreUnjudgedTrajectories() {
17
+ const apiKey = process.env.ANTHROPIC_API_KEY;
18
+ if (!apiKey)
19
+ return;
20
+ const baseUrl = (process.env.ANTHROPIC_BASE_URL ?? 'https://api.anthropic.com').replace(/\/$/, '');
21
+ const um = getUnifiedMemory();
22
+ if (!um.isInitialized())
23
+ return;
24
+ const db = um.getDatabase();
25
+ // Verify the feedback column exists (TrajectoryTracker.ensureSchema() adds it
26
+ // lazily — it may not have run yet on a fresh install).
27
+ const cols = db.prepare('PRAGMA table_info(qe_trajectories)').all();
28
+ if (!cols.some(c => c.name === 'feedback'))
29
+ return;
30
+ const rows = db.prepare(`
31
+ SELECT id, task, agent, domain, success
32
+ FROM qe_trajectories
33
+ WHERE feedback IS NULL AND ended_at IS NOT NULL
34
+ ORDER BY ended_at DESC
35
+ LIMIT ?
36
+ `).all(BATCH_SIZE);
37
+ if (rows.length === 0)
38
+ return;
39
+ const updateStmt = db.prepare(`UPDATE qe_trajectories SET feedback = ? WHERE id = ?`);
40
+ for (const row of rows) {
41
+ try {
42
+ const verdict = await scoreTrajectory(row, apiKey, baseUrl);
43
+ if (verdict) {
44
+ updateStmt.run(JSON.stringify(verdict), row.id);
45
+ }
46
+ }
47
+ catch {
48
+ // Skip this row; another task_orchestrate call will retry it
49
+ }
50
+ }
51
+ }
52
+ async function scoreTrajectory(row, apiKey, baseUrl) {
53
+ const prompt = [
54
+ `You are a quality engineering judge scoring a completed task trajectory.`,
55
+ ``,
56
+ `Task: ${row.task.slice(0, 400)}`,
57
+ `Agent: ${row.agent ?? 'unknown'}`,
58
+ `Domain: ${row.domain ?? 'general'}`,
59
+ `Outcome: ${row.success ? 'success' : 'failure'}`,
60
+ ``,
61
+ `Respond ONLY with JSON: {"quality": 0..1, "reasoning": "≤120 chars", "improvement": "≤120 chars or omit"}.`,
62
+ ].join('\n');
63
+ const response = await fetch(`${baseUrl}/v1/messages`, {
64
+ method: 'POST',
65
+ headers: {
66
+ 'content-type': 'application/json',
67
+ 'x-api-key': apiKey,
68
+ 'anthropic-version': '2023-06-01',
69
+ },
70
+ body: JSON.stringify({
71
+ model: MODEL_ID,
72
+ max_tokens: MAX_TOKENS,
73
+ messages: [{ role: 'user', content: prompt }],
74
+ }),
75
+ });
76
+ if (!response.ok)
77
+ return null;
78
+ const body = await response.json();
79
+ const text = body.content?.[0]?.text;
80
+ if (!text)
81
+ return null;
82
+ // Tolerate fenced code blocks
83
+ const jsonMatch = text.match(/\{[\s\S]*\}/);
84
+ if (!jsonMatch)
85
+ return null;
86
+ try {
87
+ const parsed = JSON.parse(jsonMatch[0]);
88
+ if (typeof parsed.quality !== 'number' || typeof parsed.reasoning !== 'string')
89
+ return null;
90
+ return {
91
+ quality: Math.max(0, Math.min(1, parsed.quality)),
92
+ reasoning: parsed.reasoning.slice(0, 200),
93
+ improvement: typeof parsed.improvement === 'string' ? parsed.improvement.slice(0, 200) : undefined,
94
+ };
95
+ }
96
+ catch {
97
+ return null;
98
+ }
99
+ }
100
+ //# sourceMappingURL=trajectory-judge.js.map
@@ -271,7 +271,7 @@ export class ClaudeProvider {
271
271
  * Get base URL
272
272
  */
273
273
  getBaseUrl() {
274
- return (this.config.baseUrl ?? 'https://api.anthropic.com').replace(/\/$/, '');
274
+ return (this.config.baseUrl ?? process.env.ANTHROPIC_BASE_URL ?? 'https://api.anthropic.com').replace(/\/$/, '');
275
275
  }
276
276
  /**
277
277
  * Get request headers
@@ -299,6 +299,7 @@ export class LearningConsolidationWorker extends BaseWorker {
299
299
  try {
300
300
  const { v4: uuidv4 } = await import('uuid');
301
301
  const patternId = uuidv4();
302
+ const description = `Auto-extracted pattern from ${candidate.sourceExperiences} experiences. Avg reward: ${candidate.avgReward.toFixed(3)}`;
302
303
  db.prepare(`
303
304
  INSERT INTO qe_patterns (
304
305
  id, pattern_type, qe_domain, domain, name, description,
@@ -306,7 +307,7 @@ export class LearningConsolidationWorker extends BaseWorker {
306
307
  template_json, context_json, created_at, successful_uses
307
308
  ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'), ?)
308
309
  `).run(patternId, candidate.patternType, candidate.domain, candidate.domain, // AQE domain same as QE domain
309
- candidate.name, `Auto-extracted pattern from ${candidate.sourceExperiences} experiences. Avg reward: ${candidate.avgReward.toFixed(3)}`, candidate.confidence, candidate.sourceExperiences, candidate.successRate, candidate.confidence * 0.3 + (Math.min(candidate.sourceExperiences, 100) / 100) * 0.2 + candidate.successRate * 0.5, 'short-term', JSON.stringify({
310
+ candidate.name, description, candidate.confidence, candidate.sourceExperiences, candidate.successRate, candidate.confidence * 0.3 + (Math.min(candidate.sourceExperiences, 100) / 100) * 0.2 + candidate.successRate * 0.5, 'short-term', JSON.stringify({
310
311
  type: 'workflow',
311
312
  content: candidate.templateContent,
312
313
  variables: [],
@@ -315,6 +316,10 @@ export class LearningConsolidationWorker extends BaseWorker {
315
316
  sourceType: 'experience-extraction',
316
317
  extractedAt: new Date().toISOString(),
317
318
  }), Math.round(candidate.sourceExperiences * candidate.successRate));
319
+ // Pair the qe_patterns row with an embedding so HNSW pattern recall
320
+ // doesn't see this as a "ghost" (ADR-058 embedding-locality). Fail-soft.
321
+ const { ensurePatternEmbedding } = await import('../../learning/embed-and-insert-pattern.js');
322
+ await ensurePatternEmbedding(db, patternId, candidate.name, description, candidate.actions);
318
323
  created++;
319
324
  }
320
325
  catch (error) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-qe",
3
- "version": "3.9.18",
3
+ "version": "3.9.20",
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",
@@ -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.9.18");process.exit(0)}
2
- import{a,b,c}from"./chunk-BGSYFAEJ.js";import"./chunk-4ELLGWTS.js";import"./chunk-Z4YHL4JU.js";import"./chunk-6ZMQL3U6.js";import"./chunk-UNPTSPAO.js";import"./chunk-FKNYOKIK.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.9.18");process.exit(0)}
2
- import{a,b,c,d,e,f}from"./chunk-RHYGRUNU.js";import"./chunk-6IBFYVLK.js";import"./chunk-SQHM6WUF.js";import"./chunk-EZN7QMOZ.js";import"./chunk-JZTB35EQ.js";import"./chunk-VZO5I23B.js";import"./chunk-G2H4W7NN.js";import"./chunk-JMK5OCWL.js";import"./chunk-X2T4TI7D.js";import"./chunk-QW2RFI73.js";import"./chunk-BADBKGZE.js";import"./chunk-3GA7M5NK.js";import"./chunk-D7SS56EG.js";import"./chunk-RPT7HCMH.js";import"./chunk-AGPZVE6B.js";import"./chunk-4XYQJ4LQ.js";import"./chunk-6KTF7QB3.js";import"./chunk-6ZMQL3U6.js";import"./chunk-TPL3CBMS.js";import"./chunk-UNPTSPAO.js";import"./chunk-LVABI4OA.js";import"./chunk-UFGFV4BO.js";import"./chunk-MBGWDELE.js";import"./chunk-IS2PMHB5.js";import"./chunk-QGSELG75.js";import"./chunk-ZURHHRSA.js";import"./chunk-DOSDUAVZ.js";import"./chunk-TFUWIKGZ.js";import"./chunk-JBW2A2O6.js";import"./chunk-FTIHPDWV.js";import"./chunk-FKNYOKIK.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.9.18");process.exit(0)}
2
- import{a,b,c,d,e,f}from"./chunk-RI3NTZ2I.js";import"./chunk-XSLKR2DM.js";import"./chunk-RPT7HCMH.js";import"./chunk-AGPZVE6B.js";import"./chunk-4XYQJ4LQ.js";import"./chunk-6KTF7QB3.js";import"./chunk-6ZMQL3U6.js";import"./chunk-UNPTSPAO.js";import"./chunk-LVABI4OA.js";import"./chunk-UFGFV4BO.js";import"./chunk-MBGWDELE.js";import"./chunk-IS2PMHB5.js";import"./chunk-QGSELG75.js";import"./chunk-ZURHHRSA.js";import"./chunk-DOSDUAVZ.js";import"./chunk-TFUWIKGZ.js";import"./chunk-JBW2A2O6.js";import"./chunk-FTIHPDWV.js";import"./chunk-FKNYOKIK.js";export{f as MCPToolBase,e as defaultToolLogger,d as getMemoryBackend,b as getSharedMemoryBackend,a as registerRvfResetFn,c as resetSharedMemoryBackend};
@@ -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.9.18");process.exit(0)}
2
- import{a}from"./chunk-CCM7MBLA.js";import"./chunk-RI3NTZ2I.js";import"./chunk-XSLKR2DM.js";import"./chunk-RPT7HCMH.js";import"./chunk-AGPZVE6B.js";import"./chunk-4XYQJ4LQ.js";import"./chunk-6KTF7QB3.js";import"./chunk-6ZMQL3U6.js";import"./chunk-UNPTSPAO.js";import"./chunk-LVABI4OA.js";import"./chunk-UFGFV4BO.js";import"./chunk-MBGWDELE.js";import"./chunk-IS2PMHB5.js";import"./chunk-QGSELG75.js";import"./chunk-ZURHHRSA.js";import"./chunk-DOSDUAVZ.js";import"./chunk-TFUWIKGZ.js";import"./chunk-JBW2A2O6.js";import"./chunk-FTIHPDWV.js";import"./chunk-FKNYOKIK.js";export{a as BrowserWorkflowTool};
@@ -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.9.18");process.exit(0)}
2
- import{a as e,b as g,e as r}from"./chunk-6KTF7QB3.js";import{c as o}from"./chunk-FKNYOKIK.js";var L=o(()=>{"use strict";e();g();r()});export{L as a};
@@ -1,66 +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.9.18");process.exit(0)}
2
- import{a as I,b as H,c as C,e as S,f as L}from"./chunk-AGPZVE6B.js";import{b as T,d as P}from"./chunk-6ZMQL3U6.js";import{a as f,c as O}from"./chunk-UNPTSPAO.js";import{i as x}from"./chunk-LVABI4OA.js";L();P();var v=["function","module","test","file","class"],w=["calls","imports","tests","depends_on","covers"],E=class{ensureSchema(e){e.transaction(()=>{e.exec(I),e.exec(H),e.exec(C)})()}schemaExists(e){return S(e)}getNodeTypes(){return v}getEdgeTypes(){return w}isValidNodeType(e){return v.includes(e)}isValidEdgeType(e){return w.includes(e)}getStats(e){if(!this.schemaExists(e))return{nodeCount:0,edgeCount:0};let t=e.prepare("SELECT COUNT(*) as count FROM hypergraph_nodes").get().count,r=e.prepare("SELECT COUNT(*) as count FROM hypergraph_edges").get().count;return{nodeCount:t,edgeCount:r}}dropSchema(e){let t=e.prepare("SELECT COUNT(*) as cnt FROM hypergraph_nodes").get()?.cnt??0,r=e.prepare("SELECT COUNT(*) as cnt FROM hypergraph_edges").get()?.cnt??0;if(t>0||r>0)throw new Error(`REFUSING to drop hypergraph schema: tables contain data (${t} nodes, ${r} edges). Backup and manually drop if needed.`);e.transaction(()=>{e.exec("DROP TABLE IF EXISTS hypergraph_edges"),e.exec("DROP TABLE IF EXISTS hypergraph_nodes")})()}};function N(n){return{id:n.id,type:n.type,name:n.name,file_path:n.filePath??null,line_start:n.lineStart??null,line_end:n.lineEnd??null,complexity:n.complexity??null,coverage:n.coverage??null,metadata:n.metadata?JSON.stringify(n.metadata):null,embedding:n.embedding?M(n.embedding):null}}function l(n){return{id:n.id,type:n.type,name:n.name,filePath:n.file_path??void 0,lineStart:n.line_start??void 0,lineEnd:n.line_end??void 0,complexity:n.complexity??void 0,coverage:n.coverage??void 0,metadata:n.metadata?T(n.metadata):void 0,embedding:n.embedding?F(n.embedding):void 0,createdAt:n.created_at,updatedAt:n.updated_at}}function A(n){return{id:n.id,source_id:n.sourceId,target_id:n.targetId,type:n.type,weight:n.weight??1,properties:n.properties?JSON.stringify(n.properties):null}}function b(n){return{id:n.id,sourceId:n.source_id,targetId:n.target_id,type:n.type,weight:n.weight,properties:n.properties?T(n.properties):void 0,createdAt:n.created_at}}function _(n,e,t){return`${n}--${t}-->${e}`}function M(n){let e=Buffer.alloc(n.length*4);for(let t=0;t<n.length;t++)e.writeFloatLE(n[t],t*4);return e}function F(n){let e=[],t=n.length/4;for(let r=0;r<t;r++)e.push(n.readFloatLE(r*4));return e}O();var z={maxTraversalDepth:10,maxQueryResults:1e3,enableVectorSearch:!1},y=class{config;schemaManager;initialized=!1;constructor(e){this.config={...z,...e},this.schemaManager=new E}async initialize(){this.initialized||(this.schemaManager.ensureSchema(this.config.db),this.initialized=!0)}isInitialized(){return this.initialized}async addNode(e){this.ensureInitialized();let t=x(),r={id:t,...e},i=N(r);return this.config.db.prepare(`
3
- INSERT INTO hypergraph_nodes (id, type, name, file_path, line_start, line_end, complexity, coverage, metadata, embedding)
4
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
5
- `).run(i.id,i.type,i.name,i.file_path,i.line_start,i.line_end,i.complexity,i.coverage,i.metadata,i.embedding),t}async addEdge(e){this.ensureInitialized();let t=_(e.sourceId,e.targetId,e.type),r={id:t,...e},i=A(r);return this.config.db.prepare(`
6
- INSERT OR REPLACE INTO hypergraph_edges (id, source_id, target_id, type, weight, properties)
7
- VALUES (?, ?, ?, ?, ?, ?)
8
- `).run(i.id,i.source_id,i.target_id,i.type,i.weight,i.properties),t}async getNode(e){this.ensureInitialized();let t=this.config.db.prepare("SELECT * FROM hypergraph_nodes WHERE id = ?").get(e);return t?l(t):null}async getEdge(e){this.ensureInitialized();let t=this.config.db.prepare("SELECT * FROM hypergraph_edges WHERE id = ?").get(e);return t?b(t):null}async updateNode(e,t){this.ensureInitialized();let r=await this.getNode(e);if(!r)throw new Error(`Node not found: ${e}`);let i={...r,...t},a=N(i);this.config.db.prepare(`
9
- UPDATE hypergraph_nodes
10
- SET type = ?, name = ?, file_path = ?, line_start = ?, line_end = ?,
11
- complexity = ?, coverage = ?, metadata = ?, embedding = ?,
12
- updated_at = datetime('now')
13
- WHERE id = ?
14
- `).run(a.type,a.name,a.file_path,a.line_start,a.line_end,a.complexity,a.coverage,a.metadata,a.embedding,e)}async deleteNode(e){this.ensureInitialized(),this.config.db.prepare("DELETE FROM hypergraph_edges WHERE source_id = ? OR target_id = ?").run(e,e),this.config.db.prepare("DELETE FROM hypergraph_nodes WHERE id = ?").run(e)}async deleteEdge(e){this.ensureInitialized(),this.config.db.prepare("DELETE FROM hypergraph_edges WHERE id = ?").run(e)}async findNodes(e){this.ensureInitialized();let t=[],r=[];if(e.type){let s=Array.isArray(e.type)?e.type:[e.type];t.push(`type IN (${s.map(()=>"?").join(", ")})`),r.push(...s)}e.filePath&&(e.filePath.includes("%")?t.push("file_path LIKE ?"):t.push("file_path = ?"),r.push(e.filePath)),e.name&&typeof e.name=="string"&&(t.push("name = ?"),r.push(e.name)),e.minComplexity!==void 0&&(t.push("complexity >= ?"),r.push(e.minComplexity)),e.maxComplexity!==void 0&&(t.push("complexity <= ?"),r.push(e.maxComplexity)),e.minCoverage!==void 0&&(t.push("coverage >= ?"),r.push(e.minCoverage)),e.maxCoverage!==void 0&&(t.push("coverage <= ?"),r.push(e.maxCoverage));let i=t.length>0?`WHERE ${t.join(" AND ")}`:"",a=e.limit??this.config.maxQueryResults,p=`SELECT * FROM hypergraph_nodes ${i} LIMIT ?`;r.push(a);let o=this.config.db.prepare(p).all(...r).map(l);return e.name instanceof RegExp&&(o=o.filter(s=>e.name instanceof RegExp&&e.name.test(s.name))),o}async findEdges(e){this.ensureInitialized();let t=[],r=[];if(e.type){let o=Array.isArray(e.type)?e.type:[e.type];t.push(`type IN (${o.map(()=>"?").join(", ")})`),r.push(...o)}e.sourceId&&(t.push("source_id = ?"),r.push(e.sourceId)),e.targetId&&(t.push("target_id = ?"),r.push(e.targetId)),e.minWeight!==void 0&&(t.push("weight >= ?"),r.push(e.minWeight));let i=t.length>0?`WHERE ${t.join(" AND ")}`:"",a=e.limit??this.config.maxQueryResults,p=`SELECT * FROM hypergraph_edges ${i} LIMIT ?`;return r.push(a),this.config.db.prepare(p).all(...r).map(b)}async traverse(e,t=[],r=5){this.ensureInitialized();let i=new Map,a=new Map,p=[],g=0,o=[{nodeId:e,depth:0,path:{nodes:[e],edges:[]}}],s=Math.min(r,this.config.maxTraversalDepth);for(;o.length>0;){let{nodeId:d,depth:c,path:h}=o.shift();if(!i.has(d)){let u=await this.getNode(d);u&&i.set(d,u)}if(g=Math.max(g,c),c>=s){p.push(h);continue}let m={sourceId:d};t.length>0&&(m.type=t);let R=await this.findEdges(m);if(R.length===0){p.push(h);continue}for(let u of R)if(!a.has(u.id)){a.set(u.id,u);let D={nodes:[...h.nodes,u.targetId],edges:[...h.edges,u.id]};o.push({nodeId:u.targetId,depth:c+1,path:D})}}return{nodes:Array.from(i.values()),edges:Array.from(a.values()),paths:p,maxDepthReached:g}}async findUntestedFunctions(){return this.ensureInitialized(),this.config.db.prepare(`
15
- SELECT n.* FROM hypergraph_nodes n
16
- WHERE n.type = 'function'
17
- AND NOT EXISTS (
18
- SELECT 1 FROM hypergraph_edges e
19
- JOIN hypergraph_nodes t ON t.id = e.source_id
20
- WHERE e.target_id = n.id
21
- AND e.type = 'covers'
22
- AND t.type = 'test'
23
- )
24
- ORDER BY n.complexity DESC NULLS LAST
25
- LIMIT ?
26
- `).all(this.config.maxQueryResults).map(l)}async findImpactedTests(e){if(this.ensureInitialized(),e.length===0)return[];let r=`
27
- SELECT DISTINCT t.* FROM hypergraph_nodes t
28
- JOIN hypergraph_edges e ON e.source_id = t.id
29
- JOIN hypergraph_nodes f ON f.id = e.target_id
30
- WHERE t.type = 'test'
31
- AND e.type = 'covers'
32
- AND f.type = 'function'
33
- AND f.file_path IN (${e.map(()=>"?").join(", ")})
34
- LIMIT ?
35
- `,i=[...e,this.config.maxQueryResults];return this.config.db.prepare(r).all(...i).map(l)}async findCoverageGaps(e=50){return this.ensureInitialized(),this.config.db.prepare(`
36
- SELECT * FROM hypergraph_nodes
37
- WHERE type = 'function'
38
- AND coverage IS NOT NULL
39
- AND coverage <= ?
40
- ORDER BY coverage ASC, complexity DESC NULLS LAST
41
- LIMIT ?
42
- `).all(e,this.config.maxQueryResults).map(l)}async findModuleDependencies(e){this.ensureInitialized();let t=await this.findNodes({type:"module",filePath:e,limit:1});if(t.length===0){let d=await this.findNodes({type:"file",filePath:e,limit:1});if(d.length===0)throw new Error(`Module not found: ${e}`);t.push(d[0])}let r=t[0],i=await this.findEdges({sourceId:r.id,type:["imports","depends_on"]}),a=[];for(let d of i){let c=await this.getNode(d.targetId);c&&a.push(c)}let p=await this.findEdges({targetId:r.id,type:["imports","depends_on"]}),g=[];for(let d of p){let c=await this.getNode(d.sourceId);c&&g.push(c)}let o=await this.traverse(r.id,["imports","depends_on"],5),s=o.nodes.filter(d=>d.id!==r.id);return{module:r,directDependencies:a,dependents:g,transitiveDependencies:s,maxDependencyDepth:o.maxDepthReached}}async buildFromIndexResult(e){this.ensureInitialized();let t=Date.now(),r=0,i=0,a=0,p=[];return this.config.db.transaction(()=>{for(let o of e.files)try{let s=`file:${o.path}`;this.config.db.prepare("SELECT id FROM hypergraph_nodes WHERE id = ?").get(s)?i++:(this.config.db.prepare(`
43
- INSERT INTO hypergraph_nodes (id, type, name, file_path)
44
- VALUES (?, 'file', ?, ?)
45
- `).run(s,o.path.split("/").pop()||o.path,o.path),r++)}catch(s){p.push({entity:`file:${o.path}`,error:f(s)})}for(let o of e.files)for(let s of o.entities)try{let d=`${s.type}:${o.path}:${s.name}`,c=this.mapEntityTypeToNodeType(s.type);this.config.db.prepare("SELECT id FROM hypergraph_nodes WHERE id = ?").get(d)?(this.config.db.prepare(`
46
- UPDATE hypergraph_nodes
47
- SET line_start = ?, line_end = ?, complexity = ?, coverage = ?,
48
- updated_at = datetime('now')
49
- WHERE id = ?
50
- `).run(s.lineStart,s.lineEnd,s.complexity,s.coverage,d),i++):(this.config.db.prepare(`
51
- INSERT INTO hypergraph_nodes (id, type, name, file_path, line_start, line_end, complexity, coverage)
52
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)
53
- `).run(d,c,s.name,o.path,s.lineStart,s.lineEnd,s.complexity,s.coverage),r++)}catch(d){p.push({entity:`${s.type}:${s.name}`,error:f(d)})}for(let o of e.files){let s=`file:${o.path}`;for(let d of o.imports)try{let c=`file:${d}`;if(this.config.db.prepare("SELECT id FROM hypergraph_nodes WHERE id = ?").get(c)){let m=_(s,c,"imports");this.config.db.prepare(`
54
- INSERT OR REPLACE INTO hypergraph_edges (id, source_id, target_id, type, weight)
55
- VALUES (?, ?, ?, 'imports', 1.0)
56
- `).run(m,s,c),a++}}catch(c){p.push({entity:`import:${d}`,error:f(c)})}}})(),{nodesCreated:r,nodesUpdated:i,edgesCreated:a,durationMs:Date.now()-t,errors:p}}async syncWithKnowledgeGraph(e){this.ensureInitialized();let t=Date.now(),r=0,i=0,a=0,p=0,g=await this.findNodes({});for(let s of g){let d=await e.getNode(s.id);r++}return i=(await this.findEdges({})).length,{nodesSynced:r,edgesSynced:i,nodesAdded:a,nodesRemoved:p,durationMs:Date.now()-t}}async getStats(){this.ensureInitialized();let e=this.schemaManager.getStats(this.config.db),t=this.config.db.prepare(`
57
- SELECT type, COUNT(*) as count FROM hypergraph_nodes GROUP BY type
58
- `).all(),r={function:0,module:0,test:0,file:0,class:0};for(let g of t)g.type in r&&(r[g.type]=g.count);let i=this.config.db.prepare(`
59
- SELECT type, COUNT(*) as count FROM hypergraph_edges GROUP BY type
60
- `).all(),a={calls:0,imports:0,tests:0,depends_on:0,covers:0};for(let g of i)g.type in a&&(a[g.type]=g.count);let p=this.config.db.prepare(`
61
- SELECT
62
- AVG(complexity) as avg_complexity,
63
- AVG(coverage) as avg_coverage,
64
- COUNT(CASE WHEN embedding IS NOT NULL THEN 1 END) as nodes_with_embeddings
65
- FROM hypergraph_nodes
66
- `).get();return{totalNodes:e.nodeCount,totalEdges:e.edgeCount,nodesByType:r,edgesByType:a,avgComplexity:p.avg_complexity??0,avgCoverage:p.avg_coverage??0,nodesWithEmbeddings:p.nodes_with_embeddings}}ensureInitialized(){if(!this.initialized)throw new Error("HypergraphEngine not initialized. Call initialize() first.")}mapEntityTypeToNodeType(e){return{function:"function",class:"class",module:"module",interface:"module",file:"file",test:"test"}[e]??"function"}};async function V(n){let e=new y(n);return await e.initialize(),e}function Y(n){return new y(n)}var k=y;export{z as a,y as b,V as c,Y as d,k as e};
@@ -1,24 +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.9.18");process.exit(0)}
2
- import{a as U,b as G}from"./chunk-6IBFYVLK.js";import{g as W}from"./chunk-SQHM6WUF.js";import{a as _}from"./chunk-EZN7QMOZ.js";import{e as S}from"./chunk-G2H4W7NN.js";import{b as v,c as x}from"./chunk-X2T4TI7D.js";import{a as ne}from"./chunk-4XYQJ4LQ.js";import{c as z}from"./chunk-6KTF7QB3.js";import{b as k,d as q}from"./chunk-6ZMQL3U6.js";import{b,c as E}from"./chunk-TPL3CBMS.js";import{a as y,c as I}from"./chunk-UNPTSPAO.js";import{i as O}from"./chunk-LVABI4OA.js";import{S as ae,b as N}from"./chunk-FTIHPDWV.js";import{randomUUID as Z}from"crypto";I();q();import{randomUUID as se}from"node:crypto";var j=x(),P=class{constructor(e){this.options=e}options;claudeFlowAvailable=!1;localTrajectories=new Map;async initialize(){this.claudeFlowAvailable=await this.checkClaudeFlow()}async checkClaudeFlow(){return v(this.options.projectRoot).available}async startTrajectory(e,t){let i=`trajectory-${se()}`;if(this.claudeFlowAvailable)try{let{execFileSync:r}=await import("child_process"),n=["--no-install",j,"hooks","intelligence","trajectory-start","--task",e];t&&n.push("--agent",t);let s=r("npx",n,{encoding:"utf-8",timeout:1e4,cwd:this.options.projectRoot}).match(/trajectoryId[:\s]+["']?([^"'\s,}]+)/i);if(s?.[1])return s[1]}catch(r){console.debug("[TrajectoryBridge] Claude Flow trajectory start failed:",r instanceof Error?r.message:r)}return this.localTrajectories.set(i,{id:i,task:e,agent:t,steps:[],startedAt:Date.now()}),i}async recordStep(e,t,i,r){if(this.claudeFlowAvailable)try{let{execFileSync:a}=await import("child_process"),s=["--no-install",j,"hooks","intelligence","trajectory-step","--trajectory-id",e,"--action",t];i&&s.push("--result",i),r!==void 0&&s.push("--quality",String(r)),a("npx",s,{encoding:"utf-8",timeout:1e4,cwd:this.options.projectRoot});return}catch(a){console.debug("[TrajectoryBridge] Claude Flow trajectory step failed:",a instanceof Error?a.message:a)}let n=this.localTrajectories.get(e);n&&n.steps.push({id:`step-${n.steps.length+1}`,action:t,result:i,quality:r,timestamp:Date.now()})}async endTrajectory(e,t,i){if(this.claudeFlowAvailable)try{let{execFileSync:n}=await import("child_process"),a=["--no-install",j,"hooks","intelligence","trajectory-end","--trajectory-id",e,"--success",String(t)];i&&a.push("--feedback",i),n("npx",a,{encoding:"utf-8",timeout:1e4,cwd:this.options.projectRoot})}catch{}let r=this.localTrajectories.get(e);if(r)return r.success=t,r.feedback=i,r.completedAt=Date.now(),await this.persistTrajectory(r),r}getTrajectory(e){return this.localTrajectories.get(e)}isClaudeFlowAvailable(){return this.claudeFlowAvailable}async persistTrajectory(e){try{let{join:t}=await import("path"),{existsSync:i,mkdirSync:r}=await import("fs"),{createRequire:n}=await import("module"),a=n(import.meta.url),{openDatabase:s}=a("../../shared/safe-db.js"),o=t(this.options.projectRoot,".agentic-qe","trajectories.db"),u=t(this.options.projectRoot,".agentic-qe");i(u)||r(u,{recursive:!0});let p=s(o);p.exec(`
3
- CREATE TABLE IF NOT EXISTS trajectories (
4
- id TEXT PRIMARY KEY,
5
- task TEXT NOT NULL,
6
- agent TEXT,
7
- steps TEXT NOT NULL,
8
- success INTEGER,
9
- feedback TEXT,
10
- started_at INTEGER NOT NULL,
11
- completed_at INTEGER,
12
- created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)
13
- );
14
- CREATE INDEX IF NOT EXISTS idx_trajectories_success ON trajectories(success);
15
- `),p.prepare(`
16
- INSERT OR REPLACE INTO trajectories (id, task, agent, steps, success, feedback, started_at, completed_at)
17
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)
18
- `).run(e.id,e.task,e.agent||null,JSON.stringify(e.steps),e.success?1:0,e.feedback||null,e.startedAt,e.completedAt||null),p.close()}catch(t){console.debug("[TrajectoryBridge] Trajectory persistence failed:",t instanceof Error?t.message:t)}}};var H=x(),X={low:[/simple/i,/basic/i,/fix typo/i,/rename/i,/format/i,/add comment/i,/lint/i,/minor/i,/quick/i],high:[/architect/i,/design/i,/complex/i,/security/i,/performance/i,/refactor.*large/i,/critical/i,/analysis/i,/multi.*file/i,/database.*migration/i,/distributed/i,/concurrent/i]},R=class{constructor(e){this.options=e}options;claudeFlowAvailable=!1;routingHistory=[];async initialize(){this.claudeFlowAvailable=await this.checkClaudeFlow()}async checkClaudeFlow(){return v(this.options.projectRoot).available}async routeTask(e){if(this.claudeFlowAvailable)try{let{execFileSync:t}=await import("child_process"),i=t("npx",["--no-install",H,"hooks","model-route","--task",e],{encoding:"utf-8",timeout:1e4,cwd:this.options.projectRoot}),r=i.match(/model[:\s]+["']?(haiku|sonnet|opus)/i),n=i.match(/confidence[:\s]+([0-9.]+)/i),a=i.match(/reason(?:ing)?[:\s]+["']?([^"'\n]+)/i);if(r)return{model:r[1].toLowerCase(),confidence:n?parseFloat(n[1]):.7,reasoning:a?.[1]?.trim()}}catch(t){console.debug("[ModelRouterBridge] Claude Flow routing failed:",t instanceof Error?t.message:t)}return this.localRoute(e)}async recordOutcome(e){if(this.routingHistory.push(e),this.routingHistory.length>1e3&&(this.routingHistory=this.routingHistory.slice(-500)),this.claudeFlowAvailable)try{let{execFileSync:t}=await import("child_process");t("npx",["--no-install",H,"hooks","model-outcome","--task",e.task,"--model",e.model,"--outcome",e.outcome],{encoding:"utf-8",timeout:1e4,cwd:this.options.projectRoot})}catch(t){console.debug("[ModelRouterBridge] Outcome recording failed:",t instanceof Error?t.message:t)}}getStats(){let e={totalRoutings:this.routingHistory.length,modelDistribution:{haiku:0,sonnet:0,opus:0},successRate:{haiku:0,sonnet:0,opus:0}},t={haiku:0,sonnet:0,opus:0};for(let i of this.routingHistory)e.modelDistribution[i.model]++,i.outcome==="success"&&t[i.model]++;for(let i of["haiku","sonnet","opus"]){let r=e.modelDistribution[i];e.successRate[i]=r>0?t[i]/r:0}return e}isClaudeFlowAvailable(){return this.claudeFlowAvailable}localRoute(e){let t=e.toLowerCase();for(let i of X.low)if(i.test(t))return{model:"haiku",confidence:.75,reasoning:"Low complexity task detected - using haiku for speed"};for(let i of X.high)if(i.test(t))return{model:"opus",confidence:.8,reasoning:"High complexity task detected - using opus for capability"};return e.length>500?{model:"opus",confidence:.65,reasoning:"Long task description - using opus for complex reasoning"}:e.length<50?{model:"haiku",confidence:.6,reasoning:"Short task description - using haiku for efficiency"}:{model:"sonnet",confidence:.7,reasoning:"Medium complexity task - using sonnet for balance"}}};q();I();var B=x(),T=class{constructor(e){this.options=e}options;claudeFlowAvailable=!1;analysisCache=new Map;async initialize(){this.claudeFlowAvailable=await this.checkClaudeFlow()}async checkClaudeFlow(){return v(this.options.projectRoot).available}async analyze(e,t="medium"){let i=e||this.options.projectRoot,r=`${i}:${t}`,n=this.analysisCache.get(r);if(n)return n;if(this.claudeFlowAvailable)try{let{execFileSync:a}=await import("child_process"),s=a("npx",["--no-install",B,"hooks","pretrain","--path",i,"--depth",t],{encoding:"utf-8",timeout:12e4,cwd:this.options.projectRoot});try{let o=k(s),u={success:!0,repositoryPath:i,depth:t,analysis:o.analysis||void 0,agentConfigs:o.agentConfigs};return this.analysisCache.set(r,u),u}catch{return{success:!0,repositoryPath:i,depth:t}}}catch(a){console.debug("[PretrainBridge] Claude Flow analyze failed, using local:",a instanceof Error?a.message:a)}return this.localAnalyze(i,t)}async generateAgentConfigs(e="yaml"){if(this.claudeFlowAvailable)try{let{execFileSync:t}=await import("child_process"),i=t("npx",["--no-install",B,"hooks","build-agents","--format",e],{encoding:"utf-8",timeout:6e4,cwd:this.options.projectRoot});try{return k(i)}catch(r){return console.debug("[PretrainBridge] Agent config parse error:",r instanceof Error?r.message:r),[]}}catch(t){console.debug("[PretrainBridge] Claude Flow generateAgentConfigs failed:",t instanceof Error?t.message:t)}return this.generateLocalAgentConfigs()}async transferPatterns(e,t=.7){if(this.claudeFlowAvailable)try{let{execFileSync:i}=await import("child_process"),r=i("npx",["--no-install",B,"hooks","transfer","--source-path",e,"--min-confidence",String(t)],{encoding:"utf-8",timeout:6e4,cwd:this.options.projectRoot}),n=r.match(/transferred[:\s]+(\d+)/i),a=r.match(/skipped[:\s]+(\d+)/i);return{transferred:n?parseInt(n[1]):0,skipped:a?parseInt(a[1]):0}}catch(i){console.debug("[PretrainBridge] Claude Flow transferPatterns failed:",i instanceof Error?i.message:i)}return{transferred:0,skipped:0}}isClaudeFlowAvailable(){return this.claudeFlowAvailable}async localAnalyze(e,t){try{let i=await import("fast-glob"),{existsSync:r,readFileSync:n}=await import("fs"),{join:a}=await import("path"),s=t==="shallow"?["*.ts","*.js","*.json"]:t==="medium"?["**/*.ts","**/*.js","**/*.json","**/*.py"]:["**/*"],o=["node_modules/**","dist/**","coverage/**",".git/**"],u=await i.default(s,{cwd:e,ignore:o,onlyFiles:!0}),p=new Set,g=new Set;for(let d of u.slice(0,100))(d.endsWith(".ts")||d.endsWith(".tsx"))&&p.add("typescript"),(d.endsWith(".js")||d.endsWith(".jsx"))&&p.add("javascript"),d.endsWith(".py")&&p.add("python"),d.endsWith(".go")&&p.add("go"),d.endsWith(".rs")&&p.add("rust");let w=a(e,"package.json");if(r(w))try{let d=k(n(w,"utf-8")),f={...d.dependencies,...d.devDependencies};f.react&&g.add("react"),f.vue&&g.add("vue"),f.angular&&g.add("angular"),f.vitest&&g.add("vitest"),f.jest&&g.add("jest"),f.playwright&&g.add("playwright"),f.express&&g.add("express"),f.fastify&&g.add("fastify")}catch(d){console.debug("[PretrainBridge] package.json parse error:",d instanceof Error?d.message:d)}let m={success:!0,repositoryPath:e,depth:t,analysis:{languages:Array.from(p),frameworks:Array.from(g),patterns:[],complexity:u.length>500?3:u.length>100?2:1}};return this.analysisCache.set(`${e}:${t}`,m),m}catch(i){return{success:!1,repositoryPath:e,depth:t,error:y(i)}}}generateLocalAgentConfigs(){return[{name:"qe-test-architect",type:"worker",capabilities:["test-generation","test-design"],model:"sonnet"},{name:"qe-coverage-specialist",type:"worker",capabilities:["coverage-analysis","gap-detection"],model:"haiku"},{name:"qe-quality-gate",type:"worker",capabilities:["quality-assessment","risk-scoring"],model:"sonnet"},{name:"qe-security-scanner",type:"worker",capabilities:["security-scanning","vulnerability-detection"],model:"opus"}]}};var D=class{constructor(e){this.options=e;this.trajectory=new P(e),this.modelRouter=new R(e),this.pretrain=new T(e)}options;trajectory;modelRouter;pretrain;initialized=!1;async initialize(){this.initialized||(await Promise.all([this.trajectory.initialize(),this.modelRouter.initialize(),this.pretrain.initialize()]),this.initialized=!0)}getStatus(){return{available:this.isAvailable(),features:{trajectories:this.trajectory.isClaudeFlowAvailable(),modelRouting:this.modelRouter.isClaudeFlowAvailable(),pretrain:this.pretrain.isClaudeFlowAvailable(),patternSearch:this.trajectory.isClaudeFlowAvailable()}}}isAvailable(){return this.trajectory.isClaudeFlowAvailable()||this.modelRouter.isClaudeFlowAvailable()||this.pretrain.isClaudeFlowAvailable()}};function V(l){return new D(l)}ne();ae();var M=z.create("experience-capture"),J={"catches-bug":1,flaky:-1,"false-positive":-1,"new-coverage":.3,redundant:0,"code-smell":-.5,neutral:0},oe=new Set(Object.keys(J));function K(l){return typeof l=="string"&&oe.has(l)}function ce(l){if(K(l))return J[l]}var le={namespace:"qe-experiences",minQualityForPatternExtraction:.7,similarityThreshold:.85,promotionThreshold:S,maxExperiencesPerDomain:1e3,enableCrossDomainSharing:!0,autoCleanup:!0,cleanupIntervalMs:864e5},Q=class{constructor(e,t,i,r={}){this.memory=e;this.patternStore=t;this.eventBus=i;this.config={...le,...r}}memory;patternStore;eventBus;config;initialized=!1;cleanupTimer;activeExperiences=new Map;stats={totalCaptured:0,successfulCaptures:0,patternsExtracted:0,patternsPromoted:0,byDomain:new Map};sessionCaptureCount=0;witnessChain;setWitnessChain(e){this.witnessChain=e}async initialize(){this.initialized||(await this.loadStats(),this.config.autoCleanup&&(this.cleanupTimer=setInterval(()=>this.cleanup(),this.config.cleanupIntervalMs)),this.initialized=!0,console.log("[ExperienceCapture] Initialized"))}startCapture(e,t){let i=`exp-${Date.now()}-${O().slice(0,8)}`,r={id:i,task:e,agent:t?.agent,domain:t?.domain,model:t?.model,startedAt:Date.now(),completedAt:0,durationMs:0,steps:[],success:!1,quality:0,trajectoryId:t?.trajectoryId,metadata:t?.metadata};return this.activeExperiences.set(i,r),i}recordStep(e,t){let i=this.activeExperiences.get(e);if(!i){console.warn(`[ExperienceCapture] Experience not found: ${e}`);return}i.steps.push({...t,timestamp:Date.now()})}async completeCapture(e,t){let i=this.activeExperiences.get(e);if(!i)return E(new Error(`Experience not found: ${e}`));let r=Date.now();i.completedAt=r,i.durationMs=r-i.startedAt,i.success=t.success,i.feedback=t.feedback,t.quality!==void 0?i.quality=t.quality:i.quality=this.calculateQuality(i);let n=t.testOutcome??i.metadata?.testOutcome;if(n&&K(n)&&(i.testOutcome=n,i.reward=ce(n)),this.witnessChain&&N().useWitnessChain)try{let s=this.witnessChain.appendWitness({type:"experience-capture",decision:i.success?"PASS":"FAIL",context:{experienceId:i.id,task:i.task,quality:i.quality,domain:i.domain,reward:i.reward},evidence:i.reward});i.witnessHash=s.hash}catch(s){M.warn("Failed to create witness receipt for experience",{experienceId:i.id,error:s instanceof Error?s.message:String(s)})}this.activeExperiences.delete(e),await this.storeExperience(i),this.updateStats(i);let a=i.reward===void 0||i.reward>0;if(i.success&&i.quality>=this.config.minQualityForPatternExtraction&&a){let s=await this.extractPattern(i);(s.newPattern||s.reinforced)&&(i.patterns=[s.patternId])}return this.emitExperienceCaptured(i),b(i)}getActiveExperience(e){return this.activeExperiences.get(e)}getPendingCount(){return this.activeExperiences.size}async flushPending(){let e=Array.from(this.activeExperiences.entries());if(e.length===0)return 0;let t=0;for(let[i,r]of e){let n=Date.now();r.completedAt=n,r.durationMs=n-r.startedAt,r.quality=r.quality||this.calculateQuality(r),r.metadata={...r.metadata,flushedByCompaction:!0},await this.storeExperience(r),this.updateStats(r),this.activeExperiences.delete(i),t++}return M.info(`Flushed ${t} pending experiences before compaction`),t}async getExperience(e){let t=`${this.config.namespace}:experience:${e}`;return await this.memory.get(t)??null}async searchExperiences(e={}){let t=e.limit||100,i=[],r;e.domain?r=await this.memory.search(`${this.config.namespace}:index:domain:${e.domain}:*`,t*2):r=await this.memory.search(`${this.config.namespace}:experience:*`,t*2);for(let n of r){if(i.length>=t)break;let a=n.includes(":index:")?await this.memory.get(n):null,s=a?await this.getExperience(a):await this.memory.get(n);s&&(e.agent&&s.agent!==e.agent||e.success!==void 0&&s.success!==e.success||e.minQuality!==void 0&&s.quality<e.minQuality||i.push(s))}return i}async getStats(){let e={};for(let[t,i]of this.stats.byDomain)e[t]=i;return{totalExperiences:this.stats.totalCaptured,byDomain:e,successRate:this.stats.totalCaptured>0?this.stats.successfulCaptures/this.stats.totalCaptured:0,avgQuality:await this.calculateAvgQuality(),patternsExtracted:this.stats.patternsExtracted,patternsPromoted:this.stats.patternsPromoted}}async extractPattern(e){if(!this.patternStore)return{newPattern:!1,reinforced:!1,promoted:!1};let t=await this.patternStore.search(e.task,{limit:1,domain:e.domain,useVectorSearch:!0});if(t.success&&t.value.length>0){let n=t.value[0];if(n.similarity>=this.config.similarityThreshold){let a=await this.patternStore.recordUsage(n.pattern.id,e.success),s=await this.patternStore.get(n.pattern.id),o=!1;return s&&s.tier==="short-term"&&s.usageCount>=this.config.promotionThreshold&&(await this.patternStore.promote(n.pattern.id)).success&&(o=!0,this.stats.patternsPromoted++,console.log(`[ExperienceCapture] Pattern promoted: ${n.pattern.id} (${s.usageCount} uses)`)),{newPattern:!1,patternId:n.pattern.id,reinforced:a.success,promoted:o}}}let i=this.experienceToPatternOptions(e),r=await this.patternStore.create(i);return r.success?(this.stats.patternsExtracted++,await this.patternStore.recordUsage(r.value.id,e.success),{newPattern:!0,patternId:r.value.id,reinforced:!1,promoted:!1}):{newPattern:!1,reinforced:!1,promoted:!1}}async shareAcrossDomains(e){if(!this.config.enableCrossDomainSharing||!e.domain)return;let t=this.getRelatedDomains(e.domain);for(let i of t){let r=`${this.config.namespace}:shared:${i}:${e.id}`;await this.memory.set(r,{sourceExperience:e.id,sourceDomain:e.domain,sharedAt:Date.now()},{persist:!0})}}async cleanup(){let e=0,t=0;for(let i of this.stats.byDomain.keys()){let r=this.stats.byDomain.get(i)||0;if(r>this.config.maxExperiencesPerDomain){let n=await this.searchExperiences({domain:i,limit:r});n.sort((s,o)=>s.quality-o.quality||s.startedAt-o.startedAt);let a=r-this.config.maxExperiencesPerDomain;for(let s=0;s<Math.min(a,n.length);s++){let o=n[s];await this.softDeleteExperience(o.id),t++}}}return console.log(`[ExperienceCapture] Cleanup: ${t} archived (0 destroyed)`),{removed:0,consolidated:e,archived:t}}async dispose(){this.cleanupTimer&&(clearInterval(this.cleanupTimer),this.cleanupTimer=void 0),await this.saveStats(),this.sessionCaptureCount===0&&console.warn("[ExperienceCapture] WARNING: Zero experiences captured this session. Learning cannot improve without experience data. Ensure tasks call startCapture()/completeCapture() to feed the learning loop."),this.activeExperiences.clear(),this.initialized=!1}async storeExperience(e){let t=`${this.config.namespace}:experience:${e.id}`;if(await this.memory.set(t,e,{persist:!0}),e.domain){let i=`${this.config.namespace}:index:domain:${e.domain}:${e.id}`;await this.memory.set(i,e.id,{persist:!0})}if(e.agent){let i=`${this.config.namespace}:index:agent:${e.agent}:${e.id}`;await this.memory.set(i,e.id,{persist:!0})}}async deleteExperience(e){await this.softDeleteExperience(e)}async softDeleteExperience(e){let t=await this.getExperience(e);if(!t)return;let i=`${this.config.namespace}:experience:${e}`,r={...t,_archived:!0};await this.memory.set(i,r,{persist:!0})}calculateQuality(e){if(e.steps.length===0)return e.success?.5:.2;let t=e.steps.filter(r=>r.quality!==void 0);if(t.length===0)return e.success?.6:.3;let i=t.reduce((r,n)=>r+(n.quality||0),0)/t.length;return e.success?Math.min(1,i+.1):Math.max(0,i-.2)}updateStats(e){if(this.stats.totalCaptured++,this.sessionCaptureCount++,e.success&&this.stats.successfulCaptures++,e.domain){let t=this.stats.byDomain.get(e.domain)||0;this.stats.byDomain.set(e.domain,t+1)}}async calculateAvgQuality(){let e=await this.searchExperiences({limit:100});return e.length===0?0:e.reduce((i,r)=>i+r.quality,0)/e.length}experienceToPatternOptions(e){let t=this.detectPatternType(e.task),r=`Task: {{task}}
19
-
20
- Steps:
21
- ${e.steps.map((n,a)=>`${a+1}. ${n.action}${n.result?` \u2192 ${n.result}`:""}`).join(`
22
- `)}
23
-
24
- Duration: ${e.durationMs}ms`;return{patternType:t,name:this.generatePatternName(e),description:`Pattern extracted from: ${e.task}`,context:{tags:this.extractTags(e),testType:this.detectTestType(e.task)},template:{type:"workflow",content:r,variables:[{name:"task",type:"string",description:"The task to execute",required:!0}]}}}detectPatternType(e){let t=e.toLowerCase();return t.includes("test")||t.includes("spec")?(t.includes("unit")||t.includes("integration")||t.includes("e2e"),"test-template"):t.includes("mock")||t.includes("stub")?"mock-pattern":t.includes("assert")||t.includes("expect")?"assertion-pattern":t.includes("coverage")?"coverage-strategy":t.includes("api")||t.includes("contract")?"api-contract":t.includes("visual")||t.includes("screenshot")?"visual-baseline":t.includes("accessibility")||t.includes("a11y")?"a11y-check":t.includes("performance")||t.includes("perf")?"perf-benchmark":t.includes("flaky")?"flaky-fix":t.includes("refactor")?"refactor-safe":t.includes("error")||t.includes("exception")?"error-handling":"test-template"}generatePatternName(e){let t=e.task.replace(/[^a-zA-Z0-9\s-]/g,"").slice(0,50).trim();return`${e.domain?`[${e.domain}] `:""}${t}`}extractTags(e){let t=[];e.domain&&t.push(e.domain),e.agent&&t.push(e.agent),e.model&&t.push(`model:${e.model}`);let i=e.task.toLowerCase().split(/\s+/),r=["unit","integration","e2e","api","mock","coverage","security"];for(let n of r)i.some(a=>a.includes(n))&&t.push(n);return t}detectTestType(e){let t=e.toLowerCase();if(t.includes("unit"))return"unit";if(t.includes("integration"))return"integration";if(t.includes("e2e")||t.includes("end-to-end"))return"e2e";if(t.includes("contract")||t.includes("api"))return"contract";if(t.includes("smoke"))return"smoke"}getRelatedDomains(e){return{"test-generation":["test-execution","coverage-analysis"],"test-execution":["test-generation","coverage-analysis","quality-assessment"],"coverage-analysis":["test-generation","test-execution"],"quality-assessment":["test-execution","defect-intelligence"],"defect-intelligence":["quality-assessment","code-intelligence"],"requirements-validation":["test-generation","quality-assessment"],"code-intelligence":["defect-intelligence","security-compliance"],"security-compliance":["code-intelligence","quality-assessment"],"contract-testing":["test-generation","test-execution"],"visual-accessibility":["quality-assessment","test-execution"],"chaos-resilience":["test-execution","quality-assessment"],"learning-optimization":[]}[e]||[]}emitExperienceCaptured(e){this.eventBus&&this.eventBus.publish({id:`exp-captured-${e.id}`,type:"learning.ExperienceCaptured",source:"learning-optimization",timestamp:new Date,payload:{experience:e,reward:e.reward,testOutcome:e.testOutcome}})}async loadStats(){try{let e=await this.memory.get(`${this.config.namespace}:stats`);e&&(this.stats.totalCaptured=e.totalCaptured,this.stats.successfulCaptures=e.successfulCaptures,this.stats.patternsExtracted=e.patternsExtracted,this.stats.patternsPromoted=e.patternsPromoted,this.stats.byDomain=new Map(e.byDomain))}catch(e){M.debug("Stats restoration failed, starting fresh",{error:e instanceof Error?e.message:String(e)})}}async saveStats(){try{await this.memory.set(`${this.config.namespace}:stats`,{totalCaptured:this.stats.totalCaptured,successfulCaptures:this.stats.successfulCaptures,patternsExtracted:this.stats.patternsExtracted,patternsPromoted:this.stats.patternsPromoted,byDomain:Array.from(this.stats.byDomain.entries())},{persist:!0})}catch(e){console.error("[ExperienceCapture] Failed to save stats:",e)}}};function Y(l,e,t,i){return new Q(l,e,t,i)}var ue={enableClaudeFlow:!0,enableExperienceCapture:!0,enablePatternPromotion:!0,promotionThreshold:S},L=class{constructor(e,t,i){this.memory=e;this.eventBus=i;this.config={...ue,...t}}memory;eventBus;config;reasoningBank;claudeFlowBridge;experienceCapture;patternStore;coherenceService;initialized=!1;_domainTransferEngine=null;_domainTransferInterval=null;activeTasks=new Map;completedTasks=0;claudeFlowErrors=0;async initialize(){if(!this.initialized){try{this.coherenceService=await U(G),this.coherenceService.isInitialized()&&console.log("[AQELearningEngine] CoherenceService initialized with WASM engines")}catch(e){console.log("[AQELearningEngine] CoherenceService WASM unavailable, using fallback:",y(e))}this.patternStore=_(this.memory,{promotionThreshold:this.config.promotionThreshold}),await this.patternStore.initialize(),this.reasoningBank=W(this.memory,this.eventBus,this.config.reasoningBank,this.coherenceService),await this.reasoningBank.initialize();try{let{getSharedRvfDualWriter:e}=await import("./shared-rvf-dual-writer-HYI64CBX.js"),t=await e();t&&this.reasoningBank.setRvfDualWriter(t)}catch(e){process.env.DEBUG&&console.debug("[AQELearningEngine] RVF wiring skipped:",e instanceof Error?e.message:e)}if(this.config.enableExperienceCapture){this.experienceCapture=Y(this.memory,this.patternStore,this.eventBus,{promotionThreshold:this.config.promotionThreshold}),await this.experienceCapture.initialize();try{let{isWitnessChainFeatureEnabled:e}=await import("./witness-chain-DWNP7VR6.js");if(e()){let{createPersistentWitnessChain:t,createWitnessChainSQLitePersistence:i}=await import("./witness-chain-DWNP7VR6.js"),{getUnifiedPersistence:r}=await import("./unified-persistence-GA7HKYZC.js"),n=r();if(n.isInitialized()){let a=n.getDatabase(),s=i(a),o=t(s);this.experienceCapture.setWitnessChain(o)}}}catch(e){process.env.DEBUG&&console.debug("[AQELearningEngine] Witness chain wiring skipped:",e instanceof Error?e.message:e)}}try{let{isCrossDomainTransferEnabled:e}=await import("./feature-flags-XEP6B4GN.js");if(e()&&this.patternStore){let{createDomainTransferEngine:t}=await import("./domain-transfer-OUERZRGL.js"),i=t(),r=this.patternStore,n=await r.getStats();this._domainTransferInterval=setInterval(async()=>{try{n=await r.getStats()}catch(a){process.env.DEBUG&&console.debug("[AQELearningEngine] Stats refresh failed:",a instanceof Error?a.message:a)}},6e4),this._domainTransferInterval.unref?.(),i.setPerformanceProvider(a=>{let s=n.byDomain?.[a]??0,o=n.totalPatterns??0;return{domain:a,successRate:o>0?s/o:.5,avgConfidence:n.avgConfidence??.5,patternCount:s,timestamp:Date.now()}}),this._domainTransferEngine=i}}catch(e){process.env.DEBUG&&console.debug("[AQELearningEngine] Domain transfer wiring skipped:",e instanceof Error?e.message:e)}if(this.config.enableClaudeFlow)try{this.claudeFlowBridge=V({projectRoot:this.config.projectRoot}),await this.claudeFlowBridge.initialize(),this.claudeFlowBridge.isAvailable()&&console.log("[AQELearningEngine] Claude Flow integration enabled")}catch(e){process.env.DEBUG&&console.log("[AQELearningEngine] Claude Flow not available, using standalone mode:",y(e))}this.initialized=!0,console.log("[AQELearningEngine] Initialized")}}getStatus(){let e=this.claudeFlowBridge?.getStatus();return{initialized:this.initialized,claudeFlowAvailable:e?.available??!1,features:{patternLearning:!0,vectorSearch:!0,taskRouting:!0,trajectories:e?.features.trajectories??!1,modelRouting:e?.features.modelRouting??!1,pretrain:e?.features.pretrain??!1}}}async getStats(){if(!this.initialized||!this.reasoningBank)throw new Error("Engine not initialized");let e=await this.reasoningBank.getStats(),t=this.experienceCapture?await this.experienceCapture.getStats():{totalExperiences:0,byDomain:{},successRate:0,avgQuality:0,patternsExtracted:0,patternsPromoted:0};return{...e,activeTasks:this.activeTasks.size,completedTasks:this.completedTasks,claudeFlowStatus:this.claudeFlowBridge?.getStatus()??{available:!1,features:{trajectories:!1,modelRouting:!1,pretrain:!1,patternSearch:!1}},claudeFlowErrors:this.claudeFlowErrors,experienceCapture:t}}async storePattern(e){return!this.initialized||!this.reasoningBank?E(new Error("Engine not initialized")):this.reasoningBank.storePattern(e)}async searchPatterns(e,t){return!this.initialized||!this.reasoningBank?E(new Error("Engine not initialized")):this.reasoningBank.searchPatterns(e,t)}async getPattern(e){return!this.initialized||!this.reasoningBank?null:this.reasoningBank.getPattern(e)}async recordOutcome(e){return!this.initialized||!this.reasoningBank?E(new Error("Engine not initialized")):this.reasoningBank.recordOutcome(e)}async routeTask(e){if(!this.initialized||!this.reasoningBank)return E(new Error("Engine not initialized"));let t=await this.searchPatternsForTask(e.task,{limit:5,minConfidence:.4,domain:e.domain});t.success&&t.value.length>0&&await this.trackPatternSearch(e.task,t.value);let i=await this.reasoningBank.routeTask(e);if(i.success&&this.claudeFlowBridge?.pretrain.isClaudeFlowAvailable(),i.success&&t.success){let r=this.enhanceRoutingWithPatterns(i.value,t.value);return b(r)}return i}async route(e,t){let i=await this.routeTask({task:e,context:t});return i.success?i.value:null}async searchPatternsForTask(e,t={}){if(!this.reasoningBank)return b([]);try{return await this.reasoningBank.searchPatterns(e,{limit:t.limit||5,minConfidence:t.minConfidence||.4,domain:t.domain,useVectorSearch:!0})}catch(i){return console.warn("[AQELearningEngine] Pattern search failed:",y(i)),b([])}}async trackPatternSearch(e,t){let i={timestamp:Date.now(),task:e.slice(0,500),patternsFound:t.length,patternIds:t.map(r=>r.pattern.id),avgSimilarity:t.length>0?t.reduce((r,n)=>r+n.similarity,0)/t.length:0};try{let r=`pattern-usage:search:${Date.now()}-${Z().slice(0,8)}`;await this.memory.set(r,i,{persist:!0,ttl:10080*60*1e3})}catch(r){console.debug("[AQELearningEngine] Failed to track pattern search:",y(r))}}enhanceRoutingWithPatterns(e,t){let i=t.filter(o=>o.similarity>=.5&&o.pattern.qualityScore>=.3);if(i.length===0)return e;let r=i.map(o=>{let u=o.pattern;return`[Pattern: ${u.name}] ${u.description} (confidence: ${(u.confidence*100).toFixed(0)}%, similarity: ${(o.similarity*100).toFixed(0)}%)`}),n=[...e.guidance,"--- Relevant Patterns ---",...r],a=[...e.patterns,...i.map(o=>o.pattern)],s=i.length>0?`; Found ${i.length} relevant pattern(s) with avg similarity ${(i.reduce((o,u)=>o+u.similarity,0)/i.length*100).toFixed(0)}%`:"";return{...e,patterns:a,guidance:n,reasoning:e.reasoning+s,confidence:Math.min(1,e.confidence+i.length*.02)}}async recommendModel(e){if(this.claudeFlowBridge?.modelRouter.isClaudeFlowAvailable())try{return await this.claudeFlowBridge.modelRouter.routeTask(e)}catch(t){console.debug("[AQELearningEngine] Claude Flow model routing failed:",t instanceof Error?t.message:t)}return this.localModelRoute(e)}async recordModelOutcome(e,t,i){this.claudeFlowBridge?.modelRouter.isClaudeFlowAvailable()&&await this.claudeFlowBridge.modelRouter.recordOutcome({task:e,model:t,outcome:i})}localModelRoute(e){let t=e.toLowerCase(),i=[/simple/i,/basic/i,/fix typo/i,/rename/i,/format/i,/add comment/i,/lint/i,/minor/i,/quick/i,/small/i];for(let n of i)if(n.test(t))return{model:"haiku",confidence:.75,reasoning:"Low complexity task - using haiku for speed"};let r=[/architect/i,/design/i,/complex/i,/security/i,/performance/i,/refactor.*large/i,/critical/i,/analysis/i,/multi.*file/i,/distributed/i,/concurrent/i,/migration/i];for(let n of r)if(n.test(t))return{model:"opus",confidence:.8,reasoning:"High complexity task - using opus for capability"};return e.length>500?{model:"opus",confidence:.65,reasoning:"Long task description - using opus for complex reasoning"}:e.length<50?{model:"haiku",confidence:.6,reasoning:"Short task - using haiku for efficiency"}:{model:"sonnet",confidence:.7,reasoning:"Medium complexity - using sonnet for balance"}}async startTask(e,t,i){let r=`task-${Date.now()}-${Z().slice(0,8)}`,n=r;if(this.claudeFlowBridge?.trajectory.isClaudeFlowAvailable())try{n=await this.claudeFlowBridge.trajectory.startTrajectory(e,t)}catch(o){this.claudeFlowErrors++,console.warn(`[AQELearningEngine] Claude Flow startTrajectory failed (${this.claudeFlowErrors} total errors):`,y(o))}let a;this.experienceCapture&&(a=this.experienceCapture.startCapture(e,{agent:t,domain:i,trajectoryId:n!==r?n:void 0}));let s={id:a||n,task:e,agent:t,startedAt:Date.now(),steps:[]};return this.activeTasks.set(s.id,s),s.id}async recordStep(e,t,i,r){if(this.claudeFlowBridge?.trajectory.isClaudeFlowAvailable())try{await this.claudeFlowBridge.trajectory.recordStep(e,t,i,r)}catch(a){this.claudeFlowErrors++,console.warn(`[AQELearningEngine] Claude Flow recordStep failed (${this.claudeFlowErrors} total errors):`,y(a))}this.experienceCapture&&this.experienceCapture.recordStep(e,{action:t,result:i,quality:r});let n=this.activeTasks.get(e);n&&n.steps.push({action:t,result:i,quality:r,timestamp:Date.now()})}async endTask(e,t,i){if(this.claudeFlowBridge?.trajectory.isClaudeFlowAvailable())try{await this.claudeFlowBridge.trajectory.endTrajectory(e,t,i)}catch(n){this.claudeFlowErrors++,console.warn(`[AQELearningEngine] Claude Flow endTrajectory failed (${this.claudeFlowErrors} total errors):`,y(n))}let r=this.activeTasks.get(e);if(r)return this.activeTasks.delete(e),this.completedTasks++,this.config.enableExperienceCapture&&t&&await this.captureExperience(r),r}getTask(e){return this.activeTasks.get(e)}async analyzeCodebase(e,t="medium"){let i=e||this.config.projectRoot;if(this.claudeFlowBridge?.pretrain.isClaudeFlowAvailable())try{return await this.claudeFlowBridge.pretrain.analyze(i,t)}catch(r){console.debug("[AQELearningEngine] Claude Flow pretrain analyze failed:",r instanceof Error?r.message:r)}return this.localAnalyze(i,t)}async generateAgentConfigs(e="yaml"){if(this.claudeFlowBridge?.pretrain.isClaudeFlowAvailable())try{return await this.claudeFlowBridge.pretrain.generateAgentConfigs(e)}catch(t){console.debug("[AQELearningEngine] Claude Flow agent config failed:",t instanceof Error?t.message:t)}return[{name:"qe-test-architect",type:"worker",capabilities:["test-generation","test-design"],model:"sonnet"},{name:"qe-coverage-specialist",type:"worker",capabilities:["coverage-analysis","gap-detection"],model:"haiku"},{name:"qe-security-scanner",type:"worker",capabilities:["security-scanning","vulnerability-detection"],model:"opus"}]}async captureExperience(e){if(!this.experienceCapture||!this.config.enableExperienceCapture)return;let t=e.steps.length>0?e.steps.reduce((r,n)=>r+(n.quality??.5),0)/e.steps.length:.5;await this.experienceCapture.completeCapture(e.id,{success:!0,quality:t});let i=await this.experienceCapture.getExperience(e.id);i&&i.quality>=.7&&await this.experienceCapture.shareAcrossDomains(i)}startExperienceCapture(e,t){if(this.experienceCapture)return this.experienceCapture.startCapture(e,t)}getExperienceCaptureService(){return this.experienceCapture}async localAnalyze(e,t){try{let i=await import("fast-glob"),{existsSync:r,readFileSync:n}=await import("fs"),{join:a}=await import("path"),s=t==="shallow"?["*.ts","*.js","*.json"]:t==="medium"?["**/*.ts","**/*.js","**/*.json","**/*.py"]:["**/*"],o=["node_modules/**","dist/**","coverage/**",".git/**"],u=await i.default(s,{cwd:e,ignore:o,onlyFiles:!0}),p=new Set,g=new Set;for(let m of u.slice(0,100))(m.endsWith(".ts")||m.endsWith(".tsx"))&&p.add("typescript"),(m.endsWith(".js")||m.endsWith(".jsx"))&&p.add("javascript"),m.endsWith(".py")&&p.add("python"),m.endsWith(".go")&&p.add("go"),m.endsWith(".rs")&&p.add("rust");let w=a(e,"package.json");if(r(w))try{let m=k(n(w,"utf-8")),d={...m.dependencies,...m.devDependencies};d.react&&g.add("react"),d.vue&&g.add("vue"),d.vitest&&g.add("vitest"),d.jest&&g.add("jest"),d.playwright&&g.add("playwright")}catch(m){console.debug("[AQELearningEngine] package.json parse failed:",m instanceof Error?m.message:m)}return{success:!0,repositoryPath:e,depth:t,analysis:{languages:Array.from(p),frameworks:Array.from(g),patterns:[],complexity:u.length>500?3:u.length>100?2:1}}}catch(i){return{success:!1,repositoryPath:e,depth:t,error:y(i)}}}getGuidance(e,t){if(!this.reasoningBank)throw new Error("Engine not initialized");return this.reasoningBank.getGuidance(e,t)}generateContext(e,t){if(!this.reasoningBank)throw new Error("Engine not initialized");return this.reasoningBank.generateContext(e,t)}checkAntiPatterns(e,t){if(!this.reasoningBank)throw new Error("Engine not initialized");return this.reasoningBank.checkAntiPatterns(e,t)}async dispose(){this._domainTransferInterval&&(clearInterval(this._domainTransferInterval),this._domainTransferInterval=null),this._domainTransferEngine=null,this.experienceCapture&&await this.experienceCapture.dispose(),this.patternStore&&await this.patternStore.dispose(),this.reasoningBank&&await this.reasoningBank.dispose(),this.activeTasks.clear(),this.initialized=!1}},de={enabled:!1,snapshotIntervalMs:3e5,minSnapshotsForAnalysis:5,autoApplyThreshold:.8},ee=class{config;constructor(e){this.config={...de,...e}}runMetaLearningCycle(e){if(process.env.AQE_META_LEARNING_ENABLED!=="true")return[];if(!this.config.enabled)return[];if(e.length<this.config.minSnapshotsForAnalysis)return[];let t=Math.floor(e.length/2),i=e.slice(0,t),r=e.slice(t),n=[],a=Date.now(),s=h(i.map(c=>c.tokenMetrics.costUsd)),o=h(r.map(c=>c.tokenMetrics.costUsd)),u=h(i.map(c=>c.tokenMetrics.savingsUsd)),p=h(r.map(c=>c.tokenMetrics.savingsUsd));if(o>s*1.1&&p<=u*1.05){let c=Math.min(1,(o-s)/(s||1));n.push({id:`meta-tw-${a}`,type:"token-waste",description:`Token cost increased by ${((o/(s||1)-1)*100).toFixed(1)}% while savings remained flat`,confidence:F(c),suggestedAction:"Review cache configuration and increase pattern reuse thresholds",detectedAt:a})}let g=h(i.map(c=>c.qualityMetrics.gatePassRate)),w=h(r.map(c=>c.qualityMetrics.gatePassRate));Math.abs(w-g)<.02&&e.length>=this.config.minSnapshotsForAnalysis&&n.push({id:`meta-qp-${a}`,type:"quality-plateau",description:`Gate pass rate has been flat at ${(w*100).toFixed(1)}% across ${e.length} snapshots`,confidence:F(.6+(e.length-this.config.minSnapshotsForAnalysis)*.05),suggestedAction:"Consider reviewing quality thresholds or adding new test coverage domains",detectedAt:a});let d=h(i.map(c=>c.learningMetrics.patternCount)),f=h(r.map(c=>c.learningMetrics.patternCount)),te=h(i.map(c=>c.learningMetrics.averageConfidence)),$=h(r.map(c=>c.learningMetrics.averageConfidence)),ie=Math.abs(f-d),re=Math.abs($-te);ie<1&&re<.02&&n.push({id:`meta-ls-${a}`,type:"learning-stall",description:`Pattern count (~${Math.round(f)}) and confidence (~${$.toFixed(2)}) have stagnated`,confidence:F(.65+(e.length-this.config.minSnapshotsForAnalysis)*.04),suggestedAction:"Expand to new QE domains or lower pattern creation thresholds to encourage exploration",detectedAt:a});let C=h(i.map(c=>c.performanceMetrics.p95LatencyMs)),A=h(r.map(c=>c.performanceMetrics.p95LatencyMs));if(A>C*1.2&&C>0){let c=Math.min(1,(A-C)/(C||1));n.push({id:`meta-pr-${a}`,type:"performance-regression",description:`P95 latency increased from ${C.toFixed(0)}ms to ${A.toFixed(0)}ms`,confidence:F(c),suggestedAction:"Profile hot paths and consider HNSW index tuning or batch size reduction",detectedAt:a})}return n}shouldAutoApply(e,t){let i=(t??this.config).autoApplyThreshold;return e.confidence>=i}};function h(l){return l.length===0?0:l.reduce((e,t)=>e+t,0)/l.length}function F(l){return Math.max(0,Math.min(1,l))}function pe(l,e,t){return new L(l,e,t)}function et(l,e,t){return pe(l,{projectRoot:e},t)}export{ue as a,L as b,de as c,ee as d,pe as e,et as f};
@@ -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.9.18");process.exit(0)}
2
- import{c as a,d as b,e as c}from"./chunk-J7BG55VG.js";import"./chunk-6G3RNT5H.js";import"./chunk-UNPTSPAO.js";import"./chunk-FKNYOKIK.js";c();export{a as VibiumClientImpl,b as VibiumClientProvider};
@@ -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.9.18");process.exit(0)}
2
- import{a,b}from"./chunk-H5JZZH2C.js";import"./chunk-V2N7KWT7.js";import"./chunk-TPL3CBMS.js";import"./chunk-LVABI4OA.js";import"./chunk-FKNYOKIK.js";export{a as CrossDomainEventRouter,b as createCrossDomainRouter};
@@ -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.9.18");process.exit(0)}
2
- import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u}from"./chunk-KYLE6ZSC.js";import"./chunk-ENYQUSSK.js";import"./chunk-RHYGRUNU.js";import"./chunk-6IBFYVLK.js";import"./chunk-SQHM6WUF.js";import"./chunk-EZN7QMOZ.js";import"./chunk-JZTB35EQ.js";import"./chunk-VZO5I23B.js";import"./chunk-G2H4W7NN.js";import"./chunk-JMK5OCWL.js";import"./chunk-X2T4TI7D.js";import"./chunk-QW2RFI73.js";import"./chunk-BADBKGZE.js";import"./chunk-3GA7M5NK.js";import"./chunk-D7SS56EG.js";import"./chunk-YQL6JH2Y.js";import"./chunk-RPT7HCMH.js";import"./chunk-AGPZVE6B.js";import"./chunk-4XYQJ4LQ.js";import"./chunk-6KTF7QB3.js";import"./chunk-6ZMQL3U6.js";import"./chunk-TPL3CBMS.js";import"./chunk-UNPTSPAO.js";import"./chunk-LVABI4OA.js";import"./chunk-UFGFV4BO.js";import"./chunk-MBGWDELE.js";import"./chunk-IS2PMHB5.js";import"./chunk-QGSELG75.js";import"./chunk-ZURHHRSA.js";import"./chunk-DOSDUAVZ.js";import"./chunk-TFUWIKGZ.js";import"./chunk-JBW2A2O6.js";import"./chunk-FTIHPDWV.js";import"./chunk-FKNYOKIK.js";export{t as BUILT_IN_STRATEGIES,b as ConceptGraph,g as DEFAULT_ACTIVATION_CONFIG,a as DEFAULT_CONCEPT_GRAPH_CONFIG,m as DEFAULT_DREAM_CONFIG,q as DEFAULT_DREAM_SCHEDULER_CONFIG,i as DEFAULT_INSIGHT_CONFIG,k as DEFAULT_VALIDATION_THRESHOLDS,n as DreamEngine,r as DreamScheduler,f as HISTORY_TRIM_TARGET_RATIO,j as InsightGenerator,d as MAX_ACTIVATION_HISTORY_ENTRIES,e as MAX_COACTIVATION_ENTRIES,l as RVCOWBranchManager,u as SpeculativeDreamer,h as SpreadingActivation,c as createConceptGraph,o as createDreamEngine,s as createDreamScheduler,p as default};
@@ -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.9.18");process.exit(0)}
2
- import{a,c as b}from"./chunk-TFUWIKGZ.js";import"./chunk-JBW2A2O6.js";import"./chunk-FTIHPDWV.js";import"./chunk-FKNYOKIK.js";b();export{a as HnswAdapter};
@@ -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.9.18");process.exit(0)}
2
- import{a,b,c,d}from"./chunk-BXTHB2A2.js";import"./chunk-4XYQJ4LQ.js";import"./chunk-6KTF7QB3.js";import"./chunk-QGSELG75.js";import"./chunk-TFUWIKGZ.js";import"./chunk-JBW2A2O6.js";import"./chunk-FTIHPDWV.js";import"./chunk-FKNYOKIK.js";export{a as DEFAULT_HNSW_CONFIG,b as HNSWIndex,d as benchmarkHNSW,c as createHNSWIndex};