@qwen-code/qwen-code 0.19.10 → 0.19.11-nightly.20260717.f8e6e8931

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 (275) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +7 -6
  2. package/bundled/qc-helper/docs/features/approval-mode.md +2 -2
  3. package/bundled/qc-helper/docs/features/channels/dingtalk.md +30 -0
  4. package/bundled/qc-helper/docs/features/channels/overview.md +53 -17
  5. package/bundled/qc-helper/docs/features/channels/wecom.md +8 -7
  6. package/bundled/qc-helper/docs/features/sandbox.md +2 -0
  7. package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +42 -7
  8. package/bundled/qc-helper/docs/qwen-serve.md +53 -46
  9. package/bundled/review/SKILL.md +163 -403
  10. package/chunks/{MaxSizedBox-67ODZ4SZ.js → MaxSizedBox-JGTP7YJQ.js} +13 -13
  11. package/chunks/{StandaloneSessionPicker-SIPBQT5Z.js → StandaloneSessionPicker-2XQDOYZ5.js} +27 -27
  12. package/chunks/{acpAgent-VPZJXLFX.js → acpAgent-RXRJA7GD.js} +1135 -373
  13. package/chunks/{agent-Z7NWL6XL.js → agent-UQP53UWQ.js} +10 -10
  14. package/chunks/{agent-headless-73HZ6ROQ.js → agent-headless-I52OXDCK.js} +10 -10
  15. package/chunks/{anthropicContentGenerator-56U3YCP2.js → anthropicContentGenerator-HBRXJSP4.js} +76 -14
  16. package/chunks/{artifact-tool-BWZZJ42H.js → artifact-tool-MIZLXBLF.js} +1 -1
  17. package/chunks/{askUserQuestion-WU3S5A5T.js → askUserQuestion-XMJVPNWM.js} +1 -1
  18. package/chunks/{bridge-XFKW6S7Q.js → bridge-3DVRNBSF.js} +14 -16
  19. package/chunks/{ca-C2JTT2N5.js → ca-CODEN7TD.js} +5 -0
  20. package/chunks/channel-worker-group-SOUWTFHC.js +21 -0
  21. package/chunks/{channel-worker-manager-5RWKSGEU.js → channel-worker-manager-LOVSV3WW.js} +34 -10
  22. package/chunks/{channel-worker-supervisor-PCDAZN4D.js → channel-worker-supervisor-XW6MHJBQ.js} +6 -4
  23. package/chunks/{chunk-BBNVFRGD.js → chunk-3DWIFU7L.js} +1 -1
  24. package/chunks/{chunk-ZQTZXVHP.js → chunk-3KSHYS4T.js} +4 -18
  25. package/chunks/{chunk-ZKMGAFYV.js → chunk-3LS57JZI.js} +1 -1
  26. package/chunks/{chunk-B5I2IIWY.js → chunk-46Y6SSQ7.js} +5 -5
  27. package/chunks/{chunk-GDQQRV43.js → chunk-4BJVSIS3.js} +2 -2
  28. package/chunks/{chunk-L37RC7MQ.js → chunk-4HTHLSIH.js} +1 -1
  29. package/chunks/{chunk-DPFBNG72.js → chunk-4UBEB74N.js} +1 -1
  30. package/chunks/{chunk-AAR5SGMD.js → chunk-4YR7FSAM.js} +7 -5
  31. package/chunks/{chunk-OATTJGPJ.js → chunk-5CNYZ7TN.js} +7 -7
  32. package/chunks/{chunk-JSJFKYWT.js → chunk-5VWYKIMW.js} +1 -1
  33. package/chunks/{chunk-6GETGQWP.js → chunk-5WWYHNAH.js} +39 -10
  34. package/chunks/{chunk-65N2J6V2.js → chunk-6ANLV27M.js} +2 -2
  35. package/chunks/{chunk-L62SEJWY.js → chunk-6RV42SFP.js} +4 -4
  36. package/chunks/{chunk-XXJKGHZV.js → chunk-6VMOP2Z7.js} +4 -4
  37. package/chunks/{chunk-URU5UEK6.js → chunk-6WGZDD67.js} +135 -68
  38. package/chunks/{chunk-7NAWTFVY.js → chunk-6WPJRYLZ.js} +2 -2
  39. package/chunks/chunk-6WVLHULT.js +59 -0
  40. package/chunks/{chunk-N6FXRR6P.js → chunk-7ZFXHKKZ.js} +1 -1
  41. package/chunks/{chunk-E67NFMF4.js → chunk-A2HWMJVO.js} +35 -1
  42. package/chunks/{chunk-4FMG7EDJ.js → chunk-AEKHQ3E5.js} +77 -11
  43. package/chunks/{chunk-WIASPMLX.js → chunk-AH3YAJU6.js} +22 -33
  44. package/chunks/{chunk-6GKMJPOC.js → chunk-AHAH5H6D.js} +3 -3
  45. package/chunks/{chunk-3XJFUTNM.js → chunk-AVAU67KP.js} +57 -10
  46. package/chunks/{chunk-LNUXFLLJ.js → chunk-BDHYJ2MM.js} +53 -5
  47. package/chunks/{chunk-P6LART6G.js → chunk-BTSE2DUP.js} +957 -122
  48. package/chunks/{chunk-7MJAZMXK.js → chunk-BZ5D7OVV.js} +28 -77
  49. package/chunks/{chunk-WDWJ4OQJ.js → chunk-CC2UASQ4.js} +3 -3
  50. package/chunks/{chunk-WLXYAKV7.js → chunk-D7KYA6EY.js} +3 -3
  51. package/chunks/{chunk-5LROA5W4.js → chunk-DD45XVOQ.js} +3 -3
  52. package/chunks/{chunk-H3FQOPPS.js → chunk-DOPUYNXO.js} +2 -2
  53. package/chunks/{chunk-SPUYQB4T.js → chunk-DPXB3XRN.js} +1 -1
  54. package/chunks/{chunk-XLIRF7IK.js → chunk-E7ECGLZW.js} +1 -1
  55. package/chunks/{chunk-RDRVMDWV.js → chunk-EMJJBXS7.js} +10 -10
  56. package/chunks/{chunk-TXY2C3D2.js → chunk-F333XEAU.js} +1 -1
  57. package/chunks/chunk-FEOZBUMT.js +77 -0
  58. package/chunks/{chunk-YYPXHMWO.js → chunk-FEYHXPZG.js} +4 -4
  59. package/chunks/{chunk-ZRKBI3DP.js → chunk-FNX3LGAK.js} +1 -1
  60. package/chunks/chunk-FXK3QMRD.js +140 -0
  61. package/chunks/{chunk-422XAKCK.js → chunk-G5ZKRK2E.js} +2 -2
  62. package/chunks/{chunk-DK33QJ3V.js → chunk-GCRFH57X.js} +732 -13
  63. package/chunks/{chunk-EQY6POVO.js → chunk-GLEJW7T2.js} +1 -1
  64. package/chunks/{chunk-FXMC7SL2.js → chunk-I6NOSIVF.js} +1 -1
  65. package/chunks/{chunk-VBRRNQB7.js → chunk-IHJRUIWN.js} +109 -22
  66. package/chunks/{chunk-F7NXQH4Y.js → chunk-IIXEI2VE.js} +1 -1
  67. package/chunks/{chunk-2UUAIFQO.js → chunk-JGUT3LWZ.js} +5 -0
  68. package/chunks/{chunk-5EBKKSBX.js → chunk-JY74T7PW.js} +1 -1
  69. package/chunks/chunk-KSZKSE23.js +226 -0
  70. package/chunks/{chunk-MO7O5722.js → chunk-KW46DBFM.js} +35 -2
  71. package/chunks/{chunk-TISZXPAX.js → chunk-L263ROM6.js} +1 -1
  72. package/chunks/chunk-LXXMOYPL.js +22 -0
  73. package/chunks/{chunk-YX4LLZ3D.js → chunk-NABT4VOY.js} +109 -35
  74. package/chunks/{chunk-W34A5MJH.js → chunk-NROLDLP4.js} +1 -1
  75. package/chunks/{chunk-V7EQTZYR.js → chunk-O3WCEZEN.js} +191 -44
  76. package/chunks/{chunk-K4PZ5F5T.js → chunk-OWT2CAEQ.js} +1 -1
  77. package/chunks/{chunk-4YWLED2A.js → chunk-PNCWEDF6.js} +7 -4
  78. package/chunks/{chunk-WDW64OW3.js → chunk-PSDTLRAV.js} +5 -5
  79. package/chunks/{chunk-7R4DPSRA.js → chunk-R3VWUU2E.js} +1 -1
  80. package/chunks/{chunk-K7CRWKOE.js → chunk-R6AO7HBQ.js} +4617 -4012
  81. package/chunks/{chunk-6OATMEYN.js → chunk-RTV5TUYB.js} +12 -4
  82. package/chunks/{chunk-6W6DI34P.js → chunk-SE6GSFAO.js} +159 -2
  83. package/chunks/{chunk-WTSXKLG5.js → chunk-SUARMD4Q.js} +1 -1
  84. package/chunks/chunk-T4TZQJ7W.js +48 -0
  85. package/chunks/{chunk-LTNI523B.js → chunk-T7CZYIAU.js} +28 -5
  86. package/chunks/{chunk-3MX7D6QN.js → chunk-TIOE2OPE.js} +32 -4
  87. package/chunks/{chunk-TTUO4DNG.js → chunk-UF6ZTWU5.js} +75 -710
  88. package/chunks/{chunk-Q5GLXH5Q.js → chunk-UJG4VV2O.js} +5 -5
  89. package/chunks/{chunk-CJFNEBYB.js → chunk-VFEZWI6F.js} +1 -1
  90. package/chunks/{chunk-UFOKA4PR.js → chunk-VHCSIMTF.js} +114 -4
  91. package/chunks/{chunk-TQBODCFD.js → chunk-VRR65QYW.js} +250 -2
  92. package/chunks/{chunk-CUUXANEQ.js → chunk-W6J7RSCK.js} +6 -1
  93. package/chunks/{chunk-YHN5SUIJ.js → chunk-W7H223ZZ.js} +1 -1
  94. package/chunks/{chunk-WX6SD4IQ.js → chunk-WTNZ6DXB.js} +1 -1
  95. package/chunks/{chunk-GGJII3FM.js → chunk-WZJELXEU.js} +92 -3
  96. package/chunks/{chunk-OFEVHGVU.js → chunk-X5HZX4EP.js} +9 -11
  97. package/chunks/{chunk-KSO42X3Z.js → chunk-X6YQWCIJ.js} +21 -2
  98. package/chunks/{chunk-7L4XBYVW.js → chunk-XK42MWWO.js} +9 -2
  99. package/chunks/{chunk-X362TMXZ.js → chunk-XQDPCQ3A.js} +7 -5
  100. package/chunks/{chunk-YU56QGXX.js → chunk-Y3TNSHKF.js} +1 -1
  101. package/chunks/{chunk-HHEFI4RP.js → chunk-YOJGIRTD.js} +714 -109
  102. package/chunks/{chunk-CEW4HDPK.js → chunk-ZK4AMPKI.js} +2459 -350
  103. package/chunks/{chunk-SXU3KKNI.js → chunk-ZQIYGQCG.js} +251 -54
  104. package/chunks/{computer-use-IYTX45WA.js → computer-use-LTW3VB6L.js} +10 -10
  105. package/chunks/{config-utils-CFT33LTP.js → config-utils-IQQT3GCI.js} +3 -3
  106. package/chunks/{contextCommand-272V77WU.js → contextCommand-GLMC6CTP.js} +12 -12
  107. package/chunks/{create-sub-session-WNX2OQVX.js → create-sub-session-EAB2U5XW.js} +1 -1
  108. package/chunks/{create-sub-session-CBJMQLYP.js → create-sub-session-YMWQAWSN.js} +10 -10
  109. package/chunks/{cron-create-36TIFKRT.js → cron-create-GMVKSXZT.js} +1 -1
  110. package/chunks/{cron-delete-OQD3WULU.js → cron-delete-VDZKUAVK.js} +1 -1
  111. package/chunks/{cron-list-4533T2FH.js → cron-list-UG7C7RAR.js} +1 -1
  112. package/chunks/{daemon-RNGFPMAB.js → daemon-PRB64RP5.js} +303 -71
  113. package/chunks/{daemon-status-provider-L4STG5VO.js → daemon-status-provider-5OMM5JHF.js} +19 -20
  114. package/chunks/{de-2VCDRDGU.js → de-NOXPCSYN.js} +5 -0
  115. package/chunks/{dist-ERCPDVA6.js → dist-4WCQEZIN.js} +4 -51
  116. package/chunks/{dist-MOEC47TR.js → dist-DOPL5LSQ.js} +1 -1
  117. package/chunks/{dist-JZE7F6YR.js → dist-GXJVCOS7.js} +1 -1
  118. package/chunks/{dist-PHEPJLXD.js → dist-PX2ERZ6I.js} +2 -2
  119. package/chunks/{dist-HNN7DR2L.js → dist-V2YVLYOW.js} +58 -30
  120. package/chunks/{dist-3V3ZV6ML.js → dist-VYWUKURL.js} +1 -1
  121. package/chunks/{earlyInputCapture-EN4BRREQ.js → earlyInputCapture-A3WSRN4T.js} +10 -10
  122. package/chunks/{edit-OMAF2QDR.js → edit-7PG4AH27.js} +10 -10
  123. package/chunks/{en-NJCA3TAA.js → en-JFVULHTB.js} +6 -0
  124. package/chunks/{enter-worktree-BBZX52HG.js → enter-worktree-QUSB44RE.js} +10 -10
  125. package/chunks/{enterPlanMode-5NNFMBUY.js → enterPlanMode-NVSIEL7X.js} +10 -10
  126. package/chunks/{environment-7TEWMJYN.js → environment-AHHXHQTI.js} +12 -12
  127. package/chunks/{errors-I4VKVX3F.js → errors-NSWSRXC7.js} +12 -12
  128. package/chunks/{exit-worktree-FUWRJI33.js → exit-worktree-FXYEYHPL.js} +10 -10
  129. package/chunks/{exitPlanMode-IHCJ5EEI.js → exitPlanMode-JI5GK3F6.js} +10 -10
  130. package/chunks/{fast-path-ZA57TOH4.js → fast-path-X7EVDLKZ.js} +2 -2
  131. package/chunks/{fr-5F3E7WKD.js → fr-HVFNU42H.js} +5 -0
  132. package/chunks/{gemini-UOAKVXBG.js → gemini-YRLHY5KS.js} +162 -206
  133. package/chunks/{geminiContentGenerator-G6UCE6MW.js → geminiContentGenerator-SPLFPV5E.js} +1 -1
  134. package/chunks/{glob-4GJQ2UFF.js → glob-WASUBCSA.js} +10 -10
  135. package/chunks/{grep-5QSYXF2E.js → grep-DUVG3NGA.js} +10 -10
  136. package/chunks/{handleAutoUpdate-ULHNWL6R.js → handleAutoUpdate-NGE5AQ2N.js} +14 -14
  137. package/chunks/{i18n-CYDUTF6F.js → i18n-QNVR36NB.js} +11 -11
  138. package/chunks/{initializer-NRFKUGIO.js → initializer-ZY7ORPMH.js} +15 -15
  139. package/chunks/{installationInfo-WELKRHHE.js → installationInfo-4R75MFTB.js} +11 -11
  140. package/chunks/{ja-66J6B53L.js → ja-PY5AF544.js} +5 -0
  141. package/chunks/{list-JVDXEG2E.js → list-36JCMZRS.js} +18 -18
  142. package/chunks/{loadedSettingsAdapter-WAM4VUTG.js → loadedSettingsAdapter-PQIOJUSJ.js} +15 -15
  143. package/chunks/{loop-wakeup-MVUKDVCP.js → loop-wakeup-QXWZSCYM.js} +2 -2
  144. package/chunks/{ls-RXNIAQDE.js → ls-2OUTG3IZ.js} +1 -1
  145. package/chunks/{lsp-HB5LM5IL.js → lsp-4VMNXZW6.js} +1 -1
  146. package/chunks/{mcp-YHOZN3ZM.js → mcp-QXY6XA6H.js} +15 -15
  147. package/chunks/{monitor-R7XZPJHQ.js → monitor-AVEKRSY3.js} +12 -11
  148. package/chunks/{nonInteractiveCli-NSOB6D74.js → nonInteractiveCli-YWIBKX4M.js} +50 -50
  149. package/chunks/{notebook-edit-6RNKE2L2.js → notebook-edit-4SBTJX72.js} +10 -10
  150. package/chunks/{openaiContentGenerator-XNS5S64I.js → openaiContentGenerator-4EBAO7LR.js} +8 -8
  151. package/chunks/{pidfile-XE4RRR2P.js → pidfile-JMIUPXSU.js} +10 -10
  152. package/chunks/processUtils-EOINMEIH.js +29 -0
  153. package/chunks/{pt-TFZO5Y6T.js → pt-A3PRQXMU.js} +5 -0
  154. package/chunks/{qwenContentGenerator-APDPJ3VN.js → qwenContentGenerator-M7UBL3JS.js} +12 -12
  155. package/chunks/{read-file-XSUWXSR7.js → read-file-DXSEFHCV.js} +5 -5
  156. package/chunks/{read-mcp-resource-6LRTZKXI.js → read-mcp-resource-JUFHCKSC.js} +1 -1
  157. package/chunks/{record-artifact-PMDTY4OS.js → record-artifact-DWSMBXYY.js} +1 -1
  158. package/chunks/{ripGrep-APB3CDMU.js → ripGrep-VTRVFMDJ.js} +10 -10
  159. package/chunks/{ru-4L4LFHIT.js → ru-IBCWUTOC.js} +5 -0
  160. package/chunks/{run-qwen-serve-NWTGPERT.js → run-qwen-serve-P7WQDZAS.js} +59 -38
  161. package/chunks/{runtime-EIO3NQKR.js → runtime-UHYO6JGN.js} +19 -19
  162. package/chunks/{scheduler-JJDZBDRN.js → scheduler-WTK7ZLV5.js} +10 -10
  163. package/chunks/{send-message-SR4WSXP2.js → send-message-JZ752NWD.js} +2 -2
  164. package/chunks/{serve-WTIPB3EI.js → serve-AG2AOG56.js} +15 -15
  165. package/chunks/{server-NJPHQHLH.js → server-G5MM2BRI.js} +1157 -225
  166. package/chunks/{session-O4AO7FTS.js → session-NUAGEMVS.js} +51 -51
  167. package/chunks/{settings-HQNDK7TG.js → settings-VQA5PR2M.js} +14 -14
  168. package/chunks/{shell-UIXM6PWG.js → shell-X33RWGLP.js} +12 -10
  169. package/chunks/{skill-3XMB4ULV.js → skill-PHSU2OPP.js} +5 -5
  170. package/chunks/{spawnChannel-3R632QRM.js → spawnChannel-D6TZN4W7.js} +12 -13
  171. package/chunks/{src-USZKPUOC.js → src-6OJFUPTL.js} +95 -34
  172. package/chunks/{standalone-update-L5XW3D7K.js → standalone-update-ZARRW44Y.js} +12 -12
  173. package/chunks/{startInteractiveUI-CPZOL2WB.js → startInteractiveUI-C6IZRTF3.js} +176 -158
  174. package/chunks/{syntheticOutput-YKFNUQZD.js → syntheticOutput-LELY6HAI.js} +2 -2
  175. package/chunks/{task-create-NUFOHU53.js → task-create-QY3BIMNM.js} +3 -3
  176. package/chunks/{task-list-Z2IKQY3S.js → task-list-D2U47WBJ.js} +1 -1
  177. package/chunks/{task-stop-KQFIVQTJ.js → task-stop-N6E5IYLH.js} +1 -1
  178. package/chunks/{task-update-HKADXSTD.js → task-update-HJCQILLB.js} +3 -3
  179. package/chunks/{team-create-XXPRF3IQ.js → team-create-H434NQP2.js} +10 -10
  180. package/chunks/{team-delete-SDNTGZLG.js → team-delete-RCWYDRF4.js} +1 -1
  181. package/chunks/{team-plan-approval-EOTTKHDW.js → team-plan-approval-IIOHXZU6.js} +10 -10
  182. package/chunks/{theme-manager-P6UITO2L.js → theme-manager-IEOPHMX6.js} +10 -10
  183. package/chunks/{todoWrite-YNXB27GB.js → todoWrite-FKCGATPJ.js} +1 -1
  184. package/chunks/{tool-search-DDNGK2LR.js → tool-search-WIIEDALL.js} +6 -6
  185. package/chunks/{total-session-admission-PL5N7DNY.js → total-session-admission-WU3DORRW.js} +15 -17
  186. package/chunks/{trustedFolders-C5LMF3UR.js → trustedFolders-JVUTUAJ3.js} +11 -11
  187. package/chunks/update-relaunch-X5EQKCH5.js +87 -0
  188. package/chunks/{updateCheck-QTVVISH7.js → updateCheck-TGO2X735.js} +14 -12
  189. package/chunks/{validateNonInterActiveAuth-RY4RKBQG.js → validateNonInterActiveAuth-2MEUL2ME.js} +46 -46
  190. package/chunks/{version-U45RYOSD.js → version-KBGQKZWV.js} +1 -1
  191. package/chunks/{web-fetch-ZSPR3PRR.js → web-fetch-CFCWTCAP.js} +2 -3
  192. package/chunks/{workflow-TCIAQYOA.js → workflow-PAOSF4CG.js} +11 -11
  193. package/chunks/{workspace-providers-status-I3G2HYLY.js → workspace-providers-status-AYHJYSVO.js} +18 -18
  194. package/chunks/{workspace-registration-store-IH5GLZ6Y.js → workspace-registration-store-GZMR53QL.js} +1 -1
  195. package/chunks/{workspace-registry-QEKBELIX.js → workspace-registry-C2IXZWPF.js} +15 -17
  196. package/chunks/{workspace-service-ORKHGLP3.js → workspace-service-KDDAW33F.js} +20 -21
  197. package/chunks/{workspace-skills-status-D7QCNDYY.js → workspace-skills-status-WWEZBZXY.js} +16 -16
  198. package/chunks/{write-file-JGRQR5VM.js → write-file-ACN3TAIX.js} +10 -10
  199. package/chunks/{zh-FSAH32JB.js → zh-PAUNIMHQ.js} +6 -0
  200. package/chunks/{zh-TW-D2YIE2LO.js → zh-TW-GNEUIUFF.js} +6 -0
  201. package/cli-entry.js +92 -8
  202. package/cli.js +11 -11
  203. package/locales/ca.js +10 -0
  204. package/locales/de.js +10 -0
  205. package/locales/en.js +11 -0
  206. package/locales/fr.js +10 -0
  207. package/locales/ja.js +10 -0
  208. package/locales/pt.js +10 -0
  209. package/locales/ru.js +10 -0
  210. package/locales/zh-TW.js +11 -0
  211. package/locales/zh.js +11 -0
  212. package/package.json +3 -3
  213. package/web-shell/assets/{arc-CUeDlxvE.js → arc-Blc5_CnD.js} +1 -1
  214. package/web-shell/assets/{architectureDiagram-3BPJPVTR-PiUszkQA.js → architectureDiagram-3BPJPVTR-Dyv1BvGP.js} +1 -1
  215. package/web-shell/assets/{blockDiagram-GPEHLZMM-s2wYSO7e.js → blockDiagram-GPEHLZMM-CVAb8DyB.js} +1 -1
  216. package/web-shell/assets/{c4Diagram-AAUBKEIU-DyLxZoz9.js → c4Diagram-AAUBKEIU-ClHPb_6S.js} +1 -1
  217. package/web-shell/assets/channel-DkPTtnGS.js +1 -0
  218. package/web-shell/assets/{chunk-2J33WTMH-Dsdai7Tk.js → chunk-2J33WTMH-Dad9g3ZA.js} +1 -1
  219. package/web-shell/assets/{chunk-4BX2VUAB-DEosOjV7.js → chunk-4BX2VUAB-IJJSSdDs.js} +1 -1
  220. package/web-shell/assets/{chunk-55IACEB6-sNsRLTXf.js → chunk-55IACEB6-DRcc-Hl9.js} +1 -1
  221. package/web-shell/assets/{chunk-727SXJPM-DkRNZzmh.js → chunk-727SXJPM-DOCFB-6a.js} +1 -1
  222. package/web-shell/assets/{chunk-AQP2D5EJ-BrsRNpzd.js → chunk-AQP2D5EJ-CRZnSjHp.js} +1 -1
  223. package/web-shell/assets/{chunk-FMBD7UC4-CI039lpl.js → chunk-FMBD7UC4-BwUI4Yes.js} +1 -1
  224. package/web-shell/assets/{chunk-ND2GUHAM-M-pkeIfu.js → chunk-ND2GUHAM-DLy8doxd.js} +1 -1
  225. package/web-shell/assets/{chunk-QZHKN3VN-C4ckGNbH.js → chunk-QZHKN3VN-Bhz7iysj.js} +1 -1
  226. package/web-shell/assets/classDiagram-4FO5ZUOK-DBdPU8ix.js +1 -0
  227. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DBdPU8ix.js +1 -0
  228. package/web-shell/assets/{cose-bilkent-S5V4N54A-BciKUAFq.js → cose-bilkent-S5V4N54A-jT1e8KzN.js} +1 -1
  229. package/web-shell/assets/{dagre-BM42HDAG-C1nTSgU6.js → dagre-BM42HDAG-C1veApQk.js} +1 -1
  230. package/web-shell/assets/{diagram-2AECGRRQ-BDPNWr1m.js → diagram-2AECGRRQ-C_NOwKeT.js} +1 -1
  231. package/web-shell/assets/{diagram-5GNKFQAL-CNFhTszL.js → diagram-5GNKFQAL-Bigfuz1r.js} +1 -1
  232. package/web-shell/assets/{diagram-KO2AKTUF-CjPa4p5a.js → diagram-KO2AKTUF-CpXltPpU.js} +1 -1
  233. package/web-shell/assets/{diagram-LMA3HP47-ZzPykSyG.js → diagram-LMA3HP47-DYawbYbH.js} +1 -1
  234. package/web-shell/assets/{diagram-OG6HWLK6-0UVtZ9A4.js → diagram-OG6HWLK6-D2t-ttd1.js} +1 -1
  235. package/web-shell/assets/{erDiagram-TEJ5UH35-CajDZCat.js → erDiagram-TEJ5UH35-Buc53PB5.js} +1 -1
  236. package/web-shell/assets/{flowDiagram-I6XJVG4X-BRuFBIvL.js → flowDiagram-I6XJVG4X-DwdFsCN7.js} +1 -1
  237. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BevGmJqG.js → ganttDiagram-6RSMTGT7-XhiEKGoP.js} +1 -1
  238. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DvPMpBMb.js → gitGraphDiagram-PVQCEYII-D6We014a.js} +1 -1
  239. package/web-shell/assets/index-BctAmeF3.js +1143 -0
  240. package/web-shell/assets/{index-DzHwQkQq.js → index-CAWqS-bZ.js} +1 -1
  241. package/web-shell/assets/index-DLyhlZZO.css +5 -0
  242. package/web-shell/assets/{infoDiagram-5YYISTIA-Oixn7tA9.js → infoDiagram-5YYISTIA-C_iugRHQ.js} +1 -1
  243. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BgKpeg-j.js → ishikawaDiagram-YF4QCWOH-CAn9Kaix.js} +1 -1
  244. package/web-shell/assets/{journeyDiagram-JHISSGLW-74mwxIaA.js → journeyDiagram-JHISSGLW-BjDYOkEB.js} +1 -1
  245. package/web-shell/assets/{kanban-definition-UN3LZRKU-D4D6cEqA.js → kanban-definition-UN3LZRKU-Br_oI3Ob.js} +1 -1
  246. package/web-shell/assets/{linear-atZRE_L2.js → linear-BqnWHE9E.js} +1 -1
  247. package/web-shell/assets/{mermaid.core-KKudX-JC.js → mermaid.core-CT-sofSb.js} +5 -5
  248. package/web-shell/assets/{mindmap-definition-RKZ34NQL-CMCej9yG.js → mindmap-definition-RKZ34NQL-BbvrZR4B.js} +1 -1
  249. package/web-shell/assets/{pieDiagram-4H26LBE5-nhx40X7q.js → pieDiagram-4H26LBE5-gAwi3h_Q.js} +1 -1
  250. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CUmVcN3M.js → quadrantDiagram-W4KKPZXB-CONvBIuO.js} +1 -1
  251. package/web-shell/assets/{requirementDiagram-4Y6WPE33-C_vyEwyy.js → requirementDiagram-4Y6WPE33-lpkrcy1e.js} +1 -1
  252. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-DU6G4VWR.js → sankeyDiagram-5OEKKPKP-Bk6FJHqb.js} +1 -1
  253. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DdeRR_KJ.js → sequenceDiagram-3UESZ5HK-B9b9bBzt.js} +1 -1
  254. package/web-shell/assets/{stateDiagram-AJRCARHV-C6iCI8ps.js → stateDiagram-AJRCARHV-JqBGC-S3.js} +1 -1
  255. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-B_w4fDnm.js +1 -0
  256. package/web-shell/assets/{timeline-definition-PNZ67QCA-B_Ea8Cb7.js → timeline-definition-PNZ67QCA-CCCceXDP.js} +1 -1
  257. package/web-shell/assets/{vennDiagram-CIIHVFJN-BPUVZEJA.js → vennDiagram-CIIHVFJN-EHRnmZ09.js} +1 -1
  258. package/web-shell/assets/{wardley-L42UT6IY-BWEj0lKY.js → wardley-L42UT6IY-CYIcHx3_.js} +1 -1
  259. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BvDsdIQw.js → wardleyDiagram-YWT4CUSO-B81AuYRl.js} +1 -1
  260. package/web-shell/assets/{xychartDiagram-2RQKCTM6-crz0QhF_.js → xychartDiagram-2RQKCTM6-DOQ6E3z7.js} +1 -1
  261. package/web-shell/index.html +2 -2
  262. package/chunks/channel-worker-group-K7QKH6IG.js +0 -13
  263. package/chunks/chunk-B7NUUEXC.js +0 -311
  264. package/chunks/chunk-CARU2RR2.js +0 -24
  265. package/chunks/chunk-GYTKQYDB.js +0 -23
  266. package/chunks/chunk-LQU7EVFA.js +0 -30
  267. package/chunks/chunk-OCPBI7J5.js +0 -18
  268. package/chunks/chunk-OJAMDVF5.js +0 -66
  269. package/chunks/chunk-TEGEBB2I.js +0 -122
  270. package/web-shell/assets/channel-DkuJJ0qd.js +0 -1
  271. package/web-shell/assets/classDiagram-4FO5ZUOK-CwqHc0TB.js +0 -1
  272. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CwqHc0TB.js +0 -1
  273. package/web-shell/assets/index-Cnvv4VcI.css +0 -5
  274. package/web-shell/assets/index-D1Uyklxa.js +0 -1088
  275. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-C0_6nR6C.js +0 -1
