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
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Agentic QE v3 - Tier 4: Reactive Compaction (IMP-08)
3
+ *
4
+ * Last-resort compaction triggered by 413 errors or context overflow
5
+ * detection. Aggressively peels the oldest conversation rounds until
6
+ * the estimated token count drops below the recovery target.
7
+ *
8
+ * This tier is destructive — it drops messages entirely (no summary).
9
+ * It exists to recover from situations where the context window is
10
+ * critically full and the session would otherwise fail.
11
+ */
12
+ import { estimateTokensPadded } from '../../mcp/middleware/microcompact';
13
+ // ============================================================================
14
+ // Defaults
15
+ // ============================================================================
16
+ const DEFAULT_RECOVERY_TARGET = 30_000;
17
+ const DEFAULT_MIN_PRESERVED = 4;
18
+ // ============================================================================
19
+ // Tier4Reactive
20
+ // ============================================================================
21
+ export class Tier4Reactive {
22
+ recoveryTarget;
23
+ minPreserved;
24
+ constructor(options = {}) {
25
+ this.recoveryTarget = options.recoveryTarget ?? DEFAULT_RECOVERY_TARGET;
26
+ this.minPreserved = options.minPreservedMessages ?? DEFAULT_MIN_PRESERVED;
27
+ }
28
+ /**
29
+ * Aggressively peel oldest messages until under the recovery target.
30
+ *
31
+ * Algorithm:
32
+ * 1. Compute total tokens.
33
+ * 2. If already under target, return early.
34
+ * 3. Walk forward from the oldest message, dropping messages until
35
+ * remaining tokens are at or below recoveryTarget.
36
+ * 4. Never drop below minPreservedMessages from the tail.
37
+ * 5. When dropping a tool_result, also drop its paired tool_use (and vice versa).
38
+ */
39
+ compact(messages, trigger = 'context_overflow') {
40
+ if (messages.length === 0) {
41
+ return {
42
+ tier: 4,
43
+ survivingMessages: [],
44
+ survivingTokens: 0,
45
+ droppedCount: 0,
46
+ tokensSaved: 0,
47
+ trigger,
48
+ };
49
+ }
50
+ // Annotate tokens
51
+ const annotated = messages.map(m => ({
52
+ ...m,
53
+ estimatedTokens: m.estimatedTokens ?? estimateTokensPadded(m.content),
54
+ }));
55
+ const totalTokens = annotated.reduce((s, m) => s + m.estimatedTokens, 0);
56
+ // Already under target?
57
+ if (totalTokens <= this.recoveryTarget) {
58
+ return {
59
+ tier: 4,
60
+ survivingMessages: messages,
61
+ survivingTokens: totalTokens,
62
+ droppedCount: 0,
63
+ tokensSaved: 0,
64
+ trigger,
65
+ };
66
+ }
67
+ // Build pair map: toolUseId -> indices of both tool_use and tool_result
68
+ const pairMap = new Map();
69
+ for (let i = 0; i < annotated.length; i++) {
70
+ const m = annotated[i];
71
+ if (m.toolUseId) {
72
+ const existing = pairMap.get(m.toolUseId) ?? [];
73
+ existing.push(i);
74
+ pairMap.set(m.toolUseId, existing);
75
+ }
76
+ }
77
+ // Mark messages for dropping
78
+ const dropped = new Set();
79
+ let remainingTokens = totalTokens;
80
+ // The tail we must preserve
81
+ const preserveFrom = Math.max(0, annotated.length - this.minPreserved);
82
+ for (let i = 0; i < annotated.length; i++) {
83
+ if (remainingTokens <= this.recoveryTarget)
84
+ break;
85
+ if (i >= preserveFrom)
86
+ break; // Don't touch the preserved tail
87
+ if (dropped.has(i))
88
+ continue;
89
+ // Drop this message
90
+ dropped.add(i);
91
+ remainingTokens -= annotated[i].estimatedTokens;
92
+ // If part of a pair, drop the partner too
93
+ if (annotated[i].toolUseId) {
94
+ const partners = pairMap.get(annotated[i].toolUseId) ?? [];
95
+ for (const partnerIdx of partners) {
96
+ if (!dropped.has(partnerIdx) && partnerIdx < preserveFrom) {
97
+ dropped.add(partnerIdx);
98
+ remainingTokens -= annotated[partnerIdx].estimatedTokens;
99
+ }
100
+ }
101
+ }
102
+ }
103
+ const surviving = annotated.filter((_, i) => !dropped.has(i));
104
+ const survivingTokens = surviving.reduce((s, m) => s + m.estimatedTokens, 0);
105
+ return {
106
+ tier: 4,
107
+ survivingMessages: surviving,
108
+ survivingTokens,
109
+ droppedCount: dropped.size,
110
+ tokensSaved: totalTokens - survivingTokens,
111
+ trigger,
112
+ };
113
+ }
114
+ /**
115
+ * Convenience: check if a given HTTP status or error message indicates
116
+ * a context overflow that should trigger reactive compaction.
117
+ */
118
+ static isContextOverflow(statusOrMessage) {
119
+ if (typeof statusOrMessage === 'number') {
120
+ return statusOrMessage === 413;
121
+ }
122
+ const lower = statusOrMessage.toLowerCase();
123
+ return lower.includes('context_length_exceeded')
124
+ || lower.includes('maximum context length')
125
+ || lower.includes('too many tokens')
126
+ || lower.includes('413');
127
+ }
128
+ }
129
+ //# sourceMappingURL=tier4-reactive.js.map
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Agent Memory Branching via RVF Copy-on-Write (ADR-067)
3
+ *
4
+ * Provides per-agent isolated memory branches using RVF's COW derive().
5
+ * Each spawned agent gets a lightweight .rvf branch file that shares
6
+ * the parent's data via copy-on-write. Writes are isolated to the branch.
7
+ *
8
+ * Lifecycle:
9
+ * spawn → createBranch() → agent works on isolated branch
10
+ * success → mergeBranch() → changed vectors flow back to parent
11
+ * failure → discardBranch() → delete branch file (zero cost)
12
+ *
13
+ * Storage cost: ~0.5% of parent for typical agent workloads
14
+ * (only changed vectors are physically copied).
15
+ *
16
+ * @module coordination/agent-memory-branch
17
+ */
18
+ import type { RvfNativeAdapter } from '../integrations/ruvector/rvf-native-adapter.js';
19
+ import type { WitnessChain } from '../audit/witness-chain.js';
20
+ export interface BranchHandle {
21
+ /** Agent ID that owns this branch */
22
+ agentId: string;
23
+ /** Path to the child .rvf file */
24
+ childPath: string;
25
+ /** Path to the parent .rvf file */
26
+ parentPath: string;
27
+ /** The child RVF adapter (for agent to use) */
28
+ childAdapter: RvfNativeAdapter;
29
+ /** When the branch was created */
30
+ createdAt: number;
31
+ /**
32
+ * Ingest log — records vectors the agent added to the child.
33
+ * On merge, these are replayed into the parent. This is necessary
34
+ * because the RVF NAPI doesn't expose "read vector by ID."
35
+ */
36
+ ingestLog: Array<{
37
+ id: string;
38
+ vector: Float32Array;
39
+ }>;
40
+ }
41
+ export interface BranchInfo {
42
+ /** Agent ID (derived from filename) */
43
+ agentId: string;
44
+ /** Path to the branch .rvf file */
45
+ path: string;
46
+ /** File size in bytes */
47
+ sizeBytes: number;
48
+ /** When the file was last modified */
49
+ modifiedAt: Date;
50
+ }
51
+ export type MergeStrategy = 'child-wins' | 'parent-wins';
52
+ export interface MergeResult {
53
+ /** Number of vectors merged from child to parent */
54
+ vectorsMerged: number;
55
+ /** Strategy used */
56
+ strategy: MergeStrategy;
57
+ /** Duration of merge in milliseconds */
58
+ durationMs: number;
59
+ }
60
+ export interface AgentMemoryBranchConfig {
61
+ /** Directory to store branch .rvf files (default: .agentic-qe/branches/) */
62
+ branchDir: string;
63
+ /** Default merge strategy (default: child-wins) */
64
+ defaultStrategy: MergeStrategy;
65
+ /** Max age in ms before orphan cleanup (default: 1 hour) */
66
+ orphanMaxAgeMs: number;
67
+ }
68
+ export declare class AgentMemoryBranch {
69
+ private readonly config;
70
+ private readonly parentAdapter;
71
+ private readonly activeBranches;
72
+ private witnessChain;
73
+ constructor(parentAdapter: RvfNativeAdapter, config?: Partial<AgentMemoryBranchConfig>);
74
+ /** Attach a witness chain for merge/discard audit trail */
75
+ setWitnessChain(wc: WitnessChain): void;
76
+ /**
77
+ * Create a COW branch for an agent.
78
+ * The child .rvf inherits all parent data via copy-on-write.
79
+ * Reads fall through to parent; writes are isolated to the child.
80
+ */
81
+ createBranch(agentId: string): BranchHandle;
82
+ /**
83
+ * Record a vector that an agent ingested into its branch.
84
+ * This log is replayed into the parent on merge (child-wins strategy).
85
+ *
86
+ * Agents MUST call this alongside childAdapter.ingest() so that
87
+ * merge can replay the actual vectors into the parent.
88
+ */
89
+ recordIngest(agentId: string, entries: Array<{
90
+ id: string;
91
+ vector: Float32Array;
92
+ }>): void;
93
+ /**
94
+ * Merge a successful agent's branch back to the parent.
95
+ * Replays the agent's ingest log into the parent (child-wins) or
96
+ * discards all child changes (parent-wins).
97
+ */
98
+ mergeBranch(handle: BranchHandle, strategy?: MergeStrategy): Promise<MergeResult>;
99
+ /**
100
+ * Discard a failed agent's branch.
101
+ * Simply deletes the child .rvf file — zero computational cost.
102
+ */
103
+ discardBranch(handle: BranchHandle): void;
104
+ /** Get active branch for an agent (if any) */
105
+ getBranch(agentId: string): BranchHandle | undefined;
106
+ /** List all active branches */
107
+ getActiveBranches(): BranchHandle[];
108
+ /** List all branch files on disk (including orphans) */
109
+ listBranchFiles(): BranchInfo[];
110
+ /**
111
+ * Clean up orphaned branch files older than maxAge.
112
+ * An orphan is a .rvf file in branchDir with no active branch.
113
+ */
114
+ cleanupOrphans(maxAgeMs?: number): number;
115
+ private cleanupBranchFile;
116
+ }
117
+ //# sourceMappingURL=agent-memory-branch.d.ts.map
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Agent Memory Branching via RVF Copy-on-Write (ADR-067)
3
+ *
4
+ * Provides per-agent isolated memory branches using RVF's COW derive().
5
+ * Each spawned agent gets a lightweight .rvf branch file that shares
6
+ * the parent's data via copy-on-write. Writes are isolated to the branch.
7
+ *
8
+ * Lifecycle:
9
+ * spawn → createBranch() → agent works on isolated branch
10
+ * success → mergeBranch() → changed vectors flow back to parent
11
+ * failure → discardBranch() → delete branch file (zero cost)
12
+ *
13
+ * Storage cost: ~0.5% of parent for typical agent workloads
14
+ * (only changed vectors are physically copied).
15
+ *
16
+ * @module coordination/agent-memory-branch
17
+ */
18
+ import { existsSync, mkdirSync, unlinkSync, readdirSync, statSync } from 'fs';
19
+ import { join, basename } from 'path';
20
+ const DEFAULT_CONFIG = {
21
+ branchDir: '.agentic-qe/branches',
22
+ defaultStrategy: 'child-wins',
23
+ orphanMaxAgeMs: 3600_000, // 1 hour
24
+ };
25
+ // ============================================================================
26
+ // AgentMemoryBranch Service
27
+ // ============================================================================
28
+ export class AgentMemoryBranch {
29
+ config;
30
+ parentAdapter;
31
+ activeBranches = new Map();
32
+ witnessChain = null;
33
+ constructor(parentAdapter, config) {
34
+ this.parentAdapter = parentAdapter;
35
+ this.config = { ...DEFAULT_CONFIG, ...config };
36
+ }
37
+ /** Attach a witness chain for merge/discard audit trail */
38
+ setWitnessChain(wc) {
39
+ this.witnessChain = wc;
40
+ }
41
+ // --------------------------------------------------------------------------
42
+ // Branch Lifecycle
43
+ // --------------------------------------------------------------------------
44
+ /**
45
+ * Create a COW branch for an agent.
46
+ * The child .rvf inherits all parent data via copy-on-write.
47
+ * Reads fall through to parent; writes are isolated to the child.
48
+ */
49
+ createBranch(agentId) {
50
+ if (this.activeBranches.has(agentId)) {
51
+ throw new Error(`Branch already exists for agent ${agentId}`);
52
+ }
53
+ // Ensure branch directory exists
54
+ if (!existsSync(this.config.branchDir)) {
55
+ mkdirSync(this.config.branchDir, { recursive: true });
56
+ }
57
+ const childPath = join(this.config.branchDir, `${agentId}.rvf`);
58
+ const parentPath = this.parentAdapter.path();
59
+ // COW derive — creates lightweight child sharing parent's data
60
+ const childAdapter = this.parentAdapter.derive(childPath);
61
+ const handle = {
62
+ agentId,
63
+ childPath,
64
+ parentPath,
65
+ childAdapter,
66
+ createdAt: Date.now(),
67
+ ingestLog: [],
68
+ };
69
+ this.activeBranches.set(agentId, handle);
70
+ return handle;
71
+ }
72
+ /**
73
+ * Record a vector that an agent ingested into its branch.
74
+ * This log is replayed into the parent on merge (child-wins strategy).
75
+ *
76
+ * Agents MUST call this alongside childAdapter.ingest() so that
77
+ * merge can replay the actual vectors into the parent.
78
+ */
79
+ recordIngest(agentId, entries) {
80
+ const handle = this.activeBranches.get(agentId);
81
+ if (!handle)
82
+ return;
83
+ for (const entry of entries) {
84
+ handle.ingestLog.push({ id: entry.id, vector: entry.vector });
85
+ }
86
+ }
87
+ /**
88
+ * Merge a successful agent's branch back to the parent.
89
+ * Replays the agent's ingest log into the parent (child-wins) or
90
+ * discards all child changes (parent-wins).
91
+ */
92
+ async mergeBranch(handle, strategy) {
93
+ const mergeStrategy = strategy ?? this.config.defaultStrategy;
94
+ const startTime = performance.now();
95
+ let vectorsMerged = 0;
96
+ if (mergeStrategy === 'child-wins' && handle.ingestLog.length > 0) {
97
+ // Replay the agent's ingest log into the parent
98
+ // These are the actual vectors the agent wrote — no zero-vector placeholders
99
+ try {
100
+ const result = this.parentAdapter.ingest(handle.ingestLog);
101
+ vectorsMerged = result.accepted;
102
+ }
103
+ catch (error) {
104
+ console.warn(`[AgentMemoryBranch] Merge replay failed for ${handle.agentId}:`, error);
105
+ }
106
+ }
107
+ // parent-wins: nothing to do — child changes are discarded
108
+ // Record in witness chain
109
+ this.witnessChain?.append('BRANCH_MERGE', {
110
+ agentId: handle.agentId,
111
+ strategy: mergeStrategy,
112
+ vectorsMerged,
113
+ branchPath: handle.childPath,
114
+ }, `agent-${handle.agentId}`);
115
+ // Cleanup child
116
+ this.cleanupBranchFile(handle);
117
+ this.activeBranches.delete(handle.agentId);
118
+ return {
119
+ vectorsMerged,
120
+ strategy: mergeStrategy,
121
+ durationMs: performance.now() - startTime,
122
+ };
123
+ }
124
+ /**
125
+ * Discard a failed agent's branch.
126
+ * Simply deletes the child .rvf file — zero computational cost.
127
+ */
128
+ discardBranch(handle) {
129
+ // Record in witness chain
130
+ this.witnessChain?.append('BRANCH_DISCARD', {
131
+ agentId: handle.agentId,
132
+ action: 'discard',
133
+ branchPath: handle.childPath,
134
+ }, `agent-${handle.agentId}`);
135
+ this.cleanupBranchFile(handle);
136
+ this.activeBranches.delete(handle.agentId);
137
+ }
138
+ // --------------------------------------------------------------------------
139
+ // Branch Management
140
+ // --------------------------------------------------------------------------
141
+ /** Get active branch for an agent (if any) */
142
+ getBranch(agentId) {
143
+ return this.activeBranches.get(agentId);
144
+ }
145
+ /** List all active branches */
146
+ getActiveBranches() {
147
+ return Array.from(this.activeBranches.values());
148
+ }
149
+ /** List all branch files on disk (including orphans) */
150
+ listBranchFiles() {
151
+ if (!existsSync(this.config.branchDir))
152
+ return [];
153
+ const files = readdirSync(this.config.branchDir)
154
+ .filter(f => f.endsWith('.rvf'));
155
+ return files.map(f => {
156
+ const fullPath = join(this.config.branchDir, f);
157
+ const stat = statSync(fullPath);
158
+ return {
159
+ agentId: basename(f, '.rvf'),
160
+ path: fullPath,
161
+ sizeBytes: stat.size,
162
+ modifiedAt: stat.mtime,
163
+ };
164
+ });
165
+ }
166
+ /**
167
+ * Clean up orphaned branch files older than maxAge.
168
+ * An orphan is a .rvf file in branchDir with no active branch.
169
+ */
170
+ cleanupOrphans(maxAgeMs) {
171
+ const maxAge = maxAgeMs ?? this.config.orphanMaxAgeMs;
172
+ const now = Date.now();
173
+ let cleaned = 0;
174
+ for (const info of this.listBranchFiles()) {
175
+ const age = now - info.modifiedAt.getTime();
176
+ if (age > maxAge && !this.activeBranches.has(info.agentId)) {
177
+ try {
178
+ unlinkSync(info.path);
179
+ // Also remove idmap sidecar if present
180
+ const idmapPath = `${info.path}.idmap.json`;
181
+ if (existsSync(idmapPath))
182
+ unlinkSync(idmapPath);
183
+ cleaned++;
184
+ }
185
+ catch {
186
+ // Best effort cleanup
187
+ }
188
+ }
189
+ }
190
+ return cleaned;
191
+ }
192
+ // --------------------------------------------------------------------------
193
+ // Private Helpers
194
+ // --------------------------------------------------------------------------
195
+ cleanupBranchFile(handle) {
196
+ try {
197
+ handle.childAdapter.close();
198
+ }
199
+ catch { /* best effort */ }
200
+ try {
201
+ if (existsSync(handle.childPath)) {
202
+ unlinkSync(handle.childPath);
203
+ }
204
+ // Remove idmap sidecar
205
+ const idmapPath = `${handle.childPath}.idmap.json`;
206
+ if (existsSync(idmapPath)) {
207
+ unlinkSync(idmapPath);
208
+ }
209
+ }
210
+ catch { /* best effort */ }
211
+ }
212
+ }
213
+ //# sourceMappingURL=agent-memory-branch.js.map
@@ -24,6 +24,15 @@ export declare class MailboxService {
24
24
  private readonly broadcastHandlers;
25
25
  /** Index of agents by domain for efficient broadcast */
26
26
  private readonly domainAgents;
27
+ /** R13: Optional cognitive router for bandwidth-efficient messaging (lazy-initialized) */
28
+ private cognitiveRouter;
29
+ private cognitiveRouterInitialized;
30
+ /**
31
+ * R13: Tracks which messages were stored with compressed payloads.
32
+ * Maps message ID to the RoutedMessage needed for decompression on receive().
33
+ * This avoids modifying the AgentMessage type while enabling real compression.
34
+ */
35
+ private readonly compressedMessages;
27
36
  /**
28
37
  * Create a mailbox for an agent. If a mailbox already exists for this
29
38
  * agent ID, the existing mailbox is returned unchanged.
@@ -132,6 +141,40 @@ export declare class MailboxService {
132
141
  * Create an immutable snapshot of a mutable mailbox.
133
142
  */
134
143
  private toSnapshot;
144
+ /**
145
+ * Lazily initialize the cognitive router when the feature flag is enabled.
146
+ * Returns the router instance or null if disabled / unavailable.
147
+ */
148
+ private ensureCognitiveRouter;
149
+ /**
150
+ * Attempt to compress a message via the cognitive router.
151
+ * When compression succeeds (compressed payload is smaller), returns a new
152
+ * AgentMessage with the compressed payload and tracks the RoutedMessage
153
+ * for later decompression. When compression is unavailable or unhelpful,
154
+ * returns the original message unchanged.
155
+ *
156
+ * Non-blocking: any error returns the original message unmodified.
157
+ */
158
+ private compressViaCognitive;
159
+ /**
160
+ * Decompress messages that were stored with compressed payloads.
161
+ * Uses the cognitive router's receive() to reconstruct original payloads.
162
+ * Messages that were not compressed are returned unchanged.
163
+ *
164
+ * Non-blocking: decompression failures return the stored payload as-is.
165
+ */
166
+ private decompressMessages;
167
+ /**
168
+ * Get cognitive routing statistics (bandwidth savings, compression rates).
169
+ * Returns null if cognitive routing is not enabled or not initialized.
170
+ */
171
+ getCognitiveRoutingStats(): {
172
+ totalMessages: number;
173
+ compressedMessages: number;
174
+ bandwidthSavedBytes: number;
175
+ bandwidthReductionPercent: number;
176
+ activeStreams: number;
177
+ } | null;
135
178
  }
136
179
  /**
137
180
  * Create a new MailboxService instance.