@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.
Files changed (307) hide show
  1. package/bundled/qc-helper/docs/configuration/model-providers.md +11 -0
  2. package/bundled/qc-helper/docs/configuration/settings.md +15 -14
  3. package/bundled/qc-helper/docs/features/approval-mode.md +2 -2
  4. package/bundled/qc-helper/docs/features/channels/dingtalk.md +30 -0
  5. package/bundled/qc-helper/docs/features/channels/overview.md +66 -17
  6. package/bundled/qc-helper/docs/features/channels/wecom.md +8 -7
  7. package/bundled/qc-helper/docs/features/sandbox.md +2 -0
  8. package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +42 -7
  9. package/bundled/qc-helper/docs/qwen-serve.md +77 -46
  10. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
  11. package/bundled/review/SKILL.md +163 -403
  12. package/chunks/{MaxSizedBox-67ODZ4SZ.js → MaxSizedBox-ZFHA4QEQ.js} +30 -30
  13. package/chunks/{StandaloneSessionPicker-SIPBQT5Z.js → StandaloneSessionPicker-YRWOQVQA.js} +44 -44
  14. package/chunks/{acpAgent-VPZJXLFX.js → acpAgent-U2P2IESZ.js} +1423 -487
  15. package/chunks/{agent-Z7NWL6XL.js → agent-GQXX6X5Y.js} +26 -26
  16. package/chunks/{agent-headless-73HZ6ROQ.js → agent-headless-3572NBCK.js} +26 -26
  17. package/chunks/{anthropicContentGenerator-56U3YCP2.js → anthropicContentGenerator-Y65DMM64.js} +103 -18
  18. package/chunks/{artifact-tool-BWZZJ42H.js → artifact-tool-WR7I2XON.js} +2 -2
  19. package/chunks/{askUserQuestion-WU3S5A5T.js → askUserQuestion-B4FUTPHD.js} +2 -44
  20. package/chunks/{bridge-XFKW6S7Q.js → bridge-N5RMGD7G.js} +31 -33
  21. package/chunks/{ca-C2JTT2N5.js → ca-M3GQQ26D.js} +7 -2
  22. package/chunks/channel-worker-group-HZVJKLGX.js +21 -0
  23. package/chunks/{channel-worker-manager-5RWKSGEU.js → channel-worker-manager-3WDK4HNS.js} +34 -10
  24. package/chunks/{channel-worker-supervisor-PCDAZN4D.js → channel-worker-supervisor-U2W6Q5F7.js} +6 -4
  25. package/chunks/{chunk-YYPXHMWO.js → chunk-2XRGFF5K.js} +6 -6
  26. package/chunks/{chunk-ZKMGAFYV.js → chunk-2YSZE74N.js} +2 -2
  27. package/chunks/{chunk-L5U3ELZX.js → chunk-335ECZTA.js} +1 -1
  28. package/chunks/{chunk-5EBKKSBX.js → chunk-336KPNNV.js} +2 -2
  29. package/chunks/{chunk-Q5GLXH5Q.js → chunk-3CL5SEDT.js} +6 -6
  30. package/chunks/{chunk-2FO5GFKZ.js → chunk-3DJY4IFO.js} +1 -1
  31. package/chunks/{chunk-CJFNEBYB.js → chunk-3NWYQ7FX.js} +2 -2
  32. package/chunks/{chunk-WIASPMLX.js → chunk-3X2CFOUM.js} +358 -298
  33. package/chunks/{chunk-K7CRWKOE.js → chunk-3YJZ6WNY.js} +5812 -4520
  34. package/chunks/{chunk-Y66VOBRP.js → chunk-4CA4WUMS.js} +2 -2
  35. package/chunks/{chunk-LQIDP6K5.js → chunk-4CHDYDG3.js} +1 -1
  36. package/chunks/{chunk-TISZXPAX.js → chunk-4HCYNDMG.js} +1 -1
  37. package/chunks/chunk-4JBTZBCW.js +140 -0
  38. package/chunks/{chunk-TV6K2FB4.js → chunk-4RPARQ5D.js} +2 -2
  39. package/chunks/{chunk-RCEEXIOO.js → chunk-4XCVGEEX.js} +3 -3
  40. package/chunks/{chunk-N6FXRR6P.js → chunk-57RWF6R7.js} +1 -1
  41. package/chunks/chunk-5O34IMY5.js +59 -0
  42. package/chunks/{chunk-5LROA5W4.js → chunk-5QRK2VZG.js} +8 -8
  43. package/chunks/{chunk-7L4XBYVW.js → chunk-632KROVU.js} +10 -3
  44. package/chunks/{chunk-65N2J6V2.js → chunk-64XGKNSI.js} +3 -3
  45. package/chunks/{chunk-P6LART6G.js → chunk-66IT3EY2.js} +1059 -129
  46. package/chunks/{chunk-FXMC7SL2.js → chunk-6ITLKEOZ.js} +3 -3
  47. package/chunks/{chunk-F7NXQH4Y.js → chunk-6YIRYY3P.js} +1 -1
  48. package/chunks/{chunk-GGJII3FM.js → chunk-6Z5NRZVU.js} +92 -3
  49. package/chunks/{chunk-DPFBNG72.js → chunk-AEKYFMYE.js} +1 -1
  50. package/chunks/{chunk-2UUAIFQO.js → chunk-ANRANWVE.js} +9 -1
  51. package/chunks/{chunk-SXU3KKNI.js → chunk-ATJ7H5AS.js} +419 -76
  52. package/chunks/{chunk-6GETGQWP.js → chunk-C5NSOSF4.js} +64 -18
  53. package/chunks/{chunk-TQBODCFD.js → chunk-CMVFTMRD.js} +251 -3
  54. package/chunks/{chunk-DK33QJ3V.js → chunk-CZSAIBUB.js} +733 -14
  55. package/chunks/{chunk-3MX7D6QN.js → chunk-DASWPKXR.js} +32 -4
  56. package/chunks/{chunk-JSJFKYWT.js → chunk-DPSHAB47.js} +2 -2
  57. package/chunks/{chunk-7MJAZMXK.js → chunk-ECZFTRTP.js} +29 -78
  58. package/chunks/{chunk-H3FQOPPS.js → chunk-EKG3BHQY.js} +4 -4
  59. package/chunks/{chunk-FSA7ERJ2.js → chunk-F2RR4HO2.js} +1 -1
  60. package/chunks/{chunk-EQY6POVO.js → chunk-F5XYN5VF.js} +2 -2
  61. package/chunks/chunk-FEOZBUMT.js +77 -0
  62. package/chunks/{chunk-L62SEJWY.js → chunk-FHUXCRAF.js} +4 -4
  63. package/chunks/{chunk-OFEVHGVU.js → chunk-FSJGBUQI.js} +818 -31
  64. package/chunks/{chunk-FBU7WRZI.js → chunk-FUTHTZVV.js} +1 -1
  65. package/chunks/{chunk-ZRKBI3DP.js → chunk-FZRES4GK.js} +1 -1
  66. package/chunks/{chunk-OKAIGAYW.js → chunk-G274ETR6.js} +3 -3
  67. package/chunks/{chunk-6GKMJPOC.js → chunk-GA3WUOO7.js} +5 -5
  68. package/chunks/{chunk-X362TMXZ.js → chunk-GAQOQMHY.js} +8 -6
  69. package/chunks/{chunk-WLXYAKV7.js → chunk-GG6RSNWS.js} +9 -4
  70. package/chunks/{chunk-CEW4HDPK.js → chunk-GUNTLALV.js} +2484 -362
  71. package/chunks/{chunk-LXLTBIDP.js → chunk-HCCR43AY.js} +1 -1
  72. package/chunks/{chunk-RDRVMDWV.js → chunk-HIMIG6PI.js} +11 -11
  73. package/chunks/{chunk-MO7O5722.js → chunk-HQXQCIT2.js} +45 -5
  74. package/chunks/{chunk-LTNI523B.js → chunk-HT7L5FCZ.js} +28 -5
  75. package/chunks/{chunk-7NAWTFVY.js → chunk-IENO2YAT.js} +3 -3
  76. package/chunks/{chunk-3XJFUTNM.js → chunk-IK5TYYVR.js} +59 -12
  77. package/chunks/{chunk-AAR5SGMD.js → chunk-IVKLDHU6.js} +7 -5
  78. package/chunks/{chunk-6W6DI34P.js → chunk-IX7O5WI3.js} +180 -8
  79. package/chunks/{chunk-SPJQO2CE.js → chunk-J2MKYJKZ.js} +2 -2
  80. package/chunks/{chunk-SPUYQB4T.js → chunk-JBAQ5BYX.js} +1 -1
  81. package/chunks/{chunk-TYLOFD2U.js → chunk-JCJPZMJV.js} +1 -1
  82. package/chunks/chunk-JDIUK2Y3.js +226 -0
  83. package/chunks/{chunk-L37RC7MQ.js → chunk-JUVTV4NF.js} +1 -1
  84. package/chunks/{chunk-WDWJ4OQJ.js → chunk-K2GBHL73.js} +4 -4
  85. package/chunks/{chunk-HHEFI4RP.js → chunk-KEVDWH3U.js} +857 -137
  86. package/chunks/{chunk-YU56QGXX.js → chunk-KTKETHMY.js} +1 -1
  87. package/chunks/{chunk-WDW64OW3.js → chunk-LGY7PG7Q.js} +5 -5
  88. package/chunks/{chunk-E67NFMF4.js → chunk-LKR7QQ63.js} +37 -3
  89. package/chunks/{chunk-4YWLED2A.js → chunk-LSFVUGXT.js} +9 -6
  90. package/chunks/{chunk-W34A5MJH.js → chunk-LTD3CHGS.js} +1 -1
  91. package/chunks/chunk-LXXMOYPL.js +22 -0
  92. package/chunks/{chunk-BBNVFRGD.js → chunk-MI2V6IWU.js} +1 -1
  93. package/chunks/{chunk-UFOKA4PR.js → chunk-O2K6BLPZ.js} +114 -4
  94. package/chunks/{chunk-B5I2IIWY.js → chunk-OBYAX5QZ.js} +6 -6
  95. package/chunks/{chunk-V7EQTZYR.js → chunk-OCQ2QTFJ.js} +203 -47
  96. package/chunks/{chunk-VBRRNQB7.js → chunk-OPVIKLKK.js} +112 -25
  97. package/chunks/{chunk-2Z5UX4KI.js → chunk-OSSDHJDU.js} +1 -1
  98. package/chunks/{chunk-TTUO4DNG.js → chunk-OXOEOOQU.js} +126 -734
  99. package/chunks/{chunk-4FMG7EDJ.js → chunk-PWYLF7SS.js} +79 -16
  100. package/chunks/chunk-QFEY6OXH.js +45 -0
  101. package/chunks/{chunk-YX4LLZ3D.js → chunk-QPRDXJIC.js} +115 -40
  102. package/chunks/{chunk-7R4DPSRA.js → chunk-R3VWUU2E.js} +1 -1
  103. package/chunks/{chunk-XLIRF7IK.js → chunk-S4N3G4BB.js} +1 -1
  104. package/chunks/{chunk-ARKANCNX.js → chunk-SGPFJMRP.js} +1 -1
  105. package/chunks/{chunk-WTSXKLG5.js → chunk-SUARMD4Q.js} +1 -1
  106. package/chunks/{chunk-PZL23GTM.js → chunk-T3W4SDRB.js} +2 -0
  107. package/chunks/chunk-T4TZQJ7W.js +48 -0
  108. package/chunks/{chunk-K4PZ5F5T.js → chunk-TVYM3Q3J.js} +101 -8
  109. package/chunks/{chunk-4LD5APFL.js → chunk-TYQMGACW.js} +1 -0
  110. package/chunks/{chunk-6OATMEYN.js → chunk-U2LNTX56.js} +12 -4
  111. package/chunks/{chunk-422XAKCK.js → chunk-U2XBPBO3.js} +4 -3
  112. package/chunks/{chunk-LNUXFLLJ.js → chunk-U4FJ26D2.js} +54 -6
  113. package/chunks/{chunk-ZQTZXVHP.js → chunk-U6OPT4H2.js} +4 -18
  114. package/chunks/{chunk-7NFB7LBQ.js → chunk-UE5TZ55T.js} +8 -0
  115. package/chunks/{chunk-CUUXANEQ.js → chunk-URP6O2PP.js} +6 -1
  116. package/chunks/{chunk-GDQQRV43.js → chunk-V2FRLYHN.js} +3 -3
  117. package/chunks/{chunk-WIEO4CWB.js → chunk-VAJS2E2D.js} +1 -1
  118. package/chunks/{chunk-TXY2C3D2.js → chunk-VNN3JNYT.js} +1 -1
  119. package/chunks/{chunk-YHN5SUIJ.js → chunk-W7H223ZZ.js} +1 -1
  120. package/chunks/{chunk-WX6SD4IQ.js → chunk-WEPXQKGP.js} +1 -1
  121. package/chunks/{chunk-KSO42X3Z.js → chunk-X6YQWCIJ.js} +21 -2
  122. package/chunks/{chunk-URU5UEK6.js → chunk-XA7OKDWM.js} +135 -68
  123. package/chunks/{chunk-Q6TUALBE.js → chunk-XAAEDML2.js} +1 -1
  124. package/chunks/{chunk-KKRTYONM.js → chunk-XSPFQQRE.js} +3 -3
  125. package/chunks/{chunk-OATTJGPJ.js → chunk-Y72B36CP.js} +7 -7
  126. package/chunks/{chunk-ZPAHLFZU.js → chunk-Z2LBNX3R.js} +2 -2
  127. package/chunks/{chunk-XXJKGHZV.js → chunk-ZTSDZQZO.js} +131 -4
  128. package/chunks/{computer-use-IYTX45WA.js → computer-use-UIFBH25Y.js} +26 -26
  129. package/chunks/{config-utils-CFT33LTP.js → config-utils-2LHI7JXU.js} +3 -3
  130. package/chunks/{contextCommand-272V77WU.js → contextCommand-VGZHKEH2.js} +28 -28
  131. package/chunks/{create-sub-session-WNX2OQVX.js → create-sub-session-DIJOV6HV.js} +2 -2
  132. package/chunks/{create-sub-session-CBJMQLYP.js → create-sub-session-OFVI4H6I.js} +26 -26
  133. package/chunks/{cron-create-36TIFKRT.js → cron-create-34GVLSW5.js} +4 -4
  134. package/chunks/{cron-delete-OQD3WULU.js → cron-delete-NMVKUL45.js} +4 -4
  135. package/chunks/{cron-list-4533T2FH.js → cron-list-277ZOR7L.js} +4 -4
  136. package/chunks/{daemon-RNGFPMAB.js → daemon-72MEV3TY.js} +361 -84
  137. package/chunks/daemon-status-provider-ZJJ6AOG2.js +75 -0
  138. package/chunks/{de-2VCDRDGU.js → de-56TMDIKS.js} +7 -2
  139. package/chunks/{dist-3V3ZV6ML.js → dist-4W3UGU2A.js} +1 -1
  140. package/chunks/{dist-HNN7DR2L.js → dist-G6QCGO2K.js} +58 -30
  141. package/chunks/{dist-ERCPDVA6.js → dist-ILVRL322.js} +4 -51
  142. package/chunks/{dist-PHEPJLXD.js → dist-KEZ5JWH4.js} +2 -2
  143. package/chunks/{dist-JZE7F6YR.js → dist-LQHDHBPP.js} +1 -1
  144. package/chunks/{dist-MOEC47TR.js → dist-SVHAGOLN.js} +1 -1
  145. package/chunks/{earlyInputCapture-EN4BRREQ.js → earlyInputCapture-NPF4PVUE.js} +27 -27
  146. package/chunks/{edit-OMAF2QDR.js → edit-F7CT6NZH.js} +27 -27
  147. package/chunks/{en-NJCA3TAA.js → en-AXS2N62H.js} +12 -3
  148. package/chunks/{enter-worktree-BBZX52HG.js → enter-worktree-Z4ET3MZL.js} +26 -26
  149. package/chunks/{enterPlanMode-5NNFMBUY.js → enterPlanMode-VYR7T5NX.js} +27 -29
  150. package/chunks/{environment-7TEWMJYN.js → environment-MBTXL57Q.js} +28 -28
  151. package/chunks/{errors-I4VKVX3F.js → errors-HN36J4FR.js} +28 -28
  152. package/chunks/{exit-worktree-FUWRJI33.js → exit-worktree-RU7JYFMF.js} +26 -26
  153. package/chunks/exitPlanMode-LUBAWMZQ.js +390 -0
  154. package/chunks/{fast-path-ZA57TOH4.js → fast-path-RFT3CDNZ.js} +2 -2
  155. package/chunks/{fr-5F3E7WKD.js → fr-ZJPE5OVN.js} +7 -2
  156. package/chunks/{gemini-UOAKVXBG.js → gemini-37NTNKZF.js} +215 -231
  157. package/chunks/{geminiContentGenerator-G6UCE6MW.js → geminiContentGenerator-76HNOYNQ.js} +5 -5
  158. package/chunks/{glob-4GJQ2UFF.js → glob-DWD7JCZE.js} +32 -27
  159. package/chunks/{grep-5QSYXF2E.js → grep-NJRXFV5C.js} +32 -27
  160. package/chunks/{handleAutoUpdate-ULHNWL6R.js → handleAutoUpdate-7GBDXW6U.js} +30 -30
  161. package/chunks/{i18n-CYDUTF6F.js → i18n-MYD5VGED.js} +27 -27
  162. package/chunks/{initializer-NRFKUGIO.js → initializer-4DHPNAZG.js} +32 -32
  163. package/chunks/{installationInfo-WELKRHHE.js → installationInfo-RWOW6BZO.js} +27 -27
  164. package/chunks/{ja-66J6B53L.js → ja-57GG4QSL.js} +7 -2
  165. package/chunks/{keychain-token-storage-AU22CQI6.js → keychain-token-storage-K23CFKGN.js} +2 -2
  166. package/chunks/{list-JVDXEG2E.js → list-MMCNNHE7.js} +34 -34
  167. package/chunks/{loadedSettingsAdapter-WAM4VUTG.js → loadedSettingsAdapter-UK4JWPYU.js} +31 -31
  168. package/chunks/{loop-wakeup-MVUKDVCP.js → loop-wakeup-KCLY4XQM.js} +5 -5
  169. package/chunks/{ls-RXNIAQDE.js → ls-UNI4LAJ3.js} +4 -4
  170. package/chunks/{lsp-HB5LM5IL.js → lsp-HPACPJAN.js} +2 -2
  171. package/chunks/{mcp-YHOZN3ZM.js → mcp-AFCVA4UV.js} +31 -31
  172. package/chunks/{monitor-R7XZPJHQ.js → monitor-RK637BNO.js} +28 -27
  173. package/chunks/nonInteractiveCli-OUGWLHNV.js +129 -0
  174. package/chunks/{notebook-edit-6RNKE2L2.js → notebook-edit-LY2X3CMF.js} +27 -27
  175. package/chunks/{openaiContentGenerator-XNS5S64I.js → openaiContentGenerator-MDYDW7IA.js} +14 -14
  176. package/chunks/{pidfile-XE4RRR2P.js → pidfile-2NUYRLKB.js} +27 -27
  177. package/chunks/processUtils-7QH3VBVN.js +29 -0
  178. package/chunks/{pt-TFZO5Y6T.js → pt-MCGZ3RZ4.js} +7 -2
  179. package/chunks/{qwenContentGenerator-APDPJ3VN.js → qwenContentGenerator-3HT4TVDL.js} +28 -28
  180. package/chunks/{qwenOAuth2-LEYOU7RU.js → qwenOAuth2-3A4TJVZT.js} +5 -5
  181. package/chunks/{read-file-XSUWXSR7.js → read-file-NE4FREFR.js} +10 -10
  182. package/chunks/{read-mcp-resource-6LRTZKXI.js → read-mcp-resource-C6NT52T6.js} +2 -2
  183. package/chunks/{record-artifact-PMDTY4OS.js → record-artifact-ENCU7QCL.js} +2 -2
  184. package/chunks/{ripGrep-APB3CDMU.js → ripGrep-DBLXWQCJ.js} +26 -26
  185. package/chunks/{ru-4L4LFHIT.js → ru-GA3NZW5Q.js} +7 -2
  186. package/chunks/{run-qwen-serve-NWTGPERT.js → run-qwen-serve-3NOCI6IL.js} +63 -39
  187. package/chunks/{runtime-EIO3NQKR.js → runtime-ZI7DSZSS.js} +35 -35
  188. package/chunks/{scheduler-JJDZBDRN.js → scheduler-SOVEP5K7.js} +26 -26
  189. package/chunks/{send-message-SR4WSXP2.js → send-message-5IFPZTPE.js} +3 -3
  190. package/chunks/{serve-WTIPB3EI.js → serve-DB6OCXIA.js} +31 -31
  191. package/chunks/{server-NJPHQHLH.js → server-LDY4YVU4.js} +2257 -648
  192. package/chunks/{session-O4AO7FTS.js → session-D6OG5SKX.js} +99 -72
  193. package/chunks/{settings-HQNDK7TG.js → settings-L52ZV5LO.js} +30 -30
  194. package/chunks/{shell-UIXM6PWG.js → shell-IU27OY3Q.js} +28 -26
  195. package/chunks/{skill-3XMB4ULV.js → skill-BSOJT7LE.js} +12 -12
  196. package/chunks/{spawnChannel-3R632QRM.js → spawnChannel-HQAM25DD.js} +28 -29
  197. package/chunks/{src-USZKPUOC.js → src-7ZBIMTJZ.js} +130 -51
  198. package/chunks/{standalone-update-L5XW3D7K.js → standalone-update-77457VVK.js} +28 -28
  199. package/chunks/{startInteractiveUI-CPZOL2WB.js → startInteractiveUI-S7WC6EZG.js} +2310 -1835
  200. package/chunks/{syntheticOutput-YKFNUQZD.js → syntheticOutput-ULOVVLY4.js} +3 -3
  201. package/chunks/{task-create-NUFOHU53.js → task-create-V2DCDSET.js} +7 -7
  202. package/chunks/{task-list-Z2IKQY3S.js → task-list-DPL5ZN55.js} +5 -5
  203. package/chunks/{task-stop-KQFIVQTJ.js → task-stop-CPEQWOT6.js} +2 -2
  204. package/chunks/{task-update-HKADXSTD.js → task-update-ZR45M5Q7.js} +7 -7
  205. package/chunks/{team-create-XXPRF3IQ.js → team-create-CO7HSUON.js} +26 -26
  206. package/chunks/{team-delete-SDNTGZLG.js → team-delete-HIWXCWJU.js} +5 -5
  207. package/chunks/{team-plan-approval-EOTTKHDW.js → team-plan-approval-QDZF5YZY.js} +26 -26
  208. package/chunks/{theme-manager-P6UITO2L.js → theme-manager-UTUT3I4P.js} +27 -27
  209. package/chunks/todoWrite-HK6B3RHJ.js +358 -0
  210. package/chunks/{tool-search-DDNGK2LR.js → tool-search-2UUORA35.js} +11 -11
  211. package/chunks/{total-session-admission-PL5N7DNY.js → total-session-admission-NTWG6G3F.js} +32 -34
  212. package/chunks/{trustedFolders-C5LMF3UR.js → trustedFolders-YF37ZCN5.js} +27 -27
  213. package/chunks/update-relaunch-QFNHPMZZ.js +87 -0
  214. package/chunks/{updateCheck-QTVVISH7.js → updateCheck-B6O42VMD.js} +30 -28
  215. package/chunks/{validateNonInterActiveAuth-RY4RKBQG.js → validateNonInterActiveAuth-SCIWJ4CX.js} +65 -65
  216. package/chunks/{version-U45RYOSD.js → version-7DA6LAI3.js} +1 -1
  217. package/chunks/{web-fetch-ZSPR3PRR.js → web-fetch-B62SJXM2.js} +5 -6
  218. package/chunks/{workflow-TCIAQYOA.js → workflow-Q5WG4THP.js} +27 -27
  219. package/chunks/{workspace-providers-status-I3G2HYLY.js → workspace-providers-status-WWLAGWQW.js} +34 -34
  220. package/chunks/{workspace-registration-store-IH5GLZ6Y.js → workspace-registration-store-BVYQVY2H.js} +1 -1
  221. package/chunks/{workspace-registry-QEKBELIX.js → workspace-registry-OD7ACADD.js} +32 -34
  222. package/chunks/{workspace-service-ORKHGLP3.js → workspace-service-4LYJWS63.js} +37 -38
  223. package/chunks/{workspace-skills-status-D7QCNDYY.js → workspace-skills-status-P2AQLZZS.js} +32 -32
  224. package/chunks/{write-file-JGRQR5VM.js → write-file-TEPGXNM3.js} +60 -27
  225. package/chunks/{zh-FSAH32JB.js → zh-E34DZ2S3.js} +12 -3
  226. package/chunks/{zh-TW-D2YIE2LO.js → zh-TW-PEI2ZWUR.js} +12 -3
  227. package/cli-entry.js +92 -8
  228. package/cli.js +11 -11
  229. package/locales/ca.js +12 -2
  230. package/locales/de.js +12 -2
  231. package/locales/en.js +20 -5
  232. package/locales/fr.js +12 -2
  233. package/locales/ja.js +12 -2
  234. package/locales/pt.js +12 -2
  235. package/locales/ru.js +12 -2
  236. package/locales/zh-TW.js +19 -3
  237. package/locales/zh.js +19 -3
  238. package/package.json +3 -3
  239. package/web-shell/assets/{arc-CUeDlxvE.js → arc-Dh-N5oEG.js} +1 -1
  240. package/web-shell/assets/{architectureDiagram-3BPJPVTR-PiUszkQA.js → architectureDiagram-3BPJPVTR-DBOQgtfF.js} +1 -1
  241. package/web-shell/assets/{blockDiagram-GPEHLZMM-s2wYSO7e.js → blockDiagram-GPEHLZMM-Dyxbuyju.js} +1 -1
  242. package/web-shell/assets/{c4Diagram-AAUBKEIU-DyLxZoz9.js → c4Diagram-AAUBKEIU-DCJR5HPT.js} +1 -1
  243. package/web-shell/assets/channel-DY0fkcKT.js +1 -0
  244. package/web-shell/assets/{chunk-2J33WTMH-Dsdai7Tk.js → chunk-2J33WTMH-BkMUcy3O.js} +1 -1
  245. package/web-shell/assets/{chunk-4BX2VUAB-DEosOjV7.js → chunk-4BX2VUAB-BSm4pLQk.js} +1 -1
  246. package/web-shell/assets/{chunk-55IACEB6-sNsRLTXf.js → chunk-55IACEB6-CuRr-XgW.js} +1 -1
  247. package/web-shell/assets/{chunk-727SXJPM-DkRNZzmh.js → chunk-727SXJPM-CLv7-w3t.js} +1 -1
  248. package/web-shell/assets/{chunk-AQP2D5EJ-BrsRNpzd.js → chunk-AQP2D5EJ-Cz_n3-JW.js} +1 -1
  249. package/web-shell/assets/{chunk-FMBD7UC4-CI039lpl.js → chunk-FMBD7UC4-CFT_62Hq.js} +1 -1
  250. package/web-shell/assets/{chunk-ND2GUHAM-M-pkeIfu.js → chunk-ND2GUHAM-DWz6DOZ6.js} +1 -1
  251. package/web-shell/assets/{chunk-QZHKN3VN-C4ckGNbH.js → chunk-QZHKN3VN-C-mRhUzw.js} +1 -1
  252. package/web-shell/assets/classDiagram-4FO5ZUOK-DBvJ6PZo.js +1 -0
  253. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DBvJ6PZo.js +1 -0
  254. package/web-shell/assets/{cose-bilkent-S5V4N54A-BciKUAFq.js → cose-bilkent-S5V4N54A-BqCZS3i1.js} +1 -1
  255. package/web-shell/assets/{dagre-BM42HDAG-C1nTSgU6.js → dagre-BM42HDAG-BGasdP8i.js} +1 -1
  256. package/web-shell/assets/{diagram-2AECGRRQ-BDPNWr1m.js → diagram-2AECGRRQ-BSyLDkMy.js} +1 -1
  257. package/web-shell/assets/{diagram-5GNKFQAL-CNFhTszL.js → diagram-5GNKFQAL-CM-ZJxWC.js} +1 -1
  258. package/web-shell/assets/{diagram-KO2AKTUF-CjPa4p5a.js → diagram-KO2AKTUF-wJdzt_C5.js} +1 -1
  259. package/web-shell/assets/{diagram-LMA3HP47-ZzPykSyG.js → diagram-LMA3HP47-DiH2fhpL.js} +1 -1
  260. package/web-shell/assets/{diagram-OG6HWLK6-0UVtZ9A4.js → diagram-OG6HWLK6-BZ9z1ZBl.js} +1 -1
  261. package/web-shell/assets/{erDiagram-TEJ5UH35-CajDZCat.js → erDiagram-TEJ5UH35-BsyWDziR.js} +1 -1
  262. package/web-shell/assets/{flowDiagram-I6XJVG4X-BRuFBIvL.js → flowDiagram-I6XJVG4X-CzdkxIrq.js} +1 -1
  263. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BevGmJqG.js → ganttDiagram-6RSMTGT7-javIv2r2.js} +1 -1
  264. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DvPMpBMb.js → gitGraphDiagram-PVQCEYII-CjHstylC.js} +1 -1
  265. package/web-shell/assets/{index-DzHwQkQq.js → index-BnJGxpah.js} +1 -1
  266. package/web-shell/assets/index-DhXB9nTa.js +1161 -0
  267. package/web-shell/assets/index-vYHgZ7bL.css +5 -0
  268. package/web-shell/assets/{infoDiagram-5YYISTIA-Oixn7tA9.js → infoDiagram-5YYISTIA-yXuQsomo.js} +1 -1
  269. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BgKpeg-j.js → ishikawaDiagram-YF4QCWOH-a85JhE6F.js} +1 -1
  270. package/web-shell/assets/{journeyDiagram-JHISSGLW-74mwxIaA.js → journeyDiagram-JHISSGLW-Dak_4BVj.js} +1 -1
  271. package/web-shell/assets/{kanban-definition-UN3LZRKU-D4D6cEqA.js → kanban-definition-UN3LZRKU-COA-LuCV.js} +1 -1
  272. package/web-shell/assets/{linear-atZRE_L2.js → linear-DNAAAQWq.js} +1 -1
  273. package/web-shell/assets/{mermaid.core-KKudX-JC.js → mermaid.core-7Ff3aIUD.js} +5 -5
  274. package/web-shell/assets/{mindmap-definition-RKZ34NQL-CMCej9yG.js → mindmap-definition-RKZ34NQL-_rCOIODU.js} +1 -1
  275. package/web-shell/assets/{pieDiagram-4H26LBE5-nhx40X7q.js → pieDiagram-4H26LBE5-C9QCQ8EW.js} +1 -1
  276. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CUmVcN3M.js → quadrantDiagram-W4KKPZXB-CsaE4FA8.js} +1 -1
  277. package/web-shell/assets/{requirementDiagram-4Y6WPE33-C_vyEwyy.js → requirementDiagram-4Y6WPE33-tV78naTg.js} +1 -1
  278. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-DU6G4VWR.js → sankeyDiagram-5OEKKPKP-Dk3Rw7BZ.js} +1 -1
  279. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DdeRR_KJ.js → sequenceDiagram-3UESZ5HK-BGsAWcMX.js} +1 -1
  280. package/web-shell/assets/{stateDiagram-AJRCARHV-C6iCI8ps.js → stateDiagram-AJRCARHV-zSxdtdoB.js} +1 -1
  281. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-vLEEtDpO.js +1 -0
  282. package/web-shell/assets/{timeline-definition-PNZ67QCA-B_Ea8Cb7.js → timeline-definition-PNZ67QCA-j0BQh9Go.js} +1 -1
  283. package/web-shell/assets/{vennDiagram-CIIHVFJN-BPUVZEJA.js → vennDiagram-CIIHVFJN-CRaUFFIu.js} +1 -1
  284. package/web-shell/assets/{wardley-L42UT6IY-BWEj0lKY.js → wardley-L42UT6IY-D7Py_ofm.js} +1 -1
  285. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BvDsdIQw.js → wardleyDiagram-YWT4CUSO-BrDIAZcp.js} +1 -1
  286. package/web-shell/assets/{xychartDiagram-2RQKCTM6-crz0QhF_.js → xychartDiagram-2RQKCTM6-Cecdw-w2.js} +1 -1
  287. package/web-shell/index.html +2 -2
  288. package/chunks/channel-worker-group-K7QKH6IG.js +0 -13
  289. package/chunks/chunk-2HRYPZT5.js +0 -25
  290. package/chunks/chunk-B7NUUEXC.js +0 -311
  291. package/chunks/chunk-CARU2RR2.js +0 -24
  292. package/chunks/chunk-GYTKQYDB.js +0 -23
  293. package/chunks/chunk-LQU7EVFA.js +0 -30
  294. package/chunks/chunk-OCPBI7J5.js +0 -18
  295. package/chunks/chunk-OJAMDVF5.js +0 -66
  296. package/chunks/chunk-QAW7PIHT.js +0 -168
  297. package/chunks/chunk-TEGEBB2I.js +0 -122
  298. package/chunks/daemon-status-provider-L4STG5VO.js +0 -76
  299. package/chunks/exitPlanMode-IHCJ5EEI.js +0 -909
  300. package/chunks/nonInteractiveCli-NSOB6D74.js +0 -129
  301. package/chunks/todoWrite-YNXB27GB.js +0 -531
  302. package/web-shell/assets/channel-DkuJJ0qd.js +0 -1
  303. package/web-shell/assets/classDiagram-4FO5ZUOK-CwqHc0TB.js +0 -1
  304. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CwqHc0TB.js +0 -1
  305. package/web-shell/assets/index-Cnvv4VcI.css +0 -5
  306. package/web-shell/assets/index-D1Uyklxa.js +0 -1088
  307. 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
