@qwen-code/qwen-code 0.19.9 → 0.19.10-nightly.20260716.506ce0a1a

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 (323) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +14 -6
  2. package/bundled/qc-helper/docs/features/approval-mode.md +2 -2
  3. package/bundled/qc-helper/docs/features/channels/dingtalk.md +33 -0
  4. package/bundled/qc-helper/docs/features/channels/overview.md +64 -20
  5. package/bundled/qc-helper/docs/features/channels/wecom.md +8 -7
  6. package/bundled/qc-helper/docs/features/code-review.md +88 -44
  7. package/bundled/qc-helper/docs/features/commands.md +6 -6
  8. package/bundled/qc-helper/docs/features/hooks.md +29 -0
  9. package/bundled/qc-helper/docs/features/sandbox.md +2 -0
  10. package/bundled/qc-helper/docs/features/sub-agents.md +21 -0
  11. package/bundled/qc-helper/docs/qwen-serve.md +49 -20
  12. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
  13. package/bundled/review/DESIGN.md +219 -33
  14. package/bundled/review/SKILL.md +429 -382
  15. package/chunks/{MaxSizedBox-6HYJ3ZPJ.js → MaxSizedBox-WOC3YDWA.js} +31 -32
  16. package/chunks/{StandaloneSessionPicker-WS4GXYOG.js → StandaloneSessionPicker-H5HZCAFD.js} +49 -48
  17. package/chunks/{acpAgent-5FWSOZL5.js → acpAgent-55YDJDNM.js} +922 -550
  18. package/chunks/{agent-HOLHB3RT.js → agent-H6VE5W3L.js} +26 -27
  19. package/chunks/{agent-headless-SXL6H56A.js → agent-headless-T4XJOCRU.js} +26 -27
  20. package/chunks/{anthropicContentGenerator-L73TO3DB.js → anthropicContentGenerator-HBRXJSP4.js} +78 -16
  21. package/chunks/{artifact-tool-U7IRTLIV.js → artifact-tool-MIZLXBLF.js} +2 -2
  22. package/chunks/{askUserQuestion-2DLUUZZG.js → askUserQuestion-XMJVPNWM.js} +2 -2
  23. package/chunks/{bridge-BCJQ7BBB.js → bridge-FTB6ZP3R.js} +31 -34
  24. package/chunks/{ca-UJ6HC4H2.js → ca-CODEN7TD.js} +9 -1
  25. package/chunks/channel-worker-group-K7QKH6IG.js +13 -0
  26. package/chunks/channel-worker-manager-CUDPU4CN.js +418 -0
  27. package/chunks/channel-worker-supervisor-4XTO2ZD3.js +20 -0
  28. package/chunks/{chunk-LXNEJD34.js → chunk-2FO5GFKZ.js} +1 -1
  29. package/chunks/{chunk-VA4KQY6V.js → chunk-2JNR4VP2.js} +3 -3
  30. package/chunks/{chunk-L36P3NBD.js → chunk-2W3OOD4W.js} +2 -0
  31. package/chunks/{chunk-7R3CZA3Q.js → chunk-2Z5UX4KI.js} +1 -1
  32. package/chunks/{chunk-CUMMSHH6.js → chunk-3DWIFU7L.js} +1 -1
  33. package/chunks/chunk-3MX7D6QN.js +516 -0
  34. package/chunks/{chunk-SJHDYNHF.js → chunk-4BJVSIS3.js} +3 -3
  35. package/chunks/{chunk-TO6QE22P.js → chunk-5CNYZ7TN.js} +26 -22
  36. package/chunks/{chunk-N3EMS75V.js → chunk-5DEJ4T6C.js} +1333 -1232
  37. package/chunks/chunk-5HBA2Z7V.js +28 -0
  38. package/chunks/{chunk-ZJE7NSL3.js → chunk-5M6IDOMF.js} +34 -97
  39. package/chunks/{chunk-SCGXUJBT.js → chunk-6LI3L22E.js} +3 -3
  40. package/chunks/{chunk-K434OPES.js → chunk-6WPJRYLZ.js} +3 -3
  41. package/chunks/{chunk-YAUFFXDS.js → chunk-7GM2RWCR.js} +12 -11
  42. package/chunks/{chunk-OQ4DRIOA.js → chunk-7HWE2W74.js} +2 -2
  43. package/chunks/{chunk-J4TSQ5EQ.js → chunk-7NFB7LBQ.js} +8 -1
  44. package/chunks/{chunk-MC23XKFE.js → chunk-A2HWMJVO.js} +37 -3
  45. package/chunks/{chunk-3G7CIHVV.js → chunk-ABNYOMDG.js} +4 -4
  46. package/chunks/{chunk-3AHXV67U.js → chunk-AGZLXLBY.js} +1 -1
  47. package/chunks/{chunk-RDJSGHZE.js → chunk-ALGGS7UH.js} +1 -38
  48. package/chunks/{chunk-Q4YQW46J.js → chunk-AMRZVQUY.js} +43 -40
  49. package/chunks/{chunk-W3JHSWRP.js → chunk-AN6C2U46.js} +4 -4
  50. package/chunks/{chunk-GWHYEOV2.js → chunk-ARKANCNX.js} +2 -1
  51. package/chunks/{chunk-5SFOMFG4.js → chunk-AVEOWVOM.js} +36 -2
  52. package/chunks/{chunk-34MW4KTI.js → chunk-BA5JGE5F.js} +2 -2
  53. package/chunks/{chunk-5HOMWMCL.js → chunk-BSJAQUFD.js} +5492 -1336
  54. package/chunks/{chunk-L6P4KPHR.js → chunk-BWJKL5DB.js} +58 -38
  55. package/chunks/{chunk-PVZM22CK.js → chunk-C32JFRGV.js} +5 -5
  56. package/chunks/{chunk-AKIVHSJR.js → chunk-CZIHPO7L.js} +163 -782
  57. package/chunks/chunk-DL7RCO6V.js +493 -0
  58. package/chunks/{chunk-KKNMOEZH.js → chunk-E2UVIFI2.js} +185 -398
  59. package/chunks/{chunk-5VXNZWGF.js → chunk-ENUQSKEY.js} +1 -1
  60. package/chunks/{chunk-PDZ7MBDG.js → chunk-EWILX3BM.js} +27 -6
  61. package/chunks/{chunk-BMGVRZN4.js → chunk-EZWX232B.js} +1 -1
  62. package/chunks/{chunk-4GORAUCN.js → chunk-F333XEAU.js} +1 -1
  63. package/chunks/{chunk-YLV3XXFB.js → chunk-FBU7WRZI.js} +17 -1
  64. package/chunks/chunk-FEOZBUMT.js +77 -0
  65. package/chunks/{chunk-5U27BZ72.js → chunk-FKEGVMPX.js} +269 -83
  66. package/chunks/chunk-FNX3LGAK.js +34 -0
  67. package/chunks/{chunk-LK7KUE55.js → chunk-FSA7ERJ2.js} +1 -1
  68. package/chunks/{chunk-PODM4SZ4.js → chunk-G3BIBPI7.js} +5 -5
  69. package/chunks/{chunk-A3XKDTSH.js → chunk-GA65O2TB.js} +4 -4
  70. package/chunks/{chunk-3BTRNWWD.js → chunk-GOXKNSDZ.js} +1 -64
  71. package/chunks/{channel-worker-supervisor-WSOAAYUO.js → chunk-GXGIM7QP.js} +67 -35
  72. package/chunks/{chunk-6PESIEKJ.js → chunk-GXUWGPYX.js} +68 -6
  73. package/chunks/chunk-GYTKQYDB.js +23 -0
  74. package/chunks/{chunk-GZRTYZ2R.js → chunk-H3XMJV7T.js} +218 -1
  75. package/chunks/{chunk-WQUQVGTF.js → chunk-HGRXW4HQ.js} +467 -106
  76. package/chunks/{chunk-YVEDCAUE.js → chunk-HGT6JR3U.js} +19 -0
  77. package/chunks/{chunk-ECNYL4AA.js → chunk-HUEWOHKV.js} +1 -1
  78. package/chunks/chunk-IDS7MSUP.js +74 -0
  79. package/chunks/{chunk-KHUQZZJ6.js → chunk-IHDRJLLR.js} +382 -36
  80. package/chunks/{chunk-CLFKOZEK.js → chunk-J4SEAF4X.js} +114 -4
  81. package/chunks/{chunk-B5ORX3FG.js → chunk-JGUT3LWZ.js} +6 -1
  82. package/chunks/{chunk-P67PFTUT.js → chunk-KEYEYCHZ.js} +4 -4
  83. package/chunks/{chunk-ORBGV7NJ.js → chunk-KKRTYONM.js} +6 -4
  84. package/chunks/{chunk-7PU4FYLG.js → chunk-KOXFAG6P.js} +4 -18
  85. package/chunks/{chunk-EGYZ275M.js → chunk-KWLVWNF5.js} +55 -7
  86. package/chunks/{chunk-XLA62MYB.js → chunk-KXECVZPD.js} +2 -2
  87. package/chunks/{chunk-IAVB3HM3.js → chunk-L4Y55KIS.js} +33 -1
  88. package/chunks/{chunk-4QLQE5WJ.js → chunk-L5U3ELZX.js} +1 -1
  89. package/chunks/{chunk-4ZVWQHEQ.js → chunk-LQIDP6K5.js} +1 -1
  90. package/chunks/{chunk-DC5Z3DU6.js → chunk-LXLTBIDP.js} +43 -6
  91. package/chunks/chunk-LXXMOYPL.js +22 -0
  92. package/chunks/{chunk-Q6I5QHMH.js → chunk-MFNKBXYH.js} +1 -1
  93. package/chunks/chunk-MR3PXB6E.js +48 -0
  94. package/chunks/{chunk-JZETEN3Z.js → chunk-N45S36AH.js} +3 -3
  95. package/chunks/{chunk-GWLSNBG4.js → chunk-NA3IG6XG.js} +748 -27
  96. package/chunks/{chunk-D5SKC4YG.js → chunk-O3M25JXE.js} +213 -29
  97. package/chunks/{chunk-EAXLGSFP.js → chunk-O6XGHDS5.js} +11 -11
  98. package/chunks/{chunk-WL4L7EZH.js → chunk-OA4JVLSA.js} +27 -1
  99. package/chunks/{chunk-X4NKFGFJ.js → chunk-OJAMDVF5.js} +0 -15
  100. package/chunks/{chunk-BZIFY5TF.js → chunk-OKAIGAYW.js} +3 -3
  101. package/chunks/{chunk-CNEIYWSA.js → chunk-OVIV236K.js} +5 -5
  102. package/chunks/{chunk-3SJSQXNS.js → chunk-PEJWA3QQ.js} +12 -8
  103. package/chunks/{chunk-E2IY465S.js → chunk-PWNOAWXB.js} +59 -12
  104. package/chunks/{chunk-B4G2WOFA.js → chunk-Q5MKHNIR.js} +28 -5
  105. package/chunks/{chunk-MXL5UP4X.js → chunk-Q6TUALBE.js} +1 -1
  106. package/chunks/{chunk-QYMQSECS.js → chunk-QAW7PIHT.js} +2 -2
  107. package/chunks/{chunk-HKMAENAO.js → chunk-QDTGDM2T.js} +14 -9
  108. package/chunks/{chunk-LUODI7WD.js → chunk-RCEEXIOO.js} +6 -4
  109. package/chunks/{chunk-W2UIXQDL.js → chunk-RTV5TUYB.js} +12 -4
  110. package/chunks/chunk-RW7DUKFO.js +91 -0
  111. package/chunks/{chunk-NVYTCB5Z.js → chunk-SA6QVLWI.js} +17325 -16259
  112. package/chunks/chunk-SJSI7PXU.js +59 -0
  113. package/chunks/{chunk-HVY356M2.js → chunk-SMGBWLNU.js} +3 -3
  114. package/chunks/{chunk-CEA3E3JB.js → chunk-SPJQO2CE.js} +2 -2
  115. package/chunks/{chunk-CC2ITGCF.js → chunk-STZQCNN3.js} +49 -6
  116. package/chunks/{chunk-HPDUL5MF.js → chunk-T2ZDAER2.js} +1 -1
  117. package/chunks/{chunk-XUOOWUZS.js → chunk-T3TQ3ACP.js} +1 -1
  118. package/chunks/{chunk-4C5BQ2D2.js → chunk-TIKDHS6V.js} +100 -17
  119. package/chunks/chunk-TV6K2FB4.js +224 -0
  120. package/chunks/{chunk-5XUCZNSY.js → chunk-TYLOFD2U.js} +1 -1
  121. package/chunks/{chunk-D2GFWEXB.js → chunk-UCUUH2JV.js} +6 -6
  122. package/chunks/{chunk-BAPGSC7U.js → chunk-UZP7K33Y.js} +23 -9
  123. package/chunks/{chunk-77XJ3SWN.js → chunk-VDAR6UO2.js} +8 -6
  124. package/chunks/{chunk-XYQSMABS.js → chunk-VKLVGA2D.js} +4 -4
  125. package/chunks/{chunk-JSG7ZSBC.js → chunk-VRR65QYW.js} +251 -3
  126. package/chunks/{chunk-U2NNEY4R.js → chunk-VT5AWJN4.js} +1 -1
  127. package/chunks/{chunk-ZLXQN2QS.js → chunk-WIEO4CWB.js} +1 -1
  128. package/chunks/{chunk-X6TJ3YZV.js → chunk-WKEO3GLZ.js} +160 -60
  129. package/chunks/{chunk-J3JA76CF.js → chunk-WTNZ6DXB.js} +1 -1
  130. package/chunks/{chunk-VWPVHAMO.js → chunk-XIWQ5QST.js} +8 -1
  131. package/chunks/{chunk-TDEXZKMT.js → chunk-Y66VOBRP.js} +2 -2
  132. package/chunks/{chunk-3VAGG5T5.js → chunk-YYBZUIPL.js} +1015 -100
  133. package/chunks/{chunk-CCDMCZPP.js → chunk-YZ3SBNP7.js} +1 -1
  134. package/chunks/{chunk-ATAKVRIF.js → chunk-Z3XA2TNG.js} +7 -7
  135. package/chunks/{chunk-EMDMPBJ4.js → chunk-Z7SVC7PJ.js} +10 -3
  136. package/chunks/{chunk-AURZZYMD.js → chunk-ZIVSSTUG.js} +4 -4
  137. package/chunks/{chunk-UOZWKTQG.js → chunk-ZPAHLFZU.js} +2 -2
  138. package/chunks/{chunk-34Z3U5RQ.js → chunk-ZQIYGQCG.js} +765 -168
  139. package/chunks/{computer-use-HM37RX6A.js → computer-use-NADT7ULB.js} +26 -27
  140. package/chunks/{config-utils-NV2SVGPB.js → config-utils-IQQT3GCI.js} +3 -2
  141. package/chunks/{contextCommand-OF5SFGH2.js → contextCommand-U7NEJYJ7.js} +28 -29
  142. package/chunks/{create-sub-session-INX7TXJI.js → create-sub-session-EAB2U5XW.js} +2 -2
  143. package/chunks/{create-sub-session-KPRT7ECJ.js → create-sub-session-SUN33INC.js} +26 -27
  144. package/chunks/{cron-create-AMBKGZX6.js → cron-create-GMVKSXZT.js} +4 -4
  145. package/chunks/{cron-delete-LRU4OJYG.js → cron-delete-VDZKUAVK.js} +4 -4
  146. package/chunks/{cron-list-WVP2JXER.js → cron-list-UG7C7RAR.js} +4 -4
  147. package/chunks/{daemon-ARHTSTXP.js → daemon-SJXEKP3H.js} +773 -126
  148. package/chunks/daemon-status-provider-WIIYLGZJ.js +74 -0
  149. package/chunks/{de-EBJN3OVN.js → de-NOXPCSYN.js} +9 -1
  150. package/chunks/{dist-XKU3ABM5.js → dist-4WCQEZIN.js} +4 -51
  151. package/chunks/{dist-QYCAEZIT.js → dist-DOPL5LSQ.js} +5 -1
  152. package/chunks/{dist-WKPOYU7O.js → dist-GXJVCOS7.js} +1 -1
  153. package/chunks/{dist-R7LN5AZE.js → dist-PX2ERZ6I.js} +2 -2
  154. package/chunks/{dist-PNVLTKTL.js → dist-V2YVLYOW.js} +215 -33
  155. package/chunks/{dist-VHV4EVHG.js → dist-VYWUKURL.js} +1 -1
  156. package/chunks/{earlyInputCapture-3VTHRC4C.js → earlyInputCapture-6FRM6UMU.js} +27 -28
  157. package/chunks/{edit-VNI4NJ73.js → edit-7GOIQTCZ.js} +27 -28
  158. package/chunks/{en-5A6LA7RK.js → en-JFVULHTB.js} +11 -1
  159. package/chunks/{enter-worktree-IYYBKPZT.js → enter-worktree-476E6WIK.js} +26 -27
  160. package/chunks/{enterPlanMode-GMC5FD5A.js → enterPlanMode-IRJM6W3C.js} +42 -28
  161. package/chunks/{environment-5HSSRMJ7.js → environment-ROMULS2X.js} +30 -30
  162. package/chunks/{errors-HMFCJJ7P.js → errors-OUIWPUDY.js} +28 -29
  163. package/chunks/{exit-worktree-6BHCMP5G.js → exit-worktree-PPSFK753.js} +26 -27
  164. package/chunks/{exitPlanMode-CJW7G74W.js → exitPlanMode-YKQMD4D7.js} +26 -27
  165. package/chunks/{fast-path-FRDMDVHG.js → fast-path-CNK2HHKH.js} +3 -3
  166. package/chunks/{fast-path-settings-5QZE64HR.js → fast-path-settings-DAOVFADC.js} +6 -4
  167. package/chunks/{fr-YXRABLYZ.js → fr-HVFNU42H.js} +9 -1
  168. package/chunks/{gemini-QYSEGHAX.js → gemini-WQNFT6TR.js} +216 -90
  169. package/chunks/{geminiContentGenerator-J7YNZDYP.js → geminiContentGenerator-4QJH2JDP.js} +4 -4
  170. package/chunks/{glob-BRCSGFOT.js → glob-36TVLBWW.js} +28 -28
  171. package/chunks/{grep-EE2DUOSY.js → grep-QTYLNO2M.js} +26 -27
  172. package/chunks/{handleAutoUpdate-5NWTLR67.js → handleAutoUpdate-36FQFODK.js} +30 -31
  173. package/chunks/{i18n-BASPENNQ.js → i18n-JUGYPVSP.js} +27 -28
  174. package/chunks/initializer-OBBJUS25.js +72 -0
  175. package/chunks/{installationInfo-W6V4DT7W.js → installationInfo-MCKTPX64.js} +27 -28
  176. package/chunks/{ja-7VQOANVG.js → ja-PY5AF544.js} +10 -2
  177. package/chunks/{keychain-token-storage-VKUBNCP4.js → keychain-token-storage-AU22CQI6.js} +2 -2
  178. package/chunks/list-VW5QY4VJ.js +75 -0
  179. package/chunks/loadedSettingsAdapter-IELOOXG6.js +69 -0
  180. package/chunks/{loop-wakeup-WX7BLWWP.js → loop-wakeup-QXWZSCYM.js} +5 -5
  181. package/chunks/{ls-ZB2BDP6T.js → ls-2OUTG3IZ.js} +4 -4
  182. package/chunks/{lsp-V5DN4YUJ.js → lsp-4VMNXZW6.js} +2 -2
  183. package/chunks/mcp-Q3EC37ZS.js +69 -0
  184. package/chunks/{monitor-X5Z3H4FY.js → monitor-DCZ27AFR.js} +26 -27
  185. package/chunks/nonInteractiveCli-KXD7PFO4.js +128 -0
  186. package/chunks/{notebook-edit-TRM2QIJK.js → notebook-edit-YU4XF5LI.js} +27 -28
  187. package/chunks/{openaiContentGenerator-AAYONPMF.js → openaiContentGenerator-KL5WER2D.js} +13 -13
  188. package/chunks/{pidfile-D4I4FTVA.js → pidfile-WBOD7EJV.js} +27 -28
  189. package/chunks/processUtils-AOV4R34M.js +29 -0
  190. package/chunks/{pt-2C6YCSHL.js → pt-A3PRQXMU.js} +9 -1
  191. package/chunks/{qwenContentGenerator-K3HZ2H76.js → qwenContentGenerator-YIGBHYE3.js} +28 -29
  192. package/chunks/{qwenOAuth2-PJQ27GSO.js → qwenOAuth2-LEYOU7RU.js} +5 -5
  193. package/chunks/{read-file-7SZSIZOL.js → read-file-WVL4Y76X.js} +9 -9
  194. package/chunks/{read-mcp-resource-SM5DA4RG.js → read-mcp-resource-JUFHCKSC.js} +2 -2
  195. package/chunks/{record-artifact-4XKZX3UW.js → record-artifact-DWSMBXYY.js} +2 -2
  196. package/chunks/{ripGrep-YNPFVCZP.js → ripGrep-6GSWJERP.js} +26 -27
  197. package/chunks/{ru-6BBHVZZV.js → ru-IBCWUTOC.js} +9 -1
  198. package/chunks/{run-qwen-serve-DMWV5N6L.js → run-qwen-serve-QYUQMEDT.js} +1233 -371
  199. package/chunks/{runtime-57WWRVHN.js → runtime-K2YZCNB3.js} +42 -38
  200. package/chunks/{scheduler-YBLGWSIL.js → scheduler-EQCSN7QV.js} +26 -27
  201. package/chunks/{send-message-F36YD6KQ.js → send-message-JZ752NWD.js} +3 -3
  202. package/chunks/{serve-R63NK3CV.js → serve-DX5UGZD4.js} +36 -35
  203. package/chunks/{server-Z22GCAXP.js → server-T6HJH3DR.js} +5869 -1398
  204. package/chunks/{session-HKAAI7BN.js → session-SNU6ACY6.js} +299 -100
  205. package/chunks/{settings-3EYN66GK.js → settings-AKHZZNEL.js} +34 -33
  206. package/chunks/{shell-6YXINTWJ.js → shell-EY74IEZK.js} +28 -27
  207. package/chunks/{skill-OO57P4X6.js → skill-DPU62O3H.js} +11 -11
  208. package/chunks/{spawnChannel-JD7G4VU6.js → spawnChannel-RQZRWJ2V.js} +28 -30
  209. package/chunks/{src-G5UPLZSZ.js → src-7FITDSVC.js} +164 -52
  210. package/chunks/{standalone-update-OB7F4JPZ.js → standalone-update-XO3RK6DO.js} +28 -29
  211. package/chunks/{startInteractiveUI-73EGLIIH.js → startInteractiveUI-DVWZRHYQ.js} +728 -382
  212. package/chunks/{syntheticOutput-34H7LGA7.js → syntheticOutput-LELY6HAI.js} +3 -3
  213. package/chunks/{task-create-FRGOEIKY.js → task-create-QY3BIMNM.js} +8 -7
  214. package/chunks/{task-list-OW766BXZ.js → task-list-D2U47WBJ.js} +6 -5
  215. package/chunks/{task-stop-SIR5SNBN.js → task-stop-N6E5IYLH.js} +2 -2
  216. package/chunks/{task-update-YRA532MT.js → task-update-HJCQILLB.js} +8 -7
  217. package/chunks/{team-create-PECAAPXK.js → team-create-FOSRT62K.js} +26 -27
  218. package/chunks/{team-delete-6OSECUZC.js → team-delete-RCWYDRF4.js} +6 -5
  219. package/chunks/{team-plan-approval-L6F434RY.js → team-plan-approval-6VUDV27J.js} +26 -27
  220. package/chunks/{theme-manager-ZG4RY6GU.js → theme-manager-6UT6IO5T.js} +27 -28
  221. package/chunks/{todoWrite-YDMFEV4G.js → todoWrite-FKCGATPJ.js} +4 -4
  222. package/chunks/{tool-search-THVIWAPB.js → tool-search-ASSFMMN5.js} +10 -10
  223. package/chunks/{total-session-admission-JOKNRIIA.js → total-session-admission-YYWUO23H.js} +32 -35
  224. package/chunks/tree-sitter-YJVE2ZUK.js +2980 -0
  225. package/chunks/{trustedFolders-EOGT3UVS.js → trustedFolders-4BWV2IBK.js} +29 -29
  226. package/chunks/types-ML3TRJQ5.js +16 -0
  227. package/chunks/update-relaunch-74DLGH73.js +87 -0
  228. package/chunks/{updateCheck-2KYEYVSB.js → updateCheck-CRFCGFO5.js} +31 -30
  229. package/chunks/{validateNonInterActiveAuth-EN6ZQSR2.js → validateNonInterActiveAuth-BTTEPBGQ.js} +76 -73
  230. package/chunks/{version-3UEA6ZIR.js → version-Y5JE5Q63.js} +1 -1
  231. package/chunks/{web-fetch-PAAEQKBW.js → web-fetch-CFCWTCAP.js} +5 -6
  232. package/chunks/{workflow-QCCCMYP3.js → workflow-6WC7VPQN.js} +27 -28
  233. package/chunks/workspace-providers-status-RVG2C5ZS.js +72 -0
  234. package/chunks/workspace-registration-store-SLEU3D3X.js +27 -0
  235. package/chunks/{workspace-registry-24QFLQYH.js → workspace-registry-QMWGVOTF.js} +32 -35
  236. package/chunks/workspace-service-G572JSEU.js +84 -0
  237. package/chunks/workspace-skills-status-VSSMSMNK.js +71 -0
  238. package/chunks/{write-file-I3MUDRIE.js → write-file-5XVDRORP.js} +27 -28
  239. package/chunks/{zh-RQE7I22T.js → zh-PAUNIMHQ.js} +12 -2
  240. package/chunks/{zh-TW-TBPQGHKH.js → zh-TW-GNEUIUFF.js} +12 -2
  241. package/cli-entry.js +92 -8
  242. package/cli.js +11 -11
  243. package/locales/ca.js +16 -0
  244. package/locales/de.js +16 -0
  245. package/locales/en.js +19 -0
  246. package/locales/fr.js +16 -0
  247. package/locales/ja.js +17 -1
  248. package/locales/pt.js +16 -0
  249. package/locales/ru.js +16 -0
  250. package/locales/zh-TW.js +20 -1
  251. package/locales/zh.js +20 -1
  252. package/package.json +3 -3
  253. package/web-shell/assets/{arc-C15hqnJe.js → arc-vx1tRwnX.js} +1 -1
  254. package/web-shell/assets/{architectureDiagram-3BPJPVTR-B-At37J_.js → architectureDiagram-3BPJPVTR-DBi6iUA1.js} +1 -1
  255. package/web-shell/assets/{blockDiagram-GPEHLZMM-B51wjcU7.js → blockDiagram-GPEHLZMM-Ga9JJ4Ak.js} +1 -1
  256. package/web-shell/assets/{c4Diagram-AAUBKEIU-xBK7BAwN.js → c4Diagram-AAUBKEIU-D8Vi5FYw.js} +1 -1
  257. package/web-shell/assets/channel-B29zQDTL.js +1 -0
  258. package/web-shell/assets/{chunk-2J33WTMH-xKmLg7Yr.js → chunk-2J33WTMH-CSV6yQpU.js} +1 -1
  259. package/web-shell/assets/{chunk-4BX2VUAB-BfkdKZCM.js → chunk-4BX2VUAB-toYlppdI.js} +1 -1
  260. package/web-shell/assets/{chunk-55IACEB6-DT713sZf.js → chunk-55IACEB6-DbjzuyAr.js} +1 -1
  261. package/web-shell/assets/{chunk-727SXJPM-CYEeAamv.js → chunk-727SXJPM-IkkSjSkk.js} +1 -1
  262. package/web-shell/assets/{chunk-AQP2D5EJ-DBN-5CFd.js → chunk-AQP2D5EJ-D5wUL6Zm.js} +1 -1
  263. package/web-shell/assets/{chunk-FMBD7UC4-CGZKk4PH.js → chunk-FMBD7UC4-C3o2DXG0.js} +1 -1
  264. package/web-shell/assets/{chunk-ND2GUHAM-qQbC2O-y.js → chunk-ND2GUHAM-CutIi14T.js} +1 -1
  265. package/web-shell/assets/{chunk-QZHKN3VN-B3zeXwsX.js → chunk-QZHKN3VN-DZ0NRHH-.js} +1 -1
  266. package/web-shell/assets/classDiagram-4FO5ZUOK-BNGI2SvC.js +1 -0
  267. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BNGI2SvC.js +1 -0
  268. package/web-shell/assets/{cose-bilkent-S5V4N54A-BKsl1Wvy.js → cose-bilkent-S5V4N54A-B3Dl88UJ.js} +1 -1
  269. package/web-shell/assets/{dagre-BM42HDAG-CuuuLiBK.js → dagre-BM42HDAG-DfTxfF6-.js} +1 -1
  270. package/web-shell/assets/{diagram-2AECGRRQ-CG4_eKiV.js → diagram-2AECGRRQ-CJyH98yO.js} +1 -1
  271. package/web-shell/assets/{diagram-5GNKFQAL-DSFTmZB1.js → diagram-5GNKFQAL-EbOiJNmW.js} +1 -1
  272. package/web-shell/assets/{diagram-KO2AKTUF-BxwlEHn8.js → diagram-KO2AKTUF-AYNqpqqA.js} +1 -1
  273. package/web-shell/assets/{diagram-LMA3HP47-BUAg-jMG.js → diagram-LMA3HP47-BY5VPa4H.js} +1 -1
  274. package/web-shell/assets/{diagram-OG6HWLK6-BFM2jlO5.js → diagram-OG6HWLK6-BhMYAKlk.js} +1 -1
  275. package/web-shell/assets/{erDiagram-TEJ5UH35-CerbFPa2.js → erDiagram-TEJ5UH35-Bp8S_F9l.js} +1 -1
  276. package/web-shell/assets/{flowDiagram-I6XJVG4X-BNeZz5Zz.js → flowDiagram-I6XJVG4X-az3TE9PU.js} +1 -1
  277. package/web-shell/assets/{ganttDiagram-6RSMTGT7-CTOogLaM.js → ganttDiagram-6RSMTGT7-CfkAEpCe.js} +3 -3
  278. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-yxSFkXPj.js → gitGraphDiagram-PVQCEYII-D1QmjMCy.js} +1 -1
  279. package/web-shell/assets/index-C8sDwQUv.js +1130 -0
  280. package/web-shell/assets/index-CaBoc5bb.js +3 -0
  281. package/web-shell/assets/index-Dpg5Wymg.css +5 -0
  282. package/web-shell/assets/{infoDiagram-5YYISTIA-DYdAUevm.js → infoDiagram-5YYISTIA-D3ompLrG.js} +1 -1
  283. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-CNuijZ90.js → ishikawaDiagram-YF4QCWOH-D3MRWp9I.js} +1 -1
  284. package/web-shell/assets/{journeyDiagram-JHISSGLW-BTyiuonf.js → journeyDiagram-JHISSGLW-DVkKCa44.js} +1 -1
  285. package/web-shell/assets/{kanban-definition-UN3LZRKU-DPJo0Uow.js → kanban-definition-UN3LZRKU-BLif81wF.js} +1 -1
  286. package/web-shell/assets/{linear-C8wKCbIC.js → linear-BDU96EGS.js} +1 -1
  287. package/web-shell/assets/{mermaid.core-BV5o7nW5.js → mermaid.core-B-CwC26B.js} +5 -5
  288. package/web-shell/assets/{mindmap-definition-RKZ34NQL-BtLcBmSt.js → mindmap-definition-RKZ34NQL-CS1WOJ4G.js} +1 -1
  289. package/web-shell/assets/{pieDiagram-4H26LBE5-C22J7A9Q.js → pieDiagram-4H26LBE5-BzgtNXVP.js} +1 -1
  290. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DSL10wiL.js → quadrantDiagram-W4KKPZXB-BRfGC8MA.js} +1 -1
  291. package/web-shell/assets/{requirementDiagram-4Y6WPE33-feqh0UpX.js → requirementDiagram-4Y6WPE33-CPBZkC7g.js} +1 -1
  292. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-Z4OVaWaZ.js → sankeyDiagram-5OEKKPKP-nqNvinIk.js} +1 -1
  293. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DIluIcb1.js → sequenceDiagram-3UESZ5HK-CM_Wdjh3.js} +1 -1
  294. package/web-shell/assets/{stateDiagram-AJRCARHV-hlhnuoYH.js → stateDiagram-AJRCARHV-L0y-48VE.js} +1 -1
  295. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BX1DdF8s.js +1 -0
  296. package/web-shell/assets/{timeline-definition-PNZ67QCA-Dqf_CqgL.js → timeline-definition-PNZ67QCA-B_n5rb3A.js} +1 -1
  297. package/web-shell/assets/{vennDiagram-CIIHVFJN-DD2QhaTX.js → vennDiagram-CIIHVFJN-C9NmLV5e.js} +1 -1
  298. package/web-shell/assets/{wardley-L42UT6IY-B2uI85U_.js → wardley-L42UT6IY-CrefK9gt.js} +1 -1
  299. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-U1aJX71g.js → wardleyDiagram-YWT4CUSO-BUccf-bC.js} +1 -1
  300. package/web-shell/assets/{xychartDiagram-2RQKCTM6-C0ODHUee.js → xychartDiagram-2RQKCTM6-DM6ef92l.js} +1 -1
  301. package/web-shell/index.html +2 -2
  302. package/chunks/chunk-524RQP4Q.js +0 -305
  303. package/chunks/chunk-CARU2RR2.js +0 -24
  304. package/chunks/chunk-CU3L64TP.js +0 -93
  305. package/chunks/chunk-OCPBI7J5.js +0 -18
  306. package/chunks/chunk-TEGEBB2I.js +0 -122
  307. package/chunks/chunk-VTU57BWZ.js +0 -30
  308. package/chunks/daemon-status-provider-B2UTZUJ2.js +0 -76
  309. package/chunks/initializer-UTQ7FB7G.js +0 -71
  310. package/chunks/list-DEICDL65.js +0 -74
  311. package/chunks/loadedSettingsAdapter-NOWEGDYJ.js +0 -68
  312. package/chunks/mcp-L5JXEEIA.js +0 -68
  313. package/chunks/nonInteractiveCli-LS2K4X6A.js +0 -124
  314. package/chunks/types-JNKGKUJT.js +0 -12
  315. package/chunks/workspace-providers-status-4KMGETOJ.js +0 -71
  316. package/chunks/workspace-service-RVLBMSMZ.js +0 -80
  317. package/chunks/workspace-skills-status-DS4ZVFTO.js +0 -70
  318. package/web-shell/assets/channel-CLiQD50f.js +0 -1
  319. package/web-shell/assets/classDiagram-4FO5ZUOK-D3sYqow5.js +0 -1
  320. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-D3sYqow5.js +0 -1
  321. package/web-shell/assets/index-D5IWFVk1.css +0 -5
  322. package/web-shell/assets/index-KFJRDhX7.js +0 -783
  323. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BhQMwgpl.js +0 -1
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  expandHomeDir
5
- } from "./chunk-J4TSQ5EQ.js";
5
+ } from "./chunk-7NFB7LBQ.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -9,19 +9,19 @@ import {
9
9
  import {
10
10
  DEFAULT_COMPACTED_REPLAY_MAX_BYTES
11
11
  } from "./chunk-COH43MRJ.js";
