agentic-qe 3.15.9 → 3.15.11
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 +365 -0
- package/README.md +8 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/adapters/a2a/agent-cards/generator.js +6 -3
- package/dist/adapters/a2a/tasks/task-router.js +3 -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/adapters/trajectory-adapter.js +1 -1
- package/dist/agents/claim-verifier/verifiers/output-verifier.d.ts +3 -1
- package/dist/agents/claim-verifier/verifiers/output-verifier.js +31 -2
- package/dist/agents/overlay-loader.js +26 -21
- package/dist/audit/witness-chain.d.ts +1 -1
- package/dist/cli/bundle.js +6 -6
- package/dist/cli/chunks/adapter-V4GSGOOK.js +2 -0
- package/dist/cli/chunks/agent-booster-wasm-TIDSQ3ZK.js +2 -0
- package/dist/cli/chunks/{agent-handler-RIYHTHVZ.js → agent-handler-G3EPBVA7.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-WSUCUHOO.js → agent-memory-branch-ARC5C7GW.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-6WQTM5YR.js +2 -0
- package/dist/cli/chunks/{arena-YAJZX6MC.js → arena-36DTATJV.js} +4 -4
- package/dist/cli/chunks/{arena-KRIBMIXX.js → arena-K4I4QDXB.js} +2 -2
- package/dist/cli/chunks/{audit-7ZNOXWP3.js → audit-WQSJSJZF.js} +3 -3
- package/dist/cli/chunks/base-AK7BXBX2.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-ZQAT4I6H.js → better-sqlite3-BB4K67MT.js} +2 -2
- package/dist/cli/chunks/{brain-handler-452WCPZC.js → brain-handler-CU3GOIU3.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-IJFXJRPN.js → branch-enumerator-NJQX7ZNB.js} +2 -2
- package/dist/cli/chunks/browser-6YJF4FQW.js +4 -0
- package/dist/cli/chunks/browser-workflow-VTDFBW7T.js +2 -0
- package/dist/cli/chunks/{chunk-LMU5DUDK.js → chunk-25P77WA5.js} +1 -1
- package/dist/cli/chunks/chunk-2CW7VRPH.js +141 -0
- package/dist/cli/chunks/chunk-2DTX7YAZ.js +6 -0
- package/dist/cli/chunks/{chunk-4JCY45KV.js → chunk-2KFFEKSI.js} +2 -2
- package/dist/cli/chunks/chunk-2VLYUF7U.js +2 -0
- package/dist/cli/chunks/{chunk-55HRSNGN.js → chunk-325QCVDI.js} +2 -2
- package/dist/cli/chunks/{chunk-2TDIS6YK.js → chunk-35M2X3C5.js} +2 -2
- package/dist/cli/chunks/{chunk-J5KNRVXR.js → chunk-3RHOPP7A.js} +1 -1
- package/dist/cli/chunks/{chunk-NTAD5UX4.js → chunk-4HJKQIX5.js} +2 -2
- package/dist/cli/chunks/chunk-4MUBW4RT.js +7 -0
- package/dist/cli/chunks/{chunk-VQHVHVSF.js → chunk-4RAQ7PJA.js} +8 -8
- package/dist/cli/chunks/{chunk-JWGRWMZP.js → chunk-4RH5I24Q.js} +2 -2
- package/dist/cli/chunks/{chunk-QQ5SZH4D.js → chunk-4UBVAJFO.js} +3 -3
- package/dist/cli/chunks/{chunk-ZBDRLF43.js → chunk-4UX35V7P.js} +2 -2
- package/dist/cli/chunks/{chunk-ZANDSVCK.js → chunk-4X4MWMHB.js} +2 -2
- package/dist/cli/chunks/{chunk-47TYABPD.js → chunk-55CH76ZO.js} +3 -3
- package/dist/cli/chunks/{chunk-LEAKYZ37.js → chunk-57LNKSW7.js} +2 -2
- package/dist/cli/chunks/chunk-5ERFHEEE.js +14 -0
- package/dist/cli/chunks/{chunk-HGTWAZWU.js → chunk-5HQP4SLM.js} +2 -2
- package/dist/cli/chunks/{chunk-XYCKHYBM.js → chunk-5MNASJOH.js} +2 -2
- package/dist/cli/chunks/{chunk-2HL3UM5P.js → chunk-5MTWCCZJ.js} +2 -2
- package/dist/cli/chunks/{chunk-4SUOVLJ6.js → chunk-5N25I53C.js} +2 -2
- package/dist/cli/chunks/{chunk-XOVNZT7F.js → chunk-5WYZHDIZ.js} +1 -1
- package/dist/cli/chunks/{chunk-J3DTDJDT.js → chunk-5YLOLACR.js} +2 -2
- package/dist/cli/chunks/{chunk-TSYQDRNK.js → chunk-672XOJDG.js} +2 -2
- package/dist/cli/chunks/{chunk-KLGYIEJK.js → chunk-6NA3KZZT.js} +10 -10
- package/dist/cli/chunks/chunk-72ZBJD2E.js +3 -0
- package/dist/cli/chunks/{chunk-2I2UPJS7.js → chunk-76SNL7GU.js} +2 -2
- package/dist/cli/chunks/{chunk-F3PQZX44.js → chunk-7HEMJHPP.js} +2 -2
- package/dist/cli/chunks/{chunk-FV7VAG74.js → chunk-7R5HC56U.js} +1 -1
- package/dist/cli/chunks/{chunk-L42JPFCC.js → chunk-AFFN6E6Q.js} +2 -2
- package/dist/cli/chunks/{chunk-NDKLQW6N.js → chunk-AMZKAJLJ.js} +2 -2
- package/dist/cli/chunks/{chunk-K5DJXMAA.js → chunk-AP3ADWDK.js} +2 -2
- package/dist/cli/chunks/{chunk-BHKXMIWX.js → chunk-APPZATXA.js} +2 -2
- package/dist/cli/chunks/{chunk-XDBD4GXO.js → chunk-AUUJBXWX.js} +25 -20
- package/dist/cli/chunks/{chunk-AJ4YDSOI.js → chunk-BTVWA35P.js} +2 -2
- package/dist/cli/chunks/{chunk-WGDR2KIR.js → chunk-BZPE3LDO.js} +2 -2
- package/dist/cli/chunks/{chunk-HZ5NC6U5.js → chunk-CFWGGRE7.js} +1 -1
- package/dist/cli/chunks/{chunk-UYLYMWV5.js → chunk-CIAL4YRY.js} +2 -2
- package/dist/cli/chunks/{chunk-D6XVGFTI.js → chunk-CO3DX2AX.js} +2 -2
- package/dist/cli/chunks/{chunk-N3KEY4XJ.js → chunk-DDEOZPWJ.js} +2 -2
- package/dist/cli/chunks/{chunk-XWIUFYM3.js → chunk-DOBZPSKE.js} +1 -1
- package/dist/cli/chunks/{chunk-PX2B5TS2.js → chunk-DOFREOPQ.js} +2 -2
- package/dist/cli/chunks/{chunk-47V7FQGX.js → chunk-E44NNCEU.js} +2 -2
- package/dist/cli/chunks/{chunk-I6S35FRO.js → chunk-E6PF35JZ.js} +2 -2
- package/dist/cli/chunks/chunk-EBPJY4DI.js +3 -0
- package/dist/cli/chunks/{chunk-4V27J6YN.js → chunk-EH2S6AOR.js} +2 -2
- package/dist/cli/chunks/{chunk-AQTVVLNP.js → chunk-EIDJNT5C.js} +1 -1
- package/dist/cli/chunks/{chunk-SVHUYVUR.js → chunk-EJPK7OTR.js} +2 -2
- package/dist/cli/chunks/{chunk-HAROIAJE.js → chunk-EK5GMOSO.js} +1 -1
- package/dist/cli/chunks/{chunk-LCJTEUDC.js → chunk-ERN43HOX.js} +430 -433
- package/dist/cli/chunks/chunk-ETVAYGCB.js +180 -0
- package/dist/cli/chunks/chunk-EWPUQCN4.js +2 -0
- package/dist/cli/chunks/{chunk-AOFO4N32.js → chunk-FL32MTKT.js} +2 -2
- package/dist/cli/chunks/chunk-FLU5FDSC.js +742 -0
- package/dist/cli/chunks/{chunk-KR3M44CF.js → chunk-FUYOOKTH.js} +5 -5
- package/dist/cli/chunks/chunk-FWSGPE3V.js +12 -0
- package/dist/cli/chunks/chunk-FZHSG75I.js +3 -0
- package/dist/cli/chunks/{chunk-5D2I7JUP.js → chunk-G2IJFNZS.js} +2 -2
- package/dist/cli/chunks/{chunk-ABFDB4X3.js → chunk-G4CKPWF6.js} +1 -1
- package/dist/cli/chunks/{chunk-ETG7O5E5.js → chunk-G4FAPO57.js} +5 -5
- package/dist/cli/chunks/{chunk-W32YU3VI.js → chunk-G77MLBDF.js} +2 -2
- package/dist/cli/chunks/{chunk-5JWGCIQW.js → chunk-GBFUANTC.js} +1 -1
- package/dist/cli/chunks/{chunk-UOWHE77F.js → chunk-GVKVJJQX.js} +2 -2
- package/dist/cli/chunks/{chunk-2YH62JCN.js → chunk-GWJWSLDA.js} +2 -2
- package/dist/cli/chunks/{chunk-FLASM2XB.js → chunk-H43AFUKL.js} +2 -2
- package/dist/cli/chunks/chunk-H7BLYMNU.js +59 -0
- package/dist/cli/chunks/{chunk-5NS3USRW.js → chunk-HDJUYAZG.js} +1 -1
- package/dist/cli/chunks/{chunk-A6YIH4C4.js → chunk-HDNWSKHA.js} +2 -2
- package/dist/cli/chunks/{chunk-763SUL4B.js → chunk-HFFPYC4G.js} +2 -2
- package/dist/cli/chunks/{chunk-DGTLJNJH.js → chunk-HJ3XNTTJ.js} +2 -2
- package/dist/cli/chunks/{chunk-GBUIG3FS.js → chunk-HYXUN7BW.js} +1 -1
- package/dist/cli/chunks/{chunk-3LYU7BLY.js → chunk-I36CRDHF.js} +2 -2
- package/dist/cli/chunks/{chunk-GII5WVAK.js → chunk-I4K2HTQU.js} +1 -1
- package/dist/cli/chunks/chunk-IENZSO3K.js +4 -0
- package/dist/cli/chunks/chunk-IO5537OM.js +2 -0
- package/dist/cli/chunks/{chunk-AVB5QY2Q.js → chunk-IOZRKXR5.js} +2 -2
- package/dist/cli/chunks/chunk-ITL3IN2E.js +3 -0
- package/dist/cli/chunks/{chunk-YRBBBUJX.js → chunk-ITPGWGQS.js} +14 -14
- package/dist/cli/chunks/{chunk-JNNZK7KH.js → chunk-IW6WDGHM.js} +1 -1
- package/dist/cli/chunks/{chunk-SNBYYO6F.js → chunk-J4JMCZVA.js} +2 -2
- package/dist/cli/chunks/{chunk-PVIA2FPD.js → chunk-JFLU7L3W.js} +2 -2
- package/dist/cli/chunks/{chunk-GCWSX2NY.js → chunk-JGJXXAS6.js} +4 -4
- package/dist/cli/chunks/{chunk-KFUUIAR4.js → chunk-JUMICXM6.js} +2 -2
- package/dist/cli/chunks/{chunk-A4RU67VX.js → chunk-K2HBNYAZ.js} +2 -2
- package/dist/cli/chunks/{chunk-CTZJUV5I.js → chunk-K7V2WZNF.js} +1 -1
- package/dist/cli/chunks/{chunk-VRGCKBF7.js → chunk-KDI5JOYZ.js} +2 -2
- package/dist/cli/chunks/{chunk-C6RTMTEH.js → chunk-KJCIMNHS.js} +1 -1
- package/dist/cli/chunks/{chunk-N3NP6PTT.js → chunk-KKYO2NKV.js} +2 -2
- package/dist/cli/chunks/{chunk-XQ3DDY7X.js → chunk-KSE5TDM5.js} +2 -2
- package/dist/cli/chunks/{chunk-YZGSJG34.js → chunk-KSLLHFVY.js} +1 -1
- package/dist/cli/chunks/{chunk-VCMINU7K.js → chunk-KXS3Y2AX.js} +2 -2
- package/dist/cli/chunks/{chunk-REUFWGMA.js → chunk-LBX7M4LW.js} +2 -2
- package/dist/cli/chunks/{chunk-HCYQHWI2.js → chunk-LCVEEII4.js} +2 -2
- package/dist/cli/chunks/{chunk-OCESWNAZ.js → chunk-LD5CFK53.js} +54 -33
- package/dist/cli/chunks/{chunk-XOLDMK23.js → chunk-LPU6PAJE.js} +2 -2
- package/dist/cli/chunks/{chunk-KVBEGOJE.js → chunk-LQ4NUC6Q.js} +2 -2
- package/dist/cli/chunks/chunk-LRL56ZYL.js +21 -0
- package/dist/cli/chunks/{chunk-FL3OYGCS.js → chunk-LXQ3B4RY.js} +2 -2
- package/dist/cli/chunks/{chunk-PMCRCEW5.js → chunk-M5RQ6U3G.js} +2 -2
- package/dist/cli/chunks/{chunk-EFBLP43U.js → chunk-M5XYIQYZ.js} +2 -2
- package/dist/cli/chunks/chunk-M7XFBSIK.js +2 -0
- package/dist/cli/chunks/{chunk-Q3JVJRVJ.js → chunk-MIK4RBEH.js} +1 -1
- package/dist/cli/chunks/{chunk-NHZIWIQZ.js → chunk-NC6K7SCQ.js} +2 -2
- package/dist/cli/chunks/{chunk-TUYJ53V4.js → chunk-NKTWKYHB.js} +2 -2
- package/dist/cli/chunks/{chunk-2URBI52G.js → chunk-NPZOBSAN.js} +2 -2
- package/dist/cli/chunks/{chunk-7KII4CQG.js → chunk-NQZNMCZU.js} +2 -2
- package/dist/cli/chunks/{chunk-7JKB3Q7O.js → chunk-NT7JRHMH.js} +1 -1
- package/dist/cli/chunks/{chunk-MZS32SYS.js → chunk-NTB342NJ.js} +1 -1
- package/dist/cli/chunks/{chunk-ZVSLCEVC.js → chunk-O4JAKWWM.js} +13 -13
- package/dist/cli/chunks/chunk-OD5D4LSZ.js +2 -0
- package/dist/cli/chunks/{chunk-HWK5L7IJ.js → chunk-OH5V5EJW.js} +2 -2
- package/dist/cli/chunks/{chunk-7QTB5VJZ.js → chunk-OHR7C777.js} +2 -2
- package/dist/cli/chunks/{chunk-JAV5WPSY.js → chunk-OURITHFV.js} +2 -2
- package/dist/cli/chunks/{chunk-3CJCROMW.js → chunk-OV5RPLKV.js} +2 -2
- package/dist/cli/chunks/{chunk-ZXBCCO2H.js → chunk-OYJC3YON.js} +2 -2
- package/dist/cli/chunks/{chunk-2BA45H64.js → chunk-QDESWOZP.js} +2 -2
- package/dist/cli/chunks/chunk-R5GRABPQ.js +2 -0
- package/dist/cli/chunks/{chunk-GKPQ2GRR.js → chunk-R5LGV6GZ.js} +2 -2
- package/dist/cli/chunks/chunk-RBZCA7SD.js +12 -0
- package/dist/cli/chunks/chunk-RQMCZQN2.js +2 -0
- package/dist/cli/chunks/chunk-RTFKTKSO.js +4 -0
- package/dist/cli/chunks/{chunk-IFEIY3NQ.js → chunk-RTY7VSZB.js} +2 -2
- package/dist/cli/chunks/{chunk-UOJBR4J3.js → chunk-S6IYEBAI.js} +2 -2
- package/dist/cli/chunks/{chunk-JP4P3P3D.js → chunk-SMVVAVN2.js} +2 -2
- package/dist/cli/chunks/{chunk-TNMQVG4A.js → chunk-T5KHJ3J7.js} +5 -5
- package/dist/cli/chunks/{chunk-7QGYJ5OY.js → chunk-TCYSBC7Y.js} +1 -1
- package/dist/cli/chunks/{chunk-WRRCQ2UE.js → chunk-TFW7CCKS.js} +1 -1
- package/dist/cli/chunks/chunk-TL6OFMXF.js +6 -0
- package/dist/cli/chunks/{chunk-UNUTC6TX.js → chunk-U3LJNNVJ.js} +5 -5
- package/dist/cli/chunks/chunk-UKKYMW3S.js +3 -0
- package/dist/cli/chunks/{chunk-HTZJSQ3C.js → chunk-UMVSWQNB.js} +2 -2
- package/dist/cli/chunks/{chunk-PBZI2ZPV.js → chunk-UTTSH4NH.js} +3 -3
- package/dist/cli/chunks/{chunk-DDPPSSHW.js → chunk-V5AADCBC.js} +1 -1
- package/dist/cli/chunks/{chunk-OXTFSIGN.js → chunk-V7DA4HAK.js} +1 -1
- package/dist/cli/chunks/{chunk-32UTLDNY.js → chunk-VBK2YAYY.js} +2 -2
- package/dist/cli/chunks/{chunk-F4JYIRW2.js → chunk-VEEYL2CZ.js} +2 -2
- package/dist/cli/chunks/{chunk-BXO536GT.js → chunk-VLD7Z2ED.js} +3 -3
- package/dist/cli/chunks/chunk-VO3DRK4P.js +3 -0
- package/dist/cli/chunks/{chunk-6EPHNJTL.js → chunk-VWUZSNVC.js} +1 -1
- package/dist/cli/chunks/{chunk-XUIA5KMS.js → chunk-VYTILW4R.js} +2 -2
- package/dist/cli/chunks/{chunk-YZYDTABJ.js → chunk-WCAVIJ64.js} +1 -1
- package/dist/cli/chunks/{chunk-KIKWJM6J.js → chunk-WCVCOT4E.js} +2 -2
- package/dist/cli/chunks/{chunk-OG2UI6A3.js → chunk-WM3SRRA6.js} +2 -2
- package/dist/cli/chunks/chunk-X3PZCXWG.js +2 -0
- package/dist/cli/chunks/{chunk-P73W2K7T.js → chunk-X4J73KP3.js} +1 -1
- package/dist/cli/chunks/{chunk-37BIGMJI.js → chunk-XDI5X3FR.js} +1 -1
- package/dist/cli/chunks/{chunk-V5PXQSFS.js → chunk-XGBU3KEM.js} +2 -2
- package/dist/cli/chunks/{chunk-ICP2ORGI.js → chunk-XGPTZUKQ.js} +2 -2
- package/dist/cli/chunks/{chunk-6OOYIO3W.js → chunk-XJKZ7FTR.js} +2 -2
- package/dist/cli/chunks/{chunk-H3KBIWTO.js → chunk-XNLIWQYE.js} +2 -2
- package/dist/cli/chunks/{chunk-4W4DYVSH.js → chunk-XS2XF3YG.js} +6 -5
- package/dist/cli/chunks/chunk-Y7B5EUIJ.js +180 -0
- package/dist/cli/chunks/{chunk-QTVWUQTB.js → chunk-YBBT3YYG.js} +1 -1
- package/dist/cli/chunks/{chunk-7X2Y727E.js → chunk-YNOCQ2SL.js} +1 -1
- package/dist/cli/chunks/{chunk-DINZR5CF.js → chunk-YOCULVHR.js} +1 -1
- package/dist/cli/chunks/{chunk-KIXYKUCI.js → chunk-YPX2TV3M.js} +1 -1
- package/dist/cli/chunks/{chunk-OXZLKP6C.js → chunk-Z2EA7A4Z.js} +1 -1
- package/dist/cli/chunks/{chunk-W5VJRDDG.js → chunk-ZMC543GI.js} +2 -2
- package/dist/cli/chunks/chunk-ZMHCMJ4J.js +2 -0
- package/dist/cli/chunks/{chunk-72AMFDC7.js → chunk-ZP75ASUU.js} +1 -1
- package/dist/cli/chunks/{chunk-JUVHZG7I.js → chunk-ZQHDA4O7.js} +1 -1
- package/dist/cli/chunks/{ci-7SGRCFPS.js → ci-6GUFAZMJ.js} +2 -2
- package/dist/cli/chunks/{ci-config-MX3URPZA.js → ci-config-J665XNOX.js} +2 -2
- package/dist/cli/chunks/{ci-output-M47NJY6D.js → ci-output-PEQQQWVD.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-5GAK45SW.js → circuit-breaker-HHB2JSKH.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-YXYSRH4Y.js → claude-flow-setup-JKUJRWPN.js} +2 -2
- package/dist/cli/chunks/client-HL2COSFM.js +2 -0
- package/dist/cli/chunks/{cline-installer-DLJ5QD5N.js → cline-installer-Y77BWTAN.js} +2 -2
- package/dist/cli/chunks/{code-ONKLMVQ2.js → code-LV2HAGJY.js} +3 -3
- package/dist/cli/chunks/{code-index-extractor-2232LGZN.js → code-index-extractor-4GKKSETB.js} +2 -2
- package/dist/cli/chunks/{codex-installer-UOWLYCMH.js → codex-installer-WMKBYE5Y.js} +2 -2
- package/dist/cli/chunks/{completions-MHX7GCC7.js → completions-SBGFAOIJ.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-43ZUJKZU.js → complexity-analyzer-AQHFIJXC.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-6Q5JR4FF.js → continuedev-installer-26AYFS2E.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-CZUMVHSI.js → copilot-installer-4UD3DK55.js} +2 -2
- package/dist/cli/chunks/core-handlers-IX7ATLM6.js +2 -0
- package/dist/cli/chunks/{cost-tracker-VS5ZW3XN.js → cost-tracker-TP4NZCG4.js} +2 -2
- package/dist/cli/chunks/{coverage-VWKTWZ6D.js → coverage-B2KIXHAI.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-YYKLAPJO.js +2 -0
- package/dist/cli/chunks/{cursor-installer-YIFEMORH.js → cursor-installer-AVZEQZ4W.js} +2 -2
- package/dist/cli/chunks/daemon-P574WWBW.js +18 -0
- package/dist/cli/chunks/{daemon-SHWJSJW5.js → daemon-XM2A7LQU.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-TCC2WM46.js → dag-attention-scheduler-MIWOZ6ET.js} +2 -2
- package/dist/cli/chunks/{detect-IGTWSQMA.js → detect-TYR7HT23.js} +2 -2
- package/dist/cli/chunks/{dist-node-TCOTJVQX.js → dist-node-2DGVQGLS.js} +2 -2
- package/dist/cli/chunks/{domain-handler-55ZVYODR.js → domain-handler-RRA4ZOMF.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-GJRWOHQP.js → domain-plugins-IVZEZ5RB.js} +2 -2
- package/dist/cli/chunks/domain-transfer-DOBI67K6.js +2 -0
- package/dist/cli/chunks/dream-T6EP7B3F.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-XAMNIKQL.js → embed-and-insert-pattern-VNIEOVPO.js} +2 -2
- package/dist/cli/chunks/{eval-GO22R4OZ.js → eval-QV4LVPUF.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-F2BRMJ3Y.js → experience-capture-middleware-DAPKT763.js} +3 -3
- package/dist/cli/chunks/{fast-paths-6RGPYALD.js → fast-paths-WVRFPHX7.js} +2 -2
- package/dist/cli/chunks/{feature-flags-ZGS3KLPH.js → feature-flags-DEFTUIYT.js} +2 -2
- package/dist/cli/chunks/{feature-flags-MIWQIOHU.js → feature-flags-O7ZXDDCD.js} +2 -2
- package/dist/cli/chunks/file-discovery-JYMVTDMU.js +2 -0
- package/dist/cli/chunks/fleet-FVAUMKUT.js +46 -0
- package/dist/cli/chunks/{gnn-wrapper-ALBJVW6T.js → gnn-wrapper-LS4LZJDR.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-ZMM53NDY.js → heartbeat-handler-RFTERD4K.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-4N5MUJ7S.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-ZPAJDSLR.js +2 -0
- package/dist/cli/chunks/hnsw-index-4CTH6RHB.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-RYUJPA7B.js → hnsw-legacy-bridge-GPKGFFHY.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-XM6XF3YV.js → hnswlib-node-PHL3F2PR.js} +2 -2
- package/dist/cli/chunks/{hooks-X62O7TJO.js → hooks-GYJ6D4QM.js} +36 -36
- package/dist/cli/chunks/hybrid-backend-AW6UTXQS.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-ZBWUPTVD.js → hypergraph-engine-YGEQPCKJ.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-DUMF6SJV.js → hypergraph-handler-ZIMM647V.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-MZK3JMSV.js +2 -0
- package/dist/cli/chunks/{init-guard-S4I2R46S.js → init-guard-VOMBXJXG.js} +2 -2
- package/dist/cli/chunks/{init-handler-L4KJHVWS.js → init-handler-PSMUBWK5.js} +26 -25
- package/dist/cli/chunks/init-wizard-FUC7KDVX.js +2 -0
- package/dist/cli/chunks/kernel-ZCPMCVMW.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-GNNB5FCZ.js → kilocode-installer-2YNTFBWJ.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-HR6ZAH7T.js → kiro-installer-XHJDPVAZ.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-NUJKEDNF.js +2 -0
- package/dist/cli/chunks/{learning-4IEEOHJS.js → learning-GNSIDRNG.js} +24 -24
- package/dist/cli/chunks/{llm-router-ZFMORP36.js → llm-router-LQDM7IU2.js} +4 -4
- package/dist/cli/chunks/llm-router-service-B2BFBQ76.js +2 -0
- package/dist/cli/chunks/{load-ZM43WGDO.js → load-YATHI72E.js} +2 -2
- package/dist/cli/chunks/load-test-ZHQ2MUGO.js +2 -0
- package/dist/cli/chunks/mcp-4Y6GDLYK.js +2 -0
- package/dist/cli/chunks/{memory-W5FZGVAD.js → memory-OUW3L7H2.js} +5 -5
- package/dist/cli/chunks/memory-backend-AAMQG6WH.js +2 -0
- package/dist/cli/chunks/memory-handlers-G3LFF53U.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-SXXGAQ2G.js → multi-model-executor-UBZJXAD2.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-PIRBUAB5.js → opencode-installer-AMMNWVH5.js} +2 -2
- package/dist/cli/chunks/{orchestrator-H5SQCQTB.js → orchestrator-Y44WDOER.js} +69 -25
- package/dist/cli/chunks/pattern-null-store-RFNVA46O.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-XZTWDI2T.js → pattern-usage-recorder-ESR42RME.js} +2 -2
- package/dist/cli/chunks/pipeline-EDTS6OSC.js +19 -0
- package/dist/cli/chunks/{platform-KJDABL5C.js → platform-5WONJSUX.js} +2 -2
- package/dist/cli/chunks/{plugin-V4KSBVVM.js → plugin-IJXPCLD4.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-JDHTKQAT.js → prime-radiant-advanced-wasm-5ECKGZK6.js} +2 -2
- package/dist/cli/chunks/project-root-7QL4KP5C.js +2 -0
- package/dist/cli/chunks/protocol-executor-2NW5BD4R.js +2 -0
- package/dist/cli/chunks/{protocol-handler-BNRONTQV.js → protocol-handler-DRD3GVNW.js} +2 -2
- package/dist/cli/chunks/{prove-ELLL6XMX.js → prove-KTGW2HMJ.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-G2JZOGKD.js +2 -0
- package/dist/cli/chunks/{quality-NH2QA4D4.js → quality-DV2WPRRS.js} +2 -2
- package/dist/cli/chunks/{quality-gate-JTKLF7GW.js → quality-gate-HFUAFVZC.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-GRG5FT2A.js +2 -0
- package/dist/cli/chunks/{real-embeddings-J3KCKLPB.js → real-embeddings-RQRVOKVM.js} +2 -2
- package/dist/cli/chunks/{ref-validation-HNXQRP4F.js → ref-validation-QWSKS5OY.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-COJ6CX6S.js → roocode-installer-RBAYRCHX.js} +2 -2
- package/dist/cli/chunks/router-LQB5SWAF.js +2 -0
- package/dist/cli/chunks/routing-feedback-OEEXA55N.js +2 -0
- package/dist/cli/chunks/{routing-handler-WM33ZILE.js → routing-handler-FMPP3XKO.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-BBLXEA7A.js → ruvector-commands-KZZT4HWF.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-BZK4M7BO.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-EZZUJL2E.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-P7H6HCAG.js → rvf-migration-coordinator-7CHEV35N.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-6COXTQZ3.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-R5SPVRFP.js → rvf-store-integrity-Q2TH52SN.js} +2 -2
- package/dist/cli/chunks/safe-db-PE6G3L55.js +2 -0
- package/dist/cli/chunks/schedule-OLKQ6QYW.js +2 -0
- package/dist/cli/chunks/scheduler-LSGBDFAT.js +2 -0
- package/dist/cli/chunks/{security-AUDTRX3I.js → security-CUEA3UIM.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-PVDGBGI2.js → shared-rvf-adapter-DROMBRV2.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-LZ2GMSS2.js → shared-rvf-dual-writer-DBNABOP7.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-HH4DNTYH.js +2 -0
- package/dist/cli/chunks/{standalone-memory-XNOAI4G4.js → standalone-memory-IAHA3M6B.js} +2 -2
- package/dist/cli/chunks/{status-handler-K72XZE4T.js → status-handler-AFUCASTX.js} +2 -2
- package/dist/cli/chunks/{structural-health-NF3YY7U5.js → structural-health-AQRV6JJ6.js} +2 -2
- package/dist/cli/chunks/{sync-VBD5Y3E2.js → sync-GX7FMJHL.js} +2 -2
- package/dist/cli/chunks/sync-XW5TLZ7M.js +2 -0
- package/dist/cli/chunks/{task-handler-24S3WFVJ.js → task-handler-TFKVUTNF.js} +2 -2
- package/dist/cli/chunks/task-handlers-SS4ZDXNF.js +9 -0
- package/dist/cli/chunks/{test-XFSGQELD.js → test-D2XDJNDX.js} +17 -17
- package/dist/cli/chunks/test-runner-process-PSSBNNGR.js +2 -0
- package/dist/cli/chunks/{test-scheduling-VYUQ4CDE.js → test-scheduling-TS6I2PR7.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-HBBLPCZ3.js +2 -0
- package/dist/cli/chunks/{token-usage-VLQ6WO2L.js → token-usage-3MBUX4PR.js} +2 -2
- package/dist/cli/chunks/{transformers-TOFMWWNM.js → transformers-ZWMQO3L2.js} +2 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-TYRQRJ2W.js +2 -0
- package/dist/cli/chunks/{types-JTWLBAZJ.js → types-5YEMGPSQ.js} +2 -2
- package/dist/cli/chunks/unified-memory-AGDZQ5XD.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-X5TJ3JDE.js +2 -0
- package/dist/cli/chunks/unified-persistence-UCV7YETW.js +2 -0
- package/dist/cli/chunks/{upgrade-4ABM72T4.js → upgrade-2TPBKIHI.js} +2 -2
- package/dist/cli/chunks/{validate-UDJCWKXI.js → validate-XRAXXFW6.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-TODOUWNN.js → validate-swarm-IYSCS3BZ.js} +2 -2
- package/dist/cli/chunks/visual-security-ZLXRIQZV.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-WBMAJPM5.js → web-tree-sitter-PZQ3ZG2P.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-BTT53TUL.js → windsurf-installer-U6XWFRVT.js} +2 -2
- package/dist/cli/chunks/witness-chain-CVIWYTD2.js +2 -0
- package/dist/cli/chunks/witness-chain-VBKORKOX.js +2 -0
- package/dist/cli/chunks/witness-chain-repair-K7YX2AO6.js +2 -0
- package/dist/cli/chunks/{witness-chain-verifier-FRY3LMGH.js → witness-chain-verifier-GUTC3W7N.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-X7QHQQWL.js → witness-key-manager-YBNKMOP6.js} +2 -2
- package/dist/cli/chunks/{workflow-QMZPAWQW.js → workflow-UAJUILFQ.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-3ZN7MVCE.js +2 -0
- package/dist/cli/chunks/wrappers-AVZ3GPAL.js +2 -0
- package/dist/cli/commands/fleet.js +23 -13
- 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/hooks-handlers/tool-loop-guardrail.js +11 -6
- package/dist/cli/commands/learning.js +5 -3
- package/dist/cli/commands/ruvector-commands.js +2 -1
- package/dist/cli/commands/test.js +11 -2
- package/dist/cli/handlers/init-handler.d.ts +12 -0
- package/dist/cli/handlers/init-handler.js +27 -12
- package/dist/cli/utils/ci-output.d.ts +11 -0
- package/dist/cli/utils/ci-output.js +2 -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/cli/utils/progress.d.ts +16 -2
- package/dist/cli/utils/progress.js +31 -14
- package/dist/context/sources/git-source.js +6 -2
- package/dist/coordination/consensus/consensus-engine.js +3 -1
- package/dist/coordination/handlers/code-intelligence-handlers.js +63 -7
- package/dist/coordination/handlers/coverage-collection.js +3 -1
- package/dist/coordination/handlers/coverage-handlers.js +10 -1
- package/dist/coordination/handlers/coverage-runner.d.ts +3 -8
- package/dist/coordination/handlers/coverage-runner.js +6 -22
- package/dist/coordination/handlers/coverage-stderr.d.ts +23 -0
- package/dist/coordination/handlers/coverage-stderr.js +39 -0
- package/dist/coordination/handlers/coverage-target.js +6 -3
- package/dist/coordination/handlers/handler-utils.js +3 -1
- package/dist/coordination/handlers/requirements-handlers.js +18 -3
- package/dist/coordination/handlers/security-handlers.js +45 -21
- 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 +27 -10
- 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/task-executability.d.ts +12 -0
- package/dist/coordination/task-executability.js +27 -0
- package/dist/coordination/workflow-orchestrator.d.ts +6 -0
- package/dist/coordination/workflow-orchestrator.js +22 -8
- 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/code-intelligence/services/product-factors-bridge.js +7 -4
- 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/coverage-analysis/services/coverage-parser.js +19 -10
- 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 +8 -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 +47 -59
- package/dist/domains/learning-optimization/services/metrics-optimizer.js +14 -4
- package/dist/domains/learning-optimization/services/production-intel.js +3 -1
- package/dist/domains/security-compliance/generic-finding-dedup.d.ts +40 -0
- package/dist/domains/security-compliance/generic-finding-dedup.js +63 -0
- 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/dependency-resolver.js +14 -6
- package/dist/domains/security-compliance/services/scanners/sast-scanner.js +4 -2
- package/dist/domains/security-compliance/services/scanners/scanner-orchestrator.js +4 -1
- package/dist/domains/security-compliance/services/security-auditor-sast.js +2 -2
- package/dist/domains/security-compliance/services/security-auditor-secrets.js +2 -2
- package/dist/domains/security-compliance/services/security-auditor.js +3 -2
- package/dist/domains/test-execution/coordinator.d.ts +6 -0
- package/dist/domains/test-execution/coordinator.js +28 -22
- package/dist/domains/test-execution/interfaces.d.ts +36 -1
- 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/retry-outcome.d.ts +18 -0
- package/dist/domains/test-execution/services/retry-outcome.js +53 -0
- 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/coordinator.js +2 -2
- package/dist/domains/test-generation/plugin.js +7 -2
- package/dist/domains/test-generation/services/pattern-matcher.js +4 -4
- package/dist/domains/test-generation/services/test-data-generator.js +3 -1
- package/dist/domains/test-generation/services/test-generator.js +2 -2
- package/dist/domains/visual-accessibility/services/axe-core-audit.js +1 -1
- package/dist/governance/evolution-pipeline-integration.js +3 -1
- package/dist/hooks/cross-phase-hooks.js +5 -2
- package/dist/init/init-wizard-steps.js +5 -1
- package/dist/init/phases/04-database.js +7 -0
- package/dist/init/phases/10-workers.js +50 -6
- package/dist/init/phases/12-verification.js +14 -4
- package/dist/init/settings-merge.js +7 -4
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +7 -0
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +31 -2
- package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +3 -1
- package/dist/integrations/agentic-flow/reasoning-bank/index.js +5 -0
- 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/ruvector/filter-adapter.js +2 -1
- 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/insight-generator.js +5 -4
- 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/memory-auditor.js +3 -1
- package/dist/learning/qe-patterns.js +2 -1
- package/dist/learning/qe-reasoning-bank-types.d.ts +17 -2
- package/dist/learning/qe-reasoning-bank.js +22 -11
- package/dist/learning/real-qe-reasoning-bank.d.ts +19 -0
- package/dist/learning/real-qe-reasoning-bank.js +70 -38
- 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 +612 -580
- package/dist/mcp/handlers/core-handlers.js +11 -0
- package/dist/mcp/handlers/domain-handler-configs.d.ts +7 -0
- package/dist/mcp/handlers/domain-handler-configs.js +19 -5
- 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 +16 -0
- package/dist/mcp/handlers/task-handlers.js +77 -24
- package/dist/mcp/handlers/validation-pipeline-handler.js +14 -10
- package/dist/mcp/protocol-server.js +10 -8
- package/dist/mcp/qe-tool-bridge.js +3 -0
- package/dist/mcp/security/schema-validator.js +3 -2
- package/dist/mcp/services/reasoning-bank-service.d.ts +3 -1
- package/dist/mcp/services/reasoning-bank-service.js +4 -0
- package/dist/mcp/tool-annotations.js +4 -1
- package/dist/mcp/tools/code-intelligence/c4.js +11 -1
- package/dist/mcp/tools/coherence/check.js +1 -0
- package/dist/mcp/tools/coherence/consensus.js +4 -2
- 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 +59 -12
- package/dist/mcp/tools/mincut/index.js +3 -0
- package/dist/mcp/tools/quality-assessment/gate.js +19 -1
- package/dist/mcp/tools/qx-analysis/analyze.js +1 -0
- package/dist/mcp/tools/requirements-validation/quality-criteria.js +17 -3
- package/dist/mcp/tools/security-compliance/scan.js +4 -2
- package/dist/mcp/tools/test-execution/e2e-execute.js +2 -2
- package/dist/mcp/tools/test-execution/execute.js +3 -2
- package/dist/memory/crdt/crdt-store.js +5 -0
- package/dist/memory/crdt/lww-register.js +12 -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/optimization/early-exit-token-optimizer.js +3 -1
- package/dist/planning/goap-planner.js +5 -0
- package/dist/planning/plan-executor.js +5 -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/confined-read.d.ts +74 -0
- package/dist/shared/io/confined-read.js +256 -0
- package/dist/shared/io/file-reader.d.ts +6 -6
- package/dist/shared/io/file-reader.js +16 -42
- 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/providers/claude-code.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/native-module-errors.d.ts +51 -0
- package/dist/shared/native-module-errors.js +129 -0
- package/dist/shared/safe-db.js +14 -4
- package/dist/shared/security/osv-client.js +4 -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/types/test-frameworks.js +2 -2
- 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/sync/readers/json-reader.js +2 -1
- package/dist/validation/anchor-set.d.ts +6 -0
- package/dist/validation/anchor-set.js +9 -1
- package/dist/validation/gate-reexecute.js +7 -4
- package/dist/validation/quality-gate-runner.d.ts +7 -1
- package/dist/validation/quality-gate-runner.js +3 -3
- 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-2XITOPYV.js +0 -6
- package/dist/cli/chunks/chunk-4URT6JO2.js +0 -2
- package/dist/cli/chunks/chunk-5LAAZLUC.js +0 -4
- package/dist/cli/chunks/chunk-6PXA2BQJ.js +0 -742
- package/dist/cli/chunks/chunk-6YL6JOQB.js +0 -4
- package/dist/cli/chunks/chunk-7DMA5NYL.js +0 -4
- package/dist/cli/chunks/chunk-AR2E4B7K.js +0 -6
- package/dist/cli/chunks/chunk-F2SQPP6U.js +0 -4
- package/dist/cli/chunks/chunk-FJ4VTLLK.js +0 -2
- package/dist/cli/chunks/chunk-FV3NHVC7.js +0 -59
- 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-JEP4ULR6.js +0 -21
- package/dist/cli/chunks/chunk-JK2ME6IT.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-N5PDFGCQ.js +0 -180
- package/dist/cli/chunks/chunk-O3JLOVZX.js +0 -4
- package/dist/cli/chunks/chunk-P2CXVNKK.js +0 -4
- package/dist/cli/chunks/chunk-THAY7WHO.js +0 -12
- package/dist/cli/chunks/chunk-VU2EL424.js +0 -14
- package/dist/cli/chunks/chunk-VXZJOKOX.js +0 -2
- package/dist/cli/chunks/chunk-VYLM2YV5.js +0 -12
- package/dist/cli/chunks/chunk-XZJ2O3VC.js +0 -2
- 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
|
@@ -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
|
|
@@ -21,6 +21,14 @@ export interface FleetProgressOptions {
|
|
|
21
21
|
showPercentage?: boolean;
|
|
22
22
|
format?: string;
|
|
23
23
|
}
|
|
24
|
+
/** Options for {@link FleetProgressManager.stop}. */
|
|
25
|
+
export interface FleetProgressStopOptions {
|
|
26
|
+
/**
|
|
27
|
+
* The operation's verdict failed (#1168). The agents still completed, but
|
|
28
|
+
* the summary line must not call that a success.
|
|
29
|
+
*/
|
|
30
|
+
verdictFailed?: boolean;
|
|
31
|
+
}
|
|
24
32
|
export interface SpinnerOptions {
|
|
25
33
|
text: string;
|
|
26
34
|
color?: 'cyan' | 'green' | 'yellow' | 'red' | 'blue' | 'magenta' | 'white';
|
|
@@ -43,7 +51,7 @@ export declare class FleetProgressManager {
|
|
|
43
51
|
/**
|
|
44
52
|
* Start the fleet progress display
|
|
45
53
|
*/
|
|
46
|
-
start(
|
|
54
|
+
start(_totalAgents: number): void;
|
|
47
55
|
/**
|
|
48
56
|
* Add an agent to track
|
|
49
57
|
*/
|
|
@@ -63,11 +71,17 @@ export declare class FleetProgressManager {
|
|
|
63
71
|
/**
|
|
64
72
|
* Stop the progress display
|
|
65
73
|
*/
|
|
66
|
-
stop(): void;
|
|
74
|
+
stop(options?: FleetProgressStopOptions): void;
|
|
67
75
|
/**
|
|
68
76
|
* Update the fleet-level progress bar
|
|
69
77
|
*/
|
|
70
78
|
private updateFleetProgress;
|
|
79
|
+
/**
|
|
80
|
+
* Create a bar and apply its payload. Without a TTY, cli-progress's
|
|
81
|
+
* MultiBar.create() returns before starting the bar, dropping the payload,
|
|
82
|
+
* so the final render printed a literal `{name}` (#1168).
|
|
83
|
+
*/
|
|
84
|
+
private createBar;
|
|
71
85
|
private getAgentNameDisplay;
|
|
72
86
|
private getStatusIcon;
|
|
73
87
|
private truncateName;
|
|
@@ -13,6 +13,7 @@ import { getCLIConfig, shouldUseColors } from '../config/cli-config.js';
|
|
|
13
13
|
// ============================================================================
|
|
14
14
|
// Fleet Progress Manager - Multi-bar progress for parallel agents
|
|
15
15
|
// ============================================================================
|
|
16
|
+
const FLEET_BAR_NAME = chalk.white('Fleet Progress'.padEnd(30));
|
|
16
17
|
export class FleetProgressManager {
|
|
17
18
|
multiBar;
|
|
18
19
|
agentBars = new Map();
|
|
@@ -31,10 +32,12 @@ export class FleetProgressManager {
|
|
|
31
32
|
showPercentage: true,
|
|
32
33
|
...options,
|
|
33
34
|
};
|
|
34
|
-
// Custom format for multi-bar display (respects color config)
|
|
35
|
+
// Custom format for multi-bar display (respects color config).
|
|
36
|
+
// `{eta}` is a cli-progress built-in that overrides the payload, so the
|
|
37
|
+
// formatted ETA travels as `{etaText}` (#1168).
|
|
35
38
|
const barColor = useColors ? chalk.cyan('{bar}') : '{bar}';
|
|
36
39
|
const format = this.options.format ||
|
|
37
|
-
`{name} ${barColor} {percentage}% | {status} {
|
|
40
|
+
`{name} ${barColor} {percentage}% | {status} {etaText}`;
|
|
38
41
|
this.multiBar = new MultiBar({
|
|
39
42
|
clearOnComplete: false,
|
|
40
43
|
hideCursor: true,
|
|
@@ -48,15 +51,15 @@ export class FleetProgressManager {
|
|
|
48
51
|
/**
|
|
49
52
|
* Start the fleet progress display
|
|
50
53
|
*/
|
|
51
|
-
start(
|
|
54
|
+
start(_totalAgents) {
|
|
52
55
|
this.isActive = true;
|
|
53
56
|
this.startTime = Date.now();
|
|
54
57
|
// Create fleet-level progress bar
|
|
55
58
|
console.log(chalk.blue(`\n${this.options.title}\n`));
|
|
56
|
-
this.fleetBar = this.
|
|
57
|
-
name:
|
|
59
|
+
this.fleetBar = this.createBar(0, {
|
|
60
|
+
name: FLEET_BAR_NAME,
|
|
58
61
|
status: '',
|
|
59
|
-
|
|
62
|
+
etaText: '',
|
|
60
63
|
});
|
|
61
64
|
}
|
|
62
65
|
/**
|
|
@@ -66,10 +69,10 @@ export class FleetProgressManager {
|
|
|
66
69
|
if (!this.isActive)
|
|
67
70
|
return;
|
|
68
71
|
this.agentStates.set(agent.id, agent);
|
|
69
|
-
const bar = this.
|
|
72
|
+
const bar = this.createBar(agent.progress, {
|
|
70
73
|
name: chalk.gray(this.truncateName(agent.name, 30).padEnd(30)),
|
|
71
74
|
status: this.getStatusIcon(agent.status),
|
|
72
|
-
|
|
75
|
+
etaText: agent.eta ? this.formatEta(agent.eta) : '',
|
|
73
76
|
});
|
|
74
77
|
this.agentBars.set(agent.id, bar);
|
|
75
78
|
this.updateFleetProgress();
|
|
@@ -96,7 +99,7 @@ export class FleetProgressManager {
|
|
|
96
99
|
bar.update(state.progress, {
|
|
97
100
|
name: this.getAgentNameDisplay(state),
|
|
98
101
|
status: this.getStatusIcon(state.status),
|
|
99
|
-
|
|
102
|
+
etaText: state.eta ? this.formatEta(state.eta) : '',
|
|
100
103
|
});
|
|
101
104
|
this.updateFleetProgress();
|
|
102
105
|
}
|
|
@@ -115,14 +118,14 @@ export class FleetProgressManager {
|
|
|
115
118
|
bar.update(state.progress, {
|
|
116
119
|
name: this.getAgentNameDisplay(state),
|
|
117
120
|
status: this.getStatusIcon(state.status),
|
|
118
|
-
|
|
121
|
+
etaText: '',
|
|
119
122
|
});
|
|
120
123
|
this.updateFleetProgress();
|
|
121
124
|
}
|
|
122
125
|
/**
|
|
123
126
|
* Stop the progress display
|
|
124
127
|
*/
|
|
125
|
-
stop() {
|
|
128
|
+
stop(options = {}) {
|
|
126
129
|
if (!this.isActive)
|
|
127
130
|
return;
|
|
128
131
|
this.isActive = false;
|
|
@@ -135,7 +138,10 @@ export class FleetProgressManager {
|
|
|
135
138
|
const total = this.agentStates.size;
|
|
136
139
|
const duration = Date.now() - this.startTime;
|
|
137
140
|
console.log('');
|
|
138
|
-
if (failed === 0) {
|
|
141
|
+
if (failed === 0 && options.verdictFailed) {
|
|
142
|
+
console.log(chalk.yellow(`All ${completed}/${total} agents completed (${this.formatDuration(duration)})`));
|
|
143
|
+
}
|
|
144
|
+
else if (failed === 0) {
|
|
139
145
|
console.log(chalk.green(`All ${completed}/${total} agents completed successfully (${this.formatDuration(duration)})`));
|
|
140
146
|
}
|
|
141
147
|
else {
|
|
@@ -155,10 +161,21 @@ export class FleetProgressManager {
|
|
|
155
161
|
const completed = agents.filter(a => a.status === 'completed').length;
|
|
156
162
|
const running = agents.filter(a => a.status === 'running').length;
|
|
157
163
|
this.fleetBar.update(avgProgress, {
|
|
164
|
+
name: FLEET_BAR_NAME,
|
|
158
165
|
status: chalk.gray(`${completed}/${agents.length} complete, ${running} running`),
|
|
159
|
-
|
|
166
|
+
etaText: this.options.showEta ? this.estimateFleetEta(agents) : '',
|
|
160
167
|
});
|
|
161
168
|
}
|
|
169
|
+
/**
|
|
170
|
+
* Create a bar and apply its payload. Without a TTY, cli-progress's
|
|
171
|
+
* MultiBar.create() returns before starting the bar, dropping the payload,
|
|
172
|
+
* so the final render printed a literal `{name}` (#1168).
|
|
173
|
+
*/
|
|
174
|
+
createBar(value, payload) {
|
|
175
|
+
const bar = this.multiBar.create(100, value, payload);
|
|
176
|
+
bar.update(value, payload);
|
|
177
|
+
return bar;
|
|
178
|
+
}
|
|
162
179
|
getAgentNameDisplay(agent) {
|
|
163
180
|
const name = this.truncateName(agent.name, 26);
|
|
164
181
|
switch (agent.status) {
|
|
@@ -448,7 +465,7 @@ export class EtaEstimator {
|
|
|
448
465
|
* Create a simple spinner for async operations
|
|
449
466
|
*/
|
|
450
467
|
export function withSpinner(text, operation) {
|
|
451
|
-
const {
|
|
468
|
+
const { succeed, fail } = createTimedSpinner(text);
|
|
452
469
|
return operation()
|
|
453
470
|
.then((result) => {
|
|
454
471
|
succeed();
|
|
@@ -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({
|
|
@@ -12,6 +12,7 @@ import { DEFAULT_CONSENSUS_CONFIG, } from './interfaces.js';
|
|
|
12
12
|
import { buildVerificationPrompt, parseVerificationResponse, buildModelVote, } from './model-provider.js';
|
|
13
13
|
import { ok, err } from '../../shared/types/index.js';
|
|
14
14
|
import { toErrorMessage, toError } from '../../shared/error-utils.js';
|
|
15
|
+
import { createSafeRecord } from '../../shared/utils/safe-record.js';
|
|
15
16
|
import { createStrategy, } from './strategies/index.js';
|
|
16
17
|
import { createSycophancyScorer } from './sycophancy-scorer.js';
|
|
17
18
|
// ============================================================================
|
|
@@ -268,7 +269,8 @@ export class ConsensusEngineImpl {
|
|
|
268
269
|
averageExecutionTime: 0,
|
|
269
270
|
totalCost: 0,
|
|
270
271
|
humanReviewCount: 0,
|
|
271
|
-
|
|
272
|
+
// #1157: keyed by provider model ids.
|
|
273
|
+
modelStats: createSafeRecord(),
|
|
272
274
|
};
|
|
273
275
|
}
|
|
274
276
|
/**
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* Extracted from task-executor.ts registerHandlers().
|
|
5
5
|
* Covers: index-code, predict-defects
|
|
6
6
|
*/
|
|
7
|
-
import
|
|
7
|
+
import { randomUUID } from 'node:crypto';
|
|
8
|
+
import { prunePredictionHistory } from '../../domains/defect-intelligence/prediction-history.js';
|
|
8
9
|
import * as path from 'path';
|
|
9
10
|
import { ok, err } from '../../shared/types/index.js';
|
|
10
11
|
import { toError } from '../../shared/error-utils.js';
|
|
@@ -12,6 +13,8 @@ import { discoverSourceFiles } from './handler-utils.js';
|
|
|
12
13
|
import { resolveProjectRootFromPaths } from '../../domains/code-intelligence/project-root-resolver.js';
|
|
13
14
|
import { nothingIndexedError } from '../../domains/code-intelligence/index-path-guard.js';
|
|
14
15
|
import { createLogger } from '../../logging/logger-factory.js';
|
|
16
|
+
import { requirePayloadPath } from '../../shared/io/payload-path-guard.js';
|
|
17
|
+
import { readConfinedText } from '../../shared/io/confined-read.js';
|
|
15
18
|
const logger = createLogger('CodeIntelligenceHandlers');
|
|
16
19
|
async function collectProjectMetricsForTarget(ctx, targetPath, indexedFiles) {
|
|
17
20
|
if (!ctx.getCodeIntelligenceCoordinator)
|
|
@@ -43,13 +46,24 @@ async function collectProjectMetricsForTarget(ctx, targetPath, indexedFiles) {
|
|
|
43
46
|
return undefined;
|
|
44
47
|
}
|
|
45
48
|
}
|
|
49
|
+
/** #1126: a caller-named target must be a file or directory inside the project. */
|
|
50
|
+
async function confineTarget(taskType, target) {
|
|
51
|
+
if (!target || target === '.')
|
|
52
|
+
return ok(undefined);
|
|
53
|
+
return requirePayloadPath(taskType, 'target', target, { allowDirectory: true, allowMissing: true });
|
|
54
|
+
}
|
|
46
55
|
export function registerCodeIntelligenceHandlers(ctx) {
|
|
47
56
|
// Register code indexing handler - REAL IMPLEMENTATION
|
|
48
57
|
ctx.registerHandler('index-code', async (task) => {
|
|
49
58
|
const payload = task.payload;
|
|
50
59
|
try {
|
|
60
|
+
// #1126: refuse an outside target before listing it, so the error
|
|
61
|
+
// cannot name the files in an outside directory.
|
|
62
|
+
const confined = await confineTarget('index-code', payload.target);
|
|
63
|
+
if (!confined.success)
|
|
64
|
+
return confined;
|
|
51
65
|
const kg = ctx.getKnowledgeGraph();
|
|
52
|
-
const targetPath = payload.target || process.cwd();
|
|
66
|
+
const targetPath = confined.value ?? (payload.target || process.cwd());
|
|
53
67
|
const startTime = Date.now();
|
|
54
68
|
// Discover files to index
|
|
55
69
|
const filesToIndex = await discoverSourceFiles(targetPath, {
|
|
@@ -139,7 +153,10 @@ export function registerCodeIntelligenceHandlers(ctx) {
|
|
|
139
153
|
ctx.registerHandler('predict-defects', async (task) => {
|
|
140
154
|
const payload = task.payload;
|
|
141
155
|
try {
|
|
142
|
-
const
|
|
156
|
+
const confined = await confineTarget('predict-defects', payload.target);
|
|
157
|
+
if (!confined.success)
|
|
158
|
+
return confined;
|
|
159
|
+
const targetPath = confined.value ?? path.resolve(payload.target || process.cwd());
|
|
143
160
|
const minConfidence = payload.minConfidence || 0.5;
|
|
144
161
|
// Discover actual source files in the target directory
|
|
145
162
|
const sourceFiles = await discoverSourceFiles(targetPath, { includeTests: false });
|
|
@@ -156,9 +173,12 @@ export function registerCodeIntelligenceHandlers(ctx) {
|
|
|
156
173
|
}
|
|
157
174
|
// Analyze each file for defect indicators based on real metrics
|
|
158
175
|
const predictedDefects = [];
|
|
176
|
+
const predictions = [];
|
|
177
|
+
let filesSkipped = 0;
|
|
159
178
|
for (const filePath of sourceFiles) {
|
|
160
179
|
try {
|
|
161
|
-
|
|
180
|
+
// #1161: validate the opened descriptor, not the name listed earlier.
|
|
181
|
+
const content = await readConfinedText(filePath, { outsideRoot: 'allow' });
|
|
162
182
|
const lines = content.split('\n');
|
|
163
183
|
const lineCount = lines.length;
|
|
164
184
|
// Calculate complexity indicators from real code
|
|
@@ -206,6 +226,18 @@ export function registerCodeIntelligenceHandlers(ctx) {
|
|
|
206
226
|
reasons.push('Potentially long functions');
|
|
207
227
|
}
|
|
208
228
|
probability = Math.min(probability, 0.95);
|
|
229
|
+
// Keep every analyzed file, including a clean reanalysis below the
|
|
230
|
+
// display threshold. Absolute paths retain the project-relative
|
|
231
|
+
// identity when the caller targeted a nested directory (#1050).
|
|
232
|
+
const roundedProbability = Math.round(probability * 100) / 100;
|
|
233
|
+
predictions.push({
|
|
234
|
+
file: path.resolve(filePath),
|
|
235
|
+
probability: roundedProbability,
|
|
236
|
+
riskLevel: probability >= 0.8 ? 'critical' : probability >= 0.6 ? 'high'
|
|
237
|
+
: probability >= 0.4 ? 'medium' : probability >= 0.2 ? 'low' : 'info',
|
|
238
|
+
factors: [{ name: 'staticCodeIndicators', contribution: roundedProbability }],
|
|
239
|
+
recommendations: reasons,
|
|
240
|
+
});
|
|
209
241
|
if (probability >= minConfidence) {
|
|
210
242
|
// Use relative path for readability
|
|
211
243
|
const relativePath = filePath.startsWith(targetPath)
|
|
@@ -219,9 +251,27 @@ export function registerCodeIntelligenceHandlers(ctx) {
|
|
|
219
251
|
}
|
|
220
252
|
}
|
|
221
253
|
catch {
|
|
254
|
+
filesSkipped++;
|
|
222
255
|
// Skip files that can't be read
|
|
223
256
|
}
|
|
224
257
|
}
|
|
258
|
+
if (predictions.length === 0) {
|
|
259
|
+
return err(new Error(`Defect prediction could not read any of ${sourceFiles.length} source files`));
|
|
260
|
+
}
|
|
261
|
+
// Record the run in the schema consumed by the background worker.
|
|
262
|
+
// These are static risk estimates from files actually read, not an
|
|
263
|
+
// empirically calibrated likelihood of future production defects.
|
|
264
|
+
const id = randomUUID();
|
|
265
|
+
await ctx.memory.set(`defect-intelligence:predictor:prediction:${id}`, {
|
|
266
|
+
id,
|
|
267
|
+
timestamp: new Date().toISOString(),
|
|
268
|
+
predictions,
|
|
269
|
+
predictionMethod: 'static-code-indicators',
|
|
270
|
+
estimated: true,
|
|
271
|
+
filesSkipped,
|
|
272
|
+
scanStatus: filesSkipped > 0 ? 'partial' : 'complete',
|
|
273
|
+
}, { namespace: 'defect-intelligence', ttl: 86400 * 7 });
|
|
274
|
+
await prunePredictionHistory(ctx.memory);
|
|
225
275
|
// Sort by probability descending
|
|
226
276
|
predictedDefects.sort((a, b) => b.probability - a.probability);
|
|
227
277
|
// Calculate overall risk score
|
|
@@ -232,7 +282,7 @@ export function registerCodeIntelligenceHandlers(ctx) {
|
|
|
232
282
|
// Generate recommendations from actual findings
|
|
233
283
|
const recommendations = [];
|
|
234
284
|
if (predictedDefects.length > 0) {
|
|
235
|
-
recommendations.push(`${predictedDefects.length} files flagged for potential defects out of ${
|
|
285
|
+
recommendations.push(`${predictedDefects.length} files flagged for potential defects out of ${predictions.length} analyzed`);
|
|
236
286
|
const topFile = predictedDefects[0];
|
|
237
287
|
recommendations.push(`Highest risk: ${topFile.file} (${Math.round(topFile.probability * 100)}%) — ${topFile.reason}`);
|
|
238
288
|
}
|
|
@@ -243,13 +293,19 @@ export function registerCodeIntelligenceHandlers(ctx) {
|
|
|
243
293
|
recommendations.push('Address TODO/FIXME comments to reduce technical debt');
|
|
244
294
|
}
|
|
245
295
|
if (predictedDefects.length === 0) {
|
|
246
|
-
recommendations.push(
|
|
296
|
+
recommendations.push(filesSkipped > 0
|
|
297
|
+
? `No analyzed files exceeded the threshold; ${filesSkipped} unreadable source files remain unassessed`
|
|
298
|
+
: 'No files exceeded the defect probability threshold — code looks healthy');
|
|
247
299
|
}
|
|
248
300
|
return ok({
|
|
249
301
|
predictedDefects: predictedDefects.slice(0, 20), // Top 20
|
|
250
302
|
riskScore,
|
|
251
303
|
recommendations,
|
|
252
|
-
filesAnalyzed:
|
|
304
|
+
filesAnalyzed: predictions.length,
|
|
305
|
+
filesSkipped,
|
|
306
|
+
scanStatus: filesSkipped > 0 ? 'partial' : 'complete',
|
|
307
|
+
predictionMethod: 'static-code-indicators',
|
|
308
|
+
estimated: true,
|
|
253
309
|
});
|
|
254
310
|
}
|
|
255
311
|
catch (error) {
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
* caller.
|
|
20
20
|
*/
|
|
21
21
|
import * as fs from 'fs';
|
|
22
|
+
import { readConfinedTextSync } from '../../shared/io/confined-read.js';
|
|
22
23
|
import * as os from 'os';
|
|
23
24
|
import * as path from 'path';
|
|
24
25
|
import { parseLcovInfo } from './handler-utils.js';
|
|
@@ -558,8 +559,9 @@ export function buildEstimatedCoverage(targetPath) {
|
|
|
558
559
|
return null;
|
|
559
560
|
const files = sourceFiles.map(filePath => {
|
|
560
561
|
let content = '';
|
|
562
|
+
// #1161: a source file linked out of the project is treated as unreadable.
|
|
561
563
|
try {
|
|
562
|
-
content =
|
|
564
|
+
content = readConfinedTextSync(filePath, { outsideRoot: 'allow' });
|
|
563
565
|
}
|
|
564
566
|
catch { /* unreadable — treat as empty */ }
|
|
565
567
|
const ext = path.extname(filePath);
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { ok, err } from '../../shared/types/index.js';
|
|
8
8
|
import { toError } from '../../shared/error-utils.js';
|
|
9
|
+
import { requirePayloadPath } from '../../shared/io/payload-path-guard.js';
|
|
9
10
|
import { buildEstimatedCoverage, collectRustCoverage, findCargoRoot, isCoverageExecDisabled, isRustProject, } from './coverage-collection.js';
|
|
10
11
|
import { describeNoData, evaluateCoverageForTarget, isUnmeasured, packageFilterForTarget, resolveExistingCoverage, scopeCoverageToTarget, reconcileRecommendations, thresholdVerdict, } from './coverage-target.js';
|
|
11
12
|
import { randomUUID } from 'crypto';
|
|
@@ -200,8 +201,16 @@ export function registerCoverageHandlers(ctx) {
|
|
|
200
201
|
ctx.registerHandler('analyze-coverage', async (task) => {
|
|
201
202
|
const payload = task.payload;
|
|
202
203
|
try {
|
|
204
|
+
// #1126: collect coverage (which may run the tests) only inside the
|
|
205
|
+
// project. A missing target keeps its own message below.
|
|
206
|
+
let targetPath = payload.target || process.cwd();
|
|
207
|
+
if (payload.target && payload.target !== '.') {
|
|
208
|
+
const confined = await requirePayloadPath('analyze-coverage', 'target', payload.target, { allowDirectory: true, allowMissing: true });
|
|
209
|
+
if (!confined.success)
|
|
210
|
+
return confined;
|
|
211
|
+
targetPath = confined.value;
|
|
212
|
+
}
|
|
203
213
|
const analyzer = ctx.getCoverageAnalyzer();
|
|
204
|
-
const targetPath = payload.target || process.cwd();
|
|
205
214
|
const threshold = payload.threshold || 80;
|
|
206
215
|
const { collected, ranTests, noData, projectRoot, notes, runStatus, testRun } = await collectCoverage(targetPath);
|
|
207
216
|
// #995 review N5: say so plainly instead of "no coverage data found".
|
|
@@ -25,6 +25,8 @@
|
|
|
25
25
|
* fate. Hosts should shut down via a handled signal.
|
|
26
26
|
*/
|
|
27
27
|
import type { CoverageData } from '../../domains/coverage-analysis/interfaces';
|
|
28
|
+
import { summarizeStderr } from './coverage-stderr';
|
|
29
|
+
export { summarizeStderr };
|
|
28
30
|
export type JsRunnerName = 'vitest' | 'jest' | 'nyc';
|
|
29
31
|
export interface JsCoverageInvocation {
|
|
30
32
|
runner: JsRunnerName;
|
|
@@ -64,7 +66,7 @@ export interface JsCoverageRun {
|
|
|
64
66
|
numFailedTests?: number | null;
|
|
65
67
|
numPendingTests?: number | null;
|
|
66
68
|
numFailedTestSuites?: number | null;
|
|
67
|
-
/** The runner's first error line plus the last ~2 KB of its stderr, for diagnosing a crash. */
|
|
69
|
+
/** The runner's first error line plus the last ~2 KB of its stderr, redacted (#1150), for diagnosing a crash. */
|
|
68
70
|
stderrTail: string;
|
|
69
71
|
}
|
|
70
72
|
/**
|
|
@@ -74,13 +76,6 @@ export interface JsCoverageRun {
|
|
|
74
76
|
* every test passing). Without counts (nyc), the exit code decides.
|
|
75
77
|
*/
|
|
76
78
|
export declare function testRunStatus(run: JsCoverageRun): 'passed' | 'failed';
|
|
77
|
-
/**
|
|
78
|
-
* Summarise a runner's stderr for a caller: the FIRST error-looking line (or
|
|
79
|
-
* the first ~512 bytes) plus the last ~2 KB (#995 review NB-C). A tail alone
|
|
80
|
-
* loses the cause when a long stack follows it — a vitest config syntax error
|
|
81
|
-
* prints `[PARSE_ERROR] …` first and then kilobytes of frames.
|
|
82
|
-
*/
|
|
83
|
-
export declare function summarizeStderr(head: string, tail: string, totalBytes: number): string;
|
|
84
79
|
/**
|
|
85
80
|
* Find an installed package's bin script, walking up `node_modules` from the
|
|
86
81
|
* project root (hoisted monorepo installs live above the package).
|
|
@@ -30,6 +30,8 @@ import * as os from 'os';
|
|
|
30
30
|
import * as path from 'path';
|
|
31
31
|
import { safeJsonParse } from '../../shared/safe-json.js';
|
|
32
32
|
import { loadCoverageReportFile } from './coverage-target.js';
|
|
33
|
+
import { STDERR_WINDOW_BYTES, summarizeStderr } from './coverage-stderr.js';
|
|
34
|
+
export { summarizeStderr };
|
|
33
35
|
/**
|
|
34
36
|
* Outcome of a coverage run's tests (#1027 NB2): 'failed' when the runner's
|
|
35
37
|
* own result reports a failed test or test suite, 'passed' when it reports
|
|
@@ -43,25 +45,6 @@ export function testRunStatus(run) {
|
|
|
43
45
|
return run.exitedCleanly ? 'passed' : 'failed';
|
|
44
46
|
}
|
|
45
47
|
const RESULTS_FILE = 'test-results.json';
|
|
46
|
-
const STDERR_TAIL_BYTES = 2048;
|
|
47
|
-
const STDERR_HEAD_BYTES = 4096;
|
|
48
|
-
const STDERR_PREFIX_BYTES = 512;
|
|
49
|
-
const ERROR_LINE_RE = /^.*(?:error|\[[A-Z][A-Z_]{2,}\]|ERR_[A-Z_]+).*$/im;
|
|
50
|
-
/**
|
|
51
|
-
* Summarise a runner's stderr for a caller: the FIRST error-looking line (or
|
|
52
|
-
* the first ~512 bytes) plus the last ~2 KB (#995 review NB-C). A tail alone
|
|
53
|
-
* loses the cause when a long stack follows it — a vitest config syntax error
|
|
54
|
-
* prints `[PARSE_ERROR] …` first and then kilobytes of frames.
|
|
55
|
-
*/
|
|
56
|
-
export function summarizeStderr(head, tail, totalBytes) {
|
|
57
|
-
if (totalBytes <= STDERR_TAIL_BYTES)
|
|
58
|
-
return tail.trim();
|
|
59
|
-
const errorLine = ERROR_LINE_RE.exec(head)?.[0]?.trim();
|
|
60
|
-
const prefix = (errorLine ?? head.slice(0, STDERR_PREFIX_BYTES)).trim();
|
|
61
|
-
if (prefix && tail.includes(prefix))
|
|
62
|
-
return tail.trim();
|
|
63
|
-
return `${prefix}\n…\n${tail.trim()}`;
|
|
64
|
-
}
|
|
65
48
|
// ============================================================================
|
|
66
49
|
// Locating the runner
|
|
67
50
|
// ============================================================================
|
|
@@ -348,9 +331,10 @@ export async function runProcessTree(command, args, options) {
|
|
|
348
331
|
child.stderr?.on('data', (chunk) => {
|
|
349
332
|
const text = chunk.toString('utf-8');
|
|
350
333
|
stderrBytes += chunk.length;
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
334
|
+
// #1150: raw windows only; summarizeStderr redacts them before slicing.
|
|
335
|
+
if (stderrHead.length < STDERR_WINDOW_BYTES)
|
|
336
|
+
stderrHead = (stderrHead + text).slice(0, STDERR_WINDOW_BYTES);
|
|
337
|
+
stderrTail = (stderrTail + text).slice(-STDERR_WINDOW_BYTES);
|
|
354
338
|
});
|
|
355
339
|
// A grandchild holding the pipe open must not keep the host alive.
|
|
356
340
|
child.stderr?.on('error', () => { });
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Caller-facing summary of a coverage runner's stderr.
|
|
3
|
+
*
|
|
4
|
+
* #1150: the summary reaches `provenance.notes` of a SUCCESS result, where the
|
|
5
|
+
* #1139 error backstop never sees it, so it is redacted here. Redaction runs
|
|
6
|
+
* BEFORE slicing: a slice boundary that cut a token or connection string in
|
|
7
|
+
* half would leave a fragment the redaction patterns no longer recognise.
|
|
8
|
+
* The collector therefore keeps a wide raw window at each end of the stream;
|
|
9
|
+
* each window is redacted whole, and only then are the short head and tail
|
|
10
|
+
* taken from it. A secret cut by a window edge lies far outside the part
|
|
11
|
+
* that is kept.
|
|
12
|
+
*/
|
|
13
|
+
/** Raw stderr kept at each end of the stream, before redaction. */
|
|
14
|
+
export declare const STDERR_WINDOW_BYTES: number;
|
|
15
|
+
/**
|
|
16
|
+
* Summarise a runner's stderr for a caller: the FIRST error-looking line (or
|
|
17
|
+
* the first ~512 bytes) plus the last ~2 KB (#995 review NB-C). A tail alone
|
|
18
|
+
* loses the cause when a long stack follows it — a vitest config syntax error
|
|
19
|
+
* prints `[PARSE_ERROR] …` first and then kilobytes of frames. `head` and
|
|
20
|
+
* `tail` are the raw windows at each end; both are redacted before slicing.
|
|
21
|
+
*/
|
|
22
|
+
export declare function summarizeStderr(head: string, tail: string, totalBytes: number): string;
|
|
23
|
+
//# sourceMappingURL=coverage-stderr.d.ts.map
|