agentic-qe 3.9.36 → 3.10.0

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 (302) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +75 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/cli/bundle.js +5 -5
  5. package/dist/cli/chunks/adapter-WTE6UVGP.js +2 -0
  6. package/dist/cli/chunks/{agent-booster-wasm-L6D36M77.js → agent-booster-wasm-5UDM2PWG.js} +2 -2
  7. package/dist/cli/chunks/{agent-handler-3JNKP4OI.js → agent-handler-JSYER5YC.js} +2 -2
  8. package/dist/cli/chunks/{agent-memory-branch-QBRBX7O4.js → agent-memory-branch-T2SAHI4F.js} +2 -2
  9. package/dist/cli/chunks/aqe-learning-engine-LCLEBU7D.js +2 -0
  10. package/dist/cli/chunks/{audit-M4W43TXQ.js → audit-HIBRVGXG.js} +2 -2
  11. package/dist/cli/chunks/base-73I73HBF.js +2 -0
  12. package/dist/cli/chunks/{hnswlib-node-NN6GB2YD.js → better-sqlite3-Y6GX6CGB.js} +2 -2
  13. package/dist/cli/chunks/{brain-handler-WQN7C55Z.js → brain-handler-N6AWIMXG.js} +3 -3
  14. package/dist/cli/chunks/{branch-enumerator-BOTGLI7M.js → branch-enumerator-VYQGBVEJ.js} +2 -2
  15. package/dist/cli/chunks/{browser-ZFZCR7LP.js → browser-2X4WKZPT.js} +2 -2
  16. package/dist/cli/chunks/browser-workflow-2NSV5O6W.js +2 -0
  17. package/dist/cli/chunks/{chunk-FSDUNGYM.js → chunk-27ACATRH.js} +2 -2
  18. package/dist/cli/chunks/{chunk-SJ3SHZUC.js → chunk-2GL4GH52.js} +4 -4
  19. package/dist/cli/chunks/{chunk-F5IVWV2P.js → chunk-2POXDKUB.js} +1 -1
  20. package/dist/cli/chunks/chunk-3BO7EKGO.js +12 -0
  21. package/dist/cli/chunks/{chunk-BUVY7IGM.js → chunk-3OSCWD7Z.js} +1 -1
  22. package/dist/cli/chunks/{chunk-GW7HWFWQ.js → chunk-3QULDB7K.js} +1 -1
  23. package/dist/cli/chunks/{chunk-PYCYZYIL.js → chunk-3U77XX6J.js} +4 -4
  24. package/dist/cli/chunks/{chunk-EXBJCDFM.js → chunk-4NQ6KANC.js} +2 -2
  25. package/dist/cli/chunks/{chunk-6M44C43I.js → chunk-4UUDFWOP.js} +2 -2
  26. package/dist/cli/chunks/{chunk-FYJE4QLL.js → chunk-4WYGUTSF.js} +2 -2
  27. package/dist/cli/chunks/{chunk-SCBWRKPE.js → chunk-55JPAF56.js} +1 -1
  28. package/dist/cli/chunks/{chunk-TU2PSEDW.js → chunk-5QJDH4Z5.js} +2 -2
  29. package/dist/cli/chunks/{chunk-YMB4YVFX.js → chunk-5RQT7EJP.js} +3 -3
  30. package/dist/cli/chunks/{chunk-X6UGFKHW.js → chunk-5UOV7T36.js} +2 -2
  31. package/dist/cli/chunks/{chunk-KI6RXKP4.js → chunk-66GIKUI2.js} +2 -2
  32. package/dist/cli/chunks/{chunk-BI54GWTK.js → chunk-6F3WJOU2.js} +2 -2
  33. package/dist/cli/chunks/{chunk-OO2JHVMS.js → chunk-6H5MRVJS.js} +3 -3
  34. package/dist/cli/chunks/{chunk-O5JNHH2D.js → chunk-6HCHW5TS.js} +2 -2
  35. package/dist/cli/chunks/{chunk-JD3VV2BD.js → chunk-6MONUYQ5.js} +2 -2
  36. package/dist/cli/chunks/{chunk-RDXIRE2I.js → chunk-7Y54QZKF.js} +2 -2
  37. package/dist/cli/chunks/{chunk-P7IOH7L4.js → chunk-7ZIRDBXH.js} +1 -1
  38. package/dist/cli/chunks/{chunk-AWC7G2D3.js → chunk-AFFYJSW2.js} +2 -2
  39. package/dist/cli/chunks/{chunk-I7BXATQ6.js → chunk-ALCQRJDY.js} +2 -2
  40. package/dist/cli/chunks/{chunk-VENEJ3UI.js → chunk-BQT4J3BD.js} +2 -2
  41. package/dist/cli/chunks/{chunk-5OAAJUGO.js → chunk-BQX5QDU5.js} +1 -1
  42. package/dist/cli/chunks/{chunk-CJQT3MYN.js → chunk-BTIVIWIG.js} +1 -1
  43. package/dist/cli/chunks/{chunk-6M2POFDF.js → chunk-BXCS55GB.js} +1 -1
  44. package/dist/cli/chunks/{chunk-MJJAHA2T.js → chunk-C5QESAYA.js} +1 -1
  45. package/dist/cli/chunks/{chunk-NYU4YD5V.js → chunk-CU4IUJ2K.js} +2 -2
  46. package/dist/cli/chunks/{chunk-LPVRFVSC.js → chunk-DQJJS4AX.js} +2 -2
  47. package/dist/cli/chunks/{chunk-GFMSAL5Y.js → chunk-DQLEZBWV.js} +2 -2
  48. package/dist/cli/chunks/{chunk-5SYH5QMQ.js → chunk-DXV6NRG3.js} +2 -2
  49. package/dist/cli/chunks/{chunk-EAMKH35X.js → chunk-DY7IRNE2.js} +1 -1
  50. package/dist/cli/chunks/{chunk-4R3WXD4U.js → chunk-F363JJUI.js} +1 -1
  51. package/dist/cli/chunks/{chunk-JFDNNXIX.js → chunk-FCSJ7GIZ.js} +2 -2
  52. package/dist/cli/chunks/{chunk-QMUTKI34.js → chunk-FEBXP74Y.js} +1 -1
  53. package/dist/cli/chunks/{chunk-EXUT2LCP.js → chunk-FQ5FT7IE.js} +1 -1
  54. package/dist/cli/chunks/{chunk-MEQ4OPSL.js → chunk-FX4SYT6Y.js} +3 -3
  55. package/dist/cli/chunks/{chunk-ZK6GXL5J.js → chunk-G2HA2O3R.js} +2 -2
  56. package/dist/cli/chunks/{chunk-TCDGJYM2.js → chunk-GPKZ4MMH.js} +1 -1
  57. package/dist/cli/chunks/{chunk-66636UWH.js → chunk-GXCD7GNH.js} +2 -2
  58. package/dist/cli/chunks/{chunk-CAGRQR2U.js → chunk-HD5NQDOL.js} +2 -2
  59. package/dist/cli/chunks/{chunk-5ZTY5JJX.js → chunk-HD6CZBZV.js} +2 -2
  60. package/dist/cli/chunks/{chunk-JA7YARLP.js → chunk-HIWBW4IQ.js} +1 -1
  61. package/dist/cli/chunks/{chunk-YUFUGGXY.js → chunk-HZPXOAFW.js} +2 -2
  62. package/dist/cli/chunks/{chunk-3CIQ6CQ4.js → chunk-I4E6CLC4.js} +2 -2
  63. package/dist/cli/chunks/{chunk-FK4B2HIW.js → chunk-I4T4JPR2.js} +1 -1
  64. package/dist/cli/chunks/{chunk-X6IEQVSF.js → chunk-IBXNBLGM.js} +2 -2
  65. package/dist/cli/chunks/{chunk-GLI5EN6O.js → chunk-IQNR662U.js} +2 -2
  66. package/dist/cli/chunks/{chunk-YKZ3ZJWT.js → chunk-J5RJYFRM.js} +2 -2
  67. package/dist/cli/chunks/{chunk-27FNROZ2.js → chunk-JCKX2LEJ.js} +9 -9
  68. package/dist/cli/chunks/{chunk-IMP43AXO.js → chunk-JKVNZASH.js} +2 -2
  69. package/dist/cli/chunks/{chunk-Z5A2ENBC.js → chunk-JUICZG3T.js} +2 -2
  70. package/dist/cli/chunks/{chunk-MFPVS2KP.js → chunk-KCHFF4IE.js} +9 -9
  71. package/dist/cli/chunks/{chunk-TG44VKO3.js → chunk-KDFW7MVM.js} +2 -2
  72. package/dist/cli/chunks/{chunk-O4C3JEOR.js → chunk-KNL3QWVA.js} +2 -2
  73. package/dist/cli/chunks/{chunk-ZBY4HSHR.js → chunk-KOSKGZK4.js} +2 -2
  74. package/dist/cli/chunks/{chunk-G7YDYXQH.js → chunk-KYLJERZ3.js} +2 -2
  75. package/dist/cli/chunks/{chunk-7ZCDG3IM.js → chunk-L2AIES7X.js} +1 -1
  76. package/dist/cli/chunks/{chunk-6DACR7QY.js → chunk-L3IFZ4IX.js} +2 -2
  77. package/dist/cli/chunks/{chunk-2AANIKDG.js → chunk-L4N6PTIC.js} +2 -2
  78. package/dist/cli/chunks/{chunk-BNFW4LMD.js → chunk-LDMG4372.js} +2 -2
  79. package/dist/cli/chunks/{chunk-QH7K2UPP.js → chunk-LQ3TA22E.js} +2 -2
  80. package/dist/cli/chunks/{chunk-EDG4NEET.js → chunk-LRISVDVO.js} +1 -1
  81. package/dist/cli/chunks/{chunk-XNXFEMWT.js → chunk-LXHA55EB.js} +1 -1
  82. package/dist/cli/chunks/{chunk-AJ2VFSLX.js → chunk-LYVFC7C7.js} +2 -2
  83. package/dist/cli/chunks/{chunk-U6QAKKNB.js → chunk-M3M7HXDH.js} +2 -2
  84. package/dist/cli/chunks/{chunk-PY4B37U3.js → chunk-M4HDBRVJ.js} +1 -1
  85. package/dist/cli/chunks/{chunk-6BHUKCLI.js → chunk-M73IL7FA.js} +2 -2
  86. package/dist/cli/chunks/{chunk-F57OUXHJ.js → chunk-MF3XRML3.js} +2 -2
  87. package/dist/cli/chunks/{chunk-NKA3X6VT.js → chunk-MJBXQXSX.js} +1 -1
  88. package/dist/cli/chunks/{chunk-D5CLABLM.js → chunk-NLCUQMUR.js} +2 -2
  89. package/dist/cli/chunks/{chunk-IF4ZZ2HD.js → chunk-NT4PI5HI.js} +2 -2
  90. package/dist/cli/chunks/{chunk-74DA4P5K.js → chunk-NWHSEXHA.js} +1 -1
  91. package/dist/cli/chunks/{chunk-Y4ERDIPP.js → chunk-O3NAUNFC.js} +2 -2
  92. package/dist/cli/chunks/{chunk-AH3UC4IV.js → chunk-OGT45MZN.js} +2 -2
  93. package/dist/cli/chunks/{chunk-HOZNVDFF.js → chunk-OKGK7DBT.js} +2 -2
  94. package/dist/cli/chunks/{chunk-U7B4WCBY.js → chunk-OUJJ34JH.js} +1 -1
  95. package/dist/cli/chunks/{chunk-P4VQTIJE.js → chunk-OWMGD7FO.js} +3 -3
  96. package/dist/cli/chunks/{chunk-PGRDHDEJ.js → chunk-P6XYFDXN.js} +1 -1
  97. package/dist/cli/chunks/{chunk-NMHULQAV.js → chunk-PNDO4W4L.js} +2 -2
  98. package/dist/cli/chunks/{chunk-MAHLTWGV.js → chunk-QL3U5VSM.js} +2 -2
  99. package/dist/cli/chunks/{chunk-RCU5L7FF.js → chunk-QU54GUEA.js} +2 -2
  100. package/dist/cli/chunks/{chunk-OLBYILKU.js → chunk-QWBO76AU.js} +2 -2
  101. package/dist/cli/chunks/{chunk-QYUWWTE3.js → chunk-RARSTEUO.js} +1 -1
  102. package/dist/cli/chunks/{chunk-PUZAIRMY.js → chunk-RF6QKV7M.js} +2 -2
  103. package/dist/cli/chunks/{chunk-7TO7NTLT.js → chunk-RGONSQ44.js} +8 -8
  104. package/dist/cli/chunks/{chunk-A3TOJ4KN.js → chunk-RH3PHCJT.js} +2 -2
  105. package/dist/cli/chunks/{chunk-5M63H6RY.js → chunk-S33246T4.js} +1 -1
  106. package/dist/cli/chunks/{chunk-ESIE3MT5.js → chunk-S4CNA6Z5.js} +3 -3
  107. package/dist/cli/chunks/{chunk-GWLLNJ64.js → chunk-SCYF5CQA.js} +1 -1
  108. package/dist/cli/chunks/{chunk-DTJHO3WI.js → chunk-SGONA5GS.js} +2 -2
  109. package/dist/cli/chunks/{chunk-CLATNP57.js → chunk-T7DLX3LS.js} +3 -3
  110. package/dist/cli/chunks/{chunk-QAGAEAKM.js → chunk-TEJPHJMW.js} +2 -2
  111. package/dist/cli/chunks/{chunk-W2DF6FNE.js → chunk-TR7BZLB6.js} +1 -1
  112. package/dist/cli/chunks/{chunk-L3JJ52N6.js → chunk-U56TIYGP.js} +2 -2
  113. package/dist/cli/chunks/{chunk-TOZ6WUAB.js → chunk-UCIJCRPB.js} +2 -2
  114. package/dist/cli/chunks/{chunk-AH3TKDVW.js → chunk-UCXQQCIP.js} +2 -2
  115. package/dist/cli/chunks/{chunk-5MSZREOD.js → chunk-UE3XXKLN.js} +2 -2
  116. package/dist/cli/chunks/{chunk-556GYKN5.js → chunk-UGX4EHT5.js} +2 -2
  117. package/dist/cli/chunks/{chunk-2EWOYVH3.js → chunk-URVDWF2Y.js} +2 -2
  118. package/dist/cli/chunks/{chunk-DCXFHBHS.js → chunk-V5TRAL57.js} +2 -2
  119. package/dist/cli/chunks/{chunk-LIE24NRL.js → chunk-VEOQH4W6.js} +2 -2
  120. package/dist/cli/chunks/{chunk-AY2LLGZN.js → chunk-VMJXNTJT.js} +4 -4
  121. package/dist/cli/chunks/{chunk-FZA674BT.js → chunk-VTIXFHZR.js} +2 -2
  122. package/dist/cli/chunks/{chunk-GAC4MD6S.js → chunk-VTO5O7DA.js} +1 -1
  123. package/dist/cli/chunks/{chunk-G6Q66YLG.js → chunk-W6U7SIIK.js} +3 -3
  124. package/dist/cli/chunks/{chunk-CSDGFQKW.js → chunk-WC6KZDPM.js} +2 -2
  125. package/dist/cli/chunks/{chunk-2KMCRASK.js → chunk-WG6I7YF3.js} +1 -1
  126. package/dist/cli/chunks/{chunk-TK7TGVVQ.js → chunk-WLLE54TA.js} +1 -1
  127. package/dist/cli/chunks/{chunk-HHGZ4LXC.js → chunk-WVCIZIKH.js} +1 -1
  128. package/dist/cli/chunks/{chunk-NKBCAW27.js → chunk-X4U5NYB6.js} +1 -1
  129. package/dist/cli/chunks/chunk-X73CRYF4.js +2 -0
  130. package/dist/cli/chunks/{chunk-5ECOD4O6.js → chunk-XFMSHTXG.js} +1 -1
  131. package/dist/cli/chunks/{chunk-LUFY3GGI.js → chunk-XFUU2RCA.js} +2 -2
  132. package/dist/cli/chunks/{chunk-QXM3PRVR.js → chunk-Y4I5JBOL.js} +2 -2
  133. package/dist/cli/chunks/{chunk-C2JK5O55.js → chunk-YHNEBCYQ.js} +2 -2
  134. package/dist/cli/chunks/{chunk-5RPHV7Y3.js → chunk-YYDHTBHE.js} +1 -1
  135. package/dist/cli/chunks/{chunk-DKBBMZWB.js → chunk-Z2SCTEZD.js} +2 -2
  136. package/dist/cli/chunks/{chunk-CK5TGFII.js → chunk-Z6JLPPAY.js} +1 -1
  137. package/dist/cli/chunks/{chunk-TXSVZYFA.js → chunk-ZCNVFULO.js} +2 -2
  138. package/dist/cli/chunks/{chunk-YE42UTLT.js → chunk-ZFBMBCKN.js} +2 -2
  139. package/dist/cli/chunks/{chunk-BGD65PL4.js → chunk-ZYZWBNKT.js} +1 -1
  140. package/dist/cli/chunks/{ci-YA6SQ3PU.js → ci-7TR4NQ5I.js} +2 -2
  141. package/dist/cli/chunks/{ci-output-KKHXCQI4.js → ci-output-SLTICF3O.js} +2 -2
  142. package/dist/cli/chunks/{circuit-breaker-RTBCXGKA.js → circuit-breaker-7GVVTMBY.js} +2 -2
  143. package/dist/cli/chunks/{claude-flow-setup-CRV3Y6LO.js → claude-flow-setup-TYCWYEMM.js} +2 -2
  144. package/dist/cli/chunks/client-7GB4WWUD.js +2 -0
  145. package/dist/cli/chunks/{cline-installer-IS2VLXQS.js → cline-installer-ESIAJOLK.js} +2 -2
  146. package/dist/cli/chunks/{code-3CSNTK5O.js → code-I42JGOVI.js} +2 -2
  147. package/dist/cli/chunks/{code-index-extractor-P2YXEJGV.js → code-index-extractor-2CCXPCQW.js} +2 -2
  148. package/dist/cli/chunks/{codex-installer-QGDV2CAQ.js → codex-installer-HEZRDNUT.js} +2 -2
  149. package/dist/cli/chunks/{completions-TYECEYHY.js → completions-44HLIZGI.js} +2 -2
  150. package/dist/cli/chunks/{complexity-analyzer-GA5KSFF2.js → complexity-analyzer-SOCSFDVO.js} +2 -2
  151. package/dist/cli/chunks/{continuedev-installer-NW5Y4ZMI.js → continuedev-installer-Q7O4HLIM.js} +2 -2
  152. package/dist/cli/chunks/{copilot-installer-E5BIBYG6.js → copilot-installer-GIWCVLCS.js} +2 -2
  153. package/dist/cli/chunks/{cost-tracker-JLSEY4ID.js → cost-tracker-G7BONKEV.js} +2 -2
  154. package/dist/cli/chunks/{coverage-4TH275AN.js → coverage-5TWVP7KY.js} +3 -3
  155. package/dist/cli/chunks/cross-domain-router-7HQ74TLE.js +2 -0
  156. package/dist/cli/chunks/{cursor-installer-4SXSE5YT.js → cursor-installer-43EQZSB5.js} +2 -2
  157. package/dist/cli/chunks/{daemon-U6MP4P6S.js → daemon-QQZE4BU2.js} +4 -4
  158. package/dist/cli/chunks/{daemon-7T4RZQH6.js → daemon-ZXHFRDKG.js} +3 -3
  159. package/dist/cli/chunks/{dag-attention-scheduler-DT2V46XR.js → dag-attention-scheduler-GOZAVAZQ.js} +2 -2
  160. package/dist/cli/chunks/{detect-WHSTB4QT.js → detect-X777GVJ4.js} +2 -2
  161. package/dist/cli/chunks/{dist-node-4LC2RJXW.js → dist-node-EZZK46TB.js} +2 -2
  162. package/dist/cli/chunks/{domain-handler-A2LOOU7Y.js → domain-handler-ZT32DKYY.js} +2 -2
  163. package/dist/cli/chunks/{domain-transfer-4RJTMB3Y.js → domain-transfer-LHQVSLJW.js} +2 -2
  164. package/dist/cli/chunks/dream-G5SEFHI4.js +2 -0
  165. package/dist/cli/chunks/{embed-and-insert-pattern-PR3KTT24.js → embed-and-insert-pattern-XFYPPWG7.js} +2 -2
  166. package/dist/cli/chunks/{eval-2HRBMOOB.js → eval-V4NYJZUZ.js} +2 -2
  167. package/dist/cli/chunks/{experience-capture-middleware-X46IYOSD.js → experience-capture-middleware-HXX2W4GL.js} +3 -3
  168. package/dist/cli/chunks/{fast-paths-LYYYU362.js → fast-paths-RBPWQSFJ.js} +2 -2
  169. package/dist/cli/chunks/{feature-flags-TKDXIHOH.js → feature-flags-INJJZBMN.js} +2 -2
  170. package/dist/cli/chunks/{feature-flags-RNAMQPUN.js → feature-flags-NX5EXRO3.js} +2 -2
  171. package/dist/cli/chunks/{file-discovery-MKGGMDIW.js → file-discovery-SNFSG6NK.js} +2 -2
  172. package/dist/cli/chunks/{fleet-OY4IBCZG.js → fleet-6SDN4UWE.js} +3 -3
  173. package/dist/cli/chunks/{gnn-wrapper-G5OGHVAQ.js → gnn-wrapper-2JDRTDDK.js} +2 -2
  174. package/dist/cli/chunks/{heartbeat-handler-N7IUATSD.js → heartbeat-handler-QLK6E7KA.js} +4 -4
  175. package/dist/cli/chunks/heartbeat-scheduler-NG7BY3FR.js +2 -0
  176. package/dist/cli/chunks/hnsw-adapter-TDSLUI7K.js +2 -0
  177. package/dist/cli/chunks/hnsw-index-OWLQSOQH.js +2 -0
  178. package/dist/cli/chunks/{hnsw-legacy-bridge-TMCMZDVF.js → hnsw-legacy-bridge-Q2ZEZQKB.js} +2 -2
  179. package/dist/cli/chunks/{better-sqlite3-SPABZYYQ.js → hnswlib-node-TA4DZV62.js} +2 -2
  180. package/dist/cli/chunks/{hooks-5QDXEZ25.js → hooks-D4YENHO2.js} +10 -10
  181. package/dist/cli/chunks/{hybrid-router-IY62NN7G.js → hybrid-router-URU2XLBD.js} +2 -2
  182. package/dist/cli/chunks/{hypergraph-engine-QQYKS2F3.js → hypergraph-engine-G72U446M.js} +2 -2
  183. package/dist/cli/chunks/{hypergraph-handler-YXFNXMRF.js → hypergraph-handler-TRZ5FDRH.js} +3 -3
  184. package/dist/cli/chunks/impact-analyzer-NMTN75KA.js +2 -0
  185. package/dist/cli/chunks/{init-handler-SFFSDGEF.js → init-handler-3ZD4GCT4.js} +6 -6
  186. package/dist/cli/chunks/init-wizard-SHBFYGBV.js +2 -0
  187. package/dist/cli/chunks/kernel-7KVY2JGO.js +2 -0
  188. package/dist/cli/chunks/{kilocode-installer-QFRYXQYY.js → kilocode-installer-AXSIW3XW.js} +2 -2
  189. package/dist/cli/chunks/{kiro-installer-7L2EYEOR.js → kiro-installer-JQGIFWBK.js} +2 -2
  190. package/dist/cli/chunks/knowledge-graph-V4G5J5B7.js +2 -0
  191. package/dist/cli/chunks/{learning-7TVVL5UH.js → learning-SPO7TGWX.js} +3 -3
  192. package/dist/cli/chunks/{llm-router-S3HHVPH4.js → llm-router-G6N2OKDA.js} +4 -4
  193. package/dist/cli/chunks/{load-Y46RO7BF.js → load-XIDDK64U.js} +2 -2
  194. package/dist/cli/chunks/load-test-N4RNPLG4.js +2 -0
  195. package/dist/cli/chunks/{mcp-PYNP2S5O.js → mcp-3JXRGXO4.js} +2 -2
  196. package/dist/cli/chunks/{memory-DAVXW5OP.js → memory-A66KRS2P.js} +5 -5
  197. package/dist/cli/chunks/memory-backend-HPGJ5YDQ.js +2 -0
  198. package/dist/cli/chunks/{memory-handlers-6COHVON7.js → memory-handlers-K33YVCVQ.js} +2 -2
  199. package/dist/cli/chunks/{multi-model-executor-7ECJRCM3.js → multi-model-executor-XCDGUVCE.js} +2 -2
  200. package/dist/cli/chunks/{opencode-installer-H7QOONUC.js → opencode-installer-GELXWLF2.js} +2 -2
  201. package/dist/cli/chunks/{orchestrator-TSJ2F3MG.js → orchestrator-CCS3K6NH.js} +5 -5
  202. package/dist/cli/chunks/{pipeline-SXR4MRY7.js → pipeline-Z5C72H5S.js} +2 -2
  203. package/dist/cli/chunks/{platform-7NOS56VD.js → platform-4AK7XJ3Y.js} +2 -2
  204. package/dist/cli/chunks/{plugin-VLSWBGJN.js → plugin-7RYBIZI7.js} +2 -2
  205. package/dist/cli/chunks/{prime-radiant-advanced-wasm-7ZHSOP7H.js → prime-radiant-advanced-wasm-E5PARKRX.js} +2 -2
  206. package/dist/cli/chunks/protocol-executor-GNVWUJUP.js +2 -0
  207. package/dist/cli/chunks/{protocol-handler-LWNYDM4D.js → protocol-handler-R6QJQFNL.js} +2 -2
  208. package/dist/cli/chunks/{prove-JYFW3OBB.js → prove-7ESQ2YAL.js} +2 -2
  209. package/dist/cli/chunks/{provider-manager-VPS4W7KG.js → provider-manager-HV55NIIO.js} +2 -2
  210. package/dist/cli/chunks/qe-reasoning-bank-DDSBHO6D.js +2 -0
  211. package/dist/cli/chunks/{quality-FCAOFXZ2.js → quality-4UE345QA.js} +2 -2
  212. package/dist/cli/chunks/queen-coordinator-BQJ5O63C.js +2 -0
  213. package/dist/cli/chunks/real-embeddings-TYIVN3N5.js +2 -0
  214. package/dist/cli/chunks/{roocode-installer-ZVGJSAWD.js → roocode-installer-2KOANC47.js} +2 -2
  215. package/dist/cli/chunks/router-C2RKWB7J.js +2 -0
  216. package/dist/cli/chunks/routing-feedback-RHATTSJ6.js +2 -0
  217. package/dist/cli/chunks/{routing-handler-AGDHK3A2.js → routing-handler-JFEYTN7T.js} +2 -2
  218. package/dist/cli/chunks/{ruvector-commands-UGZINDCN.js → ruvector-commands-KSLSZRJX.js} +2 -2
  219. package/dist/cli/chunks/{rvf-dual-writer-PW7H6G4V.js → rvf-dual-writer-EPBL226J.js} +2 -2
  220. package/dist/cli/chunks/{rvf-migration-adapter-ZKOTVCHJ.js → rvf-migration-adapter-25KSI6SF.js} +2 -2
  221. package/dist/cli/chunks/{rvf-migration-coordinator-SCBEMOP3.js → rvf-migration-coordinator-2XBYHPZP.js} +2 -2
  222. package/dist/cli/chunks/rvf-native-adapter-QG4CXHLL.js +2 -0
  223. package/dist/cli/chunks/safe-db-A4KQ2IDB.js +2 -0
  224. package/dist/cli/chunks/schedule-O7MLASQT.js +2 -0
  225. package/dist/cli/chunks/scheduler-HT7RNYQ2.js +2 -0
  226. package/dist/cli/chunks/{security-H7QX46VA.js → security-4XWYKI4O.js} +3 -3
  227. package/dist/cli/chunks/{shared-rvf-adapter-LWYHWJIA.js → shared-rvf-adapter-WRZ3HGDQ.js} +2 -2
  228. package/dist/cli/chunks/{shared-rvf-dual-writer-P2U424FB.js → shared-rvf-dual-writer-DX2N5STR.js} +2 -2
  229. package/dist/cli/chunks/sqlite-persistence-4NNKJ6CQ.js +2 -0
  230. package/dist/cli/chunks/{status-handler-UNX3RA3S.js → status-handler-V75OSXMQ.js} +2 -2
  231. package/dist/cli/chunks/{structural-health-65YV3M5E.js → structural-health-TLX3JHZ6.js} +2 -2
  232. package/dist/cli/chunks/{sync-OZ7CHYYO.js → sync-DXZFMVZQ.js} +2 -2
  233. package/dist/cli/chunks/{sync-B4O3NDJ6.js → sync-KGBEXUF7.js} +2 -2
  234. package/dist/cli/chunks/{task-handler-NIG3USPG.js → task-handler-T3OJ6R7H.js} +2 -2
  235. package/dist/cli/chunks/{task-handlers-Z2PI7BTO.js → task-handlers-NJYR54AS.js} +3 -3
  236. package/dist/cli/chunks/{test-MNLYS3WS.js → test-KMVDNNQA.js} +4 -4
  237. package/dist/cli/chunks/{test-scheduling-VCL6D6T7.js → test-scheduling-R5EQ2XGV.js} +3 -3
  238. package/dist/cli/chunks/{token-bootstrap-DGMEU3W4.js → token-bootstrap-PFKVV3RO.js} +2 -2
  239. package/dist/cli/chunks/{token-usage-IXTYAV5K.js → token-usage-ZLOGA6LR.js} +2 -2
  240. package/dist/cli/chunks/{transformers-5CWLXT2M.js → transformers-TNPSPQI3.js} +2 -2
  241. package/dist/cli/chunks/{tree-sitter-wasm-parser-W3FKJLJG.js → tree-sitter-wasm-parser-A2EEB5BF.js} +2 -2
  242. package/dist/cli/chunks/{types-NVOCAZCQ.js → types-DIXPI4NR.js} +2 -2
  243. package/dist/cli/chunks/unified-memory-CMNJVHOJ.js +2 -0
  244. package/dist/cli/chunks/unified-memory-hnsw-JQLU2KI6.js +2 -0
  245. package/dist/cli/chunks/unified-persistence-I25TEDIU.js +2 -0
  246. package/dist/cli/chunks/{upgrade-VJYD4U4X.js → upgrade-LX5KP6VO.js} +2 -2
  247. package/dist/cli/chunks/{validate-CAKTCZ3T.js → validate-3L6F7M36.js} +2 -2
  248. package/dist/cli/chunks/{validate-swarm-H24JHUTN.js → validate-swarm-FD42ZKAQ.js} +2 -2
  249. package/dist/cli/chunks/{vibium-247XN6V3.js → vibium-GSBSJR53.js} +2 -2
  250. package/dist/cli/chunks/visual-security-AJJIEV5V.js +2 -0
  251. package/dist/cli/chunks/{web-tree-sitter-3DOMHLRH.js → web-tree-sitter-TXHMO4BW.js} +2 -2
  252. package/dist/cli/chunks/{windsurf-installer-S2MOA5TQ.js → windsurf-installer-3EUZ6RD3.js} +2 -2
  253. package/dist/cli/chunks/witness-chain-762QQBTN.js +2 -0
  254. package/dist/cli/chunks/{witness-chain-CKLVPFLG.js → witness-chain-ONAUEJ4M.js} +2 -2
  255. package/dist/cli/chunks/{workflow-GU3IV2OD.js → workflow-E7A6BV4C.js} +4 -4
  256. package/dist/cli/chunks/workflow-orchestrator-ZGPYISKY.js +2 -0
  257. package/dist/cli/chunks/{wrappers-74Y4EKW3.js → wrappers-AHHAQJM3.js} +2 -2
  258. package/dist/learning/embedder-endpoint-client.d.ts +133 -0
  259. package/dist/learning/embedder-endpoint-client.js +426 -0
  260. package/dist/learning/embedder-identity-store.d.ts +30 -0
  261. package/dist/learning/embedder-identity-store.js +136 -0
  262. package/dist/learning/qe-reasoning-bank.js +11 -3
  263. package/dist/learning/real-embeddings.d.ts +28 -0
  264. package/dist/learning/real-embeddings.js +130 -19
  265. package/dist/learning/sqlite-persistence.js +16 -3
  266. package/dist/mcp/bundle.js +399 -389
  267. package/package.json +1 -1
  268. package/dist/cli/chunks/adapter-MISKG4JY.js +0 -2
  269. package/dist/cli/chunks/aqe-learning-engine-NDLBNM6C.js +0 -2
  270. package/dist/cli/chunks/base-OMDJAHGF.js +0 -2
  271. package/dist/cli/chunks/browser-workflow-XUG5Z5CJ.js +0 -2
  272. package/dist/cli/chunks/chunk-USLHYNYG.js +0 -2
  273. package/dist/cli/chunks/chunk-ZYPSXPQ5.js +0 -2
  274. package/dist/cli/chunks/client-VXJRAW3W.js +0 -2
  275. package/dist/cli/chunks/cross-domain-router-AKHC7TFO.js +0 -2
  276. package/dist/cli/chunks/dream-FPWIC7KF.js +0 -2
  277. package/dist/cli/chunks/heartbeat-scheduler-WHGMTRT7.js +0 -2
  278. package/dist/cli/chunks/hnsw-adapter-IA2M5KDH.js +0 -2
  279. package/dist/cli/chunks/hnsw-index-UBXTXXLQ.js +0 -2
  280. package/dist/cli/chunks/impact-analyzer-6PVCOS33.js +0 -2
  281. package/dist/cli/chunks/init-wizard-XHP5C6RD.js +0 -2
  282. package/dist/cli/chunks/kernel-YM5PY5SS.js +0 -2
  283. package/dist/cli/chunks/knowledge-graph-LTUOUHO7.js +0 -2
  284. package/dist/cli/chunks/load-test-CYCAQI3F.js +0 -2
  285. package/dist/cli/chunks/memory-backend-RW2OPAJU.js +0 -2
  286. package/dist/cli/chunks/protocol-executor-CREUYOBZ.js +0 -2
  287. package/dist/cli/chunks/qe-reasoning-bank-J4DLHRJY.js +0 -2
  288. package/dist/cli/chunks/queen-coordinator-MGLNSTPY.js +0 -2
  289. package/dist/cli/chunks/real-embeddings-LE6YXNPZ.js +0 -2
  290. package/dist/cli/chunks/router-CXGPFUT2.js +0 -2
  291. package/dist/cli/chunks/routing-feedback-MZ73LFBP.js +0 -2
  292. package/dist/cli/chunks/rvf-native-adapter-T6JBPHTE.js +0 -2
  293. package/dist/cli/chunks/safe-db-DS4SKPYB.js +0 -2
  294. package/dist/cli/chunks/schedule-H2Q7XWAK.js +0 -2
  295. package/dist/cli/chunks/scheduler-PMZMKQIF.js +0 -2
  296. package/dist/cli/chunks/sqlite-persistence-ONKEAMTQ.js +0 -2
  297. package/dist/cli/chunks/unified-memory-PNHI6I3R.js +0 -2
  298. package/dist/cli/chunks/unified-memory-hnsw-CDV3UMBD.js +0 -2
  299. package/dist/cli/chunks/unified-persistence-FMCHCEZV.js +0 -2
  300. package/dist/cli/chunks/visual-security-3WRJQDUY.js +0 -2
  301. package/dist/cli/chunks/witness-chain-5ZKCKNRJ.js +0 -2
  302. package/dist/cli/chunks/workflow-orchestrator-OBSFY7YK.js +0 -2