12
- import {
13
- loadSettings
14
- } from "./chunk-4C5BQ2D2.js";
15
12
  import {
16
13
  normalizeServeChannelSelection
17
14
  } from "./chunk-TJTKSVIV.js";
15
+ import {
16
+ loadSettings
17
+ } from "./chunk-TIKDHS6V.js";
18
18
  import {
19
19
  writeStderrLine
20
20
  } from "./chunk-YUZI3WAC.js";
21
21
  import {
22
22
  MCP_BUDGET_WARN_FRACTION,
23
23
  parsePositiveIntegerEnv
24
- } from "./chunk-NVYTCB5Z.js";
24
+ } from "./chunk-SA6QVLWI.js";
25
25
  import {
26
26
  openBrowserSecurely,
27
27
  shouldLaunchBrowser
@@ -297,7 +297,7 @@ var serveCommand = {
297
297
  process.exit(1);
298
298
  }
299
299
  }
300
- const { runQwenServe } = await import("./run-qwen-serve-DMWV5N6L.js");
300
+ const { runQwenServe } = await import("./run-qwen-serve-QYUQMEDT.js");
301
301
  try {
302
302
  const handle = await runQwenServe({
303
303
  port: argv.port,
@@ -2,20 +2,20 @@
2
2
  "use strict";
3
3
  import {
4
4
  mapSkillConfigToStatus
5
- } from "./chunk-L36P3NBD.js";
5
+ } from "./chunk-2W3OOD4W.js";
6
6
  import {
7
7
  STATUS_SCHEMA_VERSION
8
- } from "./chunk-VWPVHAMO.js";
8
+ } from "./chunk-XIWQ5QST.js";
9
9
  import {
10
10
  loadSettings
11
- } from "./chunk-4C5BQ2D2.js";
11
+ } from "./chunk-TIKDHS6V.js";
12
12
  import {
13
13
  writeStderrLine
14
14
  } from "./chunk-YUZI3WAC.js";
