@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
@@ -2,33 +2,37 @@
2
2
  "use strict";
3
3
  import {
4
4
  CHANNEL_DAEMON_WORKER_SENTINEL,
5
+ CHANNEL_WEBHOOK_TASK_IPC_TIMEOUT_MS,
5
6
  CHANNEL_WORKER_HEARTBEAT_INTERVAL_MS,
7
+ ChannelWebhookEnqueueError,
8
+ MAX_CHANNEL_STARTUP_FAILURES,
9
+ MAX_CHANNEL_STARTUP_FAILURE_CHANNEL_LENGTH,
10
+ MAX_CHANNEL_STARTUP_FAILURE_CODE_LENGTH,
11
+ MAX_CHANNEL_STARTUP_FAILURE_MESSAGE_LENGTH,
6
12
  QWEN_DAEMON_TOKEN_ENV,
7
13
  QWEN_DAEMON_URL_ENV,
8
14
  QWEN_DAEMON_WORKSPACE_ENV,
9
- QWEN_SERVER_TOKEN_ENV
10
- } from "./chunk-GYTKQYDB.js";
15
+ QWEN_SERVER_TOKEN_ENV,
16
+ createChannelWebhookTaskMessage,
17
+ createWorkerDiagnosticRedactor,
18
+ isChannelStartupReportMessage,
19
+ isChannelStartupReportType,
20
+ isChannelWebhookEnqueueErrorCode,
21
+ isChannelWebhookTaskResultMessage,
22
+ normalizeWorkerDiagnostic,
23
+ sanitizeWorkerDiagnostic
24
+ } from "./chunk-JDIUK2Y3.js";
11
25
  import {
12
26
  channelSelectionNames
13
27
  } from "./chunk-TJTKSVIV.js";
14
- import {
15
- redactLogCredentials
16
- } from "./chunk-M5GB774H.js";
17
28
  import {
18
29
  CHANNEL_WORKER_KILL_GRACE_MS,
19
30
  CHANNEL_WORKER_STARTUP_TIMEOUT_MS,
20
31
  CHANNEL_WORKER_STOP_GRACE_MS
21
32
  } 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";
29
33
  import {
30
34
  sanitizeLogText
31
- } from "./chunk-SXU3KKNI.js";
35
+ } from "./chunk-ATJ7H5AS.js";
32
36
  import {
33
37
  init_esbuild_shims
34
38
  } from "./chunk-5O2XNYP6.js";
@@ -44,12 +48,6 @@ var DEFAULT_CHANNEL_WORKER_HEARTBEAT_TIMEOUT_MS = 45e3;
44
48
  var MAX_WORKER_LOG_LINE_LENGTH = 4096;
45
49
  var MAX_WORKER_LOG_BUFFER_LENGTH = 64 * 1024;
46
50
  var MAX_WORKER_LOG_DISCARDED_REMAINDER_LENGTH = MAX_WORKER_LOG_BUFFER_LENGTH;
