@qwen-code/qwen-code 0.23.3 → 0.23.4-dev.codemode-responses.20260914.87437db784

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 (464) hide show
  1. package/bundled/computer-use/SKILL.md +46 -198
  2. package/bundled/computer-use/references/macos.md +208 -0
  3. package/bundled/computer-use/references/windows-linux.md +247 -0
  4. package/bundled/goal-draft/SKILL.md +10 -10
  5. package/bundled/qc-helper/docs/configuration/settings.md +81 -71
  6. package/bundled/qc-helper/docs/extension/getting-started-extensions.md +2 -0
  7. package/bundled/qc-helper/docs/extension/introduction.md +9 -3
  8. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  9. package/bundled/qc-helper/docs/features/agent-board.md +89 -0
  10. package/bundled/qc-helper/docs/features/channels/dingtalk.md +3 -21
  11. package/bundled/qc-helper/docs/features/channels/dws.md +5 -1
  12. package/bundled/qc-helper/docs/features/channels/overview.md +5 -6
  13. package/bundled/qc-helper/docs/features/code-review.md +18 -4
  14. package/bundled/qc-helper/docs/features/commands.md +9 -0
  15. package/bundled/qc-helper/docs/features/computer-use.md +26 -8
  16. package/bundled/qc-helper/docs/features/cross-session-protocol.md +23 -5
  17. package/bundled/qc-helper/docs/features/followup-suggestions.md +17 -5
  18. package/bundled/qc-helper/docs/features/goals.md +22 -18
  19. package/bundled/qc-helper/docs/features/hooks.md +48 -37
  20. package/bundled/qc-helper/docs/features/skills.md +33 -3
  21. package/bundled/qc-helper/docs/features/status-line.md +2 -0
  22. package/bundled/qc-helper/docs/features/sub-agents.md +27 -0
  23. package/bundled/qc-helper/docs/qwen-serve.md +7 -3
  24. package/bundled/review/SKILL.md +20 -10
  25. package/bundled/review/references/persistence.md +2 -0
  26. package/bundled/workflow-authoring/SKILL.md +442 -0
  27. package/bundled/workflow-creator/SKILL.md +1 -1
  28. package/chunks/{MaxSizedBox-D4LW7RZZ.js → MaxSizedBox-CSMC6NNQ.js} +59 -55
  29. package/chunks/{StandaloneSessionPicker-ALTTRWUP.js → StandaloneSessionPicker-5G46NROB.js} +83 -79
  30. package/chunks/{acp-startup-profiler-KEU6VAYR.js → acp-startup-profiler-RUQNTNU5.js} +2 -2
  31. package/chunks/acp-subagent-executor-4JLSF7SA.js +141 -0
  32. package/chunks/{acpAgent-BBSW7XZG.js → acpAgent-WJ45JV2S.js} +1026 -355
  33. package/chunks/{agent-SQ6OY3QD.js → agent-KWNOVXAD.js} +43 -39
  34. package/chunks/{agent-headless-RI2THRQ7.js → agent-headless-TU5N3GFF.js} +43 -39
  35. package/chunks/{anthropicContentGenerator-JSKMKS6V.js → anthropicContentGenerator-H5YPXIDE.js} +37 -15
  36. package/chunks/{artifact-tool-PMYZCYNH.js → artifact-tool-MFGORTWZ.js} +59 -109
  37. package/chunks/{askUserQuestion-4M4YYIB4.js → askUserQuestion-WS4GUT7C.js} +3 -3
  38. package/chunks/{bridge-DAFMI72L.js → bridge-PF7UX6MH.js} +63 -58
  39. package/chunks/{build-63BIOYWK.js → build-5KWQBWEQ.js} +1 -1
  40. package/chunks/{ca-KC2AISNS.js → ca-GZ4FDJU2.js} +3 -3
  41. package/chunks/{channel-management-service-OWDXVL7R.js → channel-management-service-AFVIT4VH.js} +8 -8
  42. package/chunks/{channel-settings-store-4I6JONT7.js → channel-settings-store-3OVAGIC2.js} +68 -64
  43. package/chunks/{channel-worker-group-F2ZZMLNS.js → channel-worker-group-JR6JOELM.js} +8 -8
  44. package/chunks/{channel-worker-manager-2SZLJJSJ.js → channel-worker-manager-AVKJEZFL.js} +8 -8
  45. package/chunks/{channel-worker-supervisor-ZFNWMG6D.js → channel-worker-supervisor-OOYY7BAQ.js} +5 -5
  46. package/chunks/{chunk-6JACAGYH.js → chunk-2S2WIGCM.js} +1 -1
  47. package/chunks/{chunk-NRXWJXJ4.js → chunk-2YGR3VN6.js} +15 -15
  48. package/chunks/{chunk-IUVIBDKU.js → chunk-2YMRRI2C.js} +9 -10
  49. package/chunks/{chunk-3BTSSIJO.js → chunk-3DOAKZYD.js} +99 -14
  50. package/chunks/{chunk-F53KKZUD.js → chunk-3LMDSCLU.js} +158 -10
  51. package/chunks/{chunk-2ZN3O5FT.js → chunk-457DR2MC.js} +6 -6
  52. package/chunks/{chunk-WG7BL3FY.js → chunk-473RJLIH.js} +1 -1
  53. package/chunks/{chunk-W5ZQMAEM.js → chunk-4Y2I3CI3.js} +1 -1
  54. package/chunks/{chunk-HGEUHUEV.js → chunk-54B2LTKP.js} +1 -1
  55. package/chunks/{chunk-IRH27ZC2.js → chunk-5EZRLTLQ.js} +4 -4
  56. package/chunks/{chunk-DLH7YIX6.js → chunk-5FK4MSHB.js} +3 -3
  57. package/chunks/{chunk-CUEXOHQH.js → chunk-5ODRE7E5.js} +9 -15
  58. package/chunks/{chunk-532WHF4F.js → chunk-5VQR2DD7.js} +2 -2
  59. package/chunks/{chunk-3KQBQ6FM.js → chunk-63WKMKVD.js} +190 -28
  60. package/chunks/{chunk-YBUMTY7B.js → chunk-66N6C4EH.js} +1 -1
  61. package/chunks/{chunk-MLQNSPRZ.js → chunk-6MLDTOHU.js} +15 -5
  62. package/chunks/{chunk-SBRX4BDI.js → chunk-6NKDU7YL.js} +2 -2
  63. package/chunks/{chunk-3UXUOFO6.js → chunk-6TMXX4Z4.js} +9 -10
  64. package/chunks/{chunk-Y2MYW47X.js → chunk-6WXVEDT2.js} +9 -2
  65. package/chunks/{chunk-ZHKTKHMO.js → chunk-7MIBD3LG.js} +1 -1
  66. package/chunks/{chunk-EVTNACMT.js → chunk-A6QMKS5S.js} +12 -12
  67. package/chunks/{chunk-NOAG7N22.js → chunk-A6YU6R5N.js} +2 -2
  68. package/chunks/{chunk-76RGWKLS.js → chunk-ABNX6E6K.js} +1 -1
  69. package/chunks/chunk-ACHCT36C.js +28 -0
  70. package/chunks/{chunk-NE624IVP.js → chunk-ADQUK6WA.js} +1 -1
  71. package/chunks/{chunk-PLLIWEM3.js → chunk-AEWCOE64.js} +2 -2
  72. package/chunks/{chunk-3FPYT6QC.js → chunk-ARDHE6MM.js} +23 -0
  73. package/chunks/{chunk-LILGKQ4B.js → chunk-AXZMWAJV.js} +156 -26
  74. package/chunks/{chunk-SYLECP23.js → chunk-B776VKDA.js} +4 -4
  75. package/chunks/{chunk-AC6KDLH3.js → chunk-BNYQHLPR.js} +1 -1
  76. package/chunks/{chunk-BZM5U74J.js → chunk-BS7ON54G.js} +724 -468
  77. package/chunks/{chunk-TPKQIA7G.js → chunk-BSIOCNDK.js} +1 -1
  78. package/chunks/{chunk-U7O65WKL.js → chunk-BW2SMO6L.js} +1 -1
  79. package/chunks/{chunk-POC3YMHG.js → chunk-BY6CE34S.js} +4 -4
  80. package/chunks/{chunk-RLLRJJDR.js → chunk-C3VNHDWJ.js} +2 -2
  81. package/chunks/{chunk-WBCPROWX.js → chunk-C4HBZQNH.js} +1 -1
  82. package/chunks/{chunk-MSNHNAQZ.js → chunk-C5ABXOC2.js} +3 -3
  83. package/chunks/{chunk-NOO4QFXM.js → chunk-C75BXMPM.js} +1 -3
  84. package/chunks/chunk-CCWWPFZJ.js +191 -0
  85. package/chunks/chunk-CFMZLE3L.js +75 -0
  86. package/chunks/{chunk-N7VWZDWW.js → chunk-CFSBWJBB.js} +4462 -3840
  87. package/chunks/{chunk-KOKPXIAN.js → chunk-CL7JONZN.js} +3 -3
  88. package/chunks/{chunk-AXTFYDXT.js → chunk-CXXAZ2LZ.js} +1 -1
  89. package/chunks/{chunk-JYKWOREU.js → chunk-DBUOMHLZ.js} +13 -3
  90. package/chunks/{chunk-R4Q2PEFV.js → chunk-DLJBYORJ.js} +1 -1
  91. package/chunks/{chunk-DT75RKNH.js → chunk-DNVA2MQ2.js} +3 -3
  92. package/chunks/{chunk-J3TJH52D.js → chunk-DOTF2PF2.js} +1 -1
  93. package/chunks/{chunk-HGAELO7B.js → chunk-DQMBQCTY.js} +2 -2
  94. package/chunks/{chunk-2ALXPGB4.js → chunk-E6IR653O.js} +1 -1
  95. package/chunks/{chunk-ZKYR7QS4.js → chunk-EDB556X7.js} +2 -2
  96. package/chunks/chunk-EKJXDLDD.js +32 -0
  97. package/chunks/{chunk-NUQVB25K.js → chunk-EKMJR7M3.js} +2 -2
  98. package/chunks/{chunk-7QYWGTHB.js → chunk-EPVEPTI3.js} +44 -151
  99. package/chunks/{chunk-GCDXVPFK.js → chunk-EZSSJSKR.js} +31 -7
  100. package/chunks/{chunk-S6Q6Q4P2.js → chunk-FBDHP23D.js} +1 -1
  101. package/chunks/{chunk-UKZ45TJL.js → chunk-FFBP5POK.js} +420 -219
  102. package/chunks/{chunk-3I7W2POO.js → chunk-FGROOEKM.js} +5 -40
  103. package/chunks/{chunk-HNLMYDQE.js → chunk-FMLBBXHB.js} +13 -9
  104. package/chunks/{chunk-SSGAAWLY.js → chunk-GCV4NOHV.js} +95 -73
  105. package/chunks/{chunk-ALMR3E6Q.js → chunk-GDWE23OR.js} +3 -3
  106. package/chunks/{chunk-XBZTAGB7.js → chunk-GMN73IMT.js} +1 -1
  107. package/chunks/{chunk-IAEXTMED.js → chunk-GNV2SFO7.js} +173 -7
  108. package/chunks/{chunk-CXTPVBFA.js → chunk-GSS4SZNG.js} +100 -17
  109. package/chunks/chunk-GXN7DWZZ.js +154 -0
  110. package/chunks/{chunk-SODMFNAR.js → chunk-H23UWPF7.js} +5 -5
  111. package/chunks/{chunk-6HUXPLB5.js → chunk-HEOH7JZY.js} +5 -5
  112. package/chunks/{chunk-DTNV6UZY.js → chunk-HFJSQ4GL.js} +10 -24
  113. package/chunks/{chunk-GOXQL4YH.js → chunk-HWRXJQ6B.js} +2 -2
  114. package/chunks/{chunk-VZUCTJ2P.js → chunk-I6YJZGHS.js} +10 -10
  115. package/chunks/{chunk-RZHU3K6M.js → chunk-IAS753HG.js} +2 -20
  116. package/chunks/{chunk-EDMXGXAK.js → chunk-IBRQG2MP.js} +10 -13
  117. package/chunks/chunk-INGBUYL6.js +230 -0
  118. package/chunks/{chunk-7BXXIQG4.js → chunk-J73WJIMT.js} +36 -72
  119. package/chunks/{chunk-XGYHNWL3.js → chunk-J7LBAKDH.js} +3 -3
  120. package/chunks/{chunk-Z3GF56ME.js → chunk-JAYWZWZF.js} +3 -3
  121. package/chunks/{chunk-DYFOSJHU.js → chunk-JBFC2644.js} +2756 -1153
  122. package/chunks/{chunk-Q5BD56BW.js → chunk-JPCYCFYG.js} +7 -7
  123. package/chunks/{chunk-LG5Y4OWO.js → chunk-JRHKM3YQ.js} +2 -2
  124. package/chunks/{chunk-NHCZJQE4.js → chunk-JZKBMADP.js} +6 -6
  125. package/chunks/{chunk-MF6E7FSA.js → chunk-K7CQWBLT.js} +8 -201
  126. package/chunks/{chunk-K2OJUPOE.js → chunk-KP2FHIFR.js} +12 -0
  127. package/chunks/{chunk-ZU47FBOC.js → chunk-KSIOXYVX.js} +126 -12
  128. package/chunks/{chunk-IV7GDNKC.js → chunk-KZCK5JUN.js} +4 -4
  129. package/chunks/{chunk-3XLK2QMY.js → chunk-L3S2Y2FF.js} +59 -16
  130. package/chunks/{chunk-ZW2EUO2A.js → chunk-L6DIANLD.js} +1 -1
  131. package/chunks/{chunk-6W4HBUA2.js → chunk-LATAUG2M.js} +1 -1
  132. package/chunks/{chunk-RWVD5RRY.js → chunk-LBDASOPR.js} +3 -3
  133. package/chunks/{chunk-OX7IZ2G5.js → chunk-LF5AD7PY.js} +4 -4
  134. package/chunks/{chunk-NMRCXKQ5.js → chunk-LKCNETDW.js} +3 -3
  135. package/chunks/chunk-LMJSPC55.js +260 -0
  136. package/chunks/{chunk-X6K77VHC.js → chunk-LWWRJRCD.js} +1 -1
  137. package/chunks/{chunk-UXEO7E3V.js → chunk-LYD3T3H7.js} +1 -0
  138. package/chunks/{chunk-KFZYGSJN.js → chunk-M3YNPR56.js} +3 -3
  139. package/chunks/{chunk-HBQ2NXOU.js → chunk-MDG6GKSE.js} +2 -2
  140. package/chunks/{chunk-E4UEO3XM.js → chunk-ME4JBHSB.js} +324 -2
  141. package/chunks/{chunk-BV6Q5HMY.js → chunk-MJHLKWGJ.js} +8 -7
  142. package/chunks/{chunk-NFYEQRLG.js → chunk-MQRLLBMQ.js} +1 -1
  143. package/chunks/{chunk-O4KNCAX4.js → chunk-NCPFOLM2.js} +11 -0
  144. package/chunks/{chunk-2SZH22YO.js → chunk-NJ2OFVUX.js} +115 -97
  145. package/chunks/{chunk-DAWWT2ID.js → chunk-NN4EC2WO.js} +1374 -2164
  146. package/chunks/{chunk-6MBXY6WM.js → chunk-NRQI3PGS.js} +1 -1
  147. package/chunks/{chunk-HBU7EKY4.js → chunk-NRUKL236.js} +45 -15
  148. package/chunks/{chunk-53GWJOLP.js → chunk-NTCFKGQF.js} +3 -1
  149. package/chunks/{chunk-3CZ2BQV6.js → chunk-NXUZFW3G.js} +49 -19
  150. package/chunks/{chunk-X7UJKOHZ.js → chunk-OMDXAHCT.js} +4 -6
  151. package/chunks/{chunk-5GLDOLNQ.js → chunk-OWUAZXXN.js} +4 -3
  152. package/chunks/{chunk-2UWQX4FP.js → chunk-OZEV3R3S.js} +1 -1
  153. package/chunks/{acp-subagent-executor-LEUN3N7N.js → chunk-PAPBT3WP.js} +11 -110
  154. package/chunks/{chunk-7ICHPMBQ.js → chunk-PHSQVB6D.js} +4 -4
  155. package/chunks/{chunk-FCQJLMA2.js → chunk-Q3TFRP5G.js} +178 -8
  156. package/chunks/{chunk-YQHLFCPU.js → chunk-Q5CCYZD3.js} +32 -24
  157. package/chunks/chunk-QQL5BFOL.js +1416 -0
  158. package/chunks/{chunk-ZKZHSB5W.js → chunk-QR4Q425T.js} +9 -9
  159. package/chunks/{chunk-J6MB5ZHZ.js → chunk-QZW6WRB7.js} +2 -1
  160. package/chunks/{chunk-TP6FYVQT.js → chunk-RSWBT7AZ.js} +33 -1
  161. package/chunks/{chunk-2PJRI3EH.js → chunk-RVOD66ID.js} +218 -43
  162. package/chunks/{chunk-W5FIP7FC.js → chunk-S3PU3CNW.js} +5 -5
  163. package/chunks/chunk-S7UQ3V2H.js +87 -0
  164. package/chunks/{chunk-N6VQ37ZZ.js → chunk-SFL6U7U7.js} +1 -1
  165. package/chunks/{chunk-MOS5OAOG.js → chunk-SROLVJFY.js} +6 -6
  166. package/chunks/{chunk-HUXPEUFL.js → chunk-SYROIHU7.js} +1 -1
  167. package/chunks/{chunk-E7LB57MB.js → chunk-T3LUMYFP.js} +6 -6
  168. package/chunks/{chunk-PSPAM24S.js → chunk-TBSCTWKF.js} +6 -0
  169. package/chunks/{chunk-5KI7ZDTB.js → chunk-TV5WDW7R.js} +24 -12
  170. package/chunks/{chunk-NMCDMLHL.js → chunk-TXUJOKVR.js} +50 -35
  171. package/chunks/{chunk-NHJKAR6E.js → chunk-TYWLBEL2.js} +972 -18
  172. package/chunks/chunk-U6H3XTFA.js +95 -0
  173. package/chunks/{chunk-GSILBZLN.js → chunk-U7RWQBGZ.js} +2 -2
  174. package/chunks/{chunk-7APZIRH3.js → chunk-V3CMBOQ6.js} +5 -5
  175. package/chunks/{chunk-JXNIF2O5.js → chunk-V545KI73.js} +1 -1
  176. package/chunks/chunk-VGY2RGXL.js +100 -0
  177. package/chunks/{chunk-TBEXLLAO.js → chunk-VRQZESKP.js} +1 -1
  178. package/chunks/{chunk-FN3JNDRU.js → chunk-VVI7MK3V.js} +3 -3
  179. package/chunks/{chunk-EUURTIV6.js → chunk-WBSJ6VPZ.js} +10 -2
  180. package/chunks/{chunk-NLNQNBZ2.js → chunk-WD6YQI5M.js} +1 -1
  181. package/chunks/chunk-WFNEY5G7.js +347 -0
  182. package/chunks/{chunk-XKBFYTCD.js → chunk-WK6DEH3Q.js} +46 -0
  183. package/chunks/{chunk-36HCNKDS.js → chunk-WKVZES7O.js} +65 -14
  184. package/chunks/{chunk-BWAMMKIS.js → chunk-WLLRNQVT.js} +135 -6
  185. package/chunks/{chunk-MHAADZOZ.js → chunk-WMSP3XZK.js} +3 -3
  186. package/chunks/{chunk-IL5M5NYD.js → chunk-WUTXSXPP.js} +11 -9
  187. package/chunks/{chunk-NJQTG2G3.js → chunk-XE5ZFBVD.js} +11 -11
  188. package/chunks/{chunk-OLTN767L.js → chunk-XO3Z27IL.js} +2 -2
  189. package/chunks/{chunk-VX63RJXE.js → chunk-XX5HQLCZ.js} +7 -0
  190. package/chunks/{chunk-2Z3T52OC.js → chunk-Y5TM7SBV.js} +7 -2
  191. package/chunks/{chunk-V2P3DOQR.js → chunk-YDFOHRS5.js} +1 -1
  192. package/chunks/{chunk-QMUYLYT5.js → chunk-YGFJ6BRT.js} +1 -1
  193. package/chunks/{chunk-LK2WUCDQ.js → chunk-YM6KUQ2S.js} +1 -1
  194. package/chunks/{chunk-F42YYSCK.js → chunk-YVF4PKCV.js} +8 -8
  195. package/chunks/{chunk-LDVNJZGH.js → chunk-Z2H5HQS3.js} +17 -8
  196. package/chunks/chunk-Z72PLR74.js +36 -0
  197. package/chunks/{chunk-BWQLXU37.js → chunk-ZDHXRKRG.js} +381 -86
  198. package/chunks/{chunk-BHTYRHJF.js → chunk-ZJ7JQUGY.js} +4 -1
  199. package/chunks/{chunk-4ALNJDHL.js → chunk-ZKIAGIGH.js} +87 -4
  200. package/chunks/{chunk-VG3Q2NC4.js → chunk-ZNI3YJHS.js} +32 -12
  201. package/chunks/chunk-ZRZZLM37.js +2780 -0
  202. package/chunks/{chunk-Q2LVVIKF.js → chunk-ZZUXUBEB.js} +29 -12
  203. package/chunks/codex-subagent-executor-SM3TUSBA.js +586 -0
  204. package/chunks/{config-utils-L6KLDYIV.js → config-utils-JHKHFOG6.js} +60 -56
  205. package/chunks/{contextCommand-UYEH7NIU.js → contextCommand-XE4NDYQW.js} +58 -54
  206. package/chunks/{core-runtime-NVHT3Z3V.js → core-runtime-PNCWH3RE.js} +58 -55
  207. package/chunks/{create-sub-session-TIGCFGCS.js → create-sub-session-MSGNIM37.js} +5 -2
  208. package/chunks/{create-sub-session-YWASE5VH.js → create-sub-session-P7E5Y3HY.js} +169 -89
  209. package/chunks/{cron-create-AKWX67FO.js → cron-create-U2JJ5CCF.js} +3 -3
  210. package/chunks/{cron-delete-XPB6IYZJ.js → cron-delete-7DM4LJWD.js} +2 -2
  211. package/chunks/{cron-list-XBKO4WU5.js → cron-list-VCUSZK2Y.js} +2 -2
  212. package/chunks/{daemon-G5TYKZD6.js → daemon-NJB4PWZ7.js} +3 -1
  213. package/chunks/{daemon-git-worktree-guard-FOW4RQSK.js → daemon-git-worktree-guard-JFD5VZRN.js} +58 -54
  214. package/chunks/{daemon-status-provider-O5KQZYMP.js → daemon-status-provider-A3VFVFWW.js} +68 -63
  215. package/chunks/{daemon-trust-policy-3ATXEON7.js → daemon-trust-policy-NPZ47MZH.js} +64 -60
  216. package/chunks/{daemon-trust-policy-monitor-7MCNDNEC.js → daemon-trust-policy-monitor-XG2CHL3Z.js} +64 -60
  217. package/chunks/{de-UU2YTO37.js → de-VGY3VNBU.js} +3 -3
  218. package/chunks/{deferred-core-runtime-JK5IXL5K.js → deferred-core-runtime-V42EMU27.js} +56 -52
  219. package/chunks/{discovery-XP4RMDUM.js → discovery-5KUEPR65.js} +2 -2
  220. package/chunks/{display-image-NAH3AZ63.js → display-image-QTHALY6N.js} +3 -3
  221. package/chunks/{dist-KLZ7XGEQ.js → dist-2QYIVNS6.js} +1 -4
  222. package/chunks/{dist-AHJYPSJL.js → dist-GUB7QRYA.js} +2 -5
  223. package/chunks/{dist-ZXTZTE54.js → dist-MPUZZOG5.js} +4 -17
  224. package/chunks/{dist-F2DVGTL3.js → dist-NIOJXMGY.js} +111 -101
  225. package/chunks/{dist-KJGRVIGJ.js → dist-PA7WPFVE.js} +5 -36
  226. package/chunks/{dist-AIKC5E5P.js → dist-SE4J6Z4O.js} +43 -669
  227. package/chunks/{dist-H6G3K26N.js → dist-T6DDPDLQ.js} +14 -34
  228. package/chunks/{dist-GWNQVPZT.js → dist-TFGETXFN.js} +10 -33
  229. package/chunks/{dist-ZA52JXAS.js → dist-VDLSBCLM.js} +1 -5
  230. package/chunks/{edit-SY35KYIE.js → edit-E2ZGJDBJ.js} +46 -42
  231. package/chunks/{en-CAJHTIQT.js → en-E5ZO5TZW.js} +5 -3
  232. package/chunks/{enter-worktree-54L5QJ3N.js → enter-worktree-CAARFWBI.js} +6 -5
  233. package/chunks/{enterPlanMode-HXX6KQJR.js → enterPlanMode-442YAAZB.js} +43 -39
  234. package/chunks/{environment-DKXHG4HB.js → environment-DCJ5FVHM.js} +59 -55
  235. package/chunks/{errors-ADY7LQJJ.js → errors-ZWTDW2NJ.js} +58 -54
  236. package/chunks/exec-RPKEY6HP.js +505 -0
  237. package/chunks/{exit-worktree-EORJDKDS.js → exit-worktree-JXGGUOBP.js} +6 -5
  238. package/chunks/{exitPlanMode-HSK2CQI6.js → exitPlanMode-4PLQOFOO.js} +43 -39
  239. package/chunks/{fast-path-U636VWN2.js → fast-path-DBSGDGB3.js} +10 -10
  240. package/chunks/{fast-path-settings-V7MI7EZJ.js → fast-path-settings-XDYX7X5Z.js} +2 -2
  241. package/chunks/{fr-HKNWVXRJ.js → fr-UAZJJH5N.js} +3 -3
  242. package/chunks/{glob-GUGGTH5L.js → glob-VWOE4W7K.js} +43 -39
  243. package/chunks/{goal-tools-PXYRSQGX.js → goal-tools-K6SIBXMB.js} +49 -41
  244. package/chunks/{grep-3PKFKLCA.js → grep-H2I33VAO.js} +8 -3
  245. package/chunks/{handleAutoUpdate-5KHS4HIN.js → handleAutoUpdate-NCC3XELY.js} +61 -57
  246. package/chunks/{i18n-KSGKMUPT.js → i18n-GO7JI4PT.js} +57 -53
  247. package/chunks/{image-gen-OCCR2WWU.js → image-gen-5G2TQ3DY.js} +6 -5
  248. package/chunks/{initializer-YYT5XEZF.js → initializer-BXKAW5A6.js} +64 -60
  249. package/chunks/{installationInfo-UNSBPYW2.js → installationInfo-5JONIX62.js} +57 -53
  250. package/chunks/{ja-GJS5RZGU.js → ja-2RITCMAJ.js} +3 -3
  251. package/chunks/list-QW74LCLS.js +133 -0
  252. package/chunks/{list-agents-QLDXS5OD.js → list-agents-EWDCEPIW.js} +3 -3
  253. package/chunks/{llm-XGGLBGPH.js → llm-FJHSMJTM.js} +161 -125
  254. package/chunks/{llm-content-generator-ZHQQT5W7.js → llm-content-generator-3VLLPQS4.js} +14 -7
  255. package/chunks/{loadedSettingsAdapter-3DXLASK7.js → loadedSettingsAdapter-OLMQSKVC.js} +64 -60
  256. package/chunks/{loggingContentGenerator-V72OCCJO.js → loggingContentGenerator-IMLIJULY.js} +47 -43
  257. package/chunks/{loop-wakeup-HHMYIC7Z.js → loop-wakeup-VG6CGBQA.js} +4 -4
  258. package/chunks/{ls-N7ABR6HI.js → ls-6ZB3BEIR.js} +1 -1
  259. package/chunks/{lsp-LTOFWG5P.js → lsp-M54FQARP.js} +5 -1
  260. package/chunks/{managed-npm-update-HV5LPZH2.js → managed-npm-update-LXLBWCNA.js} +57 -53
  261. package/chunks/mcp-FOXA3372.js +127 -0
  262. package/chunks/model-configuration-SCOI2KPF.js +140 -0
  263. package/chunks/modelConfigUtils-EA44S64C.js +119 -0
  264. package/chunks/{monitor-TLBNM4MV.js → monitor-TJAHYCCY.js} +43 -39
  265. package/chunks/{nonInteractiveCli-LSJSQ2W4.js → nonInteractiveCli-QH2HABWC.js} +112 -107
  266. package/chunks/{notebook-edit-OSPOLZP6.js → notebook-edit-WEMSBUBS.js} +45 -41
  267. package/chunks/{openaiContentGenerator-BE4S5TRD.js → openaiContentGenerator-WD5DWYOA.js} +24 -19
  268. package/chunks/{openaiResponsesContentGenerator-RTCAJ5V5.js → openaiResponsesContentGenerator-AWRYZLJU.js} +110 -19
  269. package/chunks/{pidfile-H32FEPWA.js → pidfile-TQL2LCEG.js} +56 -52
  270. package/chunks/{processUtils-SSLIPDEA.js → processUtils-6ZU56DCI.js} +2 -2
  271. package/chunks/{prompt-terminal-ledger-I5SLL6UF.js → prompt-terminal-ledger-3HAKHXFV.js} +57 -53
  272. package/chunks/{pt-FXMYXEUV.js → pt-5ZF7ZQUV.js} +3 -3
  273. package/chunks/{qwenContentGenerator-TMQC623Z.js → qwenContentGenerator-3OIZQZLC.js} +47 -43
  274. package/chunks/{qwenOAuth2-3ZRQHHTC.js → qwenOAuth2-WIEUEFEY.js} +5 -4
  275. package/chunks/{read-file-T2QAIZE2.js → read-file-2PWWL6J2.js} +9 -8
  276. package/chunks/{read-mcp-resource-B37WANAQ.js → read-mcp-resource-LPSWXVOD.js} +1 -1
  277. package/chunks/{record-artifact-OAXWXZ5D.js → record-artifact-PXMNP7GZ.js} +3 -3
  278. package/chunks/{record-source-D7R7X3GT.js → record-source-2GSY5JD5.js} +6 -6
  279. package/chunks/{report-findings-AR3VC6EQ.js → report-findings-W6GR7SYZ.js} +4 -4
  280. package/chunks/{request-shutdown-IKNWTX5M.js → request-shutdown-53SNYGVR.js} +5 -5
  281. package/chunks/{resumeHistoryUtils-QLKDH5GY.js → resumeHistoryUtils-S4TEUTKE.js} +63 -59
  282. package/chunks/{ripGrep-YGWL7KCV.js → ripGrep-5NMGLMLX.js} +13 -11
  283. package/chunks/{ru-RMHURE5U.js → ru-7BNZFQKG.js} +3 -3
  284. package/chunks/{run-qwen-serve-26KZDECC.js → run-qwen-serve-6MGYRK4V.js} +314 -127
  285. package/chunks/{runtime-BMEIVDDG.js → runtime-ZJYUQCPP.js} +69 -65
  286. package/chunks/{scheduled-tasks-NCFPP6VQ.js → scheduled-tasks-5MKF4EV3.js} +66 -60
  287. package/chunks/{scheduler-47TVMUVN.js → scheduler-72DZWRH5.js} +58 -54
  288. package/chunks/{sdk-exporters-http-VWTF4W6K.js → sdk-exporters-http-3R2TRQHE.js} +2 -1
  289. package/chunks/{sdk-impl-G6FVTBQZ.js → sdk-impl-4WF3VZ2F.js} +3 -3
  290. package/chunks/{send-message-TWOGWCBG.js → send-message-UMJKN27Q.js} +7 -7
  291. package/chunks/{serve-KL3G6LQQ.js → serve-7ZDMMA7I.js} +66 -62
  292. package/chunks/{server-LBPYXZ5G.js → server-ONK5RTEV.js} +783 -350
  293. package/chunks/{session-YG6742LO.js → session-XQW2LM4S.js} +117 -112
  294. package/chunks/{session-attachments-root-OUBQDYC4.js → session-attachments-root-Q5IUCMQV.js} +56 -52
  295. package/chunks/{session-pr-refresh-EKGMYNAW.js → session-pr-refresh-MVECWT3W.js} +66 -60
  296. package/chunks/{settings-DDNHJX2L.js → settings-DL6K2HQ3.js} +67 -63
  297. package/chunks/{shell-KUCXWITU.js → shell-BLP25QJU.js} +43 -39
  298. package/chunks/{skill-JQLKPNWZ.js → skill-7KURUNLD.js} +128 -23
  299. package/chunks/{skill-settings-XERQCUXZ.js → skill-settings-MY76LM46.js} +72 -60
  300. package/chunks/{spawnChannel-GQ45QFGB.js → spawnChannel-IJLH3Z74.js} +60 -55
  301. package/chunks/{standalone-update-PRF3ILGZ.js → standalone-update-YQKN7VNO.js} +58 -54
  302. package/chunks/{start-opentui-ui-JDSOZE3N.js → start-opentui-ui-ORNGKZTG.js} +2693 -2160
  303. package/chunks/{startInteractiveUI-RRW3JVHN.js → startInteractiveUI-PRLIKB4U.js} +1610 -1773
  304. package/chunks/{syntheticOutput-F6F27JMK.js → syntheticOutput-EX5L5GYI.js} +2 -2
  305. package/chunks/{task-create-Y623TBHB.js → task-create-75HVPEAH.js} +7 -7
  306. package/chunks/{task-list-FCPEEGWL.js → task-list-ZLJSMRFA.js} +2 -2
  307. package/chunks/{task-stop-QTKZXLPH.js → task-stop-MD7P6QGK.js} +1 -1
  308. package/chunks/{task-update-YLSXF25N.js → task-update-RI7QNVDP.js} +20 -13
  309. package/chunks/{team-create-5DRLOLOE.js → team-create-ANLKOQ44.js} +43 -39
  310. package/chunks/{team-delete-S7TLHZCF.js → team-delete-RIDINW6I.js} +1 -1
  311. package/chunks/{team-plan-approval-MWSGAL5T.js → team-plan-approval-EFUENI6Y.js} +43 -39
  312. package/chunks/{terminal-image-renderer-H7PD4FQW.js → terminal-image-renderer-CXMFIWKC.js} +58 -54
  313. package/chunks/{theme-manager-7AV73D6R.js → theme-manager-JUFYQDQQ.js} +56 -52
  314. package/chunks/{todoWrite-5QI2H2FW.js → todoWrite-XSTG2VT5.js} +6 -3
  315. package/chunks/{tool-search-UGYTBLUV.js → tool-search-SNCEA4VA.js} +17 -12
  316. package/chunks/{total-session-admission-JIHSTJ5S.js → total-session-admission-UHYNUO3L.js} +63 -58
  317. package/chunks/{tree-sitter-4D7QS7F6.js → tree-sitter-NZ3QACD7.js} +1 -1
  318. package/chunks/{tree-sitter-bash-VEJGF5XF.js → tree-sitter-bash-WXHLMORC.js} +1 -1
  319. package/chunks/{trustedFolders-5VCBXFOP.js → trustedFolders-YBR5URPG.js} +57 -53
  320. package/chunks/{update-relaunch-4LF3APCV.js → update-relaunch-L6MTSN76.js} +5 -5
  321. package/chunks/{updateCheck-4T3WUE5F.js → updateCheck-Z3SPZXHC.js} +60 -56
  322. package/chunks/{useAutoAcceptIndicator-UMGB64Z6.js → useAutoAcceptIndicator-PR5XGMO6.js} +68 -64
  323. package/chunks/{validateNonInterActiveAuth-GFJ72U2C.js → validateNonInterActiveAuth-KFLTWEYW.js} +109 -104
  324. package/chunks/{version-EAAZN4T2.js → version-NGAKFVUF.js} +1 -1
  325. package/chunks/{web-fetch-VRU3A2NI.js → web-fetch-WPGTHGU5.js} +15 -13
  326. package/chunks/web-search-JT63IJJV.js +39 -0
  327. package/chunks/{web-shell-static-CCN4JZEE.js → web-shell-static-T7UGLVE4.js} +2 -7
  328. package/chunks/{workflow-UHPFALVZ.js → workflow-EB63BAL4.js} +179 -79
  329. package/chunks/workspace-providers-status-NEPR67D2.js +133 -0
  330. package/chunks/{workspace-registration-store-A7RGKW62.js → workspace-registration-store-CFWXOMGH.js} +2 -2
  331. package/chunks/{workspace-registry-C2NGE6SD.js → workspace-registry-6KRZXOGB.js} +63 -58
  332. package/chunks/{workspace-runtime-coordinator-QKMZ24YF.js → workspace-runtime-coordinator-SP4X3UVH.js} +66 -59
  333. package/chunks/{workspace-service-RQTTAGGC.js → workspace-service-PRMYJTTV.js} +70 -65
  334. package/chunks/workspace-skills-status-VYTZJ5MB.js +130 -0
  335. package/chunks/{workspace-trust-reconciler-KFWATZUU.js → workspace-trust-reconciler-B4QMGDMI.js} +73 -68
  336. package/chunks/{write-file-DPVB2SBQ.js → write-file-EGBMW7TS.js} +45 -41
  337. package/chunks/{zh-TW-2K2WRFPY.js → zh-TW-7PRVUGLW.js} +5 -3
  338. package/chunks/{zh-S5V3Z5CR.js → zh-V2EYTYJP.js} +5 -3
  339. package/chunks/{zoom-image-S7AWLAPC.js → zoom-image-UR6K2LDR.js} +11 -10
  340. package/cli.js +18 -17
  341. package/codeModeHost.js +4425 -0
  342. package/export-transcript-document.css +1 -1
  343. package/export-transcript-document.js +151 -151
  344. package/locales/ca.js +5 -6
  345. package/locales/de.js +5 -6
  346. package/locales/en.js +7 -6
  347. package/locales/fr.js +6 -6
  348. package/locales/ja.js +5 -6
  349. package/locales/pt.js +5 -6
  350. package/locales/ru.js +6 -6
  351. package/locales/zh-TW.js +7 -6
  352. package/locales/zh.js +7 -6
  353. package/package.json +4 -3
  354. package/web-shell/assets/{abnfDiagram-VCTEODGH-nU24rpIE.js → abnfDiagram-VCTEODGH-S_JCiANq.js} +1 -1
  355. package/web-shell/assets/{arc-D1hTu8QI.js → arc-DP-839Xn.js} +1 -1
  356. package/web-shell/assets/architectureDiagram-5GKGNRK7-C8rCd2KK.js +36 -0
  357. package/web-shell/assets/blockDiagram-NRAW4CY4-DQR82jwr.js +129 -0
  358. package/web-shell/assets/{c4Diagram-UCG6FXSJ-kEFoC1ei.js → c4Diagram-UCG6FXSJ-D21PNMRP.js} +4 -4
  359. package/web-shell/assets/channel-BgGrpX_z.js +1 -0
  360. package/web-shell/assets/{chunk-2Q5K7J3B-DbT9wS7j.js → chunk-2Q5K7J3B-KdDInGLi.js} +1 -1
  361. package/web-shell/assets/{chunk-5VM5RSS4-CNbULt6O.js → chunk-5VM5RSS4-ltb7zRmH.js} +1 -1
  362. package/web-shell/assets/{chunk-F27PBJKO-CbQRy4Tb.js → chunk-F27PBJKO-DcpQA0Ng.js} +1 -1
  363. package/web-shell/assets/chunk-G27WJ6UU-C8NDZxcy.js +231 -0
  364. package/web-shell/assets/chunk-JWPE2WC7-hXhhHTs1.js +1 -0
  365. package/web-shell/assets/chunk-LCL6LL3I-CLaOR-Hl.js +206 -0
  366. package/web-shell/assets/chunk-POPQ4Y6H-Y5_qlB1N.js +1 -0
  367. package/web-shell/assets/{chunk-SVP7TREG-DyBb2Axj.js → chunk-SVP7TREG-BWX2Voh7.js} +4 -4
  368. package/web-shell/assets/{chunk-XXDRQBXY-BIA0eb5B.js → chunk-XXDRQBXY-1wmj_kXI.js} +1 -1
  369. package/web-shell/assets/classDiagram-DTDB5LWJ-jUH7ADYs.js +1 -0
  370. package/web-shell/assets/classDiagram-v2-JRS7N3AN-jUH7ADYs.js +1 -0
  371. package/web-shell/assets/cose-bilkent-JH36ORCC-DpLc-cdd.js +1 -0
  372. package/web-shell/assets/cynefin-OW5HDTMX-DhxGiPZW.js +178 -0
  373. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-LENf_IUy.js → cynefinDiagram-5FMLGOSQ-Dl3jfBry.js} +1 -1
  374. package/web-shell/assets/{cytoscape.esm-CUqq0XTU.js → cytoscape.esm-DJK6lGiH.js} +3 -3
  375. package/web-shell/assets/dagre-3AP2YEHR-C8FA8vJk.js +4 -0
  376. package/web-shell/assets/diagram-S7CK7UJ4-D-quIUtW.js +30 -0
  377. package/web-shell/assets/diagram-UQ7AKVKN-Bjo09Uts.js +41 -0
  378. package/web-shell/assets/diagram-VSXAHHWV-IoI3ttq4.js +3 -0
  379. package/web-shell/assets/diagram-VX7I27RA-BKyOZ5SO.js +24 -0
  380. package/web-shell/assets/diagram-Z3DM3KII-Cu_OHEhw.js +24 -0
  381. package/web-shell/assets/{ebnfDiagram-PWID7BFC-BGpiquRm.js → ebnfDiagram-PWID7BFC-UVB-bbPg.js} +1 -1
  382. package/web-shell/assets/{erDiagram-SSCWMZ5O-D0besu_U.js → erDiagram-SSCWMZ5O-l8drddto.js} +13 -13
  383. package/web-shell/assets/flowDiagram-A5DVABFB-DU1I_VAI.js +168 -0
  384. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-CNlsAeNr.js → ganttDiagram-EL5Y4UJY-BLRH05uB.js} +1 -1
  385. package/web-shell/assets/gitGraphDiagram-WWUBYQGX-Czg_BkRE.js +106 -0
  386. package/web-shell/assets/index-CmMV8Jla.js +3 -0
  387. package/web-shell/assets/{index-CGT341lL.js → index-DohPy72Z.js} +1 -1
  388. package/web-shell/assets/index-DyMtNYuu.js +2207 -0
  389. package/web-shell/assets/index-n6N-2a3v.css +36 -0
  390. package/web-shell/assets/{infoDiagram-RXCK75RN-Bpai64Ll.js → infoDiagram-RXCK75RN-BpBvjkro.js} +1 -1
  391. package/web-shell/assets/ishikawaDiagram-5VMMS53U-phy1l3jm.js +70 -0
  392. package/web-shell/assets/{journeyDiagram-EYS64GPL-iz_DKgFX.js → journeyDiagram-EYS64GPL-oY-9LgVS.js} +1 -1
  393. package/web-shell/assets/kanban-definition-3QL26DDD-slZoy-sc.js +89 -0
  394. package/web-shell/assets/{layout-qEvKgnvU.js → layout-0hnn_P9l.js} +1 -1
  395. package/web-shell/assets/{linear-C6lklGdq.js → linear-7Wqe8DRy.js} +1 -1
  396. package/web-shell/assets/mermaid.core-BaK8n0bq.js +312 -0
  397. package/web-shell/assets/mindmap-definition-FBJOCRG2-BedUdy_E.js +96 -0
  398. package/web-shell/assets/{pegDiagram-XKGWAZYB-BhD0q0i6.js → pegDiagram-XKGWAZYB-DQLRdmxq.js} +1 -1
  399. package/web-shell/assets/pieDiagram-E7YTZNPT-UC20w9-5.js +39 -0
  400. package/web-shell/assets/quadrantDiagram-AXDQQJYC-CQx2Hmk3.js +7 -0
  401. package/web-shell/assets/qwen-code-notification-BRVagufF.png +0 -0
  402. package/web-shell/assets/{railroadDiagram-O6MQD6OU-E1g2KIFK.js → railroadDiagram-O6MQD6OU-2UEJe_y-.js} +1 -1
  403. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-CuerYJOe.js → requirementDiagram-EFPCY7ZU-DOAJggB4.js} +13 -13
  404. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CqWyCZGA.js → sankeyDiagram-P5KCCOFB-DnQ_qJo7.js} +7 -7
  405. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-B-YWb8x4.js → sequenceDiagram-WJ2MYXX4-DZrZUoCo.js} +16 -16
  406. package/web-shell/assets/sizeCapture-X5ZJPWSS-B5G4GDQB.js +1 -0
  407. package/web-shell/assets/{stateDiagram-HBIQ2CUA-C8LDpNHS.js → stateDiagram-HBIQ2CUA-Bn1cT0qF.js} +1 -1
  408. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-BF3xtNvJ.js +1 -0
  409. package/web-shell/assets/swimlanes-XN3QIQJK-Bzhcdn87.js +1 -0
  410. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-B753mA3E.js +8 -0
  411. package/web-shell/assets/timeline-definition-24CTP7MA-BqZ_3D10.js +120 -0
  412. package/web-shell/assets/vennDiagram-4TSXK5OY-z9kw1kmm.js +34 -0
  413. package/web-shell/assets/wardleyDiagram-VM6X3IG4-Cydp1zJW.js +78 -0
  414. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-ruD2Wjhg.js → xychartDiagram-S5SC5T6Z-j4X1lQKo.js} +1 -1
  415. package/web-shell/index.html +2 -2
  416. package/chunks/chunk-7Q2AXRDJ.js +0 -114
  417. package/chunks/chunk-AEY27Z35.js +0 -1411
  418. package/chunks/chunk-CFKIH3D3.js +0 -50
  419. package/chunks/chunk-HWVUSYSN.js +0 -126
  420. package/chunks/chunk-QHMLYMMS.js +0 -32
  421. package/chunks/chunk-SAH4BD2J.js +0 -92
  422. package/chunks/chunk-TWUKBNWM.js +0 -86
  423. package/chunks/chunk-ZTTC7T4X.js +0 -126
  424. package/chunks/list-YL6LDQKQ.js +0 -129
  425. package/chunks/mcp-IYVSIW6O.js +0 -123
  426. package/chunks/web-search-NEGYQNDJ.js +0 -912
  427. package/chunks/workspace-providers-status-AEYISSU2.js +0 -127
  428. package/chunks/workspace-skills-status-5HWZU3HX.js +0 -126
  429. package/web-shell/assets/architectureDiagram-5GKGNRK7-B_fgkKe7.js +0 -36
  430. package/web-shell/assets/blockDiagram-NRAW4CY4-C3pddUNg.js +0 -129
  431. package/web-shell/assets/channel-Blod4z1X.js +0 -1
  432. package/web-shell/assets/chunk-G27WJ6UU-CVbXTxYk.js +0 -231
  433. package/web-shell/assets/chunk-JWPE2WC7-D89c_BXy.js +0 -1
  434. package/web-shell/assets/chunk-LCL6LL3I-B7-I_9KB.js +0 -206
  435. package/web-shell/assets/chunk-POPQ4Y6H-DcLQFzS4.js +0 -1
  436. package/web-shell/assets/classDiagram-DTDB5LWJ-D6hFDMqb.js +0 -1
  437. package/web-shell/assets/classDiagram-v2-JRS7N3AN-D6hFDMqb.js +0 -1
  438. package/web-shell/assets/cose-bilkent-JH36ORCC-Db2FYN85.js +0 -1
  439. package/web-shell/assets/cynefin-OW5HDTMX-i4GwmBVy.js +0 -178
  440. package/web-shell/assets/dagre-3AP2YEHR-CF9XVrD9.js +0 -4
  441. package/web-shell/assets/diagram-S7CK7UJ4-DD5PJfSm.js +0 -30
  442. package/web-shell/assets/diagram-UQ7AKVKN-CjD_sBMj.js +0 -41
  443. package/web-shell/assets/diagram-VSXAHHWV-U5WwMqyA.js +0 -3
  444. package/web-shell/assets/diagram-VX7I27RA-BujpHJJf.js +0 -24
  445. package/web-shell/assets/diagram-Z3DM3KII-3ZLtKEXo.js +0 -24
  446. package/web-shell/assets/flowDiagram-A5DVABFB-9DwDuIyr.js +0 -168
  447. package/web-shell/assets/gitGraphDiagram-WWUBYQGX-C_pPFiTR.js +0 -106
  448. package/web-shell/assets/index-BYWs4JWq.js +0 -3
  449. package/web-shell/assets/index-D3YS6KuJ.js +0 -2173
  450. package/web-shell/assets/index-eBxK3rs2.css +0 -36
  451. package/web-shell/assets/ishikawaDiagram-5VMMS53U-ktpJFq4r.js +0 -70
  452. package/web-shell/assets/kanban-definition-3QL26DDD-m_gG00Yt.js +0 -89
  453. package/web-shell/assets/mermaid.core-DSCYB_2P.js +0 -312
  454. package/web-shell/assets/mindmap-definition-FBJOCRG2-DRQbT8w-.js +0 -96
  455. package/web-shell/assets/pieDiagram-E7YTZNPT-BvIGQCSd.js +0 -39
  456. package/web-shell/assets/quadrantDiagram-AXDQQJYC-BDQtfpU-.js +0 -7
  457. package/web-shell/assets/sizeCapture-X5ZJPWSS-BB7YY4Tl.js +0 -1
  458. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-C4CbdvGa.js +0 -1
  459. package/web-shell/assets/swimlanes-XN3QIQJK-D94vOoxZ.js +0 -1
  460. package/web-shell/assets/swimlanesDiagram-VK2B7HYN--QNSIOC8.js +0 -8
  461. package/web-shell/assets/timeline-definition-24CTP7MA-C9C8uEYm.js +0 -120
  462. package/web-shell/assets/vennDiagram-4TSXK5OY-CYzMHbVW.js +0 -34
  463. package/web-shell/assets/wardleyDiagram-VM6X3IG4-G9nhtLES.js +0 -78
  464. package/chunks/{open-with-auth-6MVIHMXB.js → open-with-auth-XFCCJOO6.js} +3 -3