15
15
  import {
16
16
  SkillManager,
17
17
  isSafeModeEnv
18
- } from "./chunk-NVYTCB5Z.js";
18
+ } from "./chunk-SA6QVLWI.js";
19
19
  import {
20
20
  init_esbuild_shims
21
21
  } from "./chunk-5O2XNYP6.js";
@@ -221,79 +221,16 @@ var V1_INDICATOR_KEYS = [
221
221
  "disableCacheControl"
222
222
  ];
223
223
 
224
- // packages/cli/src/config/storage-paths-lite.ts
225
- init_esbuild_shims();
226
- import * as os from "node:os";
227
- import * as path from "node:path";
228
- var SETTINGS_DIRECTORY_NAME = ".qwen";
229
- function resolveConfigPathLite(dir, cwd) {
230
- let resolved = dir;
231
- if (resolved === "~" || resolved.startsWith("~/") || resolved.startsWith("~\\")) {
232
- const relativeSegments = resolved === "~" ? [] : resolved.slice(2).split(/[/\\]+/).filter(Boolean);
233
- resolved = path.join(os.homedir(), ...relativeSegments);
234
- }
235
- if (!path.isAbsolute(resolved)) {
236
- resolved = path.resolve(cwd || process.cwd(), resolved);
237
- }
238
- return resolved;
239
- }
240
- __name(resolveConfigPathLite, "resolveConfigPathLite");
241
- function getGlobalQwenDirLite() {
242
- const envDir = process.env["QWEN_HOME"];
243
- if (envDir) {
244
- return resolveConfigPathLite(envDir);
245
- }
246
- const homeDir = os.homedir();
247
- if (!homeDir) {
248
- return path.join(os.tmpdir(), SETTINGS_DIRECTORY_NAME);
249
- }
250
- return path.join(homeDir, SETTINGS_DIRECTORY_NAME);
251
- }
252
- __name(getGlobalQwenDirLite, "getGlobalQwenDirLite");
253
- function getSystemSettingsPath() {
254
- if (process.env["QWEN_CODE_SYSTEM_SETTINGS_PATH"]) {
255
- return process.env["QWEN_CODE_SYSTEM_SETTINGS_PATH"];
256
- }
257
- if (os.platform() === "darwin") {
258
- return "/Library/Application Support/QwenCode/settings.json";
259
- }
260
- if (os.platform() === "win32") {
261
- return "C:\\ProgramData\\qwen-code\\settings.json";
262
- }
263
- return "/etc/qwen-code/settings.json";
264
- }
265
- __name(getSystemSettingsPath, "getSystemSettingsPath");
266
- function getSystemDefaultsPath() {
267
- if (process.env["QWEN_CODE_SYSTEM_DEFAULTS_PATH"]) {
268
- return process.env["QWEN_CODE_SYSTEM_DEFAULTS_PATH"];
269
- }
270
- return path.join(
271
- path.dirname(getSystemSettingsPath()),
272
- "system-defaults.json"
273
- );
274
- }
275
- __name(getSystemDefaultsPath, "getSystemDefaultsPath");
276
-
277
224
  export {
278
225
  resolveEnvVarsInObject,
279
226
  V1_TO_V2_MIGRATION_MAP,
280
227
  V2_CONTAINER_KEYS,
281
228
  V1_TO_V2_PRESERVE_DISABLE_MAP,
282
229
  CONSOLIDATED_DISABLE_KEYS,
283
- V1_INDICATOR_KEYS,
284
- SETTINGS_DIRECTORY_NAME,
285
- resolveConfigPathLite,
286
- getGlobalQwenDirLite,
287
- getSystemSettingsPath,
288
- getSystemDefaultsPath
230
+ V1_INDICATOR_KEYS
289
231
  };