- startEarlyStartupPrefetches
5
- } from "./chunk-3XJFUTNM.js";
4
+ registerMcpHotReload
5
+ } from "./chunk-4JBTZBCW.js";
6
6
  import {
7
- RELAUNCH_EXIT_CODE
8
- } from "./chunk-LQU7EVFA.js";
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-CEW4HDPK.js";
20
- import "./chunk-WTSXKLG5.js";
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-WDW64OW3.js";
36
+ import "./chunk-LGY7PG7Q.js";
25
37
  import {
26
38
  getHeadlessYoloSafetyWarning
27
39
  } from "./chunk-6H67XLET.js";
28
- import "./chunk-L62SEJWY.js";
29
- import "./chunk-65N2J6V2.js";
30
- import "./chunk-GGJII3FM.js";
31
- import "./chunk-FSA7ERJ2.js";
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-Q5GLXH5Q.js";
35
- import "./chunk-AAR5SGMD.js";
46
+ import "./chunk-3CL5SEDT.js";
47
+ import "./chunk-IVKLDHU6.js";
36
48
  import "./chunk-57OAHC2Y.js";
37
- import "./chunk-OATTJGPJ.js";
38
- import "./chunk-ZRKBI3DP.js";
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-GYTKQYDB.js";
53
+ import "./chunk-JDIUK2Y3.js";
42
54
  import "./chunk-TJTKSVIV.js";
