agentic-qe 3.15.8 → 3.15.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +434 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/adapters/a2ui/catalog/component-schemas.js +2 -1
- package/dist/adapters/a2ui/data/json-pointer-resolver.js +10 -5
- package/dist/adapters/a2ui/integration/agui-sync.js +10 -6
- package/dist/adapters/a2ui/integration/surface-state-bridge.js +9 -5
- package/dist/adapters/ag-ui/json-patch.js +10 -6
- package/dist/agents/claim-verifier/claim-verifier-service.js +13 -8
- package/dist/audit/witness-chain.d.ts +1 -1
- package/dist/bridge/captured-experience-bridge.js +12 -13
- package/dist/cli/bundle.js +6 -6
- package/dist/cli/chunks/adapter-TR5SLAZC.js +2 -0
- package/dist/cli/chunks/agent-booster-wasm-H7ANGXW4.js +2 -0
- package/dist/cli/chunks/{agent-handler-2NQFHAWE.js → agent-handler-SVXSHEET.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-457ECHHK.js → agent-memory-branch-WKQH36XL.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-DXWKCHY2.js +2 -0
- package/dist/cli/chunks/{arena-JV3WSEHU.js → arena-EKOOFVST.js} +2 -2
- package/dist/cli/chunks/{arena-IYBQ3GPY.js → arena-OPS36NFZ.js} +4 -4
- package/dist/cli/chunks/{audit-5OS3T3K6.js → audit-AO5NDZRI.js} +3 -3
- package/dist/cli/chunks/base-GTB6POYE.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-IQKBFVAO.js → better-sqlite3-TFLVEMMY.js} +2 -2
- package/dist/cli/chunks/{brain-handler-KA3SGAFM.js → brain-handler-ADBBJPYW.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-QZDU2VOQ.js → branch-enumerator-HGHUYYL5.js} +2 -2
- package/dist/cli/chunks/browser-5LU6P4SZ.js +4 -0
- package/dist/cli/chunks/browser-workflow-MSBOLYUY.js +2 -0
- package/dist/cli/chunks/{chunk-CRUQ6RXU.js → chunk-2SXBBUM6.js} +2 -2
- package/dist/cli/chunks/{chunk-4GUVVGJX.js → chunk-2T7RRL6G.js} +1 -1
- package/dist/cli/chunks/{chunk-OJWEZYLR.js → chunk-2XGVTYVX.js} +2 -2
- package/dist/cli/chunks/{chunk-LVHZK7GW.js → chunk-2ZI5FKSF.js} +2 -2
- package/dist/cli/chunks/chunk-2ZMF4NCF.js +4 -0
- package/dist/cli/chunks/{chunk-62T7U25U.js → chunk-37OWRCUN.js} +1 -1
- package/dist/cli/chunks/{chunk-UQLAN5TX.js → chunk-3P34JFQH.js} +5 -5
- package/dist/cli/chunks/{chunk-UDCYQLTD.js → chunk-3Y7SPD72.js} +2 -2
- package/dist/cli/chunks/{chunk-PPIM7B5G.js → chunk-4G63WT4F.js} +2 -2
- package/dist/cli/chunks/chunk-4SJYIX54.js +3 -0
- package/dist/cli/chunks/chunk-5E6GHSTY.js +3 -0
- package/dist/cli/chunks/{chunk-4TZLZRZ4.js → chunk-5LPYV3TK.js} +1 -1
- package/dist/cli/chunks/{chunk-YUP3APSN.js → chunk-62OAY5KJ.js} +1 -1
- package/dist/cli/chunks/{chunk-VQRBBR27.js → chunk-6C3II5OM.js} +2 -2
- package/dist/cli/chunks/{chunk-RG42LDOB.js → chunk-6GP6W46M.js} +2 -2
- package/dist/cli/chunks/{chunk-KMZW2P3R.js → chunk-6KIL6CMD.js} +2 -2
- package/dist/cli/chunks/{chunk-UKKFZJME.js → chunk-6MVVSSID.js} +1 -1
- package/dist/cli/chunks/{chunk-VVK4ECVJ.js → chunk-6P7424AO.js} +2 -2
- package/dist/cli/chunks/{chunk-A2UGPKCS.js → chunk-6PX4OXQO.js} +2 -2
- package/dist/cli/chunks/{chunk-JLTGO5BB.js → chunk-6S3WJGUV.js} +2 -2
- package/dist/cli/chunks/{chunk-GSOK4M6V.js → chunk-6TB6YOCZ.js} +1 -1
- package/dist/cli/chunks/{chunk-VWRNG3UK.js → chunk-6X5DHU6Q.js} +1 -1
- package/dist/cli/chunks/{chunk-5YOO5QSE.js → chunk-6XCMKIZN.js} +1 -1
- package/dist/cli/chunks/{chunk-4C3RYBTT.js → chunk-7LFZ4CHM.js} +2 -2
- package/dist/cli/chunks/{chunk-O4RRVTXN.js → chunk-7OZVZIBE.js} +2 -2
- package/dist/cli/chunks/{chunk-2JCLACCS.js → chunk-7PJIR4ST.js} +2 -2
- package/dist/cli/chunks/{chunk-NWFBF3KT.js → chunk-7TB6FK4B.js} +1 -1
- package/dist/cli/chunks/{chunk-FJAO4UX2.js → chunk-7ZCDZHDB.js} +2 -2
- package/dist/cli/chunks/chunk-A55QKKT2.js +2 -0
- package/dist/cli/chunks/{chunk-ZOVAZTXE.js → chunk-ABFFWZPC.js} +273 -278
- package/dist/cli/chunks/{chunk-FWXNFPLS.js → chunk-ACWFKES2.js} +2 -2
- package/dist/cli/chunks/{chunk-IJSFZO7P.js → chunk-AH3ZD3NJ.js} +2 -2
- package/dist/cli/chunks/{chunk-7SLEUVPZ.js → chunk-AI4VYSFS.js} +2 -2
- package/dist/cli/chunks/chunk-APSRPR4W.js +2 -0
- package/dist/cli/chunks/chunk-ATHWDAXB.js +3 -0
- package/dist/cli/chunks/{chunk-2GSAAUW3.js → chunk-B6LTH6YV.js} +2 -2
- package/dist/cli/chunks/chunk-BQUAE3CP.js +3 -0
- package/dist/cli/chunks/{chunk-7XGM7Q2N.js → chunk-C522H7XR.js} +54 -33
- package/dist/cli/chunks/{chunk-7DHSHD5B.js → chunk-CESIR27V.js} +2 -2
- package/dist/cli/chunks/{chunk-V7VZSNDK.js → chunk-CFBEBXLO.js} +3 -3
- package/dist/cli/chunks/{chunk-NZATJ2C6.js → chunk-CMBLM26R.js} +2 -2
- package/dist/cli/chunks/{chunk-7CVMT64N.js → chunk-CZ2IF6MC.js} +1 -1
- package/dist/cli/chunks/{chunk-YVWMJZ6O.js → chunk-CZGOSJQ4.js} +2 -2
- package/dist/cli/chunks/{chunk-TMNEK7TP.js → chunk-D6DA2KFD.js} +2 -2
- package/dist/cli/chunks/{chunk-UTNKMPTC.js → chunk-DBMNJSBV.js} +1 -1
- package/dist/cli/chunks/{chunk-JFWQFB3S.js → chunk-DE4YJQJF.js} +2 -2
- package/dist/cli/chunks/{chunk-767SR7WH.js → chunk-DEF34AFL.js} +2 -2
- package/dist/cli/chunks/{chunk-ZWMFKZEQ.js → chunk-DKAC3E3B.js} +2 -2
- package/dist/cli/chunks/{chunk-CDLG3Q2O.js → chunk-DMFTELBS.js} +2 -2
- package/dist/cli/chunks/{chunk-P4UT4LBE.js → chunk-DNRWGATA.js} +10 -10
- package/dist/cli/chunks/{chunk-PUYQ6EKC.js → chunk-DT7SIJOA.js} +2 -2
- package/dist/cli/chunks/{chunk-ST7ASEJO.js → chunk-DURHK377.js} +69 -69
- package/dist/cli/chunks/{chunk-V4QJ3MMT.js → chunk-EAU5KDFO.js} +1 -1
- package/dist/cli/chunks/{chunk-BLZEOGQE.js → chunk-EDLFX4ZB.js} +2 -2
- package/dist/cli/chunks/{chunk-ZBI7PJFX.js → chunk-EN2QSKFF.js} +2 -2
- package/dist/cli/chunks/{chunk-U7CIY3YR.js → chunk-ERQKYIP7.js} +2 -2
- package/dist/cli/chunks/{chunk-X7ZQIFES.js → chunk-ESUO3GTJ.js} +2 -2
- package/dist/cli/chunks/{chunk-SHEVM5PF.js → chunk-EWFECZ2U.js} +2 -2
- package/dist/cli/chunks/{chunk-JWPYMRIX.js → chunk-FAUCT5KR.js} +3 -3
- package/dist/cli/chunks/{chunk-KMVFBYJO.js → chunk-FB6TI3BH.js} +2 -2
- package/dist/cli/chunks/{chunk-22DOS3PM.js → chunk-FBXTQNRH.js} +2 -2
- package/dist/cli/chunks/{chunk-W5A36V3Z.js → chunk-FESZBPUB.js} +2 -2
- package/dist/cli/chunks/chunk-FFTPAWM6.js +141 -0
- package/dist/cli/chunks/{chunk-VWSGWYRB.js → chunk-FKL3R5JQ.js} +2 -2
- package/dist/cli/chunks/{chunk-2DPHFCMW.js → chunk-FPUDRSFJ.js} +2 -2
- package/dist/cli/chunks/{chunk-VKFVJCIH.js → chunk-FZOWULMH.js} +1 -1
- package/dist/cli/chunks/{chunk-HXCGV5UJ.js → chunk-G3CZCUPM.js} +2 -2
- package/dist/cli/chunks/{chunk-GENNJRNK.js → chunk-G5I6KGMW.js} +22 -22
- package/dist/cli/chunks/{chunk-J7FLNP5L.js → chunk-GHBNRMSJ.js} +2 -2
- package/dist/cli/chunks/{chunk-I77D65X5.js → chunk-GJHWY3ZX.js} +2 -2
- package/dist/cli/chunks/{chunk-DKFSCJEF.js → chunk-GJMLK5UT.js} +2 -2
- package/dist/cli/chunks/{chunk-52YRSWPS.js → chunk-GRCIBCJ2.js} +2 -2
- package/dist/cli/chunks/{chunk-NW7HTOSN.js → chunk-GWZZ7DAO.js} +2 -2
- package/dist/cli/chunks/{chunk-D4IBIMWI.js → chunk-GZLZCZ42.js} +2 -2
- package/dist/cli/chunks/{chunk-FEN2DHFM.js → chunk-H2PYU7MN.js} +1 -1
- package/dist/cli/chunks/{chunk-4I35ARWW.js → chunk-H32EPIR2.js} +1 -1
- package/dist/cli/chunks/{chunk-MUDBF2JC.js → chunk-H74Q7TJN.js} +1 -1
- package/dist/cli/chunks/chunk-HOZUDE4C.js +2 -0
- package/dist/cli/chunks/{chunk-MMY52Y6R.js → chunk-I33O4BRQ.js} +2 -2
- package/dist/cli/chunks/{chunk-ZG7UKWBB.js → chunk-IKISCIGH.js} +2 -2
- package/dist/cli/chunks/{chunk-SFPGLUXS.js → chunk-IPJ7Q3AJ.js} +1 -1
- package/dist/cli/chunks/{chunk-2ZRNXEVI.js → chunk-IU2IV4NE.js} +1 -1
- package/dist/cli/chunks/{chunk-XOOBLZXR.js → chunk-JHIY4VCC.js} +2 -2
- package/dist/cli/chunks/{chunk-PJGQ2TKN.js → chunk-KG336OV3.js} +2 -2
- package/dist/cli/chunks/{chunk-YRH7KMTU.js → chunk-KI73QCR5.js} +2 -2
- package/dist/cli/chunks/{chunk-FAYXES7R.js → chunk-KNQ2ERFX.js} +2 -2
- package/dist/cli/chunks/{chunk-CQ3SBRDP.js → chunk-KOBVYY6H.js} +2 -2
- package/dist/cli/chunks/{chunk-3N627QRU.js → chunk-KSIWGGJI.js} +8 -8
- package/dist/cli/chunks/{chunk-2UN4JOTN.js → chunk-LMS3Y7JD.js} +2 -2
- package/dist/cli/chunks/{chunk-RSMPJWQH.js → chunk-LQEURY7C.js} +1 -1
- package/dist/cli/chunks/{chunk-NQDYOF35.js → chunk-LRZY4KS2.js} +2 -2
- package/dist/cli/chunks/{chunk-U3BWBP6B.js → chunk-M2QV7PT7.js} +2 -2
- package/dist/cli/chunks/{chunk-WLXGUQOZ.js → chunk-MA7JIQ6U.js} +2 -2
- package/dist/cli/chunks/{chunk-Y5ZBF7MA.js → chunk-MG27QY4D.js} +2 -2
- package/dist/cli/chunks/chunk-MNN5J4GU.js +12 -0
- package/dist/cli/chunks/chunk-N6PIIK6G.js +3 -0
- package/dist/cli/chunks/chunk-NAXGWDVM.js +12 -0
- package/dist/cli/chunks/{chunk-DCYUHCPK.js → chunk-NGKNYIQZ.js} +1 -1
- package/dist/cli/chunks/chunk-NNFZUTDH.js +2 -0
- package/dist/cli/chunks/{chunk-UTFMMZ57.js → chunk-NPPHWFA2.js} +3 -3
- package/dist/cli/chunks/chunk-NSHU347M.js +2 -0
- package/dist/cli/chunks/{chunk-NF63NHJH.js → chunk-NVYIZCSR.js} +2 -2
- package/dist/cli/chunks/{chunk-YNQPHRUZ.js → chunk-NW5JUCCG.js} +1 -1
- package/dist/cli/chunks/{chunk-G6CLO74Q.js → chunk-NZYLNXT6.js} +3 -3
- package/dist/cli/chunks/{chunk-R2NHGESM.js → chunk-OBAREPDC.js} +2 -2
- package/dist/cli/chunks/{chunk-X3HM7SV4.js → chunk-ODJNUMV3.js} +2 -2
- package/dist/cli/chunks/{chunk-OCLAMZJG.js → chunk-OEKP73MC.js} +2 -2
- package/dist/cli/chunks/{chunk-5MBNRTT5.js → chunk-OPFGRS5S.js} +2 -2
- package/dist/cli/chunks/{chunk-K5R3WUJP.js → chunk-OY2AHLSF.js} +1 -1
- package/dist/cli/chunks/{chunk-KJNUETCB.js → chunk-OY3NJNP2.js} +1 -1
- package/dist/cli/chunks/{chunk-P2EA62YS.js → chunk-PCEW6Q2C.js} +1 -1
- package/dist/cli/chunks/{chunk-HNGNRIZZ.js → chunk-PFG6VQ5Z.js} +2 -2
- package/dist/cli/chunks/{chunk-DN3AKAPY.js → chunk-PGYMKGOE.js} +2 -2
- package/dist/cli/chunks/{chunk-BEVWCF3Q.js → chunk-PPSAMXYN.js} +3 -3
- package/dist/cli/chunks/chunk-RK73HB2F.js +2 -0
- package/dist/cli/chunks/{chunk-6E7EOHMN.js → chunk-RPHY2DU6.js} +2 -2
- package/dist/cli/chunks/{chunk-7C6FMLQR.js → chunk-RWWOHCMG.js} +25 -20
- package/dist/cli/chunks/{chunk-5ONJ7AV6.js → chunk-S75EYIJG.js} +1 -1
- package/dist/cli/chunks/chunk-SKQUUE4F.js +5 -0
- package/dist/cli/chunks/chunk-SO45NA4D.js +180 -0
- package/dist/cli/chunks/{chunk-SWY6KGMF.js → chunk-SU5H66SD.js} +2 -2
- package/dist/cli/chunks/{chunk-ZOHS32SI.js → chunk-SY2IB442.js} +2 -2
- package/dist/cli/chunks/{chunk-MV4S3TEC.js → chunk-TBLI254A.js} +2 -2
- package/dist/cli/chunks/{chunk-5DZDLOY6.js → chunk-TNMBRDCA.js} +3 -3
- package/dist/cli/chunks/{chunk-FEPFXXI7.js → chunk-TYFZXDGZ.js} +2 -2
- package/dist/cli/chunks/{chunk-A6GCO6ZU.js → chunk-U4OICXV2.js} +2 -2
- package/dist/cli/chunks/{chunk-G77Q22EN.js → chunk-U53ZB4IX.js} +2 -2
- package/dist/cli/chunks/chunk-UARKIZAS.js +2 -0
- package/dist/cli/chunks/{chunk-6GIC2263.js → chunk-UCJMVXO4.js} +2 -2
- package/dist/cli/chunks/{chunk-DAFMHM64.js → chunk-UHTTW3IT.js} +2 -2
- package/dist/cli/chunks/{chunk-2QRGIEQV.js → chunk-V2M2XCR5.js} +1 -1
- package/dist/cli/chunks/{chunk-XZQVC3GD.js → chunk-V2RSNVMW.js} +1 -1
- package/dist/cli/chunks/{chunk-GGSTLKY5.js → chunk-V6JBOIMX.js} +1 -1
- package/dist/cli/chunks/{chunk-BTMEOZYY.js → chunk-VFKF2XO7.js} +1 -1
- package/dist/cli/chunks/{chunk-4C7KE2EL.js → chunk-VFSYMOAL.js} +2 -2
- package/dist/cli/chunks/{chunk-D4O3TJI7.js → chunk-VJQYDYAJ.js} +2 -2
- package/dist/cli/chunks/{chunk-PZ7FJ4UG.js → chunk-VKRTTFB6.js} +2 -2
- package/dist/cli/chunks/{chunk-CQ5G64EA.js → chunk-VWNFAW2M.js} +2 -2
- package/dist/cli/chunks/{chunk-DY37YMMQ.js → chunk-WBM6N6IM.js} +1 -1
- package/dist/cli/chunks/{chunk-K4N2MBCE.js → chunk-WDQ7IEZY.js} +2 -2
- package/dist/cli/chunks/{chunk-HI6OBDDY.js → chunk-WDVRE6GN.js} +2 -2
- package/dist/cli/chunks/{chunk-PICEGWGB.js → chunk-WQ4PYWSW.js} +1 -1
- package/dist/cli/chunks/{chunk-NHOMVBCI.js → chunk-WSF24I3D.js} +2 -2
- package/dist/cli/chunks/{chunk-LPSMVBB3.js → chunk-XBVUVFJK.js} +2 -2
- package/dist/cli/chunks/{chunk-J6LL25QJ.js → chunk-XEB3NLJR.js} +2 -2
- package/dist/cli/chunks/{chunk-SJMZZMHP.js → chunk-XFVTGAAJ.js} +2 -2
- package/dist/cli/chunks/{chunk-KVMKYUOE.js → chunk-XLZYRTNO.js} +2 -2
- package/dist/cli/chunks/chunk-XUZDBQ5X.js +6 -0
- package/dist/cli/chunks/{chunk-WAWKAYPY.js → chunk-Y76IAYQD.js} +1 -1
- package/dist/cli/chunks/{chunk-3LFLO2WK.js → chunk-YAKGBHO4.js} +2 -2
- package/dist/cli/chunks/{chunk-TC52M542.js → chunk-YBSBABOS.js} +2 -2
- package/dist/cli/chunks/{chunk-BQUIZ5QT.js → chunk-YCGP5VFP.js} +2 -2
- package/dist/cli/chunks/{chunk-T2TDTBFV.js → chunk-YDAQK5UF.js} +1 -1
- package/dist/cli/chunks/{chunk-LHRVSK44.js → chunk-YK3BVZY6.js} +2 -2
- package/dist/cli/chunks/{chunk-QFYUZYRA.js → chunk-YK7JN5N7.js} +4 -4
- package/dist/cli/chunks/{chunk-IMSRWNWF.js → chunk-YKMU4LBV.js} +1 -1
- package/dist/cli/chunks/{chunk-NLYUC63R.js → chunk-YYTGXD3R.js} +2 -2
- package/dist/cli/chunks/{chunk-OWBFVAEH.js → chunk-Z2O2YJAF.js} +2 -2
- package/dist/cli/chunks/{chunk-KITKQUBX.js → chunk-Z7IYW5U7.js} +1 -1
- package/dist/cli/chunks/{chunk-4NTLGGXO.js → chunk-ZG5666GJ.js} +1 -1
- package/dist/cli/chunks/{chunk-4YUBWU3E.js → chunk-ZXPY654C.js} +1 -1
- package/dist/cli/chunks/{ci-7NUCRGWO.js → ci-MSKMVH5X.js} +2 -2
- package/dist/cli/chunks/{ci-config-VQVECCFI.js → ci-config-7ODMNAUM.js} +2 -2
- package/dist/cli/chunks/{ci-output-P7GQ6TKF.js → ci-output-FXZ7ZZW3.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-5YP6N6HE.js → circuit-breaker-4VOUEPOX.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-W5H7CMU6.js → claude-flow-setup-7D4SGLM4.js} +2 -2
- package/dist/cli/chunks/client-POSVREVS.js +2 -0
- package/dist/cli/chunks/{cline-installer-OYANSZ54.js → cline-installer-WRRT7BGQ.js} +2 -2
- package/dist/cli/chunks/{code-OMT4UEZI.js → code-ZDJRIL3S.js} +25 -24
- package/dist/cli/chunks/{code-index-extractor-M2JEWKNF.js → code-index-extractor-4S4SHM56.js} +2 -2
- package/dist/cli/chunks/{codex-installer-YBS6N5O3.js → codex-installer-YTRHNDWR.js} +2 -2
- package/dist/cli/chunks/{completions-U7GS5RG6.js → completions-6N64JUXJ.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-QSXPIUIU.js → complexity-analyzer-I4A26VCJ.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-W5TTT743.js → continuedev-installer-IIDR66LB.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-KC2RT24C.js → copilot-installer-SVVFY3S2.js} +2 -2
- package/dist/cli/chunks/core-handlers-V243GY7X.js +2 -0
- package/dist/cli/chunks/{cost-tracker-OQPVR6V4.js → cost-tracker-VGFS6IBX.js} +2 -2
- package/dist/cli/chunks/{coverage-TCO2A2NX.js → coverage-B7MCGNTE.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-N3AIEM3B.js +2 -0
- package/dist/cli/chunks/{cursor-installer-MH7GWD4L.js → cursor-installer-UPETT57E.js} +2 -2
- package/dist/cli/chunks/daemon-7BDJHEIJ.js +18 -0
- package/dist/cli/chunks/{daemon-UJEARJZ2.js → daemon-CQFNZLXU.js} +7 -7
- package/dist/cli/chunks/{dag-attention-scheduler-F3SUJU5O.js → dag-attention-scheduler-PJVABHON.js} +2 -2
- package/dist/cli/chunks/{detect-5QTCRB32.js → detect-56SKAGWX.js} +2 -2
- package/dist/cli/chunks/{dist-node-XKZPHDBO.js → dist-node-UYTYUMLN.js} +2 -2
- package/dist/cli/chunks/{domain-handler-V3UEADKW.js → domain-handler-YOYLBYJE.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-7PES4UHZ.js → domain-plugins-7TARX2XF.js} +2 -2
- package/dist/cli/chunks/domain-transfer-AKVSBD6E.js +2 -0
- package/dist/cli/chunks/dream-UA7MKOPQ.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-D2HWORHF.js → embed-and-insert-pattern-IS6HSR66.js} +2 -2
- package/dist/cli/chunks/{eval-UF2UBAUC.js → eval-GNB574IM.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-2OUCEHHM.js → experience-capture-middleware-RCAOCKM7.js} +3 -3
- package/dist/cli/chunks/{fast-paths-KV5DKKHC.js → fast-paths-KTZ5SF54.js} +2 -2
- package/dist/cli/chunks/{feature-flags-MTW6NMR3.js → feature-flags-ITX5LQ57.js} +2 -2
- package/dist/cli/chunks/{feature-flags-6YWMTNO5.js → feature-flags-KFHSR5YF.js} +2 -2
- package/dist/cli/chunks/file-discovery-YCMNKZAK.js +2 -0
- package/dist/cli/chunks/fleet-2Y3ZE6CE.js +46 -0
- package/dist/cli/chunks/{gnn-wrapper-52V6ANOY.js → gnn-wrapper-RLFW3GSX.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-X7NHNRC7.js → heartbeat-handler-EM2URCYZ.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-QH5V6G2P.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-OJNFAGJS.js +2 -0
- package/dist/cli/chunks/hnsw-index-DFUNARVD.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-DZBE3KMK.js → hnsw-legacy-bridge-JMHEOIBH.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-2AWWUJAZ.js → hnswlib-node-CBP73QHY.js} +2 -2
- package/dist/cli/chunks/{hooks-XLPVROL3.js → hooks-IP7XE34Z.js} +34 -34
- package/dist/cli/chunks/hybrid-backend-SSGQQEQ2.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-6TI7YP6P.js → hypergraph-engine-ONAYHU25.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-DBIBBOXS.js → hypergraph-handler-VINJRAID.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-CRGCA7ZD.js +2 -0
- package/dist/cli/chunks/{init-guard-OSO6MIDD.js → init-guard-RYVV5R3Z.js} +2 -2
- package/dist/cli/chunks/{init-handler-7S7IHMUF.js → init-handler-MPRGWMOE.js} +6 -6
- package/dist/cli/chunks/init-wizard-NIMZ4J55.js +2 -0
- package/dist/cli/chunks/kernel-JQK7PRAI.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-2KBRFXMA.js → kilocode-installer-OPD7JBRL.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-5VFR4OQZ.js → kiro-installer-M4OPUNK2.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-YPVVIKEU.js +2 -0
- package/dist/cli/chunks/{learning-G5NHL3DV.js → learning-4UWTQLMF.js} +24 -24
- package/dist/cli/chunks/{llm-router-4EAPPMHS.js → llm-router-SQ56FF6Z.js} +4 -4
- package/dist/cli/chunks/llm-router-service-5OGAUOXF.js +2 -0
- package/dist/cli/chunks/{load-UYMZPEY6.js → load-HPHKDGGL.js} +2 -2
- package/dist/cli/chunks/load-test-UKNV5MWW.js +2 -0
- package/dist/cli/chunks/mcp-TELMAC7Z.js +2 -0
- package/dist/cli/chunks/{memory-QL53YIHP.js → memory-PFQ3KPVJ.js} +5 -5
- package/dist/cli/chunks/memory-backend-ZW4BTRNK.js +2 -0
- package/dist/cli/chunks/memory-handlers-FCXN437E.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-PDDDXF2B.js → multi-model-executor-3VDRX6TZ.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-75D2SKOT.js → opencode-installer-PJ576R63.js} +2 -2
- package/dist/cli/chunks/{orchestrator-3WIZBV4T.js → orchestrator-72QP4UU7.js} +64 -19
- package/dist/cli/chunks/pattern-null-store-4DUV6MQC.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-TEX2JGHA.js → pattern-usage-recorder-754YQW7C.js} +2 -2
- package/dist/cli/chunks/pipeline-AVXY4MVB.js +19 -0
- package/dist/cli/chunks/{platform-WPSKRJE7.js → platform-3E3DXLYB.js} +2 -2
- package/dist/cli/chunks/{plugin-UUFOVVMU.js → plugin-7FUQAKRE.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-PDFSYWKZ.js → prime-radiant-advanced-wasm-NIB4F5NV.js} +2 -2
- package/dist/cli/chunks/project-root-JCAUNL6O.js +2 -0
- package/dist/cli/chunks/protocol-executor-RNZNZP3A.js +2 -0
- package/dist/cli/chunks/{protocol-handler-3VRYRIQB.js → protocol-handler-BQRYMUTG.js} +2 -2
- package/dist/cli/chunks/{prove-2NAUROGF.js → prove-H52QGC6B.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-WK6TQOG2.js +2 -0
- package/dist/cli/chunks/{quality-ZIEI2WGA.js → quality-QO4XPAUM.js} +2 -2
- package/dist/cli/chunks/{quality-gate-KWJO4SWQ.js → quality-gate-FBKE5E6F.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-4452SXZQ.js +2 -0
- package/dist/cli/chunks/{real-embeddings-TSZ4UIAE.js → real-embeddings-RWGOVOXO.js} +2 -2
- package/dist/cli/chunks/{ref-validation-DWFFRETJ.js → ref-validation-LF76ZOBD.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-XTZHLUBO.js → roocode-installer-3BYEBTQ7.js} +2 -2
- package/dist/cli/chunks/router-3DIS5X4R.js +2 -0
- package/dist/cli/chunks/routing-feedback-OPXRCXM7.js +2 -0
- package/dist/cli/chunks/{routing-handler-GG525TDM.js → routing-handler-DST7BVCU.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-QKRJDM7Z.js → ruvector-commands-XE32PGKC.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-JL6T727I.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-V7IBDUCS.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-FF52OS6Q.js → rvf-migration-coordinator-VP32XC75.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-O3UQTEBK.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-M6DXTAZ4.js → rvf-store-integrity-SH2AMVI7.js} +2 -2
- package/dist/cli/chunks/safe-db-EVB4ZC7T.js +2 -0
- package/dist/cli/chunks/schedule-ORDDXXY4.js +2 -0
- package/dist/cli/chunks/scheduler-XFLJSFIU.js +2 -0
- package/dist/cli/chunks/{security-EHXSW22U.js → security-VSPNKCDS.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-6EH7UVJL.js → shared-rvf-adapter-HX6AHL3P.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-WML274E7.js → shared-rvf-dual-writer-MX4FC2JE.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-Y7B42CJ3.js +2 -0
- package/dist/cli/chunks/{standalone-memory-C7QKAXS4.js → standalone-memory-O4QUTK6L.js} +2 -2
- package/dist/cli/chunks/{status-handler-VLI7MRLM.js → status-handler-Z2BP6EOG.js} +2 -2
- package/dist/cli/chunks/{structural-health-3LPG6MQN.js → structural-health-R36WNLQG.js} +2 -2
- package/dist/cli/chunks/sync-2ELWUFQU.js +2 -0
- package/dist/cli/chunks/{sync-JFJEJBVK.js → sync-QF5Y3EMZ.js} +2 -2
- package/dist/cli/chunks/{task-handler-IED3K6E4.js → task-handler-43PYE75J.js} +13 -7
- package/dist/cli/chunks/task-handlers-KPWAEMKH.js +9 -0
- package/dist/cli/chunks/{test-GPKT3CKZ.js → test-UWA377D4.js} +16 -16
- package/dist/cli/chunks/test-runner-process-3XZUYST2.js +2 -0
- package/dist/cli/chunks/{test-scheduling-Z42XXZP6.js → test-scheduling-YQZPJRRN.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-F7C6UKTC.js +2 -0
- package/dist/cli/chunks/{token-usage-6Y2ERYIY.js → token-usage-DO6WLMXP.js} +2 -2
- package/dist/cli/chunks/{transformers-MB63T2XO.js → transformers-H5RGFKVO.js} +2 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-YTBCBHUO.js +2 -0
- package/dist/cli/chunks/{types-J4J6QV3I.js → types-PJS2FGPF.js} +2 -2
- package/dist/cli/chunks/unified-memory-EHD4VNFW.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-ZODGM4UK.js +2 -0
- package/dist/cli/chunks/unified-persistence-MHSI7ABK.js +2 -0
- package/dist/cli/chunks/{upgrade-U4XU7LFM.js → upgrade-4IC4F6AB.js} +2 -2
- package/dist/cli/chunks/{validate-B57HA4YK.js → validate-DHUWW7PF.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-UPPA4M6T.js → validate-swarm-OERQNOX5.js} +2 -2
- package/dist/cli/chunks/visual-security-54MLFKWY.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-GDZMUKOZ.js → web-tree-sitter-TV7DMKES.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-VJRWCHXP.js → windsurf-installer-QZPWSH37.js} +2 -2
- package/dist/cli/chunks/witness-chain-LC6Q2W27.js +2 -0
- package/dist/cli/chunks/witness-chain-QUIBAF3W.js +2 -0
- package/dist/cli/chunks/witness-chain-repair-RUXIOE7F.js +2 -0
- package/dist/cli/chunks/{witness-chain-verifier-Z23FVABW.js → witness-chain-verifier-YXENHB42.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-745MJ7WO.js → witness-key-manager-HL26AGFO.js} +2 -2
- package/dist/cli/chunks/{workflow-T245QNQM.js → workflow-EOVVCN2E.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-UKHEJVSK.js +2 -0
- package/dist/cli/chunks/wrappers-AGODHBOO.js +2 -0
- package/dist/cli/commands/code.js +8 -0
- package/dist/cli/commands/daemon.js +8 -0
- package/dist/cli/commands/fleet.js +27 -15
- package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +9 -2
- package/dist/cli/commands/hooks-handlers/session-hooks.js +2 -2
- package/dist/cli/commands/hooks-handlers/stats-hooks.js +3 -2
- package/dist/cli/commands/learning.js +5 -3
- package/dist/cli/commands/ruvector-commands.js +2 -1
- package/dist/cli/commands/test.js +6 -0
- package/dist/cli/handlers/task-handler.js +21 -1
- package/dist/cli/utils/ci-output.d.ts +9 -0
- package/dist/cli/utils/fleet-operation.d.ts +32 -0
- package/dist/cli/utils/fleet-operation.js +71 -0
- package/dist/cli/utils/fleet-result.d.ts +31 -0
- package/dist/cli/utils/fleet-result.js +124 -0
- package/dist/context/sources/git-source.js +6 -2
- package/dist/coordination/handlers/code-intelligence-handlers.js +74 -7
- package/dist/coordination/handlers/coverage-collection.js +9 -10
- package/dist/coordination/handlers/coverage-handlers.js +31 -4
- package/dist/coordination/handlers/coverage-runner.d.ts +2 -1
- package/dist/coordination/handlers/coverage-runner.js +9 -2
- package/dist/coordination/handlers/coverage-target.d.ts +13 -3
- package/dist/coordination/handlers/coverage-target.js +224 -7
- package/dist/coordination/handlers/handler-types.d.ts +2 -0
- package/dist/coordination/handlers/requirements-handlers.js +16 -2
- package/dist/coordination/handlers/security-handlers.js +11 -1
- package/dist/coordination/handlers/test-execution-handlers.js +57 -12
- package/dist/coordination/index.d.ts +2 -2
- package/dist/coordination/index.js +1 -1
- package/dist/coordination/mincut/queen-integration.d.ts +39 -1
- package/dist/coordination/mincut/queen-integration.js +83 -6
- package/dist/coordination/protocols/learning-consolidation-archive.d.ts +35 -0
- package/dist/coordination/protocols/learning-consolidation-archive.js +34 -0
- package/dist/coordination/protocols/learning-consolidation.d.ts +62 -3
- package/dist/coordination/protocols/learning-consolidation.js +187 -60
- package/dist/coordination/queen-coordinator.d.ts +13 -2
- package/dist/coordination/queen-coordinator.js +43 -8
- package/dist/coordination/queen-event-handlers.js +15 -1
- package/dist/coordination/queen-lifecycle.js +9 -0
- package/dist/coordination/queen-task-management.d.ts +18 -24
- package/dist/coordination/queen-task-management.js +94 -127
- package/dist/coordination/queen-task-queue.d.ts +41 -0
- package/dist/coordination/queen-task-queue.js +194 -0
- package/dist/coordination/queen-types.d.ts +11 -1
- package/dist/coordination/queen-types.js +8 -0
- package/dist/coordination/queen-work-stealing.d.ts +6 -1
- package/dist/coordination/queen-work-stealing.js +7 -4
- package/dist/coordination/result-saver-adapters.d.ts +15 -0
- package/dist/coordination/result-saver-adapters.js +57 -0
- package/dist/coordination/result-saver.d.ts +1 -1
- package/dist/coordination/result-saver.js +8 -5
- package/dist/coordination/task-dag/dag-algorithms.d.ts +33 -0
- package/dist/coordination/task-dag/dag-algorithms.js +162 -0
- package/dist/coordination/task-dag/dag-obligations.d.ts +21 -0
- package/dist/coordination/task-dag/dag-obligations.js +83 -0
- package/dist/coordination/task-dag/dag.d.ts +69 -19
- package/dist/coordination/task-dag/dag.js +215 -269
- package/dist/coordination/task-dag/index.d.ts +12 -4
- package/dist/coordination/task-dag/index.js +11 -3
- package/dist/coordination/task-dag/prerequisite-ledger.d.ts +84 -0
- package/dist/coordination/task-dag/prerequisite-ledger.js +252 -0
- package/dist/coordination/task-dag/scheduler.d.ts +19 -9
- package/dist/coordination/task-dag/scheduler.js +36 -12
- package/dist/coordination/task-dag/types.d.ts +160 -1
- package/dist/coordination/task-dag/types.js +2 -1
- package/dist/coordination/task-executability.d.ts +18 -0
- package/dist/coordination/task-executability.js +31 -0
- package/dist/coordination/task-executor.d.ts +1 -0
- package/dist/coordination/task-executor.js +5 -0
- package/dist/coordination/yaml-pipeline-loader.js +5 -2
- package/dist/domains/code-intelligence/coordinator.js +35 -9
- package/dist/domains/code-intelligence/index-path-guard.d.ts +52 -0
- package/dist/domains/code-intelligence/index-path-guard.js +95 -0
- package/dist/domains/code-intelligence/interfaces.d.ts +12 -0
- package/dist/domains/code-intelligence/plugin.js +5 -1
- package/dist/domains/code-intelligence/services/knowledge-graph.d.ts +6 -0
- package/dist/domains/code-intelligence/services/knowledge-graph.js +42 -5
- package/dist/domains/code-intelligence/services/metric-collector/index.d.ts +2 -2
- package/dist/domains/code-intelligence/services/metric-collector/index.js +2 -3
- package/dist/domains/code-intelligence/services/metric-collector/loc-counter.d.ts +1 -1
- package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +11 -36
- package/dist/domains/code-intelligence/services/metric-collector/test-counter.d.ts +1 -1
- package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +45 -103
- package/dist/domains/contract-testing/coordinator.js +3 -1
- package/dist/domains/contract-testing/services/api-compatibility.js +7 -6
- package/dist/domains/contract-testing/services/contract-validator.js +6 -4
- package/dist/domains/contract-testing/services/schema-validator.js +8 -5
- package/dist/domains/defect-intelligence/interfaces.d.ts +2 -0
- package/dist/domains/defect-intelligence/plugin.js +11 -2
- package/dist/domains/defect-intelligence/prediction-history.d.ts +27 -0
- package/dist/domains/defect-intelligence/prediction-history.js +68 -0
- package/dist/domains/defect-intelligence/services/defect-predictor.js +29 -12
- package/dist/domains/enterprise-integration/services/message-broker-service.js +3 -2
- package/dist/domains/enterprise-integration/services/odata-service.js +2 -1
- package/dist/domains/enterprise-integration/services/sap-integration-service.js +3 -2
- package/dist/domains/learning-optimization/active-patterns.d.ts +14 -14
- package/dist/domains/learning-optimization/active-patterns.js +17 -14
- package/dist/domains/learning-optimization/coordinator-helpers.js +2 -3
- package/dist/domains/learning-optimization/coordinator.d.ts +0 -3
- package/dist/domains/learning-optimization/coordinator.js +52 -107
- package/dist/domains/learning-optimization/index.d.ts +1 -1
- package/dist/domains/learning-optimization/interfaces.d.ts +62 -6
- package/dist/domains/learning-optimization/pattern-archive.d.ts +31 -0
- package/dist/domains/learning-optimization/pattern-archive.js +56 -0
- package/dist/domains/learning-optimization/pattern-consolidation.d.ts +12 -0
- package/dist/domains/learning-optimization/pattern-consolidation.js +41 -0
- package/dist/domains/learning-optimization/plugin.js +11 -1
- package/dist/domains/learning-optimization/reward-source.d.ts +50 -0
- package/dist/domains/learning-optimization/reward-source.js +65 -0
- package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +7 -5
- package/dist/domains/learning-optimization/services/learning-coordinator.js +98 -75
- package/dist/domains/learning-optimization/services/metrics-optimizer.d.ts +14 -4
- package/dist/domains/learning-optimization/services/metrics-optimizer.js +129 -63
- package/dist/domains/learning-optimization/services/transfer-specialist.js +25 -15
- package/dist/domains/security-compliance/plugin.js +17 -3
- package/dist/domains/security-compliance/sast-path-guard.d.ts +9 -0
- package/dist/domains/security-compliance/sast-path-guard.js +17 -0
- package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +46 -56
- package/dist/domains/security-compliance/services/scanners/dast-helpers.js +76 -91
- package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +52 -62
- package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +21 -1
- package/dist/domains/security-compliance/services/scanners/dast-scanner.js +29 -24
- package/dist/domains/security-compliance/services/scanners/scanner-orchestrator.js +4 -1
- package/dist/domains/test-execution/coordinator.d.ts +5 -0
- package/dist/domains/test-execution/coordinator.js +35 -20
- package/dist/domains/test-execution/interfaces.d.ts +41 -0
- package/dist/domains/test-execution/plugin.js +19 -4
- package/dist/domains/test-execution/services/flaky-detector.js +9 -7
- package/dist/domains/test-execution/services/retry-handler.js +46 -7
- package/dist/domains/test-execution/services/runner-test-cases.d.ts +32 -0
- package/dist/domains/test-execution/services/runner-test-cases.js +87 -0
- package/dist/domains/test-execution/services/test-executor.d.ts +5 -0
- package/dist/domains/test-execution/services/test-executor.js +31 -9
- package/dist/domains/test-generation/plugin.js +7 -2
- package/dist/domains/test-generation/services/test-data-generator.js +3 -1
- package/dist/domains/visual-accessibility/services/axe-core-audit.js +1 -1
- package/dist/hooks/cross-phase-hooks.js +2 -1
- package/dist/init/fleet-integration.js +2 -0
- package/dist/init/init-wizard-steps.js +2 -0
- package/dist/init/phases/06-code-intelligence.js +2 -0
- package/dist/init/phases/10-workers.js +51 -6
- package/dist/integrations/browser/agent-browser/client.js +37 -52
- package/dist/integrations/browser/agent-browser/command-executor.d.ts +33 -27
- package/dist/integrations/browser/agent-browser/command-executor.js +53 -54
- package/dist/integrations/browser/agent-browser/session-manager.d.ts +1 -1
- package/dist/integrations/browser/agent-browser/session-manager.js +8 -9
- package/dist/integrations/browser/web-content-fetcher.js +9 -3
- package/dist/integrations/vibium/client.js +2 -2
- package/dist/integrations/vibium/runtime.d.ts +1 -1
- package/dist/integrations/vibium/runtime.js +14 -11
- package/dist/kernel/anti-drift-middleware.d.ts +44 -5
- package/dist/kernel/anti-drift-middleware.js +147 -11
- package/dist/kernel/interfaces.d.ts +5 -0
- package/dist/kernel/unified-memory-schemas.d.ts +3 -2
- package/dist/kernel/unified-memory-schemas.js +3 -2
- package/dist/kernel/unified-memory.js +25 -6
- package/dist/learning/dream/dream-commit.d.ts +65 -0
- package/dist/learning/dream/dream-commit.js +104 -0
- package/dist/learning/dream/dream-engine.d.ts +81 -31
- package/dist/learning/dream/dream-engine.js +225 -168
- package/dist/learning/dream/dream-insights-pruner.d.ts +24 -4
- package/dist/learning/dream/dream-insights-pruner.js +85 -11
- package/dist/learning/dream/index.d.ts +3 -2
- package/dist/learning/dream/index.js +3 -1
- package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -1
- package/dist/learning/dream/rvcow-branch-manager.js +8 -1
- package/dist/learning/dream/speculative-dreamer.d.ts +50 -74
- package/dist/learning/dream/speculative-dreamer.js +64 -111
- package/dist/learning/dream/spreading-activation.d.ts +2 -1
- package/dist/learning/dream/spreading-activation.js +15 -6
- package/dist/learning/experience-capture.d.ts +9 -0
- package/dist/learning/experience-capture.js +18 -4
- package/dist/learning/qe-reasoning-bank-types.d.ts +17 -2
- package/dist/learning/qe-reasoning-bank.js +22 -11
- package/dist/learning/skill-validation-learner.d.ts +2 -0
- package/dist/learning/skill-validation-learner.js +29 -21
- package/dist/learning/sqlite-persistence.d.ts +6 -0
- package/dist/learning/sqlite-persistence.js +16 -2
- package/dist/learning/usage-outcome.d.ts +68 -0
- package/dist/learning/usage-outcome.js +84 -0
- package/dist/mcp/background-workers.d.ts +13 -1
- package/dist/mcp/background-workers.js +23 -3
- package/dist/mcp/bundle.js +602 -551
- package/dist/mcp/handlers/core-handlers.js +11 -0
- package/dist/mcp/handlers/domain-handler-configs.d.ts +19 -0
- package/dist/mcp/handlers/domain-handler-configs.js +76 -30
- package/dist/mcp/handlers/handler-factory.d.ts +2 -1
- package/dist/mcp/handlers/handler-factory.js +37 -15
- package/dist/mcp/handlers/orchestrate-routes.d.ts +36 -0
- package/dist/mcp/handlers/orchestrate-routes.js +88 -0
- package/dist/mcp/handlers/task-handlers.d.ts +3 -0
- package/dist/mcp/handlers/task-handlers.js +69 -6
- package/dist/mcp/handlers/validation-pipeline-handler.js +6 -2
- package/dist/mcp/metrics/metrics-collector.d.ts +11 -9
- package/dist/mcp/metrics/metrics-collector.js +13 -26
- package/dist/mcp/protocol-server.js +10 -3
- package/dist/mcp/security/schema-validator.js +3 -2
- package/dist/mcp/tools/code-intelligence/c4.js +11 -1
- package/dist/mcp/tools/coverage-analysis/index.js +31 -2
- package/dist/mcp/tools/learning-optimization/dream.d.ts +8 -8
- package/dist/mcp/tools/learning-optimization/dream.js +38 -34
- package/dist/mcp/tools/learning-optimization/optimize.d.ts +52 -5
- package/dist/mcp/tools/learning-optimization/optimize.js +164 -80
- package/dist/mcp/tools/quality-assessment/gate.js +12 -1
- package/dist/mcp/tools/requirements-validation/quality-criteria.js +9 -2
- package/dist/memory/crdt/lww-register.js +11 -1
- package/dist/migration/agent-compat.js +7 -5
- package/dist/migrations/20261018_add_dream_insights_archive.d.ts +27 -0
- package/dist/migrations/20261018_add_dream_insights_archive.js +57 -0
- package/dist/routing/calibration/ema-calibrator.js +3 -1
- package/dist/shared/base-domain-plugin.d.ts +4 -0
- package/dist/shared/base-domain-plugin.js +6 -0
- package/dist/shared/git/git-analyzer.d.ts +49 -0
- package/dist/shared/git/git-analyzer.js +159 -319
- package/dist/shared/git/git-process.d.ts +22 -0
- package/dist/shared/git/git-process.js +37 -0
- package/dist/shared/git/index.d.ts +1 -0
- package/dist/shared/git/index.js +1 -0
- package/dist/shared/io/payload-path-guard.d.ts +75 -0
- package/dist/shared/io/payload-path-guard.js +190 -0
- package/dist/shared/llm/cache.js +4 -1
- package/dist/shared/llm/router/agent-router-config.js +2 -1
- package/dist/shared/llm/translation/tool-translator.js +2 -1
- package/dist/shared/security/compliance-patterns.js +3 -1
- package/dist/shared/test-runner-args.d.ts +5 -0
- package/dist/shared/test-runner-args.js +6 -1
- package/dist/shared/test-runner-process.d.ts +32 -0
- package/dist/shared/test-runner-process.js +105 -0
- package/dist/shared/test-runner-verdict.d.ts +9 -1
- package/dist/shared/test-runner-verdict.js +15 -4
- package/dist/shared/types/index.d.ts +9 -0
- package/dist/shared/types/index.js +13 -0
- package/dist/shared/utils/namespaced-search.d.ts +56 -0
- package/dist/shared/utils/namespaced-search.js +71 -0
- package/dist/shared/utils/safe-expression-evaluator.js +4 -3
- package/dist/strange-loop/infra-healing/infra-action-executor.js +7 -3
- package/dist/strange-loop/infra-healing/infra-healing-orchestrator.js +10 -9
- package/dist/strange-loop/infra-healing/recovery-playbook.js +13 -3
- package/dist/validation/gate-reexecute.js +7 -4
- package/dist/workers/daemon.d.ts +2 -0
- package/dist/workers/daemon.js +23 -6
- package/dist/workers/namespaced-keys.d.ts +4 -7
- package/dist/workers/namespaced-keys.js +4 -15
- package/dist/workers/quality-daemon/ci-monitor.js +9 -5
- package/dist/workers/quality-daemon/git-watcher.js +9 -9
- package/dist/workers/worker-env.d.ts +16 -8
- package/dist/workers/worker-env.js +25 -12
- package/dist/workers/worker-manager.js +4 -0
- package/dist/workers/workers/defect-predictor.d.ts +8 -3
- package/dist/workers/workers/defect-predictor.js +48 -49
- package/dist/workers/workers/learning-consolidation.d.ts +3 -1
- package/dist/workers/workers/learning-consolidation.js +22 -8
- package/dist/workflows/browser/workflow-loader.js +8 -5
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-FC4EY447.js +0 -2
- package/dist/cli/chunks/agent-booster-wasm-W3V5P7LE.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-AUAL6UBL.js +0 -2
- package/dist/cli/chunks/base-2XML4WH7.js +0 -2
- package/dist/cli/chunks/browser-ZL7OLKJQ.js +0 -4
- package/dist/cli/chunks/browser-workflow-2IFEUAAK.js +0 -2
- package/dist/cli/chunks/chunk-4GYFONJB.js +0 -4
- package/dist/cli/chunks/chunk-6CKTLVYV.js +0 -2
- package/dist/cli/chunks/chunk-7H3GNRNA.js +0 -4
- package/dist/cli/chunks/chunk-EUVSSIGR.js +0 -12
- package/dist/cli/chunks/chunk-I4U7YCXG.js +0 -180
- package/dist/cli/chunks/chunk-J7RCI25Q.js +0 -2
- package/dist/cli/chunks/chunk-KNHLOANK.js +0 -4
- package/dist/cli/chunks/chunk-KNQUHGNY.js +0 -2
- package/dist/cli/chunks/chunk-LZWBUVCK.js +0 -5
- package/dist/cli/chunks/chunk-PIEKGKW6.js +0 -12
- package/dist/cli/chunks/chunk-PWA6XBW4.js +0 -120
- package/dist/cli/chunks/chunk-X6VYQVUM.js +0 -2
- package/dist/cli/chunks/chunk-YTYS2XSY.js +0 -2
- package/dist/cli/chunks/chunk-Z3LDUPLQ.js +0 -6
- package/dist/cli/chunks/client-RFUSQRUZ.js +0 -2
- package/dist/cli/chunks/core-handlers-ZC7QB432.js +0 -2
- package/dist/cli/chunks/cross-domain-router-GRBK7YFZ.js +0 -2
- package/dist/cli/chunks/daemon-JER6HE2J.js +0 -12
- package/dist/cli/chunks/domain-transfer-NF7UJW7B.js +0 -2
- package/dist/cli/chunks/dream-VALD726W.js +0 -2
- package/dist/cli/chunks/file-discovery-VL73ASNI.js +0 -2
- package/dist/cli/chunks/fleet-GJ66QFXK.js +0 -43
- package/dist/cli/chunks/heartbeat-scheduler-FSX7A3ZA.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-UX2QT6RL.js +0 -2
- package/dist/cli/chunks/hnsw-index-WRDDAMXH.js +0 -2
- package/dist/cli/chunks/hybrid-backend-O67NGIB5.js +0 -2
- package/dist/cli/chunks/impact-analyzer-6VXWWYWM.js +0 -2
- package/dist/cli/chunks/init-wizard-VH34J4TL.js +0 -2
- package/dist/cli/chunks/kernel-KJD24NO7.js +0 -2
- package/dist/cli/chunks/knowledge-graph-343O2HEZ.js +0 -2
- package/dist/cli/chunks/llm-router-service-2M4BT2AO.js +0 -2
- package/dist/cli/chunks/load-test-OTQ2JQ5F.js +0 -2
- package/dist/cli/chunks/mcp-NOTDZBW5.js +0 -2
- package/dist/cli/chunks/memory-backend-4QSNRRV6.js +0 -2
- package/dist/cli/chunks/memory-handlers-YFFYRSM6.js +0 -2
- package/dist/cli/chunks/pattern-null-store-5USH5MNR.js +0 -2
- package/dist/cli/chunks/pipeline-7ATPA6LU.js +0 -19
- package/dist/cli/chunks/project-root-SRTA6TBL.js +0 -2
- package/dist/cli/chunks/protocol-executor-4WYPCNBS.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-I4D6SFS4.js +0 -2
- package/dist/cli/chunks/queen-coordinator-24UMTZTE.js +0 -2
- package/dist/cli/chunks/router-AUD4GATI.js +0 -2
- package/dist/cli/chunks/routing-feedback-2FE6SIKQ.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-P5LEUF25.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-ZCYD5YJS.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-QGV6BW2W.js +0 -2
- package/dist/cli/chunks/safe-db-Q6JUKG2A.js +0 -2
- package/dist/cli/chunks/schedule-44OSMGE5.js +0 -2
- package/dist/cli/chunks/scheduler-V3HO2QQT.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-N5T7DWMR.js +0 -2
- package/dist/cli/chunks/sync-4IMMQEPT.js +0 -2
- package/dist/cli/chunks/task-handlers-FH6DNTHW.js +0 -9
- package/dist/cli/chunks/token-bootstrap-HMM3AHXM.js +0 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-56GDQCMR.js +0 -2
- package/dist/cli/chunks/unified-memory-RQ3Q4CU3.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-ZOP5FEYX.js +0 -2
- package/dist/cli/chunks/unified-persistence-72OCJJKK.js +0 -2
- package/dist/cli/chunks/visual-security-7F5UV23J.js +0 -2
- package/dist/cli/chunks/witness-chain-KZ57QUFE.js +0 -2
- package/dist/cli/chunks/witness-chain-LFASSMZK.js +0 -2
- package/dist/cli/chunks/witness-chain-repair-TPHN4DXN.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-ZNWEUYBN.js +0 -2
- package/dist/cli/chunks/wrappers-WCAYIQUX.js +0 -2
|
@@ -14,8 +14,13 @@ export interface QueenWorkStealingContext {
|
|
|
14
14
|
getIdleDomains(): DomainName[];
|
|
15
15
|
getBusyDomains(): DomainName[];
|
|
16
16
|
getDomainLoad(domain: DomainName): number;
|
|
17
|
+
/** #1140: free Queen slots; a steal starts a task, so it needs one */
|
|
18
|
+
availableSlots(): number;
|
|
19
|
+
/** #1124: the domain is configured for the task and its plugin can execute it */
|
|
20
|
+
canExecuteInDomain(domain: DomainName, task: QueenTask): boolean;
|
|
17
21
|
removeFromQueues(task: QueenTask): void;
|
|
18
|
-
|
|
22
|
+
/** Dispatch a stolen task; resolves whether it now runs in `domain`. */
|
|
23
|
+
assignTaskToDomain(task: QueenTask, domain: DomainName): Promise<boolean>;
|
|
19
24
|
publishEvent(type: string, payload: Record<string, unknown>): Promise<void>;
|
|
20
25
|
}
|
|
21
26
|
/**
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
* exponential backoff and automatic disable on repeated failures.
|
|
5
5
|
*/
|
|
6
6
|
import { toErrorMessage } from '../shared/error-utils.js';
|
|
7
|
-
import { canDomainHandleTask } from './queen-task-management.js';
|
|
8
7
|
// ============================================================================
|
|
9
8
|
// Work stealing algorithm
|
|
10
9
|
// ============================================================================
|
|
@@ -26,14 +25,18 @@ export async function triggerWorkStealing(ctx) {
|
|
|
26
25
|
break;
|
|
27
26
|
const queue = ctx.domainQueues.get(busyDomain) || [];
|
|
28
27
|
const stealCount = Math.min(queue.length, ctx.config.workStealing.stealBatchSize);
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
// #1140: each steal takes a slot, so stop when none is free.
|
|
29
|
+
for (let i = 0; i < stealCount && idleDomains.length > 0 && ctx.availableSlots() > 0; i++) {
|
|
30
|
+
const task = queue.find(t => ctx.canExecuteInDomain(idleDomains[0], t));
|
|
31
31
|
if (task) {
|
|
32
32
|
const stealerDomain = idleDomains.shift();
|
|
33
33
|
ctx.removeFromQueues(task);
|
|
34
|
+
// #1124: a task that is not running afterwards (already terminal, or
|
|
35
|
+
// failed at assignment) was not stolen.
|
|
36
|
+
if (!await ctx.assignTaskToDomain(task, stealerDomain))
|
|
37
|
+
continue;
|
|
34
38
|
// SEC-003 Simplified: Log work stealing for observability
|
|
35
39
|
ctx.auditLogger.logSteal(task.id, busyDomain, stealerDomain);
|
|
36
|
-
await ctx.assignTaskToDomain(task, stealerDomain);
|
|
37
40
|
stolenCount++;
|
|
38
41
|
ctx.tasksStolen++;
|
|
39
42
|
await ctx.publishEvent('TaskStolen', {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #1125 review: task_orchestrate and `aqe fleet run` now submit the domains'
|
|
3
|
+
* concrete handler types (sast-scan, analyze-quality) for the abstract types
|
|
4
|
+
* scan-security and assess-quality. These adapters map those handler results
|
|
5
|
+
* onto the report shapes ResultSaver already writes, so they are saved by the
|
|
6
|
+
* security and quality savers rather than as generic JSON. Nothing missing
|
|
7
|
+
* from a result is filled in: absent values stay absent.
|
|
8
|
+
*/
|
|
9
|
+
import type { TaskType } from './queen-types.js';
|
|
10
|
+
/** The saver type and report for a task result; other types pass through. */
|
|
11
|
+
export declare function resultForSaver(taskType: string, result: unknown): {
|
|
12
|
+
saveType: TaskType;
|
|
13
|
+
report: unknown;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=result-saver-adapters.d.ts.map
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
const asRecord = (value) => value !== null && typeof value === 'object' ? value : {};
|
|
2
|
+
/** sast-scan's SASTResult -> the scan-security report shape. */
|
|
3
|
+
function securityReport(result) {
|
|
4
|
+
const data = asRecord(result);
|
|
5
|
+
const summary = asRecord(data.summary);
|
|
6
|
+
const findings = Array.isArray(data.vulnerabilities) ? data.vulnerabilities : [];
|
|
7
|
+
const count = (severity) => typeof summary[severity] === 'number' ? summary[severity] : 0;
|
|
8
|
+
return {
|
|
9
|
+
vulnerabilities: findings.length,
|
|
10
|
+
critical: count('critical'),
|
|
11
|
+
high: count('high'),
|
|
12
|
+
medium: count('medium'),
|
|
13
|
+
low: count('low'),
|
|
14
|
+
topVulnerabilities: findings.slice(0, 10).map(f => ({
|
|
15
|
+
type: f.title ?? f.category ?? 'finding',
|
|
16
|
+
severity: f.severity ?? 'unknown',
|
|
17
|
+
file: f.location?.file ?? '',
|
|
18
|
+
line: f.location?.line ?? 0,
|
|
19
|
+
})),
|
|
20
|
+
findings: findings.map(f => ({
|
|
21
|
+
title: f.title, type: f.category, severity: f.severity ?? 'unknown', location: f.location?.file
|
|
22
|
+
? { file: f.location.file, line: f.location.line } : undefined, description: f.description,
|
|
23
|
+
})),
|
|
24
|
+
recommendations: [],
|
|
25
|
+
evidence: data.evidence,
|
|
26
|
+
coverage: data.coverage,
|
|
27
|
+
analysisDepth: 'sast-patterns',
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/** analyze-quality's analysis -> the assess-quality report shape. No gate runs. */
|
|
31
|
+
function qualityReport(result) {
|
|
32
|
+
const data = asRecord(result);
|
|
33
|
+
const score = asRecord(data.score);
|
|
34
|
+
const metrics = Array.isArray(data.metrics) ? data.metrics : [];
|
|
35
|
+
const unmeasured = Array.isArray(data.unmeasured)
|
|
36
|
+
? data.unmeasured.map(u => u.metric).filter((m) => !!m)
|
|
37
|
+
: [];
|
|
38
|
+
return {
|
|
39
|
+
...(typeof score.overall === 'number' ? { qualityScore: score.overall } : {}),
|
|
40
|
+
passed: false,
|
|
41
|
+
gateEvaluated: false,
|
|
42
|
+
metrics: Object.fromEntries(metrics.filter(m => m.name && typeof m.value === 'number').map(m => [m.name, m.value])),
|
|
43
|
+
recommendations: Array.isArray(data.recommendations) ? data.recommendations : [],
|
|
44
|
+
unmeasured,
|
|
45
|
+
evidenceStatus: unmeasured.length > 0 ? 'insufficient-evidence' : 'measured',
|
|
46
|
+
scoreBasis: metrics.map(m => m.name).filter((m) => !!m),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/** The saver type and report for a task result; other types pass through. */
|
|
50
|
+
export function resultForSaver(taskType, result) {
|
|
51
|
+
switch (taskType) {
|
|
52
|
+
case 'sast-scan': return { saveType: 'scan-security', report: securityReport(result) };
|
|
53
|
+
case 'analyze-quality': return { saveType: 'assess-quality', report: qualityReport(result) };
|
|
54
|
+
default: return { saveType: taskType, report: result };
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=result-saver-adapters.js.map
|
|
@@ -58,7 +58,7 @@ export declare class ResultSaver {
|
|
|
58
58
|
/**
|
|
59
59
|
* Save task result in appropriate format(s)
|
|
60
60
|
*/
|
|
61
|
-
save(taskId: string, taskType: TaskType,
|
|
61
|
+
save(taskId: string, taskType: TaskType, taskResult: unknown, options?: SaveOptions): Promise<SavedResult>;
|
|
62
62
|
private saveTestGeneration;
|
|
63
63
|
private saveCoverage;
|
|
64
64
|
private saveSecurityScan;
|
|
@@ -7,6 +7,7 @@ import * as path from 'path';
|
|
|
7
7
|
import { createHash, randomBytes } from 'crypto';
|
|
8
8
|
import { safeJsonParse } from '../shared/safe-json.js';
|
|
9
9
|
import { getProjectStorePath } from '../kernel/project-root.js';
|
|
10
|
+
import { resultForSaver } from './result-saver-adapters.js';
|
|
10
11
|
/** Cap on the sanitized stem of a generated test file name (see generatedTestFilename). */
|
|
11
12
|
const MAX_GENERATED_STEM_LENGTH = 100;
|
|
12
13
|
function securityReportExecution(data) {
|
|
@@ -92,12 +93,14 @@ export class ResultSaver {
|
|
|
92
93
|
/**
|
|
93
94
|
* Save task result in appropriate format(s)
|
|
94
95
|
*/
|
|
95
|
-
async save(taskId, taskType,
|
|
96
|
+
async save(taskId, taskType, taskResult, options = {}) {
|
|
97
|
+
// #1125: concrete handler types are saved by their abstract type's saver.
|
|
98
|
+
const { saveType, report: result } = resultForSaver(taskType, taskResult);
|
|
96
99
|
const timestamp = new Date();
|
|
97
100
|
const files = [];
|
|
98
101
|
// Database-free mode (#534): do not write .agentic-qe/results/* to disk.
|
|
99
102
|
if (process.env.AQE_MEMORY_BACKEND === 'memory') {
|
|
100
|
-
return { taskId, taskType, timestamp, files, summary: this.extractSummary(
|
|
103
|
+
return { taskId, taskType, timestamp, files, summary: this.extractSummary(saveType, result) };
|
|
101
104
|
}
|
|
102
105
|
// Ensure directories exist
|
|
103
106
|
await this.ensureDirectories(taskType);
|
|
@@ -110,7 +113,7 @@ export class ResultSaver {
|
|
|
110
113
|
const tsStr = this.formatTimestamp(timestamp);
|
|
111
114
|
const prefix = options.filenamePrefix || `${tsStr}_${this.uniqueSuffix(taskId)}`;
|
|
112
115
|
// Save based on task type
|
|
113
|
-
switch (
|
|
116
|
+
switch (saveType) {
|
|
114
117
|
case 'generate-tests':
|
|
115
118
|
files.push(...await this.saveTestGeneration(result, prefix, options));
|
|
116
119
|
break;
|
|
@@ -140,10 +143,10 @@ export class ResultSaver {
|
|
|
140
143
|
break;
|
|
141
144
|
default:
|
|
142
145
|
// Generic JSON save for unknown types
|
|
143
|
-
files.push(...await this.saveGeneric(
|
|
146
|
+
files.push(...await this.saveGeneric(saveType, result, prefix));
|
|
144
147
|
}
|
|
145
148
|
// Update index
|
|
146
|
-
const summary = this.extractSummary(
|
|
149
|
+
const summary = this.extractSummary(saveType, result);
|
|
147
150
|
await this.updateIndex(taskId, taskType, timestamp, files, summary);
|
|
148
151
|
return {
|
|
149
152
|
taskId,
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Task DAG Graph Algorithms
|
|
3
|
+
* ADR-064 Phase 1E: topological sort (Kahn), cycle detection (DFS
|
|
4
|
+
* coloring) and critical path (longest-path DP) over a TaskDAG's edges.
|
|
5
|
+
*
|
|
6
|
+
* Edges that point at IDs not present in `nodes` (missing or removed
|
|
7
|
+
* prerequisites) are ignored for ordering purposes.
|
|
8
|
+
*/
|
|
9
|
+
import type { DAGTask } from './types.js';
|
|
10
|
+
/** Read-only view of the graph used by the algorithms */
|
|
11
|
+
export interface DAGGraphView {
|
|
12
|
+
readonly nodes: ReadonlyMap<string, DAGTask>;
|
|
13
|
+
/** taskId -> prerequisite IDs */
|
|
14
|
+
readonly forwardEdges: ReadonlyMap<string, ReadonlySet<string>>;
|
|
15
|
+
/** prerequisiteId -> dependent IDs */
|
|
16
|
+
readonly reverseEdges: ReadonlyMap<string, ReadonlySet<string>>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Topological sort using Kahn's algorithm.
|
|
20
|
+
* @throws Error if cycles exist
|
|
21
|
+
*/
|
|
22
|
+
export declare function topologicalSort(graph: DAGGraphView): DAGTask[];
|
|
23
|
+
/**
|
|
24
|
+
* Detect cycles using DFS with white/gray/black coloring.
|
|
25
|
+
* @returns Array of cycles (empty if acyclic)
|
|
26
|
+
*/
|
|
27
|
+
export declare function findCycles(graph: DAGGraphView): string[][];
|
|
28
|
+
/**
|
|
29
|
+
* Find the critical path (longest path through the DAG).
|
|
30
|
+
* @returns Tasks on the critical path in execution order
|
|
31
|
+
*/
|
|
32
|
+
export declare function criticalPath(graph: DAGGraphView): DAGTask[];
|
|
33
|
+
//# sourceMappingURL=dag-algorithms.d.ts.map
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Task DAG Graph Algorithms
|
|
3
|
+
* ADR-064 Phase 1E: topological sort (Kahn), cycle detection (DFS
|
|
4
|
+
* coloring) and critical path (longest-path DP) over a TaskDAG's edges.
|
|
5
|
+
*
|
|
6
|
+
* Edges that point at IDs not present in `nodes` (missing or removed
|
|
7
|
+
* prerequisites) are ignored for ordering purposes.
|
|
8
|
+
*/
|
|
9
|
+
/** DFS node coloring for cycle detection */
|
|
10
|
+
var NodeColor;
|
|
11
|
+
(function (NodeColor) {
|
|
12
|
+
NodeColor[NodeColor["White"] = 0] = "White";
|
|
13
|
+
NodeColor[NodeColor["Gray"] = 1] = "Gray";
|
|
14
|
+
NodeColor[NodeColor["Black"] = 2] = "Black";
|
|
15
|
+
})(NodeColor || (NodeColor = {}));
|
|
16
|
+
/**
|
|
17
|
+
* Topological sort using Kahn's algorithm.
|
|
18
|
+
* @throws Error if cycles exist
|
|
19
|
+
*/
|
|
20
|
+
export function topologicalSort(graph) {
|
|
21
|
+
const { nodes, forwardEdges, reverseEdges } = graph;
|
|
22
|
+
const inDegree = new Map();
|
|
23
|
+
for (const nodeId of nodes.keys()) {
|
|
24
|
+
let count = 0;
|
|
25
|
+
const fwd = forwardEdges.get(nodeId);
|
|
26
|
+
if (fwd) {
|
|
27
|
+
for (const dep of fwd) {
|
|
28
|
+
if (nodes.has(dep))
|
|
29
|
+
count++;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
inDegree.set(nodeId, count);
|
|
33
|
+
}
|
|
34
|
+
const queue = [];
|
|
35
|
+
for (const [id, deg] of inDegree) {
|
|
36
|
+
if (deg === 0)
|
|
37
|
+
queue.push(id);
|
|
38
|
+
}
|
|
39
|
+
const sorted = [];
|
|
40
|
+
while (queue.length > 0) {
|
|
41
|
+
const nodeId = queue.shift();
|
|
42
|
+
const task = nodes.get(nodeId);
|
|
43
|
+
if (task)
|
|
44
|
+
sorted.push(task);
|
|
45
|
+
const dependents = reverseEdges.get(nodeId);
|
|
46
|
+
if (dependents) {
|
|
47
|
+
for (const depId of dependents) {
|
|
48
|
+
if (!nodes.has(depId))
|
|
49
|
+
continue;
|
|
50
|
+
const newDeg = (inDegree.get(depId) ?? 0) - 1;
|
|
51
|
+
inDegree.set(depId, newDeg);
|
|
52
|
+
if (newDeg === 0)
|
|
53
|
+
queue.push(depId);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (sorted.length !== nodes.size) {
|
|
58
|
+
throw new Error(`Cycle detected: sorted ${sorted.length} of ${nodes.size} tasks`);
|
|
59
|
+
}
|
|
60
|
+
return sorted;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Detect cycles using DFS with white/gray/black coloring.
|
|
64
|
+
* @returns Array of cycles (empty if acyclic)
|
|
65
|
+
*/
|
|
66
|
+
export function findCycles(graph) {
|
|
67
|
+
const color = new Map();
|
|
68
|
+
const parent = new Map();
|
|
69
|
+
const cycles = [];
|
|
70
|
+
for (const id of graph.nodes.keys())
|
|
71
|
+
color.set(id, NodeColor.White);
|
|
72
|
+
for (const id of graph.nodes.keys()) {
|
|
73
|
+
if (color.get(id) === NodeColor.White) {
|
|
74
|
+
dfsCycles(graph, id, color, parent, cycles);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return cycles;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Find the critical path (longest path through the DAG).
|
|
81
|
+
* @returns Tasks on the critical path in execution order
|
|
82
|
+
*/
|
|
83
|
+
export function criticalPath(graph) {
|
|
84
|
+
const { nodes, reverseEdges } = graph;
|
|
85
|
+
if (nodes.size === 0)
|
|
86
|
+
return [];
|
|
87
|
+
let sorted;
|
|
88
|
+
try {
|
|
89
|
+
sorted = topologicalSort(graph);
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return [];
|
|
93
|
+
}
|
|
94
|
+
const dist = new Map();
|
|
95
|
+
const pred = new Map();
|
|
96
|
+
for (const t of sorted) {
|
|
97
|
+
dist.set(t.id, 1);
|
|
98
|
+
pred.set(t.id, null);
|
|
99
|
+
}
|
|
100
|
+
for (const task of sorted) {
|
|
101
|
+
const d = dist.get(task.id);
|
|
102
|
+
const deps = reverseEdges.get(task.id);
|
|
103
|
+
if (deps) {
|
|
104
|
+
for (const depId of deps) {
|
|
105
|
+
if (!nodes.has(depId))
|
|
106
|
+
continue;
|
|
107
|
+
if (d + 1 > (dist.get(depId) ?? 1)) {
|
|
108
|
+
dist.set(depId, d + 1);
|
|
109
|
+
pred.set(depId, task.id);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
let maxDist = 0;
|
|
115
|
+
let endNode = null;
|
|
116
|
+
for (const [id, d] of dist) {
|
|
117
|
+
if (d > maxDist) {
|
|
118
|
+
maxDist = d;
|
|
119
|
+
endNode = id;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (!endNode)
|
|
123
|
+
return [];
|
|
124
|
+
const path = [];
|
|
125
|
+
let cur = endNode;
|
|
126
|
+
while (cur !== null) {
|
|
127
|
+
const t = nodes.get(cur);
|
|
128
|
+
if (t)
|
|
129
|
+
path.unshift(t);
|
|
130
|
+
cur = pred.get(cur) ?? null;
|
|
131
|
+
}
|
|
132
|
+
return path;
|
|
133
|
+
}
|
|
134
|
+
function dfsCycles(graph, nodeId, color, parent, cycles) {
|
|
135
|
+
color.set(nodeId, NodeColor.Gray);
|
|
136
|
+
const dependencies = graph.forwardEdges.get(nodeId);
|
|
137
|
+
if (dependencies) {
|
|
138
|
+
for (const depId of dependencies) {
|
|
139
|
+
if (!graph.nodes.has(depId))
|
|
140
|
+
continue;
|
|
141
|
+
const c = color.get(depId);
|
|
142
|
+
if (c === NodeColor.White) {
|
|
143
|
+
parent.set(depId, nodeId);
|
|
144
|
+
dfsCycles(graph, depId, color, parent, cycles);
|
|
145
|
+
}
|
|
146
|
+
else if (c === NodeColor.Gray) {
|
|
147
|
+
const cycle = [depId, nodeId];
|
|
148
|
+
let cur = nodeId;
|
|
149
|
+
while (cur !== depId) {
|
|
150
|
+
const p = parent.get(cur);
|
|
151
|
+
if (p === null || p === undefined || p === depId)
|
|
152
|
+
break;
|
|
153
|
+
cycle.push(p);
|
|
154
|
+
cur = p;
|
|
155
|
+
}
|
|
156
|
+
cycles.push(cycle);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
color.set(nodeId, NodeColor.Black);
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=dag-algorithms.js.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Task DAG Obligation Helpers
|
|
3
|
+
* Issue #1069: pure helpers for initial edge dispositions, waiver
|
|
4
|
+
* authorization and status counting, kept out of dag.ts for size.
|
|
5
|
+
*/
|
|
6
|
+
import type { DAGStats, DAGTask, PrerequisiteDisposition, WaivePrerequisiteInput, WaiverPolicy } from './types.js';
|
|
7
|
+
import { type PrerequisiteLedger } from './prerequisite-ledger.js';
|
|
8
|
+
/** Disposition of a new edge given the prerequisite's current state. */
|
|
9
|
+
export declare function initialDisposition(blocker: DAGTask | undefined, tombstoned: boolean): PrerequisiteDisposition;
|
|
10
|
+
/**
|
|
11
|
+
* Check that a validated waiver may be applied: the revision guard holds,
|
|
12
|
+
* the dependent exists and is not terminal, the edge exists and is
|
|
13
|
+
* unresolved, and the optional policy approves.
|
|
14
|
+
* @throws PrerequisiteWaiverError or GraphRevisionConflictError
|
|
15
|
+
*/
|
|
16
|
+
export declare function authorizeWaiver(ledger: PrerequisiteLedger, policy: WaiverPolicy | undefined, req: WaivePrerequisiteInput, task: DAGTask | undefined, prerequisites: ReadonlySet<string> | undefined): asserts task is DAGTask;
|
|
17
|
+
type StatusCounts = Pick<DAGStats, 'pending' | 'ready' | 'inProgress' | 'completed' | 'failed' | 'blocked' | 'cancelled'>;
|
|
18
|
+
/** Count tasks by execution status. */
|
|
19
|
+
export declare function countStatuses(tasks: Iterable<DAGTask>): StatusCounts;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=dag-obligations.d.ts.map
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Task DAG Obligation Helpers
|
|
3
|
+
* Issue #1069: pure helpers for initial edge dispositions, waiver
|
|
4
|
+
* authorization and status counting, kept out of dag.ts for size.
|
|
5
|
+
*/
|
|
6
|
+
import { PrerequisiteWaiverError, TERMINAL_STATUSES, } from './prerequisite-ledger.js';
|
|
7
|
+
/** Disposition of a new edge given the prerequisite's current state. */
|
|
8
|
+
export function initialDisposition(blocker, tombstoned) {
|
|
9
|
+
if (!blocker)
|
|
10
|
+
return tombstoned ? 'REMOVED' : 'MISSING';
|
|
11
|
+
switch (blocker.status) {
|
|
12
|
+
case 'completed': return 'SATISFIED';
|
|
13
|
+
case 'failed': return 'FAILED';
|
|
14
|
+
case 'cancelled': return 'CANCELLED';
|
|
15
|
+
default: return 'UNRESOLVED';
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Check that a validated waiver may be applied: the revision guard holds,
|
|
20
|
+
* the dependent exists and is not terminal, the edge exists and is
|
|
21
|
+
* unresolved, and the optional policy approves.
|
|
22
|
+
* @throws PrerequisiteWaiverError or GraphRevisionConflictError
|
|
23
|
+
*/
|
|
24
|
+
export function authorizeWaiver(ledger, policy, req, task, prerequisites) {
|
|
25
|
+
ledger.checkRevision(req.expectedRevision);
|
|
26
|
+
if (!task)
|
|
27
|
+
throw new PrerequisiteWaiverError(`Task '${req.taskId}' not found in the DAG`);
|
|
28
|
+
if (!prerequisites?.has(req.prerequisiteId)) {
|
|
29
|
+
throw new PrerequisiteWaiverError(`Task '${req.taskId}' has no prerequisite '${req.prerequisiteId}'`);
|
|
30
|
+
}
|
|
31
|
+
if (TERMINAL_STATUSES.has(task.status)) {
|
|
32
|
+
throw new PrerequisiteWaiverError(`Cannot waive for '${req.taskId}': status '${task.status}' is terminal`);
|
|
33
|
+
}
|
|
34
|
+
const current = ledger.disposition(req.taskId, req.prerequisiteId) ?? 'UNRESOLVED';
|
|
35
|
+
if (current === 'SATISFIED' || current === 'WAIVED') {
|
|
36
|
+
throw new PrerequisiteWaiverError(`Prerequisite '${req.prerequisiteId}' of '${req.taskId}' is already ${current}`);
|
|
37
|
+
}
|
|
38
|
+
// Only a literal `true` approves; a truthy non-boolean (e.g. a Promise) fails closed
|
|
39
|
+
if (policy && policy({
|
|
40
|
+
graphId: ledger.graphId,
|
|
41
|
+
graphRevision: ledger.graphRevision,
|
|
42
|
+
taskId: req.taskId,
|
|
43
|
+
prerequisiteId: req.prerequisiteId,
|
|
44
|
+
actor: req.actor,
|
|
45
|
+
reason: req.reason,
|
|
46
|
+
authorityRef: req.authorityRef,
|
|
47
|
+
currentDisposition: current,
|
|
48
|
+
}) !== true) {
|
|
49
|
+
throw new PrerequisiteWaiverError(`Waiver of '${req.prerequisiteId}' for '${req.taskId}' by '${req.actor}' rejected by policy`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/** Count tasks by execution status. */
|
|
53
|
+
export function countStatuses(tasks) {
|
|
54
|
+
let pending = 0, ready = 0, inProgress = 0, completed = 0;
|
|
55
|
+
let failed = 0, blocked = 0, cancelled = 0;
|
|
56
|
+
for (const task of tasks) {
|
|
57
|
+
switch (task.status) {
|
|
58
|
+
case 'pending':
|
|
59
|
+
pending++;
|
|
60
|
+
break;
|
|
61
|
+
case 'ready':
|
|
62
|
+
ready++;
|
|
63
|
+
break;
|
|
64
|
+
case 'in_progress':
|
|
65
|
+
inProgress++;
|
|
66
|
+
break;
|
|
67
|
+
case 'completed':
|
|
68
|
+
completed++;
|
|
69
|
+
break;
|
|
70
|
+
case 'failed':
|
|
71
|
+
failed++;
|
|
72
|
+
break;
|
|
73
|
+
case 'blocked':
|
|
74
|
+
blocked++;
|
|
75
|
+
break;
|
|
76
|
+
case 'cancelled':
|
|
77
|
+
cancelled++;
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return { pending, ready, inProgress, completed, failed, blocked, cancelled };
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=dag-obligations.js.map
|
|
@@ -5,8 +5,13 @@
|
|
|
5
5
|
* Directed acyclic graph where nodes are tasks and edges represent
|
|
6
6
|
* "blocked-by" dependencies. Topological sort via Kahn's algorithm,
|
|
7
7
|
* cycle detection via DFS coloring, critical path via longest-path DP.
|
|
8
|
+
*
|
|
9
|
+
* Issue #1069: every prerequisite edge carries a typed disposition backed
|
|
10
|
+
* by an immutable PrerequisiteReceiptV1. A dependent becomes ready only
|
|
11
|
+
* when every edge is SATISFIED or WAIVED. Removing an unfinished
|
|
12
|
+
* prerequisite leaves a REMOVED tombstone and keeps dependents blocked.
|
|
8
13
|
*/
|
|
9
|
-
import type { DAGTask, AddTaskInput, DAGStats, DAGEventHandler } from './types.js';
|
|
14
|
+
import type { DAGTask, AddTaskInput, DAGStats, DAGSnapshot, DAGEventHandler, CompleteTaskOptions, ObligationSummary, PrerequisiteEdgeState, PrerequisiteReceiptV1, RemovedTaskRecord, RemoveTaskOptions, TaskDAGOptions, WaivePrerequisiteInput } from './types.js';
|
|
10
15
|
/**
|
|
11
16
|
* Directed acyclic graph for task dependency management.
|
|
12
17
|
*
|
|
@@ -18,17 +23,30 @@ export declare class TaskDAG {
|
|
|
18
23
|
private readonly forwardEdges;
|
|
19
24
|
private readonly reverseEdges;
|
|
20
25
|
private readonly eventHandlers;
|
|
26
|
+
private readonly ledger;
|
|
27
|
+
private readonly waiverPolicy?;
|
|
28
|
+
constructor(options?: TaskDAGOptions);
|
|
29
|
+
/** Stable identity of this graph, stamped on every receipt. */
|
|
30
|
+
get graphId(): string;
|
|
31
|
+
/** Monotonically increasing revision; advances on every mutation. */
|
|
32
|
+
get graphRevision(): number;
|
|
21
33
|
/**
|
|
22
|
-
* Add a task to the DAG. Status is 'ready' if
|
|
23
|
-
* otherwise 'blocked'.
|
|
34
|
+
* Add a task to the DAG. Status is 'ready' if every prerequisite is
|
|
35
|
+
* SATISFIED, otherwise 'blocked'. Prerequisites not yet in the graph are
|
|
36
|
+
* recorded as MISSING until they are added.
|
|
24
37
|
* @throws Error if a task with the same ID already exists
|
|
25
38
|
*/
|
|
26
39
|
addTask(input: AddTaskInput): DAGTask;
|
|
27
40
|
/**
|
|
28
|
-
* Remove a task
|
|
41
|
+
* Remove a task. A lifecycle operation, not an obligation resolution:
|
|
42
|
+
* dependents keep the edge. An unfinished task's unresolved dependent
|
|
43
|
+
* edges become REMOVED and dependents stay blocked until it is re-added
|
|
44
|
+
* and completed, or the edge is waived. SATISFIED edges survive removal,
|
|
45
|
+
* and the task stays in the obligation denominator as a tombstone.
|
|
29
46
|
* @returns true if removed, false if not found
|
|
47
|
+
* @throws GraphRevisionConflictError if options.expectedRevision is stale
|
|
30
48
|
*/
|
|
31
|
-
removeTask(taskId: string): boolean;
|
|
49
|
+
removeTask(taskId: string, options?: RemoveTaskOptions): boolean;
|
|
32
50
|
/** Get a task by ID. */
|
|
33
51
|
getTask(taskId: string): DAGTask | undefined;
|
|
34
52
|
/** Get all tasks with 'ready' status. */
|
|
@@ -39,16 +57,48 @@ export declare class TaskDAG {
|
|
|
39
57
|
*/
|
|
40
58
|
start(taskId: string, agentId: string): void;
|
|
41
59
|
/**
|
|
42
|
-
* Mark a task completed
|
|
60
|
+
* Mark a task completed, record SATISFIED on its dependent edges, and
|
|
61
|
+
* unblock dependents whose edges are all SATISFIED or WAIVED.
|
|
43
62
|
* @returns Array of newly unblocked task IDs
|
|
44
63
|
* @throws Error if task not found or not 'in_progress'
|
|
64
|
+
* @throws GraphRevisionConflictError if options.expectedRevision is stale
|
|
45
65
|
*/
|
|
46
|
-
complete(taskId: string, result?: unknown): string[];
|
|
66
|
+
complete(taskId: string, result?: unknown, options?: CompleteTaskOptions): string[];
|
|
47
67
|
/**
|
|
48
|
-
* Mark a task failed
|
|
68
|
+
* Mark a task failed, record FAILED on its unresolved dependent edges,
|
|
69
|
+
* and cascade cancellation to dependents.
|
|
49
70
|
* @throws Error if task not found or not in 'in_progress'/'ready'
|
|
50
71
|
*/
|
|
51
72
|
fail(taskId: string, error: string): void;
|
|
73
|
+
/**
|
|
74
|
+
* Cancel a non-terminal task, record CANCELLED on its unresolved
|
|
75
|
+
* dependent edges, and cascade cancellation to dependents.
|
|
76
|
+
* @throws Error if task not found or already terminal
|
|
77
|
+
*/
|
|
78
|
+
cancel(taskId: string, reason: string): void;
|
|
79
|
+
/**
|
|
80
|
+
* Explicitly waive one prerequisite edge. This is the only way a
|
|
81
|
+
* dependent becomes ready without a SATISFIED receipt. The original edge
|
|
82
|
+
* is kept and a WAIVED receipt carries actor, reason, authority and time.
|
|
83
|
+
* @returns The WAIVED receipt
|
|
84
|
+
* @throws PrerequisiteWaiverError on invalid input, unknown edge,
|
|
85
|
+
* already-resolved edge, terminal dependent, or policy rejection
|
|
86
|
+
* @throws GraphRevisionConflictError if expectedRevision is stale
|
|
87
|
+
*/
|
|
88
|
+
waivePrerequisite(input: WaivePrerequisiteInput): PrerequisiteReceiptV1;
|
|
89
|
+
/** Current disposition of every prerequisite edge of a task. */
|
|
90
|
+
getPrerequisiteDispositions(taskId: string): PrerequisiteEdgeState[];
|
|
91
|
+
/** Prerequisite edges that currently prevent a task from being ready. */
|
|
92
|
+
getBlockers(taskId: string): PrerequisiteEdgeState[];
|
|
93
|
+
/** Append-only receipt log, optionally filtered by dependent or prerequisite. */
|
|
94
|
+
getReceipts(filter?: {
|
|
95
|
+
taskId?: string;
|
|
96
|
+
prerequisiteId?: string;
|
|
97
|
+
}): PrerequisiteReceiptV1[];
|
|
98
|
+
/** Tombstones for tasks removed from the graph. */
|
|
99
|
+
getRemovedTasks(): RemovedTaskRecord[];
|
|
100
|
+
/** Obligation accounting against the original task denominator. */
|
|
101
|
+
getObligationSummary(): ObligationSummary;
|
|
52
102
|
/**
|
|
53
103
|
* Topological sort using Kahn's algorithm.
|
|
54
104
|
* @throws Error if cycles exist
|
|
@@ -66,28 +116,28 @@ export declare class TaskDAG {
|
|
|
66
116
|
getCriticalPath(): DAGTask[];
|
|
67
117
|
/** Get aggregate statistics about the DAG. */
|
|
68
118
|
getStats(): DAGStats;
|
|
69
|
-
/**
|
|
119
|
+
/**
|
|
120
|
+
* Remove all tasks, receipts and tombstones from the DAG. The graph
|
|
121
|
+
* revision keeps increasing so stale expectedRevision guards still fail.
|
|
122
|
+
*/
|
|
70
123
|
clear(): void;
|
|
71
|
-
/** Serialize the DAG
|
|
72
|
-
toJSON():
|
|
73
|
-
tasks: DAGTask[];
|
|
74
|
-
edges: Array<{
|
|
75
|
-
from: string;
|
|
76
|
-
to: string;
|
|
77
|
-
}>;
|
|
78
|
-
stats: DAGStats;
|
|
79
|
-
};
|
|
124
|
+
/** Serialize the DAG, its receipt log and tombstones. */
|
|
125
|
+
toJSON(): DAGSnapshot;
|
|
80
126
|
/**
|
|
81
127
|
* Register a handler to receive DAG events.
|
|
82
128
|
* @returns Unsubscribe function
|
|
83
129
|
*/
|
|
84
130
|
onEvent(handler: DAGEventHandler): () => void;
|
|
131
|
+
private graphView;
|
|
85
132
|
private requireTask;
|
|
86
133
|
private computeStatus;
|
|
87
134
|
private setStatus;
|
|
135
|
+
/** Commit a failed/cancelled outcome and propagate it to dependent edges. */
|
|
136
|
+
private terminate;
|
|
137
|
+
/** Record a disposition on every live dependent edge currently in `from`. */
|
|
138
|
+
private recordOnDependents;
|
|
88
139
|
private unblockDependents;
|
|
89
140
|
private cascadeCancellation;
|
|
90
|
-
private dfsCycles;
|
|
91
141
|
private emit;
|
|
92
142
|
}
|
|
93
143
|
//# sourceMappingURL=dag.d.ts.map
|