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
|
@@ -43,6 +43,8 @@ export interface TaskHandlerContext {
|
|
|
43
43
|
*/
|
|
44
44
|
getCodeIntelligenceCoordinator?(): Promise<ProjectMetricsCollector | undefined>;
|
|
45
45
|
getQualityAnalyzer(): QualityAnalyzerService;
|
|
46
|
+
/** The domain execution owner also records run evidence and lifecycle events. */
|
|
47
|
+
getTestExecutionAPI?(): Promise<import('../../domains/test-execution/interfaces').ITestExecutionAPI | undefined>;
|
|
46
48
|
/** Executor configuration */
|
|
47
49
|
readonly config: {
|
|
48
50
|
defaultLanguage: string;
|
|
@@ -8,12 +8,20 @@ import * as fs from 'fs/promises';
|
|
|
8
8
|
import { ok, err } from '../../shared/types/index.js';
|
|
9
9
|
import { toError, toErrorMessage } from '../../shared/error-utils.js';
|
|
10
10
|
import { discoverSourceFiles } from './handler-utils.js';
|
|
11
|
+
import { MAX_PAYLOAD_FILE_BYTES, requirePayloadPath } from '../../shared/io/payload-path-guard.js';
|
|
11
12
|
export function registerRequirementsHandlers(ctx) {
|
|
12
13
|
// Register requirements validation handler
|
|
13
14
|
ctx.registerHandler('validate-requirements', async (task) => {
|
|
14
15
|
const payload = task.payload;
|
|
15
16
|
try {
|
|
16
|
-
|
|
17
|
+
// #1126: list requirement files only inside the project.
|
|
18
|
+
let targetPath = process.cwd();
|
|
19
|
+
if (payload.requirementsPath) {
|
|
20
|
+
const confined = await requirePayloadPath('validate-requirements', 'requirementsPath', payload.requirementsPath, { allowDirectory: true, allowMissing: true });
|
|
21
|
+
if (!confined.success)
|
|
22
|
+
return confined;
|
|
23
|
+
targetPath = confined.value;
|
|
24
|
+
}
|
|
17
25
|
// Look for requirements files (markdown, feature files, etc.)
|
|
18
26
|
const reqFiles = await discoverSourceFiles(targetPath, {
|
|
19
27
|
includeTests: false,
|
|
@@ -58,9 +66,15 @@ export function registerRequirementsHandlers(ctx) {
|
|
|
58
66
|
error: 'contractPath is required. Provide a path to an OpenAPI spec, JSON Schema, or Protocol Buffer file.',
|
|
59
67
|
});
|
|
60
68
|
}
|
|
69
|
+
// #1126: read only a regular file inside the project, within the size
|
|
70
|
+
// limit; the result reports its line count and whether it parses. A
|
|
71
|
+
// missing file keeps its valid:false result below.
|
|
72
|
+
const confined = await requirePayloadPath('validate-contracts', 'contractPath', payload.contractPath, { allowMissing: true, maxBytes: MAX_PAYLOAD_FILE_BYTES });
|
|
73
|
+
if (!confined.success)
|
|
74
|
+
return confined;
|
|
61
75
|
// Check if the contract file exists
|
|
62
76
|
try {
|
|
63
|
-
const content = await fs.readFile(
|
|
77
|
+
const content = await fs.readFile(confined.value, 'utf-8');
|
|
64
78
|
const isJson = payload.contractPath.endsWith('.json');
|
|
65
79
|
const isYaml = payload.contractPath.endsWith('.yaml') || payload.contractPath.endsWith('.yml');
|
|
66
80
|
// Basic structural validation
|
|
@@ -13,12 +13,22 @@ import { FilePath } from '../../shared/value-objects/index.js';
|
|
|
13
13
|
import { generateSecurityRecommendations } from './handler-utils.js';
|
|
14
14
|
import { discoverSecurityFiles, isSecuritySourceFile } from '../../domains/security-compliance/scan-discovery.js';
|
|
15
15
|
import { runDependencyAdvisoryScan } from '../../domains/security-compliance/dependency-advisory-engine.js';
|
|
16
|
+
import { MAX_PAYLOAD_FILE_BYTES, requirePayloadPath } from '../../shared/io/payload-path-guard.js';
|
|
16
17
|
export function registerSecurityHandlers(ctx) {
|
|
17
18
|
// Register security scan handler - REAL IMPLEMENTATION
|
|
18
19
|
ctx.registerHandler('scan-security', async (task) => {
|
|
19
20
|
const payload = task.payload;
|
|
20
21
|
try {
|
|
21
|
-
|
|
22
|
+
// #1126: read (SAST, manifests, dependencies) only a file or directory
|
|
23
|
+
// inside the project. A DAST-only scan reads no target path.
|
|
24
|
+
let targetPath = path.resolve(payload.target || process.cwd());
|
|
25
|
+
const readsTarget = payload.sast !== false || payload.dependencies === true;
|
|
26
|
+
if (payload.target && payload.target !== '.' && readsTarget) {
|
|
27
|
+
const confined = await requirePayloadPath('scan-security', 'target', payload.target, { allowDirectory: true, allowMissing: true, maxBytes: MAX_PAYLOAD_FILE_BYTES });
|
|
28
|
+
if (!confined.success)
|
|
29
|
+
return confined;
|
|
30
|
+
targetPath = confined.value;
|
|
31
|
+
}
|
|
22
32
|
const sastRequested = payload.sast !== false;
|
|
23
33
|
const discoveryResult = sastRequested ? await discoverSecurityFiles(targetPath) : undefined;
|
|
24
34
|
const filesToScan = discoveryResult?.files ?? [];
|
|
@@ -8,9 +8,12 @@ import { v4 as uuidv4 } from 'uuid';
|
|
|
8
8
|
import * as fs from 'fs/promises';
|
|
9
9
|
import { ok, err } from '../../shared/types/index.js';
|
|
10
10
|
import { toError } from '../../shared/error-utils.js';
|
|
11
|
-
import { getTestRunnerExecutionError, TestRunnerExecutionError } from '../../shared/test-runner-verdict.js';
|
|
11
|
+
import { capDiagnostics, getTestRunnerExecutionError, TestRunnerExecutionError } from '../../shared/test-runner-verdict.js';
|
|
12
12
|
import { createVitestJsonReport } from '../../shared/vitest-json-report.js';
|
|
13
13
|
import { jestExactPathPattern, runnerFilePath } from '../../shared/test-runner-args.js';
|
|
14
|
+
import { testCasesFromRunnerReport } from '../../domains/test-execution/services/runner-test-cases.js';
|
|
15
|
+
import { runTestRunnerProcess } from '../../shared/test-runner-process.js';
|
|
16
|
+
import { MAX_PAYLOAD_FILE_BYTES, requirePayloadFiles } from '../../shared/io/payload-path-guard.js';
|
|
14
17
|
function escapeRegExp(s) {
|
|
15
18
|
return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
16
19
|
}
|
|
@@ -67,9 +70,19 @@ export function registerTestExecutionHandlers(ctx) {
|
|
|
67
70
|
if (payload.sourceFiles && payload.sourceFiles.length > 0) {
|
|
68
71
|
sourceFiles = payload.sourceFiles;
|
|
69
72
|
}
|
|
70
|
-
else if (payload.filePath) {
|
|
73
|
+
else if (payload.filePath && !payload.sourceCode) {
|
|
74
|
+
// With sourceCode, filePath is only the import target written into the
|
|
75
|
+
// generated tests (tool contract); it is neither read nor required.
|
|
71
76
|
sourceFiles = [payload.filePath];
|
|
72
77
|
}
|
|
78
|
+
if (sourceFiles.length > 0) {
|
|
79
|
+
// #1126: the generator reads each file whole, so only project files.
|
|
80
|
+
const field = payload.sourceFiles?.length ? 'sourceFiles' : 'filePath';
|
|
81
|
+
const confined = await requirePayloadFiles('generate-tests', field, sourceFiles, { maxBytes: MAX_PAYLOAD_FILE_BYTES });
|
|
82
|
+
if (!confined.success)
|
|
83
|
+
return confined;
|
|
84
|
+
sourceFiles = confined.value;
|
|
85
|
+
}
|
|
73
86
|
else if (payload.sourceCode) {
|
|
74
87
|
// Write temporary file for analysis if only source code provided
|
|
75
88
|
// Use correct file extension based on language parameter
|
|
@@ -173,17 +186,44 @@ export function registerTestExecutionHandlers(ctx) {
|
|
|
173
186
|
ctx.registerHandler('execute-tests', async (task) => {
|
|
174
187
|
const payload = task.payload;
|
|
175
188
|
try {
|
|
176
|
-
const
|
|
177
|
-
if (
|
|
189
|
+
const requestedFiles = payload.testFiles || [];
|
|
190
|
+
if (requestedFiles.length === 0) {
|
|
178
191
|
return err(new TestRunnerExecutionError('No test files specified. Provide testFiles array with paths to test files.'));
|
|
179
192
|
}
|
|
180
193
|
// Validate test file paths before invoking a runner.
|
|
181
194
|
const safePathPattern = /^[a-zA-Z0-9_./@-]+$/;
|
|
182
|
-
if (
|
|
195
|
+
if (requestedFiles.some(file => !safePathPattern.test(file))) {
|
|
183
196
|
return err(new TestRunnerExecutionError('Some test file paths contain invalid characters and were rejected. Provide concrete paths; expand glob patterns before calling.'));
|
|
184
197
|
}
|
|
185
|
-
|
|
186
|
-
|
|
198
|
+
// #1126: a runner executes what it is given, so only files and
|
|
199
|
+
// directories (#909 Jest targets) inside the project, run as the real
|
|
200
|
+
// paths that were checked. A missing file is still reported by the runner.
|
|
201
|
+
const confined = await requirePayloadFiles('execute-tests', 'testFiles', requestedFiles, { allowMissing: true, allowDirectory: true });
|
|
202
|
+
if (!confined.success)
|
|
203
|
+
return confined;
|
|
204
|
+
const testFiles = confined.value;
|
|
205
|
+
// A caller-owned MCP task skips the Queen's plugin dispatch. Run through
|
|
206
|
+
// that same domain API here: it owns persistence, measured quality evidence
|
|
207
|
+
// and TestRunStarted/Completed events as well as the runner itself.
|
|
208
|
+
if (task.executionOwner === 'caller') {
|
|
209
|
+
const api = await ctx.getTestExecutionAPI?.();
|
|
210
|
+
if (!api)
|
|
211
|
+
return err(new TestRunnerExecutionError('Test-execution domain is unavailable.'));
|
|
212
|
+
const result = await api.runTests({
|
|
213
|
+
testFiles,
|
|
214
|
+
parallel: payload.parallel,
|
|
215
|
+
timeout: payload.timeout,
|
|
216
|
+
workers: payload.parallelism,
|
|
217
|
+
// The domain owns requested retries; Queen dispatch must not replay it.
|
|
218
|
+
retryCount: payload.retryCount ?? 0,
|
|
219
|
+
});
|
|
220
|
+
if (!result.success)
|
|
221
|
+
return result;
|
|
222
|
+
return ok({ ...result.value, coverage: result.value.coverage?.line ?? null });
|
|
223
|
+
}
|
|
224
|
+
// #1074: run the runner asynchronously so the MCP server keeps serving
|
|
225
|
+
// other requests (task_status, task_cancel, ...) during the test run.
|
|
226
|
+
const options = { cwd: process.cwd(), timeout: 120000 };
|
|
187
227
|
let runner = 'vitest';
|
|
188
228
|
// Vitest 5 writes the JSON report to a file rather than stdout; an explicit
|
|
189
229
|
// --outputFile gives Vitest 4 and 5 the same contract.
|
|
@@ -192,7 +232,7 @@ export function registerTestExecutionHandlers(ctx) {
|
|
|
192
232
|
let output;
|
|
193
233
|
try {
|
|
194
234
|
// #909: absolute paths cannot be read as flags (e.g. a "--watch" entry).
|
|
195
|
-
execution =
|
|
235
|
+
execution = await runTestRunnerProcess('npx', ['vitest', 'run', ...testFiles.map(file => runnerFilePath(file, options.cwd)), '--reporter=json', ...report.args], options);
|
|
196
236
|
output = execution.error || execution.signal
|
|
197
237
|
? ''
|
|
198
238
|
: report.read(execution.stdout || '') ?? '';
|
|
@@ -203,12 +243,12 @@ export function registerTestExecutionHandlers(ctx) {
|
|
|
203
243
|
// Preserve the existing Jest fallback when Vitest cannot produce a report.
|
|
204
244
|
if (!output.includes('{') && execution.status !== 0 && !execution.error && !execution.signal) {
|
|
205
245
|
runner = 'jest';
|
|
206
|
-
execution =
|
|
246
|
+
execution = await runTestRunnerProcess('npx', ['jest', ...testFiles.map(file => jestExactPathPattern(file, options.cwd)), '--json'], options);
|
|
207
247
|
output = execution.stdout || '';
|
|
208
248
|
}
|
|
209
249
|
const diagnostics = [execution.error?.message, execution.signal && `Terminated by ${execution.signal}`, execution.stderr, output].filter(Boolean).join('\n');
|
|
210
250
|
if (execution.error) {
|
|
211
|
-
return err(new TestRunnerExecutionError(`${runner} could not complete: ${diagnostics
|
|
251
|
+
return err(new TestRunnerExecutionError(`${runner} could not complete: ${capDiagnostics(diagnostics)}`));
|
|
212
252
|
}
|
|
213
253
|
try {
|
|
214
254
|
const jsonStart = output.indexOf('{');
|
|
@@ -225,14 +265,19 @@ export function registerTestExecutionHandlers(ctx) {
|
|
|
225
265
|
// #1027 N5/NB5: this handler runs the tests without --coverage, so it has no
|
|
226
266
|
// coverage figure to return (null, never 0%). For test_execute_parallel the
|
|
227
267
|
// measured coverage + testsPassing are recorded by TestExecutorService.
|
|
228
|
-
|
|
268
|
+
// #1110: per-test entries come from the runner report itself, or are left out.
|
|
269
|
+
const testCases = testCasesFromRunnerReport(json, testFiles.join(', '));
|
|
270
|
+
return ok({
|
|
271
|
+
total, passed, failed, skipped, duration: 0, coverage: null, failedTests: [],
|
|
272
|
+
...(testCases && testCases.length === total ? { testCases } : {}),
|
|
273
|
+
});
|
|
229
274
|
}
|
|
230
275
|
}
|
|
231
276
|
}
|
|
232
277
|
catch {
|
|
233
278
|
// A malformed report cannot establish that the requested tests completed.
|
|
234
279
|
}
|
|
235
|
-
return err(new TestRunnerExecutionError(`Could not parse ${runner} results (exit code ${execution.status ?? 'unknown'}):\n${diagnostics
|
|
280
|
+
return err(new TestRunnerExecutionError(`Could not parse ${runner} results (exit code ${execution.status ?? 'unknown'}):\n${capDiagnostics(diagnostics)}`));
|
|
236
281
|
}
|
|
237
282
|
catch (error) {
|
|
238
283
|
return err(toError(error));
|
|
@@ -22,8 +22,8 @@ export { DomainTeamManager, createDomainTeamManager, DEFAULT_DOMAIN_TEAM_MANAGER
|
|
|
22
22
|
export type { DomainTeamManagerConfig, DomainTeam, DomainTeamHealth, ScaleResult, RebalanceResult, } from './agent-teams/domain-team-manager';
|
|
23
23
|
export { TierSelector, createTierSelector, ALL_USER_FACING_DOMAINS, CORE_PRIORITY_DOMAINS, DEFAULT_DOMAIN_AGENT_MAP, DEFAULT_TIER_CONFIGS, getDefaultTierConfig, validateTierConfig, FLEET_TIER_ORDER, } from './fleet-tiers';
|
|
24
24
|
export type { FleetTier, TierConfig, TierSelectionContext, AgentAllocation, TierSelectionResult, TierSelectionRecord, TierSelectionStats, } from './fleet-tiers';
|
|
25
|
-
export { TaskDAG, DAGScheduler, createTaskDAG, createDAGScheduler, } from './task-dag';
|
|
26
|
-
export type { DAGTaskStatus, DAGTask, AddTaskInput, DAGStats, DAGEventType, DAGEvent, DAGSchedulerConfig, DAGEventHandler, } from './task-dag';
|
|
25
|
+
export { TaskDAG, DAGScheduler, createTaskDAG, createDAGScheduler, PREREQUISITE_RECEIPT_SCHEMA, GraphRevisionConflictError, PrerequisiteWaiverError, } from './task-dag';
|
|
26
|
+
export type { DAGTaskStatus, DAGTask, AddTaskInput, DAGStats, DAGEventType, DAGEvent, DAGSchedulerConfig, DAGEventHandler, PrerequisiteDisposition, PrerequisiteReceiptV1, PrerequisiteEdgeState, WaivePrerequisiteInput, WaiverPolicy, TaskDAGOptions, ObligationSummary, DAGProgress, } from './task-dag';
|
|
27
27
|
export { DomainCircuitBreaker, DomainCircuitOpenError, DEFAULT_DOMAIN_BREAKER_CONFIG, DomainBreakerRegistry, DOMAIN_CRITICALITY_CONFIGS, DOMAIN_CRITICALITY, createDomainCircuitBreaker, createDomainBreakerRegistry, } from './circuit-breaker';
|
|
28
28
|
export type { DomainBreakerState, DomainCircuitBreakerConfig, DomainBreakerStats, DomainBreakerEvent, DomainBreakerStateChangeHandler, DomainCriticalityConfig, DomainCriticalityLevel, DomainBreakerHealthSummary, } from './circuit-breaker';
|
|
29
29
|
export { HypothesisManager, createHypothesisManager, DEFAULT_COMPETING_HYPOTHESES_CONFIG, } from './competing-hypotheses';
|
|
@@ -72,7 +72,7 @@ export { TierSelector, createTierSelector, ALL_USER_FACING_DOMAINS, CORE_PRIORIT
|
|
|
72
72
|
// ============================================================================
|
|
73
73
|
// Task Dependency DAG (ADR-064: DAG-Based Task Scheduling)
|
|
74
74
|
// ============================================================================
|
|
75
|
-
export { TaskDAG, DAGScheduler, createTaskDAG, createDAGScheduler, } from './task-dag/index.js';
|
|
75
|
+
export { TaskDAG, DAGScheduler, createTaskDAG, createDAGScheduler, PREREQUISITE_RECEIPT_SCHEMA, GraphRevisionConflictError, PrerequisiteWaiverError, } from './task-dag/index.js';
|
|
76
76
|
// ============================================================================
|
|
77
77
|
// Domain Circuit Breakers (ADR-064: Domain-Level Fault Isolation)
|
|
78
78
|
// ============================================================================
|
|
@@ -20,6 +20,19 @@ import { SwarmGraph } from './swarm-graph';
|
|
|
20
20
|
import { MinCutHealthMonitor } from './mincut-health-monitor';
|
|
21
21
|
import { MinCutPersistence } from './mincut-persistence';
|
|
22
22
|
import { SwarmVertex, SwarmEdge, MinCutHealth, MinCutHealthConfig, WeakVertex } from './interfaces';
|
|
23
|
+
/**
|
|
24
|
+
* #1130: Queen health reads the MinCut of the fleet's own topology (domains
|
|
25
|
+
* and long-lived agents). An agent spawned for one task is a leaf with a
|
|
26
|
+
* single edge, so counting it would put every running task below threshold.
|
|
27
|
+
*/
|
|
28
|
+
export interface FleetMinCutHealth extends MinCutHealth {
|
|
29
|
+
/** Status of the topology without task-scoped agents; this one degrades Queen health. */
|
|
30
|
+
readonly fleetStatus: MinCutHealth['status'];
|
|
31
|
+
/** MinCut of the topology without task-scoped agents. `minCutValue` stays the raw value. */
|
|
32
|
+
readonly fleetMinCutValue: number;
|
|
33
|
+
/** Running task-scoped agents left out of `fleetStatus`. */
|
|
34
|
+
readonly taskAgents: number;
|
|
35
|
+
}
|
|
23
36
|
/**
|
|
24
37
|
* Configuration for Queen-MinCut integration
|
|
25
38
|
*/
|
|
@@ -56,6 +69,13 @@ export declare class QueenMinCutBridge {
|
|
|
56
69
|
private readonly monitor;
|
|
57
70
|
private readonly persistence;
|
|
58
71
|
private eventSubscriptions;
|
|
72
|
+
/**
|
|
73
|
+
* Agents with a vertex in the graph, from QueenAgentSpawned or from the
|
|
74
|
+
* coordinator when the graph was built. Pruned once they complete (#1130).
|
|
75
|
+
*/
|
|
76
|
+
private readonly spawnedAgentIds;
|
|
77
|
+
/** The subset spawned for a single task (#1130). */
|
|
78
|
+
private readonly taskAgentIds;
|
|
59
79
|
private snapshotTimer;
|
|
60
80
|
private initialized;
|
|
61
81
|
constructor(eventBus: EventBus, agentCoordinator: AgentCoordinator, config?: Partial<QueenMinCutConfig>);
|
|
@@ -100,11 +120,29 @@ export declare class QueenMinCutBridge {
|
|
|
100
120
|
* Convert MinCut alerts to Queen health issues
|
|
101
121
|
*/
|
|
102
122
|
getHealthIssuesFromMinCut(): HealthIssue[];
|
|
123
|
+
/**
|
|
124
|
+
* #1130: nothing publishes QueenAgentTerminated, so a finished task agent
|
|
125
|
+
* stayed in the topology and kept the fleet degraded after its run. Drop the
|
|
126
|
+
* vertex of every tracked agent that completed normally or that the
|
|
127
|
+
* coordinator no longer lists. A failed agent keeps its vertex (see
|
|
128
|
+
* failedAgentIssues), so a crash never makes the fleet look healthier.
|
|
129
|
+
* Returns the tracked agents that failed.
|
|
130
|
+
*/
|
|
131
|
+
private pruneCompletedAgents;
|
|
132
|
+
/** #1130: one issue per failed agent, task-scoped or long-lived. */
|
|
133
|
+
private failedAgentIssues;
|
|
134
|
+
private isTaskAgentVertex;
|
|
135
|
+
/**
|
|
136
|
+
* #1130: MinCut health with the fleet reading next to the raw one. The fleet
|
|
137
|
+
* reading drops task-scoped agents from a copy of the graph; the raw graph,
|
|
138
|
+
* its value and its alerts are unchanged.
|
|
139
|
+
*/
|
|
140
|
+
getFleetMinCutHealth(): FleetMinCutHealth;
|
|
103
141
|
/**
|
|
104
142
|
* Extend Queen health with MinCut metrics
|
|
105
143
|
*/
|
|
106
144
|
extendQueenHealth(baseHealth: QueenHealth): QueenHealth & {
|
|
107
|
-
minCut?:
|
|
145
|
+
minCut?: FleetMinCutHealth;
|
|
108
146
|
};
|
|
109
147
|
/**
|
|
110
148
|
* Extend Queen metrics with MinCut data
|
|
@@ -44,6 +44,13 @@ export class QueenMinCutBridge {
|
|
|
44
44
|
monitor;
|
|
45
45
|
persistence;
|
|
46
46
|
eventSubscriptions = [];
|
|
47
|
+
/**
|
|
48
|
+
* Agents with a vertex in the graph, from QueenAgentSpawned or from the
|
|
49
|
+
* coordinator when the graph was built. Pruned once they complete (#1130).
|
|
50
|
+
*/
|
|
51
|
+
spawnedAgentIds = new Set();
|
|
52
|
+
/** The subset spawned for a single task (#1130). */
|
|
53
|
+
taskAgentIds = new Set();
|
|
47
54
|
snapshotTimer = null;
|
|
48
55
|
initialized = false;
|
|
49
56
|
constructor(eventBus, agentCoordinator, config = {}) {
|
|
@@ -137,6 +144,8 @@ export class QueenMinCutBridge {
|
|
|
137
144
|
// Add agent vertices
|
|
138
145
|
for (const agent of agents) {
|
|
139
146
|
this.addAgentVertex(agent);
|
|
147
|
+
// #1130: tracked so a completed agent is pruned like a spawned one
|
|
148
|
+
this.spawnedAgentIds.add(agent.id);
|
|
140
149
|
}
|
|
141
150
|
// Add edges based on coordination patterns
|
|
142
151
|
this.buildCoordinationEdges(agents);
|
|
@@ -239,7 +248,10 @@ export class QueenMinCutBridge {
|
|
|
239
248
|
subscribeToEvents() {
|
|
240
249
|
// Agent spawned
|
|
241
250
|
const onAgentSpawned = async (event) => {
|
|
242
|
-
const { agentId, domain, type, capabilities } = event.payload;
|
|
251
|
+
const { agentId, domain, type, capabilities, taskId } = event.payload;
|
|
252
|
+
this.spawnedAgentIds.add(agentId);
|
|
253
|
+
if (taskId)
|
|
254
|
+
this.taskAgentIds.add(agentId);
|
|
243
255
|
// Cast to extended AgentInfo with optional properties
|
|
244
256
|
this.addAgentVertex({
|
|
245
257
|
id: agentId,
|
|
@@ -381,7 +393,9 @@ export class QueenMinCutBridge {
|
|
|
381
393
|
}
|
|
382
394
|
// Add issues for weak vertices
|
|
383
395
|
const weakVertices = this.monitor.getWeakVertices();
|
|
384
|
-
|
|
396
|
+
// #1130: a task-scoped agent is a leaf by design, not a weak point of the fleet
|
|
397
|
+
const fleetWeakVertices = weakVertices.filter(weak => !this.isTaskAgentVertex(weak.vertex.id));
|
|
398
|
+
for (const weak of fleetWeakVertices.slice(0, 3)) { // Top 3 weak vertices
|
|
385
399
|
if (weak.riskScore > 0.7) {
|
|
386
400
|
issues.push({
|
|
387
401
|
severity: 'high',
|
|
@@ -393,6 +407,66 @@ export class QueenMinCutBridge {
|
|
|
393
407
|
}
|
|
394
408
|
return issues;
|
|
395
409
|
}
|
|
410
|
+
/**
|
|
411
|
+
* #1130: nothing publishes QueenAgentTerminated, so a finished task agent
|
|
412
|
+
* stayed in the topology and kept the fleet degraded after its run. Drop the
|
|
413
|
+
* vertex of every tracked agent that completed normally or that the
|
|
414
|
+
* coordinator no longer lists. A failed agent keeps its vertex (see
|
|
415
|
+
* failedAgentIssues), so a crash never makes the fleet look healthier.
|
|
416
|
+
* Returns the tracked agents that failed.
|
|
417
|
+
*/
|
|
418
|
+
pruneCompletedAgents() {
|
|
419
|
+
if (this.spawnedAgentIds.size === 0)
|
|
420
|
+
return [];
|
|
421
|
+
const byId = new Map(this.agentCoordinator.listAgents().map(agent => [agent.id, agent]));
|
|
422
|
+
const failed = [];
|
|
423
|
+
for (const agentId of this.spawnedAgentIds) {
|
|
424
|
+
const agent = byId.get(agentId);
|
|
425
|
+
if (agent?.status === 'failed') {
|
|
426
|
+
failed.push(agent);
|
|
427
|
+
continue;
|
|
428
|
+
}
|
|
429
|
+
if (agent && agent.status !== 'completed')
|
|
430
|
+
continue;
|
|
431
|
+
this.graph.removeVertex(`agent:${agentId}`);
|
|
432
|
+
this.spawnedAgentIds.delete(agentId);
|
|
433
|
+
this.taskAgentIds.delete(agentId);
|
|
434
|
+
}
|
|
435
|
+
return failed;
|
|
436
|
+
}
|
|
437
|
+
/** #1130: one issue per failed agent, task-scoped or long-lived. */
|
|
438
|
+
failedAgentIssues(failed) {
|
|
439
|
+
return failed.map(agent => ({
|
|
440
|
+
severity: 'high',
|
|
441
|
+
message: `Agent ${agent.id} (${agent.type}) failed`,
|
|
442
|
+
timestamp: new Date(),
|
|
443
|
+
domain: agent.domain,
|
|
444
|
+
}));
|
|
445
|
+
}
|
|
446
|
+
isTaskAgentVertex(vertexId) {
|
|
447
|
+
return vertexId.startsWith('agent:') && this.taskAgentIds.has(vertexId.slice('agent:'.length));
|
|
448
|
+
}
|
|
449
|
+
/**
|
|
450
|
+
* #1130: MinCut health with the fleet reading next to the raw one. The fleet
|
|
451
|
+
* reading drops task-scoped agents from a copy of the graph; the raw graph,
|
|
452
|
+
* its value and its alerts are unchanged.
|
|
453
|
+
*/
|
|
454
|
+
getFleetMinCutHealth() {
|
|
455
|
+
const raw = this.getMinCutHealth();
|
|
456
|
+
if (this.taskAgentIds.size === 0) {
|
|
457
|
+
return { ...raw, fleetStatus: raw.status, fleetMinCutValue: raw.minCutValue, taskAgents: 0 };
|
|
458
|
+
}
|
|
459
|
+
const fleetGraph = this.graph.clone();
|
|
460
|
+
for (const agentId of this.taskAgentIds)
|
|
461
|
+
fleetGraph.removeVertex(`agent:${agentId}`);
|
|
462
|
+
const fleet = createMinCutHealthMonitor(fleetGraph, this.config).getHealth();
|
|
463
|
+
return {
|
|
464
|
+
...raw,
|
|
465
|
+
fleetStatus: fleet.status,
|
|
466
|
+
fleetMinCutValue: fleet.minCutValue,
|
|
467
|
+
taskAgents: this.taskAgentIds.size,
|
|
468
|
+
};
|
|
469
|
+
}
|
|
396
470
|
/**
|
|
397
471
|
* Extend Queen health with MinCut metrics
|
|
398
472
|
*/
|
|
@@ -400,19 +474,22 @@ export class QueenMinCutBridge {
|
|
|
400
474
|
if (!this.config.includeInQueenHealth) {
|
|
401
475
|
return baseHealth;
|
|
402
476
|
}
|
|
403
|
-
const
|
|
404
|
-
const
|
|
477
|
+
const failedAgents = this.pruneCompletedAgents();
|
|
478
|
+
const minCutHealth = this.getFleetMinCutHealth();
|
|
479
|
+
// #1130: with only task-scoped agents the fleet topology is idle, and the
|
|
480
|
+
// raw alerts describe those agents, not the fleet.
|
|
481
|
+
const minCutIssues = minCutHealth.fleetStatus === 'idle' ? [] : this.getHealthIssuesFromMinCut();
|
|
405
482
|
// Issue #205 fix: Only degrade status for actual critical issues
|
|
406
483
|
// 'idle' status is normal for fresh installs - don't degrade health
|
|
407
484
|
let status = baseHealth.status;
|
|
408
|
-
if (minCutHealth.
|
|
485
|
+
if ((minCutHealth.fleetStatus === 'critical' || failedAgents.length > 0) && status === 'healthy') {
|
|
409
486
|
status = 'degraded';
|
|
410
487
|
}
|
|
411
488
|
// Note: 'idle' status does NOT trigger degradation - it's expected for fresh systems
|
|
412
489
|
return {
|
|
413
490
|
...baseHealth,
|
|
414
491
|
status,
|
|
415
|
-
issues: [...baseHealth.issues, ...minCutIssues],
|
|
492
|
+
issues: [...baseHealth.issues, ...this.failedAgentIssues(failedAgents), ...minCutIssues],
|
|
416
493
|
minCut: minCutHealth,
|
|
417
494
|
};
|
|
418
495
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Learning consolidation: pattern archiving (#1071)
|
|
3
|
+
*
|
|
4
|
+
* The consolidation protocol archives patterns it selected for removal.
|
|
5
|
+
* Archiving is a move inside the `learning-optimization` namespace, where
|
|
6
|
+
* `LearningCoordinatorService` writes every learned pattern:
|
|
7
|
+
*
|
|
8
|
+
* learning:pattern:<id> -> learning:pattern:archived:<id>
|
|
9
|
+
*
|
|
10
|
+
* Safety rules:
|
|
11
|
+
* - Only the active key of a pattern the protocol selected is deleted.
|
|
12
|
+
* - The active record must still be the selected pattern (same id, and the
|
|
13
|
+
* same scores and last use) when the archive runs, or nothing is written or
|
|
14
|
+
* deleted. A pattern used or re-scored since it was selected is left active.
|
|
15
|
+
* - The archive copy is read back before the active key is deleted, so a
|
|
16
|
+
* failed write never loses the pattern.
|
|
17
|
+
* The move is implemented in domains/learning-optimization/pattern-archive.ts.
|
|
18
|
+
*/
|
|
19
|
+
import type { LearnedPattern } from '../../domains/learning-optimization/interfaces.js';
|
|
20
|
+
export { archiveSelectedPattern, type ArchiveOutcome } from '../../domains/learning-optimization/pattern-archive.js';
|
|
21
|
+
/** Counts of one consolidation run's archive step, for logs and results. */
|
|
22
|
+
export interface ArchiveCounts {
|
|
23
|
+
/** Patterns the retention and trim rules selected for removal. */
|
|
24
|
+
selected: number;
|
|
25
|
+
/** Selected patterns moved to `:archived:` and removed from the active set. */
|
|
26
|
+
archived: number;
|
|
27
|
+
/** Selected patterns whose active record was gone or changed; left alone. */
|
|
28
|
+
missing: number;
|
|
29
|
+
/** Selected patterns whose archive copy could not be verified; left active. */
|
|
30
|
+
failed: number;
|
|
31
|
+
}
|
|
32
|
+
export declare function emptyArchiveCounts(): ArchiveCounts;
|
|
33
|
+
/** True when the pattern was created less than `graceDays` days ago. */
|
|
34
|
+
export declare function isWithinRetentionGrace(pattern: LearnedPattern, graceDays: number, now?: number): boolean;
|
|
35
|
+
//# sourceMappingURL=learning-consolidation-archive.d.ts.map
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Learning consolidation: pattern archiving (#1071)
|
|
3
|
+
*
|
|
4
|
+
* The consolidation protocol archives patterns it selected for removal.
|
|
5
|
+
* Archiving is a move inside the `learning-optimization` namespace, where
|
|
6
|
+
* `LearningCoordinatorService` writes every learned pattern:
|
|
7
|
+
*
|
|
8
|
+
* learning:pattern:<id> -> learning:pattern:archived:<id>
|
|
9
|
+
*
|
|
10
|
+
* Safety rules:
|
|
11
|
+
* - Only the active key of a pattern the protocol selected is deleted.
|
|
12
|
+
* - The active record must still be the selected pattern (same id, and the
|
|
13
|
+
* same scores and last use) when the archive runs, or nothing is written or
|
|
14
|
+
* deleted. A pattern used or re-scored since it was selected is left active.
|
|
15
|
+
* - The archive copy is read back before the active key is deleted, so a
|
|
16
|
+
* failed write never loses the pattern.
|
|
17
|
+
* The move is implemented in domains/learning-optimization/pattern-archive.ts.
|
|
18
|
+
*/
|
|
19
|
+
// The move itself lives with the patterns, so the merge path in
|
|
20
|
+
// LearningCoordinatorService uses the same read-back rule (#1106).
|
|
21
|
+
export { archiveSelectedPattern } from '../../domains/learning-optimization/pattern-archive.js';
|
|
22
|
+
export function emptyArchiveCounts() {
|
|
23
|
+
return { selected: 0, archived: 0, missing: 0, failed: 0 };
|
|
24
|
+
}
|
|
25
|
+
/** True when the pattern was created less than `graceDays` days ago. */
|
|
26
|
+
export function isWithinRetentionGrace(pattern, graceDays, now = Date.now()) {
|
|
27
|
+
if (graceDays <= 0)
|
|
28
|
+
return false;
|
|
29
|
+
const created = new Date(pattern.createdAt).getTime();
|
|
30
|
+
if (!Number.isFinite(created))
|
|
31
|
+
return false;
|
|
32
|
+
return now - created < graceDays * 24 * 60 * 60 * 1000;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=learning-consolidation-archive.js.map
|
|
@@ -7,7 +7,13 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { Result, DomainName, DomainEvent } from '../../shared/types/index.js';
|
|
9
9
|
import { EventBus, MemoryBackend } from '../../kernel/interfaces.js';
|
|
10
|
+
import { type ArchiveCounts } from './learning-consolidation-archive.js';
|
|
10
11
|
import type { LearnedPattern, PatternType, IPatternLearningService, IKnowledgeSynthesisService } from '../../domains/learning-optimization/interfaces.js';
|
|
12
|
+
/**
|
|
13
|
+
* Id of a merged pattern a dry run predicts but never stores (#1106). It only
|
|
14
|
+
* appears in `removedPatterns` when the predicted merge would itself be trimmed.
|
|
15
|
+
*/
|
|
16
|
+
export declare const DRY_RUN_MERGE_ID_PREFIX = "dry-run-merge:";
|
|
11
17
|
export interface LearningConsolidationConfig {
|
|
12
18
|
/** Minimum patterns per domain to trigger consolidation */
|
|
13
19
|
minPatternsForConsolidation: number;
|
|
@@ -21,6 +27,18 @@ export interface LearningConsolidationConfig {
|
|
|
21
27
|
analysisWindowWeeks: number;
|
|
22
28
|
/** Enable cross-project transfer */
|
|
23
29
|
enableCrossProjectTransfer: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Report what would be merged and archived without writing anything
|
|
32
|
+
* (#1071). On by default: the protocol reads the real learned patterns in
|
|
33
|
+
* `learning-optimization`, so archiving them is opt-in (`dryRun: false`).
|
|
34
|
+
*/
|
|
35
|
+
dryRun: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Patterns created less than this many days ago are never archived by the
|
|
38
|
+
* retention or trim rules, so a new pattern gets time to build confidence
|
|
39
|
+
* and usage before it is judged (#1071).
|
|
40
|
+
*/
|
|
41
|
+
retentionGraceDays: number;
|
|
24
42
|
}
|
|
25
43
|
export interface LearningConsolidationStartedEvent extends DomainEvent {
|
|
26
44
|
readonly type: 'LearningConsolidationStarted';
|
|
@@ -39,6 +57,7 @@ export interface PatternConsolidatedEvent extends DomainEvent {
|
|
|
39
57
|
patternsAfterCount: number;
|
|
40
58
|
mergedPatternIds: string[];
|
|
41
59
|
removedPatternIds: string[];
|
|
60
|
+
dryRun: boolean;
|
|
42
61
|
};
|
|
43
62
|
}
|
|
44
63
|
export interface LearningConsolidationCompletedEvent extends DomainEvent {
|
|
@@ -48,6 +67,7 @@ export interface LearningConsolidationCompletedEvent extends DomainEvent {
|
|
|
48
67
|
stats: ConsolidationStats;
|
|
49
68
|
insights: WeeklyInsight[];
|
|
50
69
|
duration: number;
|
|
70
|
+
dryRun: boolean;
|
|
51
71
|
};
|
|
52
72
|
}
|
|
53
73
|
export interface TransferReadyEvent extends DomainEvent {
|
|
@@ -75,7 +95,10 @@ export interface ConsolidationStats {
|
|
|
75
95
|
domainsProcessed: number;
|
|
76
96
|
totalPatternsAnalyzed: number;
|
|
77
97
|
patternsMerged: number;
|
|
98
|
+
/** Patterns selected for removal (in a dry run, the ones that would be). */
|
|
78
99
|
patternsRemoved: number;
|
|
100
|
+
/** Selected patterns actually archived (always 0 in a dry run). */
|
|
101
|
+
patternsArchived: number;
|
|
79
102
|
patternsRetained: number;
|
|
80
103
|
knowledgeItemsUpdated: number;
|
|
81
104
|
improvementOpportunities: number;
|
|
@@ -97,8 +120,24 @@ export interface TransferablePattern {
|
|
|
97
120
|
transferConfidence: number;
|
|
98
121
|
reason: string;
|
|
99
122
|
}
|
|
123
|
+
/** One step of a run that did not complete (#1106). */
|
|
124
|
+
export interface ConsolidationError {
|
|
125
|
+
/** Domain the step ran for; absent for run-wide steps. */
|
|
126
|
+
domain?: DomainName;
|
|
127
|
+
step: 'consolidate' | 'merge' | 'archive' | 'knowledge-update' | 'transfer';
|
|
128
|
+
error: string;
|
|
129
|
+
}
|
|
100
130
|
export interface ConsolidationResult {
|
|
101
131
|
consolidationId: string;
|
|
132
|
+
/** True when nothing was merged, archived or written (#1071). */
|
|
133
|
+
dryRun: boolean;
|
|
134
|
+
/**
|
|
135
|
+
* #1106: `completed` only when every step of every domain succeeded;
|
|
136
|
+
* `partial` when some failed (see `errors`). When every domain fails,
|
|
137
|
+
* `execute()` returns an error instead of a result.
|
|
138
|
+
*/
|
|
139
|
+
status: 'completed' | 'partial';
|
|
140
|
+
errors: ConsolidationError[];
|
|
102
141
|
startedAt: Date;
|
|
103
142
|
completedAt: Date;
|
|
104
143
|
stats: ConsolidationStats;
|
|
@@ -112,10 +151,18 @@ export interface DomainConsolidationReport {
|
|
|
112
151
|
patternsAfterCount: number;
|
|
113
152
|
mergedPatterns: MergedPatternInfo[];
|
|
114
153
|
removedPatterns: RemovedPatternInfo[];
|
|
154
|
+
/** Outcome of archiving `removedPatterns` (all zero but `selected` in a dry run). */
|
|
155
|
+
archiveCounts: ArchiveCounts;
|
|
156
|
+
/** #1106: merges that failed; their source patterns were left active and kept. */
|
|
157
|
+
mergeFailures: Array<{
|
|
158
|
+
sourcePatternIds: string[];
|
|
159
|
+
error: string;
|
|
160
|
+
}>;
|
|
115
161
|
topPerformingPatterns: LearnedPattern[];
|
|
116
162
|
improvementAreas: string[];
|
|
117
163
|
}
|
|
118
164
|
export interface MergedPatternInfo {
|
|
165
|
+
/** Id of the merged pattern; empty in a dry run, where nothing is merged. */
|
|
119
166
|
resultPatternId: string;
|
|
120
167
|
sourcePatternIds: string[];
|
|
121
168
|
mergeReason: string;
|
|
@@ -148,7 +195,15 @@ export declare class LearningConsolidationProtocol {
|
|
|
148
195
|
*/
|
|
149
196
|
gatherPatterns(): Promise<Result<DomainPatternGroup[]>>;
|
|
150
197
|
/**
|
|
151
|
-
*
|
|
198
|
+
* Every active learned pattern, read once per run.
|
|
199
|
+
*
|
|
200
|
+
* #1055: active patterns only, excluding `:creation:` provenance and
|
|
201
|
+
* `:archived:` records. #1071: read from `learning-optimization`, where
|
|
202
|
+
* LearningCoordinatorService writes them, not the backend default.
|
|
203
|
+
*/
|
|
204
|
+
private readActivePatterns;
|
|
205
|
+
/**
|
|
206
|
+
* Patterns of one domain created or used within the analysis window
|
|
152
207
|
*/
|
|
153
208
|
private getPatternsForDomain;
|
|
154
209
|
/**
|
|
@@ -183,10 +238,14 @@ export declare class LearningConsolidationProtocol {
|
|
|
183
238
|
* Get reason for pattern removal
|
|
184
239
|
*/
|
|
185
240
|
private getRemovalReason;
|
|
241
|
+
/** True while a pattern is too new for the retention and trim rules. */
|
|
242
|
+
private isInGracePeriod;
|
|
186
243
|
/**
|
|
187
|
-
* Archive
|
|
244
|
+
* Archive the selected patterns (soft delete in `learning-optimization`,
|
|
245
|
+
* #1071). Only the selected patterns are touched, and a dry run touches
|
|
246
|
+
* none. Counts are logged per domain.
|
|
188
247
|
*/
|
|
189
|
-
private
|
|
248
|
+
private archivePatterns;
|
|
190
249
|
/**
|
|
191
250
|
* Trim patterns to max allowed per domain
|
|
192
251
|
*/
|