@@ -22,7 +22,7 @@ import {
22
22
  } from "./chunk-SPJQO2CE.js";
23
23
  import {
24
24
  ToolNames
25
- } from "./chunk-2UUAIFQO.js";
25
+ } from "./chunk-JGUT3LWZ.js";
26
26
  import {
27
27
  Storage,
28
28
  createDebugLogger,
@@ -331,6 +331,11 @@ var CronScheduler = class {
331
331
  fileWatcher = null;
332
332
  lockProbeTimer = null;
333
333
  debounceTimer = null;
334
+ // Test-only auto-fire timers (QWEN_CODE_TEST_CRON_FAST). Each timer
335
+ // fires its job via forceFireJob after a short delay so integration
336
+ // tests don't wait for the wall-clock minute boundary. Cleared on
337
+ // stop()/destroy() so a session teardown never leaks a pending fire.
338
+ testFireTimers = /* @__PURE__ */ new Map();
334
339
  // Catch-up work detected before start() installed onFire — flushed
335
340
  // through onFire as soon as it exists.
336
341
  pendingFires = [];
@@ -366,6 +371,18 @@ var CronScheduler = class {
366
371
  jitterMs
367
372
  };
368
373
  this.jobs.set(id, job);
374
+ if (process.env["QWEN_CODE_TEST_CRON_FAST"] === "1" && !job.durable) {
375
+ const delayMs = Number(process.env["QWEN_CODE_TEST_CRON_DELAY_MS"]) || 5e3;
376
+ const timer = setTimeout(() => {
377
+ this.testFireTimers.delete(id);
378
+ this.forceFireJob(id);
379
+ }, delayMs);
380
+ timer.unref();
381
+ this.testFireTimers.set(id, timer);
382
+ debugLogger.debug(
383
+ `Test seam: auto-fire scheduled for job ${id} in ${delayMs}ms`
384
+ );
385
+ }
369
386
  return job;
370
387
  }
371
388
  /**
@@ -887,6 +904,21 @@ var CronScheduler = class {
887
904
  setSkipDurableFire(predicate) {
888
905
  this.skipDurableFire = predicate;
889
906
  }
907
+ /**
908
+ * Immediately fires a job by ID, bypassing the cron schedule check.
909
+ * Sets lastFiredAt to prevent the normal tick from re-firing the same
910
+ * minute slot. Returns true if the job existed and was fired, false
911
+ * otherwise. Primarily a test seam (see QWEN_CODE_TEST_CRON_FAST in
912
+ * create()); also useful for manual debug triggers.
913
+ */
914
+ forceFireJob(id) {
915
+ const job = this.jobs.get(id);
916
+ if (!job || !this.onFire) return false;
917
+ job.lastFiredAt = Date.now();
918
+ debugLogger.debug(`forceFireJob: firing ${id} (${job.cronExpr})`);
919
+ this.onFire(job);
920
+ return true;
921
+ }
890
922
  /**
891
923
  * Starts the scheduler tick. Calls `onFire` when a job is due.
892
924
  * Only fires when called — does not auto-fire missed intervals.
@@ -926,6 +958,8 @@ var CronScheduler = class {
926
958
  clearTimeout(this.debounceTimer);
927
959
  this.debounceTimer = null;
928
960
  }
961
+ for (const timer of this.testFireTimers.values()) clearTimeout(timer);
962
+ this.testFireTimers.clear();
929
963
  if (this.wakeups.size > 0) {
930
964
  debugLogger.debug(`stop() discarding ${this.wakeups.size} wakeup(s)`);
931
965
  this.wakeups.clear();
@@ -3,7 +3,10 @@
3
3
  import {
4
4
  formatHistoryGapNotice,
5
5
  indexGapsByChild
6
- } from "./chunk-SPUYQB4T.js";
6
+ } from "./chunk-DPXB3XRN.js";
7
+ import {
8
+ sanitizeTerminalText
9
+ } from "./chunk-SUARMD4Q.js";
7
10
  import {
8
11
  require_undici
9
12
  } from "./chunk-L573Z2QZ.js";
@@ -12,13 +15,15 @@ import {
12
15
  } from "./chunk-YUZI3WAC.js";
13
16
  import {
14
17
  getActiveGoal
15
- } from "./chunk-K7CRWKOE.js";
18
+ } from "./chunk-R6AO7HBQ.js";
16
19
  import {
17
- apiActivityTracker
18
- } from "./chunk-P6LART6G.js";
20
+ apiActivityTracker,
21
+ formatVisionBridgeNoticeDisplay,
22
+ isVisionBridgeNoticeDisplay
23
+ } from "./chunk-BTSE2DUP.js";
19
24
  import {
20
25
  ToolNames
21
- } from "./chunk-2UUAIFQO.js";
26
+ } from "./chunk-JGUT3LWZ.js";
22
27
  import {
23
28
  createDebugLogger
24
29
  } from "./chunk-7NFB7LBQ.js";
@@ -826,6 +831,7 @@ var ToolCallEmitter = class _ToolCallEmitter extends BaseEmitter {
826
831
  __name(this, "ToolCallEmitter");
827
832
  }
828
833
  planEmitter;
834
+ preparedCallIds = /* @__PURE__ */ new Set();
829
835
  constructor(ctx) {
830
836
  super(ctx);
831
837
  this.planEmitter = new PlanEmitter(ctx);
@@ -840,6 +846,9 @@ var ToolCallEmitter = class _ToolCallEmitter extends BaseEmitter {
840
846
  if (this.isTodoWriteTool(params.toolName)) {
841
847
  return false;
842
848
  }
849
+ if (params.phase === "preparing" && this.preparedCallIds.has(params.callId)) {
850
+ return false;
851
+ }
843
852
  const { title, locations, kind } = this.resolveToolMetadata(
844
853
  params.toolName,
845
854
  params.args
@@ -848,8 +857,8 @@ var ToolCallEmitter = class _ToolCallEmitter extends BaseEmitter {
848
857
  params.toolName,
849
858
  params.subagentMeta
850
859
  );
851
- await this.sendUpdate({
852
- sessionUpdate: "tool_call",
860
+ const updatesPreparedCall = params.phase !== "preparing" && this.preparedCallIds.delete(params.callId);
861
+ const update = {
853
862
  toolCallId: params.callId,
854
863
  status: params.status || "pending",
855
864
  title,
@@ -859,6 +868,7 @@ var ToolCallEmitter = class _ToolCallEmitter extends BaseEmitter {
859
868
  rawInput: params.args ?? {},
860
869
  _meta: {
861
870
  toolName: params.toolName,
871
+ ...params.phase ? { phase: params.phase } : {},
862
872
  ...params.subagentMeta,
863
873
  provenance: provenance.provenance,
864
874
  ...provenance.serverId ? { serverId: provenance.serverId } : {},
@@ -866,9 +876,40 @@ var ToolCallEmitter = class _ToolCallEmitter extends BaseEmitter {
866
876
  timestamp: BaseEmitter.toEpochMs(params.timestamp)
867
877
  }
868
878
  }
869
- });
879
+ };
880
+ await this.sendUpdate(
881
+ updatesPreparedCall ? { sessionUpdate: "tool_call_update", ...update } : { sessionUpdate: "tool_call", ...update }
882
+ );
883
+ if (params.phase === "preparing") {
884
+ this.preparedCallIds.add(params.callId);
885
+ }
870
886
  return true;
871
887
  }
888
+ /**
889
+ * Emits a terminal frame when a prepared tool call is discarded before
890
+ * execution. TodoWrite remains represented exclusively by plan updates.
891
+ *
892
+ * @param callId - ID of the prepared tool call
893
+ * @param toolName - Name of the prepared tool
894
+ */
895
+ async emitPreparationDiscarded(callId, toolName) {
896
+ if (this.isTodoWriteTool(toolName)) return;
897
+ this.preparedCallIds.delete(callId);
898
+ const provenance = _ToolCallEmitter.resolveToolProvenance(toolName);
899
+ await this.sendUpdate({
900
+ sessionUpdate: "tool_call_update",
901
+ toolCallId: callId,
902
+ status: "failed",
903
+ content: [],
904
+ _meta: {
905
+ toolName,
906
+ phase: "preparing",
907
+ preparationDiscarded: true,
908
+ provenance: provenance.provenance,
909
+ ...provenance.serverId ? { serverId: provenance.serverId } : {}
910
+ }
911
+ });
912
+ }
872
913
  /**
873
914
  * Emits a tool call result event.
874
915
  * Handles TodoWriteTool specially by routing to plan updates.
@@ -888,6 +929,7 @@ var ToolCallEmitter = class _ToolCallEmitter extends BaseEmitter {
888
929
  }
889
930
  return;
890
931
  }
932
+ this.preparedCallIds.delete(params.callId);
891
933
  let contentArray = [];
892
934
  const diffContent = this.extractDiffContent(params.resultDisplay);
893
935
  if (diffContent) {
@@ -902,6 +944,17 @@ var ToolCallEmitter = class _ToolCallEmitter extends BaseEmitter {
902
944
  } else {
903
945
  contentArray = this.transformPartsToToolCallContent(params.message);
904
946
  }
947
+ if (isVisionBridgeNoticeDisplay(params.resultDisplay)) {
948
+ contentArray.unshift({
949
+ type: "content",
950
+ content: {
951
+ type: "text",
952
+ text: sanitizeTerminalText(
953
+ formatVisionBridgeNoticeDisplay(params.resultDisplay)
954
+ )
955
+ }
956
+ });
957
+ }
905
958
  const provenance = _ToolCallEmitter.resolveToolProvenance(
906
959
  params.toolName,
907
960
  params.subagentMeta
@@ -937,6 +990,7 @@ var ToolCallEmitter = class _ToolCallEmitter extends BaseEmitter {
937
990
  * @param subagentMeta - Optional subagent metadata
938
991
  */
939
992
  async emitError(callId, toolName, error, subagentMeta) {
993
+ this.preparedCallIds.delete(callId);
940
994
  const provenance = _ToolCallEmitter.resolveToolProvenance(
941
995
  toolName,
942
996
  subagentMeta
@@ -1384,7 +1438,7 @@ var HistoryReplayer = class {
1384
1438
  await this.toolCallEmitter.emitResult({
1385
1439
  toolName,
1386
1440
  callId,
1387
- success: !result?.error,
1441
+ success: result?.status === void 0 ? !result?.error : result.status === "success" && !result.error,
1388
1442
  message: record.message.parts,
1389
1443
  resultDisplay: result?.resultDisplay,
1390
1444
  artifacts: result?.artifacts,
@@ -1681,7 +1735,7 @@ async function extractMetadata(conversation, config) {
1681
1735
  const gitBranch = firstRecord?.gitBranch;
1682
1736
  let gitRepo;
1683
1737
  if (cwd) {
1684
- const { getGitRepoName } = await import("./src-USZKPUOC.js");
1738
+ const { getGitRepoName } = await import("./src-6OJFUPTL.js");
1685
1739
  gitRepo = getGitRepoName(cwd);
1686
1740
  }
1687
1741
  let model;
@@ -1996,7 +2050,19 @@ function buildToolCallMessageFromResult(record, config) {
1996
2050
  const rawInput = normalizeRawInput(
1997
2051
  functionCallArgs ?? toolCallResult?.args
1998
2052
  );
1999
- const content = extractDiffContent(toolCallResult?.resultDisplay) ?? transformPartsToToolCallContent(record.message?.parts ?? []);
2053
+ const resultContent = extractDiffContent(toolCallResult?.resultDisplay) ?? transformPartsToToolCallContent(record.message?.parts ?? []);
2054
+ const content = isVisionBridgeNoticeDisplay(toolCallResult?.resultDisplay) ? [
2055
+ {
2056
+ type: "content",
2057
+ content: {
2058
+ type: "text",
2059
+ text: sanitizeTerminalText(
2060
+ formatVisionBridgeNoticeDisplay(toolCallResult.resultDisplay)
2061
+ )
2062
+ }
2063
+ },
2064
+ ...resultContent
2065
+ ] : resultContent;
2000
2066
  return {
2001
2067
  uuid: record.uuid,
2002
2068
  parentUuid: record.parentUuid,
@@ -4,22 +4,22 @@ import {
4
4
  handleAtCommand,
5
5
  resolveAtCommandQuery,
6
6
  sanitizeDisplayText
7
- } from "./chunk-X362TMXZ.js";
7
+ } from "./chunk-XQDPCQ3A.js";
8
8
  import {
9
9
  isAtCommand,
10
10
  isBtwCommand,
11
11
  isSlashCommand,
12
12
  normalizePartList,
13
13
  recordGoalStatusItem
14
- } from "./chunk-YX4LLZ3D.js";
14
+ } from "./chunk-NABT4VOY.js";
15
15
  import {
16
16
  fitPendingSlice,
17
17
  useSessionStats
18
- } from "./chunk-XXJKGHZV.js";
18
+ } from "./chunk-6VMOP2Z7.js";
19
19
  import {
20
20
  SHELL_COMMAND_NAME,
21
21
  isCollapsibleTool
22
- } from "./chunk-DK33QJ3V.js";
22
+ } from "./chunk-GCRFH57X.js";
23
23
  import {
24
24
  require_react
25
25
  } from "./chunk-HTHUX2T5.js";
@@ -31,10 +31,10 @@ import {
31
31
  } from "./chunk-E5Z2AVNV.js";
32
32
  import {
33
33
  isInlineModelOverrideAllowed
34
- } from "./chunk-GGJII3FM.js";
34
+ } from "./chunk-WZJELXEU.js";
35
35
  import {
36
36
  t
37
- } from "./chunk-RDRVMDWV.js";
37
+ } from "./chunk-EMJJBXS7.js";
38
38
  import {
39
39
  AutonomousLoopTickResolver,
40
40
  CoreToolScheduler,
@@ -48,37 +48,39 @@ import {
48
48
  generateToolUseSummary,
49
49
  getActiveGoal,
50
50
  getToolResponseDisplayText,
51
- hasImageParts,
52
51
  isBinary,
53
52
  markDuplicateProviderToolCallResponseSent,
54
53
  parseAndFormatApiError,
55
54
  promptIdContext,
56
55
  refreshMemoryAfterManagedWrite,
57
- runVisionBridge,
58
- setActiveGoal,
59
- shouldRunVisionBridge,
60
- splitImageParts
61
- } from "./chunk-K7CRWKOE.js";
56
+ setActiveGoal
57
+ } from "./chunk-R6AO7HBQ.js";
62
58
  import {
63
59
  ApiCancelEvent,
64
60
  ConversationFinishedEvent,
65
61
  UserPromptEvent,
66
62
  UserRetryEvent,
63
+ formatVisionBridgeNotice,
64
+ hasImageParts,
67
65
  logApiCancel,
68
66
  logConversationFinishedEvent,
69
67
  logUserPrompt,
70
- logUserRetry
71
- } from "./chunk-P6LART6G.js";
68
+ logUserRetry,
69
+ runVisionBridge,
70
+ shouldRunVisionBridge,
71
+ splitImageParts
72
+ } from "./chunk-BTSE2DUP.js";
72
73
  import {
73
74
  isAnyAutoMemPath
74
75
  } from "./chunk-FBU7WRZI.js";
75
76
  import {
76
- ToolNames
77
- } from "./chunk-2UUAIFQO.js";
77
+ ToolNames,
78
+ isShellProgressData
79
+ } from "./chunk-JGUT3LWZ.js";
78
80
  import {
79
81
  getUnsupportedImageFormatWarning,
80
82
  isSupportedImageMimeType
81
- } from "./chunk-B7NUUEXC.js";
83
+ } from "./chunk-FEOZBUMT.js";
82
84
  import {
83
85
  FinishReason
84
86
  } from "./chunk-4LD5APFL.js";
@@ -550,6 +552,9 @@ function useReactToolScheduler(onComplete, config, getPreferredEditor, onEditorC
550
552
  const [toolCallsForDisplay, setToolCallsForDisplay] = (0, import_react4.useState)([]);
551
553
  const outputUpdateHandler = (0, import_react4.useCallback)(
552
554
  (toolCallId, outputChunk) => {
555
+ if (isShellProgressData(outputChunk)) {
556
+ return;
557
+ }
553
558
  const compactOutput = compactToolResultDisplayForHistory(outputChunk);
554
559
  setToolCallsForDisplay(
555
560
  (prevCalls) => prevCalls.map((tc) => {
@@ -802,22 +807,6 @@ function clearModelOverride(modelOverrideRef, inlineActiveRef) {
802
807
  __name(clearModelOverride, "clearModelOverride");
803
808
  var MID_TURN_AT_COMMAND_RESOLVE_TIMEOUT_MS = 1e4;
804
809
  var MID_TURN_AT_COMMAND_RESOLVE_TIMEOUT_MESSAGE = "Mid-turn @ command resolution timed out";
805
- function formatVisionBridgeNotice(result) {
806
- const modelName = result.modelId ?? "vision model";
807
- const target = result.modelEndpoint ? `${modelName} (${result.modelEndpoint})` : modelName;
808
- const egressNote = result.egressOccurred ? ` Your image and prompt/context were sent to ${target}.` : "";
809
- if (result.status === "failed") {
810
- const reason = result.egressOccurred ? "the vision model request failed" : "the vision bridge could not run";
811
- return `Vision bridge (${modelName}) failed: ${reason}.${egressNote} The image was not interpreted.`;
812
- }
813
- if (result.status === "skipped") {
814
- return `Vision bridge cancelled.${egressNote}`;
815
- }
816
- const omitted = result.omittedCount > 0 ? ` (${result.omittedCount} image(s) omitted)` : "";
817
- const header = `Converted ${result.convertedCount} image(s)${omitted} to text via ${target}. Your image and prompt/context were sent to that model.`;
818
- return header;
819
- }
820
- __name(formatVisionBridgeNotice, "formatVisionBridgeNotice");
821
810
  function extractLastAssistantText(history) {
822
811
  for (let i = history.length - 1; i >= 0; i--) {
823
812
  const item = history[i];
@@ -8,16 +8,16 @@ import {
8
8
  initializeI18n,
9
9
  resolveLanguageSetting,
10
10
  t
11
- } from "./chunk-RDRVMDWV.js";
11
+ } from "./chunk-EMJJBXS7.js";
12
12
  import {
13
13
  IdeClient
14
- } from "./chunk-K7CRWKOE.js";
14
+ } from "./chunk-R6AO7HBQ.js";
15
15
  import {
16
16
  AuthEvent,
17
17
  IdeConnectionEvent,
18
18
  logAuth,
19
19
  logIdeConnection
20
- } from "./chunk-P6LART6G.js";
20
+ } from "./chunk-BTSE2DUP.js";
21
21
  import {
22
22
  getErrorMessage
23
23
  } from "./chunk-7NFB7LBQ.js";
@@ -2,17 +2,23 @@
2
2
  "use strict";
3
3
  import {
4
4
  appEvents
5
- } from "./chunk-CEW4HDPK.js";
5
+ } from "./chunk-ZK4AMPKI.js";
6
+ import {
7
+ CUSTOM_SANDBOX_IMAGE_ENV_VAR,
8
+ HOST_UPDATE_RELAUNCH_ENV_VAR,
9
+ SKIP_UPDATE_CHECK_ENV_VAR,
10
+ requestUpdateOnExit
11
+ } from "./chunk-6WVLHULT.js";
6
12
  import {
7
13
  require_undici
8
14
  } from "./chunk-L573Z2QZ.js";
9
15
  import {
10
16
  IdeClient,
11
17
  getAllProviderBaseUrls
12
- } from "./chunk-K7CRWKOE.js";
18
+ } from "./chunk-R6AO7HBQ.js";
13
19
  import {
14
20
  initializeTelemetry
15
- } from "./chunk-P6LART6G.js";
21
+ } from "./chunk-BTSE2DUP.js";
16
22
  import {
17
23
  detectRuntime,
18
24
  getOrCreateSharedDispatcher,
@@ -218,18 +224,20 @@ __name(startEarlyStartupPrefetches, "startEarlyStartupPrefetches");
218
224
  function startPostRenderPrefetches(config, settings, options = {}) {
219
225
  if (postRenderStarted.has(config)) return;
220
226
  postRenderStarted.add(config);
221
- if (settings.merged.general?.enableAutoUpdate !== false) {
227
+ if (settings.merged.general?.enableAutoUpdate !== false && process.env[SKIP_UPDATE_CHECK_ENV_VAR] !== "true" && !process.env[CUSTOM_SANDBOX_IMAGE_ENV_VAR]) {
222
228
  runDeferredTask("update_check", async () => {
223
229
  const [
224
230
  { checkForUpdatesDetailed },
225
231
  { handleAutoUpdate },
232
+ { getInstallationInfo },
226
233
  { updateEventEmitter },
227
234
  { t }
228
235
  ] = await Promise.all([
229
- import("./updateCheck-QTVVISH7.js"),
230
- import("./handleAutoUpdate-ULHNWL6R.js"),
236
+ import("./updateCheck-TGO2X735.js"),
237
+ import("./handleAutoUpdate-NGE5AQ2N.js"),
238
+ import("./installationInfo-4R75MFTB.js"),
231
239
  import("./updateEventEmitter-5MKC7BLQ.js"),
232
- import("./i18n-CYDUTF6F.js")
240
+ import("./i18n-QNVR36NB.js")
233
241
  ]);
234
242
  const updateFailedMessage = t(
235
243
  "Failed to check for updates. Please check your network or registry configuration."
@@ -237,7 +245,46 @@ function startPostRenderPrefetches(config, settings, options = {}) {
237
245
  try {
238
246
  const result = await checkForUpdatesDetailed();
239
247
  if (result.status === "update") {
240
- handleAutoUpdate(result.info, settings, config.getProjectRoot());
248
+ const projectRoot = config.getProjectRoot();
249
+ const hostUpdateRelaunch = process.env[HOST_UPDATE_RELAUNCH_ENV_VAR];
250
+ if (hostUpdateRelaunch === "true") {
251
+ updateEventEmitter.emit("update-info", {
252
+ message: `${result.info.message}
253
+ ${t(
254
+ "Run /update to install the update on the host."
255
+ )}`
256
+ });
257
+ return;
258
+ }
259
+ if (hostUpdateRelaunch === "false") {
260
+ updateEventEmitter.emit("update-info", {
261
+ message: `${result.info.message}
262
+ ${t(
263
+ "Update Qwen Code on the host, then restart the sandbox."
264
+ )}`
265
+ });
266
+ return;
267
+ }
268
+ const installationInfo = getInstallationInfo(projectRoot, true);
269
+ if (installationInfo.updateCommand || installationInfo.isStandalone && installationInfo.standaloneDir) {
270
+ if (requestUpdateOnExit()) {
271
+ updateEventEmitter.emit("update-info", {
272
+ message: `${result.info.message}
273
+ ${t(
274
+ "The update will be installed after you exit this session."
275
+ )}`
276
+ });
277
+ } else {
278
+ updateEventEmitter.emit("update-info", {
279
+ message: `${result.info.message}
280
+ ${t(
281
+ "Run /update to install the update."
282
+ )}`
283
+ });
284
+ }
285
+ } else {
286
+ void handleAutoUpdate(result.info, settings, projectRoot);
287
+ }
241
288
  } else if (result.status === "error") {
242
289
  updateEventEmitter.emit("update-failed", {
243
290
  message: updateFailedMessage
@@ -257,7 +304,7 @@ function startPostRenderPrefetches(config, settings, options = {}) {
257
304
  state: "connecting"
258
305
  });
259
306
  try {
260
- const { connectIdeForStartup } = await import("./initializer-NRFKUGIO.js");
307
+ const { connectIdeForStartup } = await import("./initializer-ZY7ORPMH.js");
261
308
  await withTimeout(
262
309
  connectIdeForStartup(config),
263
310
  "ide_connect",
@@ -283,7 +330,7 @@ function startPostRenderPrefetches(config, settings, options = {}) {
283
330
  }
284
331
  if (config.isInteractive()) {
285
332
  runDeferredTask("background_housekeeping", async () => {
286
- const { startBackgroundHousekeeping } = await import("./scheduler-JJDZBDRN.js");
333
+ const { startBackgroundHousekeeping } = await import("./scheduler-WTK7ZLV5.js");
287
334
  startBackgroundHousekeeping(config, settings);
288
335
  });
289
336
  }
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-QHTIBUWB.js";
9
9
  import {
10
10
  t
11
- } from "./chunk-RDRVMDWV.js";
11
+ } from "./chunk-EMJJBXS7.js";
12
12
  import {
13
13
  require_clean,
14
14
  require_constants,
@@ -27,7 +27,7 @@ import {
27
27
  ansi_regex_exports,
28
28
  init_ansi_regex,
29
29
  stripAnsi
30
- } from "./chunk-K7CRWKOE.js";
30
+ } from "./chunk-T4TZQJ7W.js";
31
31
  import {
32
32
  require_graceful_fs
33
33
  } from "./chunk-E2UVIFI2.js";
@@ -8117,6 +8117,35 @@ __name(updateNotifier, "updateNotifier");
8117
8117
  var import_semver2 = __toESM(require_semver2(), 1);
8118
8118
  var debugLogger = createDebugLogger("UPDATE_CHECK");
8119
8119
  var FETCH_TIMEOUT_MS = 2e3;
8120
+ var UpdateCheckTimeoutError = class extends Error {
8121
+ static {
8122
+ __name(this, "UpdateCheckTimeoutError");
8123
+ }
8124
+ distTag;
8125
+ constructor(timeoutMs, distTag) {
8126
+ const suffix = distTag ? ` for ${distTag}` : "";
8127
+ super(`update-notifier fetchInfo timed out after ${timeoutMs}ms${suffix}`);
8128
+ this.name = "UpdateCheckTimeoutError";
8129
+ this.distTag = distTag;
8130
+ }
8131
+ };
8132
+ async function fetchInfoWithTimeout(notifier, timeoutMs, distTag) {
8133
+ let timer;
8134
+ try {
8135
+ return await Promise.race([
8136
+ Promise.resolve(notifier.fetchInfo()),
8137
+ new Promise((_, reject) => {
8138
+ timer = setTimeout(
8139
+ () => reject(new UpdateCheckTimeoutError(timeoutMs, distTag)),
8140
+ timeoutMs
8141
+ );
8142
+ })
8143
+ ]);
8144
+ } finally {
8145
+ if (timer !== void 0) clearTimeout(timer);
8146
+ }
8147
+ }
8148
+ __name(fetchInfoWithTimeout, "fetchInfoWithTimeout");
8120
8149
  function getBestAvailableUpdate(nightly, stable) {
8121
8150
  if (!nightly) return stable || null;
8122
8151
  if (!stable) return nightly || null;
@@ -8152,9 +8181,20 @@ async function checkForUpdatesDetailed() {
8152
8181
  }), "createNotifier");
8153
8182
  if (isNightly) {
8154
8183
  const [nightlyUpdateInfo, latestUpdateInfo] = await Promise.all([
8155
- createNotifier("nightly").fetchInfo(),
8156
- createNotifier("latest").fetchInfo()
8184
+ fetchInfoWithTimeout(
8185
+ createNotifier("nightly"),
8186
+ FETCH_TIMEOUT_MS,
8187
+ "nightly"
8188
+ ),
8189
+ fetchInfoWithTimeout(
8190
+ createNotifier("latest"),
8191
+ FETCH_TIMEOUT_MS,
8192
+ "latest"
8193
+ )
8157
8194
  ]);
8195
+ debugLogger.debug(
8196
+ `fetchInfo returned nightly=${JSON.stringify(nightlyUpdateInfo)} latest=${JSON.stringify(latestUpdateInfo)} for current=${version}`
8197
+ );
8158
8198
  const bestUpdate = getBestAvailableUpdate(
8159
8199
  nightlyUpdateInfo,
8160
8200
  latestUpdateInfo
@@ -8172,7 +8212,14 @@ async function checkForUpdatesDetailed() {
8172
8212
  };
8173
8213
  }
8174
8214
  } else {
8175
- const updateInfo = await createNotifier("latest").fetchInfo();
8215
+ const updateInfo = await fetchInfoWithTimeout(
8216
+ createNotifier("latest"),
8217
+ FETCH_TIMEOUT_MS,
8218
+ "latest"
8219
+ );
8220
+ debugLogger.debug(
8221
+ `fetchInfo returned ${JSON.stringify(updateInfo)} for current=${version}`
8222
+ );
8176
8223
  if (updateInfo && import_semver2.default.gt(updateInfo.latest, version)) {
8177
8224
  return {
8178
8225
  status: "update",
@@ -8202,6 +8249,7 @@ __name(checkForUpdates, "checkForUpdates");
8202
8249
 
8203
8250
  export {
8204
8251
  FETCH_TIMEOUT_MS,
8252
+ UpdateCheckTimeoutError,
8205
8253
  checkForUpdatesDetailed,
8206
8254
  checkForUpdates
8207
8255
  };