47
- var ANSI_CSI_SEQUENCE_RE = new RegExp(
48
- `${String.fromCharCode(27)}\\[[0-?]*[ -/]*[@-~]`,
49
- "g"
50
- );
51
- var WORKER_LOG_INVISIBLE_RE = new RegExp("[\\p{Cf}\\u2028\\u2029]|\\p{Variation_Selector}", "gu");
52
- var WORKER_LOG_CONTROL_RE = /[\x00-\x08\x0a-\x1f\x7f]/g;
53
51
  var ChannelWorkerStopError = class extends Error {
54
52
  static {
55
53
  __name(this, "ChannelWorkerStopError");
@@ -59,6 +57,22 @@ var ChannelWorkerStopError = class extends Error {
59
57
  this.name = "ChannelWorkerStopError";
60
58
  }
61
59
  };
60
+ var ChannelWorkerStartupError = class extends Error {
61
+ static {
62
+ __name(this, "ChannelWorkerStartupError");
63
+ }
64
+ startupFailures;
65
+ startupFailuresTruncated;
66
+ constructor(message, details) {
67
+ super(message);
68
+ this.name = "ChannelWorkerStartupError";
69
+ this.startupFailures = details.startupFailures.map((failure) => ({
70
+ ...failure,
71
+ workspaceCwd: details.workspaceCwd
72
+ }));
73
+ this.startupFailuresTruncated = details.startupFailuresTruncated === true;
74
+ }
75
+ };
62
76
  var DEFAULT_RESTART_POLICY = {
63
77
  maxRestarts: 3,
64
78
  windowMs: 5 * 6e4,
@@ -101,9 +115,7 @@ function workerLogRedactionOptions(daemonToken, workerEnv) {
101
115
  }
102
116
  __name(workerLogRedactionOptions, "workerLogRedactionOptions");
103
117
  function sanitizeWorkerError(error, redaction) {
104
- const normalized = normalizeWorkerLogLineForRedaction(error);
105
- const redacted = redaction ? redactWorkerLogLine(normalized, redaction) : normalized;
106
- return Array.from(sanitizeLogText(redacted, 512)).slice(0, 512).join("");
118
+ return redaction ? sanitizeWorkerDiagnostic(error, 512, redaction) : sanitizeLogText(normalizeWorkerDiagnostic(error), 512);
107
119
  }
108
120
  __name(sanitizeWorkerError, "sanitizeWorkerError");
109
121
  function notifyExit(onExit, snapshot) {
@@ -162,58 +174,20 @@ function createWorkerEnv(opts) {
162
174
  return env;
163
175
  }
164
176
  __name(createWorkerEnv, "createWorkerEnv");
165
- function escapeRegExp(value) {
166
- return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
167
- }
168
- __name(escapeRegExp, "escapeRegExp");
169
- function sensitiveEnvValues(env) {
170
- const sensitiveKey = /(^|_)(TOKEN|SECRET|API_KEY|ACCESS_KEY|PRIVATE_KEY|CREDENTIAL|PASSWORD|PASSWD|PASSPHRASE|BASIC_AUTH|AUTH_TOKEN|AUTHORIZATION|SESSION_SECRET|SESSION_TOKEN|SESSION_KEY|SESSION_COOKIE|DSN|CONNECTION_STRING)($|_)/i;
171
- return Object.entries(env).filter(([key, value]) => sensitiveKey.test(key) && value !== void 0).flatMap(([, value]) => {
172
- const lines = value.split("\n").filter((l) => l.length >= 4);
173
- return lines.length > 0 ? [value, ...lines] : [value];
174
- }).filter((value) => value.length >= 4);
175
- }
176
- __name(sensitiveEnvValues, "sensitiveEnvValues");
177
- function redactWorkerLogLine(line, opts) {
178
- return createWorkerLogRedactor(opts)(line);
179
- }
180
- __name(redactWorkerLogLine, "redactWorkerLogLine");
181
- function createWorkerLogRedactor(opts) {
182
- const secretPatterns = [
183
- .../* @__PURE__ */ new Set([
184
- ...opts.daemonToken && opts.daemonToken.length >= 4 ? [opts.daemonToken] : [],
185
- ...sensitiveEnvValues(opts.workerEnv)
186
- ])
187
- ].sort((a, b) => b.length - a.length).map((secret) => new RegExp(escapeRegExp(secret), "g"));
188
- return (line) => {
189
- let redacted = line.replace(
190
- /\b([a-z][a-z0-9+.-]{0,31}:\/\/)([^\s/]*@)([^\s/]+)([^\s]*)/gi,
191
- "$1<redacted>@$3$4"
192
- );
193
- for (const secretPattern of secretPatterns) {
194
- redacted = redacted.replace(secretPattern, "<redacted>");
195
- }
196
- return redactLogCredentials(redacted);
197
- };
198
- }
199
- __name(createWorkerLogRedactor, "createWorkerLogRedactor");
200
- function normalizeWorkerLogLineForRedaction(line) {
201
- return line.replace(ANSI_CSI_SEQUENCE_RE, "").replace(WORKER_LOG_INVISIBLE_RE, "").replace(WORKER_LOG_CONTROL_RE, "");
202
- }
203
- __name(normalizeWorkerLogLineForRedaction, "normalizeWorkerLogLineForRedaction");
204
177
  function attachWorkerLogStream(stream, streamName, opts) {
205
178
  if (!stream) return () => {
206
179
  };
207
180
  let buffer = "";
208
181
  let discardingOversizedLineRemainder = false;
209
182
  let discardedOversizedLineRemainderLength = 0;
210
- const redactWorkerLogLineForStream = createWorkerLogRedactor({
183
+ const redactWorkerLogLineForStream = createWorkerDiagnosticRedactor({
211
184
  ...opts.daemonToken ? { daemonToken: opts.daemonToken } : {},
212
185
  workerEnv: opts.workerEnv
213
186
  });
214
187
  const flushLine = /* @__PURE__ */ __name((line) => {
188
+ const displayLine = line.replace(/\t/gu, " ");
215
189
  const redacted = redactWorkerLogLineForStream(
216
- normalizeWorkerLogLineForRedaction(line)
190
+ normalizeWorkerDiagnostic(displayLine)
217
191
  );
218
192
  notifyLog(opts.onLog, {
219
193
  stream: streamName,
@@ -294,7 +268,12 @@ function createChannelWorkerSupervisor(opts) {
294
268
  const snapshotCopy = /* @__PURE__ */ __name(() => ({
295
269
  ...snapshot,
296
270
  channels: [...snapshot.channels],
297
- ...snapshot.requestedChannels ? { requestedChannels: [...snapshot.requestedChannels] } : {}
271
+ ...snapshot.requestedChannels ? { requestedChannels: [...snapshot.requestedChannels] } : {},
272
+ ...snapshot.startupFailures ? {
273
+ startupFailures: snapshot.startupFailures.map((failure) => ({
274
+ ...failure
275
+ }))
276
+ } : {}
298
277
  }), "snapshotCopy");
299
278
  const clearRestartTimer = /* @__PURE__ */ __name(() => {
300
279
  if (restartTimer) {
@@ -557,6 +536,89 @@ function createChannelWorkerSupervisor(opts) {
557
536
  resolve();
558
537
  }
559
538
  }, "failBeforeReady");
539
+ const startupError = /* @__PURE__ */ __name((message) => {
540
+ const failures = snapshot.startupFailures;
541
+ return failures && failures.length > 0 ? new ChannelWorkerStartupError(message, {
542
+ workspaceCwd: opts.workspace,
543
+ startupFailures: failures,
544
+ ...snapshot.startupFailuresTruncated ? { startupFailuresTruncated: true } : {}
545
+ }) : new Error(message);
546
+ }, "startupError");
547
+ const failStartupProtocol = /* @__PURE__ */ __name((detail) => {
548
+ if (settled || ready || child !== startedChild) return;
549
+ const error = sanitizeWorkerError(
550
+ `Channel worker startup IPC protocol error: ${detail}`,
551
+ redaction
552
+ );
553
+ snapshot = { ...snapshot, state: "failed", error };
554
+ failBeforeReady(startupError(error));
555
+ terminateBeforeReady();
556
+ }, "failStartupProtocol");
557
+ const acknowledgeStartupReport = /* @__PURE__ */ __name(() => {
558
+ const send = startedChild.send;
559
+ if (!send) {
560
+ failStartupProtocol("acknowledgement is unavailable.");
561
+ return;
562
+ }
563
+ try {
564
+ send.call(
565
+ startedChild,
566
+ { type: "channel_startup_report_ack" },
567
+ (err) => {
568
+ if (err) {
569
+ failStartupProtocol("acknowledgement failed.");
570
+ }
571
+ }
572
+ );
573
+ } catch {
574
+ failStartupProtocol("acknowledgement failed.");
575
+ }
576
+ }, "acknowledgeStartupReport");
577
+ const handleStartupReport = /* @__PURE__ */ __name((message) => {
578
+ if (!isChannelStartupReportMessage(message)) {
579
+ failStartupProtocol("invalid startup report.");
580
+ return;
581
+ }
582
+ if (message.type === "channel_startup_failures_truncated") {
583
+ if (snapshot.startupFailuresTruncated || snapshot.startupFailures?.length !== MAX_CHANNEL_STARTUP_FAILURES) {
584
+ failStartupProtocol("invalid truncation marker.");
585
+ return;
586
+ }
587
+ snapshot = { ...snapshot, startupFailuresTruncated: true };
588
+ acknowledgeStartupReport();
589
+ return;
590
+ }
591
+ if (snapshot.startupFailuresTruncated || (snapshot.startupFailures?.length ?? 0) >= MAX_CHANNEL_STARTUP_FAILURES) {
592
+ failStartupProtocol("too many startup failures.");
593
+ return;
594
+ }
595
+ const safeChannel = sanitizeWorkerDiagnostic(
596
+ message.failure.channel,
597
+ MAX_CHANNEL_STARTUP_FAILURE_CHANNEL_LENGTH,
598
+ redaction
599
+ ) || "<unnamed>";
600
+ const safeMessage = sanitizeWorkerDiagnostic(
601
+ message.failure.message,
602
+ MAX_CHANNEL_STARTUP_FAILURE_MESSAGE_LENGTH,
603
+ redaction
604
+ ) || "Channel connection failed.";
605
+ const safeCode = message.failure.code ? sanitizeWorkerDiagnostic(
606
+ message.failure.code,
607
+ MAX_CHANNEL_STARTUP_FAILURE_CODE_LENGTH,
608
+ redaction
609
+ ) : void 0;
610
+ const failure = {
611
+ channel: safeChannel,
612
+ phase: "connect",
613
+ ...safeCode ? { code: safeCode } : {},
614
+ message: safeMessage
615
+ };
616
+ snapshot = {
617
+ ...snapshot,
618
+ startupFailures: [...snapshot.startupFailures ?? [], failure]
619
+ };
620
+ acknowledgeStartupReport();
621
+ }, "handleStartupReport");
560
622
  const completeReady = /* @__PURE__ */ __name((message) => {
561
623
  if (settled || child !== startedChild) return;
562
624
  settled = true;
@@ -597,7 +659,9 @@ function createChannelWorkerSupervisor(opts) {
597
659
  if (settleWebhookTask(message)) {
598
660
  return;
599
661
  }
600
- if (!ready && isReadyMessage(message)) {
662
+ if (!ready && isChannelStartupReportType(message)) {
663
+ handleStartupReport(message);
664
+ } else if (!ready && isReadyMessage(message)) {
601
665
  completeReady(message);
602
666
  } else if (isHeartbeatMessage(message)) {
603
667
  handleHeartbeat(message);
@@ -626,7 +690,7 @@ function createChannelWorkerSupervisor(opts) {
626
690
  notifyExit(opts.onExit, snapshotCopy());
627
691
  }
628
692
  if (!settled) {
629
- failBeforeReady(new Error(snapshot.error ?? message));
693
+ failBeforeReady(startupError(snapshot.error ?? message));
630
694
  }
631
695
  }
632
696
  __name(settleExit, "settleExit");
@@ -647,7 +711,9 @@ function createChannelWorkerSupervisor(opts) {
647
711
  };
648
712
  terminateBeforeReady();
649
713
  if (!settled) {
650
- failBeforeReady(new Error(snapshot.error));
714
+ failBeforeReady(
715
+ startupError(snapshot.error ?? "Channel worker failed to start.")
716
+ );
651
717
  }
652
718
  }
653
719
  __name(settleError, "settleError");
@@ -659,7 +725,7 @@ function createChannelWorkerSupervisor(opts) {
659
725
  state: "failed",
660
726
  error: sanitizeWorkerError(error, redaction)
661
727
  };
662
- failBeforeReady(new Error(error));
728
+ failBeforeReady(startupError(error));
663
729
  if (child === startedChild) {
664
730
  terminateBeforeReady();
665
731
  }
@@ -817,5 +883,6 @@ __name(createChannelWorkerSupervisor, "createChannelWorkerSupervisor");
817
883
 
818
884
  export {
819
885
  ChannelWorkerStopError,
886
+ ChannelWorkerStartupError,
820
887
  createChannelWorkerSupervisor
821
888
  };
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-RKUWKYED.js";
7
7
  import {
8
8
  createDebugLogger
9
- } from "./chunk-7NFB7LBQ.js";
9
+ } from "./chunk-UE5TZ55T.js";
10
10
  import {
11
11
  init_esbuild_shims
12
12
  } from "./chunk-5O2XNYP6.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  getTasksDir
5
- } from "./chunk-TV6K2FB4.js";
5
+ } from "./chunk-4RPARQ5D.js";
6
6
  import {
7
7
  require_proper_lockfile
8
8
  } from "./chunk-E2UVIFI2.js";
@@ -11,11 +11,11 @@ import {
11
11
  } from "./chunk-VGC4I5JJ.js";
12
12
  import {
13
13
  atomicWriteJSON
14
- } from "./chunk-WIEO4CWB.js";
14
+ } from "./chunk-VAJS2E2D.js";
15
15
  import {
16
16
  createDebugLogger,
17
17
  isNodeError
18
- } from "./chunk-7NFB7LBQ.js";
18
+ } from "./chunk-UE5TZ55T.js";
19
19
  import {
20
20
  init_esbuild_shims
21
21
  } from "./chunk-5O2XNYP6.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  resolveChannelCwd
5
- } from "./chunk-ZRKBI3DP.js";
5
+ } from "./chunk-FZRES4GK.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -21,12 +21,12 @@ function ensureBuiltins() {
21
21
  if (!builtinsPromise) {
22
22
  builtinsPromise = (async () => {
23
23
  const labelled = [
24
- { name: "telegram", promise: import("./dist-JZE7F6YR.js") },
25
- { name: "weixin", promise: import("./dist-PHEPJLXD.js") },
26
- { name: "dingtalk", promise: import("./dist-HNN7DR2L.js") },
27
- { name: "wecom", promise: import("./dist-ERCPDVA6.js") },
28
- { name: "feishu", promise: import("./dist-MOEC47TR.js") },
29
- { name: "qqbot", promise: import("./dist-3V3ZV6ML.js") }
24
+ { name: "telegram", promise: import("./dist-LQHDHBPP.js") },
25
+ { name: "weixin", promise: import("./dist-KEZ5JWH4.js") },
26
+ { name: "dingtalk", promise: import("./dist-G6QCGO2K.js") },
27
+ { name: "wecom", promise: import("./dist-ILVRL322.js") },
28
+ { name: "feishu", promise: import("./dist-SVHAGOLN.js") },
29
+ { name: "qqbot", promise: import("./dist-4W3UGU2A.js") }
30
30
  ];
31
31
  const results = await Promise.allSettled(labelled.map((l) => l.promise));
32
32
  for (let i = 0; i < results.length; i++) {
@@ -2,11 +2,11 @@
2
2
  "use strict";
3
3
  import {
4
4
  isTlsVerificationDisabled
5
- } from "./chunk-LQIDP6K5.js";
5
+ } from "./chunk-4CHDYDG3.js";
6
6
  import {
7
7
  getErrorMessage,
8
8
  isNodeError
9
- } from "./chunk-7NFB7LBQ.js";
9
+ } from "./chunk-UE5TZ55T.js";
10
10
  import {
11
11
  init_esbuild_shims
12
12
  } from "./chunk-5O2XNYP6.js";
@@ -2,19 +2,19 @@
2
2
  "use strict";
3
3
  import {
4
4
  getEffectiveSupportedModes
5
- } from "./chunk-DK33QJ3V.js";
5
+ } from "./chunk-CZSAIBUB.js";
6
6
  import {
7
7
  require_jsx_runtime
8
- } from "./chunk-K4PZ5F5T.js";
8
+ } from "./chunk-TVYM3Q3J.js";
9
9
  import {
10
10
  require_react
11
11
  } from "./chunk-HTHUX2T5.js";
12
12
  import {
13
13
  getCachedStringWidth
14
- } from "./chunk-WTSXKLG5.js";
14
+ } from "./chunk-SUARMD4Q.js";
15
15
  import {
16
16
  uiTelemetryService
17
- } from "./chunk-P6LART6G.js";
17
+ } from "./chunk-66IT3EY2.js";
18
18
  import {
19
19
  init_esbuild_shims
20
20
  } from "./chunk-5O2XNYP6.js";
@@ -555,6 +555,129 @@ function fitPendingSlice(allLines, contentWidth, budget, tableClampRows) {
555
555
  }
556
556
  __name(fitPendingSlice, "fitPendingSlice");
557
557
 
558
+ // packages/cli/src/ui/utils/markdownUtilities.ts
559
+ init_esbuild_shims();
560
+ var findNextFence = /* @__PURE__ */ __name((content, from) => {
561
+ const backtick = content.indexOf("```", from);
562
+ const tilde = content.indexOf("~~~", from);
563
+ if (backtick === -1 && tilde === -1) return null;
564
+ let index;
565
+ let char;
566
+ if (tilde === -1 || backtick !== -1 && backtick < tilde) {
567
+ index = backtick;
568
+ char = "`";
569
+ } else {
570
+ index = tilde;
571
+ char = "~";
572
+ }
573
+ let length = 0;
574
+ while (content[index + length] === char) length++;
575
+ return { index, char, length };
576
+ }, "findNextFence");
577
+ var getEnclosingFence = /* @__PURE__ */ __name((content, indexToTest) => {
578
+ let open = null;
579
+ let searchPos = 0;
580
+ while (searchPos < content.length) {
581
+ const fence = findNextFence(content, searchPos);
582
+ if (!fence || fence.index >= indexToTest) break;
583
+ if (!open) {
584
+ open = { char: fence.char, len: fence.length, index: fence.index };
585
+ } else if (fence.char === open.char && fence.length >= open.len) {
586
+ open = null;
587
+ }
588
+ searchPos = fence.index + fence.length;
589
+ }
590
+ if (!open) return null;
591
+ const newlineIndex = content.indexOf("\n", open.index);
592
+ const fenceLineEnd = newlineIndex === -1 ? content.length : newlineIndex;
593
+ return {
594
+ startIndex: open.index,
595
+ delimiter: content.slice(open.index, open.index + open.len),
596
+ infoString: content.slice(open.index + open.len, fenceLineEnd)
597
+ };
598
+ }, "getEnclosingFence");
599
+ var isIndexInsideCodeBlock = /* @__PURE__ */ __name((content, index) => getEnclosingFence(content, index) !== null, "isIndexInsideCodeBlock");
600
+ var findEnclosingCodeBlockStart = /* @__PURE__ */ __name((content, index) => getEnclosingFence(content, index)?.startIndex ?? -1, "findEnclosingCodeBlockStart");
601
+ var getEnclosingFenceInfo = /* @__PURE__ */ __name((content, index) => {
602
+ const fence = getEnclosingFence(content, index);
603
+ return fence ? parseCodeFenceInfo(fence.infoString) : null;
604
+ }, "getEnclosingFenceInfo");
605
+ var findLastSafeSplitPoint = /* @__PURE__ */ __name((content, idealMaxLength) => {
606
+ const hasLengthCap = idealMaxLength !== void 0;
607
+ const searchEnd = hasLengthCap ? Math.min(Math.max(idealMaxLength, 0), content.length) : content.length;
608
+ if (hasLengthCap && content.length <= searchEnd) {
609
+ return content.length;
610
+ }
611
+ const enclosingBlockStart = findEnclosingCodeBlockStart(content, searchEnd);
612
+ if (enclosingBlockStart !== -1) {
613
+ return hasLengthCap && enclosingBlockStart === 0 ? searchEnd : enclosingBlockStart;
614
+ }
615
+ let searchStartIndex = searchEnd;
616
+ while (searchStartIndex >= 0) {
617
+ const dnlIndex = content.lastIndexOf("\n\n", searchStartIndex);
618
+ if (dnlIndex === -1) {
619
+ break;
620
+ }
621
+ const potentialSplitPoint = dnlIndex + 2;
622
+ if (potentialSplitPoint <= searchEnd && !isIndexInsideCodeBlock(content, potentialSplitPoint)) {
623
+ return potentialSplitPoint;
624
+ }
625
+ searchStartIndex = dnlIndex - 1;
626
+ }
627
+ if (hasLengthCap) {
628
+ searchStartIndex = searchEnd;
629
+ while (searchStartIndex >= 0) {
630
+ const nlIndex = content.lastIndexOf("\n", searchStartIndex);
631
+ if (nlIndex === -1) {
632
+ break;
633
+ }
634
+ const potentialSplitPoint = nlIndex + 1;
635
+ if (potentialSplitPoint <= searchEnd && !isIndexInsideCodeBlock(content, potentialSplitPoint)) {
636
+ return potentialSplitPoint;
637
+ }
638
+ searchStartIndex = nlIndex - 1;
639
+ }
640
+ }
641
+ return hasLengthCap ? searchEnd : content.length;
642
+ }, "findLastSafeSplitPoint");
643
+ var START_LINE_DIRECTIVE_RE = /\s*\bqwen-code:start-line=(\d+)\b/;
644
+ var parseCodeFenceInfo = /* @__PURE__ */ __name((info) => {
645
+ const raw = info ?? "";
646
+ const directive = raw.match(START_LINE_DIRECTIVE_RE);
647
+ const startLine = directive ? Math.max(1, Number(directive[1])) : 1;
648
+ const lang = raw.replace(START_LINE_DIRECTIVE_RE, "").trim().split(/\s+/)[0];
649
+ return { lang: lang || null, startLine };
650
+ }, "parseCodeFenceInfo");
651
+ var countHeadContentLines = /* @__PURE__ */ __name((content, fenceStartIndex, splitPoint) => {
652
+ const headFromFence = content.slice(fenceStartIndex, splitPoint);
653
+ const newlineCount = (headFromFence.match(/\n/g) || []).length;
654
+ return headFromFence.endsWith("\n") ? newlineCount - 1 : newlineCount;
655
+ }, "countHeadContentLines");
656
+ var splitFencedMarkdown = /* @__PURE__ */ __name((content, splitPoint) => {
657
+ const before = content.slice(0, splitPoint);
658
+ const after = content.slice(splitPoint);
659
+ if (splitPoint <= 0 || splitPoint >= content.length) {
660
+ return { before, after };
661
+ }
662
+ const fence = getEnclosingFence(content, splitPoint);
663
+ if (!fence) {
664
+ return { before, after };
665
+ }
666
+ const closingFence = fence.delimiter;
667
+ const { startLine: headStart } = parseCodeFenceInfo(fence.infoString);
668
+ const tailStart = headStart + countHeadContentLines(content, fence.startIndex, splitPoint);
669
+ const baseInfo = fence.infoString.replace(START_LINE_DIRECTIVE_RE, "").replace(/\s+$/, "");
670
+ const directive = `qwen-code:start-line=${tailStart}`;
671
+ const reopeningFence = `${fence.delimiter}${baseInfo ? `${baseInfo} ${directive}` : directive}`;
672
+ const beforeWithClose = before.endsWith("\n") ? `${before}${closingFence}
673
+ ` : `${before}
674
+ ${closingFence}
675
+ `;
676
+ const afterWithReopen = `${reopeningFence}
677
+ ${after}`;
678
+ return { before: beforeWithClose, after: afterWithReopen };
679
+ }, "splitFencedMarkdown");
680
+
558
681
  export {
559
682
  TABLE_MAX_ROW_LINES,
560
683
  TABLE_ROW_RE,
@@ -562,6 +685,10 @@ export {
562
685
  CODE_FENCE_RE,
563
686
  splitMarkdownTableRow,
564
687
  fitPendingSlice,
688
+ getEnclosingFenceInfo,
689
+ findLastSafeSplitPoint,
690
+ parseCodeFenceInfo,
691
+ splitFencedMarkdown,
565
692
  SessionStatsProvider,
566
693
  useSessionStats,
567
694
  getCommandSourceBadge,
@@ -4,56 +4,56 @@ import {
4
4
  Client,
5
5
  So,
6
6
  StdioClientTransport
7
- } from "./chunk-K7CRWKOE.js";
7
+ } from "./chunk-3YJZ6WNY.js";
8
+ import "./chunk-T4TZQJ7W.js";
8
9
  import "./chunk-H6XPXXMH.js";
9
10
  import "./chunk-5M6IDOMF.js";
10
- import "./chunk-E67NFMF4.js";
11
- import "./chunk-RCEEXIOO.js";
12
- import "./chunk-KKRTYONM.js";
13
- import "./chunk-TV6K2FB4.js";
11
+ import "./chunk-LKR7QQ63.js";
12
+ import "./chunk-4XCVGEEX.js";
13
+ import "./chunk-XSPFQQRE.js";
14
+ import "./chunk-4RPARQ5D.js";
14
15
  import "./chunk-E2UVIFI2.js";
15
- import "./chunk-6OATMEYN.js";
16
16
  import "./chunk-XU457J4V.js";
17
17
  import "./chunk-VDDGDZMA.js";
18
- import "./chunk-SPJQO2CE.js";
18
+ import "./chunk-J2MKYJKZ.js";
19
19
  import "./chunk-SZRN75WQ.js";
20
20
  import "./chunk-HTO4JFDZ.js";
21
21
  import "./chunk-CPBF7KYF.js";
22
- import "./chunk-TXY2C3D2.js";
22
+ import "./chunk-VNN3JNYT.js";
23
23
  import "./chunk-6AM5D4ME.js";
24
- import "./chunk-2Z5UX4KI.js";
25
- import "./chunk-ARKANCNX.js";
26
- import "./chunk-L5U3ELZX.js";
27
- import "./chunk-TYLOFD2U.js";
24
+ import "./chunk-OSSDHJDU.js";
25
+ import "./chunk-SGPFJMRP.js";
26
+ import "./chunk-335ECZTA.js";
27
+ import "./chunk-JCJPZMJV.js";
28
28
  import {
29
29
  safeJsonStringify
30
- } from "./chunk-P6LART6G.js";
30
+ } from "./chunk-66IT3EY2.js";
31
31
  import "./chunk-4WKAA4KS.js";
32
32
  import "./chunk-CR3C7WXL.js";
33
- import "./chunk-CARU2RR2.js";
33
+ import "./chunk-U2LNTX56.js";
34
34
  import "./chunk-VGC4I5JJ.js";
35
- import "./chunk-FBU7WRZI.js";
36
- import "./chunk-Y66VOBRP.js";
37
- import "./chunk-WX6SD4IQ.js";
35
+ import "./chunk-FUTHTZVV.js";
36
+ import "./chunk-4CA4WUMS.js";
37
+ import "./chunk-WEPXQKGP.js";
38
38
  import {
39
39
  BaseDeclarativeTool,
40
40
  BaseToolInvocation
41
- } from "./chunk-2UUAIFQO.js";
42
- import "./chunk-OKAIGAYW.js";
43
- import "./chunk-ZPAHLFZU.js";
41
+ } from "./chunk-ANRANWVE.js";
42
+ import "./chunk-G274ETR6.js";
43
+ import "./chunk-Z2LBNX3R.js";
44
44
  import "./chunk-JESCGQM3.js";
45
- import "./chunk-WIEO4CWB.js";
45
+ import "./chunk-VAJS2E2D.js";
46
46
  import "./chunk-XVNQMZ2I.js";
47
- import "./chunk-B7NUUEXC.js";
48
- import "./chunk-TQBODCFD.js";
47
+ import "./chunk-FEOZBUMT.js";
48
+ import "./chunk-CMVFTMRD.js";
49
49
  import "./chunk-A4UCTEB5.js";
50
50
  import "./chunk-XWRJCPHC.js";
51
- import "./chunk-4LD5APFL.js";
51
+ import "./chunk-TYQMGACW.js";
52
52
  import "./chunk-TYAMGABM.js";
53
53
  import "./chunk-FCMNKVXT.js";
54
54
  import "./chunk-DJ2GSRLV.js";
55
- import "./chunk-LQIDP6K5.js";
56
- import "./chunk-7NFB7LBQ.js";
55
+ import "./chunk-4CHDYDG3.js";
56
+ import "./chunk-UE5TZ55T.js";
57
57
  import "./chunk-75DOP5OR.js";
58
58
  import "./chunk-DMTGGOSA.js";
59
59
  import "./chunk-YQ3U5MUC.js";
@@ -5,12 +5,12 @@ import {
5
5
  parseChannelWebhookConfig,
6
6
  parseChannelWebhookConfigLenient,
7
7
  resolveEnvVars
8
- } from "./chunk-OATTJGPJ.js";
9
- import "./chunk-ZRKBI3DP.js";
8
+ } from "./chunk-Y72B36CP.js";
9
+ import "./chunk-FZRES4GK.js";
10
10
  import {
11
11
  findCliEntryPath
12
12
  } from "./chunk-V6WHFGST.js";
13
- import "./chunk-SXU3KKNI.js";
13
+ import "./chunk-ATJ7H5AS.js";
14
14
  import "./chunk-UDXSXLER.js";
15
15
  import "./chunk-H6XPXXMH.js";
16
16
  import "./chunk-5O2XNYP6.js";