agentic-qe 3.9.0 → 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.
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +32 -0
- package/dist/audit/witness-chain.d.ts +1 -1
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-NTM4ZH3P.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-PQYB7VRU.js → agent-booster-wasm-UH2J6BNA.js} +2 -2
- package/dist/cli/chunks/{agent-handler-QDAB5NQS.js → agent-handler-ZCBWQE3X.js} +2 -2
- package/dist/cli/chunks/agent-memory-branch-2BAVI7UW.js +2 -0
- package/dist/cli/chunks/aqe-learning-engine-RVX6MPYK.js +2 -0
- package/dist/cli/chunks/{audit-S7JUYYVP.js → audit-G5UIJBSQ.js} +2 -2
- package/dist/cli/chunks/base-7HKNQ6UP.js +2 -0
- package/dist/cli/chunks/better-sqlite3-YHIAPPVT.js +2 -0
- package/dist/cli/chunks/brain-handler-5EE3J5PR.js +68 -0
- package/dist/cli/chunks/{branch-enumerator-XK4V5W7L.js → branch-enumerator-OV54PID5.js} +2 -2
- package/dist/cli/chunks/{browser-PALA5PL3.js → browser-7RZGKOEO.js} +2 -2
- package/dist/cli/chunks/browser-workflow-UOFSQK7X.js +2 -0
- package/dist/cli/chunks/{chunk-JJO7Y4H3.js → chunk-24E47G3D.js} +3 -3
- package/dist/cli/chunks/{chunk-UFUVUO3J.js → chunk-35H73OPP.js} +2 -2
- package/dist/cli/chunks/{chunk-7R6YMLVS.js → chunk-36X2O3BL.js} +2 -2
- package/dist/cli/chunks/{chunk-OI5NGQO2.js → chunk-3JESHZQM.js} +2 -2
- package/dist/cli/chunks/{chunk-72WOAVK6.js → chunk-3VAKR43Z.js} +1 -1
- package/dist/cli/chunks/chunk-3WQNW6CH.js +2 -0
- package/dist/cli/chunks/{chunk-24FKIJNC.js → chunk-43M6Y6VF.js} +2 -2
- package/dist/cli/chunks/{chunk-ZDATDCYN.js → chunk-4BHOAQJH.js} +1 -1
- package/dist/cli/chunks/{chunk-XIBDETCS.js → chunk-4LWXZCSD.js} +2 -2
- package/dist/cli/chunks/{chunk-3IUNFTIF.js → chunk-4TNXEANY.js} +1 -1
- package/dist/cli/chunks/{chunk-RTGGL7D7.js → chunk-4XBY5JDT.js} +2 -2
- package/dist/cli/chunks/chunk-4XREPCBZ.js +2 -0
- package/dist/cli/chunks/{chunk-TLHP5EII.js → chunk-5GPTM2RV.js} +1 -1
- package/dist/cli/chunks/{chunk-FGA7VIFR.js → chunk-5KBQQP3X.js} +3 -3
- package/dist/cli/chunks/{chunk-3ZOONQG6.js → chunk-5LDBKZ6P.js} +1 -1
- package/dist/cli/chunks/{chunk-LNQIY6BP.js → chunk-6BSJNG2S.js} +2 -2
- package/dist/cli/chunks/{chunk-EHDQJQ6Y.js → chunk-6YC24TPL.js} +5 -5
- package/dist/cli/chunks/{chunk-YVA65UZL.js → chunk-7ATLJCSG.js} +1 -1
- package/dist/cli/chunks/{chunk-U5RN7YQW.js → chunk-7JQTHPCD.js} +2 -2
- package/dist/cli/chunks/{chunk-ESVQ6MEB.js → chunk-7YUOUVN7.js} +2 -2
- package/dist/cli/chunks/{chunk-YAGODYIG.js → chunk-7ZNINH6J.js} +3 -3
- package/dist/cli/chunks/{chunk-4VUPRTVX.js → chunk-A57BEPL7.js} +2 -2
- package/dist/cli/chunks/{chunk-N2NS2PHA.js → chunk-AFPMCMVX.js} +2 -2
- package/dist/cli/chunks/{chunk-RU5WAHB7.js → chunk-AREIP4FX.js} +2 -2
- package/dist/cli/chunks/{chunk-XO6PVK2P.js → chunk-B2I7BJLL.js} +2 -2
- package/dist/cli/chunks/{chunk-HY6PMO5W.js → chunk-BEHP3DEF.js} +2 -2
- package/dist/cli/chunks/{chunk-YPFOCNOE.js → chunk-C24ZDUCM.js} +1 -1
- package/dist/cli/chunks/{chunk-CL6POIX4.js → chunk-D4PSFWND.js} +1 -1
- package/dist/cli/chunks/{chunk-YR6ZZGH7.js → chunk-D55PSO5D.js} +1 -1
- package/dist/cli/chunks/{chunk-4YS3IJ45.js → chunk-DC3HPOOJ.js} +1 -1
- package/dist/cli/chunks/chunk-DMGLX76J.js +180 -0
- package/dist/cli/chunks/{chunk-NZ2VCPN4.js → chunk-E33KQBMW.js} +2 -2
- package/dist/cli/chunks/{chunk-YANUP2RO.js → chunk-EQFZQPFN.js} +1 -1
- package/dist/cli/chunks/{chunk-TWUWL5EJ.js → chunk-FPRL6UDF.js} +2 -2
- package/dist/cli/chunks/{chunk-GRUUQAR6.js → chunk-FRNB4CH2.js} +2 -2
- package/dist/cli/chunks/{chunk-WBQSXPBI.js → chunk-FWDKVTK4.js} +2 -2
- package/dist/cli/chunks/chunk-GFNUESMU.js +2 -0
- package/dist/cli/chunks/{chunk-JBANAPWG.js → chunk-GJW6V35N.js} +1 -1
- package/dist/cli/chunks/{chunk-BULKFVYX.js → chunk-GLIFZWV2.js} +1 -1
- package/dist/cli/chunks/{chunk-WJ3DLOXF.js → chunk-GNUUBTSX.js} +2 -2
- package/dist/cli/chunks/{chunk-MZOFWJTM.js → chunk-HAUXLXKZ.js} +2 -2
- package/dist/cli/chunks/{chunk-X3KI6JOY.js → chunk-HTXSUTWL.js} +2 -2
- package/dist/cli/chunks/chunk-I5WZ2NM2.js +95 -0
- package/dist/cli/chunks/{chunk-BLBRY5UD.js → chunk-I7TA453K.js} +2 -2
- package/dist/cli/chunks/{chunk-5T2ZQWKF.js → chunk-IF6GW6IY.js} +2 -2
- package/dist/cli/chunks/{chunk-GKNNSCLC.js → chunk-IHWSNYL2.js} +2 -2
- package/dist/cli/chunks/chunk-IJKYJGJL.js +2 -0
- package/dist/cli/chunks/{chunk-3ADGXLTM.js → chunk-IQPXANCE.js} +1 -1
- package/dist/cli/chunks/{chunk-VOS4NQSF.js → chunk-JCEY7RLP.js} +2 -2
- package/dist/cli/chunks/{chunk-WGMPEW2T.js → chunk-JSOBRKMA.js} +2 -2
- package/dist/cli/chunks/{chunk-GPQ57KA4.js → chunk-KIGRLIU4.js} +2 -2
- package/dist/cli/chunks/{chunk-IFNIIK34.js → chunk-L4H54Z27.js} +3 -3
- package/dist/cli/chunks/{chunk-CS2KS7LP.js → chunk-LCOEBFAB.js} +1 -1
- package/dist/cli/chunks/chunk-MZ54VM6A.js +2 -0
- package/dist/cli/chunks/{chunk-IAV2JMIX.js → chunk-NB47YT6A.js} +2 -2
- package/dist/cli/chunks/{chunk-B36CDR4U.js → chunk-NG3BKE7V.js} +2 -2
- package/dist/cli/chunks/{chunk-WIEC7VKK.js → chunk-NG4TE3OW.js} +2 -2
- package/dist/cli/chunks/{chunk-Y7BHKZFJ.js → chunk-O636JKJR.js} +2 -2
- package/dist/cli/chunks/{chunk-BTREG4IW.js → chunk-O6QQ4HLS.js} +2 -2
- package/dist/cli/chunks/{chunk-MDUHYUHF.js → chunk-OFNIQCGX.js} +2 -2
- package/dist/cli/chunks/{chunk-JXM26HEE.js → chunk-OTSJU5LH.js} +2 -2
- package/dist/cli/chunks/{chunk-AFLLQ5PP.js → chunk-POLFT2PQ.js} +2 -2
- package/dist/cli/chunks/{chunk-XLRQYLWW.js → chunk-QAYTL6KC.js} +1 -1
- package/dist/cli/chunks/{chunk-AKE543X2.js → chunk-QMFP5OKH.js} +2 -2
- package/dist/cli/chunks/{chunk-OLHKGP35.js → chunk-RAJO7VML.js} +2 -2
- package/dist/cli/chunks/{chunk-5SKGFSKD.js → chunk-RKIGOARX.js} +2 -2
- package/dist/cli/chunks/{chunk-IGJPMN4I.js → chunk-RU6Q5HOC.js} +1 -1
- package/dist/cli/chunks/chunk-RV6SGDET.js +2 -0
- package/dist/cli/chunks/chunk-RWXI7XAR.js +2 -0
- package/dist/cli/chunks/{chunk-3NZLZHJI.js → chunk-RXVYOXDB.js} +1 -1
- package/dist/cli/chunks/{chunk-7VDBAVTY.js → chunk-SGRN6JFB.js} +2 -2
- package/dist/cli/chunks/{chunk-BPWXXEH2.js → chunk-SVNX4UWR.js} +128 -128
- package/dist/cli/chunks/{chunk-B6LLWYQ6.js → chunk-TL7ABIMP.js} +2 -2
- package/dist/cli/chunks/{chunk-6EOS7KX2.js → chunk-TOLYWONQ.js} +2 -2
- package/dist/cli/chunks/{chunk-XRE2HCWG.js → chunk-TPXYS3WG.js} +1 -1
- package/dist/cli/chunks/chunk-U5JQGRHZ.js +2 -0
- package/dist/cli/chunks/{chunk-SUSEVMZT.js → chunk-UB7RGVKO.js} +1 -1
- package/dist/cli/chunks/{chunk-4YOMLWEK.js → chunk-UBKK7KCR.js} +1 -1
- package/dist/cli/chunks/chunk-UMGWGX7C.js +2 -0
- package/dist/cli/chunks/chunk-UN4PA4M2.js +2 -0
- package/dist/cli/chunks/{chunk-N4TL73TH.js → chunk-US7INRP2.js} +8 -8
- package/dist/cli/chunks/{chunk-LHJQD2VU.js → chunk-UWDBFPHQ.js} +68 -68
- package/dist/cli/chunks/{chunk-4I2IOUS4.js → chunk-UZZCWWIG.js} +1 -1
- package/dist/cli/chunks/{chunk-BXAXGEFC.js → chunk-V4HM4QAO.js} +5 -5
- package/dist/cli/chunks/{chunk-2E5NQNSU.js → chunk-V4U3CTS2.js} +11 -11
- package/dist/cli/chunks/{chunk-XT2V2322.js → chunk-VCCMCFDU.js} +2 -2
- package/dist/cli/chunks/{chunk-2BZFNEN2.js → chunk-VEWIT6VN.js} +1 -1
- package/dist/cli/chunks/{chunk-4VBTXZRM.js → chunk-VNYGVG4Y.js} +2 -2
- package/dist/cli/chunks/{chunk-BGXNSCXX.js → chunk-VO3OVD5D.js} +1 -1
- package/dist/cli/chunks/{chunk-6SVX4DJC.js → chunk-VY74OMGQ.js} +3 -3
- package/dist/cli/chunks/{chunk-HRO6OZQD.js → chunk-WDJBGXC2.js} +1 -1
- package/dist/cli/chunks/chunk-WDV6TN7E.js +65 -0
- package/dist/cli/chunks/{chunk-YW2THB5Q.js → chunk-WLXEDOG4.js} +2 -2
- package/dist/cli/chunks/chunk-WXXAAXNS.js +12 -0
- package/dist/cli/chunks/{chunk-VSVXUTJN.js → chunk-X4MZYBOU.js} +2 -2
- package/dist/cli/chunks/{chunk-3IHG3WOY.js → chunk-XE2YAYU5.js} +3 -3
- package/dist/cli/chunks/chunk-XP6XKBNW.js +2 -0
- package/dist/cli/chunks/{chunk-JRYGQO2W.js → chunk-XPB6ZVQY.js} +1 -1
- package/dist/cli/chunks/chunk-XRVUSKQV.js +1 -0
- package/dist/cli/chunks/{chunk-ZAPS3UGQ.js → chunk-XSITQBYB.js} +3 -3
- package/dist/cli/chunks/{chunk-BDIEMZ22.js → chunk-XTLA4F5Z.js} +2 -2
- package/dist/cli/chunks/{chunk-FEKY7T6Q.js → chunk-XU6L2VJY.js} +2 -2
- package/dist/cli/chunks/chunk-XUFHYPZK.js +2 -0
- package/dist/cli/chunks/{chunk-UQHYFOBX.js → chunk-Y2ZEDXTV.js} +2 -2
- package/dist/cli/chunks/{chunk-CWFB6BSA.js → chunk-YQWB4QUP.js} +4 -4
- package/dist/cli/chunks/chunk-YUQIXT3G.js +79 -0
- package/dist/cli/chunks/chunk-YYYB2JN5.js +2 -0
- package/dist/cli/chunks/{chunk-GAOJV3OX.js → chunk-ZEUVPLGX.js} +2 -2
- package/dist/cli/chunks/{chunk-KP5NUODU.js → chunk-ZSRQHJEW.js} +1 -1
- package/dist/cli/chunks/{ci-J374KDLI.js → ci-N4NTYAAI.js} +2 -2
- package/dist/cli/chunks/ci-output-XYR2PSYH.js +2 -0
- package/dist/cli/chunks/{claude-flow-setup-245JLJCN.js → claude-flow-setup-FX7PRBJV.js} +2 -2
- package/dist/cli/chunks/client-CRRENRK4.js +2 -0
- package/dist/cli/chunks/{cline-installer-LBA2M5N3.js → cline-installer-GTHQOK7U.js} +2 -2
- package/dist/cli/chunks/{code-U4N4WONM.js → code-4G6ZHVNI.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-A57Z6BO4.js → code-index-extractor-MKJTP5AK.js} +2 -2
- package/dist/cli/chunks/{codex-installer-UXMK2N4T.js → codex-installer-UGS773DT.js} +2 -2
- package/dist/cli/chunks/{completions-W66BSCOE.js → completions-B3BXNXAU.js} +2 -2
- package/dist/cli/chunks/complexity-analyzer-PMN77CUP.js +2 -0
- package/dist/cli/chunks/{continuedev-installer-LRFZ2SJM.js → continuedev-installer-3DYKSIP3.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-CQ3JYBIB.js → copilot-installer-IUC5HDHD.js} +2 -2
- package/dist/cli/chunks/cost-tracker-GSGQ7O5T.js +2 -0
- package/dist/cli/chunks/{coverage-4PUEQXAY.js → coverage-PO72QC3P.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-FSCGJG3B.js +2 -0
- package/dist/cli/chunks/{cursor-installer-JZEDEDHA.js → cursor-installer-FK53S3ZL.js} +2 -2
- package/dist/cli/chunks/{daemon-B7TWGHXQ.js → daemon-4UIQTQ73.js} +3 -3
- package/dist/cli/chunks/dag-attention-scheduler-ZGIMLECE.js +2 -0
- package/dist/cli/chunks/detect-XXHLTLL7.js +2 -0
- package/dist/cli/chunks/{domain-handler-FT5FLZWL.js → domain-handler-PPGFP7P4.js} +2 -2
- package/dist/cli/chunks/domain-transfer-Q5UAE65W.js +2 -0
- package/dist/cli/chunks/dream-PONKQULG.js +2 -0
- package/dist/cli/chunks/esm-node-XLWDJRBX.js +2 -0
- package/dist/cli/chunks/{eval-GHMPFGWV.js → eval-JVJKHSTQ.js} +2 -2
- package/dist/cli/chunks/{fast-paths-B3R647KN.js → fast-paths-3KX4ZV66.js} +2 -2
- package/dist/cli/chunks/feature-flags-2NOVE7DL.js +2 -0
- package/dist/cli/chunks/{feature-flags-DWS7ARSX.js → feature-flags-GKHHG2I2.js} +2 -2
- package/dist/cli/chunks/file-discovery-XFSGQNM3.js +2 -0
- package/dist/cli/chunks/{fleet-EKOKMOMW.js → fleet-FOIDAXLR.js} +3 -3
- package/dist/cli/chunks/gnn-wrapper-HPCQREKP.js +2 -0
- package/dist/cli/chunks/{heartbeat-handler-MBBS4IBU.js → heartbeat-handler-HTR3EFFV.js} +4 -4
- package/dist/cli/chunks/{heartbeat-scheduler-XDGMOT7X.js → heartbeat-scheduler-NZQWN7CH.js} +2 -2
- package/dist/cli/chunks/hnsw-adapter-BNA5WUAB.js +2 -0
- package/dist/cli/chunks/hnsw-index-RQIIAE7S.js +2 -0
- package/dist/cli/chunks/hnsw-legacy-bridge-H6OA3AA3.js +2 -0
- package/dist/cli/chunks/hnswlib-node-FF27BDMD.js +2 -0
- package/dist/cli/chunks/{hooks-L5VLZGEK.js → hooks-63NZQ7NH.js} +6 -6
- package/dist/cli/chunks/hypergraph-engine-XMSLA4XH.js +2 -0
- package/dist/cli/chunks/{hypergraph-handler-3HDGB5SZ.js → hypergraph-handler-ID6J6GS2.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-FS2UNVP4.js +2 -0
- package/dist/cli/chunks/{init-handler-JDET6WUN.js → init-handler-CIKZGGAY.js} +6 -6
- package/dist/cli/chunks/init-wizard-TUU5PPY6.js +2 -0
- package/dist/cli/chunks/kernel-XFG42WAG.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-GZZG5AFW.js → kilocode-installer-N7NLISYY.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-IWNY5TKH.js → kiro-installer-U6XIPAT3.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-XV7FPU2T.js +2 -0
- package/dist/cli/chunks/{learning-722ZNSZ6.js → learning-NKOF7KDJ.js} +3 -3
- package/dist/cli/chunks/{llm-router-DNAV746L.js → llm-router-34WHT3PH.js} +2 -2
- package/dist/cli/chunks/{load-Y3GCUFM4.js → load-ZW4Z3YLT.js} +2 -2
- package/dist/cli/chunks/load-test-F4L7RTXJ.js +2 -0
- package/dist/cli/chunks/{mcp-LKPIBZ3W.js → mcp-6R7SVGKO.js} +2 -2
- package/dist/cli/chunks/{memory-L57MLFOP.js → memory-OUYCBU4M.js} +5 -5
- package/dist/cli/chunks/memory-backend-DTJD2DWF.js +2 -0
- package/dist/cli/chunks/{memory-handlers-MDZQ7HVW.js → memory-handlers-WNXKZRNM.js} +2 -2
- package/dist/cli/chunks/opencode-installer-FR75GHFU.js +3 -0
- package/dist/cli/chunks/{orchestrator-QHSBB2UC.js → orchestrator-AK7ZMVNH.js} +5 -5
- package/dist/cli/chunks/{pipeline-D3QER35Z.js → pipeline-CFOPG7EM.js} +2 -2
- package/dist/cli/chunks/{platform-T4E7Q3RD.js → platform-NY3ULBR7.js} +2 -2
- package/dist/cli/chunks/{plugin-JHW2YPRC.js → plugin-LRANQYUR.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-G7CFNNQV.js → prime-radiant-advanced-wasm-6KEIU55P.js} +2 -2
- package/dist/cli/chunks/protocol-executor-6W4PS2D4.js +2 -0
- package/dist/cli/chunks/{protocol-handler-2BQQ4HDM.js → protocol-handler-ESSZGJ7R.js} +2 -2
- package/dist/cli/chunks/{prove-UQ6JFT73.js → prove-EF2PPY65.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-7G3TZLEA.js +2 -0
- package/dist/cli/chunks/{quality-JRZYMC77.js → quality-AYBXB635.js} +2 -2
- package/dist/cli/chunks/queen-coordinator-NFPKGMQN.js +2 -0
- package/dist/cli/chunks/real-embeddings-QPBXE7MA.js +2 -0
- package/dist/cli/chunks/{roocode-installer-F4E2LAYR.js → roocode-installer-UF6MMBH6.js} +2 -2
- package/dist/cli/chunks/router-F4B7Q66G.js +2 -0
- package/dist/cli/chunks/routing-feedback-5CIDDW7P.js +2 -0
- package/dist/cli/chunks/{routing-handler-VNKFUUGB.js → routing-handler-5TVKFU7V.js} +2 -2
- package/dist/cli/chunks/ruvector-commands-E33VXFIA.js +8 -0
- package/dist/cli/chunks/rvf-dual-writer-O3AZKD24.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-IKEUZ2HX.js +2 -0
- package/dist/cli/chunks/rvf-migration-coordinator-M4H7W4RN.js +2 -0
- package/dist/cli/chunks/rvf-native-adapter-UX3WAPIP.js +2 -0
- package/dist/cli/chunks/safe-db-QBBNXEVK.js +2 -0
- package/dist/cli/chunks/schedule-GFT4NN6Z.js +2 -0
- package/dist/cli/chunks/scheduler-CQ56T7DB.js +2 -0
- package/dist/cli/chunks/{security-EBEG2OPU.js → security-ZLWT7IU3.js} +3 -3
- package/dist/cli/chunks/shared-rvf-adapter-EXACQ2PT.js +2 -0
- package/dist/cli/chunks/shared-rvf-dual-writer-G43LQDIV.js +2 -0
- package/dist/cli/chunks/sqlite-persistence-JHSUZPAW.js +2 -0
- package/dist/cli/chunks/{status-handler-VZ32M4G4.js → status-handler-7P23CXUI.js} +2 -2
- package/dist/cli/chunks/{structural-health-K6LRCKV6.js → structural-health-SCNBNL7K.js} +2 -2
- package/dist/cli/chunks/{sync-MHSHNLIM.js → sync-BYZBBH65.js} +2 -2
- package/dist/cli/chunks/{task-handler-JNOIBZ2G.js → task-handler-DWJQXZ2K.js} +2 -2
- package/dist/cli/chunks/{task-handlers-P5DSUKND.js → task-handlers-35JIXVRW.js} +2 -2
- package/dist/cli/chunks/{test-DO22BNIL.js → test-2JSS4XW7.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-VLRQZEFL.js → test-scheduling-TWJ5I7N3.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-4VJKGVMK.js → token-bootstrap-LLLNJT5V.js} +2 -2
- package/dist/cli/chunks/{token-usage-LG3PXRXH.js → token-usage-EQ4HM4EZ.js} +2 -2
- package/dist/cli/chunks/transformers-PBIR5U5S.js +2 -0
- package/dist/cli/chunks/{tree-sitter-wasm-parser-FT2KB66N.js → tree-sitter-wasm-parser-X3L2GXUX.js} +2 -2
- package/dist/cli/chunks/types-OD43K2NP.js +2 -0
- package/dist/cli/chunks/unified-memory-YPHONR2T.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-HJS4OXWM.js +2 -0
- package/dist/cli/chunks/unified-persistence-EFZRO6AW.js +2 -0
- package/dist/cli/chunks/{validate-VQCRSVNQ.js → validate-POMLT2KU.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-A5DHAWTP.js → validate-swarm-UOC4JGZT.js} +2 -2
- package/dist/cli/chunks/{vibium-RZBSL4EB.js → vibium-5JF6LAXI.js} +2 -2
- package/dist/cli/chunks/visual-security-7KWFLYNB.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-7C4NXEOF.js → web-tree-sitter-R7WR7J7B.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-ES3KPQG3.js → windsurf-installer-ZSPEUBKR.js} +2 -2
- package/dist/cli/chunks/witness-chain-CFSPCXHG.js +2 -0
- package/dist/cli/chunks/witness-chain-RWU6WT37.js +2 -0
- package/dist/cli/chunks/{workflow-JETHX4ML.js → workflow-YNQT3OW2.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-Z6TAVMQP.js +2 -0
- package/dist/cli/chunks/{wrappers-WP5RH745.js → wrappers-BP4FODVH.js} +2 -2
- package/dist/cli/commands/ruvector-commands.js +14 -2
- package/dist/coordination/agent-memory-branch.d.ts +117 -0
- package/dist/coordination/agent-memory-branch.js +213 -0
- package/dist/coordination/agent-teams/mailbox.d.ts +43 -0
- package/dist/coordination/agent-teams/mailbox.js +130 -4
- package/dist/coordination/handlers/handler-utils.d.ts +1 -0
- package/dist/coordination/handlers/handler-utils.js +9 -2
- package/dist/coordination/handlers/quality-handlers.js +7 -1
- package/dist/domains/contract-testing/coordinator.js +11 -0
- package/dist/domains/quality-assessment/coherence/gate-controller.d.ts +20 -1
- package/dist/domains/quality-assessment/coherence/gate-controller.js +64 -0
- package/dist/domains/quality-assessment/coherence/index.d.ts +3 -3
- package/dist/domains/quality-assessment/coherence/index.js +2 -2
- package/dist/domains/quality-assessment/coherence/types.d.ts +39 -0
- package/dist/domains/quality-assessment/coherence/types.js +11 -0
- package/dist/domains/quality-assessment/coordinator.d.ts +14 -0
- package/dist/domains/quality-assessment/coordinator.js +92 -0
- package/dist/domains/test-execution/coordinator.d.ts +19 -0
- package/dist/domains/test-execution/coordinator.js +102 -5
- package/dist/domains/test-generation/coordinator.js +11 -0
- package/dist/domains/test-generation/interfaces.d.ts +2 -0
- package/dist/domains/test-generation/services/test-generator.d.ts +9 -0
- package/dist/domains/test-generation/services/test-generator.js +37 -0
- package/dist/init/agents-installer.d.ts +5 -3
- package/dist/init/agents-installer.js +17 -43
- package/dist/init/find-package-root.d.ts +22 -0
- package/dist/init/find-package-root.js +46 -0
- package/dist/init/n8n-installer.d.ts +4 -2
- package/dist/init/n8n-installer.js +23 -23
- package/dist/init/opencode-installer.d.ts +0 -5
- package/dist/init/opencode-installer.js +12 -39
- package/dist/init/skills-installer.d.ts +5 -2
- package/dist/init/skills-installer.js +15 -37
- package/dist/integrations/embeddings/index/HNSWIndex.d.ts +9 -2
- package/dist/integrations/embeddings/index/HNSWIndex.js +110 -35
- package/dist/integrations/ruvector/cognitive-routing.d.ts +67 -0
- package/dist/integrations/ruvector/cognitive-routing.js +208 -0
- package/dist/integrations/ruvector/feature-flags.d.ts +84 -0
- package/dist/integrations/ruvector/feature-flags.js +59 -0
- package/dist/integrations/ruvector/hdc-fingerprint.d.ts +76 -0
- package/dist/integrations/ruvector/hdc-fingerprint.js +217 -0
- package/dist/integrations/ruvector/hyperbolic-hnsw.d.ts +59 -0
- package/dist/integrations/ruvector/hyperbolic-hnsw.js +194 -0
- package/dist/integrations/ruvector/index.d.ts +5 -2
- package/dist/integrations/ruvector/index.js +13 -2
- package/dist/integrations/ruvector/shared-rvf-adapter.d.ts +24 -0
- package/dist/integrations/ruvector/shared-rvf-adapter.js +55 -0
- package/dist/integrations/ruvector/shared-rvf-dual-writer.d.ts +6 -0
- package/dist/integrations/ruvector/shared-rvf-dual-writer.js +38 -0
- package/dist/integrations/ruvector/sona-persistence.d.ts +8 -0
- package/dist/integrations/ruvector/sona-persistence.js +10 -0
- package/dist/integrations/ruvector/vector-delta-tracker.d.ts +96 -0
- package/dist/integrations/ruvector/vector-delta-tracker.js +226 -0
- package/dist/kernel/agent-coordinator.d.ts +75 -1
- package/dist/kernel/agent-coordinator.js +250 -1
- package/dist/kernel/hnsw-legacy-bridge.d.ts +38 -0
- package/dist/kernel/hnsw-legacy-bridge.js +88 -0
- package/dist/kernel/hnsw-shadow-validator.d.ts +91 -0
- package/dist/kernel/hnsw-shadow-validator.js +139 -0
- package/dist/kernel/index.d.ts +1 -1
- package/dist/kernel/index.js +1 -1
- package/dist/kernel/interfaces.d.ts +39 -0
- package/dist/kernel/kernel.d.ts +23 -0
- package/dist/kernel/kernel.js +106 -1
- package/dist/kernel/unified-memory.d.ts +1 -1
- package/dist/kernel/unified-memory.js +7 -3
- package/dist/learning/aqe-learning-engine.d.ts +65 -0
- package/dist/learning/aqe-learning-engine.js +134 -0
- package/dist/learning/dream/dream-engine.d.ts +6 -1
- package/dist/learning/dream/dream-engine.js +37 -2
- package/dist/learning/dream/dream-scheduler.d.ts +25 -0
- package/dist/learning/dream/dream-scheduler.js +120 -0
- package/dist/learning/dream/rvcow-branch-manager.d.ts +6 -3
- package/dist/learning/dream/rvcow-branch-manager.js +60 -5
- package/dist/learning/experience-capture.d.ts +3 -3
- package/dist/learning/hyperbolic-pattern-index.d.ts +82 -0
- package/dist/learning/hyperbolic-pattern-index.js +142 -0
- package/dist/learning/index.d.ts +3 -3
- package/dist/learning/index.js +1 -1
- package/dist/learning/metrics-tracker.d.ts +44 -0
- package/dist/learning/metrics-tracker.js +37 -0
- package/dist/learning/pattern-promotion.d.ts +3 -3
- package/dist/learning/pattern-store.d.ts +45 -2
- package/dist/learning/pattern-store.js +217 -4
- package/dist/learning/qe-patterns.d.ts +1 -1
- package/dist/learning/qe-reasoning-bank.js +1 -1
- package/dist/learning/rvf-pattern-migration.d.ts +50 -0
- package/dist/learning/rvf-pattern-migration.js +106 -0
- package/dist/learning/rvf-pattern-store.d.ts +66 -0
- package/dist/learning/rvf-pattern-store.js +447 -0
- package/dist/mcp/bundle.js +1894 -1804
- package/dist/mcp/handlers/index.d.ts +1 -0
- package/dist/mcp/handlers/index.js +2 -0
- package/dist/mcp/handlers/migration-handlers.d.ts +52 -0
- package/dist/mcp/handlers/migration-handlers.js +85 -0
- package/dist/mcp/protocol-server.d.ts +1 -0
- package/dist/mcp/protocol-server.js +63 -2
- package/dist/mcp/types.d.ts +1 -1
- package/dist/optimization/early-exit-token-optimizer.d.ts +7 -7
- package/dist/optimization/early-exit-token-optimizer.js +3 -3
- package/dist/persistence/rvf-consistency-validator.d.ts +85 -0
- package/dist/persistence/rvf-consistency-validator.js +182 -0
- package/dist/persistence/rvf-migration-adapter.d.ts +125 -0
- package/dist/persistence/rvf-migration-adapter.js +303 -0
- package/dist/persistence/rvf-migration-coordinator.d.ts +115 -0
- package/dist/persistence/rvf-migration-coordinator.js +224 -0
- package/dist/persistence/rvf-stage-gate.d.ts +70 -0
- package/dist/persistence/rvf-stage-gate.js +163 -0
- package/package.json +10 -10
- package/dist/cli/chunks/adapter-WBR5NXS3.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-TK4JQCGT.js +0 -2
- package/dist/cli/chunks/base-2WXOSMBQ.js +0 -2
- package/dist/cli/chunks/better-sqlite3-7KY2RDXO.js +0 -2
- package/dist/cli/chunks/brain-handler-PPEGDCN4.js +0 -68
- package/dist/cli/chunks/browser-workflow-42F7GK5T.js +0 -2
- package/dist/cli/chunks/chunk-263XS447.js +0 -2
- package/dist/cli/chunks/chunk-2I7J3O6V.js +0 -2
- package/dist/cli/chunks/chunk-3JPRUND5.js +0 -2
- package/dist/cli/chunks/chunk-3THRQEZ2.js +0 -95
- package/dist/cli/chunks/chunk-4B6NCELM.js +0 -2
- package/dist/cli/chunks/chunk-62ADTHV7.js +0 -2
- package/dist/cli/chunks/chunk-BR26T7ZS.js +0 -180
- package/dist/cli/chunks/chunk-DRT3WKQW.js +0 -2
- package/dist/cli/chunks/chunk-FIA6X7UL.js +0 -2
- package/dist/cli/chunks/chunk-J3KWWR6Z.js +0 -1
- package/dist/cli/chunks/chunk-JZSDOIXA.js +0 -2
- package/dist/cli/chunks/chunk-MV6CMOJQ.js +0 -65
- package/dist/cli/chunks/chunk-N5UXCLFI.js +0 -2
- package/dist/cli/chunks/chunk-OF4D7MYI.js +0 -2
- package/dist/cli/chunks/chunk-QOVHWZEP.js +0 -1
- package/dist/cli/chunks/chunk-RFSN6IDA.js +0 -79
- package/dist/cli/chunks/chunk-X5IJGWYG.js +0 -2
- package/dist/cli/chunks/ci-output-7JN7F6CI.js +0 -2
- package/dist/cli/chunks/client-MCSNSH2C.js +0 -2
- package/dist/cli/chunks/complexity-analyzer-AB4OZARV.js +0 -2
- package/dist/cli/chunks/cost-tracker-4F723RB6.js +0 -2
- package/dist/cli/chunks/cross-domain-router-OWR5IJ5G.js +0 -2
- package/dist/cli/chunks/dag-attention-scheduler-JWO6XI6A.js +0 -2
- package/dist/cli/chunks/detect-L6ZZHUSX.js +0 -2
- package/dist/cli/chunks/domain-transfer-5Y4FGJAJ.js +0 -2
- package/dist/cli/chunks/dream-4TDBIYED.js +0 -2
- package/dist/cli/chunks/esm-node-2PKHKOTS.js +0 -2
- package/dist/cli/chunks/feature-flags-IVQ3AL4Q.js +0 -2
- package/dist/cli/chunks/file-discovery-QFPA6GMV.js +0 -2
- package/dist/cli/chunks/gnn-wrapper-OYC55N5E.js +0 -2
- package/dist/cli/chunks/hnsw-index-YO7CT23I.js +0 -2
- package/dist/cli/chunks/hnswlib-node-56YWVXFE.js +0 -2
- package/dist/cli/chunks/hypergraph-engine-A4Y2ZRAG.js +0 -2
- package/dist/cli/chunks/impact-analyzer-UEIGXSZ4.js +0 -2
- package/dist/cli/chunks/init-wizard-JWZUGIPJ.js +0 -2
- package/dist/cli/chunks/kernel-YNDTVKIW.js +0 -2
- package/dist/cli/chunks/knowledge-graph-NGJKFTSN.js +0 -2
- package/dist/cli/chunks/load-test-GZUBXFF3.js +0 -2
- package/dist/cli/chunks/memory-backend-3NQIZUXE.js +0 -2
- package/dist/cli/chunks/opencode-installer-4HUB36H5.js +0 -3
- package/dist/cli/chunks/protocol-executor-SPUVRDWT.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-3HBK2FVD.js +0 -2
- package/dist/cli/chunks/queen-coordinator-RW3NKO5A.js +0 -2
- package/dist/cli/chunks/real-embeddings-GK63VF35.js +0 -2
- package/dist/cli/chunks/router-RJGHWDQ3.js +0 -2
- package/dist/cli/chunks/routing-feedback-ZXBXFKX6.js +0 -2
- package/dist/cli/chunks/ruvector-commands-2TLNHC3A.js +0 -8
- package/dist/cli/chunks/rvf-dual-writer-MQW2SJLT.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-LKFKTMUN.js +0 -2
- package/dist/cli/chunks/safe-db-G22E5ROA.js +0 -2
- package/dist/cli/chunks/schedule-Y7VVCPYV.js +0 -2
- package/dist/cli/chunks/scheduler-AUQIFQB7.js +0 -2
- package/dist/cli/chunks/shared-rvf-dual-writer-BVSCQAFS.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-JAVHUGGL.js +0 -2
- package/dist/cli/chunks/transformers-GY7SIKEU.js +0 -2
- package/dist/cli/chunks/types-QJGNBKP2.js +0 -2
- package/dist/cli/chunks/unified-memory-XYGENQUT.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-MVEGQBF3.js +0 -2
- package/dist/cli/chunks/unified-persistence-PFRCWEUG.js +0 -2
- package/dist/cli/chunks/visual-security-V47BLGJM.js +0 -2
- package/dist/cli/chunks/witness-chain-BR63P4A7.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-7PZMX3JZ.js +0 -2
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RVF Migration Adapter (ADR-072)
|
|
3
|
+
*
|
|
4
|
+
* Extends RvfDualWriter concepts to all persistence operations (KV, Q-values,
|
|
5
|
+
* GOAP state). Routes reads and writes based on the rvfMigrationStage config:
|
|
6
|
+
*
|
|
7
|
+
* Stage 0: SQLite only (legacy)
|
|
8
|
+
* Stage 1: Hybrid (current — vectors in RVF, metadata in SQLite)
|
|
9
|
+
* Stage 2: Dual-write, read from SQLite (both engines receive writes)
|
|
10
|
+
* Stage 3: Dual-write, read from RVF (both engines receive writes)
|
|
11
|
+
* Stage 4: RVF primary, SQLite escape hatch
|
|
12
|
+
*
|
|
13
|
+
* Each stage is reversible by changing the config — no data is lost.
|
|
14
|
+
*
|
|
15
|
+
* @module persistence/rvf-migration-adapter
|
|
16
|
+
*/
|
|
17
|
+
import type { RvfStore, RvfStatus } from '../integrations/ruvector/rvf-dual-writer.js';
|
|
18
|
+
export type MigrationStage = 0 | 1 | 2 | 3 | 4;
|
|
19
|
+
export declare const STAGE_NAMES: Record<MigrationStage, string>;
|
|
20
|
+
export interface MigrationAdapterConfig {
|
|
21
|
+
/** Current migration stage */
|
|
22
|
+
stage: MigrationStage;
|
|
23
|
+
/** Path to RVF container */
|
|
24
|
+
rvfPath: string;
|
|
25
|
+
/** Vector dimensions (default: 384) */
|
|
26
|
+
dimensions: number;
|
|
27
|
+
/** Enable fallback on RVF read failure in stage 3+ */
|
|
28
|
+
enableFallback: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface WriteResult {
|
|
31
|
+
sqliteSuccess: boolean;
|
|
32
|
+
rvfSuccess: boolean;
|
|
33
|
+
stage: MigrationStage;
|
|
34
|
+
fallbackUsed: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface ReadResult<T> {
|
|
37
|
+
data: T | null;
|
|
38
|
+
source: 'sqlite' | 'rvf' | 'fallback';
|
|
39
|
+
latencyMs: number;
|
|
40
|
+
stage: MigrationStage;
|
|
41
|
+
}
|
|
42
|
+
export interface MigrationMetrics {
|
|
43
|
+
stage: MigrationStage;
|
|
44
|
+
stageName: string;
|
|
45
|
+
totalWrites: number;
|
|
46
|
+
totalReads: number;
|
|
47
|
+
rvfWriteFailures: number;
|
|
48
|
+
rvfReadFailures: number;
|
|
49
|
+
fallbacksUsed: number;
|
|
50
|
+
sqliteReadLatencyAvgMs: number;
|
|
51
|
+
rvfReadLatencyAvgMs: number;
|
|
52
|
+
sqliteWriteLatencyAvgMs: number;
|
|
53
|
+
rvfWriteLatencyAvgMs: number;
|
|
54
|
+
}
|
|
55
|
+
interface SqliteDb {
|
|
56
|
+
prepare(sql: string): {
|
|
57
|
+
run(...params: unknown[]): {
|
|
58
|
+
changes: number;
|
|
59
|
+
};
|
|
60
|
+
get(...params: unknown[]): unknown;
|
|
61
|
+
all(...params: unknown[]): unknown[];
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export declare class RvfMigrationAdapter {
|
|
65
|
+
private config;
|
|
66
|
+
private db;
|
|
67
|
+
private rvfStore;
|
|
68
|
+
private totalWrites;
|
|
69
|
+
private totalReads;
|
|
70
|
+
private rvfWriteFailures;
|
|
71
|
+
private rvfReadFailures;
|
|
72
|
+
private fallbacksUsed;
|
|
73
|
+
private sqliteLatencies;
|
|
74
|
+
private rvfLatencies;
|
|
75
|
+
private sqliteWriteLatencies;
|
|
76
|
+
private rvfWriteLatencies;
|
|
77
|
+
constructor(config: Partial<MigrationAdapterConfig> & {
|
|
78
|
+
stage: MigrationStage;
|
|
79
|
+
});
|
|
80
|
+
/** Attach a SQLite database handle */
|
|
81
|
+
setSqliteDb(db: SqliteDb): void;
|
|
82
|
+
/** Attach an RVF store */
|
|
83
|
+
setRvfStore(store: RvfStore): void;
|
|
84
|
+
/** Get current migration stage */
|
|
85
|
+
get stage(): MigrationStage;
|
|
86
|
+
/** Update migration stage (called by coordinator on promotion) */
|
|
87
|
+
setStage(stage: MigrationStage): void;
|
|
88
|
+
/**
|
|
89
|
+
* Write a vector to the appropriate store(s) based on migration stage.
|
|
90
|
+
*
|
|
91
|
+
* Stage 0-1: SQLite only (vectors as BLOBs or hybrid)
|
|
92
|
+
* Stage 2-3: Both engines receive writes
|
|
93
|
+
* Stage 4: RVF only, SQLite escape hatch on failure
|
|
94
|
+
*/
|
|
95
|
+
write(id: string, vector: Float32Array | number[]): WriteResult;
|
|
96
|
+
/**
|
|
97
|
+
* Delete a vector from the appropriate store(s).
|
|
98
|
+
*/
|
|
99
|
+
delete(id: string): WriteResult;
|
|
100
|
+
/**
|
|
101
|
+
* Search for similar vectors, routing to the appropriate engine.
|
|
102
|
+
*
|
|
103
|
+
* Stage 0-2: Read from SQLite
|
|
104
|
+
* Stage 3-4: Read from RVF, fallback to SQLite on error
|
|
105
|
+
*/
|
|
106
|
+
search(query: Float32Array | number[], k: number): ReadResult<Array<{
|
|
107
|
+
id: string;
|
|
108
|
+
score: number;
|
|
109
|
+
}>>;
|
|
110
|
+
/** Get combined status from both engines */
|
|
111
|
+
status(): {
|
|
112
|
+
sqlite: {
|
|
113
|
+
vectorCount: number;
|
|
114
|
+
};
|
|
115
|
+
rvf: RvfStatus | null;
|
|
116
|
+
stage: MigrationStage;
|
|
117
|
+
};
|
|
118
|
+
/** Get aggregated migration metrics */
|
|
119
|
+
getMetrics(): MigrationMetrics;
|
|
120
|
+
/** Reset metrics counters */
|
|
121
|
+
resetMetrics(): void;
|
|
122
|
+
private searchSqlite;
|
|
123
|
+
}
|
|
124
|
+
export {};
|
|
125
|
+
//# sourceMappingURL=rvf-migration-adapter.d.ts.map
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RVF Migration Adapter (ADR-072)
|
|
3
|
+
*
|
|
4
|
+
* Extends RvfDualWriter concepts to all persistence operations (KV, Q-values,
|
|
5
|
+
* GOAP state). Routes reads and writes based on the rvfMigrationStage config:
|
|
6
|
+
*
|
|
7
|
+
* Stage 0: SQLite only (legacy)
|
|
8
|
+
* Stage 1: Hybrid (current — vectors in RVF, metadata in SQLite)
|
|
9
|
+
* Stage 2: Dual-write, read from SQLite (both engines receive writes)
|
|
10
|
+
* Stage 3: Dual-write, read from RVF (both engines receive writes)
|
|
11
|
+
* Stage 4: RVF primary, SQLite escape hatch
|
|
12
|
+
*
|
|
13
|
+
* Each stage is reversible by changing the config — no data is lost.
|
|
14
|
+
*
|
|
15
|
+
* @module persistence/rvf-migration-adapter
|
|
16
|
+
*/
|
|
17
|
+
export const STAGE_NAMES = {
|
|
18
|
+
0: 'sqlite-only',
|
|
19
|
+
1: 'hybrid',
|
|
20
|
+
2: 'dual-write-sqlite-primary',
|
|
21
|
+
3: 'dual-write-rvf-primary',
|
|
22
|
+
4: 'rvf-primary',
|
|
23
|
+
};
|
|
24
|
+
// ============================================================================
|
|
25
|
+
// RvfMigrationAdapter
|
|
26
|
+
// ============================================================================
|
|
27
|
+
export class RvfMigrationAdapter {
|
|
28
|
+
config;
|
|
29
|
+
db = null;
|
|
30
|
+
rvfStore = null;
|
|
31
|
+
// Metrics tracking
|
|
32
|
+
totalWrites = 0;
|
|
33
|
+
totalReads = 0;
|
|
34
|
+
rvfWriteFailures = 0;
|
|
35
|
+
rvfReadFailures = 0;
|
|
36
|
+
fallbacksUsed = 0;
|
|
37
|
+
sqliteLatencies = [];
|
|
38
|
+
rvfLatencies = [];
|
|
39
|
+
sqliteWriteLatencies = [];
|
|
40
|
+
rvfWriteLatencies = [];
|
|
41
|
+
constructor(config) {
|
|
42
|
+
this.config = {
|
|
43
|
+
rvfPath: '.agentic-qe/patterns.rvf',
|
|
44
|
+
dimensions: 384,
|
|
45
|
+
enableFallback: true,
|
|
46
|
+
...config,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/** Attach a SQLite database handle */
|
|
50
|
+
setSqliteDb(db) {
|
|
51
|
+
this.db = db;
|
|
52
|
+
}
|
|
53
|
+
/** Attach an RVF store */
|
|
54
|
+
setRvfStore(store) {
|
|
55
|
+
this.rvfStore = store;
|
|
56
|
+
}
|
|
57
|
+
/** Get current migration stage */
|
|
58
|
+
get stage() {
|
|
59
|
+
return this.config.stage;
|
|
60
|
+
}
|
|
61
|
+
/** Update migration stage (called by coordinator on promotion) */
|
|
62
|
+
setStage(stage) {
|
|
63
|
+
this.config = { ...this.config, stage };
|
|
64
|
+
}
|
|
65
|
+
// --------------------------------------------------------------------------
|
|
66
|
+
// Write Operations
|
|
67
|
+
// --------------------------------------------------------------------------
|
|
68
|
+
/**
|
|
69
|
+
* Write a vector to the appropriate store(s) based on migration stage.
|
|
70
|
+
*
|
|
71
|
+
* Stage 0-1: SQLite only (vectors as BLOBs or hybrid)
|
|
72
|
+
* Stage 2-3: Both engines receive writes
|
|
73
|
+
* Stage 4: RVF only, SQLite escape hatch on failure
|
|
74
|
+
*/
|
|
75
|
+
write(id, vector) {
|
|
76
|
+
this.totalWrites++;
|
|
77
|
+
const result = {
|
|
78
|
+
sqliteSuccess: false,
|
|
79
|
+
rvfSuccess: false,
|
|
80
|
+
stage: this.config.stage,
|
|
81
|
+
fallbackUsed: false,
|
|
82
|
+
};
|
|
83
|
+
const shouldWriteSqlite = this.config.stage < 4;
|
|
84
|
+
const shouldWriteRvf = this.config.stage >= 2;
|
|
85
|
+
// Write to SQLite
|
|
86
|
+
if (shouldWriteSqlite && this.db) {
|
|
87
|
+
const start = performance.now();
|
|
88
|
+
try {
|
|
89
|
+
const blob = Buffer.from(vector instanceof Float32Array ? vector.buffer : new Float32Array(vector).buffer);
|
|
90
|
+
this.db.prepare(`
|
|
91
|
+
INSERT INTO qe_pattern_embeddings (pattern_id, embedding, dimension, model, created_at)
|
|
92
|
+
VALUES (?, ?, ?, 'all-MiniLM-L6-v2', datetime('now'))
|
|
93
|
+
ON CONFLICT(pattern_id) DO UPDATE SET
|
|
94
|
+
embedding = excluded.embedding, dimension = excluded.dimension, created_at = datetime('now')
|
|
95
|
+
`).run(id, blob, vector.length);
|
|
96
|
+
result.sqliteSuccess = true;
|
|
97
|
+
this.sqliteWriteLatencies.push(performance.now() - start);
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
result.sqliteSuccess = false;
|
|
101
|
+
if (process.env.AQE_DEBUG_MIGRATION) {
|
|
102
|
+
console.warn('[RVF-Migration] SQLite write failed:', err.message);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Write to RVF
|
|
107
|
+
if (shouldWriteRvf && this.rvfStore) {
|
|
108
|
+
const start = performance.now();
|
|
109
|
+
try {
|
|
110
|
+
this.rvfStore.ingest([{ id, vector }]);
|
|
111
|
+
result.rvfSuccess = true;
|
|
112
|
+
this.rvfWriteLatencies.push(performance.now() - start);
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
this.rvfWriteFailures++;
|
|
116
|
+
result.rvfSuccess = false;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Stage 4: If RVF write failed, fall back to SQLite
|
|
120
|
+
if (this.config.stage === 4 && !result.rvfSuccess && this.config.enableFallback && this.db) {
|
|
121
|
+
try {
|
|
122
|
+
const blob = Buffer.from(vector instanceof Float32Array ? vector.buffer : new Float32Array(vector).buffer);
|
|
123
|
+
this.db.prepare(`
|
|
124
|
+
INSERT INTO qe_pattern_embeddings (pattern_id, embedding, dimension, model, created_at)
|
|
125
|
+
VALUES (?, ?, ?, 'all-MiniLM-L6-v2', datetime('now'))
|
|
126
|
+
ON CONFLICT(pattern_id) DO UPDATE SET
|
|
127
|
+
embedding = excluded.embedding, dimension = excluded.dimension, created_at = datetime('now')
|
|
128
|
+
`).run(id, blob, vector.length);
|
|
129
|
+
result.sqliteSuccess = true;
|
|
130
|
+
result.fallbackUsed = true;
|
|
131
|
+
this.fallbacksUsed++;
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
// Both engines failed
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return result;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Delete a vector from the appropriate store(s).
|
|
141
|
+
*/
|
|
142
|
+
delete(id) {
|
|
143
|
+
this.totalWrites++;
|
|
144
|
+
const result = {
|
|
145
|
+
sqliteSuccess: false,
|
|
146
|
+
rvfSuccess: false,
|
|
147
|
+
stage: this.config.stage,
|
|
148
|
+
fallbackUsed: false,
|
|
149
|
+
};
|
|
150
|
+
if (this.config.stage < 4 && this.db) {
|
|
151
|
+
try {
|
|
152
|
+
this.db.prepare('DELETE FROM qe_pattern_embeddings WHERE pattern_id = ?').run(id);
|
|
153
|
+
result.sqliteSuccess = true;
|
|
154
|
+
}
|
|
155
|
+
catch { /* best effort */ }
|
|
156
|
+
}
|
|
157
|
+
if (this.config.stage >= 2 && this.rvfStore) {
|
|
158
|
+
try {
|
|
159
|
+
this.rvfStore.delete([id]);
|
|
160
|
+
result.rvfSuccess = true;
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
this.rvfWriteFailures++;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return result;
|
|
167
|
+
}
|
|
168
|
+
// --------------------------------------------------------------------------
|
|
169
|
+
// Read Operations
|
|
170
|
+
// --------------------------------------------------------------------------
|
|
171
|
+
/**
|
|
172
|
+
* Search for similar vectors, routing to the appropriate engine.
|
|
173
|
+
*
|
|
174
|
+
* Stage 0-2: Read from SQLite
|
|
175
|
+
* Stage 3-4: Read from RVF, fallback to SQLite on error
|
|
176
|
+
*/
|
|
177
|
+
search(query, k) {
|
|
178
|
+
this.totalReads++;
|
|
179
|
+
const useRvf = this.config.stage >= 3;
|
|
180
|
+
if (useRvf && this.rvfStore) {
|
|
181
|
+
const start = performance.now();
|
|
182
|
+
try {
|
|
183
|
+
const results = this.rvfStore.search(query, k);
|
|
184
|
+
const latency = performance.now() - start;
|
|
185
|
+
this.rvfLatencies.push(latency);
|
|
186
|
+
return { data: results, source: 'rvf', latencyMs: latency, stage: this.config.stage };
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
this.rvfReadFailures++;
|
|
190
|
+
// Fall through to SQLite if fallback enabled
|
|
191
|
+
if (!this.config.enableFallback) {
|
|
192
|
+
return { data: null, source: 'rvf', latencyMs: 0, stage: this.config.stage };
|
|
193
|
+
}
|
|
194
|
+
this.fallbacksUsed++;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// SQLite read (stages 0-2 or fallback)
|
|
198
|
+
const start = performance.now();
|
|
199
|
+
const results = this.searchSqlite(query, k);
|
|
200
|
+
const latency = performance.now() - start;
|
|
201
|
+
this.sqliteLatencies.push(latency);
|
|
202
|
+
return {
|
|
203
|
+
data: results,
|
|
204
|
+
source: useRvf ? 'fallback' : 'sqlite',
|
|
205
|
+
latencyMs: latency,
|
|
206
|
+
stage: this.config.stage,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
// --------------------------------------------------------------------------
|
|
210
|
+
// Status & Metrics
|
|
211
|
+
// --------------------------------------------------------------------------
|
|
212
|
+
/** Get combined status from both engines */
|
|
213
|
+
status() {
|
|
214
|
+
let sqliteCount = 0;
|
|
215
|
+
if (this.db) {
|
|
216
|
+
try {
|
|
217
|
+
const row = this.db.prepare('SELECT COUNT(*) as cnt FROM qe_pattern_embeddings').get();
|
|
218
|
+
sqliteCount = row?.cnt ?? 0;
|
|
219
|
+
}
|
|
220
|
+
catch { /* table may not exist */ }
|
|
221
|
+
}
|
|
222
|
+
let rvfStatus = null;
|
|
223
|
+
if (this.rvfStore) {
|
|
224
|
+
try {
|
|
225
|
+
rvfStatus = this.rvfStore.status();
|
|
226
|
+
}
|
|
227
|
+
catch { /* best effort */ }
|
|
228
|
+
}
|
|
229
|
+
return { sqlite: { vectorCount: sqliteCount }, rvf: rvfStatus, stage: this.config.stage };
|
|
230
|
+
}
|
|
231
|
+
/** Get aggregated migration metrics */
|
|
232
|
+
getMetrics() {
|
|
233
|
+
return {
|
|
234
|
+
stage: this.config.stage,
|
|
235
|
+
stageName: STAGE_NAMES[this.config.stage],
|
|
236
|
+
totalWrites: this.totalWrites,
|
|
237
|
+
totalReads: this.totalReads,
|
|
238
|
+
rvfWriteFailures: this.rvfWriteFailures,
|
|
239
|
+
rvfReadFailures: this.rvfReadFailures,
|
|
240
|
+
fallbacksUsed: this.fallbacksUsed,
|
|
241
|
+
sqliteReadLatencyAvgMs: avg(this.sqliteLatencies),
|
|
242
|
+
rvfReadLatencyAvgMs: avg(this.rvfLatencies),
|
|
243
|
+
sqliteWriteLatencyAvgMs: avg(this.sqliteWriteLatencies),
|
|
244
|
+
rvfWriteLatencyAvgMs: avg(this.rvfWriteLatencies),
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
/** Reset metrics counters */
|
|
248
|
+
resetMetrics() {
|
|
249
|
+
this.totalWrites = 0;
|
|
250
|
+
this.totalReads = 0;
|
|
251
|
+
this.rvfWriteFailures = 0;
|
|
252
|
+
this.rvfReadFailures = 0;
|
|
253
|
+
this.fallbacksUsed = 0;
|
|
254
|
+
this.sqliteLatencies = [];
|
|
255
|
+
this.rvfLatencies = [];
|
|
256
|
+
this.sqliteWriteLatencies = [];
|
|
257
|
+
this.rvfWriteLatencies = [];
|
|
258
|
+
}
|
|
259
|
+
// --------------------------------------------------------------------------
|
|
260
|
+
// Private
|
|
261
|
+
// --------------------------------------------------------------------------
|
|
262
|
+
searchSqlite(query, k) {
|
|
263
|
+
if (!this.db)
|
|
264
|
+
return [];
|
|
265
|
+
let rows;
|
|
266
|
+
try {
|
|
267
|
+
rows = this.db.prepare('SELECT pattern_id, embedding, dimension FROM qe_pattern_embeddings').all();
|
|
268
|
+
}
|
|
269
|
+
catch {
|
|
270
|
+
return [];
|
|
271
|
+
}
|
|
272
|
+
const queryArr = query instanceof Float32Array ? Array.from(query) : query;
|
|
273
|
+
const queryMag = Math.sqrt(queryArr.reduce((s, v) => s + v * v, 0));
|
|
274
|
+
if (queryMag === 0)
|
|
275
|
+
return [];
|
|
276
|
+
const scored = [];
|
|
277
|
+
for (const row of rows) {
|
|
278
|
+
if (row.dimension !== queryArr.length)
|
|
279
|
+
continue;
|
|
280
|
+
const stored = new Float32Array(row.embedding.buffer, row.embedding.byteOffset, row.dimension);
|
|
281
|
+
let dot = 0, storedMag = 0;
|
|
282
|
+
for (let i = 0; i < row.dimension; i++) {
|
|
283
|
+
dot += queryArr[i] * stored[i];
|
|
284
|
+
storedMag += stored[i] * stored[i];
|
|
285
|
+
}
|
|
286
|
+
storedMag = Math.sqrt(storedMag);
|
|
287
|
+
if (storedMag === 0)
|
|
288
|
+
continue;
|
|
289
|
+
scored.push({ id: row.pattern_id, score: dot / (queryMag * storedMag) });
|
|
290
|
+
}
|
|
291
|
+
scored.sort((a, b) => b.score - a.score);
|
|
292
|
+
return scored.slice(0, k);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
// ============================================================================
|
|
296
|
+
// Helpers
|
|
297
|
+
// ============================================================================
|
|
298
|
+
function avg(arr) {
|
|
299
|
+
if (arr.length === 0)
|
|
300
|
+
return 0;
|
|
301
|
+
return arr.reduce((s, v) => s + v, 0) / arr.length;
|
|
302
|
+
}
|
|
303
|
+
//# sourceMappingURL=rvf-migration-adapter.js.map
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RVF Migration Coordinator (ADR-072 Phase 3)
|
|
3
|
+
*
|
|
4
|
+
* Wires together RvfMigrationAdapter, RvfConsistencyValidator, and
|
|
5
|
+
* RvfStageGate into a single service that can be initialized during
|
|
6
|
+
* kernel boot and exposed via MCP tools.
|
|
7
|
+
*
|
|
8
|
+
* Lifecycle:
|
|
9
|
+
* 1. Kernel calls RvfMigrationCoordinator.initialize(db)
|
|
10
|
+
* 2. Coordinator reads stage from feature flags, attaches SQLite + RVF handles
|
|
11
|
+
* 3. MCP tools call getStatus(), runConsistencyCheck(), promote()
|
|
12
|
+
*
|
|
13
|
+
* @module persistence/rvf-migration-coordinator
|
|
14
|
+
*/
|
|
15
|
+
import { RvfMigrationAdapter, type MigrationStage, type MigrationMetrics } from './rvf-migration-adapter.js';
|
|
16
|
+
import { type ConsistencyCheckResult } from './rvf-consistency-validator.js';
|
|
17
|
+
import { type StageGateResult } from './rvf-stage-gate.js';
|
|
18
|
+
export interface MigrationStatus {
|
|
19
|
+
stage: MigrationStage;
|
|
20
|
+
stageName: string;
|
|
21
|
+
metrics: MigrationMetrics;
|
|
22
|
+
consistencyHistory: {
|
|
23
|
+
totalChecks: number;
|
|
24
|
+
rollingDivergenceRate: number;
|
|
25
|
+
lastCheck: ConsistencyCheckResult | null;
|
|
26
|
+
};
|
|
27
|
+
gateEvaluation: StageGateResult;
|
|
28
|
+
engineStatus: {
|
|
29
|
+
sqliteVectorCount: number;
|
|
30
|
+
rvfAvailable: boolean;
|
|
31
|
+
rvfVectorCount: number | null;
|
|
32
|
+
rvfDeadSpaceRatio: number | null;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export interface MigrationCoordinatorConfig {
|
|
36
|
+
/** Override migration stage (otherwise reads from feature flags) */
|
|
37
|
+
stage?: MigrationStage;
|
|
38
|
+
/** RVF file path */
|
|
39
|
+
rvfPath?: string;
|
|
40
|
+
/** Vector dimensions */
|
|
41
|
+
dimensions?: number;
|
|
42
|
+
}
|
|
43
|
+
export declare class RvfMigrationCoordinator {
|
|
44
|
+
private adapter;
|
|
45
|
+
private validator;
|
|
46
|
+
private gate;
|
|
47
|
+
private currentStage;
|
|
48
|
+
private initialized;
|
|
49
|
+
constructor(config?: MigrationCoordinatorConfig);
|
|
50
|
+
/**
|
|
51
|
+
* Attach the real SQLite database handle (from UnifiedMemoryManager).
|
|
52
|
+
* Called during kernel boot.
|
|
53
|
+
*/
|
|
54
|
+
attachSqliteDb(db: unknown): void;
|
|
55
|
+
/**
|
|
56
|
+
* Attach the shared RVF store (from shared-rvf-adapter singleton).
|
|
57
|
+
* Called during kernel boot when native bindings are available.
|
|
58
|
+
*/
|
|
59
|
+
attachRvfStore(store: unknown): void;
|
|
60
|
+
/**
|
|
61
|
+
* Attach a witness chain for audit trail of stage promotions.
|
|
62
|
+
*/
|
|
63
|
+
attachWitnessChain(wc: unknown): void;
|
|
64
|
+
/**
|
|
65
|
+
* Full initialization: reads handles from running system.
|
|
66
|
+
*/
|
|
67
|
+
initialize(): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Get comprehensive migration status.
|
|
70
|
+
* This is the primary user-facing method — shows stage, metrics,
|
|
71
|
+
* consistency history, and gate evaluation at a glance.
|
|
72
|
+
*/
|
|
73
|
+
getStatus(): MigrationStatus;
|
|
74
|
+
/**
|
|
75
|
+
* Run a consistency check between SQLite and RVF.
|
|
76
|
+
* Returns the check result with divergence details.
|
|
77
|
+
*/
|
|
78
|
+
runConsistencyCheck(): ConsistencyCheckResult;
|
|
79
|
+
/**
|
|
80
|
+
* Evaluate whether promotion to the next stage is allowed.
|
|
81
|
+
*/
|
|
82
|
+
evaluateGate(): StageGateResult;
|
|
83
|
+
/**
|
|
84
|
+
* Attempt to promote to the next migration stage.
|
|
85
|
+
*
|
|
86
|
+
* @param force - Skip gate checks (records forced promotion in witness chain)
|
|
87
|
+
* @returns Promotion result with new stage
|
|
88
|
+
*/
|
|
89
|
+
promote(force?: boolean): {
|
|
90
|
+
promoted: boolean;
|
|
91
|
+
previousStage: MigrationStage;
|
|
92
|
+
newStage: MigrationStage;
|
|
93
|
+
result: StageGateResult;
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* Write a vector through the migration adapter.
|
|
97
|
+
* Used to verify dual-write routing at each stage.
|
|
98
|
+
*/
|
|
99
|
+
write(id: string, vector: Float32Array | number[]): import("./rvf-migration-adapter.js").WriteResult;
|
|
100
|
+
/**
|
|
101
|
+
* Search through the migration adapter.
|
|
102
|
+
* Used to verify read routing at each stage.
|
|
103
|
+
*/
|
|
104
|
+
search(query: Float32Array | number[], k: number): import("./rvf-migration-adapter.js").ReadResult<{
|
|
105
|
+
id: string;
|
|
106
|
+
score: number;
|
|
107
|
+
}[]>;
|
|
108
|
+
/**
|
|
109
|
+
* Get the underlying adapter (for advanced use / testing).
|
|
110
|
+
*/
|
|
111
|
+
getAdapter(): RvfMigrationAdapter;
|
|
112
|
+
static getInstance(config?: MigrationCoordinatorConfig): RvfMigrationCoordinator;
|
|
113
|
+
static resetInstance(): void;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=rvf-migration-coordinator.d.ts.map
|