@@ -14,7 +14,7 @@ import {
14
14
  sanitizePromptText,
15
15
  sanitizeSenderName,
16
16
  truncateUtf16Units
17
- } from "./chunk-7QYWGTHB.js";
17
+ } from "./chunk-EPVEPTI3.js";
18
18
  import "./chunk-IJOS26LH.js";
19
19
  import "./chunk-CQ35AJ4Z.js";
20
20
  import "./chunk-DMTGGOSA.js";
@@ -8655,6 +8655,10 @@ function nonEmptyString(value) {
8655
8655
  return trimmed || void 0;
8656
8656
  }
8657
8657
  __name(nonEmptyString, "nonEmptyString");
8658
+ function richTextPartType(part) {
8659
+ return part.type || part.msgType || "text";
8660
+ }
8661
+ __name(richTextPartType, "richTextPartType");
8658
8662
  function parseJsonArray(value) {
8659
8663
  if (Array.isArray(value))
8660
8664
  return value;
@@ -8844,9 +8848,6 @@ ${boundedLines.join("\n")}`);
8844
8848
  }
8845
8849
  __name(formatChatRecord, "formatChatRecord");
8846
8850
  var DEDUP_TTL_MS = 5 * 60 * 1e3;
8847
- var BACKGROUND_RESPONSE_AGGREGATION_TIMEOUT_MS = 10 * 60 * 1e3;
8848
- var BACKGROUND_RESPONSE_AGGREGATION_RETRY_MS = 30 * 1e3;
8849
- var BACKGROUND_RESPONSE_AGGREGATION_MAX_RETRIES = 3;
8850
8851
  var ACK_REACTION_NAME = "\u{1F440}";
8851
8852
  var ACK_EMOTION_ID = "2659900";
8852
8853
  var ACK_EMOTION_BG_ID = "im_bg_1";
@@ -9043,30 +9044,6 @@ async function withConnectLoggingSuppressed(connect) {
9043
9044
  }
9044
9045
  }
9045
9046
  __name(withConnectLoggingSuppressed, "withConnectLoggingSuppressed");
9046
- var ProactiveTextDeliveryError = class extends Error {
9047
- static {
9048
- __name(this, "ProactiveTextDeliveryError");
9049
- }
9050
- plan;
9051
- retryable;
9052
- constructor(plan, cause) {
9053
- super(cause instanceof Error ? cause.message : String(cause), { cause });
9054
- this.plan = plan;
9055
- if (cause instanceof DingtalkCardRequestError) {
9056
- this.retryable = cause.retryable;
9057
- }
9058
- }
9059
- };
9060
- var ReplyTextDeliveryError = class extends Error {
9061
- static {
9062
- __name(this, "ReplyTextDeliveryError");
9063
- }
9064
- plan;
9065
- constructor(plan, cause) {
9066
- super(cause instanceof Error ? cause.message : String(cause), { cause });
9067
- this.plan = plan;
9068
- }
9069
- };
9070
9047
  var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
9071
9048
  static {
9072
9049
  __name(this, "DingtalkChannel");
@@ -9101,7 +9078,6 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
9101
9078
  */
9102
9079
  proactiveToken;
9103
9080
  interactiveCardConfig;
9104
- aggregateBackgroundAgentResponses;
9105
9081
  interactiveCardClient;
9106
9082
  statusCardController;
9107
9083
  questionCardController;
@@ -9114,10 +9090,6 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
9114
9090
  // boundary, input requested) mints a fresh segment UUID but the projection
9115
9091
  // state must survive it, or a marker split across the reset leaks.
9116
9092
  fileProjectors = /* @__PURE__ */ new Map();
9117
- backgroundResponseAggregations = /* @__PURE__ */ new Map();
9118
- detachedBackgroundResponseAggregations = /* @__PURE__ */ new Set();
9119
- pendingBackgroundResponseTerminals = /* @__PURE__ */ new Map();
9120
- detachedPendingBackgroundResponseTerminals = /* @__PURE__ */ new Set();
9121
9093
  constructor(name, config, bridge, options) {
9122
9094
  super(name, config, bridge, options);
9123
9095
  this.atSender = config["atSender"] === true;
@@ -9136,11 +9108,6 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
9136
9108
  this.config.instructions += FILE_INSTRUCTIONS;
9137
9109
  }
9138
9110
  this.interactiveCardConfig = parseDingtalkInteractiveCardConfig(config.interactiveCards);
9139
- const rawAggregateBackgroundAgentResponses = config.aggregateBackgroundAgentResponses;
9140
- if (rawAggregateBackgroundAgentResponses !== void 0 && typeof rawAggregateBackgroundAgentResponses !== "boolean") {
9141
- throw new Error(`Channel "${name}" aggregateBackgroundAgentResponses must be a boolean.`);
9142
- }
9143
- this.aggregateBackgroundAgentResponses = rawAggregateBackgroundAgentResponses === true;
9144
9111
  if (!config.clientId || !config.clientSecret) {
9145
9112
  throw new Error(`Channel "${name}" requires clientId and clientSecret for DingTalk.`);
9146
9113
  }
@@ -9552,25 +9519,18 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
9552
9519
  }
9553
9520
  return replaceImageMarkers(text, markers, replacements);
9554
9521
  }
9555
- async sendReply(chatId, text, atUserId, sourceLabel, prepared = false, failOnHttpError = false) {
9522
+ async sendReply(chatId, text, atUserId, sourceLabel, prepared = false) {
9556
9523
  const webhook = this.webhooks.get(chatId);
9557
9524
  if (!webhook) {
9558
9525
  process.stderr.write(`[DingTalk:${this.name}] No webhook for chatId ${chatId}, cannot send.
9559
9526
  `);
9560
- if (failOnHttpError) {
9561
- throw new Error("DingTalk session webhook unavailable");
9562
- }
9563
9527
  return;
9564
9528
  }
9565
9529
  const outgoingText = prepared ? text : await this.prepareReplyOutput(chatId, text);
9566
9530
  if (!outgoingText.trim())
9567
9531
  return;
9568
9532
  const plan = this.createReplyTextDelivery(outgoingText, atUserId, sourceLabel);
9569
- try {
9570
- await this.deliverReplyText(chatId, plan, failOnHttpError);
9571
- } catch (error) {
9572
- throw new ReplyTextDeliveryError(plan, error);
9573
- }
9533
+ await this.deliverReplyText(chatId, plan);
9574
9534
  }
9575
9535
  createReplyTextDelivery(outgoingText, atUserId, sourceLabel) {
9576
9536
  const mentionPrefix = atUserId ? `@${atUserId}
@@ -9591,12 +9551,9 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
9591
9551
  ...atUserId ? { atUserId } : {}
9592
9552
  };
