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
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.
|
|
2
|
-
import{b as $}from"./chunk-
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.10");process.exit(0)}
|
|
2
|
+
import{b as $}from"./chunk-ZXPY654C.js";import"./chunk-M2QV7PT7.js";import{a as k,b as W,c as b,g as C}from"./chunk-4G63WT4F.js";import"./chunk-FZOWULMH.js";import{c as v}from"./chunk-ACWFKES2.js";import"./chunk-NSHU347M.js";import"./chunk-GHBNRMSJ.js";import"./chunk-OY2AHLSF.js";import{Command as D}from"commander";import o from"chalk";function O(f,i){let h=f.indexOf("=");return h>0&&(i[f.substring(0,h)]=f.substring(h+1)),i}function V(f,i,h){let m=new D("workflow").description("Manage QE workflows and pipelines (ADR-041)");return m.command("run <file>").description("Execute a QE pipeline from YAML file").option("-w, --watch","Watch execution progress").option("-v, --verbose","Show detailed output").option("--params <json>","Additional parameters as JSON","{}").action(async(n,t)=>{if(!await h())return;let c=(await import("path")).resolve(n);try{console.log(o.blue(`
|
|
3
3
|
Running workflow from: ${n}
|
|
4
4
|
`));let l=k(c);if(!l.success||!l.workflow){console.log(o.red("Failed to parse pipeline:"));for(let d of l.errors)console.log(o.red(` ${d}`));await i(1)}let u={...v(t.params,"params")};if(l.pipeline){for(let d of l.pipeline.stages)if(d.params)for(let[y,p]of Object.entries(d.params))u[y]=p}if(!f.workflowOrchestrator.getWorkflow(l.workflow.id)){let d=f.workflowOrchestrator.registerWorkflow(l.workflow);d.success||(console.log(o.red(`Failed to register workflow: ${d.error.message}`)),await i(1))}let g=await f.workflowOrchestrator.executeWorkflow(l.workflow.id,u);if(!g.success){console.log(o.red(`Failed to start workflow: ${g.error.message}`)),await i(1);return}let a=g.value;if(console.log(o.cyan(` Execution ID: ${a}`)),console.log(o.gray(` Workflow: ${l.workflow.name}`)),console.log(o.gray(` Stages: ${l.workflow.steps.length}`)),console.log(""),t.watch){console.log(o.blue(`Workflow Progress:
|
|
5
5
|
`));let d,y=Date.now();for(;;){let w=f.workflowOrchestrator.getWorkflowStatus(a);if(!w)break;if(!d||d.progress!==w.progress||d.status!==w.status||JSON.stringify(d.currentSteps)!==JSON.stringify(w.currentSteps)){process.stdout.write("\r\x1B[K");let S="\u2588".repeat(Math.floor(w.progress/5))+"\u2591".repeat(20-Math.floor(w.progress/5)),R=w.status==="completed"?o.green:w.status==="failed"?o.red:w.status==="running"?o.yellow:o.gray;console.log(` [${S}] ${w.progress}% - ${R(w.status)}`),w.currentSteps.length>0&&t.verbose&&console.log(o.gray(` Running: ${w.currentSteps.join(", ")}`)),d=w}if(w.status==="completed"||w.status==="failed"||w.status==="cancelled")break;await new Promise(S=>setTimeout(S,500))}let p=f.workflowOrchestrator.getWorkflowStatus(a);if(p){console.log("");let w=p.duration||Date.now()-y;p.status==="completed"?(console.log(o.green("Workflow completed successfully")),console.log(o.gray(` Duration: ${$(w)}`)),console.log(o.gray(` Completed: ${p.completedSteps.length} stages`)),p.skippedSteps.length>0&&console.log(o.yellow(` Skipped: ${p.skippedSteps.length} stages`))):p.status==="failed"?(console.log(o.red("Workflow failed")),console.log(o.red(` Error: ${p.error}`)),console.log(o.gray(` Failed stages: ${p.failedSteps.join(", ")}`))):console.log(o.yellow(`Workflow ${p.status}`))}console.log(""),await i(p?.status==="completed"?0:1);return}else console.log(o.green("Workflow execution started")),console.log(o.gray(` Use 'aqe workflow status ${a}' to check progress`));console.log(""),await i(0)}catch(l){console.error(o.red(`
|
|
@@ -35,10 +35,10 @@ Workflow cancelled: ${n}
|
|
|
35
35
|
`)):console.log(o.red(`
|
|
36
36
|
Failed to cancel workflow: ${t.error.message}
|
|
37
37
|
`)),await i(t.success?0:1)}catch(t){console.error(o.red(`
|
|
38
|
-
Failed to cancel workflow:`),t),await i(1)}}),m.command("browser-list").description("List available browser workflow templates").action(async()=>{try{let{BrowserWorkflowTool:n}=await import("./browser-workflow-
|
|
38
|
+
Failed to cancel workflow:`),t),await i(1)}}),m.command("browser-list").description("List available browser workflow templates").action(async()=>{try{let{BrowserWorkflowTool:n}=await import("./browser-workflow-MSBOLYUY.js"),e=await new n().invoke({});if(e.success&&e.data){console.log(o.blue(`
|
|
39
39
|
Browser Workflow Templates:
|
|
40
40
|
`));for(let c of e.data.availableTemplates)console.log(` ${o.cyan(c)}`);console.log("")}else console.log(o.red(`Failed: ${e.error||"Unknown error"}`));await i(0)}catch(n){console.error(o.red(`
|
|
41
|
-
Failed:`),n),await i(1)}}),m.command("browser-load [template]").description("Load and validate a browser workflow template or inline YAML").option("--yaml <yaml>","Inline YAML workflow definition").option("-v, --var <key=value>","Variable override (repeatable)",O,{}).option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(n,t)=>{try{let{BrowserWorkflowTool:e}=await import("./browser-workflow-
|
|
41
|
+
Failed:`),n),await i(1)}}),m.command("browser-load [template]").description("Load and validate a browser workflow template or inline YAML").option("--yaml <yaml>","Inline YAML workflow definition").option("-v, --var <key=value>","Variable override (repeatable)",O,{}).option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(n,t)=>{try{let{BrowserWorkflowTool:e}=await import("./browser-workflow-MSBOLYUY.js"),{writeOutput:c,toJSON:l}=await import("./ci-output-FXZ7ZZW3.js"),s=new e,u={variables:t.var||{}};if(t.yaml)u.workflowYaml=t.yaml;else if(n)if(n.endsWith(".yaml")||n.endsWith(".yml")){let g=await import("fs"),d=(await import("path")).resolve(n);g.existsSync(d)||(console.log(o.red(`
|
|
42
42
|
File not found: ${d}
|
|
43
43
|
`)),await i(1)),u.workflowYaml=g.readFileSync(d,"utf-8")}else u.templateName=n;else console.log(o.red(`
|
|
44
44
|
Provide a template name or --yaml. Use "workflow browser-list" to see templates.
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.10");process.exit(0)}
|
|
2
|
+
import{a,b,d as c,e as d}from"./chunk-MA7JIQ6U.js";import"./chunk-LRZY4KS2.js";import"./chunk-C522H7XR.js";import"./chunk-3Y7SPD72.js";import"./chunk-ACWFKES2.js";import"./chunk-AI4VYSFS.js";import"./chunk-VJQYDYAJ.js";import"./chunk-OBAREPDC.js";import"./chunk-6GP6W46M.js";import"./chunk-PGYMKGOE.js";import"./chunk-GZLZCZ42.js";import"./chunk-GJMLK5UT.js";import"./chunk-6PX4OXQO.js";import"./chunk-WQ4PYWSW.js";import"./chunk-NSHU347M.js";import"./chunk-AH3ZD3NJ.js";import"./chunk-HOZUDE4C.js";import"./chunk-ATHWDAXB.js";import"./chunk-N6PIIK6G.js";import"./chunk-WSF24I3D.js";import"./chunk-GHBNRMSJ.js";import"./chunk-XLZYRTNO.js";import"./chunk-EWFECZ2U.js";import"./chunk-VWNFAW2M.js";import"./chunk-XBVUVFJK.js";import"./chunk-EN2QSKFF.js";import"./chunk-OY2AHLSF.js";export{b as DEFAULT_WORKFLOW_CONFIG,a as WorkflowEvents,c as WorkflowOrchestrator,d as createWorkflowOrchestrator};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.10");process.exit(0)}
|
|
2
|
+
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}from"./chunk-ODJNUMV3.js";import{a as v,b as w,c as x,d as y,e as z,f as A,g as B,h as C,i as D,j as E,k as F,l as G,m as H,n as I,o as J,p as K}from"./chunk-ESUO3GTJ.js";import"./chunk-C522H7XR.js";import"./chunk-3Y7SPD72.js";import"./chunk-ACWFKES2.js";import"./chunk-AI4VYSFS.js";import"./chunk-VJQYDYAJ.js";import"./chunk-OBAREPDC.js";import"./chunk-6GP6W46M.js";import"./chunk-PGYMKGOE.js";import"./chunk-GZLZCZ42.js";import"./chunk-GJMLK5UT.js";import"./chunk-6PX4OXQO.js";import"./chunk-AH3ZD3NJ.js";import"./chunk-HOZUDE4C.js";import"./chunk-ATHWDAXB.js";import"./chunk-N6PIIK6G.js";import"./chunk-WSF24I3D.js";import"./chunk-GHBNRMSJ.js";import"./chunk-XLZYRTNO.js";import"./chunk-EWFECZ2U.js";import"./chunk-VWNFAW2M.js";import"./chunk-XBVUVFJK.js";import"./chunk-EN2QSKFF.js";import"./chunk-OY2AHLSF.js";export{z as GNNLayerFactory,i as QEFlashAttention,x as QEGNNEmbeddingIndex,y as QEGNNIndexFactory,a as QESONA,e as QE_FLASH_ATTENTION_CONFIG,g as QE_PERFORMANCE_TARGETS,f as QE_SONA_CONFIG,A as TensorCompressionFactory,u as batchComputeAttention,K as batchDifferentiableSearch,M as checkRuvectorPackagesAvailable,c as createDomainQESONA,j as createQEFlashAttention,b as createQESONA,D as getDifferentiableSearch,F as getGetCompressionLevel,E as getHierarchicalForward,G as getInit,h as getOptimalBlockConfig,k as getQEFlashAttentionConfig,n as getRuvectorDotProductAttention,m as getRuvectorFlashAttention,p as getRuvectorHyperbolicAttention,B as getRuvectorLayer,q as getRuvectorLinearAttention,r as getRuvectorMoEAttention,o as getRuvectorMultiHeadAttention,L as getRuvectorPackageVersions,C as getTensorCompress,l as getWorkloadTypes,N as initAllRuvectorPackages,w as initGNN,d as isAttentionAvailable,v as isGNNAvailable,s as toFloat32Array,H as toFloat32ArrayGNN,J as toIEmbedding,t as toNumberArrayAttn,I as toNumberArrayGNN};
|
|
@@ -16,6 +16,8 @@ import { createPersistentScheduler } from '../scheduler/index.js';
|
|
|
16
16
|
import { integrateCodeIntelligence } from '../../init/fleet-integration.js';
|
|
17
17
|
import { runFleetInitWizard } from '../wizards/fleet-wizard.js';
|
|
18
18
|
import { FleetProgressManager, createTimedSpinner } from '../utils/progress.js';
|
|
19
|
+
import { FLEET_OPERATIONS, planFleetOperation } from '../utils/fleet-operation.js';
|
|
20
|
+
import { reportFleetVerdict } from '../utils/fleet-result.js';
|
|
19
21
|
import { writeOutput, toJSON } from '../utils/ci-output.js';
|
|
20
22
|
export function createFleetCommand(context, cleanupAndExit, ensureInitialized, registerDomainWorkflowActions) {
|
|
21
23
|
const fleetCmd = new Command('fleet')
|
|
@@ -227,15 +229,18 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
|
|
|
227
229
|
if (!Number.isSafeInteger(parallelCount) || parallelCount < 1) {
|
|
228
230
|
throw new Error('--parallel must be a positive integer');
|
|
229
231
|
}
|
|
230
|
-
if (!
|
|
232
|
+
if (!FLEET_OPERATIONS.includes(operation)) {
|
|
231
233
|
throw new Error(`Unsupported operation: ${operation}`);
|
|
232
234
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
235
|
+
// #1125: each operation runs a real domain handler with the input it
|
|
236
|
+
// needs, taken from the target; without that input it is refused.
|
|
237
|
+
const plan = await planFleetOperation(operation, options.target);
|
|
238
|
+
if (!plan.success) {
|
|
239
|
+
console.error(chalk.red(`\n Operation '${operation}' cannot run: ${plan.error}`));
|
|
240
|
+
return cleanupAndExit(1);
|
|
241
|
+
}
|
|
242
|
+
const { domain, payload } = plan.task;
|
|
243
|
+
const taskType = plan.task.type;
|
|
239
244
|
// #1081: refuse an operation whose task no domain plugin executes,
|
|
240
245
|
// instead of submitting work that can only fail at dispatch.
|
|
241
246
|
const executable = context.queen.validateTaskExecutable(taskType, [domain]);
|
|
@@ -272,7 +277,7 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
|
|
|
272
277
|
type: taskType,
|
|
273
278
|
priority: 'p1',
|
|
274
279
|
targetDomains: [domain],
|
|
275
|
-
payload: { target: options.target, workerId: op.id },
|
|
280
|
+
payload: { ...payload, target: options.target, workerId: op.id },
|
|
276
281
|
timeout: 60000,
|
|
277
282
|
});
|
|
278
283
|
if (!taskResult.success) {
|
|
@@ -287,7 +292,7 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
|
|
|
287
292
|
throw new Error(`Task status unavailable: ${taskResult.value}`);
|
|
288
293
|
if (task.status === 'completed') {
|
|
289
294
|
progress.completeAgent(op.id, true);
|
|
290
|
-
return { id: op.id, success: true };
|
|
295
|
+
return { id: op.id, success: true, result: task.result };
|
|
291
296
|
}
|
|
292
297
|
if (task.status === 'failed' || task.status === 'cancelled') {
|
|
293
298
|
throw new Error(task.error || `Task ${task.status}`);
|
|
@@ -299,7 +304,7 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
|
|
|
299
304
|
catch (error) {
|
|
300
305
|
console.error(chalk.red(` ${op.name}: ${error instanceof Error ? error.message : String(error)}`));
|
|
301
306
|
progress.completeAgent(op.id, false);
|
|
302
|
-
return { id: op.id, success: false };
|
|
307
|
+
return { id: op.id, success: false, result: undefined };
|
|
303
308
|
}
|
|
304
309
|
}));
|
|
305
310
|
progress.stop();
|
|
@@ -308,12 +313,14 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
|
|
|
308
313
|
console.log(chalk.blue('\n Operation Summary:'));
|
|
309
314
|
console.log(chalk.gray(` Operation: ${operation}`));
|
|
310
315
|
console.log(chalk.gray(` Target: ${options.target}`));
|
|
311
|
-
console.log(chalk.
|
|
316
|
+
console.log(chalk.gray(` Completed: ${successful}`));
|
|
312
317
|
if (failed > 0) {
|
|
313
318
|
console.log(chalk.red(` Failed: ${failed}`));
|
|
314
319
|
}
|
|
320
|
+
// #1125 review: a completed task is not a passed check.
|
|
321
|
+
const passed = reportFleetVerdict(operation, results);
|
|
315
322
|
console.log('');
|
|
316
|
-
await cleanupAndExit(
|
|
323
|
+
await cleanupAndExit(passed ? 0 : 1);
|
|
317
324
|
}
|
|
318
325
|
catch (error) {
|
|
319
326
|
console.error(chalk.red('\n Fleet operation failed:'), error);
|
|
@@ -115,7 +115,8 @@ export async function checkAndTriggerDream(memoryBackend) {
|
|
|
115
115
|
domain: r.pattern.qeDomain || 'learning-optimization',
|
|
116
116
|
patternType: r.pattern.patternType,
|
|
117
117
|
confidence: r.pattern.confidence,
|
|
118
|
-
|
|
118
|
+
// A real 0% stays 0%; a pattern never used has no rate (#1142 review).
|
|
119
|
+
successRate: r.pattern.usageCount > 0 ? r.pattern.successRate : undefined,
|
|
119
120
|
}));
|
|
120
121
|
await engine.loadPatternsAsConcepts(importPatterns);
|
|
121
122
|
}
|
|
@@ -746,7 +747,13 @@ export async function consolidateExperiencesToPatterns() {
|
|
|
746
747
|
patternId: existing.id,
|
|
747
748
|
usageCount: agg.cnt,
|
|
748
749
|
successfulUses: agg.successes,
|
|
749
|
-
|
|
750
|
+
// #1129: these aggregates are selected by success rate (HAVING
|
|
751
|
+
// success_rate >= 0.6) from hook-reported success, so they are uses,
|
|
752
|
+
// never measured outcomes.
|
|
753
|
+
metrics: {
|
|
754
|
+
source: 'session-consolidation', domain: agg.domain, agent: agg.agent,
|
|
755
|
+
outcome: 'unmeasured', outcomeBasis: 'session-consolidation',
|
|
756
|
+
},
|
|
750
757
|
});
|
|
751
758
|
db.prepare(`
|
|
752
759
|
UPDATE qe_patterns
|
|
@@ -61,7 +61,7 @@ export function registerSessionHooks(hooks) {
|
|
|
61
61
|
if (domainEntries.length > 0) {
|
|
62
62
|
contextParts.push(`Top domains: ${domainEntries.map(([d, c]) => `${d}(${c})`).join(', ')}`);
|
|
63
63
|
}
|
|
64
|
-
if (stats.patternSuccessRate > 0) {
|
|
64
|
+
if (stats.patternSuccessRate !== null && stats.patternSuccessRate > 0) {
|
|
65
65
|
contextParts.push(`Pattern success rate: ${(stats.patternSuccessRate * 100).toFixed(0)}%`);
|
|
66
66
|
}
|
|
67
67
|
if (stats.routingRequests > 0) {
|
|
@@ -131,7 +131,7 @@ export function registerSessionHooks(hooks) {
|
|
|
131
131
|
}
|
|
132
132
|
if (options.json) {
|
|
133
133
|
const summary = stats
|
|
134
|
-
? `Session complete: ${stats.totalPatterns} patterns, ${stats.routingRequests} routings, ${(stats.patternSuccessRate * 100).toFixed(0)}% success rate`
|
|
134
|
+
? `Session complete: ${stats.totalPatterns} patterns, ${stats.routingRequests} routings, ${stats.patternSuccessRate === null ? 'success rate: insufficient evidence' : `${(stats.patternSuccessRate * 100).toFixed(0)}% success rate`}`
|
|
135
135
|
: 'Session complete';
|
|
136
136
|
// Stop hooks don't support hookSpecificOutput — only simple fields
|
|
137
137
|
printJson({
|
|
@@ -8,6 +8,7 @@ import chalk from 'chalk';
|
|
|
8
8
|
import { QE_HOOK_EVENTS } from '../../../learning/qe-hooks.js';
|
|
9
9
|
import { safeJsonParse } from '../../../shared/safe-json.js';
|
|
10
10
|
import { committedPendingIndexPatternId } from '../../../learning/pattern-mutation-error.js';
|
|
11
|
+
import { formatLearningOutcomes, formatPatternSuccessRate } from '../../../learning/usage-outcome.js';
|
|
11
12
|
import { getHooksSystem, printJson, printSuccess, printError, } from './hooks-shared.js';
|
|
12
13
|
/**
|
|
13
14
|
* How a learned pattern reached vector search, by cause (#981, review N1).
|
|
@@ -72,8 +73,8 @@ export function registerStatsHooks(hooks) {
|
|
|
72
73
|
console.log(` Requests: ${stats.routingRequests}`);
|
|
73
74
|
console.log(` Avg Confidence: ${(stats.avgRoutingConfidence * 100).toFixed(1)}%`);
|
|
74
75
|
console.log(chalk.bold('\nLearning:'));
|
|
75
|
-
console.log(` Outcomes: ${stats
|
|
76
|
-
console.log(` Success Rate: ${(stats
|
|
76
|
+
console.log(` Outcomes: ${formatLearningOutcomes(stats)}`);
|
|
77
|
+
console.log(` Success Rate: ${formatPatternSuccessRate(stats)}`);
|
|
77
78
|
console.log(chalk.bold('\nSearch Performance:'));
|
|
78
79
|
console.log(` Operations: ${stats.patternStoreStats.searchOperations}`);
|
|
79
80
|
console.log(` Avg Latency: ${stats.patternStoreStats.avgSearchLatencyMs.toFixed(2)}ms`);
|
|
@@ -26,6 +26,7 @@ import { createSQLitePatternStore } from '../../learning/sqlite-persistence.js';
|
|
|
26
26
|
import { getActiveEmbeddingSpaceIdentity } from '../../learning/real-embeddings.js';
|
|
27
27
|
import { inspectEmbeddingSpaceRows } from '../../learning/embedding-space.js';
|
|
28
28
|
import { committedPendingIndexPatternId } from '../../learning/pattern-mutation-error.js';
|
|
29
|
+
import { formatLearningOutcomes, formatPatternSuccessRate } from '../../learning/usage-outcome.js';
|
|
29
30
|
// Extracted helpers
|
|
30
31
|
import { initializeLearningSystem, printJson, printSuccess, printError, printInfo, displayDashboard, getDbPath, compressFile, decompressFile, verifyDatabaseIntegrity, getSchemaVersion, padRight, EXPORT_FORMAT_VERSION, DOMAIN_MAPPING, PATTERN_TYPE_MAPPING, } from './learning-helpers.js';
|
|
31
32
|
// ============================================================================
|
|
@@ -241,8 +242,8 @@ function registerStatsCommand(learning) {
|
|
|
241
242
|
console.log(chalk.bold('\nLearning:'));
|
|
242
243
|
console.log(` Routing Requests: ${stats.routingRequests}`);
|
|
243
244
|
console.log(` Avg Routing Confidence: ${(stats.avgRoutingConfidence * 100).toFixed(1)}%`);
|
|
244
|
-
console.log(` Learning Outcomes: ${stats
|
|
245
|
-
console.log(` Pattern Success Rate: ${(stats
|
|
245
|
+
console.log(` Learning Outcomes: ${formatLearningOutcomes(stats)}`);
|
|
246
|
+
console.log(` Pattern Success Rate: ${formatPatternSuccessRate(stats)}`);
|
|
246
247
|
console.log(chalk.bold('\nSearch Performance:'));
|
|
247
248
|
console.log(` Operations: ${stats.patternStoreStats.searchOperations}`);
|
|
248
249
|
console.log(` Avg Latency: ${stats.patternStoreStats.avgSearchLatencyMs.toFixed(2)}ms`);
|
|
@@ -1227,7 +1228,8 @@ function registerDreamCommand(learning) {
|
|
|
1227
1228
|
description: result.pattern.description || `${result.pattern.patternType} pattern`,
|
|
1228
1229
|
domain: result.pattern.qeDomain || 'learning-optimization',
|
|
1229
1230
|
patternType: result.pattern.patternType, confidence: result.pattern.confidence,
|
|
1230
|
-
|
|
1231
|
+
// A real 0% stays 0%; a pattern never used has no rate (#1142 review).
|
|
1232
|
+
successRate: result.pattern.usageCount > 0 ? result.pattern.successRate : undefined,
|
|
1231
1233
|
}));
|
|
1232
1234
|
loaded = await engine.loadPatternsAsConcepts(importPatterns);
|
|
1233
1235
|
printInfo(`Loaded ${loaded} patterns from ReasoningBank as concepts`);
|
|
@@ -144,7 +144,8 @@ function isValidFlagName(name) {
|
|
|
144
144
|
return VALID_FLAG_NAMES.includes(name);
|
|
145
145
|
}
|
|
146
146
|
function isValidProfile(name) {
|
|
147
|
-
|
|
147
|
+
// #1136: own entries only; `constructor` is not a profile.
|
|
148
|
+
return Object.hasOwn(PROFILES, name);
|
|
148
149
|
}
|
|
149
150
|
// ============================================================================
|
|
150
151
|
// Command: ruvector status
|
|
@@ -215,6 +215,12 @@ export function createTestCommand(context, cleanupAndExit, ensureInitialized) {
|
|
|
215
215
|
console.log(` Failed: ${chalk.red(run.failed)}`);
|
|
216
216
|
console.log(` Skipped: ${chalk.yellow(run.skipped)}`);
|
|
217
217
|
console.log(` Duration: ${chalk.cyan(run.duration + 'ms')}`);
|
|
218
|
+
if (run.retries) {
|
|
219
|
+
const unmatched = run.retries.tests.filter(t => t.unmatched).length;
|
|
220
|
+
console.log(` Retries: ${chalk.white(run.retries.totalRetries)} run, ` +
|
|
221
|
+
`${chalk.green(run.retries.nowPassing)} now passing, ${chalk.red(run.retries.stillFailing)} still failing` +
|
|
222
|
+
(unmatched > 0 ? `, ${chalk.yellow(unmatched)} matched no test` : ''));
|
|
223
|
+
}
|
|
218
224
|
}
|
|
219
225
|
// Exit codes: 1 = failures, 2 = >20% skipped, 0 = all good
|
|
220
226
|
if (run.failed > 0) {
|
|
@@ -67,6 +67,15 @@ export interface TestRunSummary {
|
|
|
67
67
|
skipped: number;
|
|
68
68
|
duration: number;
|
|
69
69
|
tests?: TestResult[];
|
|
70
|
+
/** #1130: what the retries of failed tests did, when retries were requested. */
|
|
71
|
+
retries?: {
|
|
72
|
+
totalRetries: number;
|
|
73
|
+
nowPassing: number;
|
|
74
|
+
stillFailing: number;
|
|
75
|
+
tests: Array<{
|
|
76
|
+
unmatched?: boolean;
|
|
77
|
+
}>;
|
|
78
|
+
};
|
|
70
79
|
}
|
|
71
80
|
export interface CoverageResult {
|
|
72
81
|
/** `null` = the report never collected that metric (#995); not 0%. */
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - `aqe fleet run` operation tasks (#1125)
|
|
3
|
+
*
|
|
4
|
+
* Each fleet operation runs a real domain handler with the payload it
|
|
5
|
+
* requires, built from the target on disk:
|
|
6
|
+
* - test -> test-generation `generate-tests` with the target's source files
|
|
7
|
+
* - scan -> security-compliance `sast-scan` with the target's JS/TS files
|
|
8
|
+
* - analyze -> coverage-analysis `analyze-coverage` with the coverage report
|
|
9
|
+
* that already exists for the target
|
|
10
|
+
* When the target cannot supply that input the operation is refused with what
|
|
11
|
+
* is missing. Nothing is estimated or made up to fill a payload.
|
|
12
|
+
*/
|
|
13
|
+
import type { DomainName } from '../../shared/types/index.js';
|
|
14
|
+
export declare const FLEET_OPERATIONS: readonly ["test", "analyze", "scan"];
|
|
15
|
+
export type FleetOperation = typeof FLEET_OPERATIONS[number];
|
|
16
|
+
export interface FleetOperationTask {
|
|
17
|
+
domain: DomainName;
|
|
18
|
+
type: string;
|
|
19
|
+
payload: Record<string, unknown>;
|
|
20
|
+
}
|
|
21
|
+
export type FleetOperationPlan = {
|
|
22
|
+
success: true;
|
|
23
|
+
task: FleetOperationTask;
|
|
24
|
+
} | {
|
|
25
|
+
success: false;
|
|
26
|
+
error: string;
|
|
27
|
+
};
|
|
28
|
+
/** Coverage threshold `analyze` judges against, as `aqe coverage` does by default. */
|
|
29
|
+
export declare const FLEET_COVERAGE_THRESHOLD = 80;
|
|
30
|
+
/** Build the domain task for a fleet operation on `target`, or say why it cannot run. */
|
|
31
|
+
export declare function planFleetOperation(operation: FleetOperation, target: string): Promise<FleetOperationPlan>;
|
|
32
|
+
//# sourceMappingURL=fleet-operation.d.ts.map
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - `aqe fleet run` operation tasks (#1125)
|
|
3
|
+
*
|
|
4
|
+
* Each fleet operation runs a real domain handler with the payload it
|
|
5
|
+
* requires, built from the target on disk:
|
|
6
|
+
* - test -> test-generation `generate-tests` with the target's source files
|
|
7
|
+
* - scan -> security-compliance `sast-scan` with the target's JS/TS files
|
|
8
|
+
* - analyze -> coverage-analysis `analyze-coverage` with the coverage report
|
|
9
|
+
* that already exists for the target
|
|
10
|
+
* When the target cannot supply that input the operation is refused with what
|
|
11
|
+
* is missing. Nothing is estimated or made up to fill a payload.
|
|
12
|
+
*/
|
|
13
|
+
import { existsSync, statSync } from 'node:fs';
|
|
14
|
+
import { extname, resolve } from 'node:path';
|
|
15
|
+
import { walkSourceFiles } from './file-discovery.js';
|
|
16
|
+
import { summarizeCoverage } from './coverage-data.js';
|
|
17
|
+
import { describeNoData, resolveExistingCoverage } from '../../coordination/handlers/coverage-target.js';
|
|
18
|
+
import { MAX_SAST_FILE_BYTES } from '../../domains/security-compliance/sast-path-guard.js';
|
|
19
|
+
export const FLEET_OPERATIONS = ['test', 'analyze', 'scan'];
|
|
20
|
+
/** Coverage threshold `analyze` judges against, as `aqe coverage` does by default. */
|
|
21
|
+
export const FLEET_COVERAGE_THRESHOLD = 80;
|
|
22
|
+
/** Extensions the built-in SAST patterns cover (sast-scanner.ts). */
|
|
23
|
+
const SAST_EXTENSIONS = new Set(['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs']);
|
|
24
|
+
const refuse = (error) => ({ success: false, error });
|
|
25
|
+
/** Build the domain task for a fleet operation on `target`, or say why it cannot run. */
|
|
26
|
+
export async function planFleetOperation(operation, target) {
|
|
27
|
+
const targetPath = resolve(target);
|
|
28
|
+
if (!existsSync(targetPath))
|
|
29
|
+
return refuse(`Target does not exist: ${target}`);
|
|
30
|
+
switch (operation) {
|
|
31
|
+
case 'test': {
|
|
32
|
+
const sourceFiles = walkSourceFiles(targetPath, { includeTests: false });
|
|
33
|
+
if (sourceFiles.length === 0)
|
|
34
|
+
return refuse(`No source files under ${target} to generate tests for.`);
|
|
35
|
+
return { success: true, task: { domain: 'test-generation', type: 'generate-tests', payload: { sourceFiles } } };
|
|
36
|
+
}
|
|
37
|
+
case 'scan': {
|
|
38
|
+
const files = walkSourceFiles(targetPath, { includeTests: true })
|
|
39
|
+
.filter(file => SAST_EXTENSIONS.has(extname(file).toLowerCase()));
|
|
40
|
+
if (files.length === 0) {
|
|
41
|
+
return refuse(`No files under ${target} that the SAST scanner covers (${[...SAST_EXTENSIONS].join(' ')}).`);
|
|
42
|
+
}
|
|
43
|
+
// sast-scan refuses the whole request when a file exceeds its limit.
|
|
44
|
+
const tooLarge = files.filter(file => statSync(file).size > MAX_SAST_FILE_BYTES);
|
|
45
|
+
if (tooLarge.length > 0) {
|
|
46
|
+
return refuse(`${tooLarge.length} files under ${target} are over the ${MAX_SAST_FILE_BYTES / (1024 * 1024)} MB ` +
|
|
47
|
+
`SAST limit (${tooLarge.slice(0, 5).join(', ')}${tooLarge.length > 5 ? ', …' : ''}). Narrow --target to the source to scan.`);
|
|
48
|
+
}
|
|
49
|
+
return { success: true, task: { domain: 'security-compliance', type: 'sast-scan', payload: { files } } };
|
|
50
|
+
}
|
|
51
|
+
case 'analyze': {
|
|
52
|
+
const existing = await resolveExistingCoverage(targetPath);
|
|
53
|
+
if (existing.status === 'no-report') {
|
|
54
|
+
return refuse(`No coverage report for project ${existing.projectRoot}, so there is no coverage to ` +
|
|
55
|
+
'analyze. Run your tests with coverage first (e.g. `npm test -- --coverage`), or pass the report ' +
|
|
56
|
+
'file as --target.');
|
|
57
|
+
}
|
|
58
|
+
if (existing.status === 'target-missing')
|
|
59
|
+
return refuse(describeNoData('target-missing', target, null));
|
|
60
|
+
const { evaluation, projectRoot } = existing;
|
|
61
|
+
if (evaluation.status !== 'measured')
|
|
62
|
+
return refuse(describeNoData(evaluation.reason, target, projectRoot));
|
|
63
|
+
const coverageData = { files: evaluation.files, summary: summarizeCoverage(evaluation.files) };
|
|
64
|
+
return {
|
|
65
|
+
success: true,
|
|
66
|
+
task: { domain: 'coverage-analysis', type: 'analyze-coverage', payload: { coverageData, threshold: FLEET_COVERAGE_THRESHOLD } },
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=fleet-operation.js.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - `aqe fleet run` result summary (#1125 review)
|
|
3
|
+
*
|
|
4
|
+
* A completed task is not a passed check. The summary shows what each
|
|
5
|
+
* operation's handler returned and turns it into a verdict:
|
|
6
|
+
* - scan fails on a critical or high finding, or when the scan evidence
|
|
7
|
+
* says not every requested file was analyzed;
|
|
8
|
+
* - test fails when no test was generated or a generated test failed
|
|
9
|
+
* the test quality gate;
|
|
10
|
+
* - analyze fails when coverage over the collected metrics is below the
|
|
11
|
+
* threshold (an uncollected metric is not counted as 0%).
|
|
12
|
+
* A result without the expected shape fails rather than passing unread.
|
|
13
|
+
*/
|
|
14
|
+
import { type FleetOperation } from './fleet-operation.js';
|
|
15
|
+
export interface FleetResultSummary {
|
|
16
|
+
lines: string[];
|
|
17
|
+
passed: boolean;
|
|
18
|
+
/** Why the verdict failed; empty when it passed. */
|
|
19
|
+
reasons: string[];
|
|
20
|
+
}
|
|
21
|
+
/** Summarize one completed task's result for its fleet operation. */
|
|
22
|
+
export declare function summarizeFleetResult(operation: FleetOperation, result: unknown): FleetResultSummary;
|
|
23
|
+
/**
|
|
24
|
+
* Print each distinct worker result once and the verdict over all workers.
|
|
25
|
+
* Returns whether the operation passed.
|
|
26
|
+
*/
|
|
27
|
+
export declare function reportFleetVerdict(operation: FleetOperation, workers: ReadonlyArray<{
|
|
28
|
+
success: boolean;
|
|
29
|
+
result: unknown;
|
|
30
|
+
}>, log?: (line: string) => void): boolean;
|
|
31
|
+
//# sourceMappingURL=fleet-result.d.ts.map
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - `aqe fleet run` result summary (#1125 review)
|
|
3
|
+
*
|
|
4
|
+
* A completed task is not a passed check. The summary shows what each
|
|
5
|
+
* operation's handler returned and turns it into a verdict:
|
|
6
|
+
* - scan fails on a critical or high finding, or when the scan evidence
|
|
7
|
+
* says not every requested file was analyzed;
|
|
8
|
+
* - test fails when no test was generated or a generated test failed
|
|
9
|
+
* the test quality gate;
|
|
10
|
+
* - analyze fails when coverage over the collected metrics is below the
|
|
11
|
+
* threshold (an uncollected metric is not counted as 0%).
|
|
12
|
+
* A result without the expected shape fails rather than passing unread.
|
|
13
|
+
*/
|
|
14
|
+
import chalk from 'chalk';
|
|
15
|
+
import { FLEET_COVERAGE_THRESHOLD } from './fleet-operation.js';
|
|
16
|
+
import { thresholdVerdict } from '../../coordination/handlers/coverage-target.js';
|
|
17
|
+
const SEVERITIES = ['critical', 'high', 'medium', 'low', 'informational'];
|
|
18
|
+
const MAX_LISTED_FINDINGS = 10;
|
|
19
|
+
const asRecord = (value) => value !== null && typeof value === 'object' ? value : undefined;
|
|
20
|
+
const pct = (value) => typeof value === 'number' ? `${value}%` : 'n/a';
|
|
21
|
+
function summarizeScan(result) {
|
|
22
|
+
const summary = asRecord(result.summary);
|
|
23
|
+
const findings = Array.isArray(result.vulnerabilities) ? result.vulnerabilities : undefined;
|
|
24
|
+
if (!summary || !findings)
|
|
25
|
+
return unreadable('scan');
|
|
26
|
+
const count = (severity) => Number(summary[severity] ?? 0);
|
|
27
|
+
const coverage = asRecord(result.coverage);
|
|
28
|
+
const evidence = asRecord(result.evidence);
|
|
29
|
+
const completeness = typeof evidence?.completeness === 'string' ? evidence.completeness : 'unknown';
|
|
30
|
+
const lines = [
|
|
31
|
+
`Findings: ${SEVERITIES.map(s => `${s} ${count(s)}`).join(', ')}`,
|
|
32
|
+
`Files scanned: ${coverage?.filesScanned ?? 'n/a'} (evidence: ${completeness})`,
|
|
33
|
+
...findings.slice(0, MAX_LISTED_FINDINGS).map(f => ` [${f.severity ?? '?'}] ${f.title ?? 'untitled'} @ ${f.location?.file ?? '?'}:${f.location?.line ?? '?'}`),
|
|
34
|
+
];
|
|
35
|
+
if (findings.length > MAX_LISTED_FINDINGS)
|
|
36
|
+
lines.push(` … ${findings.length - MAX_LISTED_FINDINGS} more`);
|
|
37
|
+
const reasons = [];
|
|
38
|
+
if (count('critical') + count('high') > 0)
|
|
39
|
+
reasons.push(`${count('critical')} critical and ${count('high')} high findings`);
|
|
40
|
+
if (completeness !== 'complete')
|
|
41
|
+
reasons.push(`scan evidence is ${completeness}: not every requested file was analyzed`);
|
|
42
|
+
return { lines, passed: reasons.length === 0, reasons };
|
|
43
|
+
}
|
|
44
|
+
function summarizeTests(result) {
|
|
45
|
+
if (!Array.isArray(result.tests))
|
|
46
|
+
return unreadable('test');
|
|
47
|
+
const tests = result.tests;
|
|
48
|
+
const assertions = tests.reduce((sum, t) => sum + (typeof t.assertions === 'number' ? t.assertions : 0), 0);
|
|
49
|
+
const modes = [...new Set(tests.map(t => t.generationMode).filter((m) => typeof m === 'string'))];
|
|
50
|
+
const gateFailed = tests.filter(t => asRecord(t.qualityGateResult)?.passed === false);
|
|
51
|
+
const lines = [
|
|
52
|
+
`Tests generated: ${tests.length}, assertions: ${assertions}` +
|
|
53
|
+
(modes.length > 0 ? `, generation mode: ${modes.join(', ')}` : ''),
|
|
54
|
+
`Quality gate: ${gateFailed.length === 0 ? 'passed' : `failed for ${gateFailed.length} of ${tests.length} tests`}`,
|
|
55
|
+
...gateFailed.slice(0, MAX_LISTED_FINDINGS).map(t => ` ${t.testFile ?? t.name ?? t.id}`),
|
|
56
|
+
];
|
|
57
|
+
const reasons = [];
|
|
58
|
+
if (tests.length === 0)
|
|
59
|
+
reasons.push('no tests were generated');
|
|
60
|
+
if (gateFailed.length > 0)
|
|
61
|
+
reasons.push(`${gateFailed.length} generated tests failed the test quality gate`);
|
|
62
|
+
return { lines, passed: reasons.length === 0, reasons };
|
|
63
|
+
}
|
|
64
|
+
function summarizeCoverage(result) {
|
|
65
|
+
const summary = asRecord(result.summary);
|
|
66
|
+
if (!summary || typeof summary.line !== 'number')
|
|
67
|
+
return unreadable('analyze');
|
|
68
|
+
const collected = asRecord(result.collected);
|
|
69
|
+
const isCollected = (name) => collected?.[name] !== false;
|
|
70
|
+
// An uncollected metric is 0 by construction (#1027 B2): show it as n/a and
|
|
71
|
+
// leave it out of the verdict, as `aqe coverage` does (#995).
|
|
72
|
+
const metric = (name) => isCollected(name) ? pct(summary[name]) : 'n/a (not collected)';
|
|
73
|
+
const num = (name) => typeof summary[name] === 'number' ? summary[name] : 0;
|
|
74
|
+
const verdict = thresholdVerdict({ line: num('line'), branch: num('branch'), function: num('function'), statement: num('statement') }, FLEET_COVERAGE_THRESHOLD, { branch: isCollected('branch'), function: isCollected('function'), statement: isCollected('statement') });
|
|
75
|
+
const lines = [
|
|
76
|
+
`Coverage: line ${pct(summary.line)}, branch ${metric('branch')}, function ${metric('function')}, ` +
|
|
77
|
+
`statement ${metric('statement')} over ${summary.files ?? 'n/a'} files`,
|
|
78
|
+
`Overall over collected metrics: ${verdict.overall.toFixed(1)}% (threshold ${FLEET_COVERAGE_THRESHOLD}%)`,
|
|
79
|
+
];
|
|
80
|
+
const reasons = verdict.meetsThreshold ? [] : [`coverage is below the ${FLEET_COVERAGE_THRESHOLD}% threshold`];
|
|
81
|
+
return { lines, passed: reasons.length === 0, reasons };
|
|
82
|
+
}
|
|
83
|
+
function unreadable(operation) {
|
|
84
|
+
const reason = `the ${operation} result has no readable summary`;
|
|
85
|
+
return { lines: [`Result: ${reason}`], passed: false, reasons: [reason] };
|
|
86
|
+
}
|
|
87
|
+
/** Summarize one completed task's result for its fleet operation. */
|
|
88
|
+
export function summarizeFleetResult(operation, result) {
|
|
89
|
+
const record = asRecord(result);
|
|
90
|
+
if (!record)
|
|
91
|
+
return unreadable(operation);
|
|
92
|
+
switch (operation) {
|
|
93
|
+
case 'scan': return summarizeScan(record);
|
|
94
|
+
case 'test': return summarizeTests(record);
|
|
95
|
+
case 'analyze': return summarizeCoverage(record);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Print each distinct worker result once and the verdict over all workers.
|
|
100
|
+
* Returns whether the operation passed.
|
|
101
|
+
*/
|
|
102
|
+
export function reportFleetVerdict(operation, workers, log = line => console.log(line)) {
|
|
103
|
+
const summaries = workers.filter(w => w.success).map(w => summarizeFleetResult(operation, w.result));
|
|
104
|
+
const shown = new Set();
|
|
105
|
+
for (const summary of summaries) {
|
|
106
|
+
const text = summary.lines.join('\n');
|
|
107
|
+
if (shown.has(text))
|
|
108
|
+
continue;
|
|
109
|
+
shown.add(text);
|
|
110
|
+
log('');
|
|
111
|
+
for (const line of summary.lines)
|
|
112
|
+
log(` ${line}`);
|
|
113
|
+
}
|
|
114
|
+
const incomplete = workers.filter(w => !w.success).length;
|
|
115
|
+
const reasons = [...new Set(summaries.flatMap(s => s.reasons))];
|
|
116
|
+
if (incomplete > 0)
|
|
117
|
+
reasons.unshift(`${incomplete} of ${workers.length} workers did not complete`);
|
|
118
|
+
log('');
|
|
119
|
+
log(reasons.length === 0
|
|
120
|
+
? chalk.green(' Verdict: PASSED')
|
|
121
|
+
: chalk.red(` Verdict: FAILED (${reasons.join('; ')})`));
|
|
122
|
+
return reasons.length === 0;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=fleet-result.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Git Source - Recent commit context for target files
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { runGit } from '../../shared/git/git-process.js';
|
|
5
5
|
export class GitContextSource {
|
|
6
6
|
cwd;
|
|
7
7
|
id = 'git';
|
|
@@ -18,7 +18,11 @@ export class GitContextSource {
|
|
|
18
18
|
// filePaths can originate from MCP tool arguments. Pass each path as
|
|
19
19
|
// one argv element; interpolating it into a shell command would allow
|
|
20
20
|
// command execution via quotes or shell metacharacters.
|
|
21
|
-
|
|
21
|
+
// Async, in its own process group, so a slow git can neither stall
|
|
22
|
+
// the MCP server's event loop nor outlive its timeout (#1115).
|
|
23
|
+
const log = (await runGit(['log', '--oneline', '-5', '--', file], {
|
|
24
|
+
cwd: this.cwd ?? process.cwd(), timeout: 5000,
|
|
25
|
+
})).trim();
|
|
22
26
|
if (log) {
|
|
23
27
|
const content = `Recent commits for ${file}:\n${log}`;
|
|
24
28
|
fragments.push({
|