@qwen-code/qwen-code 0.19.10 → 0.19.11-nightly.20260718.767a32484
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/docs/configuration/model-providers.md +11 -0
- package/bundled/qc-helper/docs/configuration/settings.md +15 -14
- package/bundled/qc-helper/docs/features/approval-mode.md +2 -2
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +30 -0
- package/bundled/qc-helper/docs/features/channels/overview.md +66 -17
- package/bundled/qc-helper/docs/features/channels/wecom.md +8 -7
- package/bundled/qc-helper/docs/features/sandbox.md +2 -0
- package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +42 -7
- package/bundled/qc-helper/docs/qwen-serve.md +77 -46
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
- package/bundled/review/SKILL.md +163 -403
- package/chunks/{MaxSizedBox-67ODZ4SZ.js → MaxSizedBox-ZFHA4QEQ.js} +30 -30
- package/chunks/{StandaloneSessionPicker-SIPBQT5Z.js → StandaloneSessionPicker-YRWOQVQA.js} +44 -44
- package/chunks/{acpAgent-VPZJXLFX.js → acpAgent-U2P2IESZ.js} +1423 -487
- package/chunks/{agent-Z7NWL6XL.js → agent-GQXX6X5Y.js} +26 -26
- package/chunks/{agent-headless-73HZ6ROQ.js → agent-headless-3572NBCK.js} +26 -26
- package/chunks/{anthropicContentGenerator-56U3YCP2.js → anthropicContentGenerator-Y65DMM64.js} +103 -18
- package/chunks/{artifact-tool-BWZZJ42H.js → artifact-tool-WR7I2XON.js} +2 -2
- package/chunks/{askUserQuestion-WU3S5A5T.js → askUserQuestion-B4FUTPHD.js} +2 -44
- package/chunks/{bridge-XFKW6S7Q.js → bridge-N5RMGD7G.js} +31 -33
- package/chunks/{ca-C2JTT2N5.js → ca-M3GQQ26D.js} +7 -2
- package/chunks/channel-worker-group-HZVJKLGX.js +21 -0
- package/chunks/{channel-worker-manager-5RWKSGEU.js → channel-worker-manager-3WDK4HNS.js} +34 -10
- package/chunks/{channel-worker-supervisor-PCDAZN4D.js → channel-worker-supervisor-U2W6Q5F7.js} +6 -4
- package/chunks/{chunk-YYPXHMWO.js → chunk-2XRGFF5K.js} +6 -6
- package/chunks/{chunk-ZKMGAFYV.js → chunk-2YSZE74N.js} +2 -2
- package/chunks/{chunk-L5U3ELZX.js → chunk-335ECZTA.js} +1 -1
- package/chunks/{chunk-5EBKKSBX.js → chunk-336KPNNV.js} +2 -2
- package/chunks/{chunk-Q5GLXH5Q.js → chunk-3CL5SEDT.js} +6 -6
- package/chunks/{chunk-2FO5GFKZ.js → chunk-3DJY4IFO.js} +1 -1
- package/chunks/{chunk-CJFNEBYB.js → chunk-3NWYQ7FX.js} +2 -2
- package/chunks/{chunk-WIASPMLX.js → chunk-3X2CFOUM.js} +358 -298
- package/chunks/{chunk-K7CRWKOE.js → chunk-3YJZ6WNY.js} +5812 -4520
- package/chunks/{chunk-Y66VOBRP.js → chunk-4CA4WUMS.js} +2 -2
- package/chunks/{chunk-LQIDP6K5.js → chunk-4CHDYDG3.js} +1 -1
- package/chunks/{chunk-TISZXPAX.js → chunk-4HCYNDMG.js} +1 -1
- package/chunks/chunk-4JBTZBCW.js +140 -0
- package/chunks/{chunk-TV6K2FB4.js → chunk-4RPARQ5D.js} +2 -2
- package/chunks/{chunk-RCEEXIOO.js → chunk-4XCVGEEX.js} +3 -3
- package/chunks/{chunk-N6FXRR6P.js → chunk-57RWF6R7.js} +1 -1
- package/chunks/chunk-5O34IMY5.js +59 -0
- package/chunks/{chunk-5LROA5W4.js → chunk-5QRK2VZG.js} +8 -8
- package/chunks/{chunk-7L4XBYVW.js → chunk-632KROVU.js} +10 -3
- package/chunks/{chunk-65N2J6V2.js → chunk-64XGKNSI.js} +3 -3
- package/chunks/{chunk-P6LART6G.js → chunk-66IT3EY2.js} +1059 -129
- package/chunks/{chunk-FXMC7SL2.js → chunk-6ITLKEOZ.js} +3 -3
- package/chunks/{chunk-F7NXQH4Y.js → chunk-6YIRYY3P.js} +1 -1
- package/chunks/{chunk-GGJII3FM.js → chunk-6Z5NRZVU.js} +92 -3
- package/chunks/{chunk-DPFBNG72.js → chunk-AEKYFMYE.js} +1 -1
- package/chunks/{chunk-2UUAIFQO.js → chunk-ANRANWVE.js} +9 -1
- package/chunks/{chunk-SXU3KKNI.js → chunk-ATJ7H5AS.js} +419 -76
- package/chunks/{chunk-6GETGQWP.js → chunk-C5NSOSF4.js} +64 -18
- package/chunks/{chunk-TQBODCFD.js → chunk-CMVFTMRD.js} +251 -3
- package/chunks/{chunk-DK33QJ3V.js → chunk-CZSAIBUB.js} +733 -14
- package/chunks/{chunk-3MX7D6QN.js → chunk-DASWPKXR.js} +32 -4
- package/chunks/{chunk-JSJFKYWT.js → chunk-DPSHAB47.js} +2 -2
- package/chunks/{chunk-7MJAZMXK.js → chunk-ECZFTRTP.js} +29 -78
- package/chunks/{chunk-H3FQOPPS.js → chunk-EKG3BHQY.js} +4 -4
- package/chunks/{chunk-FSA7ERJ2.js → chunk-F2RR4HO2.js} +1 -1
- package/chunks/{chunk-EQY6POVO.js → chunk-F5XYN5VF.js} +2 -2
- package/chunks/chunk-FEOZBUMT.js +77 -0
- package/chunks/{chunk-L62SEJWY.js → chunk-FHUXCRAF.js} +4 -4
- package/chunks/{chunk-OFEVHGVU.js → chunk-FSJGBUQI.js} +818 -31
- package/chunks/{chunk-FBU7WRZI.js → chunk-FUTHTZVV.js} +1 -1
- package/chunks/{chunk-ZRKBI3DP.js → chunk-FZRES4GK.js} +1 -1
- package/chunks/{chunk-OKAIGAYW.js → chunk-G274ETR6.js} +3 -3
- package/chunks/{chunk-6GKMJPOC.js → chunk-GA3WUOO7.js} +5 -5
- package/chunks/{chunk-X362TMXZ.js → chunk-GAQOQMHY.js} +8 -6
- package/chunks/{chunk-WLXYAKV7.js → chunk-GG6RSNWS.js} +9 -4
- package/chunks/{chunk-CEW4HDPK.js → chunk-GUNTLALV.js} +2484 -362
- package/chunks/{chunk-LXLTBIDP.js → chunk-HCCR43AY.js} +1 -1
- package/chunks/{chunk-RDRVMDWV.js → chunk-HIMIG6PI.js} +11 -11
- package/chunks/{chunk-MO7O5722.js → chunk-HQXQCIT2.js} +45 -5
- package/chunks/{chunk-LTNI523B.js → chunk-HT7L5FCZ.js} +28 -5
- package/chunks/{chunk-7NAWTFVY.js → chunk-IENO2YAT.js} +3 -3
- package/chunks/{chunk-3XJFUTNM.js → chunk-IK5TYYVR.js} +59 -12
- package/chunks/{chunk-AAR5SGMD.js → chunk-IVKLDHU6.js} +7 -5
- package/chunks/{chunk-6W6DI34P.js → chunk-IX7O5WI3.js} +180 -8
- package/chunks/{chunk-SPJQO2CE.js → chunk-J2MKYJKZ.js} +2 -2
- package/chunks/{chunk-SPUYQB4T.js → chunk-JBAQ5BYX.js} +1 -1
- package/chunks/{chunk-TYLOFD2U.js → chunk-JCJPZMJV.js} +1 -1
- package/chunks/chunk-JDIUK2Y3.js +226 -0
- package/chunks/{chunk-L37RC7MQ.js → chunk-JUVTV4NF.js} +1 -1
- package/chunks/{chunk-WDWJ4OQJ.js → chunk-K2GBHL73.js} +4 -4
- package/chunks/{chunk-HHEFI4RP.js → chunk-KEVDWH3U.js} +857 -137
- package/chunks/{chunk-YU56QGXX.js → chunk-KTKETHMY.js} +1 -1
- package/chunks/{chunk-WDW64OW3.js → chunk-LGY7PG7Q.js} +5 -5
- package/chunks/{chunk-E67NFMF4.js → chunk-LKR7QQ63.js} +37 -3
- package/chunks/{chunk-4YWLED2A.js → chunk-LSFVUGXT.js} +9 -6
- package/chunks/{chunk-W34A5MJH.js → chunk-LTD3CHGS.js} +1 -1
- package/chunks/chunk-LXXMOYPL.js +22 -0
- package/chunks/{chunk-BBNVFRGD.js → chunk-MI2V6IWU.js} +1 -1
- package/chunks/{chunk-UFOKA4PR.js → chunk-O2K6BLPZ.js} +114 -4
- package/chunks/{chunk-B5I2IIWY.js → chunk-OBYAX5QZ.js} +6 -6
- package/chunks/{chunk-V7EQTZYR.js → chunk-OCQ2QTFJ.js} +203 -47
- package/chunks/{chunk-VBRRNQB7.js → chunk-OPVIKLKK.js} +112 -25
- package/chunks/{chunk-2Z5UX4KI.js → chunk-OSSDHJDU.js} +1 -1
- package/chunks/{chunk-TTUO4DNG.js → chunk-OXOEOOQU.js} +126 -734
- package/chunks/{chunk-4FMG7EDJ.js → chunk-PWYLF7SS.js} +79 -16
- package/chunks/chunk-QFEY6OXH.js +45 -0
- package/chunks/{chunk-YX4LLZ3D.js → chunk-QPRDXJIC.js} +115 -40
- package/chunks/{chunk-7R4DPSRA.js → chunk-R3VWUU2E.js} +1 -1
- package/chunks/{chunk-XLIRF7IK.js → chunk-S4N3G4BB.js} +1 -1
- package/chunks/{chunk-ARKANCNX.js → chunk-SGPFJMRP.js} +1 -1
- package/chunks/{chunk-WTSXKLG5.js → chunk-SUARMD4Q.js} +1 -1
- package/chunks/{chunk-PZL23GTM.js → chunk-T3W4SDRB.js} +2 -0
- package/chunks/chunk-T4TZQJ7W.js +48 -0
- package/chunks/{chunk-K4PZ5F5T.js → chunk-TVYM3Q3J.js} +101 -8
- package/chunks/{chunk-4LD5APFL.js → chunk-TYQMGACW.js} +1 -0
- package/chunks/{chunk-6OATMEYN.js → chunk-U2LNTX56.js} +12 -4
- package/chunks/{chunk-422XAKCK.js → chunk-U2XBPBO3.js} +4 -3
- package/chunks/{chunk-LNUXFLLJ.js → chunk-U4FJ26D2.js} +54 -6
- package/chunks/{chunk-ZQTZXVHP.js → chunk-U6OPT4H2.js} +4 -18
- package/chunks/{chunk-7NFB7LBQ.js → chunk-UE5TZ55T.js} +8 -0
- package/chunks/{chunk-CUUXANEQ.js → chunk-URP6O2PP.js} +6 -1
- package/chunks/{chunk-GDQQRV43.js → chunk-V2FRLYHN.js} +3 -3
- package/chunks/{chunk-WIEO4CWB.js → chunk-VAJS2E2D.js} +1 -1
- package/chunks/{chunk-TXY2C3D2.js → chunk-VNN3JNYT.js} +1 -1
- package/chunks/{chunk-YHN5SUIJ.js → chunk-W7H223ZZ.js} +1 -1
- package/chunks/{chunk-WX6SD4IQ.js → chunk-WEPXQKGP.js} +1 -1
- package/chunks/{chunk-KSO42X3Z.js → chunk-X6YQWCIJ.js} +21 -2
- package/chunks/{chunk-URU5UEK6.js → chunk-XA7OKDWM.js} +135 -68
- package/chunks/{chunk-Q6TUALBE.js → chunk-XAAEDML2.js} +1 -1
- package/chunks/{chunk-KKRTYONM.js → chunk-XSPFQQRE.js} +3 -3
- package/chunks/{chunk-OATTJGPJ.js → chunk-Y72B36CP.js} +7 -7
- package/chunks/{chunk-ZPAHLFZU.js → chunk-Z2LBNX3R.js} +2 -2
- package/chunks/{chunk-XXJKGHZV.js → chunk-ZTSDZQZO.js} +131 -4
- package/chunks/{computer-use-IYTX45WA.js → computer-use-UIFBH25Y.js} +26 -26
- package/chunks/{config-utils-CFT33LTP.js → config-utils-2LHI7JXU.js} +3 -3
- package/chunks/{contextCommand-272V77WU.js → contextCommand-VGZHKEH2.js} +28 -28
- package/chunks/{create-sub-session-WNX2OQVX.js → create-sub-session-DIJOV6HV.js} +2 -2
- package/chunks/{create-sub-session-CBJMQLYP.js → create-sub-session-OFVI4H6I.js} +26 -26
- package/chunks/{cron-create-36TIFKRT.js → cron-create-34GVLSW5.js} +4 -4
- package/chunks/{cron-delete-OQD3WULU.js → cron-delete-NMVKUL45.js} +4 -4
- package/chunks/{cron-list-4533T2FH.js → cron-list-277ZOR7L.js} +4 -4
- package/chunks/{daemon-RNGFPMAB.js → daemon-72MEV3TY.js} +361 -84
- package/chunks/daemon-status-provider-ZJJ6AOG2.js +75 -0
- package/chunks/{de-2VCDRDGU.js → de-56TMDIKS.js} +7 -2
- package/chunks/{dist-3V3ZV6ML.js → dist-4W3UGU2A.js} +1 -1
- package/chunks/{dist-HNN7DR2L.js → dist-G6QCGO2K.js} +58 -30
- package/chunks/{dist-ERCPDVA6.js → dist-ILVRL322.js} +4 -51
- package/chunks/{dist-PHEPJLXD.js → dist-KEZ5JWH4.js} +2 -2
- package/chunks/{dist-JZE7F6YR.js → dist-LQHDHBPP.js} +1 -1
- package/chunks/{dist-MOEC47TR.js → dist-SVHAGOLN.js} +1 -1
- package/chunks/{earlyInputCapture-EN4BRREQ.js → earlyInputCapture-NPF4PVUE.js} +27 -27
- package/chunks/{edit-OMAF2QDR.js → edit-F7CT6NZH.js} +27 -27
- package/chunks/{en-NJCA3TAA.js → en-AXS2N62H.js} +12 -3
- package/chunks/{enter-worktree-BBZX52HG.js → enter-worktree-Z4ET3MZL.js} +26 -26
- package/chunks/{enterPlanMode-5NNFMBUY.js → enterPlanMode-VYR7T5NX.js} +27 -29
- package/chunks/{environment-7TEWMJYN.js → environment-MBTXL57Q.js} +28 -28
- package/chunks/{errors-I4VKVX3F.js → errors-HN36J4FR.js} +28 -28
- package/chunks/{exit-worktree-FUWRJI33.js → exit-worktree-RU7JYFMF.js} +26 -26
- package/chunks/exitPlanMode-LUBAWMZQ.js +390 -0
- package/chunks/{fast-path-ZA57TOH4.js → fast-path-RFT3CDNZ.js} +2 -2
- package/chunks/{fr-5F3E7WKD.js → fr-ZJPE5OVN.js} +7 -2
- package/chunks/{gemini-UOAKVXBG.js → gemini-37NTNKZF.js} +215 -231
- package/chunks/{geminiContentGenerator-G6UCE6MW.js → geminiContentGenerator-76HNOYNQ.js} +5 -5
- package/chunks/{glob-4GJQ2UFF.js → glob-DWD7JCZE.js} +32 -27
- package/chunks/{grep-5QSYXF2E.js → grep-NJRXFV5C.js} +32 -27
- package/chunks/{handleAutoUpdate-ULHNWL6R.js → handleAutoUpdate-7GBDXW6U.js} +30 -30
- package/chunks/{i18n-CYDUTF6F.js → i18n-MYD5VGED.js} +27 -27
- package/chunks/{initializer-NRFKUGIO.js → initializer-4DHPNAZG.js} +32 -32
- package/chunks/{installationInfo-WELKRHHE.js → installationInfo-RWOW6BZO.js} +27 -27
- package/chunks/{ja-66J6B53L.js → ja-57GG4QSL.js} +7 -2
- package/chunks/{keychain-token-storage-AU22CQI6.js → keychain-token-storage-K23CFKGN.js} +2 -2
- package/chunks/{list-JVDXEG2E.js → list-MMCNNHE7.js} +34 -34
- package/chunks/{loadedSettingsAdapter-WAM4VUTG.js → loadedSettingsAdapter-UK4JWPYU.js} +31 -31
- package/chunks/{loop-wakeup-MVUKDVCP.js → loop-wakeup-KCLY4XQM.js} +5 -5
- package/chunks/{ls-RXNIAQDE.js → ls-UNI4LAJ3.js} +4 -4
- package/chunks/{lsp-HB5LM5IL.js → lsp-HPACPJAN.js} +2 -2
- package/chunks/{mcp-YHOZN3ZM.js → mcp-AFCVA4UV.js} +31 -31
- package/chunks/{monitor-R7XZPJHQ.js → monitor-RK637BNO.js} +28 -27
- package/chunks/nonInteractiveCli-OUGWLHNV.js +129 -0
- package/chunks/{notebook-edit-6RNKE2L2.js → notebook-edit-LY2X3CMF.js} +27 -27
- package/chunks/{openaiContentGenerator-XNS5S64I.js → openaiContentGenerator-MDYDW7IA.js} +14 -14
- package/chunks/{pidfile-XE4RRR2P.js → pidfile-2NUYRLKB.js} +27 -27
- package/chunks/processUtils-7QH3VBVN.js +29 -0
- package/chunks/{pt-TFZO5Y6T.js → pt-MCGZ3RZ4.js} +7 -2
- package/chunks/{qwenContentGenerator-APDPJ3VN.js → qwenContentGenerator-3HT4TVDL.js} +28 -28
- package/chunks/{qwenOAuth2-LEYOU7RU.js → qwenOAuth2-3A4TJVZT.js} +5 -5
- package/chunks/{read-file-XSUWXSR7.js → read-file-NE4FREFR.js} +10 -10
- package/chunks/{read-mcp-resource-6LRTZKXI.js → read-mcp-resource-C6NT52T6.js} +2 -2
- package/chunks/{record-artifact-PMDTY4OS.js → record-artifact-ENCU7QCL.js} +2 -2
- package/chunks/{ripGrep-APB3CDMU.js → ripGrep-DBLXWQCJ.js} +26 -26
- package/chunks/{ru-4L4LFHIT.js → ru-GA3NZW5Q.js} +7 -2
- package/chunks/{run-qwen-serve-NWTGPERT.js → run-qwen-serve-3NOCI6IL.js} +63 -39
- package/chunks/{runtime-EIO3NQKR.js → runtime-ZI7DSZSS.js} +35 -35
- package/chunks/{scheduler-JJDZBDRN.js → scheduler-SOVEP5K7.js} +26 -26
- package/chunks/{send-message-SR4WSXP2.js → send-message-5IFPZTPE.js} +3 -3
- package/chunks/{serve-WTIPB3EI.js → serve-DB6OCXIA.js} +31 -31
- package/chunks/{server-NJPHQHLH.js → server-LDY4YVU4.js} +2257 -648
- package/chunks/{session-O4AO7FTS.js → session-D6OG5SKX.js} +99 -72
- package/chunks/{settings-HQNDK7TG.js → settings-L52ZV5LO.js} +30 -30
- package/chunks/{shell-UIXM6PWG.js → shell-IU27OY3Q.js} +28 -26
- package/chunks/{skill-3XMB4ULV.js → skill-BSOJT7LE.js} +12 -12
- package/chunks/{spawnChannel-3R632QRM.js → spawnChannel-HQAM25DD.js} +28 -29
- package/chunks/{src-USZKPUOC.js → src-7ZBIMTJZ.js} +130 -51
- package/chunks/{standalone-update-L5XW3D7K.js → standalone-update-77457VVK.js} +28 -28
- package/chunks/{startInteractiveUI-CPZOL2WB.js → startInteractiveUI-S7WC6EZG.js} +2310 -1835
- package/chunks/{syntheticOutput-YKFNUQZD.js → syntheticOutput-ULOVVLY4.js} +3 -3
- package/chunks/{task-create-NUFOHU53.js → task-create-V2DCDSET.js} +7 -7
- package/chunks/{task-list-Z2IKQY3S.js → task-list-DPL5ZN55.js} +5 -5
- package/chunks/{task-stop-KQFIVQTJ.js → task-stop-CPEQWOT6.js} +2 -2
- package/chunks/{task-update-HKADXSTD.js → task-update-ZR45M5Q7.js} +7 -7
- package/chunks/{team-create-XXPRF3IQ.js → team-create-CO7HSUON.js} +26 -26
- package/chunks/{team-delete-SDNTGZLG.js → team-delete-HIWXCWJU.js} +5 -5
- package/chunks/{team-plan-approval-EOTTKHDW.js → team-plan-approval-QDZF5YZY.js} +26 -26
- package/chunks/{theme-manager-P6UITO2L.js → theme-manager-UTUT3I4P.js} +27 -27
- package/chunks/todoWrite-HK6B3RHJ.js +358 -0
- package/chunks/{tool-search-DDNGK2LR.js → tool-search-2UUORA35.js} +11 -11
- package/chunks/{total-session-admission-PL5N7DNY.js → total-session-admission-NTWG6G3F.js} +32 -34
- package/chunks/{trustedFolders-C5LMF3UR.js → trustedFolders-YF37ZCN5.js} +27 -27
- package/chunks/update-relaunch-QFNHPMZZ.js +87 -0
- package/chunks/{updateCheck-QTVVISH7.js → updateCheck-B6O42VMD.js} +30 -28
- package/chunks/{validateNonInterActiveAuth-RY4RKBQG.js → validateNonInterActiveAuth-SCIWJ4CX.js} +65 -65
- package/chunks/{version-U45RYOSD.js → version-7DA6LAI3.js} +1 -1
- package/chunks/{web-fetch-ZSPR3PRR.js → web-fetch-B62SJXM2.js} +5 -6
- package/chunks/{workflow-TCIAQYOA.js → workflow-Q5WG4THP.js} +27 -27
- package/chunks/{workspace-providers-status-I3G2HYLY.js → workspace-providers-status-WWLAGWQW.js} +34 -34
- package/chunks/{workspace-registration-store-IH5GLZ6Y.js → workspace-registration-store-BVYQVY2H.js} +1 -1
- package/chunks/{workspace-registry-QEKBELIX.js → workspace-registry-OD7ACADD.js} +32 -34
- package/chunks/{workspace-service-ORKHGLP3.js → workspace-service-4LYJWS63.js} +37 -38
- package/chunks/{workspace-skills-status-D7QCNDYY.js → workspace-skills-status-P2AQLZZS.js} +32 -32
- package/chunks/{write-file-JGRQR5VM.js → write-file-TEPGXNM3.js} +60 -27
- package/chunks/{zh-FSAH32JB.js → zh-E34DZ2S3.js} +12 -3
- package/chunks/{zh-TW-D2YIE2LO.js → zh-TW-PEI2ZWUR.js} +12 -3
- package/cli-entry.js +92 -8
- package/cli.js +11 -11
- package/locales/ca.js +12 -2
- package/locales/de.js +12 -2
- package/locales/en.js +20 -5
- package/locales/fr.js +12 -2
- package/locales/ja.js +12 -2
- package/locales/pt.js +12 -2
- package/locales/ru.js +12 -2
- package/locales/zh-TW.js +19 -3
- package/locales/zh.js +19 -3
- package/package.json +3 -3
- package/web-shell/assets/{arc-CUeDlxvE.js → arc-Dh-N5oEG.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-PiUszkQA.js → architectureDiagram-3BPJPVTR-DBOQgtfF.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-s2wYSO7e.js → blockDiagram-GPEHLZMM-Dyxbuyju.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-DyLxZoz9.js → c4Diagram-AAUBKEIU-DCJR5HPT.js} +1 -1
- package/web-shell/assets/channel-DY0fkcKT.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-Dsdai7Tk.js → chunk-2J33WTMH-BkMUcy3O.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-DEosOjV7.js → chunk-4BX2VUAB-BSm4pLQk.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-sNsRLTXf.js → chunk-55IACEB6-CuRr-XgW.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-DkRNZzmh.js → chunk-727SXJPM-CLv7-w3t.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-BrsRNpzd.js → chunk-AQP2D5EJ-Cz_n3-JW.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-CI039lpl.js → chunk-FMBD7UC4-CFT_62Hq.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-M-pkeIfu.js → chunk-ND2GUHAM-DWz6DOZ6.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-C4ckGNbH.js → chunk-QZHKN3VN-C-mRhUzw.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-DBvJ6PZo.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DBvJ6PZo.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-BciKUAFq.js → cose-bilkent-S5V4N54A-BqCZS3i1.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-C1nTSgU6.js → dagre-BM42HDAG-BGasdP8i.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-BDPNWr1m.js → diagram-2AECGRRQ-BSyLDkMy.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-CNFhTszL.js → diagram-5GNKFQAL-CM-ZJxWC.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-CjPa4p5a.js → diagram-KO2AKTUF-wJdzt_C5.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-ZzPykSyG.js → diagram-LMA3HP47-DiH2fhpL.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-0UVtZ9A4.js → diagram-OG6HWLK6-BZ9z1ZBl.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-CajDZCat.js → erDiagram-TEJ5UH35-BsyWDziR.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-BRuFBIvL.js → flowDiagram-I6XJVG4X-CzdkxIrq.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-BevGmJqG.js → ganttDiagram-6RSMTGT7-javIv2r2.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DvPMpBMb.js → gitGraphDiagram-PVQCEYII-CjHstylC.js} +1 -1
- package/web-shell/assets/{index-DzHwQkQq.js → index-BnJGxpah.js} +1 -1
- package/web-shell/assets/index-DhXB9nTa.js +1161 -0
- package/web-shell/assets/index-vYHgZ7bL.css +5 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-Oixn7tA9.js → infoDiagram-5YYISTIA-yXuQsomo.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BgKpeg-j.js → ishikawaDiagram-YF4QCWOH-a85JhE6F.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-74mwxIaA.js → journeyDiagram-JHISSGLW-Dak_4BVj.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-D4D6cEqA.js → kanban-definition-UN3LZRKU-COA-LuCV.js} +1 -1
- package/web-shell/assets/{linear-atZRE_L2.js → linear-DNAAAQWq.js} +1 -1
- package/web-shell/assets/{mermaid.core-KKudX-JC.js → mermaid.core-7Ff3aIUD.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-CMCej9yG.js → mindmap-definition-RKZ34NQL-_rCOIODU.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-nhx40X7q.js → pieDiagram-4H26LBE5-C9QCQ8EW.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CUmVcN3M.js → quadrantDiagram-W4KKPZXB-CsaE4FA8.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-C_vyEwyy.js → requirementDiagram-4Y6WPE33-tV78naTg.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-DU6G4VWR.js → sankeyDiagram-5OEKKPKP-Dk3Rw7BZ.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DdeRR_KJ.js → sequenceDiagram-3UESZ5HK-BGsAWcMX.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-C6iCI8ps.js → stateDiagram-AJRCARHV-zSxdtdoB.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-vLEEtDpO.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-B_Ea8Cb7.js → timeline-definition-PNZ67QCA-j0BQh9Go.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BPUVZEJA.js → vennDiagram-CIIHVFJN-CRaUFFIu.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-BWEj0lKY.js → wardley-L42UT6IY-D7Py_ofm.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BvDsdIQw.js → wardleyDiagram-YWT4CUSO-BrDIAZcp.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-crz0QhF_.js → xychartDiagram-2RQKCTM6-Cecdw-w2.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/channel-worker-group-K7QKH6IG.js +0 -13
- package/chunks/chunk-2HRYPZT5.js +0 -25
- package/chunks/chunk-B7NUUEXC.js +0 -311
- package/chunks/chunk-CARU2RR2.js +0 -24
- package/chunks/chunk-GYTKQYDB.js +0 -23
- package/chunks/chunk-LQU7EVFA.js +0 -30
- package/chunks/chunk-OCPBI7J5.js +0 -18
- package/chunks/chunk-OJAMDVF5.js +0 -66
- package/chunks/chunk-QAW7PIHT.js +0 -168
- package/chunks/chunk-TEGEBB2I.js +0 -122
- package/chunks/daemon-status-provider-L4STG5VO.js +0 -76
- package/chunks/exitPlanMode-IHCJ5EEI.js +0 -909
- package/chunks/nonInteractiveCli-NSOB6D74.js +0 -129
- package/chunks/todoWrite-YNXB27GB.js +0 -531
- package/web-shell/assets/channel-DkuJJ0qd.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CwqHc0TB.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CwqHc0TB.js +0 -1
- package/web-shell/assets/index-Cnvv4VcI.css +0 -5
- package/web-shell/assets/index-D1Uyklxa.js +0 -1088
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-C0_6nR6C.js +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
|
-
|
|
5
|
-
} from "./chunk-
|
|
4
|
+
registerMcpHotReload
|
|
5
|
+
} from "./chunk-4JBTZBCW.js";
|
|
6
6
|
import {
|
|
7
|
-
|
|
8
|
-
} from "./chunk-
|
|
7
|
+
startEarlyStartupPrefetches
|
|
8
|
+
} from "./chunk-IK5TYYVR.js";
|
|
9
9
|
import {
|
|
10
10
|
ExtensionRefreshState,
|
|
11
11
|
appEvents,
|
|
@@ -16,40 +16,48 @@ import {
|
|
|
16
16
|
loadSandboxConfig,
|
|
17
17
|
parseArguments,
|
|
18
18
|
validateAuthMethod
|
|
19
|
-
} from "./chunk-
|
|
20
|
-
import
|
|
19
|
+
} from "./chunk-GUNTLALV.js";
|
|
20
|
+
import {
|
|
21
|
+
CUSTOM_SANDBOX_IMAGE_ENV_VAR,
|
|
22
|
+
HOST_UPDATE_RELAUNCH_ENV_VAR,
|
|
23
|
+
RELAUNCH_EXIT_CODE,
|
|
24
|
+
SKIP_UPDATE_CHECK_ENV_VAR,
|
|
25
|
+
UPDATE_COMPLETE_EXIT_CODE,
|
|
26
|
+
UPDATE_ON_EXIT_MESSAGE,
|
|
27
|
+
UPDATE_RELAUNCH_EXIT_CODE
|
|
28
|
+
} from "./chunk-5O34IMY5.js";
|
|
29
|
+
import {
|
|
30
|
+
getInstallationInfo
|
|
31
|
+
} from "./chunk-F5XYN5VF.js";
|
|
32
|
+
import "./chunk-SUARMD4Q.js";
|
|
21
33
|
import "./chunk-QHTIBUWB.js";
|
|
22
34
|
import "./chunk-L573Z2QZ.js";
|
|
23
35
|
import "./chunk-RXFQM6FQ.js";
|
|
24
|
-
import "./chunk-
|
|
36
|
+
import "./chunk-LGY7PG7Q.js";
|
|
25
37
|
import {
|
|
26
38
|
getHeadlessYoloSafetyWarning
|
|
27
39
|
} from "./chunk-6H67XLET.js";
|
|
28
|
-
import "./chunk-
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-
|
|
31
|
-
import "./chunk-
|
|
40
|
+
import "./chunk-FHUXCRAF.js";
|
|
41
|
+
import "./chunk-64XGKNSI.js";
|
|
42
|
+
import "./chunk-6Z5NRZVU.js";
|
|
43
|
+
import "./chunk-F2RR4HO2.js";
|
|
32
44
|
import "./chunk-6RLROE6G.js";
|
|
33
45
|
import "./chunk-COH43MRJ.js";
|
|
34
|
-
import "./chunk-
|
|
35
|
-
import "./chunk-
|
|
46
|
+
import "./chunk-3CL5SEDT.js";
|
|
47
|
+
import "./chunk-IVKLDHU6.js";
|
|
36
48
|
import "./chunk-57OAHC2Y.js";
|
|
37
|
-
import "./chunk-
|
|
38
|
-
import "./chunk-
|
|
49
|
+
import "./chunk-Y72B36CP.js";
|
|
50
|
+
import "./chunk-FZRES4GK.js";
|
|
39
51
|
import "./chunk-V6WHFGST.js";
|
|
40
52
|
import "./chunk-W7FJ3N32.js";
|
|
41
|
-
import "./chunk-
|
|
53
|
+
import "./chunk-JDIUK2Y3.js";
|
|
42
54
|
import "./chunk-TJTKSVIV.js";
|
|
43
|
-
import "./chunk-
|
|
44
|
-
import "./chunk-
|
|
45
|
-
import "./chunk-
|
|
46
|
-
import "./chunk-
|
|
55
|
+
import "./chunk-M5GB774H.js";
|
|
56
|
+
import "./chunk-HCCR43AY.js";
|
|
57
|
+
import "./chunk-MI2V6IWU.js";
|
|
58
|
+
import "./chunk-ATJ7H5AS.js";
|
|
47
59
|
import "./chunk-UDXSXLER.js";
|
|
48
|
-
import
|
|
49
|
-
assembleMcpServers,
|
|
50
|
-
getPendingGatedMcpServers,
|
|
51
|
-
getPromptableMcpServers
|
|
52
|
-
} from "./chunk-YYPXHMWO.js";
|
|
60
|
+
import "./chunk-2XRGFF5K.js";
|
|
53
61
|
import {
|
|
54
62
|
createMinimalSettings,
|
|
55
63
|
getFlattenedSchema,
|
|
@@ -57,30 +65,30 @@ import {
|
|
|
57
65
|
getUserSettingsDir,
|
|
58
66
|
initializeLlmOutputLanguage,
|
|
59
67
|
loadSettings
|
|
60
|
-
} from "./chunk-
|
|
68
|
+
} from "./chunk-C5NSOSF4.js";
|
|
61
69
|
import "./chunk-RKUWKYED.js";
|
|
62
70
|
import {
|
|
63
71
|
initializeI18n,
|
|
64
72
|
resolveLanguageSetting
|
|
65
|
-
} from "./chunk-
|
|
73
|
+
} from "./chunk-HIMIG6PI.js";
|
|
66
74
|
import {
|
|
67
75
|
SETTINGS_DIRECTORY_NAME,
|
|
68
76
|
preResolveHomeEnvOverrides
|
|
69
|
-
} from "./chunk-
|
|
77
|
+
} from "./chunk-336KPNNV.js";
|
|
70
78
|
import "./chunk-GOXKNSDZ.js";
|
|
71
79
|
import "./chunk-IDS7MSUP.js";
|
|
72
80
|
import {
|
|
73
81
|
ENV_CORRUPTED_PATH,
|
|
74
82
|
ENV_WAS_RECOVERED
|
|
75
83
|
} from "./chunk-QRUIS3DN.js";
|
|
76
|
-
import "./chunk-
|
|
84
|
+
import "./chunk-LSFVUGXT.js";
|
|
77
85
|
import "./chunk-ALGGS7UH.js";
|
|
78
86
|
import "./chunk-MR3PXB6E.js";
|
|
79
87
|
import {
|
|
80
88
|
writeStderrLine
|
|
81
89
|
} from "./chunk-YUZI3WAC.js";
|
|
82
90
|
import "./chunk-XFSFZCM5.js";
|
|
83
|
-
import "./chunk-
|
|
91
|
+
import "./chunk-KTKETHMY.js";
|
|
84
92
|
import "./chunk-VJNBRRZG.js";
|
|
85
93
|
import {
|
|
86
94
|
GitWorktreeService,
|
|
@@ -99,56 +107,53 @@ import {
|
|
|
99
107
|
worktreeBranchForSlug,
|
|
100
108
|
writeWorktreeSession,
|
|
101
109
|
writeWorktreeSessionMarker
|
|
102
|
-
} from "./chunk-
|
|
110
|
+
} from "./chunk-3YJZ6WNY.js";
|
|
111
|
+
import "./chunk-T4TZQJ7W.js";
|
|
103
112
|
import "./chunk-H6XPXXMH.js";
|
|
104
113
|
import "./chunk-5M6IDOMF.js";
|
|
105
|
-
import "./chunk-
|
|
106
|
-
import "./chunk-
|
|
107
|
-
import "./chunk-
|
|
108
|
-
import "./chunk-
|
|
114
|
+
import "./chunk-LKR7QQ63.js";
|
|
115
|
+
import "./chunk-4XCVGEEX.js";
|
|
116
|
+
import "./chunk-XSPFQQRE.js";
|
|
117
|
+
import "./chunk-4RPARQ5D.js";
|
|
109
118
|
import "./chunk-E2UVIFI2.js";
|
|
110
|
-
import "./chunk-6OATMEYN.js";
|
|
111
119
|
import "./chunk-XU457J4V.js";
|
|
112
120
|
import "./chunk-VDDGDZMA.js";
|
|
113
|
-
import "./chunk-
|
|
121
|
+
import "./chunk-J2MKYJKZ.js";
|
|
114
122
|
import "./chunk-SZRN75WQ.js";
|
|
115
123
|
import "./chunk-HTO4JFDZ.js";
|
|
116
124
|
import "./chunk-CPBF7KYF.js";
|
|
117
|
-
import "./chunk-
|
|
125
|
+
import "./chunk-VNN3JNYT.js";
|
|
118
126
|
import "./chunk-6AM5D4ME.js";
|
|
119
|
-
import "./chunk-
|
|
120
|
-
import "./chunk-
|
|
121
|
-
import "./chunk-
|
|
122
|
-
import "./chunk-
|
|
127
|
+
import "./chunk-OSSDHJDU.js";
|
|
128
|
+
import "./chunk-SGPFJMRP.js";
|
|
129
|
+
import "./chunk-335ECZTA.js";
|
|
130
|
+
import "./chunk-JCJPZMJV.js";
|
|
123
131
|
import {
|
|
124
|
-
getMCPServerStatus,
|
|
125
132
|
logUserPrompt,
|
|
126
133
|
uiTelemetryService
|
|
127
|
-
} from "./chunk-
|
|
134
|
+
} from "./chunk-66IT3EY2.js";
|
|
128
135
|
import "./chunk-4WKAA4KS.js";
|
|
129
136
|
import "./chunk-CR3C7WXL.js";
|
|
130
|
-
import "./chunk-
|
|
137
|
+
import "./chunk-U2LNTX56.js";
|
|
131
138
|
import "./chunk-VGC4I5JJ.js";
|
|
132
|
-
import "./chunk-
|
|
133
|
-
import "./chunk-
|
|
134
|
-
import "./chunk-
|
|
135
|
-
import
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
import "./chunk-OKAIGAYW.js";
|
|
139
|
-
import "./chunk-ZPAHLFZU.js";
|
|
139
|
+
import "./chunk-FUTHTZVV.js";
|
|
140
|
+
import "./chunk-4CA4WUMS.js";
|
|
141
|
+
import "./chunk-WEPXQKGP.js";
|
|
142
|
+
import "./chunk-ANRANWVE.js";
|
|
143
|
+
import "./chunk-G274ETR6.js";
|
|
144
|
+
import "./chunk-Z2LBNX3R.js";
|
|
140
145
|
import "./chunk-JESCGQM3.js";
|
|
141
|
-
import "./chunk-
|
|
146
|
+
import "./chunk-VAJS2E2D.js";
|
|
142
147
|
import "./chunk-XVNQMZ2I.js";
|
|
143
|
-
import "./chunk-
|
|
144
|
-
import "./chunk-
|
|
148
|
+
import "./chunk-FEOZBUMT.js";
|
|
149
|
+
import "./chunk-CMVFTMRD.js";
|
|
145
150
|
import "./chunk-A4UCTEB5.js";
|
|
146
151
|
import "./chunk-XWRJCPHC.js";
|
|
147
|
-
import "./chunk-
|
|
152
|
+
import "./chunk-TYQMGACW.js";
|
|
148
153
|
import "./chunk-TYAMGABM.js";
|
|
149
154
|
import "./chunk-FCMNKVXT.js";
|
|
150
155
|
import "./chunk-DJ2GSRLV.js";
|
|
151
|
-
import "./chunk-
|
|
156
|
+
import "./chunk-4CHDYDG3.js";
|
|
152
157
|
import {
|
|
153
158
|
FatalSandboxError,
|
|
154
159
|
Storage,
|
|
@@ -157,7 +162,7 @@ import {
|
|
|
157
162
|
isDebugLogFileEnabled,
|
|
158
163
|
isDebugLoggingDegraded,
|
|
159
164
|
isSubpath
|
|
160
|
-
} from "./chunk-
|
|
165
|
+
} from "./chunk-UE5TZ55T.js";
|
|
161
166
|
import {
|
|
162
167
|
finalizeStartupProfile,
|
|
163
168
|
isStartupProfilerEnabled,
|
|
@@ -170,7 +175,7 @@ import {
|
|
|
170
175
|
cleanupCheckpoints,
|
|
171
176
|
registerCleanup,
|
|
172
177
|
runExitCleanup
|
|
173
|
-
} from "./chunk-
|
|
178
|
+
} from "./chunk-4HCYNDMG.js";
|
|
174
179
|
import "./chunk-75DOP5OR.js";
|
|
175
180
|
import "./chunk-DMTGGOSA.js";
|
|
176
181
|
import "./chunk-YQ3U5MUC.js";
|
|
@@ -507,115 +512,11 @@ var SettingsWatcher = class _SettingsWatcher {
|
|
|
507
512
|
}
|
|
508
513
|
};
|
|
509
514
|
|
|
510
|
-
// packages/cli/src/config/hot-reload.ts
|
|
511
|
-
init_esbuild_shims();
|
|
512
|
-
var import_fast_deep_equal = __toESM(require_fast_deep_equal(), 1);
|
|
513
|
-
var debugLogger2 = createDebugLogger("MCP_HOT_RELOAD");
|
|
514
|
-
function mcpServersEqual(a, b) {
|
|
515
|
-
return (0, import_fast_deep_equal.default)(a ?? {}, b ?? {});
|
|
516
|
-
}
|
|
517
|
-
__name(mcpServersEqual, "mcpServersEqual");
|
|
518
|
-
function mcpGatingEqual(a, b) {
|
|
519
|
-
const norm = /* @__PURE__ */ __name((xs) => [...xs ?? []].sort(), "norm");
|
|
520
|
-
const allowedEqual = a.allowed === void 0 === (b.allowed === void 0) && (0, import_fast_deep_equal.default)(norm(a.allowed), norm(b.allowed));
|
|
521
|
-
return (0, import_fast_deep_equal.default)(norm(a.excluded), norm(b.excluded)) && allowedEqual && (0, import_fast_deep_equal.default)(norm(a.pending), norm(b.pending));
|
|
522
|
-
}
|
|
523
|
-
__name(mcpGatingEqual, "mcpGatingEqual");
|
|
524
|
-
function recomputeMcpGating(settings, assembled, cwd, bootAllowed, isYolo) {
|
|
525
|
-
const settingsAllowed = settings.merged.mcp?.allowed?.filter(Boolean);
|
|
526
|
-
const excluded = settings.merged.mcp?.excluded?.filter(Boolean);
|
|
527
|
-
let allowed = settingsAllowed;
|
|
528
|
-
if (bootAllowed) {
|
|
529
|
-
allowed = settingsAllowed ? settingsAllowed.filter((n) => bootAllowed.includes(n)) : [...bootAllowed];
|
|
530
|
-
}
|
|
531
|
-
return {
|
|
532
|
-
allowed,
|
|
533
|
-
excluded: excluded && excluded.length > 0 ? excluded : void 0,
|
|
534
|
-
pending: isYolo ? void 0 : getPendingGatedMcpServers(assembled, cwd)
|
|
535
|
-
};
|
|
536
|
-
}
|
|
537
|
-
__name(recomputeMcpGating, "recomputeMcpGating");
|
|
538
|
-
function registerMcpHotReload(watcher, settings, config, topTierMcpServers) {
|
|
539
|
-
debugLogger2.debug("registered MCP hot-reload listener on SettingsWatcher");
|
|
540
|
-
return watcher.addChangeListener(async (events) => {
|
|
541
|
-
debugLogger2.debug(
|
|
542
|
-
`settings change fired (${events.length} event(s)): ${events.map((e) => `${e.scope}:${e.changeType}`).join(", ")}`
|
|
543
|
-
);
|
|
544
|
-
const cwd = config.getTargetDir();
|
|
545
|
-
const next = assembleMcpServers(
|
|
546
|
-
settings.merged.mcpServers,
|
|
547
|
-
cwd,
|
|
548
|
-
topTierMcpServers
|
|
549
|
-
);
|
|
550
|
-
const isYolo = config.getApprovalMode() === "yolo" /* YOLO */;
|
|
551
|
-
const nextGating = recomputeMcpGating(
|
|
552
|
-
settings,
|
|
553
|
-
next,
|
|
554
|
-
cwd,
|
|
555
|
-
config.getCliAllowedMcpServerNames(),
|
|
556
|
-
isYolo
|
|
557
|
-
);
|
|
558
|
-
const prevServers = config.getSettingsMcpServers();
|
|
559
|
-
const prevGating = config.getMcpGating();
|
|
560
|
-
debugLogger2.debug(
|
|
561
|
-
`assembled servers: prev=[${Object.keys(prevServers ?? {}).join(
|
|
562
|
-
", "
|
|
563
|
-
)}] next=[${Object.keys(next).join(", ")}]`
|
|
564
|
-
);
|
|
565
|
-
debugLogger2.debug(
|
|
566
|
-
`gating next: excluded=[${(nextGating.excluded ?? []).join(
|
|
567
|
-
", "
|
|
568
|
-
)}] allowed=[${(nextGating.allowed ?? []).join(
|
|
569
|
-
", "
|
|
570
|
-
)}] pending=[${(nextGating.pending ?? []).join(", ")}]`
|
|
571
|
-
);
|
|
572
|
-
const serversChanged = !mcpServersEqual(prevServers, next);
|
|
573
|
-
const gatingChanged = !mcpGatingEqual(prevGating, nextGating);
|
|
574
|
-
if (!serversChanged && !gatingChanged) {
|
|
575
|
-
debugLogger2.debug(
|
|
576
|
-
"no MCP-relevant change (servers + gating unchanged) \u2014 skipping reconcile"
|
|
577
|
-
);
|
|
578
|
-
return;
|
|
579
|
-
}
|
|
580
|
-
debugLogger2.debug(
|
|
581
|
-
`MCP-relevant change detected (serversChanged=${serversChanged} gatingChanged=${gatingChanged}) \u2014 reconciling`
|
|
582
|
-
);
|
|
583
|
-
const promptable = getPromptableMcpServers(next, cwd);
|
|
584
|
-
config.setExcludedMcpServers(nextGating.excluded ?? []);
|
|
585
|
-
config.setAllowedMcpServers(nextGating.allowed);
|
|
586
|
-
config.setPendingMcpServers(nextGating.pending);
|
|
587
|
-
try {
|
|
588
|
-
await config.reinitializeMcpServers(next);
|
|
589
|
-
const finalStatuses = Object.keys(next).map((name) => `${name}=${getMCPServerStatus(name)}`).join(", ");
|
|
590
|
-
debugLogger2.debug(
|
|
591
|
-
`reinitializeMcpServers resolved; final statuses=[${finalStatuses}]`
|
|
592
|
-
);
|
|
593
|
-
} catch (err) {
|
|
594
|
-
debugLogger2.error(
|
|
595
|
-
`reinitializeMcpServers threw: ${err instanceof Error ? err.stack ?? err.message : String(err)}`
|
|
596
|
-
);
|
|
597
|
-
appEvents.emit(
|
|
598
|
-
"log-error" /* LogError */,
|
|
599
|
-
"Failed to reload MCP server settings; existing MCP state may be unchanged. Run with --debug for details."
|
|
600
|
-
);
|
|
601
|
-
}
|
|
602
|
-
if (!isYolo && promptable.length > 0) {
|
|
603
|
-
debugLogger2.debug(
|
|
604
|
-
`gated servers awaiting approval \u2192 emitting ${"mcp-pending-approval-changed" /* McpPendingApprovalChanged */}: [${promptable.join(
|
|
605
|
-
", "
|
|
606
|
-
)}]`
|
|
607
|
-
);
|
|
608
|
-
appEvents.emit("mcp-pending-approval-changed" /* McpPendingApprovalChanged */);
|
|
609
|
-
}
|
|
610
|
-
});
|
|
611
|
-
}
|
|
612
|
-
__name(registerMcpHotReload, "registerMcpHotReload");
|
|
613
|
-
|
|
614
515
|
// packages/cli/src/config/lsp-config-watcher.ts
|
|
615
516
|
init_esbuild_shims();
|
|
616
517
|
import * as fs2 from "node:fs";
|
|
617
518
|
import * as path2 from "node:path";
|
|
618
|
-
var
|
|
519
|
+
var debugLogger2 = createDebugLogger("LSP_CONFIG_WATCHER");
|
|
619
520
|
var LspConfigWatcher = class _LspConfigWatcher {
|
|
620
521
|
constructor(workspaceRoot) {
|
|
621
522
|
this.workspaceRoot = workspaceRoot;
|
|
@@ -638,7 +539,7 @@ var LspConfigWatcher = class _LspConfigWatcher {
|
|
|
638
539
|
static LISTENER_TIMEOUT_MS = 3e4;
|
|
639
540
|
startWatching(listener) {
|
|
640
541
|
if (this.started) return;
|
|
641
|
-
|
|
542
|
+
debugLogger2.info(`Starting LSP config watcher for ${this.configPath}`);
|
|
642
543
|
try {
|
|
643
544
|
const watcher = watch(this.workspaceRoot, {
|
|
644
545
|
ignoreInitial: true,
|
|
@@ -647,7 +548,7 @@ var LspConfigWatcher = class _LspConfigWatcher {
|
|
|
647
548
|
if (path2.basename(changedPath) !== ".lsp.json") return;
|
|
648
549
|
this.scheduleRefresh();
|
|
649
550
|
}).on("error", (error) => {
|
|
650
|
-
|
|
551
|
+
debugLogger2.warn(
|
|
651
552
|
`LSP config watcher error for ${this.workspaceRoot}:`,
|
|
652
553
|
error
|
|
653
554
|
);
|
|
@@ -659,7 +560,7 @@ var LspConfigWatcher = class _LspConfigWatcher {
|
|
|
659
560
|
this.watcher = void 0;
|
|
660
561
|
this.listener = void 0;
|
|
661
562
|
this.started = false;
|
|
662
|
-
|
|
563
|
+
debugLogger2.warn(
|
|
663
564
|
`Failed to start LSP config watcher for ${this.workspaceRoot}:`,
|
|
664
565
|
error
|
|
665
566
|
);
|
|
@@ -668,7 +569,7 @@ var LspConfigWatcher = class _LspConfigWatcher {
|
|
|
668
569
|
async stopWatching() {
|
|
669
570
|
if (!this.started) return;
|
|
670
571
|
this.started = false;
|
|
671
|
-
|
|
572
|
+
debugLogger2.info(`Stopping LSP config watcher for ${this.configPath}`);
|
|
672
573
|
if (this.refreshTimer) {
|
|
673
574
|
clearTimeout(this.refreshTimer);
|
|
674
575
|
this.refreshTimer = null;
|
|
@@ -679,7 +580,7 @@ var LspConfigWatcher = class _LspConfigWatcher {
|
|
|
679
580
|
try {
|
|
680
581
|
await this.watcher?.close();
|
|
681
582
|
} catch (error) {
|
|
682
|
-
|
|
583
|
+
debugLogger2.warn("LSP config watcher close error:", error);
|
|
683
584
|
}
|
|
684
585
|
this.watcher = void 0;
|
|
685
586
|
}
|
|
@@ -691,7 +592,7 @@ var LspConfigWatcher = class _LspConfigWatcher {
|
|
|
691
592
|
this.refreshTimer = null;
|
|
692
593
|
if (this.processing) return;
|
|
693
594
|
const activeDrain = this.drainPendingChange().catch((error) => {
|
|
694
|
-
|
|
595
|
+
debugLogger2.warn("LSP config watcher refresh error:", error);
|
|
695
596
|
});
|
|
696
597
|
this.activeDrain = activeDrain;
|
|
697
598
|
void activeDrain.finally(() => {
|
|
@@ -727,7 +628,7 @@ var LspConfigWatcher = class _LspConfigWatcher {
|
|
|
727
628
|
const before = this.lastSnapshot;
|
|
728
629
|
const after = this.readSnapshot();
|
|
729
630
|
if (after.exists && after.canonical === void 0) {
|
|
730
|
-
|
|
631
|
+
debugLogger2.warn(
|
|
731
632
|
`Invalid .lsp.json; keeping existing LSP runtime state.`
|
|
732
633
|
);
|
|
733
634
|
const notified2 = await this.notifyListener({
|
|
@@ -749,7 +650,7 @@ var LspConfigWatcher = class _LspConfigWatcher {
|
|
|
749
650
|
path: this.configPath,
|
|
750
651
|
changeType: !before.exists && after.exists ? "created" : before.exists && !after.exists ? "deleted" : "modified"
|
|
751
652
|
};
|
|
752
|
-
|
|
653
|
+
debugLogger2.info(`LSP config changed: ${event.changeType} ${event.path}`);
|
|
753
654
|
const notified = await this.notifyListener(event);
|
|
754
655
|
if (notified) {
|
|
755
656
|
this.lastSnapshot = after;
|
|
@@ -767,7 +668,7 @@ var LspConfigWatcher = class _LspConfigWatcher {
|
|
|
767
668
|
if (error.code === "ENOENT") {
|
|
768
669
|
return { exists: false };
|
|
769
670
|
}
|
|
770
|
-
|
|
671
|
+
debugLogger2.warn("Failed to read .lsp.json:", error);
|
|
771
672
|
return {
|
|
772
673
|
exists: true,
|
|
773
674
|
error: "Failed to read .lsp.json; existing LSP runtime state is unchanged."
|
|
@@ -777,7 +678,7 @@ var LspConfigWatcher = class _LspConfigWatcher {
|
|
|
777
678
|
const parsed = JSON.parse(raw);
|
|
778
679
|
return { exists: true, canonical: canonicalize(parsed) };
|
|
779
680
|
} catch (error) {
|
|
780
|
-
|
|
681
|
+
debugLogger2.warn("Failed to parse .lsp.json:", error);
|
|
781
682
|
return {
|
|
782
683
|
exists: true,
|
|
783
684
|
error: "Invalid JSON in .lsp.json; existing LSP runtime state is unchanged."
|
|
@@ -814,7 +715,7 @@ var LspConfigWatcher = class _LspConfigWatcher {
|
|
|
814
715
|
await Promise.race([listenerPromise, timeoutPromise]);
|
|
815
716
|
return true;
|
|
816
717
|
} catch (error) {
|
|
817
|
-
|
|
718
|
+
debugLogger2.warn("LSP config change listener error:", error);
|
|
818
719
|
return false;
|
|
819
720
|
} finally {
|
|
820
721
|
if (timerId !== void 0) clearTimeout(timerId);
|
|
@@ -845,7 +746,7 @@ __name(sortJsonValue, "sortJsonValue");
|
|
|
845
746
|
init_esbuild_shims();
|
|
846
747
|
import * as fs3 from "node:fs";
|
|
847
748
|
import * as path3 from "node:path";
|
|
848
|
-
var
|
|
749
|
+
var debugLogger3 = createDebugLogger("EXTENSION_FILE_WATCHER");
|
|
849
750
|
var TOP_LEVEL_FILES = /* @__PURE__ */ new Set(["extension-enablement.json"]);
|
|
850
751
|
var EXTENSION_FILES = /* @__PURE__ */ new Set([
|
|
851
752
|
"qwen-extension.json",
|
|
@@ -911,14 +812,14 @@ var ExtensionFileWatcher = class {
|
|
|
911
812
|
"extension files changed"
|
|
912
813
|
);
|
|
913
814
|
}
|
|
914
|
-
|
|
815
|
+
debugLogger3.debug("Extension file event classified", {
|
|
915
816
|
event,
|
|
916
817
|
path: resolvedPath,
|
|
917
818
|
action,
|
|
918
819
|
marked
|
|
919
820
|
});
|
|
920
821
|
}).on("error", (error) => {
|
|
921
|
-
|
|
822
|
+
debugLogger3.warn("Extension file watcher error:", error);
|
|
922
823
|
});
|
|
923
824
|
}
|
|
924
825
|
if (!fs3.existsSync(this.extensionsDir)) {
|
|
@@ -939,10 +840,10 @@ var ExtensionFileWatcher = class {
|
|
|
939
840
|
this.mutationListenerDisposer = void 0;
|
|
940
841
|
this.endPendingMutationSuppressions();
|
|
941
842
|
watcher?.close().catch((error) => {
|
|
942
|
-
|
|
843
|
+
debugLogger3.warn("Extension file watcher close error:", error);
|
|
943
844
|
});
|
|
944
845
|
bootstrapWatcher?.close().catch((error) => {
|
|
945
|
-
|
|
846
|
+
debugLogger3.warn("Extension bootstrap watcher close error:", error);
|
|
946
847
|
});
|
|
947
848
|
}
|
|
948
849
|
restartWatching() {
|
|
@@ -1016,7 +917,7 @@ var ExtensionFileWatcher = class {
|
|
|
1016
917
|
}
|
|
1017
918
|
});
|
|
1018
919
|
}).on("error", (error) => {
|
|
1019
|
-
|
|
920
|
+
debugLogger3.warn("Extension bootstrap watcher error:", error);
|
|
1020
921
|
});
|
|
1021
922
|
}
|
|
1022
923
|
getRefreshAction(event, changedPath) {
|
|
@@ -1130,7 +1031,7 @@ var ExtensionFileWatcher = class {
|
|
|
1130
1031
|
const bootstrapWatcher = this.bootstrapWatcher;
|
|
1131
1032
|
this.bootstrapWatcher = void 0;
|
|
1132
1033
|
bootstrapWatcher?.close().catch((error) => {
|
|
1133
|
-
|
|
1034
|
+
debugLogger3.warn("Extension bootstrap watcher close error:", error);
|
|
1134
1035
|
});
|
|
1135
1036
|
}
|
|
1136
1037
|
startGenerationPolling() {
|
|
@@ -1173,7 +1074,7 @@ var ExtensionFileWatcher = class {
|
|
|
1173
1074
|
// packages/cli/src/startup/worktreeStartup.ts
|
|
1174
1075
|
init_esbuild_shims();
|
|
1175
1076
|
import * as path4 from "node:path";
|
|
1176
|
-
var
|
|
1077
|
+
var debugLogger4 = createDebugLogger("WORKTREE_STARTUP");
|
|
1177
1078
|
var DETACHED_HEAD = "HEAD";
|
|
1178
1079
|
async function setupStartupWorktree(rawInput, options) {
|
|
1179
1080
|
if (rawInput === void 0) return null;
|
|
@@ -1245,7 +1146,7 @@ async function setupStartupWorktree(rawInput, options) {
|
|
|
1245
1146
|
error: `--worktree: failed to chdir into ${worktreePath2} (${error instanceof Error ? error.message : String(error)}).`
|
|
1246
1147
|
};
|
|
1247
1148
|
}
|
|
1248
|
-
|
|
1149
|
+
debugLogger4.debug(
|
|
1249
1150
|
`setupStartupWorktree: re-attached to existing worktree at ${worktreePath2} (branch=${registered.branch})`
|
|
1250
1151
|
);
|
|
1251
1152
|
return {
|
|
@@ -1323,7 +1224,7 @@ async function persistStartupWorktreeSidecar(config, context) {
|
|
|
1323
1224
|
try {
|
|
1324
1225
|
previous = await readWorktreeSession(sidecarPath);
|
|
1325
1226
|
} catch (error) {
|
|
1326
|
-
|
|
1227
|
+
debugLogger4.warn(
|
|
1327
1228
|
`persistStartupWorktreeSidecar: failed to read existing sidecar at ${sidecarPath} \u2014 treating as "no previous worktree" and proceeding: ${error}`
|
|
1328
1229
|
);
|
|
1329
1230
|
previous = null;
|
|
@@ -1342,7 +1243,7 @@ async function persistStartupWorktreeSidecar(config, context) {
|
|
|
1342
1243
|
context.repoRoot,
|
|
1343
1244
|
context.worktreePath
|
|
1344
1245
|
]).catch((error) => {
|
|
1345
|
-
|
|
1246
|
+
debugLogger4.warn(
|
|
1346
1247
|
`persistStartupWorktreeSidecar: failed to check owner runtime ${owner}: ${error}`
|
|
1347
1248
|
);
|
|
1348
1249
|
return true;
|
|
@@ -1463,10 +1364,14 @@ __name(readStdin, "readStdin");
|
|
|
1463
1364
|
// packages/cli/src/utils/relaunch.ts
|
|
1464
1365
|
init_esbuild_shims();
|
|
1465
1366
|
import { spawn } from "node:child_process";
|
|
1466
|
-
async function relaunchOnExitCode(runner) {
|
|
1367
|
+
async function relaunchOnExitCode(runner, options) {
|
|
1467
1368
|
while (true) {
|
|
1468
1369
|
try {
|
|
1469
1370
|
const exitCode = await runner();
|
|
1371
|
+
if (exitCode === UPDATE_RELAUNCH_EXIT_CODE && options?.onUpdateRelaunch) {
|
|
1372
|
+
const updatedExitCode = await options.onUpdateRelaunch();
|
|
1373
|
+
process.exit(updatedExitCode);
|
|
1374
|
+
}
|
|
1470
1375
|
if (exitCode !== RELAUNCH_EXIT_CODE) {
|
|
1471
1376
|
process.exit(exitCode);
|
|
1472
1377
|
}
|
|
@@ -1484,6 +1389,7 @@ async function relaunchAppInChildProcess(additionalNodeArgs, additionalScriptArg
|
|
|
1484
1389
|
return;
|
|
1485
1390
|
}
|
|
1486
1391
|
const runner = /* @__PURE__ */ __name(() => {
|
|
1392
|
+
let updateOnExitRequested = false;
|
|
1487
1393
|
const script = process.argv[1];
|
|
1488
1394
|
const scriptArgs = process.argv.slice(2);
|
|
1489
1395
|
const nodeArgs = [
|
|
@@ -1493,12 +1399,23 @@ async function relaunchAppInChildProcess(additionalNodeArgs, additionalScriptArg
|
|
|
1493
1399
|
...additionalScriptArgs,
|
|
1494
1400
|
...scriptArgs
|
|
1495
1401
|
];
|
|
1496
|
-
const newEnv = {
|
|
1402
|
+
const newEnv = {
|
|
1403
|
+
...process.env,
|
|
1404
|
+
QWEN_CODE_NO_RELAUNCH: "true"
|
|
1405
|
+
};
|
|
1406
|
+
if (newEnv["QWEN_CODE_SCRUB_ELECTRON_RUN_AS_NODE"] === "1") {
|
|
1407
|
+
newEnv["ELECTRON_RUN_AS_NODE"] = "1";
|
|
1408
|
+
}
|
|
1497
1409
|
process.stdin.pause();
|
|
1498
1410
|
const child = spawn(process.execPath, nodeArgs, {
|
|
1499
|
-
stdio: "inherit",
|
|
1411
|
+
stdio: ["inherit", "inherit", "inherit", "ipc"],
|
|
1500
1412
|
env: newEnv
|
|
1501
1413
|
});
|
|
1414
|
+
child.on("message", (message) => {
|
|
1415
|
+
if (typeof message === "object" && message !== null && "type" in message && message.type === UPDATE_ON_EXIT_MESSAGE) {
|
|
1416
|
+
updateOnExitRequested = true;
|
|
1417
|
+
}
|
|
1418
|
+
});
|
|
1502
1419
|
try {
|
|
1503
1420
|
options?.afterSpawn?.();
|
|
1504
1421
|
} catch (err) {
|
|
@@ -1509,11 +1426,20 @@ async function relaunchAppInChildProcess(additionalNodeArgs, additionalScriptArg
|
|
|
1509
1426
|
child.on("error", reject);
|
|
1510
1427
|
child.on("close", (code) => {
|
|
1511
1428
|
process.stdin.resume();
|
|
1512
|
-
|
|
1429
|
+
const exitCode = code ?? 1;
|
|
1430
|
+
if (exitCode === 0 && updateOnExitRequested && options?.onUpdateRelaunch) {
|
|
1431
|
+
updateOnExitRequested = false;
|
|
1432
|
+
void Promise.resolve(options.onUpdateRelaunch()).then(
|
|
1433
|
+
(updatedExitCode) => resolve3(updatedExitCode),
|
|
1434
|
+
reject
|
|
1435
|
+
);
|
|
1436
|
+
return;
|
|
1437
|
+
}
|
|
1438
|
+
resolve3(exitCode);
|
|
1513
1439
|
});
|
|
1514
1440
|
});
|
|
1515
1441
|
}, "runner");
|
|
1516
|
-
await relaunchOnExitCode(runner);
|
|
1442
|
+
await relaunchOnExitCode(runner, options);
|
|
1517
1443
|
}
|
|
1518
1444
|
__name(relaunchAppInChildProcess, "relaunchAppInChildProcess");
|
|
1519
1445
|
|
|
@@ -1607,6 +1533,18 @@ var BUILTIN_SEATBELT_PROFILES = [
|
|
|
1607
1533
|
"restrictive-closed",
|
|
1608
1534
|
"restrictive-proxied"
|
|
1609
1535
|
];
|
|
1536
|
+
function getSandboxPassthroughEnvArgs(env = process.env) {
|
|
1537
|
+
return [
|
|
1538
|
+
"QWEN_DEBUG_LOG_FILE",
|
|
1539
|
+
"QWEN_CODE_LEGACY_MCP_BLOCKING",
|
|
1540
|
+
SKIP_UPDATE_CHECK_ENV_VAR,
|
|
1541
|
+
CUSTOM_SANDBOX_IMAGE_ENV_VAR,
|
|
1542
|
+
HOST_UPDATE_RELAUNCH_ENV_VAR
|
|
1543
|
+
].flatMap(
|
|
1544
|
+
(envVar) => env[envVar] === void 0 ? [] : ["--env", `${envVar}=${env[envVar]}`]
|
|
1545
|
+
);
|
|
1546
|
+
}
|
|
1547
|
+
__name(getSandboxPassthroughEnvArgs, "getSandboxPassthroughEnvArgs");
|
|
1610
1548
|
function resolveSeatbeltProfileFile(profile, importMetaUrl = import.meta.url) {
|
|
1611
1549
|
if (!BUILTIN_SEATBELT_PROFILES.includes(profile)) {
|
|
1612
1550
|
return path6.join(SETTINGS_DIRECTORY_NAME, `sandbox-macos-${profile}.sb`);
|
|
@@ -1756,6 +1694,7 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
1756
1694
|
"sh",
|
|
1757
1695
|
"-c",
|
|
1758
1696
|
[
|
|
1697
|
+
...process.env["QWEN_CODE_SCRUB_ELECTRON_RUN_AS_NODE"] === "1" ? ["ELECTRON_RUN_AS_NODE=1"] : [],
|
|
1759
1698
|
`SANDBOX=sandbox-exec`,
|
|
1760
1699
|
`NODE_OPTIONS="${nodeOptions}"`,
|
|
1761
1700
|
...finalArgv.map((arg) => (0, import_shell_quote.quote)([arg]))
|
|
@@ -2013,14 +1952,7 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
|
2013
1952
|
`QWEN_CODE_TEST_VAR=${process.env["QWEN_CODE_TEST_VAR"]}`
|
|
2014
1953
|
);
|
|
2015
1954
|
}
|
|
2016
|
-
|
|
2017
|
-
"QWEN_DEBUG_LOG_FILE",
|
|
2018
|
-
"QWEN_CODE_LEGACY_MCP_BLOCKING"
|
|
2019
|
-
]) {
|
|
2020
|
-
if (process.env[envVar] !== void 0) {
|
|
2021
|
-
args.push("--env", `${envVar}=${process.env[envVar]}`);
|
|
2022
|
-
}
|
|
2023
|
-
}
|
|
1955
|
+
args.push(...getSandboxPassthroughEnvArgs());
|
|
2024
1956
|
if (process.env["QWEN_CODE_MCP_APPROVALS_PATH"]) {
|
|
2025
1957
|
args.push(
|
|
2026
1958
|
"--env",
|
|
@@ -2432,7 +2364,7 @@ function initializeWarningHandler() {
|
|
|
2432
2364
|
__name(initializeWarningHandler, "initializeWarningHandler");
|
|
2433
2365
|
|
|
2434
2366
|
// packages/cli/src/gemini.tsx
|
|
2435
|
-
var
|
|
2367
|
+
var debugLogger5 = createDebugLogger("STARTUP");
|
|
2436
2368
|
function clearCorruptionEnvVars() {
|
|
2437
2369
|
delete process.env[ENV_CORRUPTED_PATH];
|
|
2438
2370
|
delete process.env[ENV_WAS_RECOVERED];
|
|
@@ -2500,9 +2432,14 @@ function getSignalExitCode(signal) {
|
|
|
2500
2432
|
return signal === "SIGINT" ? 130 : 143;
|
|
2501
2433
|
}
|
|
2502
2434
|
__name(getSignalExitCode, "getSignalExitCode");
|
|
2435
|
+
var SIGINT_EXIT_CONFIRM_WINDOW_MS = 1e3;
|
|
2436
|
+
var SIGINT_RERAISE_IGNORE_MS = 50;
|
|
2503
2437
|
function installInteractiveSignalHandlers(wasRaw) {
|
|
2504
2438
|
let cleanupStarted = false;
|
|
2505
|
-
|
|
2439
|
+
let lastSigintAt = 0;
|
|
2440
|
+
const swallowSignalDuringCleanup = /* @__PURE__ */ __name(() => {
|
|
2441
|
+
}, "swallowSignalDuringCleanup");
|
|
2442
|
+
const beginExit = /* @__PURE__ */ __name((signal) => {
|
|
2506
2443
|
if (process.stdin.isTTY) {
|
|
2507
2444
|
process.stdin.setRawMode(wasRaw);
|
|
2508
2445
|
}
|
|
@@ -2510,20 +2447,34 @@ function installInteractiveSignalHandlers(wasRaw) {
|
|
|
2510
2447
|
return;
|
|
2511
2448
|
}
|
|
2512
2449
|
cleanupStarted = true;
|
|
2450
|
+
process.on("SIGINT", swallowSignalDuringCleanup);
|
|
2513
2451
|
void runExitCleanup().catch((error) => {
|
|
2514
|
-
|
|
2452
|
+
debugLogger5.error(`Error during ${signal} cleanup:`, error);
|
|
2515
2453
|
}).finally(() => {
|
|
2516
2454
|
process.exit(getSignalExitCode(signal));
|
|
2517
2455
|
});
|
|
2518
|
-
}, "
|
|
2456
|
+
}, "beginExit");
|
|
2519
2457
|
const handleSigterm = /* @__PURE__ */ __name(() => {
|
|
2520
|
-
|
|
2458
|
+
beginExit("SIGTERM");
|
|
2521
2459
|
}, "handleSigterm");
|
|
2522
2460
|
const handleSigint = /* @__PURE__ */ __name(() => {
|
|
2523
|
-
|
|
2461
|
+
if (cleanupStarted) {
|
|
2462
|
+
return;
|
|
2463
|
+
}
|
|
2464
|
+
const now = Date.now();
|
|
2465
|
+
const sincePrevious = now - lastSigintAt;
|
|
2466
|
+
if (sincePrevious <= SIGINT_RERAISE_IGNORE_MS) {
|
|
2467
|
+
return;
|
|
2468
|
+
}
|
|
2469
|
+
if (sincePrevious <= SIGINT_EXIT_CONFIRM_WINDOW_MS) {
|
|
2470
|
+
beginExit("SIGINT");
|
|
2471
|
+
return;
|
|
2472
|
+
}
|
|
2473
|
+
lastSigintAt = now;
|
|
2474
|
+
writeStderrLine("Press Ctrl+C again to exit.");
|
|
2524
2475
|
}, "handleSigint");
|
|
2525
|
-
process.
|
|
2526
|
-
process.
|
|
2476
|
+
process.on("SIGTERM", handleSigterm);
|
|
2477
|
+
process.on("SIGINT", handleSigint);
|
|
2527
2478
|
return () => {
|
|
2528
2479
|
process.removeListener("SIGTERM", handleSigterm);
|
|
2529
2480
|
process.removeListener("SIGINT", handleSigint);
|
|
@@ -2543,6 +2494,12 @@ async function main() {
|
|
|
2543
2494
|
preResolveHomeEnvOverrides();
|
|
2544
2495
|
let argv = await parseArguments();
|
|
2545
2496
|
profileCheckpoint("after_parse_arguments");
|
|
2497
|
+
if ((argv.acp || argv.experimentalAcp) && process.env["QWEN_CODE_SCRUB_ELECTRON_RUN_AS_NODE"] === "1") {
|
|
2498
|
+
delete process.env["ELECTRON_RUN_AS_NODE"];
|
|
2499
|
+
if (process.env["QWEN_CODE_NO_RELAUNCH"] || process.env["SANDBOX"]) {
|
|
2500
|
+
delete process.env["QWEN_CODE_SCRUB_ELECTRON_RUN_AS_NODE"];
|
|
2501
|
+
}
|
|
2502
|
+
}
|
|
2546
2503
|
if (isBareMode(argv.bare)) {
|
|
2547
2504
|
process.env[QWEN_CODE_SIMPLE_ENV_VAR] = "1";
|
|
2548
2505
|
}
|
|
@@ -2566,7 +2523,7 @@ async function main() {
|
|
|
2566
2523
|
await initializeI18n(
|
|
2567
2524
|
resolveLanguageSetting(settings.merged.general?.language)
|
|
2568
2525
|
);
|
|
2569
|
-
const { handleList: handleListExtensions } = await import("./list-
|
|
2526
|
+
const { handleList: handleListExtensions } = await import("./list-MMCNNHE7.js");
|
|
2570
2527
|
await handleListExtensions();
|
|
2571
2528
|
process.exit(0);
|
|
2572
2529
|
}
|
|
@@ -2580,7 +2537,7 @@ async function main() {
|
|
|
2580
2537
|
dns.setDefaultResultOrder(
|
|
2581
2538
|
validateDnsResolutionOrder(settings.merged.advanced?.dnsResolutionOrder)
|
|
2582
2539
|
);
|
|
2583
|
-
const { themeManager, AUTO_THEME_NAME } = await import("./theme-manager-
|
|
2540
|
+
const { themeManager, AUTO_THEME_NAME } = await import("./theme-manager-UTUT3I4P.js");
|
|
2584
2541
|
themeManager.loadCustomThemes(settings.merged.ui?.customThemes);
|
|
2585
2542
|
const configuredTheme = settings.merged.ui?.theme;
|
|
2586
2543
|
if (configuredTheme && configuredTheme !== AUTO_THEME_NAME) {
|
|
@@ -2592,7 +2549,30 @@ async function main() {
|
|
|
2592
2549
|
}
|
|
2593
2550
|
if (!process.env["SANDBOX"]) {
|
|
2594
2551
|
const memoryArgs = settings.merged.advanced?.autoConfigureMemory ? getNodeMemoryArgs(isDebugMode3) : [];
|
|
2552
|
+
const updateProjectRoot = process.cwd();
|
|
2553
|
+
const onUpdateRelaunch = /* @__PURE__ */ __name(async () => {
|
|
2554
|
+
await initializeI18n(
|
|
2555
|
+
resolveLanguageSetting(settings.merged.general?.language)
|
|
2556
|
+
);
|
|
2557
|
+
const { updateBeforeRelaunch } = await import("./update-relaunch-QFNHPMZZ.js");
|
|
2558
|
+
const shouldRelaunch = await updateBeforeRelaunch(
|
|
2559
|
+
settings,
|
|
2560
|
+
updateProjectRoot
|
|
2561
|
+
);
|
|
2562
|
+
return shouldRelaunch ? UPDATE_COMPLETE_EXIT_CODE : 0;
|
|
2563
|
+
}, "onUpdateRelaunch");
|
|
2595
2564
|
const sandboxConfig = await loadSandboxConfig(settings.merged, argv);
|
|
2565
|
+
const customSandboxImage = argv.sandboxImage ?? process.env["QWEN_SANDBOX_IMAGE"] ?? settings.merged.tools?.sandboxImage;
|
|
2566
|
+
if (sandboxConfig && sandboxConfig.command !== "sandbox-exec" && customSandboxImage) {
|
|
2567
|
+
process.env[CUSTOM_SANDBOX_IMAGE_ENV_VAR] = sandboxConfig.image;
|
|
2568
|
+
} else if (sandboxConfig && sandboxConfig.command !== "sandbox-exec") {
|
|
2569
|
+
const hostInstallationInfo = getInstallationInfo(updateProjectRoot, true);
|
|
2570
|
+
process.env[HOST_UPDATE_RELAUNCH_ENV_VAR] = String(
|
|
2571
|
+
Boolean(
|
|
2572
|
+
hostInstallationInfo.updateCommand || hostInstallationInfo.isStandalone && hostInstallationInfo.standaloneDir
|
|
2573
|
+
)
|
|
2574
|
+
);
|
|
2575
|
+
}
|
|
2596
2576
|
if (sandboxConfig) {
|
|
2597
2577
|
const partialConfig = await loadCliConfig(
|
|
2598
2578
|
settings.merged,
|
|
@@ -2664,12 +2644,16 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
2664
2644
|
sessionId
|
|
2665
2645
|
) : injectStdinIntoArgs(process.argv, stdinData);
|
|
2666
2646
|
await relaunchOnExitCode(
|
|
2667
|
-
() => start_sandbox(sandboxConfig, memoryArgs, partialConfig, sandboxArgs)
|
|
2647
|
+
() => start_sandbox(sandboxConfig, memoryArgs, partialConfig, sandboxArgs),
|
|
2648
|
+
{
|
|
2649
|
+
onUpdateRelaunch
|
|
2650
|
+
}
|
|
2668
2651
|
);
|
|
2669
2652
|
process.exit(0);
|
|
2670
2653
|
} else {
|
|
2671
2654
|
await relaunchAppInChildProcess(memoryArgs, [], {
|
|
2672
|
-
afterSpawn: clearCorruptionEnvVars
|
|
2655
|
+
afterSpawn: clearCorruptionEnvVars,
|
|
2656
|
+
onUpdateRelaunch
|
|
2673
2657
|
});
|
|
2674
2658
|
}
|
|
2675
2659
|
}
|
|
@@ -2730,7 +2714,7 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
2730
2714
|
);
|
|
2731
2715
|
let resolvedSessionId;
|
|
2732
2716
|
if (argv.resume === "") {
|
|
2733
|
-
const { showResumeSessionPicker } = await import("./StandaloneSessionPicker-
|
|
2717
|
+
const { showResumeSessionPicker } = await import("./StandaloneSessionPicker-YRWOQVQA.js");
|
|
2734
2718
|
resolvedSessionId = await showResumeSessionPicker();
|
|
2735
2719
|
} else if (!isValidSessionId(argv.resume)) {
|
|
2736
2720
|
const sessionService = new SessionService(process.cwd());
|
|
@@ -2741,7 +2725,7 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
2741
2725
|
writeStderrLine(
|
|
2742
2726
|
`Multiple sessions found with title "${argv.resume}". Please select one:`
|
|
2743
2727
|
);
|
|
2744
|
-
const { showResumeSessionPicker } = await import("./StandaloneSessionPicker-
|
|
2728
|
+
const { showResumeSessionPicker } = await import("./StandaloneSessionPicker-YRWOQVQA.js");
|
|
2745
2729
|
resolvedSessionId = await showResumeSessionPicker(
|
|
2746
2730
|
process.cwd(),
|
|
2747
2731
|
matches
|
|
@@ -2829,7 +2813,7 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
2829
2813
|
)
|
|
2830
2814
|
);
|
|
2831
2815
|
} catch (error) {
|
|
2832
|
-
|
|
2816
|
+
debugLogger5.warn(
|
|
2833
2817
|
`--worktree sidecar persist failed (non-fatal, notice preserved): ${error instanceof Error ? error.message : String(error)}`
|
|
2834
2818
|
);
|
|
2835
2819
|
}
|
|
@@ -2860,7 +2844,7 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
2860
2844
|
registerCleanup(installInteractiveSignalHandlers(wasRaw));
|
|
2861
2845
|
}
|
|
2862
2846
|
if (config.isInteractive() && !wasRaw && process.stdin.isTTY) {
|
|
2863
|
-
const { startEarlyInputCapture, stopAndGetCapturedInput } = await import("./earlyInputCapture-
|
|
2847
|
+
const { startEarlyInputCapture, stopAndGetCapturedInput } = await import("./earlyInputCapture-NPF4PVUE.js");
|
|
2864
2848
|
const { detectAndEnableKittyProtocol } = await import("./kittyProtocolDetector-HCNNKJTI.js");
|
|
2865
2849
|
process.stdin.setRawMode(true);
|
|
2866
2850
|
startEarlyInputCapture();
|
|
@@ -2868,16 +2852,16 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
2868
2852
|
kittyProtocolDetectionComplete = detectAndEnableKittyProtocol();
|
|
2869
2853
|
if (!configuredTheme || configuredTheme === AUTO_THEME_NAME) {
|
|
2870
2854
|
themeAutoDetectionComplete = themeManager.resolveAutoThemeAsync().catch((err) => {
|
|
2871
|
-
|
|
2855
|
+
debugLogger5.warn("Async theme auto-detection failed:", err);
|
|
2872
2856
|
});
|
|
2873
2857
|
}
|
|
2874
2858
|
}
|
|
2875
2859
|
if (config.isInteractive()) {
|
|
2876
|
-
const { setMaxSizedBoxDebugging } = await import("./MaxSizedBox-
|
|
2860
|
+
const { setMaxSizedBoxDebugging } = await import("./MaxSizedBox-ZFHA4QEQ.js");
|
|
2877
2861
|
setMaxSizedBoxDebugging(isDebugMode3);
|
|
2878
2862
|
}
|
|
2879
2863
|
const inputFormat = process.stdin.isTTY ? "text" /* TEXT */ : typeof config.getInputFormat === "function" ? config.getInputFormat() : "text" /* TEXT */;
|
|
2880
|
-
const { initializeApp } = await import("./initializer-
|
|
2864
|
+
const { initializeApp } = await import("./initializer-4DHPNAZG.js");
|
|
2881
2865
|
let input = config.getQuestion();
|
|
2882
2866
|
const hasRemoteInput = Boolean(config.getInputFile?.());
|
|
2883
2867
|
const deferIdeConnection = config.isInteractive() && !config.getExperimentalZedIntegration() && !input && !hasRemoteInput;
|
|
@@ -2886,7 +2870,7 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
2886
2870
|
});
|
|
2887
2871
|
profileCheckpoint("after_initialize_app");
|
|
2888
2872
|
if (config.getExperimentalZedIntegration()) {
|
|
2889
|
-
const { runAcpAgent } = await import("./acpAgent-
|
|
2873
|
+
const { runAcpAgent } = await import("./acpAgent-U2P2IESZ.js");
|
|
2890
2874
|
await runAcpAgent(config, settings, argv);
|
|
2891
2875
|
await runExitCleanup();
|
|
2892
2876
|
process.exit(0);
|
|
@@ -2925,7 +2909,7 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
2925
2909
|
setInteractiveMode(true);
|
|
2926
2910
|
await kittyProtocolDetectionComplete;
|
|
2927
2911
|
await themeAutoDetectionComplete;
|
|
2928
|
-
const { startInteractiveUI } = await import("./startInteractiveUI-
|
|
2912
|
+
const { startInteractiveUI } = await import("./startInteractiveUI-S7WC6EZG.js");
|
|
2929
2913
|
await startInteractiveUI(
|
|
2930
2914
|
config,
|
|
2931
2915
|
settings,
|
|
@@ -2986,7 +2970,7 @@ ${finalArgs[promptIndex + 1]}`;
|
|
|
2986
2970
|
${input}`;
|
|
2987
2971
|
}
|
|
2988
2972
|
}
|
|
2989
|
-
const { validateNonInteractiveAuth } = await import("./validateNonInterActiveAuth-
|
|
2973
|
+
const { validateNonInteractiveAuth } = await import("./validateNonInterActiveAuth-SCIWJ4CX.js");
|
|
2990
2974
|
const nonInteractiveConfig = await validateNonInteractiveAuth(
|
|
2991
2975
|
settings.merged.security?.auth?.useExternal,
|
|
2992
2976
|
config,
|
|
@@ -2995,7 +2979,7 @@ ${input}`;
|
|
|
2995
2979
|
const prompt_id = createNonInteractivePromptId(config.getSessionId());
|
|
2996
2980
|
if (inputFormat === "stream-json" /* STREAM_JSON */) {
|
|
2997
2981
|
const trimmedInput = (input ?? "").trim();
|
|
2998
|
-
const { runNonInteractiveStreamJson } = await import("./session-
|
|
2982
|
+
const { runNonInteractiveStreamJson } = await import("./session-D6OG5SKX.js");
|
|
2999
2983
|
await runNonInteractiveStreamJson(
|
|
3000
2984
|
nonInteractiveConfig,
|
|
3001
2985
|
trimmedInput.length > 0 ? trimmedInput : "",
|
|
@@ -3018,8 +3002,8 @@ ${input}`;
|
|
|
3018
3002
|
auth_type: config.getContentGeneratorConfig()?.authType,
|
|
3019
3003
|
prompt_length: input.length
|
|
3020
3004
|
});
|
|
3021
|
-
|
|
3022
|
-
const { runNonInteractive } = await import("./nonInteractiveCli-
|
|
3005
|
+
debugLogger5.debug(`Session ID: ${config.getSessionId()}`);
|
|
3006
|
+
const { runNonInteractive } = await import("./nonInteractiveCli-OUGWLHNV.js");
|
|
3023
3007
|
const exitCode = await runNonInteractive(
|
|
3024
3008
|
nonInteractiveConfig,
|
|
3025
3009
|
settings,
|
|
@@ -3043,16 +3027,16 @@ function registerLspHotReload(config, registerCleanup2) {
|
|
|
3043
3027
|
return;
|
|
3044
3028
|
}
|
|
3045
3029
|
const lspConfigWatcher = new LspConfigWatcher(config.getProjectRoot());
|
|
3046
|
-
|
|
3030
|
+
debugLogger5.info(
|
|
3047
3031
|
`Registering LSP config hot reload watcher for ${config.getProjectRoot()}`
|
|
3048
3032
|
);
|
|
3049
3033
|
lspConfigWatcher.startWatching(async (event) => {
|
|
3050
3034
|
if (event.changeType === "invalid") {
|
|
3051
|
-
|
|
3035
|
+
debugLogger5.warn(`Invalid LSP config file ${event.path}: ${event.error}`);
|
|
3052
3036
|
appEvents.emit("log-error" /* LogError */, event.error);
|
|
3053
3037
|
return;
|
|
3054
3038
|
}
|
|
3055
|
-
|
|
3039
|
+
debugLogger5.info(
|
|
3056
3040
|
`Reloading LSP server settings: changeType=${event.changeType}, path=${event.path}`
|
|
3057
3041
|
);
|
|
3058
3042
|
let errorReported = false;
|
|
@@ -3060,7 +3044,7 @@ function registerLspHotReload(config, registerCleanup2) {
|
|
|
3060
3044
|
const result = await reinitializeLsp();
|
|
3061
3045
|
if (result) {
|
|
3062
3046
|
const failedServers = getRuntimeReloadFailedNames(result.reconcile);
|
|
3063
|
-
|
|
3047
|
+
debugLogger5.info(
|
|
3064
3048
|
`Reloaded LSP server settings: added=${formatRuntimeReloadNames(
|
|
3065
3049
|
result.reconcile.added
|
|
3066
3050
|
)}, removed=${formatRuntimeReloadNames(
|
|
@@ -3092,13 +3076,13 @@ function registerLspHotReload(config, registerCleanup2) {
|
|
|
3092
3076
|
throw new Error(message);
|
|
3093
3077
|
}
|
|
3094
3078
|
} else {
|
|
3095
|
-
|
|
3079
|
+
debugLogger5.info(
|
|
3096
3080
|
"Skipped LSP server settings reload because LSP is disabled or no client is available"
|
|
3097
3081
|
);
|
|
3098
3082
|
}
|
|
3099
3083
|
appEvents.emit("lsp-status-changed" /* LspStatusChanged */);
|
|
3100
3084
|
} catch (error) {
|
|
3101
|
-
|
|
3085
|
+
debugLogger5.warn("Failed to reload LSP server settings:", error);
|
|
3102
3086
|
if (!errorReported) {
|
|
3103
3087
|
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.";
|
|
3104
3088
|
appEvents.emit("log-error" /* LogError */, message);
|