agentic-qe 3.8.14 → 3.9.1

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 (451) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +60 -0
  3. package/dist/adapters/a2ui/integration/agui-sync.js +2 -1
  4. package/dist/audit/witness-chain.d.ts +1 -1
  5. package/dist/boot/fast-paths.d.ts +24 -0
  6. package/dist/boot/fast-paths.js +43 -0
  7. package/dist/boot/parallel-prefetch.d.ts +26 -0
  8. package/dist/boot/parallel-prefetch.js +36 -0
  9. package/dist/cli/bundle.js +12 -9431
  10. package/dist/cli/chunks/adapter-NTM4ZH3P.js +2 -0
  11. package/dist/cli/chunks/agent-booster-wasm-UH2J6BNA.js +2 -0
  12. package/dist/cli/chunks/agent-handler-ZCBWQE3X.js +33 -0
  13. package/dist/cli/chunks/agent-memory-branch-2BAVI7UW.js +2 -0
  14. package/dist/cli/chunks/aqe-learning-engine-RVX6MPYK.js +2 -0
  15. package/dist/cli/chunks/audit-G5UIJBSQ.js +3 -0
  16. package/dist/cli/chunks/base-7HKNQ6UP.js +2 -0
  17. package/dist/cli/chunks/better-sqlite3-YHIAPPVT.js +2 -0
  18. package/dist/cli/chunks/brain-handler-5EE3J5PR.js +68 -0
  19. package/dist/cli/chunks/branch-enumerator-OV54PID5.js +7 -0
  20. package/dist/cli/chunks/browser-7RZGKOEO.js +4 -0
  21. package/dist/cli/chunks/browser-workflow-UOFSQK7X.js +2 -0
  22. package/dist/cli/chunks/chunk-24E47G3D.js +604 -0
  23. package/dist/cli/chunks/chunk-35H73OPP.js +2 -0
  24. package/dist/cli/chunks/chunk-36X2O3BL.js +3 -0
  25. package/dist/cli/chunks/chunk-3JESHZQM.js +2 -0
  26. package/dist/cli/chunks/chunk-3VAKR43Z.js +2 -0
  27. package/dist/cli/chunks/chunk-3WQNW6CH.js +2 -0
  28. package/dist/cli/chunks/chunk-43M6Y6VF.js +15 -0
  29. package/dist/cli/chunks/chunk-4BHOAQJH.js +2 -0
  30. package/dist/cli/chunks/chunk-4LWXZCSD.js +146 -0
  31. package/dist/cli/chunks/chunk-4TNXEANY.js +2 -0
  32. package/dist/cli/chunks/chunk-4XBY5JDT.js +4 -0
  33. package/dist/cli/chunks/chunk-4XREPCBZ.js +2 -0
  34. package/dist/cli/chunks/chunk-5GPTM2RV.js +2 -0
  35. package/dist/cli/chunks/chunk-5KBQQP3X.js +7 -0
  36. package/dist/cli/chunks/chunk-5LDBKZ6P.js +2 -0
  37. package/dist/cli/chunks/chunk-6BSJNG2S.js +2 -0
  38. package/dist/cli/chunks/chunk-6YC24TPL.js +27 -0
  39. package/dist/cli/chunks/chunk-7ATLJCSG.js +2 -0
  40. package/dist/cli/chunks/chunk-7JQTHPCD.js +2 -0
  41. package/dist/cli/chunks/chunk-7YUOUVN7.js +2 -0
  42. package/dist/cli/chunks/chunk-7ZNINH6J.js +59 -0
  43. package/dist/cli/chunks/chunk-A57BEPL7.js +3 -0
  44. package/dist/cli/chunks/chunk-AFPMCMVX.js +45 -0
  45. package/dist/cli/chunks/chunk-AREIP4FX.js +3 -0
  46. package/dist/cli/chunks/chunk-B2I7BJLL.js +3 -0
  47. package/dist/cli/chunks/chunk-BEHP3DEF.js +66 -0
  48. package/dist/cli/chunks/chunk-C24ZDUCM.js +30 -0
  49. package/dist/cli/chunks/chunk-D4PSFWND.js +2 -0
  50. package/dist/cli/chunks/chunk-D55PSO5D.js +81 -0
  51. package/dist/cli/chunks/chunk-DC3HPOOJ.js +2 -0
  52. package/dist/cli/chunks/chunk-DMGLX76J.js +180 -0
  53. package/dist/cli/chunks/chunk-E33KQBMW.js +2 -0
  54. package/dist/cli/chunks/chunk-EQFZQPFN.js +2 -0
  55. package/dist/cli/chunks/chunk-FPRL6UDF.js +2 -0
  56. package/dist/cli/chunks/chunk-FRNB4CH2.js +2 -0
  57. package/dist/cli/chunks/chunk-FWDKVTK4.js +2 -0
  58. package/dist/cli/chunks/chunk-GFNUESMU.js +2 -0
  59. package/dist/cli/chunks/chunk-GJW6V35N.js +2 -0
  60. package/dist/cli/chunks/chunk-GLIFZWV2.js +2 -0
  61. package/dist/cli/chunks/chunk-GNUUBTSX.js +14 -0
  62. package/dist/cli/chunks/chunk-HAUXLXKZ.js +2 -0
  63. package/dist/cli/chunks/chunk-HTXSUTWL.js +9 -0
  64. package/dist/cli/chunks/chunk-I5WZ2NM2.js +95 -0
  65. package/dist/cli/chunks/chunk-I7TA453K.js +2 -0
  66. package/dist/cli/chunks/chunk-IF6GW6IY.js +27 -0
  67. package/dist/cli/chunks/chunk-IHWSNYL2.js +5 -0
  68. package/dist/cli/chunks/chunk-IJKYJGJL.js +2 -0
  69. package/dist/cli/chunks/chunk-IQPXANCE.js +14 -0
  70. package/dist/cli/chunks/chunk-JCEY7RLP.js +2 -0
  71. package/dist/cli/chunks/chunk-JSOBRKMA.js +2 -0
  72. package/dist/cli/chunks/chunk-KIGRLIU4.js +2 -0
  73. package/dist/cli/chunks/chunk-L4H54Z27.js +21 -0
  74. package/dist/cli/chunks/chunk-LCOEBFAB.js +2 -0
  75. package/dist/cli/chunks/chunk-MZ54VM6A.js +2 -0
  76. package/dist/cli/chunks/chunk-NB47YT6A.js +167 -0
  77. package/dist/cli/chunks/chunk-NG3BKE7V.js +2 -0
  78. package/dist/cli/chunks/chunk-NG4TE3OW.js +2 -0
  79. package/dist/cli/chunks/chunk-O636JKJR.js +18 -0
  80. package/dist/cli/chunks/chunk-O6QQ4HLS.js +2 -0
  81. package/dist/cli/chunks/chunk-OFNIQCGX.js +2 -0
  82. package/dist/cli/chunks/chunk-OTSJU5LH.js +2 -0
  83. package/dist/cli/chunks/chunk-POLFT2PQ.js +15 -0
  84. package/dist/cli/chunks/chunk-QAYTL6KC.js +2 -0
  85. package/dist/cli/chunks/chunk-QMFP5OKH.js +2 -0
  86. package/dist/cli/chunks/chunk-RAJO7VML.js +2 -0
  87. package/dist/cli/chunks/chunk-RKIGOARX.js +2 -0
  88. package/dist/cli/chunks/chunk-RU6Q5HOC.js +3 -0
  89. package/dist/cli/chunks/chunk-RV6SGDET.js +2 -0
  90. package/dist/cli/chunks/chunk-RWXI7XAR.js +2 -0
  91. package/dist/cli/chunks/chunk-RXVYOXDB.js +2 -0
  92. package/dist/cli/chunks/chunk-SGRN6JFB.js +2 -0
  93. package/dist/cli/chunks/chunk-SVNX4UWR.js +3029 -0
  94. package/dist/cli/chunks/chunk-TL7ABIMP.js +2 -0
  95. package/dist/cli/chunks/chunk-TOLYWONQ.js +2 -0
  96. package/dist/cli/chunks/chunk-TPXYS3WG.js +3 -0
  97. package/dist/cli/chunks/chunk-U5JQGRHZ.js +2 -0
  98. package/dist/cli/chunks/chunk-UB7RGVKO.js +2 -0
  99. package/dist/cli/chunks/chunk-UBKK7KCR.js +70 -0
  100. package/dist/cli/chunks/chunk-UMGWGX7C.js +2 -0
  101. package/dist/cli/chunks/chunk-UN4PA4M2.js +2 -0
  102. package/dist/cli/chunks/chunk-US7INRP2.js +314 -0
  103. package/dist/cli/chunks/chunk-UWDBFPHQ.js +750 -0
  104. package/dist/cli/chunks/chunk-UZZCWWIG.js +2 -0
  105. package/dist/cli/chunks/chunk-V4HM4QAO.js +24 -0
  106. package/dist/cli/chunks/chunk-V4U3CTS2.js +180 -0
  107. package/dist/cli/chunks/chunk-VCCMCFDU.js +2 -0
  108. package/dist/cli/chunks/chunk-VEWIT6VN.js +4 -0
  109. package/dist/cli/chunks/chunk-VNYGVG4Y.js +2 -0
  110. package/dist/cli/chunks/chunk-VO3OVD5D.js +4 -0
  111. package/dist/cli/chunks/chunk-VY74OMGQ.js +6 -0
  112. package/dist/cli/chunks/chunk-WDJBGXC2.js +2 -0
  113. package/dist/cli/chunks/chunk-WDV6TN7E.js +65 -0
  114. package/dist/cli/chunks/chunk-WLXEDOG4.js +2 -0
  115. package/dist/cli/chunks/chunk-WXXAAXNS.js +12 -0
  116. package/dist/cli/chunks/chunk-X4MZYBOU.js +256 -0
  117. package/dist/cli/chunks/chunk-XE2YAYU5.js +12 -0
  118. package/dist/cli/chunks/chunk-XP6XKBNW.js +2 -0
  119. package/dist/cli/chunks/chunk-XPB6ZVQY.js +2 -0
  120. package/dist/cli/chunks/chunk-XRVUSKQV.js +1 -0
  121. package/dist/cli/chunks/chunk-XSITQBYB.js +20 -0
  122. package/dist/cli/chunks/chunk-XTLA4F5Z.js +91 -0
  123. package/dist/cli/chunks/chunk-XU6L2VJY.js +2 -0
  124. package/dist/cli/chunks/chunk-XUFHYPZK.js +2 -0
  125. package/dist/cli/chunks/chunk-Y2ZEDXTV.js +16 -0
  126. package/dist/cli/chunks/chunk-YQWB4QUP.js +316 -0
  127. package/dist/cli/chunks/chunk-YUQIXT3G.js +79 -0
  128. package/dist/cli/chunks/chunk-YYYB2JN5.js +2 -0
  129. package/dist/cli/chunks/chunk-ZEUVPLGX.js +2 -0
  130. package/dist/cli/chunks/chunk-ZSRQHJEW.js +3 -0
  131. package/dist/cli/chunks/ci-N4NTYAAI.js +81 -0
  132. package/dist/cli/chunks/ci-output-XYR2PSYH.js +2 -0
  133. package/dist/cli/chunks/claude-flow-setup-FX7PRBJV.js +2 -0
  134. package/dist/cli/chunks/client-CRRENRK4.js +2 -0
  135. package/dist/cli/chunks/cline-installer-GTHQOK7U.js +4 -0
  136. package/dist/cli/chunks/code-4G6ZHVNI.js +38 -0
  137. package/dist/cli/chunks/code-index-extractor-MKJTP5AK.js +3 -0
  138. package/dist/cli/chunks/codex-installer-UGS773DT.js +8 -0
  139. package/dist/cli/chunks/completions-B3BXNXAU.js +1364 -0
  140. package/dist/cli/chunks/complexity-analyzer-PMN77CUP.js +2 -0
  141. package/dist/cli/chunks/continuedev-installer-3DYKSIP3.js +14 -0
  142. package/dist/cli/chunks/copilot-installer-IUC5HDHD.js +3 -0
  143. package/dist/cli/chunks/cost-tracker-GSGQ7O5T.js +2 -0
  144. package/dist/cli/chunks/coverage-PO72QC3P.js +27 -0
  145. package/dist/cli/chunks/cross-domain-router-FSCGJG3B.js +2 -0
  146. package/dist/cli/chunks/cursor-installer-FK53S3ZL.js +3 -0
  147. package/dist/cli/chunks/daemon-4UIQTQ73.js +19 -0
  148. package/dist/cli/chunks/dag-attention-scheduler-ZGIMLECE.js +2 -0
  149. package/dist/cli/chunks/detect-XXHLTLL7.js +2 -0
  150. package/dist/cli/chunks/domain-handler-PPGFP7P4.js +25 -0
  151. package/dist/cli/chunks/domain-transfer-Q5UAE65W.js +2 -0
  152. package/dist/cli/chunks/dream-PONKQULG.js +2 -0
  153. package/dist/cli/chunks/esm-node-XLWDJRBX.js +2 -0
  154. package/dist/cli/chunks/eval-JVJKHSTQ.js +15 -0
  155. package/dist/cli/chunks/fast-paths-3KX4ZV66.js +2 -0
  156. package/dist/cli/chunks/feature-flags-2NOVE7DL.js +2 -0
  157. package/dist/cli/chunks/feature-flags-GKHHG2I2.js +2 -0
  158. package/dist/cli/chunks/file-discovery-XFSGQNM3.js +2 -0
  159. package/dist/cli/chunks/fleet-FOIDAXLR.js +43 -0
  160. package/dist/cli/chunks/gnn-wrapper-HPCQREKP.js +2 -0
  161. package/dist/cli/chunks/heartbeat-handler-HTR3EFFV.js +48 -0
  162. package/dist/cli/chunks/heartbeat-scheduler-NZQWN7CH.js +2 -0
  163. package/dist/cli/chunks/hnsw-adapter-BNA5WUAB.js +2 -0
  164. package/dist/cli/chunks/hnsw-index-RQIIAE7S.js +2 -0
  165. package/dist/cli/chunks/hnsw-legacy-bridge-H6OA3AA3.js +2 -0
  166. package/dist/cli/chunks/hnswlib-node-FF27BDMD.js +2 -0
  167. package/dist/cli/chunks/hooks-63NZQ7NH.js +101 -0
  168. package/dist/cli/chunks/hypergraph-engine-XMSLA4XH.js +2 -0
  169. package/dist/cli/chunks/hypergraph-handler-ID6J6GS2.js +35 -0
  170. package/dist/cli/chunks/impact-analyzer-FS2UNVP4.js +2 -0
  171. package/dist/cli/chunks/init-handler-CIKZGGAY.js +68 -0
  172. package/dist/cli/chunks/init-wizard-TUU5PPY6.js +2 -0
  173. package/dist/cli/chunks/kernel-XFG42WAG.js +2 -0
  174. package/dist/cli/chunks/kilocode-installer-N7NLISYY.js +4 -0
  175. package/dist/cli/chunks/kiro-installer-U6XIPAT3.js +74 -0
  176. package/dist/cli/chunks/knowledge-graph-XV7FPU2T.js +2 -0
  177. package/dist/cli/chunks/learning-NKOF7KDJ.js +107 -0
  178. package/dist/cli/chunks/llm-router-34WHT3PH.js +30 -0
  179. package/dist/cli/chunks/load-ZW4Z3YLT.js +2 -0
  180. package/dist/cli/chunks/load-test-F4L7RTXJ.js +2 -0
  181. package/dist/cli/chunks/mcp-6R7SVGKO.js +2 -0
  182. package/dist/cli/chunks/memory-OUYCBU4M.js +32 -0
  183. package/dist/cli/chunks/memory-backend-DTJD2DWF.js +2 -0
  184. package/dist/cli/chunks/memory-handlers-WNXKZRNM.js +2 -0
  185. package/dist/cli/chunks/opencode-installer-FR75GHFU.js +3 -0
  186. package/dist/cli/chunks/orchestrator-AK7ZMVNH.js +371 -0
  187. package/dist/cli/chunks/pipeline-CFOPG7EM.js +19 -0
  188. package/dist/cli/chunks/platform-NY3ULBR7.js +2 -0
  189. package/dist/cli/chunks/plugin-LRANQYUR.js +27 -0
  190. package/dist/cli/chunks/prime-radiant-advanced-wasm-6KEIU55P.js +2 -0
  191. package/dist/cli/chunks/protocol-executor-6W4PS2D4.js +2 -0
  192. package/dist/cli/chunks/protocol-handler-ESSZGJ7R.js +20 -0
  193. package/dist/cli/chunks/prove-EF2PPY65.js +3 -0
  194. package/dist/cli/chunks/qe-reasoning-bank-7G3TZLEA.js +2 -0
  195. package/dist/cli/chunks/quality-AYBXB635.js +7 -0
  196. package/dist/cli/chunks/queen-coordinator-NFPKGMQN.js +2 -0
  197. package/dist/cli/chunks/real-embeddings-QPBXE7MA.js +2 -0
  198. package/dist/cli/chunks/roocode-installer-UF6MMBH6.js +4 -0
  199. package/dist/cli/chunks/router-F4B7Q66G.js +2 -0
  200. package/dist/cli/chunks/routing-feedback-5CIDDW7P.js +2 -0
  201. package/dist/cli/chunks/routing-handler-5TVKFU7V.js +20 -0
  202. package/dist/cli/chunks/ruvector-commands-E33VXFIA.js +8 -0
  203. package/dist/cli/chunks/rvf-dual-writer-O3AZKD24.js +2 -0
  204. package/dist/cli/chunks/rvf-migration-adapter-IKEUZ2HX.js +2 -0
  205. package/dist/cli/chunks/rvf-migration-coordinator-M4H7W4RN.js +2 -0
  206. package/dist/cli/chunks/rvf-native-adapter-UX3WAPIP.js +2 -0
  207. package/dist/cli/chunks/safe-db-QBBNXEVK.js +2 -0
  208. package/dist/cli/chunks/schedule-GFT4NN6Z.js +2 -0
  209. package/dist/cli/chunks/scheduler-CQ56T7DB.js +2 -0
  210. package/dist/cli/chunks/security-ZLWT7IU3.js +14 -0
  211. package/dist/cli/chunks/shared-rvf-adapter-EXACQ2PT.js +2 -0
  212. package/dist/cli/chunks/shared-rvf-dual-writer-G43LQDIV.js +2 -0
  213. package/dist/cli/chunks/sqlite-persistence-JHSUZPAW.js +2 -0
  214. package/dist/cli/chunks/status-handler-7P23CXUI.js +45 -0
  215. package/dist/cli/chunks/structural-health-SCNBNL7K.js +2 -0
  216. package/dist/cli/chunks/sync-BYZBBH65.js +23 -0
  217. package/dist/cli/chunks/task-handler-DWJQXZ2K.js +49 -0
  218. package/dist/cli/chunks/task-handlers-35JIXVRW.js +2 -0
  219. package/dist/cli/chunks/test-2JSS4XW7.js +33 -0
  220. package/dist/cli/chunks/test-scheduling-TWJ5I7N3.js +15 -0
  221. package/dist/cli/chunks/token-bootstrap-LLLNJT5V.js +2 -0
  222. package/dist/cli/chunks/token-usage-EQ4HM4EZ.js +25 -0
  223. package/dist/cli/chunks/transformers-PBIR5U5S.js +2 -0
  224. package/dist/cli/chunks/tree-sitter-wasm-parser-X3L2GXUX.js +2 -0
  225. package/dist/cli/chunks/types-OD43K2NP.js +2 -0
  226. package/dist/cli/chunks/unified-memory-YPHONR2T.js +2 -0
  227. package/dist/cli/chunks/unified-memory-hnsw-HJS4OXWM.js +2 -0
  228. package/dist/cli/chunks/unified-persistence-EFZRO6AW.js +2 -0
  229. package/dist/cli/chunks/validate-POMLT2KU.js +21 -0
  230. package/dist/cli/chunks/validate-swarm-UOC4JGZT.js +14 -0
  231. package/dist/cli/chunks/vibium-5JF6LAXI.js +2 -0
  232. package/dist/cli/chunks/visual-security-7KWFLYNB.js +2 -0
  233. package/dist/cli/chunks/web-tree-sitter-R7WR7J7B.js +2 -0
  234. package/dist/cli/chunks/windsurf-installer-ZSPEUBKR.js +7 -0
  235. package/dist/cli/chunks/witness-chain-CFSPCXHG.js +2 -0
  236. package/dist/cli/chunks/witness-chain-RWU6WT37.js +2 -0
  237. package/dist/cli/chunks/workflow-YNQT3OW2.js +51 -0
  238. package/dist/cli/chunks/workflow-orchestrator-Z6TAVMQP.js +2 -0
  239. package/dist/cli/chunks/wrappers-BP4FODVH.js +2 -0
  240. package/dist/cli/commands/daemon.d.ts +13 -0
  241. package/dist/cli/commands/daemon.js +224 -0
  242. package/dist/cli/commands/hooks-handlers/hooks-shared.js +2 -1
  243. package/dist/cli/commands/plugin.d.ts +12 -0
  244. package/dist/cli/commands/plugin.js +135 -0
  245. package/dist/cli/commands/ruvector-commands.js +14 -2
  246. package/dist/cli/commands/workflow.d.ts +10 -0
  247. package/dist/cli/commands/workflow.js +587 -0
  248. package/dist/cli/handlers/brain-handler.js +13 -8
  249. package/dist/cli/handlers/heartbeat-handler.d.ts +1 -0
  250. package/dist/cli/handlers/heartbeat-handler.js +20 -10
  251. package/dist/cli/handlers/hypergraph-handler.js +3 -3
  252. package/dist/cli/handlers/init-handler.js +10 -9
  253. package/dist/cli/handlers/interfaces.d.ts +4 -4
  254. package/dist/cli/index.js +159 -638
  255. package/dist/cli/lazy-registry.d.ts +27 -0
  256. package/dist/cli/lazy-registry.js +70 -0
  257. package/dist/context/compaction/context-budget.d.ts +71 -0
  258. package/dist/context/compaction/context-budget.js +120 -0
  259. package/dist/context/compaction/index.d.ts +96 -0
  260. package/dist/context/compaction/index.js +259 -0
  261. package/dist/context/compaction/llm-caller-adapter.d.ts +14 -0
  262. package/dist/context/compaction/llm-caller-adapter.js +47 -0
  263. package/dist/context/compaction/tier1-microcompact.d.ts +33 -0
  264. package/dist/context/compaction/tier1-microcompact.js +47 -0
  265. package/dist/context/compaction/tier2-session-summary.d.ts +72 -0
  266. package/dist/context/compaction/tier2-session-summary.js +172 -0
  267. package/dist/context/compaction/tier3-llm-compact.d.ts +65 -0
  268. package/dist/context/compaction/tier3-llm-compact.js +166 -0
  269. package/dist/context/compaction/tier4-reactive.d.ts +54 -0
  270. package/dist/context/compaction/tier4-reactive.js +129 -0
  271. package/dist/coordination/agent-memory-branch.d.ts +117 -0
  272. package/dist/coordination/agent-memory-branch.js +213 -0
  273. package/dist/coordination/agent-teams/mailbox.d.ts +43 -0
  274. package/dist/coordination/agent-teams/mailbox.js +130 -4
  275. package/dist/coordination/consensus/providers/claude-provider.d.ts +1 -0
  276. package/dist/coordination/consensus/providers/claude-provider.js +23 -3
  277. package/dist/coordination/handlers/handler-utils.d.ts +1 -0
  278. package/dist/coordination/handlers/handler-utils.js +9 -2
  279. package/dist/coordination/handlers/quality-handlers.js +7 -1
  280. package/dist/domains/contract-testing/coordinator.js +11 -0
  281. package/dist/domains/quality-assessment/coherence/gate-controller.d.ts +20 -1
  282. package/dist/domains/quality-assessment/coherence/gate-controller.js +64 -0
  283. package/dist/domains/quality-assessment/coherence/index.d.ts +3 -3
  284. package/dist/domains/quality-assessment/coherence/index.js +2 -2
  285. package/dist/domains/quality-assessment/coherence/types.d.ts +39 -0
  286. package/dist/domains/quality-assessment/coherence/types.js +11 -0
  287. package/dist/domains/quality-assessment/coordinator.d.ts +14 -0
  288. package/dist/domains/quality-assessment/coordinator.js +92 -0
  289. package/dist/domains/test-execution/coordinator.d.ts +19 -0
  290. package/dist/domains/test-execution/coordinator.js +102 -5
  291. package/dist/domains/test-generation/coordinator.js +11 -0
  292. package/dist/domains/test-generation/interfaces.d.ts +2 -0
  293. package/dist/domains/test-generation/services/test-generator.d.ts +9 -0
  294. package/dist/domains/test-generation/services/test-generator.js +37 -0
  295. package/dist/hooks/cross-phase-hooks.d.ts +11 -0
  296. package/dist/hooks/cross-phase-hooks.js +73 -9
  297. package/dist/hooks/security/config-snapshot.d.ts +21 -0
  298. package/dist/hooks/security/config-snapshot.js +33 -0
  299. package/dist/hooks/security/exit-codes.d.ts +28 -0
  300. package/dist/hooks/security/exit-codes.js +33 -0
  301. package/dist/hooks/security/index.d.ts +15 -0
  302. package/dist/hooks/security/index.js +15 -0
  303. package/dist/hooks/security/ssrf-guard.d.ts +25 -0
  304. package/dist/hooks/security/ssrf-guard.js +69 -0
  305. package/dist/init/agents-installer.d.ts +5 -3
  306. package/dist/init/agents-installer.js +17 -43
  307. package/dist/init/find-package-root.d.ts +22 -0
  308. package/dist/init/find-package-root.js +46 -0
  309. package/dist/init/n8n-installer.d.ts +4 -2
  310. package/dist/init/n8n-installer.js +23 -23
  311. package/dist/init/opencode-installer.d.ts +0 -5
  312. package/dist/init/opencode-installer.js +12 -39
  313. package/dist/init/skills-installer.d.ts +5 -2
  314. package/dist/init/skills-installer.js +15 -37
  315. package/dist/integrations/embeddings/index/HNSWIndex.d.ts +9 -2
  316. package/dist/integrations/embeddings/index/HNSWIndex.js +110 -35
  317. package/dist/integrations/ruvector/cognitive-routing.d.ts +67 -0
  318. package/dist/integrations/ruvector/cognitive-routing.js +208 -0
  319. package/dist/integrations/ruvector/feature-flags.d.ts +84 -0
  320. package/dist/integrations/ruvector/feature-flags.js +59 -0
  321. package/dist/integrations/ruvector/hdc-fingerprint.d.ts +76 -0
  322. package/dist/integrations/ruvector/hdc-fingerprint.js +217 -0
  323. package/dist/integrations/ruvector/hyperbolic-hnsw.d.ts +59 -0
  324. package/dist/integrations/ruvector/hyperbolic-hnsw.js +194 -0
  325. package/dist/integrations/ruvector/index.d.ts +5 -2
  326. package/dist/integrations/ruvector/index.js +13 -2
  327. package/dist/integrations/ruvector/shared-rvf-adapter.d.ts +24 -0
  328. package/dist/integrations/ruvector/shared-rvf-adapter.js +55 -0
  329. package/dist/integrations/ruvector/shared-rvf-dual-writer.d.ts +6 -0
  330. package/dist/integrations/ruvector/shared-rvf-dual-writer.js +38 -0
  331. package/dist/integrations/ruvector/sona-persistence.d.ts +8 -0
  332. package/dist/integrations/ruvector/sona-persistence.js +10 -0
  333. package/dist/integrations/ruvector/vector-delta-tracker.d.ts +96 -0
  334. package/dist/integrations/ruvector/vector-delta-tracker.js +226 -0
  335. package/dist/kernel/agent-coordinator.d.ts +75 -1
  336. package/dist/kernel/agent-coordinator.js +250 -1
  337. package/dist/kernel/hnsw-legacy-bridge.d.ts +38 -0
  338. package/dist/kernel/hnsw-legacy-bridge.js +88 -0
  339. package/dist/kernel/hnsw-shadow-validator.d.ts +91 -0
  340. package/dist/kernel/hnsw-shadow-validator.js +139 -0
  341. package/dist/kernel/index.d.ts +1 -1
  342. package/dist/kernel/index.js +1 -1
  343. package/dist/kernel/interfaces.d.ts +39 -0
  344. package/dist/kernel/kernel.d.ts +23 -0
  345. package/dist/kernel/kernel.js +141 -1
  346. package/dist/kernel/memory-backend.js +3 -1
  347. package/dist/kernel/unified-memory.d.ts +1 -1
  348. package/dist/kernel/unified-memory.js +7 -3
  349. package/dist/learning/aqe-learning-engine.d.ts +65 -0
  350. package/dist/learning/aqe-learning-engine.js +134 -0
  351. package/dist/learning/dream/dream-engine.d.ts +6 -1
  352. package/dist/learning/dream/dream-engine.js +37 -2
  353. package/dist/learning/dream/dream-scheduler.d.ts +25 -0
  354. package/dist/learning/dream/dream-scheduler.js +120 -0
  355. package/dist/learning/dream/rvcow-branch-manager.d.ts +6 -3
  356. package/dist/learning/dream/rvcow-branch-manager.js +60 -5
  357. package/dist/learning/experience-capture.d.ts +3 -3
  358. package/dist/learning/hyperbolic-pattern-index.d.ts +82 -0
  359. package/dist/learning/hyperbolic-pattern-index.js +142 -0
  360. package/dist/learning/index.d.ts +3 -3
  361. package/dist/learning/index.js +1 -1
  362. package/dist/learning/metrics-tracker.d.ts +44 -0
  363. package/dist/learning/metrics-tracker.js +37 -0
  364. package/dist/learning/pattern-promotion.d.ts +3 -3
  365. package/dist/learning/pattern-store.d.ts +45 -2
  366. package/dist/learning/pattern-store.js +217 -4
  367. package/dist/learning/qe-patterns.d.ts +1 -1
  368. package/dist/learning/qe-reasoning-bank.js +1 -1
  369. package/dist/learning/rvf-pattern-migration.d.ts +50 -0
  370. package/dist/learning/rvf-pattern-migration.js +106 -0
  371. package/dist/learning/rvf-pattern-store.d.ts +66 -0
  372. package/dist/learning/rvf-pattern-store.js +447 -0
  373. package/dist/mcp/bundle.js +1937 -1793
  374. package/dist/mcp/entry.js +132 -77
  375. package/dist/mcp/handlers/index.d.ts +1 -0
  376. package/dist/mcp/handlers/index.js +2 -0
  377. package/dist/mcp/handlers/migration-handlers.d.ts +52 -0
  378. package/dist/mcp/handlers/migration-handlers.js +85 -0
  379. package/dist/mcp/middleware/batch-executor.d.ts +46 -0
  380. package/dist/mcp/middleware/batch-executor.js +150 -0
  381. package/dist/mcp/middleware/microcompact.d.ts +97 -0
  382. package/dist/mcp/middleware/microcompact.js +179 -0
  383. package/dist/mcp/middleware/middleware-chain.d.ts +37 -0
  384. package/dist/mcp/middleware/middleware-chain.js +60 -0
  385. package/dist/mcp/protocol-server.d.ts +12 -0
  386. package/dist/mcp/protocol-server.js +192 -36
  387. package/dist/mcp/services/session-durability-middleware.d.ts +22 -0
  388. package/dist/mcp/services/session-durability-middleware.js +64 -0
  389. package/dist/mcp/services/session-resume.d.ts +29 -0
  390. package/dist/mcp/services/session-resume.js +221 -0
  391. package/dist/mcp/services/session-store.d.ts +84 -0
  392. package/dist/mcp/services/session-store.js +163 -0
  393. package/dist/mcp/tool-registry.d.ts +9 -0
  394. package/dist/mcp/tool-registry.js +30 -1
  395. package/dist/mcp/types.d.ts +2 -1
  396. package/dist/optimization/early-exit-token-optimizer.d.ts +7 -7
  397. package/dist/optimization/early-exit-token-optimizer.js +3 -3
  398. package/dist/persistence/rvf-consistency-validator.d.ts +85 -0
  399. package/dist/persistence/rvf-consistency-validator.js +182 -0
  400. package/dist/persistence/rvf-migration-adapter.d.ts +125 -0
  401. package/dist/persistence/rvf-migration-adapter.js +303 -0
  402. package/dist/persistence/rvf-migration-coordinator.d.ts +115 -0
  403. package/dist/persistence/rvf-migration-coordinator.js +224 -0
  404. package/dist/persistence/rvf-stage-gate.d.ts +70 -0
  405. package/dist/persistence/rvf-stage-gate.js +163 -0
  406. package/dist/plugins/cache.d.ts +44 -0
  407. package/dist/plugins/cache.js +149 -0
  408. package/dist/plugins/index.d.ts +15 -0
  409. package/dist/plugins/index.js +15 -0
  410. package/dist/plugins/lifecycle.d.ts +67 -0
  411. package/dist/plugins/lifecycle.js +175 -0
  412. package/dist/plugins/manifest.d.ts +45 -0
  413. package/dist/plugins/manifest.js +173 -0
  414. package/dist/plugins/resolver.d.ts +37 -0
  415. package/dist/plugins/resolver.js +80 -0
  416. package/dist/plugins/security.d.ts +23 -0
  417. package/dist/plugins/security.js +125 -0
  418. package/dist/plugins/sources/github.d.ts +17 -0
  419. package/dist/plugins/sources/github.js +77 -0
  420. package/dist/plugins/sources/local.d.ts +20 -0
  421. package/dist/plugins/sources/local.js +32 -0
  422. package/dist/plugins/sources/npm.d.ts +18 -0
  423. package/dist/plugins/sources/npm.js +82 -0
  424. package/dist/shared/llm/retry.d.ts +5 -2
  425. package/dist/shared/llm/retry.js +7 -3
  426. package/dist/shared/prompt-cache-latch.d.ts +41 -0
  427. package/dist/shared/prompt-cache-latch.js +63 -0
  428. package/dist/shared/retry-engine.d.ts +77 -0
  429. package/dist/shared/retry-engine.js +194 -0
  430. package/dist/workers/daemon.d.ts +8 -0
  431. package/dist/workers/daemon.js +13 -0
  432. package/dist/workers/quality-daemon/ci-monitor.d.ts +55 -0
  433. package/dist/workers/quality-daemon/ci-monitor.js +147 -0
  434. package/dist/workers/quality-daemon/coverage-delta.d.ts +72 -0
  435. package/dist/workers/quality-daemon/coverage-delta.js +135 -0
  436. package/dist/workers/quality-daemon/git-watcher.d.ts +51 -0
  437. package/dist/workers/quality-daemon/git-watcher.js +209 -0
  438. package/dist/workers/quality-daemon/index.d.ts +119 -0
  439. package/dist/workers/quality-daemon/index.js +343 -0
  440. package/dist/workers/quality-daemon/nightly-consolidation.d.ts +74 -0
  441. package/dist/workers/quality-daemon/nightly-consolidation.js +136 -0
  442. package/dist/workers/quality-daemon/notification-service.d.ts +67 -0
  443. package/dist/workers/quality-daemon/notification-service.js +178 -0
  444. package/dist/workers/quality-daemon/persistent-memory.d.ts +31 -0
  445. package/dist/workers/quality-daemon/persistent-memory.js +30 -0
  446. package/dist/workers/quality-daemon/priority-queue.d.ts +97 -0
  447. package/dist/workers/quality-daemon/priority-queue.js +126 -0
  448. package/dist/workers/quality-daemon/test-suggester.d.ts +50 -0
  449. package/dist/workers/quality-daemon/test-suggester.js +121 -0
  450. package/dist/workers/worker-manager.js +2 -1
  451. package/package.json +10 -10
