agentic-qe 3.15.10 → 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 +114 -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/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/cli/bundle.js +6 -6
- package/dist/cli/chunks/adapter-V4GSGOOK.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-H7ANGXW4.js → agent-booster-wasm-TIDSQ3ZK.js} +2 -2
- package/dist/cli/chunks/{agent-handler-SVXSHEET.js → agent-handler-G3EPBVA7.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-WKQH36XL.js → agent-memory-branch-ARC5C7GW.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-6WQTM5YR.js +2 -0
- package/dist/cli/chunks/{arena-OPS36NFZ.js → arena-36DTATJV.js} +4 -4
- package/dist/cli/chunks/{arena-EKOOFVST.js → arena-K4I4QDXB.js} +2 -2
- package/dist/cli/chunks/{audit-AO5NDZRI.js → audit-WQSJSJZF.js} +3 -3
- package/dist/cli/chunks/base-AK7BXBX2.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-TFLVEMMY.js → better-sqlite3-BB4K67MT.js} +2 -2
- package/dist/cli/chunks/{brain-handler-ADBBJPYW.js → brain-handler-CU3GOIU3.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-HGHUYYL5.js → branch-enumerator-NJQX7ZNB.js} +2 -2
- package/dist/cli/chunks/{browser-5LU6P4SZ.js → browser-6YJF4FQW.js} +2 -2
- package/dist/cli/chunks/browser-workflow-VTDFBW7T.js +2 -0
- package/dist/cli/chunks/{chunk-LQEURY7C.js → chunk-25P77WA5.js} +1 -1
- package/dist/cli/chunks/{chunk-FFTPAWM6.js → chunk-2CW7VRPH.js} +8 -8
- package/dist/cli/chunks/chunk-2DTX7YAZ.js +6 -0
- package/dist/cli/chunks/{chunk-6KIL6CMD.js → chunk-2KFFEKSI.js} +2 -2
- package/dist/cli/chunks/{chunk-UARKIZAS.js → chunk-2VLYUF7U.js} +2 -2
- package/dist/cli/chunks/{chunk-A55QKKT2.js → chunk-325QCVDI.js} +2 -2
- package/dist/cli/chunks/{chunk-FBXTQNRH.js → chunk-35M2X3C5.js} +2 -2
- package/dist/cli/chunks/{chunk-S75EYIJG.js → chunk-3RHOPP7A.js} +1 -1
- package/dist/cli/chunks/{chunk-SY2IB442.js → chunk-4HJKQIX5.js} +2 -2
- package/dist/cli/chunks/chunk-4MUBW4RT.js +7 -0
- package/dist/cli/chunks/{chunk-KSIWGGJI.js → chunk-4RAQ7PJA.js} +2 -2
- package/dist/cli/chunks/{chunk-DT7SIJOA.js → chunk-4RH5I24Q.js} +2 -2
- package/dist/cli/chunks/{chunk-JHIY4VCC.js → chunk-4UBVAJFO.js} +3 -3
- package/dist/cli/chunks/{chunk-RPHY2DU6.js → chunk-4UX35V7P.js} +2 -2
- package/dist/cli/chunks/{chunk-7LFZ4CHM.js → chunk-4X4MWMHB.js} +2 -2
- package/dist/cli/chunks/{chunk-TNMBRDCA.js → chunk-55CH76ZO.js} +3 -3
- package/dist/cli/chunks/{chunk-6S3WJGUV.js → chunk-57LNKSW7.js} +2 -2
- package/dist/cli/chunks/chunk-5ERFHEEE.js +14 -0
- package/dist/cli/chunks/{chunk-KNQ2ERFX.js → chunk-5HQP4SLM.js} +2 -2
- package/dist/cli/chunks/{chunk-XFVTGAAJ.js → chunk-5MNASJOH.js} +2 -2
- package/dist/cli/chunks/{chunk-UCJMVXO4.js → chunk-5MTWCCZJ.js} +2 -2
- package/dist/cli/chunks/{chunk-GZLZCZ42.js → chunk-5N25I53C.js} +2 -2
- package/dist/cli/chunks/{chunk-NGKNYIQZ.js → chunk-5WYZHDIZ.js} +1 -1
- package/dist/cli/chunks/{chunk-GWZZ7DAO.js → chunk-5YLOLACR.js} +2 -2
- package/dist/cli/chunks/{chunk-B6LTH6YV.js → chunk-672XOJDG.js} +1 -1
- package/dist/cli/chunks/{chunk-DNRWGATA.js → chunk-6NA3KZZT.js} +3 -3
- package/dist/cli/chunks/chunk-72ZBJD2E.js +3 -0
- package/dist/cli/chunks/{chunk-XLZYRTNO.js → chunk-76SNL7GU.js} +2 -2
- package/dist/cli/chunks/{chunk-37OWRCUN.js → chunk-7HEMJHPP.js} +2 -2
- package/dist/cli/chunks/{chunk-WQ4PYWSW.js → chunk-7R5HC56U.js} +1 -1
- package/dist/cli/chunks/{chunk-EDLFX4ZB.js → chunk-AFFN6E6Q.js} +2 -2
- package/dist/cli/chunks/{chunk-YCGP5VFP.js → chunk-AMZKAJLJ.js} +2 -2
- package/dist/cli/chunks/{chunk-OEKP73MC.js → chunk-AP3ADWDK.js} +2 -2
- package/dist/cli/chunks/{chunk-DE4YJQJF.js → chunk-APPZATXA.js} +2 -2
- package/dist/cli/chunks/{chunk-RWWOHCMG.js → chunk-AUUJBXWX.js} +2 -2
- package/dist/cli/chunks/{chunk-LRZY4KS2.js → chunk-BTVWA35P.js} +2 -2
- package/dist/cli/chunks/{chunk-4G63WT4F.js → chunk-BZPE3LDO.js} +2 -2
- package/dist/cli/chunks/{chunk-OY2AHLSF.js → chunk-CFWGGRE7.js} +1 -1
- package/dist/cli/chunks/{chunk-7OZVZIBE.js → chunk-CIAL4YRY.js} +2 -2
- package/dist/cli/chunks/{chunk-TBLI254A.js → chunk-CO3DX2AX.js} +2 -2
- package/dist/cli/chunks/{chunk-GHBNRMSJ.js → chunk-DDEOZPWJ.js} +2 -2
- package/dist/cli/chunks/{chunk-62OAY5KJ.js → chunk-DOBZPSKE.js} +1 -1
- package/dist/cli/chunks/{chunk-NVYIZCSR.js → chunk-DOFREOPQ.js} +2 -2
- package/dist/cli/chunks/{chunk-SU5H66SD.js → chunk-E44NNCEU.js} +2 -2
- package/dist/cli/chunks/{chunk-MG27QY4D.js → chunk-E6PF35JZ.js} +2 -2
- package/dist/cli/chunks/{chunk-4SJYIX54.js → chunk-EBPJY4DI.js} +2 -2
- package/dist/cli/chunks/{chunk-EWFECZ2U.js → chunk-EH2S6AOR.js} +2 -2
- package/dist/cli/chunks/{chunk-Y76IAYQD.js → chunk-EIDJNT5C.js} +1 -1
- package/dist/cli/chunks/{chunk-6PX4OXQO.js → chunk-EJPK7OTR.js} +2 -2
- package/dist/cli/chunks/{chunk-EAU5KDFO.js → chunk-EK5GMOSO.js} +1 -1
- package/dist/cli/chunks/{chunk-ABFFWZPC.js → chunk-ERN43HOX.js} +151 -149
- package/dist/cli/chunks/{chunk-SO45NA4D.js → chunk-ETVAYGCB.js} +11 -11
- package/dist/cli/chunks/{chunk-RK73HB2F.js → chunk-EWPUQCN4.js} +2 -2
- package/dist/cli/chunks/{chunk-DMFTELBS.js → chunk-FL32MTKT.js} +2 -2
- package/dist/cli/chunks/chunk-FLU5FDSC.js +742 -0
- package/dist/cli/chunks/{chunk-NZYLNXT6.js → chunk-FUYOOKTH.js} +5 -5
- package/dist/cli/chunks/{chunk-NAXGWDVM.js → chunk-FWSGPE3V.js} +3 -3
- package/dist/cli/chunks/{chunk-ATHWDAXB.js → chunk-FZHSG75I.js} +2 -2
- package/dist/cli/chunks/{chunk-OBAREPDC.js → chunk-G2IJFNZS.js} +2 -2
- package/dist/cli/chunks/{chunk-H32EPIR2.js → chunk-G4CKPWF6.js} +1 -1
- package/dist/cli/chunks/{chunk-SKQUUE4F.js → chunk-G4FAPO57.js} +2 -2
- package/dist/cli/chunks/{chunk-KG336OV3.js → chunk-G77MLBDF.js} +2 -2
- package/dist/cli/chunks/{chunk-V6JBOIMX.js → chunk-GBFUANTC.js} +1 -1
- package/dist/cli/chunks/{chunk-YAKGBHO4.js → chunk-GVKVJJQX.js} +2 -2
- package/dist/cli/chunks/{chunk-GJHWY3ZX.js → chunk-GWJWSLDA.js} +2 -2
- package/dist/cli/chunks/{chunk-WDVRE6GN.js → chunk-H43AFUKL.js} +2 -2
- package/dist/cli/chunks/chunk-H7BLYMNU.js +59 -0
- package/dist/cli/chunks/{chunk-NW5JUCCG.js → chunk-HDJUYAZG.js} +1 -1
- package/dist/cli/chunks/{chunk-FKL3R5JQ.js → chunk-HDNWSKHA.js} +2 -2
- package/dist/cli/chunks/{chunk-Z2O2YJAF.js → chunk-HFFPYC4G.js} +2 -2
- package/dist/cli/chunks/{chunk-WSF24I3D.js → chunk-HJ3XNTTJ.js} +2 -2
- package/dist/cli/chunks/{chunk-YDAQK5UF.js → chunk-HYXUN7BW.js} +1 -1
- package/dist/cli/chunks/{chunk-2ZI5FKSF.js → chunk-I36CRDHF.js} +2 -2
- package/dist/cli/chunks/{chunk-OY3NJNP2.js → chunk-I4K2HTQU.js} +1 -1
- package/dist/cli/chunks/{chunk-2ZMF4NCF.js → chunk-IENZSO3K.js} +2 -2
- package/dist/cli/chunks/chunk-IO5537OM.js +2 -0
- package/dist/cli/chunks/{chunk-G3CZCUPM.js → chunk-IOZRKXR5.js} +2 -2
- package/dist/cli/chunks/{chunk-BQUAE3CP.js → chunk-ITL3IN2E.js} +2 -2
- package/dist/cli/chunks/{chunk-3P34JFQH.js → chunk-ITPGWGQS.js} +14 -14
- package/dist/cli/chunks/{chunk-NSHU347M.js → chunk-IW6WDGHM.js} +1 -1
- package/dist/cli/chunks/{chunk-KOBVYY6H.js → chunk-J4JMCZVA.js} +2 -2
- package/dist/cli/chunks/{chunk-ACWFKES2.js → chunk-JFLU7L3W.js} +2 -2
- package/dist/cli/chunks/{chunk-YK7JN5N7.js → chunk-JGJXXAS6.js} +4 -4
- package/dist/cli/chunks/{chunk-ESUO3GTJ.js → chunk-JUMICXM6.js} +2 -2
- package/dist/cli/chunks/{chunk-VKRTTFB6.js → chunk-K2HBNYAZ.js} +2 -2
- package/dist/cli/chunks/{chunk-6MVVSSID.js → chunk-K7V2WZNF.js} +1 -1
- package/dist/cli/chunks/{chunk-XEB3NLJR.js → chunk-KDI5JOYZ.js} +2 -2
- package/dist/cli/chunks/{chunk-YKMU4LBV.js → chunk-KJCIMNHS.js} +1 -1
- package/dist/cli/chunks/{chunk-IKISCIGH.js → chunk-KKYO2NKV.js} +2 -2
- package/dist/cli/chunks/{chunk-VFSYMOAL.js → chunk-KSE5TDM5.js} +2 -2
- package/dist/cli/chunks/{chunk-V2RSNVMW.js → chunk-KSLLHFVY.js} +1 -1
- package/dist/cli/chunks/{chunk-6C3II5OM.js → chunk-KXS3Y2AX.js} +2 -2
- package/dist/cli/chunks/{chunk-LMS3Y7JD.js → chunk-LBX7M4LW.js} +2 -2
- package/dist/cli/chunks/{chunk-2XGVTYVX.js → chunk-LCVEEII4.js} +2 -2
- package/dist/cli/chunks/{chunk-C522H7XR.js → chunk-LD5CFK53.js} +32 -32
- package/dist/cli/chunks/{chunk-FESZBPUB.js → chunk-LPU6PAJE.js} +2 -2
- package/dist/cli/chunks/{chunk-7ZCDZHDB.js → chunk-LQ4NUC6Q.js} +2 -2
- package/dist/cli/chunks/chunk-LRL56ZYL.js +21 -0
- package/dist/cli/chunks/{chunk-D6DA2KFD.js → chunk-LXQ3B4RY.js} +2 -2
- package/dist/cli/chunks/{chunk-I33O4BRQ.js → chunk-M5RQ6U3G.js} +2 -2
- package/dist/cli/chunks/{chunk-6GP6W46M.js → chunk-M5XYIQYZ.js} +2 -2
- package/dist/cli/chunks/chunk-M7XFBSIK.js +2 -0
- package/dist/cli/chunks/{chunk-IPJ7Q3AJ.js → chunk-MIK4RBEH.js} +1 -1
- package/dist/cli/chunks/{chunk-GRCIBCJ2.js → chunk-NC6K7SCQ.js} +2 -2
- package/dist/cli/chunks/{chunk-CESIR27V.js → chunk-NKTWKYHB.js} +2 -2
- package/dist/cli/chunks/{chunk-OPFGRS5S.js → chunk-NPZOBSAN.js} +2 -2
- package/dist/cli/chunks/{chunk-PGYMKGOE.js → chunk-NQZNMCZU.js} +2 -2
- package/dist/cli/chunks/{chunk-2T7RRL6G.js → chunk-NT7JRHMH.js} +1 -1
- package/dist/cli/chunks/{chunk-H2PYU7MN.js → chunk-NTB342NJ.js} +1 -1
- package/dist/cli/chunks/{chunk-NPPHWFA2.js → chunk-O4JAKWWM.js} +13 -13
- package/dist/cli/chunks/{chunk-APSRPR4W.js → chunk-OD5D4LSZ.js} +2 -2
- package/dist/cli/chunks/{chunk-UHTTW3IT.js → chunk-OH5V5EJW.js} +2 -2
- package/dist/cli/chunks/{chunk-PFG6VQ5Z.js → chunk-OHR7C777.js} +2 -2
- package/dist/cli/chunks/{chunk-U53ZB4IX.js → chunk-OURITHFV.js} +2 -2
- package/dist/cli/chunks/{chunk-DEF34AFL.js → chunk-OV5RPLKV.js} +2 -2
- package/dist/cli/chunks/{chunk-GJMLK5UT.js → chunk-OYJC3YON.js} +2 -2
- package/dist/cli/chunks/{chunk-AH3ZD3NJ.js → chunk-QDESWOZP.js} +2 -2
- package/dist/cli/chunks/chunk-R5GRABPQ.js +2 -0
- package/dist/cli/chunks/{chunk-CZGOSJQ4.js → chunk-R5LGV6GZ.js} +2 -2
- package/dist/cli/chunks/{chunk-MNN5J4GU.js → chunk-RBZCA7SD.js} +2 -2
- package/dist/cli/chunks/chunk-RQMCZQN2.js +2 -0
- package/dist/cli/chunks/chunk-RTFKTKSO.js +4 -0
- package/dist/cli/chunks/{chunk-FB6TI3BH.js → chunk-RTY7VSZB.js} +2 -2
- package/dist/cli/chunks/{chunk-2SXBBUM6.js → chunk-S6IYEBAI.js} +2 -2
- package/dist/cli/chunks/{chunk-YYTGXD3R.js → chunk-SMVVAVN2.js} +2 -2
- package/dist/cli/chunks/{chunk-MA7JIQ6U.js → chunk-T5KHJ3J7.js} +5 -5
- package/dist/cli/chunks/{chunk-FZOWULMH.js → chunk-TCYSBC7Y.js} +1 -1
- package/dist/cli/chunks/{chunk-IU2IV4NE.js → chunk-TFW7CCKS.js} +1 -1
- package/dist/cli/chunks/chunk-TL6OFMXF.js +6 -0
- package/dist/cli/chunks/{chunk-ERQKYIP7.js → chunk-U3LJNNVJ.js} +5 -5
- package/dist/cli/chunks/{chunk-5E6GHSTY.js → chunk-UKKYMW3S.js} +2 -2
- package/dist/cli/chunks/{chunk-YK3BVZY6.js → chunk-UMVSWQNB.js} +2 -2
- package/dist/cli/chunks/{chunk-CFBEBXLO.js → chunk-UTTSH4NH.js} +3 -3
- package/dist/cli/chunks/{chunk-6XCMKIZN.js → chunk-V5AADCBC.js} +1 -1
- package/dist/cli/chunks/{chunk-5LPYV3TK.js → chunk-V7DA4HAK.js} +1 -1
- package/dist/cli/chunks/{chunk-7PJIR4ST.js → chunk-VBK2YAYY.js} +2 -2
- package/dist/cli/chunks/{chunk-ODJNUMV3.js → chunk-VEEYL2CZ.js} +2 -2
- package/dist/cli/chunks/{chunk-PPSAMXYN.js → chunk-VLD7Z2ED.js} +3 -3
- package/dist/cli/chunks/{chunk-N6PIIK6G.js → chunk-VO3DRK4P.js} +2 -2
- package/dist/cli/chunks/{chunk-ZXPY654C.js → chunk-VWUZSNVC.js} +1 -1
- package/dist/cli/chunks/{chunk-WDQ7IEZY.js → chunk-VYTILW4R.js} +2 -2
- package/dist/cli/chunks/{chunk-CZ2IF6MC.js → chunk-WCAVIJ64.js} +1 -1
- package/dist/cli/chunks/{chunk-M2QV7PT7.js → chunk-WCVCOT4E.js} +2 -2
- package/dist/cli/chunks/{chunk-AI4VYSFS.js → chunk-WM3SRRA6.js} +2 -2
- package/dist/cli/chunks/{chunk-NNFZUTDH.js → chunk-X3PZCXWG.js} +1 -1
- package/dist/cli/chunks/{chunk-PCEW6Q2C.js → chunk-X4J73KP3.js} +1 -1
- package/dist/cli/chunks/{chunk-DBMNJSBV.js → chunk-XDI5X3FR.js} +1 -1
- package/dist/cli/chunks/{chunk-VJQYDYAJ.js → chunk-XGBU3KEM.js} +2 -2
- package/dist/cli/chunks/{chunk-3Y7SPD72.js → chunk-XGPTZUKQ.js} +2 -2
- package/dist/cli/chunks/{chunk-EN2QSKFF.js → chunk-XJKZ7FTR.js} +2 -2
- package/dist/cli/chunks/{chunk-VWNFAW2M.js → chunk-XNLIWQYE.js} +2 -2
- package/dist/cli/chunks/{chunk-FAUCT5KR.js → chunk-XS2XF3YG.js} +6 -5
- package/dist/cli/chunks/chunk-Y7B5EUIJ.js +180 -0
- package/dist/cli/chunks/{chunk-Z7IYW5U7.js → chunk-YBBT3YYG.js} +1 -1
- package/dist/cli/chunks/{chunk-6TB6YOCZ.js → chunk-YNOCQ2SL.js} +1 -1
- package/dist/cli/chunks/{chunk-7TB6FK4B.js → chunk-YOCULVHR.js} +1 -1
- package/dist/cli/chunks/{chunk-H74Q7TJN.js → chunk-YPX2TV3M.js} +1 -1
- package/dist/cli/chunks/{chunk-V2M2XCR5.js → chunk-Z2EA7A4Z.js} +1 -1
- package/dist/cli/chunks/{chunk-KI73QCR5.js → chunk-ZMC543GI.js} +2 -2
- package/dist/cli/chunks/chunk-ZMHCMJ4J.js +2 -0
- package/dist/cli/chunks/{chunk-WBM6N6IM.js → chunk-ZP75ASUU.js} +1 -1
- package/dist/cli/chunks/{chunk-VFKF2XO7.js → chunk-ZQHDA4O7.js} +1 -1
- package/dist/cli/chunks/{ci-MSKMVH5X.js → ci-6GUFAZMJ.js} +2 -2
- package/dist/cli/chunks/{ci-config-7ODMNAUM.js → ci-config-J665XNOX.js} +2 -2
- package/dist/cli/chunks/{ci-output-FXZ7ZZW3.js → ci-output-PEQQQWVD.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-4VOUEPOX.js → circuit-breaker-HHB2JSKH.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-7D4SGLM4.js → claude-flow-setup-JKUJRWPN.js} +2 -2
- package/dist/cli/chunks/client-HL2COSFM.js +2 -0
- package/dist/cli/chunks/{cline-installer-WRRT7BGQ.js → cline-installer-Y77BWTAN.js} +2 -2
- package/dist/cli/chunks/{code-ZDJRIL3S.js → code-LV2HAGJY.js} +3 -3
- package/dist/cli/chunks/{code-index-extractor-4S4SHM56.js → code-index-extractor-4GKKSETB.js} +2 -2
- package/dist/cli/chunks/{codex-installer-YTRHNDWR.js → codex-installer-WMKBYE5Y.js} +2 -2
- package/dist/cli/chunks/{completions-6N64JUXJ.js → completions-SBGFAOIJ.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-I4A26VCJ.js → complexity-analyzer-AQHFIJXC.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-IIDR66LB.js → continuedev-installer-26AYFS2E.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-SVVFY3S2.js → copilot-installer-4UD3DK55.js} +2 -2
- package/dist/cli/chunks/core-handlers-IX7ATLM6.js +2 -0
- package/dist/cli/chunks/{cost-tracker-VGFS6IBX.js → cost-tracker-TP4NZCG4.js} +2 -2
- package/dist/cli/chunks/{coverage-B7MCGNTE.js → coverage-B2KIXHAI.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-YYKLAPJO.js +2 -0
- package/dist/cli/chunks/{cursor-installer-UPETT57E.js → cursor-installer-AVZEQZ4W.js} +2 -2
- package/dist/cli/chunks/{daemon-7BDJHEIJ.js → daemon-P574WWBW.js} +4 -4
- package/dist/cli/chunks/{daemon-CQFNZLXU.js → daemon-XM2A7LQU.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-PJVABHON.js → dag-attention-scheduler-MIWOZ6ET.js} +2 -2
- package/dist/cli/chunks/{detect-56SKAGWX.js → detect-TYR7HT23.js} +2 -2
- package/dist/cli/chunks/{dist-node-UYTYUMLN.js → dist-node-2DGVQGLS.js} +2 -2
- package/dist/cli/chunks/{domain-handler-YOYLBYJE.js → domain-handler-RRA4ZOMF.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-7TARX2XF.js → domain-plugins-IVZEZ5RB.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-AKVSBD6E.js → domain-transfer-DOBI67K6.js} +2 -2
- package/dist/cli/chunks/dream-T6EP7B3F.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-IS6HSR66.js → embed-and-insert-pattern-VNIEOVPO.js} +2 -2
- package/dist/cli/chunks/{eval-GNB574IM.js → eval-QV4LVPUF.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-RCAOCKM7.js → experience-capture-middleware-DAPKT763.js} +3 -3
- package/dist/cli/chunks/{fast-paths-KTZ5SF54.js → fast-paths-WVRFPHX7.js} +2 -2
- package/dist/cli/chunks/{feature-flags-ITX5LQ57.js → feature-flags-DEFTUIYT.js} +2 -2
- package/dist/cli/chunks/{feature-flags-KFHSR5YF.js → feature-flags-O7ZXDDCD.js} +2 -2
- package/dist/cli/chunks/file-discovery-JYMVTDMU.js +2 -0
- package/dist/cli/chunks/{fleet-2Y3ZE6CE.js → fleet-FVAUMKUT.js} +22 -22
- package/dist/cli/chunks/{gnn-wrapper-RLFW3GSX.js → gnn-wrapper-LS4LZJDR.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-EM2URCYZ.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-JMHEOIBH.js → hnsw-legacy-bridge-GPKGFFHY.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-CBP73QHY.js → hnswlib-node-PHL3F2PR.js} +2 -2
- package/dist/cli/chunks/{hooks-IP7XE34Z.js → hooks-GYJ6D4QM.js} +30 -30
- package/dist/cli/chunks/hybrid-backend-AW6UTXQS.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-ONAYHU25.js → hypergraph-engine-YGEQPCKJ.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-VINJRAID.js → hypergraph-handler-ZIMM647V.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-MZK3JMSV.js +2 -0
- package/dist/cli/chunks/{init-guard-RYVV5R3Z.js → init-guard-VOMBXJXG.js} +2 -2
- package/dist/cli/chunks/{init-handler-MPRGWMOE.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-OPD7JBRL.js → kilocode-installer-2YNTFBWJ.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-M4OPUNK2.js → kiro-installer-XHJDPVAZ.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-NUJKEDNF.js +2 -0
- package/dist/cli/chunks/{learning-4UWTQLMF.js → learning-GNSIDRNG.js} +3 -3
- package/dist/cli/chunks/{llm-router-SQ56FF6Z.js → llm-router-LQDM7IU2.js} +4 -4
- package/dist/cli/chunks/llm-router-service-B2BFBQ76.js +2 -0
- package/dist/cli/chunks/{load-HPHKDGGL.js → load-YATHI72E.js} +2 -2
- package/dist/cli/chunks/load-test-ZHQ2MUGO.js +2 -0
- package/dist/cli/chunks/{mcp-TELMAC7Z.js → mcp-4Y6GDLYK.js} +2 -2
- package/dist/cli/chunks/{memory-PFQ3KPVJ.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-3VDRX6TZ.js → multi-model-executor-UBZJXAD2.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-PJ576R63.js → opencode-installer-AMMNWVH5.js} +2 -2
- package/dist/cli/chunks/{orchestrator-72QP4UU7.js → orchestrator-Y44WDOER.js} +19 -19
- package/dist/cli/chunks/pattern-null-store-RFNVA46O.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-754YQW7C.js → pattern-usage-recorder-ESR42RME.js} +2 -2
- package/dist/cli/chunks/{pipeline-AVXY4MVB.js → pipeline-EDTS6OSC.js} +2 -2
- package/dist/cli/chunks/{platform-3E3DXLYB.js → platform-5WONJSUX.js} +2 -2
- package/dist/cli/chunks/{plugin-7FUQAKRE.js → plugin-IJXPCLD4.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-NIB4F5NV.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-BQRYMUTG.js → protocol-handler-DRD3GVNW.js} +2 -2
- package/dist/cli/chunks/{prove-H52QGC6B.js → prove-KTGW2HMJ.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-G2JZOGKD.js +2 -0
- package/dist/cli/chunks/{quality-QO4XPAUM.js → quality-DV2WPRRS.js} +2 -2
- package/dist/cli/chunks/{quality-gate-FBKE5E6F.js → quality-gate-HFUAFVZC.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-GRG5FT2A.js +2 -0
- package/dist/cli/chunks/{real-embeddings-RWGOVOXO.js → real-embeddings-RQRVOKVM.js} +2 -2
- package/dist/cli/chunks/{ref-validation-LF76ZOBD.js → ref-validation-QWSKS5OY.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-3BYEBTQ7.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-DST7BVCU.js → routing-handler-FMPP3XKO.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-XE32PGKC.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-VP32XC75.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-SH2AMVI7.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-VSPNKCDS.js → security-CUEA3UIM.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-HX6AHL3P.js → shared-rvf-adapter-DROMBRV2.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-MX4FC2JE.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-O4QUTK6L.js → standalone-memory-IAHA3M6B.js} +2 -2
- package/dist/cli/chunks/{status-handler-Z2BP6EOG.js → status-handler-AFUCASTX.js} +2 -2
- package/dist/cli/chunks/{structural-health-R36WNLQG.js → structural-health-AQRV6JJ6.js} +2 -2
- package/dist/cli/chunks/{sync-QF5Y3EMZ.js → sync-GX7FMJHL.js} +2 -2
- package/dist/cli/chunks/{sync-2ELWUFQU.js → sync-XW5TLZ7M.js} +2 -2
- package/dist/cli/chunks/{task-handler-43PYE75J.js → task-handler-TFKVUTNF.js} +2 -2
- package/dist/cli/chunks/task-handlers-SS4ZDXNF.js +9 -0
- package/dist/cli/chunks/{test-UWA377D4.js → test-D2XDJNDX.js} +11 -11
- package/dist/cli/chunks/test-runner-process-PSSBNNGR.js +2 -0
- package/dist/cli/chunks/{test-scheduling-YQZPJRRN.js → test-scheduling-TS6I2PR7.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-F7C6UKTC.js → token-bootstrap-HBBLPCZ3.js} +2 -2
- package/dist/cli/chunks/{token-usage-DO6WLMXP.js → token-usage-3MBUX4PR.js} +2 -2
- package/dist/cli/chunks/{transformers-H5RGFKVO.js → transformers-ZWMQO3L2.js} +2 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-TYRQRJ2W.js +2 -0
- package/dist/cli/chunks/{types-PJS2FGPF.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-4IC4F6AB.js → upgrade-2TPBKIHI.js} +2 -2
- package/dist/cli/chunks/{validate-DHUWW7PF.js → validate-XRAXXFW6.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-OERQNOX5.js → validate-swarm-IYSCS3BZ.js} +2 -2
- package/dist/cli/chunks/visual-security-ZLXRIQZV.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-TV7DMKES.js → web-tree-sitter-PZQ3ZG2P.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-QZPWSH37.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-RUXIOE7F.js → witness-chain-repair-K7YX2AO6.js} +2 -2
- package/dist/cli/chunks/{witness-chain-verifier-YXENHB42.js → witness-chain-verifier-GUTC3W7N.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-HL26AGFO.js → witness-key-manager-YBNKMOP6.js} +2 -2
- package/dist/cli/chunks/{workflow-EOVVCN2E.js → workflow-UAJUILFQ.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-3ZN7MVCE.js +2 -0
- package/dist/cli/chunks/{wrappers-AGODHBOO.js → wrappers-AVZ3GPAL.js} +2 -2
- package/dist/cli/commands/fleet.js +4 -1
- package/dist/cli/commands/hooks-handlers/tool-loop-guardrail.js +11 -6
- package/dist/cli/commands/test.js +5 -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 +2 -0
- package/dist/cli/utils/ci-output.js +2 -0
- package/dist/cli/utils/progress.d.ts +16 -2
- package/dist/cli/utils/progress.js +31 -14
- package/dist/coordination/consensus/consensus-engine.js +3 -1
- package/dist/coordination/handlers/code-intelligence-handlers.js +3 -2
- package/dist/coordination/handlers/coverage-collection.js +3 -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 +3 -2
- package/dist/coordination/handlers/security-handlers.js +34 -20
- package/dist/coordination/queen-coordinator.js +8 -3
- 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/domains/code-intelligence/services/product-factors-bridge.js +7 -4
- package/dist/domains/coverage-analysis/services/coverage-parser.js +19 -10
- package/dist/domains/learning-optimization/interfaces.d.ts +2 -0
- package/dist/domains/learning-optimization/services/learning-coordinator.js +2 -1
- 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/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/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 +2 -1
- package/dist/domains/test-execution/coordinator.js +5 -14
- package/dist/domains/test-execution/interfaces.d.ts +11 -1
- 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-generation/coordinator.js +2 -2
- package/dist/domains/test-generation/services/pattern-matcher.js +4 -4
- package/dist/domains/test-generation/services/test-generator.js +2 -2
- package/dist/governance/evolution-pipeline-integration.js +3 -1
- package/dist/hooks/cross-phase-hooks.js +3 -1
- package/dist/init/init-wizard-steps.js +5 -1
- package/dist/init/phases/04-database.js +7 -0
- 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/ruvector/filter-adapter.js +2 -1
- package/dist/learning/dream/insight-generator.js +5 -4
- package/dist/learning/memory-auditor.js +3 -1
- package/dist/learning/qe-patterns.js +2 -1
- package/dist/learning/real-qe-reasoning-bank.d.ts +19 -0
- package/dist/learning/real-qe-reasoning-bank.js +70 -38
- package/dist/mcp/bundle.js +486 -481
- package/dist/mcp/handlers/domain-handler-configs.d.ts +2 -0
- package/dist/mcp/handlers/domain-handler-configs.js +8 -2
- package/dist/mcp/handlers/task-handlers.d.ts +13 -0
- package/dist/mcp/handlers/task-handlers.js +42 -16
- package/dist/mcp/handlers/validation-pipeline-handler.js +9 -9
- package/dist/mcp/protocol-server.js +8 -8
- package/dist/mcp/qe-tool-bridge.js +3 -0
- 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/coherence/check.js +1 -0
- package/dist/mcp/tools/coherence/consensus.js +4 -2
- package/dist/mcp/tools/learning-optimization/optimize.js +1 -2
- package/dist/mcp/tools/mincut/index.js +3 -0
- package/dist/mcp/tools/quality-assessment/gate.js +7 -0
- package/dist/mcp/tools/qx-analysis/analyze.js +1 -0
- package/dist/mcp/tools/requirements-validation/quality-criteria.js +10 -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/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/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/llm/providers/claude-code.js +4 -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/types/test-frameworks.js +2 -2
- 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/quality-gate-runner.d.ts +7 -1
- package/dist/validation/quality-gate-runner.js +3 -3
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-TR5SLAZC.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-DXWKCHY2.js +0 -2
- package/dist/cli/chunks/base-GTB6POYE.js +0 -2
- package/dist/cli/chunks/browser-workflow-MSBOLYUY.js +0 -2
- package/dist/cli/chunks/chunk-6P7424AO.js +0 -21
- package/dist/cli/chunks/chunk-6X5DHU6Q.js +0 -14
- package/dist/cli/chunks/chunk-CMBLM26R.js +0 -2
- package/dist/cli/chunks/chunk-DKAC3E3B.js +0 -3
- package/dist/cli/chunks/chunk-DURHK377.js +0 -742
- package/dist/cli/chunks/chunk-FPUDRSFJ.js +0 -180
- package/dist/cli/chunks/chunk-G5I6KGMW.js +0 -59
- package/dist/cli/chunks/chunk-HOZUDE4C.js +0 -2
- package/dist/cli/chunks/chunk-TYFZXDGZ.js +0 -4
- package/dist/cli/chunks/chunk-U4OICXV2.js +0 -6
- package/dist/cli/chunks/chunk-XBVUVFJK.js +0 -4
- package/dist/cli/chunks/chunk-XUZDBQ5X.js +0 -6
- package/dist/cli/chunks/chunk-YBSBABOS.js +0 -2
- package/dist/cli/chunks/chunk-ZG5666GJ.js +0 -2
- package/dist/cli/chunks/client-POSVREVS.js +0 -2
- package/dist/cli/chunks/core-handlers-V243GY7X.js +0 -2
- package/dist/cli/chunks/cross-domain-router-N3AIEM3B.js +0 -2
- package/dist/cli/chunks/dream-UA7MKOPQ.js +0 -2
- package/dist/cli/chunks/file-discovery-YCMNKZAK.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-QH5V6G2P.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-OJNFAGJS.js +0 -2
- package/dist/cli/chunks/hnsw-index-DFUNARVD.js +0 -2
- package/dist/cli/chunks/hybrid-backend-SSGQQEQ2.js +0 -2
- package/dist/cli/chunks/impact-analyzer-CRGCA7ZD.js +0 -2
- package/dist/cli/chunks/init-wizard-NIMZ4J55.js +0 -2
- package/dist/cli/chunks/kernel-JQK7PRAI.js +0 -2
- package/dist/cli/chunks/knowledge-graph-YPVVIKEU.js +0 -2
- package/dist/cli/chunks/llm-router-service-5OGAUOXF.js +0 -2
- package/dist/cli/chunks/load-test-UKNV5MWW.js +0 -2
- package/dist/cli/chunks/memory-backend-ZW4BTRNK.js +0 -2
- package/dist/cli/chunks/memory-handlers-FCXN437E.js +0 -2
- package/dist/cli/chunks/pattern-null-store-4DUV6MQC.js +0 -2
- package/dist/cli/chunks/project-root-JCAUNL6O.js +0 -2
- package/dist/cli/chunks/protocol-executor-RNZNZP3A.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-WK6TQOG2.js +0 -2
- package/dist/cli/chunks/queen-coordinator-4452SXZQ.js +0 -2
- package/dist/cli/chunks/router-3DIS5X4R.js +0 -2
- package/dist/cli/chunks/routing-feedback-OPXRCXM7.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-JL6T727I.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-V7IBDUCS.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-O3UQTEBK.js +0 -2
- package/dist/cli/chunks/safe-db-EVB4ZC7T.js +0 -2
- package/dist/cli/chunks/schedule-ORDDXXY4.js +0 -2
- package/dist/cli/chunks/scheduler-XFLJSFIU.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-Y7B42CJ3.js +0 -2
- package/dist/cli/chunks/task-handlers-KPWAEMKH.js +0 -9
- package/dist/cli/chunks/test-runner-process-3XZUYST2.js +0 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-YTBCBHUO.js +0 -2
- package/dist/cli/chunks/unified-memory-EHD4VNFW.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-ZODGM4UK.js +0 -2
- package/dist/cli/chunks/unified-persistence-MHSI7ABK.js +0 -2
- package/dist/cli/chunks/visual-security-54MLFKWY.js +0 -2
- package/dist/cli/chunks/witness-chain-LC6Q2W27.js +0 -2
- package/dist/cli/chunks/witness-chain-QUIBAF3W.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-UKHEJVSK.js +0 -2
package/dist/cli/chunks/{witness-chain-repair-RUXIOE7F.js → witness-chain-repair-K7YX2AO6.js}
RENAMED
|
@@ -1,2 +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.
|
|
2
|
-
import{a as E}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.11");process.exit(0)}
|
|
2
|
+
import{a as E}from"./chunk-CO3DX2AX.js";import"./chunk-KDI5JOYZ.js";import{b as R,c as b,e as A,h as y,k as C}from"./chunk-NT7JRHMH.js";import"./chunk-LD5CFK53.js";import"./chunk-XGPTZUKQ.js";import"./chunk-JFLU7L3W.js";import"./chunk-WM3SRRA6.js";import"./chunk-XGBU3KEM.js";import"./chunk-G2IJFNZS.js";import"./chunk-M5XYIQYZ.js";import"./chunk-NQZNMCZU.js";import"./chunk-5N25I53C.js";import"./chunk-OYJC3YON.js";import"./chunk-EJPK7OTR.js";import"./chunk-QDESWOZP.js";import"./chunk-IO5537OM.js";import"./chunk-FZHSG75I.js";import"./chunk-VO3DRK4P.js";import"./chunk-HJ3XNTTJ.js";import"./chunk-76SNL7GU.js";import"./chunk-EH2S6AOR.js";import"./chunk-XNLIWQYE.js";import{d as g,e as _}from"./chunk-4MUBW4RT.js";import"./chunk-DDEOZPWJ.js";import"./chunk-XJKZ7FTR.js";import"./chunk-CFWGGRE7.js";_();import{existsSync as v}from"node:fs";import{basename as I}from"node:path";var w={includeArchive:!0};function l(e){let r=n=>C(e,n)?e.prepare(`SELECT COUNT(*) AS n FROM ${n}`).get().n:0;return{live:r("witness_chain"),archive:r("witness_chain_archive")}}function O(e){return{status:e.status,entriesChecked:e.entriesChecked,forks:e.forks.length,unacknowledgedForks:e.forks.length-e.acknowledgedForks.length,...e.tamperedAt!==void 0?{tamperedAt:e.tamperedAt}:{},...e.tamperReason?{tamperReason:e.tamperReason}:{}}}function $(e){return e.forkDetails.filter(r=>!r.acknowledged).map(({id:r,parentId:n,prevHash:s,actionHash:c})=>({id:r,parentId:n,prevHash:s,actionHash:c}))}function x(e,r){let n=new Set,s=e.prepare("SELECT prev_hash FROM witness_chain UNION ALL SELECT prev_hash FROM witness_chain_archive").pluck().iterate();for(let t of s)n.add(t);let c=[],a=new Set;for(let t of["witness_chain","witness_chain_archive"]){let f=e.prepare(`SELECT * FROM ${t} ORDER BY id ASC`).iterate();for(let o of f){if(o.id===r||a.has(o.id))continue;a.add(o.id);let i=A(o);!n.has(b(i))&&!n.has(R(i))&&c.push({id:o.id,hash:y(o)})}}return c.sort((t,f)=>t.id-f.id)}function S(e){return`Refusing to repair: tampering detected at id=${e.tamperedAt} (${e.tamperReason}). Only accidental forks can be re-anchored; restore from a backup and investigate.`}function M(e){let r=`${e}.bak-${Math.floor(Date.now()/1e3)}`;if(!v(r))return r;let n=1;for(;v(`${r}-${n}`);)n++;return`${r}-${n}`}function W(e,r){let n=M(e),s=g(e,{readonly:!0,fileMustExist:!0});try{s.prepare("VACUUM INTO ?").run(n)}finally{s.close()}let c=g(n,{readonly:!0,fileMustExist:!0});try{let a=c.pragma("integrity_check",{simple:!0});if(a!=="ok")throw new Error(`backup integrity_check failed: ${String(a)}`);let t=l(c);if(t.live!==r.live||t.archive!==r.archive)throw new Error(`backup holds ${JSON.stringify(t)} witness rows, expected ${JSON.stringify(r)}`)}finally{c.close()}return n}async function L(e,r){let n=r.dryRun===!0,s=new E(e,r.keyManager??void 0);await s.initialize();let c=l(e),a=s.verify(w),t={dryRun:n,before:O(a),rowsBefore:c,rowsAfter:c};if(a.tampered)return{...t,action:"refused",message:S(a),forksAcknowledged:[]};let f=$(a);if(f.length===0){let d=a.forks.length>0?`Nothing to repair: all ${a.forks.length} fork(s) are already re-anchored.`:"Nothing to repair: the audit chain has no forks.";return{...t,action:"none",message:d,forksAcknowledged:[]}}if(n)return{...t,action:"would-reanchor",forksAcknowledged:f.map(d=>d.id),message:`Dry run: would back up the database and append a CHAIN_REANCHOR entry acknowledging ${f.length} fork(s). Nothing was written.`};let o,i=e.transaction(()=>{let d=l(e),p=s.verify(w);if(p.tampered)return{kind:"refused",check:p};let h=$(p);if(h.length===0)return{kind:"noop"};o=W(r.dbPath,d);let m=e.prepare("SELECT * FROM witness_chain ORDER BY id DESC LIMIT 1").get(),T=s.append("CHAIN_REANCHOR",{reason:"fork-repair",issue:"https://github.com/proffesor-for-testing/agentic-qe/issues/753",note:"Acknowledges accidental forks from pre-3.14.5 concurrent appends; no rows were changed.",forkCount:h.length,forks:h,pins:x(e,m.id),verifiedTipId:m.id,verifiedTipHash:y(m),entriesChecked:p.entriesChecked,rows:d,backup:I(o)},r.actor??"aqe-audit-repair"),k=l(e);if(k.live!==d.live+1||k.archive!==d.archive)throw new Error(`row-count check failed: before ${JSON.stringify(d)}, after ${JSON.stringify(k)}`);return{kind:"reanchored",entry:T,forks:h,txAfter:k}}).immediate();if(i.kind==="refused")return{...t,action:"refused",message:S(i.check),forksAcknowledged:[]};if(i.kind==="noop")return{...t,action:"none",message:"Nothing to repair (another process re-anchored first).",forksAcknowledged:[]};let u=s.verify(w),N=u.valid&&!u.tampered;return{...t,action:"reanchored",after:O(u),rowsAfter:i.txAfter,forksAcknowledged:i.forks.map(d=>d.id),reanchorId:i.entry.id,backupPath:o,message:N?`Re-anchored ${i.forks.length} fork(s) with CHAIN_REANCHOR id=${i.entry.id}; chain now ${u.status}. Backup: ${o}`:`Appended CHAIN_REANCHOR id=${i.entry.id}, but the chain still verifies as ${u.status}. Backup: ${o}`}}export{L as repairWitnessChainForks};
|
package/dist/cli/chunks/{witness-chain-verifier-YXENHB42.js → witness-chain-verifier-GUTC3W7N.js}
RENAMED
|
@@ -1,2 +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.
|
|
2
|
-
import{g as a,h as b,i as c,j as d,k as e}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.11");process.exit(0)}
|
|
2
|
+
import{g as a,h as b,i as c,j as d,k as e}from"./chunk-NT7JRHMH.js";import"./chunk-CFWGGRE7.js";export{a as CHAIN_REANCHOR_ACTION,c as WitnessChainVerifier,b as ownHash,e as tableExists,d as verifyWitnessChain};
|
|
@@ -1,2 +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.
|
|
2
|
-
import{a,b,c}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.11");process.exit(0)}
|
|
2
|
+
import{a,b,c}from"./chunk-KDI5JOYZ.js";import"./chunk-EH2S6AOR.js";import"./chunk-XNLIWQYE.js";import"./chunk-CFWGGRE7.js";export{a as WitnessKeyManager,c as _resetDefaultWitnessKeyManagerForTests,b as getDefaultWitnessKeyManager};
|
|
@@ -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.11");process.exit(0)}
|
|
2
|
+
import{b as $}from"./chunk-VWUZSNVC.js";import"./chunk-WCVCOT4E.js";import{a as k,b as W,c as b,g as C}from"./chunk-BZPE3LDO.js";import"./chunk-TCYSBC7Y.js";import{c as v}from"./chunk-JFLU7L3W.js";import"./chunk-IW6WDGHM.js";import"./chunk-DDEOZPWJ.js";import"./chunk-CFWGGRE7.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-VTDFBW7T.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-VTDFBW7T.js"),{writeOutput:c,toJSON:l}=await import("./ci-output-PEQQQWVD.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.11");process.exit(0)}
|
|
2
|
+
import{a,b,d as c,e as d}from"./chunk-T5KHJ3J7.js";import"./chunk-BTVWA35P.js";import"./chunk-LD5CFK53.js";import"./chunk-XGPTZUKQ.js";import"./chunk-JFLU7L3W.js";import"./chunk-WM3SRRA6.js";import"./chunk-XGBU3KEM.js";import"./chunk-G2IJFNZS.js";import"./chunk-M5XYIQYZ.js";import"./chunk-NQZNMCZU.js";import"./chunk-5N25I53C.js";import"./chunk-OYJC3YON.js";import"./chunk-EJPK7OTR.js";import"./chunk-7R5HC56U.js";import"./chunk-IW6WDGHM.js";import"./chunk-QDESWOZP.js";import"./chunk-IO5537OM.js";import"./chunk-FZHSG75I.js";import"./chunk-VO3DRK4P.js";import"./chunk-HJ3XNTTJ.js";import"./chunk-76SNL7GU.js";import"./chunk-EH2S6AOR.js";import"./chunk-XNLIWQYE.js";import"./chunk-4MUBW4RT.js";import"./chunk-DDEOZPWJ.js";import"./chunk-XJKZ7FTR.js";import"./chunk-CFWGGRE7.js";export{b as DEFAULT_WORKFLOW_CONFIG,a as WorkflowEvents,c as WorkflowOrchestrator,d as createWorkflowOrchestrator};
|
|
@@ -1,2 +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.
|
|
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-
|
|
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.11");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-VEEYL2CZ.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-JUMICXM6.js";import"./chunk-LD5CFK53.js";import"./chunk-XGPTZUKQ.js";import"./chunk-JFLU7L3W.js";import"./chunk-WM3SRRA6.js";import"./chunk-XGBU3KEM.js";import"./chunk-G2IJFNZS.js";import"./chunk-M5XYIQYZ.js";import"./chunk-NQZNMCZU.js";import"./chunk-5N25I53C.js";import"./chunk-OYJC3YON.js";import"./chunk-EJPK7OTR.js";import"./chunk-QDESWOZP.js";import"./chunk-IO5537OM.js";import"./chunk-FZHSG75I.js";import"./chunk-VO3DRK4P.js";import"./chunk-HJ3XNTTJ.js";import"./chunk-76SNL7GU.js";import"./chunk-EH2S6AOR.js";import"./chunk-XNLIWQYE.js";import"./chunk-4MUBW4RT.js";import"./chunk-DDEOZPWJ.js";import"./chunk-XJKZ7FTR.js";import"./chunk-CFWGGRE7.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};
|
|
@@ -307,7 +307,10 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
|
|
|
307
307
|
return { id: op.id, success: false, result: undefined };
|
|
308
308
|
}
|
|
309
309
|
}));
|
|
310
|
-
|
|
310
|
+
// #1168: a completed agent is not a passed check, so the completion
|
|
311
|
+
// line only says "successfully" when the verdict passes.
|
|
312
|
+
const verdictPassed = reportFleetVerdict(operation, results, () => { });
|
|
313
|
+
progress.stop({ verdictFailed: !verdictPassed });
|
|
311
314
|
const successful = results.filter(r => r.success).length;
|
|
312
315
|
const failed = results.filter(r => !r.success).length;
|
|
313
316
|
console.log(chalk.blue('\n Operation Summary:'));
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
*/
|
|
18
18
|
import * as fs from 'fs';
|
|
19
19
|
import * as path from 'path';
|
|
20
|
+
import { createSafeRecord, getOwn, setOwn } from '../../../shared/utils/safe-record.js';
|
|
20
21
|
export class ToolLoopGuardrail {
|
|
21
22
|
statePath;
|
|
22
23
|
warnThreshold;
|
|
@@ -46,7 +47,7 @@ export class ToolLoopGuardrail {
|
|
|
46
47
|
if (!sig) {
|
|
47
48
|
return { verdict: 'allow', consecutiveFailures: 0, halfOpen: false };
|
|
48
49
|
}
|
|
49
|
-
const entry = this.readState()
|
|
50
|
+
const entry = getOwn(this.readState(), sig);
|
|
50
51
|
if (!entry || entry.consecutiveFailures < this.warnThreshold) {
|
|
51
52
|
return { verdict: 'allow', consecutiveFailures: entry?.consecutiveFailures ?? 0, halfOpen: false };
|
|
52
53
|
}
|
|
@@ -89,16 +90,16 @@ export class ToolLoopGuardrail {
|
|
|
89
90
|
try {
|
|
90
91
|
const state = this.readState();
|
|
91
92
|
if (success) {
|
|
92
|
-
if (state
|
|
93
|
+
if (getOwn(state, sig)) {
|
|
93
94
|
delete state[sig];
|
|
94
95
|
this.writeState(state, now);
|
|
95
96
|
}
|
|
96
97
|
return;
|
|
97
98
|
}
|
|
98
|
-
const entry = state
|
|
99
|
+
const entry = getOwn(state, sig) ?? { consecutiveFailures: 0, lastFailureAt: now };
|
|
99
100
|
entry.consecutiveFailures += 1;
|
|
100
101
|
entry.lastFailureAt = now;
|
|
101
|
-
state
|
|
102
|
+
setOwn(state, sig, entry);
|
|
102
103
|
this.writeState(state, now);
|
|
103
104
|
}
|
|
104
105
|
catch {
|
|
@@ -113,10 +114,14 @@ export class ToolLoopGuardrail {
|
|
|
113
114
|
try {
|
|
114
115
|
const raw = fs.readFileSync(this.statePath, 'utf8');
|
|
115
116
|
const parsed = JSON.parse(raw);
|
|
116
|
-
|
|
117
|
+
// #1157: keys are command signatures (`__proto__` is a valid command
|
|
118
|
+
// string), so the state never inherits from Object.prototype.
|
|
119
|
+
return typeof parsed === 'object' && parsed !== null
|
|
120
|
+
? Object.assign(createSafeRecord(), parsed)
|
|
121
|
+
: createSafeRecord();
|
|
117
122
|
}
|
|
118
123
|
catch {
|
|
119
|
-
return
|
|
124
|
+
return createSafeRecord(); // missing or corrupt sidecar → clean slate
|
|
120
125
|
}
|
|
121
126
|
}
|
|
122
127
|
writeState(state, now) {
|
|
@@ -11,6 +11,7 @@ import { writeTestRunEvidence } from '../../domains/quality-assessment/quality-e
|
|
|
11
11
|
import { validateBehaviorExamples } from '../../domains/test-generation/services/behavior-example-validation.js';
|
|
12
12
|
import { findProjectRoot } from '../../kernel/project-root.js';
|
|
13
13
|
import { writeGeneratedTestFile } from '../utils/generated-test-writer.js';
|
|
14
|
+
import { DEFAULT_TEST_RETRY_COUNT } from '../../domains/test-execution/services/retry-outcome.js';
|
|
14
15
|
export function createTestCommand(context, cleanupAndExit, ensureInitialized) {
|
|
15
16
|
const testCmd = new Command('test')
|
|
16
17
|
.description('Test generation, execution, scheduling, and load testing')
|
|
@@ -179,7 +180,8 @@ export function createTestCommand(context, cleanupAndExit, ensureInitialized) {
|
|
|
179
180
|
testFiles,
|
|
180
181
|
framework: options.framework,
|
|
181
182
|
parallel: true,
|
|
182
|
-
|
|
183
|
+
// #1170: the same default as MCP test_execute_parallel.
|
|
184
|
+
retryCount: DEFAULT_TEST_RETRY_COUNT,
|
|
183
185
|
});
|
|
184
186
|
if (result.success && result.value) {
|
|
185
187
|
const run = result.value;
|
|
@@ -211,7 +213,8 @@ export function createTestCommand(context, cleanupAndExit, ensureInitialized) {
|
|
|
211
213
|
console.log(chalk.green(`Test run complete`));
|
|
212
214
|
console.log(`\n Results:`);
|
|
213
215
|
console.log(` Total: ${chalk.white(total)}`);
|
|
214
|
-
console.log(` Passed: ${chalk.green(run.passed)}`
|
|
216
|
+
console.log(` Passed: ${chalk.green(run.passed)}` +
|
|
217
|
+
(run.flaky ? ` (${chalk.yellow(run.flaky)} flaky: passed on a retry)` : ''));
|
|
215
218
|
console.log(` Failed: ${chalk.red(run.failed)}`);
|
|
216
219
|
console.log(` Skipped: ${chalk.yellow(run.skipped)}`);
|
|
217
220
|
console.log(` Duration: ${chalk.cyan(run.duration + 'ms')}`);
|
|
@@ -134,6 +134,18 @@ interface InitOptions {
|
|
|
134
134
|
statusline?: boolean;
|
|
135
135
|
modular?: boolean;
|
|
136
136
|
}
|
|
137
|
+
interface DisplayedInitStep {
|
|
138
|
+
step: string;
|
|
139
|
+
status: string;
|
|
140
|
+
message?: string;
|
|
141
|
+
durationMs: number;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Render init step results. A failed step's message is printed under it —
|
|
145
|
+
* previously only the step name was shown and the CLI then said "Check errors
|
|
146
|
+
* above" with no error anywhere on screen (#1173).
|
|
147
|
+
*/
|
|
148
|
+
export declare function formatInitStepLines(steps: readonly DisplayedInitStep[]): string[];
|
|
137
149
|
export declare function createInitHandler(cleanupAndExit: (code: number) => Promise<never>): InitHandler;
|
|
138
150
|
export {};
|
|
139
151
|
//# sourceMappingURL=init-handler.d.ts.map
|
|
@@ -245,12 +245,7 @@ export class InitHandler {
|
|
|
245
245
|
return;
|
|
246
246
|
}
|
|
247
247
|
// Display step results
|
|
248
|
-
|
|
249
|
-
const statusIcon = step.status === 'success' ? '*' : step.status === 'error' ? 'x' : '!';
|
|
250
|
-
const statusColor = step.status === 'success' ? chalk.green : step.status === 'error' ? chalk.red : chalk.yellow;
|
|
251
|
-
console.log(statusColor(` ${statusIcon} ${step.step} (${step.durationMs}ms)`));
|
|
252
|
-
}
|
|
253
|
-
console.log('');
|
|
248
|
+
printInitSteps(result.steps);
|
|
254
249
|
// Claude Flow integration (after base init)
|
|
255
250
|
let cfResult;
|
|
256
251
|
if (!options.skipClaudeFlow && (options.withClaudeFlow || result.success)) {
|
|
@@ -340,12 +335,7 @@ export class InitHandler {
|
|
|
340
335
|
console.log(chalk.white(' Analyzing project...\n'));
|
|
341
336
|
const result = await orchestrator.initialize();
|
|
342
337
|
// Display step results
|
|
343
|
-
|
|
344
|
-
const statusIcon = step.status === 'success' ? '*' : step.status === 'error' ? 'x' : '!';
|
|
345
|
-
const statusColor = step.status === 'success' ? chalk.green : step.status === 'error' ? chalk.red : chalk.yellow;
|
|
346
|
-
console.log(statusColor(` ${statusIcon} ${step.step} (${step.durationMs}ms)`));
|
|
347
|
-
}
|
|
348
|
-
console.log('');
|
|
338
|
+
printInitSteps(result.steps);
|
|
349
339
|
if (result.success) {
|
|
350
340
|
console.log(chalk.green(' AQE v3 initialized successfully!\n'));
|
|
351
341
|
// Show summary
|
|
@@ -548,6 +538,31 @@ function isPeerInstalled(pkg) {
|
|
|
548
538
|
return code === 'ERR_PACKAGE_PATH_NOT_EXPORTED';
|
|
549
539
|
}
|
|
550
540
|
}
|
|
541
|
+
/**
|
|
542
|
+
* Render init step results. A failed step's message is printed under it —
|
|
543
|
+
* previously only the step name was shown and the CLI then said "Check errors
|
|
544
|
+
* above" with no error anywhere on screen (#1173).
|
|
545
|
+
*/
|
|
546
|
+
export function formatInitStepLines(steps) {
|
|
547
|
+
const lines = [];
|
|
548
|
+
for (const step of steps) {
|
|
549
|
+
const statusIcon = step.status === 'success' ? '*' : step.status === 'error' ? 'x' : '!';
|
|
550
|
+
const statusColor = step.status === 'success' ? chalk.green : step.status === 'error' ? chalk.red : chalk.yellow;
|
|
551
|
+
lines.push(statusColor(` ${statusIcon} ${step.step} (${step.durationMs}ms)`));
|
|
552
|
+
if (step.status === 'error' && step.message) {
|
|
553
|
+
for (const line of step.message.split('\n')) {
|
|
554
|
+
lines.push(chalk.red(` ${line}`));
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
return lines;
|
|
559
|
+
}
|
|
560
|
+
function printInitSteps(steps) {
|
|
561
|
+
for (const line of formatInitStepLines(steps)) {
|
|
562
|
+
console.log(line);
|
|
563
|
+
}
|
|
564
|
+
console.log('');
|
|
565
|
+
}
|
|
551
566
|
function printOptionalPeerHints() {
|
|
552
567
|
const missing = OPTIONAL_PEERS.filter(({ pkg }) => !isPeerInstalled(pkg));
|
|
553
568
|
if (missing.length === 0)
|
|
@@ -76,6 +76,8 @@ export interface TestRunSummary {
|
|
|
76
76
|
unmatched?: boolean;
|
|
77
77
|
}>;
|
|
78
78
|
};
|
|
79
|
+
/** #1170: tests that failed and then passed on a retry; counted in `passed`. */
|
|
80
|
+
flaky?: number;
|
|
79
81
|
}
|
|
80
82
|
export interface CoverageResult {
|
|
81
83
|
/** `null` = the report never collected that metric (#995); not 0%. */
|
|
@@ -333,6 +333,8 @@ export function testRunToMarkdown(summary) {
|
|
|
333
333
|
md += `|--------|-------|\n`;
|
|
334
334
|
md += `| Total | ${total} |\n`;
|
|
335
335
|
md += `| Passed | ${summary.passed} |\n`;
|
|
336
|
+
if (summary.flaky)
|
|
337
|
+
md += `| Flaky (passed on a retry) | ${summary.flaky} |\n`;
|
|
336
338
|
md += `| Failed | ${summary.failed} |\n`;
|
|
337
339
|
md += `| Skipped | ${summary.skipped} |\n`;
|
|
338
340
|
md += `\n**Result:** ${summary.failed === 0 ? '\u2705 All tests passed' : '\u274C Some tests failed'}\n`;
|
|
@@ -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();
|
|
@@ -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,6 @@
|
|
|
4
4
|
* Extracted from task-executor.ts registerHandlers().
|
|
5
5
|
* Covers: index-code, predict-defects
|
|
6
6
|
*/
|
|
7
|
-
import * as fs from 'fs/promises';
|
|
8
7
|
import { randomUUID } from 'node:crypto';
|
|
9
8
|
import { prunePredictionHistory } from '../../domains/defect-intelligence/prediction-history.js';
|
|
10
9
|
import * as path from 'path';
|
|
@@ -15,6 +14,7 @@ import { resolveProjectRootFromPaths } from '../../domains/code-intelligence/pro
|
|
|
15
14
|
import { nothingIndexedError } from '../../domains/code-intelligence/index-path-guard.js';
|
|
16
15
|
import { createLogger } from '../../logging/logger-factory.js';
|
|
17
16
|
import { requirePayloadPath } from '../../shared/io/payload-path-guard.js';
|
|
17
|
+
import { readConfinedText } from '../../shared/io/confined-read.js';
|
|
18
18
|
const logger = createLogger('CodeIntelligenceHandlers');
|
|
19
19
|
async function collectProjectMetricsForTarget(ctx, targetPath, indexedFiles) {
|
|
20
20
|
if (!ctx.getCodeIntelligenceCoordinator)
|
|
@@ -177,7 +177,8 @@ export function registerCodeIntelligenceHandlers(ctx) {
|
|
|
177
177
|
let filesSkipped = 0;
|
|
178
178
|
for (const filePath of sourceFiles) {
|
|
179
179
|
try {
|
|
180
|
-
|
|
180
|
+
// #1161: validate the opened descriptor, not the name listed earlier.
|
|
181
|
+
const content = await readConfinedText(filePath, { outsideRoot: 'allow' });
|
|
181
182
|
const lines = content.split('\n');
|
|
182
183
|
const lineCount = lines.length;
|
|
183
184
|
// Calculate complexity indicators from real code
|
|
@@ -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);
|
|
@@ -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', () => { });
|