@qwen-code/qwen-code 0.22.0 → 0.22.2-nightly.20260828.7357136dd1

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 (483) hide show
  1. package/bundled/computer-use/SKILL.md +229 -0
  2. package/bundled/computer-use/agents/openai.yaml +4 -0
  3. package/bundled/coordinate/SKILL.md +5 -5
  4. package/bundled/goal-draft/SKILL.md +109 -0
  5. package/bundled/qc-helper/docs/configuration/auth.md +7 -7
  6. package/bundled/qc-helper/docs/configuration/model-providers.md +70 -9
  7. package/bundled/qc-helper/docs/configuration/settings.md +48 -48
  8. package/bundled/qc-helper/docs/extension/introduction.md +3 -1
  9. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  10. package/bundled/qc-helper/docs/features/channels/_meta.ts +1 -0
  11. package/bundled/qc-helper/docs/features/channels/dingtalk.md +12 -0
  12. package/bundled/qc-helper/docs/features/channels/dws.md +120 -0
  13. package/bundled/qc-helper/docs/features/channels/overview.md +37 -6
  14. package/bundled/qc-helper/docs/features/code-review.md +27 -23
  15. package/bundled/qc-helper/docs/features/commands.md +4 -3
  16. package/bundled/qc-helper/docs/features/computer-use.md +57 -51
  17. package/bundled/qc-helper/docs/features/goals.md +58 -0
  18. package/bundled/qc-helper/docs/features/headless.md +13 -11
  19. package/bundled/qc-helper/docs/features/mcp.md +35 -12
  20. package/bundled/qc-helper/docs/features/status-line.md +3 -3
  21. package/bundled/qc-helper/docs/features/sub-agents.md +1 -1
  22. package/bundled/qc-helper/docs/features/worktree.md +1 -1
  23. package/bundled/qc-helper/docs/overview.md +1 -1
  24. package/bundled/qc-helper/docs/quickstart.md +1 -1
  25. package/bundled/qc-helper/docs/qwen-serve.md +29 -6
  26. package/bundled/review/SKILL.md +185 -435
  27. package/bundled/review/references/aone.md +18 -0
  28. package/bundled/review/references/persistence.md +109 -0
  29. package/bundled/review/references/posting.md +272 -0
  30. package/chunks/MaxSizedBox-LMWXCLDV.js +110 -0
  31. package/chunks/{StandaloneSessionPicker-KTHPCSR6.js → StandaloneSessionPicker-W3F7U3JL.js} +87 -88
  32. package/chunks/{acp-startup-profiler-T4GEAPLX.js → acp-startup-profiler-GNYAL6LI.js} +2 -2
  33. package/chunks/{acpAgent-CRY3JZ5O.js → acpAgent-EYZ6EEHD.js} +3223 -2145
  34. package/chunks/agent-RBLGBY65.js +95 -0
  35. package/chunks/agent-headless-L5T4Y4OZ.js +85 -0
  36. package/chunks/{anthropicContentGenerator-Y2OX6LS4.js → anthropicContentGenerator-GMHML35Q.js} +128 -59
  37. package/chunks/{artifact-tool-SBXMTVCB.js → artifact-tool-XSMPHZBT.js} +11 -3
  38. package/chunks/{askUserQuestion-KEQJRFD6.js → askUserQuestion-4SWJY65V.js} +2 -2
  39. package/chunks/bridge-5LR2F2ND.js +119 -0
  40. package/chunks/{ca-D3F4S6NG.js → ca-7HPYOYSZ.js} +3 -0
  41. package/chunks/{channel-management-service-IRTT7RNE.js → channel-management-service-KHR3N6CH.js} +6 -6
  42. package/chunks/channel-settings-store-4FOAZW72.js +120 -0
  43. package/chunks/{channel-worker-group-BJNMR2MP.js → channel-worker-group-6NA6BBZV.js} +9 -7
  44. package/chunks/{channel-worker-manager-EMA7CQDJ.js → channel-worker-manager-NEZ2J6RK.js} +11 -8
  45. package/chunks/{channel-worker-supervisor-F6I6WSWW.js → channel-worker-supervisor-FKU7DIHJ.js} +12 -6
  46. package/chunks/{chunk-HDKCKCYO.js → chunk-23RFD54N.js} +1 -1
  47. package/chunks/{read-package-up-UXSW3YPB.js → chunk-2EAZ43JQ.js} +1 -0
  48. package/chunks/{chunk-KM73TBQ4.js → chunk-2LD5U7Q3.js} +31 -0
  49. package/chunks/{chunk-GIWB5QLV.js → chunk-2SXSLSQE.js} +4 -4
  50. package/chunks/chunk-2TNL5KPM.js +49 -0
  51. package/chunks/chunk-335CJSNF.js +2320 -0
  52. package/chunks/chunk-36LGBEM6.js +130 -0
  53. package/chunks/{chunk-O5BDEWBC.js → chunk-3JXM2CVW.js} +3 -3
  54. package/chunks/{chunk-2E3V7G6Y.js → chunk-3K6TUZHS.js} +55 -50
  55. package/chunks/{chunk-WWUSHZ7M.js → chunk-3OOXT6CR.js} +5 -5
  56. package/chunks/{chunk-2UZJWSVD.js → chunk-3WK3QDNV.js} +2 -2
  57. package/chunks/{chunk-4J7OPYNS.js → chunk-3XOKEVII.js} +6 -6
  58. package/chunks/chunk-3Y34Q3JV.js +1584 -0
  59. package/chunks/{chunk-YMVFIYHV.js → chunk-42IDLQWS.js} +26 -20
  60. package/chunks/{chunk-7HFULI45.js → chunk-454XFGH4.js} +3 -3
  61. package/chunks/chunk-4CMJKUND.js +95 -0
  62. package/chunks/{chunk-XLDFW44M.js → chunk-4K7KNVWH.js} +3 -3
  63. package/chunks/{chunk-YDJRMQU4.js → chunk-4QHPPXK2.js} +16 -8
  64. package/chunks/{chunk-7KOFLDEP.js → chunk-5JTIYALA.js} +1 -1
  65. package/chunks/{chunk-CXJHQVEK.js → chunk-5PA6UEYA.js} +4 -0
  66. package/chunks/{chunk-7NBVNAJJ.js → chunk-62GQFYID.js} +3 -3
  67. package/chunks/{chunk-JGUBDRBC.js → chunk-6DIGWMGT.js} +3 -3
  68. package/chunks/{chunk-X7V3N6YH.js → chunk-6JCGO55P.js} +885 -3380
  69. package/chunks/{chunk-HIK2OF33.js → chunk-6PJOTWAN.js} +1 -1
  70. package/chunks/{chunk-VUMLT7E5.js → chunk-6W2IK5KC.js} +956 -17
  71. package/chunks/{chunk-S4C4JJKE.js → chunk-6ZZBRRKQ.js} +5 -5
  72. package/chunks/{chunk-W4CRPSC5.js → chunk-7EQQR46F.js} +1 -1
  73. package/chunks/{chunk-PHJJ3RVO.js → chunk-7GWQW5ID.js} +7 -15
  74. package/chunks/chunk-7J6OTNGO.js +424 -0
  75. package/chunks/{chunk-URN2JIAQ.js → chunk-7TUBJBBJ.js} +5 -1
  76. package/chunks/{chunk-A5F63FEW.js → chunk-7VD6IPQM.js} +1 -1
  77. package/chunks/{chunk-36OF5PRW.js → chunk-ABS25QER.js} +7 -3
  78. package/chunks/{chunk-UU4WC7DK.js → chunk-AJGR6E6Z.js} +117 -30
  79. package/chunks/{chunk-MQP3MHWN.js → chunk-AU3MMVJF.js} +43 -20
  80. package/chunks/{chunk-ZS5BHEPD.js → chunk-AXC26UCQ.js} +1 -1
  81. package/chunks/{chunk-PDL6LKB5.js → chunk-AY3BNYEQ.js} +1 -1
  82. package/chunks/{chunk-O5Z7EB6Y.js → chunk-AYHQZBJ4.js} +170 -207
  83. package/chunks/{chunk-WRT324N6.js → chunk-B466ZSHZ.js} +3 -3
  84. package/chunks/{chunk-5XHAOUWD.js → chunk-B5OUL5EL.js} +3 -3
  85. package/chunks/{chunk-GAHYKJPV.js → chunk-B5PHIJGI.js} +186 -60
  86. package/chunks/{chunk-IBJ5S45N.js → chunk-B7CDU2SL.js} +2 -2
  87. package/chunks/{chunk-UZPYR3EV.js → chunk-BFPESSTR.js} +1 -1
  88. package/chunks/{chunk-43T5WDQ7.js → chunk-BFSFJR3D.js} +1 -1
  89. package/chunks/{chunk-IWOWEENB.js → chunk-BKWNKLZB.js} +404 -44
  90. package/chunks/{chunk-3CLIDIVQ.js → chunk-BOWFGCEU.js} +3 -3
  91. package/chunks/{chunk-BB5IMQCV.js → chunk-BPAKYXQ3.js} +2 -2
  92. package/chunks/{chunk-ZRYQMWEP.js → chunk-BWORX6FA.js} +2 -2
  93. package/chunks/{chunk-AP3B7LKD.js → chunk-BXDAPVQU.js} +2 -2
  94. package/chunks/{chunk-NUGZAFR2.js → chunk-C2X7KY45.js} +147 -6
  95. package/chunks/{chunk-MZKWFWVG.js → chunk-C3KURPP7.js} +6 -6
  96. package/chunks/{chunk-WZDM44SB.js → chunk-CAJTKR6W.js} +7 -7
  97. package/chunks/{chunk-DB2OKNTU.js → chunk-CFJY4DGX.js} +2 -2
  98. package/chunks/{chunk-QKBYFU2Q.js → chunk-CFKIH3D3.js} +21 -1
  99. package/chunks/{chunk-I432KXWD.js → chunk-CMHFCLBU.js} +1 -1
  100. package/chunks/{create-sub-session-XBCVGNFU.js → chunk-CQH5KTKC.js} +4 -6
  101. package/chunks/{chunk-5HJUPACR.js → chunk-CRKKHXTI.js} +185 -174
  102. package/chunks/{chunk-L4HVF7LM.js → chunk-CYAUBK46.js} +3 -3
  103. package/chunks/{chunk-AZF6SME3.js → chunk-D5LUXLUH.js} +3 -3
  104. package/chunks/{chunk-RPJQ3O4M.js → chunk-DFDWJE6Z.js} +60 -53
  105. package/chunks/{chunk-KSPRQSB4.js → chunk-DIMEPKCW.js} +52 -12
  106. package/chunks/chunk-DJBQCO2E.js +842 -0
  107. package/chunks/{chunk-OVH5Y7KS.js → chunk-DP4MWIM3.js} +19 -3
  108. package/chunks/{chunk-LI4YHTQK.js → chunk-DYXFD5RO.js} +182 -3
  109. package/chunks/{chunk-NW35NVFN.js → chunk-E3XVSVKK.js} +26 -4
  110. package/chunks/{chunk-VSNPOSDN.js → chunk-EB6QRGHM.js} +108 -13
  111. package/chunks/{chunk-FVBVJEBG.js → chunk-EKNBU2X7.js} +10 -8
  112. package/chunks/{chunk-DJEHYM4H.js → chunk-EKSCLBBF.js} +3 -3
  113. package/chunks/{chunk-624NHDGB.js → chunk-ERFDKH32.js} +11 -0
  114. package/chunks/chunk-EW5VVLJT.js +3525 -0
  115. package/chunks/{chunk-T6XLJRQY.js → chunk-EWIQ3NAE.js} +38774 -6955
  116. package/chunks/{chunk-4XPSVIED.js → chunk-FALBWZF4.js} +6 -6
  117. package/chunks/chunk-FBX2SDQ4.js +48 -0
  118. package/chunks/{chunk-VMJL7RH6.js → chunk-FEHMA4RO.js} +539 -651
  119. package/chunks/{chunk-PXOJLJ5W.js → chunk-FMFBLTLY.js} +606 -223
  120. package/chunks/{chunk-ZLCT4C5A.js → chunk-FTF2YIZ5.js} +1 -1
  121. package/chunks/{chunk-IOSEW6KP.js → chunk-G6FECKTJ.js} +9 -6
  122. package/chunks/{chunk-RDG44S5I.js → chunk-GGNE3JAW.js} +2 -2
  123. package/chunks/chunk-GYTKQYDB.js +23 -0
  124. package/chunks/{chunk-B6UBOIFE.js → chunk-H33EQVMG.js} +14 -11
  125. package/chunks/chunk-H72BQNM3.js +645 -0
  126. package/chunks/{chunk-YZBDKFRQ.js → chunk-HGIMWQVT.js} +995 -892
  127. package/chunks/chunk-HOCJDUFY.js +20 -0
  128. package/chunks/{chunk-6UQSU7CQ.js → chunk-HPXV655A.js} +60 -107
  129. package/chunks/{chunk-45NQKMYB.js → chunk-HVC3PNVC.js} +1 -1
  130. package/chunks/{chunk-QJHPWLZC.js → chunk-HYDJDQGJ.js} +1 -1
  131. package/chunks/{chunk-7DMTAQJ6.js → chunk-IB7FQJRY.js} +163 -57
  132. package/chunks/{chunk-AW27A43Y.js → chunk-ICURCKIU.js} +1428 -120
  133. package/chunks/{chunk-4F5WV4RF.js → chunk-ISKH4QX3.js} +288 -15
  134. package/chunks/{chunk-SE55HQGF.js → chunk-J6S24ZJE.js} +92 -70
  135. package/chunks/{chunk-7DYNJFES.js → chunk-JB4JIVTJ.js} +6 -1
  136. package/chunks/{chunk-OARZJFZX.js → chunk-JN4IWWMN.js} +4 -4
  137. package/chunks/{chunk-6PCOVQO2.js → chunk-JUUBLSZU.js} +8 -8
  138. package/chunks/{chunk-FEMQ6Y7W.js → chunk-JWALNCLT.js} +47 -126
  139. package/chunks/{chunk-TBVSALA3.js → chunk-K5KXUXWC.js} +3 -3
  140. package/chunks/{chunk-XYQHT3AW.js → chunk-KTJFDCX4.js} +2 -2
  141. package/chunks/{chunk-6FRJEE2S.js → chunk-LEFCFTEX.js} +6 -6
  142. package/chunks/{chunk-BUGYW6FB.js → chunk-LEGTMYAE.js} +1 -1
  143. package/chunks/{chunk-MPHLIJYL.js → chunk-LLZA2IK3.js} +20 -8
  144. package/chunks/{chunk-BEGIBJAZ.js → chunk-LNETQKBE.js} +4 -4
  145. package/chunks/{chunk-KVGR4MCF.js → chunk-LUEHOUHM.js} +3 -3
  146. package/chunks/{chunk-2A4C2MEG.js → chunk-LVPZO674.js} +35 -12
  147. package/chunks/{chunk-25NESM4G.js → chunk-M4ORUPYI.js} +29 -5
  148. package/chunks/{chunk-VFACN2CE.js → chunk-M6FOJXW3.js} +1 -1
  149. package/chunks/{chunk-FYZMB6DB.js → chunk-MAYHGRP4.js} +12 -12
  150. package/chunks/{chunk-K3LPAED5.js → chunk-MQM5PJML.js} +24 -4
  151. package/chunks/{chunk-ZRFUT5VV.js → chunk-MTJN7FOT.js} +7 -7
  152. package/chunks/{chunk-BGXZBI5B.js → chunk-N4X7G4J2.js} +2 -1
  153. package/chunks/{chunk-2TRNCJK4.js → chunk-NIFYWDYN.js} +1 -1
  154. package/chunks/{chunk-SQS55KR4.js → chunk-NU7RKEZR.js} +2 -2
  155. package/chunks/{chunk-U2UYQMM6.js → chunk-NXMBRVMQ.js} +3 -3
  156. package/chunks/chunk-OI4NY7RA.js +346 -0
  157. package/chunks/{chunk-LURJYO2T.js → chunk-OZ6KS6KW.js} +4 -0
  158. package/chunks/{chunk-K52PZNU4.js → chunk-PDQGMSZK.js} +2 -2
  159. package/chunks/{chunk-PZRUV52H.js → chunk-PPKZ7JOE.js} +20 -2
  160. package/chunks/{chunk-SAH4BD2J.js → chunk-PQEISIKS.js} +67 -0
  161. package/chunks/{chunk-AO4M6NMD.js → chunk-PWIGAMA4.js} +146 -27
  162. package/chunks/{chunk-S3G6YFQC.js → chunk-QFCDF5PL.js} +1 -1
  163. package/chunks/chunk-QHMLYMMS.js +32 -0
  164. package/chunks/{chunk-5XUTPXQU.js → chunk-QPTRRPZU.js} +47 -13
  165. package/chunks/{chunk-UUQFJILB.js → chunk-RFI4YGMR.js} +34 -267
  166. package/chunks/{chunk-A6NRNRKE.js → chunk-RFIDDFAL.js} +1 -1
  167. package/chunks/chunk-RKFGE7JH.js +93 -0
  168. package/chunks/chunk-RNVFRIOO.js +275 -0
  169. package/chunks/{chunk-WU5E4HMO.js → chunk-RU7BK6B3.js} +1 -1
  170. package/chunks/{chunk-J5ZDDUKM.js → chunk-RVXDXY6I.js} +4 -4
  171. package/chunks/{chunk-OE52YHCZ.js → chunk-RWZB422L.js} +11 -11
  172. package/chunks/chunk-RXFQM6FQ.js +42 -0
  173. package/chunks/{chunk-MHG6NDS6.js → chunk-RYNZQGXN.js} +19 -2
  174. package/chunks/{chunk-4CWDWDL6.js → chunk-SJ5ERAW3.js} +1 -1
  175. package/chunks/{chunk-Q54XG7IX.js → chunk-SMPR7SPO.js} +1 -1
  176. package/chunks/{chunk-UIRLQ3N7.js → chunk-SRZZY4IY.js} +3 -3
  177. package/chunks/{chunk-ND7NOI4P.js → chunk-STUJ7IMZ.js} +0 -92
  178. package/chunks/{chunk-VYC7XFYV.js → chunk-SUX7HDNA.js} +5 -5
  179. package/chunks/{chunk-ZZUVC6RI.js → chunk-SVNO44PF.js} +3 -3
  180. package/chunks/{chunk-FDD2IUEL.js → chunk-SZLBBZH4.js} +370 -35
  181. package/chunks/{chunk-GHY5OIYP.js → chunk-T2NKRHZZ.js} +13 -13
  182. package/chunks/chunk-T4EFG2P5.js +113 -0
  183. package/chunks/{chunk-BMCSKS37.js → chunk-TLHUNMO7.js} +6 -6
  184. package/chunks/{chunk-JOLJTKIG.js → chunk-TPI7O7HR.js} +1 -1
  185. package/chunks/{chunk-6QSA4JHL.js → chunk-TQHGJYR3.js} +4492 -1121
  186. package/chunks/{chunk-ISJMN3ML.js → chunk-TTX2JUE6.js} +1 -1
  187. package/chunks/{chunk-EFB657PR.js → chunk-TW3E6YNO.js} +3 -3
  188. package/chunks/{chunk-LD5VIJ7S.js → chunk-TWSKM647.js} +1 -1
  189. package/chunks/chunk-U54AYGEC.js +337 -0
  190. package/chunks/{chunk-A5F2YNO6.js → chunk-UHQFIS7N.js} +260 -10
  191. package/chunks/{chunk-6NFAEG54.js → chunk-UTLCH2FK.js} +24 -13
  192. package/chunks/{chunk-7JBHIQS2.js → chunk-UY3PBNY3.js} +19 -37
  193. package/chunks/{chunk-DWCKACFL.js → chunk-V2NDP3I4.js} +2 -2
  194. package/chunks/{chunk-2GXYDNXP.js → chunk-V2QDDC5J.js} +19 -9
  195. package/chunks/{chunk-VLRBJ24J.js → chunk-V5J4J5TP.js} +2 -2
  196. package/chunks/{chunk-X2UOOG5V.js → chunk-VQUGEVGR.js} +1 -1
  197. package/chunks/{chunk-RDQ7QB4Y.js → chunk-VTHREBQM.js} +2 -2
  198. package/chunks/{chunk-YLFLHKDL.js → chunk-W3N5XAZ6.js} +1 -1
  199. package/chunks/{chunk-62JOGZL5.js → chunk-W6DUQ5GA.js} +11497 -10502
  200. package/chunks/{chunk-P47E4SJC.js → chunk-WALC5VJH.js} +4 -4
  201. package/chunks/{chunk-3ZFJUBTP.js → chunk-WAOIHTJS.js} +1 -1
  202. package/chunks/{chunk-KIVGVFMM.js → chunk-WBHKK3CU.js} +16 -4
  203. package/chunks/{chunk-XZJKSETB.js → chunk-WXEA74YB.js} +3 -3
  204. package/chunks/{chunk-VEND4KA4.js → chunk-X3ZRTCJD.js} +1 -1
  205. package/chunks/{chunk-YRLW2MSX.js → chunk-XBVNNDPK.js} +11 -4
  206. package/chunks/{chunk-XL5K4SVK.js → chunk-XF63PKEN.js} +1 -1
  207. package/chunks/{chunk-LDGWX737.js → chunk-XLLQJRAH.js} +323 -510
  208. package/chunks/{chunk-2Z6LSQMF.js → chunk-XQFT3QUF.js} +1 -1
  209. package/chunks/{chunk-P3QQPMQA.js → chunk-XZA32HII.js} +4 -4
  210. package/chunks/{chunk-C72BXMJ5.js → chunk-Y3QL45LS.js} +1 -1
  211. package/chunks/{chunk-QS4ENGVF.js → chunk-Y4TPOUEV.js} +17 -8
  212. package/chunks/{chunk-AVCCKIZ6.js → chunk-YRZX2PHA.js} +1 -1
  213. package/chunks/{chunk-Z3JMO2CH.js → chunk-YTDVNSUQ.js} +1 -1
  214. package/chunks/{chunk-WS7PAXXR.js → chunk-YWQ237GX.js} +15 -199
  215. package/chunks/chunk-ZELCTN6Y.js +29 -0
  216. package/chunks/{chunk-TQOF5KBL.js → chunk-ZEZKIS2K.js} +0 -31
  217. package/chunks/{chunk-IIWGSX4L.js → chunk-ZTP35P4B.js} +1 -1
  218. package/chunks/{chunk-K623ENWT.js → chunk-ZU4UDIWX.js} +23 -1
  219. package/chunks/chunk-ZYNTSXWK.js +32 -0
  220. package/chunks/config-utils-JVGAP34H.js +113 -0
  221. package/chunks/contextCommand-XDB7OSO7.js +106 -0
  222. package/chunks/{core-runtime-CES6JSVV.js → core-runtime-XHYA2RH7.js} +66 -63
  223. package/chunks/create-sub-session-23ITIELI.js +17 -0
  224. package/chunks/{create-sub-session-UJTPMVOG.js → create-sub-session-MHYCFNCM.js} +168 -87
  225. package/chunks/{cron-create-IKA56DAF.js → cron-create-KJ4IY6PP.js} +57 -10
  226. package/chunks/{cron-delete-K5Q62EGH.js → cron-delete-MBLQCAYY.js} +4 -4
  227. package/chunks/{cron-list-QBFGAMP7.js → cron-list-DWH2PQ47.js} +4 -4
  228. package/chunks/{daemon-RZZUPGOJ.js → daemon-K5XS42ID.js} +567 -27
  229. package/chunks/{daemon-git-worktree-guard-3QY2BQYB.js → daemon-git-worktree-guard-V3P5XLHB.js} +339 -95
  230. package/chunks/daemon-status-provider-KKU7ZTLM.js +117 -0
  231. package/chunks/daemon-trust-policy-TZGK34DW.js +112 -0
  232. package/chunks/{daemon-trust-policy-monitor-TK4K7M63.js → daemon-trust-policy-monitor-F23DD2M4.js} +69 -69
  233. package/chunks/{de-RYUHH2C6.js → de-X6HLSIFE.js} +1 -0
  234. package/chunks/deferred-core-runtime-LKLGBCGZ.js +114 -0
  235. package/chunks/{display-image-OEJMJV3S.js → display-image-BE7I6ZB6.js} +5 -5
  236. package/chunks/{dist-5EV2G6MC.js → dist-4WXLCBDR.js} +1 -1
  237. package/chunks/{dist-ES6HNUW2.js → dist-5VXFRTWU.js} +525 -64
  238. package/chunks/{dist-ESS34DHC.js → dist-6BPYWHVD.js} +89 -65
  239. package/chunks/{dist-2OG3PGKO.js → dist-GFN5DCBX.js} +76 -67
  240. package/chunks/{dist-K7IQB53U.js → dist-HZNT6GQS.js} +1 -1
  241. package/chunks/{dist-J6P3C52Z.js → dist-LVZCXVPF.js} +99 -26
  242. package/chunks/{dist-LZO24N3E.js → dist-N6W6E753.js} +71 -64
  243. package/chunks/dist-QDLFKWOL.js +2512 -0
  244. package/chunks/{dist-VVQBOKDH.js → dist-SWQMYP2Q.js} +18 -16
  245. package/chunks/earlyInputCapture-NERYFYTR.js +107 -0
  246. package/chunks/{edit-A2633SLR.js → edit-ACCATIXB.js} +49 -51
  247. package/chunks/{en-3RHLPITS.js → en-YLXBXM4Z.js} +5 -1
  248. package/chunks/{enter-worktree-OIAHE2TB.js → enter-worktree-35QCAAFP.js} +7 -8
  249. package/chunks/{enterPlanMode-SUGIKLR7.js → enterPlanMode-NEN6EPVM.js} +48 -50
  250. package/chunks/environment-CKWHBC5T.js +129 -0
  251. package/chunks/errors-XTZPNQ77.js +113 -0
  252. package/chunks/{exit-worktree-3UT3SSWT.js → exit-worktree-XQD6D543.js} +7 -8
  253. package/chunks/exitPlanMode-CY344X5J.js +83 -0
  254. package/chunks/{fast-path-3AVP3G35.js → fast-path-YSOX4PAM.js} +31 -10
  255. package/chunks/{fast-path-settings-WHX3J3ZI.js → fast-path-settings-XMFBYFUH.js} +2 -2
  256. package/chunks/{fr-4PL5GHG4.js → fr-FTZWF462.js} +1 -0
  257. package/chunks/{gemini-7PVQWHTH.js → gemini-VQY2YCPH.js} +137 -129
  258. package/chunks/{geminiContentGenerator-B2FOJJDJ.js → geminiContentGenerator-PAPXNIGU.js} +16 -13
  259. package/chunks/{glob-7YGXE6OV.js → glob-GVCUSBBF.js} +48 -50
  260. package/chunks/{goal-tools-TLJCE7YZ.js → goal-tools-5STK6OXW.js} +77 -31
  261. package/chunks/{grep-6DV6LTON.js → grep-5GPICQBU.js} +6 -6
  262. package/chunks/handleAutoUpdate-ZJPJN42W.js +109 -0
  263. package/chunks/i18n-BZYKOST7.js +124 -0
  264. package/chunks/{image-gen-7CSCJ73T.js → image-gen-J6FDGUZP.js} +8 -12
  265. package/chunks/initializer-GO2C5HE3.js +113 -0
  266. package/chunks/installationInfo-WM2GXQZ6.js +107 -0
  267. package/chunks/{ja-HZ7X7PQO.js → ja-2GL5FKYJ.js} +1 -0
  268. package/chunks/{keychain-token-storage-MTFTAESK.js → keychain-token-storage-37XPR34V.js} +2 -2
  269. package/chunks/list-ERDJB7PQ.js +116 -0
  270. package/chunks/{list-agents-43XUEXJV.js → list-agents-DI3YFTDT.js} +2 -2
  271. package/chunks/loadedSettingsAdapter-7JOCVOKV.js +110 -0
  272. package/chunks/{loggingContentGenerator-RNE66CKK.js → loggingContentGenerator-3ONLU3BS.js} +327 -39
  273. package/chunks/{loop-wakeup-E54KDUXC.js → loop-wakeup-XJFONSQ7.js} +5 -5
  274. package/chunks/{ls-CGL2UC3H.js → ls-3VAT2J7A.js} +4 -4
  275. package/chunks/{lsp-5IKUO5DX.js → lsp-5W7IRUBH.js} +2 -2
  276. package/chunks/{managed-npm-update-Y3SC3GLJ.js → managed-npm-update-TLRCC2GE.js} +62 -62
  277. package/chunks/mcp-2LH3QXR2.js +110 -0
  278. package/chunks/{monitor-PXYSGSUN.js → monitor-P7LDAL4W.js} +48 -50
  279. package/chunks/nonInteractiveCli-E5T7PZ27.js +184 -0
  280. package/chunks/{notebook-edit-ISIBJVBR.js → notebook-edit-F7KSG4WQ.js} +49 -51
  281. package/chunks/open-with-auth-4UI3KHUR.js +55 -0
  282. package/chunks/{openaiContentGenerator-6TBOPEGT.js → openaiContentGenerator-2EXCZUGN.js} +29 -32
  283. package/chunks/pidfile-P25DWA5Q.js +111 -0
  284. package/chunks/process-registry-OAEG6WGC.js +662 -0
  285. package/chunks/{processUtils-YK2TDTTU.js → processUtils-PVDKBL35.js} +2 -2
  286. package/chunks/prompt-terminal-ledger-AJ7T7OIV.js +105 -0
  287. package/chunks/{pt-QT5N2Q6Q.js → pt-XN2YWJVM.js} +1 -0
  288. package/chunks/{qwenContentGenerator-CLDMA2Y4.js → qwenContentGenerator-TBBRLWIT.js} +54 -62
  289. package/chunks/{qwenOAuth2-DLDR6UC5.js → qwenOAuth2-OF5WRBQT.js} +7 -11
  290. package/chunks/read-file-6IIY4RLJ.js +32 -0
  291. package/chunks/{read-mcp-resource-XYES2B42.js → read-mcp-resource-XD257PGJ.js} +2 -2
  292. package/chunks/read-package-up-6T6ICKR7.js +13 -0
  293. package/chunks/{record-artifact-W3IBTGL7.js → record-artifact-VW23GS4F.js} +4 -5
  294. package/chunks/report-findings-XA3FJG3N.js +33 -0
  295. package/chunks/request-shutdown-BCLA3JV2.js +133 -0
  296. package/chunks/resumeHistoryUtils-44IETXDY.js +118 -0
  297. package/chunks/ripGrep-E7ESZ7SS.js +39 -0
  298. package/chunks/{ru-STMG5BPD.js → ru-OLTMFJEW.js} +1 -0
  299. package/chunks/{run-qwen-serve-XJHOW2NY.js → run-qwen-serve-DXBCYW7V.js} +924 -356
  300. package/chunks/runtime-RUSPD35D.js +148 -0
  301. package/chunks/scheduled-tasks-DVRJZO6I.js +127 -0
  302. package/chunks/scheduler-TDRB2NSY.js +122 -0
  303. package/chunks/{sdk-exporters-http-RSIOP3G2.js → sdk-exporters-http-TTU2CHBU.js} +5 -5
  304. package/chunks/{sdk-impl-CB3KARSK.js → sdk-impl-UUMVYMAL.js} +12 -6
  305. package/chunks/{send-message-J4VT46OI.js → send-message-AJ4OCUBV.js} +24 -29
  306. package/chunks/serve-KITOM7OR.js +118 -0
  307. package/chunks/{server-74ONDK62.js → server-THCOMUC2.js} +5814 -4549
  308. package/chunks/{session-BO6VBWJP.js → session-XKR5MPXE.js} +152 -142
  309. package/chunks/session-pr-refresh-KRBH7KDA.js +278 -0
  310. package/chunks/{settings-35QZNFDG.js → settings-YXZ4XBKK.js} +72 -72
  311. package/chunks/shell-5FJ2DZ3W.js +93 -0
  312. package/chunks/{skill-DKEMQSNJ.js → skill-VMMJZ6CJ.js} +161 -33
  313. package/chunks/skill-settings-7SG4YA2W.js +118 -0
  314. package/chunks/spawnChannel-BPMIXRBI.js +112 -0
  315. package/chunks/standalone-update-QN5HFRIC.js +118 -0
  316. package/chunks/{startInteractiveUI-J2QSGWPU.js → startInteractiveUI-5A7RQFRP.js} +3139 -2438
  317. package/chunks/{syntheticOutput-JAXMIMZP.js → syntheticOutput-ML43GEFN.js} +3 -3
  318. package/chunks/{task-create-I2H322E4.js → task-create-QN4LYRSE.js} +11 -11
  319. package/chunks/{task-list-3OLIWFTQ.js → task-list-JPLGK45U.js} +5 -5
  320. package/chunks/{task-stop-JAUY6MSY.js → task-stop-CXEH5L2D.js} +2 -2
  321. package/chunks/{task-update-B3XO4CPI.js → task-update-IWEOJFV2.js} +11 -11
  322. package/chunks/{team-create-W534PMGX.js → team-create-HVGVUL2L.js} +49 -51
  323. package/chunks/{team-delete-Q7GE7RRI.js → team-delete-RZVVSGCY.js} +5 -5
  324. package/chunks/{team-plan-approval-WNV6P6NG.js → team-plan-approval-S5A5FQWU.js} +48 -50
  325. package/chunks/terminal-image-renderer-SIVPPXDI.js +114 -0
  326. package/chunks/theme-manager-TA33UZZX.js +102 -0
  327. package/chunks/{todoWrite-FJJTY2TI.js → todoWrite-WDJNQEMW.js} +43 -25
  328. package/chunks/{tool-search-Y4KL3LRE.js → tool-search-NX7IPDKP.js} +19 -20
  329. package/chunks/total-session-admission-PWXZBOVX.js +114 -0
  330. package/chunks/trustedFolders-V6Y4CU3F.js +122 -0
  331. package/chunks/{update-relaunch-OHVFN6KF.js → update-relaunch-CGSX3R37.js} +6 -6
  332. package/chunks/updateCheck-T5O2WGIB.js +118 -0
  333. package/chunks/useAutoAcceptIndicator-ULBJJWPY.js +120 -0
  334. package/chunks/{validateNonInterActiveAuth-WJXH426F.js → validateNonInterActiveAuth-E5S2JSRC.js} +114 -108
  335. package/chunks/{version-QMDRADXM.js → version-LS5JPU36.js} +2 -2
  336. package/chunks/{web-fetch-ROS6P4LP.js → web-fetch-RLMFZTS3.js} +25 -244
  337. package/chunks/{web-search-JS3E76O6.js → web-search-LMCIC4N5.js} +11 -13
  338. package/chunks/{web-shell-static-3NUTRHAH.js → web-shell-static-A6QMUNNV.js} +11 -4
  339. package/chunks/webapi-Z5OM224P.js +4118 -0
  340. package/chunks/{workflow-2FCMBTBZ.js → workflow-JBXU3IGA.js} +713 -138
  341. package/chunks/workspace-providers-status-525ORQBH.js +114 -0
  342. package/chunks/{workspace-registration-store-SU4EJKSD.js → workspace-registration-store-7Y44R4LV.js} +1 -1
  343. package/chunks/workspace-registry-HS4RWUSQ.js +123 -0
  344. package/chunks/workspace-service-7PXDM6EB.js +129 -0
  345. package/chunks/workspace-skills-status-FMJGC2XI.js +113 -0
  346. package/chunks/{workspace-trust-reconciler-4Y4F7XIX.js → workspace-trust-reconciler-3YTWSQBY.js} +78 -77
  347. package/chunks/write-file-BVQRYQQO.js +88 -0
  348. package/chunks/{zh-TW-NX43Z2S2.js → zh-TW-RPTMRTHG.js} +5 -1
  349. package/chunks/{zh-3JQ75KFU.js → zh-UNY63FR3.js} +5 -1
  350. package/chunks/{zoom-image-DNBKCGGF.js → zoom-image-FGCELNS4.js} +14 -15
  351. package/cli.js +13 -13
  352. package/locales/ca.js +3 -0
  353. package/locales/de.js +1 -0
  354. package/locales/en.js +5 -0
  355. package/locales/fr.js +1 -0
  356. package/locales/ja.js +1 -0
  357. package/locales/pt.js +1 -0
  358. package/locales/ru.js +1 -0
  359. package/locales/zh-TW.js +5 -0
  360. package/locales/zh.js +5 -0
  361. package/package.json +3 -3
  362. package/web-shell/assets/{abnfDiagram-VCTEODGH-DWHXEVlf.js → abnfDiagram-VCTEODGH-2XZDeWYO.js} +1 -1
  363. package/web-shell/assets/{arc-CXKjm86V.js → arc-B6UgMh90.js} +1 -1
  364. package/web-shell/assets/{architectureDiagram-5GKGNRK7-B_ynI0cX.js → architectureDiagram-5GKGNRK7-DZgNFeN1.js} +1 -1
  365. package/web-shell/assets/{blockDiagram-NRAW4CY4-DMebd9X0.js → blockDiagram-NRAW4CY4-DQ2wvBFN.js} +1 -1
  366. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BZ5BlxS-.js → c4Diagram-UCG6FXSJ-DMmQMrc4.js} +1 -1
  367. package/web-shell/assets/channel-D_TyfiTx.js +1 -0
  368. package/web-shell/assets/{chunk-2Q5K7J3B-CluJKopE.js → chunk-2Q5K7J3B-C8Zh2e9y.js} +1 -1
  369. package/web-shell/assets/{chunk-5VM5RSS4-hzDAPFOo.js → chunk-5VM5RSS4-C3LTenP8.js} +1 -1
  370. package/web-shell/assets/{chunk-F27PBJKO-6vHioKJe.js → chunk-F27PBJKO-CxABOc8n.js} +1 -1
  371. package/web-shell/assets/{chunk-G27WJ6UU-B_5hKTGo.js → chunk-G27WJ6UU-CD_JxHDC.js} +1 -1
  372. package/web-shell/assets/{chunk-JWPE2WC7-CO9VoFCH.js → chunk-JWPE2WC7-BdmZPmce.js} +1 -1
  373. package/web-shell/assets/{chunk-LCL6LL3I-7L5JpxYu.js → chunk-LCL6LL3I-80bcHmfK.js} +1 -1
  374. package/web-shell/assets/{chunk-POPQ4Y6H-DHLJMAqj.js → chunk-POPQ4Y6H-CNpLZyQF.js} +1 -1
  375. package/web-shell/assets/{chunk-SVP7TREG-Dt-4Cqdl.js → chunk-SVP7TREG-CXlKgMv3.js} +1 -1
  376. package/web-shell/assets/{chunk-XXDRQBXY-QlSQ3ssG.js → chunk-XXDRQBXY-CivyYyvL.js} +1 -1
  377. package/web-shell/assets/classDiagram-DTDB5LWJ-Bw_H3xMd.js +1 -0
  378. package/web-shell/assets/classDiagram-v2-JRS7N3AN-Bw_H3xMd.js +1 -0
  379. package/web-shell/assets/{cose-bilkent-JH36ORCC-DMw3EOxl.js → cose-bilkent-JH36ORCC-COAjRH3w.js} +1 -1
  380. package/web-shell/assets/{cynefin-OW5HDTMX-s6vEA7RQ.js → cynefin-OW5HDTMX-DqU1JHO6.js} +1 -1
  381. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-AOKsvYLt.js → cynefinDiagram-5FMLGOSQ-BCLI1Bvj.js} +1 -1
  382. package/web-shell/assets/{dagre-3AP2YEHR-9QAZn3m7.js → dagre-3AP2YEHR-DmAz8nqF.js} +1 -1
  383. package/web-shell/assets/{diagram-S7CK7UJ4-CWpnu4FN.js → diagram-S7CK7UJ4-Ck-5QLT5.js} +1 -1
  384. package/web-shell/assets/{diagram-UQ7AKVKN-9l0jXD8q.js → diagram-UQ7AKVKN-C0ljX0mW.js} +1 -1
  385. package/web-shell/assets/{diagram-VSXAHHWV-BMUHroj4.js → diagram-VSXAHHWV-DPgvT24v.js} +1 -1
  386. package/web-shell/assets/{diagram-VX7I27RA-Co9x27vm.js → diagram-VX7I27RA-D7hWr1LR.js} +1 -1
  387. package/web-shell/assets/{diagram-Z3DM3KII-BKnTeOER.js → diagram-Z3DM3KII-D59tlOta.js} +1 -1
  388. package/web-shell/assets/{ebnfDiagram-PWID7BFC-QBZD9CKG.js → ebnfDiagram-PWID7BFC-CY2DDx00.js} +1 -1
  389. package/web-shell/assets/{erDiagram-SSCWMZ5O-dKWAEGun.js → erDiagram-SSCWMZ5O-AR4h8Q8k.js} +1 -1
  390. package/web-shell/assets/{flowDiagram-A5DVABFB-CR_UgVqj.js → flowDiagram-A5DVABFB-DbF0HqBz.js} +1 -1
  391. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-DQUnjWO6.js → ganttDiagram-EL5Y4UJY-J52mrIhc.js} +1 -1
  392. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-C4j59wPL.js → gitGraphDiagram-WWUBYQGX-CcgMY5EV.js} +1 -1
  393. package/web-shell/assets/index-BjUg3vPr.css +5 -0
  394. package/web-shell/assets/index-CFwYYVFU.js +1873 -0
  395. package/web-shell/assets/{index-tYXRIPz4.js → index-MQs7l15A.js} +1 -1
  396. package/web-shell/assets/{infoDiagram-RXCK75RN-mzqbt50w.js → infoDiagram-RXCK75RN-Buu3ibp2.js} +1 -1
  397. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-ChLOqhGl.js → ishikawaDiagram-5VMMS53U-CoKQxnF3.js} +1 -1
  398. package/web-shell/assets/{journeyDiagram-EYS64GPL-SifZE-R8.js → journeyDiagram-EYS64GPL-CxK35mTC.js} +1 -1
  399. package/web-shell/assets/{kanban-definition-3QL26DDD-Sft2qlbc.js → kanban-definition-3QL26DDD-tk2CHTQ1.js} +1 -1
  400. package/web-shell/assets/{layout-O2uHVkPd.js → layout-DEpMwb4u.js} +1 -1
  401. package/web-shell/assets/{linear-BVqYgjSc.js → linear-DSQsLh53.js} +1 -1
  402. package/web-shell/assets/{mermaid.core-CZ9MQaJ6.js → mermaid.core-DIZuPBQT.js} +6 -6
  403. package/web-shell/assets/{mindmap-definition-FBJOCRG2-BNQYjBqM.js → mindmap-definition-FBJOCRG2-CCAvk8r_.js} +1 -1
  404. package/web-shell/assets/{pegDiagram-XKGWAZYB-rh1J8uv6.js → pegDiagram-XKGWAZYB-CpJ28jxz.js} +1 -1
  405. package/web-shell/assets/{pieDiagram-E7YTZNPT-BQHR5mn9.js → pieDiagram-E7YTZNPT-ziJR2R32.js} +1 -1
  406. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-CLCbP7mK.js → quadrantDiagram-AXDQQJYC-B60zE3Mh.js} +1 -1
  407. package/web-shell/assets/{railroadDiagram-O6MQD6OU-CDQhrkbm.js → railroadDiagram-O6MQD6OU-M3GqQ_g1.js} +1 -1
  408. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-BdP9uswg.js → requirementDiagram-EFPCY7ZU-ntCtYqTk.js} +1 -1
  409. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CFZDFBXF.js → sankeyDiagram-P5KCCOFB-AYLoItcZ.js} +1 -1
  410. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-BW9WOJXI.js → sequenceDiagram-WJ2MYXX4-DEWk4Mlj.js} +1 -1
  411. package/web-shell/assets/{sizeCapture-X5ZJPWSS-CPMia32z.js → sizeCapture-X5ZJPWSS-OOWvzPay.js} +1 -1
  412. package/web-shell/assets/{stateDiagram-HBIQ2CUA-BANp9p7F.js → stateDiagram-HBIQ2CUA-BcMmvxem.js} +1 -1
  413. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DRLLqPWO.js +1 -0
  414. package/web-shell/assets/{swimlanes-XN3QIQJK-JroXksK-.js → swimlanes-XN3QIQJK-DuZTWWvh.js} +1 -1
  415. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-DOfLQQYt.js +8 -0
  416. package/web-shell/assets/{timeline-definition-24CTP7MA-DfuVIfYY.js → timeline-definition-24CTP7MA-CjqtZXEd.js} +1 -1
  417. package/web-shell/assets/{vennDiagram-4TSXK5OY-BZXoSjRB.js → vennDiagram-4TSXK5OY-knVCVkQ4.js} +1 -1
  418. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-BdiY8avC.js → wardleyDiagram-VM6X3IG4-yoWhw0a2.js} +1 -1
  419. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-DcXh_U4H.js → xychartDiagram-S5SC5T6Z-ue14E_gL.js} +1 -1
  420. package/web-shell/index.html +20 -5
  421. package/chunks/MaxSizedBox-3OZJCC3J.js +0 -110
  422. package/chunks/agent-BFE3DQM3.js +0 -93
  423. package/chunks/agent-headless-LLVKZZ4P.js +0 -87
  424. package/chunks/bridge-EBYO4SYM.js +0 -118
  425. package/chunks/channel-settings-store-5VP2Y2YM.js +0 -115
  426. package/chunks/chunk-2J3OJGTL.js +0 -98
  427. package/chunks/chunk-7IV52LTO.js +0 -202
  428. package/chunks/chunk-AXMWHKXA.js +0 -42
  429. package/chunks/chunk-F6WFNA7U.js +0 -22
  430. package/chunks/chunk-IO257NUD.js +0 -623
  431. package/chunks/chunk-JS73NNWF.js +0 -30
  432. package/chunks/chunk-SJ4HB27T.js +0 -945
  433. package/chunks/chunk-VGHZT6JR.js +0 -51
  434. package/chunks/chunk-YHC2EYYG.js +0 -125
  435. package/chunks/computer-use-EGPWFEX6.js +0 -2142
  436. package/chunks/config-utils-WZ43VOBS.js +0 -25
  437. package/chunks/contextCommand-5DSEQI6S.js +0 -106
  438. package/chunks/daemon-status-provider-EYMLPYJU.js +0 -116
  439. package/chunks/daemon-trust-policy-CQYKZ7VO.js +0 -112
  440. package/chunks/deferred-core-runtime-WFEPUXZR.js +0 -114
  441. package/chunks/earlyInputCapture-PN4PP7V5.js +0 -107
  442. package/chunks/environment-WUPHLPKZ.js +0 -127
  443. package/chunks/errors-WPMPVIAT.js +0 -113
  444. package/chunks/exitPlanMode-MLFHYZNB.js +0 -85
  445. package/chunks/handleAutoUpdate-F5OTWUT5.js +0 -109
  446. package/chunks/i18n-C562S6KN.js +0 -124
  447. package/chunks/initializer-7YPGOFP4.js +0 -113
  448. package/chunks/installationInfo-ARU5Q2H7.js +0 -107
  449. package/chunks/list-KTSK275C.js +0 -116
  450. package/chunks/loadedSettingsAdapter-F3T2EQ5J.js +0 -110
  451. package/chunks/mcp-6ONTVPAY.js +0 -110
  452. package/chunks/nonInteractiveCli-KZDWFAN6.js +0 -178
  453. package/chunks/pidfile-IO7ALSZF.js +0 -111
  454. package/chunks/process-registry-PMJOA5CO.js +0 -172
  455. package/chunks/prompt-terminal-ledger-TCE7PMCE.js +0 -105
  456. package/chunks/read-file-2HOD2ATO.js +0 -33
  457. package/chunks/resumeHistoryUtils-DDSBAQJS.js +0 -118
  458. package/chunks/ripGrep-E7P6K4QR.js +0 -40
  459. package/chunks/runtime-J4SPTJRQ.js +0 -148
  460. package/chunks/scheduler-VRAEZZ4E.js +0 -122
  461. package/chunks/serve-KEAWV4TI.js +0 -118
  462. package/chunks/shell-H6K63WG3.js +0 -95
  463. package/chunks/skill-settings-TCKLXIXM.js +0 -118
  464. package/chunks/spawnChannel-2K6NKWM5.js +0 -111
  465. package/chunks/standalone-update-LSCGOEFP.js +0 -118
  466. package/chunks/terminal-image-renderer-UHX3UD66.js +0 -114
  467. package/chunks/theme-manager-6B47ZPIF.js +0 -102
  468. package/chunks/total-session-admission-NSCFWGJH.js +0 -113
  469. package/chunks/trustedFolders-7XMJWGQ3.js +0 -122
  470. package/chunks/updateCheck-EOVLHD4T.js +0 -118
  471. package/chunks/useAutoAcceptIndicator-ZNMIGBTN.js +0 -120
  472. package/chunks/workspace-providers-status-GPGU5YMT.js +0 -113
  473. package/chunks/workspace-registry-BQISXT6Y.js +0 -122
  474. package/chunks/workspace-service-LLY6HCUC.js +0 -129
  475. package/chunks/workspace-skills-status-L5N2Y3ZP.js +0 -113
  476. package/chunks/write-file-EJHU2Z3E.js +0 -90
  477. package/web-shell/assets/channel-Zg3WHgq_.js +0 -1
  478. package/web-shell/assets/classDiagram-DTDB5LWJ-C16l9jQz.js +0 -1
  479. package/web-shell/assets/classDiagram-v2-JRS7N3AN-C16l9jQz.js +0 -1
  480. package/web-shell/assets/index-BN_m_uHJ.css +0 -5
  481. package/web-shell/assets/index-DrlJu79f.js +0 -1792
  482. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-NZYAoQLU.js +0 -1
  483. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-3YdVX3vj.js +0 -8