@@ -7,13 +7,17 @@
7
7
  */
8
8
  import { v4 as uuidv4 } from 'uuid';
9
9
  import { ok, err } from '../shared/types/index.js';
10
+ import { RvfPatternStore } from './rvf-pattern-store.js';
11
+ import { createRvfStore as _createRvfStore, isRvfNativeAvailable } from '../integrations/ruvector/rvf-native-adapter.js';
10
12
  import { toErrorMessage, toError } from '../shared/error-utils.js';
11
13
  import { calculateQualityScore, shouldPromotePattern, validateQEPattern, mapQEDomainToAQE, PROMOTION_THRESHOLD, } from './qe-patterns.js';
12
14
  import { applyFilterSync } from '../integrations/ruvector/filter-adapter.js';
13
- import { isHDCFingerprintingEnabled, isDeltaEventSourcingEnabled, isHopfieldMemoryEnabled, } from '../integrations/ruvector/feature-flags.js';
14
- import { createHdcFingerprinter, } from '../integrations/ruvector/hdc-fingerprint.js';
15
+ import { isHDCFingerprintingEnabled, isDeltaEventSourcingEnabled, isHopfieldMemoryEnabled, isHyperbolicHnswEnabled, getRuVectorFeatureFlags, } from '../integrations/ruvector/feature-flags.js';
16
+ import { createHdcFingerprinter, createHDCFingerprinter, } from '../integrations/ruvector/hdc-fingerprint.js';
15
17
  import { DeltaTracker } from '../integrations/ruvector/delta-tracker.js';
