agentic-qe 3.15.8 → 3.15.9
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 +183 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/agents/claim-verifier/claim-verifier-service.js +13 -8
- package/dist/bridge/captured-experience-bridge.js +12 -13
- package/dist/cli/bundle.js +6 -6
- package/dist/cli/chunks/adapter-R2Q4QGXQ.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-W3V5P7LE.js → agent-booster-wasm-427FRKWG.js} +2 -2
- package/dist/cli/chunks/{agent-handler-2NQFHAWE.js → agent-handler-RIYHTHVZ.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-457ECHHK.js → agent-memory-branch-WSUCUHOO.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-3RENLQWP.js +2 -0
- package/dist/cli/chunks/{arena-JV3WSEHU.js → arena-KRIBMIXX.js} +2 -2
- package/dist/cli/chunks/{arena-IYBQ3GPY.js → arena-YAJZX6MC.js} +4 -4
- package/dist/cli/chunks/{audit-5OS3T3K6.js → audit-7ZNOXWP3.js} +3 -3
- package/dist/cli/chunks/base-67DXSAYM.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-IQKBFVAO.js → better-sqlite3-ZQAT4I6H.js} +2 -2
- package/dist/cli/chunks/{brain-handler-KA3SGAFM.js → brain-handler-452WCPZC.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-QZDU2VOQ.js → branch-enumerator-IJFXJRPN.js} +2 -2
- package/dist/cli/chunks/{browser-ZL7OLKJQ.js → browser-CT3MTV6G.js} +2 -2
- package/dist/cli/chunks/browser-workflow-NDXRROWZ.js +2 -0
- package/dist/cli/chunks/{chunk-IJSFZO7P.js → chunk-2BA45H64.js} +2 -2
- package/dist/cli/chunks/{chunk-6GIC2263.js → chunk-2HL3UM5P.js} +2 -2
- package/dist/cli/chunks/{chunk-KVMKYUOE.js → chunk-2I2UPJS7.js} +2 -2
- package/dist/cli/chunks/{chunk-22DOS3PM.js → chunk-2TDIS6YK.js} +2 -2
- package/dist/cli/chunks/{chunk-5MBNRTT5.js → chunk-2URBI52G.js} +2 -2
- package/dist/cli/chunks/{chunk-A6GCO6ZU.js → chunk-2XITOPYV.js} +2 -2
- package/dist/cli/chunks/{chunk-I77D65X5.js → chunk-2YH62JCN.js} +2 -2
- package/dist/cli/chunks/{chunk-2JCLACCS.js → chunk-32UTLDNY.js} +2 -2
- package/dist/cli/chunks/{chunk-UTNKMPTC.js → chunk-37BIGMJI.js} +1 -1
- package/dist/cli/chunks/{chunk-767SR7WH.js → chunk-3CJCROMW.js} +2 -2
- package/dist/cli/chunks/{chunk-LVHZK7GW.js → chunk-3LYU7BLY.js} +2 -2
- package/dist/cli/chunks/{chunk-5DZDLOY6.js → chunk-47TYABPD.js} +3 -3
- package/dist/cli/chunks/{chunk-SWY6KGMF.js → chunk-47V7FQGX.js} +2 -2
- package/dist/cli/chunks/{chunk-KMZW2P3R.js → chunk-4JCY45KV.js} +2 -2
- package/dist/cli/chunks/{chunk-D4IBIMWI.js → chunk-4SUOVLJ6.js} +2 -2
- package/dist/cli/chunks/{chunk-J7RCI25Q.js → chunk-4URT6JO2.js} +1 -1
- package/dist/cli/chunks/{chunk-SHEVM5PF.js → chunk-4V27J6YN.js} +2 -2
- package/dist/cli/chunks/{chunk-JWPYMRIX.js → chunk-4W4DYVSH.js} +1 -1
- package/dist/cli/chunks/chunk-55HRSNGN.js +2 -0
- package/dist/cli/chunks/{chunk-R2NHGESM.js → chunk-5D2I7JUP.js} +2 -2
- package/dist/cli/chunks/{chunk-GGSTLKY5.js → chunk-5JWGCIQW.js} +1 -1
- package/dist/cli/chunks/chunk-5LAAZLUC.js +4 -0
- package/dist/cli/chunks/{chunk-YNQPHRUZ.js → chunk-5NS3USRW.js} +1 -1
- package/dist/cli/chunks/{chunk-4YUBWU3E.js → chunk-6EPHNJTL.js} +1 -1
- package/dist/cli/chunks/{chunk-ZBI7PJFX.js → chunk-6OOYIO3W.js} +2 -2
- package/dist/cli/chunks/{chunk-ST7ASEJO.js → chunk-6PXA2BQJ.js} +58 -58
- package/dist/cli/chunks/{chunk-LPSMVBB3.js → chunk-6YL6JOQB.js} +2 -2
- package/dist/cli/chunks/{chunk-DY37YMMQ.js → chunk-72AMFDC7.js} +1 -1
- package/dist/cli/chunks/{chunk-OWBFVAEH.js → chunk-763SUL4B.js} +2 -2
- package/dist/cli/chunks/{chunk-4GYFONJB.js → chunk-7DMA5NYL.js} +1 -1
- package/dist/cli/chunks/{chunk-4GUVVGJX.js → chunk-7JKB3Q7O.js} +1 -1
- package/dist/cli/chunks/{chunk-DN3AKAPY.js → chunk-7KII4CQG.js} +2 -2
- package/dist/cli/chunks/{chunk-VKFVJCIH.js → chunk-7QGYJ5OY.js} +1 -1
- package/dist/cli/chunks/{chunk-HNGNRIZZ.js → chunk-7QTB5VJZ.js} +2 -2
- package/dist/cli/chunks/{chunk-GSOK4M6V.js → chunk-7X2Y727E.js} +1 -1
- package/dist/cli/chunks/{chunk-PZ7FJ4UG.js → chunk-A4RU67VX.js} +2 -2
- package/dist/cli/chunks/{chunk-VWSGWYRB.js → chunk-A6YIH4C4.js} +2 -2
- package/dist/cli/chunks/{chunk-4I35ARWW.js → chunk-ABFDB4X3.js} +1 -1
- package/dist/cli/chunks/{chunk-NQDYOF35.js → chunk-AJ4YDSOI.js} +2 -2
- package/dist/cli/chunks/{chunk-CDLG3Q2O.js → chunk-AOFO4N32.js} +2 -2
- package/dist/cli/chunks/{chunk-WAWKAYPY.js → chunk-AQTVVLNP.js} +1 -1
- package/dist/cli/chunks/chunk-AR2E4B7K.js +6 -0
- package/dist/cli/chunks/{chunk-HXCGV5UJ.js → chunk-AVB5QY2Q.js} +2 -2
- package/dist/cli/chunks/{chunk-JFWQFB3S.js → chunk-BHKXMIWX.js} +2 -2
- package/dist/cli/chunks/{chunk-BEVWCF3Q.js → chunk-BXO536GT.js} +3 -3
- package/dist/cli/chunks/{chunk-IMSRWNWF.js → chunk-C6RTMTEH.js} +1 -1
- package/dist/cli/chunks/{chunk-UKKFZJME.js → chunk-CTZJUV5I.js} +1 -1
- package/dist/cli/chunks/{chunk-MV4S3TEC.js → chunk-D6XVGFTI.js} +2 -2
- package/dist/cli/chunks/{chunk-5YOO5QSE.js → chunk-DDPPSSHW.js} +1 -1
- package/dist/cli/chunks/{chunk-NHOMVBCI.js → chunk-DGTLJNJH.js} +2 -2
- package/dist/cli/chunks/{chunk-NWFBF3KT.js → chunk-DINZR5CF.js} +1 -1
- package/dist/cli/chunks/{chunk-RG42LDOB.js → chunk-EFBLP43U.js} +2 -2
- package/dist/cli/chunks/chunk-ETG7O5E5.js +5 -0
- package/dist/cli/chunks/{chunk-KNHLOANK.js → chunk-F2SQPP6U.js} +2 -2
- package/dist/cli/chunks/{chunk-62T7U25U.js → chunk-F3PQZX44.js} +1 -1
- package/dist/cli/chunks/{chunk-X3HM7SV4.js → chunk-F4JYIRW2.js} +2 -2
- package/dist/cli/chunks/{chunk-NZATJ2C6.js → chunk-FJ4VTLLK.js} +2 -2
- package/dist/cli/chunks/{chunk-TMNEK7TP.js → chunk-FL3OYGCS.js} +2 -2
- package/dist/cli/chunks/{chunk-HI6OBDDY.js → chunk-FLASM2XB.js} +2 -2
- package/dist/cli/chunks/{chunk-GENNJRNK.js → chunk-FV3NHVC7.js} +22 -22
- package/dist/cli/chunks/{chunk-PICEGWGB.js → chunk-FV7VAG74.js} +1 -1
- package/dist/cli/chunks/{chunk-PWA6XBW4.js → chunk-G3BKZNFL.js} +5 -5
- package/dist/cli/chunks/{chunk-T2TDTBFV.js → chunk-GBUIG3FS.js} +1 -1
- package/dist/cli/chunks/{chunk-QFYUZYRA.js → chunk-GCWSX2NY.js} +4 -4
- package/dist/cli/chunks/{chunk-KJNUETCB.js → chunk-GII5WVAK.js} +1 -1
- package/dist/cli/chunks/{chunk-YVWMJZ6O.js → chunk-GKPQ2GRR.js} +2 -2
- package/dist/cli/chunks/chunk-GR3JYE5A.js +2 -0
- package/dist/cli/chunks/{chunk-CQ5G64EA.js → chunk-H3KBIWTO.js} +2 -2
- package/dist/cli/chunks/{chunk-V4QJ3MMT.js → chunk-HAROIAJE.js} +1 -1
- package/dist/cli/chunks/{chunk-OJWEZYLR.js → chunk-HCYQHWI2.js} +2 -2
- package/dist/cli/chunks/{chunk-FAYXES7R.js → chunk-HGTWAZWU.js} +2 -2
- package/dist/cli/chunks/{chunk-LHRVSK44.js → chunk-HTZJSQ3C.js} +2 -2
- package/dist/cli/chunks/{chunk-DAFMHM64.js → chunk-HWK5L7IJ.js} +2 -2
- package/dist/cli/chunks/{chunk-K5R3WUJP.js → chunk-HZ5NC6U5.js} +1 -1
- package/dist/cli/chunks/{chunk-Y5ZBF7MA.js → chunk-I6S35FRO.js} +2 -2
- package/dist/cli/chunks/{chunk-UDCYQLTD.js → chunk-ICP2ORGI.js} +2 -2
- package/dist/cli/chunks/{chunk-KMVFBYJO.js → chunk-IFEIY3NQ.js} +2 -2
- package/dist/cli/chunks/{chunk-NW7HTOSN.js → chunk-J3DTDJDT.js} +2 -2
- package/dist/cli/chunks/chunk-J3WGK22W.js +2 -0
- package/dist/cli/chunks/{chunk-5ONJ7AV6.js → chunk-J5KNRVXR.js} +1 -1
- package/dist/cli/chunks/{chunk-G77Q22EN.js → chunk-JAV5WPSY.js} +2 -2
- package/dist/cli/chunks/{chunk-VVK4ECVJ.js → chunk-JEP4ULR6.js} +2 -2
- package/dist/cli/chunks/{chunk-TC52M542.js → chunk-JK2ME6IT.js} +2 -2
- package/dist/cli/chunks/chunk-JNNZK7KH.js +2 -0
- package/dist/cli/chunks/{chunk-NLYUC63R.js → chunk-JP4P3P3D.js} +2 -2
- package/dist/cli/chunks/{chunk-BTMEOZYY.js → chunk-JUVHZG7I.js} +1 -1
- package/dist/cli/chunks/{chunk-PUYQ6EKC.js → chunk-JWGRWMZP.js} +2 -2
- package/dist/cli/chunks/{chunk-OCLAMZJG.js → chunk-K5DJXMAA.js} +2 -2
- package/dist/cli/chunks/{chunk-X7ZQIFES.js → chunk-KFUUIAR4.js} +2 -2
- package/dist/cli/chunks/chunk-KHSRIPBP.js +180 -0
- package/dist/cli/chunks/{chunk-U3BWBP6B.js → chunk-KIKWJM6J.js} +2 -2
- package/dist/cli/chunks/{chunk-MUDBF2JC.js → chunk-KIXYKUCI.js} +1 -1
- package/dist/cli/chunks/{chunk-P4UT4LBE.js → chunk-KLGYIEJK.js} +3 -3
- package/dist/cli/chunks/{chunk-G6CLO74Q.js → chunk-KR3M44CF.js} +3 -3
- package/dist/cli/chunks/chunk-KTSLTZSG.js +2 -0
- package/dist/cli/chunks/{chunk-FJAO4UX2.js → chunk-KVBEGOJE.js} +2 -2
- package/dist/cli/chunks/{chunk-BLZEOGQE.js → chunk-L42JPFCC.js} +2 -2
- package/dist/cli/chunks/{chunk-ZOVAZTXE.js → chunk-LCJTEUDC.js} +370 -370
- package/dist/cli/chunks/{chunk-JLTGO5BB.js → chunk-LEAKYZ37.js} +2 -2
- package/dist/cli/chunks/{chunk-RSMPJWQH.js → chunk-LMU5DUDK.js} +1 -1
- package/dist/cli/chunks/{chunk-FEN2DHFM.js → chunk-MZS32SYS.js} +1 -1
- package/dist/cli/chunks/{chunk-J7FLNP5L.js → chunk-N3KEY4XJ.js} +2 -2
- package/dist/cli/chunks/{chunk-ZG7UKWBB.js → chunk-N3NP6PTT.js} +2 -2
- package/dist/cli/chunks/{chunk-2DPHFCMW.js → chunk-N5PDFGCQ.js} +2 -2
- package/dist/cli/chunks/{chunk-BQUIZ5QT.js → chunk-NDKLQW6N.js} +2 -2
- package/dist/cli/chunks/{chunk-52YRSWPS.js → chunk-NHZIWIQZ.js} +2 -2
- package/dist/cli/chunks/{chunk-ZOHS32SI.js → chunk-NTAD5UX4.js} +2 -2
- package/dist/cli/chunks/{chunk-7H3GNRNA.js → chunk-O3JLOVZX.js} +2 -2
- package/dist/cli/chunks/{chunk-7XGM7Q2N.js → chunk-OCESWNAZ.js} +3 -3
- package/dist/cli/chunks/{chunk-7SLEUVPZ.js → chunk-OG2UI6A3.js} +2 -2
- package/dist/cli/chunks/{chunk-4TZLZRZ4.js → chunk-OXTFSIGN.js} +1 -1
- package/dist/cli/chunks/{chunk-2QRGIEQV.js → chunk-OXZLKP6C.js} +1 -1
- package/dist/cli/chunks/{chunk-FEPFXXI7.js → chunk-P2CXVNKK.js} +2 -2
- package/dist/cli/chunks/{chunk-P2EA62YS.js → chunk-P73W2K7T.js} +1 -1
- package/dist/cli/chunks/{chunk-V7VZSNDK.js → chunk-PBZI2ZPV.js} +3 -3
- package/dist/cli/chunks/{chunk-MMY52Y6R.js → chunk-PMCRCEW5.js} +2 -2
- package/dist/cli/chunks/{chunk-FWXNFPLS.js → chunk-PVIA2FPD.js} +2 -2
- package/dist/cli/chunks/{chunk-NF63NHJH.js → chunk-PX2B5TS2.js} +2 -2
- package/dist/cli/chunks/{chunk-SFPGLUXS.js → chunk-Q3JVJRVJ.js} +1 -1
- package/dist/cli/chunks/{chunk-XOOBLZXR.js → chunk-QQ5SZH4D.js} +2 -2
- package/dist/cli/chunks/{chunk-KITKQUBX.js → chunk-QTVWUQTB.js} +1 -1
- package/dist/cli/chunks/{chunk-2UN4JOTN.js → chunk-REUFWGMA.js} +2 -2
- package/dist/cli/chunks/{chunk-CQ3SBRDP.js → chunk-SNBYYO6F.js} +2 -2
- package/dist/cli/chunks/{chunk-A2UGPKCS.js → chunk-SVHUYVUR.js} +2 -2
- package/dist/cli/chunks/{chunk-PIEKGKW6.js → chunk-THAY7WHO.js} +2 -2
- package/dist/cli/chunks/{chunk-WLXGUQOZ.js → chunk-TNMQVG4A.js} +2 -2
- package/dist/cli/chunks/{chunk-2GSAAUW3.js → chunk-TSYQDRNK.js} +1 -1
- package/dist/cli/chunks/{chunk-7DHSHD5B.js → chunk-TUYJ53V4.js} +2 -2
- package/dist/cli/chunks/{chunk-U7CIY3YR.js → chunk-UNUTC6TX.js} +2 -2
- package/dist/cli/chunks/{chunk-CRUQ6RXU.js → chunk-UOJBR4J3.js} +2 -2
- package/dist/cli/chunks/{chunk-3LFLO2WK.js → chunk-UOWHE77F.js} +2 -2
- package/dist/cli/chunks/{chunk-O4RRVTXN.js → chunk-UYLYMWV5.js} +2 -2
- package/dist/cli/chunks/{chunk-D4O3TJI7.js → chunk-V5PXQSFS.js} +2 -2
- package/dist/cli/chunks/{chunk-VQRBBR27.js → chunk-VCMINU7K.js} +2 -2
- package/dist/cli/chunks/{chunk-3N627QRU.js → chunk-VQHVHVSF.js} +2 -2
- package/dist/cli/chunks/{chunk-J6LL25QJ.js → chunk-VRGCKBF7.js} +2 -2
- package/dist/cli/chunks/{chunk-VWRNG3UK.js → chunk-VU2EL424.js} +1 -1
- package/dist/cli/chunks/{chunk-KNQUHGNY.js → chunk-VXZJOKOX.js} +2 -2
- package/dist/cli/chunks/{chunk-EUVSSIGR.js → chunk-VYLM2YV5.js} +3 -3
- package/dist/cli/chunks/{chunk-PJGQ2TKN.js → chunk-W32YU3VI.js} +2 -2
- package/dist/cli/chunks/{chunk-YRH7KMTU.js → chunk-W5VJRDDG.js} +2 -2
- package/dist/cli/chunks/{chunk-PPIM7B5G.js → chunk-WGDR2KIR.js} +2 -2
- package/dist/cli/chunks/{chunk-2ZRNXEVI.js → chunk-WRRCQ2UE.js} +1 -1
- package/dist/cli/chunks/{chunk-7C6FMLQR.js → chunk-XDBD4GXO.js} +2 -2
- package/dist/cli/chunks/{chunk-W5A36V3Z.js → chunk-XOLDMK23.js} +2 -2
- package/dist/cli/chunks/{chunk-DCYUHCPK.js → chunk-XOVNZT7F.js} +1 -1
- package/dist/cli/chunks/{chunk-4C7KE2EL.js → chunk-XQ3DDY7X.js} +2 -2
- package/dist/cli/chunks/{chunk-K4N2MBCE.js → chunk-XUIA5KMS.js} +2 -2
- package/dist/cli/chunks/{chunk-YUP3APSN.js → chunk-XWIUFYM3.js} +1 -1
- package/dist/cli/chunks/{chunk-SJMZZMHP.js → chunk-XYCKHYBM.js} +2 -2
- package/dist/cli/chunks/{chunk-4NTLGGXO.js → chunk-XZJ2O3VC.js} +1 -1
- package/dist/cli/chunks/{chunk-UQLAN5TX.js → chunk-YRBBBUJX.js} +5 -5
- package/dist/cli/chunks/{chunk-XZQVC3GD.js → chunk-YZGSJG34.js} +1 -1
- package/dist/cli/chunks/{chunk-7CVMT64N.js → chunk-YZYDTABJ.js} +1 -1
- package/dist/cli/chunks/{chunk-4C3RYBTT.js → chunk-ZANDSVCK.js} +2 -2
- package/dist/cli/chunks/{chunk-6E7EOHMN.js → chunk-ZBDRLF43.js} +2 -2
- package/dist/cli/chunks/{chunk-UTFMMZ57.js → chunk-ZVSLCEVC.js} +3 -3
- package/dist/cli/chunks/{chunk-DKFSCJEF.js → chunk-ZXBCCO2H.js} +2 -2
- package/dist/cli/chunks/{ci-7NUCRGWO.js → ci-7SGRCFPS.js} +2 -2
- package/dist/cli/chunks/{ci-config-VQVECCFI.js → ci-config-MX3URPZA.js} +2 -2
- package/dist/cli/chunks/{ci-output-P7GQ6TKF.js → ci-output-M47NJY6D.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-5YP6N6HE.js → circuit-breaker-5GAK45SW.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-W5H7CMU6.js → claude-flow-setup-YXYSRH4Y.js} +2 -2
- package/dist/cli/chunks/client-ZP3CTVRF.js +2 -0
- package/dist/cli/chunks/{cline-installer-OYANSZ54.js → cline-installer-DLJ5QD5N.js} +2 -2
- package/dist/cli/chunks/{code-OMT4UEZI.js → code-ONKLMVQ2.js} +25 -24
- package/dist/cli/chunks/{code-index-extractor-M2JEWKNF.js → code-index-extractor-2232LGZN.js} +2 -2
- package/dist/cli/chunks/{codex-installer-YBS6N5O3.js → codex-installer-UOWLYCMH.js} +2 -2
- package/dist/cli/chunks/{completions-U7GS5RG6.js → completions-MHX7GCC7.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-QSXPIUIU.js → complexity-analyzer-43ZUJKZU.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-W5TTT743.js → continuedev-installer-6Q5JR4FF.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-KC2RT24C.js → copilot-installer-CZUMVHSI.js} +2 -2
- package/dist/cli/chunks/core-handlers-JSRXQWPE.js +2 -0
- package/dist/cli/chunks/{cost-tracker-OQPVR6V4.js → cost-tracker-VS5ZW3XN.js} +2 -2
- package/dist/cli/chunks/{coverage-TCO2A2NX.js → coverage-VWKTWZ6D.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-7UKODQWG.js +2 -0
- package/dist/cli/chunks/{cursor-installer-MH7GWD4L.js → cursor-installer-YIFEMORH.js} +2 -2
- package/dist/cli/chunks/{daemon-UJEARJZ2.js → daemon-SHWJSJW5.js} +7 -7
- package/dist/cli/chunks/daemon-YIFT46FH.js +34 -0
- package/dist/cli/chunks/{dag-attention-scheduler-F3SUJU5O.js → dag-attention-scheduler-TCC2WM46.js} +2 -2
- package/dist/cli/chunks/{detect-5QTCRB32.js → detect-IGTWSQMA.js} +2 -2
- package/dist/cli/chunks/{dist-node-XKZPHDBO.js → dist-node-TCOTJVQX.js} +2 -2
- package/dist/cli/chunks/{domain-handler-V3UEADKW.js → domain-handler-55ZVYODR.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-7PES4UHZ.js → domain-plugins-GJRWOHQP.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-NF7UJW7B.js → domain-transfer-6EF75EKU.js} +2 -2
- package/dist/cli/chunks/dream-UDLM6M55.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-D2HWORHF.js → embed-and-insert-pattern-XAMNIKQL.js} +2 -2
- package/dist/cli/chunks/{eval-UF2UBAUC.js → eval-GO22R4OZ.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-2OUCEHHM.js → experience-capture-middleware-F2BRMJ3Y.js} +3 -3
- package/dist/cli/chunks/{fast-paths-KV5DKKHC.js → fast-paths-6RGPYALD.js} +2 -2
- package/dist/cli/chunks/{feature-flags-6YWMTNO5.js → feature-flags-MIWQIOHU.js} +2 -2
- package/dist/cli/chunks/{feature-flags-MTW6NMR3.js → feature-flags-ZGS3KLPH.js} +2 -2
- package/dist/cli/chunks/file-discovery-THWOUQ7Z.js +2 -0
- package/dist/cli/chunks/fleet-ADL57COA.js +44 -0
- package/dist/cli/chunks/{gnn-wrapper-52V6ANOY.js → gnn-wrapper-ALBJVW6T.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-X7NHNRC7.js → heartbeat-handler-ZMM53NDY.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-HGOC5KH3.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-EPSA6AP7.js +2 -0
- package/dist/cli/chunks/hnsw-index-RMFOPYGY.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-DZBE3KMK.js → hnsw-legacy-bridge-RYUJPA7B.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-2AWWUJAZ.js → hnswlib-node-XM6XF3YV.js} +2 -2
- package/dist/cli/chunks/{hooks-XLPVROL3.js → hooks-X62O7TJO.js} +10 -10
- package/dist/cli/chunks/hybrid-backend-NZ3G4WBX.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-6TI7YP6P.js → hypergraph-engine-ZBWUPTVD.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-DBIBBOXS.js → hypergraph-handler-DUMF6SJV.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-WZC6NHFP.js +2 -0
- package/dist/cli/chunks/{init-guard-OSO6MIDD.js → init-guard-S4I2R46S.js} +2 -2
- package/dist/cli/chunks/{init-handler-7S7IHMUF.js → init-handler-L4KJHVWS.js} +6 -6
- package/dist/cli/chunks/init-wizard-422UZYQ5.js +2 -0
- package/dist/cli/chunks/kernel-N7PJ6FCE.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-2KBRFXMA.js → kilocode-installer-GNNB5FCZ.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-5VFR4OQZ.js → kiro-installer-HR6ZAH7T.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-SZCVQF37.js +2 -0
- package/dist/cli/chunks/{learning-G5NHL3DV.js → learning-4IEEOHJS.js} +3 -3
- package/dist/cli/chunks/{llm-router-4EAPPMHS.js → llm-router-ZFMORP36.js} +4 -4
- package/dist/cli/chunks/llm-router-service-4DE5WDUZ.js +2 -0
- package/dist/cli/chunks/{load-UYMZPEY6.js → load-ZM43WGDO.js} +2 -2
- package/dist/cli/chunks/load-test-POMIF4Q4.js +2 -0
- package/dist/cli/chunks/{mcp-NOTDZBW5.js → mcp-CRZKZE37.js} +2 -2
- package/dist/cli/chunks/{memory-QL53YIHP.js → memory-W5FZGVAD.js} +5 -5
- package/dist/cli/chunks/memory-backend-4P6AHSOY.js +2 -0
- package/dist/cli/chunks/memory-handlers-NK6NV3GE.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-PDDDXF2B.js → multi-model-executor-SXXGAQ2G.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-75D2SKOT.js → opencode-installer-PIRBUAB5.js} +2 -2
- package/dist/cli/chunks/{orchestrator-3WIZBV4T.js → orchestrator-H5SQCQTB.js} +11 -10
- package/dist/cli/chunks/pattern-null-store-CCHQHGQG.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-TEX2JGHA.js → pattern-usage-recorder-XZTWDI2T.js} +2 -2
- package/dist/cli/chunks/{pipeline-7ATPA6LU.js → pipeline-5LMLBIJ7.js} +2 -2
- package/dist/cli/chunks/{platform-WPSKRJE7.js → platform-KJDABL5C.js} +2 -2
- package/dist/cli/chunks/{plugin-UUFOVVMU.js → plugin-V4KSBVVM.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-PDFSYWKZ.js → prime-radiant-advanced-wasm-JDHTKQAT.js} +2 -2
- package/dist/cli/chunks/project-root-X72FSM2F.js +2 -0
- package/dist/cli/chunks/protocol-executor-QW6XN6QN.js +2 -0
- package/dist/cli/chunks/{protocol-handler-3VRYRIQB.js → protocol-handler-BNRONTQV.js} +2 -2
- package/dist/cli/chunks/{prove-2NAUROGF.js → prove-ELLL6XMX.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-ZD3WF647.js +2 -0
- package/dist/cli/chunks/{quality-ZIEI2WGA.js → quality-NH2QA4D4.js} +2 -2
- package/dist/cli/chunks/{quality-gate-KWJO4SWQ.js → quality-gate-JTKLF7GW.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-S4U4MKK2.js +2 -0
- package/dist/cli/chunks/{real-embeddings-TSZ4UIAE.js → real-embeddings-J3KCKLPB.js} +2 -2
- package/dist/cli/chunks/{ref-validation-DWFFRETJ.js → ref-validation-HNXQRP4F.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-XTZHLUBO.js → roocode-installer-COJ6CX6S.js} +2 -2
- package/dist/cli/chunks/router-CXZKOOTR.js +2 -0
- package/dist/cli/chunks/routing-feedback-IYFANYY5.js +2 -0
- package/dist/cli/chunks/{routing-handler-GG525TDM.js → routing-handler-WM33ZILE.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-QKRJDM7Z.js → ruvector-commands-BBLXEA7A.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-HCLQ5WUQ.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-XCLUWOO3.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-FF52OS6Q.js → rvf-migration-coordinator-P7H6HCAG.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-MRT5H3IP.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-M6DXTAZ4.js → rvf-store-integrity-R5SPVRFP.js} +2 -2
- package/dist/cli/chunks/safe-db-WFODRGVZ.js +2 -0
- package/dist/cli/chunks/schedule-RO55OQXG.js +2 -0
- package/dist/cli/chunks/scheduler-XXMJCH24.js +2 -0
- package/dist/cli/chunks/{security-EHXSW22U.js → security-AUDTRX3I.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-6EH7UVJL.js → shared-rvf-adapter-PVDGBGI2.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-WML274E7.js → shared-rvf-dual-writer-LZ2GMSS2.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-AWRIS4MK.js +2 -0
- package/dist/cli/chunks/{standalone-memory-C7QKAXS4.js → standalone-memory-XNOAI4G4.js} +2 -2
- package/dist/cli/chunks/{status-handler-VLI7MRLM.js → status-handler-K72XZE4T.js} +2 -2
- package/dist/cli/chunks/{structural-health-3LPG6MQN.js → structural-health-NF3YY7U5.js} +2 -2
- package/dist/cli/chunks/{sync-4IMMQEPT.js → sync-UVXA6CT2.js} +2 -2
- package/dist/cli/chunks/{sync-JFJEJBVK.js → sync-VBD5Y3E2.js} +2 -2
- package/dist/cli/chunks/{task-handler-IED3K6E4.js → task-handler-24S3WFVJ.js} +13 -7
- package/dist/cli/chunks/task-handlers-GUYW2EPJ.js +9 -0
- package/dist/cli/chunks/{test-GPKT3CKZ.js → test-XFSGQELD.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-Z42XXZP6.js → test-scheduling-VYUQ4CDE.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-HMM3AHXM.js → token-bootstrap-EDK6FNQ3.js} +2 -2
- package/dist/cli/chunks/{token-usage-6Y2ERYIY.js → token-usage-VLQ6WO2L.js} +2 -2
- package/dist/cli/chunks/{transformers-MB63T2XO.js → transformers-TOFMWWNM.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-56GDQCMR.js → tree-sitter-wasm-parser-MI3NZKUD.js} +2 -2
- package/dist/cli/chunks/{types-J4J6QV3I.js → types-JTWLBAZJ.js} +2 -2
- package/dist/cli/chunks/unified-memory-6JWHV6EF.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-4UANU6NU.js +2 -0
- package/dist/cli/chunks/unified-persistence-KGGNA46H.js +2 -0
- package/dist/cli/chunks/{upgrade-U4XU7LFM.js → upgrade-4ABM72T4.js} +2 -2
- package/dist/cli/chunks/{validate-B57HA4YK.js → validate-UDJCWKXI.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-UPPA4M6T.js → validate-swarm-TODOUWNN.js} +2 -2
- package/dist/cli/chunks/visual-security-6VZNQLH7.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-GDZMUKOZ.js → web-tree-sitter-WBMAJPM5.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-VJRWCHXP.js → windsurf-installer-BTT53TUL.js} +2 -2
- package/dist/cli/chunks/witness-chain-AKKHWEWU.js +2 -0
- package/dist/cli/chunks/{witness-chain-LFASSMZK.js → witness-chain-TATPXQRK.js} +2 -2
- package/dist/cli/chunks/{witness-chain-repair-TPHN4DXN.js → witness-chain-repair-2HGJGE7O.js} +2 -2
- package/dist/cli/chunks/{witness-chain-verifier-Z23FVABW.js → witness-chain-verifier-FRY3LMGH.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-745MJ7WO.js → witness-key-manager-X7QHQQWL.js} +2 -2
- package/dist/cli/chunks/{workflow-T245QNQM.js → workflow-QMZPAWQW.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-4GAW7HNZ.js +2 -0
- package/dist/cli/chunks/{wrappers-WCAYIQUX.js → wrappers-ZD5NBHYI.js} +2 -2
- package/dist/cli/commands/code.js +8 -0
- package/dist/cli/commands/daemon.js +8 -0
- package/dist/cli/commands/fleet.js +14 -9
- package/dist/cli/handlers/task-handler.js +21 -1
- package/dist/coordination/handlers/code-intelligence-handlers.js +14 -2
- package/dist/coordination/handlers/coverage-collection.js +9 -10
- package/dist/coordination/handlers/coverage-handlers.js +21 -3
- 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/test-execution-handlers.js +32 -5
- package/dist/coordination/index.d.ts +2 -2
- package/dist/coordination/index.js +1 -1
- package/dist/coordination/protocols/learning-consolidation-archive.d.ts +39 -0
- package/dist/coordination/protocols/learning-consolidation-archive.js +57 -0
- package/dist/coordination/protocols/learning-consolidation.d.ts +38 -3
- package/dist/coordination/protocols/learning-consolidation.js +128 -50
- package/dist/coordination/queen-coordinator.d.ts +12 -1
- package/dist/coordination/queen-coordinator.js +24 -1
- package/dist/coordination/queen-event-handlers.js +2 -1
- package/dist/coordination/queen-lifecycle.js +9 -0
- package/dist/coordination/queen-task-management.js +113 -40
- package/dist/coordination/queen-types.d.ts +10 -0
- package/dist/coordination/queen-types.js +8 -0
- 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/domains/code-intelligence/coordinator.js +35 -9
- package/dist/domains/code-intelligence/index-path-guard.d.ts +49 -0
- package/dist/domains/code-intelligence/index-path-guard.js +125 -0
- package/dist/domains/code-intelligence/interfaces.d.ts +12 -0
- 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/contract-testing/coordinator.js +3 -1
- package/dist/domains/defect-intelligence/services/defect-predictor.js +4 -2
- package/dist/domains/learning-optimization/active-patterns.d.ts +12 -12
- package/dist/domains/learning-optimization/active-patterns.js +15 -12
- 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 +43 -102
- package/dist/domains/learning-optimization/index.d.ts +1 -1
- package/dist/domains/learning-optimization/interfaces.d.ts +56 -4
- package/dist/domains/learning-optimization/plugin.js +11 -1
- package/dist/domains/learning-optimization/reward-source.d.ts +37 -0
- package/dist/domains/learning-optimization/reward-source.js +58 -0
- package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +4 -4
- package/dist/domains/learning-optimization/services/learning-coordinator.js +59 -23
- 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/test-execution/interfaces.d.ts +16 -0
- package/dist/domains/test-execution/services/runner-test-cases.d.ts +21 -0
- package/dist/domains/test-execution/services/runner-test-cases.js +69 -0
- package/dist/domains/test-execution/services/test-executor.d.ts +5 -0
- package/dist/domains/test-execution/services/test-executor.js +24 -2
- 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 +2 -1
- 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/learning/dream/dream-insights-pruner.d.ts +18 -4
- package/dist/learning/dream/dream-insights-pruner.js +99 -11
- package/dist/learning/skill-validation-learner.d.ts +2 -0
- package/dist/learning/skill-validation-learner.js +29 -21
- package/dist/mcp/background-workers.js +8 -2
- package/dist/mcp/bundle.js +507 -483
- package/dist/mcp/handlers/domain-handler-configs.d.ts +14 -0
- package/dist/mcp/handlers/domain-handler-configs.js +68 -30
- package/dist/mcp/handlers/handler-factory.js +1 -0
- package/dist/mcp/handlers/task-handlers.js +37 -1
- 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 +8 -3
- package/dist/mcp/tools/learning-optimization/optimize.d.ts +34 -3
- package/dist/mcp/tools/learning-optimization/optimize.js +106 -70
- package/dist/memory/crdt/lww-register.js +11 -1
- 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/llm/cache.js +4 -1
- package/dist/shared/security/compliance-patterns.js +3 -1
- package/dist/shared/test-runner-process.d.ts +26 -0
- package/dist/shared/test-runner-process.js +91 -0
- 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 +42 -0
- package/dist/shared/utils/namespaced-search.js +53 -0
- 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/workers/daemon.d.ts +2 -0
- package/dist/workers/daemon.js +10 -5
- 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/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/learning-consolidation.d.ts +1 -1
- package/dist/workers/workers/learning-consolidation.js +11 -8
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-FC4EY447.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-workflow-2IFEUAAK.js +0 -2
- package/dist/cli/chunks/chunk-6CKTLVYV.js +0 -2
- package/dist/cli/chunks/chunk-I4U7YCXG.js +0 -180
- package/dist/cli/chunks/chunk-LZWBUVCK.js +0 -5
- 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/chunk-ZWMFKZEQ.js +0 -3
- 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/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/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/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/task-handlers-FH6DNTHW.js +0 -9
- 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/workflow-orchestrator-ZNWEUYBN.js +0 -2
|
@@ -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
|
// ============================================================================
|
|
@@ -0,0 +1,39 @@
|
|
|
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
|
+
*/
|
|
18
|
+
import type { MemoryBackend } from '../../kernel/interfaces.js';
|
|
19
|
+
import type { LearnedPattern } from '../../domains/learning-optimization/interfaces.js';
|
|
20
|
+
export type ArchiveOutcome = 'archived' | 'missing' | 'failed';
|
|
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
|
+
/**
|
|
34
|
+
* Move one selected pattern to its archive key in the learning namespace.
|
|
35
|
+
*/
|
|
36
|
+
export declare function archiveSelectedPattern(memory: MemoryBackend, pattern: LearnedPattern, archivedAt?: Date): Promise<ArchiveOutcome>;
|
|
37
|
+
/** True when the pattern was created less than `graceDays` days ago. */
|
|
38
|
+
export declare function isWithinRetentionGrace(pattern: LearnedPattern, graceDays: number, now?: number): boolean;
|
|
39
|
+
//# sourceMappingURL=learning-consolidation-archive.d.ts.map
|
|
@@ -0,0 +1,57 @@
|
|
|
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
|
+
*/
|
|
18
|
+
import { LEARNING_NS, LEARNING_PATTERN_KEY_PREFIX, isActivePatternKey, } from '../../domains/learning-optimization/active-patterns.js';
|
|
19
|
+
export function emptyArchiveCounts() {
|
|
20
|
+
return { selected: 0, archived: 0, missing: 0, failed: 0 };
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Move one selected pattern to its archive key in the learning namespace.
|
|
24
|
+
*/
|
|
25
|
+
export async function archiveSelectedPattern(memory, pattern, archivedAt = new Date()) {
|
|
26
|
+
const activeKey = `${LEARNING_PATTERN_KEY_PREFIX}${pattern.id}`;
|
|
27
|
+
if (!isActivePatternKey(activeKey))
|
|
28
|
+
return 'missing';
|
|
29
|
+
const current = await memory.get(activeKey, LEARNING_NS);
|
|
30
|
+
if (!current || current.id !== pattern.id || changedSinceSelection(current, pattern))
|
|
31
|
+
return 'missing';
|
|
32
|
+
const archiveKey = `${LEARNING_PATTERN_KEY_PREFIX}archived:${pattern.id}`;
|
|
33
|
+
await memory.set(archiveKey, { ...pattern, archivedAt }, { ...LEARNING_NS, persist: true });
|
|
34
|
+
const copy = await memory.get(archiveKey, LEARNING_NS);
|
|
35
|
+
if (!copy || copy.id !== pattern.id)
|
|
36
|
+
return 'failed';
|
|
37
|
+
await memory.delete(activeKey, LEARNING_NS);
|
|
38
|
+
return 'archived';
|
|
39
|
+
}
|
|
40
|
+
/** True when the stored record's scores or last use differ from the selected snapshot. */
|
|
41
|
+
function changedSinceSelection(current, selected) {
|
|
42
|
+
const time = (value) => new Date(value).getTime();
|
|
43
|
+
return (!Object.is(current.usageCount, selected.usageCount) ||
|
|
44
|
+
!Object.is(current.confidence, selected.confidence) ||
|
|
45
|
+
!Object.is(current.successRate, selected.successRate) ||
|
|
46
|
+
!Object.is(time(current.lastUsedAt), time(selected.lastUsedAt)));
|
|
47
|
+
}
|
|
48
|
+
/** True when the pattern was created less than `graceDays` days ago. */
|
|
49
|
+
export function isWithinRetentionGrace(pattern, graceDays, now = Date.now()) {
|
|
50
|
+
if (graceDays <= 0)
|
|
51
|
+
return false;
|
|
52
|
+
const created = new Date(pattern.createdAt).getTime();
|
|
53
|
+
if (!Number.isFinite(created))
|
|
54
|
+
return false;
|
|
55
|
+
return now - created < graceDays * 24 * 60 * 60 * 1000;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=learning-consolidation-archive.js.map
|
|
@@ -7,6 +7,7 @@
|
|
|
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';
|
|
11
12
|
export interface LearningConsolidationConfig {
|
|
12
13
|
/** Minimum patterns per domain to trigger consolidation */
|
|
@@ -21,6 +22,18 @@ export interface LearningConsolidationConfig {
|
|
|
21
22
|
analysisWindowWeeks: number;
|
|
22
23
|
/** Enable cross-project transfer */
|
|
23
24
|
enableCrossProjectTransfer: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Report what would be merged and archived without writing anything
|
|
27
|
+
* (#1071). On by default: the protocol reads the real learned patterns in
|
|
28
|
+
* `learning-optimization`, so archiving them is opt-in (`dryRun: false`).
|
|
29
|
+
*/
|
|
30
|
+
dryRun: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Patterns created less than this many days ago are never archived by the
|
|
33
|
+
* retention or trim rules, so a new pattern gets time to build confidence
|
|
34
|
+
* and usage before it is judged (#1071).
|
|
35
|
+
*/
|
|
36
|
+
retentionGraceDays: number;
|
|
24
37
|
}
|
|
25
38
|
export interface LearningConsolidationStartedEvent extends DomainEvent {
|
|
26
39
|
readonly type: 'LearningConsolidationStarted';
|
|
@@ -39,6 +52,7 @@ export interface PatternConsolidatedEvent extends DomainEvent {
|
|
|
39
52
|
patternsAfterCount: number;
|
|
40
53
|
mergedPatternIds: string[];
|
|
41
54
|
removedPatternIds: string[];
|
|
55
|
+
dryRun: boolean;
|
|
42
56
|
};
|
|
43
57
|
}
|
|
44
58
|
export interface LearningConsolidationCompletedEvent extends DomainEvent {
|
|
@@ -48,6 +62,7 @@ export interface LearningConsolidationCompletedEvent extends DomainEvent {
|
|
|
48
62
|
stats: ConsolidationStats;
|
|
49
63
|
insights: WeeklyInsight[];
|
|
50
64
|
duration: number;
|
|
65
|
+
dryRun: boolean;
|
|
51
66
|
};
|
|
52
67
|
}
|
|
53
68
|
export interface TransferReadyEvent extends DomainEvent {
|
|
@@ -75,7 +90,10 @@ export interface ConsolidationStats {
|
|
|
75
90
|
domainsProcessed: number;
|
|
76
91
|
totalPatternsAnalyzed: number;
|
|
77
92
|
patternsMerged: number;
|
|
93
|
+
/** Patterns selected for removal (in a dry run, the ones that would be). */
|
|
78
94
|
patternsRemoved: number;
|
|
95
|
+
/** Selected patterns actually archived (always 0 in a dry run). */
|
|
96
|
+
patternsArchived: number;
|
|
79
97
|
patternsRetained: number;
|
|
80
98
|
knowledgeItemsUpdated: number;
|
|
81
99
|
improvementOpportunities: number;
|
|
@@ -99,6 +117,8 @@ export interface TransferablePattern {
|
|
|
99
117
|
}
|
|
100
118
|
export interface ConsolidationResult {
|
|
101
119
|
consolidationId: string;
|
|
120
|
+
/** True when nothing was merged, archived or written (#1071). */
|
|
121
|
+
dryRun: boolean;
|
|
102
122
|
startedAt: Date;
|
|
103
123
|
completedAt: Date;
|
|
104
124
|
stats: ConsolidationStats;
|
|
@@ -112,10 +132,13 @@ export interface DomainConsolidationReport {
|
|
|
112
132
|
patternsAfterCount: number;
|
|
113
133
|
mergedPatterns: MergedPatternInfo[];
|
|
114
134
|
removedPatterns: RemovedPatternInfo[];
|
|
135
|
+
/** Outcome of archiving `removedPatterns` (all zero but `selected` in a dry run). */
|
|
136
|
+
archiveCounts: ArchiveCounts;
|
|
115
137
|
topPerformingPatterns: LearnedPattern[];
|
|
116
138
|
improvementAreas: string[];
|
|
117
139
|
}
|
|
118
140
|
export interface MergedPatternInfo {
|
|
141
|
+
/** Id of the merged pattern; empty in a dry run, where nothing is merged. */
|
|
119
142
|
resultPatternId: string;
|
|
120
143
|
sourcePatternIds: string[];
|
|
121
144
|
mergeReason: string;
|
|
@@ -148,7 +171,15 @@ export declare class LearningConsolidationProtocol {
|
|
|
148
171
|
*/
|
|
149
172
|
gatherPatterns(): Promise<Result<DomainPatternGroup[]>>;
|
|
150
173
|
/**
|
|
151
|
-
*
|
|
174
|
+
* Every active learned pattern, read once per run.
|
|
175
|
+
*
|
|
176
|
+
* #1055: active patterns only, excluding `:creation:` provenance and
|
|
177
|
+
* `:archived:` records. #1071: read from `learning-optimization`, where
|
|
178
|
+
* LearningCoordinatorService writes them, not the backend default.
|
|
179
|
+
*/
|
|
180
|
+
private readActivePatterns;
|
|
181
|
+
/**
|
|
182
|
+
* Patterns of one domain created or used within the analysis window
|
|
152
183
|
*/
|
|
153
184
|
private getPatternsForDomain;
|
|
154
185
|
/**
|
|
@@ -183,10 +214,14 @@ export declare class LearningConsolidationProtocol {
|
|
|
183
214
|
* Get reason for pattern removal
|
|
184
215
|
*/
|
|
185
216
|
private getRemovalReason;
|
|
217
|
+
/** True while a pattern is too new for the retention and trim rules. */
|
|
218
|
+
private isInGracePeriod;
|
|
186
219
|
/**
|
|
187
|
-
* Archive
|
|
220
|
+
* Archive the selected patterns (soft delete in `learning-optimization`,
|
|
221
|
+
* #1071). Only the selected patterns are touched, and a dry run touches
|
|
222
|
+
* none. Counts are logged per domain.
|
|
188
223
|
*/
|
|
189
|
-
private
|
|
224
|
+
private archivePatterns;
|
|
190
225
|
/**
|
|
191
226
|
* Trim patterns to max allowed per domain
|
|
192
227
|
*/
|
|
@@ -9,7 +9,12 @@ 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
|
+
const logger = LoggerFactory.create('learning-consolidation-protocol');
|
|
13
18
|
const DEFAULT_CONFIG = {
|
|
14
19
|
minPatternsForConsolidation: 5,
|
|
15
20
|
similarityThreshold: 0.85,
|
|
@@ -17,6 +22,8 @@ const DEFAULT_CONFIG = {
|
|
|
17
22
|
minConfidenceThreshold: 0.5,
|
|
18
23
|
analysisWindowWeeks: 4,
|
|
19
24
|
enableCrossProjectTransfer: true,
|
|
25
|
+
dryRun: true,
|
|
26
|
+
retentionGraceDays: 7,
|
|
20
27
|
};
|
|
21
28
|
// ============================================================================
|
|
22
29
|
// Learning Consolidation Protocol Implementation
|
|
@@ -62,20 +69,29 @@ export class LearningConsolidationProtocol {
|
|
|
62
69
|
const domainReports = [];
|
|
63
70
|
let totalMerged = 0;
|
|
64
71
|
let totalRemoved = 0;
|
|
72
|
+
let totalArchived = 0;
|
|
65
73
|
let totalRetained = 0;
|
|
74
|
+
const dryRun = this.config.dryRun;
|
|
66
75
|
for (const domainGroup of gatheredPatterns.value) {
|
|
67
76
|
const consolidationResult = await this.consolidatePatterns(consolidationId, domainGroup);
|
|
68
77
|
if (consolidationResult.success) {
|
|
69
78
|
domainReports.push(consolidationResult.value);
|
|
70
79
|
totalMerged += consolidationResult.value.mergedPatterns.length;
|
|
71
80
|
totalRemoved += consolidationResult.value.removedPatterns.length;
|
|
81
|
+
totalArchived += consolidationResult.value.archiveCounts.archived;
|
|
72
82
|
totalRetained += consolidationResult.value.patternsAfterCount;
|
|
73
83
|
}
|
|
74
84
|
}
|
|
75
|
-
// Step 3: Update knowledge base with consolidated patterns
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
85
|
+
// Step 3: Update knowledge base with consolidated patterns (writes, so
|
|
86
|
+
// skipped in a dry run)
|
|
87
|
+
const knowledgeUpdateResult = dryRun
|
|
88
|
+
? ok(0)
|
|
89
|
+
: await this.updateKnowledgeBase(domainReports);
|
|
90
|
+
// Step 4: Prepare patterns for cross-project transfer (a dry run does
|
|
91
|
+
// not announce transfers for patterns it did not consolidate)
|
|
92
|
+
const transferResult = dryRun
|
|
93
|
+
? ok([])
|
|
94
|
+
: await this.prepareTransfer(consolidationId, domainReports);
|
|
79
95
|
// Step 5: Generate weekly insights
|
|
80
96
|
const insights = await this.generateInsights(gatheredPatterns.value, domainReports);
|
|
81
97
|
const completedAt = new Date();
|
|
@@ -85,6 +101,7 @@ export class LearningConsolidationProtocol {
|
|
|
85
101
|
totalPatternsAnalyzed: gatheredPatterns.value.reduce((sum, g) => sum + g.patterns.length, 0),
|
|
86
102
|
patternsMerged: totalMerged,
|
|
87
103
|
patternsRemoved: totalRemoved,
|
|
104
|
+
patternsArchived: totalArchived,
|
|
88
105
|
patternsRetained: totalRetained,
|
|
89
106
|
knowledgeItemsUpdated: knowledgeUpdateResult.success
|
|
90
107
|
? knowledgeUpdateResult.value
|
|
@@ -94,10 +111,20 @@ export class LearningConsolidationProtocol {
|
|
|
94
111
|
? transferResult.value.length
|
|
95
112
|
: 0,
|
|
96
113
|
};
|
|
114
|
+
logger.info('Learning consolidation finished', {
|
|
115
|
+
consolidationId,
|
|
116
|
+
dryRun,
|
|
117
|
+
analyzed: stats.totalPatternsAnalyzed,
|
|
118
|
+
merged: totalMerged,
|
|
119
|
+
selectedForRemoval: totalRemoved,
|
|
120
|
+
archived: totalArchived,
|
|
121
|
+
retained: totalRetained,
|
|
122
|
+
});
|
|
97
123
|
// Publish completion event
|
|
98
124
|
await this.publishCompletedEvent(consolidationId, stats, insights, duration);
|
|
99
125
|
const result = {
|
|
100
126
|
consolidationId,
|
|
127
|
+
dryRun,
|
|
101
128
|
startedAt,
|
|
102
129
|
completedAt,
|
|
103
130
|
stats,
|
|
@@ -106,7 +133,9 @@ export class LearningConsolidationProtocol {
|
|
|
106
133
|
domainReports,
|
|
107
134
|
};
|
|
108
135
|
// Store result for historical analysis
|
|
109
|
-
|
|
136
|
+
if (!dryRun) {
|
|
137
|
+
await this.storeConsolidationResult(result);
|
|
138
|
+
}
|
|
110
139
|
return ok(result);
|
|
111
140
|
}
|
|
112
141
|
catch (error) {
|
|
@@ -123,8 +152,9 @@ export class LearningConsolidationProtocol {
|
|
|
123
152
|
try {
|
|
124
153
|
const domainGroups = [];
|
|
125
154
|
const timeRange = TimeRange.lastNDays(this.config.analysisWindowWeeks * 7);
|
|
155
|
+
const activePatterns = await this.readActivePatterns();
|
|
126
156
|
for (const domain of ALL_DOMAINS) {
|
|
127
|
-
const patterns =
|
|
157
|
+
const patterns = this.getPatternsForDomain(activePatterns, domain, timeRange);
|
|
128
158
|
if (patterns.length > 0) {
|
|
129
159
|
const stats = this.calculateDomainStats(patterns, timeRange);
|
|
130
160
|
domainGroups.push({ domain, patterns, stats });
|
|
@@ -137,12 +167,19 @@ export class LearningConsolidationProtocol {
|
|
|
137
167
|
}
|
|
138
168
|
}
|
|
139
169
|
/**
|
|
140
|
-
*
|
|
170
|
+
* Every active learned pattern, read once per run.
|
|
171
|
+
*
|
|
172
|
+
* #1055: active patterns only, excluding `:creation:` provenance and
|
|
173
|
+
* `:archived:` records. #1071: read from `learning-optimization`, where
|
|
174
|
+
* LearningCoordinatorService writes them, not the backend default.
|
|
175
|
+
*/
|
|
176
|
+
readActivePatterns() {
|
|
177
|
+
return readActivePatterns(this.memory, { retrieve: LEARNING_NS });
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Patterns of one domain created or used within the analysis window
|
|
141
181
|
*/
|
|
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);
|
|
182
|
+
getPatternsForDomain(patterns, domain, timeRange) {
|
|
146
183
|
return patterns.filter((pattern) => pattern.domain === domain &&
|
|
147
184
|
(timeRange.contains(pattern.createdAt) || timeRange.contains(pattern.lastUsedAt)));
|
|
148
185
|
}
|
|
@@ -203,10 +240,23 @@ export class LearningConsolidationProtocol {
|
|
|
203
240
|
const mergedPatterns = [];
|
|
204
241
|
const removedPatterns = [];
|
|
205
242
|
const retainedPatterns = [];
|
|
243
|
+
const toArchive = [];
|
|
244
|
+
// Patterns in their grace period are never merged either: a merge
|
|
245
|
+
// archives every source pattern (#1071).
|
|
246
|
+
retainedPatterns.push(...patterns.filter((p) => this.isInGracePeriod(p)));
|
|
206
247
|
// Group similar patterns for merging
|
|
207
|
-
const similarGroups = this.groupSimilarPatterns(patterns);
|
|
248
|
+
const similarGroups = this.groupSimilarPatterns(patterns.filter((p) => !this.isInGracePeriod(p)));
|
|
208
249
|
for (const group of similarGroups) {
|
|
209
|
-
if (group.length >= 2) {
|
|
250
|
+
if (group.length >= 2 && this.config.dryRun) {
|
|
251
|
+
// Dry run: report the merge, keep every source pattern
|
|
252
|
+
mergedPatterns.push({
|
|
253
|
+
resultPatternId: '',
|
|
254
|
+
sourcePatternIds: group.map((p) => p.id),
|
|
255
|
+
mergeReason: 'Similar pattern context and template',
|
|
256
|
+
});
|
|
257
|
+
retainedPatterns.push(...group);
|
|
258
|
+
}
|
|
259
|
+
else if (group.length >= 2) {
|
|
210
260
|
// Merge similar patterns
|
|
211
261
|
const mergeResult = await this.mergePatternGroup(group);
|
|
212
262
|
if (mergeResult.success) {
|
|
@@ -230,32 +280,34 @@ export class LearningConsolidationProtocol {
|
|
|
230
280
|
name: pattern.name,
|
|
231
281
|
removalReason: this.getRemovalReason(pattern),
|
|
232
282
|
});
|
|
233
|
-
|
|
283
|
+
toArchive.push(pattern);
|
|
234
284
|
}
|
|
235
285
|
}
|
|
236
286
|
}
|
|
237
|
-
// Trim to max patterns if needed
|
|
287
|
+
// Trim to max patterns if needed. Patterns in their grace period are
|
|
288
|
+
// never trimmed; they stay on top of the kept set.
|
|
238
289
|
const finalPatterns = this.trimToMaxPatterns(retainedPatterns, domain);
|
|
239
|
-
const
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
}
|
|
290
|
+
const kept = new Set(finalPatterns.map((p) => p.id));
|
|
291
|
+
for (const p of retainedPatterns) {
|
|
292
|
+
if (kept.has(p.id))
|
|
293
|
+
continue;
|
|
294
|
+
removedPatterns.push({
|
|
295
|
+
patternId: p.id,
|
|
296
|
+
name: p.name,
|
|
297
|
+
removalReason: 'Exceeded max patterns per domain limit',
|
|
298
|
+
});
|
|
299
|
+
toArchive.push(p);
|
|
250
300
|
}
|
|
301
|
+
const archiveCounts = await this.archivePatterns(domain, toArchive);
|
|
251
302
|
// Publish domain consolidation event
|
|
252
|
-
await this.publishPatternConsolidatedEvent(consolidationId, domain, patterns.length, finalPatterns.length, mergedPatterns.map((m) => m.resultPatternId), removedPatterns.map((r) => r.patternId));
|
|
303
|
+
await this.publishPatternConsolidatedEvent(consolidationId, domain, patterns.length, finalPatterns.length, mergedPatterns.map((m) => m.resultPatternId), removedPatterns.map((r) => r.patternId), this.config.dryRun);
|
|
253
304
|
const report = {
|
|
254
305
|
domain,
|
|
255
306
|
patternsBeforeCount: patterns.length,
|
|
256
307
|
patternsAfterCount: finalPatterns.length,
|
|
257
308
|
mergedPatterns,
|
|
258
309
|
removedPatterns,
|
|
310
|
+
archiveCounts,
|
|
259
311
|
topPerformingPatterns: this.getTopPerformingPatterns(finalPatterns, 5),
|
|
260
312
|
improvementAreas: this.identifyImprovementAreas(domainGroup),
|
|
261
313
|
};
|
|
@@ -379,17 +431,30 @@ export class LearningConsolidationProtocol {
|
|
|
379
431
|
}
|
|
380
432
|
return 'Below retention threshold';
|
|
381
433
|
}
|
|
434
|
+
/** True while a pattern is too new for the retention and trim rules. */
|
|
435
|
+
isInGracePeriod(pattern) {
|
|
436
|
+
return isWithinRetentionGrace(pattern, this.config.retentionGraceDays);
|
|
437
|
+
}
|
|
382
438
|
/**
|
|
383
|
-
* Archive
|
|
439
|
+
* Archive the selected patterns (soft delete in `learning-optimization`,
|
|
440
|
+
* #1071). Only the selected patterns are touched, and a dry run touches
|
|
441
|
+
* none. Counts are logged per domain.
|
|
384
442
|
*/
|
|
385
|
-
async
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
443
|
+
async archivePatterns(domain, selected) {
|
|
444
|
+
const counts = emptyArchiveCounts();
|
|
445
|
+
counts.selected = selected.length;
|
|
446
|
+
if (!this.config.dryRun) {
|
|
447
|
+
for (const pattern of selected) {
|
|
448
|
+
counts[await archiveSelectedPattern(this.memory, pattern)]++;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
if (counts.selected > 0) {
|
|
452
|
+
logger.info('Learning consolidation archive step', { domain, dryRun: this.config.dryRun, ...counts });
|
|
453
|
+
}
|
|
454
|
+
if (counts.failed > 0) {
|
|
455
|
+
logger.warn('Some selected patterns could not be archived and were left active', { domain, failed: counts.failed });
|
|
456
|
+
}
|
|
457
|
+
return counts;
|
|
393
458
|
}
|
|
394
459
|
/**
|
|
395
460
|
* Trim patterns to max allowed per domain
|
|
@@ -398,14 +463,18 @@ export class LearningConsolidationProtocol {
|
|
|
398
463
|
if (patterns.length <= this.config.maxPatternsPerDomain) {
|
|
399
464
|
return patterns;
|
|
400
465
|
}
|
|
401
|
-
//
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
466
|
+
// Patterns in their grace period are always kept; the rest compete for
|
|
467
|
+
// the remaining places by effectiveness score.
|
|
468
|
+
const young = patterns.filter((p) => this.isInGracePeriod(p));
|
|
469
|
+
const eligible = patterns.filter((p) => !this.isInGracePeriod(p));
|
|
470
|
+
const places = Math.max(0, this.config.maxPatternsPerDomain - young.length);
|
|
471
|
+
return [...young, ...eligible
|
|
472
|
+
.sort((a, b) => {
|
|
473
|
+
const scoreA = a.confidence * 0.4 + a.successRate * 0.4 + Math.min(a.usageCount / 100, 0.2);
|
|
474
|
+
const scoreB = b.confidence * 0.4 + b.successRate * 0.4 + Math.min(b.usageCount / 100, 0.2);
|
|
475
|
+
return scoreB - scoreA;
|
|
476
|
+
})
|
|
477
|
+
.slice(0, places)];
|
|
409
478
|
}
|
|
410
479
|
/**
|
|
411
480
|
* Get top performing patterns
|
|
@@ -456,7 +525,8 @@ export class LearningConsolidationProtocol {
|
|
|
456
525
|
updatedCount++;
|
|
457
526
|
// Share high-performing pattern knowledge with related domains
|
|
458
527
|
if (pattern.successRate >= 0.8) {
|
|
459
|
-
|
|
528
|
+
// #1071: read where createKnowledgeFromPattern() writes it.
|
|
529
|
+
const knowledge = await this.memory.get(`learning:knowledge:pattern:${pattern.id}`, LEARNING_NS);
|
|
460
530
|
if (knowledge) {
|
|
461
531
|
// Use knowledgeService to share across domains
|
|
462
532
|
await this.knowledgeService.shareKnowledge(knowledge, [
|
|
@@ -694,7 +764,7 @@ export class LearningConsolidationProtocol {
|
|
|
694
764
|
};
|
|
695
765
|
await this.eventBus.publish(event);
|
|
696
766
|
}
|
|
697
|
-
async publishPatternConsolidatedEvent(consolidationId, domain, patternsBeforeCount, patternsAfterCount, mergedPatternIds, removedPatternIds) {
|
|
767
|
+
async publishPatternConsolidatedEvent(consolidationId, domain, patternsBeforeCount, patternsAfterCount, mergedPatternIds, removedPatternIds, dryRun) {
|
|
698
768
|
const event = {
|
|
699
769
|
id: uuidv4(),
|
|
700
770
|
type: 'PatternConsolidated',
|
|
@@ -707,6 +777,7 @@ export class LearningConsolidationProtocol {
|
|
|
707
777
|
patternsAfterCount,
|
|
708
778
|
mergedPatternIds,
|
|
709
779
|
removedPatternIds,
|
|
780
|
+
dryRun,
|
|
710
781
|
},
|
|
711
782
|
};
|
|
712
783
|
await this.eventBus.publish(event);
|
|
@@ -722,6 +793,7 @@ export class LearningConsolidationProtocol {
|
|
|
722
793
|
stats,
|
|
723
794
|
insights,
|
|
724
795
|
duration,
|
|
796
|
+
dryRun: this.config.dryRun,
|
|
725
797
|
},
|
|
726
798
|
};
|
|
727
799
|
await this.eventBus.publish(event);
|
|
@@ -761,15 +833,21 @@ export class LearningConsolidationProtocol {
|
|
|
761
833
|
* Get previous consolidation results for trend analysis
|
|
762
834
|
*/
|
|
763
835
|
async getPreviousConsolidations(count) {
|
|
764
|
-
|
|
836
|
+
// #1071: results are stored in `learning-optimization`. Read every one
|
|
837
|
+
// so the newest `count` are returned, not an arbitrary first page.
|
|
838
|
+
const keys = await searchAllKeys(this.memory, 'learning:consolidation:result:*', {
|
|
839
|
+
retrieve: LEARNING_NS,
|
|
840
|
+
});
|
|
765
841
|
const results = [];
|
|
766
842
|
for (const key of keys) {
|
|
767
|
-
const result = await this.memory.get(key);
|
|
843
|
+
const result = rehydrateDates(await this.memory.get(key, LEARNING_NS), ['startedAt', 'completedAt']);
|
|
768
844
|
if (result) {
|
|
769
845
|
results.push(result);
|
|
770
846
|
}
|
|
771
847
|
}
|
|
772
|
-
return results
|
|
848
|
+
return results
|
|
849
|
+
.sort((a, b) => b.completedAt.getTime() - a.completedAt.getTime())
|
|
850
|
+
.slice(0, count);
|
|
773
851
|
}
|
|
774
852
|
/**
|
|
775
853
|
* 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;
|
|
@@ -47,10 +47,11 @@ 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 { findDomainsWithoutHandler, describeMissingHandler } from './task-executability.js';
|
|
54
55
|
import { enqueueTask, removeFromQueues, getQueuePosition, processQueue, listTasks as listTasksImpl, assignTask, assignTaskToDomain, } 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';
|
|
@@ -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'));
|
|
@@ -193,7 +193,8 @@ export async function handleTaskFailed(ctx, event) {
|
|
|
193
193
|
}
|
|
194
194
|
// Check if we should retry. Caller-input errors are deterministic, so a
|
|
195
195
|
// retry would fail the same way.
|
|
196
|
-
|
|
196
|
+
const callerOwned = execution.task.executionOwner === 'caller';
|
|
197
|
+
if (!callerError && !callerOwned && execution.retryCount < ctx.config.taskRetryLimit) {
|
|
197
198
|
ctx.auditLogger.logFail(taskId, execution.assignedAgents[0], error);
|
|
198
199
|
const retried = {
|
|
199
200
|
...execution,
|