@@ -11,7 +11,7 @@ import {
11
11
  sanitizePromptText,
12
12
  sanitizeSenderName,
13
13
  truncateCodePoints
14
- } from "./chunk-AW27A43Y.js";
14
+ } from "./chunk-ICURCKIU.js";
15
15
  import "./chunk-IW6RQPQB.js";
16
16
  import "./chunk-CQ35AJ4Z.js";
17
17
  import {
@@ -31,6 +31,7 @@ init_esbuild_shims();
31
31
 
32
32
  // packages/channels/qqbot/dist/QQChannel.js
33
33
  init_esbuild_shims();
34
+ import { AsyncLocalStorage } from "node:async_hooks";
34
35
  import { readFileSync as readFileSync2, writeFileSync as writeFileSync2, existsSync as existsSync2, mkdirSync as mkdirSync2, renameSync, unlinkSync } from "node:fs";
35
36
  import { join as join2 } from "node:path";
36
37
 
@@ -403,6 +404,8 @@ var QQChannel = class _QQChannel extends ChannelBase {
403
404
  chatTypeMap = /* @__PURE__ */ new Map();
404
405
  /** Track the latest user messageId per chatId for proper reply (msg_id). */
405
406
  replyMsgId = /* @__PURE__ */ new Map();
407
+ replyContextByMessageId = /* @__PURE__ */ new Map();
408
+ inboundReplyContext = new AsyncLocalStorage();
406
409
  /** msg_seq counter per user messageId, for multi-block streaming. */
407
410
  msgSeqMap = /* @__PURE__ */ new Map();
408
411
  /** Periodic cleanup timer for expired replyMsgId entries. */
@@ -469,6 +472,21 @@ var QQChannel = class _QQChannel extends ChannelBase {
469
472
  _reconnectId = 0;
470
473
  blockStreaming = false;
471
474
  flushedSessions = /* @__PURE__ */ new Set();
475
+ /**
476
+ * Sessions with a prompt turn currently in flight, tracked via
477
+ * onPromptStart/onPromptEnd.
478
+ *
479
+ * This is the discriminator the cron textChunk handler uses to tell
480
+ * "prompt-response chunk" from "cron/non-prompt chunk". streamState
481
+ * cannot serve that role (#6094): it is never populated when
482
+ * blockStreaming is 'on' (onResponseChunk early-returns), so prompt
483
+ * chunks leak into cronBuffer; and a residual entry from a finished
484
+ * turn's unsettled flush silently blocks cron delivery. This set is
485
+ * reliable because ChannelBase always brackets a prompt turn with
486
+ * onPromptStart and onPromptEnd (onPromptEnd runs in the prompt path's
487
+ * finally, even on error/cancel), independent of streaming config.
488
+ */
489
+ activePromptSessions = /* @__PURE__ */ new Set();
472
490
  qqStatePath;
473
491
  /**
474
492
  * Path to the global sessions.json managed by start.ts.
@@ -523,7 +541,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
523
541
  }
524
542
  if (!wasInCronFlow)
525
543
  return;
526
- if (this.streamState.has(sessionId))
544
+ if (this.activePromptSessions.has(sessionId))
527
545
  return;
528
546
  let entry = this.cronBuffer.get(sessionId);
529
547
  if (!entry) {
@@ -548,7 +566,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
548
566
  if (toFlush) {
549
567
  const target = this.router.getTarget(sessionId);
550
568
  if (target) {
551
- this.sendMessage(target.chatId, toFlush).then(() => {
569
+ this.sendMessageWithReplyContext(target.chatId, toFlush).then(() => {
552
570
  if (!entry.buffer && this.cronBuffer.get(sessionId) === entry)
553
571
  this.cronBuffer.delete(sessionId);
554
572
  }).catch((err) => {
@@ -578,7 +596,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
578
596
  this.cronBuffer.delete(sessionId);
579
597
  return;
580
598
  }
581
- this.sendMessage(retryTarget.chatId, toFlush).then(() => {
599
+ this.sendMessageWithReplyContext(retryTarget.chatId, toFlush).then(() => {
582
600
  entry.pendingRetry = "";
583
601
  if (!entry.buffer && this.cronBuffer.get(sessionId) === entry)
584
602
  this.cronBuffer.delete(sessionId);
@@ -612,7 +630,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
612
630
  this.cronBuffer.delete(sessionId);
613
631
  return;
614
632
  }
615
- this.sendMessage(retryTarget2.chatId, toFlush).then(() => {
633
+ this.sendMessageWithReplyContext(retryTarget2.chatId, toFlush).then(() => {
616
634
  entry.pendingRetry = "";
617
635
  if (!entry.buffer && this.cronBuffer.get(sessionId) === entry)
618
636
  this.cronBuffer.delete(sessionId);
@@ -743,7 +761,26 @@ var QQChannel = class _QQChannel extends ChannelBase {
743
761
  }
744
762
  }
745
763
  }
764
+ async handleInbound(envelope) {
765
+ const context = envelope.messageId ? this.replyContextByMessageId.get(envelope.messageId) : void 0;
766
+ if (!context || context.chatId !== envelope.chatId) {
767
+ await super.handleInbound(envelope);
768
+ return;
769
+ }
770
+ await this.inboundReplyContext.run(context, () => super.handleInbound(envelope));
771
+ }
746
772
  async sendMessage(chatId, text) {
773
+ const inboundContext = this.inboundReplyContext.getStore();
774
+ const latest = this.replyMsgId.get(chatId);
775
+ const replyContext = inboundContext?.chatId === chatId ? inboundContext : latest ? { chatId, ...latest } : void 0;
776
+ await this.sendMessageWithReplyContext(chatId, text, replyContext);
777
+ }
778
+ async sendResponseMessage(chatId, text, sessionId) {
779
+ const messageId = this.getResponseMessageId(sessionId);
780
+ const replyContext = messageId ? this.replyContextByMessageId.get(messageId) : void 0;
781
+ await this.sendMessageWithReplyContext(chatId, text, replyContext);
782
+ }
783
+ async sendMessageWithReplyContext(chatId, text, replyContext) {
747
784
  if (text.trim() === "<noreply>") {
748
785
  process.stderr.write(`[QQ:${this.name}] <noreply> skipped for ${sanitizeLogText(chatId, 64)}
749
786
  `);
@@ -752,13 +789,12 @@ var QQChannel = class _QQChannel extends ChannelBase {
752
789
  const route = await this.resolveRoute(chatId);
753
790
  if (!route)
754
791
  return;
755
- const entry = this.replyMsgId.get(chatId);
792
+ const entry = replyContext?.chatId === chatId ? replyContext : void 0;
756
793
  const msgId = entry && Date.now() - entry.timestamp < _QQChannel.REPLY_MSG_ID_TTL_MS ? entry.msgId : void 0;
757
794
  if (entry && !msgId) {
758
795
  process.stderr.write(`[QQ:${this.name}] replyMsgId entry expired for ${sanitizeLogText(chatId, 64)}, reply context expired, sending without msg_id
759
796
  `);
760
- this.msgSeqMap.delete(entry.msgId);
761
- this.replyMsgId.delete(chatId);
797
+ this.deleteReplyContext(entry);
762
798
  this.saveQQState();
763
799
  }
764
800
  if (!msgId && this.groupActiveMsgEnabled.get(chatId) === false) {
@@ -976,6 +1012,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
976
1012
  this.detachCronHandler();
977
1013
  this.chatTypeMap.clear();
978
1014
  this.replyMsgId.clear();
1015
+ this.replyContextByMessageId.clear();
979
1016
  this.msgSeqMap.clear();
980
1017
  this.botOpenIdByGroup.clear();
981
1018
  this.warnedSenderOpenIds.clear();
@@ -995,23 +1032,36 @@ var QQChannel = class _QQChannel extends ChannelBase {
995
1032
  this.flushingSessions.clear();
996
1033
  this.pendingStreamDelete.clear();
997
1034
  this.flushedSessions.clear();
1035
+ this.activePromptSessions.clear();
998
1036
  }
999
1037
  /**
1000
- * QQ Bot API V2 does not provide a typing indicator endpoint.
1001
- * ChannelBase calls these hooks to signal prompt start/end;
1002
- * they are intentionally no-ops for this channel.
1038
+ * QQ Bot API V2 does not provide a typing indicator endpoint, but these
1039
+ * hooks still maintain activePromptSessions the cron textChunk
1040
+ * discriminator (see activePromptSessions). ChannelBase always pairs the
1041
+ * two calls per prompt turn (onPromptEnd runs in the prompt path's
1042
+ * finally, even on error/cancel).
1003
1043
  */
1004
- onPromptStart(_chatId, _sessionId, _messageId) {
1044
+ onPromptStart(_chatId, sessionId, _messageId) {
1045
+ this.activePromptSessions.add(sessionId);
1005
1046
  }
1006
- onPromptEnd(_chatId, _sessionId, _messageId) {
1047
+ onPromptEnd(_chatId, sessionId, _messageId) {
1048
+ this.activePromptSessions.delete(sessionId);
1007
1049
  }
1008
1050
  // ── Streaming (idle-flush with per-session buffers) ────────────
1009
- onResponseChunk(chatId, chunk, sessionId) {
1051
+ onResponseChunk(chatId, chunk, sessionId, segment) {
1010
1052
  if (this.blockStreaming)
1011
1053
  return;
1012
1054
  let state = this.streamState.get(sessionId);
1013
1055
  if (!state) {
1014
- state = { chatId, buffer: chunk, timer: null, retryCount: 0 };
1056
+ const messageId = segment?.messageId ?? this.getResponseMessageId(sessionId);
1057
+ const replyContext = messageId ? this.replyContextByMessageId.get(messageId) : void 0;
1058
+ state = {
1059
+ chatId,
1060
+ buffer: chunk,
1061
+ timer: null,
1062
+ retryCount: 0,
1063
+ ...replyContext ? { replyContext } : {}
1064
+ };
1015
1065
  this.streamState.set(sessionId, state);
1016
1066
  } else {
1017
1067
  state.buffer += chunk;
@@ -1071,7 +1121,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
1071
1121
  */
1072
1122
  flushAndTrack(sessionId, buffer, state, logLabel) {
1073
1123
  this.flushingSessions.add(sessionId);
1074
- this.sendMessage(state.chatId, buffer).then(() => {
1124
+ this.sendMessageWithReplyContext(state.chatId, buffer, state.replyContext).then(() => {
1075
1125
  const current = this.streamState.get(sessionId);
1076
1126
  if (current !== state)
1077
1127
  return;
@@ -1218,6 +1268,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
1218
1268
  this.flushingSessions.delete(sessionId);
1219
1269
  this.pendingStreamDelete.delete(sessionId);
1220
1270
  this.flushedSessions.delete(sessionId);
1271
+ this.activePromptSessions.delete(sessionId);
1221
1272
  super.onSessionDied(sessionId);
1222
1273
  }
1223
1274
  // ── State Persistence (cross-server context continuation) ──────
@@ -1341,7 +1392,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
1341
1392
  if (v === null || typeof v !== "object")
1342
1393
  return false;
1343
1394
  const o = v;
1344
- return typeof o["msgId"] === "string" && o["msgId"].length <= 128 && typeof o["timestamp"] === "number" && Number.isFinite(o["timestamp"]) && o["timestamp"] <= Date.now() + _QQChannel.REPLY_MSG_ID_TTL_MS;
1395
+ return typeof o["msgId"] === "string" && o["msgId"].length <= 128 && typeof o["timestamp"] === "number" && Number.isFinite(o["timestamp"]) && o["timestamp"] >= Date.now() - _QQChannel.REPLY_MSG_ID_TTL_MS && o["timestamp"] <= Date.now() + _QQChannel.REPLY_MSG_ID_TTL_MS;
1345
1396
  }).map(([k, v]) => [
1346
1397
  k,
1347
1398
  typeof v === "string" ? { msgId: v, timestamp: Date.now() } : v
@@ -1351,6 +1402,10 @@ var QQChannel = class _QQChannel extends ChannelBase {
1351
1402
  `);
1352
1403
  }
1353
1404
  }
1405
+ this.replyContextByMessageId = new Map(Array.from(this.replyMsgId, ([chatId, entry]) => [
1406
+ entry.msgId,
1407
+ { chatId, ...entry }
1408
+ ]));
1354
1409
  if (raw.msgSeqMap) {
1355
1410
  const arr = raw.msgSeqMap;
1356
1411
  const totalRaw = Array.isArray(arr) ? arr.length : 0;
@@ -1360,6 +1415,11 @@ var QQChannel = class _QQChannel extends ChannelBase {
1360
1415
  `);
1361
1416
  }
1362
1417
  }
1418
+ for (const msgId of this.msgSeqMap.keys()) {
1419
+ if (!this.replyContextByMessageId.has(msgId)) {
1420
+ this.msgSeqMap.delete(msgId);
1421
+ }
1422
+ }
1363
1423
  if (raw.groupActiveMsgEnabled) {
1364
1424
  const arr = raw.groupActiveMsgEnabled;
1365
1425
  const totalRaw = Array.isArray(arr) ? arr.length : 0;
@@ -1459,18 +1519,19 @@ var QQChannel = class _QQChannel extends ChannelBase {
1459
1519
  }
1460
1520
  }
1461
1521
  // ── ReplyMsgId helpers ────────────────────────────────────────
1462
- /**
1463
- * Set replyMsgId for a chat, cleaning up the previous entry's msgSeqMap
1464
- * to prevent orphaned entries accumulating over time.
1465
- */
1466
1522
  setReplyMsgId(chatId, msgId) {
1467
- const oldEntry = this.replyMsgId.get(chatId);
1468
- if (oldEntry && oldEntry.msgId !== msgId) {
1469
- this.msgSeqMap.delete(oldEntry.msgId);
1470
- }
1471
- this.replyMsgId.set(chatId, { msgId, timestamp: Date.now() });
1523
+ const timestamp = Date.now();
1524
+ this.replyMsgId.set(chatId, { msgId, timestamp });
1525
+ this.replyContextByMessageId.set(msgId, { chatId, msgId, timestamp });
1472
1526
  this.saveQQState();
1473
1527
  }
1528
+ deleteReplyContext(context) {
1529
+ this.replyContextByMessageId.delete(context.msgId);
1530
+ this.msgSeqMap.delete(context.msgId);
1531
+ if (this.replyMsgId.get(context.chatId)?.msgId === context.msgId) {
1532
+ this.replyMsgId.delete(context.chatId);
1533
+ }
1534
+ }
1474
1535
  /**
1475
1536
  * Start periodic cleanup of expired replyMsgId entries.
1476
1537
  * Evicts entries older than 5 minutes every 60 seconds, and cascades
@@ -1481,6 +1542,12 @@ var QQChannel = class _QQChannel extends ChannelBase {
1481
1542
  this.replyMsgIdCleanupTimer = setInterval(() => {
1482
1543
  const cutoff = Date.now() - _QQChannel.REPLY_MSG_ID_TTL_MS;
1483
1544
  let dirty = false;
1545
+ for (const context of this.replyContextByMessageId.values()) {
1546
+ if (context.timestamp < cutoff) {
1547
+ this.deleteReplyContext(context);
1548
+ dirty = true;
1549
+ }
1550
+ }
1484
1551
  for (const [chatId, entry] of this.replyMsgId) {
1485
1552
  if (entry.timestamp < cutoff) {
1486
1553
  this.msgSeqMap.delete(entry.msgId);
@@ -2267,6 +2334,12 @@ var QQChannel = class _QQChannel extends ChannelBase {
2267
2334
  if (replyEntry)
2268
2335
  this.msgSeqMap.delete(replyEntry.msgId);
2269
2336
  this.replyMsgId.delete(groupId);
2337
+ for (const context of this.replyContextByMessageId.values()) {
2338
+ if (context.chatId === groupId) {
2339
+ this.replyContextByMessageId.delete(context.msgId);
2340
+ this.msgSeqMap.delete(context.msgId);
2341
+ }
2342
+ }
2270
2343
  this.botOpenIdByGroup.delete(groupId);
2271
2344
  this._lastKeywordNoMatchLog.delete(groupId);
2272
2345
  let cleanedCron = 0;
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  ChannelBase,
5
5
  isTerminalTaskLifecycleType
6
- } from "./chunk-AW27A43Y.js";
6
+ } from "./chunk-ICURCKIU.js";
7
7
  import "./chunk-IW6RQPQB.js";
8
8
  import {
9
9
  require_abort_controller,
@@ -9737,20 +9737,21 @@ var TelegramChannel = class extends ChannelBase {
9737
9737
  const photo = msg.photo[msg.photo.length - 1];
9738
9738
  if (!photo)
9739
9739
  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}
9740
+ this.prepareThenHandleInbound(envelope, async () => {
9741
+ try {
9742
+ const file = await ctx.api.getFile(photo.file_id);
9743
+ const fileUrl = this.getFileUrl(file.file_path);
9744
+ const resp = await fetch(fileUrl);
9745
+ if (!resp.ok)
9746
+ throw new Error(`HTTP ${resp.status}`);
9747
+ const buf = Buffer.from(await resp.arrayBuffer());
9748
+ envelope.imageBase64 = buf.toString("base64");
9749
+ envelope.imageMimeType = "image/jpeg";
9750
+ } catch (err) {
9751
+ process.stderr.write(`[Telegram:${this.name}] Failed to download photo: ${err instanceof Error ? err.message : err}
9751
9752
  `);
9752
- }
9753
- this.handleInbound(envelope).catch((err) => {
9753
+ }
9754
+ }).catch((err) => {
9754
9755
  process.stderr.write(`[Telegram:${this.name}] Error handling message: ${err}
9755
9756
  `);
9756
9757
  ctx.reply("Sorry, something went wrong processing your message.").catch(() => {
@@ -9762,34 +9763,35 @@ var TelegramChannel = class extends ChannelBase {
9762
9763
  const doc = msg.document;
9763
9764
  const fileName = doc.file_name || `file_${Date.now()}`;
9764
9765
  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}
9766
+ this.prepareThenHandleInbound(envelope, async () => {
9767
+ try {
9768
+ const file = await ctx.api.getFile(doc.file_id);
9769
+ const fileUrl = this.getFileUrl(file.file_path);
9770
+ const resp = await fetch(fileUrl);
9771
+ if (!resp.ok)
9772
+ throw new Error(`HTTP ${resp.status}`);
9773
+ const buf = Buffer.from(await resp.arrayBuffer());
9774
+ const dir = join(tmpdir(), "channel-files", randomUUID());
9775
+ mkdirSync(dir, { recursive: true });
9776
+ const filePath = join(dir, basename(fileName) || `file_${Date.now()}`);
9777
+ writeFileSync(filePath, buf);
9778
+ envelope.text = msg.caption || "";
9779
+ envelope.attachments = [
9780
+ {
9781
+ type: "file",
9782
+ filePath,
9783
+ mimeType: doc.mime_type || "application/octet-stream",
9784
+ fileName
9785
+ }
9786
+ ];
9787
+ } catch (err) {
9788
+ process.stderr.write(`[Telegram:${this.name}] Failed to download document: ${err instanceof Error ? err.message : err}
9787
9789
  `);
9788
- envelope.text = (msg.caption || "") + `
9790
+ envelope.text = (msg.caption || "") + `
9789
9791
 
9790
9792
  (User sent a file "${fileName}" but download failed)`;
9791
- }
9792
- this.handleInbound(envelope).catch((err) => {
9793
+ }
9794
+ }).catch((err) => {
9793
9795
  process.stderr.write(`[Telegram:${this.name}] Error handling message: ${err}
9794
9796
  `);
9795
9797
  ctx.reply("Sorry, something went wrong processing your message.").catch(() => {
@@ -9801,34 +9803,35 @@ 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) => {
9833
+ }
9834
+ }).catch((err) => {
9832
9835
  process.stderr.write(`[Telegram:${this.name}] Error handling message: ${err}
9833
9836
  `);
9834
9837
  ctx.reply("Sorry, something went wrong processing your message.").catch(() => {
@@ -9913,6 +9916,10 @@ var TelegramChannel = class extends ChannelBase {
9913
9916
  const route = envelope.threadId === void 0 ? {} : { threadId: envelope.threadId };
9914
9917
  await this.inboundRoute.run(route, () => super.handleInbound(envelope));
9915
9918
  }
9919
+ async prepareThenHandleInbound(envelope, prepare) {
9920
+ const route = envelope.threadId === void 0 ? {} : { threadId: envelope.threadId };
9921
+ await this.inboundRoute.run(route, () => super.prepareThenHandleInbound(envelope, prepare));
9922
+ }
9916
9923
  async sendMessage(chatId, text) {
9917
9924
  await this.sendTelegramMessage(chatId, text, this.inboundRoute.getStore()?.threadId);
9918
9925
  }