18
+ import { createVectorDeltaTracker, } from '../integrations/ruvector/vector-delta-tracker.js';
16
19
  import { createHopfieldMemory } from '../integrations/ruvector/hopfield-memory.js';
20
+ import { createHyperbolicPatternIndex, } from './hyperbolic-pattern-index.js';
17
21
  // ============================================================================
18
22
  // R1: HDC Fingerprint Singleton (lazy-initialized)
19
23
  // ============================================================================
@@ -26,6 +30,17 @@ function getHdcFingerprinter() {
26
30
  return hdcFingerprinter;
27
31
  }
28
32
  // ============================================================================
33
+ // R1b: Token-based HDC Fingerprinter Singleton (lazy-initialized, flag-gated)
34
+ // ============================================================================
35
+ /** Module-level token-based HDC fingerprinter (null when feature disabled) */
36
+ let hdcTokenFingerprinter = undefined;
37
+ function getHDCTokenFingerprinter() {
38
+ if (hdcTokenFingerprinter === undefined) {
39
+ hdcTokenFingerprinter = createHDCFingerprinter(); // null when flag disabled
40
+ }
41
+ return hdcTokenFingerprinter;
42
+ }
43
+ // ============================================================================
29
44
  // R5: Hopfield Memory Singleton (lazy-initialized, dimension-aware)
