@qwen-code/qwen-code 0.22.2 → 0.22.3-nightly.20260831.3a0c4c6108

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 (480) hide show
  1. package/bundled/computer-use/SKILL.md +3 -3
  2. package/bundled/qc-helper/docs/common-workflow.md +32 -0
  3. package/bundled/qc-helper/docs/configuration/auth.md +6 -6
  4. package/bundled/qc-helper/docs/configuration/model-providers.md +4 -2
  5. package/bundled/qc-helper/docs/configuration/settings.md +47 -44
  6. package/bundled/qc-helper/docs/extension/introduction.md +1 -1
  7. package/bundled/qc-helper/docs/features/approval-mode.md +3 -0
  8. package/bundled/qc-helper/docs/features/auto-mode.md +34 -17
  9. package/bundled/qc-helper/docs/features/channels/dws.md +2 -0
  10. package/bundled/qc-helper/docs/features/channels/overview.md +36 -3
  11. package/bundled/qc-helper/docs/features/code-review.md +5 -5
  12. package/bundled/qc-helper/docs/features/commands.md +41 -0
  13. package/bundled/qc-helper/docs/features/computer-use.md +2 -2
  14. package/bundled/qc-helper/docs/features/hooks.md +6 -2
  15. package/bundled/qc-helper/docs/features/memory.md +1 -0
  16. package/bundled/qc-helper/docs/features/tool-use-summaries.md +1 -1
  17. package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +17 -7
  18. package/bundled/qc-helper/docs/qwen-serve.md +59 -55
  19. package/bundled/review/SKILL.md +90 -31
  20. package/bundled/review/references/persistence.md +7 -3
  21. package/bundled/review/references/posting.md +11 -5
  22. package/chunks/MaxSizedBox-IHRTWGSY.js +115 -0
  23. package/chunks/{StandaloneSessionPicker-AVLI6VJP.js → StandaloneSessionPicker-TLVWVTJ7.js} +88 -85
  24. package/chunks/{acp-startup-profiler-GNYAL6LI.js → acp-startup-profiler-M4X5F3VK.js} +2 -2
  25. package/chunks/{acpAgent-MXEAN54C.js → acpAgent-7I5LLPP3.js} +1563 -407
  26. package/chunks/agent-4Z4NTJXD.js +99 -0
  27. package/chunks/agent-headless-TVUJXQWU.js +89 -0
  28. package/chunks/{anthropicContentGenerator-HGMBACVE.js → anthropicContentGenerator-VSSPG7XV.js} +84 -55
  29. package/chunks/{artifact-tool-5YT4QF7Y.js → artifact-tool-TEYW6I4A.js} +11 -3
  30. package/chunks/{askUserQuestion-4SWJY65V.js → askUserQuestion-PYNBWV63.js} +45 -7
  31. package/chunks/bridge-EVURP4NO.js +122 -0
  32. package/chunks/{ca-7HPYOYSZ.js → ca-BNU7YNDE.js} +3 -0
  33. package/chunks/{channel-management-service-X4AZ6IXX.js → channel-management-service-IDBNYSFW.js} +6 -6
  34. package/chunks/channel-settings-store-MZNXRKVI.js +125 -0
  35. package/chunks/{channel-worker-group-27HMGD5S.js → channel-worker-group-ZLP5SJHT.js} +7 -7
  36. package/chunks/{channel-worker-manager-QEGX646Z.js → channel-worker-manager-FG5377T2.js} +7 -7
  37. package/chunks/{channel-worker-supervisor-UEW2WWCC.js → channel-worker-supervisor-HDVE4ADS.js} +4 -4
  38. package/chunks/{chunk-PPKZ7JOE.js → chunk-22UH7VTP.js} +1 -1
  39. package/chunks/chunk-24FVUD5P.js +49 -0
  40. package/chunks/{chunk-CMHFCLBU.js → chunk-26SIKQIC.js} +1 -1
  41. package/chunks/{chunk-5PA6UEYA.js → chunk-3452WXOK.js} +4 -1
  42. package/chunks/{chunk-SFPGAQUL.js → chunk-373DQUVA.js} +72 -31
  43. package/chunks/{chunk-H2WDGQ6D.js → chunk-3AKCBZVW.js} +3 -3
  44. package/chunks/{chunk-LXIBMVRN.js → chunk-3CZGSTZX.js} +15 -9
  45. package/chunks/{chunk-JVPFTDBK.js → chunk-3EGEBDTW.js} +1 -1
  46. package/chunks/{chunk-K2NQPH5D.js → chunk-3NQCZMUB.js} +79 -5
  47. package/chunks/{chunk-E7REAOTN.js → chunk-47ECGEJC.js} +4 -0
  48. package/chunks/{chunk-WKK5BQNP.js → chunk-4P7PPAHN.js} +45 -421
  49. package/chunks/chunk-4VQBQLIZ.js +293 -0
  50. package/chunks/{chunk-4JWNNLPT.js → chunk-5FGWVPCM.js} +4 -4
  51. package/chunks/{chunk-ZFKOCECU.js → chunk-5ICKESC3.js} +2 -2
  52. package/chunks/{chunk-3I6UTTDX.js → chunk-67AY5D3M.js} +20 -20
  53. package/chunks/chunk-6HUXPLB5.js +110 -0
  54. package/chunks/{chunk-BRVWYMKV.js → chunk-6MBXY6WM.js} +1 -1
  55. package/chunks/{chunk-6LFTG244.js → chunk-6NWPR2EB.js} +19 -9
  56. package/chunks/chunk-6OO7QEWV.js +2581 -0
  57. package/chunks/{chunk-TWSKM647.js → chunk-6VHIWUJP.js} +1 -1
  58. package/chunks/{chunk-RJC5EIKY.js → chunk-6YXNJXQW.js} +7 -5
  59. package/chunks/{chunk-TPI7O7HR.js → chunk-7DDTI7Q3.js} +1 -1
  60. package/chunks/{chunk-KGJGEEVR.js → chunk-7FA2II6K.js} +10 -1
  61. package/chunks/chunk-7J6OTNGO.js +424 -0
  62. package/chunks/{chunk-NIFYWDYN.js → chunk-7TBU7PU2.js} +1 -1
  63. package/chunks/{chunk-3FDFA4MZ.js → chunk-7XICSE62.js} +3 -3
  64. package/chunks/{chunk-V2NDP3I4.js → chunk-7XL4WRXM.js} +2 -2
  65. package/chunks/{chunk-F7TNAPZ4.js → chunk-AAX236AR.js} +45 -11
  66. package/chunks/{chunk-T32W2JHI.js → chunk-ACZ4YRYK.js} +6 -6
  67. package/chunks/chunk-ADJD4LZF.js +210 -0
  68. package/chunks/{chunk-JWALNCLT.js → chunk-AF3QB6OL.js} +1 -1
  69. package/chunks/{chunk-P2SU6ZTI.js → chunk-AI35S34R.js} +3 -3
  70. package/chunks/{chunk-OIP7C4FE.js → chunk-AKNQMSL2.js} +5 -5
  71. package/chunks/{chunk-6CGL7E7G.js → chunk-AN3KFCNH.js} +2 -2
  72. package/chunks/{chunk-ABS25QER.js → chunk-ANVG3BVV.js} +1 -1
  73. package/chunks/chunk-AYYKUUKP.js +972 -0
  74. package/chunks/chunk-B2RIIK3K.js +346 -0
  75. package/chunks/{chunk-F5SZP77N.js → chunk-BBYTY46C.js} +153 -112
  76. package/chunks/{chunk-XRSOI3DL.js → chunk-BE5FGT5Z.js} +1 -1
  77. package/chunks/{chunk-BGXZBI5B.js → chunk-BHTYRHJF.js} +3 -2
  78. package/chunks/{chunk-CSMI4FP5.js → chunk-BSJOBW4U.js} +1 -1
  79. package/chunks/{chunk-Z7TGYN5F.js → chunk-BXNKREX7.js} +3 -3
  80. package/chunks/{chunk-4MQEPP3Y.js → chunk-BY24DZ4J.js} +5 -119
  81. package/chunks/{chunk-5XBFCMWD.js → chunk-CAZADEU7.js} +17 -9
  82. package/chunks/chunk-CHEIIBT3.js +40 -0
  83. package/chunks/{chunk-BBWV7ONL.js → chunk-CM4F4JBB.js} +6 -6
  84. package/chunks/{chunk-CAJTKR6W.js → chunk-D7D3HSYQ.js} +6 -5
  85. package/chunks/{chunk-3DXFGHAJ.js → chunk-DBTMP3P4.js} +213 -185
  86. package/chunks/chunk-DJBQCO2E.js +842 -0
  87. package/chunks/{chunk-RXFQM6FQ.js → chunk-DMEUXLSS.js} +16 -1
  88. package/chunks/{chunk-3AFMQUTI.js → chunk-E4JNFXNI.js} +3 -3
  89. package/chunks/{chunk-UHQFIS7N.js → chunk-EAHOJF6V.js} +28 -4
  90. package/chunks/{chunk-OIVXBW3W.js → chunk-ED7DD7MV.js} +3 -3
  91. package/chunks/{chunk-6DIGWMGT.js → chunk-EIJT2PQ6.js} +2 -2
  92. package/chunks/{chunk-XQFT3QUF.js → chunk-ENYUKMFK.js} +1 -1
  93. package/chunks/{chunk-CQH5KTKC.js → chunk-ERHAMGAA.js} +1 -1
  94. package/chunks/{chunk-IOPCFOTF.js → chunk-ERRJA23L.js} +3 -3
  95. package/chunks/{chunk-LDP5OD6N.js → chunk-EU2B4P3D.js} +12 -12
  96. package/chunks/{chunk-W5MJJ2V7.js → chunk-FHPYRXRH.js} +1 -1
  97. package/chunks/{chunk-IZIVM7LZ.js → chunk-FIWZOMBF.js} +3 -3
  98. package/chunks/{chunk-4HV6HH33.js → chunk-FPMQT2YY.js} +9 -9
  99. package/chunks/{chunk-Z7VOMGDC.js → chunk-FTJMWDND.js} +0 -24
  100. package/chunks/{chunk-L2M46FP5.js → chunk-FXUSWLBF.js} +225 -12
  101. package/chunks/{chunk-VVW4ZNFY.js → chunk-GB4UKWY5.js} +16 -8
  102. package/chunks/{chunk-PKAYJDB3.js → chunk-GCUR24KK.js} +22 -4
  103. package/chunks/{chunk-DIMEPKCW.js → chunk-GDXSXL3H.js} +11 -1
  104. package/chunks/{chunk-7JPW6IYH.js → chunk-GN422P4J.js} +1 -1
  105. package/chunks/{chunk-66KDY3LV.js → chunk-GS7XT345.js} +3 -3
  106. package/chunks/{chunk-PFCQ62V4.js → chunk-H2A2GJGL.js} +6 -6
  107. package/chunks/{chunk-Z7FLBQPR.js → chunk-H5GPPDGY.js} +8 -8
  108. package/chunks/{chunk-CPGJJJLU.js → chunk-HDMKCJHI.js} +1 -1
  109. package/chunks/{chunk-6PJOTWAN.js → chunk-HT5S5TRQ.js} +1 -1
  110. package/chunks/{chunk-Z4X5MTRT.js → chunk-HWVUSYSN.js} +5 -12
  111. package/chunks/{chunk-V4QXXQJ2.js → chunk-I75VKFCJ.js} +4 -4
  112. package/chunks/{chunk-NU7RKEZR.js → chunk-IBMUI5EV.js} +3 -3
  113. package/chunks/{chunk-4J657AJR.js → chunk-ID33ZRWH.js} +42 -42
  114. package/chunks/{chunk-R4PMVSR5.js → chunk-IIFL7QDN.js} +30 -192
  115. package/chunks/{chunk-MQM5PJML.js → chunk-IVUWTA2D.js} +1 -1
  116. package/chunks/{chunk-E55H6BZ7.js → chunk-IXEZHTDR.js} +1616 -151
  117. package/chunks/{chunk-XF63PKEN.js → chunk-IXHV5MIC.js} +1 -1
  118. package/chunks/{chunk-JHS74YAB.js → chunk-J4Y3QJHF.js} +3 -1
  119. package/chunks/{chunk-MIIVI25Q.js → chunk-JDIO45X7.js} +3 -3
  120. package/chunks/{chunk-QFCDF5PL.js → chunk-JHN7UIDW.js} +1 -1
  121. package/chunks/{chunk-FDY5RMGH.js → chunk-JLSZT354.js} +2 -2
  122. package/chunks/chunk-JMRE4WJQ.js +1849 -0
  123. package/chunks/{chunk-FY76G3G5.js → chunk-JOTYTYYW.js} +6 -6
  124. package/chunks/{chunk-TRZTNIQ6.js → chunk-JOWQD4LO.js} +3 -3
  125. package/chunks/{chunk-KEKZFOL6.js → chunk-JPKTAQS3.js} +1 -1
  126. package/chunks/chunk-JS73NNWF.js +30 -0
  127. package/chunks/chunk-JX6XHPTX.js +26 -0
  128. package/chunks/{chunk-5JTIYALA.js → chunk-JZWOCUZ3.js} +1 -1
  129. package/chunks/{chunk-3JGZSIDA.js → chunk-KFN2IZYR.js} +3 -3
  130. package/chunks/{chunk-23RFD54N.js → chunk-KHP66DFN.js} +1 -1
  131. package/chunks/{chunk-AGR5UROZ.js → chunk-KUDI54QQ.js} +23 -33
  132. package/chunks/{chunk-3SGB2UHX.js → chunk-L2OKAIUK.js} +28 -16
  133. package/chunks/{chunk-BXDAPVQU.js → chunk-L6CUJZDG.js} +28 -4
  134. package/chunks/chunk-LAUEEBDL.js +277 -0
  135. package/chunks/{chunk-BNMF3K5X.js → chunk-LFAR7CPW.js} +55 -39
  136. package/chunks/{chunk-Y3QL45LS.js → chunk-LKODFJRD.js} +9 -9
  137. package/chunks/{chunk-BWORX6FA.js → chunk-LMMHS3RS.js} +1 -1
  138. package/chunks/{chunk-UTLCH2FK.js → chunk-LYSZVCCD.js} +10 -7
  139. package/chunks/{chunk-F6FV3C5K.js → chunk-MBZ5ORJB.js} +264 -283
  140. package/chunks/{chunk-L6YT5H34.js → chunk-MJBHSZEJ.js} +5 -5
  141. package/chunks/{chunk-B7CDU2SL.js → chunk-MOF6VZN2.js} +18 -21
  142. package/chunks/{chunk-6LFJEACX.js → chunk-MZ5A5PQW.js} +7 -7
  143. package/chunks/chunk-MZYWNU66.js +149 -0
  144. package/chunks/{chunk-2TNL5KPM.js → chunk-N4QWUPDM.js} +7 -0
  145. package/chunks/{chunk-5O72BNDD.js → chunk-ND7TQQPE.js} +9 -9
  146. package/chunks/{chunk-QP4C6WCE.js → chunk-NGKLMNWN.js} +3 -3
  147. package/chunks/{chunk-JSC3H3TD.js → chunk-NT5XIL5H.js} +46 -18
  148. package/chunks/{chunk-KUX5D6DK.js → chunk-NT7LXVV5.js} +11010 -11138
  149. package/chunks/{chunk-PDQGMSZK.js → chunk-ODZF64DM.js} +1 -1
  150. package/chunks/{chunk-FBSSIAAQ.js → chunk-OE5AQVNB.js} +8 -8
  151. package/chunks/chunk-OHU2H5CS.js +130 -0
  152. package/chunks/{chunk-2K6ORIHJ.js → chunk-OKMDOATP.js} +13 -13
  153. package/chunks/{chunk-JB4JIVTJ.js → chunk-OKTNXDVO.js} +1 -1
  154. package/chunks/{chunk-XDLEZ5HX.js → chunk-OQYXJK2V.js} +1 -1
  155. package/chunks/{chunk-EFUM7RVY.js → chunk-OSTQZIOY.js} +944 -18
  156. package/chunks/{chunk-VQUGEVGR.js → chunk-OTTNXUT5.js} +1 -1
  157. package/chunks/{chunk-T3WXYEZ4.js → chunk-PB7JBAHF.js} +53 -54
  158. package/chunks/{chunk-WAOIHTJS.js → chunk-PDAKFU7M.js} +1 -1
  159. package/chunks/{chunk-43GGFFLY.js → chunk-PDXYZBBQ.js} +3 -3
  160. package/chunks/{chunk-4CMJKUND.js → chunk-PNIGAVY6.js} +67 -2
  161. package/chunks/{chunk-SAH4BD2J.js → chunk-PQEISIKS.js} +67 -0
  162. package/chunks/{chunk-4CDSK5AZ.js → chunk-PWR2NQBS.js} +6 -6
  163. package/chunks/{chunk-YTDVNSUQ.js → chunk-QAK5475D.js} +1 -1
  164. package/chunks/{chunk-IJKTMLBE.js → chunk-QE7DTCLX.js} +1 -1
  165. package/chunks/{chunk-SMPR7SPO.js → chunk-QJNDUTOL.js} +45 -239
  166. package/chunks/{chunk-C6K43ZDE.js → chunk-QTMPM6RC.js} +16 -10
  167. package/chunks/{chunk-P5GGM4KS.js → chunk-RAEEQEC5.js} +5 -5
  168. package/chunks/{chunk-XDFHY4R3.js → chunk-RGEV5AUD.js} +242 -14
  169. package/chunks/{chunk-M6FOJXW3.js → chunk-RKW36UWC.js} +1 -1
  170. package/chunks/{chunk-RIEFGNTP.js → chunk-RLSPPTWH.js} +5119 -683
  171. package/chunks/{chunk-PDMJ3KGS.js → chunk-RT4QNQ5P.js} +3 -3
  172. package/chunks/{chunk-SJ3ZUWFK.js → chunk-RVCGAHC7.js} +4 -26
  173. package/chunks/{chunk-77RG5SFQ.js → chunk-RY7DL5IF.js} +11 -6
  174. package/chunks/{chunk-4FTKQNWJ.js → chunk-S2T7H5MI.js} +182 -3
  175. package/chunks/{chunk-EOGELB3H.js → chunk-SDCHI64N.js} +4 -4
  176. package/chunks/{chunk-EKSCLBBF.js → chunk-SMJYTKTB.js} +23 -5
  177. package/chunks/{chunk-MZS7GEC7.js → chunk-SMRDCANI.js} +1 -1
  178. package/chunks/{chunk-43UYNAWX.js → chunk-T3TL6S3B.js} +4 -4
  179. package/chunks/{chunk-4K7NQDCG.js → chunk-T4EFG2P5.js} +18 -9
  180. package/chunks/{chunk-IK5BW3CS.js → chunk-T4RMUTTT.js} +16 -5
  181. package/chunks/{chunk-L6BZRIUL.js → chunk-TBJ3SNS3.js} +183 -5
  182. package/chunks/{chunk-CCBZDVUA.js → chunk-TNMOFNT4.js} +133 -122
  183. package/chunks/{chunk-Y6LSMB6J.js → chunk-TV7BJ7TX.js} +1 -1
  184. package/chunks/{chunk-G34IR3D6.js → chunk-U5RTYI7D.js} +102 -146
  185. package/chunks/{chunk-TTX2JUE6.js → chunk-U6D2PPMN.js} +1 -1
  186. package/chunks/{chunk-D5LUXLUH.js → chunk-UJ4DUYIH.js} +18 -4
  187. package/chunks/{chunk-A7YP63XN.js → chunk-UKB2TZAO.js} +5 -5
  188. package/chunks/{chunk-VTHREBQM.js → chunk-UKYXYWI2.js} +2 -2
  189. package/chunks/{chunk-2NYCN6F2.js → chunk-UVYKCRJZ.js} +46 -29
  190. package/chunks/{chunk-HVEYF6VT.js → chunk-UXEW7TQS.js} +2 -2
  191. package/chunks/{chunk-HVQ3B7FF.js → chunk-V4HN35IF.js} +44 -7
  192. package/chunks/chunk-VGHZT6JR.js +51 -0
  193. package/chunks/{chunk-V5J4J5TP.js → chunk-VYSZUQGU.js} +2 -20
  194. package/chunks/{chunk-6IUNAPLR.js → chunk-W4BDHLRT.js} +3 -3
  195. package/chunks/{chunk-Q26AYA62.js → chunk-W7KWB6AH.js} +7 -4
  196. package/chunks/chunk-WLEYH7CD.js +332 -0
  197. package/chunks/{chunk-RU7BK6B3.js → chunk-X7C7KFWA.js} +2 -2
  198. package/chunks/{chunk-YRLW2MSX.js → chunk-XBVNNDPK.js} +11 -4
  199. package/chunks/{chunk-BFPESSTR.js → chunk-XEAAO654.js} +1 -1
  200. package/chunks/{chunk-JU4EEXC7.js → chunk-XLENZQXH.js} +2 -2
  201. package/chunks/{chunk-JSHHYW6T.js → chunk-XPDKSOVW.js} +69 -64
  202. package/chunks/chunk-YDQ4OCDK.js +1222 -0
  203. package/chunks/{chunk-ZU4UDIWX.js → chunk-YKADANK6.js} +6 -7
  204. package/chunks/{chunk-JCQD3INC.js → chunk-YNG7XAJU.js} +3 -3
  205. package/chunks/{chunk-O2UN57NX.js → chunk-YOFULAHO.js} +19 -2
  206. package/chunks/{chunk-BAJKAAOY.js → chunk-YOMKOM7E.js} +4892 -1504
  207. package/chunks/{chunk-ERFDKH32.js → chunk-YPISTYEI.js} +8 -7
  208. package/chunks/{chunk-TGWAQ5RB.js → chunk-ZBDYI7VM.js} +6900 -6882
  209. package/chunks/{chunk-OZ6KS6KW.js → chunk-ZGCKTAL5.js} +6 -1
  210. package/chunks/chunk-ZHO2CW6D.js +205 -0
  211. package/chunks/{chunk-DZWPESIF.js → chunk-ZQ3FKEWA.js} +3 -3
  212. package/chunks/{chunk-7EQQR46F.js → chunk-ZVP4PWBU.js} +1 -1
  213. package/chunks/{chunk-7UYV53BC.js → chunk-ZYPJ7HVZ.js} +1 -1
  214. package/chunks/config-utils-NNUPVGEC.js +118 -0
  215. package/chunks/contextCommand-S3TPCDM5.js +111 -0
  216. package/chunks/{core-runtime-677KFX6Q.js → core-runtime-NASPCSQX.js} +66 -63
  217. package/chunks/{create-sub-session-23ITIELI.js → create-sub-session-36TNCHCP.js} +3 -3
  218. package/chunks/{create-sub-session-JKZAYZX7.js → create-sub-session-DS4BJLYZ.js} +97 -68
  219. package/chunks/{cron-create-KJ4IY6PP.js → cron-create-QXHTYUTO.js} +4 -4
  220. package/chunks/{cron-delete-MBLQCAYY.js → cron-delete-WV2BM42M.js} +4 -4
  221. package/chunks/{cron-list-DWH2PQ47.js → cron-list-7KVNBLZ7.js} +4 -4
  222. package/chunks/{daemon-MJQUO7RA.js → daemon-UCVUHPJD.js} +723 -90
  223. package/chunks/{daemon-git-worktree-guard-6MVAAZZZ.js → daemon-git-worktree-guard-ATXVQPS3.js} +63 -60
  224. package/chunks/daemon-status-provider-UI3GBTMO.js +121 -0
  225. package/chunks/daemon-trust-policy-SUCBJ2CA.js +117 -0
  226. package/chunks/{daemon-trust-policy-monitor-B5U6TQX5.js → daemon-trust-policy-monitor-3LM5RQNS.js} +71 -68
  227. package/chunks/{de-X6HLSIFE.js → de-T4BLOKEC.js} +3 -0
  228. package/chunks/deferred-core-runtime-SCOJLVYG.js +119 -0
  229. package/chunks/{display-image-BE7I6ZB6.js → display-image-Z4VBQDEJ.js} +5 -5
  230. package/chunks/{dist-TJUDJTCB.js → dist-5423MG3D.js} +411 -91
  231. package/chunks/{dist-ILDBUWDB.js → dist-7WDZYMWV.js} +43 -25
  232. package/chunks/{dist-ZBVOXSKF.js → dist-FLJLHASF.js} +219 -121
  233. package/chunks/{dist-QODVOVWI.js → dist-GPSRNVVP.js} +43 -35
  234. package/chunks/{dist-DJBNNPLN.js → dist-LY66XNUL.js} +10 -3
  235. package/chunks/{dist-7CKN54NL.js → dist-S3BKCTWF.js} +205 -89
  236. package/chunks/{dist-UQUFZDIY.js → dist-SDKHGH5O.js} +41 -20
  237. package/chunks/{dist-4Q7NTUNB.js → dist-WAUO5OMN.js} +46 -22
  238. package/chunks/{dist-SATKXKUR.js → dist-WIVVPE7M.js} +28 -14
  239. package/chunks/earlyInputCapture-INWJ2STR.js +112 -0
  240. package/chunks/{edit-BSV6YRVW.js → edit-B7ZRRGAE.js} +51 -49
  241. package/chunks/{en-YLXBXM4Z.js → en-E4AYTX6H.js} +3 -0
  242. package/chunks/{enter-worktree-MQXFFPKM.js → enter-worktree-SPZHEETQ.js} +7 -7
  243. package/chunks/{enterPlanMode-PKNF35FE.js → enterPlanMode-S554IKJ2.js} +55 -53
  244. package/chunks/environment-25ADH4Y6.js +134 -0
  245. package/chunks/errors-G2I6LFTW.js +118 -0
  246. package/chunks/{exit-worktree-L344UY7K.js → exit-worktree-AWUXAMAM.js} +7 -7
  247. package/chunks/exitPlanMode-ZFH4OYPM.js +87 -0
  248. package/chunks/{fast-path-773PV7PU.js → fast-path-WZHVZ2ER.js} +8 -7
  249. package/chunks/{fast-path-settings-XMFBYFUH.js → fast-path-settings-NILM6QZL.js} +3 -3
  250. package/chunks/{fr-FTZWF462.js → fr-BGHGYX6A.js} +3 -0
  251. package/chunks/{glob-CZHOWUEA.js → glob-UOVDMBUP.js} +50 -48
  252. package/chunks/{goal-tools-YZQJXTGH.js → goal-tools-7TNK5ZHC.js} +5 -4
  253. package/chunks/{grep-5GPICQBU.js → grep-LHYJ5V2N.js} +9 -7
  254. package/chunks/handleAutoUpdate-4MZ45DZY.js +114 -0
  255. package/chunks/i18n-KWUEI4DS.js +129 -0
  256. package/chunks/{image-gen-HAYOEQ4O.js → image-gen-YZDVO5YS.js} +8 -10
  257. package/chunks/initializer-2NBROGMG.js +118 -0
  258. package/chunks/installationInfo-YKUSY3ZB.js +112 -0
  259. package/chunks/{ja-2GL5FKYJ.js → ja-G3FTD5XE.js} +3 -0
  260. package/chunks/{keychain-token-storage-37XPR34V.js → keychain-token-storage-REZVMJA6.js} +2 -2
  261. package/chunks/list-W2WV3COM.js +121 -0
  262. package/chunks/list-agents-PMVMHNY7.js +128 -0
  263. package/chunks/{gemini-IP4FJAP5.js → llm-NPPHLIJI.js} +162 -133
  264. package/chunks/{geminiContentGenerator-PUNEBWJW.js → llm-content-generator-YK3WN6XW.js} +29 -29
  265. package/chunks/loadedSettingsAdapter-2P7DFWUR.js +115 -0
  266. package/chunks/{loggingContentGenerator-2GGZNGLG.js → loggingContentGenerator-QYYYGU6V.js} +318 -35
  267. package/chunks/{loop-wakeup-XJFONSQ7.js → loop-wakeup-EBM4F5MZ.js} +5 -5
  268. package/chunks/{ls-3VAT2J7A.js → ls-F6TRX3DD.js} +4 -4
  269. package/chunks/{lsp-5W7IRUBH.js → lsp-QYTOS2FI.js} +2 -2
  270. package/chunks/{managed-npm-update-5TEV2E3J.js → managed-npm-update-UMC4NBWW.js} +64 -61
  271. package/chunks/mcp-OFI6XDP2.js +115 -0
  272. package/chunks/{monitor-FI7PY36Z.js → monitor-QX3BM3JY.js} +50 -48
  273. package/chunks/nonInteractiveCli-NVRMD5MN.js +193 -0
  274. package/chunks/{notebook-edit-TPGMGBST.js → notebook-edit-AAILDPSV.js} +51 -49
  275. package/chunks/{open-with-auth-4UI3KHUR.js → open-with-auth-D6JD6LDS.js} +4 -4
  276. package/chunks/{openaiContentGenerator-SUCYANUZ.js → openaiContentGenerator-53PB3CMN.js} +27 -29
  277. package/chunks/pidfile-5ACKG2LI.js +116 -0
  278. package/chunks/process-registry-OAEG6WGC.js +662 -0
  279. package/chunks/{processUtils-IQZBYWSB.js → processUtils-2BCDO3DZ.js} +2 -2
  280. package/chunks/prompt-terminal-ledger-3RKW73A2.js +110 -0
  281. package/chunks/{pt-XN2YWJVM.js → pt-D73IFYT7.js} +3 -0
  282. package/chunks/{qwenContentGenerator-J4TXFGJT.js → qwenContentGenerator-N4LLWDPH.js} +56 -54
  283. package/chunks/{qwenOAuth2-RF33DNZW.js → qwenOAuth2-7AOCKSOQ.js} +7 -9
  284. package/chunks/{read-file-QE2B5FTX.js → read-file-DPAKXHYE.js} +13 -13
  285. package/chunks/{read-mcp-resource-XD257PGJ.js → read-mcp-resource-R4NO75DW.js} +2 -2
  286. package/chunks/{record-artifact-RZGZBENU.js → record-artifact-2EAYLAL5.js} +4 -4
  287. package/chunks/{report-findings-Q3SYKKW5.js → report-findings-Y4MSHDS3.js} +9 -5
  288. package/chunks/{request-shutdown-BCLA3JV2.js → request-shutdown-DWRMGTMB.js} +8 -7
  289. package/chunks/resumeHistoryUtils-3JQORXAK.js +123 -0
  290. package/chunks/ripGrep-AHF5QCI7.js +39 -0
  291. package/chunks/{ru-OLTMFJEW.js → ru-QMISLKRH.js} +3 -0
  292. package/chunks/{run-qwen-serve-TPHZMSXJ.js → run-qwen-serve-3LKV7KDC.js} +728 -256
  293. package/chunks/runtime-66F4W3IA.js +153 -0
  294. package/chunks/scheduled-tasks-2NVKS5Q2.js +132 -0
  295. package/chunks/scheduler-JNV7T3ZO.js +127 -0
  296. package/chunks/{sdk-exporters-http-KCJ4ZFG7.js → sdk-exporters-http-MFIWD23D.js} +2 -2
  297. package/chunks/{sdk-impl-HLSEDAEP.js → sdk-impl-2RXJ4Q6X.js} +11 -5
  298. package/chunks/send-message-WPZRCJOB.js +442 -0
  299. package/chunks/serve-GP2UNRP7.js +123 -0
  300. package/chunks/{server-DFUSSSHI.js → server-7W6C3SOW.js} +5233 -3623
  301. package/chunks/{session-3TEHNENZ.js → session-PZLBAQGG.js} +125 -118
  302. package/chunks/session-pr-refresh-OIVL3U3Z.js +367 -0
  303. package/chunks/{settings-VOZYKLTT.js → settings-ZOHIQWYK.js} +70 -67
  304. package/chunks/shell-FWZT6IUR.js +97 -0
  305. package/chunks/{skill-FEOKFX26.js → skill-RTQC2YGA.js} +121 -65
  306. package/chunks/skill-settings-AKMIXFSJ.js +123 -0
  307. package/chunks/spawnChannel-ZP23JL6O.js +116 -0
  308. package/chunks/standalone-update-P2Q5H4ZU.js +123 -0
  309. package/chunks/{startInteractiveUI-WHJPFOGH.js → startInteractiveUI-NSA6QPQZ.js} +2018 -1526
  310. package/chunks/{stdioHelpers-7A2EE64Z.js → stdioHelpers-AY6XCDY2.js} +3 -1
  311. package/chunks/{syntheticOutput-ML43GEFN.js → syntheticOutput-5URSQLIS.js} +3 -3
  312. package/chunks/{task-create-TMSV7RD5.js → task-create-3EXVDG3G.js} +12 -12
  313. package/chunks/{task-list-W55RBFRX.js → task-list-PIBYNSE7.js} +5 -6
  314. package/chunks/{task-stop-CXEH5L2D.js → task-stop-IV3BYWJC.js} +2 -2
  315. package/chunks/{task-update-N536I4GQ.js → task-update-H5BPDS5Y.js} +13 -14
  316. package/chunks/{team-create-QYSWCYCL.js → team-create-53T42W37.js} +56 -55
  317. package/chunks/{team-delete-FJRFX33M.js → team-delete-X3WPELS6.js} +25 -8
  318. package/chunks/{team-plan-approval-P7DAD644.js → team-plan-approval-D45ZC5OE.js} +50 -48
  319. package/chunks/terminal-image-renderer-FCRUWT6C.js +121 -0
  320. package/chunks/theme-manager-MHNPEDP7.js +107 -0
  321. package/chunks/{todoWrite-WDJNQEMW.js → todoWrite-A5IOZZ3P.js} +4 -4
  322. package/chunks/{tool-search-F2EMIAPV.js → tool-search-6RPBGGUX.js} +27 -23
  323. package/chunks/total-session-admission-MGV56XDK.js +117 -0
  324. package/chunks/trustedFolders-QJYEFMTU.js +127 -0
  325. package/chunks/{types-WYCFCEHR.js → types-HKLPXZB3.js} +1 -3
  326. package/chunks/{update-relaunch-4GF3OXMB.js → update-relaunch-ZDMQX63C.js} +6 -6
  327. package/chunks/updateCheck-4QZWCGP6.js +123 -0
  328. package/chunks/useAutoAcceptIndicator-DLIQN256.js +125 -0
  329. package/chunks/{validateNonInterActiveAuth-BPPA563H.js → validateNonInterActiveAuth-HGTG7AEK.js} +114 -107
  330. package/chunks/{version-ANP4TS6O.js → version-CPAZMC4B.js} +1 -1
  331. package/chunks/{web-fetch-QJADSAH3.js → web-fetch-N4K5M3M4.js} +16 -18
  332. package/chunks/{web-search-7TTQKEKM.js → web-search-4VZKM5SF.js} +9 -11
  333. package/chunks/{web-shell-static-A6QMUNNV.js → web-shell-static-PW7OEDQO.js} +3 -2
  334. package/chunks/{workflow-5XN6XSOT.js → workflow-2ALQKTHG.js} +229 -146
  335. package/chunks/workspace-providers-status-5JM4CB6R.js +119 -0
  336. package/chunks/{workspace-registration-store-XKVW2YVH.js → workspace-registration-store-RNMFVCH7.js} +2 -1
  337. package/chunks/workspace-registry-6EULAPZC.js +126 -0
  338. package/chunks/workspace-runtime-coordinator-IRI2DRCJ.js +127 -0
  339. package/chunks/workspace-service-SETHN4WE.js +131 -0
  340. package/chunks/workspace-skills-status-4D4EUEQU.js +118 -0
  341. package/chunks/{workspace-trust-reconciler-KLGOB53D.js → workspace-trust-reconciler-4LR3CDL4.js} +77 -76
  342. package/chunks/write-file-45GWPSOI.js +92 -0
  343. package/chunks/{zh-UNY63FR3.js → zh-2BQ7P6OD.js} +3 -0
  344. package/chunks/{zh-TW-RPTMRTHG.js → zh-TW-UFXRZTXX.js} +3 -0
  345. package/chunks/{zoom-image-6ASG6J4C.js → zoom-image-K6IQUKRC.js} +13 -13
  346. package/cli.js +129 -92
  347. package/locales/ca.js +6 -0
  348. package/locales/de.js +6 -0
  349. package/locales/en.js +6 -0
  350. package/locales/fr.js +6 -0
  351. package/locales/ja.js +6 -0
  352. package/locales/pt.js +6 -0
  353. package/locales/ru.js +6 -0
  354. package/locales/zh-TW.js +6 -0
  355. package/locales/zh.js +6 -0
  356. package/package.json +3 -3
  357. package/web-shell/assets/{abnfDiagram-VCTEODGH-uS-vtfs3.js → abnfDiagram-VCTEODGH-C80OZcPP.js} +1 -1
  358. package/web-shell/assets/{arc-BSTnk5pu.js → arc-AUqStYgf.js} +1 -1
  359. package/web-shell/assets/{architectureDiagram-5GKGNRK7-DCMyiqzy.js → architectureDiagram-5GKGNRK7-CQYOdYla.js} +1 -1
  360. package/web-shell/assets/{blockDiagram-NRAW4CY4-C7_gt0r1.js → blockDiagram-NRAW4CY4-lYKlFysy.js} +1 -1
  361. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BeQg2L8B.js → c4Diagram-UCG6FXSJ-BoS23iIp.js} +1 -1
  362. package/web-shell/assets/channel-B0ovOJeK.js +1 -0
  363. package/web-shell/assets/{chunk-2Q5K7J3B-DnV9bKBe.js → chunk-2Q5K7J3B-DLLooL1E.js} +1 -1
  364. package/web-shell/assets/{chunk-5VM5RSS4-rT1GAcT7.js → chunk-5VM5RSS4-kPfJxScY.js} +1 -1
  365. package/web-shell/assets/{chunk-F27PBJKO-BcgSxqGA.js → chunk-F27PBJKO-CVGFBqkD.js} +1 -1
  366. package/web-shell/assets/{chunk-G27WJ6UU-Bw1ZhyZq.js → chunk-G27WJ6UU-CnM_kOVV.js} +1 -1
  367. package/web-shell/assets/{chunk-JWPE2WC7-D4iDw-96.js → chunk-JWPE2WC7-Cj-ajOkT.js} +1 -1
  368. package/web-shell/assets/{chunk-LCL6LL3I-D3MB3GTZ.js → chunk-LCL6LL3I-8L5c-wFo.js} +1 -1
  369. package/web-shell/assets/{chunk-POPQ4Y6H-Cep2ndrS.js → chunk-POPQ4Y6H-DsXTxpvL.js} +1 -1
  370. package/web-shell/assets/{chunk-SVP7TREG-BuahMHJc.js → chunk-SVP7TREG-DU5GE1_z.js} +1 -1
  371. package/web-shell/assets/{chunk-XXDRQBXY-BdujIvJY.js → chunk-XXDRQBXY-D2IIWZKt.js} +1 -1
  372. package/web-shell/assets/classDiagram-DTDB5LWJ-DMll2-6_.js +1 -0
  373. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DMll2-6_.js +1 -0
  374. package/web-shell/assets/{cose-bilkent-JH36ORCC-CGLLUbF8.js → cose-bilkent-JH36ORCC-CF_txUJr.js} +1 -1
  375. package/web-shell/assets/{cynefin-OW5HDTMX-D6kDsRSh.js → cynefin-OW5HDTMX-DEZ-My-Z.js} +1 -1
  376. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-CCy78qZx.js → cynefinDiagram-5FMLGOSQ-BV7EKUS6.js} +1 -1
  377. package/web-shell/assets/{dagre-3AP2YEHR-D5gJuJsf.js → dagre-3AP2YEHR-JGIX0G4H.js} +1 -1
  378. package/web-shell/assets/{diagram-S7CK7UJ4-ZwEZ5W__.js → diagram-S7CK7UJ4-DdUY7q6A.js} +1 -1
  379. package/web-shell/assets/{diagram-UQ7AKVKN-B036APjv.js → diagram-UQ7AKVKN-fhzRZ19v.js} +1 -1
  380. package/web-shell/assets/{diagram-VSXAHHWV-BfDJ57Fq.js → diagram-VSXAHHWV-BOgOex6q.js} +1 -1
  381. package/web-shell/assets/{diagram-VX7I27RA-Wha0p5rT.js → diagram-VX7I27RA-C0NknIz6.js} +1 -1
  382. package/web-shell/assets/{diagram-Z3DM3KII-L20bz2K1.js → diagram-Z3DM3KII-C__3mUBX.js} +1 -1
  383. package/web-shell/assets/{ebnfDiagram-PWID7BFC-D1ZM0Cp7.js → ebnfDiagram-PWID7BFC-BvPhqycH.js} +1 -1
  384. package/web-shell/assets/{erDiagram-SSCWMZ5O-CMtA19v8.js → erDiagram-SSCWMZ5O-BqzoNoL9.js} +1 -1
  385. package/web-shell/assets/{flowDiagram-A5DVABFB-D96m326S.js → flowDiagram-A5DVABFB-CJKOre47.js} +1 -1
  386. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-BuHiYG2o.js → ganttDiagram-EL5Y4UJY-C5xZjrp0.js} +1 -1
  387. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-Ck3NmkSw.js → gitGraphDiagram-WWUBYQGX-C0EjwuPK.js} +1 -1
  388. package/web-shell/assets/index-B_IPzA0h.js +2020 -0
  389. package/web-shell/assets/{index-CBGz4Qjl.js → index-C5M93syE.js} +1 -1
  390. package/web-shell/assets/index-D1OKGQlM.css +36 -0
  391. package/web-shell/assets/{infoDiagram-RXCK75RN-B6DAOyXe.js → infoDiagram-RXCK75RN-BUwzsYOs.js} +1 -1
  392. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-Bpg-joFo.js → ishikawaDiagram-5VMMS53U-EDJ_DH3V.js} +1 -1
  393. package/web-shell/assets/{journeyDiagram-EYS64GPL-BclrHzGa.js → journeyDiagram-EYS64GPL-BnfcOsS0.js} +1 -1
  394. package/web-shell/assets/{kanban-definition-3QL26DDD-5gJzNTYG.js → kanban-definition-3QL26DDD-D_ofTVGu.js} +1 -1
  395. package/web-shell/assets/{layout-CEz_1L8z.js → layout-CBuQFdfZ.js} +1 -1
  396. package/web-shell/assets/{linear-CBjTq9Hc.js → linear-DRIHtmGv.js} +1 -1
  397. package/web-shell/assets/{mermaid.core-Dzhbxx_I.js → mermaid.core-CmR5wZH6.js} +6 -6
  398. package/web-shell/assets/{mindmap-definition-FBJOCRG2-DQdVqlBF.js → mindmap-definition-FBJOCRG2-BV374olC.js} +1 -1
  399. package/web-shell/assets/{pegDiagram-XKGWAZYB-D1JZlYXL.js → pegDiagram-XKGWAZYB-Bpy1SplK.js} +1 -1
  400. package/web-shell/assets/{pieDiagram-E7YTZNPT-BmkpYL0w.js → pieDiagram-E7YTZNPT-CeZx4hR2.js} +1 -1
  401. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-DRvD6co5.js → quadrantDiagram-AXDQQJYC-COYKs14h.js} +1 -1
  402. package/web-shell/assets/{railroadDiagram-O6MQD6OU-CEdjDuoo.js → railroadDiagram-O6MQD6OU-5g2pOeTs.js} +1 -1
  403. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-BCHG-ie8.js → requirementDiagram-EFPCY7ZU-Yn8uPGtF.js} +1 -1
  404. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-C9cZMnye.js → sankeyDiagram-P5KCCOFB-CTayAGq6.js} +1 -1
  405. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DYHRV4zL.js → sequenceDiagram-WJ2MYXX4-BFWDKzUU.js} +1 -1
  406. package/web-shell/assets/{sizeCapture-X5ZJPWSS-DlK21aye.js → sizeCapture-X5ZJPWSS-CtErUbj4.js} +1 -1
  407. package/web-shell/assets/{stateDiagram-HBIQ2CUA-BrmZssvk.js → stateDiagram-HBIQ2CUA-Co3HFzOd.js} +1 -1
  408. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-C3gdRjPm.js +1 -0
  409. package/web-shell/assets/{swimlanes-XN3QIQJK-D9xfcayR.js → swimlanes-XN3QIQJK-CDZuxzOj.js} +1 -1
  410. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-C34TGCPZ.js +8 -0
  411. package/web-shell/assets/{timeline-definition-24CTP7MA-D4gdDL_d.js → timeline-definition-24CTP7MA-UcNHj8At.js} +1 -1
  412. package/web-shell/assets/{vennDiagram-4TSXK5OY-DdhIExjI.js → vennDiagram-4TSXK5OY-JKR9pVFG.js} +1 -1
  413. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-C9RS_Zof.js → wardleyDiagram-VM6X3IG4-C4SU-yIW.js} +1 -1
  414. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-orRgmxWk.js → xychartDiagram-S5SC5T6Z-D_yoWGZ4.js} +1 -1
  415. package/web-shell/index.html +197 -3
  416. package/chunks/MaxSizedBox-X5FZSNAJ.js +0 -112
  417. package/chunks/agent-PJIPDWHB.js +0 -97
  418. package/chunks/agent-headless-B4JVD7UK.js +0 -87
  419. package/chunks/bridge-FKZTVIS3.js +0 -121
  420. package/chunks/channel-settings-store-4UFCLBBG.js +0 -117
  421. package/chunks/chunk-7DJCPZE3.js +0 -945
  422. package/chunks/chunk-CPBF7KYF.js +0 -51
  423. package/chunks/chunk-H72BQNM3.js +0 -645
  424. package/chunks/chunk-J2OSJFP3.js +0 -202
  425. package/chunks/chunk-K2OJUPOE.js +0 -78
  426. package/chunks/chunk-P3QQPMQA.js +0 -19
  427. package/chunks/chunk-RUGNCYNO.js +0 -699
  428. package/chunks/chunk-T26EAKDL.js +0 -13
  429. package/chunks/chunk-ZGXYO7DY.js +0 -3416
  430. package/chunks/chunk-ZYNTSXWK.js +0 -32
  431. package/chunks/config-utils-BBOCOGZW.js +0 -113
  432. package/chunks/contextCommand-EET67MQ2.js +0 -108
  433. package/chunks/daemon-status-provider-RFKZOK3S.js +0 -119
  434. package/chunks/daemon-trust-policy-DRZPFB4Q.js +0 -114
  435. package/chunks/deferred-core-runtime-BBVIOP24.js +0 -116
  436. package/chunks/earlyInputCapture-2JOMMNQ4.js +0 -109
  437. package/chunks/environment-MOZMPUHR.js +0 -131
  438. package/chunks/errors-DMPQVYJL.js +0 -115
  439. package/chunks/exitPlanMode-UE4FGCY4.js +0 -85
  440. package/chunks/handleAutoUpdate-SGXKTQM6.js +0 -111
  441. package/chunks/i18n-B42HKHKH.js +0 -126
  442. package/chunks/initializer-FB66WYR3.js +0 -115
  443. package/chunks/installationInfo-Y7AULNMX.js +0 -109
  444. package/chunks/list-2HWGSVRA.js +0 -118
  445. package/chunks/list-agents-DI3YFTDT.js +0 -80
  446. package/chunks/loadedSettingsAdapter-7Y7IEI6T.js +0 -112
  447. package/chunks/mcp-QGG5NMJJ.js +0 -112
  448. package/chunks/nonInteractiveCli-4LO2TL72.js +0 -186
  449. package/chunks/pidfile-JMF2CLMY.js +0 -113
  450. package/chunks/process-registry-PMJOA5CO.js +0 -172
  451. package/chunks/prompt-terminal-ledger-DCZO6S7C.js +0 -107
  452. package/chunks/resumeHistoryUtils-CZ4JRDVW.js +0 -120
  453. package/chunks/ripGrep-R6B6HWPX.js +0 -39
  454. package/chunks/runtime-TTIGSBM4.js +0 -150
  455. package/chunks/scheduled-tasks-QB4ZVUQS.js +0 -129
  456. package/chunks/scheduler-YRUG22M7.js +0 -124
  457. package/chunks/send-message-Y5I6NYAM.js +0 -295
  458. package/chunks/serve-MXXCDAQN.js +0 -120
  459. package/chunks/shell-6RTKZVMI.js +0 -95
  460. package/chunks/skill-settings-VA4XVYVL.js +0 -120
  461. package/chunks/spawnChannel-F6WVP723.js +0 -114
  462. package/chunks/standalone-update-RGILUQVK.js +0 -120
  463. package/chunks/terminal-image-renderer-SMQE46UJ.js +0 -116
  464. package/chunks/theme-manager-RFO5WWFF.js +0 -104
  465. package/chunks/total-session-admission-HTVTP4BS.js +0 -116
  466. package/chunks/trustedFolders-7OCNMUQE.js +0 -124
  467. package/chunks/updateCheck-7QBDXZRT.js +0 -120
  468. package/chunks/useAutoAcceptIndicator-UI4SNL2O.js +0 -122
  469. package/chunks/workspace-providers-status-PDFZWL5Q.js +0 -116
  470. package/chunks/workspace-registry-23R7XRB5.js +0 -125
  471. package/chunks/workspace-service-MUYO2QIC.js +0 -131
  472. package/chunks/workspace-skills-status-IKECTOOQ.js +0 -115
  473. package/chunks/write-file-GGRBB5TZ.js +0 -90
  474. package/web-shell/assets/channel-CENAhErJ.js +0 -1
  475. package/web-shell/assets/classDiagram-DTDB5LWJ-CM6FArGH.js +0 -1
  476. package/web-shell/assets/classDiagram-v2-JRS7N3AN-CM6FArGH.js +0 -1
  477. package/web-shell/assets/index-8hXIpvo4.js +0 -1865
  478. package/web-shell/assets/index-DclEv91i.css +0 -5
  479. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-B2Q7XDaE.js +0 -1
  480. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-DpZPOSbX.js +0 -8