290
232
  /**
291
233
  * @license
292
234
  * Copyright 2025 Google LLC
293
235
  * SPDX-License-Identifier: Apache-2.0
294
236
  */
295
- /**
296
- * @license
297
- * Copyright 2025 Qwen Team
298
- * SPDX-License-Identifier: Apache-2.0
299
- */
@@ -2,28 +2,33 @@
2
2
  "use strict";
3
3
  import {
4
4
  CHANNEL_DAEMON_WORKER_SENTINEL,
5
- CHANNEL_WEBHOOK_TASK_IPC_TIMEOUT_MS,
6
5
  CHANNEL_WORKER_HEARTBEAT_INTERVAL_MS,
7
- ChannelWebhookEnqueueError,
8
6
  QWEN_DAEMON_TOKEN_ENV,
9
7
  QWEN_DAEMON_URL_ENV,
10
8
  QWEN_DAEMON_WORKSPACE_ENV,
11
- QWEN_SERVER_TOKEN_ENV,
12
- createChannelWebhookTaskMessage,
13
- isChannelWebhookEnqueueErrorCode,
14
- isChannelWebhookTaskResultMessage
15
- } from "./chunk-X4NKFGFJ.js";
9
+ QWEN_SERVER_TOKEN_ENV
10
+ } from "./chunk-GYTKQYDB.js";
16
11
  import {
17
12
  channelSelectionNames
18
13
  } from "./chunk-TJTKSVIV.js";
