agentic-qe 3.15.9 → 3.15.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +251 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/adapters/a2ui/catalog/component-schemas.js +2 -1
- package/dist/adapters/a2ui/data/json-pointer-resolver.js +10 -5
- package/dist/adapters/a2ui/integration/agui-sync.js +10 -6
- package/dist/adapters/a2ui/integration/surface-state-bridge.js +9 -5
- package/dist/adapters/ag-ui/json-patch.js +10 -6
- package/dist/audit/witness-chain.d.ts +1 -1
- package/dist/cli/bundle.js +6 -6
- package/dist/cli/chunks/adapter-TR5SLAZC.js +2 -0
- package/dist/cli/chunks/agent-booster-wasm-H7ANGXW4.js +2 -0
- package/dist/cli/chunks/{agent-handler-RIYHTHVZ.js → agent-handler-SVXSHEET.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-WSUCUHOO.js → agent-memory-branch-WKQH36XL.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-DXWKCHY2.js +2 -0
- package/dist/cli/chunks/{arena-KRIBMIXX.js → arena-EKOOFVST.js} +2 -2
- package/dist/cli/chunks/{arena-YAJZX6MC.js → arena-OPS36NFZ.js} +4 -4
- package/dist/cli/chunks/{audit-7ZNOXWP3.js → audit-AO5NDZRI.js} +3 -3
- package/dist/cli/chunks/base-GTB6POYE.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-ZQAT4I6H.js → better-sqlite3-TFLVEMMY.js} +2 -2
- package/dist/cli/chunks/{brain-handler-452WCPZC.js → brain-handler-ADBBJPYW.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-IJFXJRPN.js → branch-enumerator-HGHUYYL5.js} +2 -2
- package/dist/cli/chunks/browser-5LU6P4SZ.js +4 -0
- package/dist/cli/chunks/browser-workflow-MSBOLYUY.js +2 -0
- package/dist/cli/chunks/{chunk-UOJBR4J3.js → chunk-2SXBBUM6.js} +2 -2
- package/dist/cli/chunks/{chunk-7JKB3Q7O.js → chunk-2T7RRL6G.js} +1 -1
- package/dist/cli/chunks/{chunk-HCYQHWI2.js → chunk-2XGVTYVX.js} +2 -2
- package/dist/cli/chunks/{chunk-3LYU7BLY.js → chunk-2ZI5FKSF.js} +2 -2
- package/dist/cli/chunks/chunk-2ZMF4NCF.js +4 -0
- package/dist/cli/chunks/{chunk-F3PQZX44.js → chunk-37OWRCUN.js} +1 -1
- package/dist/cli/chunks/{chunk-YRBBBUJX.js → chunk-3P34JFQH.js} +4 -4
- package/dist/cli/chunks/{chunk-ICP2ORGI.js → chunk-3Y7SPD72.js} +2 -2
- package/dist/cli/chunks/{chunk-WGDR2KIR.js → chunk-4G63WT4F.js} +2 -2
- package/dist/cli/chunks/chunk-4SJYIX54.js +3 -0
- package/dist/cli/chunks/chunk-5E6GHSTY.js +3 -0
- package/dist/cli/chunks/{chunk-OXTFSIGN.js → chunk-5LPYV3TK.js} +1 -1
- package/dist/cli/chunks/{chunk-XWIUFYM3.js → chunk-62OAY5KJ.js} +1 -1
- package/dist/cli/chunks/{chunk-VCMINU7K.js → chunk-6C3II5OM.js} +2 -2
- package/dist/cli/chunks/{chunk-EFBLP43U.js → chunk-6GP6W46M.js} +2 -2
- package/dist/cli/chunks/{chunk-4JCY45KV.js → chunk-6KIL6CMD.js} +2 -2
- package/dist/cli/chunks/{chunk-CTZJUV5I.js → chunk-6MVVSSID.js} +1 -1
- package/dist/cli/chunks/{chunk-JEP4ULR6.js → chunk-6P7424AO.js} +2 -2
- package/dist/cli/chunks/{chunk-SVHUYVUR.js → chunk-6PX4OXQO.js} +2 -2
- package/dist/cli/chunks/{chunk-LEAKYZ37.js → chunk-6S3WJGUV.js} +2 -2
- package/dist/cli/chunks/{chunk-7X2Y727E.js → chunk-6TB6YOCZ.js} +1 -1
- package/dist/cli/chunks/{chunk-VU2EL424.js → chunk-6X5DHU6Q.js} +1 -1
- package/dist/cli/chunks/{chunk-DDPPSSHW.js → chunk-6XCMKIZN.js} +1 -1
- package/dist/cli/chunks/{chunk-ZANDSVCK.js → chunk-7LFZ4CHM.js} +2 -2
- package/dist/cli/chunks/{chunk-UYLYMWV5.js → chunk-7OZVZIBE.js} +2 -2
- package/dist/cli/chunks/{chunk-32UTLDNY.js → chunk-7PJIR4ST.js} +2 -2
- package/dist/cli/chunks/{chunk-DINZR5CF.js → chunk-7TB6FK4B.js} +1 -1
- package/dist/cli/chunks/{chunk-KVBEGOJE.js → chunk-7ZCDZHDB.js} +2 -2
- package/dist/cli/chunks/{chunk-55HRSNGN.js → chunk-A55QKKT2.js} +2 -2
- package/dist/cli/chunks/{chunk-LCJTEUDC.js → chunk-ABFFWZPC.js} +428 -433
- package/dist/cli/chunks/{chunk-PVIA2FPD.js → chunk-ACWFKES2.js} +2 -2
- package/dist/cli/chunks/{chunk-2BA45H64.js → chunk-AH3ZD3NJ.js} +2 -2
- package/dist/cli/chunks/{chunk-OG2UI6A3.js → chunk-AI4VYSFS.js} +2 -2
- package/dist/cli/chunks/chunk-APSRPR4W.js +2 -0
- package/dist/cli/chunks/chunk-ATHWDAXB.js +3 -0
- package/dist/cli/chunks/{chunk-TSYQDRNK.js → chunk-B6LTH6YV.js} +2 -2
- package/dist/cli/chunks/chunk-BQUAE3CP.js +3 -0
- package/dist/cli/chunks/{chunk-OCESWNAZ.js → chunk-C522H7XR.js} +54 -33
- package/dist/cli/chunks/{chunk-TUYJ53V4.js → chunk-CESIR27V.js} +2 -2
- package/dist/cli/chunks/{chunk-PBZI2ZPV.js → chunk-CFBEBXLO.js} +3 -3
- package/dist/cli/chunks/{chunk-FJ4VTLLK.js → chunk-CMBLM26R.js} +2 -2
- package/dist/cli/chunks/{chunk-YZYDTABJ.js → chunk-CZ2IF6MC.js} +1 -1
- package/dist/cli/chunks/{chunk-GKPQ2GRR.js → chunk-CZGOSJQ4.js} +2 -2
- package/dist/cli/chunks/{chunk-FL3OYGCS.js → chunk-D6DA2KFD.js} +2 -2
- package/dist/cli/chunks/{chunk-37BIGMJI.js → chunk-DBMNJSBV.js} +1 -1
- package/dist/cli/chunks/{chunk-BHKXMIWX.js → chunk-DE4YJQJF.js} +2 -2
- package/dist/cli/chunks/{chunk-3CJCROMW.js → chunk-DEF34AFL.js} +2 -2
- package/dist/cli/chunks/chunk-DKAC3E3B.js +3 -0
- package/dist/cli/chunks/{chunk-AOFO4N32.js → chunk-DMFTELBS.js} +2 -2
- package/dist/cli/chunks/{chunk-KLGYIEJK.js → chunk-DNRWGATA.js} +10 -10
- package/dist/cli/chunks/{chunk-JWGRWMZP.js → chunk-DT7SIJOA.js} +2 -2
- package/dist/cli/chunks/{chunk-6PXA2BQJ.js → chunk-DURHK377.js} +67 -67
- package/dist/cli/chunks/{chunk-HAROIAJE.js → chunk-EAU5KDFO.js} +1 -1
- package/dist/cli/chunks/{chunk-L42JPFCC.js → chunk-EDLFX4ZB.js} +2 -2
- package/dist/cli/chunks/{chunk-6OOYIO3W.js → chunk-EN2QSKFF.js} +2 -2
- package/dist/cli/chunks/{chunk-UNUTC6TX.js → chunk-ERQKYIP7.js} +2 -2
- package/dist/cli/chunks/{chunk-KFUUIAR4.js → chunk-ESUO3GTJ.js} +2 -2
- package/dist/cli/chunks/{chunk-4V27J6YN.js → chunk-EWFECZ2U.js} +2 -2
- package/dist/cli/chunks/{chunk-4W4DYVSH.js → chunk-FAUCT5KR.js} +3 -3
- package/dist/cli/chunks/{chunk-IFEIY3NQ.js → chunk-FB6TI3BH.js} +2 -2
- package/dist/cli/chunks/{chunk-2TDIS6YK.js → chunk-FBXTQNRH.js} +2 -2
- package/dist/cli/chunks/{chunk-XOLDMK23.js → chunk-FESZBPUB.js} +2 -2
- package/dist/cli/chunks/chunk-FFTPAWM6.js +141 -0
- package/dist/cli/chunks/{chunk-A6YIH4C4.js → chunk-FKL3R5JQ.js} +2 -2
- package/dist/cli/chunks/{chunk-N5PDFGCQ.js → chunk-FPUDRSFJ.js} +2 -2
- package/dist/cli/chunks/{chunk-7QGYJ5OY.js → chunk-FZOWULMH.js} +1 -1
- package/dist/cli/chunks/{chunk-AVB5QY2Q.js → chunk-G3CZCUPM.js} +2 -2
- package/dist/cli/chunks/{chunk-FV3NHVC7.js → chunk-G5I6KGMW.js} +3 -3
- package/dist/cli/chunks/{chunk-N3KEY4XJ.js → chunk-GHBNRMSJ.js} +2 -2
- package/dist/cli/chunks/{chunk-2YH62JCN.js → chunk-GJHWY3ZX.js} +2 -2
- package/dist/cli/chunks/{chunk-ZXBCCO2H.js → chunk-GJMLK5UT.js} +2 -2
- package/dist/cli/chunks/{chunk-NHZIWIQZ.js → chunk-GRCIBCJ2.js} +2 -2
- package/dist/cli/chunks/{chunk-J3DTDJDT.js → chunk-GWZZ7DAO.js} +2 -2
- package/dist/cli/chunks/{chunk-4SUOVLJ6.js → chunk-GZLZCZ42.js} +2 -2
- package/dist/cli/chunks/{chunk-MZS32SYS.js → chunk-H2PYU7MN.js} +1 -1
- package/dist/cli/chunks/{chunk-ABFDB4X3.js → chunk-H32EPIR2.js} +1 -1
- package/dist/cli/chunks/{chunk-KIXYKUCI.js → chunk-H74Q7TJN.js} +1 -1
- package/dist/cli/chunks/chunk-HOZUDE4C.js +2 -0
- package/dist/cli/chunks/{chunk-PMCRCEW5.js → chunk-I33O4BRQ.js} +2 -2
- package/dist/cli/chunks/{chunk-N3NP6PTT.js → chunk-IKISCIGH.js} +2 -2
- package/dist/cli/chunks/{chunk-Q3JVJRVJ.js → chunk-IPJ7Q3AJ.js} +1 -1
- package/dist/cli/chunks/{chunk-WRRCQ2UE.js → chunk-IU2IV4NE.js} +1 -1
- package/dist/cli/chunks/{chunk-QQ5SZH4D.js → chunk-JHIY4VCC.js} +2 -2
- package/dist/cli/chunks/{chunk-W32YU3VI.js → chunk-KG336OV3.js} +2 -2
- package/dist/cli/chunks/{chunk-W5VJRDDG.js → chunk-KI73QCR5.js} +2 -2
- package/dist/cli/chunks/{chunk-HGTWAZWU.js → chunk-KNQ2ERFX.js} +2 -2
- package/dist/cli/chunks/{chunk-SNBYYO6F.js → chunk-KOBVYY6H.js} +2 -2
- package/dist/cli/chunks/{chunk-VQHVHVSF.js → chunk-KSIWGGJI.js} +8 -8
- package/dist/cli/chunks/{chunk-REUFWGMA.js → chunk-LMS3Y7JD.js} +2 -2
- package/dist/cli/chunks/{chunk-LMU5DUDK.js → chunk-LQEURY7C.js} +1 -1
- package/dist/cli/chunks/{chunk-AJ4YDSOI.js → chunk-LRZY4KS2.js} +2 -2
- package/dist/cli/chunks/{chunk-KIKWJM6J.js → chunk-M2QV7PT7.js} +2 -2
- package/dist/cli/chunks/{chunk-TNMQVG4A.js → chunk-MA7JIQ6U.js} +2 -2
- package/dist/cli/chunks/{chunk-I6S35FRO.js → chunk-MG27QY4D.js} +2 -2
- package/dist/cli/chunks/chunk-MNN5J4GU.js +12 -0
- package/dist/cli/chunks/chunk-N6PIIK6G.js +3 -0
- package/dist/cli/chunks/chunk-NAXGWDVM.js +12 -0
- package/dist/cli/chunks/{chunk-XOVNZT7F.js → chunk-NGKNYIQZ.js} +1 -1
- package/dist/cli/chunks/chunk-NNFZUTDH.js +2 -0
- package/dist/cli/chunks/{chunk-ZVSLCEVC.js → chunk-NPPHWFA2.js} +3 -3
- package/dist/cli/chunks/{chunk-JNNZK7KH.js → chunk-NSHU347M.js} +1 -1
- package/dist/cli/chunks/{chunk-PX2B5TS2.js → chunk-NVYIZCSR.js} +2 -2
- package/dist/cli/chunks/{chunk-5NS3USRW.js → chunk-NW5JUCCG.js} +1 -1
- package/dist/cli/chunks/{chunk-KR3M44CF.js → chunk-NZYLNXT6.js} +3 -3
- package/dist/cli/chunks/{chunk-5D2I7JUP.js → chunk-OBAREPDC.js} +2 -2
- package/dist/cli/chunks/{chunk-F4JYIRW2.js → chunk-ODJNUMV3.js} +2 -2
- package/dist/cli/chunks/{chunk-K5DJXMAA.js → chunk-OEKP73MC.js} +2 -2
- package/dist/cli/chunks/{chunk-2URBI52G.js → chunk-OPFGRS5S.js} +2 -2
- package/dist/cli/chunks/{chunk-HZ5NC6U5.js → chunk-OY2AHLSF.js} +1 -1
- package/dist/cli/chunks/{chunk-GII5WVAK.js → chunk-OY3NJNP2.js} +1 -1
- package/dist/cli/chunks/{chunk-P73W2K7T.js → chunk-PCEW6Q2C.js} +1 -1
- package/dist/cli/chunks/{chunk-7QTB5VJZ.js → chunk-PFG6VQ5Z.js} +2 -2
- package/dist/cli/chunks/{chunk-7KII4CQG.js → chunk-PGYMKGOE.js} +2 -2
- package/dist/cli/chunks/{chunk-BXO536GT.js → chunk-PPSAMXYN.js} +3 -3
- package/dist/cli/chunks/chunk-RK73HB2F.js +2 -0
- package/dist/cli/chunks/{chunk-ZBDRLF43.js → chunk-RPHY2DU6.js} +2 -2
- package/dist/cli/chunks/{chunk-XDBD4GXO.js → chunk-RWWOHCMG.js} +25 -20
- package/dist/cli/chunks/{chunk-J5KNRVXR.js → chunk-S75EYIJG.js} +1 -1
- package/dist/cli/chunks/{chunk-ETG7O5E5.js → chunk-SKQUUE4F.js} +5 -5
- package/dist/cli/chunks/chunk-SO45NA4D.js +180 -0
- package/dist/cli/chunks/{chunk-47V7FQGX.js → chunk-SU5H66SD.js} +2 -2
- package/dist/cli/chunks/{chunk-NTAD5UX4.js → chunk-SY2IB442.js} +2 -2
- package/dist/cli/chunks/{chunk-D6XVGFTI.js → chunk-TBLI254A.js} +2 -2
- package/dist/cli/chunks/{chunk-47TYABPD.js → chunk-TNMBRDCA.js} +3 -3
- package/dist/cli/chunks/{chunk-P2CXVNKK.js → chunk-TYFZXDGZ.js} +2 -2
- package/dist/cli/chunks/{chunk-2XITOPYV.js → chunk-U4OICXV2.js} +2 -2
- package/dist/cli/chunks/{chunk-JAV5WPSY.js → chunk-U53ZB4IX.js} +2 -2
- package/dist/cli/chunks/chunk-UARKIZAS.js +2 -0
- package/dist/cli/chunks/{chunk-2HL3UM5P.js → chunk-UCJMVXO4.js} +2 -2
- package/dist/cli/chunks/{chunk-HWK5L7IJ.js → chunk-UHTTW3IT.js} +2 -2
- package/dist/cli/chunks/{chunk-OXZLKP6C.js → chunk-V2M2XCR5.js} +1 -1
- package/dist/cli/chunks/{chunk-YZGSJG34.js → chunk-V2RSNVMW.js} +1 -1
- package/dist/cli/chunks/{chunk-5JWGCIQW.js → chunk-V6JBOIMX.js} +1 -1
- package/dist/cli/chunks/{chunk-JUVHZG7I.js → chunk-VFKF2XO7.js} +1 -1
- package/dist/cli/chunks/{chunk-XQ3DDY7X.js → chunk-VFSYMOAL.js} +2 -2
- package/dist/cli/chunks/{chunk-V5PXQSFS.js → chunk-VJQYDYAJ.js} +2 -2
- package/dist/cli/chunks/{chunk-A4RU67VX.js → chunk-VKRTTFB6.js} +2 -2
- package/dist/cli/chunks/{chunk-H3KBIWTO.js → chunk-VWNFAW2M.js} +2 -2
- package/dist/cli/chunks/{chunk-72AMFDC7.js → chunk-WBM6N6IM.js} +1 -1
- package/dist/cli/chunks/{chunk-XUIA5KMS.js → chunk-WDQ7IEZY.js} +2 -2
- package/dist/cli/chunks/{chunk-FLASM2XB.js → chunk-WDVRE6GN.js} +2 -2
- package/dist/cli/chunks/{chunk-FV7VAG74.js → chunk-WQ4PYWSW.js} +1 -1
- package/dist/cli/chunks/{chunk-DGTLJNJH.js → chunk-WSF24I3D.js} +2 -2
- package/dist/cli/chunks/{chunk-6YL6JOQB.js → chunk-XBVUVFJK.js} +2 -2
- package/dist/cli/chunks/{chunk-VRGCKBF7.js → chunk-XEB3NLJR.js} +2 -2
- package/dist/cli/chunks/{chunk-XYCKHYBM.js → chunk-XFVTGAAJ.js} +2 -2
- package/dist/cli/chunks/{chunk-2I2UPJS7.js → chunk-XLZYRTNO.js} +2 -2
- package/dist/cli/chunks/{chunk-AR2E4B7K.js → chunk-XUZDBQ5X.js} +5 -5
- package/dist/cli/chunks/{chunk-AQTVVLNP.js → chunk-Y76IAYQD.js} +1 -1
- package/dist/cli/chunks/{chunk-UOWHE77F.js → chunk-YAKGBHO4.js} +2 -2
- package/dist/cli/chunks/{chunk-JK2ME6IT.js → chunk-YBSBABOS.js} +2 -2
- package/dist/cli/chunks/{chunk-NDKLQW6N.js → chunk-YCGP5VFP.js} +2 -2
- package/dist/cli/chunks/{chunk-GBUIG3FS.js → chunk-YDAQK5UF.js} +1 -1
- package/dist/cli/chunks/{chunk-HTZJSQ3C.js → chunk-YK3BVZY6.js} +2 -2
- package/dist/cli/chunks/{chunk-GCWSX2NY.js → chunk-YK7JN5N7.js} +4 -4
- package/dist/cli/chunks/{chunk-C6RTMTEH.js → chunk-YKMU4LBV.js} +1 -1
- package/dist/cli/chunks/{chunk-JP4P3P3D.js → chunk-YYTGXD3R.js} +2 -2
- package/dist/cli/chunks/{chunk-763SUL4B.js → chunk-Z2O2YJAF.js} +2 -2
- package/dist/cli/chunks/{chunk-QTVWUQTB.js → chunk-Z7IYW5U7.js} +1 -1
- package/dist/cli/chunks/{chunk-XZJ2O3VC.js → chunk-ZG5666GJ.js} +1 -1
- package/dist/cli/chunks/{chunk-6EPHNJTL.js → chunk-ZXPY654C.js} +1 -1
- package/dist/cli/chunks/{ci-7SGRCFPS.js → ci-MSKMVH5X.js} +2 -2
- package/dist/cli/chunks/{ci-config-MX3URPZA.js → ci-config-7ODMNAUM.js} +2 -2
- package/dist/cli/chunks/{ci-output-M47NJY6D.js → ci-output-FXZ7ZZW3.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-5GAK45SW.js → circuit-breaker-4VOUEPOX.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-YXYSRH4Y.js → claude-flow-setup-7D4SGLM4.js} +2 -2
- package/dist/cli/chunks/client-POSVREVS.js +2 -0
- package/dist/cli/chunks/{cline-installer-DLJ5QD5N.js → cline-installer-WRRT7BGQ.js} +2 -2
- package/dist/cli/chunks/{code-ONKLMVQ2.js → code-ZDJRIL3S.js} +3 -3
- package/dist/cli/chunks/{code-index-extractor-2232LGZN.js → code-index-extractor-4S4SHM56.js} +2 -2
- package/dist/cli/chunks/{codex-installer-UOWLYCMH.js → codex-installer-YTRHNDWR.js} +2 -2
- package/dist/cli/chunks/{completions-MHX7GCC7.js → completions-6N64JUXJ.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-43ZUJKZU.js → complexity-analyzer-I4A26VCJ.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-6Q5JR4FF.js → continuedev-installer-IIDR66LB.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-CZUMVHSI.js → copilot-installer-SVVFY3S2.js} +2 -2
- package/dist/cli/chunks/core-handlers-V243GY7X.js +2 -0
- package/dist/cli/chunks/{cost-tracker-VS5ZW3XN.js → cost-tracker-VGFS6IBX.js} +2 -2
- package/dist/cli/chunks/{coverage-VWKTWZ6D.js → coverage-B7MCGNTE.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-N3AIEM3B.js +2 -0
- package/dist/cli/chunks/{cursor-installer-YIFEMORH.js → cursor-installer-UPETT57E.js} +2 -2
- package/dist/cli/chunks/daemon-7BDJHEIJ.js +18 -0
- package/dist/cli/chunks/{daemon-SHWJSJW5.js → daemon-CQFNZLXU.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-TCC2WM46.js → dag-attention-scheduler-PJVABHON.js} +2 -2
- package/dist/cli/chunks/{detect-IGTWSQMA.js → detect-56SKAGWX.js} +2 -2
- package/dist/cli/chunks/{dist-node-TCOTJVQX.js → dist-node-UYTYUMLN.js} +2 -2
- package/dist/cli/chunks/{domain-handler-55ZVYODR.js → domain-handler-YOYLBYJE.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-GJRWOHQP.js → domain-plugins-7TARX2XF.js} +2 -2
- package/dist/cli/chunks/domain-transfer-AKVSBD6E.js +2 -0
- package/dist/cli/chunks/dream-UA7MKOPQ.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-XAMNIKQL.js → embed-and-insert-pattern-IS6HSR66.js} +2 -2
- package/dist/cli/chunks/{eval-GO22R4OZ.js → eval-GNB574IM.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-F2BRMJ3Y.js → experience-capture-middleware-RCAOCKM7.js} +3 -3
- package/dist/cli/chunks/{fast-paths-6RGPYALD.js → fast-paths-KTZ5SF54.js} +2 -2
- package/dist/cli/chunks/{feature-flags-ZGS3KLPH.js → feature-flags-ITX5LQ57.js} +2 -2
- package/dist/cli/chunks/{feature-flags-MIWQIOHU.js → feature-flags-KFHSR5YF.js} +2 -2
- package/dist/cli/chunks/file-discovery-YCMNKZAK.js +2 -0
- package/dist/cli/chunks/fleet-2Y3ZE6CE.js +46 -0
- package/dist/cli/chunks/{gnn-wrapper-ALBJVW6T.js → gnn-wrapper-RLFW3GSX.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-ZMM53NDY.js → heartbeat-handler-EM2URCYZ.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-QH5V6G2P.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-OJNFAGJS.js +2 -0
- package/dist/cli/chunks/hnsw-index-DFUNARVD.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-RYUJPA7B.js → hnsw-legacy-bridge-JMHEOIBH.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-XM6XF3YV.js → hnswlib-node-CBP73QHY.js} +2 -2
- package/dist/cli/chunks/{hooks-X62O7TJO.js → hooks-IP7XE34Z.js} +34 -34
- package/dist/cli/chunks/hybrid-backend-SSGQQEQ2.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-ZBWUPTVD.js → hypergraph-engine-ONAYHU25.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-DUMF6SJV.js → hypergraph-handler-VINJRAID.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-CRGCA7ZD.js +2 -0
- package/dist/cli/chunks/{init-guard-S4I2R46S.js → init-guard-RYVV5R3Z.js} +2 -2
- package/dist/cli/chunks/{init-handler-L4KJHVWS.js → init-handler-MPRGWMOE.js} +6 -6
- package/dist/cli/chunks/init-wizard-NIMZ4J55.js +2 -0
- package/dist/cli/chunks/kernel-JQK7PRAI.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-GNNB5FCZ.js → kilocode-installer-OPD7JBRL.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-HR6ZAH7T.js → kiro-installer-M4OPUNK2.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-YPVVIKEU.js +2 -0
- package/dist/cli/chunks/{learning-4IEEOHJS.js → learning-4UWTQLMF.js} +24 -24
- package/dist/cli/chunks/{llm-router-ZFMORP36.js → llm-router-SQ56FF6Z.js} +4 -4
- package/dist/cli/chunks/llm-router-service-5OGAUOXF.js +2 -0
- package/dist/cli/chunks/{load-ZM43WGDO.js → load-HPHKDGGL.js} +2 -2
- package/dist/cli/chunks/load-test-UKNV5MWW.js +2 -0
- package/dist/cli/chunks/mcp-TELMAC7Z.js +2 -0
- package/dist/cli/chunks/{memory-W5FZGVAD.js → memory-PFQ3KPVJ.js} +5 -5
- package/dist/cli/chunks/memory-backend-ZW4BTRNK.js +2 -0
- package/dist/cli/chunks/memory-handlers-FCXN437E.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-SXXGAQ2G.js → multi-model-executor-3VDRX6TZ.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-PIRBUAB5.js → opencode-installer-PJ576R63.js} +2 -2
- package/dist/cli/chunks/{orchestrator-H5SQCQTB.js → orchestrator-72QP4UU7.js} +63 -19
- package/dist/cli/chunks/pattern-null-store-4DUV6MQC.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-XZTWDI2T.js → pattern-usage-recorder-754YQW7C.js} +2 -2
- package/dist/cli/chunks/pipeline-AVXY4MVB.js +19 -0
- package/dist/cli/chunks/{platform-KJDABL5C.js → platform-3E3DXLYB.js} +2 -2
- package/dist/cli/chunks/{plugin-V4KSBVVM.js → plugin-7FUQAKRE.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-JDHTKQAT.js → prime-radiant-advanced-wasm-NIB4F5NV.js} +2 -2
- package/dist/cli/chunks/project-root-JCAUNL6O.js +2 -0
- package/dist/cli/chunks/protocol-executor-RNZNZP3A.js +2 -0
- package/dist/cli/chunks/{protocol-handler-BNRONTQV.js → protocol-handler-BQRYMUTG.js} +2 -2
- package/dist/cli/chunks/{prove-ELLL6XMX.js → prove-H52QGC6B.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-WK6TQOG2.js +2 -0
- package/dist/cli/chunks/{quality-NH2QA4D4.js → quality-QO4XPAUM.js} +2 -2
- package/dist/cli/chunks/{quality-gate-JTKLF7GW.js → quality-gate-FBKE5E6F.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-4452SXZQ.js +2 -0
- package/dist/cli/chunks/{real-embeddings-J3KCKLPB.js → real-embeddings-RWGOVOXO.js} +2 -2
- package/dist/cli/chunks/{ref-validation-HNXQRP4F.js → ref-validation-LF76ZOBD.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-COJ6CX6S.js → roocode-installer-3BYEBTQ7.js} +2 -2
- package/dist/cli/chunks/router-3DIS5X4R.js +2 -0
- package/dist/cli/chunks/routing-feedback-OPXRCXM7.js +2 -0
- package/dist/cli/chunks/{routing-handler-WM33ZILE.js → routing-handler-DST7BVCU.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-BBLXEA7A.js → ruvector-commands-XE32PGKC.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-JL6T727I.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-V7IBDUCS.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-P7H6HCAG.js → rvf-migration-coordinator-VP32XC75.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-O3UQTEBK.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-R5SPVRFP.js → rvf-store-integrity-SH2AMVI7.js} +2 -2
- package/dist/cli/chunks/safe-db-EVB4ZC7T.js +2 -0
- package/dist/cli/chunks/schedule-ORDDXXY4.js +2 -0
- package/dist/cli/chunks/scheduler-XFLJSFIU.js +2 -0
- package/dist/cli/chunks/{security-AUDTRX3I.js → security-VSPNKCDS.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-PVDGBGI2.js → shared-rvf-adapter-HX6AHL3P.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-LZ2GMSS2.js → shared-rvf-dual-writer-MX4FC2JE.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-Y7B42CJ3.js +2 -0
- package/dist/cli/chunks/{standalone-memory-XNOAI4G4.js → standalone-memory-O4QUTK6L.js} +2 -2
- package/dist/cli/chunks/{status-handler-K72XZE4T.js → status-handler-Z2BP6EOG.js} +2 -2
- package/dist/cli/chunks/{structural-health-NF3YY7U5.js → structural-health-R36WNLQG.js} +2 -2
- package/dist/cli/chunks/sync-2ELWUFQU.js +2 -0
- package/dist/cli/chunks/{sync-VBD5Y3E2.js → sync-QF5Y3EMZ.js} +2 -2
- package/dist/cli/chunks/{task-handler-24S3WFVJ.js → task-handler-43PYE75J.js} +2 -2
- package/dist/cli/chunks/task-handlers-KPWAEMKH.js +9 -0
- package/dist/cli/chunks/{test-XFSGQELD.js → test-UWA377D4.js} +16 -16
- package/dist/cli/chunks/test-runner-process-3XZUYST2.js +2 -0
- package/dist/cli/chunks/{test-scheduling-VYUQ4CDE.js → test-scheduling-YQZPJRRN.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-F7C6UKTC.js +2 -0
- package/dist/cli/chunks/{token-usage-VLQ6WO2L.js → token-usage-DO6WLMXP.js} +2 -2
- package/dist/cli/chunks/{transformers-TOFMWWNM.js → transformers-H5RGFKVO.js} +2 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-YTBCBHUO.js +2 -0
- package/dist/cli/chunks/{types-JTWLBAZJ.js → types-PJS2FGPF.js} +2 -2
- package/dist/cli/chunks/unified-memory-EHD4VNFW.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-ZODGM4UK.js +2 -0
- package/dist/cli/chunks/unified-persistence-MHSI7ABK.js +2 -0
- package/dist/cli/chunks/{upgrade-4ABM72T4.js → upgrade-4IC4F6AB.js} +2 -2
- package/dist/cli/chunks/{validate-UDJCWKXI.js → validate-DHUWW7PF.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-TODOUWNN.js → validate-swarm-OERQNOX5.js} +2 -2
- package/dist/cli/chunks/visual-security-54MLFKWY.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-WBMAJPM5.js → web-tree-sitter-TV7DMKES.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-BTT53TUL.js → windsurf-installer-QZPWSH37.js} +2 -2
- package/dist/cli/chunks/witness-chain-LC6Q2W27.js +2 -0
- package/dist/cli/chunks/witness-chain-QUIBAF3W.js +2 -0
- package/dist/cli/chunks/witness-chain-repair-RUXIOE7F.js +2 -0
- package/dist/cli/chunks/{witness-chain-verifier-FRY3LMGH.js → witness-chain-verifier-YXENHB42.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-X7QHQQWL.js → witness-key-manager-HL26AGFO.js} +2 -2
- package/dist/cli/chunks/{workflow-QMZPAWQW.js → workflow-EOVVCN2E.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-UKHEJVSK.js +2 -0
- package/dist/cli/chunks/wrappers-AGODHBOO.js +2 -0
- package/dist/cli/commands/fleet.js +19 -12
- package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +9 -2
- package/dist/cli/commands/hooks-handlers/session-hooks.js +2 -2
- package/dist/cli/commands/hooks-handlers/stats-hooks.js +3 -2
- package/dist/cli/commands/learning.js +5 -3
- package/dist/cli/commands/ruvector-commands.js +2 -1
- package/dist/cli/commands/test.js +6 -0
- package/dist/cli/utils/ci-output.d.ts +9 -0
- package/dist/cli/utils/fleet-operation.d.ts +32 -0
- package/dist/cli/utils/fleet-operation.js +71 -0
- package/dist/cli/utils/fleet-result.d.ts +31 -0
- package/dist/cli/utils/fleet-result.js +124 -0
- package/dist/context/sources/git-source.js +6 -2
- package/dist/coordination/handlers/code-intelligence-handlers.js +60 -5
- package/dist/coordination/handlers/coverage-handlers.js +10 -1
- package/dist/coordination/handlers/requirements-handlers.js +16 -2
- package/dist/coordination/handlers/security-handlers.js +11 -1
- package/dist/coordination/handlers/test-execution-handlers.js +25 -7
- package/dist/coordination/mincut/queen-integration.d.ts +39 -1
- package/dist/coordination/mincut/queen-integration.js +83 -6
- package/dist/coordination/protocols/learning-consolidation-archive.d.ts +2 -6
- package/dist/coordination/protocols/learning-consolidation-archive.js +4 -27
- package/dist/coordination/protocols/learning-consolidation.d.ts +24 -0
- package/dist/coordination/protocols/learning-consolidation.js +71 -22
- package/dist/coordination/queen-coordinator.d.ts +1 -1
- package/dist/coordination/queen-coordinator.js +19 -7
- package/dist/coordination/queen-event-handlers.js +13 -0
- package/dist/coordination/queen-task-management.d.ts +18 -24
- package/dist/coordination/queen-task-management.js +62 -168
- package/dist/coordination/queen-task-queue.d.ts +41 -0
- package/dist/coordination/queen-task-queue.js +194 -0
- package/dist/coordination/queen-types.d.ts +1 -1
- package/dist/coordination/queen-work-stealing.d.ts +6 -1
- package/dist/coordination/queen-work-stealing.js +7 -4
- package/dist/coordination/result-saver-adapters.d.ts +15 -0
- package/dist/coordination/result-saver-adapters.js +57 -0
- package/dist/coordination/result-saver.d.ts +1 -1
- package/dist/coordination/result-saver.js +8 -5
- package/dist/coordination/yaml-pipeline-loader.js +5 -2
- package/dist/domains/code-intelligence/index-path-guard.d.ts +5 -2
- package/dist/domains/code-intelligence/index-path-guard.js +20 -50
- package/dist/domains/code-intelligence/plugin.js +5 -1
- package/dist/domains/code-intelligence/services/metric-collector/index.d.ts +2 -2
- package/dist/domains/code-intelligence/services/metric-collector/index.js +2 -3
- package/dist/domains/code-intelligence/services/metric-collector/loc-counter.d.ts +1 -1
- package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +11 -36
- package/dist/domains/code-intelligence/services/metric-collector/test-counter.d.ts +1 -1
- package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +45 -103
- package/dist/domains/contract-testing/services/api-compatibility.js +7 -6
- package/dist/domains/contract-testing/services/contract-validator.js +6 -4
- package/dist/domains/contract-testing/services/schema-validator.js +8 -5
- package/dist/domains/defect-intelligence/interfaces.d.ts +2 -0
- package/dist/domains/defect-intelligence/plugin.js +11 -2
- package/dist/domains/defect-intelligence/prediction-history.d.ts +27 -0
- package/dist/domains/defect-intelligence/prediction-history.js +68 -0
- package/dist/domains/defect-intelligence/services/defect-predictor.js +25 -10
- package/dist/domains/enterprise-integration/services/message-broker-service.js +3 -2
- package/dist/domains/enterprise-integration/services/odata-service.js +2 -1
- package/dist/domains/enterprise-integration/services/sap-integration-service.js +3 -2
- package/dist/domains/learning-optimization/active-patterns.d.ts +2 -2
- package/dist/domains/learning-optimization/active-patterns.js +2 -2
- package/dist/domains/learning-optimization/coordinator.js +9 -5
- package/dist/domains/learning-optimization/interfaces.d.ts +6 -2
- package/dist/domains/learning-optimization/pattern-archive.d.ts +31 -0
- package/dist/domains/learning-optimization/pattern-archive.js +56 -0
- package/dist/domains/learning-optimization/pattern-consolidation.d.ts +12 -0
- package/dist/domains/learning-optimization/pattern-consolidation.js +41 -0
- package/dist/domains/learning-optimization/reward-source.d.ts +13 -0
- package/dist/domains/learning-optimization/reward-source.js +8 -1
- package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +5 -3
- package/dist/domains/learning-optimization/services/learning-coordinator.js +45 -58
- package/dist/domains/security-compliance/plugin.js +17 -3
- package/dist/domains/security-compliance/sast-path-guard.d.ts +9 -0
- package/dist/domains/security-compliance/sast-path-guard.js +17 -0
- package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +46 -56
- package/dist/domains/security-compliance/services/scanners/dast-helpers.js +76 -91
- package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +52 -62
- package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +21 -1
- package/dist/domains/security-compliance/services/scanners/dast-scanner.js +29 -24
- package/dist/domains/security-compliance/services/scanners/scanner-orchestrator.js +4 -1
- package/dist/domains/test-execution/coordinator.d.ts +5 -0
- package/dist/domains/test-execution/coordinator.js +35 -20
- package/dist/domains/test-execution/interfaces.d.ts +25 -0
- package/dist/domains/test-execution/plugin.js +19 -4
- package/dist/domains/test-execution/services/flaky-detector.js +9 -7
- package/dist/domains/test-execution/services/retry-handler.js +46 -7
- package/dist/domains/test-execution/services/runner-test-cases.d.ts +11 -0
- package/dist/domains/test-execution/services/runner-test-cases.js +20 -2
- package/dist/domains/test-execution/services/test-executor.js +8 -8
- package/dist/domains/test-generation/plugin.js +7 -2
- package/dist/domains/test-generation/services/test-data-generator.js +3 -1
- package/dist/domains/visual-accessibility/services/axe-core-audit.js +1 -1
- package/dist/hooks/cross-phase-hooks.js +2 -1
- package/dist/init/phases/10-workers.js +50 -6
- package/dist/integrations/browser/agent-browser/client.js +37 -52
- package/dist/integrations/browser/agent-browser/command-executor.d.ts +33 -27
- package/dist/integrations/browser/agent-browser/command-executor.js +53 -54
- package/dist/integrations/browser/agent-browser/session-manager.d.ts +1 -1
- package/dist/integrations/browser/agent-browser/session-manager.js +8 -9
- package/dist/integrations/browser/web-content-fetcher.js +9 -3
- package/dist/integrations/vibium/client.js +2 -2
- package/dist/integrations/vibium/runtime.d.ts +1 -1
- package/dist/integrations/vibium/runtime.js +14 -11
- package/dist/kernel/unified-memory-schemas.d.ts +3 -2
- package/dist/kernel/unified-memory-schemas.js +3 -2
- package/dist/kernel/unified-memory.js +25 -6
- package/dist/learning/dream/dream-commit.d.ts +65 -0
- package/dist/learning/dream/dream-commit.js +104 -0
- package/dist/learning/dream/dream-engine.d.ts +81 -31
- package/dist/learning/dream/dream-engine.js +225 -168
- package/dist/learning/dream/dream-insights-pruner.d.ts +9 -3
- package/dist/learning/dream/dream-insights-pruner.js +16 -30
- package/dist/learning/dream/index.d.ts +3 -2
- package/dist/learning/dream/index.js +3 -1
- package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -1
- package/dist/learning/dream/rvcow-branch-manager.js +8 -1
- package/dist/learning/dream/speculative-dreamer.d.ts +50 -74
- package/dist/learning/dream/speculative-dreamer.js +64 -111
- package/dist/learning/dream/spreading-activation.d.ts +2 -1
- package/dist/learning/dream/spreading-activation.js +15 -6
- package/dist/learning/experience-capture.d.ts +9 -0
- package/dist/learning/experience-capture.js +18 -4
- package/dist/learning/qe-reasoning-bank-types.d.ts +17 -2
- package/dist/learning/qe-reasoning-bank.js +22 -11
- package/dist/learning/sqlite-persistence.d.ts +6 -0
- package/dist/learning/sqlite-persistence.js +16 -2
- package/dist/learning/usage-outcome.d.ts +68 -0
- package/dist/learning/usage-outcome.js +84 -0
- package/dist/mcp/background-workers.d.ts +13 -1
- package/dist/mcp/background-workers.js +17 -3
- package/dist/mcp/bundle.js +607 -580
- package/dist/mcp/handlers/core-handlers.js +11 -0
- package/dist/mcp/handlers/domain-handler-configs.d.ts +5 -0
- package/dist/mcp/handlers/domain-handler-configs.js +11 -3
- package/dist/mcp/handlers/handler-factory.d.ts +2 -1
- package/dist/mcp/handlers/handler-factory.js +36 -15
- package/dist/mcp/handlers/orchestrate-routes.d.ts +36 -0
- package/dist/mcp/handlers/orchestrate-routes.js +88 -0
- package/dist/mcp/handlers/task-handlers.d.ts +3 -0
- package/dist/mcp/handlers/task-handlers.js +35 -8
- package/dist/mcp/handlers/validation-pipeline-handler.js +6 -2
- package/dist/mcp/protocol-server.js +2 -0
- package/dist/mcp/security/schema-validator.js +3 -2
- package/dist/mcp/tools/code-intelligence/c4.js +11 -1
- package/dist/mcp/tools/coverage-analysis/index.js +31 -2
- package/dist/mcp/tools/learning-optimization/dream.d.ts +8 -8
- package/dist/mcp/tools/learning-optimization/dream.js +38 -34
- package/dist/mcp/tools/learning-optimization/optimize.d.ts +18 -2
- package/dist/mcp/tools/learning-optimization/optimize.js +58 -10
- package/dist/mcp/tools/quality-assessment/gate.js +12 -1
- package/dist/mcp/tools/requirements-validation/quality-criteria.js +9 -2
- package/dist/migration/agent-compat.js +7 -5
- package/dist/migrations/20261018_add_dream_insights_archive.d.ts +27 -0
- package/dist/migrations/20261018_add_dream_insights_archive.js +57 -0
- package/dist/shared/git/git-analyzer.d.ts +49 -0
- package/dist/shared/git/git-analyzer.js +159 -319
- package/dist/shared/git/git-process.d.ts +22 -0
- package/dist/shared/git/git-process.js +37 -0
- package/dist/shared/git/index.d.ts +1 -0
- package/dist/shared/git/index.js +1 -0
- package/dist/shared/io/payload-path-guard.d.ts +75 -0
- package/dist/shared/io/payload-path-guard.js +190 -0
- package/dist/shared/llm/router/agent-router-config.js +2 -1
- package/dist/shared/llm/translation/tool-translator.js +2 -1
- package/dist/shared/test-runner-args.d.ts +5 -0
- package/dist/shared/test-runner-args.js +6 -1
- package/dist/shared/test-runner-process.d.ts +6 -0
- package/dist/shared/test-runner-process.js +14 -0
- package/dist/shared/test-runner-verdict.d.ts +9 -1
- package/dist/shared/test-runner-verdict.js +15 -4
- package/dist/shared/utils/namespaced-search.d.ts +14 -0
- package/dist/shared/utils/namespaced-search.js +19 -1
- package/dist/shared/utils/safe-expression-evaluator.js +4 -3
- package/dist/strange-loop/infra-healing/recovery-playbook.js +13 -3
- package/dist/validation/gate-reexecute.js +7 -4
- package/dist/workers/daemon.js +13 -1
- package/dist/workers/quality-daemon/git-watcher.js +9 -9
- package/dist/workers/workers/defect-predictor.d.ts +8 -3
- package/dist/workers/workers/defect-predictor.js +48 -49
- package/dist/workers/workers/learning-consolidation.d.ts +2 -0
- package/dist/workers/workers/learning-consolidation.js +12 -1
- package/dist/workflows/browser/workflow-loader.js +8 -5
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-R2Q4QGXQ.js +0 -2
- package/dist/cli/chunks/agent-booster-wasm-427FRKWG.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-3RENLQWP.js +0 -2
- package/dist/cli/chunks/base-67DXSAYM.js +0 -2
- package/dist/cli/chunks/browser-CT3MTV6G.js +0 -4
- package/dist/cli/chunks/browser-workflow-NDXRROWZ.js +0 -2
- package/dist/cli/chunks/chunk-4URT6JO2.js +0 -2
- package/dist/cli/chunks/chunk-5LAAZLUC.js +0 -4
- package/dist/cli/chunks/chunk-7DMA5NYL.js +0 -4
- package/dist/cli/chunks/chunk-F2SQPP6U.js +0 -4
- package/dist/cli/chunks/chunk-G3BKZNFL.js +0 -120
- package/dist/cli/chunks/chunk-GR3JYE5A.js +0 -2
- package/dist/cli/chunks/chunk-J3WGK22W.js +0 -2
- package/dist/cli/chunks/chunk-KHSRIPBP.js +0 -180
- package/dist/cli/chunks/chunk-KTSLTZSG.js +0 -2
- package/dist/cli/chunks/chunk-O3JLOVZX.js +0 -4
- package/dist/cli/chunks/chunk-THAY7WHO.js +0 -12
- package/dist/cli/chunks/chunk-VXZJOKOX.js +0 -2
- package/dist/cli/chunks/chunk-VYLM2YV5.js +0 -12
- package/dist/cli/chunks/client-ZP3CTVRF.js +0 -2
- package/dist/cli/chunks/core-handlers-JSRXQWPE.js +0 -2
- package/dist/cli/chunks/cross-domain-router-7UKODQWG.js +0 -2
- package/dist/cli/chunks/daemon-YIFT46FH.js +0 -34
- package/dist/cli/chunks/domain-transfer-6EF75EKU.js +0 -2
- package/dist/cli/chunks/dream-UDLM6M55.js +0 -2
- package/dist/cli/chunks/file-discovery-THWOUQ7Z.js +0 -2
- package/dist/cli/chunks/fleet-ADL57COA.js +0 -44
- package/dist/cli/chunks/heartbeat-scheduler-HGOC5KH3.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-EPSA6AP7.js +0 -2
- package/dist/cli/chunks/hnsw-index-RMFOPYGY.js +0 -2
- package/dist/cli/chunks/hybrid-backend-NZ3G4WBX.js +0 -2
- package/dist/cli/chunks/impact-analyzer-WZC6NHFP.js +0 -2
- package/dist/cli/chunks/init-wizard-422UZYQ5.js +0 -2
- package/dist/cli/chunks/kernel-N7PJ6FCE.js +0 -2
- package/dist/cli/chunks/knowledge-graph-SZCVQF37.js +0 -2
- package/dist/cli/chunks/llm-router-service-4DE5WDUZ.js +0 -2
- package/dist/cli/chunks/load-test-POMIF4Q4.js +0 -2
- package/dist/cli/chunks/mcp-CRZKZE37.js +0 -2
- package/dist/cli/chunks/memory-backend-4P6AHSOY.js +0 -2
- package/dist/cli/chunks/memory-handlers-NK6NV3GE.js +0 -2
- package/dist/cli/chunks/pattern-null-store-CCHQHGQG.js +0 -2
- package/dist/cli/chunks/pipeline-5LMLBIJ7.js +0 -19
- package/dist/cli/chunks/project-root-X72FSM2F.js +0 -2
- package/dist/cli/chunks/protocol-executor-QW6XN6QN.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-ZD3WF647.js +0 -2
- package/dist/cli/chunks/queen-coordinator-S4U4MKK2.js +0 -2
- package/dist/cli/chunks/router-CXZKOOTR.js +0 -2
- package/dist/cli/chunks/routing-feedback-IYFANYY5.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-HCLQ5WUQ.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-XCLUWOO3.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-MRT5H3IP.js +0 -2
- package/dist/cli/chunks/safe-db-WFODRGVZ.js +0 -2
- package/dist/cli/chunks/schedule-RO55OQXG.js +0 -2
- package/dist/cli/chunks/scheduler-XXMJCH24.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-AWRIS4MK.js +0 -2
- package/dist/cli/chunks/sync-UVXA6CT2.js +0 -2
- package/dist/cli/chunks/task-handlers-GUYW2EPJ.js +0 -9
- package/dist/cli/chunks/token-bootstrap-EDK6FNQ3.js +0 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-MI3NZKUD.js +0 -2
- package/dist/cli/chunks/unified-memory-6JWHV6EF.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-4UANU6NU.js +0 -2
- package/dist/cli/chunks/unified-persistence-KGGNA46H.js +0 -2
- package/dist/cli/chunks/visual-security-6VZNQLH7.js +0 -2
- package/dist/cli/chunks/witness-chain-AKKHWEWU.js +0 -2
- package/dist/cli/chunks/witness-chain-TATPXQRK.js +0 -2
- package/dist/cli/chunks/witness-chain-repair-2HGJGE7O.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-4GAW7HNZ.js +0 -2
- package/dist/cli/chunks/wrappers-ZD5NBHYI.js +0 -2
|
@@ -14,7 +14,29 @@ import { searchAllKeys } from '../../shared/utils/namespaced-search.js';
|
|
|
14
14
|
import { LoggerFactory } from '../../logging/index.js';
|
|
15
15
|
import { readActivePatterns, LEARNING_NS, } from '../../domains/learning-optimization/active-patterns.js';
|
|
16
16
|
import { archiveSelectedPattern, emptyArchiveCounts, isWithinRetentionGrace, } from './learning-consolidation-archive.js';
|
|
17
|
+
import { buildConsolidatedPattern } from '../../domains/learning-optimization/pattern-consolidation.js';
|
|
17
18
|
const logger = LoggerFactory.create('learning-consolidation-protocol');
|
|
19
|
+
/**
|
|
20
|
+
* Id of a merged pattern a dry run predicts but never stores (#1106). It only
|
|
21
|
+
* appears in `removedPatterns` when the predicted merge would itself be trimmed.
|
|
22
|
+
*/
|
|
23
|
+
export const DRY_RUN_MERGE_ID_PREFIX = 'dry-run-merge:';
|
|
24
|
+
/** Failed steps inside one domain's report (#1106). */
|
|
25
|
+
function domainStepErrors(report) {
|
|
26
|
+
const errors = report.mergeFailures.map((failure) => ({
|
|
27
|
+
domain: report.domain,
|
|
28
|
+
step: 'merge',
|
|
29
|
+
error: `${failure.sourcePatternIds.join(', ')}: ${failure.error}`,
|
|
30
|
+
}));
|
|
31
|
+
if (report.archiveCounts.failed > 0) {
|
|
32
|
+
errors.push({
|
|
33
|
+
domain: report.domain,
|
|
34
|
+
step: 'archive',
|
|
35
|
+
error: `${report.archiveCounts.failed} selected patterns could not be archived (archive copy not verified) and were left active`,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return errors;
|
|
39
|
+
}
|
|
18
40
|
const DEFAULT_CONFIG = {
|
|
19
41
|
minPatternsForConsolidation: 5,
|
|
20
42
|
similarityThreshold: 0.85,
|
|
@@ -72,16 +94,26 @@ export class LearningConsolidationProtocol {
|
|
|
72
94
|
let totalArchived = 0;
|
|
73
95
|
let totalRetained = 0;
|
|
74
96
|
const dryRun = this.config.dryRun;
|
|
97
|
+
// #1106: a failed step is recorded, never swallowed.
|
|
98
|
+
const errors = [];
|
|
75
99
|
for (const domainGroup of gatheredPatterns.value) {
|
|
76
100
|
const consolidationResult = await this.consolidatePatterns(consolidationId, domainGroup);
|
|
77
101
|
if (consolidationResult.success) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
102
|
+
const report = consolidationResult.value;
|
|
103
|
+
domainReports.push(report);
|
|
104
|
+
totalMerged += report.mergedPatterns.length;
|
|
105
|
+
totalRemoved += report.removedPatterns.length;
|
|
106
|
+
totalArchived += report.archiveCounts.archived;
|
|
107
|
+
totalRetained += report.patternsAfterCount;
|
|
108
|
+
errors.push(...domainStepErrors(report));
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
errors.push({ domain: domainGroup.domain, step: 'consolidate', error: consolidationResult.error.message });
|
|
83
112
|
}
|
|
84
113
|
}
|
|
114
|
+
if (gatheredPatterns.value.length > 0 && domainReports.length === 0) {
|
|
115
|
+
return err(new Error(`Learning consolidation failed in every domain: ${errors.map((e) => `${e.domain}: ${e.error}`).join('; ')}`));
|
|
116
|
+
}
|
|
85
117
|
// Step 3: Update knowledge base with consolidated patterns (writes, so
|
|
86
118
|
// skipped in a dry run)
|
|
87
119
|
const knowledgeUpdateResult = dryRun
|
|
@@ -92,6 +124,12 @@ export class LearningConsolidationProtocol {
|
|
|
92
124
|
const transferResult = dryRun
|
|
93
125
|
? ok([])
|
|
94
126
|
: await this.prepareTransfer(consolidationId, domainReports);
|
|
127
|
+
if (!knowledgeUpdateResult.success) {
|
|
128
|
+
errors.push({ step: 'knowledge-update', error: knowledgeUpdateResult.error.message });
|
|
129
|
+
}
|
|
130
|
+
if (!transferResult.success) {
|
|
131
|
+
errors.push({ step: 'transfer', error: transferResult.error.message });
|
|
132
|
+
}
|
|
95
133
|
// Step 5: Generate weekly insights
|
|
96
134
|
const insights = await this.generateInsights(gatheredPatterns.value, domainReports);
|
|
97
135
|
const completedAt = new Date();
|
|
@@ -111,8 +149,13 @@ export class LearningConsolidationProtocol {
|
|
|
111
149
|
? transferResult.value.length
|
|
112
150
|
: 0,
|
|
113
151
|
};
|
|
152
|
+
const status = errors.length > 0 ? 'partial' : 'completed';
|
|
153
|
+
if (errors.length > 0) {
|
|
154
|
+
logger.warn('Learning consolidation finished with errors', { consolidationId, dryRun, errors });
|
|
155
|
+
}
|
|
114
156
|
logger.info('Learning consolidation finished', {
|
|
115
157
|
consolidationId,
|
|
158
|
+
status,
|
|
116
159
|
dryRun,
|
|
117
160
|
analyzed: stats.totalPatternsAnalyzed,
|
|
118
161
|
merged: totalMerged,
|
|
@@ -125,6 +168,8 @@ export class LearningConsolidationProtocol {
|
|
|
125
168
|
const result = {
|
|
126
169
|
consolidationId,
|
|
127
170
|
dryRun,
|
|
171
|
+
status,
|
|
172
|
+
errors,
|
|
128
173
|
startedAt,
|
|
129
174
|
completedAt,
|
|
130
175
|
stats,
|
|
@@ -246,26 +291,29 @@ export class LearningConsolidationProtocol {
|
|
|
246
291
|
retainedPatterns.push(...patterns.filter((p) => this.isInGracePeriod(p)));
|
|
247
292
|
// Group similar patterns for merging
|
|
248
293
|
const similarGroups = this.groupSimilarPatterns(patterns.filter((p) => !this.isInGracePeriod(p)));
|
|
294
|
+
const mergeFailures = [];
|
|
295
|
+
const mergeReason = 'Similar pattern context and template';
|
|
249
296
|
for (const group of similarGroups) {
|
|
250
|
-
if (group.length >= 2
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
// Merge similar patterns
|
|
261
|
-
const mergeResult = await this.mergePatternGroup(group);
|
|
262
|
-
if (mergeResult.success) {
|
|
297
|
+
if (group.length >= 2) {
|
|
298
|
+
const sourcePatternIds = group.map((p) => p.id);
|
|
299
|
+
// #1106: both runs carry the same set into the trim step. A dry run
|
|
300
|
+
// keeps the merged pattern the real run would store (built by the
|
|
301
|
+
// same function, never written); a real run keeps the stored one, or
|
|
302
|
+
// the sources themselves when the merge failed and left them active.
|
|
303
|
+
const merged = this.config.dryRun
|
|
304
|
+
? ok(buildConsolidatedPattern(group, `${DRY_RUN_MERGE_ID_PREFIX}${sourcePatternIds.join('+')}`))
|
|
305
|
+
: await this.mergePatternGroup(group);
|
|
306
|
+
if (merged.success) {
|
|
263
307
|
mergedPatterns.push({
|
|
264
|
-
resultPatternId:
|
|
265
|
-
sourcePatternIds
|
|
266
|
-
mergeReason
|
|
308
|
+
resultPatternId: this.config.dryRun ? '' : merged.value.id,
|
|
309
|
+
sourcePatternIds,
|
|
310
|
+
mergeReason,
|
|
267
311
|
});
|
|
268
|
-
retainedPatterns.push(
|
|
312
|
+
retainedPatterns.push(merged.value);
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
mergeFailures.push({ sourcePatternIds, error: merged.error.message });
|
|
316
|
+
retainedPatterns.push(...group);
|
|
269
317
|
}
|
|
270
318
|
}
|
|
271
319
|
else {
|
|
@@ -308,6 +356,7 @@ export class LearningConsolidationProtocol {
|
|
|
308
356
|
mergedPatterns,
|
|
309
357
|
removedPatterns,
|
|
310
358
|
archiveCounts,
|
|
359
|
+
mergeFailures,
|
|
311
360
|
topPerformingPatterns: this.getTopPerformingPatterns(finalPatterns, 5),
|
|
312
361
|
improvementAreas: this.identifyImprovementAreas(domainGroup),
|
|
313
362
|
};
|
|
@@ -113,7 +113,7 @@ export declare class QueenCoordinator implements IQueenCoordinator {
|
|
|
113
113
|
triggerWorkStealing(): Promise<number>;
|
|
114
114
|
listAllAgents(): AgentInfo[];
|
|
115
115
|
getAgentsByDomain(domain: DomainName): AgentInfo[];
|
|
116
|
-
requestAgentSpawn(domain: DomainName, type: string, capabilities: string[]): Promise<Result<string, Error>>;
|
|
116
|
+
requestAgentSpawn(domain: DomainName, type: string, capabilities: string[], taskId?: string): Promise<Result<string, Error>>;
|
|
117
117
|
getHealth(): QueenHealth;
|
|
118
118
|
getMetrics(): QueenMetrics;
|
|
119
119
|
getMinCutBridge(): QueenMinCutBridge | null;
|
|
@@ -52,7 +52,7 @@ 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
54
|
import { findDomainsWithoutHandler, describeMissingHandler } from './task-executability.js';
|
|
55
|
-
import { enqueueTask, removeFromQueues, getQueuePosition, processQueue, listTasks as listTasksImpl, assignTask,
|
|
55
|
+
import { enqueueTask, removeFromQueues, getQueuePosition, processQueue, listTasks as listTasksImpl, assignTask, dispatchStolenTask, canDomainExecuteTask, } from './queen-task-management.js';
|
|
56
56
|
import { triggerWorkStealing as triggerWorkStealingImpl, startWorkStealingTimer } from './queen-work-stealing.js';
|
|
57
57
|
import { isMinCutAwarePlugin, injectMinCutBridgeIntoPlugins, loadState, saveState, startMetricsCollectionTimer, cleanupCompletedTasks as cleanupCompletedTasksImpl, getEnabledDomains, } from './queen-lifecycle.js';
|
|
58
58
|
// Initialize TASK_DOMAIN_MAP entries that need ALL_DOMAINS
|
|
@@ -358,7 +358,11 @@ export class QueenCoordinator {
|
|
|
358
358
|
// Assign task to domain
|
|
359
359
|
const assignResult = await assignTask(this.createTaskContext(), task);
|
|
360
360
|
if (!assignResult.success) {
|
|
361
|
-
|
|
361
|
+
// A task the Queen already settled (refused by its plugin, or reported
|
|
362
|
+
// failed through onComplete) gave its slot back (#1140).
|
|
363
|
+
if (!this.tasks.has(taskId)) {
|
|
364
|
+
this.runningTaskCounter = Math.max(0, this.runningTaskCounter - 1);
|
|
365
|
+
}
|
|
362
366
|
return assignResult;
|
|
363
367
|
}
|
|
364
368
|
this.tasksReceived++;
|
|
@@ -366,7 +370,8 @@ export class QueenCoordinator {
|
|
|
366
370
|
return ok(taskId);
|
|
367
371
|
}
|
|
368
372
|
catch (error) {
|
|
369
|
-
|
|
373
|
+
// The task's own slot may already be released when the throw comes later.
|
|
374
|
+
this.runningTaskCounter = Math.max(0, this.runningTaskCounter - 1);
|
|
370
375
|
throw error;
|
|
371
376
|
}
|
|
372
377
|
}
|
|
@@ -474,7 +479,7 @@ export class QueenCoordinator {
|
|
|
474
479
|
getAgentsByDomain(domain) {
|
|
475
480
|
return this.agentCoordinator.listAgents({ domain });
|
|
476
481
|
}
|
|
477
|
-
async requestAgentSpawn(domain, type, capabilities) {
|
|
482
|
+
async requestAgentSpawn(domain, type, capabilities, taskId) {
|
|
478
483
|
if (!this.agentCoordinator.canSpawn()) {
|
|
479
484
|
return err(new Error('Maximum concurrent agents reached (15)'));
|
|
480
485
|
}
|
|
@@ -532,7 +537,10 @@ export class QueenCoordinator {
|
|
|
532
537
|
logger.warn(`Auto-team-wiring failed for ${result.value}`, { error: err });
|
|
533
538
|
}
|
|
534
539
|
}
|
|
535
|
-
|
|
540
|
+
// #1130: taskId marks an agent that lives only as long as its task.
|
|
541
|
+
await this.publishEvent('AgentSpawned', {
|
|
542
|
+
agentId: result.value, domain, type, capabilities, ...(taskId ? { taskId } : {}),
|
|
543
|
+
});
|
|
536
544
|
}
|
|
537
545
|
return result;
|
|
538
546
|
}
|
|
@@ -846,7 +854,7 @@ export class QueenCoordinator {
|
|
|
846
854
|
get traceCollector() { return self.traceCollector; },
|
|
847
855
|
taskTraceContexts: self.taskTraceContexts,
|
|
848
856
|
get coExecutionRepo() { return self.coExecutionRepo; },
|
|
849
|
-
requestAgentSpawn: (d, t, c) => self.requestAgentSpawn(d, t, c),
|
|
857
|
+
requestAgentSpawn: (d, t, c, id) => self.requestAgentSpawn(d, t, c, id),
|
|
850
858
|
publishEvent: (t, p) => self.publishEvent(t, p),
|
|
851
859
|
getDomainLoad: (d) => self.getDomainLoad(d),
|
|
852
860
|
getDomainHealth: (d) => self.getDomainHealth(d),
|
|
@@ -863,8 +871,12 @@ export class QueenCoordinator {
|
|
|
863
871
|
getIdleDomains: () => self.getIdleDomains(),
|
|
864
872
|
getBusyDomains: () => self.getBusyDomains(),
|
|
865
873
|
getDomainLoad: (d) => self.getDomainLoad(d),
|
|
874
|
+
// A queued entry can already be terminal (#1070); only a waiting task is stolen.
|
|
875
|
+
availableSlots: () => self.config.maxConcurrentTasks - self.runningTaskCounter,
|
|
876
|
+
canExecuteInDomain: (d, t) => (self.tasks.get(t.id)?.status ?? 'queued') === 'queued'
|
|
877
|
+
&& canDomainExecuteTask(self.domainPlugins, d, t),
|
|
866
878
|
removeFromQueues: (t) => removeFromQueues(self.taskQueue, self.domainQueues, t),
|
|
867
|
-
assignTaskToDomain: (t, d) =>
|
|
879
|
+
assignTaskToDomain: (t, d) => dispatchStolenTask(self.createTaskContext(), t, d),
|
|
868
880
|
publishEvent: (t, p) => self.publishEvent(t, p),
|
|
869
881
|
};
|
|
870
882
|
}
|
|
@@ -50,6 +50,17 @@ async function handleDomainEvent(ctx, event) {
|
|
|
50
50
|
// ============================================================================
|
|
51
51
|
// Task completed handler
|
|
52
52
|
// ============================================================================
|
|
53
|
+
/**
|
|
54
|
+
* #1130: a caller-owned task finishes through these events, not through the
|
|
55
|
+
* plugin completion callback that stops a task's agents, so its agent stayed
|
|
56
|
+
* "running" after the task ended. A retried task spawns a new agent. Stopping
|
|
57
|
+
* an agent that is already stopped is a no-op.
|
|
58
|
+
*/
|
|
59
|
+
async function stopTaskAgents(ctx, execution) {
|
|
60
|
+
for (const agentId of execution.assignedAgents) {
|
|
61
|
+
await ctx.agentCoordinator.stop(agentId);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
53
64
|
export async function handleTaskCompleted(ctx, event) {
|
|
54
65
|
const { taskId, result } = event.payload;
|
|
55
66
|
const cancelled = settleCancelledTask(ctx.tasks, taskId);
|
|
@@ -62,6 +73,7 @@ export async function handleTaskCompleted(ctx, event) {
|
|
|
62
73
|
}
|
|
63
74
|
const execution = ctx.tasks.get(taskId);
|
|
64
75
|
if (execution) {
|
|
76
|
+
await stopTaskAgents(ctx, execution);
|
|
65
77
|
// CC-002 FIX: Decrement the atomic counter when task completes
|
|
66
78
|
if (execution.status === 'running' || execution.status === 'assigned') {
|
|
67
79
|
ctx.runningTaskCounter = Math.max(0, ctx.runningTaskCounter - 1);
|
|
@@ -173,6 +185,7 @@ export async function handleTaskFailed(ctx, event) {
|
|
|
173
185
|
}
|
|
174
186
|
const execution = ctx.tasks.get(taskId);
|
|
175
187
|
if (execution) {
|
|
188
|
+
await stopTaskAgents(ctx, execution);
|
|
176
189
|
// CC-002 FIX: Decrement the atomic counter when task fails
|
|
177
190
|
if (execution.status === 'running' || execution.status === 'assigned') {
|
|
178
191
|
ctx.runningTaskCounter = Math.max(0, ctx.runningTaskCounter - 1);
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Agentic QE v3 - Queen Task Management
|
|
3
3
|
* Extracted from queen-coordinator.ts - Task assignment, domain routing,
|
|
4
|
-
* TinyDancer integration,
|
|
4
|
+
* TinyDancer integration, and domain plugin execution. Queue operations and
|
|
5
|
+
* the drain live in queen-task-queue.ts.
|
|
5
6
|
*/
|
|
6
7
|
import type { DomainName, Priority, Result } from '../shared/types';
|
|
7
8
|
import type { AgentCoordinator, DomainPlugin } from '../kernel/interfaces';
|
|
@@ -13,10 +14,7 @@ import type { DomainTeamManager } from './agent-teams/domain-team-manager.js';
|
|
|
13
14
|
import type { TierSelector } from './fleet-tiers/index.js';
|
|
14
15
|
import type { TraceCollector, TraceContext } from './agent-teams/tracing.js';
|
|
15
16
|
import type { QueenTask, TaskExecution, QueenConfig, TaskFilter } from './queen-types.js';
|
|
16
|
-
|
|
17
|
-
* PERF-001 FIX: Comparator for tasks - sorted by createdAt ascending (oldest first / FIFO within priority)
|
|
18
|
-
*/
|
|
19
|
-
export declare const taskComparator: import("../shared/utils/binary-insert").Comparator<QueenTask>;
|
|
17
|
+
export { taskComparator, enqueueTask, removeFromQueues, getQueuePosition, processQueue, } from './queen-task-queue.js';
|
|
20
18
|
/**
|
|
21
19
|
* Interface exposing QueenCoordinator internals needed by task management functions.
|
|
22
20
|
*/
|
|
@@ -43,29 +41,11 @@ export interface QueenTaskContext {
|
|
|
43
41
|
readonly traceCollector: TraceCollector | null;
|
|
44
42
|
readonly taskTraceContexts: Map<string, TraceContext>;
|
|
45
43
|
readonly coExecutionRepo: CoExecutionRepository | null;
|
|
46
|
-
requestAgentSpawn(domain: DomainName, type: string, capabilities: string[]): Promise<Result<string, Error>>;
|
|
44
|
+
requestAgentSpawn(domain: DomainName, type: string, capabilities: string[], taskId?: string): Promise<Result<string, Error>>;
|
|
47
45
|
publishEvent(type: string, payload: Record<string, unknown>): Promise<void>;
|
|
48
46
|
getDomainLoad(domain: DomainName): number;
|
|
49
47
|
getDomainHealth(domain: DomainName): import('../kernel/interfaces').DomainHealth | undefined;
|
|
50
48
|
}
|
|
51
|
-
/**
|
|
52
|
-
* PERF-001 FIX: Use binary insertion O(log n) instead of sort O(n log n)
|
|
53
|
-
*/
|
|
54
|
-
export declare function enqueueTask(taskQueue: Map<Priority, QueenTask[]>, domainQueues: Map<DomainName, QueenTask[]>, task: QueenTask): void;
|
|
55
|
-
/**
|
|
56
|
-
* Remove a task from all queues.
|
|
57
|
-
* PERF-008: Only iterate the task's targetDomains instead of ALL_DOMAINS.
|
|
58
|
-
*/
|
|
59
|
-
export declare function removeFromQueues(taskQueue: Map<Priority, QueenTask[]>, domainQueues: Map<DomainName, QueenTask[]>, task: QueenTask): void;
|
|
60
|
-
/**
|
|
61
|
-
* Get the position of a task within the priority queues.
|
|
62
|
-
*/
|
|
63
|
-
export declare function getQueuePosition(taskQueue: Map<Priority, QueenTask[]>, task: QueenTask): number;
|
|
64
|
-
/**
|
|
65
|
-
* Process the queue: dequeue highest-priority tasks and assign them.
|
|
66
|
-
* CC-002 FIX: Uses atomic counter for capacity check.
|
|
67
|
-
*/
|
|
68
|
-
export declare function processQueue(ctx: QueenTaskContext): Promise<void>;
|
|
69
49
|
/**
|
|
70
50
|
* List tasks with optional filtering.
|
|
71
51
|
*/
|
|
@@ -79,8 +59,22 @@ export declare function assignTask(ctx: QueenTaskContext, task: QueenTask): Prom
|
|
|
79
59
|
* circuit breaker checks, team management, and domain plugin execution.
|
|
80
60
|
*/
|
|
81
61
|
export declare function assignTaskToDomain(ctx: QueenTaskContext, task: QueenTask, domain: DomainName): Promise<Result<string, Error>>;
|
|
62
|
+
/**
|
|
63
|
+
* Work stealing: dispatch a queued task to another domain. It takes a slot
|
|
64
|
+
* like any dispatched task, so its settle leaves the counter balanced, and it
|
|
65
|
+
* is failed with the reason if it cannot be assigned (#1124).
|
|
66
|
+
*
|
|
67
|
+
* Returns whether the task is now running in `domain`. An entry that reached a
|
|
68
|
+
* terminal state while still queued (#1070) is not dispatched at all.
|
|
69
|
+
*/
|
|
70
|
+
export declare function dispatchStolenTask(ctx: QueenTaskContext, task: QueenTask, domain: DomainName): Promise<boolean>;
|
|
82
71
|
/**
|
|
83
72
|
* Check if a domain can handle a given task type.
|
|
84
73
|
*/
|
|
85
74
|
export declare function canDomainHandleTask(domain: DomainName, task: QueenTask): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* #1124: whether a task can run in a domain, i.e. the domain is configured for
|
|
77
|
+
* its type and, for a Queen-owned task, the domain's plugin has a handler.
|
|
78
|
+
*/
|
|
79
|
+
export declare function canDomainExecuteTask(domainPlugins: ReadonlyMap<DomainName, DomainPlugin> | undefined, domain: DomainName, task: QueenTask): boolean;
|
|
86
80
|
//# sourceMappingURL=queen-task-management.d.ts.map
|
|
@@ -1,152 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Agentic QE v3 - Queen Task Management
|
|
3
3
|
* Extracted from queen-coordinator.ts - Task assignment, domain routing,
|
|
4
|
-
* TinyDancer integration,
|
|
4
|
+
* TinyDancer integration, and domain plugin execution. Queue operations and
|
|
5
|
+
* the drain live in queen-task-queue.ts.
|
|
5
6
|
*/
|
|
6
7
|
import { ok, err } from '../shared/types/index.js';
|
|
7
|
-
import {
|
|
8
|
+
import { toError } from '../shared/error-utils.js';
|
|
8
9
|
import { getTaskDomains } from './queen-types.js';
|
|
9
10
|
import { settleCancelledTask } from './cancelled-task-settlement.js';
|
|
10
11
|
import { findDomainsWithoutHandler, describeMissingHandler } from './task-executability.js';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
// ============================================================================
|
|
14
|
-
/**
|
|
15
|
-
* PERF-001 FIX: Comparator for tasks - sorted by createdAt ascending (oldest first / FIFO within priority)
|
|
16
|
-
*/
|
|
17
|
-
export const taskComparator = createdAtComparator();
|
|
18
|
-
// ============================================================================
|
|
19
|
-
// Queue operations
|
|
20
|
-
// ============================================================================
|
|
21
|
-
/**
|
|
22
|
-
* PERF-001 FIX: Use binary insertion O(log n) instead of sort O(n log n)
|
|
23
|
-
*/
|
|
24
|
-
export function enqueueTask(taskQueue, domainQueues, task) {
|
|
25
|
-
const priorityQueue = taskQueue.get(task.priority);
|
|
26
|
-
if (priorityQueue) {
|
|
27
|
-
binaryInsert(priorityQueue, task, taskComparator);
|
|
28
|
-
}
|
|
29
|
-
// Also add to domain-specific queues (unsorted - just for load tracking)
|
|
30
|
-
for (const domain of task.targetDomains) {
|
|
31
|
-
const domainQueue = domainQueues.get(domain);
|
|
32
|
-
if (domainQueue) {
|
|
33
|
-
domainQueue.push(task);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Remove a task from all queues.
|
|
39
|
-
* PERF-008: Only iterate the task's targetDomains instead of ALL_DOMAINS.
|
|
40
|
-
*/
|
|
41
|
-
export function removeFromQueues(taskQueue, domainQueues, task) {
|
|
42
|
-
const priorityQueue = taskQueue.get(task.priority);
|
|
43
|
-
if (priorityQueue) {
|
|
44
|
-
const idx = priorityQueue.findIndex(t => t.id === task.id);
|
|
45
|
-
if (idx !== -1) {
|
|
46
|
-
priorityQueue.splice(idx, 1);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
for (const domain of task.targetDomains) {
|
|
50
|
-
const domainQueue = domainQueues.get(domain);
|
|
51
|
-
if (domainQueue) {
|
|
52
|
-
const idx = domainQueue.findIndex(t => t.id === task.id);
|
|
53
|
-
if (idx !== -1) {
|
|
54
|
-
domainQueue.splice(idx, 1);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Get the position of a task within the priority queues.
|
|
61
|
-
*/
|
|
62
|
-
export function getQueuePosition(taskQueue, task) {
|
|
63
|
-
let position = 0;
|
|
64
|
-
for (const p of ['p0', 'p1', 'p2', 'p3']) {
|
|
65
|
-
const queue = taskQueue.get(p);
|
|
66
|
-
if (queue) {
|
|
67
|
-
if (p === task.priority) {
|
|
68
|
-
position += queue.findIndex(t => t.id === task.id);
|
|
69
|
-
break;
|
|
70
|
-
}
|
|
71
|
-
position += queue.length;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
return position;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Process the queue: dequeue highest-priority tasks and assign them.
|
|
78
|
-
* CC-002 FIX: Uses atomic counter for capacity check.
|
|
79
|
-
*/
|
|
80
|
-
export async function processQueue(ctx) {
|
|
81
|
-
if (ctx.runningTaskCounter >= ctx.config.maxConcurrentTasks) {
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
// #1081: while this drain runs, a task failed at dispatch frees its slot
|
|
85
|
-
// here instead of starting a nested drain (one stack frame per failed task).
|
|
86
|
-
drainDepth.set(ctx.tasks, (drainDepth.get(ctx.tasks) ?? 0) + 1);
|
|
87
|
-
try {
|
|
88
|
-
for (const priority of ['p0', 'p1', 'p2', 'p3']) {
|
|
89
|
-
const queue = ctx.taskQueue.get(priority);
|
|
90
|
-
if (!queue || queue.length === 0)
|
|
91
|
-
continue;
|
|
92
|
-
let task = shiftDispatchableTask(ctx, queue);
|
|
93
|
-
while (task) {
|
|
94
|
-
removeFromQueues(ctx.taskQueue, ctx.domainQueues, task);
|
|
95
|
-
// CC-002 FIX: Increment counter before assigning queued task
|
|
96
|
-
ctx.runningTaskCounter++;
|
|
97
|
-
let assigned;
|
|
98
|
-
try {
|
|
99
|
-
assigned = await assignTask(ctx, task);
|
|
100
|
-
}
|
|
101
|
-
catch (error) {
|
|
102
|
-
ctx.runningTaskCounter = Math.max(0, ctx.runningTaskCounter - 1);
|
|
103
|
-
throw error;
|
|
104
|
-
}
|
|
105
|
-
// #1081: a queued task that cannot be assigned (no healthy domain, open
|
|
106
|
-
// breaker) has no caller waiting on the result. Fail it with the reason
|
|
107
|
-
// rather than leave it queued forever on a held slot.
|
|
108
|
-
if (!assigned.success && (ctx.tasks.get(task.id)?.status ?? 'queued') === 'queued') {
|
|
109
|
-
settleFailedBeforeRun(ctx, task, undefined, assigned.error.message);
|
|
110
|
-
}
|
|
111
|
-
if (ctx.runningTaskCounter >= ctx.config.maxConcurrentTasks) {
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
// A task that failed without starting gave its slot back; let the
|
|
115
|
-
// next task of this priority have it.
|
|
116
|
-
task = ctx.tasks.get(task.id)?.status === 'failed' ? shiftDispatchableTask(ctx, queue) : undefined;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
finally {
|
|
121
|
-
const depth = (drainDepth.get(ctx.tasks) ?? 1) - 1;
|
|
122
|
-
if (depth > 0)
|
|
123
|
-
drainDepth.set(ctx.tasks, depth);
|
|
124
|
-
else
|
|
125
|
-
drainDepth.delete(ctx.tasks);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Drains in progress per Queen, keyed by its task map (the task context
|
|
130
|
-
* object is rebuilt for every call).
|
|
131
|
-
*/
|
|
132
|
-
const drainDepth = new WeakMap();
|
|
133
|
-
/**
|
|
134
|
-
* Take the next task that is still waiting to run. A queued task can reach a
|
|
135
|
-
* terminal state without being dequeued, e.g. when its caller executes it
|
|
136
|
-
* directly (#1070). Dispatching it again would flip it back to running and
|
|
137
|
-
* leak a capacity slot, so such entries are dropped from the queues instead.
|
|
138
|
-
*/
|
|
139
|
-
function shiftDispatchableTask(ctx, queue) {
|
|
140
|
-
let task = queue.shift();
|
|
141
|
-
while (task) {
|
|
142
|
-
const status = ctx.tasks.get(task.id)?.status;
|
|
143
|
-
if (status === undefined || status === 'queued')
|
|
144
|
-
return task;
|
|
145
|
-
removeFromQueues(ctx.taskQueue, ctx.domainQueues, task);
|
|
146
|
-
task = queue.shift();
|
|
147
|
-
}
|
|
148
|
-
return undefined;
|
|
149
|
-
}
|
|
12
|
+
import { processQueue, releaseSlot, settleFailedBeforeRun } from './queen-task-queue.js';
|
|
13
|
+
export { taskComparator, enqueueTask, removeFromQueues, getQueuePosition, processQueue, } from './queen-task-queue.js';
|
|
150
14
|
// ============================================================================
|
|
151
15
|
// Task filtering
|
|
152
16
|
// ============================================================================
|
|
@@ -268,13 +132,13 @@ export async function assignTaskToDomain(ctx, task, domain) {
|
|
|
268
132
|
// preamble can instruct it to call `aqe llm advise` before substantive work
|
|
269
133
|
...(routeDecision?.triggerMultiModel ? ['advisor:triggerMultiModel'] : []),
|
|
270
134
|
];
|
|
271
|
-
const spawnResult = await ctx.requestAgentSpawn(domain, agentType, spawnCapabilities);
|
|
135
|
+
const spawnResult = await ctx.requestAgentSpawn(domain, agentType, spawnCapabilities, task.id);
|
|
272
136
|
// A queued task can be cancelled while routing or agent spawn is awaiting.
|
|
273
137
|
// Do not recreate it as running or dispatch its plugin afterward.
|
|
274
138
|
if (ctx.tasks.get(task.id)?.status === 'cancelled') {
|
|
275
139
|
if (spawnResult.success)
|
|
276
140
|
await ctx.agentCoordinator.stop(spawnResult.value);
|
|
277
|
-
|
|
141
|
+
await releaseSlot(ctx);
|
|
278
142
|
return ok(task.id);
|
|
279
143
|
}
|
|
280
144
|
const agentIds = [];
|
|
@@ -317,25 +181,36 @@ export async function assignTaskToDomain(ctx, task, domain) {
|
|
|
317
181
|
timeout: task.timeout,
|
|
318
182
|
correlationId: task.correlationId,
|
|
319
183
|
};
|
|
320
|
-
|
|
184
|
+
// #1140: a plugin that throws is treated like one that returns err, so
|
|
185
|
+
// the task is settled here instead of left running on a released slot.
|
|
186
|
+
let execResult;
|
|
187
|
+
try {
|
|
188
|
+
execResult = await plugin.executeTask(request, (result) => handleTaskCompletionCallback(ctx, result));
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
execResult = err(toError(error));
|
|
192
|
+
}
|
|
321
193
|
if (!execResult.success) {
|
|
322
194
|
const cancelled = settleCancelledTask(ctx.tasks, task.id);
|
|
323
195
|
if (cancelled.ignored) {
|
|
324
|
-
if (cancelled.settledNow)
|
|
325
|
-
|
|
326
|
-
await processQueue(ctx);
|
|
327
|
-
}
|
|
196
|
+
if (cancelled.settledNow)
|
|
197
|
+
await releaseSlot(ctx);
|
|
328
198
|
return ok(task.id);
|
|
329
199
|
}
|
|
200
|
+
// #1140: the plugin already reported this task through onComplete,
|
|
201
|
+
// which settled it and released its slot.
|
|
202
|
+
if (ctx.tasks.get(task.id)?.status !== 'running')
|
|
203
|
+
return err(execResult.error);
|
|
330
204
|
ctx.tasks.set(task.id, {
|
|
331
205
|
...execution,
|
|
332
206
|
status: 'failed',
|
|
333
207
|
error: execResult.error.message,
|
|
334
208
|
completedAt: new Date(),
|
|
335
209
|
});
|
|
336
|
-
ctx.runningTaskCounter = Math.max(0, ctx.runningTaskCounter - 1);
|
|
337
210
|
ctx.tasksFailed++;
|
|
338
211
|
ctx.auditLogger.logFail(task.id, agentIds[0], execResult.error.message);
|
|
212
|
+
await ctx.publishEvent('TaskFailed', { taskId: task.id, domain, error: execResult.error.message });
|
|
213
|
+
await releaseSlot(ctx);
|
|
339
214
|
return err(execResult.error);
|
|
340
215
|
}
|
|
341
216
|
return ok(task.id);
|
|
@@ -348,32 +223,40 @@ export async function assignTaskToDomain(ctx, task, domain) {
|
|
|
348
223
|
* failed with the reason, its slot is released and the queue moves on.
|
|
349
224
|
*/
|
|
350
225
|
async function failUnexecutableTask(ctx, task, domain, reason) {
|
|
351
|
-
settleFailedBeforeRun(ctx, task, domain, reason);
|
|
352
226
|
const traceCtx = ctx.taskTraceContexts.get(task.id);
|
|
353
227
|
if (ctx.traceCollector && traceCtx) {
|
|
354
228
|
ctx.traceCollector.failSpan(traceCtx.spanId, reason);
|
|
355
229
|
ctx.taskTraceContexts.delete(task.id);
|
|
356
230
|
}
|
|
357
|
-
|
|
358
|
-
if (!drainDepth.has(ctx.tasks))
|
|
359
|
-
await processQueue(ctx);
|
|
231
|
+
await settleFailedBeforeRun(ctx, task, domain, reason);
|
|
360
232
|
return ok(task.id);
|
|
361
233
|
}
|
|
362
|
-
/**
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
ctx.runningTaskCounter
|
|
375
|
-
|
|
376
|
-
|
|
234
|
+
/**
|
|
235
|
+
* Work stealing: dispatch a queued task to another domain. It takes a slot
|
|
236
|
+
* like any dispatched task, so its settle leaves the counter balanced, and it
|
|
237
|
+
* is failed with the reason if it cannot be assigned (#1124).
|
|
238
|
+
*
|
|
239
|
+
* Returns whether the task is now running in `domain`. An entry that reached a
|
|
240
|
+
* terminal state while still queued (#1070) is not dispatched at all.
|
|
241
|
+
*/
|
|
242
|
+
export async function dispatchStolenTask(ctx, task, domain) {
|
|
243
|
+
const status = ctx.tasks.get(task.id)?.status;
|
|
244
|
+
if (status !== undefined && status !== 'queued')
|
|
245
|
+
return false;
|
|
246
|
+
ctx.runningTaskCounter++;
|
|
247
|
+
let assigned;
|
|
248
|
+
try {
|
|
249
|
+
assigned = await assignTaskToDomain(ctx, task, domain);
|
|
250
|
+
}
|
|
251
|
+
catch (error) {
|
|
252
|
+
ctx.runningTaskCounter = Math.max(0, ctx.runningTaskCounter - 1);
|
|
253
|
+
throw error;
|
|
254
|
+
}
|
|
255
|
+
if (!assigned.success && (ctx.tasks.get(task.id)?.status ?? 'queued') === 'queued') {
|
|
256
|
+
await settleFailedBeforeRun(ctx, task, domain, assigned.error.message);
|
|
257
|
+
}
|
|
258
|
+
const after = ctx.tasks.get(task.id);
|
|
259
|
+
return after?.assignedDomain === domain && (after.status === 'running' || after.status === 'completed');
|
|
377
260
|
}
|
|
378
261
|
// ============================================================================
|
|
379
262
|
// Task completion callback (from domain plugin)
|
|
@@ -445,4 +328,15 @@ export function canDomainHandleTask(domain, task) {
|
|
|
445
328
|
const compatibleDomains = getTaskDomains(task.type);
|
|
446
329
|
return compatibleDomains.includes(domain);
|
|
447
330
|
}
|
|
331
|
+
/**
|
|
332
|
+
* #1124: whether a task can run in a domain, i.e. the domain is configured for
|
|
333
|
+
* its type and, for a Queen-owned task, the domain's plugin has a handler.
|
|
334
|
+
*/
|
|
335
|
+
export function canDomainExecuteTask(domainPlugins, domain, task) {
|
|
336
|
+
if (!canDomainHandleTask(domain, task))
|
|
337
|
+
return false;
|
|
338
|
+
if (task.executionOwner === 'caller' || !domainPlugins)
|
|
339
|
+
return true;
|
|
340
|
+
return findDomainsWithoutHandler(domainPlugins, task.type, [domain]).length === 0;
|
|
341
|
+
}
|
|
448
342
|
//# sourceMappingURL=queen-task-management.js.map
|