@@ -11,11 +11,11 @@ import {
11
11
  sendMessage,
12
12
  sendTyping,
13
13
  uploadToCdn
14
- } from "./chunk-MZS7GEC7.js";
14
+ } from "./chunk-SMRDCANI.js";
15
15
  import {
16
16
  ChannelBase,
17
17
  isTerminalTaskLifecycleType
18
- } from "./chunk-E55H6BZ7.js";
18
+ } from "./chunk-IXEZHTDR.js";
19
19
  import "./chunk-IW6RQPQB.js";
20
20
  import "./chunk-CQ35AJ4Z.js";
21
21
  import {
@@ -358,7 +358,6 @@ function validateImagePath(imagePath, workspaceDirs = []) {
358
358
  __name(validateImagePath, "validateImagePath");
359
359
  async function sendText(params) {
360
360
  const { to, text, baseUrl, token, contextToken } = params;
361
- const plainText = markdownToPlainText(text);
362
361
  await sendMessage(baseUrl, token, {
363
362
  to_user_id: to,
364
363
  from_user_id: "",
@@ -366,7 +365,7 @@ async function sendText(params) {
366
365
  message_type: MessageType.BOT,
367
366
  message_state: MessageState.FINISH,
368
367
  context_token: contextToken,
369
- item_list: [{ type: MessageItemType.TEXT, text_item: { text: plainText } }]
368
+ item_list: [{ type: MessageItemType.TEXT, text_item: { text } }]
370
369
  });
371
370
  }
372
371
  __name(sendText, "sendText");
@@ -520,40 +519,47 @@ var WeixinChannel = class extends ChannelBase {
520
519
  }
521
520
  }
522
521
  async handleInboundWithMedia(envelope, image, file) {
523
- if (image) {
524
- try {
525
- const imageData = await downloadAndDecrypt(image.encryptQueryParam, image.aesKey);
526
- envelope.imageBase64 = imageData.toString("base64");
527
- envelope.imageMimeType = detectImageMime(imageData);
528
- } catch (err) {
529
- process.stderr.write(`[Weixin:${this.name}] Failed to download image: ${err instanceof Error ? err.message : err}
522
+ await this.prepareThenHandleInbound(envelope, async () => {
523
+ if (image) {
524
+ try {
525
+ const imageData = await downloadAndDecrypt(image.encryptQueryParam, image.aesKey);
526
+ envelope.imageBase64 = imageData.toString("base64");
527
+ envelope.imageMimeType = detectImageMime(imageData);
528
+ } catch (err) {
529
+ process.stderr.write(`[Weixin:${this.name}] Failed to download image: ${err instanceof Error ? err.message : err}
530
530
  `);
531
+ }
531
532
  }
532
- }
533
- if (file) {
534
- try {
535
- const fileData = await downloadAndDecrypt(file.encryptQueryParam, file.aesKey);
536
- const dir = join2(tmpdir2(), "channel-files", randomUUID2());
537
- mkdirSync(dir, { recursive: true });
538
- const filePath = join2(dir, basename(file.fileName) || `file_${Date.now()}`);
539
- writeFileSync2(filePath, fileData);
540
- envelope.attachments = [
541
- {
542
- type: "file",
543
- filePath,
544
- mimeType: "application/octet-stream",
545
- fileName: file.fileName
546
- }
547
- ];
548
- } catch (err) {
549
- process.stderr.write(`[Weixin:${this.name}] Failed to download file: ${err instanceof Error ? err.message : err}
533
+ if (file) {
534
+ try {
535
+ const fileData = await downloadAndDecrypt(file.encryptQueryParam, file.aesKey);
536
+ const dir = join2(tmpdir2(), "channel-files", randomUUID2());
537
+ mkdirSync(dir, { recursive: true });
538
+ const filePath = join2(dir, basename(file.fileName) || `file_${Date.now()}`);
539
+ writeFileSync2(filePath, fileData);
540
+ envelope.attachments = [
541
+ {
542
+ type: "file",
543
+ filePath,
544
+ mimeType: "application/octet-stream",
545
+ fileName: file.fileName
546
+ }
547
+ ];
548
+ } catch (err) {
549
+ process.stderr.write(`[Weixin:${this.name}] Failed to download file: ${err instanceof Error ? err.message : err}
550
550
  `);
551
- envelope.text = `(User sent a file "${file.fileName}" but download failed)`;
551
+ envelope.text = `(User sent a file "${file.fileName}" but download failed)`;
552
+ }
552
553
  }
553
- }
554
- await super.handleInbound(envelope);
554
+ });
555
555
  }
556
556
  async sendMessage(chatId, text) {
557
+ await this.sendProjectedMessage(chatId, text);
558
+ }
559
+ async sendThreadMessage(chatId, _threadId, text, sourceLabel) {
560
+ await this.sendProjectedMessage(chatId, text, sourceLabel);
561
+ }
562
+ async sendProjectedMessage(chatId, text, sourceLabel) {
557
563
  const contextToken = getContextToken(chatId) || "";
558
564
  const textWithoutCode = text.replace(/```[\s\S]*?```/g, "").replace(/`[^`]*`/g, "");
559
565
  const imageRegex = /\[IMAGE:\s*([^\]]+)\]/gi;
@@ -568,10 +574,12 @@ var WeixinChannel = class extends ChannelBase {
568
574
  cleanedText = cleanedText.replace(new RegExp(`\\[IMAGE:\\s*${escapeRegex(path)}\\]`, "gi"), "");
569
575
  }
570
576
  cleanedText = cleanedText.replace(/\n{3,}/g, "\n\n").trim();
571
- if (cleanedText) {
577
+ const plainText = cleanedText ? markdownToPlainText(cleanedText) : "";
578
+ const visibleText = plainText ? this.formatAttributedText(plainText, sourceLabel) : parsedImages.length > 0 ? sourceLabel : void 0;
579
+ if (visibleText) {
572
580
  await sendText({
573
581
  to: chatId,
574
- text: cleanedText,
582
+ text: visibleText,
575
583
  baseUrl: this.baseUrl,
576
584
  token: this.token,
577
585
  contextToken
@@ -599,7 +607,7 @@ var WeixinChannel = class extends ChannelBase {
599
607
  try {
600
608
  await sendText({
601
609
  to: chatId,
602
- text: "\u56FE\u7247\u53D1\u9001\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",
610
+ text: this.formatAttributedText("\u56FE\u7247\u53D1\u9001\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5", sourceLabel),
603
611
  baseUrl: this.baseUrl,
604
612
  token: this.token,
605
613
  contextToken
@@ -6,7 +6,7 @@ import {
6
6
  import "./chunk-7E7UCJHS.js";
7
7
  import {
8
8
  PollingChannelBase
9
- } from "./chunk-E55H6BZ7.js";
9
+ } from "./chunk-IXEZHTDR.js";
10
10
  import "./chunk-IW6RQPQB.js";
11
11
  import {
12
12
  external_exports
@@ -13235,7 +13235,7 @@ var GitlabChannel = class extends PollingChannelBase {
13235
13235
  async sendMessage(_chatId, _text) {
13236
13236
  throw new Error(`[Channel:${this.name}] sendMessage requires a threadId; use sendThreadMessage`);
13237
13237
  }
13238
- async sendThreadMessage(chatId, threadId, text) {
13238
+ async sendThreadMessage(chatId, threadId, text, sourceLabel) {
13239
13239
  if (!threadId) {
13240
13240
  throw new Error(`[Channel:${this.name}] sendThreadMessage requires a threadId (e.g. "issue:42" or "mr:7")`);
13241
13241
  }
@@ -13244,7 +13244,7 @@ var GitlabChannel = class extends PollingChannelBase {
13244
13244
  throw new Error(`[Channel:${this.name}] invalid threadId format: ${threadId}`);
13245
13245
  }
13246
13246
  const targetType = threadId.startsWith("mr:") ? "mr" : "issue";
13247
- await this.createNote(chatId, targetType, Number(match[1]), text);
13247
+ await this.createNote(chatId, targetType, Number(match[1]), this.formatMarkdownAttributedText(text, sourceLabel));
13248
13248
  }
13249
13249
  onPromptStart(chatId, _sessionId, messageId) {
13250
13250
  if (!messageId)
@@ -13389,6 +13389,13 @@ var GitlabChannel = class extends PollingChannelBase {
13389
13389
  }
13390
13390
  try {
13391
13391
  await this.handleInbound(envelope);
13392
+ } catch (err) {
13393
+ process2.stderr.write(`[Channel:${this.name}] error processing todo ${todo.id}: ${err}
13394
+ `);
13395
+ try {
13396
+ await this.createNote(chatId, targetType, target.iid, this.formatMarkdownAttributedText("\u26A0\uFE0F Failed to process this request. Please re-mention the bot to retry.", this.getInboundErrorSourceLabel(envelope)));
13397
+ } catch {
13398
+ }
13392
13399
  } finally {
13393
13400
  this.reactions.delete(messageId);
13394
13401
  }
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  ChannelBase,
5
5
  isTerminalTaskLifecycleType
6
- } from "./chunk-E55H6BZ7.js";
6
+ } from "./chunk-IXEZHTDR.js";
7
7
  import "./chunk-IW6RQPQB.js";
8
8
  import {
9
9
  require_abort_controller,
@@ -9667,6 +9667,7 @@ var TELEGRAM_BOT_COMMANDS = [
9667
9667
  { command: "cancel", description: "Cancel the running request" },
9668
9668
  { command: "status", description: "Show session info" }
9669
9669
  ];
9670
+ var TELEGRAM_MESSAGE_LIMIT = 4096;
9670
9671
  var TELEGRAM_START_MESSAGE = [
9671
9672
  "Qwen Code Telegram bot",
9672
9673
  "",
@@ -9711,6 +9712,14 @@ var TelegramChannel = class extends ChannelBase {
9711
9712
  getFileUrl(filePath) {
9712
9713
  return `https://api.telegram.org/file/bot${this.bot.token}/${filePath}`;
9713
9714
  }
9715
+ reportInboundError(envelope, error, reply) {
9716
+ process.stderr.write(`[Telegram:${this.name}] Error handling message: ${error}
9717
+ `);
9718
+ const sourceLabel = this.getInboundErrorSourceLabel(envelope);
9719
+ const delivery = sourceLabel ? this.sendThreadMessage(envelope.chatId, envelope.threadId, "Sorry, something went wrong processing your message.", sourceLabel) : reply();
9720
+ delivery.catch(() => {
9721
+ });
9722
+ }
9714
9723
  async connect() {
9715
9724
  if (this.hasConnectedOnce) {
9716
9725
  this.bot = this.createBot();
@@ -9725,10 +9734,7 @@ var TelegramChannel = class extends ChannelBase {
9725
9734
  const text = msg.text;
9726
9735
  const envelope = this.buildEnvelope(msg, text, msg.entities);
9727
9736
  this.handleInbound(envelope).catch((err) => {
9728
- process.stderr.write(`[Telegram:${this.name}] Error handling message: ${err}
9729
- `);
9730
- ctx.reply("Sorry, something went wrong processing your message.").catch(() => {
9731
- });
9737
+ this.reportInboundError(envelope, err, () => ctx.reply("Sorry, something went wrong processing your message."));
9732
9738
  });
9733
9739
  });
9734
9740
  this.bot.on("message:photo", async (ctx) => {
@@ -9737,24 +9743,22 @@ var TelegramChannel = class extends ChannelBase {
9737
9743
  const photo = msg.photo[msg.photo.length - 1];
9738
9744
  if (!photo)
9739
9745
  return;
9740
- try {
9741
- const file = await ctx.api.getFile(photo.file_id);
9742
- const fileUrl = this.getFileUrl(file.file_path);
9743
- const resp = await fetch(fileUrl);
9744
- if (!resp.ok)
9745
- throw new Error(`HTTP ${resp.status}`);
9746
- const buf = Buffer.from(await resp.arrayBuffer());
9747
- envelope.imageBase64 = buf.toString("base64");
9748
- envelope.imageMimeType = "image/jpeg";
9749
- } catch (err) {
9750
- process.stderr.write(`[Telegram:${this.name}] Failed to download photo: ${err instanceof Error ? err.message : err}
9751
- `);
9752
- }
9753
- this.handleInbound(envelope).catch((err) => {
9754
- process.stderr.write(`[Telegram:${this.name}] Error handling message: ${err}
9746
+ this.prepareThenHandleInbound(envelope, async () => {
9747
+ try {
9748
+ const file = await ctx.api.getFile(photo.file_id);
9749
+ const fileUrl = this.getFileUrl(file.file_path);
9750
+ const resp = await fetch(fileUrl);
9751
+ if (!resp.ok)
9752
+ throw new Error(`HTTP ${resp.status}`);
9753
+ const buf = Buffer.from(await resp.arrayBuffer());
9754
+ envelope.imageBase64 = buf.toString("base64");
9755
+ envelope.imageMimeType = "image/jpeg";
9756
+ } catch (err) {
9757
+ process.stderr.write(`[Telegram:${this.name}] Failed to download photo: ${err instanceof Error ? err.message : err}
9755
9758
  `);
9756
- ctx.reply("Sorry, something went wrong processing your message.").catch(() => {
9757
- });
9759
+ }
9760
+ }).catch((err) => {
9761
+ this.reportInboundError(envelope, err, () => ctx.reply("Sorry, something went wrong processing your message."));
9758
9762
  });
9759
9763
  });
9760
9764
  this.bot.on("message:document", async (ctx) => {
@@ -9762,38 +9766,36 @@ var TelegramChannel = class extends ChannelBase {
9762
9766
  const doc = msg.document;
9763
9767
  const fileName = doc.file_name || `file_${Date.now()}`;
9764
9768
  const envelope = this.buildEnvelope(msg, msg.caption || `(file: ${fileName})`, msg.caption_entities);
9765
- try {
9766
- const file = await ctx.api.getFile(doc.file_id);
9767
- const fileUrl = this.getFileUrl(file.file_path);
9768
- const resp = await fetch(fileUrl);
9769
- if (!resp.ok)
9770
- throw new Error(`HTTP ${resp.status}`);
9771
- const buf = Buffer.from(await resp.arrayBuffer());
9772
- const dir = join(tmpdir(), "channel-files", randomUUID());
9773
- mkdirSync(dir, { recursive: true });
9774
- const filePath = join(dir, basename(fileName) || `file_${Date.now()}`);
9775
- writeFileSync(filePath, buf);
9776
- envelope.text = msg.caption || "";
9777
- envelope.attachments = [
9778
- {
9779
- type: "file",
9780
- filePath,
9781
- mimeType: doc.mime_type || "application/octet-stream",
9782
- fileName
9783
- }
9784
- ];
9785
- } catch (err) {
9786
- process.stderr.write(`[Telegram:${this.name}] Failed to download document: ${err instanceof Error ? err.message : err}
9769
+ this.prepareThenHandleInbound(envelope, async () => {
9770
+ try {
9771
+ const file = await ctx.api.getFile(doc.file_id);
9772
+ const fileUrl = this.getFileUrl(file.file_path);
9773
+ const resp = await fetch(fileUrl);
9774
+ if (!resp.ok)
9775
+ throw new Error(`HTTP ${resp.status}`);
9776
+ const buf = Buffer.from(await resp.arrayBuffer());
9777
+ const dir = join(tmpdir(), "channel-files", randomUUID());
9778
+ mkdirSync(dir, { recursive: true });
9779
+ const filePath = join(dir, basename(fileName) || `file_${Date.now()}`);
9780
+ writeFileSync(filePath, buf);
9781
+ envelope.text = msg.caption || "";
9782
+ envelope.attachments = [
9783
+ {
9784
+ type: "file",
9785
+ filePath,
9786
+ mimeType: doc.mime_type || "application/octet-stream",
9787
+ fileName
9788
+ }
9789
+ ];
9790
+ } catch (err) {
9791
+ process.stderr.write(`[Telegram:${this.name}] Failed to download document: ${err instanceof Error ? err.message : err}
9787
9792
  `);
9788
- envelope.text = (msg.caption || "") + `
9793
+ envelope.text = (msg.caption || "") + `
9789
9794
 
9790
9795
  (User sent a file "${fileName}" but download failed)`;
9791
- }
9792
- this.handleInbound(envelope).catch((err) => {
9793
- process.stderr.write(`[Telegram:${this.name}] Error handling message: ${err}
9794
- `);
9795
- ctx.reply("Sorry, something went wrong processing your message.").catch(() => {
9796
- });
9796
+ }
9797
+ }).catch((err) => {
9798
+ this.reportInboundError(envelope, err, () => ctx.reply("Sorry, something went wrong processing your message."));
9797
9799
  });
9798
9800
  });
9799
9801
  this.bot.on("message:voice", async (ctx) => {
@@ -9801,38 +9803,36 @@ var TelegramChannel = class extends ChannelBase {
9801
9803
  const voice = msg.voice;
9802
9804
  const fileName = `voice_${Date.now()}.ogg`;
9803
9805
  const envelope = this.buildEnvelope(msg, msg.caption || "(voice message)", msg.caption_entities);
9804
- try {
9805
- const file = await ctx.api.getFile(voice.file_id);
9806
- const fileUrl = this.getFileUrl(file.file_path);
9807
- const resp = await fetch(fileUrl);
9808
- if (!resp.ok)
9809
- throw new Error(`HTTP ${resp.status}`);
9810
- const buf = Buffer.from(await resp.arrayBuffer());
9811
- const dir = join(tmpdir(), "channel-files", randomUUID());
9812
- mkdirSync(dir, { recursive: true });
9813
- const filePath = join(dir, fileName);
9814
- writeFileSync(filePath, buf);
9815
- envelope.text = msg.caption || "";
9816
- envelope.attachments = [
9817
- {
9818
- type: "audio",
9819
- filePath,
9820
- mimeType: voice.mime_type || "audio/ogg",
9821
- fileName
9822
- }
9823
- ];
9824
- } catch (err) {
9825
- process.stderr.write(`[Telegram:${this.name}] Failed to download voice message: ${err instanceof Error ? err.message : err}
9806
+ this.prepareThenHandleInbound(envelope, async () => {
9807
+ try {
9808
+ const file = await ctx.api.getFile(voice.file_id);
9809
+ const fileUrl = this.getFileUrl(file.file_path);
9810
+ const resp = await fetch(fileUrl);
9811
+ if (!resp.ok)
9812
+ throw new Error(`HTTP ${resp.status}`);
9813
+ const buf = Buffer.from(await resp.arrayBuffer());
9814
+ const dir = join(tmpdir(), "channel-files", randomUUID());
9815
+ mkdirSync(dir, { recursive: true });
9816
+ const filePath = join(dir, fileName);
9817
+ writeFileSync(filePath, buf);
9818
+ envelope.text = msg.caption || "";
9819
+ envelope.attachments = [
9820
+ {
9821
+ type: "audio",
9822
+ filePath,
9823
+ mimeType: voice.mime_type || "audio/ogg",
9824
+ fileName
9825
+ }
9826
+ ];
9827
+ } catch (err) {
9828
+ process.stderr.write(`[Telegram:${this.name}] Failed to download voice message: ${err instanceof Error ? err.message : err}
9826
9829
  `);
9827
- envelope.text = (msg.caption || "") + `
9830
+ envelope.text = (msg.caption || "") + `
9828
9831
 
9829
9832
  (User sent a voice message but download failed)`;
9830
- }
9831
- this.handleInbound(envelope).catch((err) => {
9832
- process.stderr.write(`[Telegram:${this.name}] Error handling message: ${err}
9833
- `);
9834
- ctx.reply("Sorry, something went wrong processing your message.").catch(() => {
9835
- });
9833
+ }
9834
+ }).catch((err) => {
9835
+ this.reportInboundError(envelope, err, () => ctx.reply("Sorry, something went wrong processing your message."));
9836
9836
  });
9837
9837
  });
9838
9838
  this.bot.start({ drop_pending_updates: true }).catch((err) => {
@@ -9913,27 +9913,44 @@ var TelegramChannel = class extends ChannelBase {
9913
9913
  const route = envelope.threadId === void 0 ? {} : { threadId: envelope.threadId };
9914
9914
  await this.inboundRoute.run(route, () => super.handleInbound(envelope));
9915
9915
  }
9916
+ async prepareThenHandleInbound(envelope, prepare) {
9917
+ const route = envelope.threadId === void 0 ? {} : { threadId: envelope.threadId };
9918
+ await this.inboundRoute.run(route, () => super.prepareThenHandleInbound(envelope, prepare));
9919
+ }
9916
9920
  async sendMessage(chatId, text) {
9917
9921
  await this.sendTelegramMessage(chatId, text, this.inboundRoute.getStore()?.threadId);
9918
9922
  }
9919
- async sendResponseMessage(chatId, text, sessionId) {
9923
+ async sendThreadMessage(chatId, threadId, text, sourceLabel) {
9924
+ await this.sendTelegramMessage(chatId, text, threadId, sourceLabel);
9925
+ }
9926
+ async sendResponseMessage(chatId, text, sessionId, sourceLabel) {
9920
9927
  const inboundRoute = this.inboundRoute.getStore();
9921
9928
  const target = this.router.getTarget(sessionId);
9922
9929
  const threadId = inboundRoute !== void 0 ? inboundRoute.threadId : target?.channelName === this.name && target.chatId === chatId ? target.threadId : void 0;
9923
- await this.sendTelegramMessage(chatId, text, threadId);
9930
+ await this.sendTelegramMessage(chatId, text, threadId, sourceLabel ?? this.getResponseSourceLabel(sessionId));
9924
9931
  }
9925
- async pushProactive(target, text) {
9926
- await this.sendTelegramMessage(target.chatId, text, target.threadId);
9932
+ async pushProactive(target, text, sourceLabel) {
9933
+ await this.sendTelegramMessage(target.chatId, text, target.threadId, sourceLabel);
9927
9934
  }
9928
- async sendTelegramMessage(chatId, text, threadId) {
9935
+ async sendTelegramMessage(chatId, text, threadId, sourceLabel) {
9929
9936
  const html = telegramFormat(text);
9930
- const chunks = splitHtmlForTelegram(html);
9931
- const options = threadId === void 0 ? { parse_mode: "HTML" } : { parse_mode: "HTML", message_thread_id: Number(threadId) };
9937
+ const prefix = sourceLabel && text.trim().length > 0 ? `${escapeTelegramHtml(sourceLabel)} ` : void 0;
9938
+ const chunks = splitAttributedTelegramHtml(html, prefix, sourceLabel);
9932
9939
  for (const chunk of chunks) {
9940
+ const options = chunk.isHtml ? threadId === void 0 ? { parse_mode: "HTML" } : {
9941
+ parse_mode: "HTML",
9942
+ message_thread_id: Number(threadId)
9943
+ } : threadId === void 0 ? void 0 : { message_thread_id: Number(threadId) };
9944
+ if (!chunk.isHtml) {
9945
+ await this.bot.api.sendMessage(chatId, chunk.text, options);
9946
+ continue;
9947
+ }
9933
9948
  try {
9934
- await this.bot.api.sendMessage(chatId, chunk, options);
9949
+ await this.bot.api.sendMessage(chatId, chunk.text, options);
9935
9950
  } catch {
9936
- await this.bot.api.sendMessage(chatId, chunk.replace(/<[^>]*>/g, ""), threadId === void 0 ? void 0 : { message_thread_id: Number(threadId) });
9951
+ const withoutTags = chunk.text.replace(/<[^>]*>/g, "");
9952
+ const plainText = prefix && sourceLabel && withoutTags.startsWith(prefix) ? `${sourceLabel} ${withoutTags.slice(prefix.length)}` : withoutTags;
9953
+ await this.bot.api.sendMessage(chatId, plainText, threadId === void 0 ? void 0 : { message_thread_id: Number(threadId) });
9937
9954
  }
9938
9955
  }
9939
9956
  }
@@ -9982,6 +9999,105 @@ var TelegramChannel = class extends ChannelBase {
9982
9999
  };
9983
10000
  }
9984
10001
  };
10002
+ function splitAttributedTelegramHtml(html, prefix, sourceLabel) {
10003
+ const chunks = splitHtmlForTelegram(html);
10004
+ const contentLimit = TELEGRAM_MESSAGE_LIMIT - (prefix?.length ?? 0);
10005
+ if (contentLimit <= 0) {
10006
+ throw new Error("Telegram source label exceeds the message limit.");
10007
+ }
10008
+ const attributed = [];
10009
+ for (const chunk of chunks) {
10010
+ const split = splitTelegramHtmlAtLimit(chunk, contentLimit);
10011
+ if (split) {
10012
+ attributed.push(...split.map((part) => ({
10013
+ text: `${prefix ?? ""}${part}`,
10014
+ isHtml: true
10015
+ })));
10016
+ continue;
10017
+ }
10018
+ attributed.push(...splitAttributedTelegramText(chunk.replace(/<[^>]*>/g, ""), sourceLabel).map((text) => ({ text, isHtml: false })));
10019
+ }
10020
+ return attributed;
10021
+ }
10022
+ __name(splitAttributedTelegramHtml, "splitAttributedTelegramHtml");
10023
+ function splitTelegramHtmlAtLimit(html, limit) {
10024
+ const tokens = html.match(/<[^>]+>|&(?:#\d+|#x[\da-f]+|[a-z][\da-z]+);|[\s\S]/giu);
10025
+ if (!tokens)
10026
+ return [];
10027
+ const chunks = [];
10028
+ const openTags = [];
10029
+ let current = "";
10030
+ let hasContent = false;
10031
+ const closingTags = /* @__PURE__ */ __name(() => [...openTags].reverse().map(({ name }) => `</${name}>`).join(""), "closingTags");
10032
+ const reopenedTags = /* @__PURE__ */ __name(() => openTags.map(({ html: html2 }) => html2).join(""), "reopenedTags");
10033
+ const flush = /* @__PURE__ */ __name(() => {
10034
+ if (!hasContent)
10035
+ return false;
10036
+ chunks.push(`${current}${closingTags()}`);
10037
+ current = reopenedTags();
10038
+ hasContent = false;
10039
+ return true;
10040
+ }, "flush");
10041
+ for (const token of tokens) {
10042
+ const closingMatch = token.match(/^<\/([a-z\d]+)/iu);
10043
+ if (closingMatch) {
10044
+ current += token;
10045
+ const index = openTags.findLastIndex(({ name }) => name === closingMatch[1]?.toLowerCase());
10046
+ if (index !== -1)
10047
+ openTags.splice(index, 1);
10048
+ continue;
10049
+ }
10050
+ const openingMatch = token.match(/^<([a-z\d]+)/iu);
10051
+ const isSelfClosing = /^<br\b|\/>$/iu.test(token);
10052
+ if (openingMatch && !isSelfClosing) {
10053
+ const tag = { name: openingMatch[1].toLowerCase(), html: token };
10054
+ const required = `${current}${token}</${tag.name}>${closingTags()}`;
10055
+ if (required.length > limit && !flush())
10056
+ return void 0;
10057
+ if (`${current}${token}</${tag.name}>${closingTags()}`.length > limit) {
10058
+ return void 0;
10059
+ }
10060
+ current += token;
10061
+ openTags.push(tag);
10062
+ continue;
10063
+ }
10064
+ if (`${current}${token}${closingTags()}`.length > limit && !flush()) {
10065
+ return void 0;
10066
+ }
10067
+ if (`${current}${token}${closingTags()}`.length > limit)
10068
+ return void 0;
10069
+ current += token;
10070
+ hasContent = true;
10071
+ }
10072
+ if (hasContent)
10073
+ chunks.push(`${current}${closingTags()}`);
10074
+ return chunks;
10075
+ }
10076
+ __name(splitTelegramHtmlAtLimit, "splitTelegramHtmlAtLimit");
10077
+ function splitAttributedTelegramText(text, sourceLabel) {
10078
+ if (text.length === 0)
10079
+ return [];
10080
+ const prefix = sourceLabel ? `${sourceLabel} ` : "";
10081
+ const contentLimit = TELEGRAM_MESSAGE_LIMIT - prefix.length;
10082
+ if (contentLimit <= 0) {
10083
+ throw new Error("Telegram source label exceeds the message limit.");
10084
+ }
10085
+ const chunks = [];
10086
+ for (let offset = 0; offset < text.length; ) {
10087
+ let end = Math.min(offset + contentLimit, text.length);
10088
+ if (end < text.length && /[\uD800-\uDBFF]/u.test(text[end - 1] ?? "") && /[\uDC00-\uDFFF]/u.test(text[end] ?? "")) {
10089
+ end--;
10090
+ }
10091
+ chunks.push(`${prefix}${text.slice(offset, end)}`);
10092
+ offset = end;
10093
+ }
10094
+ return chunks;
10095
+ }
10096
+ __name(splitAttributedTelegramText, "splitAttributedTelegramText");
10097
+ function escapeTelegramHtml(value) {
10098
+ return value.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
10099
+ }
10100
+ __name(escapeTelegramHtml, "escapeTelegramHtml");
9985
10101
 
9986
10102
  // packages/channels/telegram/dist/index.js
9987
10103
  var plugin = {
@@ -10,7 +10,7 @@ import "./chunk-7E7UCJHS.js";
10
10
  import {
11
11
  ChannelBase,
12
12
  sanitizeLogText
13
- } from "./chunk-E55H6BZ7.js";
13
+ } from "./chunk-IXEZHTDR.js";
14
14
  import "./chunk-IW6RQPQB.js";
15
15
  import "./chunk-CQ35AJ4Z.js";
16
16
  import "./chunk-DMTGGOSA.js";
@@ -1756,12 +1756,23 @@ var WeComChannel = class extends ChannelBase {
1756
1756
  return true;
1757
1757
  }
1758
1758
  async sendMessage(chatId, text) {
1759
+ await this.sendAttributedMessage(chatId, text);
1760
+ }
1761
+ async sendThreadMessage(chatId, _threadId, text, sourceLabel) {
1762
+ await this.sendAttributedMessage(chatId, text, sourceLabel);
1763
+ }
1764
+ async sendAttributedMessage(chatId, text, sourceLabel) {
1759
1765
  const client = this.client;
1760
1766
  if (!client) {
1761
1767
  throw new Error(`[WeCom:${this.name}] No active SDK client, cannot send.`);
1762
1768
  }
1763
1769
  const { cleanedText, media } = parseOutboundMediaMarkers(text);
1764
- const chunks = splitMarkdownChunks(cleanedText);
1770
+ const prefix = sourceLabel && (cleanedText.trim().length > 0 || media.length > 0) ? `${escapeWeComMarkdown(sourceLabel)}
1771
+ ` : void 0;
1772
+ const chunks = splitMarkdownChunks(cleanedText, prefix);
1773
+ if (chunks.length === 0 && media.length > 0 && prefix) {
1774
+ chunks.push(prefix.trimEnd());
1775
+ }
1765
1776
  if (chunks.length === 0 && media.length === 0) {
1766
1777
  process.stderr.write(`[WeCom:${this.name}] sendMessage produced empty payload for chatId=${sanitizeLogText(chatId, 100)}.
1767
1778
  `);
@@ -1867,22 +1878,24 @@ var WeComChannel = class extends ChannelBase {
1867
1878
  `);
1868
1879
  return;
1869
1880
  }
1870
- attachments = await this.downloadAttachments(body, attachments, messageId, attachmentRouteKey, connectionGeneration);
1871
- if (this.disconnectGeneration !== connectionGeneration) {
1872
- process.stderr.write(`[WeCom:${this.name}] dropping message ${logMessageId}: connection changed during attachment download.
1881
+ await this.processPreflightedInbound(envelope, async () => {
1882
+ attachments = await this.downloadAttachments(body, attachments, messageId, attachmentRouteKey, connectionGeneration);
1883
+ if (this.disconnectGeneration !== connectionGeneration) {
1884
+ process.stderr.write(`[WeCom:${this.name}] dropping message ${logMessageId}: connection changed during attachment download.
1873
1885
  `);
1874
- return;
1875
- }
1876
- if (attachments.length) {
1877
- envelope.attachments = attachments;
1878
- }
1879
- if (!envelope.text && attachments.length) {
1880
- envelope.text = attachments.some((a) => a.type === "image") ? "(image)" : `(file: ${attachments[0]?.fileName ?? "file"})`;
1881
- }
1882
- if (rawMessageId)
1883
- this.seenMessages.set(rawMessageId, Date.now());
1884
- processStarted = true;
1885
- await this.processInbound(envelope);
1886
+ return;
1887
+ }
1888
+ if (attachments.length) {
1889
+ envelope.attachments = attachments;
1890
+ }
1891
+ if (!envelope.text && attachments.length) {
1892
+ envelope.text = attachments.some((a) => a.type === "image") ? "(image)" : `(file: ${attachments[0]?.fileName ?? "file"})`;
1893
+ }
1894
+ if (rawMessageId)
1895
+ this.seenMessages.set(rawMessageId, Date.now());
1896
+ processStarted = true;
1897
+ await this.processInbound(envelope);
1898
+ });
1886
1899
  } catch (err) {
1887
1900
  if (rawMessageId && !processStarted) {
1888
1901
  this.seenMessages.delete(rawMessageId);
@@ -2649,14 +2662,18 @@ function isWeComMediaType(value) {
2649
2662
  return value === "image" || value === "file" || value === "voice" || value === "video";
2650
2663
  }
2651
2664
  __name(isWeComMediaType, "isWeComMediaType");
2652
- function splitMarkdownChunks(text) {
2665
+ function splitMarkdownChunks(text, prefix) {
2653
2666
  if (!text)
2654
2667
  return [];
2668
+ const contentLimit = MARKDOWN_CHUNK_BYTES - Buffer2.byteLength(prefix ?? "");
2669
+ if (contentLimit <= 0) {
2670
+ throw new Error("WeCom source label exceeds the markdown message limit.");
2671
+ }
2655
2672
  const chunks = [];
2656
2673
  let current = "";
2657
2674
  let codeFence;
2658
2675
  const fits = /* @__PURE__ */ __name((value, nextCodeFence = codeFence) => Buffer2.byteLength(nextCodeFence ? `${value}
2659
- ${nextCodeFence}` : value, "utf8") <= MARKDOWN_CHUNK_BYTES, "fits");
2676
+ ${nextCodeFence}` : value, "utf8") <= contentLimit, "fits");
2660
2677
  const flush = /* @__PURE__ */ __name((closeCode = true) => {
2661
2678
  if (!current)
2662
2679
  return;
@@ -2705,9 +2722,13 @@ ${token}` : token;
2705
2722
  }
2706
2723
  }
2707
2724
  flush();
2708
- return chunks;
2725
+ return prefix ? chunks.map((chunk) => `${prefix}${chunk}`) : chunks;
2709
2726
  }
2710
2727
  __name(splitMarkdownChunks, "splitMarkdownChunks");
2728
+ function escapeWeComMarkdown(value) {
2729
+ return value.replace(/([\\`*_{}[\]()#+\-.!|>])/gu, "\\$1");
2730
+ }
2731
+ __name(escapeWeComMarkdown, "escapeWeComMarkdown");
2711
2732
  function toggleCodeFenceState(line, codeFence) {
2712
2733
  let nextCodeFence = codeFence;
2713
2734
  for (const match of line.matchAll(/```|~~~/g)) {