agentic-qe 3.15.1 → 3.15.3
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/helpers/brain-checkpoint.cjs +46 -6
- package/.claude/hooks/aqe-hook.cjs +280 -51
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +129 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/adapters/ag-ui/state-delta-cache.js +14 -5
- package/dist/adapters/trajectory-adapter.js +3 -1
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-WQSFQES5.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-XUHRLKWP.js → agent-booster-wasm-CYG3PKHH.js} +2 -2
- package/dist/cli/chunks/{agent-handler-CL7MJP5W.js → agent-handler-WTFYFZKL.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-F7RV72FC.js → agent-memory-branch-G6WE3ZXU.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-TDHBBADE.js +2 -0
- package/dist/cli/chunks/{arena-GRRNK7IN.js → arena-S72QW44C.js} +4 -4
- package/dist/cli/chunks/{arena-LHLVOQHW.js → arena-ZFXQEVUQ.js} +2 -2
- package/dist/cli/chunks/{audit-EOP2K34L.js → audit-KPYIEQJ3.js} +3 -3
- package/dist/cli/chunks/base-CZSB27VO.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-YERQ5DOL.js → better-sqlite3-L2M3TI5D.js} +2 -2
- package/dist/cli/chunks/{brain-handler-FBXBM5XE.js → brain-handler-FHKLQTB4.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-NWO6LNHB.js → branch-enumerator-3BSHOPOK.js} +2 -2
- package/dist/cli/chunks/{browser-EDCG7TNF.js → browser-JUIJPL6Y.js} +2 -2
- package/dist/cli/chunks/browser-workflow-AEMIS6PA.js +2 -0
- package/dist/cli/chunks/{chunk-ARWSPV2C.js → chunk-2GJJGO5D.js} +2 -2
- package/dist/cli/chunks/{chunk-SUFXUM6W.js → chunk-2M75CW5Q.js} +2 -2
- package/dist/cli/chunks/{chunk-ZX4I7IND.js → chunk-2MEWIXW4.js} +2 -2
- package/dist/cli/chunks/{chunk-VEKRK3R6.js → chunk-2TBHPYOU.js} +2 -2
- package/dist/cli/chunks/{chunk-OH4SKOAM.js → chunk-34Y4CIHD.js} +2 -2
- package/dist/cli/chunks/{chunk-JY6HWYC4.js → chunk-35VDOH4Y.js} +1 -1
- package/dist/cli/chunks/{chunk-NK2BR4QZ.js → chunk-366IBPZB.js} +2 -2
- package/dist/cli/chunks/{chunk-PZBYZV5M.js → chunk-3MNKYCLH.js} +1 -1
- package/dist/cli/chunks/chunk-3UUMGWHW.js +316 -0
- package/dist/cli/chunks/{chunk-REGPCPEJ.js → chunk-3Y4GX5FL.js} +2 -2
- package/dist/cli/chunks/{chunk-PGARKOE6.js → chunk-3ZTBV6M3.js} +1 -1
- package/dist/cli/chunks/{chunk-GUHJWBPN.js → chunk-4IYHYHTG.js} +2 -2
- package/dist/cli/chunks/{chunk-J2WALRWR.js → chunk-4JVVVKAX.js} +6 -6
- package/dist/cli/chunks/chunk-4N7YXTV3.js +4 -0
- package/dist/cli/chunks/{chunk-YM3GAJMN.js → chunk-4TM5K6EZ.js} +2 -2
- package/dist/cli/chunks/{chunk-IUGY6Z4Q.js → chunk-5LEUEWJY.js} +2 -2
- package/dist/cli/chunks/{chunk-Q7ONRZBD.js → chunk-5QUOM357.js} +1 -1
- package/dist/cli/chunks/{chunk-5B5TA3X4.js → chunk-5WOBFN2T.js} +2 -2
- package/dist/cli/chunks/{chunk-JEXPSOT2.js → chunk-6AKJ73X3.js} +2 -2
- package/dist/cli/chunks/{chunk-K4NB3MYN.js → chunk-6EQDA4EC.js} +2 -2
- package/dist/cli/chunks/{chunk-HU4QGCIJ.js → chunk-6TYTBQPV.js} +2 -2
- package/dist/cli/chunks/{chunk-RXKOZ6VS.js → chunk-6V6XVGCL.js} +3 -3
- package/dist/cli/chunks/{chunk-4KHSWNFW.js → chunk-6W6GZHQA.js} +6 -6
- package/dist/cli/chunks/{chunk-WTFVYFRZ.js → chunk-7IJVCDDC.js} +1 -1
- package/dist/cli/chunks/{chunk-T5K6ZCA6.js → chunk-7PDC4SKR.js} +1 -1
- package/dist/cli/chunks/{chunk-NF6SLLE6.js → chunk-7SWHW5AC.js} +20 -20
- package/dist/cli/chunks/{chunk-UE33MZOC.js → chunk-7TW5UGDP.js} +2 -2
- package/dist/cli/chunks/{chunk-4AEFJEZH.js → chunk-7UUSV2SK.js} +1 -1
- package/dist/cli/chunks/{chunk-WONHFDWF.js → chunk-A3IQU2ND.js} +2 -2
- package/dist/cli/chunks/{chunk-ALLABEUK.js → chunk-A5H7TF7C.js} +2 -2
- package/dist/cli/chunks/{chunk-C3BW3Q27.js → chunk-A6PII4R4.js} +1 -1
- package/dist/cli/chunks/{chunk-ZE6WJDXM.js → chunk-AEL4XJGJ.js} +2 -2
- package/dist/cli/chunks/{chunk-5QEXDXHQ.js → chunk-AOZJ6UUZ.js} +2 -2
- package/dist/cli/chunks/chunk-APV5UWTU.js +15 -0
- package/dist/cli/chunks/{chunk-YWX7KLNG.js → chunk-AQTQ24SK.js} +3 -3
- package/dist/cli/chunks/{chunk-PBWR2SKH.js → chunk-AS54N3H7.js} +2 -2
- package/dist/cli/chunks/chunk-ASUXS4N4.js +2 -0
- package/dist/cli/chunks/{chunk-JSHASVQ2.js → chunk-B23ROYST.js} +3 -3
- package/dist/cli/chunks/{chunk-NTLWHLAY.js → chunk-BDKQSEEY.js} +1 -1
- package/dist/cli/chunks/{chunk-VLL7ASGH.js → chunk-BO43BGHX.js} +2 -2
- package/dist/cli/chunks/{chunk-KP6LNSDO.js → chunk-CF3BPD2R.js} +161 -159
- package/dist/cli/chunks/{chunk-KTBA2HJC.js → chunk-CFXROOIU.js} +2 -2
- package/dist/cli/chunks/{chunk-SRXXPZVT.js → chunk-CNQUU6CF.js} +2 -2
- package/dist/cli/chunks/{chunk-OKS25EGZ.js → chunk-D5V6C3XG.js} +3 -3
- package/dist/cli/chunks/{chunk-ADEYBXAS.js → chunk-D6PUDLJ4.js} +2 -2
- package/dist/cli/chunks/{chunk-D3LREV4P.js → chunk-DE3QNPTG.js} +1 -1
- package/dist/cli/chunks/{chunk-TJCMG3QE.js → chunk-DH5NWHH2.js} +2 -2
- package/dist/cli/chunks/{chunk-GDSYJHVB.js → chunk-DLA3EHKJ.js} +1 -1
- package/dist/cli/chunks/{chunk-VGYLV6VD.js → chunk-DWG4TN6A.js} +1 -1
- package/dist/cli/chunks/{chunk-4KSCJ462.js → chunk-EBIMVSPH.js} +4 -4
- package/dist/cli/chunks/{chunk-4XEZ562Q.js → chunk-ED5HUPUR.js} +2 -2
- package/dist/cli/chunks/{chunk-CHX65QXY.js → chunk-EQGT4VLC.js} +1 -1
- package/dist/cli/chunks/{chunk-WFDDWRWY.js → chunk-F5BREV2Q.js} +8 -8
- package/dist/cli/chunks/{chunk-7FGSX4UD.js → chunk-FPFGN2Z5.js} +2 -2
- package/dist/cli/chunks/{chunk-3TZRJ5QD.js → chunk-FTUNC4EI.js} +3 -3
- package/dist/cli/chunks/chunk-FXTZXZCU.js +54 -0
- package/dist/cli/chunks/{chunk-DREYYJ7A.js → chunk-GJB3LPCS.js} +2 -2
- package/dist/cli/chunks/{chunk-4P7CGSRL.js → chunk-GPZH6OPP.js} +4 -4
- package/dist/cli/chunks/{chunk-NWNZMXNO.js → chunk-HR7RL4PB.js} +2 -2
- package/dist/cli/chunks/{chunk-NGDRSF6Y.js → chunk-HSR53REE.js} +2 -2
- package/dist/cli/chunks/{chunk-UOHZRR5C.js → chunk-HU474NXP.js} +1 -1
- package/dist/cli/chunks/{chunk-LI7N45GM.js → chunk-HV3ZVUHO.js} +1 -1
- package/dist/cli/chunks/{chunk-WPG6SW7C.js → chunk-HVIFA73X.js} +2 -2
- package/dist/cli/chunks/{chunk-6U6JQS4Z.js → chunk-HW4V7BVV.js} +2 -2
- package/dist/cli/chunks/{chunk-X6W35QXO.js → chunk-I5VJ3FBC.js} +2 -2
- package/dist/cli/chunks/{chunk-YTMWPGVR.js → chunk-IARE5VGI.js} +1 -1
- package/dist/cli/chunks/chunk-INVDDFJC.js +2 -0
- package/dist/cli/chunks/{chunk-RDI3W4H6.js → chunk-JJBTM4JO.js} +2 -2
- package/dist/cli/chunks/chunk-JVQK6NGI.js +14 -0
- package/dist/cli/chunks/{chunk-CFZJEOCD.js → chunk-K65X6CQA.js} +1 -1
- package/dist/cli/chunks/{chunk-6DF6X3SZ.js → chunk-KCBCYF7M.js} +2 -2
- package/dist/cli/chunks/{chunk-QOOADAT7.js → chunk-KGS6H2HB.js} +2 -2
- package/dist/cli/chunks/{chunk-TCJ65NPY.js → chunk-L6OSEWOS.js} +1 -1
- package/dist/cli/chunks/{chunk-BW7S6LIJ.js → chunk-LEB6O2IN.js} +2 -2
- package/dist/cli/chunks/{chunk-WHBDSJUE.js → chunk-LPZAB3N2.js} +3 -3
- package/dist/cli/chunks/{chunk-JYF3QF4C.js → chunk-M3ACHBC7.js} +2 -2
- package/dist/cli/chunks/{chunk-WQZR6DS6.js → chunk-M3ONCPSU.js} +2 -2
- package/dist/cli/chunks/{chunk-7B3XVVYP.js → chunk-MUSYQF53.js} +2 -2
- package/dist/cli/chunks/{chunk-6AVVC7Y3.js → chunk-MZDUBFLP.js} +1 -1
- package/dist/cli/chunks/{chunk-53HWWWFZ.js → chunk-NT6FYFJA.js} +2 -2
- package/dist/cli/chunks/{chunk-6WW6A6JM.js → chunk-O66D4NEJ.js} +2 -2
- package/dist/cli/chunks/{chunk-3NOSMJS4.js → chunk-OGARNKLS.js} +2 -2
- package/dist/cli/chunks/{chunk-KHVWIUAF.js → chunk-OKNMZLGB.js} +2 -2
- package/dist/cli/chunks/{chunk-XCVD57GW.js → chunk-OMHISPPF.js} +1 -1
- package/dist/cli/chunks/{chunk-N5OSH5JO.js → chunk-OT6SOPAL.js} +2 -2
- package/dist/cli/chunks/{chunk-ZZV6GR46.js → chunk-OTTTHNIT.js} +1 -1
- package/dist/cli/chunks/{chunk-XZGRHJGC.js → chunk-P36IODAM.js} +2 -2
- package/dist/cli/chunks/{chunk-JHKMUY4W.js → chunk-P6EGRAQG.js} +2 -2
- package/dist/cli/chunks/{chunk-5JJWVFUV.js → chunk-PBUWNMZ2.js} +1 -1
- package/dist/cli/chunks/{chunk-LQI5GVH7.js → chunk-POTVF6BY.js} +1 -1
- package/dist/cli/chunks/{chunk-N4HQ6FE2.js → chunk-POVP6O6K.js} +1 -1
- package/dist/cli/chunks/{chunk-P24ZBDZY.js → chunk-PPA53NJB.js} +2 -2
- package/dist/cli/chunks/{chunk-OABFAREV.js → chunk-PUPEKA2J.js} +2 -2
- package/dist/cli/chunks/{chunk-27S47AYK.js → chunk-QDQLL2QB.js} +2 -2
- package/dist/cli/chunks/{chunk-MEOAKMKF.js → chunk-QSVNVDA5.js} +1 -1
- package/dist/cli/chunks/{chunk-66HKJJFH.js → chunk-QUXX2DP7.js} +2 -2
- package/dist/cli/chunks/{chunk-TLUMENRZ.js → chunk-QVNMTMDJ.js} +2 -2
- package/dist/cli/chunks/{chunk-LDDIYDIP.js → chunk-QZBFMXO5.js} +54 -54
- package/dist/cli/chunks/{chunk-4THIRDBL.js → chunk-RDTR43YN.js} +2 -2
- package/dist/cli/chunks/{chunk-6MGJMGAD.js → chunk-RGD2CG23.js} +2 -2
- package/dist/cli/chunks/{chunk-V5RP2SU3.js → chunk-RQUSJEON.js} +2 -2
- package/dist/cli/chunks/{chunk-WYE3ICSL.js → chunk-RRSZ27A7.js} +2 -2
- package/dist/cli/chunks/{chunk-GUKBN3BS.js → chunk-RWLOERKK.js} +2 -2
- package/dist/cli/chunks/{chunk-5TEDVUEB.js → chunk-RWQDRPN5.js} +2 -2
- package/dist/cli/chunks/{chunk-2IPBCXTT.js → chunk-S7D4GD7H.js} +2 -2
- package/dist/cli/chunks/{chunk-FTHXV7N7.js → chunk-SKHP5WUP.js} +2 -2
- package/dist/cli/chunks/{chunk-QVTV47TM.js → chunk-SP2JO53K.js} +2 -2
- package/dist/cli/chunks/{chunk-UTFNHITI.js → chunk-SRDECRTL.js} +2 -2
- package/dist/cli/chunks/{chunk-HVAYG54D.js → chunk-TBVPNN65.js} +2 -2
- package/dist/cli/chunks/{chunk-JQVECGYL.js → chunk-U5AVZ3T2.js} +1 -1
- package/dist/cli/chunks/{chunk-EQ3BJS37.js → chunk-UCSGZVJX.js} +1 -1
- package/dist/cli/chunks/{chunk-5C4UYXQL.js → chunk-UGNTLSBL.js} +2 -2
- package/dist/cli/chunks/{chunk-W5NHBYYS.js → chunk-UTALYUMW.js} +2 -2
- package/dist/cli/chunks/{chunk-35XRY6ZW.js → chunk-UZDTRCVU.js} +9 -9
- package/dist/cli/chunks/{chunk-AVOYMVD6.js → chunk-V5NYGDSX.js} +2 -2
- package/dist/cli/chunks/{chunk-FQYXPSWD.js → chunk-VGN46ZT4.js} +2 -2
- package/dist/cli/chunks/{chunk-QMHWJBD3.js → chunk-VHBZADYK.js} +2 -2
- package/dist/cli/chunks/{chunk-54JYUOSR.js → chunk-VOKIUF7I.js} +1 -1
- package/dist/cli/chunks/{chunk-PDLVO3ZR.js → chunk-VRT736E3.js} +2 -2
- package/dist/cli/chunks/{chunk-DV7I6CRH.js → chunk-VUBLJBHQ.js} +2 -2
- package/dist/cli/chunks/{chunk-FRGNM6SW.js → chunk-VX7CQUO7.js} +2 -2
- package/dist/cli/chunks/{chunk-YDM2DPUU.js → chunk-W7EHNX3Y.js} +2 -2
- package/dist/cli/chunks/{chunk-W5HQQTVH.js → chunk-WI7I6LMM.js} +1 -1
- package/dist/cli/chunks/{chunk-46DUU44C.js → chunk-WLOHTLHO.js} +2 -2
- package/dist/cli/chunks/{chunk-W6K77PQR.js → chunk-WQZBKLAG.js} +1 -1
- package/dist/cli/chunks/{chunk-UGUZFUQG.js → chunk-WSND64RL.js} +2 -2
- package/dist/cli/chunks/{chunk-PNK5KHSI.js → chunk-WSUYEVSY.js} +1 -1
- package/dist/cli/chunks/{chunk-FIIHSEXP.js → chunk-WTMLRMKW.js} +2 -2
- package/dist/cli/chunks/{chunk-OPBPFNBO.js → chunk-WW4RJ6BH.js} +2 -2
- package/dist/cli/chunks/{chunk-KBK4GBJQ.js → chunk-X335K4SU.js} +2 -2
- package/dist/cli/chunks/{chunk-NS4RIZ4F.js → chunk-X33LID2T.js} +1 -1
- package/dist/cli/chunks/{chunk-L5GEWKR3.js → chunk-XTGVGZ4J.js} +3 -3
- package/dist/cli/chunks/{chunk-CTLHNFPM.js → chunk-XV2TIODR.js} +1 -1
- package/dist/cli/chunks/{chunk-GAKVCN3C.js → chunk-XXW4KFBB.js} +1 -1
- package/dist/cli/chunks/{chunk-CTK7NMSJ.js → chunk-YCGU2LI7.js} +2 -2
- package/dist/cli/chunks/chunk-YGEC3PSD.js +2 -0
- package/dist/cli/chunks/{chunk-ARGMYSDY.js → chunk-YGKU2QRC.js} +1 -1
- package/dist/cli/chunks/{chunk-6Q7PWKWV.js → chunk-YHZGFWJE.js} +2 -2
- package/dist/cli/chunks/{chunk-V3ISBQ5Q.js → chunk-YJH7UFA2.js} +2 -2
- package/dist/cli/chunks/{chunk-A5LOELVV.js → chunk-YQ3ZW47V.js} +2 -2
- package/dist/cli/chunks/{chunk-25IWHVMW.js → chunk-YTRGMILO.js} +2 -2
- package/dist/cli/chunks/chunk-YW4GM36K.js +2 -0
- package/dist/cli/chunks/{chunk-JW2HNT3J.js → chunk-Z7JPWXW2.js} +2 -2
- package/dist/cli/chunks/{chunk-PZDI7WQ3.js → chunk-Z7UGEQ4G.js} +1 -1
- package/dist/cli/chunks/{chunk-TBCQWD5A.js → chunk-ZATQLTYL.js} +1 -1
- package/dist/cli/chunks/{chunk-DKWB4ERY.js → chunk-ZI6NJEBY.js} +1 -1
- package/dist/cli/chunks/{chunk-B3DWOR5R.js → chunk-ZJW4HRUA.js} +1 -1
- package/dist/cli/chunks/{chunk-X4PGLEPQ.js → chunk-ZL2GYU7H.js} +2 -2
- package/dist/cli/chunks/{ci-K7DG4GSO.js → ci-JPISJ25U.js} +3 -3
- package/dist/cli/chunks/{ci-output-EBSUG6HP.js → ci-output-DPHTFIGX.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-P6N6YIRZ.js → circuit-breaker-PQ65VU2M.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-P6EZPQZT.js → claude-flow-setup-GKHVO7AD.js} +2 -2
- package/dist/cli/chunks/client-BS7I637W.js +2 -0
- package/dist/cli/chunks/{cline-installer-EVZZ3EFY.js → cline-installer-HWMQZJ64.js} +2 -2
- package/dist/cli/chunks/{code-3WLBG2XK.js → code-OTY7BF3D.js} +3 -3
- package/dist/cli/chunks/{code-index-extractor-ZP6D4WL2.js → code-index-extractor-FG3TMHHR.js} +2 -2
- package/dist/cli/chunks/{codex-installer-XAUI4SB7.js → codex-installer-63JARKKS.js} +2 -2
- package/dist/cli/chunks/{completions-RHFNDDG3.js → completions-4ZHONFML.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-DCW7Q3OR.js → complexity-analyzer-FYHTJW5Y.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-53SQA5T6.js → continuedev-installer-ZAWDSUR3.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-SXXMFB6T.js → copilot-installer-5QK565JX.js} +2 -2
- package/dist/cli/chunks/core-handlers-UG7RMTK5.js +2 -0
- package/dist/cli/chunks/cost-tracker-AWWMPPBJ.js +2 -0
- package/dist/cli/chunks/{coverage-AWCS2SP7.js → coverage-SMFQEGKE.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-NX7F6TOF.js +2 -0
- package/dist/cli/chunks/{cursor-installer-4TYF5V5J.js → cursor-installer-3BL7JACV.js} +2 -2
- package/dist/cli/chunks/{daemon-CTZXGN5V.js → daemon-OJ624POF.js} +4 -4
- package/dist/cli/chunks/{daemon-OOY4H6RJ.js → daemon-R6ULBHHF.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-3WG24Q33.js → dag-attention-scheduler-J6I3LTMY.js} +2 -2
- package/dist/cli/chunks/{detect-O7MUZ6NX.js → detect-5Q5W33UR.js} +2 -2
- package/dist/cli/chunks/{dist-node-H4XI7BAF.js → dist-node-GJNW56NA.js} +2 -2
- package/dist/cli/chunks/{domain-handler-FU4WZ23B.js → domain-handler-IZQY2G44.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-XK26KYNJ.js → domain-plugins-PIGO3KI2.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-6B5NOVH6.js → domain-transfer-NU3B4FQG.js} +2 -2
- package/dist/cli/chunks/dream-GYEH57FW.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-XNZXPZNL.js → embed-and-insert-pattern-5QDDRPWV.js} +2 -2
- package/dist/cli/chunks/{eval-J3Q5TTI7.js → eval-TB5HOAUY.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-COKIGMXW.js → experience-capture-middleware-SIYVLKDE.js} +3 -3
- package/dist/cli/chunks/{fast-paths-IHWPJI6I.js → fast-paths-T7QELS6D.js} +2 -2
- package/dist/cli/chunks/{feature-flags-WUXFWZLR.js → feature-flags-T3CNNYMJ.js} +2 -2
- package/dist/cli/chunks/{feature-flags-G7ONDNTT.js → feature-flags-TNZ7ZAJV.js} +2 -2
- package/dist/cli/chunks/{file-discovery-JN3YMBOJ.js → file-discovery-M45P2ZCY.js} +2 -2
- package/dist/cli/chunks/{fleet-OUHUZJE4.js → fleet-DSBZPHBZ.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-PRH55ZT6.js → gnn-wrapper-EHODCF32.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-6YF35AQS.js → heartbeat-handler-V5DBVF7V.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-4TJ3T7LR.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-PHFK4EAP.js +2 -0
- package/dist/cli/chunks/hnsw-index-434XDDBH.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-7PAFSTJO.js → hnsw-legacy-bridge-IYKDYA2F.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-UETDZNNN.js → hnswlib-node-DKG4LW3X.js} +2 -2
- package/dist/cli/chunks/{hooks-QQNUKQAS.js → hooks-VKNMAILY.js} +10 -10
- package/dist/cli/chunks/hybrid-backend-DYVJQENQ.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-5GDGE3ET.js → hypergraph-engine-AXZVP7A7.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-C3F2OJYA.js → hypergraph-handler-6EO6JN4Z.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-CBAST6M2.js +2 -0
- package/dist/cli/chunks/init-handler-N3NG3RHN.js +86 -0
- package/dist/cli/chunks/init-wizard-DWIJW7HY.js +2 -0
- package/dist/cli/chunks/kernel-AQGCS4X2.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-VLJENC76.js → kilocode-installer-JICGAHLM.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-UYPYM6LA.js → kiro-installer-VYBFP6ZH.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-2ICXFUUV.js +2 -0
- package/dist/cli/chunks/{learning-SFIWIG6Z.js → learning-3BHEZEPK.js} +3 -3
- package/dist/cli/chunks/{llm-router-V633KAS5.js → llm-router-GPTEZCUN.js} +4 -4
- package/dist/cli/chunks/llm-router-service-C47RGTH6.js +2 -0
- package/dist/cli/chunks/{load-UWZV4JRA.js → load-W5BIRPU4.js} +2 -2
- package/dist/cli/chunks/load-test-LRDAW3N6.js +2 -0
- package/dist/cli/chunks/{mcp-XVFHUKCP.js → mcp-EBV4DZPG.js} +2 -2
- package/dist/cli/chunks/{memory-BQ5652VK.js → memory-7F6YYKNL.js} +5 -5
- package/dist/cli/chunks/memory-backend-UFBAYPQ6.js +2 -0
- package/dist/cli/chunks/memory-handlers-OGLJHAAJ.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-X6AQ7VVR.js → multi-model-executor-3ZIA2YOL.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-N3V2Z4EF.js → opencode-installer-2XRZUTLR.js} +2 -2
- package/dist/cli/chunks/{orchestrator-KNEKS4F7.js → orchestrator-VSZVJUJW.js} +87 -28
- package/dist/cli/chunks/pattern-null-store-27FCITT3.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-MZIM6XWU.js → pattern-usage-recorder-I2IGVHRL.js} +2 -2
- package/dist/cli/chunks/{pipeline-LNLBKSXR.js → pipeline-5G3O6WBY.js} +2 -2
- package/dist/cli/chunks/{platform-OMUDXHD3.js → platform-6GUFDIA3.js} +2 -2
- package/dist/cli/chunks/{plugin-HGY6KKZW.js → plugin-GYXE4CIC.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-LZBHLQYN.js → prime-radiant-advanced-wasm-THX6JLGZ.js} +2 -2
- package/dist/cli/chunks/{project-root-VPSCDBMD.js → project-root-QJRBKZQU.js} +2 -2
- package/dist/cli/chunks/protocol-executor-XWXXTMEW.js +2 -0
- package/dist/cli/chunks/{protocol-handler-LZXT3TXU.js → protocol-handler-B54LRU26.js} +2 -2
- package/dist/cli/chunks/{prove-I4VKQEYQ.js → prove-PCY2WQOD.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-3RMYXENE.js +2 -0
- package/dist/cli/chunks/{quality-VVAWK2DD.js → quality-LPVDZC7U.js} +2 -2
- package/dist/cli/chunks/{quality-gate-RGXLWYT6.js → quality-gate-L3KXL6WE.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-AS6DZ7UJ.js +2 -0
- package/dist/cli/chunks/{real-embeddings-WM66PMQ6.js → real-embeddings-N3H523PJ.js} +2 -2
- package/dist/cli/chunks/{ref-validation-ZIWJNI6M.js → ref-validation-6BKDPHZ7.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-QYSI3STC.js → roocode-installer-NSGGTWXE.js} +2 -2
- package/dist/cli/chunks/router-OVNLNGHO.js +2 -0
- package/dist/cli/chunks/routing-feedback-TBOWEB6H.js +2 -0
- package/dist/cli/chunks/{routing-handler-BID3EOLE.js → routing-handler-SRQNUBG3.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-DXIFMF4W.js → ruvector-commands-2IGULGDE.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-YJYRCYGT.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-VMRQ2SFO.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-EV5E6SAO.js → rvf-migration-coordinator-ZD6WK5CK.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-B75L3ALW.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-IT6DCCJK.js → rvf-store-integrity-QULKUBBI.js} +2 -2
- package/dist/cli/chunks/safe-db-CRQHMCV6.js +2 -0
- package/dist/cli/chunks/schedule-L3DKJRXU.js +2 -0
- package/dist/cli/chunks/scheduler-VRHYUGY5.js +2 -0
- package/dist/cli/chunks/{security-AAFAEATQ.js → security-JW4EBARW.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-QIHSYHAF.js → shared-rvf-adapter-VQ7NJTGY.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-V7OZ6TBR.js → shared-rvf-dual-writer-SKTS52HK.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-JVAZETTL.js +2 -0
- package/dist/cli/chunks/{standalone-memory-ALZI6VPX.js → standalone-memory-3N4YJCSY.js} +2 -2
- package/dist/cli/chunks/{status-handler-DED5A3OW.js → status-handler-5BQ2IIDG.js} +2 -2
- package/dist/cli/chunks/{structural-health-CB7L3NWH.js → structural-health-WGYR2RJB.js} +2 -2
- package/dist/cli/chunks/{sync-QNPGETIO.js → sync-DLKSXTIR.js} +2 -2
- package/dist/cli/chunks/sync-R5OKUBTQ.js +2 -0
- package/dist/cli/chunks/{task-handler-CGHXYFIF.js → task-handler-Z5KNTSUX.js} +2 -2
- package/dist/cli/chunks/{task-handlers-A6BGQJIB.js → task-handlers-RZFMYFSC.js} +3 -3
- package/dist/cli/chunks/test-LHWKZJRN.js +34 -0
- package/dist/cli/chunks/test-scheduling-EN7WXUMS.js +15 -0
- package/dist/cli/chunks/token-bootstrap-4V3OO4EC.js +2 -0
- package/dist/cli/chunks/{token-usage-25BRFKJ5.js → token-usage-PFC2BYBS.js} +2 -2
- package/dist/cli/chunks/{transformers-TBVVSZMF.js → transformers-VZCC4SHC.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-N7KCOQT4.js → tree-sitter-wasm-parser-ZYDQXGKN.js} +2 -2
- package/dist/cli/chunks/{types-TFHWJGRK.js → types-I6AWHZZQ.js} +2 -2
- package/dist/cli/chunks/unified-memory-WOOCCIUM.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-PDDHFLUB.js +2 -0
- package/dist/cli/chunks/unified-persistence-6ETD3JSC.js +2 -0
- package/dist/cli/chunks/{upgrade-4VWQU7RD.js → upgrade-T7SG75PA.js} +2 -2
- package/dist/cli/chunks/{validate-FF7WVXMP.js → validate-YLYEHTY3.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-NRLH4EDC.js → validate-swarm-VTLTRUE3.js} +2 -2
- package/dist/cli/chunks/visual-security-O4OT2YPY.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-VVU3LULW.js → web-tree-sitter-JUM7ZY5M.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-Q2ZNWG2D.js → windsurf-installer-4KS2466T.js} +2 -2
- package/dist/cli/chunks/witness-chain-67JHPDCN.js +2 -0
- package/dist/cli/chunks/{witness-chain-FP3D4PQL.js → witness-chain-E4X6TOCT.js} +2 -2
- package/dist/cli/chunks/witness-chain-repair-MB53OZO6.js +2 -0
- package/dist/cli/chunks/{witness-chain-verifier-LACGL6BK.js → witness-chain-verifier-LBWJHO7Y.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-GQZIB5ZE.js → witness-key-manager-5IHVMXHJ.js} +2 -2
- package/dist/cli/chunks/{workflow-JPA5Y7L6.js → workflow-XUQXIRNE.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-ZVFSNRYZ.js +2 -0
- package/dist/cli/chunks/wrappers-YVF5SQUN.js +2 -0
- package/dist/cli/commands/test.js +42 -9
- package/dist/cli/handlers/init-flags.d.ts +45 -0
- package/dist/cli/handlers/init-flags.js +35 -0
- package/dist/cli/handlers/init-handler.d.ts +6 -0
- package/dist/cli/handlers/init-handler.js +24 -10
- package/dist/cli/utils/generated-test-writer.d.ts +35 -0
- package/dist/cli/utils/generated-test-writer.js +44 -0
- package/dist/context/compiler.js +4 -1
- package/dist/coordination/consensus/providers/ollama-provider.js +16 -27
- package/dist/coordination/consensus/providers/openrouter-provider.js +13 -24
- package/dist/coordination/handlers/test-execution-handlers.js +4 -2
- package/dist/coordination/protocols/defect-investigation.js +4 -1
- package/dist/coordination/task-executor.js +4 -2
- package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +3 -3
- package/dist/domains/coverage-analysis/services/gap-detector.js +3 -1
- package/dist/domains/learning-optimization/services/learning-coordinator.js +4 -2
- package/dist/domains/test-execution/services/flaky-detector.js +8 -2
- package/dist/domains/test-execution/services/retry-handler.js +23 -20
- package/dist/domains/test-execution/services/test-executor.js +5 -2
- package/dist/domains/test-generation/services/test-generator.js +5 -2
- package/dist/governance/compliance-reporter.js +8 -7
- package/dist/governance/proof-envelope-integration.js +3 -1
- package/dist/init/claude-plugin-detection.d.ts +63 -0
- package/dist/init/claude-plugin-detection.js +118 -0
- package/dist/init/init-wizard-hooks.d.ts +6 -1
- package/dist/init/init-wizard-hooks.js +9 -1
- package/dist/init/init-wizard.d.ts +4 -0
- package/dist/init/init-wizard.js +3 -1
- package/dist/init/orchestrator.js +1 -0
- package/dist/init/phases/07-hooks.js +30 -4
- package/dist/init/phases/08-mcp.d.ts +7 -0
- package/dist/init/phases/08-mcp.js +22 -0
- package/dist/init/phases/10-workers.js +42 -6
- package/dist/init/phases/phase-interface.d.ts +5 -1
- package/dist/integrations/agentic-flow/onnx-embeddings/embedding-generator.d.ts +4 -1
- package/dist/integrations/agentic-flow/onnx-embeddings/embedding-generator.js +6 -2
- package/dist/integrations/browser/qe-dashboard/wasm-vector-store.js +2 -1
- package/dist/integrations/ruvector/coverage-router.d.ts +3 -1
- package/dist/integrations/ruvector/coverage-router.js +7 -6
- package/dist/integrations/ruvector/diff-risk-classifier.js +5 -4
- package/dist/integrations/ruvector/rvf-dual-writer.js +10 -1
- package/dist/integrations/vibium/runtime.js +2 -6
- package/dist/learning/dream/dream-engine.d.ts +5 -0
- package/dist/learning/dream/dream-engine.js +20 -3
- package/dist/learning/embedding-space.d.ts +18 -0
- package/dist/learning/embedding-space.js +33 -0
- package/dist/learning/rvf-pattern-store.js +19 -5
- package/dist/mcp/bundle.js +443 -441
- package/dist/mcp/handlers/domain-handler-configs.js +3 -1
- package/dist/mcp/handlers/handler-factory.js +7 -0
- package/dist/mcp/handlers/save-results-option.d.ts +97 -0
- package/dist/mcp/handlers/save-results-option.js +94 -0
- package/dist/mcp/protocol-server.js +23 -11
- package/dist/mcp/security/rate-limiter.d.ts +8 -1
- package/dist/mcp/security/rate-limiter.js +33 -4
- package/dist/mcp/services/session-resume.js +11 -0
- package/dist/mcp/services/session-store.d.ts +31 -2
- package/dist/mcp/services/session-store.js +84 -15
- package/dist/mcp/services/session-write-buffer.d.ts +55 -0
- package/dist/mcp/services/session-write-buffer.js +144 -0
- package/dist/mcp/types.d.ts +9 -0
- package/dist/memory/crdt/g-counter.js +10 -8
- package/dist/shared/embeddings/ollama-client.d.ts +1 -1
- package/dist/shared/embeddings/ollama-client.js +30 -31
- package/dist/shared/git/git-analyzer.d.ts +4 -1
- package/dist/shared/git/git-analyzer.js +9 -4
- package/dist/shared/llm/cost-tracker.js +8 -6
- package/dist/shared/llm/providers/azure-openai.js +5 -21
- package/dist/shared/llm/providers/bedrock.js +5 -21
- package/dist/shared/llm/providers/claude.js +5 -21
- package/dist/shared/llm/providers/cognitum.js +5 -17
- package/dist/shared/llm/providers/gemini.js +9 -23
- package/dist/shared/llm/providers/ollama.js +5 -21
- package/dist/shared/llm/providers/openai.js +5 -21
- package/dist/shared/llm/providers/openrouter.js +9 -23
- package/dist/shared/llm/providers/response-deadline.d.ts +3 -0
- package/dist/shared/llm/providers/response-deadline.js +100 -0
- package/dist/shared/llm/spend-ledger.js +3 -2
- package/dist/shared/metrics/code-metrics.d.ts +1 -0
- package/dist/shared/metrics/code-metrics.js +3 -44
- package/dist/shared/metrics/cognitive-complexity.d.ts +17 -0
- package/dist/shared/metrics/cognitive-complexity.js +108 -0
- package/dist/shared/npm-cli-invocation.d.ts +21 -0
- package/dist/shared/npm-cli-invocation.js +28 -0
- package/dist/shared/optional-module.js +24 -0
- package/dist/shared/test-runner-args.d.ts +42 -0
- package/dist/shared/test-runner-args.js +74 -0
- package/dist/shared/utils/safe-record.d.ts +18 -0
- package/dist/shared/utils/safe-record.js +28 -0
- package/dist/test-scheduling/executors/vitest-executor.js +23 -5
- package/dist/workers/quality-daemon/git-watcher.js +5 -0
- package/package.json +1 -1
- package/dist/adapters/ag-ui/json-patch-utils.d.ts +0 -136
- package/dist/adapters/ag-ui/json-patch-utils.js +0 -575
- package/dist/cli/chunks/adapter-Q6RPGMUE.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-JQPXIU7C.js +0 -2
- package/dist/cli/chunks/base-5SK64NXB.js +0 -2
- package/dist/cli/chunks/browser-workflow-WN7XNTCJ.js +0 -2
- package/dist/cli/chunks/chunk-2K3QFLX2.js +0 -2
- package/dist/cli/chunks/chunk-53C7TGC4.js +0 -4
- package/dist/cli/chunks/chunk-J4ULR4QR.js +0 -54
- package/dist/cli/chunks/chunk-R2ICZKQA.js +0 -2
- package/dist/cli/chunks/chunk-TR37Q7A6.js +0 -15
- package/dist/cli/chunks/chunk-XYZUBAR6.js +0 -316
- package/dist/cli/chunks/chunk-YDMPTCJ3.js +0 -14
- package/dist/cli/chunks/client-ZYH66YRI.js +0 -2
- package/dist/cli/chunks/core-handlers-XKSPHEHE.js +0 -2
- package/dist/cli/chunks/cost-tracker-CKLDQ5AZ.js +0 -2
- package/dist/cli/chunks/cross-domain-router-6VYNFQZA.js +0 -2
- package/dist/cli/chunks/dream-DRSSIHPP.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-FMICCNWK.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-4TGBNJEZ.js +0 -2
- package/dist/cli/chunks/hnsw-index-J4NSCPAZ.js +0 -2
- package/dist/cli/chunks/hybrid-backend-NKPA3QE7.js +0 -2
- package/dist/cli/chunks/impact-analyzer-MWX7XY7X.js +0 -2
- package/dist/cli/chunks/init-handler-C7ZBDAC5.js +0 -81
- package/dist/cli/chunks/init-wizard-EX5N5Q7X.js +0 -2
- package/dist/cli/chunks/kernel-EQLZDHDD.js +0 -2
- package/dist/cli/chunks/knowledge-graph-A3WSMQ6U.js +0 -2
- package/dist/cli/chunks/llm-router-service-A6XYWTL6.js +0 -2
- package/dist/cli/chunks/load-test-WF2PCXLI.js +0 -2
- package/dist/cli/chunks/memory-backend-BKGLI2RF.js +0 -2
- package/dist/cli/chunks/memory-handlers-PWI3G4P4.js +0 -2
- package/dist/cli/chunks/pattern-null-store-YTBLEH7D.js +0 -2
- package/dist/cli/chunks/protocol-executor-HFR2D54O.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-MYFBQUYV.js +0 -2
- package/dist/cli/chunks/queen-coordinator-CQQMOTIW.js +0 -2
- package/dist/cli/chunks/router-GKWLPA3N.js +0 -2
- package/dist/cli/chunks/routing-feedback-WA4D5JRF.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-H3ZXS5MA.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-J7MTCOQA.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-HXBY4VYI.js +0 -2
- package/dist/cli/chunks/safe-db-INVJ5LHR.js +0 -2
- package/dist/cli/chunks/schedule-XRIPPL52.js +0 -2
- package/dist/cli/chunks/scheduler-HBN3KPRW.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-6KNLT5Q2.js +0 -2
- package/dist/cli/chunks/sync-S6Z2U46T.js +0 -2
- package/dist/cli/chunks/test-IISTF5W6.js +0 -33
- package/dist/cli/chunks/test-scheduling-FKYX4OLF.js +0 -15
- package/dist/cli/chunks/token-bootstrap-OKO3JEKT.js +0 -2
- package/dist/cli/chunks/unified-memory-WVELSL6T.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-7P5MVKXD.js +0 -2
- package/dist/cli/chunks/unified-persistence-YLFCEWYY.js +0 -2
- package/dist/cli/chunks/visual-security-T5OM742H.js +0 -2
- package/dist/cli/chunks/witness-chain-D6X4OZP5.js +0 -2
- package/dist/cli/chunks/witness-chain-repair-3LG4BF7C.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-OORDDKT3.js +0 -2
- package/dist/cli/chunks/wrappers-2B5NHICD.js +0 -2
|
@@ -15,16 +15,22 @@ import { existsSync, readFileSync } from 'fs';
|
|
|
15
15
|
import { writeFileIfChanged } from '../idempotent-write.js';
|
|
16
16
|
import { join } from 'path';
|
|
17
17
|
import { safeJsonParse } from '../../shared/safe-json.js';
|
|
18
|
+
import { aqePluginMcpSkipMessage, detectAqeFleetPlugin, } from '../claude-plugin-detection.js';
|
|
18
19
|
import { BasePhase, } from './phase-interface.js';
|
|
19
20
|
/**
|
|
20
21
|
* MCP phase - configures MCP server
|
|
21
22
|
*/
|
|
22
23
|
export class MCPPhase extends BasePhase {
|
|
24
|
+
detectPlugin;
|
|
23
25
|
name = 'mcp';
|
|
24
26
|
description = 'Configure MCP server';
|
|
25
27
|
order = 80;
|
|
26
28
|
critical = false;
|
|
27
29
|
requiresPhases = ['configuration', 'database'];
|
|
30
|
+
constructor(detectPlugin = (root) => detectAqeFleetPlugin(root)) {
|
|
31
|
+
super();
|
|
32
|
+
this.detectPlugin = detectPlugin;
|
|
33
|
+
}
|
|
28
34
|
async run(context) {
|
|
29
35
|
const { projectRoot } = context;
|
|
30
36
|
// #532: --no-claude suppresses the Claude Code surface, including .mcp.json.
|
|
@@ -42,6 +48,22 @@ export class MCPPhase extends BasePhase {
|
|
|
42
48
|
serverName: '',
|
|
43
49
|
};
|
|
44
50
|
}
|
|
51
|
+
// #922: the agentic-qe-fleet Claude Code plugin bundles the AQE MCP
|
|
52
|
+
// server. Adding a project entry too registers AQE twice, so skip it
|
|
53
|
+
// unless --with-mcp forces it. An existing entry is left untouched (and
|
|
54
|
+
// reported as a duplicate, with how to remove it).
|
|
55
|
+
if (!context.options.withMcp) {
|
|
56
|
+
const plugin = this.detectPlugin(projectRoot);
|
|
57
|
+
if (plugin.enabled) {
|
|
58
|
+
context.services.log(aqePluginMcpSkipMessage(projectRoot));
|
|
59
|
+
return {
|
|
60
|
+
configured: false,
|
|
61
|
+
mcpPath: '',
|
|
62
|
+
serverName: '',
|
|
63
|
+
skippedForPlugin: plugin.pluginKey,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
45
67
|
// AQE MCP server configuration
|
|
46
68
|
// AQE_PROJECT_ROOT omitted — runtime discovery via findProjectRoot() is
|
|
47
69
|
// portable across machines, devcontainers, and CI (#321)
|
|
@@ -109,8 +109,9 @@ export class WorkersPhase extends BasePhase {
|
|
|
109
109
|
// Generated by aqe init
|
|
110
110
|
// Starts the MCP server with background workers enabled
|
|
111
111
|
|
|
112
|
-
const
|
|
113
|
-
const {
|
|
112
|
+
const fs = require('fs');
|
|
113
|
+
const { existsSync, readFileSync } = fs;
|
|
114
|
+
const { join, dirname } = require('path');
|
|
114
115
|
const { spawn } = require('child_process');
|
|
115
116
|
|
|
116
117
|
const projectRoot = join(__dirname, '..', '..');
|
|
@@ -118,8 +119,33 @@ const workersDir = join(projectRoot, '.agentic-qe', 'workers');
|
|
|
118
119
|
const pidFile = join(workersDir, 'daemon.pid');
|
|
119
120
|
const logFile = join(workersDir, 'daemon.log');
|
|
120
121
|
|
|
121
|
-
//
|
|
122
|
-
|
|
122
|
+
// A repository can commit .agentic-qe, workers/ or a file in it as a symlink.
|
|
123
|
+
// Never write through one (#970): real directories only, appends only to a
|
|
124
|
+
// regular file (lstat + O_NOFOLLOW where the platform has it), and the pid file
|
|
125
|
+
// is replaced by rename instead of being written in place.
|
|
126
|
+
function isRealDir(d) { try { const s = fs.lstatSync(d); return s.isDirectory() && !s.isSymbolicLink(); } catch { return false; } }
|
|
127
|
+
function isRegularOrAbsent(f) { try { return fs.lstatSync(f).isFile(); } catch (e) { return !!e && e.code === 'ENOENT'; } }
|
|
128
|
+
if (!isRealDir(join(projectRoot, '.agentic-qe')) || !isRealDir(workersDir)) {
|
|
129
|
+
console.error('AQE v3 Worker Daemon not started: .agentic-qe/workers must be a real directory, not a symlink');
|
|
130
|
+
process.exit(1);
|
|
131
|
+
}
|
|
132
|
+
function appendFileSync(file, data) {
|
|
133
|
+
if (!isRegularOrAbsent(file)) return;
|
|
134
|
+
const c = fs.constants;
|
|
135
|
+
let fd;
|
|
136
|
+
try {
|
|
137
|
+
fd = fs.openSync(file, c.O_APPEND | c.O_CREAT | c.O_WRONLY | (c.O_NOFOLLOW || 0), 0o644);
|
|
138
|
+
fs.writeSync(fd, data);
|
|
139
|
+
} catch {} finally { if (fd !== undefined) { try { fs.closeSync(fd); } catch {} } }
|
|
140
|
+
}
|
|
141
|
+
function writeFileSync(file, data) {
|
|
142
|
+
const tmp = file + '.' + process.pid + '.' + Date.now() + '.tmp';
|
|
143
|
+
try { fs.writeFileSync(tmp, data, { flag: 'wx' }); fs.renameSync(tmp, file); }
|
|
144
|
+
catch { try { fs.unlinkSync(tmp); } catch {} }
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Check if already running (only trust a regular pid file, never a link target)
|
|
148
|
+
if (existsSync(pidFile) && isRegularOrAbsent(pidFile)) {
|
|
123
149
|
const pid = parseInt(readFileSync(pidFile, 'utf-8').trim(), 10);
|
|
124
150
|
try { process.kill(pid, 0); console.log('Daemon already running (PID: ' + pid + ')'); process.exit(0); } catch {}
|
|
125
151
|
}
|
|
@@ -161,8 +187,18 @@ if (binCandidate && binCandidate.endsWith('bundle.js')) {
|
|
|
161
187
|
mcpCmd = binCandidate;
|
|
162
188
|
mcpArgs = [];
|
|
163
189
|
} else {
|
|
164
|
-
|
|
165
|
-
|
|
190
|
+
// Windows (#872): npx is npx.cmd, which spawn() refuses to start without a
|
|
191
|
+
// shell (EINVAL since CVE-2024-27980). Run npm's bundled npx CLI via node.
|
|
192
|
+
const npxCli = join(dirname(process.execPath), 'node_modules', 'npm', 'bin', 'npx-cli.js');
|
|
193
|
+
if (process.platform === 'win32' && !existsSync(npxCli)) {
|
|
194
|
+
appendFileSync(logFile, '[' + ts + '] ERROR: no AQE MCP bundle found and npx-cli.js is missing next to node.exe; install agentic-qe locally (npm install -D agentic-qe).\\n');
|
|
195
|
+
console.error('AQE v3 Worker Daemon not started: agentic-qe MCP bundle not found (see ' + logFile + ')');
|
|
196
|
+
process.exit(1);
|
|
197
|
+
}
|
|
198
|
+
mcpCmd = process.platform === 'win32' ? process.execPath : 'npx';
|
|
199
|
+
mcpArgs = process.platform === 'win32'
|
|
200
|
+
? [npxCli, '--yes', 'agentic-qe', 'mcp']
|
|
201
|
+
: ['--yes', 'agentic-qe', 'mcp'];
|
|
166
202
|
appendFileSync(logFile, '[' + ts + '] WARNING: using npx fallback — daemon.pid will point at the npx wrapper, not the MCP server. \`aqe daemon status\` may misreport liveness after the wrapper exits.\\n');
|
|
167
203
|
}
|
|
168
204
|
|
|
@@ -145,7 +145,11 @@ export interface InitOptions {
|
|
|
145
145
|
noClaude?: boolean;
|
|
146
146
|
/** Skip AQE's Claude Code status line and remove a previously AQE-owned one. */
|
|
147
147
|
noStatusLine?: boolean;
|
|
148
|
-
/**
|
|
148
|
+
/**
|
|
149
|
+
* Force the project `.mcp.json` `agentic-qe` entry even when the
|
|
150
|
+
* `agentic-qe-fleet` Claude Code plugin is enabled (that plugin already
|
|
151
|
+
* provides the AQE MCP server, so init skips the entry by default — #922).
|
|
152
|
+
*/
|
|
149
153
|
withMcp?: boolean;
|
|
150
154
|
/**
|
|
151
155
|
* Memory backend for this install. 'memory' => database-free: the SQLite
|
|
@@ -43,7 +43,10 @@ export declare class EmbeddingGenerator {
|
|
|
43
43
|
*/
|
|
44
44
|
updateConfig(config: Partial<EmbeddingConfig>): void;
|
|
45
45
|
/**
|
|
46
|
-
* Generate cache key from text and config
|
|
46
|
+
* Generate cache key from text and every config field that changes the vector.
|
|
47
|
+
* A JSON tuple keeps field boundaries intact when the model or text contains
|
|
48
|
+
* ':' (#914, as #863 did for the shared embedding cache). The cache is
|
|
49
|
+
* in-memory only, so no persisted keys need migrating.
|
|
47
50
|
*/
|
|
48
51
|
private getCacheKey;
|
|
49
52
|
/**
|
|
@@ -240,10 +240,14 @@ export class EmbeddingGenerator {
|
|
|
240
240
|
}
|
|
241
241
|
}
|
|
242
242
|
/**
|
|
243
|
-
* Generate cache key from text and config
|
|
243
|
+
* Generate cache key from text and every config field that changes the vector.
|
|
244
|
+
* A JSON tuple keeps field boundaries intact when the model or text contains
|
|
245
|
+
* ':' (#914, as #863 did for the shared embedding cache). The cache is
|
|
246
|
+
* in-memory only, so no persisted keys need migrating.
|
|
244
247
|
*/
|
|
245
248
|
getCacheKey(text) {
|
|
246
|
-
|
|
249
|
+
const { model, hyperbolic, normalize, curvature } = this.config;
|
|
250
|
+
return JSON.stringify([model, hyperbolic, normalize, curvature, text]);
|
|
247
251
|
}
|
|
248
252
|
/**
|
|
249
253
|
* Convert Euclidean embedding to Poincaré ball
|
|
@@ -232,7 +232,8 @@ export class WasmVectorStore {
|
|
|
232
232
|
* @returns StoreStats with counts, dimensions, memory usage, etc.
|
|
233
233
|
*/
|
|
234
234
|
getStats() {
|
|
235
|
-
|
|
235
|
+
// Namespaces are caller-supplied: no prototype, so `constructor` is just a name (#914).
|
|
236
|
+
const namespaceSizes = Object.create(null);
|
|
236
237
|
let memoryBytes = 0;
|
|
237
238
|
for (const [, entry] of this.vectors) {
|
|
238
239
|
const ns = entry.namespace;
|
|
@@ -125,7 +125,9 @@ export declare class RuVectorCoverageRouter implements CoverageRouter {
|
|
|
125
125
|
*/
|
|
126
126
|
private generateTargetReason;
|
|
127
127
|
/**
|
|
128
|
-
* Compute cache key
|
|
128
|
+
* Compute cache key. JSON tuples keep a ':' or '|' in a file path from merging
|
|
129
|
+
* entries (#914). Keys from older releases that were persisted to KV never
|
|
130
|
+
* match the new format, so they only miss and age out under the TTL.
|
|
129
131
|
*/
|
|
130
132
|
private computeCacheKey;
|
|
131
133
|
}
|
|
@@ -484,14 +484,15 @@ export class RuVectorCoverageRouter {
|
|
|
484
484
|
return reasons.join(', ') || 'coverage below target';
|
|
485
485
|
}
|
|
486
486
|
/**
|
|
487
|
-
* Compute cache key
|
|
487
|
+
* Compute cache key. JSON tuples keep a ':' or '|' in a file path from merging
|
|
488
|
+
* entries (#914). Keys from older releases that were persisted to KV never
|
|
489
|
+
* match the new format, so they only miss and age out under the TTL.
|
|
488
490
|
*/
|
|
489
491
|
computeCacheKey(coverageData, targetCoverage) {
|
|
490
|
-
const
|
|
491
|
-
.map((c) =>
|
|
492
|
-
.sort()
|
|
493
|
-
|
|
494
|
-
return `${targetCoverage}:${dataKey}`;
|
|
492
|
+
const entries = coverageData
|
|
493
|
+
.map((c) => JSON.stringify([c.filePath, c.lineCoverage, c.branchCoverage]))
|
|
494
|
+
.sort();
|
|
495
|
+
return JSON.stringify([targetCoverage, entries]);
|
|
495
496
|
}
|
|
496
497
|
}
|
|
497
498
|
// ============================================================================
|
|
@@ -593,11 +593,12 @@ export class RuVectorDiffRiskClassifier {
|
|
|
593
593
|
* Compute cache key for context
|
|
594
594
|
*/
|
|
595
595
|
computeCacheKey(context) {
|
|
596
|
+
// JSON tuples keep delimiters in a commit hash or file path from colliding
|
|
597
|
+
// (#914). Persisted keys in the old format never match, so they age out.
|
|
596
598
|
const fileKeys = context.files
|
|
597
|
-
.map((f) =>
|
|
598
|
-
.sort()
|
|
599
|
-
|
|
600
|
-
return `${context.commitHash || 'unknown'}:${fileKeys}`;
|
|
599
|
+
.map((f) => JSON.stringify([f.filePath, f.status, f.additions, f.deletions]))
|
|
600
|
+
.sort();
|
|
601
|
+
return JSON.stringify([context.commitHash || 'unknown', fileKeys]);
|
|
601
602
|
}
|
|
602
603
|
}
|
|
603
604
|
// ============================================================================
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* to one or both backends depending on the configured mode.
|
|
12
12
|
*/
|
|
13
13
|
import { ensureEndpointEmbeddingSpaceIdentity, getActiveEmbeddingSpaceIdentity } from '../../learning/real-embeddings.js';
|
|
14
|
-
import { verifyOrCreateEmbeddingSpaceManifest } from '../../learning/embedding-space.js';
|
|
14
|
+
import { reportEmbeddingRuntimeUnavailable, verifyOrCreateEmbeddingSpaceManifest, } from '../../learning/embedding-space.js';
|
|
15
15
|
/**
|
|
16
16
|
* Wraps the real RvfNativeAdapter to conform to the simpler RvfStore interface.
|
|
17
17
|
*/
|
|
@@ -102,6 +102,15 @@ export class RvfDualWriter {
|
|
|
102
102
|
if (!this.activeSpaceId()) {
|
|
103
103
|
await ensureEndpointEmbeddingSpaceIdentity();
|
|
104
104
|
}
|
|
105
|
+
if (!this.activeSpaceId()) {
|
|
106
|
+
// #852: no embedding runtime available (fresh project, or a missing
|
|
107
|
+
// endpoint). brain.rvf cannot be bound to a vector space, so leave it
|
|
108
|
+
// unopened (uncreated if absent; existing vectors are kept) and
|
|
109
|
+
// report the expected state once instead of a per-store failure.
|
|
110
|
+
this.rvfAvailable = false;
|
|
111
|
+
reportEmbeddingRuntimeUnavailable();
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
105
114
|
const { isRvfLockHeldError, removeStaleRvfLock, quarantineUnusableStore } = await import('./rvf-store-integrity.js');
|
|
106
115
|
const tryOpen = () => {
|
|
107
116
|
try {
|
|
@@ -3,6 +3,7 @@ import { createRequire } from 'node:module';
|
|
|
3
3
|
import { execFileSync } from 'node:child_process';
|
|
4
4
|
import { existsSync } from 'node:fs';
|
|
5
5
|
import { dirname, join } from 'node:path';
|
|
6
|
+
import { npmCliInvocation } from '../../shared/npm-cli-invocation.js';
|
|
6
7
|
export const VIBIUM_SETUP = 'aqe init --browser-engine (or npm install vibium@^26.8.21)';
|
|
7
8
|
const requireFromHere = createRequire(import.meta.url);
|
|
8
9
|
/**
|
|
@@ -12,12 +13,7 @@ const requireFromHere = createRequire(import.meta.url);
|
|
|
12
13
|
* Falls back to plain `npm` when that layout is absent.
|
|
13
14
|
*/
|
|
14
15
|
export function npmInvocation(platform = process.platform, execPath = process.execPath, exists = existsSync) {
|
|
15
|
-
|
|
16
|
-
const npmCli = join(dirname(execPath), 'node_modules', 'npm', 'bin', 'npm-cli.js');
|
|
17
|
-
if (exists(npmCli))
|
|
18
|
-
return [execPath, [npmCli]];
|
|
19
|
-
}
|
|
20
|
-
return ['npm', []];
|
|
16
|
+
return npmCliInvocation('npm', platform, execPath, exists) ?? ['npm', []];
|
|
21
17
|
}
|
|
22
18
|
/** Never install or download anything while probing availability. */
|
|
23
19
|
function resolveRuntime() {
|
|
@@ -63,6 +63,11 @@ export interface DreamCycleResult {
|
|
|
63
63
|
export interface ApplyInsightResult {
|
|
64
64
|
success: boolean;
|
|
65
65
|
patternId?: string;
|
|
66
|
+
/**
|
|
67
|
+
* The pattern row committed to SQLite but its vector index is pending
|
|
68
|
+
* (COMMITTED_PENDING_INDEX, e.g. the RVF index is unbound or locked).
|
|
69
|
+
*/
|
|
70
|
+
indexPending?: boolean;
|
|
66
71
|
error?: string;
|
|
67
72
|
}
|
|
68
73
|
/**
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import { safeJsonParse } from '../../shared/safe-json.js';
|
|
18
18
|
import { toErrorMessage } from '../../shared/error-utils.js';
|
|
19
|
+
import { PatternMutationError } from '../pattern-mutation-error.js';
|
|
19
20
|
import { LoggerFactory } from '../../logging/index.js';
|
|
20
21
|
const dreamLogger = LoggerFactory.create('dream-engine');
|
|
21
22
|
import { v4 as uuidv4 } from 'uuid';
|
|
@@ -640,7 +641,16 @@ export class DreamEngine {
|
|
|
640
641
|
complexity: 'medium',
|
|
641
642
|
},
|
|
642
643
|
});
|
|
643
|
-
|
|
644
|
+
// COMMITTED_PENDING_INDEX proves the authoritative SQLite row exists;
|
|
645
|
+
// only the derived vector index is pending (unbound or locked RVF).
|
|
646
|
+
// The pattern is real, so the insight is applied — re-applying would
|
|
647
|
+
// just hit the same row. Any other failure stays retryable.
|
|
648
|
+
const pendingIndex = !patternResult.success &&
|
|
649
|
+
patternResult.error instanceof PatternMutationError &&
|
|
650
|
+
patternResult.error.disposition === 'COMMITTED_PENDING_INDEX'
|
|
651
|
+
? patternResult.error
|
|
652
|
+
: null;
|
|
653
|
+
if (!patternResult.success && !pendingIndex) {
|
|
644
654
|
// Do NOT mark applied — leave it retryable rather than silently
|
|
645
655
|
// swallowing a real pattern-creation failure behind a fake success.
|
|
646
656
|
return {
|
|
@@ -648,7 +658,14 @@ export class DreamEngine {
|
|
|
648
658
|
error: `Failed to create pattern: ${patternResult.error?.message ?? 'unknown error'}`,
|
|
649
659
|
};
|
|
650
660
|
}
|
|
651
|
-
const patternId = patternResult.value.id;
|
|
661
|
+
const patternId = patternResult.success ? patternResult.value.id : pendingIndex.patternId;
|
|
662
|
+
if (pendingIndex) {
|
|
663
|
+
dreamLogger.warn('Insight applied; pattern committed with vector index pending', {
|
|
664
|
+
insightId,
|
|
665
|
+
patternId,
|
|
666
|
+
cause: toErrorMessage(pendingIndex.cause),
|
|
667
|
+
});
|
|
668
|
+
}
|
|
652
669
|
// Mark insight as applied — pattern_id now points at the REAL row.
|
|
653
670
|
const stmt = this.db.prepare(`
|
|
654
671
|
UPDATE dream_insights
|
|
@@ -656,7 +673,7 @@ export class DreamEngine {
|
|
|
656
673
|
WHERE id = ?
|
|
657
674
|
`);
|
|
658
675
|
stmt.run(patternId, insightId);
|
|
659
|
-
return { success: true, patternId };
|
|
676
|
+
return pendingIndex ? { success: true, patternId, indexPending: true } : { success: true, patternId };
|
|
660
677
|
}
|
|
661
678
|
catch (error) {
|
|
662
679
|
return {
|
|
@@ -39,6 +39,24 @@ export declare function verifyEmbeddingRoundTrip(writeEmbed: (text: string) => P
|
|
|
39
39
|
export declare function inspectEmbeddingSpaceRows(rows: ReadonlyArray<{
|
|
40
40
|
spaceId: string | null;
|
|
41
41
|
}>, activeSpaceId: string | null): EmbeddingSpaceDiagnostics;
|
|
42
|
+
/**
|
|
43
|
+
* #852: a project with no embedding runtime (no AQE_EMBEDDER_ENDPOINT, no
|
|
44
|
+
* injected embedder) has nothing that could prove which vector space an ANN
|
|
45
|
+
* index belongs to. That is the normal state of a freshly initialised
|
|
46
|
+
* project, not a fault: index binders must stay closed (the #633 guard), but
|
|
47
|
+
* they should say so once, at warn level, instead of reporting an ERROR.
|
|
48
|
+
*
|
|
49
|
+
* The wording must not imply data loss: the same state is reached by a user
|
|
50
|
+
* whose AQE_EMBEDDER_ENDPOINT went missing (an index with vectors) or whose
|
|
51
|
+
* in-process embedder only loads lazily, after the index was opened.
|
|
52
|
+
*/
|
|
53
|
+
export declare const EMBEDDING_RUNTIME_UNAVAILABLE_NOTICE: string;
|
|
54
|
+
/** Stored as the RVF init cause, so COMMITTED_PENDING_INDEX errors read correctly later. */
|
|
55
|
+
export declare const EMBEDDING_RUNTIME_UNAVAILABLE_CAUSE: string;
|
|
56
|
+
/** Log the no-embedder notice at most once per process. */
|
|
57
|
+
export declare function reportEmbeddingRuntimeUnavailable(): void;
|
|
58
|
+
/** @internal test-only seam */
|
|
59
|
+
export declare function __resetEmbeddingRuntimeNoticeForTests(): void;
|
|
42
60
|
/** Sidecar path used to bind a persistent ANN index to one embedding space. */
|
|
43
61
|
export declare function embeddingSpaceManifestPath(indexPath: string): string;
|
|
44
62
|
/**
|
|
@@ -87,6 +87,39 @@ export function inspectEmbeddingSpaceRows(rows, activeSpaceId) {
|
|
|
87
87
|
unverifiedVectors,
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* #852: a project with no embedding runtime (no AQE_EMBEDDER_ENDPOINT, no
|
|
92
|
+
* injected embedder) has nothing that could prove which vector space an ANN
|
|
93
|
+
* index belongs to. That is the normal state of a freshly initialised
|
|
94
|
+
* project, not a fault: index binders must stay closed (the #633 guard), but
|
|
95
|
+
* they should say so once, at warn level, instead of reporting an ERROR.
|
|
96
|
+
*
|
|
97
|
+
* The wording must not imply data loss: the same state is reached by a user
|
|
98
|
+
* whose AQE_EMBEDDER_ENDPOINT went missing (an index with vectors) or whose
|
|
99
|
+
* in-process embedder only loads lazily, after the index was opened.
|
|
100
|
+
*/
|
|
101
|
+
// The literal "WARN" is load-bearing: the MCP stdio entry only forwards
|
|
102
|
+
// stderr lines containing it (or ERROR/[MCP]/...), so without it MCP users
|
|
103
|
+
// would never see the notice the CLI prints.
|
|
104
|
+
export const EMBEDDING_RUNTIME_UNAVAILABLE_NOTICE = '[VectorSearch] WARN: semantic vector search is not active: no embedding runtime was available ' +
|
|
105
|
+
'when the ANN indexes were opened (set AQE_EMBEDDER_ENDPOINT, or install @huggingface/transformers). ' +
|
|
106
|
+
'Any existing vectors in patterns.rvf and brain.rvf are kept and will be used once an embedder is available; ' +
|
|
107
|
+
'until then pattern search uses SQLite text matching.';
|
|
108
|
+
/** Stored as the RVF init cause, so COMMITTED_PENDING_INDEX errors read correctly later. */
|
|
109
|
+
export const EMBEDDING_RUNTIME_UNAVAILABLE_CAUSE = 'VECTOR_SPACE_UNVERIFIED: no embedding runtime was available when the RVF index was opened; ' +
|
|
110
|
+
'index left unbound (existing vectors are kept)';
|
|
111
|
+
let embeddingRuntimeNoticeShown = false;
|
|
112
|
+
/** Log the no-embedder notice at most once per process. */
|
|
113
|
+
export function reportEmbeddingRuntimeUnavailable() {
|
|
114
|
+
if (embeddingRuntimeNoticeShown)
|
|
115
|
+
return;
|
|
116
|
+
embeddingRuntimeNoticeShown = true;
|
|
117
|
+
console.warn(EMBEDDING_RUNTIME_UNAVAILABLE_NOTICE);
|
|
118
|
+
}
|
|
119
|
+
/** @internal test-only seam */
|
|
120
|
+
export function __resetEmbeddingRuntimeNoticeForTests() {
|
|
121
|
+
embeddingRuntimeNoticeShown = false;
|
|
122
|
+
}
|
|
90
123
|
/** Sidecar path used to bind a persistent ANN index to one embedding space. */
|
|
91
124
|
export function embeddingSpaceManifestPath(indexPath) {
|
|
92
125
|
return `${indexPath}.space.json`;
|
|
@@ -17,7 +17,7 @@ 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, blendFtsScore } from './pattern-store.js';
|
|
19
19
|
import { ensureEndpointEmbeddingSpaceIdentity, getActiveEmbeddingSpaceIdentity } from './real-embeddings.js';
|
|
20
|
-
import { verifyOrCreateEmbeddingSpaceManifest } from './embedding-space.js';
|
|
20
|
+
import { EMBEDDING_RUNTIME_UNAVAILABLE_CAUSE, reportEmbeddingRuntimeUnavailable, verifyOrCreateEmbeddingSpaceManifest, } from './embedding-space.js';
|
|
21
21
|
import { PatternMutationError } from './pattern-mutation-error.js';
|
|
22
22
|
// ============================================================================
|
|
23
23
|
// RVF Pattern Store Implementation
|
|
@@ -81,11 +81,25 @@ export class RvfPatternStore {
|
|
|
81
81
|
if (!this.embeddingSpaceId && !getActiveEmbeddingSpaceIdentity()) {
|
|
82
82
|
await ensureEndpointEmbeddingSpaceIdentity();
|
|
83
83
|
}
|
|
84
|
-
this.adapter = this.createAdapter(this.rvfPath, this.config.embeddingDimension);
|
|
85
84
|
const activeSpaceId = getActiveEmbeddingSpaceIdentity()?.spaceId ?? this.embeddingSpaceId ?? null;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
85
|
+
if (!activeSpaceId) {
|
|
86
|
+
// #852: no embedding runtime was available when the index was opened
|
|
87
|
+
// (the normal state of a fresh project). The index stays closed —
|
|
88
|
+
// nothing could prove its vector space; any vectors in it are kept —
|
|
89
|
+
// but this is not a failure, so report it once at warn level
|
|
90
|
+
// and do not open or create the .rvf file. rvfInitError keeps
|
|
91
|
+
// embedding writes fail-closed (COMMITTED_PENDING_INDEX).
|
|
92
|
+
this.rvfInitError = EMBEDDING_RUNTIME_UNAVAILABLE_CAUSE;
|
|
93
|
+
this.adapter = null;
|
|
94
|
+
this.initialized = true;
|
|
95
|
+
reportEmbeddingRuntimeUnavailable();
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
this.adapter = this.createAdapter(this.rvfPath, this.config.embeddingDimension);
|
|
99
|
+
verifyOrCreateEmbeddingSpaceManifest(this.rvfPath, activeSpaceId, this.adapter.status()?.totalVectors ?? 0);
|
|
100
|
+
this.initialized = true;
|
|
101
|
+
console.log(`[RvfPatternStore] Initialized: ${this.rvfPath} (dim=${this.config.embeddingDimension})`);
|
|
102
|
+
}
|
|
89
103
|
}
|
|
90
104
|
catch (error) {
|
|
91
105
|
// Do NOT silently swallow — the user chose useRVFPatternStore=true,
|