agentic-qe 3.15.15 → 3.15.16
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 +90 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/audit/witness-chain.d.ts +7 -0
- package/dist/audit/witness-chain.js +10 -0
- package/dist/cli/bundle.js +6 -6
- package/dist/cli/chunks/adapter-6CQ2PIP5.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-EUF4XVUC.js → agent-booster-wasm-45NWEKVS.js} +2 -2
- package/dist/cli/chunks/{agent-handler-MOX6PSIQ.js → agent-handler-LVHMYFEF.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-AEXKIGDG.js → agent-memory-branch-YDWOJFEQ.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-73RR52VS.js +2 -0
- package/dist/cli/chunks/{arena-IQ5ZZDRF.js → arena-CZKHXDDS.js} +2 -2
- package/dist/cli/chunks/{arena-M7GA3CVG.js → arena-ELDZH3CZ.js} +4 -4
- package/dist/cli/chunks/{audit-4IPBMKWB.js → audit-5MT4T47Z.js} +3 -3
- package/dist/cli/chunks/base-SMCMMVGP.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-IKDKJ2IE.js → better-sqlite3-6TGYPC2B.js} +2 -2
- package/dist/cli/chunks/{brain-handler-5NQUDH4W.js → brain-handler-HQWZFO52.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-KSXELWRC.js → branch-enumerator-WVILM4SO.js} +2 -2
- package/dist/cli/chunks/{browser-6LACARWE.js → browser-RX5ALU3H.js} +2 -2
- package/dist/cli/chunks/browser-workflow-A2MEZ66K.js +2 -0
- package/dist/cli/chunks/{chunk-SJCKCSN3.js → chunk-24OX5TQJ.js} +1 -1
- package/dist/cli/chunks/{chunk-J3FP5UGL.js → chunk-24QHCVX6.js} +1 -1
- package/dist/cli/chunks/{chunk-BZULJMGH.js → chunk-2H4XH6FT.js} +2 -2
- package/dist/cli/chunks/{chunk-E3MRDIZF.js → chunk-2YZ4G6NW.js} +1 -1
- package/dist/cli/chunks/chunk-32BPDLRZ.js +27 -0
- package/dist/cli/chunks/{chunk-76P32JVU.js → chunk-32GN3JKR.js} +1 -1
- package/dist/cli/chunks/{chunk-W62OOK7A.js → chunk-3HD7E6HN.js} +2 -2
- package/dist/cli/chunks/{chunk-AJPROCDW.js → chunk-4D4DENG6.js} +2 -2
- package/dist/cli/chunks/{chunk-PFQCV6YS.js → chunk-4LQFBY5L.js} +6 -6
- package/dist/cli/chunks/{chunk-4ATQP3PR.js → chunk-4NFQLP6R.js} +1 -1
- package/dist/cli/chunks/{chunk-WUOOX7UG.js → chunk-525CFDUE.js} +2 -2
- package/dist/cli/chunks/chunk-5B5QPCNU.js +65 -0
- package/dist/cli/chunks/{chunk-SON6ZRH3.js → chunk-5JZRZI4S.js} +2 -2
- package/dist/cli/chunks/{chunk-2ZFLULL4.js → chunk-5LAVKGLH.js} +2 -2
- package/dist/cli/chunks/chunk-5NNNEWLS.js +755 -0
- package/dist/cli/chunks/{chunk-JCZCJE6X.js → chunk-5PBLPQ5T.js} +2 -2
- package/dist/cli/chunks/chunk-5QO3R3TU.js +6 -0
- package/dist/cli/chunks/{chunk-EKP2SC77.js → chunk-5SPCGMBB.js} +2 -2
- package/dist/cli/chunks/{chunk-3J3RNJNX.js → chunk-5V3TI2LG.js} +1 -1
- package/dist/cli/chunks/{chunk-UAQZI6N4.js → chunk-5VZL4UVN.js} +2 -2
- package/dist/cli/chunks/{chunk-MIA447GY.js → chunk-63GMRQ25.js} +1 -1
- package/dist/cli/chunks/{chunk-TODNOP7C.js → chunk-63ZKI4PX.js} +6 -6
- package/dist/cli/chunks/{chunk-TZIHDJZD.js → chunk-67Z5R7RJ.js} +2 -2
- package/dist/cli/chunks/{chunk-WVXJ2QIG.js → chunk-6DPYNAOK.js} +2 -2
- package/dist/cli/chunks/{chunk-4HKAD25N.js → chunk-6ICX3FEG.js} +3 -3
- package/dist/cli/chunks/{chunk-BLL2XU7A.js → chunk-6XXZDV2C.js} +2 -2
- package/dist/cli/chunks/{chunk-R6LHJ7ME.js → chunk-6ZBXSOX6.js} +2 -2
- package/dist/cli/chunks/{chunk-5PTAFGJT.js → chunk-72XSEQMW.js} +2 -2
- package/dist/cli/chunks/{chunk-GKSMRBHU.js → chunk-7TE5ONQQ.js} +1 -1
- package/dist/cli/chunks/{chunk-UJABDXST.js → chunk-A5GBXCP5.js} +2 -2
- package/dist/cli/chunks/{chunk-22UKJGGN.js → chunk-AAMLQ2LF.js} +3 -3
- package/dist/cli/chunks/chunk-AG2EWGXS.js +21 -0
- package/dist/cli/chunks/{chunk-SZAZQZWI.js → chunk-AGRV5B3T.js} +2 -2
- package/dist/cli/chunks/{chunk-XH4JMX5O.js → chunk-AJMJNQMP.js} +1 -1
- package/dist/cli/chunks/{chunk-ZIPAB5J6.js → chunk-AR67RJPY.js} +2 -2
- package/dist/cli/chunks/{chunk-GGQGCT4Y.js → chunk-ASEOFRIG.js} +2 -2
- package/dist/cli/chunks/{chunk-AHMWD6JG.js → chunk-BEKDKVQT.js} +2 -2
- package/dist/cli/chunks/{chunk-W27AJ5B4.js → chunk-BY5OF7OH.js} +2 -2
- package/dist/cli/chunks/{chunk-T67R2MUN.js → chunk-C5FP5GW3.js} +2 -2
- package/dist/cli/chunks/{chunk-XHHWABJV.js → chunk-C6D5AHBO.js} +2 -2
- package/dist/cli/chunks/{chunk-PXATBHWN.js → chunk-CAKMOVZ6.js} +2 -2
- package/dist/cli/chunks/{chunk-337Z52QM.js → chunk-CEYSYSK5.js} +2 -2
- package/dist/cli/chunks/{chunk-KJBPB7P5.js → chunk-CGGUM2YJ.js} +2 -2
- package/dist/cli/chunks/{chunk-CAOUV5GZ.js → chunk-CJSHWQXP.js} +2 -2
- package/dist/cli/chunks/{chunk-GCHYOPRZ.js → chunk-CRPIYUTJ.js} +2 -2
- package/dist/cli/chunks/{chunk-RIRZHOS2.js → chunk-D6COXLYE.js} +2 -2
- package/dist/cli/chunks/{chunk-O6EWL5DQ.js → chunk-DTMAS2GB.js} +2 -2
- package/dist/cli/chunks/{chunk-XM6ZVFM5.js → chunk-DVYHMDFR.js} +470 -411
- package/dist/cli/chunks/chunk-DXD6K2ZP.js +3 -0
- package/dist/cli/chunks/{chunk-74YG72NQ.js → chunk-E3D4GPLP.js} +3 -3
- package/dist/cli/chunks/{chunk-KCQNFBBR.js → chunk-EA4YQVKS.js} +1 -1
- package/dist/cli/chunks/{chunk-4D4CWP72.js → chunk-EGYE5UPQ.js} +2 -2
- package/dist/cli/chunks/{chunk-DURD37JZ.js → chunk-EK7OLYOZ.js} +2 -2
- package/dist/cli/chunks/{chunk-DKX4GNRU.js → chunk-F742SZAX.js} +2 -2
- package/dist/cli/chunks/{chunk-JCQGJGGZ.js → chunk-FBDVGRSC.js} +1 -1
- package/dist/cli/chunks/{chunk-LVABQNRF.js → chunk-FDDC72IA.js} +2 -2
- package/dist/cli/chunks/{chunk-5AFVEWMT.js → chunk-FL64OUBA.js} +2 -2
- package/dist/cli/chunks/{chunk-5I7357KS.js → chunk-FLNAW7C4.js} +2 -2
- package/dist/cli/chunks/{chunk-BQ47GQPK.js → chunk-G5RHFBAY.js} +2 -2
- package/dist/cli/chunks/{chunk-XIVVTYM2.js → chunk-GAHNO6JJ.js} +2 -2
- package/dist/cli/chunks/{chunk-X33CWRDF.js → chunk-GFWHUQSF.js} +2 -2
- package/dist/cli/chunks/{chunk-VMAM46HQ.js → chunk-GJYHWYXR.js} +2 -2
- package/dist/cli/chunks/{chunk-ZYJB6FML.js → chunk-GQ6TUIKY.js} +1 -1
- package/dist/cli/chunks/{chunk-E56PVVWC.js → chunk-GSKMOPL7.js} +2 -2
- package/dist/cli/chunks/{chunk-JUDUBQHA.js → chunk-HCH4Y6XX.js} +2 -2
- package/dist/cli/chunks/{chunk-QFGYH6HD.js → chunk-HGWXF45W.js} +1 -1
- package/dist/cli/chunks/{chunk-FTRSS64D.js → chunk-HJ6ZGVTB.js} +2 -2
- package/dist/cli/chunks/{chunk-6BRQPHMZ.js → chunk-HLUXXCHF.js} +1 -1
- package/dist/cli/chunks/{chunk-BP5T3OEV.js → chunk-HVRRLYX6.js} +4 -4
- package/dist/cli/chunks/{chunk-AOKKUB5F.js → chunk-I7MQIM2U.js} +1 -1
- package/dist/cli/chunks/{chunk-7XB3FCKM.js → chunk-IESR7TNB.js} +2 -2
- package/dist/cli/chunks/{chunk-OQG3UQQ7.js → chunk-IHRXZZQM.js} +1 -1
- package/dist/cli/chunks/{chunk-YUS6TWAL.js → chunk-IOKYCMTJ.js} +6 -6
- package/dist/cli/chunks/{chunk-ERN56H6S.js → chunk-IOQ6ZQ5W.js} +1 -1
- package/dist/cli/chunks/{chunk-GQABPCQE.js → chunk-IOYG4VFL.js} +2 -2
- package/dist/cli/chunks/{chunk-KLTMOXIK.js → chunk-IUBJVHNB.js} +2 -2
- package/dist/cli/chunks/{chunk-ZSOMUTNL.js → chunk-J442IZLE.js} +1 -1
- package/dist/cli/chunks/{chunk-G242G224.js → chunk-J4ELZNLY.js} +2 -2
- package/dist/cli/chunks/chunk-J7I6PABJ.js +153 -0
- package/dist/cli/chunks/chunk-JDIYMZCQ.js +2 -0
- package/dist/cli/chunks/{chunk-2IIXCEMS.js → chunk-JHQCRRJI.js} +2 -2
- package/dist/cli/chunks/{chunk-6LE362LZ.js → chunk-JQ3DYUMS.js} +2 -2
- package/dist/cli/chunks/{chunk-EFUJDMNC.js → chunk-KITOPKRG.js} +2 -2
- package/dist/cli/chunks/{chunk-M4CJCPCQ.js → chunk-KKU2QGSJ.js} +2 -2
- package/dist/cli/chunks/chunk-KL7OKSU2.js +4 -0
- package/dist/cli/chunks/{chunk-HL2ANKN3.js → chunk-KNSRL6NO.js} +2 -2
- package/dist/cli/chunks/{chunk-FOOW4JVS.js → chunk-KPRCB5LT.js} +2 -2
- package/dist/cli/chunks/{chunk-E5G4WZ2T.js → chunk-KQYJ4VQ5.js} +1 -1
- package/dist/cli/chunks/{chunk-RBKUU7WF.js → chunk-KU2AUFGX.js} +2 -2
- package/dist/cli/chunks/{chunk-UQPA33UK.js → chunk-KVF4NXGQ.js} +2 -2
- package/dist/cli/chunks/{chunk-BDKEAGQ2.js → chunk-KXCLACFG.js} +2 -2
- package/dist/cli/chunks/{chunk-K3WZICFA.js → chunk-L2DWPVNJ.js} +1 -1
- package/dist/cli/chunks/{chunk-6YVMX2TC.js → chunk-L6QSTQME.js} +2 -2
- package/dist/cli/chunks/{chunk-LJMYRTJ7.js → chunk-LE4QJREF.js} +1 -1
- package/dist/cli/chunks/{chunk-NWIIYHT6.js → chunk-LKTTUHLF.js} +2 -2
- package/dist/cli/chunks/{chunk-W5ZJG2OU.js → chunk-LQLPB2T6.js} +2 -2
- package/dist/cli/chunks/{chunk-JKJOB65O.js → chunk-LRSX2FJM.js} +1 -1
- package/dist/cli/chunks/chunk-M4FRQ4TE.js +12 -0
- package/dist/cli/chunks/chunk-M7WJCTG3.js +2 -0
- package/dist/cli/chunks/{chunk-6RBTS3NF.js → chunk-MAFQV4U4.js} +2 -2
- package/dist/cli/chunks/{chunk-UE2J6MA5.js → chunk-MD43XRX5.js} +1 -1
- package/dist/cli/chunks/{chunk-2CKERSMB.js → chunk-MI5MFHRA.js} +2 -2
- package/dist/cli/chunks/{chunk-T66PPF4D.js → chunk-MO55CVMT.js} +32 -32
- package/dist/cli/chunks/{chunk-C4KLXFJP.js → chunk-N7HL5PHH.js} +1 -1
- package/dist/cli/chunks/chunk-NAEWCFQT.js +14 -0
- package/dist/cli/chunks/{chunk-U62OUXBF.js → chunk-NDJ7P2EP.js} +1 -1
- package/dist/cli/chunks/{chunk-M4WMSCAE.js → chunk-NO3IV5Q5.js} +1 -1
- package/dist/cli/chunks/{chunk-27HE2BHC.js → chunk-NQXXI77K.js} +2 -2
- package/dist/cli/chunks/{chunk-NQS3BWS6.js → chunk-NVEWF4JV.js} +1 -1
- package/dist/cli/chunks/{chunk-EBTNMQSS.js → chunk-NZU4ACBZ.js} +2 -2
- package/dist/cli/chunks/chunk-O5W3FIO6.js +63 -0
- package/dist/cli/chunks/{chunk-BFQTLF5X.js → chunk-OAEE6JWQ.js} +2 -2
- package/dist/cli/chunks/{chunk-PS6UMZVK.js → chunk-OCV2XEWQ.js} +2 -2
- package/dist/cli/chunks/{chunk-BU4UQR36.js → chunk-P3EYRILV.js} +2 -2
- package/dist/cli/chunks/{chunk-LHMQIZ6B.js → chunk-PEQDY4BO.js} +2 -2
- package/dist/cli/chunks/{chunk-PYPS65P7.js → chunk-PF7RBAYL.js} +2 -2
- package/dist/cli/chunks/{chunk-UXIY4IAI.js → chunk-PHT5N7SC.js} +2 -2
- package/dist/cli/chunks/{chunk-GV2QE5TO.js → chunk-PINSJCM3.js} +1 -1
- package/dist/cli/chunks/{chunk-4X3SWKBA.js → chunk-PPUZWYUG.js} +2 -2
- package/dist/cli/chunks/{chunk-L32JNNKL.js → chunk-QPEOLAAS.js} +1 -1
- package/dist/cli/chunks/{chunk-UUBIQR6A.js → chunk-QQWBWEJS.js} +18 -18
- package/dist/cli/chunks/{chunk-VCXI4XC4.js → chunk-QVDCVD5D.js} +2 -2
- package/dist/cli/chunks/{chunk-JW74KRBC.js → chunk-RJIEG3NA.js} +2 -2
- package/dist/cli/chunks/{chunk-C4RTAVC6.js → chunk-RV74I3YO.js} +2 -2
- package/dist/cli/chunks/{chunk-5G4UFTV4.js → chunk-S75SOOZL.js} +2 -2
- package/dist/cli/chunks/{chunk-MV55NXTD.js → chunk-SASBO5Y5.js} +2 -2
- package/dist/cli/chunks/{chunk-UORB2QDU.js → chunk-SDLWKRVL.js} +2 -2
- package/dist/cli/chunks/{chunk-Y2OX6KGN.js → chunk-SHKOCGNK.js} +2 -2
- package/dist/cli/chunks/{chunk-6KCSKGVY.js → chunk-SI6DPU5D.js} +1 -1
- package/dist/cli/chunks/{chunk-LYJHUNBK.js → chunk-SJ6Y4725.js} +2 -2
- package/dist/cli/chunks/{chunk-7ACCBHRB.js → chunk-SR52XP5F.js} +1 -1
- package/dist/cli/chunks/{chunk-C5CXL3JP.js → chunk-SSUAAX3F.js} +2 -2
- package/dist/cli/chunks/{chunk-BBRROA3Z.js → chunk-SSYAQZXA.js} +2 -2
- package/dist/cli/chunks/{chunk-DUKE27HC.js → chunk-SUDMM5SO.js} +2 -2
- package/dist/cli/chunks/{chunk-H5DER3JY.js → chunk-TIUKLYAI.js} +1 -1
- package/dist/cli/chunks/{chunk-5C62XMJR.js → chunk-TVGI32MB.js} +33 -33
- package/dist/cli/chunks/{chunk-MPFPWJTH.js → chunk-U2A7NHZA.js} +2 -2
- package/dist/cli/chunks/{chunk-TX2CHQD7.js → chunk-UE5ZOZR2.js} +2 -2
- package/dist/cli/chunks/{chunk-OLZH5LRT.js → chunk-UHEOGZLX.js} +11 -11
- package/dist/cli/chunks/chunk-UNGBRZDK.js +12 -0
- package/dist/cli/chunks/{chunk-XWIAZG3C.js → chunk-V5NHZV7S.js} +2 -2
- package/dist/cli/chunks/{chunk-AP2W7Z3A.js → chunk-VJCIEHEF.js} +1 -1
- package/dist/cli/chunks/{chunk-K3XBQC3R.js → chunk-VMDFFTCK.js} +1 -1
- package/dist/cli/chunks/chunk-VSIKHWZ4.js +29 -0
- package/dist/cli/chunks/{chunk-LB2LGEDP.js → chunk-VWPM27GU.js} +2 -2
- package/dist/cli/chunks/{chunk-HTZSRMHW.js → chunk-VXFLJNCA.js} +2 -2
- package/dist/cli/chunks/{chunk-73PBAWAF.js → chunk-W5HQUIML.js} +2 -2
- package/dist/cli/chunks/{chunk-DEKR3CTS.js → chunk-WP4RETKG.js} +2 -2
- package/dist/cli/chunks/{chunk-ZWBGYJ7K.js → chunk-XIIQ5QTT.js} +2 -2
- package/dist/cli/chunks/{chunk-TDQWTSBS.js → chunk-XIQW7EFL.js} +2 -2
- package/dist/cli/chunks/{chunk-AKZO6GGG.js → chunk-XWUWX7BV.js} +4 -4
- package/dist/cli/chunks/{chunk-LNX74WHQ.js → chunk-Y4PFUMOU.js} +1 -1
- package/dist/cli/chunks/chunk-YAPLJR7K.js +2 -0
- package/dist/cli/chunks/{chunk-3CYNZFKH.js → chunk-YLMNVLDK.js} +1 -1
- package/dist/cli/chunks/{chunk-XG4F4XH4.js → chunk-YNMJEDN5.js} +2 -2
- package/dist/cli/chunks/{chunk-RDMRY7CT.js → chunk-YPBSUGMI.js} +1 -1
- package/dist/cli/chunks/{chunk-OBDONJQM.js → chunk-YRAX7SFJ.js} +2 -2
- package/dist/cli/chunks/{chunk-7BLZHFKD.js → chunk-YTHTQPWR.js} +1 -1
- package/dist/cli/chunks/{chunk-IXL5ZHWJ.js → chunk-YU2BDRSD.js} +1 -1
- package/dist/cli/chunks/chunk-ZB3LEFYG.js +2 -0
- package/dist/cli/chunks/{chunk-T4GE7MPI.js → chunk-ZFL436FN.js} +2 -2
- package/dist/cli/chunks/{chunk-CBK5CT6T.js → chunk-ZJH5MU2I.js} +2 -2
- package/dist/cli/chunks/{chunk-LTQVUAPH.js → chunk-ZQ2XW3IP.js} +2 -2
- package/dist/cli/chunks/chunk-ZR2TKVXQ.js +14 -0
- package/dist/cli/chunks/{ci-UCUJOSBW.js → ci-MFUR4CWV.js} +2 -2
- package/dist/cli/chunks/{ci-config-2XILD3XG.js → ci-config-PNDLQ6XV.js} +2 -2
- package/dist/cli/chunks/{ci-output-BL6KWOHW.js → ci-output-PFZ4M7NC.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-5XLIOXE5.js → circuit-breaker-5HH6NLZN.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-4IMP6ACS.js → claude-flow-setup-QCKYLGLC.js} +2 -2
- package/dist/cli/chunks/client-MHQRTZM4.js +2 -0
- package/dist/cli/chunks/{cline-installer-RYLHCDK7.js → cline-installer-EASVPFXR.js} +2 -2
- package/dist/cli/chunks/{code-WY3GJXHX.js → code-UJXDVYRK.js} +4 -3
- package/dist/cli/chunks/{code-index-extractor-Y4MZBZCW.js → code-index-extractor-BZJ3UDP4.js} +2 -2
- package/dist/cli/chunks/{codex-installer-SCJ3T3DX.js → codex-installer-XSQZUVOZ.js} +2 -2
- package/dist/cli/chunks/{completions-CN2DXQFU.js → completions-OWOOJFI2.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-7MDPPIBH.js → complexity-analyzer-KP5TOHDT.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-GCEJRK34.js → continuedev-installer-IFKQXLHM.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-BHPDSELY.js → copilot-installer-IGJ6KGQY.js} +2 -2
- package/dist/cli/chunks/core-handlers-UAK3LLJE.js +2 -0
- package/dist/cli/chunks/{cost-tracker-VO5MFWR6.js → cost-tracker-MMDDNKZB.js} +2 -2
- package/dist/cli/chunks/{coverage-LYFQYNH6.js → coverage-LUH2B7NT.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-WTRZQPNQ.js +2 -0
- package/dist/cli/chunks/{cursor-installer-KP4HA7TV.js → cursor-installer-4YLM5GWM.js} +2 -2
- package/dist/cli/chunks/daemon-CAVZ7OFV.js +18 -0
- package/dist/cli/chunks/{daemon-7RC7TS57.js → daemon-MZKVM4CJ.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-NKA44RSR.js → dag-attention-scheduler-X4CYW665.js} +2 -2
- package/dist/cli/chunks/{detect-CMYAJWYF.js → detect-7BM2XINO.js} +2 -2
- package/dist/cli/chunks/{dist-node-EN3PYEGW.js → dist-node-Y5APLEYB.js} +2 -2
- package/dist/cli/chunks/{domain-handler-EXSZCX7A.js → domain-handler-X3ZRJNAH.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-HCQFSNL7.js → domain-plugins-2UW5KQJB.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-3LGSNTPO.js → domain-transfer-35W4CIBV.js} +2 -2
- package/dist/cli/chunks/dream-EJY24JN6.js +2 -0
- package/dist/cli/chunks/embed-and-insert-pattern-COG4C7ZI.js +3 -0
- package/dist/cli/chunks/embedding-space-SBM2MZD2.js +2 -0
- package/dist/cli/chunks/{eval-OQELIWJK.js → eval-4QA2SROK.js} +2 -2
- package/dist/cli/chunks/experience-capture-middleware-Z6BF6KYM.js +40 -0
- package/dist/cli/chunks/{fast-paths-UV4NDEWM.js → fast-paths-FIORX6GN.js} +2 -2
- package/dist/cli/chunks/{feature-flags-CKTYX67J.js → feature-flags-6LYI2T4G.js} +2 -2
- package/dist/cli/chunks/{feature-flags-H7H33B6C.js → feature-flags-ZOO7LMIC.js} +2 -2
- package/dist/cli/chunks/file-discovery-UZSFSS4V.js +2 -0
- package/dist/cli/chunks/{fleet-ZJBCAKRG.js → fleet-7WF53H4F.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-RUE2QZRG.js → gnn-wrapper-KJ6B7BRM.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-XRV327M7.js → heartbeat-handler-DEKKMOVW.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-NVR356I7.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-LFMPLUJU.js +2 -0
- package/dist/cli/chunks/hnsw-index-POCPMVJH.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-UJID6ZZ4.js → hnsw-legacy-bridge-L27WS27N.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-WS43R4AX.js → hnswlib-node-4YOQC6L4.js} +2 -2
- package/dist/cli/chunks/{hooks-YZNJKXAJ.js → hooks-TAOKV4EJ.js} +23 -22
- package/dist/cli/chunks/hybrid-backend-4STAO7CV.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-XQJSIMTS.js → hypergraph-engine-BODRJLHL.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-ZD2NYXMR.js → hypergraph-handler-RKMYJNTU.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-3VIIISBQ.js +2 -0
- package/dist/cli/chunks/{init-guard-DSRUAVRT.js → init-guard-MXHSLSB2.js} +2 -2
- package/dist/cli/chunks/{init-handler-RJU5QMAP.js → init-handler-HUE57IFW.js} +6 -6
- package/dist/cli/chunks/init-wizard-PL6QN6RQ.js +2 -0
- package/dist/cli/chunks/kernel-CCDWT7KS.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-BCPOCVMC.js → kilocode-installer-S333IKYQ.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-GFCWCB2S.js → kiro-installer-WM5DLQWC.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-KFOMEN3H.js +2 -0
- package/dist/cli/chunks/{learning-FZTD72CF.js → learning-LNHMQLH5.js} +3 -3
- package/dist/cli/chunks/{llm-router-GJVKGRJL.js → llm-router-EWFXYZZR.js} +4 -4
- package/dist/cli/chunks/llm-router-service-7NBE2EX6.js +2 -0
- package/dist/cli/chunks/{load-YKTPOYBE.js → load-FGYGWVDK.js} +2 -2
- package/dist/cli/chunks/load-test-UNZUWY3F.js +2 -0
- package/dist/cli/chunks/{mcp-LT6R2IKS.js → mcp-2FHNAAOM.js} +2 -2
- package/dist/cli/chunks/{memory-4HKKOLRY.js → memory-DZMQ73AB.js} +5 -5
- package/dist/cli/chunks/memory-backend-DFGKWA2Q.js +2 -0
- package/dist/cli/chunks/memory-handlers-MP426XRJ.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-2YPM2WTK.js → multi-model-executor-6F2UAEUW.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-WBAJMH5K.js → opencode-installer-XY3BGOTZ.js} +2 -2
- package/dist/cli/chunks/{orchestrator-5W5WVMVJ.js → orchestrator-B4CNKUOS.js} +5 -5
- package/dist/cli/chunks/pattern-null-store-SSVF5TE5.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-GXRMNPAZ.js → pattern-usage-recorder-R4GUFNMD.js} +2 -2
- package/dist/cli/chunks/{pipeline-2NA4DRDA.js → pipeline-FG5RKVRO.js} +2 -2
- package/dist/cli/chunks/{platform-BGERNQ5V.js → platform-3BT4KEVJ.js} +2 -2
- package/dist/cli/chunks/{plugin-L4EPVENR.js → plugin-WI4RIN7O.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-RTQRTPTM.js → prime-radiant-advanced-wasm-7ECDNQFS.js} +2 -2
- package/dist/cli/chunks/project-root-BEANNYWU.js +2 -0
- package/dist/cli/chunks/protocol-executor-FQVIHXZ7.js +2 -0
- package/dist/cli/chunks/{protocol-handler-SYQXM6JK.js → protocol-handler-WNODKPGW.js} +2 -2
- package/dist/cli/chunks/{prove-5O7GPJCU.js → prove-5RHAEPYZ.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-5TFYSE24.js +2 -0
- package/dist/cli/chunks/{quality-KIIDHGNF.js → quality-WPHR7BGQ.js} +2 -2
- package/dist/cli/chunks/{quality-gate-H65VECD3.js → quality-gate-4RKTEZMX.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-Y2OUL7IN.js +2 -0
- package/dist/cli/chunks/real-embeddings-OXLYU7JW.js +2 -0
- package/dist/cli/chunks/{ref-validation-CSBJOMZM.js → ref-validation-TPAWHOHH.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-G7OVYXEN.js → roocode-installer-7AVHFNDI.js} +2 -2
- package/dist/cli/chunks/router-EP34O3KB.js +2 -0
- package/dist/cli/chunks/routing-feedback-FJCRKXNG.js +2 -0
- package/dist/cli/chunks/{routing-handler-ZNZPPI5Y.js → routing-handler-YKEDVJSH.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-C6IG3OY3.js → ruvector-commands-JUAMM354.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-ILITJSFG.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-XF6W4C2N.js +2 -0
- package/dist/cli/chunks/rvf-migration-coordinator-CMKG56AR.js +2 -0
- package/dist/cli/chunks/rvf-native-adapter-7YFW6S4Y.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-3G6LFLT3.js → rvf-store-integrity-VJDUIRTX.js} +2 -2
- package/dist/cli/chunks/safe-db-TCAU4FUT.js +2 -0
- package/dist/cli/chunks/schedule-NB5KV435.js +2 -0
- package/dist/cli/chunks/scheduler-JKXGKVK6.js +2 -0
- package/dist/cli/chunks/{security-A3IMVLFM.js → security-ORDN3RD2.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-VHWQ6US5.js → shared-rvf-adapter-CF4BCIO7.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-JB3QS7IG.js → shared-rvf-dual-writer-C32UBR6D.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-IXCNZRTW.js +2 -0
- package/dist/cli/chunks/{standalone-memory-DDNXCSBD.js → standalone-memory-OXRJYZXN.js} +2 -2
- package/dist/cli/chunks/{status-handler-2HK7XPEK.js → status-handler-BCX5D4HY.js} +2 -2
- package/dist/cli/chunks/{structural-health-DSJVLEPV.js → structural-health-LFG7RUU6.js} +2 -2
- package/dist/cli/chunks/sync-OSF7C2NL.js +2 -0
- package/dist/cli/chunks/{sync-NTUR53PI.js → sync-YJEE2K2L.js} +2 -2
- package/dist/cli/chunks/task-handler-6LXKPTXJ.js +64 -0
- package/dist/cli/chunks/{task-handlers-VJR6EHRZ.js → task-handlers-CILP36I7.js} +4 -4
- package/dist/cli/chunks/{test-O6FK3FVF.js → test-SD457QJ6.js} +4 -4
- package/dist/cli/chunks/test-runner-process-VKD65QQU.js +2 -0
- package/dist/cli/chunks/{test-scheduling-Q6QEEOS6.js → test-scheduling-ISI2O4Q5.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-VUELSBOS.js +2 -0
- package/dist/cli/chunks/{token-usage-YEEFWSSI.js → token-usage-XOC5KG7S.js} +2 -2
- package/dist/cli/chunks/{transformers-BZCHJJJT.js → transformers-LSLQAARK.js} +2 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-YAIPHRIL.js +2 -0
- package/dist/cli/chunks/{types-4AOKZYOX.js → types-5BLCGLCR.js} +2 -2
- package/dist/cli/chunks/unified-memory-GI76TXFV.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-GXJ5BTZO.js +2 -0
- package/dist/cli/chunks/unified-persistence-OP7FDQPD.js +2 -0
- package/dist/cli/chunks/{upgrade-2MWW6BT2.js → upgrade-RQJYLK3J.js} +2 -2
- package/dist/cli/chunks/{validate-PAEV3GT5.js → validate-QBHWXXCK.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-ZIXACK5K.js → validate-swarm-IKXBKFB5.js} +2 -2
- package/dist/cli/chunks/visual-security-GZ2MOKWB.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-VLTXZFAB.js → web-tree-sitter-ZF6FIE5R.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-VELMLOZF.js → windsurf-installer-HQGDZT5D.js} +2 -2
- package/dist/cli/chunks/witness-chain-DCHCAMSQ.js +2 -0
- package/dist/cli/chunks/witness-chain-P3XXXA62.js +2 -0
- package/dist/cli/chunks/witness-chain-repair-PUX2NFDL.js +2 -0
- package/dist/cli/chunks/{witness-chain-verifier-MIDWD4JS.js → witness-chain-verifier-PX2OQ6XT.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-OSVCWOB2.js → witness-key-manager-RXYQNFJB.js} +2 -2
- package/dist/cli/chunks/{workflow-MK7A7QCX.js → workflow-FBKCA4H6.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-P2APAJAA.js +2 -0
- package/dist/cli/chunks/wrappers-TWSKBTWD.js +2 -0
- package/dist/cli/commands/code.js +4 -0
- package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +10 -2
- package/dist/cli/handlers/task-handler.d.ts +5 -0
- package/dist/cli/handlers/task-handler.js +21 -1
- package/dist/cli/utils/task-result.d.ts +11 -0
- package/dist/cli/utils/task-result.js +39 -0
- package/dist/coordination/handlers/test-execution-handlers.js +92 -58
- package/dist/coordination/mincut/mincut-persistence.js +29 -25
- package/dist/domains/code-intelligence/coordinator.d.ts +4 -0
- package/dist/domains/code-intelligence/coordinator.js +46 -13
- package/dist/domains/code-intelligence/interfaces.d.ts +10 -1
- package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +32 -7
- package/dist/domains/code-intelligence/services/semantic-analyzer.js +112 -53
- package/dist/domains/learning-optimization/services/learning-coordinator.js +1 -1
- package/dist/domains/quality-assessment/coordinator.js +2 -1
- package/dist/domains/test-execution/coordinator.js +10 -5
- package/dist/domains/test-execution/interfaces.d.ts +12 -0
- package/dist/domains/test-execution/plugin.js +6 -2
- package/dist/domains/test-execution/services/retry-handler.d.ts +2 -0
- package/dist/domains/test-execution/services/retry-handler.js +14 -9
- package/dist/domains/test-execution/services/test-executor.d.ts +1 -0
- package/dist/domains/test-execution/services/test-executor.js +28 -9
- package/dist/domains/visual-accessibility/coordinator.d.ts +15 -7
- package/dist/domains/visual-accessibility/coordinator.js +15 -7
- package/dist/domains/visual-accessibility/interfaces.d.ts +27 -3
- package/dist/domains/visual-accessibility/services/accessibility-contrast.d.ts +39 -0
- package/dist/domains/visual-accessibility/services/accessibility-contrast.js +93 -0
- package/dist/domains/visual-accessibility/services/accessibility-tester-browser.d.ts +18 -3
- package/dist/domains/visual-accessibility/services/accessibility-tester-browser.js +50 -40
- package/dist/domains/visual-accessibility/services/accessibility-tester-checks.d.ts +27 -0
- package/dist/domains/visual-accessibility/services/accessibility-tester-checks.js +137 -0
- package/dist/domains/visual-accessibility/services/accessibility-tester.d.ts +5 -0
- package/dist/domains/visual-accessibility/services/accessibility-tester.js +43 -24
- package/dist/domains/visual-accessibility/services/browser-swarm-coordinator.d.ts +2 -3
- package/dist/domains/visual-accessibility/services/browser-swarm-coordinator.js +8 -14
- package/dist/feedback/coverage-learner.js +13 -9
- package/dist/feedback/test-outcome-tracker.js +13 -9
- package/dist/governance/witness-chain.d.ts +5 -0
- package/dist/governance/witness-chain.js +22 -6
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +22 -0
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +115 -45
- package/dist/integrations/agentic-flow/reasoning-bank/pattern-evolution.d.ts +6 -0
- package/dist/integrations/agentic-flow/reasoning-bank/pattern-evolution.js +51 -33
- package/dist/integrations/agentic-flow/reasoning-bank/trajectory-tracker.js +17 -9
- package/dist/integrations/embeddings/cache/EmbeddingCache.d.ts +8 -0
- package/dist/integrations/embeddings/cache/EmbeddingCache.js +24 -10
- package/dist/integrations/ruvector/delta-tracker.d.ts +11 -0
- package/dist/integrations/ruvector/delta-tracker.js +16 -0
- package/dist/integrations/ruvector/sona-persistence.d.ts +10 -0
- package/dist/integrations/ruvector/sona-persistence.js +49 -24
- package/dist/kernel/unified-memory.d.ts +24 -0
- package/dist/kernel/unified-memory.js +63 -8
- package/dist/learning/aqe-learning-engine.js +1 -1
- package/dist/learning/embed-and-insert-pattern.js +4 -2
- package/dist/learning/embedder-endpoint-client.d.ts +31 -0
- package/dist/learning/embedder-endpoint-client.js +103 -10
- package/dist/learning/embedding-space.d.ts +12 -0
- package/dist/learning/embedding-space.js +17 -0
- package/dist/learning/experience-capture-middleware.js +25 -13
- package/dist/learning/experience-capture.js +1 -1
- package/dist/learning/experience-consolidation.d.ts +18 -0
- package/dist/learning/experience-consolidation.js +55 -8
- package/dist/learning/experience-space-verification.d.ts +71 -0
- package/dist/learning/experience-space-verification.js +147 -0
- package/dist/learning/pattern-lifecycle.d.ts +40 -4
- package/dist/learning/pattern-lifecycle.js +153 -76
- package/dist/learning/pattern-null-store.d.ts +5 -0
- package/dist/learning/pattern-null-store.js +8 -0
- package/dist/learning/pattern-promotion.js +6 -3
- package/dist/learning/pattern-store.d.ts +6 -0
- package/dist/learning/pattern-store.js +19 -6
- package/dist/learning/qe-reasoning-bank.js +2 -2
- package/dist/learning/real-embeddings.js +3 -1
- package/dist/learning/real-qe-reasoning-bank.d.ts +5 -0
- package/dist/learning/real-qe-reasoning-bank.js +77 -47
- package/dist/learning/rvf-pattern-store.js +6 -2
- package/dist/learning/sqlite-persistence.d.ts +6 -0
- package/dist/learning/sqlite-persistence.js +10 -0
- package/dist/mcp/bundle.js +641 -570
- package/dist/mcp/entry.js +4 -0
- package/dist/mcp/handlers/domain-handler-configs.js +2 -0
- package/dist/mcp/handlers/trajectory-judge.js +1 -1
- package/dist/mcp/protocol-server.js +1 -0
- package/dist/mcp/tools/visual-accessibility/index.js +8 -2
- package/dist/mcp/types.d.ts +6 -0
- package/dist/optimization/session-cache.d.ts +17 -1
- package/dist/optimization/session-cache.js +40 -36
- package/dist/planning/goap-planner.d.ts +6 -0
- package/dist/planning/goap-planner.js +35 -19
- package/dist/planning/plan-executor.js +24 -15
- package/dist/routing/co-execution-repository.js +12 -9
- package/dist/routing/routing-feedback.d.ts +8 -0
- package/dist/routing/routing-feedback.js +46 -24
- package/dist/routing/routing-outcomes-migration.js +7 -2
- package/dist/shared/llm/spend-ledger.d.ts +9 -0
- package/dist/shared/llm/spend-ledger.js +64 -39
- package/dist/shared/sqlite-lock-wait.d.ts +27 -0
- package/dist/shared/sqlite-lock-wait.js +37 -0
- package/dist/shared/sqlite-write-queue.d.ts +28 -0
- package/dist/shared/sqlite-write-queue.js +38 -0
- package/dist/shared/test-runner-project.d.ts +69 -0
- package/dist/shared/test-runner-project.js +186 -0
- package/dist/skills/security-visual-testing/index.d.ts +3 -1
- package/dist/skills/security-visual-testing/index.js +49 -35
- package/dist/skills/security-visual-testing/types.d.ts +19 -3
- package/dist/workers/workers/heartbeat-scheduler.js +5 -5
- package/dist/workers/workers/learning-consolidation.js +8 -7
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-QU6INSKP.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-PAJPENJD.js +0 -2
- package/dist/cli/chunks/base-OTGSN6IC.js +0 -2
- package/dist/cli/chunks/browser-workflow-WLZGR6SB.js +0 -2
- package/dist/cli/chunks/chunk-2LUTPMBO.js +0 -21
- package/dist/cli/chunks/chunk-3HVFIITW.js +0 -2
- package/dist/cli/chunks/chunk-5KA5TVPR.js +0 -6
- package/dist/cli/chunks/chunk-6NBRMD25.js +0 -13
- package/dist/cli/chunks/chunk-7O45RQHF.js +0 -153
- package/dist/cli/chunks/chunk-EMSZVUYA.js +0 -29
- package/dist/cli/chunks/chunk-G6RDCCFV.js +0 -4
- package/dist/cli/chunks/chunk-HH4ED4F7.js +0 -744
- package/dist/cli/chunks/chunk-Q6I4SIUU.js +0 -65
- package/dist/cli/chunks/chunk-QGBGSQ2E.js +0 -14
- package/dist/cli/chunks/chunk-QRKTBSZT.js +0 -27
- package/dist/cli/chunks/chunk-SHRI7TKJ.js +0 -62
- package/dist/cli/chunks/chunk-UGYM4U44.js +0 -2
- package/dist/cli/chunks/chunk-VY4U6DPO.js +0 -12
- package/dist/cli/chunks/chunk-WNTA4YKE.js +0 -14
- package/dist/cli/chunks/chunk-XHLYGXYE.js +0 -2
- package/dist/cli/chunks/client-KKRNPX4F.js +0 -2
- package/dist/cli/chunks/core-handlers-47MPMED7.js +0 -2
- package/dist/cli/chunks/cross-domain-router-U6MBFHEC.js +0 -2
- package/dist/cli/chunks/daemon-AXLVPKVO.js +0 -18
- package/dist/cli/chunks/dream-76L6EEN7.js +0 -2
- package/dist/cli/chunks/embed-and-insert-pattern-B6MNHICW.js +0 -3
- package/dist/cli/chunks/experience-capture-middleware-SUFILYPW.js +0 -40
- package/dist/cli/chunks/file-discovery-VSFKZ3LJ.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-NIK3KKEH.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-WJG7LUJJ.js +0 -2
- package/dist/cli/chunks/hnsw-index-D6PRI5HC.js +0 -2
- package/dist/cli/chunks/hybrid-backend-RIUR3I7F.js +0 -2
- package/dist/cli/chunks/impact-analyzer-C36YYTJ5.js +0 -2
- package/dist/cli/chunks/init-wizard-JCKNGIGT.js +0 -2
- package/dist/cli/chunks/kernel-F7ILJTYD.js +0 -2
- package/dist/cli/chunks/knowledge-graph-VTXDBHB2.js +0 -2
- package/dist/cli/chunks/llm-router-service-TNOWQINA.js +0 -2
- package/dist/cli/chunks/load-test-FPVBK2EV.js +0 -2
- package/dist/cli/chunks/memory-backend-2QE7O67A.js +0 -2
- package/dist/cli/chunks/memory-handlers-X4CMVBXB.js +0 -2
- package/dist/cli/chunks/pattern-null-store-UI35ORHW.js +0 -2
- package/dist/cli/chunks/project-root-S7WDFTMU.js +0 -2
- package/dist/cli/chunks/protocol-executor-OPANXQVB.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-3OTF4DYQ.js +0 -2
- package/dist/cli/chunks/queen-coordinator-WTYH4TAN.js +0 -2
- package/dist/cli/chunks/real-embeddings-DYIOLKQ3.js +0 -2
- package/dist/cli/chunks/router-DBBW4NC2.js +0 -2
- package/dist/cli/chunks/routing-feedback-W35QHCL4.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-X3NSL25Z.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-TZR7GDOK.js +0 -2
- package/dist/cli/chunks/rvf-migration-coordinator-4ATTHGHD.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-HD25ZYV5.js +0 -2
- package/dist/cli/chunks/safe-db-ZS2QKANY.js +0 -2
- package/dist/cli/chunks/schedule-ZH6VNA32.js +0 -2
- package/dist/cli/chunks/scheduler-T6CD74B6.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-47WU5EKZ.js +0 -2
- package/dist/cli/chunks/sync-3MUV6S5E.js +0 -2
- package/dist/cli/chunks/task-handler-74MZN2EO.js +0 -62
- package/dist/cli/chunks/test-runner-process-2NPW3UDQ.js +0 -2
- package/dist/cli/chunks/token-bootstrap-TTRCECLP.js +0 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-RZAND65G.js +0 -2
- package/dist/cli/chunks/unified-memory-FZ5K2C7W.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-VREWX56M.js +0 -2
- package/dist/cli/chunks/unified-persistence-YZGMKX6B.js +0 -2
- package/dist/cli/chunks/visual-security-GXGSFBVA.js +0 -2
- package/dist/cli/chunks/witness-chain-MRJKVCOW.js +0 -2
- package/dist/cli/chunks/witness-chain-WWHJKITG.js +0 -2
- package/dist/cli/chunks/witness-chain-repair-5SAXPETG.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-SG7DV72E.js +0 -2
- package/dist/cli/chunks/wrappers-5QFMCKXL.js +0 -2
|
@@ -77,6 +77,17 @@ export declare class DeltaTracker {
|
|
|
77
77
|
initialize(): void;
|
|
78
78
|
private prepareStatements;
|
|
79
79
|
private ensureInitialized;
|
|
80
|
+
/**
|
|
81
|
+
* createGenesis() through the shared connection's write queue (#1283). The
|
|
82
|
+
* version check and the insert run as one queued unit.
|
|
83
|
+
*/
|
|
84
|
+
createGenesisWhenUnlocked(patternId: string, snapshot: object, metadata?: Record<string, unknown>): Promise<DeltaEvent>;
|
|
85
|
+
/**
|
|
86
|
+
* recordDelta() through the shared connection's write queue (#1283). Reading
|
|
87
|
+
* the current version, the insert and retention run as one queued unit, so
|
|
88
|
+
* two deltas cannot get the same version number.
|
|
89
|
+
*/
|
|
90
|
+
recordDeltaWhenUnlocked(patternId: string, before: object, after: object, metadata?: Record<string, unknown>): Promise<DeltaEvent>;
|
|
80
91
|
/**
|
|
81
92
|
* Create a genesis snapshot for a pattern (version 0).
|
|
82
93
|
* The full object is stored in metadata.snapshot; patches are empty.
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* @module integrations/ruvector/delta-tracker
|
|
9
9
|
*/
|
|
10
10
|
import { v4 as uuidv4 } from 'uuid';
|
|
11
|
+
import { writeWhenUnlockedOn } from '../../shared/sqlite-write-queue.js';
|
|
11
12
|
import * as fastJsonPatchNs from 'fast-json-patch';
|
|
12
13
|
// fast-json-patch ships two entry points with different export shapes: its CJS
|
|
13
14
|
// entry (index.js) attaches named exports directly via Object.assign(exports,
|
|
@@ -156,6 +157,21 @@ export class DeltaTracker {
|
|
|
156
157
|
// --------------------------------------------------------------------------
|
|
157
158
|
// Public API
|
|
158
159
|
// --------------------------------------------------------------------------
|
|
160
|
+
/**
|
|
161
|
+
* createGenesis() through the shared connection's write queue (#1283). The
|
|
162
|
+
* version check and the insert run as one queued unit.
|
|
163
|
+
*/
|
|
164
|
+
createGenesisWhenUnlocked(patternId, snapshot, metadata) {
|
|
165
|
+
return writeWhenUnlockedOn(this.db, () => this.createGenesis(patternId, snapshot, metadata));
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* recordDelta() through the shared connection's write queue (#1283). Reading
|
|
169
|
+
* the current version, the insert and retention run as one queued unit, so
|
|
170
|
+
* two deltas cannot get the same version number.
|
|
171
|
+
*/
|
|
172
|
+
recordDeltaWhenUnlocked(patternId, before, after, metadata) {
|
|
173
|
+
return writeWhenUnlockedOn(this.db, () => this.recordDelta(patternId, before, after, metadata));
|
|
174
|
+
}
|
|
159
175
|
/**
|
|
160
176
|
* Create a genesis snapshot for a pattern (version 0).
|
|
161
177
|
* The full object is stored in metadata.snapshot; patches are empty.
|
|
@@ -95,6 +95,8 @@ export declare class PersistentSONAEngine {
|
|
|
95
95
|
private initPromise;
|
|
96
96
|
private pendingSaves;
|
|
97
97
|
private saveTimer;
|
|
98
|
+
/** The deferred batch currently being written, if any (#1283). */
|
|
99
|
+
private flushInFlight;
|
|
98
100
|
private consecutiveSaveFailures;
|
|
99
101
|
private serverClient;
|
|
100
102
|
constructor(config: PersistentSONAConfig);
|
|
@@ -419,6 +421,14 @@ export declare class PersistentSONAEngine {
|
|
|
419
421
|
* Schedule batched save
|
|
420
422
|
*/
|
|
421
423
|
private scheduleSave;
|
|
424
|
+
/**
|
|
425
|
+
* Write the batched patterns. Each write is queued on the shared connection
|
|
426
|
+
* (#1283): in the MCP server a locked memory.db no longer freezes the event
|
|
427
|
+
* loop for the whole busy_timeout per pattern; the write retries
|
|
428
|
+
* asynchronously instead. A row that still fails stays pending and the batch
|
|
429
|
+
* is retried with backoff, as before.
|
|
430
|
+
*/
|
|
431
|
+
private flushPendingSaves;
|
|
422
432
|
/**
|
|
423
433
|
* Update pattern usage in SQLite
|
|
424
434
|
*/
|
|
@@ -29,6 +29,7 @@ import { getUnifiedPersistence } from '../../kernel/unified-persistence.js';
|
|
|
29
29
|
import { toErrorMessage } from '../../shared/error-utils.js';
|
|
30
30
|
import { safeJsonParse } from '../../shared/safe-json.js';
|
|
31
31
|
import { LoggerFactory } from '../../logging/index.js';
|
|
32
|
+
import { writeWhenUnlockedOn } from '../../shared/sqlite-write-queue.js';
|
|
32
33
|
const logger = LoggerFactory.create('sona-persistence');
|
|
33
34
|
// ============================================================================
|
|
34
35
|
// Schema (added to unified-memory.ts as part of migration)
|
|
@@ -112,6 +113,8 @@ export class PersistentSONAEngine {
|
|
|
112
113
|
initPromise = null;
|
|
113
114
|
pendingSaves = new Map();
|
|
114
115
|
saveTimer = null;
|
|
116
|
+
/** The deferred batch currently being written, if any (#1283). */
|
|
117
|
+
flushInFlight = null;
|
|
115
118
|
consecutiveSaveFailures = 0;
|
|
116
119
|
serverClient = null;
|
|
117
120
|
constructor(config) {
|
|
@@ -801,6 +804,10 @@ export class PersistentSONAEngine {
|
|
|
801
804
|
* Close the engine
|
|
802
805
|
*/
|
|
803
806
|
async close() {
|
|
807
|
+
// Let a deferred batch that is already writing finish first (#1283); it
|
|
808
|
+
// may schedule a retry, which the clearTimeout below then cancels.
|
|
809
|
+
if (this.flushInFlight)
|
|
810
|
+
await this.flushInFlight;
|
|
804
811
|
// Flush pending saves
|
|
805
812
|
if (this.saveTimer) {
|
|
806
813
|
clearTimeout(this.saveTimer);
|
|
@@ -808,9 +815,9 @@ export class PersistentSONAEngine {
|
|
|
808
815
|
}
|
|
809
816
|
if (this.pendingSaves.size > 0) {
|
|
810
817
|
const failures = [];
|
|
811
|
-
for (const pattern of this.pendingSaves.values()) {
|
|
818
|
+
for (const pattern of Array.from(this.pendingSaves.values())) {
|
|
812
819
|
try {
|
|
813
|
-
this.savePatternToDb(pattern);
|
|
820
|
+
await writeWhenUnlockedOn(this.db, () => this.savePatternToDb(pattern));
|
|
814
821
|
this.pendingSaves.delete(pattern.id);
|
|
815
822
|
}
|
|
816
823
|
catch (error) {
|
|
@@ -1085,33 +1092,51 @@ export class PersistentSONAEngine {
|
|
|
1085
1092
|
}
|
|
1086
1093
|
this.saveTimer = setTimeout(() => {
|
|
1087
1094
|
this.saveTimer = null;
|
|
1088
|
-
const
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
}
|
|
1094
|
-
catch (error) {
|
|
1095
|
-
logger.warn('Deferred SONA save failed; retaining pending pattern', {
|
|
1096
|
-
patternId: pattern.id, error: toErrorMessage(error),
|
|
1097
|
-
});
|
|
1098
|
-
}
|
|
1099
|
-
}
|
|
1100
|
-
if (this.pendingSaves.size > 0) {
|
|
1101
|
-
this.consecutiveSaveFailures++;
|
|
1102
|
-
// Stop after five failed batches; close() can still flush retained rows.
|
|
1103
|
-
if (this.consecutiveSaveFailures < 5 && this.db?.open) {
|
|
1104
|
-
this.scheduleSave(Math.min(60000, Math.max(1000, this.config.autoSaveInterval) * 2 ** (this.consecutiveSaveFailures - 1)));
|
|
1105
|
-
}
|
|
1106
|
-
}
|
|
1107
|
-
else {
|
|
1108
|
-
this.consecutiveSaveFailures = 0;
|
|
1109
|
-
}
|
|
1095
|
+
const flush = this.flushPendingSaves().finally(() => {
|
|
1096
|
+
if (this.flushInFlight === flush)
|
|
1097
|
+
this.flushInFlight = null;
|
|
1098
|
+
});
|
|
1099
|
+
this.flushInFlight = flush;
|
|
1110
1100
|
}, delayMs);
|
|
1111
1101
|
// The initial batch must flush on natural exit; only failure retries are optional.
|
|
1112
1102
|
if (this.consecutiveSaveFailures > 0)
|
|
1113
1103
|
this.saveTimer.unref();
|
|
1114
1104
|
}
|
|
1105
|
+
/**
|
|
1106
|
+
* Write the batched patterns. Each write is queued on the shared connection
|
|
1107
|
+
* (#1283): in the MCP server a locked memory.db no longer freezes the event
|
|
1108
|
+
* loop for the whole busy_timeout per pattern; the write retries
|
|
1109
|
+
* asynchronously instead. A row that still fails stays pending and the batch
|
|
1110
|
+
* is retried with backoff, as before.
|
|
1111
|
+
*/
|
|
1112
|
+
async flushPendingSaves() {
|
|
1113
|
+
const patterns = Array.from(this.pendingSaves.values());
|
|
1114
|
+
let failed = 0;
|
|
1115
|
+
for (const pattern of patterns) {
|
|
1116
|
+
try {
|
|
1117
|
+
await writeWhenUnlockedOn(this.db, () => this.savePatternToDb(pattern));
|
|
1118
|
+
// A newer snapshot queued during the write stays pending.
|
|
1119
|
+
if (this.pendingSaves.get(pattern.id) === pattern)
|
|
1120
|
+
this.pendingSaves.delete(pattern.id);
|
|
1121
|
+
}
|
|
1122
|
+
catch (error) {
|
|
1123
|
+
failed++;
|
|
1124
|
+
logger.warn('Deferred SONA save failed; retaining pending pattern', {
|
|
1125
|
+
patternId: pattern.id, error: toErrorMessage(error),
|
|
1126
|
+
});
|
|
1127
|
+
}
|
|
1128
|
+
}
|
|
1129
|
+
if (failed > 0) {
|
|
1130
|
+
this.consecutiveSaveFailures++;
|
|
1131
|
+
// Stop after five failed batches; close() can still flush retained rows.
|
|
1132
|
+
if (this.consecutiveSaveFailures < 5 && this.db?.open) {
|
|
1133
|
+
this.scheduleSave(Math.min(60000, Math.max(1000, this.config.autoSaveInterval) * 2 ** (this.consecutiveSaveFailures - 1)));
|
|
1134
|
+
}
|
|
1135
|
+
}
|
|
1136
|
+
else {
|
|
1137
|
+
this.consecutiveSaveFailures = 0;
|
|
1138
|
+
}
|
|
1139
|
+
}
|
|
1115
1140
|
/**
|
|
1116
1141
|
* Update pattern usage in SQLite
|
|
1117
1142
|
*/
|
|
@@ -69,6 +69,9 @@ export declare class UnifiedMemoryManager {
|
|
|
69
69
|
private initialized;
|
|
70
70
|
private vectorsLoaded;
|
|
71
71
|
private initPromise;
|
|
72
|
+
/** Tail of the FIFO write queue and how many writes are in it (#1263). */
|
|
73
|
+
private writeQueue;
|
|
74
|
+
private queuedWrites;
|
|
72
75
|
private preparedStatements;
|
|
73
76
|
private vectorIndex;
|
|
74
77
|
private crdtStore;
|
|
@@ -115,6 +118,19 @@ export declare class UnifiedMemoryManager {
|
|
|
115
118
|
*/
|
|
116
119
|
private migrateToV11GoapExecutionSteps;
|
|
117
120
|
private loadVectorIndex;
|
|
121
|
+
/**
|
|
122
|
+
* Run a write on the shared connection (#1263). Under the MCP server's lock
|
|
123
|
+
* wait cap each attempt blocks for at most the cap and the write retries
|
|
124
|
+
* asynchronously, so a locked memory.db does not freeze the event loop. The
|
|
125
|
+
* write still fails with SQLITE_BUSY once the configured busyTimeout has
|
|
126
|
+
* passed. Without a cap (CLI) this is one attempt with the full busyTimeout.
|
|
127
|
+
*
|
|
128
|
+
* Writes run one at a time in call order (FIFO), so a later write to the
|
|
129
|
+
* same key cannot land before an earlier one that is still retrying. A
|
|
130
|
+
* failed write does not hold up the next. With nothing queued the first
|
|
131
|
+
* attempt runs synchronously, as the write did before.
|
|
132
|
+
*/
|
|
133
|
+
writeWhenUnlocked<T>(fn: () => T): Promise<T>;
|
|
118
134
|
kvSet(key: string, value: unknown, namespace?: string, ttl?: number): Promise<void>;
|
|
119
135
|
kvGet<T>(key: string, namespace?: string): Promise<T | undefined>;
|
|
120
136
|
kvDelete(key: string, namespace?: string): Promise<boolean>;
|
|
@@ -212,4 +228,12 @@ export declare class UnifiedMemoryManager {
|
|
|
212
228
|
export declare function getUnifiedMemory(config?: Partial<UnifiedMemoryConfig>): UnifiedMemoryManager;
|
|
213
229
|
export declare function initializeUnifiedMemory(config?: Partial<UnifiedMemoryConfig>): Promise<UnifiedMemoryManager>;
|
|
214
230
|
export declare function resetUnifiedMemory(): void;
|
|
231
|
+
/**
|
|
232
|
+
* Run a write on `db` through the shared manager's writeWhenUnlocked queue
|
|
233
|
+
* when `db` is that manager's connection (#1274), for modules that hold only
|
|
234
|
+
* the raw connection. The write then neither blocks the MCP server's event
|
|
235
|
+
* loop for the whole busy_timeout nor lands before an earlier queued write.
|
|
236
|
+
* A write on any other connection runs now, as before.
|
|
237
|
+
*/
|
|
238
|
+
export declare function writeWhenUnlockedOn<T>(db: DatabaseType, fn: () => T): Promise<T>;
|
|
215
239
|
//# sourceMappingURL=unified-memory.d.ts.map
|
|
@@ -23,6 +23,9 @@
|
|
|
23
23
|
*/
|
|
24
24
|
import { openDatabase as openSafeDatabase } from '../shared/safe-db.js';
|
|
25
25
|
import { safeJsonParse } from '../shared/safe-json.js';
|
|
26
|
+
import { capBusyTimeout } from '../shared/sqlite-lock-wait.js';
|
|
27
|
+
import { registerWriteQueue, unregisterWriteQueue, writeWhenUnlockedOn as queueWriteOn, } from '../shared/sqlite-write-queue.js';
|
|
28
|
+
import { isBusyError, retryWhileBusy, withBusyTimeout } from '../learning/dream/dream-lock-retry.js';
|
|
26
29
|
import { toErrorMessage } from '../shared/error-utils.js';
|
|
27
30
|
import * as fs from 'fs';
|
|
28
31
|
import * as os from 'os';
|
|
@@ -121,6 +124,9 @@ export class UnifiedMemoryManager {
|
|
|
121
124
|
initialized = false;
|
|
122
125
|
vectorsLoaded = false;
|
|
123
126
|
initPromise = null;
|
|
127
|
+
/** Tail of the FIFO write queue and how many writes are in it (#1263). */
|
|
128
|
+
writeQueue = Promise.resolve();
|
|
129
|
+
queuedWrites = 0;
|
|
124
130
|
preparedStatements = new Map();
|
|
125
131
|
// ADR-071 Phase 2C: Always use UnifiedHnswIndex (old implementations decommissioned)
|
|
126
132
|
vectorIndex = new UnifiedHnswIndex('qe-memory');
|
|
@@ -307,6 +313,8 @@ export class UnifiedMemoryManager {
|
|
|
307
313
|
}
|
|
308
314
|
this.vectorsLoaded = false;
|
|
309
315
|
this.initialized = true;
|
|
316
|
+
// #1283: modules holding only the raw connection queue their writes here.
|
|
317
|
+
registerWriteQueue(this.db, (fn) => this.writeWhenUnlocked(fn));
|
|
310
318
|
console.log(`[UnifiedMemory] Initialized: ${this.config.dbPath}`);
|
|
311
319
|
this.warnIfDuplicateDatabases();
|
|
312
320
|
}
|
|
@@ -558,14 +566,42 @@ export class UnifiedMemoryManager {
|
|
|
558
566
|
// ============================================================================
|
|
559
567
|
// KV Store Operations (v2 compatible)
|
|
560
568
|
// ============================================================================
|
|
569
|
+
/**
|
|
570
|
+
* Run a write on the shared connection (#1263). Under the MCP server's lock
|
|
571
|
+
* wait cap each attempt blocks for at most the cap and the write retries
|
|
572
|
+
* asynchronously, so a locked memory.db does not freeze the event loop. The
|
|
573
|
+
* write still fails with SQLITE_BUSY once the configured busyTimeout has
|
|
574
|
+
* passed. Without a cap (CLI) this is one attempt with the full busyTimeout.
|
|
575
|
+
*
|
|
576
|
+
* Writes run one at a time in call order (FIFO), so a later write to the
|
|
577
|
+
* same key cannot land before an earlier one that is still retrying. A
|
|
578
|
+
* failed write does not hold up the next. With nothing queued the first
|
|
579
|
+
* attempt runs synchronously, as the write did before.
|
|
580
|
+
*/
|
|
581
|
+
writeWhenUnlocked(fn) {
|
|
582
|
+
const run = () => retryWhileBusy(this.db, fn, {
|
|
583
|
+
waitMs: capBusyTimeout(this.config.busyTimeout),
|
|
584
|
+
budgetMs: this.config.busyTimeout,
|
|
585
|
+
});
|
|
586
|
+
// Queued writes yield to the event loop first, so one write's last attempt
|
|
587
|
+
// and the next one's first never block back to back.
|
|
588
|
+
const result = this.queuedWrites === 0
|
|
589
|
+
? run()
|
|
590
|
+
: this.writeQueue.then(() => new Promise((r) => setImmediate(r))).then(run);
|
|
591
|
+
this.queuedWrites++;
|
|
592
|
+
const settled = result.then(() => undefined, () => undefined);
|
|
593
|
+
this.writeQueue = settled;
|
|
594
|
+
void settled.then(() => { this.queuedWrites--; });
|
|
595
|
+
return result;
|
|
596
|
+
}
|
|
561
597
|
async kvSet(key, value, namespace = 'default', ttl) {
|
|
562
598
|
this.ensureInitialized();
|
|
563
599
|
const expiresAt = ttl ? Date.now() + ttl * 1000 : null;
|
|
564
600
|
const serialized = JSON.stringify(value);
|
|
565
|
-
this.db.prepare(`
|
|
601
|
+
await this.writeWhenUnlocked(() => this.db.prepare(`
|
|
566
602
|
INSERT OR REPLACE INTO kv_store (key, namespace, value, expires_at)
|
|
567
603
|
VALUES (?, ?, ?, ?)
|
|
568
|
-
`).run(key, namespace, serialized, expiresAt);
|
|
604
|
+
`).run(key, namespace, serialized, expiresAt));
|
|
569
605
|
// ADR-194: tamper-evident audit (no-op unless the proof-gate is enabled).
|
|
570
606
|
this.auditWrite('kvSet', namespace, key, serialized);
|
|
571
607
|
}
|
|
@@ -578,14 +614,22 @@ export class UnifiedMemoryManager {
|
|
|
578
614
|
if (!row)
|
|
579
615
|
return undefined;
|
|
580
616
|
if (row.expires_at && Date.now() > row.expires_at) {
|
|
581
|
-
|
|
617
|
+
try {
|
|
618
|
+
withBusyTimeout(this.db, capBusyTimeout(this.config.busyTimeout), () => this.db.prepare('DELETE FROM kv_store WHERE key = ? AND namespace = ?').run(key, namespace));
|
|
619
|
+
}
|
|
620
|
+
catch (error) {
|
|
621
|
+
// #1263: a read must not wait on a locked DB to tidy up; the row stays
|
|
622
|
+
// expired (filtered here) and kvCleanupExpired removes it later.
|
|
623
|
+
if (!isBusyError(error))
|
|
624
|
+
throw error;
|
|
625
|
+
}
|
|
582
626
|
return undefined;
|
|
583
627
|
}
|
|
584
628
|
return safeJsonParse(row.value);
|
|
585
629
|
}
|
|
586
630
|
async kvDelete(key, namespace = 'default') {
|
|
587
631
|
this.ensureInitialized();
|
|
588
|
-
const result = this.db.prepare('DELETE FROM kv_store WHERE key = ? AND namespace = ?').run(key, namespace);
|
|
632
|
+
const result = await this.writeWhenUnlocked(() => this.db.prepare('DELETE FROM kv_store WHERE key = ? AND namespace = ?').run(key, namespace));
|
|
589
633
|
// ADR-194: audit deletes too (no-op unless the proof-gate is enabled).
|
|
590
634
|
if (result.changes > 0)
|
|
591
635
|
this.auditWrite('kvDelete', namespace, key, '');
|
|
@@ -613,7 +657,7 @@ export class UnifiedMemoryManager {
|
|
|
613
657
|
}
|
|
614
658
|
async kvCleanupExpired() {
|
|
615
659
|
this.ensureInitialized();
|
|
616
|
-
const result = this.db.prepare('DELETE FROM kv_store WHERE expires_at IS NOT NULL AND expires_at < ?').run(Date.now());
|
|
660
|
+
const result = await this.writeWhenUnlocked(() => this.db.prepare('DELETE FROM kv_store WHERE expires_at IS NOT NULL AND expires_at < ?').run(Date.now()));
|
|
617
661
|
return result.changes;
|
|
618
662
|
}
|
|
619
663
|
// ============================================================================
|
|
@@ -716,10 +760,10 @@ export class UnifiedMemoryManager {
|
|
|
716
760
|
this.ensureInitialized();
|
|
717
761
|
const buffer = this.floatArrayToBuffer(embedding);
|
|
718
762
|
const metadataJson = metadata ? JSON.stringify(metadata) : null;
|
|
719
|
-
this.db.prepare(`
|
|
763
|
+
await this.writeWhenUnlocked(() => this.db.prepare(`
|
|
720
764
|
INSERT OR REPLACE INTO vectors (id, namespace, embedding, dimensions, metadata, updated_at)
|
|
721
765
|
VALUES (?, ?, ?, ?, ?, datetime('now'))
|
|
722
|
-
`).run(id, namespace, buffer, embedding.length, metadataJson);
|
|
766
|
+
`).run(id, namespace, buffer, embedding.length, metadataJson));
|
|
723
767
|
this.vectorIndex.add(id, embedding);
|
|
724
768
|
}
|
|
725
769
|
async vectorGet(id) {
|
|
@@ -736,7 +780,7 @@ export class UnifiedMemoryManager {
|
|
|
736
780
|
}
|
|
737
781
|
async vectorDelete(id) {
|
|
738
782
|
this.ensureInitialized();
|
|
739
|
-
const result = this.db.prepare('DELETE FROM vectors WHERE id = ?').run(id);
|
|
783
|
+
const result = await this.writeWhenUnlocked(() => this.db.prepare('DELETE FROM vectors WHERE id = ?').run(id));
|
|
740
784
|
this.vectorIndex.remove(id);
|
|
741
785
|
return result.changes > 0;
|
|
742
786
|
}
|
|
@@ -1037,6 +1081,7 @@ export class UnifiedMemoryManager {
|
|
|
1037
1081
|
// hnswlib-node has none of those constraints; multiple instances
|
|
1038
1082
|
// coexist freely.
|
|
1039
1083
|
this.vectorIndex.clear();
|
|
1084
|
+
unregisterWriteQueue(this.db);
|
|
1040
1085
|
this.db.close();
|
|
1041
1086
|
this.db = null;
|
|
1042
1087
|
this.initialized = false;
|
|
@@ -1076,6 +1121,16 @@ export async function initializeUnifiedMemory(config) {
|
|
|
1076
1121
|
export function resetUnifiedMemory() {
|
|
1077
1122
|
UnifiedMemoryManager.resetInstance();
|
|
1078
1123
|
}
|
|
1124
|
+
/**
|
|
1125
|
+
* Run a write on `db` through the shared manager's writeWhenUnlocked queue
|
|
1126
|
+
* when `db` is that manager's connection (#1274), for modules that hold only
|
|
1127
|
+
* the raw connection. The write then neither blocks the MCP server's event
|
|
1128
|
+
* loop for the whole busy_timeout nor lands before an earlier queued write.
|
|
1129
|
+
* A write on any other connection runs now, as before.
|
|
1130
|
+
*/
|
|
1131
|
+
export function writeWhenUnlockedOn(db, fn) {
|
|
1132
|
+
return queueWriteOn(db, fn);
|
|
1133
|
+
}
|
|
1079
1134
|
// ============================================================================
|
|
1080
1135
|
// Process Exit Handlers
|
|
1081
1136
|
// ============================================================================
|
|
@@ -155,7 +155,7 @@ export class AQELearningEngine {
|
|
|
155
155
|
if (persistence.isInitialized()) {
|
|
156
156
|
const { PatternNullStore } = await import('./pattern-null-store.js');
|
|
157
157
|
const nullStore = new PatternNullStore(persistence.getDatabase());
|
|
158
|
-
this.experienceCapture.setNullRecorder((record) => nullStore.
|
|
158
|
+
this.experienceCapture.setNullRecorder((record) => nullStore.recordNullWhenUnlocked(record));
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
catch (e) {
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
* fail-soft (errors are logged at debug level and swallowed) — pattern row
|
|
19
19
|
* persistence must not regress when embedding computation fails.
|
|
20
20
|
*/
|
|
21
|
+
import { writeWhenUnlockedOn } from '../shared/sqlite-write-queue.js';
|
|
21
22
|
import { computeRealEmbedding, DEFAULT_EMBEDDING_CONFIG, getActiveEmbeddingSpaceIdentity, } from './real-embeddings.js';
|
|
22
23
|
/**
|
|
23
24
|
* Compute an embedding for a pattern (`name + description + tags`) and persist
|
|
@@ -44,8 +45,9 @@ export async function ensurePatternEmbedding(db, patternId, name, description, t
|
|
|
44
45
|
const spaceId = getActiveEmbeddingSpaceIdentity()?.spaceId;
|
|
45
46
|
if (!spaceId)
|
|
46
47
|
throw new Error('VECTOR_SPACE_UNVERIFIED: embedder has no runtime provenance');
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
// #1283: queued on the shared connection so a locked memory.db does not freeze the MCP server.
|
|
49
|
+
await writeWhenUnlockedOn(db, () => db.prepare(`INSERT OR REPLACE INTO qe_pattern_embeddings (pattern_id, embedding, dimension, model, space_id)
|
|
50
|
+
VALUES (?, ?, ?, ?, ?)`).run(patternId, buffer, embedding.length, fullConfig.modelName, spaceId));
|
|
49
51
|
}
|
|
50
52
|
catch (error) {
|
|
51
53
|
// Non-fatal: pattern row already persisted; embedding can be backfilled later.
|
|
@@ -82,6 +82,16 @@ interface ParsedEndpoint {
|
|
|
82
82
|
*/
|
|
83
83
|
export declare function redactEndpoint(endpoint: string): string;
|
|
84
84
|
export declare function parseEndpoint(endpoint: string): ParsedEndpoint;
|
|
85
|
+
/**
|
|
86
|
+
* #1216: a connect or request timeout. The host did not answer within the
|
|
87
|
+
* budget, so the breaker opens on the first one instead of counting it as one
|
|
88
|
+
* failure of `failureThreshold`.
|
|
89
|
+
*/
|
|
90
|
+
export declare class EmbedderEndpointTimeoutError extends Error {
|
|
91
|
+
readonly phase: 'connect' | 'request';
|
|
92
|
+
readonly limitMs: number;
|
|
93
|
+
constructor(phase: 'connect' | 'request', limitMs: number);
|
|
94
|
+
}
|
|
85
95
|
/**
|
|
86
96
|
* OpenAI-compatible embeddings client with keep-alive, circuit breaker, and identity probe.
|
|
87
97
|
*/
|
|
@@ -93,7 +103,28 @@ export declare class EmbedderEndpointClient {
|
|
|
93
103
|
private cachedIdentity;
|
|
94
104
|
/** True while a probe is in flight — prevents the embed() lazy-probe race. */
|
|
95
105
|
private probeInFlight;
|
|
106
|
+
/**
|
|
107
|
+
* #1216: set when the breaker window elapsed and no probe has succeeded
|
|
108
|
+
* since. The next probe is the breaker's half-open trial; it runs in the
|
|
109
|
+
* background so no caller waits on a host that may still not answer.
|
|
110
|
+
*/
|
|
111
|
+
private trialPending;
|
|
112
|
+
/** #1216: requests waiting on the host, abandoned when the breaker opens. */
|
|
113
|
+
private readonly inFlight;
|
|
96
114
|
constructor(options: EmbedderEndpointClientOptions);
|
|
115
|
+
/**
|
|
116
|
+
* #1216: the breaker opened, so the host is treated as down. Requests that
|
|
117
|
+
* are still waiting on it fail now rather than each waiting out its own
|
|
118
|
+
* timeout.
|
|
119
|
+
*/
|
|
120
|
+
private abandonInFlight;
|
|
121
|
+
/**
|
|
122
|
+
* #1216: true while the endpoint is not known to work: the breaker is open,
|
|
123
|
+
* or its window elapsed and the trial probe has not succeeded yet.
|
|
124
|
+
*/
|
|
125
|
+
needsTrial(): boolean;
|
|
126
|
+
/** Start the half-open trial probe in the background (one at a time). */
|
|
127
|
+
private startTrialProbe;
|
|
97
128
|
/** Public, redacted endpoint URL for logs/metrics. */
|
|
98
129
|
getSafeEndpoint(): string;
|
|
99
130
|
/**
|