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
package/dist/mcp/entry.js
CHANGED
|
@@ -29,6 +29,7 @@ import { initFeatureFlagsFromEnv } from '../integrations/ruvector/feature-flags.
|
|
|
29
29
|
import { resetSharedRvfAdapter } from '../integrations/ruvector/shared-rvf-adapter.js';
|
|
30
30
|
import { resetSharedRvfDualWriter } from '../integrations/ruvector/shared-rvf-dual-writer.js';
|
|
31
31
|
import { claimProcessLifecycle, closeRegisteredStores } from '../kernel/process-lifecycle.js';
|
|
32
|
+
import { INTERACTIVE_LOCK_WAIT_MS, setLockWaitCap } from '../shared/sqlite-lock-wait.js';
|
|
32
33
|
import { getBackgroundWorkersState, startBackgroundWorkers } from './background-workers.js';
|
|
33
34
|
import { DAEMON_HEARTBEAT_ENV, DAEMON_LOG_MAX_SIZE_ENV, DAEMON_LOG_PATH_ENV, DAEMON_MODE_ENV, createDaemonLogRotator, detectStdinKind, parseDaemonHeartbeatMs, parseDaemonLogMaxBytes, resolveStdinGuardMode, startDaemonHeartbeat, } from './daemon-mode.js';
|
|
34
35
|
import { readFileSync } from 'node:fs';
|
|
@@ -74,6 +75,9 @@ function releaseProcessStores() {
|
|
|
74
75
|
catch { /* best effort */ }
|
|
75
76
|
}
|
|
76
77
|
async function main() {
|
|
78
|
+
// #1263: a write waiting on another process's lock blocks the event loop, so
|
|
79
|
+
// memory writes wait briefly per attempt and retry asynchronously instead.
|
|
80
|
+
setLockWaitCap(INTERACTIVE_LOCK_WAIT_MS);
|
|
77
81
|
initFeatureFlagsFromEnv();
|
|
78
82
|
// Output startup message BEFORE suppressing stderr (Claude Code health check needs this)
|
|
79
83
|
const version = pkg.version;
|
|
@@ -199,6 +199,8 @@ export const testExecuteConfig = {
|
|
|
199
199
|
routingTier: routingResult?.decision.tier,
|
|
200
200
|
useAgentBooster: routingResult?.useAgentBooster,
|
|
201
201
|
compiledContext: routingResult?.compiledContext,
|
|
202
|
+
// #1247: validated by the execute-tests handler before any runner starts.
|
|
203
|
+
...(params.projectRoot !== undefined ? { projectRoot: params.projectRoot } : {}),
|
|
202
204
|
}),
|
|
203
205
|
calculateTimeout: (params) => params.timeout || 300000,
|
|
204
206
|
mapToResult: (taskId, data, duration, savedFiles) => {
|
|
@@ -41,7 +41,7 @@ export async function scoreUnjudgedTrajectories() {
|
|
|
41
41
|
try {
|
|
42
42
|
const verdict = await scoreTrajectory(row, apiKey, baseUrl);
|
|
43
43
|
if (verdict) {
|
|
44
|
-
updateStmt.run(JSON.stringify(verdict), row.id);
|
|
44
|
+
await um.writeWhenUnlocked(() => updateStmt.run(JSON.stringify(verdict), row.id));
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
catch {
|
|
@@ -897,6 +897,7 @@ export class MCPProtocolServer {
|
|
|
897
897
|
parameters: [
|
|
898
898
|
{ name: 'testFiles', type: 'array', description: 'Nonempty list of concrete test file paths (relative to the project working directory or absolute). Expand glob patterns before calling; glob patterns are rejected.', items: { type: 'string' } },
|
|
899
899
|
{ name: 'parallel', type: 'boolean', description: 'Enable parallel execution', default: true },
|
|
900
|
+
{ name: 'projectRoot', type: 'string', description: 'Optional directory inside the project to run every test file from (for example a monorepo package with its own vitest/jest config); relative testFiles are then relative to it. When omitted, each test file runs from its nearest directory with a vitest/jest config, never above the project root, even when a root config also lists that package in its projects. Either way the runner (jest or vitest) is the one the config of that directory sets up. Python test files (*.py) run with pytest (`python -m pytest`, or the interpreter in AQE_PYTHON) from their nearest pytest config (pytest.ini, pyproject.toml, setup.cfg, tox.ini). Paths outside the project, including through symlinks, are rejected.' },
|
|
900
901
|
saveResultsParameter('test_execute_parallel'),
|
|
901
902
|
],
|
|
902
903
|
},
|
|
@@ -243,18 +243,20 @@ export class A11yAuditTool extends MCPToolBase {
|
|
|
243
243
|
if (contrastResult.success) {
|
|
244
244
|
const failingContrast = contrastResult.value.filter((c) => !c.passes);
|
|
245
245
|
if (failingContrast.length > 0) {
|
|
246
|
+
// #1228: a ratio the browser did not report (-1) is shown as not measured
|
|
247
|
+
const ratioText = (c) => (c.ratio >= 1 ? `${c.ratio}:1` : 'not measured');
|
|
246
248
|
contrastViolations = failingContrast.map((c) => ({
|
|
247
249
|
id: 'color-contrast',
|
|
248
250
|
impact: 'serious',
|
|
249
251
|
description: 'Elements must have sufficient color contrast',
|
|
250
|
-
help: `Element ${c.element} has contrast ratio ${c
|
|
252
|
+
help: `Element ${c.element} has contrast ratio ${ratioText(c)} but requires ${c.requiredRatio}:1`,
|
|
251
253
|
helpUrl: 'https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum',
|
|
252
254
|
wcagCriteria: ['1.4.3'],
|
|
253
255
|
nodes: [
|
|
254
256
|
{
|
|
255
257
|
selector: c.element,
|
|
256
258
|
html: `<${c.element.replace('.', ' class="')}>...</${c.element.split('.')[0]}>`,
|
|
257
|
-
failureSummary: `Contrast ratio ${c
|
|
259
|
+
failureSummary: `Contrast ratio ${ratioText(c)} is below required ${c.requiredRatio}:1`,
|
|
258
260
|
fixSuggestion: `Change foreground color to achieve at least ${c.requiredRatio}:1 contrast`,
|
|
259
261
|
},
|
|
260
262
|
],
|
|
@@ -271,6 +273,10 @@ export class A11yAuditTool extends MCPToolBase {
|
|
|
271
273
|
const keyboardResult = await service.checkKeyboardNavigation(url);
|
|
272
274
|
if (keyboardResult.success) {
|
|
273
275
|
const kbReport = keyboardResult.value;
|
|
276
|
+
if (kbReport.notMeasured && kbReport.notMeasured.length > 0) {
|
|
277
|
+
// #1228: no keyboard finding here is not a clean result for these aspects
|
|
278
|
+
notMeasuredWarnings.push({ id: 'keyboard-not-measured', description: `Keyboard check did not measure: ${kbReport.notMeasured.join('; ')}`, nodes: 0 });
|
|
279
|
+
}
|
|
274
280
|
// Convert keyboard issues to violations
|
|
275
281
|
for (const issue of kbReport.issues) {
|
|
276
282
|
keyboardViolations.push({
|
package/dist/mcp/types.d.ts
CHANGED
|
@@ -201,6 +201,12 @@ export interface TestExecuteParams {
|
|
|
201
201
|
reportFormat?: 'json' | 'junit' | 'html' | 'markdown';
|
|
202
202
|
/** #933: write result files under .agentic-qe/results/ (default true). false skips them. */
|
|
203
203
|
saveResults?: boolean;
|
|
204
|
+
/**
|
|
205
|
+
* #1247: directory inside the project to run every test file from; relative
|
|
206
|
+
* testFiles are read from it. When omitted, each file runs from its nearest
|
|
207
|
+
* runner project (the directory with its vitest/jest config).
|
|
208
|
+
*/
|
|
209
|
+
projectRoot?: string;
|
|
204
210
|
}
|
|
205
211
|
/**
|
|
206
212
|
* Coverage analysis parameters
|
|
@@ -59,7 +59,12 @@ export declare class SessionOperationCache {
|
|
|
59
59
|
private hits;
|
|
60
60
|
private misses;
|
|
61
61
|
private generation;
|
|
62
|
-
|
|
62
|
+
private readonly resolveMemory;
|
|
63
|
+
/**
|
|
64
|
+
* @param resolveMemory Where persisted entries live; defaults to the shared
|
|
65
|
+
* UnifiedMemoryManager once it is initialized (injectable for tests).
|
|
66
|
+
*/
|
|
67
|
+
constructor(config?: Partial<SessionCacheConfig>, resolveMemory?: () => UnifiedMemory | null);
|
|
63
68
|
/**
|
|
64
69
|
* Compute a deterministic fingerprint from build + domain + action + input.
|
|
65
70
|
* Uses SHA-256 of the canonicalized JSON (recursively sorted keys), truncated to 16 hex chars.
|
|
@@ -113,6 +118,15 @@ export declare class SessionOperationCache {
|
|
|
113
118
|
* number of entries removed.
|
|
114
119
|
*/
|
|
115
120
|
invalidateDomain(domain: string): number;
|
|
121
|
+
/**
|
|
122
|
+
* Persist a cache change without blocking the caller (#1274). The write goes
|
|
123
|
+
* through the shared connection's writeWhenUnlocked queue: with memory.db
|
|
124
|
+
* unlocked and nothing queued it runs at once, as before; while another
|
|
125
|
+
* process holds the lock it retries asynchronously for the usual busy_timeout
|
|
126
|
+
* instead of freezing the MCP server's event loop. Failure is non-critical,
|
|
127
|
+
* since the in-memory cache is already up to date.
|
|
128
|
+
*/
|
|
129
|
+
private persistInBackground;
|
|
116
130
|
/** Evict the oldest entry by cachedAt */
|
|
117
131
|
private evictOldest;
|
|
118
132
|
/** Persist a single entry to kv_store */
|
|
@@ -120,7 +134,9 @@ export declare class SessionOperationCache {
|
|
|
120
134
|
/** Delete a single persisted entry from kv_store (used by invalidateDomain). */
|
|
121
135
|
private deletePersisted;
|
|
122
136
|
}
|
|
137
|
+
type UnifiedMemory = import('../kernel/unified-memory.js').UnifiedMemoryManager;
|
|
123
138
|
export declare function getSessionCache(config?: Partial<SessionCacheConfig>): SessionOperationCache;
|
|
124
139
|
/** Reset the singleton (for testing) */
|
|
125
140
|
export declare function resetSessionCache(): void;
|
|
141
|
+
export {};
|
|
126
142
|
//# sourceMappingURL=session-cache.d.ts.map
|
|
@@ -90,8 +90,14 @@ export class SessionOperationCache {
|
|
|
90
90
|
hits = 0;
|
|
91
91
|
misses = 0;
|
|
92
92
|
generation = 0;
|
|
93
|
-
|
|
93
|
+
resolveMemory;
|
|
94
|
+
/**
|
|
95
|
+
* @param resolveMemory Where persisted entries live; defaults to the shared
|
|
96
|
+
* UnifiedMemoryManager once it is initialized (injectable for tests).
|
|
97
|
+
*/
|
|
98
|
+
constructor(config, resolveMemory = tryGetMemory) {
|
|
94
99
|
this.config = { ...DEFAULT_SESSION_CACHE_CONFIG, ...config };
|
|
100
|
+
this.resolveMemory = resolveMemory;
|
|
95
101
|
}
|
|
96
102
|
/**
|
|
97
103
|
* Compute a deterministic fingerprint from build + domain + action + input.
|
|
@@ -175,7 +181,7 @@ export class SessionOperationCache {
|
|
|
175
181
|
*/
|
|
176
182
|
loadFromDb() {
|
|
177
183
|
try {
|
|
178
|
-
const db =
|
|
184
|
+
const db = this.resolveMemory()?.getDatabase();
|
|
179
185
|
if (!db)
|
|
180
186
|
return;
|
|
181
187
|
const cutoffMs = Date.now() - this.config.ttlMs;
|
|
@@ -231,13 +237,10 @@ export class SessionOperationCache {
|
|
|
231
237
|
this.cache.clear();
|
|
232
238
|
this.generation++;
|
|
233
239
|
if (this.config.persistToDb) {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
catch {
|
|
239
|
-
// Cache invalidation must not prevent the tool response.
|
|
240
|
-
}
|
|
240
|
+
// #1274: runs after every state-changing tool call, so it must not wait
|
|
241
|
+
// synchronously on a locked memory.db. Queued writes keep their order,
|
|
242
|
+
// so a later persistEntry still lands after this delete.
|
|
243
|
+
this.persistInBackground((db) => db.prepare("DELETE FROM kv_store WHERE namespace = 'session_cache'").run());
|
|
241
244
|
}
|
|
242
245
|
return removed;
|
|
243
246
|
}
|
|
@@ -261,6 +264,26 @@ export class SessionOperationCache {
|
|
|
261
264
|
}
|
|
262
265
|
return removed;
|
|
263
266
|
}
|
|
267
|
+
/**
|
|
268
|
+
* Persist a cache change without blocking the caller (#1274). The write goes
|
|
269
|
+
* through the shared connection's writeWhenUnlocked queue: with memory.db
|
|
270
|
+
* unlocked and nothing queued it runs at once, as before; while another
|
|
271
|
+
* process holds the lock it retries asynchronously for the usual busy_timeout
|
|
272
|
+
* instead of freezing the MCP server's event loop. Failure is non-critical,
|
|
273
|
+
* since the in-memory cache is already up to date.
|
|
274
|
+
*/
|
|
275
|
+
persistInBackground(write) {
|
|
276
|
+
const um = this.resolveMemory();
|
|
277
|
+
if (!um)
|
|
278
|
+
return;
|
|
279
|
+
try {
|
|
280
|
+
const db = um.getDatabase();
|
|
281
|
+
um.writeWhenUnlocked(() => write(db)).catch(() => { });
|
|
282
|
+
}
|
|
283
|
+
catch {
|
|
284
|
+
/* cache works without persistence */
|
|
285
|
+
}
|
|
286
|
+
}
|
|
264
287
|
/** Evict the oldest entry by cachedAt */
|
|
265
288
|
evictOldest() {
|
|
266
289
|
let oldestKey = null;
|
|
@@ -276,46 +299,27 @@ export class SessionOperationCache {
|
|
|
276
299
|
}
|
|
277
300
|
/** Persist a single entry to kv_store */
|
|
278
301
|
persistEntry(entry) {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
db.prepare(`INSERT OR REPLACE INTO kv_store (key, namespace, value, created_at)
|
|
284
|
-
VALUES (?, 'session_cache', ?, ?)`).run(`session_cache:${entry.fingerprint}`, JSON.stringify(entry), Date.now());
|
|
285
|
-
}
|
|
286
|
-
catch {
|
|
287
|
-
/* non-critical - cache works without persistence */
|
|
288
|
-
}
|
|
302
|
+
const value = JSON.stringify(entry);
|
|
303
|
+
const createdAt = Date.now();
|
|
304
|
+
this.persistInBackground((db) => db.prepare(`INSERT OR REPLACE INTO kv_store (key, namespace, value, created_at)
|
|
305
|
+
VALUES (?, 'session_cache', ?, ?)`).run(`session_cache:${entry.fingerprint}`, value, createdAt));
|
|
289
306
|
}
|
|
290
307
|
/** Delete a single persisted entry from kv_store (used by invalidateDomain). */
|
|
291
308
|
deletePersisted(fingerprint) {
|
|
292
|
-
|
|
293
|
-
const db = tryGetDb();
|
|
294
|
-
if (!db)
|
|
295
|
-
return;
|
|
296
|
-
db.prepare(`DELETE FROM kv_store WHERE namespace = 'session_cache' AND key = ?`).run(`session_cache:${fingerprint}`);
|
|
297
|
-
}
|
|
298
|
-
catch {
|
|
299
|
-
/* non-critical */
|
|
300
|
-
}
|
|
309
|
+
this.persistInBackground((db) => db.prepare(`DELETE FROM kv_store WHERE namespace = 'session_cache' AND key = ?`).run(`session_cache:${fingerprint}`));
|
|
301
310
|
}
|
|
302
311
|
}
|
|
303
|
-
// ============================================================================
|
|
304
|
-
// DB Helper
|
|
305
|
-
// ============================================================================
|
|
306
312
|
/**
|
|
307
|
-
* Attempt to get the unified memory
|
|
313
|
+
* Attempt to get the initialized unified memory manager.
|
|
308
314
|
* Returns null if unavailable (graceful degradation).
|
|
309
315
|
*/
|
|
310
|
-
function
|
|
316
|
+
function tryGetMemory() {
|
|
311
317
|
try {
|
|
312
318
|
// Dynamic require to avoid circular dependencies at import time
|
|
313
319
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
314
320
|
const { getUnifiedMemory } = require('../kernel/unified-memory.js');
|
|
315
321
|
const um = getUnifiedMemory();
|
|
316
|
-
|
|
317
|
-
return null;
|
|
318
|
-
return um.getDatabase();
|
|
322
|
+
return um.isInitialized() ? um : null;
|
|
319
323
|
}
|
|
320
324
|
catch {
|
|
321
325
|
return null;
|
|
@@ -53,6 +53,11 @@ export declare class GOAPPlanner {
|
|
|
53
53
|
* Get database instance, throwing if not initialized
|
|
54
54
|
*/
|
|
55
55
|
private ensureDb;
|
|
56
|
+
/**
|
|
57
|
+
* Run a write through the shared connection's write queue (#1283), so a
|
|
58
|
+
* locked memory.db does not freeze the MCP server during a GOAP tool call.
|
|
59
|
+
*/
|
|
60
|
+
private write;
|
|
56
61
|
/**
|
|
57
62
|
* Initialize the planner - uses unified persistence, seeds default actions
|
|
58
63
|
* ADR-046: Auto-seeds QE actions if database is empty
|
|
@@ -238,6 +243,7 @@ export declare class GOAPPlanner {
|
|
|
238
243
|
* Record plan reuse outcome
|
|
239
244
|
*/
|
|
240
245
|
private recordPlanReuse;
|
|
246
|
+
private recordPlanReuseNow;
|
|
241
247
|
/**
|
|
242
248
|
* Validate that a plan can be executed from current state
|
|
243
249
|
*/
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { randomUUID } from 'crypto';
|
|
15
15
|
import { safeJsonParse } from '../shared/safe-json.js';
|
|
16
|
+
import { writeWhenUnlockedOn } from '../shared/sqlite-write-queue.js';
|
|
16
17
|
import { getUnifiedPersistence } from '../kernel/unified-persistence.js';
|
|
17
18
|
import { DEFAULT_MAX_PLAN_STEPS, validateMaxSteps } from './types.js';
|
|
18
19
|
import { getAllQEActions, QE_GOALS } from './actions/qe-action-library.js';
|
|
@@ -131,6 +132,14 @@ export class GOAPPlanner {
|
|
|
131
132
|
}
|
|
132
133
|
return this.db;
|
|
133
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* Run a write through the shared connection's write queue (#1283), so a
|
|
137
|
+
* locked memory.db does not freeze the MCP server during a GOAP tool call.
|
|
138
|
+
*/
|
|
139
|
+
write(fn) {
|
|
140
|
+
const db = this.ensureDb();
|
|
141
|
+
return writeWhenUnlockedOn(db, () => fn(db));
|
|
142
|
+
}
|
|
134
143
|
// ==========================================================================
|
|
135
144
|
// Initialization
|
|
136
145
|
// ==========================================================================
|
|
@@ -263,7 +272,7 @@ export class GOAPPlanner {
|
|
|
263
272
|
this.validatePlanForState(reusedPlan, currentState) &&
|
|
264
273
|
this.planSatisfiesConstraints(reusedPlan, currentState, goal, constraints)) {
|
|
265
274
|
// Update reuse stats
|
|
266
|
-
this.recordPlanReuse(reusedPlan.id, true);
|
|
275
|
+
await this.recordPlanReuse(reusedPlan.id, true);
|
|
267
276
|
const clonedPlan = {
|
|
268
277
|
...reusedPlan,
|
|
269
278
|
estimatedDurationMs: reusedPlan.actions.reduce((sum, action) => sum + (action.estimatedDurationMs ?? DEFAULT_ACTION_DURATION_MS), 0),
|
|
@@ -802,7 +811,7 @@ export class GOAPPlanner {
|
|
|
802
811
|
async addAction(action) {
|
|
803
812
|
await this.initialize();
|
|
804
813
|
const id = `action-${Date.now()}-${randomUUID().slice(0, 8)}`;
|
|
805
|
-
this.
|
|
814
|
+
await this.write((db) => db
|
|
806
815
|
.prepare(`
|
|
807
816
|
INSERT INTO goap_actions (
|
|
808
817
|
id, name, description, agent_type, preconditions, effects,
|
|
@@ -810,7 +819,7 @@ export class GOAPPlanner {
|
|
|
810
819
|
method, params, implemented
|
|
811
820
|
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 0, ?, ?, ?, ?, ?)
|
|
812
821
|
`)
|
|
813
|
-
.run(id, action.name, action.description ?? null, action.agentType, JSON.stringify(action.preconditions), JSON.stringify(action.effects), action.cost, action.estimatedDurationMs ?? null, action.successRate, action.category, action.qeDomain ?? null, action.method ?? null, action.params ? JSON.stringify(action.params) : null, action.implemented ? 1 : 0);
|
|
822
|
+
.run(id, action.name, action.description ?? null, action.agentType, JSON.stringify(action.preconditions), JSON.stringify(action.effects), action.cost, action.estimatedDurationMs ?? null, action.successRate, action.category, action.qeDomain ?? null, action.method ?? null, action.params ? JSON.stringify(action.params) : null, action.implemented ? 1 : 0));
|
|
814
823
|
// Update in-memory cache
|
|
815
824
|
const fullAction = {
|
|
816
825
|
...action,
|
|
@@ -828,19 +837,23 @@ export class GOAPPlanner {
|
|
|
828
837
|
const action = this.actions.get(actionId);
|
|
829
838
|
if (!action)
|
|
830
839
|
return;
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
.
|
|
840
|
+
// Read the cached stats, write, and update the cache as one queued unit,
|
|
841
|
+
// so concurrent updates cannot both build on the same old count.
|
|
842
|
+
await this.write((db) => {
|
|
843
|
+
const newCount = action.executionCount + 1;
|
|
844
|
+
const newRate = (action.successRate * action.executionCount + (success ? 1 : 0)) /
|
|
845
|
+
newCount;
|
|
846
|
+
db
|
|
847
|
+
.prepare(`
|
|
836
848
|
UPDATE goap_actions
|
|
837
849
|
SET success_rate = ?, execution_count = ?, updated_at = datetime('now')
|
|
838
850
|
WHERE id = ?
|
|
839
851
|
`)
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
852
|
+
.run(newRate, newCount, actionId);
|
|
853
|
+
// Update in-memory cache
|
|
854
|
+
action.successRate = newRate;
|
|
855
|
+
action.executionCount = newCount;
|
|
856
|
+
});
|
|
844
857
|
}
|
|
845
858
|
/**
|
|
846
859
|
* Get actions by category
|
|
@@ -885,14 +898,14 @@ export class GOAPPlanner {
|
|
|
885
898
|
*/
|
|
886
899
|
async savePlan(plan) {
|
|
887
900
|
await this.initialize();
|
|
888
|
-
this.
|
|
901
|
+
await this.write((db) => db
|
|
889
902
|
.prepare(`
|
|
890
903
|
INSERT OR REPLACE INTO goap_plans (
|
|
891
904
|
id, goal_id, initial_state, goal_state, action_sequence,
|
|
892
905
|
total_cost, estimated_duration_ms, status, reused_from, similarity_score
|
|
893
906
|
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
894
907
|
`)
|
|
895
|
-
.run(plan.id, plan.goalId ?? null, JSON.stringify(plan.initialState), JSON.stringify(plan.goalState), JSON.stringify(plan.actions.map((a) => a.id)), plan.totalCost, plan.estimatedDurationMs, plan.status, plan.reusedFrom ?? null, plan.similarityScore ?? null);
|
|
908
|
+
.run(plan.id, plan.goalId ?? null, JSON.stringify(plan.initialState), JSON.stringify(plan.goalState), JSON.stringify(plan.actions.map((a) => a.id)), plan.totalCost, plan.estimatedDurationMs, plan.status, plan.reusedFrom ?? null, plan.similarityScore ?? null));
|
|
896
909
|
}
|
|
897
910
|
/**
|
|
898
911
|
* Get plan by ID
|
|
@@ -999,19 +1012,22 @@ export class GOAPPlanner {
|
|
|
999
1012
|
async storePlanSignature(plan) {
|
|
1000
1013
|
const goalHash = this.hashGoalConditions(plan.goalState);
|
|
1001
1014
|
const stateVector = this.extractStateVector(plan.initialState);
|
|
1002
|
-
this.
|
|
1015
|
+
await this.write((db) => db
|
|
1003
1016
|
.prepare(`
|
|
1004
1017
|
INSERT OR REPLACE INTO goap_plan_signatures (
|
|
1005
1018
|
id, plan_id, goal_hash, state_vector, action_sequence, total_cost
|
|
1006
1019
|
) VALUES (?, ?, ?, ?, ?, ?)
|
|
1007
1020
|
`)
|
|
1008
|
-
.run(`sig-${Date.now()}-${randomUUID().slice(0, 8)}`, plan.id, goalHash, JSON.stringify(stateVector), JSON.stringify(plan.actions.map((a) => a.id)), plan.totalCost);
|
|
1021
|
+
.run(`sig-${Date.now()}-${randomUUID().slice(0, 8)}`, plan.id, goalHash, JSON.stringify(stateVector), JSON.stringify(plan.actions.map((a) => a.id)), plan.totalCost));
|
|
1009
1022
|
}
|
|
1010
1023
|
/**
|
|
1011
1024
|
* Record plan reuse outcome
|
|
1012
1025
|
*/
|
|
1013
1026
|
recordPlanReuse(planId, success) {
|
|
1014
|
-
|
|
1027
|
+
// Read and update as one queued unit (#1283).
|
|
1028
|
+
return this.write((db) => this.recordPlanReuseNow(db, planId, success));
|
|
1029
|
+
}
|
|
1030
|
+
recordPlanReuseNow(db, planId, success) {
|
|
1015
1031
|
const current = db
|
|
1016
1032
|
.prepare('SELECT success_rate, usage_count FROM goap_plan_signatures WHERE plan_id = ?')
|
|
1017
1033
|
.get(planId);
|
|
@@ -1121,12 +1137,12 @@ export class GOAPPlanner {
|
|
|
1121
1137
|
async addGoal(goal) {
|
|
1122
1138
|
await this.initialize();
|
|
1123
1139
|
const id = `goal-${Date.now()}-${randomUUID().slice(0, 8)}`;
|
|
1124
|
-
this.
|
|
1140
|
+
await this.write((db) => db
|
|
1125
1141
|
.prepare(`
|
|
1126
1142
|
INSERT INTO goap_goals (id, name, description, conditions, priority, qe_domain)
|
|
1127
1143
|
VALUES (?, ?, ?, ?, ?, ?)
|
|
1128
1144
|
`)
|
|
1129
|
-
.run(id, goal.name, goal.description ?? null, JSON.stringify(goal.conditions), goal.priority, goal.qeDomain ?? null);
|
|
1145
|
+
.run(id, goal.name, goal.description ?? null, JSON.stringify(goal.conditions), goal.priority, goal.qeDomain ?? null));
|
|
1130
1146
|
return id;
|
|
1131
1147
|
}
|
|
1132
1148
|
/**
|
|
@@ -17,6 +17,7 @@ import { secureRandom } from '../shared/utils/crypto-random.js';
|
|
|
17
17
|
import { getUnifiedMemory } from '../kernel/unified-memory.js';
|
|
18
18
|
import { toErrorMessage } from '../shared/error-utils.js';
|
|
19
19
|
import { safeJsonParse } from '../shared/safe-json.js';
|
|
20
|
+
import { writeWhenUnlockedOn } from '../shared/sqlite-write-queue.js';
|
|
20
21
|
/**
|
|
21
22
|
* Default execution configuration
|
|
22
23
|
*/
|
|
@@ -760,31 +761,39 @@ export class PlanExecutor {
|
|
|
760
761
|
agent_output, world_state_before, world_state_after, error_message
|
|
761
762
|
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
762
763
|
`);
|
|
763
|
-
//
|
|
764
|
-
//
|
|
765
|
-
//
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
764
|
+
// #1283: the step rows go in as one queued transaction, so a locked
|
|
765
|
+
// memory.db does not freeze the MCP server and a retried attempt cannot
|
|
766
|
+
// insert a step twice.
|
|
767
|
+
const insertSteps = this.db.transaction(() => {
|
|
768
|
+
// Issue #535: steps from replacement plans (replanning) are recorded
|
|
769
|
+
// under the top-level plan id with a chronological step order, so one
|
|
770
|
+
// execution is one history record for the plan the caller executed —
|
|
771
|
+
// not split across sub-plan ids with colliding step orders.
|
|
772
|
+
result.steps.forEach((step, index) => {
|
|
773
|
+
insertStep.run(step.id, result.planId, executionId, step.action.id, index, step.status, step.retries, step.startedAt.toISOString(), step.durationMs ?? null, step.agentId ?? null, step.agentOutput ?? null, step.worldStateBefore ? JSON.stringify(step.worldStateBefore) : null, step.worldStateAfter ? JSON.stringify(step.worldStateAfter) : null, step.error ?? null);
|
|
774
|
+
});
|
|
775
|
+
// Issue #535 (codex review): an execution's cancellation cannot be
|
|
776
|
+
// inferred from its step rows once replanning is involved (the step
|
|
777
|
+
// count no longer matches the executed plan's action count), so record
|
|
778
|
+
// it explicitly with a marker row that history reads and then hides.
|
|
779
|
+
if (result.status === 'cancelled') {
|
|
780
|
+
insertStep.run(`${executionId}-${CANCELLED_MARKER_STATUS}`, result.planId, executionId, CANCELLED_MARKER_ACTION_ID, result.steps.length, CANCELLED_MARKER_STATUS, 0, new Date().toISOString(), null, null, null, null, null, result.error ?? 'Execution was cancelled');
|
|
781
|
+
}
|
|
769
782
|
});
|
|
770
|
-
|
|
771
|
-
// inferred from its step rows once replanning is involved (the step
|
|
772
|
-
// count no longer matches the executed plan's action count), so record
|
|
773
|
-
// it explicitly with a marker row that history reads and then hides.
|
|
774
|
-
if (result.status === 'cancelled') {
|
|
775
|
-
insertStep.run(`${executionId}-${CANCELLED_MARKER_STATUS}`, result.planId, executionId, CANCELLED_MARKER_ACTION_ID, result.steps.length, CANCELLED_MARKER_STATUS, 0, new Date().toISOString(), null, null, null, null, null, result.error ?? 'Execution was cancelled');
|
|
776
|
-
}
|
|
783
|
+
await writeWhenUnlockedOn(this.db, () => insertSteps());
|
|
777
784
|
// Reflects only the most recent execution attempt for this plan — a
|
|
778
785
|
// deliberate, documented scope limit: goap_plans is one row per plan,
|
|
779
786
|
// not per attempt. Full per-attempt history remains queryable via
|
|
780
787
|
// goap_execution_steps grouped by execution_id (see getExecutionHistory).
|
|
781
788
|
try {
|
|
782
|
-
|
|
789
|
+
const executedAt = new Date(Date.now() - result.totalDurationMs).toISOString();
|
|
790
|
+
const completedAt = new Date().toISOString();
|
|
791
|
+
await writeWhenUnlockedOn(this.db, () => this.db.prepare(`
|
|
783
792
|
UPDATE goap_plans SET status = ?, executed_at = COALESCE(executed_at, ?), completed_at = ?
|
|
784
793
|
WHERE id = ?
|
|
785
794
|
`).run(result.status === 'completed' ? 'completed'
|
|
786
795
|
: result.status === 'cancelled' ? 'cancelled'
|
|
787
|
-
: 'failed',
|
|
796
|
+
: 'failed', executedAt, completedAt, result.planId));
|
|
788
797
|
}
|
|
789
798
|
catch (error) {
|
|
790
799
|
// Best-effort — a plan row might not exist yet in edge cases (e.g.
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* A single co-execution registers at 0.05; twenty successes reach full confidence.
|
|
7
7
|
*/
|
|
8
8
|
import { toErrorMessage } from '../shared/error-utils.js';
|
|
9
|
+
import { writeWhenUnlockedOn } from '../shared/sqlite-write-queue.js';
|
|
9
10
|
// ============================================================================
|
|
10
11
|
// Constants
|
|
11
12
|
// ============================================================================
|
|
@@ -56,15 +57,14 @@ export class CoExecutionRepository {
|
|
|
56
57
|
if (!this.db)
|
|
57
58
|
return;
|
|
58
59
|
const [a, b] = [record.agentA, record.agentB].sort();
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
catch (error) {
|
|
60
|
+
const db = this.db;
|
|
61
|
+
// #1283: queued, so a locked memory.db does not freeze the MCP server.
|
|
62
|
+
writeWhenUnlockedOn(db, () => db.prepare(`
|
|
63
|
+
INSERT INTO qe_agent_co_execution (agent_a, agent_b, domain, success, task_description)
|
|
64
|
+
VALUES (?, ?, ?, ?, ?)
|
|
65
|
+
`).run(a, b, record.domain, record.success ? 1 : 0, record.taskDescription?.slice(0, 500) || null)).catch((error) => {
|
|
66
66
|
console.debug(`[CoExecutionRepository] Record error: ${toErrorMessage(error)}`);
|
|
67
|
-
}
|
|
67
|
+
});
|
|
68
68
|
}
|
|
69
69
|
/**
|
|
70
70
|
* Get co-execution stats for a specific agent pair.
|
|
@@ -166,7 +166,10 @@ export class CoExecutionRepository {
|
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
168
|
});
|
|
169
|
-
|
|
169
|
+
// #1283: queued, so a locked memory.db does not freeze the MCP server.
|
|
170
|
+
writeWhenUnlockedOn(this.db, () => transaction()).catch((error) => {
|
|
171
|
+
console.debug(`[CoExecutionRepository] Swarm record error: ${toErrorMessage(error)}`);
|
|
172
|
+
});
|
|
170
173
|
}
|
|
171
174
|
catch (error) {
|
|
172
175
|
console.debug(`[CoExecutionRepository] Swarm record error: ${toErrorMessage(error)}`);
|
|
@@ -42,6 +42,14 @@ export declare class RoutingFeedbackCollector {
|
|
|
42
42
|
* Persist a single outcome to the database
|
|
43
43
|
*/
|
|
44
44
|
private persistOutcome;
|
|
45
|
+
/**
|
|
46
|
+
* Queue a write on the shared connection without blocking the caller
|
|
47
|
+
* (#1274). recordOutcome runs after every routed task, so a locked
|
|
48
|
+
* memory.db must not freeze the MCP server's event loop. Writes keep their
|
|
49
|
+
* call order and the connection's full busy_timeout budget; with the
|
|
50
|
+
* database unlocked and nothing queued the write runs at once, as before.
|
|
51
|
+
*/
|
|
52
|
+
private persistInBackground;
|
|
45
53
|
/**
|
|
46
54
|
* Infer model tier from agent name for analytics.
|
|
47
55
|
* Maps known agent patterns to ADR-026 tiers.
|