@qwen-code/qwen-code 0.19.7 → 0.19.8-nightly.20260711.0ef3a76bd
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/bundled/qc-helper/SKILL.md +1 -0
- package/bundled/qc-helper/docs/configuration/auth.md +40 -55
- package/bundled/qc-helper/docs/configuration/model-providers.md +224 -218
- package/bundled/qc-helper/docs/configuration/settings.md +60 -51
- package/bundled/qc-helper/docs/features/_meta.ts +1 -0
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +12 -2
- package/bundled/qc-helper/docs/features/channels/overview.md +86 -12
- package/bundled/qc-helper/docs/features/channels/plugins.md +1 -0
- package/bundled/qc-helper/docs/features/channels/wecom.md +6 -0
- package/bundled/qc-helper/docs/features/code-review.md +29 -5
- package/bundled/qc-helper/docs/features/commands.md +39 -38
- package/bundled/qc-helper/docs/features/computer-use.md +77 -0
- package/bundled/qc-helper/docs/features/hooks.md +36 -34
- package/bundled/qc-helper/docs/features/memory.md +1 -1
- package/bundled/qc-helper/docs/features/tool-use-summaries.md +19 -23
- package/bundled/qc-helper/docs/integration-vscode.md +2 -2
- package/bundled/qc-helper/docs/qwen-serve.md +40 -16
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
- package/bundled/review/DESIGN.md +93 -22
- package/bundled/review/SKILL.md +300 -87
- package/chunks/MaxSizedBox-4CX4IQWE.js +70 -0
- package/chunks/{StandaloneSessionPicker-APISIRJZ.js → StandaloneSessionPicker-TYUSSNJ6.js} +79 -77
- package/chunks/{acpAgent-MMOSC2YA.js → acpAgent-5HJEXOPR.js} +978 -205
- package/chunks/agent-PZF5IUUB.js +68 -0
- package/chunks/agent-headless-L4N7V2SG.js +62 -0
- package/chunks/{anthropicContentGenerator-AKYPSZIV.js → anthropicContentGenerator-L73TO3DB.js} +214 -31
- package/chunks/{artifact-tool-D233YJFH.js → artifact-tool-U7IRTLIV.js} +5 -5
- package/chunks/{askUserQuestion-MKL5ZTMC.js → askUserQuestion-2DLUUZZG.js} +6 -6
- package/chunks/bridge-OJL6LD42.js +78 -0
- package/chunks/{ca-HCMB2I54.js → ca-WTQOU43B.js} +91 -6
- package/chunks/{channel-worker-supervisor-CRCVYQIE.js → channel-worker-supervisor-LF66HCVT.js} +137 -13
- package/chunks/{chunk-QQDPRDVW.js → chunk-2HRYPZT5.js} +1 -1
- package/chunks/{chunk-JD33UY7E.js → chunk-2K56LTWA.js} +18 -12
- package/chunks/{chunk-XISQIIT7.js → chunk-2LV4JUNO.js} +4 -4
- package/chunks/chunk-2UU6DW5P.js +296 -0
- package/chunks/{chunk-2PSWA5ID.js → chunk-2X56YUSZ.js} +1 -1
- package/chunks/chunk-2ZQOQZIS.js +71 -0
- package/chunks/{chunk-Q6OEPOOC.js → chunk-3AMVHPEQ.js} +2 -2
- package/chunks/{chunk-4RQIB5UZ.js → chunk-3BTRNWWD.js} +1 -35
- package/chunks/{chunk-SD4N3QJ2.js → chunk-3QZ6GY6A.js} +66 -22
- package/chunks/{chunk-DNV4FSN5.js → chunk-3SJSQXNS.js} +24 -7
- package/chunks/{chunk-VQWAZSXN.js → chunk-3XATDZNP.js} +64 -42
- package/chunks/{chunk-LEIJKM7Q.js → chunk-3ZAIGBCP.js} +2 -2
- package/chunks/{chunk-2NPS2UDH.js → chunk-43JB7OF4.js} +905 -139
- package/chunks/chunk-43XJTCHT.js +444 -0
- package/chunks/{chunk-CNSF3WO5.js → chunk-47HXCVGG.js} +6 -6
- package/chunks/{chunk-VEB3NYSO.js → chunk-4GORAUCN.js} +8 -3
- package/chunks/{chunk-55ZMG67I.js → chunk-4LD5APFL.js} +4 -4
- package/chunks/{chunk-TLWA7TPR.js → chunk-4QLQE5WJ.js} +2 -2
- package/chunks/{chunk-UIDXQNMV.js → chunk-4WGODMVR.js} +1 -1
- package/chunks/{chunk-E6US47KI.js → chunk-4WKAA4KS.js} +1 -1
- package/chunks/{chunk-H6EMK6QK.js → chunk-4ZVWQHEQ.js} +11913 -5207
- package/chunks/{chunk-HW4N45EE.js → chunk-524RQP4Q.js} +29 -8
- package/chunks/{chunk-3GONHQOA.js → chunk-57OAHC2Y.js} +1 -1
- package/chunks/{chunk-B4U2M63D.js → chunk-5DOUQHL3.js} +2104 -14
- package/chunks/{chunk-JZSY4WP3.js → chunk-5DTTYNB7.js} +1 -1
- package/chunks/{chunk-A4BMJM77.js → chunk-5O2XNYP6.js} +1 -0
- package/chunks/{chunk-P7I3D7FM.js → chunk-5OIXALQ5.js} +2 -2
- package/chunks/chunk-5SFOMFG4.js +61 -0
- package/chunks/{chunk-QYNNN7BK.js → chunk-5XUCZNSY.js} +2 -2
- package/chunks/{chunk-FRFFNYUY.js → chunk-65F3I3PM.js} +5 -5
- package/chunks/{chunk-GO6LNQXT.js → chunk-6AM5D4ME.js} +1 -1
- package/chunks/{chunk-BWVQN2HV.js → chunk-6CR73ZIK.js} +7 -7
- package/chunks/{chunk-BJBWRCSK.js → chunk-6H67XLET.js} +1 -1
- package/chunks/{chunk-G7ZG7CA6.js → chunk-6RLROE6G.js} +9 -8
- package/chunks/{chunk-TBAZMRW3.js → chunk-6WH2WCSW.js} +2 -2
- package/chunks/{chunk-ZERZSAZL.js → chunk-75DOP5OR.js} +2 -2
- package/chunks/{chunk-FTFXDZYI.js → chunk-7KZNLIAI.js} +47 -31
- package/chunks/{chunk-HJ3GX3Y3.js → chunk-7PW5CTVR.js} +32 -18
- package/chunks/{chunk-NQKLOAVJ.js → chunk-7R3CZA3Q.js} +2 -2
- package/chunks/{chunk-SAIILPQ3.js → chunk-7X7TEQNX.js} +5 -3
- package/chunks/{chunk-IRJWHZWU.js → chunk-A4UCTEB5.js} +2 -2
- package/chunks/{chunk-XSAFNANZ.js → chunk-AHUEU3BP.js} +14 -14
- package/chunks/{chunk-X3YGAX7V.js → chunk-B5ORX3FG.js} +4 -2
- package/chunks/{chunk-ZN5T4BHI.js → chunk-BPZALHVR.js} +2 -2
- package/chunks/{chunk-IJRL2S3D.js → chunk-BZIFY5TF.js} +6 -6
- package/chunks/{chunk-AJBEAUIS.js → chunk-BZP7HZTK.js} +7 -6
- package/chunks/{chunk-OFEVLU4C.js → chunk-CARU2RR2.js} +1 -1
- package/chunks/{chunk-MIG5SQNL.js → chunk-CBKR4Q5K.js} +8 -8
- package/chunks/chunk-CC2ITGCF.js +176 -0
- package/chunks/{chunk-FV7425LN.js → chunk-CEA3E3JB.js} +18 -5
- package/chunks/{chunk-GD236YPV.js → chunk-CNOF2IZT.js} +3 -3
- package/chunks/chunk-COH43MRJ.js +34 -0
- package/chunks/{chunk-E5A7LHNN.js → chunk-CPBF7KYF.js} +1 -1
- package/chunks/{chunk-UWCTAVOD.js → chunk-CR3C7WXL.js} +1 -1
- package/chunks/{chunk-5P5XGNYH.js → chunk-CU3L64TP.js} +1 -1
- package/chunks/{chunk-IWKSG2AR.js → chunk-CXAOG665.js} +1 -1
- package/chunks/{chunk-MZ7BABX3.js → chunk-DC5Z3DU6.js} +2 -2
- package/chunks/{chunk-64WXLC72.js → chunk-DJ2GSRLV.js} +1 -1
- package/chunks/{chunk-4ZJIPVPB.js → chunk-DMN532MJ.js} +11 -11
- package/chunks/{chunk-QN5NZ3UQ.js → chunk-DMTGGOSA.js} +2 -2
- package/chunks/{chunk-KHDZHZMH.js → chunk-E5Z2AVNV.js} +1 -1
- package/chunks/chunk-F4PFZ7WP.js +239 -0
- package/chunks/{chunk-ME3YSROJ.js → chunk-FBSBT7JS.js} +25 -13
- package/chunks/{chunk-5IFG2VC4.js → chunk-FCMNKVXT.js} +1 -1
- package/chunks/{chunk-YDSYD7UI.js → chunk-FD3DA3B4.js} +3 -3
- package/chunks/{chunk-GL5TV7B5.js → chunk-GL22M2DU.js} +23 -7
- package/chunks/{chunk-AFOLR6YL.js → chunk-GQ4ZEYMI.js} +102 -16
- package/chunks/chunk-GRC5HGPI.js +13 -0
- package/chunks/{chunk-WMPVYQ4P.js → chunk-GWHYEOV2.js} +2 -2
- package/chunks/chunk-GZRTYZ2R.js +292 -0
- package/chunks/{chunk-A2X3KLC3.js → chunk-GZXCZHCT.js} +3 -3
- package/chunks/{chunk-K5PGHDBN.js → chunk-H6XPXXMH.js} +1 -1
- package/chunks/{chunk-24XYI5EI.js → chunk-HACY3IUM.js} +6 -6
- package/chunks/{chunk-DGHJTO2K.js → chunk-HIHQ3TWC.js} +38 -9
- package/chunks/{chunk-KYMBIKIW.js → chunk-HTHUX2T5.js} +1 -1
- package/chunks/{chunk-LQ7TMOCE.js → chunk-HTO4JFDZ.js} +1 -1
- package/chunks/{chunk-B34OV7K2.js → chunk-IAVB3HM3.js} +15 -2
- package/chunks/{chunk-4UCTWSTP.js → chunk-IDJEZU7C.js} +2 -2
- package/chunks/chunk-IEBIKN6A.js +38 -0
- package/chunks/{chunk-PRDFOIZF.js → chunk-IJEO2QSK.js} +73 -30
- package/chunks/{chunk-MJI36HER.js → chunk-IT6LIIVK.js} +2 -2
- package/chunks/{chunk-FEJ2FZ3U.js → chunk-J3JA76CF.js} +2 -2
- package/chunks/{chunk-4CGOWHKM.js → chunk-J4MOFEOK.js} +2 -2
- package/chunks/{chunk-22MNNNXE.js → chunk-J4TSQ5EQ.js} +3 -2
- package/chunks/{chunk-22IFUCVR.js → chunk-JESCGQM3.js} +1 -1
- package/chunks/{chunk-CCGOFQV3.js → chunk-JSG7ZSBC.js} +8 -7
- package/chunks/{chunk-X265R5C6.js → chunk-K434OPES.js} +5 -5
- package/chunks/{chunk-RFIL6REB.js → chunk-KHUQZZJ6.js} +185 -45
- package/chunks/{chunk-X2XNQQJI.js → chunk-KKNMOEZH.js} +4 -4
- package/chunks/{chunk-6BN7NZ5Z.js → chunk-KL23O5Z5.js} +7 -9
- package/chunks/{chunk-MRO43B25.js → chunk-KW7NOTN6.js} +1 -1
- package/chunks/{chunk-6IAWPIQ6.js → chunk-L36P3NBD.js} +3 -3
- package/chunks/{chunk-54YZOP7P.js → chunk-L573Z2QZ.js} +11894 -5190
- package/chunks/{chunk-STAZRKOT.js → chunk-L6GPKRH7.js} +132 -464
- package/chunks/{chunk-QAKFYMJI.js → chunk-LD5OWZ5E.js} +155 -19
- package/chunks/{chunk-E7KNELIZ.js → chunk-LK7KUE55.js} +2 -2
- package/chunks/{chunk-W7EEOR7D.js → chunk-LUODI7WD.js} +5 -5
- package/chunks/{chunk-CSOTA7KX.js → chunk-LXNEJD34.js} +2 -2
- package/chunks/{chunk-HLKG6CZN.js → chunk-M5GB774H.js} +1 -1
- package/chunks/{chunk-3B26UVCX.js → chunk-MC23XKFE.js} +39 -10
- package/chunks/{chunk-XPJH4PKR.js → chunk-MPEMTBUZ.js} +2 -2
- package/chunks/{chunk-GMOWQOQQ.js → chunk-MUCWGT7O.js} +248 -55
- package/chunks/{chunk-PC4ZXHU2.js → chunk-MXL5UP4X.js} +3 -3
- package/chunks/{chunk-PUQLHSQ2.js → chunk-N2FGNKOE.js} +10 -12
- package/chunks/{chunk-332PWN27.js → chunk-NHDKSOEY.js} +1 -1
- package/chunks/{chunk-65CFHNSE.js → chunk-NKHV3OHY.js} +62 -62
- package/chunks/{chunk-P7M4GA57.js → chunk-OCPBI7J5.js} +1 -1
- package/chunks/{chunk-42XGFRJS.js → chunk-ORBGV7NJ.js} +5 -5
- package/chunks/{chunk-ALZ75L2X.js → chunk-OZJLTZKP.js} +415 -379
- package/chunks/chunk-P3X7RYUQ.js +468 -0
- package/chunks/{chunk-AGHU5VRK.js → chunk-PZL23GTM.js} +1 -1
- package/chunks/{chunk-FXGLL2HL.js → chunk-Q7YDKOGY.js} +1 -1
- package/chunks/{chunk-LGFAYIKX.js → chunk-QHTIBUWB.js} +1 -1
- package/chunks/{chunk-AIY5UTFI.js → chunk-QK2JET6S.js} +934 -2881
- package/chunks/{chunk-P3MYAZBY.js → chunk-QMGX2KO2.js} +1 -1
- package/chunks/{chunk-QZF5U5KA.js → chunk-QNTUV3PP.js} +11 -11
- package/chunks/chunk-QRUIS3DN.js +47 -0
- package/chunks/{chunk-ITOGNELQ.js → chunk-QSWDGAIC.js} +2 -2
- package/chunks/{chunk-7JGISHHZ.js → chunk-QUJIDGIW.js} +15 -157
- package/chunks/{chunk-GHOTR7HL.js → chunk-QUPXZXLV.js} +1 -1
- package/chunks/{chunk-TDGF35EN.js → chunk-QYMQSECS.js} +3 -3
- package/chunks/{chunk-QYUE6W3T.js → chunk-RDJSGHZE.js} +1 -1
- package/chunks/{chunk-TLRYABYP.js → chunk-RKUWKYED.js} +1 -1
- package/chunks/{chunk-ADZG46HR.js → chunk-RRNR5U2U.js} +2 -2
- package/chunks/{chunk-4O344UEE.js → chunk-RW7CXRUM.js} +39 -19
- package/chunks/{chunk-RNBYOUGV.js → chunk-RXFQM6FQ.js} +1 -1
- package/chunks/{chunk-QXPI7FEC.js → chunk-S3TWXGKA.js} +4 -4
- package/chunks/{chunk-44NROQYV.js → chunk-SJHDYNHF.js} +4 -4
- package/chunks/{chunk-MLZQVCF3.js → chunk-SZRN75WQ.js} +1 -1
- package/chunks/{chunk-7RYW5LQV.js → chunk-T2NCM2ET.js} +2 -2
- package/chunks/{chunk-Z2Z3GUXZ.js → chunk-TB6UDU4T.js} +1 -1
- package/chunks/{chunk-SUAKHHK7.js → chunk-TDEXZKMT.js} +3 -3
- package/chunks/{chunk-EXPMGZZV.js → chunk-TEGEBB2I.js} +1 -1
- package/chunks/{chunk-JF7DFPQ5.js → chunk-TJCEUA3S.js} +15 -3
- package/chunks/{chunk-MX2YXRER.js → chunk-TJTKSVIV.js} +1 -1
- package/chunks/{chunk-H6BD2ELD.js → chunk-TYAMGABM.js} +2 -2
- package/chunks/{chunk-CISB3IQF.js → chunk-U3VSCGEJ.js} +100 -15
- package/chunks/{chunk-VRDMOSQS.js → chunk-UDXSXLER.js} +2 -2
- package/chunks/{chunk-AHNJGLFV.js → chunk-UOZWKTQG.js} +3 -3
- package/chunks/{chunk-CJCKDMWO.js → chunk-URK542T4.js} +1 -1
- package/chunks/{chunk-YEGT55NW.js → chunk-UUVCHN62.js} +5697 -2983
- package/chunks/{chunk-AHNXYU4O.js → chunk-V6WHFGST.js} +1 -1
- package/chunks/{chunk-U4FRHCLA.js → chunk-VAUPLGDZ.js} +2370 -364
- package/chunks/{chunk-ZTQ26VBE.js → chunk-VDDGDZMA.js} +1 -1
- package/chunks/{chunk-OMX7CUOE.js → chunk-VGC4I5JJ.js} +1 -1
- package/chunks/{chunk-IUE7YWC3.js → chunk-VIUKEWUL.js} +8 -8
- package/chunks/{chunk-43W4YSO6.js → chunk-VJNBRRZG.js} +2 -2
- package/chunks/{chunk-I4A4K72C.js → chunk-VL7GBUQA.js} +1309 -703
- package/chunks/{chunk-VZ7HY3YU.js → chunk-W2UIXQDL.js} +3 -3
- package/chunks/{chunk-ER3BKOLB.js → chunk-W7FJ3N32.js} +1 -1
- package/chunks/{chunk-3HX5LZ6R.js → chunk-WBL3FJEU.js} +2 -2
- package/chunks/{chunk-RYFZCUJO.js → chunk-WCUK2QXK.js} +17 -9
- package/chunks/{chunk-OWVIH4HY.js → chunk-WFHJDT4S.js} +421 -114
- package/chunks/{chunk-BMFMJINR.js → chunk-WL4L7EZH.js} +1 -1
- package/chunks/{chunk-NZEGNV4V.js → chunk-WPHYXKFL.js} +8 -51
- package/chunks/chunk-X4NKFGFJ.js +81 -0
- package/chunks/{chunk-3RW4AZJV.js → chunk-XFSFZCM5.js} +1 -1
- package/chunks/{chunk-2MPVVENX.js → chunk-XU457J4V.js} +2 -2
- package/chunks/{chunk-SIUQ3YYX.js → chunk-XVNQMZ2I.js} +1 -1
- package/chunks/{chunk-SYCJMSIJ.js → chunk-XWRJCPHC.js} +1 -1
- package/chunks/chunk-YAF2MQZ6.js +19 -0
- package/chunks/chunk-YF4RZPJP.js +168 -0
- package/chunks/{chunk-4KJ2BPIT.js → chunk-YLV3XXFB.js} +4 -40
- package/chunks/{chunk-BR4QREVK.js → chunk-YQ3U5MUC.js} +1 -1
- package/chunks/{chunk-Y6Z2O3WR.js → chunk-YUZI3WAC.js} +1 -1
- package/chunks/{chunk-II73RK2S.js → chunk-YVEDCAUE.js} +1 -1
- package/chunks/{chunk-SKAZWEV5.js → chunk-ZJE7NSL3.js} +1 -1
- package/chunks/{chunk-7LTB54MK.js → chunk-ZLXQN2QS.js} +2 -2
- package/chunks/cli-entry-path-4VJ3Y6T2.js +10 -0
- package/chunks/{computer-use-X4KUU3NM.js → computer-use-2ZTYDNN4.js} +50 -50
- package/chunks/config-utils-ZITWCFBY.js +23 -0
- package/chunks/contextCommand-6L4XCZZT.js +68 -0
- package/chunks/create-sub-session-INX7TXJI.js +207 -0
- package/chunks/create-sub-session-VZIOFS6N.js +375 -0
- package/chunks/{cron-create-JSXEIPVS.js → cron-create-AMBKGZX6.js} +9 -9
- package/chunks/{cron-delete-OIFVEPGU.js → cron-delete-LRU4OJYG.js} +7 -7
- package/chunks/{cron-list-D4ZX4IOE.js → cron-list-WVP2JXER.js} +14 -10
- package/chunks/{daemon-F3I2RXP6.js → daemon-QEDXW7ER.js} +554 -4
- package/chunks/daemon-status-provider-7XJZ3HPS.js +76 -0
- package/chunks/{de-PLLFDERI.js → de-XHBEYUMG.js} +91 -6
- package/chunks/{devtools-FM6GJPYG.js → devtools-4QFYJT6U.js} +3 -3
- package/chunks/{dist-573HNSVO.js → dist-EFXT7A3G.js} +12 -11
- package/chunks/{dist-PKFTNUHO.js → dist-KCRX7TGL.js} +529 -79
- package/chunks/{dist-OT7G2WNM.js → dist-MFEAEUV4.js} +1011 -197
- package/chunks/{dist-63IS3ZMI.js → dist-PZV5RKM6.js} +4 -4
- package/chunks/{dist-FQ5WRJPL.js → dist-QY3THJM5.js} +5 -5
- package/chunks/{dist-IMFFBMAT.js → dist-UJOR6KEQ.js} +32 -15
- package/chunks/{dist-YTRKAVUB.js → dist-ZWZB4CCN.js} +10 -10
- package/chunks/earlyInputCapture-TTWXFIWO.js +69 -0
- package/chunks/{edit-WZTZDGCI.js → edit-6UWFRZKY.js} +51 -51
- package/chunks/{en-GA2RMXY5.js → en-TKHUFIK7.js} +100 -6
- package/chunks/{enter-worktree-DEPXBJEL.js → enter-worktree-LS7SGAII.js} +50 -50
- package/chunks/{enterPlanMode-JFGXZHHJ.js → enterPlanMode-TSZYLEEP.js} +66 -51
- package/chunks/environment-XCVLHOXG.js +88 -0
- package/chunks/errors-KIANLUTC.js +75 -0
- package/chunks/{exit-worktree-Y7XBK3VV.js → exit-worktree-2QV6UJSW.js} +50 -50
- package/chunks/{exitPlanMode-WQQER65F.js → exitPlanMode-GVZG3F6S.js} +51 -51
- package/chunks/{fast-path-W2U6XDNO.js → fast-path-GNFZAMQK.js} +16 -7
- package/chunks/{fast-path-settings-RCRXH2JG.js → fast-path-settings-5QZE64HR.js} +6 -5
- package/chunks/{fileFromPath-IBEHA3CO.js → fileFromPath-UDALK7FM.js} +3 -3
- package/chunks/{fr-GWNQG4XH.js → fr-TBF6JZNE.js} +91 -6
- package/chunks/{gemini-T4WX6SRW.js → gemini-N3H6OLHR.js} +501 -197
- package/chunks/{geminiContentGenerator-MKQACXEJ.js → geminiContentGenerator-4C257R2N.js} +9 -9
- package/chunks/{getMachineId-bsd-4CASPIU4.js → getMachineId-bsd-EXV7SWPA.js} +3 -3
- package/chunks/{getMachineId-darwin-HPQPEMZR.js → getMachineId-darwin-IUOMFXU3.js} +3 -3
- package/chunks/{getMachineId-linux-AUARKYHL.js → getMachineId-linux-K7XJYFHL.js} +2 -2
- package/chunks/{getMachineId-unsupported-S32ZDA2T.js → getMachineId-unsupported-EA5FDRJ6.js} +2 -2
- package/chunks/{getMachineId-win-4EFLHYIJ.js → getMachineId-win-KBA6RAI5.js} +3 -3
- package/chunks/{glob-4KKSHZDF.js → glob-QTUI5I3Y.js} +95 -74
- package/chunks/{grep-GHRYXSLZ.js → grep-Z5MGLRCG.js} +50 -50
- package/chunks/handleAutoUpdate-FFF3CZGP.js +69 -0
- package/chunks/i18n-QQAJT7A2.js +84 -0
- package/chunks/initializer-LGQGC7ZT.js +71 -0
- package/chunks/installationInfo-4FEZGXIN.js +65 -0
- package/chunks/{ja-2HOTA47X.js → ja-CDXUA2H3.js} +92 -7
- package/chunks/{keychain-token-storage-UJV5XP4Z.js → keychain-token-storage-VKUBNCP4.js} +4 -4
- package/chunks/{kittyProtocolDetector-OJRCJLIU.js → kittyProtocolDetector-HCNNKJTI.js} +2 -2
- package/chunks/list-KIVFF3BB.js +74 -0
- package/chunks/loadedSettingsAdapter-EOD3RVZS.js +68 -0
- package/chunks/{loop-wakeup-OHWEMFP5.js → loop-wakeup-WX7BLWWP.js} +10 -10
- package/chunks/{lowlight-FYAAUU5J.js → lowlight-J2OZNPCA.js} +1 -1
- package/chunks/{ls-L654WOAT.js → ls-ZB2BDP6T.js} +6 -6
- package/chunks/{lsp-M35KE54Y.js → lsp-V5DN4YUJ.js} +6 -8
- package/chunks/mcp-D2P46DB4.js +68 -0
- package/chunks/{monitor-464OY2UE.js → monitor-4ZWVOL6J.js} +50 -50
- package/chunks/{multipart-parser-AJ4WASWR.js → multipart-parser-AWZKXSQN.js} +3 -3
- package/chunks/nonInteractiveCli-NAHUR2X6.js +124 -0
- package/chunks/{notebook-edit-BLJYCNDO.js → notebook-edit-RCQ2D2IE.js} +51 -51
- package/chunks/openaiContentGenerator-U655T5QC.js +56 -0
- package/chunks/pidfile-O3OO2TCP.js +73 -0
- package/chunks/{pt-2THT3YHA.js → pt-6IR2VRQY.js} +91 -6
- package/chunks/{qwenContentGenerator-SUUHZ6CR.js → qwenContentGenerator-ABGWCRS6.js} +52 -52
- package/chunks/{qwenOAuth2-ZV7YLMND.js → qwenOAuth2-PJQ27GSO.js} +9 -9
- package/chunks/read-file-X7M4GUPY.js +30 -0
- package/chunks/{read-mcp-resource-CNQHBSJM.js → read-mcp-resource-SM5DA4RG.js} +5 -5
- package/chunks/{read-package-up-ER5OJUGP.js → read-package-up-TCM6I7S2.js} +2 -2
- package/chunks/{record-artifact-PP3LKHTS.js → record-artifact-4XKZX3UW.js} +7 -7
- package/chunks/ripGrep-KMPJJK5J.js +60 -0
- package/chunks/{ru-Z67YJHBG.js → ru-DBTHQA3F.js} +91 -6
- package/chunks/{run-qwen-serve-5OKADVLE.js → run-qwen-serve-O6CMPURG.js} +958 -184
- package/chunks/runtime-THE2YO27.js +94 -0
- package/chunks/{scheduler-ZRW3AIDU.js → scheduler-XXEA6EFC.js} +51 -51
- package/chunks/{send-message-OA6MV4EU.js → send-message-F36YD6KQ.js} +7 -7
- package/chunks/serve-W6F44JQQ.js +74 -0
- package/chunks/{server-M372UENX.js → server-SAEKMY52.js} +4340 -829
- package/chunks/{session-F5KSNP2N.js → session-4GGYGOWY.js} +162 -117
- package/chunks/settings-PYEU5HVD.js +118 -0
- package/chunks/shell-JGQECKTH.js +68 -0
- package/chunks/{skill-A2TL2NPC.js → skill-XPP3C2DS.js} +24 -24
- package/chunks/spawnChannel-62QKQBQN.js +70 -0
- package/chunks/{src-XKZMNHXS.js → src-2656Q6SN.js} +126 -52
- package/chunks/{src-7XL4G4DC.js → src-VLI3TKEY.js} +4 -4
- package/chunks/standalone-update-X7AZVG5R.js +79 -0
- package/chunks/{startInteractiveUI-REKSTOHU.js → startInteractiveUI-DXR4K6T5.js} +2277 -1834
- package/chunks/stdioHelpers-UMY72QRP.js +14 -0
- package/chunks/{syntheticOutput-F7LSDCAR.js → syntheticOutput-34H7LGA7.js} +5 -5
- package/chunks/task-create-FRGOEIKY.js +22 -0
- package/chunks/{task-list-TGGJX7EA.js → task-list-OW766BXZ.js} +10 -10
- package/chunks/{task-stop-W7NGTMYQ.js → task-stop-SIR5SNBN.js} +4 -4
- package/chunks/{task-update-5WUG5MVQ.js → task-update-YRA532MT.js} +12 -12
- package/chunks/{team-create-TBQVWAG7.js → team-create-3EHCUCKA.js} +50 -50
- package/chunks/{team-delete-UHQQ2QQX.js → team-delete-6OSECUZC.js} +10 -10
- package/chunks/{team-plan-approval-FZPGUSHJ.js → team-plan-approval-KZ7NZIMX.js} +50 -50
- package/chunks/theme-manager-J7ANV4JR.js +64 -0
- package/chunks/{todoWrite-C4ZAMSR3.js → todoWrite-YDMFEV4G.js} +6 -6
- package/chunks/{tool-search-FDQ3SLNJ.js → tool-search-2XLGWG4H.js} +24 -24
- package/chunks/total-session-admission-EQIHUOL6.js +72 -0
- package/chunks/trustedFolders-BEX5334Z.js +79 -0
- package/chunks/{types-QX5C3CHJ.js → types-JNKGKUJT.js} +2 -2
- package/chunks/updateCheck-NKPJGJCR.js +69 -0
- package/chunks/updateEventEmitter-5MKC7BLQ.js +10 -0
- package/chunks/validateNonInterActiveAuth-6DGGGE4A.js +190 -0
- package/chunks/{version-CEDD6ZZR.js → version-FRVWU5ZU.js} +3 -3
- package/chunks/{web-fetch-UYGMOHW4.js → web-fetch-PAAEQKBW.js} +8 -8
- package/chunks/{workflow-CQQ4J4I6.js → workflow-LWFMECLD.js} +51 -51
- package/chunks/workspace-providers-status-NE7QWEYS.js +71 -0
- package/chunks/workspace-registry-RCWAP57G.js +76 -0
- package/chunks/workspace-service-4QUMVGBX.js +80 -0
- package/chunks/workspace-skills-status-L34BYRSY.js +70 -0
- package/chunks/{write-file-VWGY7AJP.js → write-file-WXO4M5FN.js} +51 -51
- package/chunks/{yargs-B64EYTCF.js → yargs-6H2AUULL.js} +2 -2
- package/chunks/{zh-7XVVRTDH.js → zh-LJP47LX7.js} +101 -7
- package/chunks/{zh-TW-DPH554OG.js → zh-TW-5ISMO3VJ.js} +101 -7
- package/cli.js +18 -17
- package/locales/ca.js +117 -7
- package/locales/de.js +116 -7
- package/locales/en.js +133 -7
- package/locales/fr.js +117 -7
- package/locales/ja.js +119 -7
- package/locales/pt.js +116 -7
- package/locales/ru.js +116 -7
- package/locales/zh-TW.js +130 -7
- package/locales/zh.js +130 -7
- package/package.json +3 -6
- package/web-shell/assets/{arc-C7hjaa7g.js → arc-BRDEF7h6.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-pm9KtMZY.js → architectureDiagram-3BPJPVTR-Cxnk4Ygq.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-CApElKsU.js → blockDiagram-GPEHLZMM-BZrtayqw.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-BeDe0-9N.js → c4Diagram-AAUBKEIU-Djmbi1yB.js} +1 -1
- package/web-shell/assets/channel-C9zfQCn-.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-DJEkmLdl.js → chunk-2J33WTMH-Cdokj-0U.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-DXX8gdpe.js → chunk-4BX2VUAB-BI9Hx57o.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-DORmk1kQ.js → chunk-55IACEB6-Cb17cEzj.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-DWmO4mCZ.js → chunk-727SXJPM-DY1Fc0h_.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-C7LRaYw2.js → chunk-AQP2D5EJ-B10G71Hd.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-CCdXgyC5.js → chunk-FMBD7UC4-BP6OoB6Z.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-SyL_xvWc.js → chunk-ND2GUHAM-CWIIwUFC.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-BzOuCKxa.js → chunk-QZHKN3VN-DMrqCfGO.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-BVNaf5JM.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BVNaf5JM.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-BMPWyDKc.js → cose-bilkent-S5V4N54A-CF-mpkgI.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-B_GnPWik.js → dagre-BM42HDAG-DfsRFsg7.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-fJqMc3S_.js → diagram-2AECGRRQ-DBNwf6Dy.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-ximV3O9D.js → diagram-5GNKFQAL-CD1TqV1j.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-2vVyjzqw.js → diagram-KO2AKTUF-DkWlaLI2.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-Dckcx1sT.js → diagram-LMA3HP47-ClrAcxwF.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-BAVv47ga.js → diagram-OG6HWLK6-Dr6dnPLw.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-Bn3nf5J0.js → erDiagram-TEJ5UH35-Dm_vj18R.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-BIbGF9JT.js → flowDiagram-I6XJVG4X-lp3cMdZu.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-CDbhb3AH.js → ganttDiagram-6RSMTGT7-AtdCWZya.js} +3 -3
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CbKG1a_w.js → gitGraphDiagram-PVQCEYII-BARTJafF.js} +1 -1
- package/web-shell/assets/index-BkNgyfu7.js +3 -0
- package/web-shell/assets/index-CihmnZZR.js +784 -0
- package/web-shell/assets/index-zfdXhnwH.css +5 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-DUFxTy8m.js → infoDiagram-5YYISTIA-CxbJ54_f.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-D69hrBG8.js → ishikawaDiagram-YF4QCWOH-hFoO0HQA.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-DsvEw51Y.js → journeyDiagram-JHISSGLW-Bo6cKnLe.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-lFFjZEYd.js → kanban-definition-UN3LZRKU-DIFrH-XL.js} +1 -1
- package/web-shell/assets/{linear-Bo5bWzvo.js → linear-Bjv_GjDd.js} +1 -1
- package/web-shell/assets/{mermaid.core-C_HKMJx5.js → mermaid.core-C_OiqQEP.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-DlV-NUTs.js → mindmap-definition-RKZ34NQL-B79Gk8aB.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-B2e6FH2a.js → pieDiagram-4H26LBE5-B_P0gIHr.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-D75kSk-b.js → quadrantDiagram-W4KKPZXB-BC7F0ohb.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-CQ6xakhM.js → requirementDiagram-4Y6WPE33-BrA5_NSW.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-J_XTKrcY.js → sankeyDiagram-5OEKKPKP-Q2iqrNI_.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-D7jTcBtf.js → sequenceDiagram-3UESZ5HK-6vdIWz4H.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-CrlM_OT3.js → stateDiagram-AJRCARHV-DMzXNKcB.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BWFH0OCO.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-5oZi76Ef.js → timeline-definition-PNZ67QCA-BykEawmS.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-DO5YptPK.js → vennDiagram-CIIHVFJN-B24KD2X1.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-4t1eJDvM.js → wardley-L42UT6IY-C761G_tA.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-DKZc661S.js → wardleyDiagram-YWT4CUSO-CfwGJYqw.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-su9hp08G.js → xychartDiagram-2RQKCTM6-BDu5AZ2D.js} +1 -1
- package/web-shell/index.html +16 -4
- package/chunks/MaxSizedBox-XY5LIO5O.js +0 -71
- package/chunks/agent-TKIBLLQT.js +0 -68
- package/chunks/agent-headless-VLX4C7KX.js +0 -62
- package/chunks/bridge-BCU73DZO.js +0 -77
- package/chunks/chunk-6SHO7WFF.js +0 -79
- package/chunks/chunk-IFEWJXFS.js +0 -37
- package/chunks/chunk-S6RLAIUR.js +0 -23
- package/chunks/contextCommand-LAYJZF7H.js +0 -68
- package/chunks/daemon-status-provider-XSAFKVDS.js +0 -74
- package/chunks/earlyInputCapture-AERYYGXE.js +0 -69
- package/chunks/errors-GMZL4QV7.js +0 -75
- package/chunks/handleAutoUpdate-HN7ZOSXY.js +0 -65
- package/chunks/initializer-SRN3IM42.js +0 -69
- package/chunks/list-INTVXUPA.js +0 -71
- package/chunks/loadedSettingsAdapter-QVHHQPGM.js +0 -66
- package/chunks/mcp-7V4T46RG.js +0 -66
- package/chunks/nonInteractiveCli-LJEEODU2.js +0 -116
- package/chunks/openaiContentGenerator-PFF6HYB2.js +0 -56
- package/chunks/pidfile-LIBUENIV.js +0 -73
- package/chunks/read-file-L7TBQVX7.js +0 -30
- package/chunks/ripGrep-CKKX3GRB.js +0 -60
- package/chunks/serve-36WS32W6.js +0 -71
- package/chunks/settings-WFLNS3WT.js +0 -114
- package/chunks/shell-DEDSWN56.js +0 -68
- package/chunks/spawnChannel-RQHUWTCL.js +0 -70
- package/chunks/task-create-RPFZNB4B.js +0 -22
- package/chunks/theme-manager-DQZVNSOC.js +0 -64
- package/chunks/trustedFolders-Z475EIHL.js +0 -79
- package/chunks/updateCheck-E2ZX7RL7.js +0 -65
- package/chunks/validateNonInterActiveAuth-O4ECBHQL.js +0 -181
- package/chunks/workspace-providers-status-MVYXMYDG.js +0 -68
- package/chunks/workspace-service-OMBR6ZLG.js +0 -78
- package/chunks/workspace-skills-status-IMMQ7CAY.js +0 -68
- package/node_modules/@qwen-code/audio-capture/dist/index.d.ts +0 -35
- package/node_modules/@qwen-code/audio-capture/dist/index.js +0 -48
- package/node_modules/@qwen-code/audio-capture/dist/index.js.map +0 -1
- package/node_modules/@qwen-code/audio-capture/dist/platform.d.ts +0 -7
- package/node_modules/@qwen-code/audio-capture/dist/platform.js +0 -18
- package/node_modules/@qwen-code/audio-capture/dist/platform.js.map +0 -1
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/LICENSE +0 -21
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/README.md +0 -58
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/SECURITY.md +0 -5
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/bin.js +0 -84
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/build-test.js +0 -19
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/index.js +0 -6
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/node-gyp-build.js +0 -207
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/optional.js +0 -7
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/package.json +0 -43
- package/node_modules/@qwen-code/audio-capture/package.json +0 -30
- package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
- package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
- package/node_modules/@qwen-code/audio-capture/prebuilds/linux-arm64/@qwen-code+audio-capture.node +0 -0
- package/node_modules/@qwen-code/audio-capture/prebuilds/linux-x64/@qwen-code+audio-capture.node +0 -0
- package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
- package/web-shell/assets/channel-BNf1dW-j.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-uOIGlzgi.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-uOIGlzgi.js +0 -1
- package/web-shell/assets/index-CnE2ur2L.js +0 -779
- package/web-shell/assets/index-hSKXrlSE.css +0 -5
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-Bs4TK_84.js +0 -1
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
getExtensionManager
|
|
5
|
+
} from "./chunk-WPHYXKFL.js";
|
|
6
|
+
import {
|
|
7
|
+
getPlugin,
|
|
8
|
+
parseChannelConfig,
|
|
9
|
+
registerPlugin
|
|
10
|
+
} from "./chunk-43XJTCHT.js";
|
|
11
|
+
import {
|
|
12
|
+
loadSettings
|
|
13
|
+
} from "./chunk-L6GPKRH7.js";
|
|
14
|
+
import {
|
|
15
|
+
sanitizeLogText
|
|
16
|
+
} from "./chunk-43JB7OF4.js";
|
|
17
|
+
import {
|
|
18
|
+
writeStderrLine,
|
|
19
|
+
writeStdoutLine
|
|
20
|
+
} from "./chunk-YUZI3WAC.js";
|
|
21
|
+
import {
|
|
22
|
+
Storage
|
|
23
|
+
} from "./chunk-J4TSQ5EQ.js";
|
|
24
|
+
import {
|
|
25
|
+
init_esbuild_shims
|
|
26
|
+
} from "./chunk-5O2XNYP6.js";
|
|
27
|
+
import {
|
|
28
|
+
__name
|
|
29
|
+
} from "./chunk-J2S4EL5Y.js";
|
|
30
|
+
|
|
31
|
+
// packages/cli/src/commands/channel/runtime.ts
|
|
32
|
+
init_esbuild_shims();
|
|
33
|
+
import * as path from "node:path";
|
|
34
|
+
import { pathToFileURL } from "node:url";
|
|
35
|
+
function sessionsPath() {
|
|
36
|
+
return path.join(Storage.getGlobalQwenDir(), "channels", "sessions.json");
|
|
37
|
+
}
|
|
38
|
+
__name(sessionsPath, "sessionsPath");
|
|
39
|
+
function channelLoopPath() {
|
|
40
|
+
return path.join(Storage.getGlobalQwenDir(), "channels", "cron.json");
|
|
41
|
+
}
|
|
42
|
+
__name(channelLoopPath, "channelLoopPath");
|
|
43
|
+
function loadChannelsConfig(cwd = process.cwd(), settings = loadSettings(cwd)) {
|
|
44
|
+
const channels = settings.merged.channels;
|
|
45
|
+
return channels || {};
|
|
46
|
+
}
|
|
47
|
+
__name(loadChannelsConfig, "loadChannelsConfig");
|
|
48
|
+
function resolveExtensionChannelEntrySpecifier(extensionPath, entry) {
|
|
49
|
+
return pathToFileURL(path.join(extensionPath, entry)).href;
|
|
50
|
+
}
|
|
51
|
+
__name(resolveExtensionChannelEntrySpecifier, "resolveExtensionChannelEntrySpecifier");
|
|
52
|
+
async function loadChannelsFromExtensions() {
|
|
53
|
+
let loaded = 0;
|
|
54
|
+
try {
|
|
55
|
+
const extensionManager = await getExtensionManager();
|
|
56
|
+
const extensions = extensionManager.getLoadedExtensions().filter((e) => e.isActive && e.channels);
|
|
57
|
+
for (const ext of extensions) {
|
|
58
|
+
for (const [channelType, channelDef] of Object.entries(ext.channels)) {
|
|
59
|
+
if (await getPlugin(channelType)) {
|
|
60
|
+
writeStderrLine(
|
|
61
|
+
`[Extensions] Skipping channel "${channelType}" from "${ext.name}": type already registered`
|
|
62
|
+
);
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
const entrySpecifier = resolveExtensionChannelEntrySpecifier(
|
|
66
|
+
ext.path,
|
|
67
|
+
channelDef.entry
|
|
68
|
+
);
|
|
69
|
+
try {
|
|
70
|
+
const module = await import(entrySpecifier);
|
|
71
|
+
const plugin = module.plugin;
|
|
72
|
+
if (!plugin || typeof plugin.createChannel !== "function") {
|
|
73
|
+
writeStderrLine(
|
|
74
|
+
`[Extensions] "${ext.name}": channel entry point does not export a valid plugin object`
|
|
75
|
+
);
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
if (plugin.channelType !== channelType) {
|
|
79
|
+
writeStderrLine(
|
|
80
|
+
`[Extensions] "${ext.name}": channelType mismatch \u2014 manifest says "${channelType}", plugin says "${plugin.channelType}"`
|
|
81
|
+
);
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
registerPlugin(plugin);
|
|
85
|
+
loaded++;
|
|
86
|
+
writeStdoutLine(
|
|
87
|
+
`[Extensions] Loaded channel "${channelType}" from "${ext.name}"`
|
|
88
|
+
);
|
|
89
|
+
} catch (err) {
|
|
90
|
+
writeStderrLine(
|
|
91
|
+
`[Extensions] Failed to load channel "${channelType}" from "${ext.name}": ${err instanceof Error ? err.message : String(err)}`
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
} catch (err) {
|
|
97
|
+
writeStderrLine(
|
|
98
|
+
`[Extensions] Failed to load extensions: ${err instanceof Error ? err.message : String(err)}`
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
return loaded;
|
|
102
|
+
}
|
|
103
|
+
__name(loadChannelsFromExtensions, "loadChannelsFromExtensions");
|
|
104
|
+
async function createChannel(name, config, bridge, options) {
|
|
105
|
+
const channelPlugin = await getPlugin(config.type);
|
|
106
|
+
if (!channelPlugin) {
|
|
107
|
+
throw new Error(`Unknown channel type: "${config.type}".`);
|
|
108
|
+
}
|
|
109
|
+
return channelPlugin.createChannel(name, config, bridge, options);
|
|
110
|
+
}
|
|
111
|
+
__name(createChannel, "createChannel");
|
|
112
|
+
function selectFirstModel(parsed, bridgeLabel) {
|
|
113
|
+
const models = [
|
|
114
|
+
...new Set(
|
|
115
|
+
parsed.map((channel) => channel.config.model).filter((model) => Boolean(model))
|
|
116
|
+
)
|
|
117
|
+
];
|
|
118
|
+
if (models.length > 1) {
|
|
119
|
+
writeStderrLine(
|
|
120
|
+
`[Channel] Warning: Multiple models configured (${models.join(", ")}). ${bridgeLabel} will use "${models[0]}".`
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
return models[0];
|
|
124
|
+
}
|
|
125
|
+
__name(selectFirstModel, "selectFirstModel");
|
|
126
|
+
function registerToolCallDispatch(bridge, router, channels) {
|
|
127
|
+
bridge.on("toolCall", (event) => {
|
|
128
|
+
const target = router.getTarget(event.sessionId);
|
|
129
|
+
if (target) {
|
|
130
|
+
const channel = channels.get(target.channelName);
|
|
131
|
+
if (channel) {
|
|
132
|
+
channel.dispatchToolCall(event);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
__name(registerToolCallDispatch, "registerToolCallDispatch");
|
|
138
|
+
function cancelPermissionRequest(bridge, requestId) {
|
|
139
|
+
if (!bridge.respondToPermission) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
void bridge.respondToPermission(requestId, { outcome: { outcome: "cancelled" } }).catch((err) => {
|
|
143
|
+
writeStderrLine(
|
|
144
|
+
`[Channel] Permission cancellation failed for ${sanitizeLogText(requestId, 128)}: ${err instanceof Error ? sanitizeLogText(err.message, 512) : sanitizeLogText(String(err), 512)}`
|
|
145
|
+
);
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
__name(cancelPermissionRequest, "cancelPermissionRequest");
|
|
149
|
+
function registerPermissionRelay(bridge, router, channels) {
|
|
150
|
+
bridge.on("permissionRequest", (event) => {
|
|
151
|
+
const target = router.getTarget(event.sessionId);
|
|
152
|
+
if (!target) {
|
|
153
|
+
writeStderrLine(
|
|
154
|
+
`[Channel] No route for session ${sanitizeLogText(event.sessionId, 128)}; cancelling permission ${sanitizeLogText(event.requestId, 128)}`
|
|
155
|
+
);
|
|
156
|
+
cancelPermissionRequest(bridge, event.requestId);
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
const channel = channels.get(target.channelName);
|
|
160
|
+
if (!channel) {
|
|
161
|
+
writeStderrLine(
|
|
162
|
+
`[Channel] No channel "${sanitizeLogText(target.channelName, 64)}" for session ${sanitizeLogText(event.sessionId, 128)}; cancelling permission ${sanitizeLogText(event.requestId, 128)}`
|
|
163
|
+
);
|
|
164
|
+
cancelPermissionRequest(bridge, event.requestId);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
channel.dispatchPermissionRequest(event).catch((err) => {
|
|
168
|
+
writeStderrLine(
|
|
169
|
+
`[Channel] Permission relay failed for ${sanitizeLogText(event.requestId, 128)}: ${err instanceof Error ? sanitizeLogText(err.message, 512) : sanitizeLogText(String(err), 512)}`
|
|
170
|
+
);
|
|
171
|
+
cancelPermissionRequest(bridge, event.requestId);
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
bridge.on("permissionResolved", (event) => {
|
|
175
|
+
for (const channel of channels.values()) {
|
|
176
|
+
channel.dispatchPermissionResolved(event);
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
__name(registerPermissionRelay, "registerPermissionRelay");
|
|
181
|
+
function registerSessionCleanup(bridge, router, channels) {
|
|
182
|
+
bridge.on("sessionDied", (event) => {
|
|
183
|
+
const safeId = sanitizeLogText(event.sessionId, 128);
|
|
184
|
+
const safeReason = event.reason ? sanitizeLogText(event.reason, 512) : "";
|
|
185
|
+
writeStderrLine(
|
|
186
|
+
`[Channel] Session ${safeId} died${safeReason ? ` (${safeReason})` : ""}, removing routing state`
|
|
187
|
+
);
|
|
188
|
+
const target = router.getTarget(event.sessionId);
|
|
189
|
+
const channel = target ? channels.get(target.channelName) : void 0;
|
|
190
|
+
if (channel) {
|
|
191
|
+
channel.onSessionDied(event.sessionId);
|
|
192
|
+
} else {
|
|
193
|
+
router.removeSessionId(event.sessionId);
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
__name(registerSessionCleanup, "registerSessionCleanup");
|
|
198
|
+
async function parseConfiguredChannels(channelsConfig, selectedNames, opts = {}) {
|
|
199
|
+
const parsed = [];
|
|
200
|
+
for (const name of selectedNames) {
|
|
201
|
+
const rawConfig = channelsConfig[name];
|
|
202
|
+
if (!rawConfig || typeof rawConfig !== "object") {
|
|
203
|
+
throw new Error(
|
|
204
|
+
`Error in channel "${name}": channel is not configured. Add a "${name}" entry under "channels" in settings.json.`
|
|
205
|
+
);
|
|
206
|
+
}
|
|
207
|
+
try {
|
|
208
|
+
parsed.push({
|
|
209
|
+
name,
|
|
210
|
+
config: await parseChannelConfig(
|
|
211
|
+
name,
|
|
212
|
+
rawConfig,
|
|
213
|
+
opts.defaultCwd,
|
|
214
|
+
{ resolveEnvVars: "available" }
|
|
215
|
+
)
|
|
216
|
+
});
|
|
217
|
+
} catch (err) {
|
|
218
|
+
throw new Error(
|
|
219
|
+
`Error in channel "${name}": ${err instanceof Error ? err.message : String(err)}`
|
|
220
|
+
);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return parsed;
|
|
224
|
+
}
|
|
225
|
+
__name(parseConfiguredChannels, "parseConfiguredChannels");
|
|
226
|
+
|
|
227
|
+
export {
|
|
228
|
+
sessionsPath,
|
|
229
|
+
channelLoopPath,
|
|
230
|
+
loadChannelsConfig,
|
|
231
|
+
resolveExtensionChannelEntrySpecifier,
|
|
232
|
+
loadChannelsFromExtensions,
|
|
233
|
+
createChannel,
|
|
234
|
+
selectFirstModel,
|
|
235
|
+
registerToolCallDispatch,
|
|
236
|
+
registerPermissionRelay,
|
|
237
|
+
registerSessionCleanup,
|
|
238
|
+
parseConfiguredChannels
|
|
239
|
+
};
|
|
@@ -2,30 +2,33 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
HEADLESS_YOLO_NO_SANDBOX_WARNING
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-6H67XLET.js";
|
|
6
6
|
import {
|
|
7
|
-
|
|
8
|
-
} from "./chunk-
|
|
7
|
+
DEFAULT_RING_SIZE
|
|
8
|
+
} from "./chunk-6RLROE6G.js";
|
|
9
|
+
import {
|
|
10
|
+
DEFAULT_COMPACTED_REPLAY_MAX_BYTES
|
|
11
|
+
} from "./chunk-COH43MRJ.js";
|
|
9
12
|
import {
|
|
10
13
|
loadSettings
|
|
11
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-L6GPKRH7.js";
|
|
12
15
|
import {
|
|
13
|
-
|
|
14
|
-
} from "./chunk-
|
|
16
|
+
normalizeServeChannelSelection
|
|
17
|
+
} from "./chunk-TJTKSVIV.js";
|
|
15
18
|
import {
|
|
16
19
|
writeStderrLine
|
|
17
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-YUZI3WAC.js";
|
|
18
21
|
import {
|
|
19
22
|
MCP_BUDGET_WARN_FRACTION,
|
|
20
23
|
parsePositiveIntegerEnv
|
|
21
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-UUVCHN62.js";
|
|
22
25
|
import {
|
|
23
26
|
openBrowserSecurely,
|
|
24
27
|
shouldLaunchBrowser
|
|
25
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-JESCGQM3.js";
|
|
26
29
|
import {
|
|
27
30
|
init_esbuild_shims
|
|
28
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-5O2XNYP6.js";
|
|
29
32
|
import {
|
|
30
33
|
__name
|
|
31
34
|
} from "./chunk-J2S4EL5Y.js";
|
|
@@ -88,6 +91,9 @@ var serveCommand = {
|
|
|
88
91
|
type: "number",
|
|
89
92
|
default: 20,
|
|
90
93
|
description: "Cap on concurrent live sessions. New spawn requests beyond this return 503; attach to existing sessions still works. Set to 0 to disable."
|
|
94
|
+
}).option("max-total-sessions", {
|
|
95
|
+
type: "number",
|
|
96
|
+
description: "Non-negative integer cap on concurrent live sessions across all workspace runtimes. Set to 0 to disable."
|
|
91
97
|
}).option("max-pending-prompts-per-session", {
|
|
92
98
|
type: "number",
|
|
93
99
|
default: 5,
|
|
@@ -96,7 +102,7 @@ var serveCommand = {
|
|
|
96
102
|
type: "string",
|
|
97
103
|
array: true,
|
|
98
104
|
requiresArg: true,
|
|
99
|
-
description: "Absolute workspace path this daemon binds to. POST /session requests with a mismatched cwd return 400 workspace_mismatch. Defaults to process.cwd() when omitted.
|
|
105
|
+
description: "Absolute workspace path this daemon binds to. POST /session requests with a mismatched cwd return 400 workspace_mismatch. Defaults to process.cwd() when omitted. Repeat for sessions-only multi-workspace mode; legacy workspace APIs remain primary-workspace only."
|
|
100
106
|
}).option("max-connections", {
|
|
101
107
|
type: "number",
|
|
102
108
|
default: 256,
|
|
@@ -139,10 +145,14 @@ var serveCommand = {
|
|
|
139
145
|
// one place rather than drifting between CLI and bus.
|
|
140
146
|
default: DEFAULT_RING_SIZE,
|
|
141
147
|
description: "Per-session SSE replay ring depth. Sets the replay backlog available to `GET /session/:id/events` reconnects that send a `Last-Event-ID: N` header. Larger = more reconnect headroom at the cost of a few hundred KB extra RAM per session. Must be a positive finite integer."
|
|
148
|
+
}).option("compacted-replay-max-bytes", {
|
|
149
|
+
type: "number",
|
|
150
|
+
default: DEFAULT_COMPACTED_REPLAY_MAX_BYTES,
|
|
151
|
+
description: "Per-session in-memory compacted replay snapshot byte cap for `POST /session/:id/load` late attaches. Larger = more recent history in load snapshots at higher heap cost. Must be a positive safe integer no larger than 256 MiB."
|
|
142
152
|
}).option("http-bridge", {
|
|
143
153
|
type: "boolean",
|
|
144
154
|
default: true,
|
|
145
|
-
description: "
|
|
155
|
+
description: "HTTP bridge mode: one `qwen --acp` child per registered workspace (sessions-only multi-workspace routing is enabled when multiple --workspace values are supplied). Stage 2 native in-process mode is not yet implemented; this flag will become opt-in then."
|
|
146
156
|
}).option("mcp-client-budget", {
|
|
147
157
|
type: "number",
|
|
148
158
|
description: "Cap on live MCP clients spawned inside the ACP child for the bound workspace. Positive integer. Combine with --mcp-budget-mode to control behavior at the cap. When unset, mode defaults to off (no accounting-driven enforcement, but GET /workspace/mcp still reports `clientCount`). Distinct from claude-code MCP_SERVER_CONNECTION_BATCH_SIZE which gates startup concurrency, not the total client count."
|
|
@@ -287,7 +297,7 @@ var serveCommand = {
|
|
|
287
297
|
process.exit(1);
|
|
288
298
|
}
|
|
289
299
|
}
|
|
290
|
-
const { runQwenServe } = await import("./run-qwen-serve-
|
|
300
|
+
const { runQwenServe } = await import("./run-qwen-serve-O6CMPURG.js");
|
|
291
301
|
try {
|
|
292
302
|
const handle = await runQwenServe({
|
|
293
303
|
port: argv.port,
|
|
@@ -295,9 +305,11 @@ var serveCommand = {
|
|
|
295
305
|
token: argv.token,
|
|
296
306
|
mode: "http-bridge",
|
|
297
307
|
maxSessions: argv["max-sessions"],
|
|
308
|
+
...argv["max-total-sessions"] !== void 0 ? { maxTotalSessions: argv["max-total-sessions"] } : {},
|
|
298
309
|
maxPendingPromptsPerSession,
|
|
299
310
|
maxConnections: argv["max-connections"],
|
|
300
311
|
eventRingSize: argv["event-ring-size"],
|
|
312
|
+
compactedReplayMaxBytes: argv["compacted-replay-max-bytes"],
|
|
301
313
|
workspace: argv.workspace,
|
|
302
314
|
requireAuth: argv["require-auth"],
|
|
303
315
|
enableSessionShell: argv["enable-session-shell"],
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
functionResponsePartsToString
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-WFHJDT4S.js";
|
|
6
6
|
import {
|
|
7
7
|
parseAndFormatApiError
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-UUVCHN62.js";
|
|
9
9
|
import {
|
|
10
10
|
init_esbuild_shims
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-5O2XNYP6.js";
|
|
12
12
|
import {
|
|
13
13
|
__name
|
|
14
14
|
} from "./chunk-J2S4EL5Y.js";
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
eastAsianWidth
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-QHTIBUWB.js";
|
|
6
6
|
import {
|
|
7
7
|
ansiRegex,
|
|
8
8
|
init_ansi_regex,
|
|
9
9
|
stripAnsi
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-UUVCHN62.js";
|
|
11
11
|
import {
|
|
12
12
|
init_esbuild_shims
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-5O2XNYP6.js";
|
|
14
14
|
import {
|
|
15
15
|
__commonJS,
|
|
16
16
|
__name,
|
|
@@ -182,6 +182,12 @@ function wrapToVisualLines(text, width) {
|
|
|
182
182
|
}
|
|
183
183
|
__name(wrapToVisualLines, "wrapToVisualLines");
|
|
184
184
|
var regex = ansiRegex();
|
|
185
|
+
var BARE_C0_CONTROL_CHARS_REGEX = /[\x00-\x08\x0b-\x1f\x7f-\x9f]/g;
|
|
186
|
+
var BIDI_OVERRIDE_CHARS_REGEX = /[\u200e\u200f\u202a-\u202e\u2066-\u2069]/g;
|
|
187
|
+
function sanitizeTerminalText(value) {
|
|
188
|
+
return escapeAnsiCtrlCodes(value).replace(BARE_C0_CONTROL_CHARS_REGEX, "").replace(BIDI_OVERRIDE_CHARS_REGEX, "");
|
|
189
|
+
}
|
|
190
|
+
__name(sanitizeTerminalText, "sanitizeTerminalText");
|
|
185
191
|
function escapeAnsiCtrlCodes(obj) {
|
|
186
192
|
if (typeof obj === "string") {
|
|
187
193
|
if (obj.search(regex) === -1) {
|
|
@@ -280,7 +286,8 @@ function sanitizeSensitiveText(text, maxLength = 200) {
|
|
|
280
286
|
}
|
|
281
287
|
__name(sanitizeSensitiveText, "sanitizeSensitiveText");
|
|
282
288
|
var FILENAME_CONTROL_CHARS_REGEX = /[\x00-\x1f\x7f-\x9f]/g;
|
|
283
|
-
|
|
289
|
+
var MULTILINE_CONTROL_CHARS_REGEX = /[\x00-\x08\x0b-\x1f\x7f-\x9f]/g;
|
|
290
|
+
function escapeControlChar(ch) {
|
|
284
291
|
switch (ch) {
|
|
285
292
|
case "\b":
|
|
286
293
|
return "\\b";
|
|
@@ -298,14 +305,21 @@ function escapeFilenameControlChar(ch) {
|
|
|
298
305
|
}
|
|
299
306
|
}
|
|
300
307
|
}
|
|
301
|
-
__name(
|
|
308
|
+
__name(escapeControlChar, "escapeControlChar");
|
|
302
309
|
function sanitizeFilenameForDisplay(name) {
|
|
303
310
|
return escapeAnsiCtrlCodes(name).replace(
|
|
304
311
|
FILENAME_CONTROL_CHARS_REGEX,
|
|
305
|
-
|
|
312
|
+
escapeControlChar
|
|
306
313
|
);
|
|
307
314
|
}
|
|
308
315
|
__name(sanitizeFilenameForDisplay, "sanitizeFilenameForDisplay");
|
|
316
|
+
function sanitizeMultilineForDisplay(text) {
|
|
317
|
+
return escapeAnsiCtrlCodes(text).replace(
|
|
318
|
+
MULTILINE_CONTROL_CHARS_REGEX,
|
|
319
|
+
escapeControlChar
|
|
320
|
+
);
|
|
321
|
+
}
|
|
322
|
+
__name(sanitizeMultilineForDisplay, "sanitizeMultilineForDisplay");
|
|
309
323
|
|
|
310
324
|
export {
|
|
311
325
|
stringWidth,
|
|
@@ -316,9 +330,11 @@ export {
|
|
|
316
330
|
stripUnsafeCharacters,
|
|
317
331
|
getCachedStringWidth,
|
|
318
332
|
wrapToVisualLines,
|
|
333
|
+
sanitizeTerminalText,
|
|
319
334
|
escapeAnsiCtrlCodes,
|
|
320
335
|
sanitizeSensitiveText,
|
|
321
|
-
sanitizeFilenameForDisplay
|
|
336
|
+
sanitizeFilenameForDisplay,
|
|
337
|
+
sanitizeMultilineForDisplay
|
|
322
338
|
};
|
|
323
339
|
/**
|
|
324
340
|
* @license
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
buildPermissionSettings
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-5OIXALQ5.js";
|
|
6
6
|
import {
|
|
7
7
|
resolveVoiceStreamConfig,
|
|
8
8
|
resolveVoiceTranscriptionConfig,
|
|
9
9
|
transcribeVoiceAudio
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-WCUK2QXK.js";
|
|
11
11
|
import {
|
|
12
12
|
getVoiceSettingsScope,
|
|
13
13
|
isSelectableVoiceModel,
|
|
@@ -16,18 +16,14 @@ import {
|
|
|
16
16
|
readVoiceMode,
|
|
17
17
|
readVoiceModel,
|
|
18
18
|
resolveVoiceTransport
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-RRNR5U2U.js";
|
|
20
20
|
import {
|
|
21
21
|
WorkspacePermissionRulesSessionRequiredError,
|
|
22
22
|
WorkspaceSettingsPartialPersistError
|
|
23
|
-
} from "./chunk-
|
|
24
|
-
import {
|
|
25
|
-
getPersistScopeForModelSelection,
|
|
26
|
-
loadSettings
|
|
27
|
-
} from "./chunk-STAZRKOT.js";
|
|
23
|
+
} from "./chunk-WL4L7EZH.js";
|
|
28
24
|
import {
|
|
29
25
|
MCP_RESTART_SERVER_DEADLINE_MS
|
|
30
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-OCPBI7J5.js";
|
|
31
27
|
import {
|
|
32
28
|
McpServerNotFoundError,
|
|
33
29
|
McpServerRestartFailedError,
|
|
@@ -36,7 +32,7 @@ import {
|
|
|
36
32
|
WorkspaceInitPathEscapeError,
|
|
37
33
|
WorkspaceInitRaceError,
|
|
38
34
|
WorkspaceInitSymlinkError
|
|
39
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-IAVB3HM3.js";
|
|
40
36
|
import {
|
|
41
37
|
SERVE_CONTROL_EXT_METHODS,
|
|
42
38
|
SERVE_STATUS_EXT_METHODS,
|
|
@@ -49,22 +45,26 @@ import {
|
|
|
49
45
|
createIdleWorkspaceProvidersStatus,
|
|
50
46
|
createIdleWorkspaceSkillsStatus,
|
|
51
47
|
mapDomainErrorToErrorKind
|
|
52
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-TJCEUA3S.js";
|
|
49
|
+
import {
|
|
50
|
+
getPersistScopeForModelSelection,
|
|
51
|
+
loadSettings
|
|
52
|
+
} from "./chunk-L6GPKRH7.js";
|
|
53
53
|
import {
|
|
54
54
|
getWorkspaceTrustStatus
|
|
55
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-CBKR4Q5K.js";
|
|
56
56
|
import {
|
|
57
57
|
writeStderrLine
|
|
58
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-YUZI3WAC.js";
|
|
59
59
|
import {
|
|
60
60
|
ModelsConfig
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-UUVCHN62.js";
|
|
62
62
|
import {
|
|
63
63
|
createDebugLogger
|
|
64
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-J4TSQ5EQ.js";
|
|
65
65
|
import {
|
|
66
66
|
init_esbuild_shims
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-5O2XNYP6.js";
|
|
68
68
|
import {
|
|
69
69
|
__name
|
|
70
70
|
} from "./chunk-J2S4EL5Y.js";
|
|
@@ -328,6 +328,29 @@ async function verifyParentPostOpen(target, wsCanonical, _fh) {
|
|
|
328
328
|
);
|
|
329
329
|
}
|
|
330
330
|
__name(verifyParentPostOpen, "verifyParentPostOpen");
|
|
331
|
+
var TimeoutError = class extends Error {
|
|
332
|
+
static {
|
|
333
|
+
__name(this, "TimeoutError");
|
|
334
|
+
}
|
|
335
|
+
};
|
|
336
|
+
async function withTimeout(promise, timeoutMs, label) {
|
|
337
|
+
return await new Promise((resolve2, reject) => {
|
|
338
|
+
const timeout = setTimeout(() => {
|
|
339
|
+
reject(new TimeoutError(`${label} timed out after ${timeoutMs}ms`));
|
|
340
|
+
}, timeoutMs);
|
|
341
|
+
promise.then(
|
|
342
|
+
(value) => {
|
|
343
|
+
clearTimeout(timeout);
|
|
344
|
+
resolve2(value);
|
|
345
|
+
},
|
|
346
|
+
(err) => {
|
|
347
|
+
clearTimeout(timeout);
|
|
348
|
+
reject(err);
|
|
349
|
+
}
|
|
350
|
+
);
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
__name(withTimeout, "withTimeout");
|
|
331
354
|
function createDaemonWorkspaceService(deps) {
|
|
332
355
|
const {
|
|
333
356
|
boundWorkspace,
|
|
@@ -339,12 +362,14 @@ function createDaemonWorkspaceService(deps) {
|
|
|
339
362
|
persistDisabledTools,
|
|
340
363
|
persistSetting,
|
|
341
364
|
persistSettings,
|
|
365
|
+
preheatAcpChild: preheatAcpChildOnBridge,
|
|
342
366
|
queryWorkspaceStatus,
|
|
343
367
|
invokeWorkspaceCommand,
|
|
344
368
|
refreshExtensionsForAllSessions: refreshExtensionsForAllSessionsOnBridge,
|
|
345
369
|
publishWorkspaceEvent
|
|
346
370
|
} = deps;
|
|
347
371
|
let lastWorkspaceSkillsStatus;
|
|
372
|
+
let inFlightAcpPreheat;
|
|
348
373
|
return {
|
|
349
374
|
// -- Status queries (delegate to ACP child via queryWorkspaceStatus) --
|
|
350
375
|
async getWorkspaceMcpStatus(_ctx) {
|
|
@@ -396,6 +421,62 @@ function createDaemonWorkspaceService(deps) {
|
|
|
396
421
|
() => createIdleWorkspaceProvidersStatus(boundWorkspace)
|
|
397
422
|
);
|
|
398
423
|
},
|
|
424
|
+
async preheatAcpChild(_ctx, opts) {
|
|
425
|
+
const startedAt = Date.now();
|
|
426
|
+
const channelLive = /* @__PURE__ */ __name(() => isChannelLive?.() ?? false, "channelLive");
|
|
427
|
+
const finish = /* @__PURE__ */ __name((result) => ({
|
|
428
|
+
...result,
|
|
429
|
+
durationMs: Date.now() - startedAt
|
|
430
|
+
}), "finish");
|
|
431
|
+
if (channelLive()) {
|
|
432
|
+
return finish({ ready: true, channelLive: true });
|
|
433
|
+
}
|
|
434
|
+
if (!preheatAcpChildOnBridge) {
|
|
435
|
+
return finish({
|
|
436
|
+
ready: false,
|
|
437
|
+
channelLive: false,
|
|
438
|
+
reason: "error",
|
|
439
|
+
error: "ACP preheat is not wired"
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
if (!inFlightAcpPreheat) {
|
|
443
|
+
inFlightAcpPreheat = preheatAcpChildOnBridge().finally(() => {
|
|
444
|
+
inFlightAcpPreheat = void 0;
|
|
445
|
+
});
|
|
446
|
+
void inFlightAcpPreheat.catch((err) => {
|
|
447
|
+
writeStderrLine(
|
|
448
|
+
`qwen serve: ACP preheat failed: ${err instanceof Error ? err.message : String(err)}`
|
|
449
|
+
);
|
|
450
|
+
});
|
|
451
|
+
}
|
|
452
|
+
try {
|
|
453
|
+
await withTimeout(
|
|
454
|
+
inFlightAcpPreheat,
|
|
455
|
+
opts?.timeoutMs ?? 5e3,
|
|
456
|
+
"ACP preheat"
|
|
457
|
+
);
|
|
458
|
+
} catch (err) {
|
|
459
|
+
if (err instanceof TimeoutError) {
|
|
460
|
+
inFlightAcpPreheat = void 0;
|
|
461
|
+
writeStderrLine(
|
|
462
|
+
`qwen serve: ACP preheat timed out after ${opts?.timeoutMs ?? 5e3}ms`
|
|
463
|
+
);
|
|
464
|
+
}
|
|
465
|
+
const live2 = channelLive();
|
|
466
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
467
|
+
return finish({
|
|
468
|
+
ready: live2,
|
|
469
|
+
channelLive: live2,
|
|
470
|
+
reason: err instanceof TimeoutError ? "timeout" : "error",
|
|
471
|
+
error: message
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
const live = channelLive();
|
|
475
|
+
return finish({ ready: live, channelLive: live });
|
|
476
|
+
},
|
|
477
|
+
async getWorkspaceAcpStatus(_ctx) {
|
|
478
|
+
return { channelLive: isChannelLive?.() ?? false };
|
|
479
|
+
},
|
|
399
480
|
async getWorkspaceEnvStatus(_ctx) {
|
|
400
481
|
const acpChannelLive = isChannelLive?.() ?? false;
|
|
401
482
|
if (!statusProvider) {
|
|
@@ -873,6 +954,9 @@ function createDaemonWorkspaceService(deps) {
|
|
|
873
954
|
childError
|
|
874
955
|
};
|
|
875
956
|
},
|
|
957
|
+
invalidateWorkspaceSkillsStatus() {
|
|
958
|
+
lastWorkspaceSkillsStatus = void 0;
|
|
959
|
+
},
|
|
876
960
|
async refreshExtensionsForAllSessions() {
|
|
877
961
|
try {
|
|
878
962
|
if (!refreshExtensionsForAllSessionsOnBridge) {
|
|
@@ -884,6 +968,8 @@ function createDaemonWorkspaceService(deps) {
|
|
|
884
968
|
`qwen serve: refreshExtensionsForAllSessions failed: ${err instanceof Error ? err.message : String(err)}`
|
|
885
969
|
);
|
|
886
970
|
return { refreshed: 0, failed: 1 };
|
|
971
|
+
} finally {
|
|
972
|
+
lastWorkspaceSkillsStatus = void 0;
|
|
887
973
|
}
|
|
888
974
|
}
|
|
889
975
|
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
init_esbuild_shims
|
|
5
|
+
} from "./chunk-5O2XNYP6.js";
|
|
6
|
+
|
|
7
|
+
// packages/cli/src/serve/acp-session-bridge.ts
|
|
8
|
+
init_esbuild_shims();
|
|
9
|
+
/**
|
|
10
|
+
* @license
|
|
11
|
+
* Copyright 2025 Qwen Team
|
|
12
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
13
|
+
*/
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
createDebugLogger
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-J4TSQ5EQ.js";
|
|
6
6
|
import {
|
|
7
7
|
init_esbuild_shims
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-5O2XNYP6.js";
|
|
9
9
|
import {
|
|
10
10
|
__name
|
|
11
11
|
} from "./chunk-J2S4EL5Y.js";
|