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
@@ -4,6 +4,9 @@
4
4
  * Shared HNSW indexing between QE and claude-flow per ADR-040.
5
5
  * Performance: 150x-12,500x faster than linear search
6
6
  *
7
+ * When useUnifiedHnsw feature flag is enabled (ADR-071), all namespaces
8
+ * are routed through the unified HnswAdapter backend instead of hnswlib-node.
9
+ *
7
10
  * @module integrations/embeddings/index/HNSWIndex
8
11
  */
9
12
  import type { IEmbedding, IHNSWConfig, EmbeddingNamespace, ISearchOptions } from '../base/types.js';
@@ -18,6 +21,8 @@ export declare class HNSWEmbeddingIndex {
18
21
  private config;
19
22
  private initialized;
20
23
  private nextId;
24
+ private unifiedAdapters;
25
+ private readonly useUnified;
21
26
  constructor(config?: Partial<IHNSWConfig>);
22
27
  /**
23
28
  * Initialize index for a namespace
@@ -51,11 +56,13 @@ export declare class HNSWEmbeddingIndex {
51
56
  metric: string;
52
57
  } | null;
53
58
  /**
54
- * Save index to file
59
+ * Save index to file.
60
+ * Not supported when using unified backend (HnswAdapter manages persistence).
55
61
  */
56
62
  saveIndex(namespace: EmbeddingNamespace, path: string): Promise<void>;
57
63
  /**
58
- * Load index from file
64
+ * Load index from file.
65
+ * Not supported when using unified backend (HnswAdapter manages persistence).
59
66
  */
60
67
  loadIndex(namespace: EmbeddingNamespace, path: string): Promise<void>;
61
68
  /**
@@ -4,12 +4,21 @@
4
4
  * Shared HNSW indexing between QE and claude-flow per ADR-040.
5
5
  * Performance: 150x-12,500x faster than linear search
6
6
  *
7
+ * When useUnifiedHnsw feature flag is enabled (ADR-071), all namespaces
8
+ * are routed through the unified HnswAdapter backend instead of hnswlib-node.
9
+ *
7
10
  * @module integrations/embeddings/index/HNSWIndex
8
11
  */
9
12
  // ESM/CJS interop: hnswlib-node is CommonJS, we import via default export
10
13
  // This pattern matches real-qe-reasoning-bank.ts for consistency
11
14
  import hnswlib from 'hnswlib-node';
12
15
  const { HierarchicalNSW } = hnswlib;
16
+ // ADR-071 Phase 2C: Always use unified HnswAdapter backend.
17
+ // The hnswlib-node legacy path below is retained as dead code for
18
+ // emergency rollback only — production always takes the adapter path.
19
+ function isUnifiedHnswActive() {
20
+ return true;
21
+ }
13
22
  /**
14
23
  * HNSW index manager
15
24
  *
@@ -21,6 +30,9 @@ export class HNSWEmbeddingIndex {
21
30
  config;
22
31
  initialized;
23
32
  nextId;
33
+ // ADR-071: Unified backend adapters per namespace (when useUnifiedHnsw=true)
34
+ unifiedAdapters = null;
35
+ useUnified;
24
36
  constructor(config = {}) {
25
37
  this.config = {
26
38
  M: config.M || 16,
@@ -33,6 +45,10 @@ export class HNSWEmbeddingIndex {
33
45
  this.indexes = new Map();
34
46
  this.initialized = new Set();
35
47
  this.nextId = new Map();
48
+ this.useUnified = isUnifiedHnswActive();
49
+ if (this.useUnified) {
50
+ this.unifiedAdapters = new Map();
51
+ }
36
52
  }
37
53
  /**
38
54
  * Initialize index for a namespace
@@ -41,6 +57,28 @@ export class HNSWEmbeddingIndex {
41
57
  if (this.initialized.has(namespace)) {
42
58
  return;
43
59
  }
60
+ // ADR-071: Route through unified HnswAdapter when flag is enabled
61
+ if (this.useUnified && this.unifiedAdapters) {
62
+ try {
63
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
64
+ const { HnswAdapter } = require('../../../kernel/hnsw-adapter.js');
65
+ const adapter = new HnswAdapter(`embedding-${namespace}`, {
66
+ dimensions: this.config.dimension,
67
+ M: this.config.M,
68
+ efConstruction: this.config.efConstruction,
69
+ efSearch: this.config.efSearch,
70
+ metric: this.config.metric === 'dotproduct' ? 'cosine' : this.config.metric,
71
+ });
72
+ this.unifiedAdapters.set(namespace, adapter);
73
+ this.initialized.add(namespace);
74
+ this.nextId.set(namespace, 0);
75
+ return;
76
+ }
77
+ catch {
78
+ // Fall through to hnswlib-node
79
+ }
80
+ }
81
+ // Legacy path: hnswlib-node
44
82
  // Map our metric names to hnswlib-node space names
45
83
  const spaceMap = {
46
84
  'cosine': 'cosine',
@@ -66,14 +104,23 @@ export class HNSWEmbeddingIndex {
66
104
  if (!this.initialized.has(namespace)) {
67
105
  this.initializeIndex(namespace);
68
106
  }
69
- const index = this.indexes.get(namespace);
70
- // Convert vector to float array
71
- const vector = this.toFloatArray(embedding.vector);
72
107
  // Use provided ID or auto-increment
73
108
  const actualId = id ?? this.nextId.get(namespace);
74
109
  if (id === undefined) {
75
110
  this.nextId.set(namespace, actualId + 1);
76
111
  }
112
+ // ADR-071: Route through unified backend
113
+ const adapter = this.unifiedAdapters?.get(namespace);
114
+ if (adapter) {
115
+ const vector = embedding.vector instanceof Float32Array
116
+ ? embedding.vector
117
+ : new Float32Array(this.toFloatArray(embedding.vector));
118
+ adapter.add(actualId, vector);
119
+ return actualId;
120
+ }
121
+ // Legacy path
122
+ const index = this.indexes.get(namespace);
123
+ const vector = this.toFloatArray(embedding.vector);
77
124
  index.addPoint(vector, actualId);
78
125
  return actualId;
79
126
  }
@@ -81,33 +128,8 @@ export class HNSWEmbeddingIndex {
81
128
  * Add multiple embeddings to index
82
129
  */
83
130
  addEmbeddingsBatch(embeddings) {
84
- const ids = [];
85
- // Group by namespace
86
- const byNamespace = new Map();
87
- for (const item of embeddings) {
88
- const ns = item.embedding.namespace;
89
- if (!byNamespace.has(ns)) {
90
- byNamespace.set(ns, []);
91
- }
92
- byNamespace.get(ns).push(item);
93
- }
94
- // Add to each namespace's index
95
- for (const [namespace, items] of byNamespace.entries()) {
96
- if (!this.initialized.has(namespace)) {
97
- this.initializeIndex(namespace);
98
- }
99
- const index = this.indexes.get(namespace);
100
- for (const item of items) {
101
- const vector = this.toFloatArray(item.embedding.vector);
102
- const actualId = item.id ?? this.nextId.get(namespace);
103
- if (item.id === undefined) {
104
- this.nextId.set(namespace, actualId + 1);
105
- }
106
- index.addPoint(vector, actualId);
107
- ids.push(actualId);
108
- }
109
- }
110
- return ids;
131
+ // ADR-071: Route each item through addEmbedding() which handles unified routing
132
+ return embeddings.map(item => this.addEmbedding(item.embedding, item.id));
111
133
  }
112
134
  /**
113
135
  * Search for similar embeddings
@@ -117,11 +139,22 @@ export class HNSWEmbeddingIndex {
117
139
  if (!this.initialized.has(namespace)) {
118
140
  return [];
119
141
  }
120
- const index = this.indexes.get(namespace);
121
142
  const k = options.limit || 10;
122
- // Convert query vector
143
+ // ADR-071: Route through unified backend
144
+ const adapter = this.unifiedAdapters?.get(namespace);
145
+ if (adapter) {
146
+ const queryVector = query.vector instanceof Float32Array
147
+ ? query.vector
148
+ : new Float32Array(this.toFloatArray(query.vector));
149
+ const results = adapter.search(queryVector, k);
150
+ return results.map(r => ({
151
+ id: r.id,
152
+ distance: 1 - r.score, // convert similarity to distance
153
+ }));
154
+ }
155
+ // Legacy path
156
+ const index = this.indexes.get(namespace);
123
157
  const queryVector = this.toFloatArray(query.vector);
124
- // Search
125
158
  const result = index.searchKnn(queryVector, k);
126
159
  // Convert hnswlib-node result format to our format
127
160
  return result.neighbors.map((id, i) => ({
@@ -136,6 +169,16 @@ export class HNSWEmbeddingIndex {
136
169
  if (!this.initialized.has(namespace)) {
137
170
  return null;
138
171
  }
172
+ // ADR-071: Use unified adapter stats
173
+ const adapter = this.unifiedAdapters?.get(namespace);
174
+ if (adapter) {
175
+ return {
176
+ size: adapter.size(),
177
+ maxElements: 10000,
178
+ dimension: adapter.dimensions(),
179
+ metric: this.config.metric,
180
+ };
181
+ }
139
182
  const index = this.indexes.get(namespace);
140
183
  return {
141
184
  size: index.getCurrentCount(), // Note: This may not be available in all versions
@@ -145,19 +188,33 @@ export class HNSWEmbeddingIndex {
145
188
  };
146
189
  }
147
190
  /**
148
- * Save index to file
191
+ * Save index to file.
192
+ * Not supported when using unified backend (HnswAdapter manages persistence).
149
193
  */
150
194
  async saveIndex(namespace, path) {
151
195
  if (!this.initialized.has(namespace)) {
152
196
  throw new Error(`Namespace ${namespace} not initialized`);
153
197
  }
198
+ // ADR-071: Unified backend manages its own persistence
199
+ if (this.unifiedAdapters?.has(namespace)) {
200
+ console.warn(`[HNSWEmbeddingIndex] saveIndex() is a no-op for namespace '${namespace}' — ` +
201
+ `unified HnswAdapter manages persistence internally.`);
202
+ return;
203
+ }
154
204
  const index = this.indexes.get(namespace);
155
205
  await index.writeIndex(path);
156
206
  }
157
207
  /**
158
- * Load index from file
208
+ * Load index from file.
209
+ * Not supported when using unified backend (HnswAdapter manages persistence).
159
210
  */
160
211
  async loadIndex(namespace, path) {
212
+ // ADR-071: Unified backend manages its own persistence
213
+ if (this.useUnified) {
214
+ console.warn(`[HNSWEmbeddingIndex] loadIndex() is a no-op for namespace '${namespace}' — ` +
215
+ `unified HnswAdapter manages persistence internally. Initialize via initializeIndex() instead.`);
216
+ return;
217
+ }
161
218
  const spaceMap = {
162
219
  'cosine': 'cosine',
163
220
  'euclidean': 'l2',
@@ -174,6 +231,12 @@ export class HNSWEmbeddingIndex {
174
231
  */
175
232
  clearIndex(namespace) {
176
233
  if (this.initialized.has(namespace)) {
234
+ // ADR-071: Clear unified adapter if present
235
+ const adapter = this.unifiedAdapters?.get(namespace);
236
+ if (adapter) {
237
+ adapter.clear?.();
238
+ this.unifiedAdapters.delete(namespace);
239
+ }
177
240
  this.indexes.delete(namespace);
178
241
  this.initialized.delete(namespace);
179
242
  this.nextId.delete(namespace);
@@ -183,6 +246,13 @@ export class HNSWEmbeddingIndex {
183
246
  * Clear all indexes
184
247
  */
185
248
  clearAll() {
249
+ // ADR-071: Clear all unified adapters
250
+ if (this.unifiedAdapters) {
251
+ for (const adapter of this.unifiedAdapters.values()) {
252
+ adapter.clear?.();
253
+ }
254
+ this.unifiedAdapters.clear();
255
+ }
186
256
  this.indexes.clear();
187
257
  this.initialized.clear();
188
258
  this.nextId.clear();
@@ -263,6 +333,11 @@ export class HNSWEmbeddingIndex {
263
333
  if (!this.initialized.has(namespace)) {
264
334
  return 0;
265
335
  }
336
+ // ADR-071: Use unified adapter size when available
337
+ const adapter = this.unifiedAdapters?.get(namespace);
338
+ if (adapter) {
339
+ return adapter.size();
340
+ }
266
341
  return this.nextId.get(namespace) || 0;
267
342
  }
268
343
  }
@@ -0,0 +1,67 @@
1
+ export interface CognitiveRoutingConfig {
2
+ predictionWindowSize: number;
3
+ compressionThreshold: number;
4
+ maxConcurrentStreams: number;
5
+ oscillationFrequencyMs: number;
6
+ }
7
+ export interface RoutedMessage {
8
+ streamId: string;
9
+ senderId: string;
10
+ receiverId: string;
11
+ payload: unknown;
12
+ compressed: boolean;
13
+ originalSize: number;
14
+ compressedSize: number;
15
+ timestamp: number;
16
+ }
17
+ export interface RoutingStats {
18
+ totalMessages: number;
19
+ compressedMessages: number;
20
+ bandwidthSavedBytes: number;
21
+ bandwidthReductionPercent: number;
22
+ activeStreams: number;
23
+ }
24
+ /** Sliding-window predictor: predicts next payload as copy of last seen. */
25
+ export declare class MessagePredictor {
26
+ private readonly windowSize;
27
+ private readonly windows;
28
+ constructor(windowSize: number);
29
+ predict(streamId: string): Record<string, unknown> | null;
30
+ record(streamId: string, payload: unknown): void;
31
+ removeStream(streamId: string): void;
32
+ }
33
+ /** Round-robin multiplexer for concurrent message streams. */
34
+ export declare class OscillatoryRouter {
35
+ private readonly maxStreams;
36
+ readonly cycleMs: number;
37
+ private readonly streamIds;
38
+ private currentIndex;
39
+ constructor(maxStreams: number, cycleMs: number);
40
+ addStream(streamId: string): boolean;
41
+ removeStream(streamId: string): boolean;
42
+ nextStream(): string | null;
43
+ getActiveStreams(): string[];
44
+ get activeCount(): number;
45
+ }
46
+ /** Combines MessagePredictor + OscillatoryRouter for bandwidth-efficient routing. */
47
+ export declare class CognitiveRouter {
48
+ private readonly config;
49
+ private readonly predictor;
50
+ private readonly router;
51
+ private readonly lastPayloads;
52
+ private totalMessages;
53
+ private compressedMessages;
54
+ private totalOriginalBytes;
55
+ private totalCompressedBytes;
56
+ constructor(config?: Partial<CognitiveRoutingConfig>);
57
+ send(streamId: string, senderId: string, receiverId: string, payload: unknown): RoutedMessage;
58
+ receive(message: RoutedMessage): unknown;
59
+ getStats(): RoutingStats;
60
+ addStream(streamId: string): void;
61
+ removeStream(streamId: string): void;
62
+ }
63
+ /** Create a CognitiveRouter if the feature flag is enabled, otherwise null. */
64
+ export declare function createCognitiveRouter(config?: Partial<CognitiveRoutingConfig>): CognitiveRouter | null;
65
+ /** Check if Cognitive Routing feature flag is enabled. */
66
+ export declare function isCognitiveRoutingEnabled(): boolean;
67
+ //# sourceMappingURL=cognitive-routing.d.ts.map
@@ -0,0 +1,208 @@
1
+ /**
2
+ * R13: Cognitive Routing — Predictive Coding for Agent Communication
3
+ *
4
+ * Bandwidth reduction via sliding-window prediction + delta-only transmission.
5
+ * Oscillatory routing multiplexes concurrent message streams round-robin.
6
+ * TypeScript-only; no external dependencies.
7
+ *
8
+ * @module integrations/ruvector/cognitive-routing
9
+ */
10
+ import { getRuVectorFeatureFlags } from './feature-flags.js';
11
+ const DEFAULT_CONFIG = {
12
+ predictionWindowSize: 10, compressionThreshold: 0.3,
13
+ maxConcurrentStreams: 8, oscillationFrequencyMs: 100,
14
+ };
15
+ function estimateSize(value) {
16
+ try {
17
+ return JSON.stringify(value).length;
18
+ }
19
+ catch {
20
+ return 0;
21
+ }
22
+ }
23
+ function computeDelta(predicted, actual) {
24
+ const delta = {};
25
+ let hasChanges = false;
26
+ for (const key of Object.keys(actual)) {
27
+ if (JSON.stringify(predicted[key]) !== JSON.stringify(actual[key])) {
28
+ delta[key] = actual[key];
29
+ hasChanges = true;
30
+ }
31
+ }
32
+ for (const key of Object.keys(predicted)) {
33
+ if (!(key in actual)) {
34
+ delta[key] = undefined;
35
+ hasChanges = true;
36
+ }
37
+ }
38
+ return hasChanges ? delta : null;
39
+ }
40
+ function applyDelta(predicted, delta) {
41
+ const result = { ...predicted };
42
+ for (const [key, value] of Object.entries(delta)) {
43
+ if (value === undefined)
44
+ delete result[key];
45
+ else
46
+ result[key] = value;
47
+ }
48
+ return result;
49
+ }
50
+ /** Sliding-window predictor: predicts next payload as copy of last seen. */
51
+ export class MessagePredictor {
52
+ windowSize;
53
+ windows = new Map();
54
+ constructor(windowSize) { this.windowSize = Math.max(1, windowSize); }
55
+ predict(streamId) {
56
+ const w = this.windows.get(streamId);
57
+ if (!w || w.length === 0)
58
+ return null;
59
+ const last = w[w.length - 1];
60
+ if (typeof last !== 'object' || last === null || Array.isArray(last))
61
+ return null;
62
+ return { ...last };
63
+ }
64
+ record(streamId, payload) {
65
+ let w = this.windows.get(streamId);
66
+ if (!w) {
67
+ w = [];
68
+ this.windows.set(streamId, w);
69
+ }
70
+ w.push(payload);
71
+ if (w.length > this.windowSize)
72
+ w.shift();
73
+ }
74
+ removeStream(streamId) { this.windows.delete(streamId); }
75
+ }
76
+ /** Round-robin multiplexer for concurrent message streams. */
77
+ export class OscillatoryRouter {
78
+ maxStreams;
79
+ cycleMs;
80
+ streamIds = [];
81
+ currentIndex = 0;
82
+ constructor(maxStreams, cycleMs) {
83
+ this.maxStreams = Math.max(1, maxStreams);
84
+ this.cycleMs = Math.max(1, cycleMs);
85
+ }
86
+ addStream(streamId) {
87
+ if (this.streamIds.includes(streamId) || this.streamIds.length >= this.maxStreams)
88
+ return false;
89
+ this.streamIds.push(streamId);
90
+ return true;
91
+ }
92
+ removeStream(streamId) {
93
+ const idx = this.streamIds.indexOf(streamId);
94
+ if (idx === -1)
95
+ return false;
96
+ this.streamIds.splice(idx, 1);
97
+ if (this.currentIndex >= this.streamIds.length)
98
+ this.currentIndex = 0;
99
+ return true;
100
+ }
101
+ nextStream() {
102
+ if (this.streamIds.length === 0)
103
+ return null;
104
+ const s = this.streamIds[this.currentIndex];
105
+ this.currentIndex = (this.currentIndex + 1) % this.streamIds.length;
106
+ return s;
107
+ }
108
+ getActiveStreams() { return [...this.streamIds]; }
109
+ get activeCount() { return this.streamIds.length; }
110
+ }
111
+ /** Combines MessagePredictor + OscillatoryRouter for bandwidth-efficient routing. */
112
+ export class CognitiveRouter {
113
+ config;
114
+ predictor;
115
+ router;
116
+ lastPayloads = new Map();
117
+ totalMessages = 0;
118
+ compressedMessages = 0;
119
+ totalOriginalBytes = 0;
120
+ totalCompressedBytes = 0;
121
+ constructor(config) {
122
+ this.config = { ...DEFAULT_CONFIG, ...config };
123
+ this.predictor = new MessagePredictor(this.config.predictionWindowSize);
124
+ this.router = new OscillatoryRouter(this.config.maxConcurrentStreams, this.config.oscillationFrequencyMs);
125
+ }
126
+ send(streamId, senderId, receiverId, payload) {
127
+ this.totalMessages++;
128
+ const originalSize = estimateSize(payload);
129
+ this.totalOriginalBytes += originalSize;
130
+ let compressed = false;
131
+ let transmittedPayload = payload;
132
+ let compressedSize = originalSize;
133
+ if (typeof payload === 'object' && payload !== null && !Array.isArray(payload)) {
134
+ const prediction = this.predictor.predict(streamId);
135
+ if (prediction) {
136
+ const delta = computeDelta(prediction, payload);
137
+ if (delta) {
138
+ const deltaSize = estimateSize(delta);
139
+ if (1 - deltaSize / Math.max(originalSize, 1) >= this.config.compressionThreshold) {
140
+ transmittedPayload = { __delta: true, __changes: delta };
141
+ compressedSize = estimateSize(transmittedPayload);
142
+ compressed = true;
143
+ this.compressedMessages++;
144
+ }
145
+ }
146
+ else {
147
+ transmittedPayload = { __delta: true, __changes: {} };
148
+ compressedSize = estimateSize(transmittedPayload);
149
+ compressed = true;
150
+ this.compressedMessages++;
151
+ }
152
+ }
153
+ }
154
+ this.totalCompressedBytes += compressedSize;
155
+ this.predictor.record(streamId, payload);
156
+ this.lastPayloads.set(streamId, payload);
157
+ return { streamId, senderId, receiverId, payload: transmittedPayload,
158
+ compressed, originalSize, compressedSize, timestamp: Date.now() };
159
+ }
160
+ receive(message) {
161
+ if (!message.compressed || typeof message.payload !== 'object' || message.payload === null) {
162
+ this.lastPayloads.set(message.streamId, message.payload);
163
+ this.predictor.record(message.streamId, message.payload);
164
+ return message.payload;
165
+ }
166
+ const envelope = message.payload;
167
+ if (!envelope.__delta) {
168
+ this.lastPayloads.set(message.streamId, message.payload);
169
+ this.predictor.record(message.streamId, message.payload);
170
+ return message.payload;
171
+ }
172
+ const prediction = this.predictor.predict(message.streamId);
173
+ const changes = (envelope.__changes ?? {});
174
+ if (!prediction)
175
+ return changes;
176
+ const reconstructed = applyDelta(prediction, changes);
177
+ this.predictor.record(message.streamId, reconstructed);
178
+ this.lastPayloads.set(message.streamId, reconstructed);
179
+ return reconstructed;
180
+ }
181
+ getStats() {
182
+ const saved = this.totalOriginalBytes - this.totalCompressedBytes;
183
+ return {
184
+ totalMessages: this.totalMessages, compressedMessages: this.compressedMessages,
185
+ bandwidthSavedBytes: Math.max(0, saved),
186
+ bandwidthReductionPercent: this.totalOriginalBytes > 0
187
+ ? (Math.max(0, saved) / this.totalOriginalBytes) * 100 : 0,
188
+ activeStreams: this.router.activeCount,
189
+ };
190
+ }
191
+ addStream(streamId) { this.router.addStream(streamId); }
192
+ removeStream(streamId) {
193
+ this.router.removeStream(streamId);
194
+ this.predictor.removeStream(streamId);
195
+ this.lastPayloads.delete(streamId);
196
+ }
197
+ }
198
+ /** Create a CognitiveRouter if the feature flag is enabled, otherwise null. */
199
+ export function createCognitiveRouter(config) {
200
+ if (!isCognitiveRoutingEnabled())
201
+ return null;
202
+ return new CognitiveRouter(config);
203
+ }
204
+ /** Check if Cognitive Routing feature flag is enabled. */
205
+ export function isCognitiveRoutingEnabled() {
206
+ return getRuVectorFeatureFlags().useCognitiveRouting;
207
+ }
208
+ //# sourceMappingURL=cognitive-routing.js.map
@@ -189,6 +189,42 @@ export interface RuVectorFeatureFlags {
189
189
  * @default true
190
190
  */
191
191
  useReasoningQEC: boolean;
192
+ /**
193
+ * Enable RVF-backed PatternStore (ADR-066)
194
+ * Replaces SQLite BLOB + in-memory HNSW rebuild with @ruvector/rvf-node
195
+ * persistent HNSW. Eliminates cold-start index rebuild, provides sub-ms
196
+ * search via native SIMD acceleration, and enables COW branching (ADR-067/069).
197
+ * Pattern metadata remains in SQLite; only vector storage moves to RVF.
198
+ * @default false — will flip to true after benchmarks confirm improvement
199
+ */
200
+ useRVFPatternStore: boolean;
201
+ /**
202
+ * Enable Agent Memory Branching via RVF COW (ADR-067)
203
+ * Each spawned agent gets a lightweight COW-derived .rvf branch file.
204
+ * Agent writes are isolated; successful agents merge back, failed agents
205
+ * discard at zero cost. Requires useRVFPatternStore to be enabled.
206
+ * @default false — will flip to true after benchmarks confirm improvement
207
+ */
208
+ useAgentMemoryBranching: boolean;
209
+ /**
210
+ * Enable Unified HNSW Provider (ADR-071)
211
+ * Routes all three legacy HNSW implementations (TypeScript, RuvectorFlatIndex,
212
+ * QEGNNEmbeddingIndex) through a single HnswAdapter backend. Eliminates
213
+ * inconsistent search results and triples maintenance burden.
214
+ * @default false — will flip to true after shadow validation confirms <2% divergence
215
+ */
216
+ useUnifiedHnsw: boolean;
217
+ /**
218
+ * RVF Migration Stage (ADR-072)
219
+ * Controls the gradual migration from SQLite to RVF primary persistence.
220
+ * Stage 0: SQLite only (legacy, no RVF involvement)
221
+ * Stage 1: Hybrid (current — ADR-065, RvfPatternStore for vectors, SQLite for metadata)
222
+ * Stage 2: Dual-write, SQLite source of truth (both engines receive writes, reads from SQLite)
223
+ * Stage 3: Dual-write, RVF source of truth (both engines receive writes, reads from RVF)
224
+ * Stage 4: RVF primary, SQLite escape hatch (writes to RVF only, SQLite for fallback)
225
+ * @default 1 — current hybrid
226
+ */
227
+ rvfMigrationStage: 0 | 1 | 2 | 3 | 4;
192
228
  /**
193
229
  * Enable HDC Pattern Fingerprinting (R1, ADR-087)
194
230
  * Uses 10,000-bit binary hypervectors with XOR binding for O(1) compositional
@@ -301,6 +337,24 @@ export interface RuVectorFeatureFlags {
301
337
  * @default false
302
338
  */
303
339
  useGrangerCausality: boolean;
340
+ /**
341
+ * Enable Cognitive Routing (R13, ADR-087)
342
+ * Predictive coding for agent communication bandwidth reduction. Predicts
343
+ * next message from sliding window context and sends only the delta.
344
+ * Oscillatory routing multiplexes concurrent message streams.
345
+ * Consumer: agent communication layer
346
+ * @default false
347
+ */
348
+ useCognitiveRouting: boolean;
349
+ /**
350
+ * Enable Hyperbolic HNSW (R14, ADR-087)
351
+ * Poincare ball embeddings for hierarchical data. Maps tree-structured data
352
+ * (module hierarchies, test suite trees) into hyperbolic space where distances
353
+ * naturally preserve parent-child relationships.
354
+ * Consumer: code-intelligence hierarchical search
355
+ * @default false
356
+ */
357
+ useHyperbolicHnsw: boolean;
304
358
  }
305
359
  /**
306
360
  * Default feature flags - all enabled by default
@@ -453,6 +507,26 @@ export declare function isCoherenceActionGateEnabled(): boolean;
453
507
  * @returns true if useReasoningQEC flag is set
454
508
  */
455
509
  export declare function isReasoningQECEnabled(): boolean;
510
+ /**
511
+ * Check if RVF-backed PatternStore is enabled (ADR-066)
512
+ * @returns true if useRVFPatternStore flag is set
513
+ */
514
+ export declare function isRVFPatternStoreEnabled(): boolean;
515
+ /**
516
+ * Check if Agent Memory Branching is enabled (ADR-067)
517
+ * @returns true if useAgentMemoryBranching flag is set
518
+ */
519
+ export declare function isAgentMemoryBranchingEnabled(): boolean;
520
+ /**
521
+ * Check if Unified HNSW Provider is enabled (ADR-071)
522
+ * @returns true if useUnifiedHnsw flag is set
523
+ */
524
+ export declare function isUnifiedHnswEnabled(): boolean;
525
+ /**
526
+ * Get the current RVF migration stage (ADR-072)
527
+ * @returns 0-4 representing the migration stage
528
+ */
529
+ export declare function getRvfMigrationStage(): 0 | 1 | 2 | 3 | 4;
456
530
  /**
457
531
  * Check if HDC Pattern Fingerprinting is enabled (R1, ADR-087)
458
532
  * @returns true if useHDCFingerprinting flag is set
@@ -518,6 +592,16 @@ export declare function isEpropOnlineLearningEnabled(): boolean;
518
592
  * @returns true if useGrangerCausality flag is set
519
593
  */
520
594
  export declare function isGrangerCausalityEnabled(): boolean;
595
+ /**
596
+ * Check if Cognitive Routing is enabled (R13, ADR-087)
597
+ * @returns true if useCognitiveRouting flag is set
598
+ */
599
+ export declare function isCognitiveRoutingEnabled(): boolean;
600
+ /**
601
+ * Check if Hyperbolic HNSW is enabled (R14, ADR-087)
602
+ * @returns true if useHyperbolicHnsw flag is set
603
+ */
604
+ export declare function isHyperbolicHnswEnabled(): boolean;
521
605
  /**
522
606
  * Initialize feature flags from environment variables
523
607
  *