agentic-qe 3.15.7 → 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 +305 -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-OS5G7KMQ.js → agent-booster-wasm-427FRKWG.js} +2 -2
- package/dist/cli/chunks/{agent-handler-PI4I7PME.js → agent-handler-RIYHTHVZ.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-J7TXHX4U.js → agent-memory-branch-WSUCUHOO.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-3RENLQWP.js +2 -0
- package/dist/cli/chunks/{arena-OWUGXKNT.js → arena-KRIBMIXX.js} +2 -2
- package/dist/cli/chunks/{arena-FXESDCFR.js → arena-YAJZX6MC.js} +4 -4
- package/dist/cli/chunks/{audit-EPAWLYIZ.js → audit-7ZNOXWP3.js} +3 -3
- package/dist/cli/chunks/base-67DXSAYM.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-IYVR5EQY.js → better-sqlite3-ZQAT4I6H.js} +2 -2
- package/dist/cli/chunks/{brain-handler-3W2E6TC6.js → brain-handler-452WCPZC.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-HU7VACJ4.js → branch-enumerator-IJFXJRPN.js} +2 -2
- package/dist/cli/chunks/{browser-72XOR6E2.js → browser-CT3MTV6G.js} +2 -2
- package/dist/cli/chunks/browser-workflow-NDXRROWZ.js +2 -0
- package/dist/cli/chunks/{chunk-WXI2STKQ.js → chunk-2BA45H64.js} +2 -2
- package/dist/cli/chunks/{chunk-DGK6GQMO.js → chunk-2HL3UM5P.js} +2 -2
- package/dist/cli/chunks/{chunk-LGBN7TKC.js → chunk-2I2UPJS7.js} +2 -2
- package/dist/cli/chunks/{chunk-ZRLNACPY.js → chunk-2TDIS6YK.js} +2 -2
- package/dist/cli/chunks/{chunk-34JLY3U6.js → chunk-2URBI52G.js} +2 -2
- package/dist/cli/chunks/{chunk-K7W55B7Q.js → chunk-2XITOPYV.js} +2 -2
- package/dist/cli/chunks/{chunk-I7H4IP7T.js → chunk-2YH62JCN.js} +2 -2
- package/dist/cli/chunks/{chunk-HPG7354V.js → chunk-32UTLDNY.js} +2 -2
- package/dist/cli/chunks/{chunk-C2CUPJGR.js → chunk-37BIGMJI.js} +1 -1
- package/dist/cli/chunks/{chunk-2RJYA6WK.js → chunk-3CJCROMW.js} +2 -2
- package/dist/cli/chunks/{chunk-CWPRU7ZI.js → chunk-3LYU7BLY.js} +2 -2
- package/dist/cli/chunks/{chunk-24CENUT4.js → chunk-47TYABPD.js} +3 -3
- package/dist/cli/chunks/{chunk-WUV5RZUI.js → chunk-47V7FQGX.js} +2 -2
- package/dist/cli/chunks/{chunk-IWQQIXHO.js → chunk-4JCY45KV.js} +2 -2
- package/dist/cli/chunks/{chunk-ZTMZFF25.js → chunk-4SUOVLJ6.js} +2 -2
- package/dist/cli/chunks/{chunk-CIFWOMNX.js → chunk-4URT6JO2.js} +1 -1
- package/dist/cli/chunks/{chunk-5Q22XPTH.js → chunk-4V27J6YN.js} +2 -2
- package/dist/cli/chunks/{chunk-SX2YSHE7.js → chunk-4W4DYVSH.js} +1 -1
- package/dist/cli/chunks/chunk-55HRSNGN.js +2 -0
- package/dist/cli/chunks/{chunk-F62EKVVC.js → chunk-5D2I7JUP.js} +2 -2
- package/dist/cli/chunks/{chunk-XXAVQACL.js → chunk-5JWGCIQW.js} +1 -1
- package/dist/cli/chunks/chunk-5LAAZLUC.js +4 -0
- package/dist/cli/chunks/{chunk-EDU72RTW.js → chunk-5NS3USRW.js} +1 -1
- package/dist/cli/chunks/{chunk-BTYKGVJ5.js → chunk-6EPHNJTL.js} +1 -1
- package/dist/cli/chunks/{chunk-JVYPXW6Y.js → chunk-6OOYIO3W.js} +2 -2
- package/dist/cli/chunks/{chunk-PG64YV6C.js → chunk-6PXA2BQJ.js} +58 -58
- package/dist/cli/chunks/{chunk-IARSGAG7.js → chunk-6YL6JOQB.js} +2 -2
- package/dist/cli/chunks/{chunk-LDXQRNTT.js → chunk-72AMFDC7.js} +1 -1
- package/dist/cli/chunks/{chunk-Z3VJLWRR.js → chunk-763SUL4B.js} +2 -2
- package/dist/cli/chunks/{chunk-EL75G2A3.js → chunk-7DMA5NYL.js} +1 -1
- package/dist/cli/chunks/{chunk-J43DV3ME.js → chunk-7JKB3Q7O.js} +1 -1
- package/dist/cli/chunks/{chunk-ONVALAZN.js → chunk-7KII4CQG.js} +2 -2
- package/dist/cli/chunks/{chunk-AAA4SHEG.js → chunk-7QGYJ5OY.js} +1 -1
- package/dist/cli/chunks/{chunk-MMXG3LL6.js → chunk-7QTB5VJZ.js} +2 -2
- package/dist/cli/chunks/{chunk-BB7OLQKO.js → chunk-7X2Y727E.js} +1 -1
- package/dist/cli/chunks/{chunk-VNW5Q2CX.js → chunk-A4RU67VX.js} +2 -2
- package/dist/cli/chunks/{chunk-YFOBQSOW.js → chunk-A6YIH4C4.js} +2 -2
- package/dist/cli/chunks/{chunk-MJJC6HUK.js → chunk-ABFDB4X3.js} +1 -1
- package/dist/cli/chunks/{chunk-MHZPC4HJ.js → chunk-AJ4YDSOI.js} +2 -2
- package/dist/cli/chunks/{chunk-OA4GR3EZ.js → chunk-AOFO4N32.js} +2 -2
- package/dist/cli/chunks/{chunk-EB2PP6X2.js → chunk-AQTVVLNP.js} +1 -1
- package/dist/cli/chunks/chunk-AR2E4B7K.js +6 -0
- package/dist/cli/chunks/{chunk-N4PMPSJJ.js → chunk-AVB5QY2Q.js} +2 -2
- package/dist/cli/chunks/{chunk-HLZATDD2.js → chunk-BHKXMIWX.js} +2 -2
- package/dist/cli/chunks/{chunk-C2MDBBFF.js → chunk-BXO536GT.js} +3 -3
- package/dist/cli/chunks/{chunk-WTLIEBDH.js → chunk-C6RTMTEH.js} +1 -1
- package/dist/cli/chunks/{chunk-MNZFEIE5.js → chunk-CTZJUV5I.js} +1 -1
- package/dist/cli/chunks/{chunk-XEWXYGJI.js → chunk-D6XVGFTI.js} +2 -2
- package/dist/cli/chunks/{chunk-Y4SAWE45.js → chunk-DDPPSSHW.js} +1 -1
- package/dist/cli/chunks/{chunk-KPOPBUUJ.js → chunk-DGTLJNJH.js} +2 -2
- package/dist/cli/chunks/{chunk-6JT73S5B.js → chunk-DINZR5CF.js} +1 -1
- package/dist/cli/chunks/{chunk-HTWIGQL4.js → chunk-EFBLP43U.js} +2 -2
- package/dist/cli/chunks/chunk-ETG7O5E5.js +5 -0
- package/dist/cli/chunks/{chunk-2AYBYXOA.js → chunk-F2SQPP6U.js} +2 -2
- package/dist/cli/chunks/{chunk-V2SAEMZY.js → chunk-F3PQZX44.js} +1 -1
- package/dist/cli/chunks/{chunk-JPHDMHFG.js → chunk-F4JYIRW2.js} +2 -2
- package/dist/cli/chunks/{chunk-REEIFA6A.js → chunk-FJ4VTLLK.js} +2 -2
- package/dist/cli/chunks/{chunk-PTK66HEY.js → chunk-FL3OYGCS.js} +2 -2
- package/dist/cli/chunks/{chunk-PEKDSJBC.js → chunk-FLASM2XB.js} +2 -2
- package/dist/cli/chunks/{chunk-G762PEFO.js → chunk-FV3NHVC7.js} +22 -22
- package/dist/cli/chunks/{chunk-FTTFJ7SJ.js → chunk-FV7VAG74.js} +1 -1
- package/dist/cli/chunks/{chunk-2YVJ5OUL.js → chunk-G3BKZNFL.js} +8 -8
- package/dist/cli/chunks/{chunk-MDC4G323.js → chunk-GBUIG3FS.js} +1 -1
- package/dist/cli/chunks/{chunk-DCJW2DPL.js → chunk-GCWSX2NY.js} +4 -4
- package/dist/cli/chunks/{chunk-VCA6YYII.js → chunk-GII5WVAK.js} +1 -1
- package/dist/cli/chunks/{chunk-HXBAQKMH.js → chunk-GKPQ2GRR.js} +2 -2
- package/dist/cli/chunks/chunk-GR3JYE5A.js +2 -0
- package/dist/cli/chunks/{chunk-ZUMDDMDE.js → chunk-H3KBIWTO.js} +2 -2
- package/dist/cli/chunks/{chunk-ECSLJJOQ.js → chunk-HAROIAJE.js} +1 -1
- package/dist/cli/chunks/{chunk-ICPALF4Q.js → chunk-HCYQHWI2.js} +2 -2
- package/dist/cli/chunks/{chunk-V5NGBQAQ.js → chunk-HGTWAZWU.js} +2 -2
- package/dist/cli/chunks/{chunk-YK3NOC2R.js → chunk-HTZJSQ3C.js} +2 -2
- package/dist/cli/chunks/{chunk-IYQ7XNE5.js → chunk-HWK5L7IJ.js} +2 -2
- package/dist/cli/chunks/{chunk-HSDOOFV7.js → chunk-HZ5NC6U5.js} +1 -1
- package/dist/cli/chunks/{chunk-M63QB466.js → chunk-I6S35FRO.js} +2 -2
- package/dist/cli/chunks/{chunk-LMEU64TR.js → chunk-ICP2ORGI.js} +2 -2
- package/dist/cli/chunks/{chunk-PXZKPUW6.js → chunk-IFEIY3NQ.js} +2 -2
- package/dist/cli/chunks/{chunk-OJEZNLB6.js → chunk-J3DTDJDT.js} +2 -2
- package/dist/cli/chunks/chunk-J3WGK22W.js +2 -0
- package/dist/cli/chunks/{chunk-SQHLC6I5.js → chunk-J5KNRVXR.js} +1 -1
- package/dist/cli/chunks/{chunk-RORZ5O5Z.js → chunk-JAV5WPSY.js} +2 -2
- package/dist/cli/chunks/{chunk-SSP2B2WR.js → chunk-JEP4ULR6.js} +2 -2
- package/dist/cli/chunks/{chunk-6FEQ73BF.js → chunk-JK2ME6IT.js} +2 -2
- package/dist/cli/chunks/chunk-JNNZK7KH.js +2 -0
- package/dist/cli/chunks/{chunk-RXAFLK34.js → chunk-JP4P3P3D.js} +2 -2
- package/dist/cli/chunks/{chunk-JY4AIEZ7.js → chunk-JUVHZG7I.js} +1 -1
- package/dist/cli/chunks/{chunk-UBYCR3O4.js → chunk-JWGRWMZP.js} +2 -2
- package/dist/cli/chunks/{chunk-6BO3WCK7.js → chunk-K5DJXMAA.js} +2 -2
- package/dist/cli/chunks/{chunk-MKFQNCXI.js → chunk-KFUUIAR4.js} +2 -2
- package/dist/cli/chunks/chunk-KHSRIPBP.js +180 -0
- package/dist/cli/chunks/{chunk-UY3REQOK.js → chunk-KIKWJM6J.js} +2 -2
- package/dist/cli/chunks/{chunk-YUC7RJGR.js → chunk-KIXYKUCI.js} +1 -1
- package/dist/cli/chunks/{chunk-IC2WSSD5.js → chunk-KLGYIEJK.js} +3 -3
- package/dist/cli/chunks/{chunk-DVPGBDBP.js → chunk-KR3M44CF.js} +3 -3
- package/dist/cli/chunks/chunk-KTSLTZSG.js +2 -0
- package/dist/cli/chunks/{chunk-Y6A46M3B.js → chunk-KVBEGOJE.js} +2 -2
- package/dist/cli/chunks/{chunk-PZG3542B.js → chunk-L42JPFCC.js} +2 -2
- package/dist/cli/chunks/{chunk-J26GADQE.js → chunk-LCJTEUDC.js} +181 -181
- package/dist/cli/chunks/{chunk-3JD2USUH.js → chunk-LEAKYZ37.js} +2 -2
- package/dist/cli/chunks/{chunk-UCLN6AME.js → chunk-LMU5DUDK.js} +1 -1
- package/dist/cli/chunks/{chunk-EV2BYY6T.js → chunk-MZS32SYS.js} +1 -1
- package/dist/cli/chunks/{chunk-LVEX4GID.js → chunk-N3KEY4XJ.js} +2 -2
- package/dist/cli/chunks/{chunk-XNSQZ3O7.js → chunk-N3NP6PTT.js} +2 -2
- package/dist/cli/chunks/{chunk-QVG4ZDXX.js → chunk-N5PDFGCQ.js} +2 -2
- package/dist/cli/chunks/{chunk-6PKCQXEW.js → chunk-NDKLQW6N.js} +2 -2
- package/dist/cli/chunks/{chunk-6AYRAOCA.js → chunk-NHZIWIQZ.js} +2 -2
- package/dist/cli/chunks/{chunk-H4WHDFB5.js → chunk-NTAD5UX4.js} +2 -2
- package/dist/cli/chunks/{chunk-JYXOFN3E.js → chunk-O3JLOVZX.js} +2 -2
- package/dist/cli/chunks/{chunk-ZLVQSEZK.js → chunk-OCESWNAZ.js} +3 -3
- package/dist/cli/chunks/{chunk-7EX4DEQR.js → chunk-OG2UI6A3.js} +2 -2
- package/dist/cli/chunks/{chunk-3RM46XFP.js → chunk-OXTFSIGN.js} +1 -1
- package/dist/cli/chunks/{chunk-44DPYNPE.js → chunk-OXZLKP6C.js} +1 -1
- package/dist/cli/chunks/{chunk-TU4LIIOP.js → chunk-P2CXVNKK.js} +2 -2
- package/dist/cli/chunks/{chunk-LDZWIV2O.js → chunk-P73W2K7T.js} +1 -1
- package/dist/cli/chunks/{chunk-56ZKQYZY.js → chunk-PBZI2ZPV.js} +3 -3
- package/dist/cli/chunks/{chunk-MNCF643K.js → chunk-PMCRCEW5.js} +2 -2
- package/dist/cli/chunks/{chunk-4G2VNW4C.js → chunk-PVIA2FPD.js} +2 -2
- package/dist/cli/chunks/{chunk-MRHM4COP.js → chunk-PX2B5TS2.js} +2 -2
- package/dist/cli/chunks/{chunk-HZFT3P5B.js → chunk-Q3JVJRVJ.js} +1 -1
- package/dist/cli/chunks/{chunk-GY2SAIXP.js → chunk-QQ5SZH4D.js} +2 -2
- package/dist/cli/chunks/{chunk-LP4AS2E4.js → chunk-QTVWUQTB.js} +1 -1
- package/dist/cli/chunks/{chunk-W4X2VTIY.js → chunk-REUFWGMA.js} +2 -2
- package/dist/cli/chunks/{chunk-FVBFASOD.js → chunk-SNBYYO6F.js} +2 -2
- package/dist/cli/chunks/{chunk-RNYX4CPI.js → chunk-SVHUYVUR.js} +2 -2
- package/dist/cli/chunks/{chunk-AXO7OOOA.js → chunk-THAY7WHO.js} +2 -2
- package/dist/cli/chunks/{chunk-QWLTHFZW.js → chunk-TNMQVG4A.js} +2 -2
- package/dist/cli/chunks/{chunk-JFPXCQNP.js → chunk-TSYQDRNK.js} +1 -1
- package/dist/cli/chunks/{chunk-JK6B3ULP.js → chunk-TUYJ53V4.js} +2 -2
- package/dist/cli/chunks/{chunk-PUECC4WI.js → chunk-UNUTC6TX.js} +2 -2
- package/dist/cli/chunks/{chunk-ED32XJ5R.js → chunk-UOJBR4J3.js} +2 -2
- package/dist/cli/chunks/{chunk-CXTJ47QS.js → chunk-UOWHE77F.js} +2 -2
- package/dist/cli/chunks/{chunk-5KCBX225.js → chunk-UYLYMWV5.js} +2 -2
- package/dist/cli/chunks/{chunk-QNQSM2OG.js → chunk-V5PXQSFS.js} +2 -2
- package/dist/cli/chunks/{chunk-VKPKYMCT.js → chunk-VCMINU7K.js} +2 -2
- package/dist/cli/chunks/{chunk-QQT6QENQ.js → chunk-VQHVHVSF.js} +2 -2
- package/dist/cli/chunks/{chunk-634D2ENF.js → chunk-VRGCKBF7.js} +2 -2
- package/dist/cli/chunks/{chunk-T6W5APYP.js → chunk-VU2EL424.js} +1 -1
- package/dist/cli/chunks/{chunk-JY4WLN3K.js → chunk-VXZJOKOX.js} +2 -2
- package/dist/cli/chunks/{chunk-NZQPP533.js → chunk-VYLM2YV5.js} +3 -3
- package/dist/cli/chunks/{chunk-PQV7E7XH.js → chunk-W32YU3VI.js} +2 -2
- package/dist/cli/chunks/{chunk-RRPYWBFX.js → chunk-W5VJRDDG.js} +2 -2
- package/dist/cli/chunks/{chunk-7UCVYYWL.js → chunk-WGDR2KIR.js} +2 -2
- package/dist/cli/chunks/{chunk-2423JAA5.js → chunk-WRRCQ2UE.js} +1 -1
- package/dist/cli/chunks/{chunk-RCYLCA7E.js → chunk-XDBD4GXO.js} +2 -2
- package/dist/cli/chunks/{chunk-PYHYOKYT.js → chunk-XOLDMK23.js} +2 -2
- package/dist/cli/chunks/{chunk-5KS7HA37.js → chunk-XOVNZT7F.js} +1 -1
- package/dist/cli/chunks/{chunk-5PBRBS7D.js → chunk-XQ3DDY7X.js} +2 -2
- package/dist/cli/chunks/{chunk-4DIZ5BT6.js → chunk-XUIA5KMS.js} +2 -2
- package/dist/cli/chunks/{chunk-G7YTZTGU.js → chunk-XWIUFYM3.js} +1 -1
- package/dist/cli/chunks/{chunk-B7M323VL.js → chunk-XYCKHYBM.js} +2 -2
- package/dist/cli/chunks/{chunk-6OS7HREG.js → chunk-XZJ2O3VC.js} +1 -1
- package/dist/cli/chunks/{chunk-BTIBXGVQ.js → chunk-YRBBBUJX.js} +5 -5
- package/dist/cli/chunks/{chunk-MQ6OF6DU.js → chunk-YZGSJG34.js} +1 -1
- package/dist/cli/chunks/{chunk-XTJMY3KS.js → chunk-YZYDTABJ.js} +1 -1
- package/dist/cli/chunks/{chunk-LQOVA4YX.js → chunk-ZANDSVCK.js} +2 -2
- package/dist/cli/chunks/{chunk-2E3XWKEU.js → chunk-ZBDRLF43.js} +2 -2
- package/dist/cli/chunks/{chunk-UUHIEM2M.js → chunk-ZVSLCEVC.js} +3 -3
- package/dist/cli/chunks/{chunk-Q2T5FXEA.js → chunk-ZXBCCO2H.js} +2 -2
- package/dist/cli/chunks/{ci-5HEXJZ2C.js → ci-7SGRCFPS.js} +2 -2
- package/dist/cli/chunks/{ci-config-WU4NPDAM.js → ci-config-MX3URPZA.js} +2 -2
- package/dist/cli/chunks/{ci-output-BJQVXX5E.js → ci-output-M47NJY6D.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-3BMGTQCB.js → circuit-breaker-5GAK45SW.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-GVDGJWMU.js → claude-flow-setup-YXYSRH4Y.js} +2 -2
- package/dist/cli/chunks/client-ZP3CTVRF.js +2 -0
- package/dist/cli/chunks/{cline-installer-V4MRGWVA.js → cline-installer-DLJ5QD5N.js} +2 -2
- package/dist/cli/chunks/{code-A3TGQPEO.js → code-ONKLMVQ2.js} +25 -24
- package/dist/cli/chunks/{code-index-extractor-YJQSYWD3.js → code-index-extractor-2232LGZN.js} +2 -2
- package/dist/cli/chunks/{codex-installer-7N7UQPAH.js → codex-installer-UOWLYCMH.js} +2 -2
- package/dist/cli/chunks/{completions-PPGVYLZS.js → completions-MHX7GCC7.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-XZTFLYV5.js → complexity-analyzer-43ZUJKZU.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-Z5I57RAH.js → continuedev-installer-6Q5JR4FF.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-F5YZ6BHB.js → copilot-installer-CZUMVHSI.js} +2 -2
- package/dist/cli/chunks/core-handlers-JSRXQWPE.js +2 -0
- package/dist/cli/chunks/{cost-tracker-GO33ZQAP.js → cost-tracker-VS5ZW3XN.js} +2 -2
- package/dist/cli/chunks/{coverage-GSHKLY74.js → coverage-VWKTWZ6D.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-7UKODQWG.js +2 -0
- package/dist/cli/chunks/{cursor-installer-JJ7IVJZB.js → cursor-installer-YIFEMORH.js} +2 -2
- package/dist/cli/chunks/{daemon-IRL7QRNE.js → daemon-SHWJSJW5.js} +7 -7
- package/dist/cli/chunks/daemon-YIFT46FH.js +34 -0
- package/dist/cli/chunks/{dag-attention-scheduler-ORXSUHPA.js → dag-attention-scheduler-TCC2WM46.js} +2 -2
- package/dist/cli/chunks/{detect-RHU62KRI.js → detect-IGTWSQMA.js} +2 -2
- package/dist/cli/chunks/{dist-node-3VKV4Z6C.js → dist-node-TCOTJVQX.js} +2 -2
- package/dist/cli/chunks/{domain-handler-SFIML4FK.js → domain-handler-55ZVYODR.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-CJ4FA3OC.js → domain-plugins-GJRWOHQP.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-BCRKPCAA.js → domain-transfer-6EF75EKU.js} +2 -2
- package/dist/cli/chunks/dream-UDLM6M55.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-VL3HFLPV.js → embed-and-insert-pattern-XAMNIKQL.js} +2 -2
- package/dist/cli/chunks/{eval-GGKRI4P5.js → eval-GO22R4OZ.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-F72TIRQY.js → experience-capture-middleware-F2BRMJ3Y.js} +3 -3
- package/dist/cli/chunks/{fast-paths-7KOOF3MA.js → fast-paths-6RGPYALD.js} +2 -2
- package/dist/cli/chunks/{feature-flags-FNHBTHBH.js → feature-flags-MIWQIOHU.js} +2 -2
- package/dist/cli/chunks/{feature-flags-IOZEWWFU.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-OH2DOQP7.js → gnn-wrapper-ALBJVW6T.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-W67NXTNE.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-6MLLOGOE.js → hnsw-legacy-bridge-RYUJPA7B.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-4UDISJ3G.js → hnswlib-node-XM6XF3YV.js} +2 -2
- package/dist/cli/chunks/{hooks-NOQJWQ4P.js → hooks-X62O7TJO.js} +10 -10
- package/dist/cli/chunks/hybrid-backend-NZ3G4WBX.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-2OD3APVP.js → hypergraph-engine-ZBWUPTVD.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-5AZGMBUM.js → hypergraph-handler-DUMF6SJV.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-WZC6NHFP.js +2 -0
- package/dist/cli/chunks/{init-guard-SMGJ45PW.js → init-guard-S4I2R46S.js} +2 -2
- package/dist/cli/chunks/{init-handler-5T4MP2NM.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-RLZYLVQJ.js → kilocode-installer-GNNB5FCZ.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-LFZOC7VD.js → kiro-installer-HR6ZAH7T.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-SZCVQF37.js +2 -0
- package/dist/cli/chunks/{learning-XRPGLUWR.js → learning-4IEEOHJS.js} +3 -3
- package/dist/cli/chunks/{llm-router-OMK5HYPH.js → llm-router-ZFMORP36.js} +4 -4
- package/dist/cli/chunks/llm-router-service-4DE5WDUZ.js +2 -0
- package/dist/cli/chunks/{load-XADC7KCU.js → load-ZM43WGDO.js} +2 -2
- package/dist/cli/chunks/load-test-POMIF4Q4.js +2 -0
- package/dist/cli/chunks/{mcp-PIBKSSVU.js → mcp-CRZKZE37.js} +2 -2
- package/dist/cli/chunks/{memory-AP7EZERS.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-7JJ2FZ33.js → multi-model-executor-SXXGAQ2G.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-ZZZ6EBYJ.js → opencode-installer-PIRBUAB5.js} +2 -2
- package/dist/cli/chunks/{orchestrator-2H2YKSGJ.js → orchestrator-H5SQCQTB.js} +11 -10
- package/dist/cli/chunks/pattern-null-store-CCHQHGQG.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-7MJJWC2Z.js → pattern-usage-recorder-XZTWDI2T.js} +2 -2
- package/dist/cli/chunks/{pipeline-LIE5BWQY.js → pipeline-5LMLBIJ7.js} +2 -2
- package/dist/cli/chunks/{platform-SMYUNLGX.js → platform-KJDABL5C.js} +2 -2
- package/dist/cli/chunks/{plugin-LJDIXQNT.js → plugin-V4KSBVVM.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-RIDNE5D2.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-YVM66DLI.js → protocol-handler-BNRONTQV.js} +2 -2
- package/dist/cli/chunks/{prove-ZBDT52GD.js → prove-ELLL6XMX.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-ZD3WF647.js +2 -0
- package/dist/cli/chunks/{quality-DUKXGDDO.js → quality-NH2QA4D4.js} +2 -2
- package/dist/cli/chunks/{quality-gate-SM3RXF4V.js → quality-gate-JTKLF7GW.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-S4U4MKK2.js +2 -0
- package/dist/cli/chunks/{real-embeddings-4QLQZDB5.js → real-embeddings-J3KCKLPB.js} +2 -2
- package/dist/cli/chunks/{ref-validation-M3EO32YQ.js → ref-validation-HNXQRP4F.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-S6Q5OLV5.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-55FMUACP.js → routing-handler-WM33ZILE.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-QATKAAPK.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-RFXFU6JD.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-PKDVXQAW.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-CMRB6WA3.js → security-AUDTRX3I.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-YHLLNFHF.js → shared-rvf-adapter-PVDGBGI2.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-4BGDVPQ7.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-LUHKQAGM.js → standalone-memory-XNOAI4G4.js} +2 -2
- package/dist/cli/chunks/{status-handler-S6S5PNR7.js → status-handler-K72XZE4T.js} +2 -2
- package/dist/cli/chunks/{structural-health-PQ7NZAJ4.js → structural-health-NF3YY7U5.js} +2 -2
- package/dist/cli/chunks/{sync-S744AEJC.js → sync-UVXA6CT2.js} +2 -2
- package/dist/cli/chunks/{sync-Q6KRQXU6.js → sync-VBD5Y3E2.js} +2 -2
- package/dist/cli/chunks/{task-handler-GAMGEHUW.js → task-handler-24S3WFVJ.js} +13 -7
- package/dist/cli/chunks/task-handlers-GUYW2EPJ.js +9 -0
- package/dist/cli/chunks/{test-FNH67DBK.js → test-XFSGQELD.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-NZA5SHK6.js → test-scheduling-VYUQ4CDE.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-CXKG55JD.js → token-bootstrap-EDK6FNQ3.js} +2 -2
- package/dist/cli/chunks/{token-usage-M7WWEDJX.js → token-usage-VLQ6WO2L.js} +2 -2
- package/dist/cli/chunks/{transformers-2IFMCK6A.js → transformers-TOFMWWNM.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-NMNA6RJC.js → tree-sitter-wasm-parser-MI3NZKUD.js} +2 -2
- package/dist/cli/chunks/{types-N7FWTOLD.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-KDB5RGL7.js → upgrade-4ABM72T4.js} +2 -2
- package/dist/cli/chunks/{validate-KMUV5FUA.js → validate-UDJCWKXI.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-ANZWRCJU.js → validate-swarm-TODOUWNN.js} +2 -2
- package/dist/cli/chunks/visual-security-6VZNQLH7.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-SXXC4NMS.js → web-tree-sitter-WBMAJPM5.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-2LWSKMBU.js → windsurf-installer-BTT53TUL.js} +2 -2
- package/dist/cli/chunks/witness-chain-AKKHWEWU.js +2 -0
- package/dist/cli/chunks/{witness-chain-JJMSJFZP.js → witness-chain-TATPXQRK.js} +2 -2
- package/dist/cli/chunks/{witness-chain-repair-OX7VFW6T.js → witness-chain-repair-2HGJGE7O.js} +2 -2
- package/dist/cli/chunks/{witness-chain-verifier-QLSMXHAZ.js → witness-chain-verifier-FRY3LMGH.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-3DS4L7LE.js → witness-key-manager-X7QHQQWL.js} +2 -2
- package/dist/cli/chunks/{workflow-ARWAMHD3.js → workflow-QMZPAWQW.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-4GAW7HNZ.js +2 -0
- package/dist/cli/chunks/{wrappers-J6KGTUSJ.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 +130 -58
- 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/coverage-analysis/collected-metrics.js +2 -1
- package/dist/domains/defect-intelligence/services/defect-predictor.js +4 -2
- package/dist/domains/learning-optimization/active-patterns.d.ts +55 -0
- package/dist/domains/learning-optimization/active-patterns.js +80 -0
- 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 +50 -106
- 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 +68 -34
- 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/retry-handler.js +18 -2
- 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-engine.d.ts +27 -1
- package/dist/learning/dream/dream-engine.js +56 -2
- package/dist/learning/dream/dream-insights-pruner.d.ts +18 -4
- package/dist/learning/dream/dream-insights-pruner.js +99 -11
- package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -0
- package/dist/learning/dream/rvcow-branch-manager.js +8 -0
- package/dist/learning/dream/speculative-dreamer.d.ts +8 -0
- package/dist/learning/dream/speculative-dreamer.js +8 -0
- package/dist/learning/skill-validation-learner.d.ts +2 -0
- package/dist/learning/skill-validation-learner.js +29 -21
- package/dist/mcp/background-workers.d.ts +15 -0
- package/dist/mcp/background-workers.js +77 -0
- package/dist/mcp/bundle.js +511 -484
- package/dist/mcp/entry.js +4 -49
- 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 +7 -0
- package/dist/workers/daemon.js +21 -2
- 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 +53 -0
- package/dist/workers/worker-env.js +89 -0
- package/dist/workers/worker-manager.js +4 -0
- package/dist/workers/workers/learning-consolidation.d.ts +20 -0
- package/dist/workers/workers/learning-consolidation.js +57 -23
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-PEOUNYXJ.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-DHKZI5RX.js +0 -2
- package/dist/cli/chunks/base-QZWK3D5P.js +0 -2
- package/dist/cli/chunks/browser-workflow-ITPX72RX.js +0 -2
- package/dist/cli/chunks/chunk-CG5DZCOZ.js +0 -2
- package/dist/cli/chunks/chunk-QJE6ZW2X.js +0 -6
- package/dist/cli/chunks/chunk-T3ZDVU6F.js +0 -5
- package/dist/cli/chunks/chunk-UIYKR2SA.js +0 -2
- package/dist/cli/chunks/chunk-VJRZFWR5.js +0 -2
- package/dist/cli/chunks/chunk-VUFRTGML.js +0 -3
- package/dist/cli/chunks/chunk-YDZJWDR6.js +0 -180
- package/dist/cli/chunks/client-S7GNYTZ5.js +0 -2
- package/dist/cli/chunks/core-handlers-CUEPOQIO.js +0 -2
- package/dist/cli/chunks/cross-domain-router-CXN5QFEV.js +0 -2
- package/dist/cli/chunks/daemon-3DQCKRYO.js +0 -10
- package/dist/cli/chunks/dream-5AUNJW24.js +0 -2
- package/dist/cli/chunks/file-discovery-AYWF357I.js +0 -2
- package/dist/cli/chunks/fleet-QX5KXTRC.js +0 -43
- package/dist/cli/chunks/heartbeat-scheduler-7ZIDVXIP.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-P77OC7FM.js +0 -2
- package/dist/cli/chunks/hnsw-index-3LBOTQAW.js +0 -2
- package/dist/cli/chunks/hybrid-backend-LOM54PDD.js +0 -2
- package/dist/cli/chunks/impact-analyzer-QSDJVBPS.js +0 -2
- package/dist/cli/chunks/init-wizard-MK2325JJ.js +0 -2
- package/dist/cli/chunks/kernel-2NJQQ2KT.js +0 -2
- package/dist/cli/chunks/knowledge-graph-SDISHO62.js +0 -2
- package/dist/cli/chunks/llm-router-service-YTCMRBAN.js +0 -2
- package/dist/cli/chunks/load-test-RPKHLBCC.js +0 -2
- package/dist/cli/chunks/memory-backend-BZXFO4JZ.js +0 -2
- package/dist/cli/chunks/memory-handlers-MOFDNB6E.js +0 -2
- package/dist/cli/chunks/pattern-null-store-4PRPIOR6.js +0 -2
- package/dist/cli/chunks/project-root-NBIQF63D.js +0 -2
- package/dist/cli/chunks/protocol-executor-BRPGIYWQ.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-GDZACWKW.js +0 -2
- package/dist/cli/chunks/queen-coordinator-LDKLBPD5.js +0 -2
- package/dist/cli/chunks/router-H5YSIRH2.js +0 -2
- package/dist/cli/chunks/routing-feedback-5R36TJDH.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-TT2DBQQQ.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-BCLFJKSK.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-UXI66OQJ.js +0 -2
- package/dist/cli/chunks/safe-db-MSTD2GDH.js +0 -2
- package/dist/cli/chunks/schedule-KST6KIFD.js +0 -2
- package/dist/cli/chunks/scheduler-FTQS6YK3.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-ZX5QFDMR.js +0 -2
- package/dist/cli/chunks/task-handlers-6CRDEELN.js +0 -9
- package/dist/cli/chunks/unified-memory-2Z2F446J.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-A4EWYPJQ.js +0 -2
- package/dist/cli/chunks/unified-persistence-Z6N6JZFA.js +0 -2
- package/dist/cli/chunks/visual-security-GXYZV7KR.js +0 -2
- package/dist/cli/chunks/witness-chain-52PEIEGK.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-DORMQMG7.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,6 +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 { 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');
|
|
12
18
|
const DEFAULT_CONFIG = {
|
|
13
19
|
minPatternsForConsolidation: 5,
|
|
14
20
|
similarityThreshold: 0.85,
|
|
@@ -16,6 +22,8 @@ const DEFAULT_CONFIG = {
|
|
|
16
22
|
minConfidenceThreshold: 0.5,
|
|
17
23
|
analysisWindowWeeks: 4,
|
|
18
24
|
enableCrossProjectTransfer: true,
|
|
25
|
+
dryRun: true,
|
|
26
|
+
retentionGraceDays: 7,
|
|
19
27
|
};
|
|
20
28
|
// ============================================================================
|
|
21
29
|
// Learning Consolidation Protocol Implementation
|
|
@@ -61,20 +69,29 @@ export class LearningConsolidationProtocol {
|
|
|
61
69
|
const domainReports = [];
|
|
62
70
|
let totalMerged = 0;
|
|
63
71
|
let totalRemoved = 0;
|
|
72
|
+
let totalArchived = 0;
|
|
64
73
|
let totalRetained = 0;
|
|
74
|
+
const dryRun = this.config.dryRun;
|
|
65
75
|
for (const domainGroup of gatheredPatterns.value) {
|
|
66
76
|
const consolidationResult = await this.consolidatePatterns(consolidationId, domainGroup);
|
|
67
77
|
if (consolidationResult.success) {
|
|
68
78
|
domainReports.push(consolidationResult.value);
|
|
69
79
|
totalMerged += consolidationResult.value.mergedPatterns.length;
|
|
70
80
|
totalRemoved += consolidationResult.value.removedPatterns.length;
|
|
81
|
+
totalArchived += consolidationResult.value.archiveCounts.archived;
|
|
71
82
|
totalRetained += consolidationResult.value.patternsAfterCount;
|
|
72
83
|
}
|
|
73
84
|
}
|
|
74
|
-
// Step 3: Update knowledge base with consolidated patterns
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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);
|
|
78
95
|
// Step 5: Generate weekly insights
|
|
79
96
|
const insights = await this.generateInsights(gatheredPatterns.value, domainReports);
|
|
80
97
|
const completedAt = new Date();
|
|
@@ -84,6 +101,7 @@ export class LearningConsolidationProtocol {
|
|
|
84
101
|
totalPatternsAnalyzed: gatheredPatterns.value.reduce((sum, g) => sum + g.patterns.length, 0),
|
|
85
102
|
patternsMerged: totalMerged,
|
|
86
103
|
patternsRemoved: totalRemoved,
|
|
104
|
+
patternsArchived: totalArchived,
|
|
87
105
|
patternsRetained: totalRetained,
|
|
88
106
|
knowledgeItemsUpdated: knowledgeUpdateResult.success
|
|
89
107
|
? knowledgeUpdateResult.value
|
|
@@ -93,10 +111,20 @@ export class LearningConsolidationProtocol {
|
|
|
93
111
|
? transferResult.value.length
|
|
94
112
|
: 0,
|
|
95
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
|
+
});
|
|
96
123
|
// Publish completion event
|
|
97
124
|
await this.publishCompletedEvent(consolidationId, stats, insights, duration);
|
|
98
125
|
const result = {
|
|
99
126
|
consolidationId,
|
|
127
|
+
dryRun,
|
|
100
128
|
startedAt,
|
|
101
129
|
completedAt,
|
|
102
130
|
stats,
|
|
@@ -105,7 +133,9 @@ export class LearningConsolidationProtocol {
|
|
|
105
133
|
domainReports,
|
|
106
134
|
};
|
|
107
135
|
// Store result for historical analysis
|
|
108
|
-
|
|
136
|
+
if (!dryRun) {
|
|
137
|
+
await this.storeConsolidationResult(result);
|
|
138
|
+
}
|
|
109
139
|
return ok(result);
|
|
110
140
|
}
|
|
111
141
|
catch (error) {
|
|
@@ -122,8 +152,9 @@ export class LearningConsolidationProtocol {
|
|
|
122
152
|
try {
|
|
123
153
|
const domainGroups = [];
|
|
124
154
|
const timeRange = TimeRange.lastNDays(this.config.analysisWindowWeeks * 7);
|
|
155
|
+
const activePatterns = await this.readActivePatterns();
|
|
125
156
|
for (const domain of ALL_DOMAINS) {
|
|
126
|
-
const patterns =
|
|
157
|
+
const patterns = this.getPatternsForDomain(activePatterns, domain, timeRange);
|
|
127
158
|
if (patterns.length > 0) {
|
|
128
159
|
const stats = this.calculateDomainStats(patterns, timeRange);
|
|
129
160
|
domainGroups.push({ domain, patterns, stats });
|
|
@@ -136,21 +167,21 @@ export class LearningConsolidationProtocol {
|
|
|
136
167
|
}
|
|
137
168
|
}
|
|
138
169
|
/**
|
|
139
|
-
*
|
|
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.
|
|
140
175
|
*/
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
patterns.push(pattern);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
return patterns;
|
|
176
|
+
readActivePatterns() {
|
|
177
|
+
return readActivePatterns(this.memory, { retrieve: LEARNING_NS });
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Patterns of one domain created or used within the analysis window
|
|
181
|
+
*/
|
|
182
|
+
getPatternsForDomain(patterns, domain, timeRange) {
|
|
183
|
+
return patterns.filter((pattern) => pattern.domain === domain &&
|
|
184
|
+
(timeRange.contains(pattern.createdAt) || timeRange.contains(pattern.lastUsedAt)));
|
|
154
185
|
}
|
|
155
186
|
/**
|
|
156
187
|
* Calculate statistics for a domain's patterns
|
|
@@ -209,10 +240,23 @@ export class LearningConsolidationProtocol {
|
|
|
209
240
|
const mergedPatterns = [];
|
|
210
241
|
const removedPatterns = [];
|
|
211
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)));
|
|
212
247
|
// Group similar patterns for merging
|
|
213
|
-
const similarGroups = this.groupSimilarPatterns(patterns);
|
|
248
|
+
const similarGroups = this.groupSimilarPatterns(patterns.filter((p) => !this.isInGracePeriod(p)));
|
|
214
249
|
for (const group of similarGroups) {
|
|
215
|
-
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) {
|
|
216
260
|
// Merge similar patterns
|
|
217
261
|
const mergeResult = await this.mergePatternGroup(group);
|
|
218
262
|
if (mergeResult.success) {
|
|
@@ -236,32 +280,34 @@ export class LearningConsolidationProtocol {
|
|
|
236
280
|
name: pattern.name,
|
|
237
281
|
removalReason: this.getRemovalReason(pattern),
|
|
238
282
|
});
|
|
239
|
-
|
|
283
|
+
toArchive.push(pattern);
|
|
240
284
|
}
|
|
241
285
|
}
|
|
242
286
|
}
|
|
243
|
-
// 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.
|
|
244
289
|
const finalPatterns = this.trimToMaxPatterns(retainedPatterns, domain);
|
|
245
|
-
const
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
}
|
|
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);
|
|
256
300
|
}
|
|
301
|
+
const archiveCounts = await this.archivePatterns(domain, toArchive);
|
|
257
302
|
// Publish domain consolidation event
|
|
258
|
-
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);
|
|
259
304
|
const report = {
|
|
260
305
|
domain,
|
|
261
306
|
patternsBeforeCount: patterns.length,
|
|
262
307
|
patternsAfterCount: finalPatterns.length,
|
|
263
308
|
mergedPatterns,
|
|
264
309
|
removedPatterns,
|
|
310
|
+
archiveCounts,
|
|
265
311
|
topPerformingPatterns: this.getTopPerformingPatterns(finalPatterns, 5),
|
|
266
312
|
improvementAreas: this.identifyImprovementAreas(domainGroup),
|
|
267
313
|
};
|
|
@@ -385,17 +431,30 @@ export class LearningConsolidationProtocol {
|
|
|
385
431
|
}
|
|
386
432
|
return 'Below retention threshold';
|
|
387
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
|
+
}
|
|
388
438
|
/**
|
|
389
|
-
* 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.
|
|
390
442
|
*/
|
|
391
|
-
async
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
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;
|
|
399
458
|
}
|
|
400
459
|
/**
|
|
401
460
|
* Trim patterns to max allowed per domain
|
|
@@ -404,14 +463,18 @@ export class LearningConsolidationProtocol {
|
|
|
404
463
|
if (patterns.length <= this.config.maxPatternsPerDomain) {
|
|
405
464
|
return patterns;
|
|
406
465
|
}
|
|
407
|
-
//
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
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)];
|
|
415
478
|
}
|
|
416
479
|
/**
|
|
417
480
|
* Get top performing patterns
|
|
@@ -462,7 +525,8 @@ export class LearningConsolidationProtocol {
|
|
|
462
525
|
updatedCount++;
|
|
463
526
|
// Share high-performing pattern knowledge with related domains
|
|
464
527
|
if (pattern.successRate >= 0.8) {
|
|
465
|
-
|
|
528
|
+
// #1071: read where createKnowledgeFromPattern() writes it.
|
|
529
|
+
const knowledge = await this.memory.get(`learning:knowledge:pattern:${pattern.id}`, LEARNING_NS);
|
|
466
530
|
if (knowledge) {
|
|
467
531
|
// Use knowledgeService to share across domains
|
|
468
532
|
await this.knowledgeService.shareKnowledge(knowledge, [
|
|
@@ -700,7 +764,7 @@ export class LearningConsolidationProtocol {
|
|
|
700
764
|
};
|
|
701
765
|
await this.eventBus.publish(event);
|
|
702
766
|
}
|
|
703
|
-
async publishPatternConsolidatedEvent(consolidationId, domain, patternsBeforeCount, patternsAfterCount, mergedPatternIds, removedPatternIds) {
|
|
767
|
+
async publishPatternConsolidatedEvent(consolidationId, domain, patternsBeforeCount, patternsAfterCount, mergedPatternIds, removedPatternIds, dryRun) {
|
|
704
768
|
const event = {
|
|
705
769
|
id: uuidv4(),
|
|
706
770
|
type: 'PatternConsolidated',
|
|
@@ -713,6 +777,7 @@ export class LearningConsolidationProtocol {
|
|
|
713
777
|
patternsAfterCount,
|
|
714
778
|
mergedPatternIds,
|
|
715
779
|
removedPatternIds,
|
|
780
|
+
dryRun,
|
|
716
781
|
},
|
|
717
782
|
};
|
|
718
783
|
await this.eventBus.publish(event);
|
|
@@ -728,6 +793,7 @@ export class LearningConsolidationProtocol {
|
|
|
728
793
|
stats,
|
|
729
794
|
insights,
|
|
730
795
|
duration,
|
|
796
|
+
dryRun: this.config.dryRun,
|
|
731
797
|
},
|
|
732
798
|
};
|
|
733
799
|
await this.eventBus.publish(event);
|
|
@@ -767,15 +833,21 @@ export class LearningConsolidationProtocol {
|
|
|
767
833
|
* Get previous consolidation results for trend analysis
|
|
768
834
|
*/
|
|
769
835
|
async getPreviousConsolidations(count) {
|
|
770
|
-
|
|
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
|
+
});
|
|
771
841
|
const results = [];
|
|
772
842
|
for (const key of keys) {
|
|
773
|
-
const result = await this.memory.get(key);
|
|
843
|
+
const result = rehydrateDates(await this.memory.get(key, LEARNING_NS), ['startedAt', 'completedAt']);
|
|
774
844
|
if (result) {
|
|
775
845
|
results.push(result);
|
|
776
846
|
}
|
|
777
847
|
}
|
|
778
|
-
return results
|
|
848
|
+
return results
|
|
849
|
+
.sort((a, b) => b.completedAt.getTime() - a.completedAt.getTime())
|
|
850
|
+
.slice(0, count);
|
|
779
851
|
}
|
|
780
852
|
/**
|
|
781
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,
|