agentic-qe 3.14.4 → 3.14.5
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 +93 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/audit/witness-chain.d.ts +1 -1
- package/dist/audit/witness-chain.js +29 -22
- package/dist/cli/bundle.js +13 -10
- package/dist/cli/chunks/adapter-IYC62SXA.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-5PC7D2FW.js → agent-booster-wasm-EDNKP3SP.js} +2 -2
- package/dist/cli/chunks/{agent-handler-RDNTK4CA.js → agent-handler-V6CZ7Q6S.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-NAAMBWIR.js → agent-memory-branch-ZMD6ULC3.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-LLOU2IXD.js +2 -0
- package/dist/cli/chunks/{arena-HXTWJ5YY.js → arena-4UPAEHFT.js} +4 -4
- package/dist/cli/chunks/{arena-KXFHRWX4.js → arena-QLSBESC7.js} +2 -2
- package/dist/cli/chunks/{audit-YSGA7UWT.js → audit-CVZQMF55.js} +3 -3
- package/dist/cli/chunks/base-P3Z4IKCT.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-UICJZIDG.js → better-sqlite3-4DSBPDRH.js} +2 -2
- package/dist/cli/chunks/brain-handler-GBY4EZ4P.js +94 -0
- package/dist/cli/chunks/{branch-enumerator-SS7UNVIA.js → branch-enumerator-XYBVXCNO.js} +2 -2
- package/dist/cli/chunks/{browser-77GI6KBE.js → browser-32F6MREU.js} +2 -2
- package/dist/cli/chunks/browser-workflow-YYHQQ25X.js +2 -0
- package/dist/cli/chunks/{chunk-FGYMFUE2.js → chunk-2JGEZHWY.js} +2 -2
- package/dist/cli/chunks/{chunk-MOBNBMFW.js → chunk-2KJQ2UQE.js} +1 -1
- package/dist/cli/chunks/{chunk-C2WU3533.js → chunk-2OMLTYQK.js} +1 -1
- package/dist/cli/chunks/{chunk-CU46J64M.js → chunk-37TUN44F.js} +2 -2
- package/dist/cli/chunks/{chunk-Z3RHREWF.js → chunk-3DDXWYMO.js} +1 -1
- package/dist/cli/chunks/{chunk-Q5DO24IJ.js → chunk-3EZ5DR2R.js} +3 -3
- package/dist/cli/chunks/{chunk-WLG5AJ4N.js → chunk-3KDL6QDK.js} +2 -2
- package/dist/cli/chunks/{chunk-MTZH7AHC.js → chunk-3VIXOHMS.js} +1 -1
- package/dist/cli/chunks/{chunk-ISDMD6EU.js → chunk-3YUB5HER.js} +96 -96
- package/dist/cli/chunks/{chunk-CDKG6EI7.js → chunk-4FWTLJEP.js} +2 -2
- package/dist/cli/chunks/{chunk-HDSAM2RE.js → chunk-52L77RMG.js} +2 -2
- package/dist/cli/chunks/{chunk-MEGDYJPV.js → chunk-5D36YHS3.js} +4 -4
- package/dist/cli/chunks/{chunk-T6BVLVI5.js → chunk-5WOSWNDN.js} +1 -1
- package/dist/cli/chunks/{chunk-M2JBBZQB.js → chunk-67YV75XP.js} +2 -2
- package/dist/cli/chunks/{chunk-KHFNNVJA.js → chunk-6A44AOGN.js} +2 -2
- package/dist/cli/chunks/{chunk-IPR4QP3H.js → chunk-6CR4VQBQ.js} +2 -2
- package/dist/cli/chunks/{chunk-XRT2WRMS.js → chunk-6ITZZIQX.js} +2 -2
- package/dist/cli/chunks/{chunk-4OYFXLBK.js → chunk-6LKDHEBY.js} +2 -2
- package/dist/cli/chunks/{chunk-FLYOJOKN.js → chunk-6TU7FEMD.js} +1 -1
- package/dist/cli/chunks/{chunk-6QYNWR7U.js → chunk-6VAZAHQG.js} +2 -2
- package/dist/cli/chunks/{chunk-TWAWHOP7.js → chunk-73EI4C2E.js} +2 -2
- package/dist/cli/chunks/{chunk-5R3QL7WN.js → chunk-75QJ5HWE.js} +2 -2
- package/dist/cli/chunks/{chunk-Y3MW3YBC.js → chunk-7CD7PBHY.js} +2 -2
- package/dist/cli/chunks/chunk-7DETTOPZ.js +14 -0
- package/dist/cli/chunks/{chunk-KSKEF7LZ.js → chunk-7JZJJA7U.js} +3 -3
- package/dist/cli/chunks/{chunk-AIHDEEJO.js → chunk-7VFY7TUR.js} +2 -2
- package/dist/cli/chunks/chunk-7X7JYWT4.js +27 -0
- package/dist/cli/chunks/chunk-AF4XKLXO.js +2 -0
- package/dist/cli/chunks/{chunk-6KJABXAR.js → chunk-AFEDJ3RU.js} +2 -2
- package/dist/cli/chunks/{chunk-5SJHQ2CO.js → chunk-AMMQOV35.js} +2 -2
- package/dist/cli/chunks/{chunk-6VRA2QGL.js → chunk-BHFR2EXL.js} +1 -1
- package/dist/cli/chunks/{chunk-ZBAKA4YB.js → chunk-BJPL6THQ.js} +1 -1
- package/dist/cli/chunks/{chunk-DOTK76IJ.js → chunk-BXVAVFGU.js} +2 -2
- package/dist/cli/chunks/{chunk-MNW6QGNJ.js → chunk-BYG36QC5.js} +2 -2
- package/dist/cli/chunks/chunk-C3HQL6S4.js +2 -0
- package/dist/cli/chunks/{chunk-PZJOPURC.js → chunk-C3Z4VVHP.js} +5 -5
- package/dist/cli/chunks/{chunk-OULHKEVH.js → chunk-CPC7FN52.js} +2 -2
- package/dist/cli/chunks/{chunk-BFP7KO7P.js → chunk-CVMNJSCB.js} +2 -2
- package/dist/cli/chunks/{chunk-AUXFKCQL.js → chunk-CYE2TJFV.js} +2 -2
- package/dist/cli/chunks/{chunk-7D777LTF.js → chunk-CZO4BJG5.js} +2 -2
- package/dist/cli/chunks/{chunk-VD6QRULW.js → chunk-D6OUCB2H.js} +2 -2
- package/dist/cli/chunks/{chunk-6UWGMOND.js → chunk-DDCIYOGT.js} +2 -2
- package/dist/cli/chunks/{chunk-STJCATGN.js → chunk-DKUBQQFG.js} +2 -2
- package/dist/cli/chunks/{chunk-M4WJKGVK.js → chunk-DLF5BOJD.js} +1 -1
- package/dist/cli/chunks/{chunk-DA5K5754.js → chunk-DO6EI5KB.js} +1 -1
- package/dist/cli/chunks/{chunk-BDESSCVR.js → chunk-DPBRWP4J.js} +3 -3
- package/dist/cli/chunks/{chunk-HV2J7KKQ.js → chunk-E3W6XQ57.js} +2 -2
- package/dist/cli/chunks/{chunk-MDWCE7YW.js → chunk-E4AZXCT5.js} +1 -1
- package/dist/cli/chunks/{chunk-F3SBRQC6.js → chunk-E4EYPYR3.js} +2 -2
- package/dist/cli/chunks/{chunk-55RWDRJD.js → chunk-EFV4ADMO.js} +4 -4
- package/dist/cli/chunks/{chunk-5YPYDPBJ.js → chunk-ELBZON4V.js} +2 -2
- package/dist/cli/chunks/{chunk-PO3IXGMQ.js → chunk-EOR2UT72.js} +2 -2
- package/dist/cli/chunks/{chunk-EDJ3O7RH.js → chunk-F34OAHOM.js} +2 -2
- package/dist/cli/chunks/{chunk-XRYF6JV7.js → chunk-FUNGTIF2.js} +2 -2
- package/dist/cli/chunks/{chunk-EKQ673SA.js → chunk-G3L5L6YQ.js} +1 -1
- package/dist/cli/chunks/{chunk-NJBGXDQ7.js → chunk-G3W6BMVJ.js} +1 -1
- package/dist/cli/chunks/{chunk-CIZ5JPDC.js → chunk-GTKCGPJZ.js} +3 -3
- package/dist/cli/chunks/{chunk-QGIU2WRL.js → chunk-HBCGYMQU.js} +1 -1
- package/dist/cli/chunks/{chunk-V3QLFNA2.js → chunk-HSVKZ5KI.js} +4 -4
- package/dist/cli/chunks/{chunk-BGE6FOLM.js → chunk-HVU64GP5.js} +2 -2
- package/dist/cli/chunks/chunk-HVXJC3OC.js +2 -0
- package/dist/cli/chunks/{chunk-MIQTXNBG.js → chunk-HYEJJJY3.js} +1 -1
- package/dist/cli/chunks/{chunk-CLTMDCSE.js → chunk-I2NENQ44.js} +2 -2
- package/dist/cli/chunks/{chunk-SGYJ4NFZ.js → chunk-I6X3EGJI.js} +1 -1
- package/dist/cli/chunks/{chunk-BOARZKU3.js → chunk-IGBEJ4UJ.js} +2 -2
- package/dist/cli/chunks/{chunk-FWGOHAAB.js → chunk-IIAR5S7Q.js} +2 -2
- package/dist/cli/chunks/{chunk-DHJPWQBR.js → chunk-IJHCIXJC.js} +2 -2
- package/dist/cli/chunks/{chunk-UEM7ZF5K.js → chunk-IUDWEOLX.js} +2 -2
- package/dist/cli/chunks/chunk-IUHB5GVS.js +3 -0
- package/dist/cli/chunks/{chunk-M5QUBZY6.js → chunk-IYTLXUBO.js} +2 -2
- package/dist/cli/chunks/chunk-J27F4NSB.js +2 -0
- package/dist/cli/chunks/{chunk-G6T45OIC.js → chunk-J5UNP6W3.js} +2 -2
- package/dist/cli/chunks/{chunk-3UPAMMCB.js → chunk-JES6R5KP.js} +1 -1
- package/dist/cli/chunks/{chunk-ZBQY5GLF.js → chunk-JROVR6YS.js} +2 -2
- package/dist/cli/chunks/chunk-JSZ663MU.js +2 -0
- package/dist/cli/chunks/{chunk-PFR4G3DJ.js → chunk-JVQBWYHW.js} +2 -2
- package/dist/cli/chunks/{chunk-JBNEE5UH.js → chunk-K27SU3RE.js} +2 -2
- package/dist/cli/chunks/{chunk-JZ3ORVZ3.js → chunk-K7NJHFLZ.js} +3 -3
- package/dist/cli/chunks/{chunk-3VOQRIQM.js → chunk-KEY43ANX.js} +2 -2
- package/dist/cli/chunks/chunk-KIP6WZGV.js +13 -0
- package/dist/cli/chunks/{chunk-UDHKLT4C.js → chunk-KKHYJF5U.js} +1 -1
- package/dist/cli/chunks/{chunk-ZNEMGX5O.js → chunk-KLTP5IDB.js} +1 -1
- package/dist/cli/chunks/{chunk-ONII3572.js → chunk-KO4FNAUR.js} +3 -3
- package/dist/cli/chunks/{chunk-TSRSV3LD.js → chunk-KYA5LARK.js} +1 -1
- package/dist/cli/chunks/{chunk-2JW3BCGG.js → chunk-LSUILON7.js} +1 -1
- package/dist/cli/chunks/chunk-LULD4JV2.js +15 -0
- package/dist/cli/chunks/{chunk-FRH6VAUS.js → chunk-M23ZOZVY.js} +1 -1
- package/dist/cli/chunks/{chunk-R5NE6B2M.js → chunk-M5AEL7IS.js} +2 -2
- package/dist/cli/chunks/chunk-MI5Q55DG.js +65 -0
- package/dist/cli/chunks/chunk-N7H767TP.js +4 -0
- package/dist/cli/chunks/{chunk-RJCYCLZV.js → chunk-NQI7FWCS.js} +2 -2
- package/dist/cli/chunks/{chunk-CXQPR5MY.js → chunk-NRE4NAVA.js} +1 -1
- package/dist/cli/chunks/{chunk-ODKLFVYC.js → chunk-NU7UTXMP.js} +2 -2
- package/dist/cli/chunks/{chunk-MVPCNSPY.js → chunk-NVYBM3R4.js} +2 -2
- package/dist/cli/chunks/{chunk-MVNP7GIR.js → chunk-O3JTQ7N4.js} +1 -1
- package/dist/cli/chunks/{chunk-6CQN24ZK.js → chunk-OEIQTWQP.js} +1 -1
- package/dist/cli/chunks/{chunk-U5K45TFH.js → chunk-PSPKSUF6.js} +1 -1
- package/dist/cli/chunks/{chunk-CDHQFHRP.js → chunk-QIRL6B3C.js} +2 -2
- package/dist/cli/chunks/{chunk-OSLYSG3B.js → chunk-QRCIZFNK.js} +2 -2
- package/dist/cli/chunks/{chunk-BOZZYWCR.js → chunk-QWUXCG2L.js} +1 -1
- package/dist/cli/chunks/{chunk-HIYXCDEP.js → chunk-QYOGD2VW.js} +1 -1
- package/dist/cli/chunks/{chunk-A4FYONNU.js → chunk-QZMUXJHZ.js} +2 -2
- package/dist/cli/chunks/{chunk-3TW5W5LX.js → chunk-R6IU3EWP.js} +2 -2
- package/dist/cli/chunks/{chunk-3X3DJZJJ.js → chunk-R74ZKREV.js} +1 -1
- package/dist/cli/chunks/{chunk-HIVA55CJ.js → chunk-RD2VGOUH.js} +1 -1
- package/dist/cli/chunks/{chunk-TPGED2IF.js → chunk-RD6TEZ64.js} +2 -2
- package/dist/cli/chunks/{chunk-4MHXCAG2.js → chunk-RGGK6VZ7.js} +1 -1
- package/dist/cli/chunks/{chunk-UGVHCMUN.js → chunk-RIZVC4XY.js} +3 -3
- package/dist/cli/chunks/{chunk-R4VL6E65.js → chunk-RKOUXVZZ.js} +2 -2
- package/dist/cli/chunks/{chunk-IFCLB7FJ.js → chunk-RP2ZKPYV.js} +1 -1
- package/dist/cli/chunks/{chunk-34WO57CW.js → chunk-SQF6HRXR.js} +1 -1
- package/dist/cli/chunks/{chunk-YNXS6CGV.js → chunk-SQKW3B6B.js} +1 -1
- package/dist/cli/chunks/{chunk-TDZ53WO2.js → chunk-SX4JLSLV.js} +2 -2
- package/dist/cli/chunks/{chunk-PAWXJ73E.js → chunk-TUSSPKRM.js} +1 -1
- package/dist/cli/chunks/{chunk-DFZCKIGY.js → chunk-TY5WC3FT.js} +3 -3
- package/dist/cli/chunks/{chunk-J6GNQS62.js → chunk-UDHVCKGA.js} +2 -2
- package/dist/cli/chunks/{chunk-CIKSHTEQ.js → chunk-UJWAWIRV.js} +4 -4
- package/dist/cli/chunks/{chunk-XJ7QNVI5.js → chunk-UKGXWW64.js} +3 -3
- package/dist/cli/chunks/{chunk-64PFWE2F.js → chunk-UMGFMKDW.js} +2 -2
- package/dist/cli/chunks/{chunk-DPFRKBOG.js → chunk-URVHZPWY.js} +2 -2
- package/dist/cli/chunks/{chunk-MCUJEZT6.js → chunk-UTBYJ4RF.js} +2 -2
- package/dist/cli/chunks/{chunk-HUWNIPZ5.js → chunk-VD5IO5EO.js} +1 -1
- package/dist/cli/chunks/{chunk-7ZIOFPL3.js → chunk-VTOVWHEM.js} +2 -2
- package/dist/cli/chunks/{chunk-SRKETSFF.js → chunk-W2XCZU62.js} +1 -1
- package/dist/cli/chunks/{chunk-CNG6GQEZ.js → chunk-WJHWH5D2.js} +2 -2
- package/dist/cli/chunks/{chunk-ZJ26AQA5.js → chunk-WJTSY5MC.js} +1 -1
- package/dist/cli/chunks/{chunk-OCWWP5PL.js → chunk-WK7B4B6Y.js} +2 -2
- package/dist/cli/chunks/{chunk-KPA7MZ6C.js → chunk-WLXK2KNU.js} +2 -2
- package/dist/cli/chunks/{chunk-ZBJ4XOOV.js → chunk-WOIGKU2N.js} +4 -4
- package/dist/cli/chunks/{chunk-ZZDIMOOV.js → chunk-WX6RRIGW.js} +2 -2
- package/dist/cli/chunks/{chunk-STM3UDNO.js → chunk-XEZIIQYJ.js} +2 -2
- package/dist/cli/chunks/{chunk-3QHGWY7T.js → chunk-XFPPERA2.js} +2 -2
- package/dist/cli/chunks/{chunk-VIHTL3U2.js → chunk-XLAUGSW7.js} +2 -2
- package/dist/cli/chunks/{chunk-XC7DYDSY.js → chunk-XQSIRBKT.js} +2 -2
- package/dist/cli/chunks/{chunk-GPLQ6DOK.js → chunk-XUR2M2WB.js} +2 -2
- package/dist/cli/chunks/{chunk-KCZR45PA.js → chunk-XZSMZHM2.js} +2 -2
- package/dist/cli/chunks/{chunk-ZNPKDCZR.js → chunk-Y5L3ES4L.js} +2 -2
- package/dist/cli/chunks/{chunk-W7BWUTVV.js → chunk-YDFL445W.js} +2 -2
- package/dist/cli/chunks/{chunk-AWWNB2T7.js → chunk-YQGPQBCX.js} +2 -2
- package/dist/cli/chunks/{chunk-DAEFDCJ4.js → chunk-YXP6BKGS.js} +17 -17
- package/dist/cli/chunks/{chunk-OBAP2TXZ.js → chunk-ZBABIZ2D.js} +2 -2
- package/dist/cli/chunks/{chunk-CSU5NYOX.js → chunk-ZCWERUYB.js} +4 -4
- package/dist/cli/chunks/{ci-464KPQNP.js → ci-RACDAJMR.js} +2 -2
- package/dist/cli/chunks/{ci-output-I7FX2RSO.js → ci-output-EHRSZBKG.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-3FW237WW.js → circuit-breaker-GBV7M5XG.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-6JKMBPGU.js → claude-flow-setup-5LVJOFKP.js} +2 -2
- package/dist/cli/chunks/client-HUVFA5PF.js +2 -0
- package/dist/cli/chunks/{cline-installer-UWFHT6VY.js → cline-installer-W4NMXJSG.js} +2 -2
- package/dist/cli/chunks/{code-KQSUT3FS.js → code-JWXJMYXB.js} +3 -3
- package/dist/cli/chunks/{code-index-extractor-PABBNUSC.js → code-index-extractor-RVI2IFTM.js} +2 -2
- package/dist/cli/chunks/codex-installer-3BORJINH.js +14 -0
- package/dist/cli/chunks/{completions-7RWHAUAR.js → completions-A55NCTAO.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-XPOAF33E.js → complexity-analyzer-JCXHGGLY.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-V4F2FIZP.js → continuedev-installer-PUVFMGYW.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-JMICURQB.js → copilot-installer-4DCMYWHB.js} +2 -2
- package/dist/cli/chunks/core-handlers-UEXO3VAA.js +2 -0
- package/dist/cli/chunks/{cost-tracker-5OFHEYFJ.js → cost-tracker-5TV2GGKY.js} +2 -2
- package/dist/cli/chunks/{coverage-QKN57JDS.js → coverage-NNWM7TX3.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-ODU5IZD6.js +2 -0
- package/dist/cli/chunks/{cursor-installer-GBJ7YXSM.js → cursor-installer-4NCHGJGK.js} +2 -2
- package/dist/cli/chunks/{daemon-IAVSO6HK.js → daemon-QIKCXKWO.js} +4 -4
- package/dist/cli/chunks/{daemon-GKP7CMEK.js → daemon-T4JO4IXP.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-S225TCI7.js → dag-attention-scheduler-RPAAIDAD.js} +2 -2
- package/dist/cli/chunks/{detect-IUYH422U.js → detect-SBEEVDSN.js} +2 -2
- package/dist/cli/chunks/{dist-node-2YRE6A7C.js → dist-node-ZHI6NCSU.js} +2 -2
- package/dist/cli/chunks/{domain-handler-PL2TZC6H.js → domain-handler-LBC3GJ7Z.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-HCGLXKIT.js → domain-plugins-H6IZ5USZ.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-KQJRUPXA.js → domain-transfer-JZA5TMW3.js} +2 -2
- package/dist/cli/chunks/dream-HE3OX42F.js +2 -0
- package/dist/cli/chunks/embed-and-insert-pattern-AHTR7CRU.js +3 -0
- package/dist/cli/chunks/{eval-WCK7KNFN.js → eval-DZU2KISM.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-2MSQWSAR.js → experience-capture-middleware-5IQCWKSL.js} +4 -4
- package/dist/cli/chunks/{fast-paths-VYOSIBKF.js → fast-paths-2KLDUWCY.js} +2 -2
- package/dist/cli/chunks/{feature-flags-UJRHFBRX.js → feature-flags-7AC3XDZA.js} +2 -2
- package/dist/cli/chunks/{feature-flags-WCFUKHNQ.js → feature-flags-N6UAEZY4.js} +2 -2
- package/dist/cli/chunks/{file-discovery-JDGL4ZWS.js → file-discovery-5SDIW4V2.js} +2 -2
- package/dist/cli/chunks/{fleet-ROXVMZ2F.js → fleet-ZIQCAZ2Y.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-NIO4ZCO3.js → gnn-wrapper-DUMBZJEV.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-PI42WD3C.js → heartbeat-handler-6HVM6ZMR.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-QUIFGGLX.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-42KB37KP.js +2 -0
- package/dist/cli/chunks/hnsw-index-T2PGO77J.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-YLC7SPK2.js → hnsw-legacy-bridge-5DRL5FLX.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-LG6OS3B7.js → hnswlib-node-GW67GTCL.js} +2 -2
- package/dist/cli/chunks/{hooks-WVALP5GX.js → hooks-QHH6FVO4.js} +10 -10
- package/dist/cli/chunks/hybrid-backend-FRNWYRKH.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-GJEMW3EG.js → hypergraph-engine-7XDCCVG2.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-BLF6LXEV.js → hypergraph-handler-QHF7NOU5.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-A5QYOYBR.js +2 -0
- package/dist/cli/chunks/{init-handler-K25RWRYY.js → init-handler-5UIVOM7K.js} +6 -6
- package/dist/cli/chunks/init-wizard-XBU674YH.js +2 -0
- package/dist/cli/chunks/kernel-DV5MTNZD.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-BXN6WZ7G.js → kilocode-installer-TGGV6K5Q.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-PM362DLN.js → kiro-installer-4XYBHZWW.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-4ACGVJQK.js +2 -0
- package/dist/cli/chunks/{learning-CPERDDRG.js → learning-STE5W6BS.js} +3 -3
- package/dist/cli/chunks/{llm-router-GOAV5FPI.js → llm-router-NKF7J3RI.js} +4 -4
- package/dist/cli/chunks/llm-router-service-PSMASERT.js +2 -0
- package/dist/cli/chunks/{load-2BG6SHAK.js → load-B2T77UJQ.js} +2 -2
- package/dist/cli/chunks/load-test-MRUO2VPF.js +2 -0
- package/dist/cli/chunks/mcp-JGSFCEMH.js +2 -0
- package/dist/cli/chunks/{memory-4NHBYT6S.js → memory-WRFZKG56.js} +6 -6
- package/dist/cli/chunks/memory-backend-2MPGI6JW.js +2 -0
- package/dist/cli/chunks/memory-handlers-XT4HMITB.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-KCWSGCDT.js → multi-model-executor-26Q5BSVG.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-ATZLLK74.js → opencode-installer-J36EMQU7.js} +2 -2
- package/dist/cli/chunks/{orchestrator-RKB7XJRG.js → orchestrator-D5IFV65I.js} +18 -18
- package/dist/cli/chunks/pattern-null-store-TGWUL237.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-7VE4XDAI.js → pattern-usage-recorder-BVMTWI3E.js} +2 -2
- package/dist/cli/chunks/{pipeline-LQZSNDD2.js → pipeline-OWAHDUAQ.js} +2 -2
- package/dist/cli/chunks/platform-ANGBFWBV.js +2 -0
- package/dist/cli/chunks/{plugin-EJ6K2MGU.js → plugin-OO7ON2YW.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-OIHTKJMN.js → prime-radiant-advanced-wasm-HFG3BXWU.js} +2 -2
- package/dist/cli/chunks/project-root-LNOYVTYY.js +2 -0
- package/dist/cli/chunks/protocol-executor-GEVH5KD6.js +2 -0
- package/dist/cli/chunks/{protocol-handler-NRBROAU7.js → protocol-handler-CE3Q6LY4.js} +2 -2
- package/dist/cli/chunks/{prove-EJOGEGD3.js → prove-7XPN53PY.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-DJ2JL6QB.js +2 -0
- package/dist/cli/chunks/{quality-E55UC73D.js → quality-TT23JRFX.js} +2 -2
- package/dist/cli/chunks/{quality-gate-OIQATNT3.js → quality-gate-PPPRP255.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-F7E3AS26.js +2 -0
- package/dist/cli/chunks/real-embeddings-EYNZIFJE.js +2 -0
- package/dist/cli/chunks/{ref-validation-OPO6J7OL.js → ref-validation-QQR64ZXD.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-ODY5KRWU.js → roocode-installer-UIGS7ZJD.js} +2 -2
- package/dist/cli/chunks/router-OZH3QSAU.js +2 -0
- package/dist/cli/chunks/routing-feedback-J2E3ADZB.js +2 -0
- package/dist/cli/chunks/{routing-handler-KQM6VWLC.js → routing-handler-6AENUIRG.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-U2GVV6PF.js → ruvector-commands-5AWMEV34.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-HK525Y5Y.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-Q7FB3BKR.js +2 -0
- package/dist/cli/chunks/rvf-migration-coordinator-NWRJ7C22.js +2 -0
- package/dist/cli/chunks/rvf-native-adapter-5ZRCGUI6.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-KMIHD3LP.js → rvf-store-integrity-ISKRP563.js} +2 -2
- package/dist/cli/chunks/safe-db-3OYEPVEH.js +2 -0
- package/dist/cli/chunks/schedule-AG4C2EIQ.js +2 -0
- package/dist/cli/chunks/scheduler-SQS2CZFZ.js +2 -0
- package/dist/cli/chunks/{security-P5NM353C.js → security-325A7FMB.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-LVIUOO4S.js → shared-rvf-adapter-NFL6QSZ6.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-2CSG7C4W.js → shared-rvf-dual-writer-THFDYS2Z.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-MAKDFSHC.js +2 -0
- package/dist/cli/chunks/standalone-memory-UD4MJ6GZ.js +2 -0
- package/dist/cli/chunks/{status-handler-6TU6O37R.js → status-handler-CPFTN4XL.js} +2 -2
- package/dist/cli/chunks/{structural-health-KBIJSTXJ.js → structural-health-2MG2IVBL.js} +2 -2
- package/dist/cli/chunks/{sync-LNHI5SB7.js → sync-EE4VVKOW.js} +2 -2
- package/dist/cli/chunks/{sync-UHOX6RJW.js → sync-MBTW5XBF.js} +2 -2
- package/dist/cli/chunks/task-handler-7H5OYJG4.js +54 -0
- package/dist/cli/chunks/task-handlers-NH4GJHCJ.js +9 -0
- package/dist/cli/chunks/{test-DHAAI3DU.js → test-MPHGT4T6.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-XDBZ3QC2.js → test-scheduling-CHQ4ZLLJ.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-SSDCYEKK.js +2 -0
- package/dist/cli/chunks/{token-usage-Q2YG5YQN.js → token-usage-EBXUJNRB.js} +2 -2
- package/dist/cli/chunks/{transformers-F5UQTQCY.js → transformers-ZEKS2OJZ.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-DEGOHS6F.js → tree-sitter-wasm-parser-J6ZMAK37.js} +2 -2
- package/dist/cli/chunks/{types-JQ7EQO5Q.js → types-KYAA5VLV.js} +2 -2
- package/dist/cli/chunks/unified-memory-DDWMC435.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-4JA7SGBK.js +2 -0
- package/dist/cli/chunks/unified-persistence-F6OSNTXY.js +2 -0
- package/dist/cli/chunks/{upgrade-TJRVGHGD.js → upgrade-UJBJ5AYM.js} +2 -2
- package/dist/cli/chunks/{validate-BWPCVHBN.js → validate-RUV6YMWS.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-QVVKCQLP.js → validate-swarm-IVEVMGVM.js} +2 -2
- package/dist/cli/chunks/{vibium-ZFATIWHO.js → vibium-HOGMFJ2Z.js} +2 -2
- package/dist/cli/chunks/visual-security-25SMBIYT.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-KPLY7ONR.js → web-tree-sitter-AVWA6HKE.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-H7XM7ISA.js → windsurf-installer-DAH7HI2W.js} +2 -2
- package/dist/cli/chunks/{witness-chain-RRN6NDCH.js → witness-chain-PJOQPFUX.js} +2 -2
- package/dist/cli/chunks/witness-chain-ZW6KKUZU.js +2 -0
- package/dist/cli/chunks/{witness-key-manager-DFRL42GE.js → witness-key-manager-JSTBMG43.js} +2 -2
- package/dist/cli/chunks/{workflow-2ZQO6WYI.js → workflow-TWOIA6LZ.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-UKSIDM7Q.js +2 -0
- package/dist/cli/chunks/{wrappers-SUS6XEJD.js → wrappers-UR7BLXKV.js} +2 -2
- package/dist/cli/commands/mcp.js +6 -0
- package/dist/cli/commands/memory.d.ts +1 -1
- package/dist/cli/commands/memory.js +8 -8
- package/dist/cli/commands/platform.js +15 -2
- package/dist/cli/commands/upgrade.d.ts +3 -3
- package/dist/cli/commands/upgrade.js +3 -3
- package/dist/cli/handlers/init-handler.d.ts +10 -0
- package/dist/cli/handlers/task-handler.js +24 -3
- package/dist/cli/helpers/standalone-memory.d.ts +12 -0
- package/dist/cli/helpers/standalone-memory.js +46 -0
- package/dist/cli/index.js +37 -41
- package/dist/cli/log-gate.d.ts +66 -0
- package/dist/cli/log-gate.js +170 -0
- package/dist/init/codex-installer.js +18 -6
- package/dist/init/orchestrator.js +1 -0
- package/dist/init/phases/09-assets.d.ts +10 -0
- package/dist/init/phases/09-assets.js +3 -0
- package/dist/init/token-bootstrap.d.ts +1 -1
- package/dist/init/token-bootstrap.js +12 -2
- package/dist/init/types.d.ts +10 -0
- package/dist/integrations/ruvector/brain-exporter.js +17 -0
- package/dist/integrations/ruvector/brain-import-audit.d.ts +20 -0
- package/dist/integrations/ruvector/brain-import-audit.js +22 -0
- package/dist/integrations/ruvector/brain-rvf-exporter.js +16 -0
- package/dist/integrations/ruvector/brain-shared.js +1 -1
- package/dist/integrations/ruvector/rvf-dual-writer.js +6 -1
- package/dist/kernel/hybrid-backend.d.ts +6 -0
- package/dist/kernel/hybrid-backend.js +18 -0
- package/dist/kernel/kernel.js +9 -14
- package/dist/kernel/project-root.d.ts +1 -1
- package/dist/kernel/project-root.js +24 -3
- package/dist/learning/embedder-identity-store.js +4 -3
- package/dist/learning/pattern-store.js +5 -1
- package/dist/learning/real-embeddings.d.ts +8 -0
- package/dist/learning/real-embeddings.js +16 -0
- package/dist/learning/rvf-pattern-store.js +10 -3
- package/dist/mcp/bundle.js +442 -442
- package/dist/mcp/entry.js +2 -0
- package/dist/mcp/handlers/memory-handlers.d.ts +6 -1
- package/dist/mcp/handlers/memory-handlers.js +44 -22
- package/dist/mcp/handlers/task-handlers.js +14 -1
- package/dist/mcp/protocol-server.js +1 -0
- package/dist/mcp/services/session-store.js +5 -1
- package/dist/plugins/cache.d.ts +2 -0
- package/dist/plugins/cache.js +15 -2
- package/dist/plugins/lifecycle.js +15 -2
- package/dist/plugins/manifest.js +7 -5
- package/dist/plugins/resolver.d.ts +13 -22
- package/dist/plugins/resolver.js +169 -61
- package/dist/plugins/version-policy.d.ts +13 -0
- package/dist/plugins/version-policy.js +18 -0
- package/dist/shared/types/index.d.ts +6 -0
- package/dist/shared/types/index.js +8 -0
- package/package.json +2 -1
- package/dist/cli/chunks/adapter-TNNNJRDG.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-5ZRMYJLB.js +0 -2
- package/dist/cli/chunks/base-KWZHOPSH.js +0 -2
- package/dist/cli/chunks/brain-handler-ET6YAP4B.js +0 -90
- package/dist/cli/chunks/browser-workflow-2FZTKDUL.js +0 -2
- package/dist/cli/chunks/chunk-33YYYWBQ.js +0 -4
- package/dist/cli/chunks/chunk-5Z6XZV7K.js +0 -65
- package/dist/cli/chunks/chunk-6J62K3SW.js +0 -2
- package/dist/cli/chunks/chunk-6TPKK7LD.js +0 -15
- package/dist/cli/chunks/chunk-DEYLEDJN.js +0 -27
- package/dist/cli/chunks/chunk-KGT36Z42.js +0 -14
- package/dist/cli/chunks/chunk-NA7B2QYB.js +0 -2
- package/dist/cli/chunks/chunk-NDPFGIMJ.js +0 -13
- package/dist/cli/chunks/chunk-PEPFCPES.js +0 -2
- package/dist/cli/chunks/chunk-TT23RRB7.js +0 -2
- package/dist/cli/chunks/chunk-XWMZ6D6N.js +0 -2
- package/dist/cli/chunks/client-7E4LM2WW.js +0 -2
- package/dist/cli/chunks/codex-installer-CQ24DTP5.js +0 -14
- package/dist/cli/chunks/core-handlers-IFG3757P.js +0 -2
- package/dist/cli/chunks/cross-domain-router-EK7W4PGP.js +0 -2
- package/dist/cli/chunks/dream-NFSCSLY7.js +0 -2
- package/dist/cli/chunks/embed-and-insert-pattern-ZPAG7235.js +0 -3
- package/dist/cli/chunks/heartbeat-scheduler-ZATCDJDK.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-WXQABRCA.js +0 -2
- package/dist/cli/chunks/hnsw-index-TPSWLEA5.js +0 -2
- package/dist/cli/chunks/impact-analyzer-HNIU45P5.js +0 -2
- package/dist/cli/chunks/init-wizard-JUIPBMHG.js +0 -2
- package/dist/cli/chunks/kernel-5BOZQ754.js +0 -2
- package/dist/cli/chunks/knowledge-graph-EWDAENWM.js +0 -2
- package/dist/cli/chunks/llm-router-service-3YT7JGBS.js +0 -2
- package/dist/cli/chunks/load-test-BP2CPLIV.js +0 -2
- package/dist/cli/chunks/mcp-5TTB37DC.js +0 -2
- package/dist/cli/chunks/memory-backend-4PYQBPRM.js +0 -2
- package/dist/cli/chunks/memory-handlers-2B27NITS.js +0 -2
- package/dist/cli/chunks/pattern-null-store-OYOQOV2O.js +0 -2
- package/dist/cli/chunks/platform-OD5H5U6G.js +0 -2
- package/dist/cli/chunks/protocol-executor-3ATJTXWG.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-LLMYZT4X.js +0 -2
- package/dist/cli/chunks/queen-coordinator-RN7L6KG5.js +0 -2
- package/dist/cli/chunks/real-embeddings-FPFFNOSZ.js +0 -2
- package/dist/cli/chunks/router-MDHITQ2V.js +0 -2
- package/dist/cli/chunks/routing-feedback-5XLNJ3Y3.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-JBW4O3II.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-BPPQL4XJ.js +0 -2
- package/dist/cli/chunks/rvf-migration-coordinator-V2GHCJKN.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-S4562CG5.js +0 -2
- package/dist/cli/chunks/safe-db-FIRHSXVF.js +0 -2
- package/dist/cli/chunks/schedule-RVXFB4HK.js +0 -2
- package/dist/cli/chunks/scheduler-IKKAMAOO.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-SQ3HCUQ7.js +0 -2
- package/dist/cli/chunks/task-handler-AVDHMLGI.js +0 -49
- package/dist/cli/chunks/task-handlers-KYK4VTRA.js +0 -9
- package/dist/cli/chunks/token-bootstrap-GUTTLPZX.js +0 -2
- package/dist/cli/chunks/unified-memory-CXHLHB5I.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-I7WAE54M.js +0 -2
- package/dist/cli/chunks/unified-persistence-6CPF65WI.js +0 -2
- package/dist/cli/chunks/visual-security-GNPHME5H.js +0 -2
- package/dist/cli/chunks/witness-chain-VT4UHHBR.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-DB3HIECD.js +0 -2
|
@@ -12,10 +12,11 @@ import * as fs from 'fs';
|
|
|
12
12
|
import { initializeTokenOptimizer, TokenOptimizerService } from '../optimization/token-optimizer-service.js';
|
|
13
13
|
import { TokenMetricsCollector } from '../learning/token-tracker.js';
|
|
14
14
|
import { createDefaultMemoryBackend } from '../kernel/memory-factory.js';
|
|
15
|
+
import { findProjectRoot } from '../kernel/project-root.js';
|
|
15
16
|
const DEFAULT_CONFIG = {
|
|
16
17
|
enableOptimization: true,
|
|
17
18
|
enablePersistence: true,
|
|
18
|
-
storagePath:
|
|
19
|
+
storagePath: '.agentic-qe',
|
|
19
20
|
autoSaveIntervalMs: 60000,
|
|
20
21
|
verbose: process.env.AQE_VERBOSE === 'true',
|
|
21
22
|
};
|
|
@@ -36,7 +37,16 @@ export async function bootstrapTokenTracking(config) {
|
|
|
36
37
|
if (initialized) {
|
|
37
38
|
return;
|
|
38
39
|
}
|
|
39
|
-
|
|
40
|
+
// Resolve the project before creating any directory: a new cwd-local store
|
|
41
|
+
// would otherwise become the nearest AQE root and split project memory.
|
|
42
|
+
// A relative AQE_STORAGE_PATH is anchored at the project root too, so it
|
|
43
|
+
// cannot recreate a cwd-local store from a subdirectory.
|
|
44
|
+
const envStorage = process.env.AQE_STORAGE_PATH;
|
|
45
|
+
const cfg = {
|
|
46
|
+
...DEFAULT_CONFIG, ...config,
|
|
47
|
+
storagePath: config?.storagePath
|
|
48
|
+
?? (envStorage ? path.resolve(findProjectRoot(), envStorage) : path.join(findProjectRoot(), '.agentic-qe')),
|
|
49
|
+
};
|
|
40
50
|
if (cfg.verbose) {
|
|
41
51
|
console.log('[TokenBootstrap] Initializing token tracking...');
|
|
42
52
|
}
|
package/dist/init/types.d.ts
CHANGED
|
@@ -227,6 +227,16 @@ export interface InitResult {
|
|
|
227
227
|
policy: 'full' | 'compact' | 'none';
|
|
228
228
|
ownedBytes: number;
|
|
229
229
|
};
|
|
230
|
+
codexComponents?: {
|
|
231
|
+
hooks: {
|
|
232
|
+
status: string;
|
|
233
|
+
error?: string;
|
|
234
|
+
};
|
|
235
|
+
skills: {
|
|
236
|
+
status: string;
|
|
237
|
+
error?: string;
|
|
238
|
+
};
|
|
239
|
+
};
|
|
230
240
|
};
|
|
231
241
|
totalDurationMs: number;
|
|
232
242
|
timestamp: Date;
|
|
@@ -21,6 +21,7 @@ import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'fs';
|
|
|
21
21
|
import { join, resolve } from 'path';
|
|
22
22
|
import { safeJsonParse } from '../../shared/safe-json.js';
|
|
23
23
|
import { sha256, queryAll, queryIterator, countRows, domainFilterForColumn, writeJsonl, writeJsonlStreaming, readJsonl, runImportTransaction, serializeRowBlobs, deserializeRowBlobs, mergeGenericRow, remapPatternReferences, mergeAppendOnlyRow, TABLE_CONFIGS, PK_COLUMNS, CONFIDENCE_COLUMNS, TIMESTAMP_COLUMNS, } from './brain-shared.js';
|
|
24
|
+
import { appendBrainImportWitness } from './brain-import-audit.js';
|
|
24
25
|
// ============================================================================
|
|
25
26
|
// Internal helpers
|
|
26
27
|
// ============================================================================
|
|
@@ -226,9 +227,17 @@ export function importBrain(db, containerPath, options) {
|
|
|
226
227
|
const importAll = () => {
|
|
227
228
|
const patternIds = new Map();
|
|
228
229
|
const patternWinners = new Map();
|
|
230
|
+
let sourceWitnessRows = 0;
|
|
229
231
|
for (const config of configs) {
|
|
230
232
|
const filePath = join(dir, config.fileName);
|
|
231
233
|
let rows = readJsonl(filePath, safeJsonParse);
|
|
234
|
+
if (config.tableName === 'witness_chain') {
|
|
235
|
+
// Source rows are signed/linked to a different store. Copying them into
|
|
236
|
+
// this live chain would make the first imported predecessor invalid.
|
|
237
|
+
sourceWitnessRows += rows.length;
|
|
238
|
+
skipped += rows.length;
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
232
241
|
// Deserialize BLOBs from Base64
|
|
233
242
|
if (config.blobColumns && config.blobColumns.length > 0) {
|
|
234
243
|
rows = rows.map(r => deserializeRowBlobs(r, config.blobColumns));
|
|
@@ -252,6 +261,14 @@ export function importBrain(db, containerPath, options) {
|
|
|
252
261
|
conflicts += result.conflicts;
|
|
253
262
|
}
|
|
254
263
|
}
|
|
264
|
+
appendBrainImportWitness(db, {
|
|
265
|
+
sourceChecksum: manifest.checksum,
|
|
266
|
+
sourceWitnessRows,
|
|
267
|
+
importedRecords: imported,
|
|
268
|
+
skippedRecords: skipped,
|
|
269
|
+
conflicts,
|
|
270
|
+
});
|
|
271
|
+
imported += 1;
|
|
255
272
|
};
|
|
256
273
|
runImportTransaction(db, options.dryRun ?? false, importAll);
|
|
257
274
|
return { imported, skipped, conflicts };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Record a brain import without grafting another store's witness history. */
|
|
2
|
+
import type Database from 'better-sqlite3';
|
|
3
|
+
interface BrainImportAuditDetails {
|
|
4
|
+
sourceChecksum: string;
|
|
5
|
+
sourceWitnessRows: number;
|
|
6
|
+
importedRecords: number;
|
|
7
|
+
skippedRecords: number;
|
|
8
|
+
conflicts: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Call inside the import transaction, after merging all non-witness tables.
|
|
12
|
+
*
|
|
13
|
+
* Reuses WitnessChain's own hashing/serialization so the link format cannot
|
|
14
|
+
* drift from what WitnessChain.verify() checks. The row is intentionally left
|
|
15
|
+
* unsigned: the target DB may belong to a different project than the CWD, so
|
|
16
|
+
* the process-default signing key is not necessarily the target's key.
|
|
17
|
+
*/
|
|
18
|
+
export declare function appendBrainImportWitness(db: Database.Database, details: BrainImportAuditDetails): void;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=brain-import-audit.d.ts.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { GENESIS_PREV_HASH, hashWith, serializeEntry, } from '../../audit/witness-chain.js';
|
|
2
|
+
/**
|
|
3
|
+
* Call inside the import transaction, after merging all non-witness tables.
|
|
4
|
+
*
|
|
5
|
+
* Reuses WitnessChain's own hashing/serialization so the link format cannot
|
|
6
|
+
* drift from what WitnessChain.verify() checks. The row is intentionally left
|
|
7
|
+
* unsigned: the target DB may belong to a different project than the CWD, so
|
|
8
|
+
* the process-default signing key is not necessarily the target's key.
|
|
9
|
+
*/
|
|
10
|
+
export function appendBrainImportWitness(db, details) {
|
|
11
|
+
const algo = 'shake256';
|
|
12
|
+
const actionData = JSON.stringify(details);
|
|
13
|
+
const last = db.prepare('SELECT * FROM witness_chain ORDER BY id DESC LIMIT 1')
|
|
14
|
+
.get();
|
|
15
|
+
const previousHash = last ? hashWith(algo, serializeEntry(last)) : GENESIS_PREV_HASH;
|
|
16
|
+
db.prepare(`
|
|
17
|
+
INSERT INTO witness_chain
|
|
18
|
+
(prev_hash, action_hash, action_type, action_data, timestamp, actor, hash_algo)
|
|
19
|
+
VALUES (?, ?, 'BRAIN_IMPORT', ?, ?, 'brain-import', ?)
|
|
20
|
+
`).run(previousHash, hashWith(algo, actionData), actionData, new Date().toISOString(), algo);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=brain-import-audit.js.map
|
|
@@ -7,6 +7,7 @@ import { existsSync, readdirSync, renameSync, statSync, unlinkSync, writeFileSyn
|
|
|
7
7
|
import { basename, dirname, join, resolve } from 'path';
|
|
8
8
|
import { createRvfStore, openRvfStore, openRvfStoreReadonly, isRvfNativeAvailable, } from './rvf-native-adapter.js';
|
|
9
9
|
import { sha256, tableExists, queryAll, domainFilterForColumn, runImportTransaction, mergeGenericRow, remapPatternReferences, mergeAppendOnlyRow, TABLE_CONFIGS, TABLE_BLOB_COLUMNS, PK_COLUMNS, CONFIDENCE_COLUMNS, TIMESTAMP_COLUMNS, serializeRowBlobs, deserializeRowBlobs, } from './brain-shared.js';
|
|
10
|
+
import { appendBrainImportWitness } from './brain-import-audit.js';
|
|
10
11
|
// --- Export ---
|
|
11
12
|
/**
|
|
12
13
|
* Sidecar suffixes that make up a complete store on disk. `''` is the store
|
|
@@ -401,11 +402,18 @@ export function importBrainFromRvf(db, rvfPath, options) {
|
|
|
401
402
|
const importAll = () => {
|
|
402
403
|
const patternIds = new Map();
|
|
403
404
|
const patternWinners = new Map();
|
|
405
|
+
let sourceWitnessRows = 0;
|
|
404
406
|
// Import in TABLE_CONFIGS order (FK-aware)
|
|
405
407
|
for (const config of TABLE_CONFIGS) {
|
|
406
408
|
let rows = tablesMap[config.tableName];
|
|
407
409
|
if (!rows || !Array.isArray(rows))
|
|
408
410
|
continue;
|
|
411
|
+
if (config.tableName === 'witness_chain') {
|
|
412
|
+
// A source chain cannot be grafted into another store's live chain.
|
|
413
|
+
sourceWitnessRows += rows.length;
|
|
414
|
+
skipped += rows.length;
|
|
415
|
+
continue;
|
|
416
|
+
}
|
|
409
417
|
// Deserialize BLOBs
|
|
410
418
|
const blobCols = TABLE_BLOB_COLUMNS[config.tableName];
|
|
411
419
|
if (blobCols && blobCols.length > 0) {
|
|
@@ -434,6 +442,14 @@ export function importBrainFromRvf(db, rvfPath, options) {
|
|
|
434
442
|
conflicts += result.conflicts;
|
|
435
443
|
}
|
|
436
444
|
}
|
|
445
|
+
appendBrainImportWitness(db, {
|
|
446
|
+
sourceChecksum: sha256(kernel.image.toString('utf-8')),
|
|
447
|
+
sourceWitnessRows,
|
|
448
|
+
importedRecords: imported,
|
|
449
|
+
skippedRecords: skipped,
|
|
450
|
+
conflicts,
|
|
451
|
+
});
|
|
452
|
+
imported += 1;
|
|
437
453
|
};
|
|
438
454
|
runImportTransaction(db, options.dryRun ?? false, importAll);
|
|
439
455
|
// Compact after conflict resolution (best-effort)
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* intercepting pattern embedding writes/deletes/searches and routing them
|
|
11
11
|
* to one or both backends depending on the configured mode.
|
|
12
12
|
*/
|
|
13
|
-
import { getActiveEmbeddingSpaceIdentity } from '../../learning/real-embeddings.js';
|
|
13
|
+
import { ensureEndpointEmbeddingSpaceIdentity, getActiveEmbeddingSpaceIdentity } from '../../learning/real-embeddings.js';
|
|
14
14
|
import { verifyOrCreateEmbeddingSpaceManifest } from '../../learning/embedding-space.js';
|
|
15
15
|
/**
|
|
16
16
|
* Wraps the real RvfNativeAdapter to conform to the simpler RvfStore interface.
|
|
@@ -97,6 +97,11 @@ export class RvfDualWriter {
|
|
|
97
97
|
this.rvfAvailable = false;
|
|
98
98
|
return;
|
|
99
99
|
}
|
|
100
|
+
// #754: a later process opens brain.rvf before any embed call has
|
|
101
|
+
// initialized the (lazy) endpoint runtime; resolve its identity first.
|
|
102
|
+
if (!this.activeSpaceId()) {
|
|
103
|
+
await ensureEndpointEmbeddingSpaceIdentity();
|
|
104
|
+
}
|
|
100
105
|
const { isRvfLockHeldError, removeStaleRvfLock, quarantineUnusableStore } = await import('./rvf-store-integrity.js');
|
|
101
106
|
const tryOpen = () => {
|
|
102
107
|
try {
|
|
@@ -175,5 +175,11 @@ export declare class HybridMemoryBackend implements MemoryBackend {
|
|
|
175
175
|
private ensureInitialized;
|
|
176
176
|
private cleanup;
|
|
177
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* Create the project memory backend exactly as the QE kernel does
|
|
180
|
+
* (<dataDir>/memory.db, WAL, 'qe-kernel' default namespace). Shared with the
|
|
181
|
+
* CLI's lightweight memory path so both always open the same store.
|
|
182
|
+
*/
|
|
183
|
+
export declare function createKernelMemoryBackend(dataDir: string): HybridMemoryBackend;
|
|
178
184
|
export {};
|
|
179
185
|
//# sourceMappingURL=hybrid-backend.d.ts.map
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* backward compatibility with existing MemoryBackend interface.
|
|
11
11
|
*/
|
|
12
12
|
import { getUnifiedMemory, DEFAULT_UNIFIED_MEMORY_CONFIG } from './unified-memory.js';
|
|
13
|
+
import * as path from 'path';
|
|
13
14
|
import { MEMORY_CONSTANTS } from './constants.js';
|
|
14
15
|
import { LoggerFactory } from '../logging/index.js';
|
|
15
16
|
const logger = LoggerFactory.create('hybrid-backend');
|
|
@@ -329,4 +330,21 @@ export class HybridMemoryBackend {
|
|
|
329
330
|
}
|
|
330
331
|
}
|
|
331
332
|
}
|
|
333
|
+
/**
|
|
334
|
+
* Create the project memory backend exactly as the QE kernel does
|
|
335
|
+
* (<dataDir>/memory.db, WAL, 'qe-kernel' default namespace). Shared with the
|
|
336
|
+
* CLI's lightweight memory path so both always open the same store.
|
|
337
|
+
*/
|
|
338
|
+
export function createKernelMemoryBackend(dataDir) {
|
|
339
|
+
return new HybridMemoryBackend({
|
|
340
|
+
sqlite: {
|
|
341
|
+
path: path.join(dataDir, 'memory.db'),
|
|
342
|
+
walMode: true,
|
|
343
|
+
poolSize: 3,
|
|
344
|
+
busyTimeout: MEMORY_CONSTANTS.BUSY_TIMEOUT_MS,
|
|
345
|
+
},
|
|
346
|
+
enableFallback: true,
|
|
347
|
+
defaultNamespace: 'qe-kernel',
|
|
348
|
+
});
|
|
349
|
+
}
|
|
332
350
|
//# sourceMappingURL=hybrid-backend.js.map
|
package/dist/kernel/kernel.js
CHANGED
|
@@ -8,10 +8,10 @@ import { InMemoryEventBus } from './event-bus.js';
|
|
|
8
8
|
import { DefaultAgentCoordinator } from './agent-coordinator.js';
|
|
9
9
|
import { DefaultPluginLoader } from './plugin-loader.js';
|
|
10
10
|
import { InMemoryBackend } from './memory-backend.js';
|
|
11
|
-
import {
|
|
11
|
+
import { createKernelMemoryBackend } from './hybrid-backend.js';
|
|
12
12
|
import { SemanticAntiDriftMiddleware, ToolCallSignatureTracker } from './anti-drift-middleware.js';
|
|
13
13
|
import { LOOP_EVENT_TYPES } from './event-bus.js';
|
|
14
|
-
import { AGENT_CONSTANTS
|
|
14
|
+
import { AGENT_CONSTANTS } from './constants.js';
|
|
15
15
|
import { findProjectRoot } from './unified-memory.js';
|
|
16
16
|
import { initializeUnifiedPersistence } from './unified-persistence.js';
|
|
17
17
|
import * as path from 'path';
|
|
@@ -163,16 +163,7 @@ export class QEKernelImpl {
|
|
|
163
163
|
else {
|
|
164
164
|
// Use hybrid backend for persistent storage (default)
|
|
165
165
|
// All data goes to unified memory.db via UnifiedMemoryManager
|
|
166
|
-
this._memory =
|
|
167
|
-
sqlite: {
|
|
168
|
-
path: path.join(dataDir, 'memory.db'),
|
|
169
|
-
walMode: true,
|
|
170
|
-
poolSize: 3,
|
|
171
|
-
busyTimeout: MEMORY_CONSTANTS.BUSY_TIMEOUT_MS,
|
|
172
|
-
},
|
|
173
|
-
enableFallback: true,
|
|
174
|
-
defaultNamespace: 'qe-kernel',
|
|
175
|
-
});
|
|
166
|
+
this._memory = createKernelMemoryBackend(dataDir);
|
|
176
167
|
// Re-create plugins with the real memory backend
|
|
177
168
|
this._plugins = new DefaultPluginLoader(this._eventBus, this._memory, this._config.lazyLoading);
|
|
178
169
|
}
|
|
@@ -206,6 +197,9 @@ export class QEKernelImpl {
|
|
|
206
197
|
const pluginCache = new PluginCache({ cacheDir: pluginCacheDir });
|
|
207
198
|
const pluginLifecycle = new PluginLifecycleManager({ cache: pluginCache });
|
|
208
199
|
const resolution = pluginLifecycle.resolveLoadOrder();
|
|
200
|
+
for (const error of resolution.errors) {
|
|
201
|
+
console.warn(`[QEKernel] External plugin ${error.plugin}: ${error.code}: ${error.message}`);
|
|
202
|
+
}
|
|
209
203
|
for (const resolved of resolution.ordered) {
|
|
210
204
|
const manifest = resolved.manifest;
|
|
211
205
|
const cachedPlugin = pluginCache.get(manifest.name, manifest.version);
|
|
@@ -232,8 +226,9 @@ export class QEKernelImpl {
|
|
|
232
226
|
}
|
|
233
227
|
}
|
|
234
228
|
}
|
|
235
|
-
catch {
|
|
236
|
-
// External plugin loading is best-effort
|
|
229
|
+
catch (error) {
|
|
230
|
+
// External plugin loading is best-effort, but failures must be visible.
|
|
231
|
+
console.warn('[QEKernel] External plugin discovery failed:', error);
|
|
237
232
|
}
|
|
238
233
|
// Load plugins based on configuration
|
|
239
234
|
if (!this._config.lazyLoading) {
|
|
@@ -21,7 +21,7 @@ export declare function clearProjectRootCache(): void;
|
|
|
21
21
|
*
|
|
22
22
|
* Priority order:
|
|
23
23
|
* 1. AQE_PROJECT_ROOT environment variable (set by MCP config or init)
|
|
24
|
-
* 2.
|
|
24
|
+
* 2. Nearest .agentic-qe at or below the nearest .git boundary
|
|
25
25
|
* 3. Walk up looking for .git directory (git repo root)
|
|
26
26
|
* 4. Walk up looking for package.json WITHOUT node_modules sibling (monorepo root)
|
|
27
27
|
* 5. Fallback to current working directory
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* @module kernel/project-root
|
|
13
13
|
*/
|
|
14
14
|
import * as fs from 'fs';
|
|
15
|
+
import * as os from 'os';
|
|
15
16
|
import * as path from 'path';
|
|
16
17
|
/** Module-level cache for findProjectRoot result. */
|
|
17
18
|
let _cachedProjectRoot = null;
|
|
@@ -24,12 +25,17 @@ export function clearProjectRootCache() {
|
|
|
24
25
|
_cachedProjectRoot = null;
|
|
25
26
|
_cachedStartDir = null;
|
|
26
27
|
}
|
|
28
|
+
/** True when `dir` is `parent` or inside it. */
|
|
29
|
+
function isWithin(dir, parent) {
|
|
30
|
+
const rel = path.relative(parent, dir);
|
|
31
|
+
return rel === '' || (!rel.startsWith('..') && !path.isAbsolute(rel));
|
|
32
|
+
}
|
|
27
33
|
/**
|
|
28
34
|
* Find the project root by walking up the directory tree.
|
|
29
35
|
*
|
|
30
36
|
* Priority order:
|
|
31
37
|
* 1. AQE_PROJECT_ROOT environment variable (set by MCP config or init)
|
|
32
|
-
* 2.
|
|
38
|
+
* 2. Nearest .agentic-qe at or below the nearest .git boundary
|
|
33
39
|
* 3. Walk up looking for .git directory (git repo root)
|
|
34
40
|
* 4. Walk up looking for package.json WITHOUT node_modules sibling (monorepo root)
|
|
35
41
|
* 5. Fallback to current working directory
|
|
@@ -47,6 +53,17 @@ export function findProjectRoot(startDir = process.cwd()) {
|
|
|
47
53
|
return _cachedProjectRoot;
|
|
48
54
|
_cachedStartDir = dir;
|
|
49
55
|
const root = path.parse(dir).root;
|
|
56
|
+
// A store directly in $HOME is almost always a stray from an `aqe` run in
|
|
57
|
+
// the home directory. Outside any git repository there is no boundary to
|
|
58
|
+
// stop at, so never let it claim a descendant directory (#735/#516); an
|
|
59
|
+
// `aqe` run from $HOME itself still uses it, and AQE_PROJECT_ROOT overrides.
|
|
60
|
+
let home = null;
|
|
61
|
+
try {
|
|
62
|
+
home = path.resolve(os.homedir());
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
home = null;
|
|
66
|
+
}
|
|
50
67
|
let checkDir = dir;
|
|
51
68
|
let nearestAqeDir = null;
|
|
52
69
|
let lowestGitDir = null;
|
|
@@ -55,8 +72,12 @@ export function findProjectRoot(startDir = process.cwd()) {
|
|
|
55
72
|
// Issue #516: prefer the NEAREST (lowest) .agentic-qe, mirroring the
|
|
56
73
|
// .git logic below. Keeping the topmost match let an ancestor store
|
|
57
74
|
// (e.g. ~/.agentic-qe, created by any `aqe` run from $HOME) hijack
|
|
58
|
-
// every descendant project and fragment its learning into $HOME.
|
|
59
|
-
|
|
75
|
+
// every descendant project and fragment its learning into $HOME. Stop
|
|
76
|
+
// considering stores above the nearest git boundary, even when the repo
|
|
77
|
+
// has not been initialized with AQE yet.
|
|
78
|
+
const isHomeStoreAboveStart = checkDir === home && checkDir !== dir
|
|
79
|
+
&& !isWithin(dir, path.join(checkDir, '.agentic-qe'));
|
|
80
|
+
if (lowestGitDir === null && !isHomeStoreAboveStart && fs.existsSync(path.join(checkDir, '.agentic-qe'))) {
|
|
60
81
|
if (nearestAqeDir === null) {
|
|
61
82
|
nearestAqeDir = checkDir;
|
|
62
83
|
}
|
|
@@ -13,9 +13,10 @@
|
|
|
13
13
|
* We never throw out of these helpers under expected conditions; failure
|
|
14
14
|
* reasons are surfaced as thrown errors only for genuine I/O problems.
|
|
15
15
|
*/
|
|
16
|
-
import { join } from 'node:path';
|
|
16
|
+
import { join, resolve } from 'node:path';
|
|
17
17
|
import { existsSync, mkdirSync } from 'node:fs';
|
|
18
18
|
import { createRequire } from 'node:module';
|
|
19
|
+
import { findProjectRoot } from '../kernel/project-root.js';
|
|
19
20
|
// `require` is unavailable in pure ESM; createRequire gives us synchronous
|
|
20
21
|
// access to CommonJS modules like better-sqlite3 from the ESM build output.
|
|
21
22
|
const nodeRequire = createRequire(import.meta.url);
|
|
@@ -26,8 +27,8 @@ const nodeRequire = createRequire(import.meta.url);
|
|
|
26
27
|
function getMemoryDbPath() {
|
|
27
28
|
const env = process.env.AQE_MEMORY_PATH;
|
|
28
29
|
if (env && env.length > 0)
|
|
29
|
-
return env;
|
|
30
|
-
return join(
|
|
30
|
+
return env === ':memory:' ? env : resolve(findProjectRoot(), env);
|
|
31
|
+
return join(findProjectRoot(), '.agentic-qe', 'memory.db');
|
|
31
32
|
}
|
|
32
33
|
const NAMESPACE = '_system';
|
|
33
34
|
const KEY_PREFIX = 'embedder_identity:';
|
|
@@ -30,7 +30,7 @@ import { createVectorDeltaTracker, } from '../integrations/ruvector/vector-delta
|
|
|
30
30
|
import { createHopfieldMemory } from '../integrations/ruvector/hopfield-memory.js';
|
|
31
31
|
import { createHyperbolicPatternIndex, } from './hyperbolic-pattern-index.js';
|
|
32
32
|
import { PatternNullStore } from './pattern-null-store.js';
|
|
33
|
-
import { getActiveEmbeddingSpaceIdentity } from './real-embeddings.js';
|
|
33
|
+
import { ensureEndpointEmbeddingSpaceIdentity, getActiveEmbeddingSpaceIdentity } from './real-embeddings.js';
|
|
34
34
|
import { PatternMutationError } from './pattern-mutation-error.js';
|
|
35
35
|
// ============================================================================
|
|
36
36
|
// R1: HDC Fingerprint Singleton (lazy-initialized)
|
|
@@ -244,6 +244,10 @@ export class PatternStore {
|
|
|
244
244
|
*/
|
|
245
245
|
async initializeHNSWInternal() {
|
|
246
246
|
try {
|
|
247
|
+
// #754: resolve a configured endpoint's identity before binding HNSW.
|
|
248
|
+
if (!getActiveEmbeddingSpaceIdentity() && !this.config.embeddingSpaceId) {
|
|
249
|
+
await ensureEndpointEmbeddingSpaceIdentity();
|
|
250
|
+
}
|
|
247
251
|
this.hnswSpaceId = getActiveEmbeddingSpaceIdentity()?.spaceId ?? this.config.embeddingSpaceId ?? null;
|
|
248
252
|
if (!this.hnswSpaceId) {
|
|
249
253
|
throw new Error('VECTOR_SPACE_UNVERIFIED: cannot initialize HNSW without runtime provenance');
|
|
@@ -86,4 +86,12 @@ export declare function isUsingEndpoint(): boolean;
|
|
|
86
86
|
export declare function getEndpointIdentity(): EndpointIdentity | null;
|
|
87
87
|
/** Runtime-backed identity of the initialized embedding space. */
|
|
88
88
|
export declare function getActiveEmbeddingSpaceIdentity(): EmbeddingSpaceIdentity | null;
|
|
89
|
+
/**
|
|
90
|
+
* #754: resolve the configured endpoint's embedding-space identity before an
|
|
91
|
+
* index binder (RVF pattern store, brain.rvf dual writer, SQLite HNSW) checks
|
|
92
|
+
* its space manifest. The endpoint runtime otherwise initializes lazily on the
|
|
93
|
+
* first embed call — after the binder has already refused for the process.
|
|
94
|
+
* Returns null when no endpoint is configured, so binders stay fail-closed.
|
|
95
|
+
*/
|
|
96
|
+
export declare function ensureEndpointEmbeddingSpaceIdentity(): Promise<EmbeddingSpaceIdentity | null>;
|
|
89
97
|
//# sourceMappingURL=real-embeddings.d.ts.map
|
|
@@ -410,4 +410,20 @@ export function getEndpointIdentity() {
|
|
|
410
410
|
export function getActiveEmbeddingSpaceIdentity() {
|
|
411
411
|
return activeEmbeddingSpaceIdentity;
|
|
412
412
|
}
|
|
413
|
+
/**
|
|
414
|
+
* #754: resolve the configured endpoint's embedding-space identity before an
|
|
415
|
+
* index binder (RVF pattern store, brain.rvf dual writer, SQLite HNSW) checks
|
|
416
|
+
* its space manifest. The endpoint runtime otherwise initializes lazily on the
|
|
417
|
+
* first embed call — after the binder has already refused for the process.
|
|
418
|
+
* Returns null when no endpoint is configured, so binders stay fail-closed.
|
|
419
|
+
*/
|
|
420
|
+
export async function ensureEndpointEmbeddingSpaceIdentity() {
|
|
421
|
+
if (activeEmbeddingSpaceIdentity)
|
|
422
|
+
return activeEmbeddingSpaceIdentity;
|
|
423
|
+
const endpoint = process.env.AQE_EMBEDDER_ENDPOINT;
|
|
424
|
+
if (!endpoint)
|
|
425
|
+
return null;
|
|
426
|
+
await initializeModel({ endpoint, endpointToken: process.env.AQE_EMBEDDER_TOKEN });
|
|
427
|
+
return activeEmbeddingSpaceIdentity;
|
|
428
|
+
}
|
|
413
429
|
//# sourceMappingURL=real-embeddings.js.map
|
|
@@ -16,7 +16,7 @@ import { ok, err } from '../shared/types/index.js';
|
|
|
16
16
|
import { toErrorMessage } from '../shared/error-utils.js';
|
|
17
17
|
import { calculateQualityScore, validateQEPattern, mapQEDomainToAQE, PROMOTION_THRESHOLD, } from './qe-patterns.js';
|
|
18
18
|
import { DEFAULT_PATTERN_STORE_CONFIG } from './pattern-store.js';
|
|
19
|
-
import { getActiveEmbeddingSpaceIdentity } from './real-embeddings.js';
|
|
19
|
+
import { ensureEndpointEmbeddingSpaceIdentity, getActiveEmbeddingSpaceIdentity } from './real-embeddings.js';
|
|
20
20
|
import { verifyOrCreateEmbeddingSpaceManifest } from './embedding-space.js';
|
|
21
21
|
import { PatternMutationError } from './pattern-mutation-error.js';
|
|
22
22
|
// ============================================================================
|
|
@@ -75,6 +75,12 @@ export class RvfPatternStore {
|
|
|
75
75
|
return;
|
|
76
76
|
}
|
|
77
77
|
try {
|
|
78
|
+
// The endpoint runtime is lazy. Resolve its executable identity before
|
|
79
|
+
// binding a new RVF index; otherwise every fresh process sees null here
|
|
80
|
+
// and permanently disables RVF even though the endpoint is configured.
|
|
81
|
+
if (!this.embeddingSpaceId && !getActiveEmbeddingSpaceIdentity()) {
|
|
82
|
+
await ensureEndpointEmbeddingSpaceIdentity();
|
|
83
|
+
}
|
|
78
84
|
this.adapter = this.createAdapter(this.rvfPath, this.config.embeddingDimension);
|
|
79
85
|
const activeSpaceId = getActiveEmbeddingSpaceIdentity()?.spaceId ?? this.embeddingSpaceId ?? null;
|
|
80
86
|
verifyOrCreateEmbeddingSpaceManifest(this.rvfPath, activeSpaceId, this.adapter.status()?.totalVectors ?? 0);
|
|
@@ -90,9 +96,10 @@ export class RvfPatternStore {
|
|
|
90
96
|
this.adapter?.close();
|
|
91
97
|
}
|
|
92
98
|
catch { /* best effort */ }
|
|
93
|
-
console.error(`[RvfPatternStore] ERROR: RVF
|
|
99
|
+
console.error(`[RvfPatternStore] ERROR: RVF initialization failed — vector search is DISABLED. ` +
|
|
94
100
|
`Cause: ${this.rvfInitError}. ` +
|
|
95
|
-
`Fix:
|
|
101
|
+
`Fix: check the embedder endpoint and @ruvector/rvf-node binding, ` +
|
|
102
|
+
`or set RUVECTOR_USE_RVF_PATTERN_STORE=false to use SQLite HNSW.`);
|
|
96
103
|
this.adapter = null;
|
|
97
104
|
this.initialized = true; // mark initialized to prevent retry loops
|
|
98
105
|
}
|