@@ -8,21 +8,50 @@
8
8
  // Re-export cosineSimilarity from shared utility for backward compatibility
9
9
  export { cosineSimilarity } from '../shared/utils/vector-math.js';
10
10
  import { toErrorMessage } from '../shared/error-utils.js';
11
+ import { EmbedderEndpointClient, redactEndpoint, } from './embedder-endpoint-client.js';
12
+ import { loadEmbedderIdentity, resetEmbedderIdentityStore, saveEmbedderIdentity, } from './embedder-identity-store.js';
11
13
  // Lazy-loaded transformer pipeline
12
14
  let pipeline = null;
13
15
  let embeddingModel = null;
14
16
  let initPromise = null;
15
17
  let initializationFailed = false;
16
18
  let failureReason = '';
19
+ /**
20
+ * Set when ADR-097 endpoint path is active. Tracked separately so callers
21
+ * (tests, observability) can verify endpoint vs in-process unambiguously.
22
+ */
23
+ let endpointClient = null;
24
+ let endpointIdentity = null;
17
25
  export const DEFAULT_EMBEDDING_CONFIG = {
18
26
  modelName: 'Xenova/all-MiniLM-L6-v2',
19
27
  quantized: true,
20
28
  enableCache: true,
21
29
  maxCacheSize: 10000,
30
+ endpoint: process.env.AQE_EMBEDDER_ENDPOINT,
31
+ endpointToken: process.env.AQE_EMBEDDER_TOKEN,
22
32
  };