19
14
  import {
20
15
  redactLogCredentials
21
16
  } from "./chunk-M5GB774H.js";
17
+ import {
18
+ CHANNEL_WORKER_KILL_GRACE_MS,
19
+ CHANNEL_WORKER_STARTUP_TIMEOUT_MS,
20
+ CHANNEL_WORKER_STOP_GRACE_MS
21
+ } from "./chunk-5HBA2Z7V.js";
22
+ import {
23
+ CHANNEL_WEBHOOK_TASK_IPC_TIMEOUT_MS,
24
+ ChannelWebhookEnqueueError,
25
+ createChannelWebhookTaskMessage,
26
+ isChannelWebhookEnqueueErrorCode,
27
+ isChannelWebhookTaskResultMessage
28
+ } from "./chunk-OJAMDVF5.js";
22
29
  import {
23
30
  sanitizeLogText
24
- } from "./chunk-34Z3U5RQ.js";
25
- import "./chunk-UDXSXLER.js";
26
- import "./chunk-H6XPXXMH.js";
31
+ } from "./chunk-ZQIYGQCG.js";
27
32
  import {
28
33
  init_esbuild_shims
29
34
  } from "./chunk-5O2XNYP6.js";
@@ -35,9 +40,7 @@ import {
35
40
  init_esbuild_shims();
36
41
  import { fork } from "node:child_process";
37
42
  import { randomUUID } from "node:crypto";
38
- var DEFAULT_CHANNEL_WORKER_STARTUP_TIMEOUT_MS = 3e4;
39
43
  var DEFAULT_CHANNEL_WORKER_HEARTBEAT_TIMEOUT_MS = 45e3;
40
- var CHANNEL_WORKER_STOP_GRACE_MS = 1e4;
41
44
  var MAX_WORKER_LOG_LINE_LENGTH = 4096;
42
45
  var MAX_WORKER_LOG_BUFFER_LENGTH = 64 * 1024;
43
46
  var MAX_WORKER_LOG_DISCARDED_REMAINDER_LENGTH = MAX_WORKER_LOG_BUFFER_LENGTH;
@@ -47,6 +50,15 @@ var ANSI_CSI_SEQUENCE_RE = new RegExp(
47
50
  );
48
51
  var WORKER_LOG_INVISIBLE_RE = new RegExp("[\\p{Cf}\\u2028\\u2029]|\\p{Variation_Selector}", "gu");
49
52
  var WORKER_LOG_CONTROL_RE = /[\x00-\x08\x0a-\x1f\x7f]/g;
53
+ var ChannelWorkerStopError = class extends Error {
54
+ static {
55
+ __name(this, "ChannelWorkerStopError");
56
+ }
57
+ constructor(message = "Channel worker did not exit after SIGKILL.") {
58
+ super(message);
59
+ this.name = "ChannelWorkerStopError";
60
+ }
61
+ };
50
62
  var DEFAULT_RESTART_POLICY = {
51
63
  maxRestarts: 3,
52
64
  windowMs: 5 * 6e4,
@@ -118,15 +130,17 @@ __name(notifyLog, "notifyLog");
118
130
  function waitForExit(child, timeoutMs) {
119
131
  return new Promise((resolve) => {
120
132
  let settled = false;
133
+ const onExit = /* @__PURE__ */ __name(() => done(true), "onExit");
121
134
  const done = /* @__PURE__ */ __name((exited) => {
122
135
  if (settled) return;
123
136
  settled = true;
124
- if (timer) clearTimeout(timer);
137
+ clearTimeout(timer);
138
+ child.removeListener("exit", onExit);
125
139
  resolve(exited);
126
140
  }, "done");
127
141
  const timer = setTimeout(() => done(false), timeoutMs);
128
142
  timer.unref();
129
- child.once("exit", () => done(true));
143
+ child.once("exit", onExit);
130
144
  });
131
145
  }
132
146
  __name(waitForExit, "waitForExit");
@@ -135,7 +149,7 @@ function hasObservedExit(snapshot) {
135
149
  }
136
150
  __name(hasObservedExit, "hasObservedExit");
137
151
  function createWorkerEnv(opts) {
138
- const env = { ...process.env };
152
+ const env = { ...opts.baseEnv ?? process.env };
139
153
  env["QWEN_CODE_NO_RELAUNCH"] = "true";
140
154
  env[CHANNEL_DAEMON_WORKER_SENTINEL] = randomUUID();
141
155
  env[QWEN_DAEMON_URL_ENV] = opts.daemonUrl;
@@ -428,7 +442,8 @@ function createChannelWorkerSupervisor(opts) {
428
442
  const env = createWorkerEnv({
429
443
  daemonUrl: opts.daemonUrl,
430
444
  workspace: opts.workspace,
431
- ...opts.daemonToken ? { daemonToken: opts.daemonToken } : {}
445
+ ...opts.daemonToken ? { daemonToken: opts.daemonToken } : {},
446
+ ...opts.workerBaseEnv ? { baseEnv: opts.workerBaseEnv } : {}
432
447
  });
433
448
  const redaction = workerLogRedactionOptions(opts.daemonToken, env);
434
449
  const requestedChannels = requestedChannelNames(opts.selection);
@@ -507,18 +522,27 @@ function createChannelWorkerSupervisor(opts) {
507
522
  cleanupLaunch();
508
523
  if (terminatingBeforeReady) return;
509
524
  terminatingBeforeReady = true;
510
- const exited = waitForExit(startedChild, 2e3);
525
+ const exited = waitForExit(startedChild, CHANNEL_WORKER_KILL_GRACE_MS);
511
526
  startedChild.kill("SIGTERM");
512
527
  void exited.then(async (didExit) => {
513
528
  if (!didExit && child === startedChild && !exitObserved) {
514
- const killed = waitForExit(startedChild, 2e3);
529
+ const killed = waitForExit(
530
+ startedChild,
531
+ CHANNEL_WORKER_KILL_GRACE_MS
532
+ );
515
533
  startedChild.kill("SIGKILL");
516
534
  if (!await killed && child === startedChild && !exitObserved) {
517
- child = void 0;
518
- if (kind === "restart" && !stopping) {
519
- scheduleRestart();
520
- notifyExit(opts.onExit, snapshotCopy());
521
- }
535
+ stopping = true;
536
+ notifyLog(opts.onLog, {
537
+ stream: "stderr",
538
+ line: "Channel worker did not exit after SIGKILL; automatic restart is disabled."
539
+ });
540
+ snapshot = {
541
+ ...snapshot,
542
+ state: "failed",
543
+ error: snapshot.error ?? "Channel worker did not exit after SIGKILL."
544
+ };
545
+ notifyExit(opts.onExit, snapshotCopy());
522
546
  }
523
547
  }
524
548
  });
@@ -628,7 +652,7 @@ function createChannelWorkerSupervisor(opts) {
628
652
  }
629
653
  __name(settleError, "settleError");
630
654
  startupTimer = setTimeout(() => {
631
- const timeoutMs = opts.startupTimeoutMs ?? DEFAULT_CHANNEL_WORKER_STARTUP_TIMEOUT_MS;
655
+ const timeoutMs = opts.startupTimeoutMs ?? CHANNEL_WORKER_STARTUP_TIMEOUT_MS;
632
656
  const error = `Channel worker did not become ready within ${timeoutMs}ms.`;
633
657
  snapshot = {
634
658
  ...snapshot,
@@ -639,7 +663,7 @@ function createChannelWorkerSupervisor(opts) {
639
663
  if (child === startedChild) {
640
664
  terminateBeforeReady();
641
665
  }
642
- }, opts.startupTimeoutMs ?? DEFAULT_CHANNEL_WORKER_STARTUP_TIMEOUT_MS);
666
+ }, opts.startupTimeoutMs ?? CHANNEL_WORKER_STARTUP_TIMEOUT_MS);
643
667
  startupTimer.unref();
644
668
  startedChild.on("message", handleMessage);
645
669
  startedChild.once("exit", settleExit);
@@ -648,7 +672,15 @@ function createChannelWorkerSupervisor(opts) {
648
672
  }, "launch");
649
673
  const supervisor = {
650
674
  async start() {
651
- if (disposed || child) return;
675
+ if (disposed) return;
676
+ if (child) {
677
+ if (stopping) {
678
+ throw new ChannelWorkerStopError(
679
+ "Channel worker stop is not yet confirmed."
680
+ );
681
+ }
682
+ return;
683
+ }
652
684
  stopping = false;
653
685
  clearRestartTimer();
654
686
  restartAttemptTimes = [];
@@ -666,22 +698,20 @@ function createChannelWorkerSupervisor(opts) {
666
698
  snapshot = { ...snapshot, state: "stopped" };
667
699
  return;
668
700
  }
669
- const exited = waitForExit(child, CHANNEL_WORKER_STOP_GRACE_MS);
701
+ const stoppingChild = child;
702
+ const exited = waitForExit(stoppingChild, CHANNEL_WORKER_STOP_GRACE_MS);
670
703
  stopping = true;
671
- child.kill("SIGTERM");
672
- if (!await exited) {
673
- const killed = waitForExit(child, 2e3);
674
- child.kill("SIGKILL");
704
+ stoppingChild.kill("SIGTERM");
705
+ if (!await exited && child === stoppingChild) {
706
+ const killed = waitForExit(stoppingChild, CHANNEL_WORKER_KILL_GRACE_MS);
707
+ stoppingChild.kill("SIGKILL");
675
708
  if (!await killed) {
676
- child = void 0;
677
- stopping = false;
678
709
  snapshot = {
679
710
  ...snapshot,
680
711
  state: "failed",
681
- signal: "SIGKILL",
682
712
  error: "Channel worker did not exit after SIGKILL."
683
713
  };
684
- return;
714
+ throw new ChannelWorkerStopError();
685
715
  }
686
716
  }
687
717
  child = void 0;
@@ -784,6 +814,8 @@ function createChannelWorkerSupervisor(opts) {
784
814
  return supervisor;
785
815
  }
786
816
  __name(createChannelWorkerSupervisor, "createChannelWorkerSupervisor");
817
+
787
818
  export {
819
+ ChannelWorkerStopError,
788
820
  createChannelWorkerSupervisor
789
821
  };
@@ -2,13 +2,13 @@
2
2
  "use strict";
3
3
  import {
4
4
  escapeAnsiCtrlCodes
5
- } from "./chunk-Q6I5QHMH.js";
5
+ } from "./chunk-MFNKBXYH.js";
6
6
  import {
7
7
  wrapper_default
8
8
  } from "./chunk-TYAMGABM.js";
9
9
  import {
10
10
  createDebugLogger
11
- } from "./chunk-J4TSQ5EQ.js";
11
+ } from "./chunk-7NFB7LBQ.js";
12
12
  import {
13
13
  init_esbuild_shims
14
14
  } from "./chunk-5O2XNYP6.js";
@@ -50,6 +50,10 @@ function openVoiceStream(config, callbacks = {}, deps = {}) {
50
50
  headers: options.headers
51
51
  }));
52
52
  return new Promise((resolve, reject) => {
53
+ if (deps.abortSignal?.aborted) {
54
+ reject(new Error("Voice stream opening was aborted."));
55
+ return;
56
+ }
53
57
  const streamUrl = deriveStreamUrl(config.baseUrl);
54
58
  const ws = createWebSocket(streamUrl, {
55
59
  headers: config.apiKey ? { Authorization: `Bearer ${config.apiKey}` } : {}
@@ -66,6 +70,12 @@ function openVoiceStream(config, callbacks = {}, deps = {}) {
66
70
  let terminalError = null;
67
71
  let finishedTranscript = null;
68
72
  let backpressureWarned = false;
73
+ let onAbort;
74
+ const removeAbortListener = /* @__PURE__ */ __name(() => {
75
+ if (!onAbort) return;
76
+ deps.abortSignal?.removeEventListener("abort", onAbort);
77
+ onAbort = void 0;
78
+ }, "removeAbortListener");
69
79
  const clearFinishTimer = /* @__PURE__ */ __name(() => {
70
80
  if (finishTimer) {
71
81
  clearTimeout(finishTimer);
@@ -81,6 +91,7 @@ function openVoiceStream(config, callbacks = {}, deps = {}) {
81
91
  const fail = /* @__PURE__ */ __name((error) => {
82
92
  if (settled) return;
83
93
  settled = true;
94
+ removeAbortListener();
84
95
  const normalized = error instanceof Error ? error : new Error(String(error));
85
96
  clearConnectTimer();
86
97
  clearFinishTimer();
@@ -101,6 +112,14 @@ function openVoiceStream(config, callbacks = {}, deps = {}) {
101
112
  }
102
113
  }
103
114
  }, "fail");
115
+ if (deps.abortSignal) {
116
+ onAbort = /* @__PURE__ */ __name(() => fail(new Error("Voice stream opening was aborted.")), "onAbort");
117
+ if (deps.abortSignal.aborted) {
118
+ onAbort();
119
+ return;
120
+ }
121
+ deps.abortSignal.addEventListener("abort", onAbort, { once: true });
122
+ }
104
123
  connectTimer = setTimeout(() => {
105
124
  if (!started) fail(new Error("Voice stream connection timed out."));
106
125
  }, CONNECT_TIMEOUT_MS);
@@ -208,6 +227,7 @@ function openVoiceStream(config, callbacks = {}, deps = {}) {
208
227
  }
209
228
  finishedTranscript = committed.trim();
210
229
  settled = true;
230
+ removeAbortListener();
211
231
  clearConnectTimer();
212
232
  clearFinishTimer();
213
233
  try {
@@ -234,6 +254,7 @@ function openVoiceStream(config, callbacks = {}, deps = {}) {
234
254
  fail(error instanceof Error ? error : new Error(String(error)));
235
255
  });
236
256
  ws.on("close", () => {
257
+ removeAbortListener();
237
258
  clearConnectTimer();
238
259
  clearFinishTimer();
239
260
  if (settled) return;
@@ -292,6 +313,10 @@ function openQwenAsrRealtimeStream(config, callbacks = {}, deps = {}) {
292
313
  headers: options.headers
293
314
  }));
294
315
  return new Promise((resolve, reject) => {
316
+ if (deps.abortSignal?.aborted) {
317
+ reject(new Error("Voice stream opening was aborted."));
318
+ return;
319
+ }
295
320
  const ws = createWebSocket(
296
321
  deriveQwenRealtimeUrl(config.baseUrl, config.model),
297
322
  {
@@ -310,6 +335,12 @@ function openQwenAsrRealtimeStream(config, callbacks = {}, deps = {}) {
310
335
  let terminalError = null;
311
336
  let failed = false;
312
337
  let backpressureWarned = false;
338
+ let onAbort;
339
+ const removeAbortListener = /* @__PURE__ */ __name(() => {
340
+ if (!onAbort) return;
341
+ deps.abortSignal?.removeEventListener("abort", onAbort);
342
+ onAbort = void 0;
343
+ }, "removeAbortListener");
313
344
  const sendJson = /* @__PURE__ */ __name((body) => {
314
345
  ws.send(JSON.stringify({ event_id: randomUUID2(), ...body }));
315
346
  }, "sendJson");
@@ -334,6 +365,7 @@ function openQwenAsrRealtimeStream(config, callbacks = {}, deps = {}) {
334
365
  const fail = /* @__PURE__ */ __name((error) => {
335
366
  if (failed) return;
336
367
  failed = true;
368
+ removeAbortListener();
337
369
  const normalized = toError(error);
338
370
  clearConnectTimer();
339
371
  clearFinishTimer();
@@ -352,6 +384,14 @@ function openQwenAsrRealtimeStream(config, callbacks = {}, deps = {}) {
352
384
  terminalError = normalized;
353
385
  callbacks.onError?.(normalized);
354
386
  }, "fail");
387
+ if (deps.abortSignal) {
388
+ onAbort = /* @__PURE__ */ __name(() => fail(new Error("Voice stream opening was aborted.")), "onAbort");
389
+ if (deps.abortSignal.aborted) {
390
+ onAbort();
391
+ return;
392
+ }
393
+ deps.abortSignal.addEventListener("abort", onAbort, { once: true });
394
+ }
355
395
  connectTimer = setTimeout(() => {
356
396
  if (!opened) fail(new Error("Qwen ASR realtime connection timed out."));
357
397
  }, CONNECT_TIMEOUT_MS2);
@@ -469,6 +509,7 @@ function openQwenAsrRealtimeStream(config, callbacks = {}, deps = {}) {
469
509
  break;
470
510
  }
471
511
  failed = true;
512
+ removeAbortListener();
472
513
  clearFinishTimer();
473
514
  finishedTranscript = committed.trim();
474
515
  finishResolve?.(finishedTranscript);
@@ -491,6 +532,7 @@ function openQwenAsrRealtimeStream(config, callbacks = {}, deps = {}) {
491
532
  });
492
533
  ws.on("error", fail);
493
534
  ws.on("close", () => {
535
+ removeAbortListener();
494
536
  clearConnectTimer();
495
537
  clearFinishTimer();
496
538
  if (failed) return;
@@ -523,8 +565,22 @@ __name(openQwenAsrRealtimeStream, "openQwenAsrRealtimeStream");
523
565
  init_esbuild_shims();
524
566
  var RETRY_DELAY_MS = 200;
525
567
  var debugLogger3 = createDebugLogger("VOICE_STREAM");
526
- function delay(ms) {
527
- return new Promise((resolve) => setTimeout(resolve, ms));
568
+ function delay(ms, abortSignal) {
569
+ return new Promise((resolve, reject) => {
570
+ if (abortSignal?.aborted) {
571
+ reject(new Error("Voice stream opening was aborted."));
572
+ return;
573
+ }
574
+ const timer = setTimeout(() => {
575
+ abortSignal?.removeEventListener("abort", onAbort);
576
+ resolve();
577
+ }, ms);
578
+ const onAbort = /* @__PURE__ */ __name(() => {
579
+ clearTimeout(timer);
580
+ reject(new Error("Voice stream opening was aborted."));
581
+ }, "onAbort");
582
+ abortSignal?.addEventListener("abort", onAbort, { once: true });
583
+ });
528
584
  }
529
585
  __name(delay, "delay");
530
586
  function isRetryable(error) {
@@ -537,7 +593,10 @@ function isRetryable(error) {
537
593
  return true;
538
594
  }
539
595
  __name(isRetryable, "isRetryable");
540
- async function openVoiceStreamWithRetry(open) {
596
+ async function openVoiceStreamWithRetry(open, opts = {}) {
597
+ if (opts.abortSignal?.aborted) {
598
+ throw new Error("Voice stream opening was aborted.");
599
+ }
541
600
  try {
542
601
  return await open();
543
602
  } catch (error) {
@@ -545,7 +604,10 @@ async function openVoiceStreamWithRetry(open) {
545
604
  throw error;
546
605
  }
547
606
  debugLogger3.debug("[voice] stream open failed, retrying:", error);
548
- await delay(RETRY_DELAY_MS);
607
+ await delay(RETRY_DELAY_MS, opts.abortSignal);
608
+ if (opts.abortSignal?.aborted) {
609
+ throw new Error("Voice stream opening was aborted.");
610
+ }
549
611
  return open();
550
612
  }
551
613
  }
@@ -0,0 +1,23 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ init_esbuild_shims
5
+ } from "./chunk-5O2XNYP6.js";
6
+
7
+ // packages/cli/src/serve/channel-worker-env.ts
8
+ init_esbuild_shims();
9
+ var CHANNEL_DAEMON_WORKER_SENTINEL = "QWEN_CHANNEL_DAEMON_WORKER";
10
+ var CHANNEL_WORKER_HEARTBEAT_INTERVAL_MS = 15e3;
11
+ var QWEN_DAEMON_TOKEN_ENV = "QWEN_DAEMON_TOKEN";
12
+ var QWEN_DAEMON_URL_ENV = "QWEN_DAEMON_URL";
13
+ var QWEN_DAEMON_WORKSPACE_ENV = "QWEN_DAEMON_WORKSPACE";
14
+ var QWEN_SERVER_TOKEN_ENV = "QWEN_SERVER_TOKEN";
15
+
16
+ export {
17
+ CHANNEL_DAEMON_WORKER_SENTINEL,
18
+ CHANNEL_WORKER_HEARTBEAT_INTERVAL_MS,
19
+ QWEN_DAEMON_TOKEN_ENV,
20
+ QWEN_DAEMON_URL_ENV,
21
+ QWEN_DAEMON_WORKSPACE_ENV,
22
+ QWEN_SERVER_TOKEN_ENV
23
+ };