9593
9553
  }
9594
- async deliverReplyText(chatId, plan, failOnHttpError = false) {
9554
+ async deliverReplyText(chatId, plan) {
9595
9555
  const webhook = this.webhooks.get(chatId);
9596
9556
  if (!webhook) {
9597
- if (failOnHttpError) {
9598
- throw new Error("DingTalk session webhook unavailable");
9599
- }
9600
9557
  return;
9601
9558
  }
9602
9559
  while (plan.nextChunk < plan.chunks.length) {
@@ -9636,19 +9593,6 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
9636
9593
  const detail = await resp.text().catch(() => "");
9637
9594
  process.stderr.write(`[DingTalk:${this.name}] sendMessage failed: HTTP ${resp.status} ${detail}
9638
9595
  `);
9639
- if (failOnHttpError) {
9640
- throw new Error(`DingTalk reply send failed: HTTP ${resp.status} ${detail}`);
9641
- }
9642
- } else if (failOnHttpError) {
9643
- const payload = await resp.clone().json().catch(() => void 0);
9644
- const response = payload && typeof payload === "object" ? payload : void 0;
9645
- const value = response?.["errcode"] ?? response?.["code"];
9646
- if (value !== void 0 && String(value) !== "0") {
9647
- const detail = sanitizeLogText(String(response?.["errmsg"] ?? response?.["message"] ?? value), 300);
9648
- process.stderr.write(`[DingTalk:${this.name}] sendMessage failed: ${detail}
9649
- `);
9650
- throw new Error(`DingTalk reply send failed: ${detail}`);
9651
- }
9652
9596
  }
9653
9597
  plan.nextChunk++;
9654
9598
  }
@@ -9683,11 +9627,7 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
9683
9627
  const plan = await this.createProactiveTextDelivery(target, text, sourceLabel);
9684
9628
  if (!plan)
9685
9629
  return;
9686
- try {
9687
- await this.deliverProactiveText(target, plan);
9688
- } catch (error) {
9689
- throw new ProactiveTextDeliveryError(plan, error);
9690
- }
9630
+ await this.deliverProactiveText(target, plan);
9691
9631
  }