30
45
  // ============================================================================
31
46
  /** Module-level Hopfield memory for exact pattern recall */
@@ -97,8 +112,14 @@ export class PatternStore {
97
112
  hnswInitPromise = null;
98
113
  // R1: HDC fingerprint cache (pattern ID -> fingerprint vector)
99
114
  hdcCache = new Map();
115
+ // R1b: Token-based HDC fingerprint cache (pattern ID -> token fingerprint vector)
116
+ hdcTokenCache = new Map();
100
117
  // R3: Delta event sourcing tracker (lazy-initialized with SQLite)
101
118
  deltaTracker = null;
119
+ // R3b: Vector delta tracker for embedding version history (lazy-initialized, flag-gated)
120
+ vectorDeltaTracker = undefined;
121
+ // R14: Hyperbolic HNSW index for hierarchical pattern search (lazy-initialized, flag-gated)
122
+ hyperbolicIndex = null;
102
123
  // Statistics
103
124
  stats = {
104
125
  searchOperations: 0,
@@ -201,7 +222,29 @@ export class PatternStore {
201
222
  */
202
223
  async initializeHNSWInternal() {
203
224
  try {
204
- // Try to import and use the existing HNSWIndex
225
+ // ADR-071: Use unified HNSW via bridge when flag is enabled
226
+ const unifiedFlags = getRuVectorFeatureFlags();
227
+ if (unifiedFlags.useUnifiedHnsw) {
228
+ try {
229
+ const { HnswLegacyBridge } = await import('../kernel/hnsw-legacy-bridge.js');
230
+ const { HnswAdapter } = await import('../kernel/hnsw-adapter.js');
231
+ const adapter = new HnswAdapter('patterns', {
232
+ dimensions: this.config.embeddingDimension,
233
+ M: this.config.hnsw.M,
234
+ efConstruction: this.config.hnsw.efConstruction,
235
+ efSearch: this.config.hnsw.efSearch,
236
+ metric: 'cosine',
237
+ });
238
+ this.hnswIndex = new HnswLegacyBridge(adapter);
239
+ this.hnswAvailable = true;
240
+ console.log('[PatternStore] Using unified HNSW via HnswLegacyBridge (ADR-071)');
241
+ return;
242
+ }
243
+ catch (bridgeError) {
244
+ console.warn('[PatternStore] Unified HNSW bridge failed, falling back:', bridgeError);
245
+ }
246
+ }
247
+ // Fallback: direct HNSWIndex (legacy path)
205
248
  const { HNSWIndex } = await import('../domains/coverage-analysis/services/hnsw-index.js');
206
249
  this.hnswIndex = new HNSWIndex(this.memory, {
207
250
  dimensions: this.config.embeddingDimension,
@@ -267,6 +310,16 @@ export class PatternStore {
267
310
  this.hnswAvailable = false;
268
311
  }
269
312
  }
313
+ /**
314
+ * Lazily initialize the VectorDeltaTracker for embedding version history.
315
+ * Returns null when the useDeltaEventSourcing feature flag is disabled.
316
+ */
317
+ getVectorDeltaTracker() {
318
+ if (this.vectorDeltaTracker === undefined) {
319
+ this.vectorDeltaTracker = createVectorDeltaTracker(); // null when flag disabled
320
+ }
321
+ return this.vectorDeltaTracker;
322
+ }
270
323
  /**
271
324
  * Load existing patterns from SQLite into in-memory cache.
272
325
  *
@@ -323,6 +376,7 @@ export class PatternStore {
323
376
  this.typeIndex.get(pattern.patternType)?.delete(pattern.id);
324
377
  this.tierIndex.get(pattern.tier)?.delete(pattern.id);
325
378
  this.hdcCache.delete(pattern.id); // R1: cleanup HDC fingerprint
379
+ this.hdcTokenCache.delete(pattern.id); // R1b: cleanup token-based fingerprint
326
380
  }
327
381
  /**
328
382
  * Store a new pattern
@@ -349,6 +403,8 @@ export class PatternStore {
349
403
  // Run cleanup for this domain
350
404
  await this.cleanupDomain(pattern.qeDomain);
351
405
  }
406
+ // R3b: Capture pre-existing pattern for VectorDeltaTracker before overwrite
407
+ const existingPattern = this.patternCache.get(pattern.id) ?? null;
352
408
  // Index in memory cache
353
409
  this.indexPattern(pattern);
354
410
  // Persist to SQLite (pattern + embedding atomically)
@@ -401,6 +457,25 @@ export class PatternStore {
401
457
  console.debug(`[PatternStore] HDC fingerprint failed for ${pattern.id}:`, toErrorMessage(error));
402
458
  }
403
459
  }
460
+ // R1b: Compute token-based HDC fingerprint via HDCPatternFingerprinter
461
+ try {
462
+ const tokenFp = getHDCTokenFingerprinter();
463
+ if (tokenFp) {
464
+ const tokens = [pattern.patternType, pattern.qeDomain];
465
+ if (pattern.context?.tags) {
466
+ tokens.push(...pattern.context.tags);
467
+ }
468
+ if (pattern.name) {
469
+ tokens.push(pattern.name);
470
+ }
471
+ const fpVector = tokenFp.fingerprintPattern(tokens);
472
+ this.hdcTokenCache.set(pattern.id, fpVector);
473
+ }
474
+ }
475
+ catch (error) {
476
+ // Token fingerprinting failure must not prevent pattern storage
477
+ console.debug(`[PatternStore] HDC token fingerprint failed for ${pattern.id}:`, toErrorMessage(error));
478
+ }
404
479
  // R5: Store embedding in Hopfield memory for exact recall
405
480
  if (isHopfieldMemoryEnabled() && pattern.embedding) {
406
481
  try {
@@ -434,6 +509,37 @@ export class PatternStore {
434
509
  console.debug(`[PatternStore] Delta genesis for ${pattern.id}:`, toErrorMessage(error));
435
510
  }
436
511
  }
512
+ // R3b: Track embedding version history via VectorDeltaTracker
513
+ if (pattern.embedding) {
514
+ try {
515
+ const vdt = this.getVectorDeltaTracker();
516
+ if (vdt) {
517
+ if (existingPattern?.embedding) {
518
+ // Update: record delta between old and new embeddings
519
+ vdt.recordDelta(pattern.id, existingPattern.embedding, pattern.embedding);
520
+ }
521
+ else if (vdt.getVersion(pattern.id) < 0) {
522
+ // New pattern: record genesis for the embedding
523
+ vdt.recordGenesis(pattern.id, pattern.embedding);
524
+ }
525
+ }
526
+ }
527
+ catch (error) {
528
+ // Vector delta tracking failure must not prevent pattern storage
529
+ console.debug(`[PatternStore] VectorDeltaTracker for ${pattern.id}:`, toErrorMessage(error));
530
+ }
531
+ }
532
+ // R14: Auto-index into hyperbolic HNSW when enabled
533
+ try {
534
+ if (isHyperbolicHnswEnabled() && pattern.embedding) {
535
+ this.indexHyperbolic(pattern.id, pattern.embedding, {
536
+ domain: pattern.qeDomain,
537
+ type: pattern.patternType,
538
+ name: pattern.name,
539
+ });
540
+ }
541
+ }
542
+ catch { /* best-effort — hyperbolic indexing must not block store() */ }
437
543
  return ok(pattern.id);
438
544
  }
439
545
  /**
@@ -494,6 +600,7 @@ export class PatternStore {
494
600
  'flaky-fix': 'test-execution',
495
601
  'refactor-safe': 'code-intelligence',
496
602
  'error-handling': 'test-generation',
603
+ 'meta-optimization': 'learning-optimization',
497
604
  };
498
605
  return typeToDomain[patternType] || 'test-generation';
499
606
  }
@@ -1129,6 +1236,10 @@ export class PatternStore {
1129
1236
  this.tierIndex.clear();
1130
1237
  this.hdcCache.clear(); // R1: cleanup
1131
1238
  this.deltaTracker = null; // R3: cleanup
1239
+ if (this.hyperbolicIndex) {
1240
+ this.hyperbolicIndex.reset();
1241
+ this.hyperbolicIndex = null;
1242
+ } // R14: cleanup
1132
1243
  if (hopfieldMemory) {
1133
1244
  hopfieldMemory.clear();
1134
1245
  hopfieldMemory = null;
@@ -1136,14 +1247,116 @@ export class PatternStore {
1136
1247
  } // R5: cleanup
1137
1248
  this.initialized = false;
1138
1249
  }
1250
+ // ==========================================================================
1251
+ // R14: Hyperbolic Pattern Search (ADR-087)
1252
+ // ==========================================================================
1253
+ /**
1254
+ * Index a pattern's embedding into the hyperbolic HNSW index.
1255
+ *
1256
+ * Call this after storing a pattern when hyperbolic search is enabled.
1257
+ * Safe to call when disabled — it no-ops. Does not modify the pattern
1258
+ * or the main HNSW index; the hyperbolic index is a parallel backend.
1259
+ *
1260
+ * @param patternId - The pattern ID to index
1261
+ * @param embedding - Euclidean embedding (projected to Poincare ball internally)
1262
+ * @param metadata - Optional metadata (e.g., domain, type)
1263
+ */
1264
+ indexHyperbolic(patternId, embedding, metadata) {
1265
+ if (!isHyperbolicHnswEnabled())
1266
+ return;
1267
+ try {
1268
+ if (!this.hyperbolicIndex) {
1269
+ this.hyperbolicIndex = createHyperbolicPatternIndex({
1270
+ dimensions: this.config.embeddingDimension,
1271
+ maxElements: this.config.hnsw.maxElements,
1272
+ });
1273
+ }
1274
+ this.hyperbolicIndex.indexPattern(patternId, embedding, metadata);
1275
+ }
1276
+ catch (error) {
1277
+ console.debug(`[PatternStore] Hyperbolic indexing failed for ${patternId}:`, error instanceof Error ? error.message : error);
1278
+ }
1279
+ }
1280
+ /**
1281
+ * Search for similar patterns using the hyperbolic (Poincare ball) HNSW index.
1282
+ *
1283
+ * Hyperbolic geometry naturally preserves hierarchical relationships:
1284
+ * root patterns cluster near the origin, leaf patterns near the boundary.
1285
+ * This makes it well-suited for module hierarchy and test suite tree searches.
1286
+ *
1287
+ * Falls back to an empty result set when:
1288
+ * - The `useHyperbolicHnsw` feature flag is disabled
1289
+ * - The hyperbolic index has not been populated
1290
+ * - An error occurs during search
1291
+ *
1292
+ * @param query - Euclidean query embedding (will be projected to Poincare ball)
1293
+ * @param k - Number of nearest neighbors to return
1294
+ * @returns Array of pattern search results with hyperbolic distances, or empty on failure
1295
+ */
1296
+ async searchHyperbolic(query, k = 10) {
1297
+ if (!isHyperbolicHnswEnabled() || !this.hyperbolicIndex) {
1298
+ return ok([]);
1299
+ }
1300
+ try {
1301
+ const hyperbolicResults = this.hyperbolicIndex.search(query, k);
1302
+ const results = [];
1303
+ for (const hr of hyperbolicResults) {
1304
+ const pattern = await this.get(hr.patternId);
1305
+ if (!pattern)
1306
+ continue;
1307
+ // Convert hyperbolic distance to a 0-1 similarity score
1308
+ // Using exp(-distance) which maps [0, inf) -> (0, 1]
1309
+ const similarity = Math.exp(-hr.distance);
1310
+ const reuseInfo = this.calculateReuseInfo(pattern, similarity);
1311
+ results.push({
1312
+ pattern,
1313
+ score: similarity,
1314
+ matchType: 'vector',
1315
+ similarity,
1316
+ canReuse: reuseInfo.canReuse,
1317
+ estimatedTokenSavings: reuseInfo.estimatedTokenSavings,
1318
+ reuseConfidence: reuseInfo.reuseConfidence,
1319
+ });
1320
+ }
1321
+ return ok(results);
1322
+ }
1323
+ catch (error) {
1324
+ console.warn('[PatternStore] Hyperbolic search failed, returning empty results:', error instanceof Error ? error.message : error);
1325
+ return ok([]);
1326
+ }
1327
+ }
1139
1328
  }
1140
1329
  // ============================================================================
1141
1330
  // Factory Functions
1142
1331
  // ============================================================================
1143
1332
  /**
1144
- * Create a new pattern store instance
1333
+ * Create a new pattern store instance.
1334
+ *
1335
+ * When `useRVFPatternStore` feature flag is enabled (ADR-066), returns an
1336
+ * RvfPatternStore backed by @ruvector/rvf-node with persistent HNSW.
1337
+ * Otherwise returns the existing in-memory HNSW PatternStore.
1145
1338
  */
1146
1339
  export function createPatternStore(memory, config) {
1340
+ // ADR-066: RVF-backed PatternStore when feature flag is enabled
1341
+ try {
1342
+ const flags = getRuVectorFeatureFlags();
1343
+ if (flags.useRVFPatternStore && isRvfNativeAvailable()) {
1344
+ // Only use RVF if the data directory exists (created by kernel init)
1345
+ const { existsSync } = require('fs');
1346
+ const rvfPath = '.agentic-qe/patterns.rvf';
1347
+ const rvfDir = require('path').dirname(rvfPath);
1348
+ if (existsSync(rvfDir)) {
1349
+ const mergedConfig = { ...DEFAULT_PATTERN_STORE_CONFIG, ...config };
1350
+ const store = new RvfPatternStore((path, dim) => _createRvfStore(path, dim), { rvfPath, base: mergedConfig });
1351
+ console.log('[PatternStore] Using RVF-backed store (ADR-066)');
1352
+ return store;
1353
+ }
1354
+ }
1355
+ }
1356
+ catch (error) {
1357
+ // Feature flags or RVF modules not available — use default
1358
+ console.warn('[PatternStore] RVF store unavailable, using in-memory HNSW:', error instanceof Error ? error.message : error);
1359
+ }
1147
1360
  return new PatternStore(memory, config);
1148
1361
  }
1149
1362
  //# sourceMappingURL=pattern-store.js.map
@@ -31,7 +31,7 @@ export type QEDomain = keyof typeof QE_DOMAINS;
31
31
  /**
32
32
  * QE pattern types - specific pattern categories
33
33
  */
34
- export type QEPatternType = 'test-template' | 'assertion-pattern' | 'mock-pattern' | 'coverage-strategy' | 'mutation-strategy' | 'api-contract' | 'visual-baseline' | 'a11y-check' | 'perf-benchmark' | 'flaky-fix' | 'refactor-safe' | 'error-handling';
34
+ export type QEPatternType = 'test-template' | 'assertion-pattern' | 'mock-pattern' | 'coverage-strategy' | 'mutation-strategy' | 'api-contract' | 'visual-baseline' | 'a11y-check' | 'perf-benchmark' | 'flaky-fix' | 'refactor-safe' | 'error-handling' | 'meta-optimization';
35
35
  /**
36
36
  * Test framework identifiers
37
37
  */
@@ -116,7 +116,7 @@ export class QEReasoningBank {
116
116
  try {
117
117
  const store = this.getSqliteStore();
118
118
  await store.initialize();
119
- this.patternStore.setSqliteStore(store);
119
+ this.patternStore.setSqliteStore?.(store);
120
120
  }
121
121
  catch (e) {
122
122
  logger.warn('Failed to wire SQLitePatternStore into PatternStore', { error: toErrorMessage(e) });
@@ -0,0 +1,50 @@
1
+ /**
2
+ * SQLite → RVF Pattern Migration Utility (ADR-066)
3
+ *
4
+ * Reads pattern embeddings from the SQLite qe_patterns/qe_pattern_embeddings
5
+ * tables and ingests them into an RVF file. This is a one-time migration
6
+ * that creates the .rvf file for the RvfPatternStore.
7
+ *
8
+ * Safety:
9
+ * - Read-only on SQLite (never modifies memory.db)
10
+ * - Creates a NEW .rvf file (never overwrites existing)
11
+ * - Batch ingestion (500 vectors at a time) for memory efficiency
12
+ *
13
+ * @module learning/rvf-pattern-migration
14
+ */
15
+ import type { RvfNativeAdapter } from '../integrations/ruvector/rvf-native-adapter.js';
16
+ import type { SQLitePatternStore } from './sqlite-persistence.js';
17
+ export interface MigrationResult {
18
+ /** Total patterns successfully migrated */
19
+ totalMigrated: number;
20
+ /** Patterns skipped (no embedding or dimension mismatch) */
21
+ totalSkipped: number;
22
+ /** Errors encountered during ingestion */
23
+ errors: string[];
24
+ /** Migration duration in milliseconds */
25
+ durationMs: number;
26
+ /** Path to the created .rvf file */
27
+ rvfPath: string;
28
+ }
29
+ export interface MigrationOptions {
30
+ /** Batch size for ingestion (default: 500) */
31
+ batchSize?: number;
32
+ /** Expected embedding dimension (default: 384) */
33
+ dimension?: number;
34
+ /** Log progress every N patterns (default: 1000) */
35
+ progressInterval?: number;
36
+ }
37
+ /**
38
+ * Migrate pattern embeddings from SQLite to an RVF file.
39
+ *
40
+ * This function is read-only on SQLite. It reads all embeddings from
41
+ * the qe_pattern_embeddings table and ingests them into the provided
42
+ * RVF adapter in batches.
43
+ *
44
+ * @param sqliteStore - Initialized SQLitePatternStore to read from
45
+ * @param rvfAdapter - Initialized RvfNativeAdapter to write to
46
+ * @param options - Migration options (batch size, dimension)
47
+ * @returns Migration result with counts and timing
48
+ */
49
+ export declare function migratePatterns(sqliteStore: SQLitePatternStore, rvfAdapter: RvfNativeAdapter, options?: MigrationOptions): MigrationResult;
50
+ //# sourceMappingURL=rvf-pattern-migration.d.ts.map
@@ -0,0 +1,106 @@
1
+ /**
2
+ * SQLite → RVF Pattern Migration Utility (ADR-066)
3
+ *
4
+ * Reads pattern embeddings from the SQLite qe_patterns/qe_pattern_embeddings
5
+ * tables and ingests them into an RVF file. This is a one-time migration
6
+ * that creates the .rvf file for the RvfPatternStore.
7
+ *
8
+ * Safety:
9
+ * - Read-only on SQLite (never modifies memory.db)
10
+ * - Creates a NEW .rvf file (never overwrites existing)
11
+ * - Batch ingestion (500 vectors at a time) for memory efficiency
12
+ *
13
+ * @module learning/rvf-pattern-migration
14
+ */
15
+ // ============================================================================
16
+ // Migration Function
17
+ // ============================================================================
18
+ /**
19
+ * Migrate pattern embeddings from SQLite to an RVF file.
20
+ *
21
+ * This function is read-only on SQLite. It reads all embeddings from
22
+ * the qe_pattern_embeddings table and ingests them into the provided
23
+ * RVF adapter in batches.
24
+ *
25
+ * @param sqliteStore - Initialized SQLitePatternStore to read from
26
+ * @param rvfAdapter - Initialized RvfNativeAdapter to write to
27
+ * @param options - Migration options (batch size, dimension)
28
+ * @returns Migration result with counts and timing
29
+ */
30
+ export function migratePatterns(sqliteStore, rvfAdapter, options = {}) {
31
+ const startTime = performance.now();
32
+ const batchSize = options.batchSize ?? 500;
33
+ const dimension = options.dimension ?? 384;
34
+ const progressInterval = options.progressInterval ?? 1000;
35
+ const result = {
36
+ totalMigrated: 0,
37
+ totalSkipped: 0,
38
+ errors: [],
39
+ durationMs: 0,
40
+ rvfPath: rvfAdapter.path(),
41
+ };
42
+ // Read all embeddings from SQLite
43
+ let allEmbeddings;
44
+ try {
45
+ allEmbeddings = sqliteStore.getAllEmbeddings();
46
+ }
47
+ catch (error) {
48
+ result.errors.push(`Failed to read embeddings from SQLite: ${error}`);
49
+ result.durationMs = performance.now() - startTime;
50
+ return result;
51
+ }
52
+ console.log(`[RVF Migration] Found ${allEmbeddings.length} embeddings to migrate (dim=${dimension})`);
53
+ // Process in batches
54
+ let batch = [];
55
+ for (let i = 0; i < allEmbeddings.length; i++) {
56
+ const { patternId, embedding } = allEmbeddings[i];
57
+ // Skip if dimension doesn't match
58
+ if (embedding.length !== dimension) {
59
+ result.totalSkipped++;
60
+ continue;
61
+ }
62
+ batch.push({
63
+ id: patternId,
64
+ vector: new Float32Array(embedding),
65
+ });
66
+ // Flush batch when full
67
+ if (batch.length >= batchSize) {
68
+ const batchResult = flushBatch(rvfAdapter, batch, result);
69
+ if (!batchResult)
70
+ break; // Fatal error
71
+ batch = [];
72
+ }
73
+ // Progress logging
74
+ if ((i + 1) % progressInterval === 0) {
75
+ console.log(`[RVF Migration] Progress: ${i + 1}/${allEmbeddings.length} ` +
76
+ `(migrated: ${result.totalMigrated}, skipped: ${result.totalSkipped})`);
77
+ }
78
+ }
79
+ // Flush remaining
80
+ if (batch.length > 0) {
81
+ flushBatch(rvfAdapter, batch, result);
82
+ }
83
+ result.durationMs = performance.now() - startTime;
84
+ console.log(`[RVF Migration] Complete: ${result.totalMigrated} migrated, ` +
85
+ `${result.totalSkipped} skipped, ${result.errors.length} errors ` +
86
+ `in ${result.durationMs.toFixed(0)}ms`);
87
+ return result;
88
+ }
89
+ // ============================================================================
90
+ // Helpers
91
+ // ============================================================================
92
+ function flushBatch(adapter, batch, result) {
93
+ try {
94
+ const ingestResult = adapter.ingest(batch);
95
+ result.totalMigrated += ingestResult.accepted;
96
+ if (ingestResult.rejected > 0) {
97
+ result.errors.push(`Batch rejected ${ingestResult.rejected} of ${batch.length} vectors`);
98
+ }
99
+ return true;
100
+ }
101
+ catch (error) {
102
+ result.errors.push(`Batch ingest failed: ${error}`);
103
+ return false;
104
+ }
105
+ }
106
+ //# sourceMappingURL=rvf-pattern-migration.js.map
@@ -0,0 +1,66 @@
1
+ /**
2
+ * RVF-Backed Pattern Store (ADR-066)
3
+ *
4
+ * Implements IPatternStore using @ruvector/rvf-node for persistent HNSW
5
+ * vector indexing. Eliminates cold-start index rebuild (SQLite BLOB →
6
+ * in-memory HNSW) by storing vectors in the RVF native format with
7
+ * progressive 3-layer indexing.
8
+ *
9
+ * Pattern metadata remains in SQLite (via the existing SQLitePatternStore);
10
+ * only vector storage and search moves to RVF.
11
+ *
12
+ * @module learning/rvf-pattern-store
13
+ */
14
+ import type { Result } from '../shared/types/index.js';
15
+ import type { RvfNativeAdapter } from '../integrations/ruvector/rvf-native-adapter.js';
16
+ import { type QEPattern, type CreateQEPatternOptions } from './qe-patterns.js';
17
+ import type { IPatternStore, PatternStoreConfig, PatternStoreStats, PatternSearchOptions, PatternSearchResult } from './pattern-store.js';
18
+ export interface RvfPatternStoreConfig {
19
+ /** Path to the .rvf file for vector storage */
20
+ rvfPath: string;
21
+ /** Base PatternStore config (for metadata, thresholds) */
22
+ base: PatternStoreConfig;
23
+ }
24
+ /**
25
+ * Pattern store backed by @ruvector/rvf-node for persistent HNSW.
26
+ *
27
+ * Vectors live in a .rvf file (persistent HNSW, no cold-start rebuild).
28
+ * Metadata (pattern fields, FTS5) lives in SQLite via sqliteStore delegate.
29
+ */
30
+ export declare class RvfPatternStore implements IPatternStore {
31
+ private readonly createAdapter;
32
+ private readonly config;
33
+ private readonly rvfPath;
34
+ private adapter;
35
+ private sqliteStore;
36
+ private initialized;
37
+ private rvfInitError;
38
+ private searchOps;
39
+ private totalSearchMs;
40
+ constructor(createAdapter: (path: string, dim: number) => RvfNativeAdapter, config?: Partial<RvfPatternStoreConfig>);
41
+ /**
42
+ * Attach SQLite persistence for metadata (pattern fields, FTS5).
43
+ * Must be called before initialize() if SQLite metadata is desired.
44
+ */
45
+ setSqliteStore(store: import('./sqlite-persistence.js').SQLitePatternStore): void;
46
+ /** Get the underlying RVF adapter (for COW branching, migration, etc.) */
47
+ getAdapter(): RvfNativeAdapter | null;
48
+ initialize(): Promise<void>;
49
+ dispose(): Promise<void>;
50
+ store(pattern: QEPattern): Promise<Result<string>>;
51
+ create(options: CreateQEPatternOptions): Promise<Result<QEPattern>>;
52
+ get(id: string): Promise<QEPattern | null>;
53
+ search(query: string | number[], options?: PatternSearchOptions): Promise<Result<PatternSearchResult[]>>;
54
+ recordUsage(id: string, success: boolean): Promise<Result<void>>;
55
+ promote(id: string): Promise<Result<void>>;
56
+ delete(id: string): Promise<Result<void>>;
57
+ getStats(): Promise<PatternStoreStats>;
58
+ cleanup(): Promise<{
59
+ removed: number;
60
+ promoted: number;
61
+ }>;
62
+ private ensureInitialized;
63
+ private matchesFilters;
64
+ private calculateReuseInfo;
65
+ }
66
+ //# sourceMappingURL=rvf-pattern-store.d.ts.map