agentic-qe 3.15.8 → 3.15.10
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 +434 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/adapters/a2ui/catalog/component-schemas.js +2 -1
- package/dist/adapters/a2ui/data/json-pointer-resolver.js +10 -5
- package/dist/adapters/a2ui/integration/agui-sync.js +10 -6
- package/dist/adapters/a2ui/integration/surface-state-bridge.js +9 -5
- package/dist/adapters/ag-ui/json-patch.js +10 -6
- package/dist/agents/claim-verifier/claim-verifier-service.js +13 -8
- package/dist/audit/witness-chain.d.ts +1 -1
- package/dist/bridge/captured-experience-bridge.js +12 -13
- package/dist/cli/bundle.js +6 -6
- package/dist/cli/chunks/adapter-TR5SLAZC.js +2 -0
- package/dist/cli/chunks/agent-booster-wasm-H7ANGXW4.js +2 -0
- package/dist/cli/chunks/{agent-handler-2NQFHAWE.js → agent-handler-SVXSHEET.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-457ECHHK.js → agent-memory-branch-WKQH36XL.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-DXWKCHY2.js +2 -0
- package/dist/cli/chunks/{arena-JV3WSEHU.js → arena-EKOOFVST.js} +2 -2
- package/dist/cli/chunks/{arena-IYBQ3GPY.js → arena-OPS36NFZ.js} +4 -4
- package/dist/cli/chunks/{audit-5OS3T3K6.js → audit-AO5NDZRI.js} +3 -3
- package/dist/cli/chunks/base-GTB6POYE.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-IQKBFVAO.js → better-sqlite3-TFLVEMMY.js} +2 -2
- package/dist/cli/chunks/{brain-handler-KA3SGAFM.js → brain-handler-ADBBJPYW.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-QZDU2VOQ.js → branch-enumerator-HGHUYYL5.js} +2 -2
- package/dist/cli/chunks/browser-5LU6P4SZ.js +4 -0
- package/dist/cli/chunks/browser-workflow-MSBOLYUY.js +2 -0
- package/dist/cli/chunks/{chunk-CRUQ6RXU.js → chunk-2SXBBUM6.js} +2 -2
- package/dist/cli/chunks/{chunk-4GUVVGJX.js → chunk-2T7RRL6G.js} +1 -1
- package/dist/cli/chunks/{chunk-OJWEZYLR.js → chunk-2XGVTYVX.js} +2 -2
- package/dist/cli/chunks/{chunk-LVHZK7GW.js → chunk-2ZI5FKSF.js} +2 -2
- package/dist/cli/chunks/chunk-2ZMF4NCF.js +4 -0
- package/dist/cli/chunks/{chunk-62T7U25U.js → chunk-37OWRCUN.js} +1 -1
- package/dist/cli/chunks/{chunk-UQLAN5TX.js → chunk-3P34JFQH.js} +5 -5
- package/dist/cli/chunks/{chunk-UDCYQLTD.js → chunk-3Y7SPD72.js} +2 -2
- package/dist/cli/chunks/{chunk-PPIM7B5G.js → chunk-4G63WT4F.js} +2 -2
- package/dist/cli/chunks/chunk-4SJYIX54.js +3 -0
- package/dist/cli/chunks/chunk-5E6GHSTY.js +3 -0
- package/dist/cli/chunks/{chunk-4TZLZRZ4.js → chunk-5LPYV3TK.js} +1 -1
- package/dist/cli/chunks/{chunk-YUP3APSN.js → chunk-62OAY5KJ.js} +1 -1
- package/dist/cli/chunks/{chunk-VQRBBR27.js → chunk-6C3II5OM.js} +2 -2
- package/dist/cli/chunks/{chunk-RG42LDOB.js → chunk-6GP6W46M.js} +2 -2
- package/dist/cli/chunks/{chunk-KMZW2P3R.js → chunk-6KIL6CMD.js} +2 -2
- package/dist/cli/chunks/{chunk-UKKFZJME.js → chunk-6MVVSSID.js} +1 -1
- package/dist/cli/chunks/{chunk-VVK4ECVJ.js → chunk-6P7424AO.js} +2 -2
- package/dist/cli/chunks/{chunk-A2UGPKCS.js → chunk-6PX4OXQO.js} +2 -2
- package/dist/cli/chunks/{chunk-JLTGO5BB.js → chunk-6S3WJGUV.js} +2 -2
- package/dist/cli/chunks/{chunk-GSOK4M6V.js → chunk-6TB6YOCZ.js} +1 -1
- package/dist/cli/chunks/{chunk-VWRNG3UK.js → chunk-6X5DHU6Q.js} +1 -1
- package/dist/cli/chunks/{chunk-5YOO5QSE.js → chunk-6XCMKIZN.js} +1 -1
- package/dist/cli/chunks/{chunk-4C3RYBTT.js → chunk-7LFZ4CHM.js} +2 -2
- package/dist/cli/chunks/{chunk-O4RRVTXN.js → chunk-7OZVZIBE.js} +2 -2
- package/dist/cli/chunks/{chunk-2JCLACCS.js → chunk-7PJIR4ST.js} +2 -2
- package/dist/cli/chunks/{chunk-NWFBF3KT.js → chunk-7TB6FK4B.js} +1 -1
- package/dist/cli/chunks/{chunk-FJAO4UX2.js → chunk-7ZCDZHDB.js} +2 -2
- package/dist/cli/chunks/chunk-A55QKKT2.js +2 -0
- package/dist/cli/chunks/{chunk-ZOVAZTXE.js → chunk-ABFFWZPC.js} +273 -278
- package/dist/cli/chunks/{chunk-FWXNFPLS.js → chunk-ACWFKES2.js} +2 -2
- package/dist/cli/chunks/{chunk-IJSFZO7P.js → chunk-AH3ZD3NJ.js} +2 -2
- package/dist/cli/chunks/{chunk-7SLEUVPZ.js → chunk-AI4VYSFS.js} +2 -2
- package/dist/cli/chunks/chunk-APSRPR4W.js +2 -0
- package/dist/cli/chunks/chunk-ATHWDAXB.js +3 -0
- package/dist/cli/chunks/{chunk-2GSAAUW3.js → chunk-B6LTH6YV.js} +2 -2
- package/dist/cli/chunks/chunk-BQUAE3CP.js +3 -0
- package/dist/cli/chunks/{chunk-7XGM7Q2N.js → chunk-C522H7XR.js} +54 -33
- package/dist/cli/chunks/{chunk-7DHSHD5B.js → chunk-CESIR27V.js} +2 -2
- package/dist/cli/chunks/{chunk-V7VZSNDK.js → chunk-CFBEBXLO.js} +3 -3
- package/dist/cli/chunks/{chunk-NZATJ2C6.js → chunk-CMBLM26R.js} +2 -2
- package/dist/cli/chunks/{chunk-7CVMT64N.js → chunk-CZ2IF6MC.js} +1 -1
- package/dist/cli/chunks/{chunk-YVWMJZ6O.js → chunk-CZGOSJQ4.js} +2 -2
- package/dist/cli/chunks/{chunk-TMNEK7TP.js → chunk-D6DA2KFD.js} +2 -2
- package/dist/cli/chunks/{chunk-UTNKMPTC.js → chunk-DBMNJSBV.js} +1 -1
- package/dist/cli/chunks/{chunk-JFWQFB3S.js → chunk-DE4YJQJF.js} +2 -2
- package/dist/cli/chunks/{chunk-767SR7WH.js → chunk-DEF34AFL.js} +2 -2
- package/dist/cli/chunks/{chunk-ZWMFKZEQ.js → chunk-DKAC3E3B.js} +2 -2
- package/dist/cli/chunks/{chunk-CDLG3Q2O.js → chunk-DMFTELBS.js} +2 -2
- package/dist/cli/chunks/{chunk-P4UT4LBE.js → chunk-DNRWGATA.js} +10 -10
- package/dist/cli/chunks/{chunk-PUYQ6EKC.js → chunk-DT7SIJOA.js} +2 -2
- package/dist/cli/chunks/{chunk-ST7ASEJO.js → chunk-DURHK377.js} +69 -69
- package/dist/cli/chunks/{chunk-V4QJ3MMT.js → chunk-EAU5KDFO.js} +1 -1
- package/dist/cli/chunks/{chunk-BLZEOGQE.js → chunk-EDLFX4ZB.js} +2 -2
- package/dist/cli/chunks/{chunk-ZBI7PJFX.js → chunk-EN2QSKFF.js} +2 -2
- package/dist/cli/chunks/{chunk-U7CIY3YR.js → chunk-ERQKYIP7.js} +2 -2
- package/dist/cli/chunks/{chunk-X7ZQIFES.js → chunk-ESUO3GTJ.js} +2 -2
- package/dist/cli/chunks/{chunk-SHEVM5PF.js → chunk-EWFECZ2U.js} +2 -2
- package/dist/cli/chunks/{chunk-JWPYMRIX.js → chunk-FAUCT5KR.js} +3 -3
- package/dist/cli/chunks/{chunk-KMVFBYJO.js → chunk-FB6TI3BH.js} +2 -2
- package/dist/cli/chunks/{chunk-22DOS3PM.js → chunk-FBXTQNRH.js} +2 -2
- package/dist/cli/chunks/{chunk-W5A36V3Z.js → chunk-FESZBPUB.js} +2 -2
- package/dist/cli/chunks/chunk-FFTPAWM6.js +141 -0
- package/dist/cli/chunks/{chunk-VWSGWYRB.js → chunk-FKL3R5JQ.js} +2 -2
- package/dist/cli/chunks/{chunk-2DPHFCMW.js → chunk-FPUDRSFJ.js} +2 -2
- package/dist/cli/chunks/{chunk-VKFVJCIH.js → chunk-FZOWULMH.js} +1 -1
- package/dist/cli/chunks/{chunk-HXCGV5UJ.js → chunk-G3CZCUPM.js} +2 -2
- package/dist/cli/chunks/{chunk-GENNJRNK.js → chunk-G5I6KGMW.js} +22 -22
- package/dist/cli/chunks/{chunk-J7FLNP5L.js → chunk-GHBNRMSJ.js} +2 -2
- package/dist/cli/chunks/{chunk-I77D65X5.js → chunk-GJHWY3ZX.js} +2 -2
- package/dist/cli/chunks/{chunk-DKFSCJEF.js → chunk-GJMLK5UT.js} +2 -2
- package/dist/cli/chunks/{chunk-52YRSWPS.js → chunk-GRCIBCJ2.js} +2 -2
- package/dist/cli/chunks/{chunk-NW7HTOSN.js → chunk-GWZZ7DAO.js} +2 -2
- package/dist/cli/chunks/{chunk-D4IBIMWI.js → chunk-GZLZCZ42.js} +2 -2
- package/dist/cli/chunks/{chunk-FEN2DHFM.js → chunk-H2PYU7MN.js} +1 -1
- package/dist/cli/chunks/{chunk-4I35ARWW.js → chunk-H32EPIR2.js} +1 -1
- package/dist/cli/chunks/{chunk-MUDBF2JC.js → chunk-H74Q7TJN.js} +1 -1
- package/dist/cli/chunks/chunk-HOZUDE4C.js +2 -0
- package/dist/cli/chunks/{chunk-MMY52Y6R.js → chunk-I33O4BRQ.js} +2 -2
- package/dist/cli/chunks/{chunk-ZG7UKWBB.js → chunk-IKISCIGH.js} +2 -2
- package/dist/cli/chunks/{chunk-SFPGLUXS.js → chunk-IPJ7Q3AJ.js} +1 -1
- package/dist/cli/chunks/{chunk-2ZRNXEVI.js → chunk-IU2IV4NE.js} +1 -1
- package/dist/cli/chunks/{chunk-XOOBLZXR.js → chunk-JHIY4VCC.js} +2 -2
- package/dist/cli/chunks/{chunk-PJGQ2TKN.js → chunk-KG336OV3.js} +2 -2
- package/dist/cli/chunks/{chunk-YRH7KMTU.js → chunk-KI73QCR5.js} +2 -2
- package/dist/cli/chunks/{chunk-FAYXES7R.js → chunk-KNQ2ERFX.js} +2 -2
- package/dist/cli/chunks/{chunk-CQ3SBRDP.js → chunk-KOBVYY6H.js} +2 -2
- package/dist/cli/chunks/{chunk-3N627QRU.js → chunk-KSIWGGJI.js} +8 -8
- package/dist/cli/chunks/{chunk-2UN4JOTN.js → chunk-LMS3Y7JD.js} +2 -2
- package/dist/cli/chunks/{chunk-RSMPJWQH.js → chunk-LQEURY7C.js} +1 -1
- package/dist/cli/chunks/{chunk-NQDYOF35.js → chunk-LRZY4KS2.js} +2 -2
- package/dist/cli/chunks/{chunk-U3BWBP6B.js → chunk-M2QV7PT7.js} +2 -2
- package/dist/cli/chunks/{chunk-WLXGUQOZ.js → chunk-MA7JIQ6U.js} +2 -2
- package/dist/cli/chunks/{chunk-Y5ZBF7MA.js → chunk-MG27QY4D.js} +2 -2
- package/dist/cli/chunks/chunk-MNN5J4GU.js +12 -0
- package/dist/cli/chunks/chunk-N6PIIK6G.js +3 -0
- package/dist/cli/chunks/chunk-NAXGWDVM.js +12 -0
- package/dist/cli/chunks/{chunk-DCYUHCPK.js → chunk-NGKNYIQZ.js} +1 -1
- package/dist/cli/chunks/chunk-NNFZUTDH.js +2 -0
- package/dist/cli/chunks/{chunk-UTFMMZ57.js → chunk-NPPHWFA2.js} +3 -3
- package/dist/cli/chunks/chunk-NSHU347M.js +2 -0
- package/dist/cli/chunks/{chunk-NF63NHJH.js → chunk-NVYIZCSR.js} +2 -2
- package/dist/cli/chunks/{chunk-YNQPHRUZ.js → chunk-NW5JUCCG.js} +1 -1
- package/dist/cli/chunks/{chunk-G6CLO74Q.js → chunk-NZYLNXT6.js} +3 -3
- package/dist/cli/chunks/{chunk-R2NHGESM.js → chunk-OBAREPDC.js} +2 -2
- package/dist/cli/chunks/{chunk-X3HM7SV4.js → chunk-ODJNUMV3.js} +2 -2
- package/dist/cli/chunks/{chunk-OCLAMZJG.js → chunk-OEKP73MC.js} +2 -2
- package/dist/cli/chunks/{chunk-5MBNRTT5.js → chunk-OPFGRS5S.js} +2 -2
- package/dist/cli/chunks/{chunk-K5R3WUJP.js → chunk-OY2AHLSF.js} +1 -1
- package/dist/cli/chunks/{chunk-KJNUETCB.js → chunk-OY3NJNP2.js} +1 -1
- package/dist/cli/chunks/{chunk-P2EA62YS.js → chunk-PCEW6Q2C.js} +1 -1
- package/dist/cli/chunks/{chunk-HNGNRIZZ.js → chunk-PFG6VQ5Z.js} +2 -2
- package/dist/cli/chunks/{chunk-DN3AKAPY.js → chunk-PGYMKGOE.js} +2 -2
- package/dist/cli/chunks/{chunk-BEVWCF3Q.js → chunk-PPSAMXYN.js} +3 -3
- package/dist/cli/chunks/chunk-RK73HB2F.js +2 -0
- package/dist/cli/chunks/{chunk-6E7EOHMN.js → chunk-RPHY2DU6.js} +2 -2
- package/dist/cli/chunks/{chunk-7C6FMLQR.js → chunk-RWWOHCMG.js} +25 -20
- package/dist/cli/chunks/{chunk-5ONJ7AV6.js → chunk-S75EYIJG.js} +1 -1
- package/dist/cli/chunks/chunk-SKQUUE4F.js +5 -0
- package/dist/cli/chunks/chunk-SO45NA4D.js +180 -0
- package/dist/cli/chunks/{chunk-SWY6KGMF.js → chunk-SU5H66SD.js} +2 -2
- package/dist/cli/chunks/{chunk-ZOHS32SI.js → chunk-SY2IB442.js} +2 -2
- package/dist/cli/chunks/{chunk-MV4S3TEC.js → chunk-TBLI254A.js} +2 -2
- package/dist/cli/chunks/{chunk-5DZDLOY6.js → chunk-TNMBRDCA.js} +3 -3
- package/dist/cli/chunks/{chunk-FEPFXXI7.js → chunk-TYFZXDGZ.js} +2 -2
- package/dist/cli/chunks/{chunk-A6GCO6ZU.js → chunk-U4OICXV2.js} +2 -2
- package/dist/cli/chunks/{chunk-G77Q22EN.js → chunk-U53ZB4IX.js} +2 -2
- package/dist/cli/chunks/chunk-UARKIZAS.js +2 -0
- package/dist/cli/chunks/{chunk-6GIC2263.js → chunk-UCJMVXO4.js} +2 -2
- package/dist/cli/chunks/{chunk-DAFMHM64.js → chunk-UHTTW3IT.js} +2 -2
- package/dist/cli/chunks/{chunk-2QRGIEQV.js → chunk-V2M2XCR5.js} +1 -1
- package/dist/cli/chunks/{chunk-XZQVC3GD.js → chunk-V2RSNVMW.js} +1 -1
- package/dist/cli/chunks/{chunk-GGSTLKY5.js → chunk-V6JBOIMX.js} +1 -1
- package/dist/cli/chunks/{chunk-BTMEOZYY.js → chunk-VFKF2XO7.js} +1 -1
- package/dist/cli/chunks/{chunk-4C7KE2EL.js → chunk-VFSYMOAL.js} +2 -2
- package/dist/cli/chunks/{chunk-D4O3TJI7.js → chunk-VJQYDYAJ.js} +2 -2
- package/dist/cli/chunks/{chunk-PZ7FJ4UG.js → chunk-VKRTTFB6.js} +2 -2
- package/dist/cli/chunks/{chunk-CQ5G64EA.js → chunk-VWNFAW2M.js} +2 -2
- package/dist/cli/chunks/{chunk-DY37YMMQ.js → chunk-WBM6N6IM.js} +1 -1
- package/dist/cli/chunks/{chunk-K4N2MBCE.js → chunk-WDQ7IEZY.js} +2 -2
- package/dist/cli/chunks/{chunk-HI6OBDDY.js → chunk-WDVRE6GN.js} +2 -2
- package/dist/cli/chunks/{chunk-PICEGWGB.js → chunk-WQ4PYWSW.js} +1 -1
- package/dist/cli/chunks/{chunk-NHOMVBCI.js → chunk-WSF24I3D.js} +2 -2
- package/dist/cli/chunks/{chunk-LPSMVBB3.js → chunk-XBVUVFJK.js} +2 -2
- package/dist/cli/chunks/{chunk-J6LL25QJ.js → chunk-XEB3NLJR.js} +2 -2
- package/dist/cli/chunks/{chunk-SJMZZMHP.js → chunk-XFVTGAAJ.js} +2 -2
- package/dist/cli/chunks/{chunk-KVMKYUOE.js → chunk-XLZYRTNO.js} +2 -2
- package/dist/cli/chunks/chunk-XUZDBQ5X.js +6 -0
- package/dist/cli/chunks/{chunk-WAWKAYPY.js → chunk-Y76IAYQD.js} +1 -1
- package/dist/cli/chunks/{chunk-3LFLO2WK.js → chunk-YAKGBHO4.js} +2 -2
- package/dist/cli/chunks/{chunk-TC52M542.js → chunk-YBSBABOS.js} +2 -2
- package/dist/cli/chunks/{chunk-BQUIZ5QT.js → chunk-YCGP5VFP.js} +2 -2
- package/dist/cli/chunks/{chunk-T2TDTBFV.js → chunk-YDAQK5UF.js} +1 -1
- package/dist/cli/chunks/{chunk-LHRVSK44.js → chunk-YK3BVZY6.js} +2 -2
- package/dist/cli/chunks/{chunk-QFYUZYRA.js → chunk-YK7JN5N7.js} +4 -4
- package/dist/cli/chunks/{chunk-IMSRWNWF.js → chunk-YKMU4LBV.js} +1 -1
- package/dist/cli/chunks/{chunk-NLYUC63R.js → chunk-YYTGXD3R.js} +2 -2
- package/dist/cli/chunks/{chunk-OWBFVAEH.js → chunk-Z2O2YJAF.js} +2 -2
- package/dist/cli/chunks/{chunk-KITKQUBX.js → chunk-Z7IYW5U7.js} +1 -1
- package/dist/cli/chunks/{chunk-4NTLGGXO.js → chunk-ZG5666GJ.js} +1 -1
- package/dist/cli/chunks/{chunk-4YUBWU3E.js → chunk-ZXPY654C.js} +1 -1
- package/dist/cli/chunks/{ci-7NUCRGWO.js → ci-MSKMVH5X.js} +2 -2
- package/dist/cli/chunks/{ci-config-VQVECCFI.js → ci-config-7ODMNAUM.js} +2 -2
- package/dist/cli/chunks/{ci-output-P7GQ6TKF.js → ci-output-FXZ7ZZW3.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-5YP6N6HE.js → circuit-breaker-4VOUEPOX.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-W5H7CMU6.js → claude-flow-setup-7D4SGLM4.js} +2 -2
- package/dist/cli/chunks/client-POSVREVS.js +2 -0
- package/dist/cli/chunks/{cline-installer-OYANSZ54.js → cline-installer-WRRT7BGQ.js} +2 -2
- package/dist/cli/chunks/{code-OMT4UEZI.js → code-ZDJRIL3S.js} +25 -24
- package/dist/cli/chunks/{code-index-extractor-M2JEWKNF.js → code-index-extractor-4S4SHM56.js} +2 -2
- package/dist/cli/chunks/{codex-installer-YBS6N5O3.js → codex-installer-YTRHNDWR.js} +2 -2
- package/dist/cli/chunks/{completions-U7GS5RG6.js → completions-6N64JUXJ.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-QSXPIUIU.js → complexity-analyzer-I4A26VCJ.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-W5TTT743.js → continuedev-installer-IIDR66LB.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-KC2RT24C.js → copilot-installer-SVVFY3S2.js} +2 -2
- package/dist/cli/chunks/core-handlers-V243GY7X.js +2 -0
- package/dist/cli/chunks/{cost-tracker-OQPVR6V4.js → cost-tracker-VGFS6IBX.js} +2 -2
- package/dist/cli/chunks/{coverage-TCO2A2NX.js → coverage-B7MCGNTE.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-N3AIEM3B.js +2 -0
- package/dist/cli/chunks/{cursor-installer-MH7GWD4L.js → cursor-installer-UPETT57E.js} +2 -2
- package/dist/cli/chunks/daemon-7BDJHEIJ.js +18 -0
- package/dist/cli/chunks/{daemon-UJEARJZ2.js → daemon-CQFNZLXU.js} +7 -7
- package/dist/cli/chunks/{dag-attention-scheduler-F3SUJU5O.js → dag-attention-scheduler-PJVABHON.js} +2 -2
- package/dist/cli/chunks/{detect-5QTCRB32.js → detect-56SKAGWX.js} +2 -2
- package/dist/cli/chunks/{dist-node-XKZPHDBO.js → dist-node-UYTYUMLN.js} +2 -2
- package/dist/cli/chunks/{domain-handler-V3UEADKW.js → domain-handler-YOYLBYJE.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-7PES4UHZ.js → domain-plugins-7TARX2XF.js} +2 -2
- package/dist/cli/chunks/domain-transfer-AKVSBD6E.js +2 -0
- package/dist/cli/chunks/dream-UA7MKOPQ.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-D2HWORHF.js → embed-and-insert-pattern-IS6HSR66.js} +2 -2
- package/dist/cli/chunks/{eval-UF2UBAUC.js → eval-GNB574IM.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-2OUCEHHM.js → experience-capture-middleware-RCAOCKM7.js} +3 -3
- package/dist/cli/chunks/{fast-paths-KV5DKKHC.js → fast-paths-KTZ5SF54.js} +2 -2
- package/dist/cli/chunks/{feature-flags-MTW6NMR3.js → feature-flags-ITX5LQ57.js} +2 -2
- package/dist/cli/chunks/{feature-flags-6YWMTNO5.js → feature-flags-KFHSR5YF.js} +2 -2
- package/dist/cli/chunks/file-discovery-YCMNKZAK.js +2 -0
- package/dist/cli/chunks/fleet-2Y3ZE6CE.js +46 -0
- package/dist/cli/chunks/{gnn-wrapper-52V6ANOY.js → gnn-wrapper-RLFW3GSX.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-X7NHNRC7.js → heartbeat-handler-EM2URCYZ.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-QH5V6G2P.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-OJNFAGJS.js +2 -0
- package/dist/cli/chunks/hnsw-index-DFUNARVD.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-DZBE3KMK.js → hnsw-legacy-bridge-JMHEOIBH.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-2AWWUJAZ.js → hnswlib-node-CBP73QHY.js} +2 -2
- package/dist/cli/chunks/{hooks-XLPVROL3.js → hooks-IP7XE34Z.js} +34 -34
- package/dist/cli/chunks/hybrid-backend-SSGQQEQ2.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-6TI7YP6P.js → hypergraph-engine-ONAYHU25.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-DBIBBOXS.js → hypergraph-handler-VINJRAID.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-CRGCA7ZD.js +2 -0
- package/dist/cli/chunks/{init-guard-OSO6MIDD.js → init-guard-RYVV5R3Z.js} +2 -2
- package/dist/cli/chunks/{init-handler-7S7IHMUF.js → init-handler-MPRGWMOE.js} +6 -6
- package/dist/cli/chunks/init-wizard-NIMZ4J55.js +2 -0
- package/dist/cli/chunks/kernel-JQK7PRAI.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-2KBRFXMA.js → kilocode-installer-OPD7JBRL.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-5VFR4OQZ.js → kiro-installer-M4OPUNK2.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-YPVVIKEU.js +2 -0
- package/dist/cli/chunks/{learning-G5NHL3DV.js → learning-4UWTQLMF.js} +24 -24
- package/dist/cli/chunks/{llm-router-4EAPPMHS.js → llm-router-SQ56FF6Z.js} +4 -4
- package/dist/cli/chunks/llm-router-service-5OGAUOXF.js +2 -0
- package/dist/cli/chunks/{load-UYMZPEY6.js → load-HPHKDGGL.js} +2 -2
- package/dist/cli/chunks/load-test-UKNV5MWW.js +2 -0
- package/dist/cli/chunks/mcp-TELMAC7Z.js +2 -0
- package/dist/cli/chunks/{memory-QL53YIHP.js → memory-PFQ3KPVJ.js} +5 -5
- package/dist/cli/chunks/memory-backend-ZW4BTRNK.js +2 -0
- package/dist/cli/chunks/memory-handlers-FCXN437E.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-PDDDXF2B.js → multi-model-executor-3VDRX6TZ.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-75D2SKOT.js → opencode-installer-PJ576R63.js} +2 -2
- package/dist/cli/chunks/{orchestrator-3WIZBV4T.js → orchestrator-72QP4UU7.js} +64 -19
- package/dist/cli/chunks/pattern-null-store-4DUV6MQC.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-TEX2JGHA.js → pattern-usage-recorder-754YQW7C.js} +2 -2
- package/dist/cli/chunks/pipeline-AVXY4MVB.js +19 -0
- package/dist/cli/chunks/{platform-WPSKRJE7.js → platform-3E3DXLYB.js} +2 -2
- package/dist/cli/chunks/{plugin-UUFOVVMU.js → plugin-7FUQAKRE.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-PDFSYWKZ.js → prime-radiant-advanced-wasm-NIB4F5NV.js} +2 -2
- package/dist/cli/chunks/project-root-JCAUNL6O.js +2 -0
- package/dist/cli/chunks/protocol-executor-RNZNZP3A.js +2 -0
- package/dist/cli/chunks/{protocol-handler-3VRYRIQB.js → protocol-handler-BQRYMUTG.js} +2 -2
- package/dist/cli/chunks/{prove-2NAUROGF.js → prove-H52QGC6B.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-WK6TQOG2.js +2 -0
- package/dist/cli/chunks/{quality-ZIEI2WGA.js → quality-QO4XPAUM.js} +2 -2
- package/dist/cli/chunks/{quality-gate-KWJO4SWQ.js → quality-gate-FBKE5E6F.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-4452SXZQ.js +2 -0
- package/dist/cli/chunks/{real-embeddings-TSZ4UIAE.js → real-embeddings-RWGOVOXO.js} +2 -2
- package/dist/cli/chunks/{ref-validation-DWFFRETJ.js → ref-validation-LF76ZOBD.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-XTZHLUBO.js → roocode-installer-3BYEBTQ7.js} +2 -2
- package/dist/cli/chunks/router-3DIS5X4R.js +2 -0
- package/dist/cli/chunks/routing-feedback-OPXRCXM7.js +2 -0
- package/dist/cli/chunks/{routing-handler-GG525TDM.js → routing-handler-DST7BVCU.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-QKRJDM7Z.js → ruvector-commands-XE32PGKC.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-JL6T727I.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-V7IBDUCS.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-FF52OS6Q.js → rvf-migration-coordinator-VP32XC75.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-O3UQTEBK.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-M6DXTAZ4.js → rvf-store-integrity-SH2AMVI7.js} +2 -2
- package/dist/cli/chunks/safe-db-EVB4ZC7T.js +2 -0
- package/dist/cli/chunks/schedule-ORDDXXY4.js +2 -0
- package/dist/cli/chunks/scheduler-XFLJSFIU.js +2 -0
- package/dist/cli/chunks/{security-EHXSW22U.js → security-VSPNKCDS.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-6EH7UVJL.js → shared-rvf-adapter-HX6AHL3P.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-WML274E7.js → shared-rvf-dual-writer-MX4FC2JE.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-Y7B42CJ3.js +2 -0
- package/dist/cli/chunks/{standalone-memory-C7QKAXS4.js → standalone-memory-O4QUTK6L.js} +2 -2
- package/dist/cli/chunks/{status-handler-VLI7MRLM.js → status-handler-Z2BP6EOG.js} +2 -2
- package/dist/cli/chunks/{structural-health-3LPG6MQN.js → structural-health-R36WNLQG.js} +2 -2
- package/dist/cli/chunks/sync-2ELWUFQU.js +2 -0
- package/dist/cli/chunks/{sync-JFJEJBVK.js → sync-QF5Y3EMZ.js} +2 -2
- package/dist/cli/chunks/{task-handler-IED3K6E4.js → task-handler-43PYE75J.js} +13 -7
- package/dist/cli/chunks/task-handlers-KPWAEMKH.js +9 -0
- package/dist/cli/chunks/{test-GPKT3CKZ.js → test-UWA377D4.js} +16 -16
- package/dist/cli/chunks/test-runner-process-3XZUYST2.js +2 -0
- package/dist/cli/chunks/{test-scheduling-Z42XXZP6.js → test-scheduling-YQZPJRRN.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-F7C6UKTC.js +2 -0
- package/dist/cli/chunks/{token-usage-6Y2ERYIY.js → token-usage-DO6WLMXP.js} +2 -2
- package/dist/cli/chunks/{transformers-MB63T2XO.js → transformers-H5RGFKVO.js} +2 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-YTBCBHUO.js +2 -0
- package/dist/cli/chunks/{types-J4J6QV3I.js → types-PJS2FGPF.js} +2 -2
- package/dist/cli/chunks/unified-memory-EHD4VNFW.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-ZODGM4UK.js +2 -0
- package/dist/cli/chunks/unified-persistence-MHSI7ABK.js +2 -0
- package/dist/cli/chunks/{upgrade-U4XU7LFM.js → upgrade-4IC4F6AB.js} +2 -2
- package/dist/cli/chunks/{validate-B57HA4YK.js → validate-DHUWW7PF.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-UPPA4M6T.js → validate-swarm-OERQNOX5.js} +2 -2
- package/dist/cli/chunks/visual-security-54MLFKWY.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-GDZMUKOZ.js → web-tree-sitter-TV7DMKES.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-VJRWCHXP.js → windsurf-installer-QZPWSH37.js} +2 -2
- package/dist/cli/chunks/witness-chain-LC6Q2W27.js +2 -0
- package/dist/cli/chunks/witness-chain-QUIBAF3W.js +2 -0
- package/dist/cli/chunks/witness-chain-repair-RUXIOE7F.js +2 -0
- package/dist/cli/chunks/{witness-chain-verifier-Z23FVABW.js → witness-chain-verifier-YXENHB42.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-745MJ7WO.js → witness-key-manager-HL26AGFO.js} +2 -2
- package/dist/cli/chunks/{workflow-T245QNQM.js → workflow-EOVVCN2E.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-UKHEJVSK.js +2 -0
- package/dist/cli/chunks/wrappers-AGODHBOO.js +2 -0
- package/dist/cli/commands/code.js +8 -0
- package/dist/cli/commands/daemon.js +8 -0
- package/dist/cli/commands/fleet.js +27 -15
- package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +9 -2
- package/dist/cli/commands/hooks-handlers/session-hooks.js +2 -2
- package/dist/cli/commands/hooks-handlers/stats-hooks.js +3 -2
- package/dist/cli/commands/learning.js +5 -3
- package/dist/cli/commands/ruvector-commands.js +2 -1
- package/dist/cli/commands/test.js +6 -0
- package/dist/cli/handlers/task-handler.js +21 -1
- package/dist/cli/utils/ci-output.d.ts +9 -0
- package/dist/cli/utils/fleet-operation.d.ts +32 -0
- package/dist/cli/utils/fleet-operation.js +71 -0
- package/dist/cli/utils/fleet-result.d.ts +31 -0
- package/dist/cli/utils/fleet-result.js +124 -0
- package/dist/context/sources/git-source.js +6 -2
- package/dist/coordination/handlers/code-intelligence-handlers.js +74 -7
- package/dist/coordination/handlers/coverage-collection.js +9 -10
- package/dist/coordination/handlers/coverage-handlers.js +31 -4
- package/dist/coordination/handlers/coverage-runner.d.ts +2 -1
- package/dist/coordination/handlers/coverage-runner.js +9 -2
- package/dist/coordination/handlers/coverage-target.d.ts +13 -3
- package/dist/coordination/handlers/coverage-target.js +224 -7
- package/dist/coordination/handlers/handler-types.d.ts +2 -0
- package/dist/coordination/handlers/requirements-handlers.js +16 -2
- package/dist/coordination/handlers/security-handlers.js +11 -1
- package/dist/coordination/handlers/test-execution-handlers.js +57 -12
- package/dist/coordination/index.d.ts +2 -2
- package/dist/coordination/index.js +1 -1
- package/dist/coordination/mincut/queen-integration.d.ts +39 -1
- package/dist/coordination/mincut/queen-integration.js +83 -6
- package/dist/coordination/protocols/learning-consolidation-archive.d.ts +35 -0
- package/dist/coordination/protocols/learning-consolidation-archive.js +34 -0
- package/dist/coordination/protocols/learning-consolidation.d.ts +62 -3
- package/dist/coordination/protocols/learning-consolidation.js +187 -60
- package/dist/coordination/queen-coordinator.d.ts +13 -2
- package/dist/coordination/queen-coordinator.js +43 -8
- package/dist/coordination/queen-event-handlers.js +15 -1
- package/dist/coordination/queen-lifecycle.js +9 -0
- package/dist/coordination/queen-task-management.d.ts +18 -24
- package/dist/coordination/queen-task-management.js +94 -127
- package/dist/coordination/queen-task-queue.d.ts +41 -0
- package/dist/coordination/queen-task-queue.js +194 -0
- package/dist/coordination/queen-types.d.ts +11 -1
- package/dist/coordination/queen-types.js +8 -0
- package/dist/coordination/queen-work-stealing.d.ts +6 -1
- package/dist/coordination/queen-work-stealing.js +7 -4
- package/dist/coordination/result-saver-adapters.d.ts +15 -0
- package/dist/coordination/result-saver-adapters.js +57 -0
- package/dist/coordination/result-saver.d.ts +1 -1
- package/dist/coordination/result-saver.js +8 -5
- package/dist/coordination/task-dag/dag-algorithms.d.ts +33 -0
- package/dist/coordination/task-dag/dag-algorithms.js +162 -0
- package/dist/coordination/task-dag/dag-obligations.d.ts +21 -0
- package/dist/coordination/task-dag/dag-obligations.js +83 -0
- package/dist/coordination/task-dag/dag.d.ts +69 -19
- package/dist/coordination/task-dag/dag.js +215 -269
- package/dist/coordination/task-dag/index.d.ts +12 -4
- package/dist/coordination/task-dag/index.js +11 -3
- package/dist/coordination/task-dag/prerequisite-ledger.d.ts +84 -0
- package/dist/coordination/task-dag/prerequisite-ledger.js +252 -0
- package/dist/coordination/task-dag/scheduler.d.ts +19 -9
- package/dist/coordination/task-dag/scheduler.js +36 -12
- package/dist/coordination/task-dag/types.d.ts +160 -1
- package/dist/coordination/task-dag/types.js +2 -1
- package/dist/coordination/task-executability.d.ts +18 -0
- package/dist/coordination/task-executability.js +31 -0
- package/dist/coordination/task-executor.d.ts +1 -0
- package/dist/coordination/task-executor.js +5 -0
- package/dist/coordination/yaml-pipeline-loader.js +5 -2
- package/dist/domains/code-intelligence/coordinator.js +35 -9
- package/dist/domains/code-intelligence/index-path-guard.d.ts +52 -0
- package/dist/domains/code-intelligence/index-path-guard.js +95 -0
- package/dist/domains/code-intelligence/interfaces.d.ts +12 -0
- package/dist/domains/code-intelligence/plugin.js +5 -1
- package/dist/domains/code-intelligence/services/knowledge-graph.d.ts +6 -0
- package/dist/domains/code-intelligence/services/knowledge-graph.js +42 -5
- package/dist/domains/code-intelligence/services/metric-collector/index.d.ts +2 -2
- package/dist/domains/code-intelligence/services/metric-collector/index.js +2 -3
- package/dist/domains/code-intelligence/services/metric-collector/loc-counter.d.ts +1 -1
- package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +11 -36
- package/dist/domains/code-intelligence/services/metric-collector/test-counter.d.ts +1 -1
- package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +45 -103
- package/dist/domains/contract-testing/coordinator.js +3 -1
- package/dist/domains/contract-testing/services/api-compatibility.js +7 -6
- package/dist/domains/contract-testing/services/contract-validator.js +6 -4
- package/dist/domains/contract-testing/services/schema-validator.js +8 -5
- package/dist/domains/defect-intelligence/interfaces.d.ts +2 -0
- package/dist/domains/defect-intelligence/plugin.js +11 -2
- package/dist/domains/defect-intelligence/prediction-history.d.ts +27 -0
- package/dist/domains/defect-intelligence/prediction-history.js +68 -0
- package/dist/domains/defect-intelligence/services/defect-predictor.js +29 -12
- package/dist/domains/enterprise-integration/services/message-broker-service.js +3 -2
- package/dist/domains/enterprise-integration/services/odata-service.js +2 -1
- package/dist/domains/enterprise-integration/services/sap-integration-service.js +3 -2
- package/dist/domains/learning-optimization/active-patterns.d.ts +14 -14
- package/dist/domains/learning-optimization/active-patterns.js +17 -14
- package/dist/domains/learning-optimization/coordinator-helpers.js +2 -3
- package/dist/domains/learning-optimization/coordinator.d.ts +0 -3
- package/dist/domains/learning-optimization/coordinator.js +52 -107
- package/dist/domains/learning-optimization/index.d.ts +1 -1
- package/dist/domains/learning-optimization/interfaces.d.ts +62 -6
- package/dist/domains/learning-optimization/pattern-archive.d.ts +31 -0
- package/dist/domains/learning-optimization/pattern-archive.js +56 -0
- package/dist/domains/learning-optimization/pattern-consolidation.d.ts +12 -0
- package/dist/domains/learning-optimization/pattern-consolidation.js +41 -0
- package/dist/domains/learning-optimization/plugin.js +11 -1
- package/dist/domains/learning-optimization/reward-source.d.ts +50 -0
- package/dist/domains/learning-optimization/reward-source.js +65 -0
- package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +7 -5
- package/dist/domains/learning-optimization/services/learning-coordinator.js +98 -75
- package/dist/domains/learning-optimization/services/metrics-optimizer.d.ts +14 -4
- package/dist/domains/learning-optimization/services/metrics-optimizer.js +129 -63
- package/dist/domains/learning-optimization/services/transfer-specialist.js +25 -15
- package/dist/domains/security-compliance/plugin.js +17 -3
- package/dist/domains/security-compliance/sast-path-guard.d.ts +9 -0
- package/dist/domains/security-compliance/sast-path-guard.js +17 -0
- package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +46 -56
- package/dist/domains/security-compliance/services/scanners/dast-helpers.js +76 -91
- package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +52 -62
- package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +21 -1
- package/dist/domains/security-compliance/services/scanners/dast-scanner.js +29 -24
- package/dist/domains/security-compliance/services/scanners/scanner-orchestrator.js +4 -1
- package/dist/domains/test-execution/coordinator.d.ts +5 -0
- package/dist/domains/test-execution/coordinator.js +35 -20
- package/dist/domains/test-execution/interfaces.d.ts +41 -0
- package/dist/domains/test-execution/plugin.js +19 -4
- package/dist/domains/test-execution/services/flaky-detector.js +9 -7
- package/dist/domains/test-execution/services/retry-handler.js +46 -7
- package/dist/domains/test-execution/services/runner-test-cases.d.ts +32 -0
- package/dist/domains/test-execution/services/runner-test-cases.js +87 -0
- package/dist/domains/test-execution/services/test-executor.d.ts +5 -0
- package/dist/domains/test-execution/services/test-executor.js +31 -9
- package/dist/domains/test-generation/plugin.js +7 -2
- package/dist/domains/test-generation/services/test-data-generator.js +3 -1
- package/dist/domains/visual-accessibility/services/axe-core-audit.js +1 -1
- package/dist/hooks/cross-phase-hooks.js +2 -1
- package/dist/init/fleet-integration.js +2 -0
- package/dist/init/init-wizard-steps.js +2 -0
- package/dist/init/phases/06-code-intelligence.js +2 -0
- package/dist/init/phases/10-workers.js +51 -6
- package/dist/integrations/browser/agent-browser/client.js +37 -52
- package/dist/integrations/browser/agent-browser/command-executor.d.ts +33 -27
- package/dist/integrations/browser/agent-browser/command-executor.js +53 -54
- package/dist/integrations/browser/agent-browser/session-manager.d.ts +1 -1
- package/dist/integrations/browser/agent-browser/session-manager.js +8 -9
- package/dist/integrations/browser/web-content-fetcher.js +9 -3
- package/dist/integrations/vibium/client.js +2 -2
- package/dist/integrations/vibium/runtime.d.ts +1 -1
- package/dist/integrations/vibium/runtime.js +14 -11
- package/dist/kernel/anti-drift-middleware.d.ts +44 -5
- package/dist/kernel/anti-drift-middleware.js +147 -11
- package/dist/kernel/interfaces.d.ts +5 -0
- package/dist/kernel/unified-memory-schemas.d.ts +3 -2
- package/dist/kernel/unified-memory-schemas.js +3 -2
- package/dist/kernel/unified-memory.js +25 -6
- package/dist/learning/dream/dream-commit.d.ts +65 -0
- package/dist/learning/dream/dream-commit.js +104 -0
- package/dist/learning/dream/dream-engine.d.ts +81 -31
- package/dist/learning/dream/dream-engine.js +225 -168
- package/dist/learning/dream/dream-insights-pruner.d.ts +24 -4
- package/dist/learning/dream/dream-insights-pruner.js +85 -11
- package/dist/learning/dream/index.d.ts +3 -2
- package/dist/learning/dream/index.js +3 -1
- package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -1
- package/dist/learning/dream/rvcow-branch-manager.js +8 -1
- package/dist/learning/dream/speculative-dreamer.d.ts +50 -74
- package/dist/learning/dream/speculative-dreamer.js +64 -111
- package/dist/learning/dream/spreading-activation.d.ts +2 -1
- package/dist/learning/dream/spreading-activation.js +15 -6
- package/dist/learning/experience-capture.d.ts +9 -0
- package/dist/learning/experience-capture.js +18 -4
- package/dist/learning/qe-reasoning-bank-types.d.ts +17 -2
- package/dist/learning/qe-reasoning-bank.js +22 -11
- package/dist/learning/skill-validation-learner.d.ts +2 -0
- package/dist/learning/skill-validation-learner.js +29 -21
- package/dist/learning/sqlite-persistence.d.ts +6 -0
- package/dist/learning/sqlite-persistence.js +16 -2
- package/dist/learning/usage-outcome.d.ts +68 -0
- package/dist/learning/usage-outcome.js +84 -0
- package/dist/mcp/background-workers.d.ts +13 -1
- package/dist/mcp/background-workers.js +23 -3
- package/dist/mcp/bundle.js +602 -551
- package/dist/mcp/handlers/core-handlers.js +11 -0
- package/dist/mcp/handlers/domain-handler-configs.d.ts +19 -0
- package/dist/mcp/handlers/domain-handler-configs.js +76 -30
- package/dist/mcp/handlers/handler-factory.d.ts +2 -1
- package/dist/mcp/handlers/handler-factory.js +37 -15
- package/dist/mcp/handlers/orchestrate-routes.d.ts +36 -0
- package/dist/mcp/handlers/orchestrate-routes.js +88 -0
- package/dist/mcp/handlers/task-handlers.d.ts +3 -0
- package/dist/mcp/handlers/task-handlers.js +69 -6
- package/dist/mcp/handlers/validation-pipeline-handler.js +6 -2
- package/dist/mcp/metrics/metrics-collector.d.ts +11 -9
- package/dist/mcp/metrics/metrics-collector.js +13 -26
- package/dist/mcp/protocol-server.js +10 -3
- package/dist/mcp/security/schema-validator.js +3 -2
- package/dist/mcp/tools/code-intelligence/c4.js +11 -1
- package/dist/mcp/tools/coverage-analysis/index.js +31 -2
- package/dist/mcp/tools/learning-optimization/dream.d.ts +8 -8
- package/dist/mcp/tools/learning-optimization/dream.js +38 -34
- package/dist/mcp/tools/learning-optimization/optimize.d.ts +52 -5
- package/dist/mcp/tools/learning-optimization/optimize.js +164 -80
- package/dist/mcp/tools/quality-assessment/gate.js +12 -1
- package/dist/mcp/tools/requirements-validation/quality-criteria.js +9 -2
- package/dist/memory/crdt/lww-register.js +11 -1
- package/dist/migration/agent-compat.js +7 -5
- package/dist/migrations/20261018_add_dream_insights_archive.d.ts +27 -0
- package/dist/migrations/20261018_add_dream_insights_archive.js +57 -0
- package/dist/routing/calibration/ema-calibrator.js +3 -1
- package/dist/shared/base-domain-plugin.d.ts +4 -0
- package/dist/shared/base-domain-plugin.js +6 -0
- package/dist/shared/git/git-analyzer.d.ts +49 -0
- package/dist/shared/git/git-analyzer.js +159 -319
- package/dist/shared/git/git-process.d.ts +22 -0
- package/dist/shared/git/git-process.js +37 -0
- package/dist/shared/git/index.d.ts +1 -0
- package/dist/shared/git/index.js +1 -0
- package/dist/shared/io/payload-path-guard.d.ts +75 -0
- package/dist/shared/io/payload-path-guard.js +190 -0
- package/dist/shared/llm/cache.js +4 -1
- package/dist/shared/llm/router/agent-router-config.js +2 -1
- package/dist/shared/llm/translation/tool-translator.js +2 -1
- package/dist/shared/security/compliance-patterns.js +3 -1
- package/dist/shared/test-runner-args.d.ts +5 -0
- package/dist/shared/test-runner-args.js +6 -1
- package/dist/shared/test-runner-process.d.ts +32 -0
- package/dist/shared/test-runner-process.js +105 -0
- package/dist/shared/test-runner-verdict.d.ts +9 -1
- package/dist/shared/test-runner-verdict.js +15 -4
- package/dist/shared/types/index.d.ts +9 -0
- package/dist/shared/types/index.js +13 -0
- package/dist/shared/utils/namespaced-search.d.ts +56 -0
- package/dist/shared/utils/namespaced-search.js +71 -0
- package/dist/shared/utils/safe-expression-evaluator.js +4 -3
- package/dist/strange-loop/infra-healing/infra-action-executor.js +7 -3
- package/dist/strange-loop/infra-healing/infra-healing-orchestrator.js +10 -9
- package/dist/strange-loop/infra-healing/recovery-playbook.js +13 -3
- package/dist/validation/gate-reexecute.js +7 -4
- package/dist/workers/daemon.d.ts +2 -0
- package/dist/workers/daemon.js +23 -6
- package/dist/workers/namespaced-keys.d.ts +4 -7
- package/dist/workers/namespaced-keys.js +4 -15
- package/dist/workers/quality-daemon/ci-monitor.js +9 -5
- package/dist/workers/quality-daemon/git-watcher.js +9 -9
- package/dist/workers/worker-env.d.ts +16 -8
- package/dist/workers/worker-env.js +25 -12
- package/dist/workers/worker-manager.js +4 -0
- package/dist/workers/workers/defect-predictor.d.ts +8 -3
- package/dist/workers/workers/defect-predictor.js +48 -49
- package/dist/workers/workers/learning-consolidation.d.ts +3 -1
- package/dist/workers/workers/learning-consolidation.js +22 -8
- package/dist/workflows/browser/workflow-loader.js +8 -5
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-FC4EY447.js +0 -2
- package/dist/cli/chunks/agent-booster-wasm-W3V5P7LE.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-AUAL6UBL.js +0 -2
- package/dist/cli/chunks/base-2XML4WH7.js +0 -2
- package/dist/cli/chunks/browser-ZL7OLKJQ.js +0 -4
- package/dist/cli/chunks/browser-workflow-2IFEUAAK.js +0 -2
- package/dist/cli/chunks/chunk-4GYFONJB.js +0 -4
- package/dist/cli/chunks/chunk-6CKTLVYV.js +0 -2
- package/dist/cli/chunks/chunk-7H3GNRNA.js +0 -4
- package/dist/cli/chunks/chunk-EUVSSIGR.js +0 -12
- package/dist/cli/chunks/chunk-I4U7YCXG.js +0 -180
- package/dist/cli/chunks/chunk-J7RCI25Q.js +0 -2
- package/dist/cli/chunks/chunk-KNHLOANK.js +0 -4
- package/dist/cli/chunks/chunk-KNQUHGNY.js +0 -2
- package/dist/cli/chunks/chunk-LZWBUVCK.js +0 -5
- package/dist/cli/chunks/chunk-PIEKGKW6.js +0 -12
- package/dist/cli/chunks/chunk-PWA6XBW4.js +0 -120
- package/dist/cli/chunks/chunk-X6VYQVUM.js +0 -2
- package/dist/cli/chunks/chunk-YTYS2XSY.js +0 -2
- package/dist/cli/chunks/chunk-Z3LDUPLQ.js +0 -6
- package/dist/cli/chunks/client-RFUSQRUZ.js +0 -2
- package/dist/cli/chunks/core-handlers-ZC7QB432.js +0 -2
- package/dist/cli/chunks/cross-domain-router-GRBK7YFZ.js +0 -2
- package/dist/cli/chunks/daemon-JER6HE2J.js +0 -12
- package/dist/cli/chunks/domain-transfer-NF7UJW7B.js +0 -2
- package/dist/cli/chunks/dream-VALD726W.js +0 -2
- package/dist/cli/chunks/file-discovery-VL73ASNI.js +0 -2
- package/dist/cli/chunks/fleet-GJ66QFXK.js +0 -43
- package/dist/cli/chunks/heartbeat-scheduler-FSX7A3ZA.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-UX2QT6RL.js +0 -2
- package/dist/cli/chunks/hnsw-index-WRDDAMXH.js +0 -2
- package/dist/cli/chunks/hybrid-backend-O67NGIB5.js +0 -2
- package/dist/cli/chunks/impact-analyzer-6VXWWYWM.js +0 -2
- package/dist/cli/chunks/init-wizard-VH34J4TL.js +0 -2
- package/dist/cli/chunks/kernel-KJD24NO7.js +0 -2
- package/dist/cli/chunks/knowledge-graph-343O2HEZ.js +0 -2
- package/dist/cli/chunks/llm-router-service-2M4BT2AO.js +0 -2
- package/dist/cli/chunks/load-test-OTQ2JQ5F.js +0 -2
- package/dist/cli/chunks/mcp-NOTDZBW5.js +0 -2
- package/dist/cli/chunks/memory-backend-4QSNRRV6.js +0 -2
- package/dist/cli/chunks/memory-handlers-YFFYRSM6.js +0 -2
- package/dist/cli/chunks/pattern-null-store-5USH5MNR.js +0 -2
- package/dist/cli/chunks/pipeline-7ATPA6LU.js +0 -19
- package/dist/cli/chunks/project-root-SRTA6TBL.js +0 -2
- package/dist/cli/chunks/protocol-executor-4WYPCNBS.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-I4D6SFS4.js +0 -2
- package/dist/cli/chunks/queen-coordinator-24UMTZTE.js +0 -2
- package/dist/cli/chunks/router-AUD4GATI.js +0 -2
- package/dist/cli/chunks/routing-feedback-2FE6SIKQ.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-P5LEUF25.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-ZCYD5YJS.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-QGV6BW2W.js +0 -2
- package/dist/cli/chunks/safe-db-Q6JUKG2A.js +0 -2
- package/dist/cli/chunks/schedule-44OSMGE5.js +0 -2
- package/dist/cli/chunks/scheduler-V3HO2QQT.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-N5T7DWMR.js +0 -2
- package/dist/cli/chunks/sync-4IMMQEPT.js +0 -2
- package/dist/cli/chunks/task-handlers-FH6DNTHW.js +0 -9
- package/dist/cli/chunks/token-bootstrap-HMM3AHXM.js +0 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-56GDQCMR.js +0 -2
- package/dist/cli/chunks/unified-memory-RQ3Q4CU3.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-ZOP5FEYX.js +0 -2
- package/dist/cli/chunks/unified-persistence-72OCJJKK.js +0 -2
- package/dist/cli/chunks/visual-security-7F5UV23J.js +0 -2
- package/dist/cli/chunks/witness-chain-KZ57QUFE.js +0 -2
- package/dist/cli/chunks/witness-chain-LFASSMZK.js +0 -2
- package/dist/cli/chunks/witness-chain-repair-TPHN4DXN.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-ZNWEUYBN.js +0 -2
- package/dist/cli/chunks/wrappers-WCAYIQUX.js +0 -2
|
@@ -9,7 +9,34 @@ import { v4 as uuidv4 } from 'uuid';
|
|
|
9
9
|
import { ok, err, ALL_DOMAINS, } from '../../shared/types/index.js';
|
|
10
10
|
import { TimeRange } from '../../shared/value-objects/index.js';
|
|
11
11
|
import { toError } from '../../shared/error-utils.js';
|
|
12
|
-
import {
|
|
12
|
+
import { rehydrateDates } from '../../shared/utils/kv-date-rehydrate.js';
|
|
13
|
+
import { searchAllKeys } from '../../shared/utils/namespaced-search.js';
|
|
14
|
+
import { LoggerFactory } from '../../logging/index.js';
|
|
15
|
+
import { readActivePatterns, LEARNING_NS, } from '../../domains/learning-optimization/active-patterns.js';
|
|
16
|
+
import { archiveSelectedPattern, emptyArchiveCounts, isWithinRetentionGrace, } from './learning-consolidation-archive.js';
|
|
17
|
+
import { buildConsolidatedPattern } from '../../domains/learning-optimization/pattern-consolidation.js';
|
|
18
|
+
const logger = LoggerFactory.create('learning-consolidation-protocol');
|
|
19
|
+
/**
|
|
20
|
+
* Id of a merged pattern a dry run predicts but never stores (#1106). It only
|
|
21
|
+
* appears in `removedPatterns` when the predicted merge would itself be trimmed.
|
|
22
|
+
*/
|
|
23
|
+
export const DRY_RUN_MERGE_ID_PREFIX = 'dry-run-merge:';
|
|
24
|
+
/** Failed steps inside one domain's report (#1106). */
|
|
25
|
+
function domainStepErrors(report) {
|
|
26
|
+
const errors = report.mergeFailures.map((failure) => ({
|
|
27
|
+
domain: report.domain,
|
|
28
|
+
step: 'merge',
|
|
29
|
+
error: `${failure.sourcePatternIds.join(', ')}: ${failure.error}`,
|
|
30
|
+
}));
|
|
31
|
+
if (report.archiveCounts.failed > 0) {
|
|
32
|
+
errors.push({
|
|
33
|
+
domain: report.domain,
|
|
34
|
+
step: 'archive',
|
|
35
|
+
error: `${report.archiveCounts.failed} selected patterns could not be archived (archive copy not verified) and were left active`,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return errors;
|
|
39
|
+
}
|
|
13
40
|
const DEFAULT_CONFIG = {
|
|
14
41
|
minPatternsForConsolidation: 5,
|
|
15
42
|
similarityThreshold: 0.85,
|
|
@@ -17,6 +44,8 @@ const DEFAULT_CONFIG = {
|
|
|
17
44
|
minConfidenceThreshold: 0.5,
|
|
18
45
|
analysisWindowWeeks: 4,
|
|
19
46
|
enableCrossProjectTransfer: true,
|
|
47
|
+
dryRun: true,
|
|
48
|
+
retentionGraceDays: 7,
|
|
20
49
|
};
|
|
21
50
|
// ============================================================================
|
|
22
51
|
// Learning Consolidation Protocol Implementation
|
|
@@ -62,20 +91,45 @@ export class LearningConsolidationProtocol {
|
|
|
62
91
|
const domainReports = [];
|
|
63
92
|
let totalMerged = 0;
|
|
64
93
|
let totalRemoved = 0;
|
|
94
|
+
let totalArchived = 0;
|
|
65
95
|
let totalRetained = 0;
|
|
96
|
+
const dryRun = this.config.dryRun;
|
|
97
|
+
// #1106: a failed step is recorded, never swallowed.
|
|
98
|
+
const errors = [];
|
|
66
99
|
for (const domainGroup of gatheredPatterns.value) {
|
|
67
100
|
const consolidationResult = await this.consolidatePatterns(consolidationId, domainGroup);
|
|
68
101
|
if (consolidationResult.success) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
102
|
+
const report = consolidationResult.value;
|
|
103
|
+
domainReports.push(report);
|
|
104
|
+
totalMerged += report.mergedPatterns.length;
|
|
105
|
+
totalRemoved += report.removedPatterns.length;
|
|
106
|
+
totalArchived += report.archiveCounts.archived;
|
|
107
|
+
totalRetained += report.patternsAfterCount;
|
|
108
|
+
errors.push(...domainStepErrors(report));
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
errors.push({ domain: domainGroup.domain, step: 'consolidate', error: consolidationResult.error.message });
|
|
73
112
|
}
|
|
74
113
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
114
|
+
if (gatheredPatterns.value.length > 0 && domainReports.length === 0) {
|
|
115
|
+
return err(new Error(`Learning consolidation failed in every domain: ${errors.map((e) => `${e.domain}: ${e.error}`).join('; ')}`));
|
|
116
|
+
}
|
|
117
|
+
// Step 3: Update knowledge base with consolidated patterns (writes, so
|
|
118
|
+
// skipped in a dry run)
|
|
119
|
+
const knowledgeUpdateResult = dryRun
|
|
120
|
+
? ok(0)
|
|
121
|
+
: await this.updateKnowledgeBase(domainReports);
|
|
122
|
+
// Step 4: Prepare patterns for cross-project transfer (a dry run does
|
|
123
|
+
// not announce transfers for patterns it did not consolidate)
|
|
124
|
+
const transferResult = dryRun
|
|
125
|
+
? ok([])
|
|
126
|
+
: await this.prepareTransfer(consolidationId, domainReports);
|
|
127
|
+
if (!knowledgeUpdateResult.success) {
|
|
128
|
+
errors.push({ step: 'knowledge-update', error: knowledgeUpdateResult.error.message });
|
|
129
|
+
}
|
|
130
|
+
if (!transferResult.success) {
|
|
131
|
+
errors.push({ step: 'transfer', error: transferResult.error.message });
|
|
132
|
+
}
|
|
79
133
|
// Step 5: Generate weekly insights
|
|
80
134
|
const insights = await this.generateInsights(gatheredPatterns.value, domainReports);
|
|
81
135
|
const completedAt = new Date();
|
|
@@ -85,6 +139,7 @@ export class LearningConsolidationProtocol {
|
|
|
85
139
|
totalPatternsAnalyzed: gatheredPatterns.value.reduce((sum, g) => sum + g.patterns.length, 0),
|
|
86
140
|
patternsMerged: totalMerged,
|
|
87
141
|
patternsRemoved: totalRemoved,
|
|
142
|
+
patternsArchived: totalArchived,
|
|
88
143
|
patternsRetained: totalRetained,
|
|
89
144
|
knowledgeItemsUpdated: knowledgeUpdateResult.success
|
|
90
145
|
? knowledgeUpdateResult.value
|
|
@@ -94,10 +149,27 @@ export class LearningConsolidationProtocol {
|
|
|
94
149
|
? transferResult.value.length
|
|
95
150
|
: 0,
|
|
96
151
|
};
|
|
152
|
+
const status = errors.length > 0 ? 'partial' : 'completed';
|
|
153
|
+
if (errors.length > 0) {
|
|
154
|
+
logger.warn('Learning consolidation finished with errors', { consolidationId, dryRun, errors });
|
|
155
|
+
}
|
|
156
|
+
logger.info('Learning consolidation finished', {
|
|
157
|
+
consolidationId,
|
|
158
|
+
status,
|
|
159
|
+
dryRun,
|
|
160
|
+
analyzed: stats.totalPatternsAnalyzed,
|
|
161
|
+
merged: totalMerged,
|
|
162
|
+
selectedForRemoval: totalRemoved,
|
|
163
|
+
archived: totalArchived,
|
|
164
|
+
retained: totalRetained,
|
|
165
|
+
});
|
|
97
166
|
// Publish completion event
|
|
98
167
|
await this.publishCompletedEvent(consolidationId, stats, insights, duration);
|
|
99
168
|
const result = {
|
|
100
169
|
consolidationId,
|
|
170
|
+
dryRun,
|
|
171
|
+
status,
|
|
172
|
+
errors,
|
|
101
173
|
startedAt,
|
|
102
174
|
completedAt,
|
|
103
175
|
stats,
|
|
@@ -106,7 +178,9 @@ export class LearningConsolidationProtocol {
|
|
|
106
178
|
domainReports,
|
|
107
179
|
};
|
|
108
180
|
// Store result for historical analysis
|
|
109
|
-
|
|
181
|
+
if (!dryRun) {
|
|
182
|
+
await this.storeConsolidationResult(result);
|
|
183
|
+
}
|
|
110
184
|
return ok(result);
|
|
111
185
|
}
|
|
112
186
|
catch (error) {
|
|
@@ -123,8 +197,9 @@ export class LearningConsolidationProtocol {
|
|
|
123
197
|
try {
|
|
124
198
|
const domainGroups = [];
|
|
125
199
|
const timeRange = TimeRange.lastNDays(this.config.analysisWindowWeeks * 7);
|
|
200
|
+
const activePatterns = await this.readActivePatterns();
|
|
126
201
|
for (const domain of ALL_DOMAINS) {
|
|
127
|
-
const patterns =
|
|
202
|
+
const patterns = this.getPatternsForDomain(activePatterns, domain, timeRange);
|
|
128
203
|
if (patterns.length > 0) {
|
|
129
204
|
const stats = this.calculateDomainStats(patterns, timeRange);
|
|
130
205
|
domainGroups.push({ domain, patterns, stats });
|
|
@@ -137,12 +212,19 @@ export class LearningConsolidationProtocol {
|
|
|
137
212
|
}
|
|
138
213
|
}
|
|
139
214
|
/**
|
|
140
|
-
*
|
|
215
|
+
* Every active learned pattern, read once per run.
|
|
216
|
+
*
|
|
217
|
+
* #1055: active patterns only, excluding `:creation:` provenance and
|
|
218
|
+
* `:archived:` records. #1071: read from `learning-optimization`, where
|
|
219
|
+
* LearningCoordinatorService writes them, not the backend default.
|
|
220
|
+
*/
|
|
221
|
+
readActivePatterns() {
|
|
222
|
+
return readActivePatterns(this.memory, { retrieve: LEARNING_NS });
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Patterns of one domain created or used within the analysis window
|
|
141
226
|
*/
|
|
142
|
-
|
|
143
|
-
// #1055: active patterns only — excludes `:creation:` provenance as well
|
|
144
|
-
// as `:archived:` records, before get() and before the scan cap applies.
|
|
145
|
-
const patterns = await readActivePatterns(this.memory);
|
|
227
|
+
getPatternsForDomain(patterns, domain, timeRange) {
|
|
146
228
|
return patterns.filter((pattern) => pattern.domain === domain &&
|
|
147
229
|
(timeRange.contains(pattern.createdAt) || timeRange.contains(pattern.lastUsedAt)));
|
|
148
230
|
}
|
|
@@ -203,19 +285,35 @@ export class LearningConsolidationProtocol {
|
|
|
203
285
|
const mergedPatterns = [];
|
|
204
286
|
const removedPatterns = [];
|
|
205
287
|
const retainedPatterns = [];
|
|
288
|
+
const toArchive = [];
|
|
289
|
+
// Patterns in their grace period are never merged either: a merge
|
|
290
|
+
// archives every source pattern (#1071).
|
|
291
|
+
retainedPatterns.push(...patterns.filter((p) => this.isInGracePeriod(p)));
|
|
206
292
|
// Group similar patterns for merging
|
|
207
|
-
const similarGroups = this.groupSimilarPatterns(patterns);
|
|
293
|
+
const similarGroups = this.groupSimilarPatterns(patterns.filter((p) => !this.isInGracePeriod(p)));
|
|
294
|
+
const mergeFailures = [];
|
|
295
|
+
const mergeReason = 'Similar pattern context and template';
|
|
208
296
|
for (const group of similarGroups) {
|
|
209
297
|
if (group.length >= 2) {
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
298
|
+
const sourcePatternIds = group.map((p) => p.id);
|
|
299
|
+
// #1106: both runs carry the same set into the trim step. A dry run
|
|
300
|
+
// keeps the merged pattern the real run would store (built by the
|
|
301
|
+
// same function, never written); a real run keeps the stored one, or
|
|
302
|
+
// the sources themselves when the merge failed and left them active.
|
|
303
|
+
const merged = this.config.dryRun
|
|
304
|
+
? ok(buildConsolidatedPattern(group, `${DRY_RUN_MERGE_ID_PREFIX}${sourcePatternIds.join('+')}`))
|
|
305
|
+
: await this.mergePatternGroup(group);
|
|
306
|
+
if (merged.success) {
|
|
213
307
|
mergedPatterns.push({
|
|
214
|
-
resultPatternId:
|
|
215
|
-
sourcePatternIds
|
|
216
|
-
mergeReason
|
|
308
|
+
resultPatternId: this.config.dryRun ? '' : merged.value.id,
|
|
309
|
+
sourcePatternIds,
|
|
310
|
+
mergeReason,
|
|
217
311
|
});
|
|
218
|
-
retainedPatterns.push(
|
|
312
|
+
retainedPatterns.push(merged.value);
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
mergeFailures.push({ sourcePatternIds, error: merged.error.message });
|
|
316
|
+
retainedPatterns.push(...group);
|
|
219
317
|
}
|
|
220
318
|
}
|
|
221
319
|
else {
|
|
@@ -230,32 +328,35 @@ export class LearningConsolidationProtocol {
|
|
|
230
328
|
name: pattern.name,
|
|
231
329
|
removalReason: this.getRemovalReason(pattern),
|
|
232
330
|
});
|
|
233
|
-
|
|
331
|
+
toArchive.push(pattern);
|
|
234
332
|
}
|
|
235
333
|
}
|
|
236
334
|
}
|
|
237
|
-
// Trim to max patterns if needed
|
|
335
|
+
// Trim to max patterns if needed. Patterns in their grace period are
|
|
336
|
+
// never trimmed; they stay on top of the kept set.
|
|
238
337
|
const finalPatterns = this.trimToMaxPatterns(retainedPatterns, domain);
|
|
239
|
-
const
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
}
|
|
338
|
+
const kept = new Set(finalPatterns.map((p) => p.id));
|
|
339
|
+
for (const p of retainedPatterns) {
|
|
340
|
+
if (kept.has(p.id))
|
|
341
|
+
continue;
|
|
342
|
+
removedPatterns.push({
|
|
343
|
+
patternId: p.id,
|
|
344
|
+
name: p.name,
|
|
345
|
+
removalReason: 'Exceeded max patterns per domain limit',
|
|
346
|
+
});
|
|
347
|
+
toArchive.push(p);
|
|
250
348
|
}
|
|
349
|
+
const archiveCounts = await this.archivePatterns(domain, toArchive);
|
|
251
350
|
// Publish domain consolidation event
|
|
252
|
-
await this.publishPatternConsolidatedEvent(consolidationId, domain, patterns.length, finalPatterns.length, mergedPatterns.map((m) => m.resultPatternId), removedPatterns.map((r) => r.patternId));
|
|
351
|
+
await this.publishPatternConsolidatedEvent(consolidationId, domain, patterns.length, finalPatterns.length, mergedPatterns.map((m) => m.resultPatternId), removedPatterns.map((r) => r.patternId), this.config.dryRun);
|
|
253
352
|
const report = {
|
|
254
353
|
domain,
|
|
255
354
|
patternsBeforeCount: patterns.length,
|
|
256
355
|
patternsAfterCount: finalPatterns.length,
|
|
257
356
|
mergedPatterns,
|
|
258
357
|
removedPatterns,
|
|
358
|
+
archiveCounts,
|
|
359
|
+
mergeFailures,
|
|
259
360
|
topPerformingPatterns: this.getTopPerformingPatterns(finalPatterns, 5),
|
|
260
361
|
improvementAreas: this.identifyImprovementAreas(domainGroup),
|
|
261
362
|
};
|
|
@@ -379,17 +480,30 @@ export class LearningConsolidationProtocol {
|
|
|
379
480
|
}
|
|
380
481
|
return 'Below retention threshold';
|
|
381
482
|
}
|
|
483
|
+
/** True while a pattern is too new for the retention and trim rules. */
|
|
484
|
+
isInGracePeriod(pattern) {
|
|
485
|
+
return isWithinRetentionGrace(pattern, this.config.retentionGraceDays);
|
|
486
|
+
}
|
|
382
487
|
/**
|
|
383
|
-
* Archive
|
|
488
|
+
* Archive the selected patterns (soft delete in `learning-optimization`,
|
|
489
|
+
* #1071). Only the selected patterns are touched, and a dry run touches
|
|
490
|
+
* none. Counts are logged per domain.
|
|
384
491
|
*/
|
|
385
|
-
async
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
492
|
+
async archivePatterns(domain, selected) {
|
|
493
|
+
const counts = emptyArchiveCounts();
|
|
494
|
+
counts.selected = selected.length;
|
|
495
|
+
if (!this.config.dryRun) {
|
|
496
|
+
for (const pattern of selected) {
|
|
497
|
+
counts[await archiveSelectedPattern(this.memory, pattern)]++;
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
if (counts.selected > 0) {
|
|
501
|
+
logger.info('Learning consolidation archive step', { domain, dryRun: this.config.dryRun, ...counts });
|
|
502
|
+
}
|
|
503
|
+
if (counts.failed > 0) {
|
|
504
|
+
logger.warn('Some selected patterns could not be archived and were left active', { domain, failed: counts.failed });
|
|
505
|
+
}
|
|
506
|
+
return counts;
|
|
393
507
|
}
|
|
394
508
|
/**
|
|
395
509
|
* Trim patterns to max allowed per domain
|
|
@@ -398,14 +512,18 @@ export class LearningConsolidationProtocol {
|
|
|
398
512
|
if (patterns.length <= this.config.maxPatternsPerDomain) {
|
|
399
513
|
return patterns;
|
|
400
514
|
}
|
|
401
|
-
//
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
515
|
+
// Patterns in their grace period are always kept; the rest compete for
|
|
516
|
+
// the remaining places by effectiveness score.
|
|
517
|
+
const young = patterns.filter((p) => this.isInGracePeriod(p));
|
|
518
|
+
const eligible = patterns.filter((p) => !this.isInGracePeriod(p));
|
|
519
|
+
const places = Math.max(0, this.config.maxPatternsPerDomain - young.length);
|
|
520
|
+
return [...young, ...eligible
|
|
521
|
+
.sort((a, b) => {
|
|
522
|
+
const scoreA = a.confidence * 0.4 + a.successRate * 0.4 + Math.min(a.usageCount / 100, 0.2);
|
|
523
|
+
const scoreB = b.confidence * 0.4 + b.successRate * 0.4 + Math.min(b.usageCount / 100, 0.2);
|
|
524
|
+
return scoreB - scoreA;
|
|
525
|
+
})
|
|
526
|
+
.slice(0, places)];
|
|
409
527
|
}
|
|
410
528
|
/**
|
|
411
529
|
* Get top performing patterns
|
|
@@ -456,7 +574,8 @@ export class LearningConsolidationProtocol {
|
|
|
456
574
|
updatedCount++;
|
|
457
575
|
// Share high-performing pattern knowledge with related domains
|
|
458
576
|
if (pattern.successRate >= 0.8) {
|
|
459
|
-
|
|
577
|
+
// #1071: read where createKnowledgeFromPattern() writes it.
|
|
578
|
+
const knowledge = await this.memory.get(`learning:knowledge:pattern:${pattern.id}`, LEARNING_NS);
|
|
460
579
|
if (knowledge) {
|
|
461
580
|
// Use knowledgeService to share across domains
|
|
462
581
|
await this.knowledgeService.shareKnowledge(knowledge, [
|
|
@@ -694,7 +813,7 @@ export class LearningConsolidationProtocol {
|
|
|
694
813
|
};
|
|
695
814
|
await this.eventBus.publish(event);
|
|
696
815
|
}
|
|
697
|
-
async publishPatternConsolidatedEvent(consolidationId, domain, patternsBeforeCount, patternsAfterCount, mergedPatternIds, removedPatternIds) {
|
|
816
|
+
async publishPatternConsolidatedEvent(consolidationId, domain, patternsBeforeCount, patternsAfterCount, mergedPatternIds, removedPatternIds, dryRun) {
|
|
698
817
|
const event = {
|
|
699
818
|
id: uuidv4(),
|
|
700
819
|
type: 'PatternConsolidated',
|
|
@@ -707,6 +826,7 @@ export class LearningConsolidationProtocol {
|
|
|
707
826
|
patternsAfterCount,
|
|
708
827
|
mergedPatternIds,
|
|
709
828
|
removedPatternIds,
|
|
829
|
+
dryRun,
|
|
710
830
|
},
|
|
711
831
|
};
|
|
712
832
|
await this.eventBus.publish(event);
|
|
@@ -722,6 +842,7 @@ export class LearningConsolidationProtocol {
|
|
|
722
842
|
stats,
|
|
723
843
|
insights,
|
|
724
844
|
duration,
|
|
845
|
+
dryRun: this.config.dryRun,
|
|
725
846
|
},
|
|
726
847
|
};
|
|
727
848
|
await this.eventBus.publish(event);
|
|
@@ -761,15 +882,21 @@ export class LearningConsolidationProtocol {
|
|
|
761
882
|
* Get previous consolidation results for trend analysis
|
|
762
883
|
*/
|
|
763
884
|
async getPreviousConsolidations(count) {
|
|
764
|
-
|
|
885
|
+
// #1071: results are stored in `learning-optimization`. Read every one
|
|
886
|
+
// so the newest `count` are returned, not an arbitrary first page.
|
|
887
|
+
const keys = await searchAllKeys(this.memory, 'learning:consolidation:result:*', {
|
|
888
|
+
retrieve: LEARNING_NS,
|
|
889
|
+
});
|
|
765
890
|
const results = [];
|
|
766
891
|
for (const key of keys) {
|
|
767
|
-
const result = await this.memory.get(key);
|
|
892
|
+
const result = rehydrateDates(await this.memory.get(key, LEARNING_NS), ['startedAt', 'completedAt']);
|
|
768
893
|
if (result) {
|
|
769
894
|
results.push(result);
|
|
770
895
|
}
|
|
771
896
|
}
|
|
772
|
-
return results
|
|
897
|
+
return results
|
|
898
|
+
.sort((a, b) => b.completedAt.getTime() - a.completedAt.getTime())
|
|
899
|
+
.slice(0, count);
|
|
773
900
|
}
|
|
774
901
|
/**
|
|
775
902
|
* Get consolidation history summary
|
|
@@ -33,7 +33,7 @@ import { FederationMailbox } from './federation/index.js';
|
|
|
33
33
|
import { DynamicScaler } from './dynamic-scaling/index.js';
|
|
34
34
|
export type { QueenTask, TaskType, TaskExecution, DomainGroup, WorkStealingConfig, QueenMetrics, QueenConfig, QueenHealth, HealthIssue, IQueenCoordinator, TaskFilter, } from './queen-types.js';
|
|
35
35
|
export { DOMAIN_GROUPS, TASK_DOMAIN_MAP } from './queen-types.js';
|
|
36
|
-
import type { QueenTask, TaskExecution, QueenMetrics, QueenConfig, QueenHealth, IQueenCoordinator, TaskFilter } from './queen-types.js';
|
|
36
|
+
import type { QueenTask, TaskType, TaskExecution, QueenMetrics, QueenConfig, QueenHealth, IQueenCoordinator, TaskFilter } from './queen-types.js';
|
|
37
37
|
export declare class QueenCoordinator implements IQueenCoordinator {
|
|
38
38
|
private readonly eventBus;
|
|
39
39
|
private readonly agentCoordinator;
|
|
@@ -80,6 +80,17 @@ export declare class QueenCoordinator implements IQueenCoordinator {
|
|
|
80
80
|
constructor(eventBus: EventBus, agentCoordinator: AgentCoordinator, memory: MemoryBackend, router: CrossDomainRouter, protocolExecutor?: ProtocolExecutor | undefined, workflowExecutor?: WorkflowExecutor | undefined, domainPlugins?: Map<DomainName, DomainPlugin> | undefined, config?: Partial<QueenConfig>);
|
|
81
81
|
initialize(): Promise<void>;
|
|
82
82
|
dispose(): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* #1075: check that a domain plugin will actually execute this task type
|
|
85
|
+
* before an external caller submits it, so the caller gets the reason as a
|
|
86
|
+
* rejection. A type that no candidate domain handles would otherwise only
|
|
87
|
+
* be failed at dispatch by `assignTaskToDomain` (#1081).
|
|
88
|
+
*
|
|
89
|
+
* Every candidate domain must handle the type, because `assignTask` may pick
|
|
90
|
+
* any of them. Queens built without domain plugins cannot be checked and
|
|
91
|
+
* accept the type unchanged.
|
|
92
|
+
*/
|
|
93
|
+
validateTaskExecutable(type: TaskType, targetDomains?: readonly DomainName[]): Result<void, Error>;
|
|
83
94
|
submitTask(taskInput: Omit<QueenTask, 'id' | 'createdAt'>): Promise<Result<string, Error>>;
|
|
84
95
|
cancelTask(taskId: string): Promise<Result<void, Error>>;
|
|
85
96
|
getTaskStatus(taskId: string): TaskExecution | undefined;
|
|
@@ -102,7 +113,7 @@ export declare class QueenCoordinator implements IQueenCoordinator {
|
|
|
102
113
|
triggerWorkStealing(): Promise<number>;
|
|
103
114
|
listAllAgents(): AgentInfo[];
|
|
104
115
|
getAgentsByDomain(domain: DomainName): AgentInfo[];
|
|
105
|
-
requestAgentSpawn(domain: DomainName, type: string, capabilities: string[]): Promise<Result<string, Error>>;
|
|
116
|
+
requestAgentSpawn(domain: DomainName, type: string, capabilities: string[], taskId?: string): Promise<Result<string, Error>>;
|
|
106
117
|
getHealth(): QueenHealth;
|
|
107
118
|
getMetrics(): QueenMetrics;
|
|
108
119
|
getMinCutBridge(): QueenMinCutBridge | null;
|
|
@@ -47,11 +47,12 @@ import { createHypothesisManager } from './competing-hypotheses/index.js';
|
|
|
47
47
|
import { createFederationMailbox } from './federation/index.js';
|
|
48
48
|
import { createDynamicScaler } from './dynamic-scaling/index.js';
|
|
49
49
|
// Types, interfaces, constants, and config
|
|
50
|
-
import { DEFAULT_QUEEN_CONFIG, initializeTaskDomainMap, } from './queen-types.js';
|
|
50
|
+
import { DEFAULT_QUEEN_CONFIG, getTaskDomains, initializeTaskDomainMap, } from './queen-types.js';
|
|
51
51
|
export { DOMAIN_GROUPS, TASK_DOMAIN_MAP } from './queen-types.js';
|
|
52
52
|
// Extracted modules
|
|
53
53
|
import { subscribeToEvents, computeDomainHealthFromAgents } from './queen-event-handlers.js';
|
|
54
|
-
import {
|
|
54
|
+
import { findDomainsWithoutHandler, describeMissingHandler } from './task-executability.js';
|
|
55
|
+
import { enqueueTask, removeFromQueues, getQueuePosition, processQueue, listTasks as listTasksImpl, assignTask, dispatchStolenTask, canDomainExecuteTask, } from './queen-task-management.js';
|
|
55
56
|
import { triggerWorkStealing as triggerWorkStealingImpl, startWorkStealingTimer } from './queen-work-stealing.js';
|
|
56
57
|
import { isMinCutAwarePlugin, injectMinCutBridgeIntoPlugins, loadState, saveState, startMetricsCollectionTimer, cleanupCompletedTasks as cleanupCompletedTasksImpl, getEnabledDomains, } from './queen-lifecycle.js';
|
|
57
58
|
// Initialize TASK_DOMAIN_MAP entries that need ALL_DOMAINS
|
|
@@ -284,6 +285,28 @@ export class QueenCoordinator {
|
|
|
284
285
|
// ============================================================================
|
|
285
286
|
// Task Management
|
|
286
287
|
// ============================================================================
|
|
288
|
+
/**
|
|
289
|
+
* #1075: check that a domain plugin will actually execute this task type
|
|
290
|
+
* before an external caller submits it, so the caller gets the reason as a
|
|
291
|
+
* rejection. A type that no candidate domain handles would otherwise only
|
|
292
|
+
* be failed at dispatch by `assignTaskToDomain` (#1081).
|
|
293
|
+
*
|
|
294
|
+
* Every candidate domain must handle the type, because `assignTask` may pick
|
|
295
|
+
* any of them. Queens built without domain plugins cannot be checked and
|
|
296
|
+
* accept the type unchanged.
|
|
297
|
+
*/
|
|
298
|
+
validateTaskExecutable(type, targetDomains = []) {
|
|
299
|
+
const candidates = targetDomains.length > 0 ? targetDomains : getTaskDomains(type);
|
|
300
|
+
if (candidates.length === 0) {
|
|
301
|
+
return err(new Error(`Unknown task type '${type}': no domain is configured for it. Pass a target domain.`));
|
|
302
|
+
}
|
|
303
|
+
if (!this.domainPlugins)
|
|
304
|
+
return ok(undefined);
|
|
305
|
+
const gaps = findDomainsWithoutHandler(this.domainPlugins, type, candidates);
|
|
306
|
+
if (gaps.length === 0)
|
|
307
|
+
return ok(undefined);
|
|
308
|
+
return err(new Error(describeMissingHandler(type, gaps)));
|
|
309
|
+
}
|
|
287
310
|
async submitTask(taskInput) {
|
|
288
311
|
if (!this.initialized) {
|
|
289
312
|
return err(new Error('Queen Coordinator not initialized'));
|
|
@@ -335,7 +358,11 @@ export class QueenCoordinator {
|
|
|
335
358
|
// Assign task to domain
|
|
336
359
|
const assignResult = await assignTask(this.createTaskContext(), task);
|
|
337
360
|
if (!assignResult.success) {
|
|
338
|
-
|
|
361
|
+
// A task the Queen already settled (refused by its plugin, or reported
|
|
362
|
+
// failed through onComplete) gave its slot back (#1140).
|
|
363
|
+
if (!this.tasks.has(taskId)) {
|
|
364
|
+
this.runningTaskCounter = Math.max(0, this.runningTaskCounter - 1);
|
|
365
|
+
}
|
|
339
366
|
return assignResult;
|
|
340
367
|
}
|
|
341
368
|
this.tasksReceived++;
|
|
@@ -343,7 +370,8 @@ export class QueenCoordinator {
|
|
|
343
370
|
return ok(taskId);
|
|
344
371
|
}
|
|
345
372
|
catch (error) {
|
|
346
|
-
|
|
373
|
+
// The task's own slot may already be released when the throw comes later.
|
|
374
|
+
this.runningTaskCounter = Math.max(0, this.runningTaskCounter - 1);
|
|
347
375
|
throw error;
|
|
348
376
|
}
|
|
349
377
|
}
|
|
@@ -451,7 +479,7 @@ export class QueenCoordinator {
|
|
|
451
479
|
getAgentsByDomain(domain) {
|
|
452
480
|
return this.agentCoordinator.listAgents({ domain });
|
|
453
481
|
}
|
|
454
|
-
async requestAgentSpawn(domain, type, capabilities) {
|
|
482
|
+
async requestAgentSpawn(domain, type, capabilities, taskId) {
|
|
455
483
|
if (!this.agentCoordinator.canSpawn()) {
|
|
456
484
|
return err(new Error('Maximum concurrent agents reached (15)'));
|
|
457
485
|
}
|
|
@@ -509,7 +537,10 @@ export class QueenCoordinator {
|
|
|
509
537
|
logger.warn(`Auto-team-wiring failed for ${result.value}`, { error: err });
|
|
510
538
|
}
|
|
511
539
|
}
|
|
512
|
-
|
|
540
|
+
// #1130: taskId marks an agent that lives only as long as its task.
|
|
541
|
+
await this.publishEvent('AgentSpawned', {
|
|
542
|
+
agentId: result.value, domain, type, capabilities, ...(taskId ? { taskId } : {}),
|
|
543
|
+
});
|
|
513
544
|
}
|
|
514
545
|
return result;
|
|
515
546
|
}
|
|
@@ -823,7 +854,7 @@ export class QueenCoordinator {
|
|
|
823
854
|
get traceCollector() { return self.traceCollector; },
|
|
824
855
|
taskTraceContexts: self.taskTraceContexts,
|
|
825
856
|
get coExecutionRepo() { return self.coExecutionRepo; },
|
|
826
|
-
requestAgentSpawn: (d, t, c) => self.requestAgentSpawn(d, t, c),
|
|
857
|
+
requestAgentSpawn: (d, t, c, id) => self.requestAgentSpawn(d, t, c, id),
|
|
827
858
|
publishEvent: (t, p) => self.publishEvent(t, p),
|
|
828
859
|
getDomainLoad: (d) => self.getDomainLoad(d),
|
|
829
860
|
getDomainHealth: (d) => self.getDomainHealth(d),
|
|
@@ -840,8 +871,12 @@ export class QueenCoordinator {
|
|
|
840
871
|
getIdleDomains: () => self.getIdleDomains(),
|
|
841
872
|
getBusyDomains: () => self.getBusyDomains(),
|
|
842
873
|
getDomainLoad: (d) => self.getDomainLoad(d),
|
|
874
|
+
// A queued entry can already be terminal (#1070); only a waiting task is stolen.
|
|
875
|
+
availableSlots: () => self.config.maxConcurrentTasks - self.runningTaskCounter,
|
|
876
|
+
canExecuteInDomain: (d, t) => (self.tasks.get(t.id)?.status ?? 'queued') === 'queued'
|
|
877
|
+
&& canDomainExecuteTask(self.domainPlugins, d, t),
|
|
843
878
|
removeFromQueues: (t) => removeFromQueues(self.taskQueue, self.domainQueues, t),
|
|
844
|
-
assignTaskToDomain: (t, d) =>
|
|
879
|
+
assignTaskToDomain: (t, d) => dispatchStolenTask(self.createTaskContext(), t, d),
|
|
845
880
|
publishEvent: (t, p) => self.publishEvent(t, p),
|
|
846
881
|
};
|
|
847
882
|
}
|
|
@@ -50,6 +50,17 @@ async function handleDomainEvent(ctx, event) {
|
|
|
50
50
|
// ============================================================================
|
|
51
51
|
// Task completed handler
|
|
52
52
|
// ============================================================================
|
|
53
|
+
/**
|
|
54
|
+
* #1130: a caller-owned task finishes through these events, not through the
|
|
55
|
+
* plugin completion callback that stops a task's agents, so its agent stayed
|
|
56
|
+
* "running" after the task ended. A retried task spawns a new agent. Stopping
|
|
57
|
+
* an agent that is already stopped is a no-op.
|
|
58
|
+
*/
|
|
59
|
+
async function stopTaskAgents(ctx, execution) {
|
|
60
|
+
for (const agentId of execution.assignedAgents) {
|
|
61
|
+
await ctx.agentCoordinator.stop(agentId);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
53
64
|
export async function handleTaskCompleted(ctx, event) {
|
|
54
65
|
const { taskId, result } = event.payload;
|
|
55
66
|
const cancelled = settleCancelledTask(ctx.tasks, taskId);
|
|
@@ -62,6 +73,7 @@ export async function handleTaskCompleted(ctx, event) {
|
|
|
62
73
|
}
|
|
63
74
|
const execution = ctx.tasks.get(taskId);
|
|
64
75
|
if (execution) {
|
|
76
|
+
await stopTaskAgents(ctx, execution);
|
|
65
77
|
// CC-002 FIX: Decrement the atomic counter when task completes
|
|
66
78
|
if (execution.status === 'running' || execution.status === 'assigned') {
|
|
67
79
|
ctx.runningTaskCounter = Math.max(0, ctx.runningTaskCounter - 1);
|
|
@@ -173,6 +185,7 @@ export async function handleTaskFailed(ctx, event) {
|
|
|
173
185
|
}
|
|
174
186
|
const execution = ctx.tasks.get(taskId);
|
|
175
187
|
if (execution) {
|
|
188
|
+
await stopTaskAgents(ctx, execution);
|
|
176
189
|
// CC-002 FIX: Decrement the atomic counter when task fails
|
|
177
190
|
if (execution.status === 'running' || execution.status === 'assigned') {
|
|
178
191
|
ctx.runningTaskCounter = Math.max(0, ctx.runningTaskCounter - 1);
|
|
@@ -193,7 +206,8 @@ export async function handleTaskFailed(ctx, event) {
|
|
|
193
206
|
}
|
|
194
207
|
// Check if we should retry. Caller-input errors are deterministic, so a
|
|
195
208
|
// retry would fail the same way.
|
|
196
|
-
|
|
209
|
+
const callerOwned = execution.task.executionOwner === 'caller';
|
|
210
|
+
if (!callerError && !callerOwned && execution.retryCount < ctx.config.taskRetryLimit) {
|
|
197
211
|
ctx.auditLogger.logFail(taskId, execution.assignedAgents[0], error);
|
|
198
212
|
const retried = {
|
|
199
213
|
...execution,
|
|
@@ -40,6 +40,15 @@ export async function loadState(memory, tasks, enqueueTask) {
|
|
|
40
40
|
if (state) {
|
|
41
41
|
for (const [id, execution] of state.tasks) {
|
|
42
42
|
if (execution.status === 'queued') {
|
|
43
|
+
if (execution.task.executionOwner === 'caller') {
|
|
44
|
+
tasks.set(id, {
|
|
45
|
+
...execution,
|
|
46
|
+
status: 'failed',
|
|
47
|
+
error: 'Caller-owned task was interrupted before completion; submit a new request.',
|
|
48
|
+
completedAt: new Date(),
|
|
49
|
+
});
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
43
52
|
tasks.set(id, execution);
|
|
44
53
|
enqueueTask(execution.task);
|
|
45
54
|
}
|