9692
9632
  async createProactiveTextDelivery(target, text, sourceLabel) {
9693
9633
  const outgoingText = await this.prepareFileOutput(text, (file, mediaId) => this.sendProactiveFile(target, file, mediaId));
@@ -9922,7 +9862,6 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
9922
9862
  this.finishReaction(state.chatId, state.messageId, state.sessionId);
9923
9863
  }
9924
9864
  this.statusCardController?.dispose();
9925
- this.drainBackgroundResponseAggregations();
9926
9865
  this.activeReactionKeys.clear();
9927
9866
  this.sessionReactionKeys.clear();
9928
9867
  this.reactionStates.clear();
@@ -10171,7 +10110,6 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
10171
10110
  }
10172
10111
  }
10173
10112
  this.sessionMentionTargets.delete(sessionId);
10174
- this.drainBackgroundResponseAggregations(sessionId);
10175
10113
  const cardRunId = this.cardRunBySession.get(sessionId);
10176
10114
  if (cardRunId) {
10177
10115
  this.cardRunBySession.delete(sessionId);
@@ -10207,9 +10145,6 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
10207
10145
  this.cardRuns.delete(runId);
10208
10146
  }
10209
10147
  }
10210
- onSessionRetiring(sessionId) {
10211
- this.drainBackgroundResponseAggregations(sessionId);
10212
- }
10213
10148
  onTaskLifecycle(event) {
10214
10149
  if (event.type === "started") {
10215
10150
  this.startReaction(event.chatId, event.messageId, event.sessionId);
@@ -10346,573 +10281,11 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
10346
10281
  this.sessionMentionTargets.delete(sessionId);
10347
10282
  this.stopReaction(chatId, messageId, sessionId);
10348
10283
  }
10349
- /** Deliver every Agent segment immediately unless aggregation is enabled. */
10350
- async dispatchBackgroundResponse(sessionId, text, context) {
10351
- const target = this.router.getTarget(sessionId);
10352
- if (!target || target.channelName !== this.name || context !== void 0 && context.kind !== "agent") {
10353
- return super.dispatchBackgroundResponse(sessionId, text, context);
10354
- }
10355
- const canAggregate = this.aggregateBackgroundAgentResponses && context?.kind === "agent" && typeof context.turnComplete === "boolean";
10356
- if (!canAggregate) {
10357
- if (text.trim().length === 0) {
10358
- return super.dispatchBackgroundResponse(sessionId, text, context);
10359
- }
10360
- return super.dispatchBackgroundResponse(sessionId, this.formatBackgroundAgentResponse(text, context?.label), context);
10361
- }
10362
- const key = JSON.stringify([sessionId, context.taskId, context.turnId]);
10363
- let current = this.backgroundResponseAggregations.get(key);
10364
- let parked = this.pendingBackgroundResponseTerminals.get(key);
10365
- if (current?.turnComplete === true) {
10366
- this.detachedBackgroundResponseAggregations.add(current);
10367
- this.backgroundResponseAggregations.delete(key);
10368
- current = void 0;
10369
- }
10370
- if (!current && (parked?.turnEnded === true || parked?.turnComplete === true && (parked.retryTimer || parked.retryInFlight || parked.resolvers > 0))) {
10371
- if (!parked.turnEnded) {
10372
- this.detachedPendingBackgroundResponseTerminals.add(parked);
10373
- }
10374
- parked = { sessionId, target, resolvers: 0, held: [] };
10375
- this.pendingBackgroundResponseTerminals.set(key, parked);
10376
- }
10377
- if (!current && text.trim().length === 0) {
10378
- if (!parked || parked.resolvers === 0 && !parked.retryTimer && !parked.retryInFlight && !parked.resolutionDropped && !parked.turnComplete) {
10379
- if (parked)
10380
- this.pendingBackgroundResponseTerminals.delete(key);
10381
- return super.dispatchBackgroundResponse(sessionId, text, context);
10382
- }
10383
- if (context.turnComplete) {
10384
- parked.turnComplete = true;
10385
- parked.status = context.status;
10386
- parked.label = context.label ?? parked.label;
10387
- parked.completionPartial = context.partial === true;
10388
- if (parked.resolvers === 0 && !parked.retryTimer && !parked.retryInFlight && (parked.retryAttempts ?? 0) >= BACKGROUND_RESPONSE_AGGREGATION_MAX_RETRIES) {
10389
- parked.turnEnded = true;
10390
- this.pendingBackgroundResponseTerminals.delete(key);
10391
- }
10392
- }
10393
- return;
10394
- }
10395
- if (!current) {
10396
- parked ??= { sessionId, target, resolvers: 0, held: [] };
10397
- this.pendingBackgroundResponseTerminals.set(key, parked);
10398
- this.holdPendingBackgroundResponse(parked, text, context);
10399
- parked.resolvers++;
10400
- try {
10401
- let delivery;
10402
- try {
10403
- delivery = await this.resolveBackgroundResponseDelivery(sessionId);
10404
- } catch (error) {
10405
- if (parked.resolvers === 1 && !this.backgroundResponseAggregations.has(key)) {
10406
- this.scheduleBackgroundResponseResolutionRetry(key, sessionId, parked);
10407
- } else {
10408
- const existing = this.backgroundResponseAggregations.get(key);
10409
- if (existing) {
10410
- if (parked.held.length > 0) {
10411
- this.applyHeldBackgroundResponses(existing, parked);
10412
- }
10413
- this.applyPendingBackgroundResponseTerminal(existing, parked);
10414
- if (parked.resolvers === 1) {
10415
- if (existing.turnComplete) {
10416
- await this.completeBackgroundResponseAggregation(key, existing);
10417
- } else {
10418
- this.scheduleBackgroundResponseAggregationFlush(key, existing);
10419
- }
10420
- }
10421
- }
10422
- }
10423
- throw error;
10424
- }
10425
- if (!delivery || this.router.getTarget(sessionId) !== delivery.target) {
10426
- if (parked.resolvers === 1 && !this.backgroundResponseAggregations.has(key)) {
10427
- this.scheduleBackgroundResponseResolutionRetry(key, sessionId, parked);
10428
- } else {
10429
- const existing = this.backgroundResponseAggregations.get(key);
10430
- if (existing) {
10431
- if (parked.held.length > 0) {
10432
- this.applyHeldBackgroundResponses(existing, parked);
10433
- }
10434
- this.applyPendingBackgroundResponseTerminal(existing, parked);
10435
- if (parked.resolvers === 1) {
10436
- if (existing.turnComplete) {
10437
- await this.completeBackgroundResponseAggregation(key, existing);
10438
- } else {
10439
- this.scheduleBackgroundResponseAggregationFlush(key, existing);
10440
- }
10441
- }
10442
- }
10443
- }
10444
- return;
10445
- }
10446
- if (parked.retiring || this.pendingBackgroundResponseTerminals.get(key) !== parked) {
10447
- await this.flushDetachedBackgroundResponse(key, sessionId, parked, delivery);
10448
- return;
10449
- }
10450
- if (parked.retryTimer) {
10451
- clearTimeout(parked.retryTimer);
10452
- parked.retryTimer = void 0;
10453
- }
10454
- current = this.backgroundResponseAggregations.get(key) ?? this.createBackgroundResponseAggregation(key, sessionId, parked.held[0]?.context ?? context, delivery.target, delivery.sourceLabel);
10455
- this.applyHeldBackgroundResponses(current, parked);
10456
- this.applyPendingBackgroundResponseTerminal(current, parked);
10457
- if (parked.resolutionDropped) {
10458
- current.resolutionDropped = true;
10459
- parked.resolutionDropped = void 0;
10460
- }
10461
- } finally {
10462
- parked.resolvers--;
10463
- if (this.pendingBackgroundResponseTerminals.get(key) === parked && parked.resolvers === 0 && !parked.retryTimer && parked.held.length === 0 && (!parked.resolutionDropped || parked.turnEnded)) {
10464
- this.pendingBackgroundResponseTerminals.delete(key);
10465
- }
10466
- }
10467
- if (!current)
10468
- return;
10469
- if (current.turnComplete && parked.resolvers > 0)
10470
- return;
10471
- if (!current.turnComplete) {
10472
- this.scheduleBackgroundResponseAggregationFlush(key, current);
10473
- } else {
10474
- await this.completeBackgroundResponseAggregation(key, current);
10475
- }
10476
- return;
10477
- }
10478
- current.status = context.status;
10479
- current.label = context.label ?? current.label;
10480
- if (text.trim().length > 0)
10481
- current.parts.push(text);
10482
- if (context.turnComplete && parked && parked.resolvers > 0) {
10483
- parked.turnComplete = true;
10484
- parked.status = context.status;
10485
- parked.label = context.label ?? parked.label;
10486
- parked.completionPartial = context.partial === true;
10487
- } else if (context.turnComplete) {
10488
- current.turnComplete = true;
10489
- current.completionPartial = context.partial === true;
10490
- } else if (parked?.turnComplete && parked.resolvers === 0) {
10491
- current.turnComplete = true;
10492
- current.status = parked.status ?? current.status;
10493
- current.label = parked.label ?? current.label;
10494
- current.completionPartial = parked.completionPartial === true;
10495
- }
10496
- current.resolutionDropped ||= parked?.resolutionDropped;
10497
- if (!current.turnComplete) {
10498
- this.scheduleBackgroundResponseAggregationFlush(key, current);
10499
- return;
10500
- }
10501
- await this.completeBackgroundResponseAggregation(key, current);
10502
- }
10503
- async flushBackgroundResponseAggregation(key, aggregation) {
10504
- if (this.backgroundResponseAggregations.get(key) !== aggregation && !this.detachedBackgroundResponseAggregations.has(aggregation) || aggregation.flushing) {
10505
- return;
10506
- }
10507
- this.refreshBackgroundResponseDelivery(aggregation);
10508
- if (aggregation.retryTimer)
10509
- clearTimeout(aggregation.retryTimer);
10510
- aggregation.retryTimer = void 0;
10511
- let delivery = aggregation.delivery;
10512
- if (!delivery) {
10513
- if (aggregation.parts.length === 0) {
10514
- if (!this.owesTerminalBackgroundResponseCard(aggregation)) {
10515
- if (aggregation.retiring || aggregation.turnComplete) {
10516
- this.removeBackgroundResponseAggregation(key, aggregation);
10517
- } else {
10518
- this.scheduleBackgroundResponseAggregationFlush(key, aggregation);
10519
- }
10520
- return;
10521
- }
10522
- }
10523
- if (aggregation.timeoutTimer)
10524
- clearTimeout(aggregation.timeoutTimer);
10525
- aggregation.timeoutTimer = void 0;
10526
- const parts = aggregation.parts.splice(0);
10527
- delivery = {
10528
- status: aggregation.status,
10529
- label: aggregation.label,
10530
- parts,
10531
- partial: this.isPartialBackgroundResponseDelivery(aggregation, parts.length),
10532
- attempts: 0,
10533
- composedTurnComplete: aggregation.turnComplete === true
10534
- };
10535
- aggregation.delivery = delivery;
10536
- }
10537
- const body = this.formatBackgroundResponseAggregation(delivery);
10538
- aggregation.flushing = true;
10539
- let error;
10540
- try {
10541
- if (delivery.proactivePlan) {
10542
- await this.deliverProactiveText(aggregation.target, delivery.proactivePlan);
10543
- } else if (delivery.replyPlan) {
10544
- await this.deliverReplyText(aggregation.target.chatId, delivery.replyPlan, true);
10545
- } else if (this.supportsProactiveSend() && this.supportsProactiveTarget(aggregation.target)) {
10546
- await this.deliverBackgroundResponseToTarget(aggregation.sessionId, body, {
10547
- target: aggregation.target,
10548
- sourceLabel: aggregation.sourceLabel
10549
- });
10550
- } else {
10551
- delivery.preparedReplyBody ??= await this.prepareReplyOutput(aggregation.target.chatId, body);
10552
- await this.deliverBackgroundReply(aggregation.target.chatId, delivery.preparedReplyBody, aggregation.sessionId, aggregation.sourceLabel, true, true);
10553
- }
10554
- } catch (caught) {
10555
- error = caught;
10556
- if (caught instanceof ProactiveTextDeliveryError) {
10557
- delivery.proactivePlan = caught.plan;
10558
- } else if (caught instanceof ReplyTextDeliveryError) {
10559
- delivery.replyPlan = caught.plan;
10560
- }
10561
- } finally {
10562
- aggregation.flushing = false;
10563
- }
10564
- if (error === void 0) {
10565
- aggregation.delivery = void 0;
10566
- aggregation.delivered = true;
10567
- if (delivery.composedTurnComplete === true && aggregation.turnComplete && delivery.partial !== true && !aggregation.retiring) {
10568
- aggregation.completionDelivered = true;
10569
- }
10570
- if (aggregation.retiring || aggregation.turnComplete) {
10571
- await this.flushBackgroundResponseAggregation(key, aggregation);
10572
- } else {
10573
- this.scheduleBackgroundResponseAggregationFlush(key, aggregation);
10574
- }
10575
- return;
10576
- }
10577
- delivery.attempts++;
10578
- process.stderr.write(`[DingTalk:${this.name}] background response delivery failed (attempt ${delivery.attempts}): ${sanitizeLogText(error instanceof Error ? error.message : String(error), 300)}
10579
- `);
10580
- if (delivery.attempts >= BACKGROUND_RESPONSE_AGGREGATION_MAX_RETRIES || // A permanently rejected send (an invalid appkey, a missing app) cannot
10581
- // succeed later; retrying it only spends the chat's send quota.
10582
- error instanceof ProactiveTextDeliveryError && error.retryable === false) {
10583
- aggregation.delivery = void 0;
10584
- aggregation.dropped = true;
10585
- if (aggregation.parts.length === 0) {
10586
- if (aggregation.retiring || aggregation.turnComplete) {
10587
- this.removeBackgroundResponseAggregation(key, aggregation);
10588
- } else {
10589
- this.scheduleBackgroundResponseAggregationFlush(key, aggregation);
10590
- }
10591
- } else if (aggregation.retiring || aggregation.turnComplete) {
10592
- await this.flushBackgroundResponseAggregation(key, aggregation);
10593
- } else {
10594
- this.scheduleBackgroundResponseAggregationFlush(key, aggregation);
10595
- }
10596
- return;
10597
- }
10598
- aggregation.retryTimer = setTimeout(() => {
10599
- aggregation.retryTimer = void 0;
10600
- void this.flushBackgroundResponseAggregation(key, aggregation);
10601
- }, BACKGROUND_RESPONSE_AGGREGATION_RETRY_MS);
10602
- aggregation.retryTimer.unref?.();
10603
- }
10604
- /**
10605
- * A card carries `(部分)` whenever it is not the turn's whole output: the
10606
- * turn is still open, earlier text already went out (or was given up on),
10607
- * or the turn itself ended early.
10608
- */
10609
- isPartialBackgroundResponseDelivery(aggregation, partCount) {
10610
- return partCount > 0 && (aggregation.delivered === true || aggregation.dropped === true || aggregation.resolutionDropped === true || aggregation.retiring === true || aggregation.completionPartial === true || aggregation.turnComplete !== true);
10611
- }
10612
- /**
10613
- * A turn that outran the bounded wait had its text delivered under the
10614
- * `(部分)` label. When it then completes normally with nothing buffered,
10615
- * a header-only card is the only way the chat ever learns it finished.
10616
- */
10617
- owesTerminalBackgroundResponseCard(aggregation) {
10618
- return aggregation.turnComplete === true && aggregation.delivered === true && aggregation.completionDelivered !== true && aggregation.retiring !== true && aggregation.completionPartial !== true && aggregation.dropped !== true && aggregation.resolutionDropped !== true;
10619
- }
10620
- refreshBackgroundResponseDelivery(aggregation) {
10621
- const delivery = aggregation.delivery;
10622
- if (!delivery || aggregation.flushing)
10623
- return;
10624
- const plan = delivery.proactivePlan ?? delivery.replyPlan;
10625
- if (plan && plan.nextChunk > 0)
10626
- return;
10627
- const body = this.formatBackgroundResponseAggregation(delivery);
10628
- const header = body.split("\n", 1)[0];
10629
- const replaceHeader = /* @__PURE__ */ __name((text) => text.replace(/## (?:✅|❌|⏹️) Agent · [^\n]+/, () => header), "replaceHeader");
10630
- if (plan) {
10631
- plan.title = extractTitle(body);
10632
- plan.chunks[0] = replaceHeader(plan.chunks[0]);
10633
- }
10634
- if (delivery.preparedReplyBody) {
10635
- delivery.preparedReplyBody = replaceHeader(delivery.preparedReplyBody);
10636
- }
10637
- delivery.composedTurnComplete = aggregation.turnComplete === true;
10638
- }
10639
- removeBackgroundResponseAggregation(key, aggregation) {
10640
- if (this.backgroundResponseAggregations.get(key) === aggregation) {
10641
- this.backgroundResponseAggregations.delete(key);
10642
- }
10643
- this.detachedBackgroundResponseAggregations.delete(aggregation);
10644
- }
10645
- drainBackgroundResponseAggregations(sessionId) {
10646
- for (const [key, pending] of this.pendingBackgroundResponseTerminals) {
10647
- if (sessionId !== void 0 && pending.sessionId !== sessionId)
10648
- continue;
10649
- if (pending.retryTimer)
10650
- clearTimeout(pending.retryTimer);
10651
- pending.retryTimer = void 0;
10652
- pending.retiring = true;
10653
- pending.turnComplete = true;
10654
- pending.completionPartial = true;
10655
- this.pendingBackgroundResponseTerminals.delete(key);
10656
- this.detachedPendingBackgroundResponseTerminals.add(pending);
10657
- }
10658
- for (const pending of this.detachedPendingBackgroundResponseTerminals) {
10659
- if (sessionId !== void 0 && pending.sessionId !== sessionId)
10660
- continue;
10661
- if (pending.retryTimer)
10662
- clearTimeout(pending.retryTimer);
10663
- pending.retryTimer = void 0;
10664
- pending.retiring = true;
10665
- pending.turnComplete = true;
10666
- pending.completionPartial = true;
10667
- if (pending.held.length > 0 && this.router.getTarget(pending.sessionId) === pending.target) {
10668
- void this.flushDetachedBackgroundResponse("", pending.sessionId, pending, { target: pending.target }).catch((error) => {
10669
- process.stderr.write(`[DingTalk:${this.name}] background response delivery failed during drain: ${sanitizeLogText(error instanceof Error ? error.message : String(error), 300)}
10670
- `);
10671
- });
10672
- } else if (pending.held.length > 0) {
10673
- process.stderr.write(`[DingTalk:${this.name}] background response target unavailable during drain; ${pending.held.length} buffered segment(s) discarded
10674
- `);
10675
- pending.held.length = 0;
10676
- this.detachedPendingBackgroundResponseTerminals.delete(pending);
10677
- } else if (pending.held.length === 0) {
10678
- this.detachedPendingBackgroundResponseTerminals.delete(pending);
10679
- }
10680
- }
10681
- const aggregations = /* @__PURE__ */ new Set([
10682
- ...this.backgroundResponseAggregations.values(),
10683
- ...this.detachedBackgroundResponseAggregations
10684
- ]);
10685
- for (const aggregation of aggregations) {
10686
- if (sessionId !== void 0 && aggregation.sessionId !== sessionId) {
10687
- continue;
10688
- }
10689
- if (aggregation.timeoutTimer)
10690
- clearTimeout(aggregation.timeoutTimer);
10691
- if (aggregation.retryTimer)
10692
- clearTimeout(aggregation.retryTimer);
10693
- aggregation.timeoutTimer = void 0;
10694
- aggregation.retryTimer = void 0;
10695
- aggregation.retiring = true;
10696
- aggregation.turnComplete = true;
10697
- aggregation.completionPartial = true;
10698
- if (!aggregation.flushing) {
10699
- void this.flushBackgroundResponseAggregation(aggregation.key, aggregation);
10700
- }
10701
- }
10702
- }
10703
- createBackgroundResponseAggregation(key, sessionId, context, target, sourceLabel) {
10704
- const aggregation = {
10705
- key,
10706
- sessionId,
10707
- target,
10708
- sourceLabel,
10709
- status: context.status,
10710
- label: context.label,
10711
- parts: []
10712
- };
10713
- this.backgroundResponseAggregations.set(key, aggregation);
10714
- return aggregation;
10715
- }
10716
- scheduleBackgroundResponseResolutionRetry(key, sessionId, pending) {
10717
- if (pending.retiring)
10718
- return;
10719
- if (pending.retryTimer)
10720
- return;
10721
- pending.retryAttempts = (pending.retryAttempts ?? 0) + 1;
10722
- if (pending.retryAttempts >= BACKGROUND_RESPONSE_AGGREGATION_MAX_RETRIES) {
10723
- pending.resolutionDropped = true;
10724
- pending.turnEnded = pending.turnComplete === true;
10725
- pending.held.length = 0;
10726
- pending.turnComplete = void 0;
10727
- pending.status = void 0;
10728
- pending.label = void 0;
10729
- pending.completionPartial = void 0;
10730
- if (pending.turnEnded) {
10731
- this.detachedPendingBackgroundResponseTerminals.delete(pending);
10732
- }
10733
- return;
10734
- }
10735
- pending.retryTimer = setTimeout(() => {
10736
- pending.retryTimer = void 0;
10737
- pending.retryInFlight = true;
10738
- void this.retryBackgroundResponseResolution(key, sessionId, pending).catch((error) => {
10739
- process.stderr.write(`[DingTalk:${this.name}] background response target resolution failed: ${sanitizeLogText(error instanceof Error ? error.message : String(error), 300)}
10740
- `);
10741
- }).finally(() => {
10742
- pending.retryInFlight = false;
10743
- if (pending.retiring || !pending.retryTimer && !pending.resolutionDropped) {
10744
- this.detachedPendingBackgroundResponseTerminals.delete(pending);
10745
- }
10746
- if (this.pendingBackgroundResponseTerminals.get(key) === pending && pending.resolvers === 0 && !pending.retryTimer && pending.held.length === 0 && (!pending.resolutionDropped || pending.turnEnded)) {
10747
- this.pendingBackgroundResponseTerminals.delete(key);
10748
- }
10749
- });
10750
- }, BACKGROUND_RESPONSE_AGGREGATION_RETRY_MS);
10751
- pending.retryTimer.unref?.();
10752
- const active = this.pendingBackgroundResponseTerminals.get(key);
10753
- if (!active || active === pending) {
10754
- this.pendingBackgroundResponseTerminals.set(key, pending);
10755
- }
10756
- }
10757
- async retryBackgroundResponseResolution(key, sessionId, pending) {
10758
- let delivery;
10759
- try {
10760
- delivery = await this.resolveBackgroundResponseDelivery(sessionId);
10761
- } catch (error) {
10762
- if (this.pendingBackgroundResponseTerminals.get(key) === pending && !this.backgroundResponseAggregations.has(key) || this.detachedPendingBackgroundResponseTerminals.has(pending)) {
10763
- this.scheduleBackgroundResponseResolutionRetry(key, sessionId, pending);
10764
- }
10765
- throw error;
10766
- }
10767
- if (!delivery || this.router.getTarget(sessionId) !== delivery.target) {
10768
- if (pending.retiring) {
10769
- if (pending.held.length > 0) {
10770
- process.stderr.write(`[DingTalk:${this.name}] background response target unavailable during drain; ${pending.held.length} buffered segment(s) discarded
10771
- `);
10772
- }
10773
- pending.held.length = 0;
10774
- this.detachedPendingBackgroundResponseTerminals.delete(pending);
10775
- return;
10776
- }
10777
- if (this.pendingBackgroundResponseTerminals.get(key) === pending && !this.backgroundResponseAggregations.has(key) || this.detachedPendingBackgroundResponseTerminals.has(pending)) {
10778
- this.scheduleBackgroundResponseResolutionRetry(key, sessionId, pending);
10779
- }
10780
- return;
10781
- }
10782
- if (pending.retiring || this.pendingBackgroundResponseTerminals.get(key) !== pending || pending.turnComplete) {
10783
- await this.flushDetachedBackgroundResponse(key, sessionId, pending, delivery);
10784
- return;
10785
- }
10786
- const first = pending.held[0];
10787
- if (!first)
10788
- return;
10789
- const aggregation = this.createBackgroundResponseAggregation(key, sessionId, first.context, delivery.target, delivery.sourceLabel);
10790
- this.applyHeldBackgroundResponses(aggregation, pending);
10791
- if (pending.resolutionDropped) {
10792
- aggregation.resolutionDropped = true;
10793
- pending.resolutionDropped = void 0;
10794
- }
10795
- if (this.pendingBackgroundResponseTerminals.get(key) === pending) {
10796
- this.pendingBackgroundResponseTerminals.delete(key);
10797
- }
10798
- this.scheduleBackgroundResponseAggregationFlush(key, aggregation);
10799
- }
10800
- holdPendingBackgroundResponse(pending, text, context) {
10801
- if (text.trim().length > 0)
10802
- pending.held.push({ text, context });
10803
- if (context.turnComplete) {
10804
- pending.turnComplete = true;
10805
- pending.status = context.status;
10806
- pending.label = context.label ?? pending.label;
10807
- pending.completionPartial = context.partial === true;
10808
- }
10809
- }
10810
- applyHeldBackgroundResponses(aggregation, pending) {
10811
- for (const { text, context } of pending.held.splice(0)) {
10812
- aggregation.status = context.status;
10813
- aggregation.label = context.label ?? aggregation.label;
10814
- aggregation.parts.push(text);
10815
- if (context.turnComplete) {
10816
- aggregation.turnComplete = true;
10817
- aggregation.completionPartial = context.partial === true;
10818
- }
10819
- }
10820
- }
10821
- applyPendingBackgroundResponseTerminal(aggregation, pending) {
10822
- if (!pending.turnComplete)
10823
- return;
10824
- aggregation.turnComplete = true;
10825
- aggregation.status = pending.status ?? aggregation.status;
10826
- aggregation.label = pending.label ?? aggregation.label;
10827
- aggregation.completionPartial = pending.completionPartial === true;
10828
- pending.turnComplete = void 0;
10829
- pending.status = void 0;
10830
- pending.label = void 0;
10831
- pending.completionPartial = void 0;
10832
- }
10833
- async completeBackgroundResponseAggregation(key, aggregation) {
10834
- if (aggregation.delivery) {
10835
- aggregation.delivery.status = aggregation.status;
10836
- aggregation.delivery.label = aggregation.label ?? aggregation.delivery.label;
10837
- aggregation.delivery.partial = this.isPartialBackgroundResponseDelivery(aggregation, aggregation.delivery.parts.length) || aggregation.parts.length > 0;
10838
- }
10839
- if (aggregation.timeoutTimer)
10840
- clearTimeout(aggregation.timeoutTimer);
10841
- aggregation.timeoutTimer = void 0;
10842
- await this.flushBackgroundResponseAggregation(key, aggregation);
10843
- }
10844
- async flushDetachedBackgroundResponse(key, sessionId, pending, delivery) {
10845
- const first = pending.held[0];
10846
- if (!first) {
10847
- this.detachedPendingBackgroundResponseTerminals.delete(pending);
10848
- return;
10849
- }
10850
- const aggregation = {
10851
- key,
10852
- sessionId,
10853
- target: delivery.target,
10854
- sourceLabel: delivery.sourceLabel,
10855
- status: first.context.status,
10856
- label: first.context.label,
10857
- parts: [],
10858
- turnComplete: pending.turnComplete,
10859
- completionPartial: pending.completionPartial,
10860
- resolutionDropped: pending.resolutionDropped
10861
- };
10862
- this.applyHeldBackgroundResponses(aggregation, pending);
10863
- aggregation.status = pending.status ?? aggregation.status;
10864
- aggregation.label = pending.label ?? aggregation.label;
10865
- if (this.pendingBackgroundResponseTerminals.get(key) === pending) {
10866
- this.pendingBackgroundResponseTerminals.delete(key);
10867
- }
10868
- this.detachedPendingBackgroundResponseTerminals.delete(pending);
10869
- this.detachedBackgroundResponseAggregations.add(aggregation);
10870
- await this.flushBackgroundResponseAggregation(key, aggregation);
10871
- }
10872
- scheduleBackgroundResponseAggregationFlush(key, aggregation) {
10873
- if (aggregation.timeoutTimer || aggregation.delivery)
10874
- return;
10875
- aggregation.timeoutTimer = setTimeout(() => {
10876
- aggregation.timeoutTimer = void 0;
10877
- void this.flushBackgroundResponseAggregation(key, aggregation);
10878
- }, BACKGROUND_RESPONSE_AGGREGATION_TIMEOUT_MS);
10879
- aggregation.timeoutTimer.unref?.();
10880
- }
10881
- formatBackgroundResponseAggregation(delivery) {
10882
- const icon = delivery.status === "completed" ? "\u2705" : delivery.status === "failed" ? "\u274C" : "\u23F9\uFE0F";
10883
- const label = this.formatBackgroundAgentLabel(delivery.label);
10884
- const header = `## ${icon} Agent \xB7 ${label}${delivery.partial ? "\uFF08\u90E8\u5206\uFF09" : ""}`;
10885
- if (delivery.parts.length === 0)
10886
- return header;
10887
- return `${header}
10888
-
10889
- ${delivery.parts.join("\n\n")}`;
10890
- }
10891
- formatBackgroundAgentResponse(text, label) {
10892
- return `## \u{1F916} Agent \xB7 ${this.formatBackgroundAgentLabel(label)}
10893
-
10894
- ${text}`;
10895
- }
10896
- formatBackgroundAgentLabel(label) {
10897
- const normalized = label?.replace(new RegExp("\\p{Cc}+", "gu"), " ").replace(/\s+/g, " ").trim();
10898
- return escapeDingTalkMarkdown(normalized || "\u540E\u53F0\u4EFB\u52A1");
10899
- }
10900
- /**
10901
- * Body-identical to the base implementation — this override exists only to
10902
- * widen the signature, which the base seam does not declare. The background
10903
- * aggregation flush passes `prepared` so the body it already projected isn't
10904
- * projected a second time (that would re-upload its files), and
10905
- * `failOnHttpError` so a failed send throws instead of being swallowed,
10906
- * letting the flush capture the delivery plan for the next retry.
10907
- */
10908
- async deliverBackgroundReply(chatId, text, sessionId, sourceLabel, prepared = false, failOnHttpError = false) {
10909
- await this.sendResponseMessage(chatId, text, sessionId, sourceLabel, prepared, failOnHttpError);
10910
- }
10911
- async sendResponseMessage(chatId, text, sessionId, sourceLabel, prepared = false, failOnHttpError = false) {
10284
+ async sendResponseMessage(chatId, text, sessionId, sourceLabel, prepared = false) {
10912
10285
  const atUserId = this.atSender ? this.sessionMentionTargets.get(sessionId) : void 0;
10913
10286
  if (atUserId)
10914
10287
  this.sessionMentionTargets.delete(sessionId);
10915
- await this.sendReply(chatId, text, atUserId, sourceLabel ?? this.getResponseSourceLabel(sessionId), prepared, failOnHttpError);
10288
+ await this.sendReply(chatId, text, atUserId, sourceLabel ?? this.getResponseSourceLabel(sessionId), prepared);
10916
10289
  }
10917
10290
  async sendFallbackReply(chatId, text, sessionId, sourceLabel) {
10918
10291
  const atUserId = this.atSender ? this.sessionMentionTargets.get(sessionId) : void 0;
@@ -10985,27 +10358,39 @@ ${text}`;
10985
10358
  const replied = data.text.repliedMsg;
10986
10359
  const isReplyToBot = !!data.chatbotUserId && replied.senderId === data.chatbotUserId;
10987
10360
  const text = this.summarizeRepliedContent(replied);
10988
- const downloadCode = replied.content?.downloadCode;
10989
- const mediaType = this.mediaTypeFromMsgType(replied.msgType);
10990
- return {
10991
- referencedText: text || void 0,
10992
- isReplyToBot,
10993
- ...downloadCode && mediaType ? {
10994
- media: {
10361
+ const media = [];
10362
+ const richText = replied.content?.richText;
10363
+ if (Array.isArray(richText)) {
10364
+ for (const part of richText) {
10365
+ const mediaType = this.mediaTypeFromMsgType(richTextPartType(part));
10366
+ if (part.downloadCode && mediaType) {
10367
+ media.push({ downloadCode: part.downloadCode, mediaType });
10368
+ }
10369
+ }
10370
+ } else {
10371
+ const downloadCode = replied.content?.downloadCode;
10372
+ const mediaType = this.mediaTypeFromMsgType(replied.msgType);
10373
+ if (downloadCode && mediaType) {
10374
+ media.push({
10995
10375
  downloadCode,
10996
10376
  mediaType,
10997
10377
  fileName: replied.content?.fileName
10998
- }
10999
- } : {}
10378
+ });
10379
+ }
10380
+ }
10381
+ return {
10382
+ referencedText: text || void 0,
10383
+ isReplyToBot,
10384
+ media
11000
10385
  };
11001
10386
  }
11002
10387
  if (data.quoteMessage) {
11003
10388
  const quote = data.quoteMessage;
11004
10389
  const isReplyToBot = !!data.chatbotUserId && quote.senderId === data.chatbotUserId;
11005
10390
  const text = quote.text?.content?.trim();
11006
- return { referencedText: text || void 0, isReplyToBot };
10391
+ return { referencedText: text || void 0, isReplyToBot, media: [] };
11007
10392
  }
11008
- return { isReplyToBot: false };
10393
+ return { isReplyToBot: false, media: [] };
11009
10394
  }
11010
10395
  /**
11011
10396
  * Warn once when a chat-record payload yields nothing to show the model.
@@ -11044,9 +10429,10 @@ ${text}`;
11044
10429
  if (content?.richText && Array.isArray(content.richText)) {
11045
10430
  const parts = [];
11046
10431
  for (const part of content.richText) {
11047
- const partType = part.type || "text";
11048
- if (partType === "text" && part.text) {
11049
- parts.push(part.text);
10432
+ const partType = richTextPartType(part);
10433
+ const partText = typeof part.text === "string" ? part.text : part.content;
10434
+ if (partType === "text" && partText) {
10435
+ parts.push(partText);
11050
10436
  } else if (partType === "picture") {
11051
10437
  parts.push("[image]");
11052
10438
  } else if (partType === "at" && part.atName) {
@@ -11178,8 +10564,7 @@ ${text}`;
11178
10564
  * this message's own media — `(audio)`, `(video)`, `(file: name)`. Only the
11179
10565
  * direct-media call site has one, and only that call may erase it: on the
11180
10566
  * quoted-media path `envelope.text` is the user's own reply, and a reply
11181
- * that happens to read exactly like a placeholder must survive (a group
11182
- * `@Bot (audio)` reaches here as exactly `(audio)` after mention removal).
10567
+ * that happens to read exactly like a placeholder must survive.
11183
10568
  */
11184
10569
  async attachMedia(envelope, downloadCode, mediaType, fileName, cleanPlaceholderText) {
11185
10570
  let token;
@@ -11282,13 +10667,8 @@ ${text}`;
11282
10667
  process.stderr.write(`[DingTalk:${this.name}] message msgId=${sanitizeLogText(msgId || "unknown", 80)} conversationId=${sanitizeLogText(conversationId || "", 120)} isGroup=${isGroup} isMentioned=${isMentioned} senderNick=${sanitizeLogText(senderNick || "", 80)} senderStaffId=${sanitizeLogText(senderStaffId || "", 80)} senderId=${sanitizeLogText(senderIdValue || "", 80)}
11283
10668
  `);
11284
10669
  const content = this.extractContent(data);
11285
- let cleanText = content.text;
11286
- if (isMentioned) {
11287
- cleanText = cleanText.replace(/^\s*@[^\s\p{Cf}]+/u, "").trim();
11288
- }
11289
10670
  const quoted = this.extractQuotedContext(data);
11290
10671
  const chatId = conversationId || sessionWebhook;
11291
- const messageText = isMentioned ? cleanText : cleanText || content.text;
11292
10672
  const mentionedMemberIds = isGroup ? collectNonBotMentionIds(data) : [];
11293
10673
  const senderId = senderStaffId || senderIdValue || "";
11294
10674
  const senderName = senderNick || senderId || "Unknown";
@@ -11298,7 +10678,7 @@ ${text}`;
11298
10678
  senderName,
11299
10679
  chatId,
11300
10680
  ...isGroup && conversationTitle ? { chatName: conversationTitle } : {},
11301
- text: messageText,
10681
+ text: content.text,
11302
10682
  ...content.syntheticText ? { syntheticText: true } : {},
11303
10683
  ...mentionedMemberIds.length > 0 ? { mentionedMemberIds } : {},
11304
10684
  isGroup,
@@ -11310,14 +10690,14 @@ ${text}`;
11310
10690
  if (this.atSender && isGroup && senderStaffId) {
11311
10691
  envelope[mentionTarget] = senderStaffId;
11312
10692
  }
11313
- const processMessage = content.downloadCodes.length > 0 || quoted.media ? this.prepareThenHandleInbound(envelope, async () => {
10693
+ const processMessage = content.downloadCodes.length > 0 || quoted.media.length > 0 ? this.prepareThenHandleInbound(envelope, async () => {
11314
10694
  if (content.downloadCodes.length > 0 && content.mediaType) {
11315
10695
  for (const downloadCode of content.downloadCodes) {
11316
10696
  await this.attachMedia(envelope, downloadCode, content.mediaType, content.fileName, content.placeholder);
11317
10697
  }
11318
10698
  }
11319
- if (quoted.media) {
11320
- await this.attachMedia(envelope, quoted.media.downloadCode, quoted.media.mediaType, quoted.media.fileName);
10699
+ for (const media of quoted.media) {
10700
+ await this.attachMedia(envelope, media.downloadCode, media.mediaType, media.fileName);
11321
10701
  }
11322
10702
  }) : this.handleInbound(envelope);
11323
10703
  processMessage.catch((err) => {
@@ -11363,12 +10743,6 @@ var plugin = {
11363
10743
  required: true,
11364
10744
  envResolvable: true
11365
10745
  },
11366
- {
11367
- key: "aggregateBackgroundAgentResponses",
11368
- label: "Aggregate Background Agent Responses",
11369
- kind: "boolean",
11370
- description: "Buffer each background Agent turn and send one labeled result instead of labeled segments"
11371
- },
11372
10746
  {
11373
10747
  key: "interactiveCards",
11374
10748
  label: "Interactive Cards",