23
- // Embedding cache (LRU)
33
+ // Embedding cache (LRU). Keys are namespaced by embedding mode to prevent
34
+ // cross-mode collisions (e.g. flipping endpoint on/off mid-process must not
35
+ // return a vector computed under the other mode). See `cacheKey()`.
24
36
  const embeddingCache = new Map();
25
37
  const CACHE_TTL_MS = 3600000; // 1 hour
38
+ /**
39
+ * Build the cache key for a given text under the current embedding mode.
40
+ * Endpoint mode: `endpoint:<fingerprint>:<text>` — different fingerprints
41
+ * (e.g. after a model swap) get separate cache entries.
42
+ * In-process mode: `inproc:<text>`.
43
+ *
44
+ * Until the endpoint probe completes, calls land under `inproc:` — these get
45
+ * evicted naturally by TTL/LRU after init. Callers should not interleave
46
+ * endpoint-enabled and endpoint-disabled `computeRealEmbedding` against the
47
+ * same text within the cache TTL.
48
+ */
49
+ function cacheKey(text) {
50
+ if (endpointIdentity) {
51
+ return `endpoint:${endpointIdentity.fingerprint}:${text}`;
52
+ }
53
+ return `inproc:${text}`;
54
+ }
26
55
  /**
27
56
  * Detect if text is a JSON metrics/internal data string that shouldn't be embedded.
28
57
  * These strings have no semantic value for vector search and waste compute.
@@ -57,7 +86,45 @@ async function initializeModel(config = {}) {
57
86
  const fullConfig = { ...DEFAULT_EMBEDDING_CONFIG, ...config };
58
87
  initPromise = (async () => {
59
88
  try {
60
- // Dynamic import to avoid issues if transformers not available
89
+ // ADR-097: Endpoint branch when an external embedder endpoint is configured,
90
+ // we MUST NOT import @huggingface/transformers in this process. The cold-load
91
+ // elimination depends on the dynamic import being inside the else branch only.
92
+ if (fullConfig.endpoint) {
93
+ const safeUrl = redactEndpoint(fullConfig.endpoint);
94
+ console.log(`[RealEmbeddings] Using external embedder endpoint: ${safeUrl}`);
95
+ endpointClient = new EmbedderEndpointClient({
96
+ endpoint: fullConfig.endpoint,
97
+ token: fullConfig.endpointToken,
98
+ model: fullConfig.modelName,
99
+ expectedDim: getEmbeddingDimension(),
100
+ });
101
+ // Probe + identity fingerprint. Fails loud on dim mismatch.
102
+ endpointIdentity = await endpointClient.probe();
103
+ console.log(`[RealEmbeddings] Endpoint identity: dim=${endpointIdentity.dim} fingerprint=${endpointIdentity.fingerprint}`);
104
+ // Cross-run drift detection: compare against the last-known identity
105
+ // for this endpoint (memory.db kv_store, namespace _system). If the
106
+ // fingerprint changed since last run, log a loud warning — the operator
107
+ // either intentionally swapped models (fine, but should know) or the
108
+ // remote silently changed (poisoning risk for the existing index).
109
+ try {
110
+ const previous = loadEmbedderIdentity(endpointIdentity.endpoint);
111
+ if (previous && previous.fingerprint !== endpointIdentity.fingerprint) {
112
+ console.warn(`[RealEmbeddings] WARNING: endpoint identity changed since last run. ` +
113
+ `Previous fingerprint=${previous.fingerprint} dim=${previous.dim}, ` +
114
+ `current fingerprint=${endpointIdentity.fingerprint} dim=${endpointIdentity.dim}. ` +
115
+ `Vectors written before this change may no longer be comparable.`);
116
+ }
117
+ saveEmbedderIdentity(endpointIdentity);
118
+ }
119
+ catch (persistErr) {
120
+ // Persistence failure is non-fatal — we still have the in-memory identity
121
+ // for this run. Log so operators see it.
122
+ console.warn(`[RealEmbeddings] Could not persist endpoint identity: ${toErrorMessage(persistErr)}`);
123
+ }
124
+ embeddingModel = createEndpointPipeline(endpointClient);
125
+ return;
126
+ }
127
+ // In-process branch — only here do we import the transformers package.
61
128
  const transformers = await import('@huggingface/transformers');
62
129
  pipeline = transformers.pipeline;
63
130
  console.log(`[RealEmbeddings] Loading model: ${fullConfig.modelName}`);
@@ -77,6 +144,27 @@ async function initializeModel(config = {}) {
77
144
  })();
78
145
  return initPromise;
79
146
  }
147
+ /**
148
+ * Build a FeatureExtractionPipeline-shaped wrapper around the endpoint client.
149
+ * The shape matches `pipeline('feature-extraction', ...)` so the rest of
150
+ * computeRealEmbedding / computeBatchEmbeddings remains unchanged.
151
+ *
152
+ * The endpoint already returns L2-normalized vectors (and we re-normalize on
153
+ * receive inside the client), so the `pooling` / `normalize` options from
154
+ * upstream callers are no-ops here — that's the OpenAI contract.
155
+ */
156
+ function createEndpointPipeline(client) {
157
+ return async (input) => {
158
+ const texts = Array.isArray(input) ? input : [input];
159
+ const vectors = await client.embed(texts);
160
+ const dim = vectors[0]?.length ?? getEmbeddingDimension();
161
+ const data = new Float32Array(texts.length * dim);
162
+ for (let i = 0; i < vectors.length; i++) {
163
+ data.set(vectors[i], i * dim);
164
+ }
165
+ return { data, dims: [texts.length, dim] };
166
+ };
167
+ }
80
168
  /**
81
169
  * Compute real embedding using transformer model
82
170
  *
@@ -90,20 +178,21 @@ export async function computeRealEmbedding(text, config = {}) {
90
178
  if (isNonSemanticText(text)) {
91
179
  return new Array(getEmbeddingDimension()).fill(0);
92
180
  }
93
- // Check cache first
94
- if (fullConfig.enableCache) {
95
- const cached = embeddingCache.get(text);
96
- if (cached && Date.now() - cached.timestamp < CACHE_TTL_MS) {
97
- return cached.embedding;
98
- }
99
- }
100
- // Ensure model is initialized
181
+ // Ensure model is initialized BEFORE checking cache so the cache key
182
+ // namespace (which depends on endpoint identity) is stable.
101
183
  if (!embeddingModel) {
102
184
  await initializeModel(config);
103
185
  }
104
186
  if (!embeddingModel) {
105
187
  throw new Error('Embedding model failed to initialize');
106
188
  }
189
+ const key = cacheKey(text);
190
+ if (fullConfig.enableCache) {
191
+ const cached = embeddingCache.get(key);
192
+ if (cached && Date.now() - cached.timestamp < CACHE_TTL_MS) {
193
+ return cached.embedding;
194
+ }
195
+ }
107
196
  // Compute embedding
108
197
  const startTime = performance.now();
109
198
  const output = await embeddingModel(text, { pooling: 'mean', normalize: true });
@@ -121,7 +210,7 @@ export async function computeRealEmbedding(text, config = {}) {
121
210
  if (oldestKey)
122
211
  embeddingCache.delete(oldestKey);
123
212
  }
124
- embeddingCache.set(text, { embedding, timestamp: Date.now() });
213
+ embeddingCache.set(key, { embedding, timestamp: Date.now() });
125
214
  }
126
215
  return embedding;
127
216
  }
@@ -134,9 +223,16 @@ export async function computeBatchEmbeddings(texts, config = {}) {
134
223
  const uncachedTexts = [];
135
224
  const uncachedIndices = [];
136
225
  const results = new Array(texts.length).fill(null);
226
+ // Init BEFORE cache lookup so the cache key namespace is stable.
227
+ if (!embeddingModel) {
228
+ await initializeModel(config);
229
+ }
230
+ if (!embeddingModel) {
231
+ throw new Error('Embedding model failed to initialize');
232
+ }
137
233
  if (fullConfig.enableCache) {
138
234
  for (let i = 0; i < texts.length; i++) {
139
- const cached = embeddingCache.get(texts[i]);
235
+ const cached = embeddingCache.get(cacheKey(texts[i]));
140
236
  if (cached && Date.now() - cached.timestamp < CACHE_TTL_MS) {
141
237
  results[i] = cached.embedding;
142
238
  }
@@ -154,12 +250,6 @@ export async function computeBatchEmbeddings(texts, config = {}) {
154
250
  }
155
251
  // Compute uncached embeddings
156
252
  if (uncachedTexts.length > 0) {
157
- if (!embeddingModel) {
158
- await initializeModel(config);
159
- }
160
- if (!embeddingModel) {
161
- throw new Error('Embedding model failed to initialize');
162
- }
163
253
  const startTime = performance.now();
164
254
  // Process in batches of 32 for memory efficiency
165
255
  const BATCH_SIZE = 32;
@@ -184,7 +274,7 @@ export async function computeBatchEmbeddings(texts, config = {}) {
184
274
  if (oldestKey)
185
275
  embeddingCache.delete(oldestKey);
186
276
  }
187
- embeddingCache.set(uncachedTexts[textIndex], { embedding, timestamp: Date.now() });
277
+ embeddingCache.set(cacheKey(uncachedTexts[textIndex]), { embedding, timestamp: Date.now() });
188
278
  }
189
279
  }
190
280
  }
@@ -231,5 +321,26 @@ export function resetInitialization() {
231
321
  initializationFailed = false;
232
322
  failureReason = '';
233
323
  embeddingCache.clear();
324
+ if (endpointClient) {
325
+ endpointClient.close();
326
+ }
327
+ endpointClient = null;
328
+ endpointIdentity = null;
329
+ // Drop the identity-store's cached DB connection so tests that flip cwd or
330
+ // AQE_MEMORY_PATH between runs don't write into a stale handle.
331
+ resetEmbedderIdentityStore();
332
+ }
333
+ /**
334
+ * ADR-097: Returns true when the embedding pipeline is the external endpoint path,
335
+ * false when it's the in-process transformer (or uninitialized).
336
+ */
337
+ export function isUsingEndpoint() {
338
+ return endpointClient !== null;
339
+ }
340
+ /**
341
+ * ADR-097: Returns the endpoint identity fingerprint, or null when not using an endpoint.
342
+ */
343
+ export function getEndpointIdentity() {
344
+ return endpointIdentity;
234
345
  }
