@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
|
@@ -2,11 +2,9 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
startEarlyStartupPrefetches
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import {
|
|
7
|
-
RELAUNCH_EXIT_CODE
|
|
8
|
-
} from "./chunk-LEIJKM7Q.js";
|
|
5
|
+
} from "./chunk-3QZ6GY6A.js";
|
|
9
6
|
import {
|
|
7
|
+
ExtensionRefreshState,
|
|
10
8
|
appEvents,
|
|
11
9
|
buildDisabledSkillNamesProvider,
|
|
12
10
|
isDebugMode,
|
|
@@ -15,61 +13,71 @@ import {
|
|
|
15
13
|
loadSandboxConfig,
|
|
16
14
|
parseArguments,
|
|
17
15
|
validateAuthMethod
|
|
18
|
-
} from "./chunk-
|
|
19
|
-
import
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
27
|
-
import "./chunk-
|
|
28
|
-
import "./chunk-
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-ME3YSROJ.js";
|
|
16
|
+
} from "./chunk-VL7GBUQA.js";
|
|
17
|
+
import {
|
|
18
|
+
RELAUNCH_EXIT_CODE
|
|
19
|
+
} from "./chunk-3ZAIGBCP.js";
|
|
20
|
+
import "./chunk-2ZQOQZIS.js";
|
|
21
|
+
import "./chunk-65F3I3PM.js";
|
|
22
|
+
import "./chunk-GL22M2DU.js";
|
|
23
|
+
import "./chunk-QHTIBUWB.js";
|
|
24
|
+
import "./chunk-L573Z2QZ.js";
|
|
25
|
+
import "./chunk-LK7KUE55.js";
|
|
26
|
+
import "./chunk-RXFQM6FQ.js";
|
|
27
|
+
import "./chunk-FBSBT7JS.js";
|
|
31
28
|
import {
|
|
32
29
|
getHeadlessYoloSafetyWarning
|
|
33
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-6H67XLET.js";
|
|
31
|
+
import "./chunk-F4PFZ7WP.js";
|
|
32
|
+
import "./chunk-WPHYXKFL.js";
|
|
33
|
+
import "./chunk-57OAHC2Y.js";
|
|
34
|
+
import "./chunk-43XJTCHT.js";
|
|
35
|
+
import "./chunk-W7FJ3N32.js";
|
|
36
|
+
import "./chunk-6RLROE6G.js";
|
|
37
|
+
import "./chunk-COH43MRJ.js";
|
|
38
|
+
import "./chunk-DMN532MJ.js";
|
|
39
|
+
import "./chunk-DC5Z3DU6.js";
|
|
40
|
+
import "./chunk-V6WHFGST.js";
|
|
41
|
+
import "./chunk-6WH2WCSW.js";
|
|
34
42
|
import {
|
|
35
43
|
assembleMcpServers,
|
|
36
44
|
getPendingGatedMcpServers,
|
|
37
45
|
getPromptableMcpServers
|
|
38
|
-
} from "./chunk-
|
|
39
|
-
import "./chunk-2NPS2UDH.js";
|
|
40
|
-
import "./chunk-S6RLAIUR.js";
|
|
41
|
-
import "./chunk-MX2YXRER.js";
|
|
42
|
-
import "./chunk-MZ7BABX3.js";
|
|
46
|
+
} from "./chunk-QNTUV3PP.js";
|
|
43
47
|
import {
|
|
44
|
-
SETTINGS_DIRECTORY_NAME,
|
|
45
48
|
createMinimalSettings,
|
|
46
49
|
getFlattenedSchema,
|
|
47
50
|
getSettingsWarnings,
|
|
48
51
|
getUserSettingsDir,
|
|
49
52
|
initializeLlmOutputLanguage,
|
|
50
|
-
loadSettings
|
|
51
|
-
|
|
52
|
-
|
|
53
|
+
loadSettings
|
|
54
|
+
} from "./chunk-L6GPKRH7.js";
|
|
55
|
+
import "./chunk-RKUWKYED.js";
|
|
53
56
|
import {
|
|
54
57
|
initializeI18n,
|
|
55
58
|
resolveLanguageSetting
|
|
56
|
-
} from "./chunk-
|
|
57
|
-
import
|
|
59
|
+
} from "./chunk-LD5OWZ5E.js";
|
|
60
|
+
import {
|
|
61
|
+
SETTINGS_DIRECTORY_NAME,
|
|
62
|
+
preResolveHomeEnvOverrides
|
|
63
|
+
} from "./chunk-P3X7RYUQ.js";
|
|
64
|
+
import "./chunk-3BTRNWWD.js";
|
|
58
65
|
import {
|
|
59
66
|
ENV_CORRUPTED_PATH,
|
|
60
67
|
ENV_WAS_RECOVERED
|
|
61
|
-
} from "./chunk-
|
|
62
|
-
import "./chunk-
|
|
63
|
-
import "./chunk-
|
|
64
|
-
import "./chunk-
|
|
65
|
-
import "./chunk-
|
|
66
|
-
import "./chunk-
|
|
67
|
-
import "./chunk-
|
|
68
|
-
import "./chunk-
|
|
68
|
+
} from "./chunk-QRUIS3DN.js";
|
|
69
|
+
import "./chunk-X4NKFGFJ.js";
|
|
70
|
+
import "./chunk-TJTKSVIV.js";
|
|
71
|
+
import "./chunk-43JB7OF4.js";
|
|
72
|
+
import "./chunk-UDXSXLER.js";
|
|
73
|
+
import "./chunk-CBKR4Q5K.js";
|
|
74
|
+
import "./chunk-RDJSGHZE.js";
|
|
75
|
+
import "./chunk-XFSFZCM5.js";
|
|
76
|
+
import "./chunk-CNOF2IZT.js";
|
|
77
|
+
import "./chunk-VJNBRRZG.js";
|
|
69
78
|
import {
|
|
70
79
|
writeStderrLine
|
|
71
|
-
} from "./chunk-
|
|
72
|
-
import "./chunk-QYUE6W3T.js";
|
|
80
|
+
} from "./chunk-YUZI3WAC.js";
|
|
73
81
|
import {
|
|
74
82
|
GitWorktreeService,
|
|
75
83
|
QWEN_CODE_SIMPLE_ENV_VAR,
|
|
@@ -87,84 +95,85 @@ import {
|
|
|
87
95
|
worktreeBranchForSlug,
|
|
88
96
|
writeWorktreeSession,
|
|
89
97
|
writeWorktreeSessionMarker
|
|
90
|
-
} from "./chunk-
|
|
91
|
-
import "./chunk-
|
|
92
|
-
import "./chunk-
|
|
93
|
-
import "./chunk-
|
|
94
|
-
import "./chunk-
|
|
95
|
-
import "./chunk-
|
|
96
|
-
import "./chunk-
|
|
97
|
-
import "./chunk-
|
|
98
|
-
import "./chunk-
|
|
99
|
-
import "./chunk-
|
|
100
|
-
import "./chunk-
|
|
101
|
-
import "./chunk-
|
|
102
|
-
import "./chunk-
|
|
103
|
-
import "./chunk-
|
|
104
|
-
import "./chunk-
|
|
105
|
-
import "./chunk-
|
|
106
|
-
import "./chunk-
|
|
107
|
-
import "./chunk-
|
|
108
|
-
import "./chunk-
|
|
109
|
-
import "./chunk-
|
|
110
|
-
import "./chunk-
|
|
98
|
+
} from "./chunk-UUVCHN62.js";
|
|
99
|
+
import "./chunk-CU3L64TP.js";
|
|
100
|
+
import "./chunk-ZJE7NSL3.js";
|
|
101
|
+
import "./chunk-H6XPXXMH.js";
|
|
102
|
+
import "./chunk-MC23XKFE.js";
|
|
103
|
+
import "./chunk-LUODI7WD.js";
|
|
104
|
+
import "./chunk-ORBGV7NJ.js";
|
|
105
|
+
import "./chunk-KKNMOEZH.js";
|
|
106
|
+
import "./chunk-W2UIXQDL.js";
|
|
107
|
+
import "./chunk-XU457J4V.js";
|
|
108
|
+
import "./chunk-VDDGDZMA.js";
|
|
109
|
+
import "./chunk-CEA3E3JB.js";
|
|
110
|
+
import "./chunk-SZRN75WQ.js";
|
|
111
|
+
import "./chunk-HTO4JFDZ.js";
|
|
112
|
+
import "./chunk-CPBF7KYF.js";
|
|
113
|
+
import "./chunk-4GORAUCN.js";
|
|
114
|
+
import "./chunk-6AM5D4ME.js";
|
|
115
|
+
import "./chunk-7R3CZA3Q.js";
|
|
116
|
+
import "./chunk-GWHYEOV2.js";
|
|
117
|
+
import "./chunk-4QLQE5WJ.js";
|
|
118
|
+
import "./chunk-5XUCZNSY.js";
|
|
111
119
|
import {
|
|
112
120
|
getMCPServerStatus,
|
|
113
121
|
logUserPrompt,
|
|
114
122
|
uiTelemetryService
|
|
115
|
-
} from "./chunk-
|
|
116
|
-
import "./chunk-
|
|
117
|
-
import "./chunk-
|
|
118
|
-
import "./chunk-
|
|
119
|
-
import "./chunk-
|
|
120
|
-
import "./chunk-
|
|
121
|
-
import "./chunk-
|
|
122
|
-
import "./chunk-
|
|
123
|
+
} from "./chunk-MUCWGT7O.js";
|
|
124
|
+
import "./chunk-4WKAA4KS.js";
|
|
125
|
+
import "./chunk-CR3C7WXL.js";
|
|
126
|
+
import "./chunk-CARU2RR2.js";
|
|
127
|
+
import "./chunk-VGC4I5JJ.js";
|
|
128
|
+
import "./chunk-YLV3XXFB.js";
|
|
129
|
+
import "./chunk-TDEXZKMT.js";
|
|
130
|
+
import "./chunk-J3JA76CF.js";
|
|
123
131
|
import {
|
|
124
132
|
require_fast_deep_equal
|
|
125
|
-
} from "./chunk-
|
|
126
|
-
import "./chunk-
|
|
127
|
-
import "./chunk-
|
|
128
|
-
import "./chunk-
|
|
129
|
-
import "./chunk-
|
|
130
|
-
import "./chunk-
|
|
131
|
-
import "./chunk-
|
|
132
|
-
import "./chunk-
|
|
133
|
-
import "./chunk-
|
|
134
|
-
import "./chunk-
|
|
135
|
-
import "./chunk-
|
|
136
|
-
import "./chunk-
|
|
137
|
-
import "./chunk-
|
|
138
|
-
import "./chunk-
|
|
139
|
-
import "./chunk-
|
|
133
|
+
} from "./chunk-B5ORX3FG.js";
|
|
134
|
+
import "./chunk-BZIFY5TF.js";
|
|
135
|
+
import "./chunk-UOZWKTQG.js";
|
|
136
|
+
import "./chunk-JESCGQM3.js";
|
|
137
|
+
import "./chunk-ZLXQN2QS.js";
|
|
138
|
+
import "./chunk-XVNQMZ2I.js";
|
|
139
|
+
import "./chunk-524RQP4Q.js";
|
|
140
|
+
import "./chunk-JSG7ZSBC.js";
|
|
141
|
+
import "./chunk-A4UCTEB5.js";
|
|
142
|
+
import "./chunk-XWRJCPHC.js";
|
|
143
|
+
import "./chunk-4LD5APFL.js";
|
|
144
|
+
import "./chunk-TYAMGABM.js";
|
|
145
|
+
import "./chunk-FCMNKVXT.js";
|
|
146
|
+
import "./chunk-DJ2GSRLV.js";
|
|
147
|
+
import "./chunk-4ZVWQHEQ.js";
|
|
140
148
|
import {
|
|
141
149
|
FatalSandboxError,
|
|
142
150
|
Storage,
|
|
143
151
|
createDebugLogger,
|
|
144
152
|
getErrorMessage,
|
|
153
|
+
isDebugLogFileEnabled,
|
|
145
154
|
isDebugLoggingDegraded,
|
|
146
155
|
isSubpath
|
|
147
|
-
} from "./chunk-
|
|
156
|
+
} from "./chunk-J4TSQ5EQ.js";
|
|
148
157
|
import {
|
|
149
158
|
cleanupCheckpoints,
|
|
150
159
|
registerCleanup,
|
|
151
160
|
runExitCleanup
|
|
152
|
-
} from "./chunk-
|
|
161
|
+
} from "./chunk-IDJEZU7C.js";
|
|
153
162
|
import {
|
|
154
163
|
finalizeStartupProfile,
|
|
155
164
|
isStartupProfilerEnabled,
|
|
156
165
|
profileCheckpoint,
|
|
157
166
|
recordStartupEvent,
|
|
158
167
|
setInteractiveMode
|
|
159
|
-
} from "./chunk-
|
|
160
|
-
import "./chunk-
|
|
161
|
-
import "./chunk-
|
|
162
|
-
import "./chunk-
|
|
163
|
-
import "./chunk-
|
|
164
|
-
import "./chunk-
|
|
168
|
+
} from "./chunk-QSWDGAIC.js";
|
|
169
|
+
import "./chunk-Q7YDKOGY.js";
|
|
170
|
+
import "./chunk-75DOP5OR.js";
|
|
171
|
+
import "./chunk-DMTGGOSA.js";
|
|
172
|
+
import "./chunk-YQ3U5MUC.js";
|
|
173
|
+
import "./chunk-TB6UDU4T.js";
|
|
165
174
|
import {
|
|
166
175
|
init_esbuild_shims
|
|
167
|
-
} from "./chunk-
|
|
176
|
+
} from "./chunk-5O2XNYP6.js";
|
|
168
177
|
import {
|
|
169
178
|
__name,
|
|
170
179
|
__toESM
|
|
@@ -174,7 +183,7 @@ import {
|
|
|
174
183
|
init_esbuild_shims();
|
|
175
184
|
import dns from "node:dns";
|
|
176
185
|
import os4 from "node:os";
|
|
177
|
-
import
|
|
186
|
+
import path8 from "node:path";
|
|
178
187
|
import v8 from "node:v8";
|
|
179
188
|
|
|
180
189
|
// packages/cli/src/config/settingsWatcher.ts
|
|
@@ -828,10 +837,280 @@ function sortJsonValue(value) {
|
|
|
828
837
|
}
|
|
829
838
|
__name(sortJsonValue, "sortJsonValue");
|
|
830
839
|
|
|
831
|
-
// packages/cli/src/
|
|
840
|
+
// packages/cli/src/config/extension-file-watcher.ts
|
|
832
841
|
init_esbuild_shims();
|
|
842
|
+
import * as fs3 from "node:fs";
|
|
833
843
|
import * as path3 from "node:path";
|
|
834
|
-
var debugLogger4 = createDebugLogger("
|
|
844
|
+
var debugLogger4 = createDebugLogger("EXTENSION_FILE_WATCHER");
|
|
845
|
+
var TOP_LEVEL_FILES = /* @__PURE__ */ new Set(["extension-enablement.json"]);
|
|
846
|
+
var EXTENSION_FILES = /* @__PURE__ */ new Set([
|
|
847
|
+
"qwen-extension.json",
|
|
848
|
+
".qwen-extension-install.json"
|
|
849
|
+
]);
|
|
850
|
+
var AUTO_REFRESH_DIRS = /* @__PURE__ */ new Set(["commands", "skills", "agents"]);
|
|
851
|
+
var STALE_DIRS = /* @__PURE__ */ new Set(["hooks"]);
|
|
852
|
+
var ExtensionFileWatcher = class {
|
|
853
|
+
constructor(config, extensionsDir = Storage.getUserExtensionsDir(), refreshState = new ExtensionRefreshState()) {
|
|
854
|
+
this.config = config;
|
|
855
|
+
this.extensionsDir = extensionsDir;
|
|
856
|
+
this.refreshState = refreshState;
|
|
857
|
+
}
|
|
858
|
+
static {
|
|
859
|
+
__name(this, "ExtensionFileWatcher");
|
|
860
|
+
}
|
|
861
|
+
watcher;
|
|
862
|
+
bootstrapWatcher;
|
|
863
|
+
mutationListenerDisposer;
|
|
864
|
+
mutationSuppressionEnds = /* @__PURE__ */ new Map();
|
|
865
|
+
staleFiles = /* @__PURE__ */ new Set();
|
|
866
|
+
watching = false;
|
|
867
|
+
watchGeneration = 0;
|
|
868
|
+
startWatching() {
|
|
869
|
+
this.stopWatching();
|
|
870
|
+
this.watching = true;
|
|
871
|
+
const generation = ++this.watchGeneration;
|
|
872
|
+
this.subscribeExtensionManagerMutations();
|
|
873
|
+
this.staleFiles = this.getStaleFiles();
|
|
874
|
+
const roots = this.getWatchRoots();
|
|
875
|
+
if (roots.length > 0) {
|
|
876
|
+
this.watcher = watch(roots, {
|
|
877
|
+
ignoreInitial: true,
|
|
878
|
+
followSymlinks: false,
|
|
879
|
+
awaitWriteFinish: {
|
|
880
|
+
stabilityThreshold: 200,
|
|
881
|
+
pollInterval: 50
|
|
882
|
+
},
|
|
883
|
+
ignored: /* @__PURE__ */ __name((filePath) => this.isIgnored(filePath), "ignored")
|
|
884
|
+
}).on("all", (event, changedPath) => {
|
|
885
|
+
if (generation !== this.watchGeneration) return;
|
|
886
|
+
const resolvedPath = path3.resolve(changedPath);
|
|
887
|
+
const action = this.getRefreshAction(
|
|
888
|
+
event,
|
|
889
|
+
resolvedPath
|
|
890
|
+
);
|
|
891
|
+
let marked = false;
|
|
892
|
+
if (action === "auto") {
|
|
893
|
+
marked = this.refreshState.markExtensionContentChanged(
|
|
894
|
+
"extension content files changed"
|
|
895
|
+
);
|
|
896
|
+
} else if (action === "stale") {
|
|
897
|
+
marked = this.refreshState.markExtensionsChanged(
|
|
898
|
+
"extension files changed"
|
|
899
|
+
);
|
|
900
|
+
}
|
|
901
|
+
debugLogger4.debug("Extension file event classified", {
|
|
902
|
+
event,
|
|
903
|
+
path: resolvedPath,
|
|
904
|
+
action,
|
|
905
|
+
marked
|
|
906
|
+
});
|
|
907
|
+
}).on("error", (error) => {
|
|
908
|
+
debugLogger4.warn("Extension file watcher error:", error);
|
|
909
|
+
});
|
|
910
|
+
}
|
|
911
|
+
if (!fs3.existsSync(this.extensionsDir)) {
|
|
912
|
+
this.watchExtensionsParent();
|
|
913
|
+
}
|
|
914
|
+
}
|
|
915
|
+
stopWatching() {
|
|
916
|
+
const watcher = this.watcher;
|
|
917
|
+
const bootstrapWatcher = this.bootstrapWatcher;
|
|
918
|
+
this.watcher = void 0;
|
|
919
|
+
this.bootstrapWatcher = void 0;
|
|
920
|
+
this.watching = false;
|
|
921
|
+
this.watchGeneration++;
|
|
922
|
+
this.mutationListenerDisposer?.();
|
|
923
|
+
this.mutationListenerDisposer = void 0;
|
|
924
|
+
this.endPendingMutationSuppressions();
|
|
925
|
+
watcher?.close().catch((error) => {
|
|
926
|
+
debugLogger4.warn("Extension file watcher close error:", error);
|
|
927
|
+
});
|
|
928
|
+
bootstrapWatcher?.close().catch((error) => {
|
|
929
|
+
debugLogger4.warn("Extension bootstrap watcher close error:", error);
|
|
930
|
+
});
|
|
931
|
+
}
|
|
932
|
+
restartWatching() {
|
|
933
|
+
this.startWatching();
|
|
934
|
+
}
|
|
935
|
+
getWatchRoots() {
|
|
936
|
+
const roots = /* @__PURE__ */ new Set();
|
|
937
|
+
if (fs3.existsSync(this.extensionsDir)) {
|
|
938
|
+
roots.add(this.extensionsDir);
|
|
939
|
+
}
|
|
940
|
+
for (const extension of this.config.getActiveExtensions()) {
|
|
941
|
+
if (extension.installMetadata?.type === "link") {
|
|
942
|
+
const rawSource = extension.installMetadata.source;
|
|
943
|
+
const source = rawSource ? path3.resolve(rawSource) : void 0;
|
|
944
|
+
if (source && fs3.existsSync(source)) {
|
|
945
|
+
roots.add(source);
|
|
946
|
+
}
|
|
947
|
+
}
|
|
948
|
+
}
|
|
949
|
+
return [...roots];
|
|
950
|
+
}
|
|
951
|
+
getStaleFiles() {
|
|
952
|
+
const files = /* @__PURE__ */ new Set();
|
|
953
|
+
for (const extension of this.config.getActiveExtensions()) {
|
|
954
|
+
for (const filePath of extension.contextFiles) {
|
|
955
|
+
files.add(path3.resolve(filePath));
|
|
956
|
+
}
|
|
957
|
+
const configured = extension.config.contextFileName;
|
|
958
|
+
const names = configured === void 0 ? ["QWEN.md"] : Array.isArray(configured) ? configured : [configured];
|
|
959
|
+
for (const name of names) {
|
|
960
|
+
files.add(path3.resolve(extension.path, name));
|
|
961
|
+
}
|
|
962
|
+
this.addManifestFileReference(
|
|
963
|
+
files,
|
|
964
|
+
extension.path,
|
|
965
|
+
extension.config.hooks
|
|
966
|
+
);
|
|
967
|
+
this.addManifestFileReference(
|
|
968
|
+
files,
|
|
969
|
+
extension.path,
|
|
970
|
+
extension.config.lspServers
|
|
971
|
+
);
|
|
972
|
+
}
|
|
973
|
+
return files;
|
|
974
|
+
}
|
|
975
|
+
addManifestFileReference(files, extensionPath, value) {
|
|
976
|
+
if (typeof value !== "string") return;
|
|
977
|
+
files.add(
|
|
978
|
+
path3.isAbsolute(value) ? path3.resolve(value) : path3.resolve(extensionPath, value)
|
|
979
|
+
);
|
|
980
|
+
}
|
|
981
|
+
watchExtensionsParent() {
|
|
982
|
+
this.closeBootstrapWatcher();
|
|
983
|
+
const parentDir = path3.dirname(this.extensionsDir);
|
|
984
|
+
const dirBasename = path3.basename(this.extensionsDir);
|
|
985
|
+
const generation = this.watchGeneration;
|
|
986
|
+
this.bootstrapWatcher = watch(parentDir, {
|
|
987
|
+
ignoreInitial: true,
|
|
988
|
+
followSymlinks: false,
|
|
989
|
+
depth: 0,
|
|
990
|
+
ignored: /* @__PURE__ */ __name((filePath) => filePath !== parentDir && path3.basename(filePath) !== dirBasename, "ignored")
|
|
991
|
+
}).on("all", (_event, changedPath) => {
|
|
992
|
+
if (generation !== this.watchGeneration) return;
|
|
993
|
+
if (path3.basename(changedPath) !== dirBasename) return;
|
|
994
|
+
if (!fs3.existsSync(this.extensionsDir)) return;
|
|
995
|
+
this.refreshState.markExtensionsChanged("extension directory created");
|
|
996
|
+
queueMicrotask(() => {
|
|
997
|
+
if (this.watching) {
|
|
998
|
+
this.restartWatching();
|
|
999
|
+
}
|
|
1000
|
+
});
|
|
1001
|
+
}).on("error", (error) => {
|
|
1002
|
+
debugLogger4.warn("Extension bootstrap watcher error:", error);
|
|
1003
|
+
});
|
|
1004
|
+
}
|
|
1005
|
+
getRefreshAction(event, changedPath) {
|
|
1006
|
+
if (this.staleFiles.has(changedPath)) {
|
|
1007
|
+
return "stale";
|
|
1008
|
+
}
|
|
1009
|
+
if (changedPath === path3.resolve(this.extensionsDir)) {
|
|
1010
|
+
if (event === "unlinkDir") {
|
|
1011
|
+
this.watchExtensionsParent();
|
|
1012
|
+
return "stale";
|
|
1013
|
+
}
|
|
1014
|
+
return false;
|
|
1015
|
+
}
|
|
1016
|
+
if (isSubpath(this.extensionsDir, changedPath)) {
|
|
1017
|
+
return this.getUserExtensionRefreshAction(event, changedPath);
|
|
1018
|
+
}
|
|
1019
|
+
return this.getLinkedExtensionRefreshAction(changedPath);
|
|
1020
|
+
}
|
|
1021
|
+
getUserExtensionRefreshAction(event, changedPath) {
|
|
1022
|
+
const relative2 = path3.relative(this.extensionsDir, changedPath);
|
|
1023
|
+
const parts = relative2.split(path3.sep).filter(Boolean);
|
|
1024
|
+
if (parts.length === 1) {
|
|
1025
|
+
if (TOP_LEVEL_FILES.has(parts[0])) return "stale";
|
|
1026
|
+
if (event === "addDir" || event === "unlinkDir") return "stale";
|
|
1027
|
+
return false;
|
|
1028
|
+
}
|
|
1029
|
+
if (!fs3.existsSync(
|
|
1030
|
+
path3.join(this.extensionsDir, parts[0], "qwen-extension.json")
|
|
1031
|
+
)) {
|
|
1032
|
+
return "stale";
|
|
1033
|
+
}
|
|
1034
|
+
const runtimePath = parts.slice(1);
|
|
1035
|
+
return this.getRuntimePathRefreshAction(runtimePath);
|
|
1036
|
+
}
|
|
1037
|
+
getLinkedExtensionRefreshAction(changedPath) {
|
|
1038
|
+
for (const extension of this.config.getActiveExtensions()) {
|
|
1039
|
+
if (extension.installMetadata?.type !== "link") continue;
|
|
1040
|
+
const rawSource = extension.installMetadata.source;
|
|
1041
|
+
const source = rawSource ? path3.resolve(rawSource) : void 0;
|
|
1042
|
+
if (!source || !isSubpath(source, changedPath)) continue;
|
|
1043
|
+
const relative2 = path3.relative(source, changedPath);
|
|
1044
|
+
const parts = relative2.split(path3.sep).filter(Boolean);
|
|
1045
|
+
return parts.length === 0 ? "stale" : this.getRuntimePathRefreshAction(parts);
|
|
1046
|
+
}
|
|
1047
|
+
return false;
|
|
1048
|
+
}
|
|
1049
|
+
getRuntimePathRefreshAction(parts) {
|
|
1050
|
+
if (EXTENSION_FILES.has(parts[0]) || STALE_DIRS.has(parts[0])) {
|
|
1051
|
+
return "stale";
|
|
1052
|
+
}
|
|
1053
|
+
if (AUTO_REFRESH_DIRS.has(parts[0])) {
|
|
1054
|
+
return "auto";
|
|
1055
|
+
}
|
|
1056
|
+
return false;
|
|
1057
|
+
}
|
|
1058
|
+
isIgnored(filePath) {
|
|
1059
|
+
const normalized = filePath.replace(/\\/g, "/");
|
|
1060
|
+
const searchablePath = `/${normalized}/`;
|
|
1061
|
+
if (searchablePath.includes("/node_modules/") || searchablePath.includes("/.git/")) {
|
|
1062
|
+
return true;
|
|
1063
|
+
}
|
|
1064
|
+
const basename4 = normalized.split("/").pop() ?? "";
|
|
1065
|
+
return basename4 === ".DS_Store" || basename4.endsWith("~") || basename4.endsWith(".swp") || basename4.endsWith(".tmp");
|
|
1066
|
+
}
|
|
1067
|
+
subscribeExtensionManagerMutations() {
|
|
1068
|
+
const manager = this.config.getExtensionManager();
|
|
1069
|
+
this.mutationListenerDisposer = manager.addMutationListener(
|
|
1070
|
+
(event) => {
|
|
1071
|
+
if (event.phase === "start") {
|
|
1072
|
+
this.mutationSuppressionEnds.set(
|
|
1073
|
+
event.id,
|
|
1074
|
+
this.refreshState.beginSuppression(
|
|
1075
|
+
() => this.restartAfterMutation()
|
|
1076
|
+
)
|
|
1077
|
+
);
|
|
1078
|
+
return;
|
|
1079
|
+
}
|
|
1080
|
+
const endSuppression = this.mutationSuppressionEnds.get(event.id);
|
|
1081
|
+
if (!endSuppression) {
|
|
1082
|
+
return;
|
|
1083
|
+
}
|
|
1084
|
+
this.mutationSuppressionEnds.delete(event.id);
|
|
1085
|
+
endSuppression();
|
|
1086
|
+
}
|
|
1087
|
+
);
|
|
1088
|
+
}
|
|
1089
|
+
endPendingMutationSuppressions() {
|
|
1090
|
+
const endSuppressions = [...this.mutationSuppressionEnds.values()];
|
|
1091
|
+
this.mutationSuppressionEnds.clear();
|
|
1092
|
+
for (const endSuppression of endSuppressions) {
|
|
1093
|
+
endSuppression();
|
|
1094
|
+
}
|
|
1095
|
+
}
|
|
1096
|
+
restartAfterMutation() {
|
|
1097
|
+
if (this.watching) {
|
|
1098
|
+
this.restartWatching();
|
|
1099
|
+
}
|
|
1100
|
+
}
|
|
1101
|
+
closeBootstrapWatcher() {
|
|
1102
|
+
const bootstrapWatcher = this.bootstrapWatcher;
|
|
1103
|
+
this.bootstrapWatcher = void 0;
|
|
1104
|
+
bootstrapWatcher?.close().catch((error) => {
|
|
1105
|
+
debugLogger4.warn("Extension bootstrap watcher close error:", error);
|
|
1106
|
+
});
|
|
1107
|
+
}
|
|
1108
|
+
};
|
|
1109
|
+
|
|
1110
|
+
// packages/cli/src/startup/worktreeStartup.ts
|
|
1111
|
+
init_esbuild_shims();
|
|
1112
|
+
import * as path4 from "node:path";
|
|
1113
|
+
var debugLogger5 = createDebugLogger("WORKTREE_STARTUP");
|
|
835
1114
|
var DETACHED_HEAD = "HEAD";
|
|
836
1115
|
async function setupStartupWorktree(rawInput, options) {
|
|
837
1116
|
if (rawInput === void 0) return null;
|
|
@@ -858,7 +1137,7 @@ async function setupStartupWorktree(rawInput, options) {
|
|
|
858
1137
|
error: `--worktree: ${launchCwd} is not a git repository. Run \`git init\` first or relaunch from inside one.`
|
|
859
1138
|
};
|
|
860
1139
|
}
|
|
861
|
-
const repoRoot =
|
|
1140
|
+
const repoRoot = path4.resolve(rawRepoRoot);
|
|
862
1141
|
const service = repoRoot === launchCwd ? probe : new GitWorktreeService(repoRoot);
|
|
863
1142
|
const prNumber = GitWorktreeService.parsePRReference(trimmed);
|
|
864
1143
|
const isPullRequest = prNumber !== null;
|
|
@@ -894,7 +1173,7 @@ async function setupStartupWorktree(rawInput, options) {
|
|
|
894
1173
|
error: `--worktree: ${expectedWorktreePath} is already a git worktree, but its branch is ${registered.branch} (expected ${expectedBranch}). Refusing to re-attach. Resolve the conflict manually (e.g. \`git worktree remove ${expectedWorktreePath}\`).`
|
|
895
1174
|
};
|
|
896
1175
|
}
|
|
897
|
-
const worktreePath2 =
|
|
1176
|
+
const worktreePath2 = path4.resolve(expectedWorktreePath);
|
|
898
1177
|
try {
|
|
899
1178
|
process.chdir(worktreePath2);
|
|
900
1179
|
} catch (error) {
|
|
@@ -903,7 +1182,7 @@ async function setupStartupWorktree(rawInput, options) {
|
|
|
903
1182
|
error: `--worktree: failed to chdir into ${worktreePath2} (${error instanceof Error ? error.message : String(error)}).`
|
|
904
1183
|
};
|
|
905
1184
|
}
|
|
906
|
-
|
|
1185
|
+
debugLogger5.debug(
|
|
907
1186
|
`setupStartupWorktree: re-attached to existing worktree at ${worktreePath2} (branch=${registered.branch})`
|
|
908
1187
|
);
|
|
909
1188
|
return {
|
|
@@ -944,7 +1223,7 @@ async function setupStartupWorktree(rawInput, options) {
|
|
|
944
1223
|
error: `--worktree: ${result.error ?? "failed to create worktree."}`
|
|
945
1224
|
};
|
|
946
1225
|
}
|
|
947
|
-
const worktreePath =
|
|
1226
|
+
const worktreePath = path4.resolve(result.worktree.path);
|
|
948
1227
|
try {
|
|
949
1228
|
process.chdir(worktreePath);
|
|
950
1229
|
} catch (error) {
|
|
@@ -981,7 +1260,7 @@ async function persistStartupWorktreeSidecar(config, context) {
|
|
|
981
1260
|
try {
|
|
982
1261
|
previous = await readWorktreeSession(sidecarPath);
|
|
983
1262
|
} catch (error) {
|
|
984
|
-
|
|
1263
|
+
debugLogger5.warn(
|
|
985
1264
|
`persistStartupWorktreeSidecar: failed to read existing sidecar at ${sidecarPath} \u2014 treating as "no previous worktree" and proceeding: ${error}`
|
|
986
1265
|
);
|
|
987
1266
|
previous = null;
|
|
@@ -1000,7 +1279,7 @@ async function persistStartupWorktreeSidecar(config, context) {
|
|
|
1000
1279
|
context.repoRoot,
|
|
1001
1280
|
context.worktreePath
|
|
1002
1281
|
]).catch((error) => {
|
|
1003
|
-
|
|
1282
|
+
debugLogger5.warn(
|
|
1004
1283
|
`persistStartupWorktreeSidecar: failed to check owner runtime ${owner}: ${error}`
|
|
1005
1284
|
);
|
|
1006
1285
|
return true;
|
|
@@ -1054,7 +1333,7 @@ function takeUtf8Prefix(value, maxBytes) {
|
|
|
1054
1333
|
__name(takeUtf8Prefix, "takeUtf8Prefix");
|
|
1055
1334
|
async function readStdin() {
|
|
1056
1335
|
const MAX_STDIN_SIZE = 8 * 1024 * 1024;
|
|
1057
|
-
return new Promise((
|
|
1336
|
+
return new Promise((resolve3, reject) => {
|
|
1058
1337
|
let data = "";
|
|
1059
1338
|
let totalSize = 0;
|
|
1060
1339
|
let settled = false;
|
|
@@ -1091,7 +1370,7 @@ async function readStdin() {
|
|
|
1091
1370
|
if (settled) return;
|
|
1092
1371
|
settled = true;
|
|
1093
1372
|
cleanup();
|
|
1094
|
-
|
|
1373
|
+
resolve3(data);
|
|
1095
1374
|
}, "finish");
|
|
1096
1375
|
const onEnd = /* @__PURE__ */ __name(() => {
|
|
1097
1376
|
finish();
|
|
@@ -1163,11 +1442,11 @@ async function relaunchAppInChildProcess(additionalNodeArgs, additionalScriptArg
|
|
|
1163
1442
|
child.kill();
|
|
1164
1443
|
throw err;
|
|
1165
1444
|
}
|
|
1166
|
-
return new Promise((
|
|
1445
|
+
return new Promise((resolve3, reject) => {
|
|
1167
1446
|
child.on("error", reject);
|
|
1168
1447
|
child.on("close", (code) => {
|
|
1169
1448
|
process.stdin.resume();
|
|
1170
|
-
|
|
1449
|
+
resolve3(code ?? 1);
|
|
1171
1450
|
});
|
|
1172
1451
|
});
|
|
1173
1452
|
}, "runner");
|
|
@@ -1180,8 +1459,8 @@ init_esbuild_shims();
|
|
|
1180
1459
|
var import_shell_quote = __toESM(require_shell_quote(), 1);
|
|
1181
1460
|
import { exec, execSync, spawn as spawn2 } from "node:child_process";
|
|
1182
1461
|
import os2 from "node:os";
|
|
1183
|
-
import
|
|
1184
|
-
import
|
|
1462
|
+
import path6 from "node:path";
|
|
1463
|
+
import fs4 from "node:fs";
|
|
1185
1464
|
import { promisify } from "node:util";
|
|
1186
1465
|
import { randomBytes } from "node:crypto";
|
|
1187
1466
|
|
|
@@ -1201,10 +1480,10 @@ __name(parseSandboxImageName, "parseSandboxImageName");
|
|
|
1201
1480
|
|
|
1202
1481
|
// packages/cli/src/utils/sandbox-path.ts
|
|
1203
1482
|
init_esbuild_shims();
|
|
1204
|
-
import
|
|
1483
|
+
import path5 from "node:path";
|
|
1205
1484
|
function isContainerPathWithinWorkdir(containerWorkdir, containerPath) {
|
|
1206
1485
|
const normalize = /* @__PURE__ */ __name((value) => {
|
|
1207
|
-
const normalized =
|
|
1486
|
+
const normalized = path5.posix.normalize(value.replace(/\\/g, "/")).replace(/\/+$/, "").toLowerCase();
|
|
1208
1487
|
return normalized || "/";
|
|
1209
1488
|
}, "normalize");
|
|
1210
1489
|
const normalizedWorkdir = normalize(containerWorkdir);
|
|
@@ -1248,10 +1527,10 @@ function getContainerPath(hostPath) {
|
|
|
1248
1527
|
}
|
|
1249
1528
|
__name(getContainerPath, "getContainerPath");
|
|
1250
1529
|
function ensureDirectoryAndGetRealPath(dir) {
|
|
1251
|
-
if (!
|
|
1252
|
-
|
|
1530
|
+
if (!fs4.existsSync(dir)) {
|
|
1531
|
+
fs4.mkdirSync(dir, { recursive: true });
|
|
1253
1532
|
}
|
|
1254
|
-
return
|
|
1533
|
+
return fs4.realpathSync(dir);
|
|
1255
1534
|
}
|
|
1256
1535
|
__name(ensureDirectoryAndGetRealPath, "ensureDirectoryAndGetRealPath");
|
|
1257
1536
|
var LOCAL_DEV_SANDBOX_IMAGE_NAME = "qwen-code-sandbox";
|
|
@@ -1267,9 +1546,9 @@ var BUILTIN_SEATBELT_PROFILES = [
|
|
|
1267
1546
|
];
|
|
1268
1547
|
function resolveSeatbeltProfileFile(profile, importMetaUrl = import.meta.url) {
|
|
1269
1548
|
if (!BUILTIN_SEATBELT_PROFILES.includes(profile)) {
|
|
1270
|
-
return
|
|
1549
|
+
return path6.join(SETTINGS_DIRECTORY_NAME, `sandbox-macos-${profile}.sb`);
|
|
1271
1550
|
}
|
|
1272
|
-
return
|
|
1551
|
+
return path6.join(
|
|
1273
1552
|
resolveBundleDir(importMetaUrl),
|
|
1274
1553
|
`sandbox-macos-${profile}.sb`
|
|
1275
1554
|
);
|
|
@@ -1332,11 +1611,11 @@ function entrypoint(workdir, cliArgs) {
|
|
|
1332
1611
|
if (pythonPathSuffix) {
|
|
1333
1612
|
shellCmds.push(`export PYTHONPATH="$PYTHONPATH${pythonPathSuffix}";`);
|
|
1334
1613
|
}
|
|
1335
|
-
const projectSandboxBashrc =
|
|
1614
|
+
const projectSandboxBashrc = path6.join(
|
|
1336
1615
|
SETTINGS_DIRECTORY_NAME,
|
|
1337
1616
|
"sandbox.bashrc"
|
|
1338
1617
|
);
|
|
1339
|
-
if (
|
|
1618
|
+
if (fs4.existsSync(projectSandboxBashrc)) {
|
|
1340
1619
|
shellCmds.push(`source ${getContainerPath(projectSandboxBashrc)};`);
|
|
1341
1620
|
}
|
|
1342
1621
|
ports().forEach(
|
|
@@ -1359,7 +1638,7 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
1359
1638
|
}
|
|
1360
1639
|
const profile = process.env["SEATBELT_PROFILE"] ??= "permissive-open";
|
|
1361
1640
|
const profileFile = resolveSeatbeltProfileFile(profile);
|
|
1362
|
-
if (!
|
|
1641
|
+
if (!fs4.existsSync(profileFile)) {
|
|
1363
1642
|
throw new FatalSandboxError(
|
|
1364
1643
|
`Missing macos seatbelt profile file '${profileFile}'`
|
|
1365
1644
|
);
|
|
@@ -1371,30 +1650,30 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
1371
1650
|
].join(" ");
|
|
1372
1651
|
const qwenDir = Storage.getGlobalQwenDir();
|
|
1373
1652
|
const runtimeDir = Storage.getRuntimeBaseDir();
|
|
1374
|
-
|
|
1375
|
-
|
|
1653
|
+
fs4.mkdirSync(qwenDir, { recursive: true });
|
|
1654
|
+
fs4.mkdirSync(runtimeDir, { recursive: true });
|
|
1376
1655
|
const args2 = [
|
|
1377
1656
|
"-D",
|
|
1378
|
-
`TARGET_DIR=${
|
|
1657
|
+
`TARGET_DIR=${fs4.realpathSync(process.cwd())}`,
|
|
1379
1658
|
"-D",
|
|
1380
|
-
`TMP_DIR=${
|
|
1659
|
+
`TMP_DIR=${fs4.realpathSync(os2.tmpdir())}`,
|
|
1381
1660
|
"-D",
|
|
1382
|
-
`HOME_DIR=${
|
|
1661
|
+
`HOME_DIR=${fs4.realpathSync(os2.homedir())}`,
|
|
1383
1662
|
"-D",
|
|
1384
|
-
`CACHE_DIR=${
|
|
1663
|
+
`CACHE_DIR=${fs4.realpathSync(execSync(`getconf DARWIN_USER_CACHE_DIR`).toString().trim())}`,
|
|
1385
1664
|
"-D",
|
|
1386
|
-
`QWEN_DIR=${
|
|
1665
|
+
`QWEN_DIR=${fs4.realpathSync(qwenDir)}`,
|
|
1387
1666
|
"-D",
|
|
1388
|
-
`RUNTIME_DIR=${
|
|
1667
|
+
`RUNTIME_DIR=${fs4.realpathSync(runtimeDir)}`
|
|
1389
1668
|
];
|
|
1390
1669
|
const MAX_INCLUDE_DIRS = 5;
|
|
1391
|
-
const targetDir =
|
|
1670
|
+
const targetDir = fs4.realpathSync(cliConfig?.getTargetDir() || "");
|
|
1392
1671
|
const includedDirs = [];
|
|
1393
1672
|
if (cliConfig) {
|
|
1394
1673
|
const workspaceContext = cliConfig.getWorkspaceContext();
|
|
1395
1674
|
const directories = workspaceContext.getDirectories();
|
|
1396
1675
|
for (const dir of directories) {
|
|
1397
|
-
const realDir =
|
|
1676
|
+
const realDir = fs4.realpathSync(dir);
|
|
1398
1677
|
if (realDir !== targetDir) {
|
|
1399
1678
|
includedDirs.push(realDir);
|
|
1400
1679
|
}
|
|
@@ -1467,23 +1746,23 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
1467
1746
|
sandboxProcess2 = spawn2(config.command, args2, {
|
|
1468
1747
|
stdio: "inherit"
|
|
1469
1748
|
});
|
|
1470
|
-
return new Promise((
|
|
1749
|
+
return new Promise((resolve3, reject) => {
|
|
1471
1750
|
sandboxProcess2?.on("error", reject);
|
|
1472
1751
|
sandboxProcess2?.on("close", (code) => {
|
|
1473
1752
|
process.stdin.resume();
|
|
1474
|
-
|
|
1753
|
+
resolve3(code ?? 1);
|
|
1475
1754
|
});
|
|
1476
1755
|
});
|
|
1477
1756
|
}
|
|
1478
1757
|
writeStderrLine(`hopping into sandbox (command: ${config.command}) ...`);
|
|
1479
|
-
const gcPath =
|
|
1480
|
-
const projectSandboxDockerfile =
|
|
1758
|
+
const gcPath = fs4.realpathSync(process.argv[1]);
|
|
1759
|
+
const projectSandboxDockerfile = path6.join(
|
|
1481
1760
|
SETTINGS_DIRECTORY_NAME,
|
|
1482
1761
|
"sandbox.Dockerfile"
|
|
1483
1762
|
);
|
|
1484
|
-
const isCustomProjectSandbox =
|
|
1763
|
+
const isCustomProjectSandbox = fs4.existsSync(projectSandboxDockerfile);
|
|
1485
1764
|
const image = config.image;
|
|
1486
|
-
const workdir =
|
|
1765
|
+
const workdir = path6.resolve(process.cwd());
|
|
1487
1766
|
const containerWorkdir = getContainerPath(workdir);
|
|
1488
1767
|
if (process.env["BUILD_SANDBOX"]) {
|
|
1489
1768
|
if (!gcPath.includes("qwen-code/packages/")) {
|
|
@@ -1494,13 +1773,13 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
1494
1773
|
writeStderrLine("building sandbox ...");
|
|
1495
1774
|
const gcRoot = gcPath.split("/packages/")[0];
|
|
1496
1775
|
let buildArgs = "";
|
|
1497
|
-
const projectSandboxDockerfile2 =
|
|
1776
|
+
const projectSandboxDockerfile2 = path6.join(
|
|
1498
1777
|
SETTINGS_DIRECTORY_NAME,
|
|
1499
1778
|
"sandbox.Dockerfile"
|
|
1500
1779
|
);
|
|
1501
1780
|
if (isCustomProjectSandbox) {
|
|
1502
1781
|
writeStderrLine(`using ${projectSandboxDockerfile2} for sandbox`);
|
|
1503
|
-
buildArgs += `-f ${
|
|
1782
|
+
buildArgs += `-f ${path6.resolve(projectSandboxDockerfile2)} -i ${image}`;
|
|
1504
1783
|
}
|
|
1505
1784
|
execSync(
|
|
1506
1785
|
`cd ${gcRoot} && node scripts/build_sandbox.js -s ${buildArgs}`,
|
|
@@ -1576,8 +1855,8 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
1576
1855
|
args.push("--env", `QWEN_RUNTIME_DIR=${runtimeBaseDirContainerPath}`);
|
|
1577
1856
|
}
|
|
1578
1857
|
args.push("--volume", `${os2.tmpdir()}:${getContainerPath(os2.tmpdir())}`);
|
|
1579
|
-
const gcloudConfigDir =
|
|
1580
|
-
if (
|
|
1858
|
+
const gcloudConfigDir = path6.join(os2.homedir(), ".config", "gcloud");
|
|
1859
|
+
if (fs4.existsSync(gcloudConfigDir)) {
|
|
1581
1860
|
args.push(
|
|
1582
1861
|
"--volume",
|
|
1583
1862
|
`${gcloudConfigDir}:${getContainerPath(gcloudConfigDir)}:ro`
|
|
@@ -1585,7 +1864,7 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
1585
1864
|
}
|
|
1586
1865
|
if (process.env["GOOGLE_APPLICATION_CREDENTIALS"]) {
|
|
1587
1866
|
const adcFile = process.env["GOOGLE_APPLICATION_CREDENTIALS"];
|
|
1588
|
-
if (
|
|
1867
|
+
if (fs4.existsSync(adcFile)) {
|
|
1589
1868
|
args.push("--volume", `${adcFile}:${getContainerPath(adcFile)}:ro`);
|
|
1590
1869
|
args.push(
|
|
1591
1870
|
"--env",
|
|
@@ -1598,12 +1877,12 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
1598
1877
|
if (mount.trim()) {
|
|
1599
1878
|
const { from, to, opts } = parseSandboxMountSpec(mount);
|
|
1600
1879
|
mount = `${from}:${to}:${opts}`;
|
|
1601
|
-
if (!
|
|
1880
|
+
if (!path6.isAbsolute(from)) {
|
|
1602
1881
|
throw new FatalSandboxError(
|
|
1603
1882
|
`Path '${from}' listed in SANDBOX_MOUNTS must be absolute`
|
|
1604
1883
|
);
|
|
1605
1884
|
}
|
|
1606
|
-
if (!
|
|
1885
|
+
if (!fs4.existsSync(from)) {
|
|
1607
1886
|
throw new FatalSandboxError(
|
|
1608
1887
|
`Missing mount path '${from}' listed in SANDBOX_MOUNTS`
|
|
1609
1888
|
);
|
|
@@ -1675,7 +1954,7 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
1675
1954
|
"QWEN_DEBUG_LOG_FILE",
|
|
1676
1955
|
"QWEN_CODE_LEGACY_MCP_BLOCKING"
|
|
1677
1956
|
]) {
|
|
1678
|
-
if (process.env[envVar]) {
|
|
1957
|
+
if (process.env[envVar] !== void 0) {
|
|
1679
1958
|
args.push("--env", `${envVar}=${process.env[envVar]}`);
|
|
1680
1959
|
}
|
|
1681
1960
|
}
|
|
@@ -1749,12 +2028,12 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
1749
2028
|
getContainerPath(workdir),
|
|
1750
2029
|
getContainerPath(virtualEnv)
|
|
1751
2030
|
)) {
|
|
1752
|
-
const sandboxVenvPath =
|
|
2031
|
+
const sandboxVenvPath = path6.resolve(
|
|
1753
2032
|
SETTINGS_DIRECTORY_NAME,
|
|
1754
2033
|
"sandbox.venv"
|
|
1755
2034
|
);
|
|
1756
|
-
if (!
|
|
1757
|
-
|
|
2035
|
+
if (!fs4.existsSync(sandboxVenvPath)) {
|
|
2036
|
+
fs4.mkdirSync(sandboxVenvPath, { recursive: true });
|
|
1758
2037
|
}
|
|
1759
2038
|
args.push("--volume", `${sandboxVenvPath}:${getContainerPath(virtualEnv)}`);
|
|
1760
2039
|
args.push("--env", `VIRTUAL_ENV=${getContainerPath(virtualEnv)}`);
|
|
@@ -1783,8 +2062,8 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
1783
2062
|
}
|
|
1784
2063
|
args.push("--env", `SANDBOX=${containerName}`);
|
|
1785
2064
|
if (config.command === "podman") {
|
|
1786
|
-
const emptyAuthFilePath =
|
|
1787
|
-
|
|
2065
|
+
const emptyAuthFilePath = path6.join(os2.tmpdir(), "empty_auth.json");
|
|
2066
|
+
fs4.writeFileSync(emptyAuthFilePath, "{}", "utf-8");
|
|
1788
2067
|
args.push("--authfile", emptyAuthFilePath);
|
|
1789
2068
|
}
|
|
1790
2069
|
let userFlag = "";
|
|
@@ -1855,7 +2134,7 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
1855
2134
|
sandboxProcess = spawn2(config.command, args, {
|
|
1856
2135
|
stdio: "inherit"
|
|
1857
2136
|
});
|
|
1858
|
-
return new Promise((
|
|
2137
|
+
return new Promise((resolve3, reject) => {
|
|
1859
2138
|
sandboxProcess.on("error", (err) => {
|
|
1860
2139
|
writeStderrLine(`Sandbox process error: ${err}`);
|
|
1861
2140
|
reject(err);
|
|
@@ -1867,13 +2146,13 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
1867
2146
|
`Sandbox process exited with code: ${code}, signal: ${signal}`
|
|
1868
2147
|
);
|
|
1869
2148
|
}
|
|
1870
|
-
|
|
2149
|
+
resolve3(code ?? 1);
|
|
1871
2150
|
});
|
|
1872
2151
|
});
|
|
1873
2152
|
}
|
|
1874
2153
|
__name(start_sandbox, "start_sandbox");
|
|
1875
2154
|
async function imageExists(sandbox, image) {
|
|
1876
|
-
return new Promise((
|
|
2155
|
+
return new Promise((resolve3) => {
|
|
1877
2156
|
const args = ["images", "-q", image];
|
|
1878
2157
|
const checkProcess = spawn2(sandbox, args);
|
|
1879
2158
|
let stdoutData = "";
|
|
@@ -1886,17 +2165,17 @@ async function imageExists(sandbox, image) {
|
|
|
1886
2165
|
writeStderrLine(
|
|
1887
2166
|
`Failed to start '${sandbox}' command for image check: ${err.message}`
|
|
1888
2167
|
);
|
|
1889
|
-
|
|
2168
|
+
resolve3(false);
|
|
1890
2169
|
});
|
|
1891
2170
|
checkProcess.on("close", () => {
|
|
1892
|
-
|
|
2171
|
+
resolve3(stdoutData.trim() !== "");
|
|
1893
2172
|
});
|
|
1894
2173
|
});
|
|
1895
2174
|
}
|
|
1896
2175
|
__name(imageExists, "imageExists");
|
|
1897
2176
|
async function pullImage(sandbox, image) {
|
|
1898
2177
|
writeStderrLine(`Attempting to pull image ${image} using ${sandbox}...`);
|
|
1899
|
-
return new Promise((
|
|
2178
|
+
return new Promise((resolve3) => {
|
|
1900
2179
|
const args = ["pull", image];
|
|
1901
2180
|
const pullProcess = spawn2(sandbox, args, { stdio: "pipe" });
|
|
1902
2181
|
let stderrData = "";
|
|
@@ -1912,13 +2191,13 @@ async function pullImage(sandbox, image) {
|
|
|
1912
2191
|
`Failed to start '${sandbox} pull ${image}' command: ${err.message}`
|
|
1913
2192
|
);
|
|
1914
2193
|
cleanup();
|
|
1915
|
-
|
|
2194
|
+
resolve3(false);
|
|
1916
2195
|
}, "onError");
|
|
1917
2196
|
const onClose = /* @__PURE__ */ __name((code) => {
|
|
1918
2197
|
if (code === 0) {
|
|
1919
2198
|
writeStderrLine(`Successfully pulled image ${image}.`);
|
|
1920
2199
|
cleanup();
|
|
1921
|
-
|
|
2200
|
+
resolve3(true);
|
|
1922
2201
|
} else {
|
|
1923
2202
|
writeStderrLine(
|
|
1924
2203
|
`Failed to pull image ${image}. '${sandbox} pull ${image}' exited with code ${code}.`
|
|
@@ -1926,7 +2205,7 @@ async function pullImage(sandbox, image) {
|
|
|
1926
2205
|
if (stderrData.trim()) {
|
|
1927
2206
|
}
|
|
1928
2207
|
cleanup();
|
|
1929
|
-
|
|
2208
|
+
resolve3(false);
|
|
1930
2209
|
}
|
|
1931
2210
|
}, "onClose");
|
|
1932
2211
|
const cleanup = /* @__PURE__ */ __name(() => {
|
|
@@ -1983,17 +2262,17 @@ __name(ensureSandboxImageIsPresent, "ensureSandboxImageIsPresent");
|
|
|
1983
2262
|
|
|
1984
2263
|
// packages/cli/src/utils/startupWarnings.ts
|
|
1985
2264
|
init_esbuild_shims();
|
|
1986
|
-
import
|
|
2265
|
+
import fs5 from "node:fs/promises";
|
|
1987
2266
|
import os3 from "node:os";
|
|
1988
2267
|
import { join as pathJoin } from "node:path";
|
|
1989
2268
|
var warningsFilePath = pathJoin(os3.tmpdir(), "qwen-code-warnings.txt");
|
|
1990
2269
|
async function getStartupWarnings() {
|
|
1991
2270
|
try {
|
|
1992
|
-
await
|
|
1993
|
-
const warningsContent = await
|
|
2271
|
+
await fs5.access(warningsFilePath);
|
|
2272
|
+
const warningsContent = await fs5.readFile(warningsFilePath, "utf-8");
|
|
1994
2273
|
const warnings = warningsContent.split("\n").filter((line) => line.trim() !== "");
|
|
1995
2274
|
try {
|
|
1996
|
-
await
|
|
2275
|
+
await fs5.unlink(warningsFilePath);
|
|
1997
2276
|
} catch {
|
|
1998
2277
|
warnings.push("Warning: Could not delete temporary warnings file.");
|
|
1999
2278
|
}
|
|
@@ -2009,15 +2288,15 @@ __name(getStartupWarnings, "getStartupWarnings");
|
|
|
2009
2288
|
|
|
2010
2289
|
// packages/cli/src/utils/userStartupWarnings.ts
|
|
2011
2290
|
init_esbuild_shims();
|
|
2012
|
-
import
|
|
2013
|
-
import
|
|
2291
|
+
import fs6 from "node:fs/promises";
|
|
2292
|
+
import path7 from "node:path";
|
|
2014
2293
|
var rootDirectoryCheck = {
|
|
2015
2294
|
id: "root-directory",
|
|
2016
2295
|
check: /* @__PURE__ */ __name(async (options) => {
|
|
2017
2296
|
try {
|
|
2018
|
-
const workspaceRealPath = await
|
|
2297
|
+
const workspaceRealPath = await fs6.realpath(options.workspaceRoot);
|
|
2019
2298
|
const errorMessage = "Warning: You are running Qwen Code in the root directory. Your entire folder structure will be used for context. It is strongly recommended to run in a project-specific directory.";
|
|
2020
|
-
if (
|
|
2299
|
+
if (path7.dirname(workspaceRealPath) === workspaceRealPath) {
|
|
2021
2300
|
return errorMessage;
|
|
2022
2301
|
}
|
|
2023
2302
|
return null;
|
|
@@ -2090,7 +2369,7 @@ function initializeWarningHandler() {
|
|
|
2090
2369
|
__name(initializeWarningHandler, "initializeWarningHandler");
|
|
2091
2370
|
|
|
2092
2371
|
// packages/cli/src/gemini.tsx
|
|
2093
|
-
var
|
|
2372
|
+
var debugLogger6 = createDebugLogger("STARTUP");
|
|
2094
2373
|
function clearCorruptionEnvVars() {
|
|
2095
2374
|
delete process.env[ENV_CORRUPTED_PATH];
|
|
2096
2375
|
delete process.env[ENV_WAS_RECOVERED];
|
|
@@ -2169,7 +2448,7 @@ function installInteractiveSignalHandlers(wasRaw) {
|
|
|
2169
2448
|
}
|
|
2170
2449
|
cleanupStarted = true;
|
|
2171
2450
|
void runExitCleanup().catch((error) => {
|
|
2172
|
-
|
|
2451
|
+
debugLogger6.error(`Error during ${signal} cleanup:`, error);
|
|
2173
2452
|
}).finally(() => {
|
|
2174
2453
|
process.exit(getSignalExitCode(signal));
|
|
2175
2454
|
});
|
|
@@ -2224,7 +2503,7 @@ async function main() {
|
|
|
2224
2503
|
await initializeI18n(
|
|
2225
2504
|
resolveLanguageSetting(settings.merged.general?.language)
|
|
2226
2505
|
);
|
|
2227
|
-
const { handleList: handleListExtensions } = await import("./list-
|
|
2506
|
+
const { handleList: handleListExtensions } = await import("./list-KIVFF3BB.js");
|
|
2228
2507
|
await handleListExtensions();
|
|
2229
2508
|
process.exit(0);
|
|
2230
2509
|
}
|
|
@@ -2238,7 +2517,7 @@ async function main() {
|
|
|
2238
2517
|
dns.setDefaultResultOrder(
|
|
2239
2518
|
validateDnsResolutionOrder(settings.merged.advanced?.dnsResolutionOrder)
|
|
2240
2519
|
);
|
|
2241
|
-
const { themeManager, AUTO_THEME_NAME } = await import("./theme-manager-
|
|
2520
|
+
const { themeManager, AUTO_THEME_NAME } = await import("./theme-manager-J7ANV4JR.js");
|
|
2242
2521
|
themeManager.loadCustomThemes(settings.merged.ui?.customThemes);
|
|
2243
2522
|
const configuredTheme = settings.merged.ui?.theme;
|
|
2244
2523
|
if (configuredTheme && configuredTheme !== AUTO_THEME_NAME) {
|
|
@@ -2340,7 +2619,7 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
2340
2619
|
const resolveIfPath = /* @__PURE__ */ __name((v) => {
|
|
2341
2620
|
if (typeof v !== "string" || v.length === 0) return v;
|
|
2342
2621
|
if (looksLikeInlineJson(v)) return v;
|
|
2343
|
-
return
|
|
2622
|
+
return path8.resolve(launchCwdForPaths, v);
|
|
2344
2623
|
}, "resolveIfPath");
|
|
2345
2624
|
argv.mcpConfig = resolveIfPath(argv.mcpConfig);
|
|
2346
2625
|
argv.openaiLoggingDir = resolveIfPath(argv.openaiLoggingDir);
|
|
@@ -2349,15 +2628,15 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
2349
2628
|
argv.telemetryOutfile = resolveIfPath(argv.telemetryOutfile);
|
|
2350
2629
|
if (Array.isArray(argv.includeDirectories)) {
|
|
2351
2630
|
argv.includeDirectories = argv.includeDirectories.map(
|
|
2352
|
-
(d) => typeof d === "string" && d.length > 0 ?
|
|
2631
|
+
(d) => typeof d === "string" && d.length > 0 ? path8.resolve(launchCwdForPaths, d) : d
|
|
2353
2632
|
);
|
|
2354
2633
|
}
|
|
2355
2634
|
if (typeof argv.jsonSchema === "string") {
|
|
2356
2635
|
const trimmedSchema = argv.jsonSchema.trim();
|
|
2357
2636
|
if (trimmedSchema.startsWith("@")) {
|
|
2358
2637
|
const rel = trimmedSchema.slice(1);
|
|
2359
|
-
if (rel.length > 0 && !
|
|
2360
|
-
argv.jsonSchema = "@" +
|
|
2638
|
+
if (rel.length > 0 && !path8.isAbsolute(rel)) {
|
|
2639
|
+
argv.jsonSchema = "@" + path8.resolve(launchCwdForPaths, rel);
|
|
2361
2640
|
}
|
|
2362
2641
|
}
|
|
2363
2642
|
}
|
|
@@ -2388,7 +2667,7 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
2388
2667
|
);
|
|
2389
2668
|
let resolvedSessionId;
|
|
2390
2669
|
if (argv.resume === "") {
|
|
2391
|
-
const { showResumeSessionPicker } = await import("./StandaloneSessionPicker-
|
|
2670
|
+
const { showResumeSessionPicker } = await import("./StandaloneSessionPicker-TYUSSNJ6.js");
|
|
2392
2671
|
resolvedSessionId = await showResumeSessionPicker();
|
|
2393
2672
|
} else if (!isValidSessionId(argv.resume)) {
|
|
2394
2673
|
const sessionService = new SessionService(process.cwd());
|
|
@@ -2399,7 +2678,7 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
2399
2678
|
writeStderrLine(
|
|
2400
2679
|
`Multiple sessions found with title "${argv.resume}". Please select one:`
|
|
2401
2680
|
);
|
|
2402
|
-
const { showResumeSessionPicker } = await import("./StandaloneSessionPicker-
|
|
2681
|
+
const { showResumeSessionPicker } = await import("./StandaloneSessionPicker-TYUSSNJ6.js");
|
|
2403
2682
|
resolvedSessionId = await showResumeSessionPicker(
|
|
2404
2683
|
process.cwd(),
|
|
2405
2684
|
matches
|
|
@@ -2449,6 +2728,23 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
2449
2728
|
registerCleanup(disposeMcpHotReload);
|
|
2450
2729
|
}
|
|
2451
2730
|
registerLspHotReload(config, registerCleanup);
|
|
2731
|
+
const extensionRefreshState = new ExtensionRefreshState();
|
|
2732
|
+
const extensionFileWatcher = isBareMode(argv.bare) || config.isSafeMode() ? void 0 : new ExtensionFileWatcher(config, void 0, extensionRefreshState);
|
|
2733
|
+
extensionFileWatcher?.startWatching();
|
|
2734
|
+
if (extensionFileWatcher) {
|
|
2735
|
+
const restartExtensionWatcher = /* @__PURE__ */ __name(() => extensionFileWatcher.restartWatching(), "restartExtensionWatcher");
|
|
2736
|
+
extensionRefreshState.on(
|
|
2737
|
+
"extensions-reloaded" /* ExtensionsReloaded */,
|
|
2738
|
+
restartExtensionWatcher
|
|
2739
|
+
);
|
|
2740
|
+
registerCleanup(() => {
|
|
2741
|
+
extensionRefreshState.off(
|
|
2742
|
+
"extensions-reloaded" /* ExtensionsReloaded */,
|
|
2743
|
+
restartExtensionWatcher
|
|
2744
|
+
);
|
|
2745
|
+
extensionFileWatcher.stopWatching();
|
|
2746
|
+
});
|
|
2747
|
+
}
|
|
2452
2748
|
if (startupWorktreeContext) {
|
|
2453
2749
|
config.setPendingStartupWorktreeNotice(
|
|
2454
2750
|
buildStartupWorktreeNotice(startupWorktreeContext)
|
|
@@ -2470,7 +2766,7 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
2470
2766
|
)
|
|
2471
2767
|
);
|
|
2472
2768
|
} catch (error) {
|
|
2473
|
-
|
|
2769
|
+
debugLogger6.warn(
|
|
2474
2770
|
`--worktree sidecar persist failed (non-fatal, notice preserved): ${error instanceof Error ? error.message : String(error)}`
|
|
2475
2771
|
);
|
|
2476
2772
|
}
|
|
@@ -2501,24 +2797,24 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
2501
2797
|
registerCleanup(installInteractiveSignalHandlers(wasRaw));
|
|
2502
2798
|
}
|
|
2503
2799
|
if (config.isInteractive() && !wasRaw && process.stdin.isTTY) {
|
|
2504
|
-
const { startEarlyInputCapture, stopAndGetCapturedInput } = await import("./earlyInputCapture-
|
|
2505
|
-
const { detectAndEnableKittyProtocol } = await import("./kittyProtocolDetector-
|
|
2800
|
+
const { startEarlyInputCapture, stopAndGetCapturedInput } = await import("./earlyInputCapture-TTWXFIWO.js");
|
|
2801
|
+
const { detectAndEnableKittyProtocol } = await import("./kittyProtocolDetector-HCNNKJTI.js");
|
|
2506
2802
|
process.stdin.setRawMode(true);
|
|
2507
2803
|
startEarlyInputCapture();
|
|
2508
2804
|
registerCleanup(() => stopAndGetCapturedInput());
|
|
2509
2805
|
kittyProtocolDetectionComplete = detectAndEnableKittyProtocol();
|
|
2510
2806
|
if (!configuredTheme || configuredTheme === AUTO_THEME_NAME) {
|
|
2511
2807
|
themeAutoDetectionComplete = themeManager.resolveAutoThemeAsync().catch((err) => {
|
|
2512
|
-
|
|
2808
|
+
debugLogger6.warn("Async theme auto-detection failed:", err);
|
|
2513
2809
|
});
|
|
2514
2810
|
}
|
|
2515
2811
|
}
|
|
2516
2812
|
if (config.isInteractive()) {
|
|
2517
|
-
const { setMaxSizedBoxDebugging } = await import("./MaxSizedBox-
|
|
2813
|
+
const { setMaxSizedBoxDebugging } = await import("./MaxSizedBox-4CX4IQWE.js");
|
|
2518
2814
|
setMaxSizedBoxDebugging(isDebugMode3);
|
|
2519
2815
|
}
|
|
2520
2816
|
const inputFormat = process.stdin.isTTY ? "text" /* TEXT */ : typeof config.getInputFormat === "function" ? config.getInputFormat() : "text" /* TEXT */;
|
|
2521
|
-
const { initializeApp } = await import("./initializer-
|
|
2817
|
+
const { initializeApp } = await import("./initializer-LGQGC7ZT.js");
|
|
2522
2818
|
let input = config.getQuestion();
|
|
2523
2819
|
const hasRemoteInput = Boolean(config.getInputFile?.());
|
|
2524
2820
|
const deferIdeConnection = config.isInteractive() && !config.getExperimentalZedIntegration() && !input && !hasRemoteInput;
|
|
@@ -2527,7 +2823,7 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
2527
2823
|
});
|
|
2528
2824
|
profileCheckpoint("after_initialize_app");
|
|
2529
2825
|
if (config.getExperimentalZedIntegration()) {
|
|
2530
|
-
const { runAcpAgent } = await import("./acpAgent-
|
|
2826
|
+
const { runAcpAgent } = await import("./acpAgent-5HJEXOPR.js");
|
|
2531
2827
|
await runAcpAgent(config, settings, argv);
|
|
2532
2828
|
await runExitCleanup();
|
|
2533
2829
|
process.exit(0);
|
|
@@ -2566,7 +2862,7 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
2566
2862
|
setInteractiveMode(true);
|
|
2567
2863
|
await kittyProtocolDetectionComplete;
|
|
2568
2864
|
await themeAutoDetectionComplete;
|
|
2569
|
-
const { startInteractiveUI } = await import("./startInteractiveUI-
|
|
2865
|
+
const { startInteractiveUI } = await import("./startInteractiveUI-DXR4K6T5.js");
|
|
2570
2866
|
await startInteractiveUI(
|
|
2571
2867
|
config,
|
|
2572
2868
|
settings,
|
|
@@ -2574,7 +2870,8 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
2574
2870
|
process.cwd(),
|
|
2575
2871
|
initializationResult,
|
|
2576
2872
|
{
|
|
2577
|
-
postRenderConnectIde: deferIdeConnection
|
|
2873
|
+
postRenderConnectIde: deferIdeConnection,
|
|
2874
|
+
extensionRefreshState
|
|
2578
2875
|
}
|
|
2579
2876
|
);
|
|
2580
2877
|
clearCorruptionEnvVars();
|
|
@@ -2583,9 +2880,13 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
2583
2880
|
clearCorruptionEnvVars();
|
|
2584
2881
|
if (config.getDebugMode()) {
|
|
2585
2882
|
writeStderrLine("Debug mode enabled");
|
|
2586
|
-
|
|
2587
|
-
|
|
2588
|
-
|
|
2883
|
+
if (isDebugLogFileEnabled()) {
|
|
2884
|
+
writeStderrLine(
|
|
2885
|
+
`Logging to: ${Storage.getDebugLogPath(config.getSessionId())}`
|
|
2886
|
+
);
|
|
2887
|
+
} else {
|
|
2888
|
+
writeStderrLine("Debug log file disabled by QWEN_DEBUG_LOG_FILE");
|
|
2889
|
+
}
|
|
2589
2890
|
if (isDebugLoggingDegraded()) {
|
|
2590
2891
|
writeStderrLine(
|
|
2591
2892
|
"Warning: Debug logging is degraded (write failures occurred)"
|
|
@@ -2622,7 +2923,7 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
2622
2923
|
${input}`;
|
|
2623
2924
|
}
|
|
2624
2925
|
}
|
|
2625
|
-
const { validateNonInteractiveAuth } = await import("./validateNonInterActiveAuth-
|
|
2926
|
+
const { validateNonInteractiveAuth } = await import("./validateNonInterActiveAuth-6DGGGE4A.js");
|
|
2626
2927
|
const nonInteractiveConfig = await validateNonInteractiveAuth(
|
|
2627
2928
|
settings.merged.security?.auth?.useExternal,
|
|
2628
2929
|
config,
|
|
@@ -2631,7 +2932,7 @@ ${input}`;
|
|
|
2631
2932
|
const prompt_id = createNonInteractivePromptId(config.getSessionId());
|
|
2632
2933
|
if (inputFormat === "stream-json" /* STREAM_JSON */) {
|
|
2633
2934
|
const trimmedInput = (input ?? "").trim();
|
|
2634
|
-
const { runNonInteractiveStreamJson } = await import("./session-
|
|
2935
|
+
const { runNonInteractiveStreamJson } = await import("./session-4GGYGOWY.js");
|
|
2635
2936
|
await runNonInteractiveStreamJson(
|
|
2636
2937
|
nonInteractiveConfig,
|
|
2637
2938
|
trimmedInput.length > 0 ? trimmedInput : "",
|
|
@@ -2654,8 +2955,8 @@ ${input}`;
|
|
|
2654
2955
|
auth_type: config.getContentGeneratorConfig()?.authType,
|
|
2655
2956
|
prompt_length: input.length
|
|
2656
2957
|
});
|
|
2657
|
-
|
|
2658
|
-
const { runNonInteractive } = await import("./nonInteractiveCli-
|
|
2958
|
+
debugLogger6.debug(`Session ID: ${config.getSessionId()}`);
|
|
2959
|
+
const { runNonInteractive } = await import("./nonInteractiveCli-NAHUR2X6.js");
|
|
2659
2960
|
const exitCode = await runNonInteractive(
|
|
2660
2961
|
nonInteractiveConfig,
|
|
2661
2962
|
settings,
|
|
@@ -2672,28 +2973,31 @@ function createNonInteractivePromptId(sessionId) {
|
|
|
2672
2973
|
}
|
|
2673
2974
|
__name(createNonInteractivePromptId, "createNonInteractivePromptId");
|
|
2674
2975
|
function registerLspHotReload(config, registerCleanup2) {
|
|
2675
|
-
|
|
2976
|
+
const lspClient = config.getLspClient?.();
|
|
2977
|
+
const runtimeConfig = config;
|
|
2978
|
+
const reinitializeLsp = runtimeConfig.reinitializeLsp;
|
|
2979
|
+
if (config.isLspEnabled?.() !== true || !lspClient?.reinitialize || !reinitializeLsp) {
|
|
2676
2980
|
return;
|
|
2677
2981
|
}
|
|
2678
2982
|
const lspConfigWatcher = new LspConfigWatcher(config.getProjectRoot());
|
|
2679
|
-
|
|
2983
|
+
debugLogger6.info(
|
|
2680
2984
|
`Registering LSP config hot reload watcher for ${config.getProjectRoot()}`
|
|
2681
2985
|
);
|
|
2682
2986
|
lspConfigWatcher.startWatching(async (event) => {
|
|
2683
2987
|
if (event.changeType === "invalid") {
|
|
2684
|
-
|
|
2988
|
+
debugLogger6.warn(`Invalid LSP config file ${event.path}: ${event.error}`);
|
|
2685
2989
|
appEvents.emit("log-error" /* LogError */, event.error);
|
|
2686
2990
|
return;
|
|
2687
2991
|
}
|
|
2688
|
-
|
|
2992
|
+
debugLogger6.info(
|
|
2689
2993
|
`Reloading LSP server settings: changeType=${event.changeType}, path=${event.path}`
|
|
2690
2994
|
);
|
|
2691
2995
|
let errorReported = false;
|
|
2692
2996
|
try {
|
|
2693
|
-
const result = await
|
|
2997
|
+
const result = await reinitializeLsp();
|
|
2694
2998
|
if (result) {
|
|
2695
2999
|
const failedServers = getRuntimeReloadFailedNames(result.reconcile);
|
|
2696
|
-
|
|
3000
|
+
debugLogger6.info(
|
|
2697
3001
|
`Reloaded LSP server settings: added=${formatRuntimeReloadNames(
|
|
2698
3002
|
result.reconcile.added
|
|
2699
3003
|
)}, removed=${formatRuntimeReloadNames(
|
|
@@ -2725,13 +3029,13 @@ function registerLspHotReload(config, registerCleanup2) {
|
|
|
2725
3029
|
throw new Error(message);
|
|
2726
3030
|
}
|
|
2727
3031
|
} else {
|
|
2728
|
-
|
|
3032
|
+
debugLogger6.info(
|
|
2729
3033
|
"Skipped LSP server settings reload because LSP is disabled or no client is available"
|
|
2730
3034
|
);
|
|
2731
3035
|
}
|
|
2732
3036
|
appEvents.emit("lsp-status-changed" /* LspStatusChanged */);
|
|
2733
3037
|
} catch (error) {
|
|
2734
|
-
|
|
3038
|
+
debugLogger6.warn("Failed to reload LSP server settings:", error);
|
|
2735
3039
|
if (!errorReported) {
|
|
2736
3040
|
const message = error instanceof Error ? `Failed to reload LSP server settings: ${error.message}. Some LSP servers may have been partially updated. Run with --debug for details.` : "Failed to reload LSP server settings; some LSP servers may have been partially updated. Run with --debug for details.";
|
|
2737
3041
|
appEvents.emit("log-error" /* LogError */, message);
|