agentic-qe 3.15.15 → 3.15.17
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 +168 -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-OMILP6KH.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-EUF4XVUC.js → agent-booster-wasm-6BUOFQZA.js} +2 -2
- package/dist/cli/chunks/{agent-handler-MOX6PSIQ.js → agent-handler-HPDK3JI3.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-AEXKIGDG.js → agent-memory-branch-5QKUTWK5.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-OXH5CCOS.js +2 -0
- package/dist/cli/chunks/{arena-IQ5ZZDRF.js → arena-7OKPMNHD.js} +2 -2
- package/dist/cli/chunks/{arena-M7GA3CVG.js → arena-HZ35LESR.js} +4 -4
- package/dist/cli/chunks/{audit-4IPBMKWB.js → audit-XI575SVK.js} +3 -3
- package/dist/cli/chunks/base-MAK2BLTG.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-IKDKJ2IE.js → better-sqlite3-YO5X7ZJS.js} +2 -2
- package/dist/cli/chunks/{brain-handler-5NQUDH4W.js → brain-handler-GCQZFZGQ.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-KSXELWRC.js → branch-enumerator-N6G44UU2.js} +2 -2
- package/dist/cli/chunks/{browser-6LACARWE.js → browser-EVKPTLOI.js} +2 -2
- package/dist/cli/chunks/browser-workflow-IR3VF2TL.js +2 -0
- package/dist/cli/chunks/{chunk-DKX4GNRU.js → chunk-2EQK7B5L.js} +2 -2
- package/dist/cli/chunks/chunk-2PCEMDIX.js +757 -0
- package/dist/cli/chunks/{chunk-JCQGJGGZ.js → chunk-2UUZCQSD.js} +7 -7
- package/dist/cli/chunks/chunk-2YWYW7NU.js +21 -0
- package/dist/cli/chunks/{chunk-PFQCV6YS.js → chunk-45223KK6.js} +6 -6
- package/dist/cli/chunks/chunk-4EJLHNER.js +12 -0
- package/dist/cli/chunks/{chunk-E5G4WZ2T.js → chunk-4L6WX5KC.js} +1 -1
- package/dist/cli/chunks/{chunk-UQPA33UK.js → chunk-4NKZU2JZ.js} +2 -2
- package/dist/cli/chunks/{chunk-OBDONJQM.js → chunk-4UKTIQDT.js} +2 -2
- package/dist/cli/chunks/{chunk-7BLZHFKD.js → chunk-4YM45Z5B.js} +1 -1
- package/dist/cli/chunks/{chunk-ZWBGYJ7K.js → chunk-5FSPELOG.js} +2 -2
- package/dist/cli/chunks/{chunk-NWIIYHT6.js → chunk-5WATBVU6.js} +2 -2
- package/dist/cli/chunks/{chunk-7ACCBHRB.js → chunk-5WYZVSL2.js} +1 -1
- package/dist/cli/chunks/{chunk-ZYJB6FML.js → chunk-6LSZCEW2.js} +1 -1
- package/dist/cli/chunks/{chunk-U62OUXBF.js → chunk-6V6BD6PH.js} +1 -1
- package/dist/cli/chunks/{chunk-MIA447GY.js → chunk-74MDUIAZ.js} +1 -1
- package/dist/cli/chunks/{chunk-AJPROCDW.js → chunk-776K4ZLE.js} +2 -2
- package/dist/cli/chunks/{chunk-CBK5CT6T.js → chunk-7BSOO3CY.js} +2 -2
- package/dist/cli/chunks/{chunk-ERN56H6S.js → chunk-7SNSI4VY.js} +1 -1
- package/dist/cli/chunks/{chunk-JKJOB65O.js → chunk-A4BVDYIL.js} +1 -1
- package/dist/cli/chunks/{chunk-MV55NXTD.js → chunk-AGCS5GSO.js} +2 -2
- package/dist/cli/chunks/{chunk-XIVVTYM2.js → chunk-AVHYJ3XP.js} +2 -2
- package/dist/cli/chunks/{chunk-KJBPB7P5.js → chunk-BE7ZHM34.js} +2 -2
- package/dist/cli/chunks/{chunk-GKSMRBHU.js → chunk-BHQ2DLJU.js} +1 -1
- package/dist/cli/chunks/{chunk-7XB3FCKM.js → chunk-BKHEQIRZ.js} +2 -2
- package/dist/cli/chunks/{chunk-G242G224.js → chunk-BSIWI4ES.js} +2 -2
- package/dist/cli/chunks/{chunk-NQS3BWS6.js → chunk-C7QLLMYI.js} +1 -1
- package/dist/cli/chunks/{chunk-XWIAZG3C.js → chunk-CMN7PU2H.js} +2 -2
- package/dist/cli/chunks/{chunk-4X3SWKBA.js → chunk-COTQ44YO.js} +2 -2
- package/dist/cli/chunks/{chunk-3J3RNJNX.js → chunk-CQER6IJ5.js} +1 -1
- package/dist/cli/chunks/{chunk-6KCSKGVY.js → chunk-CVPXHDQU.js} +1 -1
- package/dist/cli/chunks/{chunk-R6LHJ7ME.js → chunk-CVYPMGUM.js} +2 -2
- package/dist/cli/chunks/chunk-CXCMATZ6.js +3 -0
- package/dist/cli/chunks/{chunk-PYPS65P7.js → chunk-D75GLKEL.js} +2 -2
- package/dist/cli/chunks/chunk-DCDSN67A.js +2 -0
- package/dist/cli/chunks/{chunk-6RBTS3NF.js → chunk-DHKSPOUQ.js} +2 -2
- package/dist/cli/chunks/{chunk-JW74KRBC.js → chunk-DJDVD6RM.js} +2 -2
- package/dist/cli/chunks/{chunk-X33CWRDF.js → chunk-DNVRTJKB.js} +2 -2
- package/dist/cli/chunks/{chunk-BQ47GQPK.js → chunk-DS5IFRY6.js} +2 -2
- package/dist/cli/chunks/{chunk-AHMWD6JG.js → chunk-E7XIMOKW.js} +2 -2
- package/dist/cli/chunks/{chunk-SON6ZRH3.js → chunk-ECKHDHR2.js} +2 -2
- package/dist/cli/chunks/chunk-EPVPXHL7.js +2 -0
- package/dist/cli/chunks/{chunk-BP5T3OEV.js → chunk-ERYADKMZ.js} +4 -4
- package/dist/cli/chunks/{chunk-DUKE27HC.js → chunk-EUWG2JG4.js} +2 -2
- package/dist/cli/chunks/chunk-FAQ24UHB.js +29 -0
- package/dist/cli/chunks/{chunk-XG4F4XH4.js → chunk-FBBPRVNF.js} +2 -2
- package/dist/cli/chunks/{chunk-5PTAFGJT.js → chunk-FBSBXCZS.js} +2 -2
- package/dist/cli/chunks/chunk-G2X3OLMN.js +153 -0
- package/dist/cli/chunks/{chunk-IXL5ZHWJ.js → chunk-GG7PMTHD.js} +1 -1
- package/dist/cli/chunks/{chunk-6BRQPHMZ.js → chunk-GN6OE3JT.js} +1 -1
- package/dist/cli/chunks/{chunk-SZAZQZWI.js → chunk-GPPTRKEM.js} +2 -2
- package/dist/cli/chunks/{chunk-LTQVUAPH.js → chunk-H2LHWZRE.js} +2 -2
- package/dist/cli/chunks/{chunk-WVXJ2QIG.js → chunk-HAQJFUAQ.js} +2 -2
- package/dist/cli/chunks/{chunk-C5CXL3JP.js → chunk-HD6W6PHV.js} +2 -2
- package/dist/cli/chunks/{chunk-K3WZICFA.js → chunk-HFZD5KLR.js} +1 -1
- package/dist/cli/chunks/{chunk-VCXI4XC4.js → chunk-HRUHHHVR.js} +2 -2
- package/dist/cli/chunks/{chunk-GV2QE5TO.js → chunk-HVT7RMGV.js} +1 -1
- package/dist/cli/chunks/chunk-HWQPMUSN.js +2 -0
- package/dist/cli/chunks/{chunk-4ATQP3PR.js → chunk-HZ5O7G2P.js} +1 -1
- package/dist/cli/chunks/{chunk-XHHWABJV.js → chunk-IHQGNDMX.js} +2 -2
- package/dist/cli/chunks/{chunk-UUBIQR6A.js → chunk-IJSROBM6.js} +18 -18
- package/dist/cli/chunks/{chunk-PS6UMZVK.js → chunk-IJZFJPHS.js} +2 -2
- package/dist/cli/chunks/{chunk-C4KLXFJP.js → chunk-IKB3M7OF.js} +1 -1
- package/dist/cli/chunks/{chunk-SJCKCSN3.js → chunk-INI3Q4CN.js} +1 -1
- package/dist/cli/chunks/{chunk-LYJHUNBK.js → chunk-IOWEBPXJ.js} +2 -2
- package/dist/cli/chunks/{chunk-HTZSRMHW.js → chunk-IQL6XRF5.js} +2 -2
- package/dist/cli/chunks/{chunk-DEKR3CTS.js → chunk-IRHXGCQR.js} +2 -2
- package/dist/cli/chunks/{chunk-TODNOP7C.js → chunk-J3QFJI2Y.js} +6 -6
- package/dist/cli/chunks/{chunk-OLZH5LRT.js → chunk-J6QRNQJF.js} +11 -11
- package/dist/cli/chunks/{chunk-HL2ANKN3.js → chunk-J7Q5TXFZ.js} +2 -2
- package/dist/cli/chunks/{chunk-6YVMX2TC.js → chunk-JHKKIJT2.js} +2 -2
- package/dist/cli/chunks/{chunk-K3XBQC3R.js → chunk-JI33PMPZ.js} +1 -1
- package/dist/cli/chunks/{chunk-74YG72NQ.js → chunk-JRIJM4LE.js} +3 -3
- package/dist/cli/chunks/{chunk-TDQWTSBS.js → chunk-JVWZAE2H.js} +2 -2
- package/dist/cli/chunks/{chunk-RDMRY7CT.js → chunk-K7WAI662.js} +1 -1
- package/dist/cli/chunks/{chunk-C4RTAVC6.js → chunk-KB34MTFZ.js} +2 -2
- package/dist/cli/chunks/{chunk-2CKERSMB.js → chunk-KPIPVSIP.js} +2 -2
- package/dist/cli/chunks/{chunk-LNX74WHQ.js → chunk-KR2TAAF6.js} +1 -1
- package/dist/cli/chunks/{chunk-73PBAWAF.js → chunk-KT2QCXO6.js} +2 -2
- package/dist/cli/chunks/{chunk-BBRROA3Z.js → chunk-KTORRIX3.js} +2 -2
- package/dist/cli/chunks/{chunk-GCHYOPRZ.js → chunk-LCWEQRZI.js} +2 -2
- package/dist/cli/chunks/{chunk-M4WMSCAE.js → chunk-LG5PPJT7.js} +1 -1
- package/dist/cli/chunks/{chunk-UAQZI6N4.js → chunk-LIF6UWHV.js} +2 -2
- package/dist/cli/chunks/chunk-LN7NKE3N.js +27 -0
- package/dist/cli/chunks/chunk-LOLSZG5J.js +2 -0
- package/dist/cli/chunks/{chunk-BLL2XU7A.js → chunk-LOMT4UC2.js} +2 -2
- package/dist/cli/chunks/chunk-LRKLATSH.js +2 -0
- package/dist/cli/chunks/{chunk-EKP2SC77.js → chunk-LRY6UIRI.js} +2 -2
- package/dist/cli/chunks/{chunk-JCZCJE6X.js → chunk-LV7UIK4Q.js} +2 -2
- package/dist/cli/chunks/{chunk-LVABQNRF.js → chunk-M2YI5YUR.js} +2 -2
- package/dist/cli/chunks/{chunk-RIRZHOS2.js → chunk-MCXW3DKE.js} +2 -2
- package/dist/cli/chunks/{chunk-ZSOMUTNL.js → chunk-MGZ6XZHU.js} +1 -1
- package/dist/cli/chunks/{chunk-H5DER3JY.js → chunk-MLMD3I75.js} +1 -1
- package/dist/cli/chunks/{chunk-UXIY4IAI.js → chunk-MVVVGQJ6.js} +2 -2
- package/dist/cli/chunks/{chunk-WUOOX7UG.js → chunk-ND72UDVH.js} +2 -2
- package/dist/cli/chunks/{chunk-AKZO6GGG.js → chunk-NE3LRUNC.js} +4 -4
- package/dist/cli/chunks/{chunk-O6EWL5DQ.js → chunk-NKUHMA4T.js} +2 -2
- package/dist/cli/chunks/{chunk-L32JNNKL.js → chunk-NQFDJ6BT.js} +1 -1
- package/dist/cli/chunks/{chunk-T66PPF4D.js → chunk-NZJVDOUN.js} +31 -31
- package/dist/cli/chunks/{chunk-EBTNMQSS.js → chunk-O7VJ3VKD.js} +2 -2
- package/dist/cli/chunks/{chunk-76P32JVU.js → chunk-OJIUIEI4.js} +1 -1
- package/dist/cli/chunks/chunk-OO2M2QUV.js +12 -0
- package/dist/cli/chunks/{chunk-CAOUV5GZ.js → chunk-ORQ2YBRR.js} +2 -2
- package/dist/cli/chunks/chunk-OWIQR6N2.js +4 -0
- package/dist/cli/chunks/chunk-OWIZBZLN.js +14 -0
- package/dist/cli/chunks/{chunk-J3FP5UGL.js → chunk-P3D7SEHW.js} +1 -1
- package/dist/cli/chunks/{chunk-3CYNZFKH.js → chunk-P4OB6WDJ.js} +1 -1
- package/dist/cli/chunks/{chunk-LHMQIZ6B.js → chunk-PCL5JRKN.js} +2 -2
- package/dist/cli/chunks/{chunk-KLTMOXIK.js → chunk-PIWGKGWP.js} +2 -2
- package/dist/cli/chunks/{chunk-VMAM46HQ.js → chunk-PK34KJH7.js} +2 -2
- package/dist/cli/chunks/chunk-POPSZDI2.js +65 -0
- package/dist/cli/chunks/{chunk-JUDUBQHA.js → chunk-Q6F3DYZN.js} +2 -2
- package/dist/cli/chunks/{chunk-Y2OX6KGN.js → chunk-QJSSUBO3.js} +2 -2
- package/dist/cli/chunks/{chunk-XM6ZVFM5.js → chunk-QN7HP2UW.js} +235 -173
- package/dist/cli/chunks/{chunk-T4GE7MPI.js → chunk-QSQNXBD2.js} +2 -2
- package/dist/cli/chunks/{chunk-5C62XMJR.js → chunk-QTQDX4TZ.js} +33 -33
- package/dist/cli/chunks/{chunk-DURD37JZ.js → chunk-R3KBOQ3O.js} +2 -2
- package/dist/cli/chunks/{chunk-LJMYRTJ7.js → chunk-REY52O7J.js} +1 -1
- package/dist/cli/chunks/{chunk-W5ZJG2OU.js → chunk-RKCN4B26.js} +2 -2
- package/dist/cli/chunks/chunk-S3DT5TPR.js +14 -0
- package/dist/cli/chunks/{chunk-4HKAD25N.js → chunk-S3TBOKAZ.js} +22 -22
- package/dist/cli/chunks/{chunk-2IIXCEMS.js → chunk-SAEECT23.js} +2 -2
- package/dist/cli/chunks/{chunk-LB2LGEDP.js → chunk-SAZ4PJBR.js} +2 -2
- package/dist/cli/chunks/{chunk-FOOW4JVS.js → chunk-SFITYZLV.js} +2 -2
- package/dist/cli/chunks/{chunk-2ZFLULL4.js → chunk-SRBCBVSI.js} +2 -2
- package/dist/cli/chunks/chunk-SUAZ5Z47.js +63 -0
- package/dist/cli/chunks/{chunk-RBKUU7WF.js → chunk-TDZ6N43D.js} +2 -2
- package/dist/cli/chunks/chunk-TIVKDIF7.js +2 -0
- package/dist/cli/chunks/{chunk-MPFPWJTH.js → chunk-TM75GAXG.js} +2 -2
- package/dist/cli/chunks/{chunk-UJABDXST.js → chunk-TWBZONKT.js} +2 -2
- package/dist/cli/chunks/{chunk-AOKKUB5F.js → chunk-U4S74IIZ.js} +1 -1
- package/dist/cli/chunks/{chunk-W62OOK7A.js → chunk-U5SMBJ6F.js} +2 -2
- package/dist/cli/chunks/{chunk-6LE362LZ.js → chunk-UHJVZEQA.js} +2 -2
- package/dist/cli/chunks/{chunk-T67R2MUN.js → chunk-UOVCTK5L.js} +2 -2
- package/dist/cli/chunks/{chunk-FTRSS64D.js → chunk-VDEKVIP5.js} +2 -2
- package/dist/cli/chunks/{chunk-BDKEAGQ2.js → chunk-VITV7AEC.js} +2 -2
- package/dist/cli/chunks/{chunk-BU4UQR36.js → chunk-VKREKVFI.js} +2 -2
- package/dist/cli/chunks/{chunk-BZULJMGH.js → chunk-VLTDW7XJ.js} +2 -2
- package/dist/cli/chunks/{chunk-UE2J6MA5.js → chunk-VQFV2IPV.js} +1 -1
- package/dist/cli/chunks/{chunk-TZIHDJZD.js → chunk-VYPVU3JF.js} +2 -2
- package/dist/cli/chunks/{chunk-UORB2QDU.js → chunk-WAOEQA3W.js} +2 -2
- package/dist/cli/chunks/{chunk-GQABPCQE.js → chunk-WBDWHHKP.js} +2 -2
- package/dist/cli/chunks/{chunk-GGQGCT4Y.js → chunk-WX4PO65Q.js} +2 -2
- package/dist/cli/chunks/chunk-X2DWHGCC.js +6 -0
- package/dist/cli/chunks/{chunk-337Z52QM.js → chunk-X5QD76IU.js} +2 -2
- package/dist/cli/chunks/{chunk-E56PVVWC.js → chunk-XBTGEYED.js} +2 -2
- package/dist/cli/chunks/{chunk-5AFVEWMT.js → chunk-XEMCHGAJ.js} +2 -2
- package/dist/cli/chunks/{chunk-E3MRDIZF.js → chunk-XEYFZLIT.js} +1 -1
- package/dist/cli/chunks/{chunk-KCQNFBBR.js → chunk-XFTX3KLE.js} +1 -1
- package/dist/cli/chunks/{chunk-QFGYH6HD.js → chunk-XPTCQKVE.js} +1 -1
- package/dist/cli/chunks/{chunk-PXATBHWN.js → chunk-YAJOBZE5.js} +2 -2
- package/dist/cli/chunks/{chunk-27HE2BHC.js → chunk-YCVLKU6H.js} +2 -2
- package/dist/cli/chunks/{chunk-ZIPAB5J6.js → chunk-YD2C6EPN.js} +2 -2
- package/dist/cli/chunks/{chunk-5G4UFTV4.js → chunk-YKRLUTK7.js} +2 -2
- package/dist/cli/chunks/{chunk-YUS6TWAL.js → chunk-YMUY3TES.js} +6 -6
- package/dist/cli/chunks/chunk-YR5QBUHZ.js +6 -0
- package/dist/cli/chunks/{chunk-XH4JMX5O.js → chunk-Z7SKUC6P.js} +1 -1
- package/dist/cli/chunks/{chunk-EFUJDMNC.js → chunk-ZAQMRFBB.js} +2 -2
- package/dist/cli/chunks/{chunk-22UKJGGN.js → chunk-ZC3KDNJW.js} +3 -3
- package/dist/cli/chunks/{chunk-AP2W7Z3A.js → chunk-ZGV7L4MW.js} +1 -1
- package/dist/cli/chunks/{chunk-W27AJ5B4.js → chunk-ZN35XSKF.js} +2 -2
- package/dist/cli/chunks/{chunk-M4CJCPCQ.js → chunk-ZNXM6WVL.js} +2 -2
- package/dist/cli/chunks/{chunk-5I7357KS.js → chunk-ZP5AWQRO.js} +2 -2
- package/dist/cli/chunks/{chunk-OQG3UQQ7.js → chunk-ZTP3DQ5M.js} +1 -1
- package/dist/cli/chunks/{chunk-BFQTLF5X.js → chunk-ZVMSSCTH.js} +2 -2
- package/dist/cli/chunks/chunk-ZWUF27P4.js +2 -0
- package/dist/cli/chunks/{ci-UCUJOSBW.js → ci-3RTTTS2D.js} +2 -2
- package/dist/cli/chunks/{ci-config-2XILD3XG.js → ci-config-XRUR3I4K.js} +2 -2
- package/dist/cli/chunks/{ci-output-BL6KWOHW.js → ci-output-E5IAMU2U.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-5XLIOXE5.js → circuit-breaker-SHR2P44P.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-4IMP6ACS.js → claude-flow-setup-ZDDILFMF.js} +2 -2
- package/dist/cli/chunks/client-NO5FOWT4.js +2 -0
- package/dist/cli/chunks/{cline-installer-RYLHCDK7.js → cline-installer-BGYVUM6G.js} +2 -2
- package/dist/cli/chunks/{code-WY3GJXHX.js → code-PJ4MC3MC.js} +4 -3
- package/dist/cli/chunks/{code-index-extractor-Y4MZBZCW.js → code-index-extractor-IW2P22YG.js} +2 -2
- package/dist/cli/chunks/{codex-installer-SCJ3T3DX.js → codex-installer-A7WZ6OGL.js} +2 -2
- package/dist/cli/chunks/{completions-CN2DXQFU.js → completions-KS23WD5J.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-7MDPPIBH.js → complexity-analyzer-Q7GLSR2E.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-GCEJRK34.js → continuedev-installer-SK55BFW2.js} +2 -2
- package/dist/cli/chunks/copilot-installer-3N5J3WTM.js +3 -0
- package/dist/cli/chunks/core-handlers-JNAZPXE2.js +2 -0
- package/dist/cli/chunks/{cost-tracker-VO5MFWR6.js → cost-tracker-NENVSO4A.js} +2 -2
- package/dist/cli/chunks/{coverage-LYFQYNH6.js → coverage-5L7UQWDH.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-HEBM767Z.js +2 -0
- package/dist/cli/chunks/{cursor-installer-KP4HA7TV.js → cursor-installer-XXBO2ZE6.js} +2 -2
- package/dist/cli/chunks/{daemon-7RC7TS57.js → daemon-CDCQU3LR.js} +3 -3
- package/dist/cli/chunks/daemon-JEBJGEUK.js +18 -0
- package/dist/cli/chunks/{dag-attention-scheduler-NKA44RSR.js → dag-attention-scheduler-HOMMF7FA.js} +2 -2
- package/dist/cli/chunks/{detect-CMYAJWYF.js → detect-FXCOUG6X.js} +2 -2
- package/dist/cli/chunks/{dist-node-EN3PYEGW.js → dist-node-GXQ7FMTY.js} +2 -2
- package/dist/cli/chunks/{domain-handler-EXSZCX7A.js → domain-handler-TI3JBAPC.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-HCQFSNL7.js → domain-plugins-R7LTUM32.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-3LGSNTPO.js → domain-transfer-LBIAFHIQ.js} +2 -2
- package/dist/cli/chunks/dream-GQDCEJMS.js +2 -0
- package/dist/cli/chunks/embed-and-insert-pattern-33KLHDD5.js +3 -0
- package/dist/cli/chunks/embedding-space-HHLWTBF5.js +2 -0
- package/dist/cli/chunks/{eval-OQELIWJK.js → eval-KDOZMAXJ.js} +2 -2
- package/dist/cli/chunks/experience-capture-middleware-X45PECQN.js +40 -0
- package/dist/cli/chunks/{fast-paths-UV4NDEWM.js → fast-paths-462V6UUB.js} +2 -2
- package/dist/cli/chunks/{feature-flags-H7H33B6C.js → feature-flags-G66OT3AS.js} +2 -2
- package/dist/cli/chunks/{feature-flags-CKTYX67J.js → feature-flags-NIRQ4YDM.js} +2 -2
- package/dist/cli/chunks/file-discovery-33USPLB5.js +2 -0
- package/dist/cli/chunks/{fleet-ZJBCAKRG.js → fleet-PXWGB7CU.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-RUE2QZRG.js → gnn-wrapper-7MUW3M5M.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-XRV327M7.js → heartbeat-handler-5237PB35.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-LIXLC5IH.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-62D5UH27.js +2 -0
- package/dist/cli/chunks/hnsw-index-GSGUMQQC.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-UJID6ZZ4.js → hnsw-legacy-bridge-OSQPW7JP.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-WS43R4AX.js → hnswlib-node-GX6WG2GB.js} +2 -2
- package/dist/cli/chunks/{hooks-YZNJKXAJ.js → hooks-GUWHL7VC.js} +23 -22
- package/dist/cli/chunks/hybrid-backend-FRWP4BOY.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-XQJSIMTS.js → hypergraph-engine-SRWLLCU3.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-ZD2NYXMR.js → hypergraph-handler-AVOPRHHO.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-7KF3AQXV.js +2 -0
- package/dist/cli/chunks/{init-guard-DSRUAVRT.js → init-guard-P4N6EVZS.js} +2 -2
- package/dist/cli/chunks/{init-handler-RJU5QMAP.js → init-handler-LRGWOJMD.js} +6 -6
- package/dist/cli/chunks/init-wizard-XWWAXY25.js +2 -0
- package/dist/cli/chunks/kernel-ZEJPNDBW.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-BCPOCVMC.js → kilocode-installer-7R2EPOQ6.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-GFCWCB2S.js → kiro-installer-QNM7DPOB.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-RRZQS7KY.js +2 -0
- package/dist/cli/chunks/{learning-FZTD72CF.js → learning-7OIZBPXZ.js} +3 -3
- package/dist/cli/chunks/{llm-router-GJVKGRJL.js → llm-router-SIDXES23.js} +4 -4
- package/dist/cli/chunks/llm-router-service-3OSW67LC.js +2 -0
- package/dist/cli/chunks/{load-YKTPOYBE.js → load-EI2E2C3S.js} +2 -2
- package/dist/cli/chunks/load-test-7TRIH2WJ.js +2 -0
- package/dist/cli/chunks/{mcp-LT6R2IKS.js → mcp-IOE5WOCS.js} +2 -2
- package/dist/cli/chunks/{memory-4HKKOLRY.js → memory-DLYGJAP7.js} +5 -5
- package/dist/cli/chunks/memory-backend-G7ZW6Q2B.js +2 -0
- package/dist/cli/chunks/memory-handlers-TPF3KCO5.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-2YPM2WTK.js → multi-model-executor-WHH4YCHM.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-WBAJMH5K.js → opencode-installer-63FDZAMS.js} +2 -2
- package/dist/cli/chunks/{orchestrator-5W5WVMVJ.js → orchestrator-3LA776KK.js} +5 -5
- package/dist/cli/chunks/pattern-null-store-OU3ZC3NR.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-GXRMNPAZ.js → pattern-usage-recorder-NW54QUGI.js} +2 -2
- package/dist/cli/chunks/{pipeline-2NA4DRDA.js → pipeline-P3TYX6J6.js} +2 -2
- package/dist/cli/chunks/{platform-BGERNQ5V.js → platform-FNA2WLI6.js} +2 -2
- package/dist/cli/chunks/{plugin-L4EPVENR.js → plugin-NJS7BC2S.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-RTQRTPTM.js → prime-radiant-advanced-wasm-NIAVL2OT.js} +2 -2
- package/dist/cli/chunks/project-root-GMOFJEKD.js +2 -0
- package/dist/cli/chunks/protocol-executor-AD345XRO.js +2 -0
- package/dist/cli/chunks/{protocol-handler-SYQXM6JK.js → protocol-handler-JU5C4JHY.js} +2 -2
- package/dist/cli/chunks/{prove-5O7GPJCU.js → prove-35VOSLYP.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-NLTP26RC.js +2 -0
- package/dist/cli/chunks/{quality-KIIDHGNF.js → quality-ET74X7HN.js} +2 -2
- package/dist/cli/chunks/{quality-gate-H65VECD3.js → quality-gate-FEDQISNB.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-2TB4FWS6.js +2 -0
- package/dist/cli/chunks/real-embeddings-II6CXTCI.js +2 -0
- package/dist/cli/chunks/{ref-validation-CSBJOMZM.js → ref-validation-DTBPYCEB.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-G7OVYXEN.js → roocode-installer-LYQEMR4J.js} +2 -2
- package/dist/cli/chunks/router-PLM3MWME.js +2 -0
- package/dist/cli/chunks/routing-feedback-I7VOX2HU.js +2 -0
- package/dist/cli/chunks/{routing-handler-ZNZPPI5Y.js → routing-handler-DJOJFPII.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-C6IG3OY3.js → ruvector-commands-VXYGJDPW.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-GQZHFWO2.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-3TVKBCAM.js +2 -0
- package/dist/cli/chunks/rvf-migration-coordinator-XUHKLMT6.js +2 -0
- package/dist/cli/chunks/rvf-native-adapter-5GUTYOWS.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-3G6LFLT3.js → rvf-store-integrity-GA2ZYOEG.js} +2 -2
- package/dist/cli/chunks/safe-db-RZPQGLGQ.js +2 -0
- package/dist/cli/chunks/schedule-G7JMQDUX.js +2 -0
- package/dist/cli/chunks/scheduler-4SEGPCKD.js +2 -0
- package/dist/cli/chunks/{security-A3IMVLFM.js → security-MM6YOECX.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-VHWQ6US5.js → shared-rvf-adapter-6AHPA3V5.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-JB3QS7IG.js → shared-rvf-dual-writer-EYAVY2GZ.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-IVE4SQXR.js +2 -0
- package/dist/cli/chunks/{standalone-memory-DDNXCSBD.js → standalone-memory-A3PLB4CZ.js} +2 -2
- package/dist/cli/chunks/{status-handler-2HK7XPEK.js → status-handler-OSSFAP4Z.js} +2 -2
- package/dist/cli/chunks/{structural-health-DSJVLEPV.js → structural-health-PGY5XUNO.js} +2 -2
- package/dist/cli/chunks/{sync-NTUR53PI.js → sync-CWEHYGNN.js} +2 -2
- package/dist/cli/chunks/sync-PM6D7EQF.js +2 -0
- package/dist/cli/chunks/task-handler-LHMQ75W4.js +64 -0
- package/dist/cli/chunks/{task-handlers-VJR6EHRZ.js → task-handlers-S2TX5FTR.js} +4 -4
- package/dist/cli/chunks/test-4EGZZ6NJ.js +34 -0
- package/dist/cli/chunks/test-runner-process-72YACW6M.js +2 -0
- package/dist/cli/chunks/{test-scheduling-Q6QEEOS6.js → test-scheduling-YJQHH3XE.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-DJNETMVW.js +2 -0
- package/dist/cli/chunks/{token-usage-YEEFWSSI.js → token-usage-WPNOJR6H.js} +2 -2
- package/dist/cli/chunks/{transformers-BZCHJJJT.js → transformers-4MRPXCPU.js} +2 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-UVWSDXFR.js +2 -0
- package/dist/cli/chunks/{types-4AOKZYOX.js → types-6P5FB4EB.js} +2 -2
- package/dist/cli/chunks/unified-memory-2VMGSGQL.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-3KULVD3N.js +2 -0
- package/dist/cli/chunks/unified-persistence-QCSLU2SV.js +2 -0
- package/dist/cli/chunks/{upgrade-2MWW6BT2.js → upgrade-4ICTN63Y.js} +2 -2
- package/dist/cli/chunks/{validate-PAEV3GT5.js → validate-HQF5GZ7L.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-ZIXACK5K.js → validate-swarm-45JYG7VW.js} +2 -2
- package/dist/cli/chunks/visual-security-ZYP2KPH7.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-VLTXZFAB.js → web-tree-sitter-UOTWZLNH.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-VELMLOZF.js → windsurf-installer-WDWSBXGN.js} +2 -2
- package/dist/cli/chunks/witness-chain-5QRT7EMX.js +2 -0
- package/dist/cli/chunks/witness-chain-DOYMNPC7.js +2 -0
- package/dist/cli/chunks/witness-chain-repair-CUF2AFQB.js +2 -0
- package/dist/cli/chunks/{witness-chain-verifier-MIDWD4JS.js → witness-chain-verifier-JB42X62J.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-OSVCWOB2.js → witness-key-manager-LXXO6L2G.js} +2 -2
- package/dist/cli/chunks/{workflow-MK7A7QCX.js → workflow-6ARK47NF.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-RYDDWIXN.js +2 -0
- package/dist/cli/chunks/wrappers-CYQBOMPL.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/commands/test.js +26 -4
- 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 +137 -59
- 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 +37 -7
- package/dist/domains/code-intelligence/services/semantic-analyzer.js +135 -62
- package/dist/domains/code-intelligence/services/text-relevance.d.ts +32 -0
- package/dist/domains/code-intelligence/services/text-relevance.js +63 -0
- 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.d.ts +3 -1
- package/dist/domains/test-execution/coordinator.js +21 -7
- package/dist/domains/test-execution/interfaces.d.ts +17 -0
- package/dist/domains/test-execution/plugin.js +8 -2
- package/dist/domains/test-execution/services/flaky-detector.d.ts +9 -1
- package/dist/domains/test-execution/services/flaky-detector.js +26 -8
- package/dist/domains/test-execution/services/retry-handler.d.ts +9 -1
- package/dist/domains/test-execution/services/retry-handler.js +56 -12
- package/dist/domains/test-execution/services/runner-test-cases.d.ts +2 -0
- package/dist/domains/test-execution/services/runner-test-cases.js +7 -3
- package/dist/domains/test-execution/services/test-executor.d.ts +6 -1
- package/dist/domains/test-execution/services/test-executor.js +97 -14
- 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/init/copilot-installer.d.ts +6 -0
- package/dist/init/copilot-installer.js +37 -17
- package/dist/init/platform-config-generator.d.ts +10 -0
- package/dist/init/platform-config-generator.js +26 -1
- 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 +32 -0
- package/dist/kernel/unified-memory.js +76 -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 +76 -0
- package/dist/learning/embedder-endpoint-client.js +201 -13
- package/dist/learning/embedding-space-registry.d.ts +75 -0
- package/dist/learning/embedding-space-registry.js +142 -0
- 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.d.ts +3 -0
- package/dist/learning/real-embeddings.js +52 -12
- 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 +699 -619
- 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/embeddings/index.d.ts +2 -2
- package/dist/shared/embeddings/index.js +1 -1
- package/dist/shared/embeddings/nomic-embedder.d.ts +8 -2
- package/dist/shared/embeddings/nomic-embedder.js +19 -11
- package/dist/shared/embeddings/ollama-client.d.ts +28 -2
- package/dist/shared/embeddings/ollama-client.js +84 -22
- package/dist/shared/embeddings/types.d.ts +15 -0
- package/dist/shared/embeddings/types.js +4 -0
- package/dist/shared/llm/spend-ledger.d.ts +9 -0
- package/dist/shared/llm/spend-ledger.js +64 -39
- package/dist/shared/pytest-junit-report.d.ts +93 -0
- package/dist/shared/pytest-junit-report.js +241 -0
- 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 +119 -0
- package/dist/shared/test-runner-project.js +301 -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-4D4CWP72.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-TX2CHQD7.js +0 -2
- 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/copilot-installer-BHPDSELY.js +0 -3
- 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-O6FK3FVF.js +0 -34
- 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
|
@@ -16,6 +16,7 @@ import { getUnifiedMemory } from '../kernel/unified-memory.js';
|
|
|
16
16
|
import { toErrorMessage } from '../shared/error-utils.js';
|
|
17
17
|
import { createLogger } from '../logging/logger-factory.js';
|
|
18
18
|
import { isLearnableResult } from './learnable-result.js';
|
|
19
|
+
import { recordExperienceEmbeddingSpace } from './embedding-space.js';
|
|
19
20
|
const ecLogger = createLogger('ExperienceCapture');
|
|
20
21
|
// ============================================================================
|
|
21
22
|
// Active Experience Tracking
|
|
@@ -308,8 +309,9 @@ async function persistExperience(context, outcome) {
|
|
|
308
309
|
console.warn('[ExperienceCaptureMiddleware] Memory manager not available');
|
|
309
310
|
return;
|
|
310
311
|
}
|
|
312
|
+
const memory = memoryManager;
|
|
311
313
|
try {
|
|
312
|
-
const db =
|
|
314
|
+
const db = memory.getDatabase();
|
|
313
315
|
if (!db)
|
|
314
316
|
return;
|
|
315
317
|
const stmt = db.prepare(`
|
|
@@ -318,9 +320,11 @@ async function persistExperience(context, outcome) {
|
|
|
318
320
|
routing_json, steps_json, result_json, error, started_at, completed_at, source)
|
|
319
321
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'), ?)
|
|
320
322
|
`);
|
|
321
|
-
|
|
323
|
+
// #1274: queued, so a locked memory.db does not freeze the MCP server's
|
|
324
|
+
// event loop while experiences are captured.
|
|
325
|
+
await memory.writeWhenUnlocked(() => stmt.run(outcome.id, context.task, context.agent, context.domain, outcome.success ? 1 : 0, outcome.quality, outcome.durationMs, context.modelTier || null, safeJsonStringify(context.routing), safeJsonStringify(outcome.steps), safeJsonStringify(outcome.result), outcome.error || null, context.startedAt.toISOString(), 'middleware'));
|
|
322
326
|
// Fire-and-forget: compute and store embedding for this experience
|
|
323
|
-
computeExperienceEmbedding(
|
|
327
|
+
computeExperienceEmbedding(memory, outcome.id, context.task, context.domain).catch((e) => { ecLogger.warn('Embedding computation failed', { error: e instanceof Error ? e.message : String(e), experienceId: outcome.id, domain: context.domain }); });
|
|
324
328
|
}
|
|
325
329
|
catch (error) {
|
|
326
330
|
console.error('[ExperienceCaptureMiddleware] Failed to persist experience:', error);
|
|
@@ -330,19 +334,26 @@ async function persistExperience(context, outcome) {
|
|
|
330
334
|
* Compute and store embedding for a captured experience (async, non-blocking).
|
|
331
335
|
* Uses the shared ONNX transformer model (all-MiniLM-L6-v2, 384-dim).
|
|
332
336
|
*/
|
|
333
|
-
async function computeExperienceEmbedding(
|
|
337
|
+
async function computeExperienceEmbedding(memory, experienceId, task, domain) {
|
|
334
338
|
try {
|
|
335
|
-
const { computeRealEmbedding } = await import('./real-embeddings.js');
|
|
339
|
+
const { computeRealEmbedding, getActiveEmbeddingSpaceIdentity } = await import('./real-embeddings.js');
|
|
336
340
|
const text = `${domain}: ${task}`.slice(0, 512); // Cap input length
|
|
337
341
|
const embedding = await computeRealEmbedding(text);
|
|
338
342
|
if (!embedding || embedding.length === 0)
|
|
339
343
|
return;
|
|
340
344
|
const buffer = Buffer.from(new Float32Array(embedding).buffer);
|
|
341
|
-
db.
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
345
|
+
const db = memory.getDatabase();
|
|
346
|
+
await memory.writeWhenUnlocked(() => {
|
|
347
|
+
const updated = db.prepare(`
|
|
348
|
+
UPDATE captured_experiences
|
|
349
|
+
SET embedding = ?, embedding_dimension = ?
|
|
350
|
+
WHERE id = ? AND embedding IS NULL
|
|
351
|
+
`).run(buffer, embedding.length, experienceId);
|
|
352
|
+
// #1217 (ADR-097): store the vector's embedding space with it.
|
|
353
|
+
if (updated.changes > 0) {
|
|
354
|
+
recordExperienceEmbeddingSpace(db, experienceId, getActiveEmbeddingSpaceIdentity()?.spaceId);
|
|
355
|
+
}
|
|
356
|
+
});
|
|
346
357
|
}
|
|
347
358
|
catch {
|
|
348
359
|
// Non-critical — embedding will be backfilled later if needed
|
|
@@ -354,8 +365,9 @@ async function computeExperienceEmbedding(db, experienceId, task, domain) {
|
|
|
354
365
|
async function persistToSonaPatterns(context, outcome) {
|
|
355
366
|
if (!memoryManager)
|
|
356
367
|
return;
|
|
368
|
+
const memory = memoryManager;
|
|
357
369
|
try {
|
|
358
|
-
const db =
|
|
370
|
+
const db = memory.getDatabase();
|
|
359
371
|
if (!db)
|
|
360
372
|
return;
|
|
361
373
|
// Only store successful patterns with decent quality
|
|
@@ -368,12 +380,12 @@ async function persistToSonaPatterns(context, outcome) {
|
|
|
368
380
|
confidence, usage_count, metadata, created_at, updated_at)
|
|
369
381
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'), datetime('now'))
|
|
370
382
|
`);
|
|
371
|
-
stmt.run(`sona-${outcome.id}`, 'task-execution', context.domain, context.agent, safeJsonStringify({ task: context.task.slice(0, 200) }), outcome.quality, 1, outcome.quality, outcome.quality, 1, safeJsonStringify({
|
|
383
|
+
await memory.writeWhenUnlocked(() => stmt.run(`sona-${outcome.id}`, 'task-execution', context.domain, context.agent, safeJsonStringify({ task: context.task.slice(0, 200) }), outcome.quality, 1, outcome.quality, outcome.quality, 1, safeJsonStringify({
|
|
372
384
|
experienceId: outcome.id,
|
|
373
385
|
durationMs: outcome.durationMs,
|
|
374
386
|
stepsCount: outcome.steps.length,
|
|
375
387
|
modelTier: context.modelTier,
|
|
376
|
-
}));
|
|
388
|
+
})));
|
|
377
389
|
}
|
|
378
390
|
catch (error) {
|
|
379
391
|
// Log but don't fail - sona_patterns might not exist
|
|
@@ -234,7 +234,7 @@ export class ExperienceCaptureService {
|
|
|
234
234
|
const contextFingerprint = `${experience.domain ?? 'unknown'}:${experience.agent ?? 'unknown'}`;
|
|
235
235
|
for (const patternId of experience.appliedPatterns) {
|
|
236
236
|
try {
|
|
237
|
-
this.nullRecorder({
|
|
237
|
+
await this.nullRecorder({
|
|
238
238
|
patternId,
|
|
239
239
|
contextFingerprint,
|
|
240
240
|
failureMode: experience.testOutcome ?? experience.feedback ?? 'task-failure',
|
|
@@ -70,6 +70,11 @@ export interface ConsolidationConfig {
|
|
|
70
70
|
contradictionSimilarityThreshold: number;
|
|
71
71
|
/** Min quality gap that turns a near-duplicate into a contradiction (0-1). */
|
|
72
72
|
contradictionQualityDelta: number;
|
|
73
|
+
/**
|
|
74
|
+
* #1281: embedding space (ADR-097 spaceId) whose vectors Phase 1 compares.
|
|
75
|
+
* Defaults to the active embedder's space.
|
|
76
|
+
*/
|
|
77
|
+
embeddingSpaceId?: string;
|
|
73
78
|
}
|
|
74
79
|
export declare class ExperienceConsolidator {
|
|
75
80
|
private readonly config;
|
|
@@ -94,9 +99,22 @@ export declare class ExperienceConsolidator {
|
|
|
94
99
|
bootstrapDomain(domain: string): Promise<ConsolidationResult>;
|
|
95
100
|
private clusterAndMerge;
|
|
96
101
|
private reinforceQuality;
|
|
102
|
+
private reinforceQualityNow;
|
|
97
103
|
private archiveValueless;
|
|
104
|
+
private archiveValuelessNow;
|
|
98
105
|
private hardDeleteExcess;
|
|
106
|
+
private hardDeleteExcessNow;
|
|
107
|
+
/** #1281: the embedding space Phase 1 compares vectors in, or null if unknown. */
|
|
108
|
+
private resolveEmbeddingSpaceId;
|
|
109
|
+
/** Tables created before #1217 have no embedding_space_id column. */
|
|
110
|
+
private hasEmbeddingSpaceColumn;
|
|
99
111
|
private ensureInitialized;
|
|
112
|
+
/**
|
|
113
|
+
* Queue a write on the shared connection (#1283): the learning worker runs
|
|
114
|
+
* consolidation inside the MCP server, where a locked memory.db must not
|
|
115
|
+
* freeze the event loop. On any other connection the write runs at once.
|
|
116
|
+
*/
|
|
117
|
+
private write;
|
|
100
118
|
private bufferToFloatArray;
|
|
101
119
|
}
|
|
102
120
|
/**
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
* Ensures the Exp counter is monotonically non-decreasing.
|
|
16
16
|
*/
|
|
17
17
|
import { v4 as uuidv4 } from 'uuid';
|
|
18
|
-
import { getUnifiedMemory } from '../kernel/unified-memory.js';
|
|
18
|
+
import { getUnifiedMemory, writeWhenUnlockedOn } from '../kernel/unified-memory.js';
|
|
19
|
+
import { ensureEndpointEmbeddingSpaceIdentity, getActiveEmbeddingSpaceIdentity } from './real-embeddings.js';
|
|
19
20
|
import { HNSWEmbeddingIndex } from '../integrations/embeddings/index/HNSWIndex.js';
|
|
20
21
|
const DEFAULT_CONFIG = {
|
|
21
22
|
mergeSimilarityThreshold: 0.85,
|
|
@@ -111,9 +112,9 @@ export class ExperienceConsolidator {
|
|
|
111
112
|
result.merged = clusterResult.merged;
|
|
112
113
|
result.contradicted = clusterResult.contradicted;
|
|
113
114
|
// Phase 2: Quality Reinforcement
|
|
114
|
-
result.qualityUpdated = this.reinforceQuality(domain);
|
|
115
|
+
result.qualityUpdated = await this.reinforceQuality(domain);
|
|
115
116
|
// Phase 3: Archive Valueless
|
|
116
|
-
result.archived = this.archiveValueless(domain);
|
|
117
|
+
result.archived = await this.archiveValueless(domain);
|
|
117
118
|
// Safety valve: when the domain still exceeds hardThreshold after the
|
|
118
119
|
// soft phases, archive (not delete) the oldest low-quality excess.
|
|
119
120
|
// Result is attributed to `archived` — `hardDeleted` stays 0 since
|
|
@@ -121,7 +122,7 @@ export class ExperienceConsolidator {
|
|
|
121
122
|
const afterCount = this.db.prepare("SELECT COUNT(*) as cnt FROM captured_experiences WHERE domain = ? AND consolidated_into IS NULL").get(domain).cnt;
|
|
122
123
|
let safetyValveArchived = 0;
|
|
123
124
|
if (afterCount > this.config.hardThreshold) {
|
|
124
|
-
safetyValveArchived = this.hardDeleteExcess(domain, afterCount);
|
|
125
|
+
safetyValveArchived = await this.hardDeleteExcess(domain, afterCount);
|
|
125
126
|
result.archived += safetyValveArchived;
|
|
126
127
|
}
|
|
127
128
|
result.activeRemaining = afterCount - safetyValveArchived;
|
|
@@ -150,7 +151,8 @@ export class ExperienceConsolidator {
|
|
|
150
151
|
Object.assign(this.config, savedConfig);
|
|
151
152
|
// Set bootstrap flag
|
|
152
153
|
try {
|
|
153
|
-
|
|
154
|
+
const bootstrappedAt = new Date().toISOString();
|
|
155
|
+
await this.write(() => this.db.prepare("INSERT OR REPLACE INTO kv_store (key, value, namespace) VALUES (?, ?, 'system')").run(`consolidation_bootstrap_${domain}`, bootstrappedAt));
|
|
154
156
|
}
|
|
155
157
|
catch {
|
|
156
158
|
// kv_store may not exist in all setups
|
|
@@ -163,6 +165,12 @@ export class ExperienceConsolidator {
|
|
|
163
165
|
// Phase 1: Cluster & Merge
|
|
164
166
|
// ============================================================================
|
|
165
167
|
async clusterAndMerge(domain) {
|
|
168
|
+
// #1281 (ADR-097): a cosine between vectors of different embedding spaces
|
|
169
|
+
// is meaningless, even at the same dimension. Only vectors recorded in the
|
|
170
|
+
// active space are compared; without a known space nothing is merged.
|
|
171
|
+
const spaceId = await this.resolveEmbeddingSpaceId();
|
|
172
|
+
if (!spaceId || !this.hasEmbeddingSpaceColumn())
|
|
173
|
+
return { merged: 0, contradicted: 0 };
|
|
166
174
|
// Get active experiences with embeddings, sorted by quality DESC
|
|
167
175
|
const candidates = this.db.prepare(`
|
|
168
176
|
SELECT id, task, domain, quality, success, application_count,
|
|
@@ -170,8 +178,9 @@ export class ExperienceConsolidator {
|
|
|
170
178
|
embedding, embedding_dimension, started_at
|
|
171
179
|
FROM captured_experiences
|
|
172
180
|
WHERE domain = ? AND consolidated_into IS NULL AND embedding IS NOT NULL
|
|
181
|
+
AND embedding_space_id = ?
|
|
173
182
|
ORDER BY quality DESC
|
|
174
|
-
`).all(domain);
|
|
183
|
+
`).all(domain, spaceId);
|
|
175
184
|
if (candidates.length < 2)
|
|
176
185
|
return { merged: 0, contradicted: 0 };
|
|
177
186
|
// Build a temporary HNSW index for this domain
|
|
@@ -293,7 +302,7 @@ export class ExperienceConsolidator {
|
|
|
293
302
|
boostSurvivor.run(mergedIds.length, boost, row.id);
|
|
294
303
|
logConsolidation.run(uuidv4(), domain, 'merge', JSON.stringify(mergedIds), row.id, JSON.stringify({ count: mergedIds.length, boost }));
|
|
295
304
|
});
|
|
296
|
-
transaction
|
|
305
|
+
await writeWhenUnlockedOn(this.db, transaction);
|
|
297
306
|
}
|
|
298
307
|
// Apply contradiction suppressions in a transaction. The loser is
|
|
299
308
|
// soft-suppressed (consolidated_into = 'contradicted'), so it is excluded
|
|
@@ -306,7 +315,7 @@ export class ExperienceConsolidator {
|
|
|
306
315
|
}
|
|
307
316
|
logConsolidation.run(uuidv4(), domain, 'contradiction', JSON.stringify(contradictedIds), row.id, JSON.stringify({ count: contradictedIds.length, survivorQuality: row.quality }));
|
|
308
317
|
});
|
|
309
|
-
tx
|
|
318
|
+
await writeWhenUnlockedOn(this.db, tx);
|
|
310
319
|
}
|
|
311
320
|
}
|
|
312
321
|
// Clean up HNSW index
|
|
@@ -317,6 +326,10 @@ export class ExperienceConsolidator {
|
|
|
317
326
|
// Phase 2: Quality Reinforcement
|
|
318
327
|
// ============================================================================
|
|
319
328
|
reinforceQuality(domain) {
|
|
329
|
+
// Read and update in one queued unit, so the update uses current values.
|
|
330
|
+
return this.write(() => this.reinforceQualityNow(domain));
|
|
331
|
+
}
|
|
332
|
+
reinforceQualityNow(domain) {
|
|
320
333
|
// Get experiences with application history
|
|
321
334
|
const experiences = this.db.prepare(`
|
|
322
335
|
SELECT ce.id, ce.quality, ce.consolidation_count,
|
|
@@ -366,6 +379,9 @@ export class ExperienceConsolidator {
|
|
|
366
379
|
// Phase 3: Archive Valueless
|
|
367
380
|
// ============================================================================
|
|
368
381
|
archiveValueless(domain) {
|
|
382
|
+
return this.write(() => this.archiveValuelessNow(domain));
|
|
383
|
+
}
|
|
384
|
+
archiveValuelessNow(domain) {
|
|
369
385
|
const cutoffDate = new Date();
|
|
370
386
|
cutoffDate.setDate(cutoffDate.getDate() - this.config.archiveMinAgeDays);
|
|
371
387
|
const cutoffStr = cutoffDate.toISOString().replace('T', ' ').slice(0, 19);
|
|
@@ -415,6 +431,9 @@ export class ExperienceConsolidator {
|
|
|
415
431
|
// ConsolidationResult.hardDeleted is kept zero for that reason; the
|
|
416
432
|
// archive count is rolled into Phase 3's `archived` total.
|
|
417
433
|
hardDeleteExcess(domain, currentCount) {
|
|
434
|
+
return this.write(() => this.hardDeleteExcessNow(domain, currentCount));
|
|
435
|
+
}
|
|
436
|
+
hardDeleteExcessNow(domain, currentCount) {
|
|
418
437
|
const excess = currentCount - this.config.hardThreshold;
|
|
419
438
|
if (excess <= 0)
|
|
420
439
|
return 0;
|
|
@@ -455,11 +474,39 @@ export class ExperienceConsolidator {
|
|
|
455
474
|
// ============================================================================
|
|
456
475
|
// Utilities
|
|
457
476
|
// ============================================================================
|
|
477
|
+
/** #1281: the embedding space Phase 1 compares vectors in, or null if unknown. */
|
|
478
|
+
async resolveEmbeddingSpaceId() {
|
|
479
|
+
if (this.config.embeddingSpaceId)
|
|
480
|
+
return this.config.embeddingSpaceId;
|
|
481
|
+
const active = getActiveEmbeddingSpaceIdentity()?.spaceId;
|
|
482
|
+
if (active)
|
|
483
|
+
return active;
|
|
484
|
+
try {
|
|
485
|
+
// A configured endpoint's identity, as the pattern stores resolve it (#754).
|
|
486
|
+
return (await ensureEndpointEmbeddingSpaceIdentity())?.spaceId ?? null;
|
|
487
|
+
}
|
|
488
|
+
catch {
|
|
489
|
+
return null;
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
/** Tables created before #1217 have no embedding_space_id column. */
|
|
493
|
+
hasEmbeddingSpaceColumn() {
|
|
494
|
+
const columns = this.db.prepare('PRAGMA table_info(captured_experiences)').all();
|
|
495
|
+
return columns.some(c => c.name === 'embedding_space_id');
|
|
496
|
+
}
|
|
458
497
|
ensureInitialized() {
|
|
459
498
|
if (!this.initialized || !this.db) {
|
|
460
499
|
throw new Error('ExperienceConsolidator not initialized. Call initialize() first.');
|
|
461
500
|
}
|
|
462
501
|
}
|
|
502
|
+
/**
|
|
503
|
+
* Queue a write on the shared connection (#1283): the learning worker runs
|
|
504
|
+
* consolidation inside the MCP server, where a locked memory.db must not
|
|
505
|
+
* freeze the event loop. On any other connection the write runs at once.
|
|
506
|
+
*/
|
|
507
|
+
write(fn) {
|
|
508
|
+
return writeWhenUnlockedOn(this.db, fn);
|
|
509
|
+
}
|
|
463
510
|
bufferToFloatArray(buffer, dimension) {
|
|
464
511
|
const arr = [];
|
|
465
512
|
for (let i = 0; i < dimension; i++) {
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Attribute legacy experience vectors to an embedding space (#1217)
|
|
3
|
+
*
|
|
4
|
+
* captured_experiences rows written before #1217 carry a vector but no
|
|
5
|
+
* embedding_space_id, so ExperienceReplay never compares them. Their vectors
|
|
6
|
+
* are learning data and are never overwritten here. Instead each row's text is
|
|
7
|
+
* re-embedded with the recipe its writer used; when the result matches the
|
|
8
|
+
* stored vector (cosine >= EMBEDDING_ROUND_TRIP_MIN_COSINE), the stored vector
|
|
9
|
+
* came from the active space and only embedding_space_id is set. A row that
|
|
10
|
+
* does not match (another space, or text that can no longer be rebuilt) is
|
|
11
|
+
* left as it is: it stays excluded from comparison.
|
|
12
|
+
*
|
|
13
|
+
* Progress is kept per space in kv_store, so rows that did not match are not
|
|
14
|
+
* re-checked on every start; a different active space starts over.
|
|
15
|
+
*/
|
|
16
|
+
interface VerifiableDatabase {
|
|
17
|
+
prepare(sql: string): {
|
|
18
|
+
all(...params: unknown[]): unknown[];
|
|
19
|
+
get(...params: unknown[]): unknown;
|
|
20
|
+
run(...params: unknown[]): {
|
|
21
|
+
changes: number;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export interface LegacyExperienceRow {
|
|
26
|
+
rowid: number;
|
|
27
|
+
id: string;
|
|
28
|
+
task: string;
|
|
29
|
+
agent: string | null;
|
|
30
|
+
domain: string | null;
|
|
31
|
+
steps_json: string | null;
|
|
32
|
+
source: string | null;
|
|
33
|
+
embedding: Buffer;
|
|
34
|
+
embedding_dimension: number;
|
|
35
|
+
}
|
|
36
|
+
export interface ExperienceSpaceVerificationOptions {
|
|
37
|
+
/** Embed text in the active space; throws when the embedder fails. */
|
|
38
|
+
embed: (text: string) => Promise<number[]>;
|
|
39
|
+
/** The active embedding space, read after embedding. */
|
|
40
|
+
activeSpaceId: () => string | undefined;
|
|
41
|
+
/** Rows to check in this pass. */
|
|
42
|
+
limit?: number;
|
|
43
|
+
/** Runs a write (e.g. UnifiedMemoryManager.writeWhenUnlocked). */
|
|
44
|
+
write?: <T>(fn: () => T) => Promise<T> | T;
|
|
45
|
+
}
|
|
46
|
+
export interface ExperienceSpaceVerificationResult {
|
|
47
|
+
spaceId: string | null;
|
|
48
|
+
checked: number;
|
|
49
|
+
stamped: string[];
|
|
50
|
+
left: number;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* The texts the row's writer may have embedded. Each is only a candidate:
|
|
54
|
+
* a row is attributed only when one reproduces its stored vector.
|
|
55
|
+
* - experience-capture middleware and the CLI hooks: `${domain}: ${task}`,
|
|
56
|
+
* capped at 512 chars (the hooks store task capped at 500, so a longer
|
|
57
|
+
* task cannot be rebuilt and will not match);
|
|
58
|
+
* - ExperienceReplay's start-up backfill: the same, scrubbed (ADR-099);
|
|
59
|
+
* - ExperienceReplay.storeExperience (source 'experience-replay'):
|
|
60
|
+
* `${task} ${strategy} ${keyActions}`, strategy in `agent`, key actions
|
|
61
|
+
* in steps_json.
|
|
62
|
+
*/
|
|
63
|
+
export declare function legacyExperienceEmbeddingTexts(row: LegacyExperienceRow): string[];
|
|
64
|
+
/**
|
|
65
|
+
* Check up to `limit` legacy rows (vector, no embedding_space_id) and set
|
|
66
|
+
* embedding_space_id on those whose stored vector the active embedder
|
|
67
|
+
* reproduces. Never writes a vector. Stops at the first embedder failure.
|
|
68
|
+
*/
|
|
69
|
+
export declare function verifyLegacyExperienceSpaces(db: VerifiableDatabase, options: ExperienceSpaceVerificationOptions): Promise<ExperienceSpaceVerificationResult>;
|
|
70
|
+
export {};
|
|
71
|
+
//# sourceMappingURL=experience-space-verification.d.ts.map
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Attribute legacy experience vectors to an embedding space (#1217)
|
|
3
|
+
*
|
|
4
|
+
* captured_experiences rows written before #1217 carry a vector but no
|
|
5
|
+
* embedding_space_id, so ExperienceReplay never compares them. Their vectors
|
|
6
|
+
* are learning data and are never overwritten here. Instead each row's text is
|
|
7
|
+
* re-embedded with the recipe its writer used; when the result matches the
|
|
8
|
+
* stored vector (cosine >= EMBEDDING_ROUND_TRIP_MIN_COSINE), the stored vector
|
|
9
|
+
* came from the active space and only embedding_space_id is set. A row that
|
|
10
|
+
* does not match (another space, or text that can no longer be rebuilt) is
|
|
11
|
+
* left as it is: it stays excluded from comparison.
|
|
12
|
+
*
|
|
13
|
+
* Progress is kept per space in kv_store, so rows that did not match are not
|
|
14
|
+
* re-checked on every start; a different active space starts over.
|
|
15
|
+
*/
|
|
16
|
+
import { cosineSimilarity } from '../shared/utils/vector-math.js';
|
|
17
|
+
import { safeJsonParse } from '../shared/safe-json.js';
|
|
18
|
+
import { scrubReasoningBlocks } from '../shared/reasoning-scrub.js';
|
|
19
|
+
import { EMBEDDING_ROUND_TRIP_MIN_COSINE } from './embedding-space.js';
|
|
20
|
+
const CURSOR_NAMESPACE = '_system';
|
|
21
|
+
const cursorKey = (spaceId) => `experience-space-verified-rowid:${spaceId}`;
|
|
22
|
+
/**
|
|
23
|
+
* The texts the row's writer may have embedded. Each is only a candidate:
|
|
24
|
+
* a row is attributed only when one reproduces its stored vector.
|
|
25
|
+
* - experience-capture middleware and the CLI hooks: `${domain}: ${task}`,
|
|
26
|
+
* capped at 512 chars (the hooks store task capped at 500, so a longer
|
|
27
|
+
* task cannot be rebuilt and will not match);
|
|
28
|
+
* - ExperienceReplay's start-up backfill: the same, scrubbed (ADR-099);
|
|
29
|
+
* - ExperienceReplay.storeExperience (source 'experience-replay'):
|
|
30
|
+
* `${task} ${strategy} ${keyActions}`, strategy in `agent`, key actions
|
|
31
|
+
* in steps_json.
|
|
32
|
+
*/
|
|
33
|
+
export function legacyExperienceEmbeddingTexts(row) {
|
|
34
|
+
const domainTask = `${row.domain ?? ''}: ${row.task}`;
|
|
35
|
+
const texts = new Set([
|
|
36
|
+
domainTask.slice(0, 512),
|
|
37
|
+
scrubReasoningBlocks(domainTask).slice(0, 512),
|
|
38
|
+
]);
|
|
39
|
+
if (row.source === 'experience-replay') {
|
|
40
|
+
const keyActions = safeJsonParse(row.steps_json || '[]');
|
|
41
|
+
if (Array.isArray(keyActions)) {
|
|
42
|
+
texts.add(`${row.task} ${row.agent ?? ''} ${keyActions.join(' ')}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return [...texts];
|
|
46
|
+
}
|
|
47
|
+
function storedVector(row) {
|
|
48
|
+
if (row.embedding.length < row.embedding_dimension * 4)
|
|
49
|
+
return null;
|
|
50
|
+
const v = [];
|
|
51
|
+
for (let i = 0; i < row.embedding_dimension; i++)
|
|
52
|
+
v.push(row.embedding.readFloatLE(i * 4));
|
|
53
|
+
return v;
|
|
54
|
+
}
|
|
55
|
+
function readCursor(db, spaceId) {
|
|
56
|
+
try {
|
|
57
|
+
const row = db.prepare('SELECT value FROM kv_store WHERE namespace = ? AND key = ?')
|
|
58
|
+
.get(CURSOR_NAMESPACE, cursorKey(spaceId));
|
|
59
|
+
return row ? Number(row.value) || 0 : 0;
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return 0; // no kv_store: check from the start
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function writeCursor(db, spaceId, rowid) {
|
|
66
|
+
try {
|
|
67
|
+
db.prepare('INSERT OR REPLACE INTO kv_store (key, namespace, value) VALUES (?, ?, ?)')
|
|
68
|
+
.run(cursorKey(spaceId), CURSOR_NAMESPACE, String(rowid));
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// Without kv_store the next start checks these rows again.
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Check up to `limit` legacy rows (vector, no embedding_space_id) and set
|
|
76
|
+
* embedding_space_id on those whose stored vector the active embedder
|
|
77
|
+
* reproduces. Never writes a vector. Stops at the first embedder failure.
|
|
78
|
+
*/
|
|
79
|
+
export async function verifyLegacyExperienceSpaces(db, options) {
|
|
80
|
+
const write = options.write ?? ((fn) => fn());
|
|
81
|
+
const result = { spaceId: null, checked: 0, stamped: [], left: 0 };
|
|
82
|
+
// The cursor is per space, so the space must be known first: embedding
|
|
83
|
+
// anything initializes the embedder if needed.
|
|
84
|
+
let spaceId = options.activeSpaceId();
|
|
85
|
+
const rowsAfter = (cursor) => db.prepare(`
|
|
86
|
+
SELECT rowid, id, task, agent, domain, steps_json, source, embedding, embedding_dimension
|
|
87
|
+
FROM captured_experiences
|
|
88
|
+
WHERE rowid > ? AND embedding IS NOT NULL AND embedding_space_id IS NULL
|
|
89
|
+
AND embedding_dimension > 0 AND consolidated_into IS NULL
|
|
90
|
+
ORDER BY rowid LIMIT ?
|
|
91
|
+
`).all(cursor, options.limit ?? 200);
|
|
92
|
+
let rows = rowsAfter(spaceId ? readCursor(db, spaceId) : 0);
|
|
93
|
+
if (rows.length === 0)
|
|
94
|
+
return result;
|
|
95
|
+
if (!spaceId) {
|
|
96
|
+
await options.embed(legacyExperienceEmbeddingTexts(rows[0])[0]);
|
|
97
|
+
spaceId = options.activeSpaceId();
|
|
98
|
+
if (!spaceId)
|
|
99
|
+
return result;
|
|
100
|
+
rows = rowsAfter(readCursor(db, spaceId));
|
|
101
|
+
}
|
|
102
|
+
result.spaceId = spaceId;
|
|
103
|
+
const stamp = db.prepare(`
|
|
104
|
+
UPDATE captured_experiences SET embedding_space_id = ?
|
|
105
|
+
WHERE id = ? AND embedding_space_id IS NULL AND embedding = ?
|
|
106
|
+
`);
|
|
107
|
+
let lastRowid = 0;
|
|
108
|
+
try {
|
|
109
|
+
for (const row of rows) {
|
|
110
|
+
const stored = storedVector(row);
|
|
111
|
+
let matched = false;
|
|
112
|
+
if (stored) {
|
|
113
|
+
for (const text of legacyExperienceEmbeddingTexts(row)) {
|
|
114
|
+
const recomputed = await options.embed(text);
|
|
115
|
+
if (options.activeSpaceId() !== spaceId)
|
|
116
|
+
return result; // embedder changed mid-pass
|
|
117
|
+
if (recomputed.length === stored.length
|
|
118
|
+
&& cosineSimilarity(stored, recomputed) >= EMBEDDING_ROUND_TRIP_MIN_COSINE) {
|
|
119
|
+
matched = true;
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (matched) {
|
|
125
|
+
// Only the provenance column, and only if the vector is still the one checked.
|
|
126
|
+
const changes = (await write(() => stamp.run(spaceId, row.id, row.embedding))).changes;
|
|
127
|
+
if (changes > 0)
|
|
128
|
+
result.stamped.push(row.id);
|
|
129
|
+
else
|
|
130
|
+
result.left++;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
result.left++;
|
|
134
|
+
}
|
|
135
|
+
result.checked++;
|
|
136
|
+
lastRowid = row.rowid;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
finally {
|
|
140
|
+
// Rows checked so far are not checked again in this space, even when an
|
|
141
|
+
// embedder failure ends the pass early.
|
|
142
|
+
if (lastRowid > 0)
|
|
143
|
+
await write(() => writeCursor(db, spaceId, lastRowid));
|
|
144
|
+
}
|
|
145
|
+
return result;
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=experience-space-verification.js.map
|
|
@@ -156,10 +156,6 @@ export declare class PatternLifecycleManager {
|
|
|
156
156
|
private _compressionService;
|
|
157
157
|
set compressionService(svc: TemporalCompressionService | null);
|
|
158
158
|
constructor(db: DatabaseType, config?: Partial<PatternLifecycleConfig>);
|
|
159
|
-
/**
|
|
160
|
-
* Ensure required schema extensions exist
|
|
161
|
-
*/
|
|
162
|
-
private ensureSchema;
|
|
163
159
|
/**
|
|
164
160
|
* Get recent experiences from captured_experiences table.
|
|
165
161
|
*/
|
|
@@ -202,6 +198,9 @@ export declare class PatternLifecycleManager {
|
|
|
202
198
|
* Promote pattern to long-term tier
|
|
203
199
|
*/
|
|
204
200
|
promotePattern(patternId: string): boolean;
|
|
201
|
+
/** Whether `patternId` passes the advisory check and the frozen promote rule. */
|
|
202
|
+
private promotionVerified;
|
|
203
|
+
private writePromotion;
|
|
205
204
|
/**
|
|
206
205
|
* Promote all eligible patterns
|
|
207
206
|
*/
|
|
@@ -209,6 +208,16 @@ export declare class PatternLifecycleManager {
|
|
|
209
208
|
promoted: number;
|
|
210
209
|
checked: number;
|
|
211
210
|
};
|
|
211
|
+
/**
|
|
212
|
+
* promoteEligiblePatterns for the MCP server's background workers (#1283):
|
|
213
|
+
* each promotion is queued on the shared connection, so a locked memory.db
|
|
214
|
+
* does not freeze the event loop. Same selection, rule and result.
|
|
215
|
+
*/
|
|
216
|
+
promoteEligiblePatternsWhenUnlocked(): Promise<{
|
|
217
|
+
promoted: number;
|
|
218
|
+
checked: number;
|
|
219
|
+
}>;
|
|
220
|
+
private selectShortTermPatternIds;
|
|
212
221
|
/**
|
|
213
222
|
* Run a promotion sweep — convenience alias for pre-compaction hook.
|
|
214
223
|
* Iterates short-term patterns, checks promotion criteria, promotes eligible ones.
|
|
@@ -225,6 +234,8 @@ export declare class PatternLifecycleManager {
|
|
|
225
234
|
* Deprecate a pattern (soft delete)
|
|
226
235
|
*/
|
|
227
236
|
deprecatePattern(patternId: string, reason?: string): boolean;
|
|
237
|
+
/** Soft-delete a pattern and record why, in one unit so a queued retry repeats both. */
|
|
238
|
+
private writeDeprecation;
|
|
228
239
|
/**
|
|
229
240
|
* Deprecate all patterns that meet deprecation criteria
|
|
230
241
|
*/
|
|
@@ -232,6 +243,15 @@ export declare class PatternLifecycleManager {
|
|
|
232
243
|
deprecated: number;
|
|
233
244
|
checked: number;
|
|
234
245
|
};
|
|
246
|
+
/**
|
|
247
|
+
* deprecateStalePatterns for the MCP server's background workers (#1283):
|
|
248
|
+
* each deprecation is queued on the shared connection. Same criteria and result.
|
|
249
|
+
*/
|
|
250
|
+
deprecateStalePatternsWhenUnlocked(): Promise<{
|
|
251
|
+
deprecated: number;
|
|
252
|
+
checked: number;
|
|
253
|
+
}>;
|
|
254
|
+
private selectActivePatternIds;
|
|
235
255
|
/**
|
|
236
256
|
* Apply confidence decay to patterns that haven't been used recently
|
|
237
257
|
*/
|
|
@@ -239,6 +259,15 @@ export declare class PatternLifecycleManager {
|
|
|
239
259
|
updated: number;
|
|
240
260
|
decayed: number;
|
|
241
261
|
};
|
|
262
|
+
/**
|
|
263
|
+
* applyConfidenceDecay for the MCP server's background workers (#1283): the
|
|
264
|
+
* decay UPDATE is queued on the shared connection. Same cutoff and result.
|
|
265
|
+
*/
|
|
266
|
+
applyConfidenceDecayWhenUnlocked(daysSinceLastRun?: number): Promise<{
|
|
267
|
+
updated: number;
|
|
268
|
+
decayed: number;
|
|
269
|
+
}>;
|
|
270
|
+
private writeConfidenceDecay;
|
|
242
271
|
/**
|
|
243
272
|
* Record pattern usage success/failure
|
|
244
273
|
*/
|
|
@@ -303,6 +332,13 @@ export declare class PatternLifecycleManager {
|
|
|
303
332
|
*/
|
|
304
333
|
private rowToPattern;
|
|
305
334
|
}
|
|
335
|
+
/**
|
|
336
|
+
* Create a pattern lifecycle manager for the MCP server's background workers
|
|
337
|
+
* (#1283). A database that predates the lifecycle columns gets its ALTER
|
|
338
|
+
* TABLEs through the shared connection's write queue first, so a locked
|
|
339
|
+
* memory.db does not freeze the event loop on the worker's first tick.
|
|
340
|
+
*/
|
|
341
|
+
export declare function createPatternLifecycleManagerWhenUnlocked(db: DatabaseType, config?: Partial<PatternLifecycleConfig>): Promise<PatternLifecycleManager>;
|
|
306
342
|
/**
|
|
307
343
|
* Create a pattern lifecycle manager
|
|
308
344
|
*/
|