43
- import "./chunk-OJAMDVF5.js";
44
- import "./chunk-LXLTBIDP.js";
45
- import "./chunk-BBNVFRGD.js";
46
- import "./chunk-SXU3KKNI.js";
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-6GETGQWP.js";
68
+ } from "./chunk-C5NSOSF4.js";
61
69
  import "./chunk-RKUWKYED.js";
62
70
  import {
63
71
  initializeI18n,
64
72
  resolveLanguageSetting
65
- } from "./chunk-RDRVMDWV.js";
73
+ } from "./chunk-HIMIG6PI.js";
66
74
  import {
67
75
  SETTINGS_DIRECTORY_NAME,
68
76
  preResolveHomeEnvOverrides
69
- } from "./chunk-5EBKKSBX.js";
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-4YWLED2A.js";
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-YU56QGXX.js";
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-K7CRWKOE.js";
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-E67NFMF4.js";
106
- import "./chunk-RCEEXIOO.js";
107
- import "./chunk-KKRTYONM.js";
108
- import "./chunk-TV6K2FB4.js";
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-SPJQO2CE.js";
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-TXY2C3D2.js";
125
+ import "./chunk-VNN3JNYT.js";
118
126
  import "./chunk-6AM5D4ME.js";
119
- import "./chunk-2Z5UX4KI.js";
120
- import "./chunk-ARKANCNX.js";
121
- import "./chunk-L5U3ELZX.js";
122
- import "./chunk-TYLOFD2U.js";
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-P6LART6G.js";
134
+ } from "./chunk-66IT3EY2.js";
128
135
  import "./chunk-4WKAA4KS.js";