235
346
  //# sourceMappingURL=real-embeddings.js.map
@@ -16,7 +16,7 @@ import { v4 as uuidv4 } from 'uuid';
16
16
  import { safeJsonParse } from '../shared/safe-json.js';
17
17
  import { toErrorMessage } from '../shared/error-utils.js';
18
18
  import { getUnifiedMemory } from '../kernel/unified-memory.js';
19
- import { computeBatchEmbeddings, getEmbeddingDimension } from './real-embeddings.js';
19
+ import { computeBatchEmbeddings, getEmbeddingDimension, isUsingEndpoint, } from './real-embeddings.js';
20
20
  import { recordPatternUsage } from './pattern-usage-recorder.js';
21
21
  export const DEFAULT_SQLITE_CONFIG = {
22
22
  // LEGACY: Ignored when useUnified=true (the default). All data goes to memory.db
@@ -975,13 +975,26 @@ export class SQLitePatternStore {
975
975
  }
976
976
  if (textsWithIds.length === 0)
977
977
  continue;
978
- // Compute real embeddings via all-MiniLM-L6-v2 (async ONNX inference)
978
+ // Compute real embeddings via all-MiniLM-L6-v2 (async ONNX inference) or
979
+ // the ADR-097 endpoint. We MUST NOT silently fall back to hash embeddings
980
+ // when the endpoint is configured — mixing hash and transformer vectors in
981
+ // the same HNSW index poisons it (vectors are not comparable). When the
982
+ // endpoint is active we propagate the failure: a future backfill will
983
+ // retry; the existing hash-fallback path is preserved only for the
984
+ // in-process transformer-load failure case.
979
985
  let embeddings;
980
986
  try {
981
987
  embeddings = await computeBatchEmbeddings(textsWithIds.map(t => t.text));
982
988
  }
983
989
  catch (e) {
984
- // Transformer unavailable — fall back to hash embeddings for remaining patterns
990
+ if (isUsingEndpoint()) {
991
+ // Endpoint failed (or breaker open). Skip this batch entirely — do NOT
992
+ // poison the index. Re-throw so caller knows the run was incomplete.
993
+ throw new Error(`[SQLitePatternStore] external embedder endpoint failed during backfill; ` +
994
+ `aborting to protect HNSW index. Original error: ${toErrorMessage(e)}`);
995
+ }
996
+ // In-process transformer path: hash fallback is acceptable because the
997
+ // entire index in this mode is hash-based anyway.
985
998
  console.warn(`[SQLitePatternStore] Transformer unavailable, falling back to hash embeddings: ${toErrorMessage(e)}`);
986
999
  method = 'hash-fallback';
987
1000
  embeddings = textsWithIds.map(t => hashEmbedding(t.text, dimension));