129
136
  import "./chunk-CR3C7WXL.js";
130
- import "./chunk-CARU2RR2.js";
137
+ import "./chunk-U2LNTX56.js";
131
138
  import "./chunk-VGC4I5JJ.js";
132
- import "./chunk-FBU7WRZI.js";
133
- import "./chunk-Y66VOBRP.js";
134
- import "./chunk-WX6SD4IQ.js";
135
- import {
136
- require_fast_deep_equal
137
- } from "./chunk-2UUAIFQO.js";
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-WIEO4CWB.js";
146
+ import "./chunk-VAJS2E2D.js";
142
147
  import "./chunk-XVNQMZ2I.js";
143
- import "./chunk-B7NUUEXC.js";
144
- import "./chunk-TQBODCFD.js";
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-4LD5APFL.js";
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-LQIDP6K5.js";
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-7NFB7LBQ.js";
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-TISZXPAX.js";
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 debugLogger3 = createDebugLogger("LSP_CONFIG_WATCHER");
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
- debugLogger3.info(`Starting LSP config watcher for ${this.configPath}`);
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
- debugLogger3.warn(
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
- debugLogger3.warn(
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
- debugLogger3.info(`Stopping LSP config watcher for ${this.configPath}`);
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
- debugLogger3.warn("LSP config watcher close error:", error);
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
- debugLogger3.warn("LSP config watcher refresh error:", error);
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
- debugLogger3.warn(
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
- debugLogger3.info(`LSP config changed: ${event.changeType} ${event.path}`);
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
- debugLogger3.warn("Failed to read .lsp.json:", error);
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
- debugLogger3.warn("Failed to parse .lsp.json:", error);
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
- debugLogger3.warn("LSP config change listener error:", error);
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 debugLogger4 = createDebugLogger("EXTENSION_FILE_WATCHER");
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
- debugLogger4.debug("Extension file event classified", {
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
- debugLogger4.warn("Extension file watcher error:", error);
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
- debugLogger4.warn("Extension file watcher close error:", error);
843
+ debugLogger3.warn("Extension file watcher close error:", error);
943
844
  });
944
845
  bootstrapWatcher?.close().catch((error) => {
945
- debugLogger4.warn("Extension bootstrap watcher close error:", error);
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
- debugLogger4.warn("Extension bootstrap watcher error:", error);
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
- debugLogger4.warn("Extension bootstrap watcher close error:", error);
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 debugLogger5 = createDebugLogger("WORKTREE_STARTUP");
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
- debugLogger5.debug(
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
- debugLogger5.warn(
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
- debugLogger5.warn(
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 = { ...process.env, QWEN_CODE_NO_RELAUNCH: "true" };
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
- resolve3(code ?? 1);
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
- for (const envVar of [
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 debugLogger6 = createDebugLogger("STARTUP");
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
- const handleSignal = /* @__PURE__ */ __name((signal) => {
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
- debugLogger6.error(`Error during ${signal} cleanup:`, error);
2452
+ debugLogger5.error(`Error during ${signal} cleanup:`, error);
2515
2453
  }).finally(() => {
2516
2454
  process.exit(getSignalExitCode(signal));
2517
2455
  });
2518
- }, "handleSignal");
2456
+ }, "beginExit");
2519
2457
  const handleSigterm = /* @__PURE__ */ __name(() => {
2520
- handleSignal("SIGTERM");
2458
+ beginExit("SIGTERM");
2521
2459
  }, "handleSigterm");
2522
2460
  const handleSigint = /* @__PURE__ */ __name(() => {
2523
- handleSignal("SIGINT");
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.once("SIGTERM", handleSigterm);
2526
- process.once("SIGINT", handleSigint);
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-JVDXEG2E.js");
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-P6UITO2L.js");
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-SIPBQT5Z.js");
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-SIPBQT5Z.js");
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
- debugLogger6.warn(
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-EN4BRREQ.js");
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
- debugLogger6.warn("Async theme auto-detection failed:", err);
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-67ODZ4SZ.js");
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-NRFKUGIO.js");
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-VPZJXLFX.js");
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-CPZOL2WB.js");
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-RY4RKBQG.js");
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-O4AO7FTS.js");
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
- debugLogger6.debug(`Session ID: ${config.getSessionId()}`);
3022
- const { runNonInteractive } = await import("./nonInteractiveCli-NSOB6D74.js");
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
- debugLogger6.info(
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
- debugLogger6.warn(`Invalid LSP config file ${event.path}: ${event.error}`);
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
- debugLogger6.info(
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
- debugLogger6.info(
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
- debugLogger6.info(
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
- debugLogger6.warn("Failed to reload LSP server settings:", error);
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);