@qwen-code/qwen-code 0.23.2 → 0.23.3-nightly.20260911.aaa6a32aae

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 (419) hide show
  1. package/README.md +35 -15
  2. package/bundled/computer-use/SKILL.md +1 -1
  3. package/bundled/goal-draft/SKILL.md +10 -10
  4. package/bundled/qc-helper/docs/configuration/model-providers.md +66 -28
  5. package/bundled/qc-helper/docs/configuration/settings.md +8 -3
  6. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  7. package/bundled/qc-helper/docs/features/channels/dingtalk.md +0 -20
  8. package/bundled/qc-helper/docs/features/channels/dws.md +7 -1
  9. package/bundled/qc-helper/docs/features/channels/overview.md +5 -6
  10. package/bundled/qc-helper/docs/features/commands.md +62 -9
  11. package/bundled/qc-helper/docs/features/computer-use.md +1 -1
  12. package/bundled/qc-helper/docs/features/cross-session-protocol.md +338 -0
  13. package/bundled/qc-helper/docs/features/goals.md +22 -18
  14. package/bundled/qc-helper/docs/features/hooks.md +28 -22
  15. package/bundled/qc-helper/docs/features/sub-agents.md +27 -0
  16. package/bundled/qc-helper/docs/qwen-serve.md +23 -6
  17. package/bundled/review/SKILL.md +93 -80
  18. package/bundled/review/references/persistence.md +2 -0
  19. package/bundled/review/references/posting.md +31 -14
  20. package/bundled/workflow-authoring/SKILL.md +410 -0
  21. package/bundled/workflow-creator/SKILL.md +1 -1
  22. package/chunks/{MaxSizedBox-4C3BKKKY.js → MaxSizedBox-7C5XTBZI.js} +64 -53
  23. package/chunks/{StandaloneSessionPicker-TXVF65YW.js → StandaloneSessionPicker-IGTT3ZRX.js} +88 -76
  24. package/chunks/{acp-startup-profiler-KEU6VAYR.js → acp-startup-profiler-RUQNTNU5.js} +2 -2
  25. package/chunks/acp-subagent-executor-IUHVNVVO.js +140 -0
  26. package/chunks/{acpAgent-H5XBKGB4.js → acpAgent-W43WM2K4.js} +957 -243
  27. package/chunks/{agent-T5LEFJIU.js → agent-2XMXC5JW.js} +48 -38
  28. package/chunks/{agent-headless-VZKSRH36.js → agent-headless-2HHBVCP6.js} +48 -38
  29. package/chunks/{anthropicContentGenerator-PRJWWVYJ.js → anthropicContentGenerator-7RI3MPIW.js} +69 -36
  30. package/chunks/{artifact-tool-G5LHNECG.js → artifact-tool-HHVHCPNG.js} +59 -109
  31. package/chunks/{askUserQuestion-I5W5S3D6.js → askUserQuestion-RFMXTD3B.js} +2 -2
  32. package/chunks/{bridge-AOX5IY44.js → bridge-ID6N4IH5.js} +69 -58
  33. package/chunks/{ca-KC2AISNS.js → ca-MX3WCEEG.js} +1 -1
  34. package/chunks/{channel-management-service-MWQGHPAS.js → channel-management-service-ASCXI7FR.js} +6 -6
  35. package/chunks/{channel-settings-store-XZCGDGHW.js → channel-settings-store-TPJFQAZY.js} +76 -65
  36. package/chunks/{channel-worker-group-SQ5FRWOH.js → channel-worker-group-JR6JOELM.js} +9 -9
  37. package/chunks/{channel-worker-manager-TU4ZNWOE.js → channel-worker-manager-AVKJEZFL.js} +19 -10
  38. package/chunks/{channel-worker-supervisor-EMITFMCP.js → channel-worker-supervisor-OOYY7BAQ.js} +7 -7
  39. package/chunks/{chunk-4WMGYG3F.js → chunk-22FWWGSM.js} +2 -2
  40. package/chunks/{chunk-LWX4WDFF.js → chunk-2S5RIGZJ.js} +43 -15
  41. package/chunks/{chunk-CLKE4IY3.js → chunk-2SZH22YO.js} +1 -1
  42. package/chunks/{chunk-HJ5UJQQL.js → chunk-2UKKQGRA.js} +3639 -1804
  43. package/chunks/{chunk-MWIO7MF6.js → chunk-2WSLXP3W.js} +4 -0
  44. package/chunks/{chunk-HNLMYDQE.js → chunk-33LYAC4R.js} +10 -6
  45. package/chunks/{chunk-VBLAI2HA.js → chunk-3FPYT6QC.js} +0 -31
  46. package/chunks/{chunk-F53KKZUD.js → chunk-3LMDSCLU.js} +158 -10
  47. package/chunks/{chunk-WXFCI3O5.js → chunk-3MAUPOZ4.js} +2 -2
  48. package/chunks/{chunk-CRZBDVP2.js → chunk-432JQKIO.js} +10 -10
  49. package/chunks/{chunk-IRGDIDGJ.js → chunk-43RQ552L.js} +364 -84
  50. package/chunks/{chunk-PFKGV6PO.js → chunk-465USTVK.js} +9 -15
  51. package/chunks/{chunk-WG7BL3FY.js → chunk-473RJLIH.js} +1 -1
  52. package/chunks/{chunk-J3VZF2AL.js → chunk-4O2AXZXU.js} +2 -2
  53. package/chunks/{chunk-N6S3NUYJ.js → chunk-55VOWZ4C.js} +1 -1
  54. package/chunks/{chunk-OWCFKIFQ.js → chunk-5CZMWDJI.js} +2 -2
  55. package/chunks/{chunk-7NDZKE2M.js → chunk-5MUIHID6.js} +5 -5
  56. package/chunks/{chunk-RM244SCQ.js → chunk-5Z74GE4N.js} +1 -1
  57. package/chunks/{chunk-G5VOXCRX.js → chunk-6375QMAO.js} +2 -2
  58. package/chunks/{chunk-3LPJ776W.js → chunk-63GQZKXL.js} +164 -31
  59. package/chunks/{chunk-O2FEO2CB.js → chunk-6GDELAVL.js} +18 -2
  60. package/chunks/{chunk-7PD7ZMX5.js → chunk-6HI2I3OM.js} +168 -6
  61. package/chunks/{chunk-CALNF3Z3.js → chunk-7C57HCOR.js} +1 -1
  62. package/chunks/{chunk-UYDQYDW2.js → chunk-7IBS746B.js} +1 -1
  63. package/chunks/{chunk-AUTUFD5X.js → chunk-ABNX6E6K.js} +1 -1
  64. package/chunks/chunk-ACHCT36C.js +28 -0
  65. package/chunks/{chunk-2WC3Y7YY.js → chunk-AEY27Z35.js} +401 -23
  66. package/chunks/{chunk-AO2VMS72.js → chunk-AQFRRH73.js} +3 -3
  67. package/chunks/{chunk-PDN7FJZV.js → chunk-ASWEMQIZ.js} +4 -4
  68. package/chunks/chunk-AYEJOTIU.js +43 -0
  69. package/chunks/{chunk-QFJZAY7W.js → chunk-BKFRA4F5.js} +5 -5
  70. package/chunks/{chunk-KCF2436G.js → chunk-BNLW5N6U.js} +4 -4
  71. package/chunks/{chunk-GOKAOSCN.js → chunk-BRFOZEPA.js} +2 -2
  72. package/chunks/{process-registry-OAEG6WGC.js → chunk-BYUAT5OC.js} +1 -0
  73. package/chunks/chunk-C5CECJ46.js +340 -0
  74. package/chunks/{chunk-NOO4QFXM.js → chunk-C75BXMPM.js} +1 -3
  75. package/chunks/chunk-CAAMI77K.js +937 -0
  76. package/chunks/{chunk-QTB4VP4K.js → chunk-CBGHRAWM.js} +304 -23
  77. package/chunks/chunk-CF5KXZZX.js +150 -0
  78. package/chunks/chunk-CFMZLE3L.js +75 -0
  79. package/chunks/{chunk-TGNNLRC3.js → chunk-CJ3DHN5I.js} +1 -0
  80. package/chunks/{chunk-ERXNTINK.js → chunk-CQZJYGRX.js} +1 -1
  81. package/chunks/{chunk-WBU2PIZ5.js → chunk-CSDKDHWV.js} +23 -16
  82. package/chunks/{chunk-2EKVPSIJ.js → chunk-D754KKNZ.js} +9 -2
  83. package/chunks/{chunk-E6TI726I.js → chunk-DGC7BKEZ.js} +1 -1
  84. package/chunks/{chunk-7SVM3RP2.js → chunk-DMMOQWRF.js} +4 -6
  85. package/chunks/{chunk-J3TJH52D.js → chunk-DOTF2PF2.js} +1 -1
  86. package/chunks/{chunk-2BMXHB6N.js → chunk-DWBNQR53.js} +7 -7
  87. package/chunks/{chunk-ZN5TKAVR.js → chunk-E5LTUWKZ.js} +3 -3
  88. package/chunks/chunk-EGW3ZP6Y.js +32 -0
  89. package/chunks/chunk-ELRMZTPF.js +374 -0
  90. package/chunks/{chunk-RNAJVXUG.js → chunk-ENAUXRPG.js} +6 -6
  91. package/chunks/{chunk-WXD7INFV.js → chunk-EO4U2X47.js} +10 -8
  92. package/chunks/{chunk-WDVV3LRM.js → chunk-EPVEPTI3.js} +45 -152
  93. package/chunks/chunk-ERU3SDXT.js +27 -0
  94. package/chunks/{chunk-4HOEU2OR.js → chunk-EWJTAP3Y.js} +1 -19
  95. package/chunks/{chunk-GSFV5RQW.js → chunk-EYN3G5XD.js} +328 -4
  96. package/chunks/{chunk-QB3KS3N3.js → chunk-FGROOEKM.js} +5 -40
  97. package/chunks/{chunk-TOOOLHVS.js → chunk-FH5AVEWJ.js} +3 -3
  98. package/chunks/{chunk-DAI65CMX.js → chunk-FJZWRNEW.js} +1 -1
  99. package/chunks/{chunk-GNY7B3CA.js → chunk-FUQK5ZNL.js} +1 -1
  100. package/chunks/{chunk-GOEVQADN.js → chunk-GDIPPCW6.js} +330 -175
  101. package/chunks/{chunk-ALMR3E6Q.js → chunk-GDWE23OR.js} +3 -3
  102. package/chunks/{chunk-LNYV4GXX.js → chunk-GSKX53AN.js} +0 -139
  103. package/chunks/{chunk-ELD3OBPU.js → chunk-GWOVD63C.js} +3 -3
  104. package/chunks/{chunk-IWABUX6T.js → chunk-GX5FF2IE.js} +6 -6
  105. package/chunks/{chunk-22GORRNY.js → chunk-GZMNHAYC.js} +1 -1
  106. package/chunks/{chunk-YZTGGCEE.js → chunk-H3TFIFX3.js} +1 -1
  107. package/chunks/{chunk-6G4V7SE4.js → chunk-HG46TTAG.js} +1 -1
  108. package/chunks/{chunk-FETY36NQ.js → chunk-HGEUHUEV.js} +1 -1
  109. package/chunks/{chunk-KEPC5BOL.js → chunk-IBRQG2MP.js} +12 -15
  110. package/chunks/{chunk-OXR34GCD.js → chunk-IILWL3KY.js} +2054 -146
  111. package/chunks/{chunk-IW6RQPQB.js → chunk-IJOS26LH.js} +1 -3
  112. package/chunks/{chunk-ORFIYTI2.js → chunk-IK2MWJP5.js} +1 -1
  113. package/chunks/{chunk-CMWU6P4D.js → chunk-IRJRB3OD.js} +1 -1
  114. package/chunks/{chunk-QHLHE2OT.js → chunk-IUN5ZMFY.js} +1 -1
  115. package/chunks/{chunk-LYT2OU7D.js → chunk-IXXV6BVB.js} +172 -6
  116. package/chunks/{chunk-R3JIDRUL.js → chunk-J6H4JP25.js} +4 -4
  117. package/chunks/{chunk-NB3NDQQK.js → chunk-J6SBP5G2.js} +1 -1
  118. package/chunks/{chunk-TRQNRP2H.js → chunk-J7LBAKDH.js} +46 -3
  119. package/chunks/{chunk-67XTVRVB.js → chunk-JJFHISXU.js} +30 -25
  120. package/chunks/chunk-JL6APGBX.js +43 -0
  121. package/chunks/{chunk-NX7ZTXFF.js → chunk-JSKEW4E7.js} +2 -1
  122. package/chunks/{chunk-BK7D2JR6.js → chunk-JVTXAA35.js} +3 -3
  123. package/chunks/chunk-K2OJUPOE.js +78 -0
  124. package/chunks/{chunk-G3ZUMSFS.js → chunk-K3U6VB3O.js} +6 -6
  125. package/chunks/{chunk-4I3WFI3U.js → chunk-K4KWLF7Q.js} +12 -12
  126. package/chunks/{chunk-WXPPUPHM.js → chunk-KWFFJ6AK.js} +1 -1
  127. package/chunks/{chunk-46MMBZHI.js → chunk-KZYOFJ6V.js} +4 -4
  128. package/chunks/{chunk-ULZECEIP.js → chunk-LDQHA6L4.js} +2 -20
  129. package/chunks/{chunk-7LTCFO6T.js → chunk-LQBAFO5D.js} +6 -5
  130. package/chunks/{chunk-SOA4HKRJ.js → chunk-LT2XFADM.js} +2 -2
  131. package/chunks/{chunk-JYGIJA4W.js → chunk-LWWRJRCD.js} +1 -1
  132. package/chunks/{chunk-YQGW3M6Z.js → chunk-MFQWRBFB.js} +5 -5
  133. package/chunks/{chunk-TODNHE76.js → chunk-MUFGTWQH.js} +5 -5
  134. package/chunks/{chunk-5DQ4YTIZ.js → chunk-MV5XRRML.js} +3 -3
  135. package/chunks/{chunk-IR6JKBAP.js → chunk-NOUK63IR.js} +2 -2
  136. package/chunks/{chunk-XQ4RDO5B.js → chunk-NV77SEX3.js} +1 -1
  137. package/chunks/{chunk-OFVAS4AR.js → chunk-NWDPOFJI.js} +2 -2
  138. package/chunks/chunk-NY6OPAPS.js +820 -0
  139. package/chunks/{chunk-WDN64MVT.js → chunk-O5VX66FB.js} +127 -18
  140. package/chunks/{chunk-MV5DTLJV.js → chunk-OHCR4O3U.js} +1 -1
  141. package/chunks/{chunk-LEAOJ43M.js → chunk-OKOPKQ2X.js} +1310 -2107
  142. package/chunks/{chunk-B25JYXZE.js → chunk-ONLJBOI2.js} +971 -17
  143. package/chunks/{chunk-QQK4L3UU.js → chunk-OWUAZXXN.js} +132 -26
  144. package/chunks/{chunk-R457KFV7.js → chunk-P42IUOAO.js} +3 -3
  145. package/chunks/{chunk-LUNC5KCL.js → chunk-PRELUGCQ.js} +214 -39
  146. package/chunks/{chunk-5OZUKLL7.js → chunk-QSMQKTXV.js} +4 -4
  147. package/chunks/{chunk-FAJPLSYF.js → chunk-QTQYLQ5A.js} +85 -81
  148. package/chunks/{chunk-CALTQWTZ.js → chunk-QVZDV4ZS.js} +2 -2
  149. package/chunks/{chunk-J6MB5ZHZ.js → chunk-QZW6WRB7.js} +2 -1
  150. package/chunks/{chunk-KFECPHLV.js → chunk-RBWAGV73.js} +3 -3
  151. package/chunks/{chunk-4VY3ITHR.js → chunk-RF5RQRTD.js} +3 -3
  152. package/chunks/{chunk-HIXUUCGY.js → chunk-RPMXMR6U.js} +2 -2
  153. package/chunks/{chunk-3OAXF3UK.js → chunk-RRQEZBL2.js} +3756 -1343
  154. package/chunks/{chunk-4ALNJDHL.js → chunk-RSGEAWFJ.js} +19 -1
  155. package/chunks/{chunk-5BH2AIEY.js → chunk-RUE62UH6.js} +2 -2
  156. package/chunks/{chunk-PQEISIKS.js → chunk-SAH4BD2J.js} +0 -67
  157. package/chunks/{chunk-A7EFXK7P.js → chunk-SAOJHRWY.js} +2 -2
  158. package/chunks/{chunk-JO77FGNZ.js → chunk-SDUIETBG.js} +19 -7
  159. package/chunks/{chunk-6RZX2HIH.js → chunk-TBEXLLAO.js} +2 -2
  160. package/chunks/{chunk-PSPAM24S.js → chunk-TBSCTWKF.js} +6 -0
  161. package/chunks/{chunk-HRPFBHW7.js → chunk-TPKQIA7G.js} +1 -0
  162. package/chunks/{chunk-XDNFODER.js → chunk-TUIW5LLK.js} +1 -1
  163. package/chunks/{chunk-APXIW2TF.js → chunk-TVV5FA3G.js} +4 -4
  164. package/chunks/chunk-U6H3XTFA.js +95 -0
  165. package/chunks/{chunk-S5QR6CB5.js → chunk-UKMWZ5NS.js} +108 -887
  166. package/chunks/{chunk-U6REWGVR.js → chunk-VG2BRSEK.js} +2 -2
  167. package/chunks/chunk-VGBOJH2D.js +127 -0
  168. package/chunks/chunk-VGY2RGXL.js +100 -0
  169. package/chunks/{chunk-ZP5XDLSA.js → chunk-VLWG3EHY.js} +12 -12
  170. package/chunks/{chunk-4JNHNVAZ.js → chunk-W547PYQ7.js} +9 -4
  171. package/chunks/{chunk-7VEYUF3N.js → chunk-W5ZQMAEM.js} +1 -1
  172. package/chunks/{chunk-QAZ2MGYT.js → chunk-W7JJLUSB.js} +2 -2
  173. package/chunks/{chunk-CCBTNJB4.js → chunk-W7Q7XDQI.js} +39 -27
  174. package/chunks/{chunk-DARWOZY6.js → chunk-WD6YQI5M.js} +1 -1
  175. package/chunks/{chunk-F2NYVASI.js → chunk-WXAWG3JS.js} +30 -13
  176. package/chunks/{chunk-NPKCVSXX.js → chunk-XB5JRCAM.js} +11 -9
  177. package/chunks/{chunk-XSOXPG2L.js → chunk-XE46RQFI.js} +136 -8
  178. package/chunks/{chunk-QTNCGZHQ.js → chunk-XX5HQLCZ.js} +16 -0
  179. package/chunks/{chunk-2Z3T52OC.js → chunk-Y5TM7SBV.js} +7 -2
  180. package/chunks/chunk-YC6XOB5N.js +691 -0
  181. package/chunks/{chunk-CWVZBIZJ.js → chunk-YDW4ERSS.js} +1 -1
  182. package/chunks/{chunk-TRWQQBVH.js → chunk-YGCTOXUT.js} +10 -24
  183. package/chunks/{chunk-WK7P62DV.js → chunk-YKC67ZEF.js} +6 -6
  184. package/chunks/{chunk-KA5HR3G2.js → chunk-YKM6MITI.js} +5 -5
  185. package/chunks/{chunk-X7LFJF5D.js → chunk-YM6KUQ2S.js} +36 -84
  186. package/chunks/{chunk-HZ2HUXX7.js → chunk-YS2ZJSOA.js} +29 -12
  187. package/chunks/{chunk-G37O7YO6.js → chunk-ZAWM6KRF.js} +3 -3
  188. package/chunks/{chunk-H3Q3RSKZ.js → chunk-ZFIWHBJ3.js} +1 -1
  189. package/chunks/{chunk-XBVNNDPK.js → chunk-ZHKTKHMO.js} +8 -1
  190. package/chunks/{chunk-YLOHCA6I.js → chunk-ZKWO4CF4.js} +2 -2
  191. package/chunks/{chunk-VJJXG73H.js → chunk-ZMQL5BL5.js} +21 -6
  192. package/chunks/{chunk-FGHPZGOP.js → chunk-ZMUYBOYB.js} +39 -55
  193. package/chunks/{chunk-FV4DM2M4.js → chunk-ZNI3YJHS.js} +26 -6
  194. package/chunks/{chunk-565U2ANU.js → chunk-ZTTC7T4X.js} +1 -1
  195. package/chunks/{chunk-7OCIQNKX.js → chunk-ZW2EUO2A.js} +1 -1
  196. package/chunks/codex-subagent-executor-26XOHVKH.js +585 -0
  197. package/chunks/{config-utils-GPLIABL2.js → config-utils-JUG3MOYN.js} +68 -57
  198. package/chunks/{contextCommand-NCUQUDBY.js → contextCommand-6K3POZFA.js} +65 -54
  199. package/chunks/{core-runtime-WKYKWVYU.js → core-runtime-XQFZLA2V.js} +66 -55
  200. package/chunks/{create-sub-session-TGIX63YU.js → create-sub-session-4UJ6RM6W.js} +5 -2
  201. package/chunks/{create-sub-session-PPLXB3JJ.js → create-sub-session-T4IYIOC7.js} +178 -91
  202. package/chunks/{cron-create-GTPVMJCF.js → cron-create-6466RWSO.js} +2 -2
  203. package/chunks/{cron-delete-ZBK27Z4K.js → cron-delete-W4QUWHOA.js} +2 -2
  204. package/chunks/{cron-list-KTFKFDKC.js → cron-list-Q5LJ5PZE.js} +2 -2
  205. package/chunks/{daemon-2CKIAO3I.js → daemon-PHPJUXDZ.js} +4 -2
  206. package/chunks/{daemon-git-worktree-guard-73ZWOLKL.js → daemon-git-worktree-guard-5WEMZ64U.js} +65 -54
  207. package/chunks/{daemon-status-provider-OK7VONJG.js → daemon-status-provider-GMD7QD4T.js} +74 -63
  208. package/chunks/{daemon-trust-policy-CAUCREG2.js → daemon-trust-policy-IPBZES2Z.js} +71 -60
  209. package/chunks/{daemon-trust-policy-monitor-3Y36OOEQ.js → daemon-trust-policy-monitor-MHYEN7X7.js} +71 -60
  210. package/chunks/{de-UU2YTO37.js → de-OOLZAU2U.js} +1 -1
  211. package/chunks/{deferred-core-runtime-Q7WFWYD3.js → deferred-core-runtime-CY43FZNZ.js} +63 -52
  212. package/chunks/{discovery-XP4RMDUM.js → discovery-5KUEPR65.js} +2 -2
  213. package/chunks/{display-image-CTNHJRZC.js → display-image-6AZIHP3J.js} +3 -3
  214. package/chunks/{dist-F34J4FZX.js → dist-2QYIVNS6.js} +2 -5
  215. package/chunks/{dist-6YDUH3BB.js → dist-GIMQXYLI.js} +10 -631
  216. package/chunks/{dist-NP7QKLVG.js → dist-GUB7QRYA.js} +3 -6
  217. package/chunks/{dist-Y5KC3IHW.js → dist-L45UB6DG.js} +233 -35
  218. package/chunks/{dist-XLV33CLY.js → dist-MPUZZOG5.js} +5 -18
  219. package/chunks/{dist-ZDNJK74R.js → dist-PA7WPFVE.js} +6 -37
  220. package/chunks/{dist-F6JLAJLE.js → dist-T6DDPDLQ.js} +16 -36
  221. package/chunks/{dist-BNQVF565.js → dist-TFGETXFN.js} +14 -37
  222. package/chunks/{dist-UFTFGI6I.js → dist-VDLSBCLM.js} +2 -6
  223. package/chunks/{edit-YJD6IETK.js → edit-6NUP5IPX.js} +48 -38
  224. package/chunks/{en-YJNRUQG4.js → en-ZSZW3PZX.js} +4 -1
  225. package/chunks/{enter-worktree-YFTKHXHZ.js → enter-worktree-EETDMJRF.js} +5 -5
  226. package/chunks/{enterPlanMode-EFPVTWIH.js → enterPlanMode-AZHYHEII.js} +48 -38
  227. package/chunks/{environment-HP3AXFTB.js → environment-ON6GIQ4F.js} +66 -55
  228. package/chunks/{errors-22ON46G7.js → errors-DQE63SCC.js} +65 -54
  229. package/chunks/exec-66WQIVYU.js +505 -0
  230. package/chunks/{exit-worktree-NF2XEMES.js → exit-worktree-DIPJ6S55.js} +5 -5
  231. package/chunks/{exitPlanMode-MOQUNCBH.js → exitPlanMode-NHBV6LAI.js} +48 -38
  232. package/chunks/{fast-path-2X7BPMXX.js → fast-path-EPJSUZZC.js} +7 -7
  233. package/chunks/{fast-path-settings-SATXY3PD.js → fast-path-settings-XDYX7X5Z.js} +2 -2
  234. package/chunks/{fr-HKNWVXRJ.js → fr-JJWM2HUS.js} +1 -1
  235. package/chunks/{glob-Y7ACIB3P.js → glob-MNEXQ2NV.js} +51 -41
  236. package/chunks/{goal-tools-DABMICUC.js → goal-tools-D2A4QBCJ.js} +54 -40
  237. package/chunks/{grep-BLHF2S5D.js → grep-EFWPV3MM.js} +2 -2
  238. package/chunks/{handleAutoUpdate-MCAMHYDI.js → handleAutoUpdate-2RY3OQA6.js} +67 -56
  239. package/chunks/{i18n-C3GDCALP.js → i18n-HTHDB3I7.js} +64 -53
  240. package/chunks/{image-gen-XP4NNIYG.js → image-gen-2PHED3P4.js} +8 -6
  241. package/chunks/{initializer-4URDQL2G.js → initializer-JEVLJCQA.js} +71 -60
  242. package/chunks/{installationInfo-LBOL6SBV.js → installationInfo-ITRB6J4L.js} +63 -52
  243. package/chunks/{ja-GJS5RZGU.js → ja-L67TXFDJ.js} +1 -1
  244. package/chunks/list-KOUIMHT5.js +133 -0
  245. package/chunks/{list-agents-2CXPGJUE.js → list-agents-IY4NEWLP.js} +17 -7
  246. package/chunks/{llm-2KPNSAVY.js → llm-F7WHGESY.js} +132 -120
  247. package/chunks/{llm-content-generator-GR3FOHLB.js → llm-content-generator-NYQ2NAVA.js} +6 -5
  248. package/chunks/{loadedSettingsAdapter-DVKROEJD.js → loadedSettingsAdapter-HZUAX5CX.js} +71 -60
  249. package/chunks/{loggingContentGenerator-P4K6K5W4.js → loggingContentGenerator-WMNU7C5J.js} +70 -59
  250. package/chunks/{loop-wakeup-HL6XOWI4.js → loop-wakeup-ANX25YW2.js} +3 -3
  251. package/chunks/{ls-YV7RKLKY.js → ls-4XCMJNZF.js} +4 -4
  252. package/chunks/{lsp-NO3AMRZT.js → lsp-K5E2Y64R.js} +1 -1
  253. package/chunks/{managed-npm-update-VWBKHNIN.js → managed-npm-update-EJJB65QI.js} +63 -52
  254. package/chunks/mcp-I73R6HS3.js +127 -0
  255. package/chunks/{monitor-A255TNZR.js → monitor-T56GJNA4.js} +50 -40
  256. package/chunks/{nonInteractiveCli-LXGIKQAT.js → nonInteractiveCli-CKHHJ423.js} +120 -109
  257. package/chunks/{notebook-edit-5UYHS2DM.js → notebook-edit-W5TU3EZ3.js} +48 -38
  258. package/chunks/openai-WX26N5OJ.js +47 -0
  259. package/chunks/{openaiContentGenerator-A6MAMEO5.js → openaiContentGenerator-TH6YAWAH.js} +33 -25
  260. package/chunks/openaiResponsesContentGenerator-EWLWQPKS.js +1738 -0
  261. package/chunks/{pidfile-B7DZC4TP.js → pidfile-RCC6TCEM.js} +63 -52
  262. package/chunks/process-registry-X6ZCASEN.js +10 -0
  263. package/chunks/{processUtils-BPZ2MCZS.js → processUtils-DQDQBRMC.js} +2 -2
  264. package/chunks/{prompt-terminal-ledger-FYYTAOXS.js → prompt-terminal-ledger-2LXWAGWU.js} +64 -53
  265. package/chunks/{pt-FXMYXEUV.js → pt-77SBDL4B.js} +1 -1
  266. package/chunks/{qwenContentGenerator-4IOJFD4S.js → qwenContentGenerator-LG65Z2YV.js} +61 -49
  267. package/chunks/{qwenOAuth2-KX6LVYQ3.js → qwenOAuth2-PJ63CCFD.js} +7 -5
  268. package/chunks/{read-file-A4H4O3VQ.js → read-file-72HMRUT4.js} +12 -9
  269. package/chunks/{read-mcp-resource-D3N75DGF.js → read-mcp-resource-NPF44YSC.js} +1 -1
  270. package/chunks/{record-artifact-Q5CRGJTP.js → record-artifact-MDXCCW2J.js} +3 -3
  271. package/chunks/record-source-VJLKDGGR.js +22 -0
  272. package/chunks/{report-findings-TJ34R7QK.js → report-findings-CZTYMZTC.js} +4 -4
  273. package/chunks/{request-shutdown-LRKMTBAD.js → request-shutdown-KOZHPVZU.js} +5 -5
  274. package/chunks/{resumeHistoryUtils-YQQ43E4N.js → resumeHistoryUtils-S2Q3M3EH.js} +69 -58
  275. package/chunks/{ripGrep-W32NWFTA.js → ripGrep-B2I3L5CO.js} +17 -13
  276. package/chunks/{ru-RMHURE5U.js → ru-UYWHKWF2.js} +1 -1
  277. package/chunks/{run-qwen-serve-WBSWWIRV.js → run-qwen-serve-AOPYFCVP.js} +305 -132
  278. package/chunks/{runtime-VRVBX2E5.js → runtime-TZMHKZAP.js} +77 -66
  279. package/chunks/{scheduled-tasks-D65KJDA3.js → scheduled-tasks-7RL6ZOYT.js} +72 -60
  280. package/chunks/{scheduler-M2YPN7Z7.js → scheduler-D6RLOFNU.js} +65 -54
  281. package/chunks/{sdk-exporters-grpc-MXTVSE3C.js → sdk-exporters-grpc-Y2ZUQDUQ.js} +2 -2
  282. package/chunks/{sdk-exporters-http-7R2ARBPV.js → sdk-exporters-http-VWTF4W6K.js} +3 -3
  283. package/chunks/{sdk-impl-YOLO7LV4.js → sdk-impl-G6FVTBQZ.js} +9 -9
  284. package/chunks/{send-message-76BKWKFZ.js → send-message-MMZVSS7P.js} +12 -9
  285. package/chunks/{serve-BE3H2P6P.js → serve-HWWDYI37.js} +72 -61
  286. package/chunks/{server-FLY5JERG.js → server-MD2X5U5L.js} +3156 -564
  287. package/chunks/{session-JVN62R5K.js → session-AFUMFNN7.js} +124 -113
  288. package/chunks/{session-attachments-root-7ACGLHXA.js → session-attachments-root-QPN3YWTY.js} +63 -52
  289. package/chunks/{session-pr-refresh-TQS57SDK.js → session-pr-refresh-4Y2ANMJX.js} +72 -60
  290. package/chunks/{settings-D44YMZFT.js → settings-QQRQ2LR7.js} +74 -63
  291. package/chunks/{shell-3VE6I4V5.js → shell-NUYUYMVI.js} +48 -38
  292. package/chunks/{skill-FHEGRRZU.js → skill-KHLDVOXW.js} +68 -30
  293. package/chunks/{skill-settings-VHEJMBFL.js → skill-settings-INLEGDEZ.js} +70 -59
  294. package/chunks/{spawnChannel-T6MX2ZDN.js → spawnChannel-KBGZHW2G.js} +67 -56
  295. package/chunks/{standalone-update-QUGHFMCS.js → standalone-update-3QP5NDVJ.js} +65 -54
  296. package/chunks/{start-opentui-ui-IHIIZ2LE.js → start-opentui-ui-VBT3XDWN.js} +2682 -2153
  297. package/chunks/{startInteractiveUI-LR7K2ARZ.js → startInteractiveUI-AZHKCHMR.js} +1562 -2317
  298. package/chunks/{syntheticOutput-D2P5V6RG.js → syntheticOutput-KRASPDE3.js} +2 -2
  299. package/chunks/{task-create-MWXJFRRM.js → task-create-TNXNT7ZD.js} +8 -8
  300. package/chunks/{task-list-EYO3FE57.js → task-list-FHNIJDKT.js} +1 -1
  301. package/chunks/{task-stop-BFSKRTGV.js → task-stop-MG4ZMTEI.js} +1 -1
  302. package/chunks/{task-update-2JJJRHMT.js → task-update-4HU62CJT.js} +8 -8
  303. package/chunks/{team-create-GY3VFY47.js → team-create-K5DNSJXR.js} +50 -40
  304. package/chunks/{team-delete-IQZ6XGFI.js → team-delete-2T44GUNN.js} +1 -1
  305. package/chunks/{team-plan-approval-BQPGZOT5.js → team-plan-approval-2ZNAQT2A.js} +48 -38
  306. package/chunks/{terminal-image-renderer-YNYW5CQG.js → terminal-image-renderer-23CW4A6Q.js} +65 -54
  307. package/chunks/{theme-manager-U6CIK3GM.js → theme-manager-G2333AMH.js} +63 -52
  308. package/chunks/{todoWrite-5ERKFWAK.js → todoWrite-BO2GR5MN.js} +4 -4
  309. package/chunks/{tool-search-XI3QWD5I.js → tool-search-MKQCKXN5.js} +22 -15
  310. package/chunks/{total-session-admission-3SNSJJ32.js → total-session-admission-ENKTM2KX.js} +69 -58
  311. package/chunks/{trustedFolders-OVAQKNV5.js → trustedFolders-2ETDL7OD.js} +64 -53
  312. package/chunks/{update-relaunch-XV5O74E3.js → update-relaunch-FMVNN5KA.js} +5 -5
  313. package/chunks/{updateCheck-CHUYWD6L.js → updateCheck-KWRV5KLJ.js} +66 -55
  314. package/chunks/{useAutoAcceptIndicator-VKSVIXZC.js → useAutoAcceptIndicator-7AUXAIQF.js} +73 -62
  315. package/chunks/{validateNonInterActiveAuth-ZNUTD3E5.js → validateNonInterActiveAuth-NETKLLDV.js} +117 -106
  316. package/chunks/{version-EK7VAGSI.js → version-DACNN2ZM.js} +1 -1
  317. package/chunks/{web-fetch-24KZO763.js → web-fetch-CIVCRET4.js} +16 -12
  318. package/chunks/{web-search-CRNXKZ2X.js → web-search-GOHZRGMM.js} +389 -327
  319. package/chunks/{web-shell-static-BFDESDD4.js → web-shell-static-T7UGLVE4.js} +2 -7
  320. package/chunks/workflow-IL2FOALZ.js +1324 -0
  321. package/chunks/workspace-providers-status-YGXL6N5U.js +131 -0
  322. package/chunks/{workspace-registration-store-HKLJEDQX.js → workspace-registration-store-E4IAOFFZ.js} +3 -1
  323. package/chunks/{workspace-registry-7RDDOBLN.js → workspace-registry-KX6BIBYK.js} +69 -58
  324. package/chunks/{workspace-runtime-coordinator-LEPDPXJO.js → workspace-runtime-coordinator-2KYYGDDR.js} +72 -59
  325. package/chunks/{workspace-service-5IFDCNN3.js → workspace-service-5Q6LWBYR.js} +76 -65
  326. package/chunks/{workspace-skills-status-FJ3HNH4H.js → workspace-skills-status-PJZTFPVV.js} +72 -61
  327. package/chunks/{workspace-trust-reconciler-PQFHIWLR.js → workspace-trust-reconciler-HS6PWNEA.js} +77 -66
  328. package/chunks/{write-file-ERG67ZFX.js → write-file-JB3DRM7O.js} +50 -40
  329. package/chunks/{zh-VBFCRQBL.js → zh-7UJA4ICT.js} +4 -1
  330. package/chunks/{zh-TW-N2TBF2F2.js → zh-TW-RV24PWUI.js} +4 -1
  331. package/chunks/{zoom-image-WQYEC3SR.js → zoom-image-AVHQFOOQ.js} +12 -9
  332. package/cli.js +16 -16
  333. package/codeModeHost.js +4425 -0
  334. package/export-transcript-document.css +1 -0
  335. package/export-transcript-document.js +164 -165
  336. package/locales/ca.js +2 -2
  337. package/locales/de.js +2 -2
  338. package/locales/en.js +5 -2
  339. package/locales/fr.js +2 -2
  340. package/locales/ja.js +2 -2
  341. package/locales/pt.js +2 -2
  342. package/locales/ru.js +2 -2
  343. package/locales/zh-TW.js +5 -2
  344. package/locales/zh.js +5 -2
  345. package/package.json +6 -4
  346. package/web-shell/assets/{abnfDiagram-VCTEODGH-BRLgQbnT.js → abnfDiagram-VCTEODGH-BH2nK5Z_.js} +1 -1
  347. package/web-shell/assets/{arc-qAF9_XsR.js → arc-CUUQ6krv.js} +1 -1
  348. package/web-shell/assets/{architectureDiagram-5GKGNRK7-BorUttEz.js → architectureDiagram-5GKGNRK7-CJjiRuGx.js} +1 -1
  349. package/web-shell/assets/{blockDiagram-NRAW4CY4-Bj0qZVxu.js → blockDiagram-NRAW4CY4-GCDyU9ZX.js} +1 -1
  350. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BTqJis32.js → c4Diagram-UCG6FXSJ-C68MiN6h.js} +1 -1
  351. package/web-shell/assets/channel-DauVlmdF.js +1 -0
  352. package/web-shell/assets/{chunk-2Q5K7J3B-RrQ5X8m-.js → chunk-2Q5K7J3B-_8B6frXZ.js} +1 -1
  353. package/web-shell/assets/{chunk-5VM5RSS4-uUjDl8wO.js → chunk-5VM5RSS4-CroSinX7.js} +1 -1
  354. package/web-shell/assets/{chunk-F27PBJKO-C3JhpyzI.js → chunk-F27PBJKO-CGn4Z0Fx.js} +1 -1
  355. package/web-shell/assets/{chunk-G27WJ6UU-C8ZNFs7F.js → chunk-G27WJ6UU-BI5nLQcf.js} +1 -1
  356. package/web-shell/assets/{chunk-JWPE2WC7-DNpXtEOs.js → chunk-JWPE2WC7-CYJH0FuH.js} +1 -1
  357. package/web-shell/assets/{chunk-LCL6LL3I-DagA2ZLw.js → chunk-LCL6LL3I-DjWZUqA1.js} +1 -1
  358. package/web-shell/assets/{chunk-POPQ4Y6H-R23uH7Xm.js → chunk-POPQ4Y6H-DcTkIHm8.js} +1 -1
  359. package/web-shell/assets/{chunk-SVP7TREG-Qz9RN_BR.js → chunk-SVP7TREG-E8sZT5uK.js} +1 -1
  360. package/web-shell/assets/{chunk-XXDRQBXY-jYb1_hni.js → chunk-XXDRQBXY-CurjPKw_.js} +1 -1
  361. package/web-shell/assets/classDiagram-DTDB5LWJ-BuIh7bj1.js +1 -0
  362. package/web-shell/assets/classDiagram-v2-JRS7N3AN-BuIh7bj1.js +1 -0
  363. package/web-shell/assets/{cose-bilkent-JH36ORCC-Cv2OunpE.js → cose-bilkent-JH36ORCC-CJEnNhth.js} +1 -1
  364. package/web-shell/assets/{cynefin-OW5HDTMX-LH42KFJx.js → cynefin-OW5HDTMX-jwEkm0yw.js} +1 -1
  365. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-Dha4_OoR.js → cynefinDiagram-5FMLGOSQ-B-OVQ6AO.js} +1 -1
  366. package/web-shell/assets/{dagre-3AP2YEHR-Br5lnUKD.js → dagre-3AP2YEHR-CKKK9WNR.js} +1 -1
  367. package/web-shell/assets/{diagram-S7CK7UJ4-dpKq2bBX.js → diagram-S7CK7UJ4-D486veFQ.js} +1 -1
  368. package/web-shell/assets/{diagram-UQ7AKVKN-BAgHWpXr.js → diagram-UQ7AKVKN-C3GujqHv.js} +1 -1
  369. package/web-shell/assets/{diagram-VSXAHHWV-GRRzpyE2.js → diagram-VSXAHHWV-BrOTDwuU.js} +1 -1
  370. package/web-shell/assets/{diagram-VX7I27RA-BNFiaYpG.js → diagram-VX7I27RA-C4D9kWE3.js} +1 -1
  371. package/web-shell/assets/{diagram-Z3DM3KII-BisZzB_h.js → diagram-Z3DM3KII-7rAManT0.js} +1 -1
  372. package/web-shell/assets/{ebnfDiagram-PWID7BFC-B1xbwycf.js → ebnfDiagram-PWID7BFC-CqVzKOdr.js} +1 -1
  373. package/web-shell/assets/{erDiagram-SSCWMZ5O-CQMzbGE5.js → erDiagram-SSCWMZ5O-D2s08fc_.js} +1 -1
  374. package/web-shell/assets/{flowDiagram-A5DVABFB-CZ_Zondl.js → flowDiagram-A5DVABFB-CrKtBxB2.js} +1 -1
  375. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-BTh2ShxS.js → ganttDiagram-EL5Y4UJY-CD1CKdlt.js} +1 -1
  376. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-oHOB-Uxt.js → gitGraphDiagram-WWUBYQGX-CHDXdVNn.js} +1 -1
  377. package/web-shell/assets/index-D8tzgUOC.css +36 -0
  378. package/web-shell/assets/{index-DWoFMu5x.js → index-DWz95m74.js} +1 -1
  379. package/web-shell/assets/index-cDFf68Wd.js +2204 -0
  380. package/web-shell/assets/{infoDiagram-RXCK75RN-C0QpudbG.js → infoDiagram-RXCK75RN-Cr1oLCwe.js} +1 -1
  381. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-a6B741uT.js → ishikawaDiagram-5VMMS53U--RghV1mm.js} +1 -1
  382. package/web-shell/assets/{journeyDiagram-EYS64GPL-Dbht9ICp.js → journeyDiagram-EYS64GPL-MN1ZkGW8.js} +1 -1
  383. package/web-shell/assets/{kanban-definition-3QL26DDD-D4OFR8-h.js → kanban-definition-3QL26DDD-DL05VTn0.js} +1 -1
  384. package/web-shell/assets/{layout-Dvdh5jRH.js → layout-D_TvQzvn.js} +1 -1
  385. package/web-shell/assets/{linear-Dvc6KIW2.js → linear-B_0OH6XF.js} +1 -1
  386. package/web-shell/assets/{mermaid.core-CB36RfIb.js → mermaid.core-B9Nklh9I.js} +6 -6
  387. package/web-shell/assets/{mindmap-definition-FBJOCRG2-Fmqo1CjP.js → mindmap-definition-FBJOCRG2-CevIQ0LR.js} +1 -1
  388. package/web-shell/assets/{pegDiagram-XKGWAZYB-CCxYBoA4.js → pegDiagram-XKGWAZYB-DQ8PIv0d.js} +1 -1
  389. package/web-shell/assets/{pieDiagram-E7YTZNPT-BVHKQFzt.js → pieDiagram-E7YTZNPT-BVTV1pPe.js} +1 -1
  390. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-l95IznwR.js → quadrantDiagram-AXDQQJYC-DHN6nhpe.js} +1 -1
  391. package/web-shell/assets/qwen-code-notification-BRVagufF.png +0 -0
  392. package/web-shell/assets/{railroadDiagram-O6MQD6OU-BlLdRdXp.js → railroadDiagram-O6MQD6OU-8HOyX0u-.js} +1 -1
  393. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-BkDLBR5w.js → requirementDiagram-EFPCY7ZU-9W4_14i8.js} +1 -1
  394. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-jAIqRp65.js → sankeyDiagram-P5KCCOFB-DSUBB2XP.js} +1 -1
  395. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-f-soZYPr.js → sequenceDiagram-WJ2MYXX4-DD3jH6Jn.js} +1 -1
  396. package/web-shell/assets/{sizeCapture-X5ZJPWSS-BzOuAfB2.js → sizeCapture-X5ZJPWSS-RAFTU3Cz.js} +1 -1
  397. package/web-shell/assets/{stateDiagram-HBIQ2CUA-BPLSs12r.js → stateDiagram-HBIQ2CUA-Drk-oZ2x.js} +1 -1
  398. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-QzYteVIm.js +1 -0
  399. package/web-shell/assets/{swimlanes-XN3QIQJK-D-9E_RIR.js → swimlanes-XN3QIQJK-Cy2nlOGx.js} +1 -1
  400. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-xTr-HG26.js +8 -0
  401. package/web-shell/assets/{timeline-definition-24CTP7MA-CT56K-gV.js → timeline-definition-24CTP7MA-B7outYof.js} +1 -1
  402. package/web-shell/assets/{vennDiagram-4TSXK5OY-B-vi4IyO.js → vennDiagram-4TSXK5OY-Di_u1Ic6.js} +1 -1
  403. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-C9O7Ju98.js → wardleyDiagram-VM6X3IG4-DYocuCAM.js} +1 -1
  404. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-6d8w3jg2.js → xychartDiagram-S5SC5T6Z-AADDse54.js} +1 -1
  405. package/web-shell/index.html +29 -5
  406. package/chunks/chunk-V7RNNPGC.js +0 -44
  407. package/chunks/list-JOGBAC2R.js +0 -122
  408. package/chunks/mcp-6YYNSYLK.js +0 -116
  409. package/chunks/workflow-HD5NYMW5.js +0 -2907
  410. package/chunks/workspace-providers-status-MAM42IZS.js +0 -120
  411. package/web-shell/assets/channel-COIuCrVH.js +0 -1
  412. package/web-shell/assets/classDiagram-DTDB5LWJ-DoX6OYqu.js +0 -1
  413. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DoX6OYqu.js +0 -1
  414. package/web-shell/assets/index-CI1ysIEv.js +0 -2154
  415. package/web-shell/assets/index-CpxXGH-8.css +0 -36
  416. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-IRul-LaT.js +0 -1
  417. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-D6lgKepA.js +0 -8
  418. package/chunks/{chunk-JA5CBKRP.js → chunk-7NXSVSFB.js} +0 -0
  419. package/chunks/{open-with-auth-6MVIHMXB.js → open-with-auth-XFCCJOO6.js} +3 -3
@@ -14,8 +14,8 @@ import {
14
14
  sanitizePromptText,
15
15
  sanitizeSenderName,
16
16
  truncateUtf16Units
17
- } from "./chunk-WDVV3LRM.js";
18
- import "./chunk-IW6RQPQB.js";
17
+ } from "./chunk-EPVEPTI3.js";
18
+ import "./chunk-IJOS26LH.js";
19
19
  import "./chunk-CQ35AJ4Z.js";
20
20
  import "./chunk-DMTGGOSA.js";
21
21
  import "./chunk-YQ3U5MUC.js";
@@ -8844,9 +8844,6 @@ ${boundedLines.join("\n")}`);
8844
8844
  }
8845
8845
  __name(formatChatRecord, "formatChatRecord");
8846
8846
  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
8847
  var ACK_REACTION_NAME = "\u{1F440}";
8851
8848
  var ACK_EMOTION_ID = "2659900";
8852
8849
  var ACK_EMOTION_BG_ID = "im_bg_1";
@@ -9043,30 +9040,6 @@ async function withConnectLoggingSuppressed(connect) {
9043
9040
  }
9044
9041
  }
9045
9042
  __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
9043
  var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
9071
9044
  static {
9072
9045
  __name(this, "DingtalkChannel");
@@ -9101,7 +9074,6 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
9101
9074
  */
9102
9075
  proactiveToken;
9103
9076
  interactiveCardConfig;
9104
- aggregateBackgroundAgentResponses;
9105
9077
  interactiveCardClient;
9106
9078
  statusCardController;
9107
9079
  questionCardController;
@@ -9114,10 +9086,6 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
9114
9086
  // boundary, input requested) mints a fresh segment UUID but the projection
9115
9087
  // state must survive it, or a marker split across the reset leaks.
9116
9088
  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
9089
  constructor(name, config, bridge, options) {
9122
9090
  super(name, config, bridge, options);
9123
9091
  this.atSender = config["atSender"] === true;
@@ -9136,11 +9104,6 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
9136
9104
  this.config.instructions += FILE_INSTRUCTIONS;
9137
9105
  }
9138
9106
  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
9107
  if (!config.clientId || !config.clientSecret) {
9145
9108
  throw new Error(`Channel "${name}" requires clientId and clientSecret for DingTalk.`);
9146
9109
  }
@@ -9552,25 +9515,18 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
9552
9515
  }
9553
9516
  return replaceImageMarkers(text, markers, replacements);
9554
9517
  }
9555
- async sendReply(chatId, text, atUserId, sourceLabel, prepared = false, failOnHttpError = false) {
9518
+ async sendReply(chatId, text, atUserId, sourceLabel, prepared = false) {
9556
9519
  const webhook = this.webhooks.get(chatId);
9557
9520
  if (!webhook) {
9558
9521
  process.stderr.write(`[DingTalk:${this.name}] No webhook for chatId ${chatId}, cannot send.
9559
9522
  `);
9560
- if (failOnHttpError) {
9561
- throw new Error("DingTalk session webhook unavailable");
9562
- }
9563
9523
  return;
9564
9524
  }
9565
9525
  const outgoingText = prepared ? text : await this.prepareReplyOutput(chatId, text);
9566
9526
  if (!outgoingText.trim())
9567
9527
  return;
9568
9528
  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
- }
9529
+ await this.deliverReplyText(chatId, plan);
9574
9530
  }
9575
9531
  createReplyTextDelivery(outgoingText, atUserId, sourceLabel) {
9576
9532
  const mentionPrefix = atUserId ? `@${atUserId}
@@ -9591,12 +9547,9 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
9591
9547
  ...atUserId ? { atUserId } : {}
9592
9548
  };
9593
9549
  }
9594
- async deliverReplyText(chatId, plan, failOnHttpError = false) {
9550
+ async deliverReplyText(chatId, plan) {
9595
9551
  const webhook = this.webhooks.get(chatId);
9596
9552
  if (!webhook) {
9597
- if (failOnHttpError) {
9598
- throw new Error("DingTalk session webhook unavailable");
9599
- }
9600
9553
  return;
9601
9554
  }
9602
9555
  while (plan.nextChunk < plan.chunks.length) {
@@ -9636,19 +9589,6 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
9636
9589
  const detail = await resp.text().catch(() => "");
9637
9590
  process.stderr.write(`[DingTalk:${this.name}] sendMessage failed: HTTP ${resp.status} ${detail}
9638
9591
  `);
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
9592
  }
9653
9593
  plan.nextChunk++;
9654
9594
  }
@@ -9683,11 +9623,7 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
9683
9623
  const plan = await this.createProactiveTextDelivery(target, text, sourceLabel);
9684
9624
  if (!plan)
9685
9625
  return;
9686
- try {
9687
- await this.deliverProactiveText(target, plan);
9688
- } catch (error) {
9689
- throw new ProactiveTextDeliveryError(plan, error);
9690
- }
9626
+ await this.deliverProactiveText(target, plan);
9691
9627
  }
9692
9628
  async createProactiveTextDelivery(target, text, sourceLabel) {
9693
9629
  const outgoingText = await this.prepareFileOutput(text, (file, mediaId) => this.sendProactiveFile(target, file, mediaId));
@@ -9922,7 +9858,6 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
9922
9858
  this.finishReaction(state.chatId, state.messageId, state.sessionId);
9923
9859
  }
9924
9860
  this.statusCardController?.dispose();
9925
- this.drainBackgroundResponseAggregations();
9926
9861
  this.activeReactionKeys.clear();
9927
9862
  this.sessionReactionKeys.clear();
9928
9863
  this.reactionStates.clear();
@@ -10171,7 +10106,6 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
10171
10106
  }
10172
10107
  }
10173
10108
  this.sessionMentionTargets.delete(sessionId);
10174
- this.drainBackgroundResponseAggregations(sessionId);
10175
10109
  const cardRunId = this.cardRunBySession.get(sessionId);
10176
10110
  if (cardRunId) {
10177
10111
  this.cardRunBySession.delete(sessionId);
@@ -10207,9 +10141,6 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
10207
10141
  this.cardRuns.delete(runId);
10208
10142
  }
10209
10143
  }
10210
- onSessionRetiring(sessionId) {
10211
- this.drainBackgroundResponseAggregations(sessionId);
10212
- }
10213
10144
  onTaskLifecycle(event) {
10214
10145
  if (event.type === "started") {
10215
10146
  this.startReaction(event.chatId, event.messageId, event.sessionId);
@@ -10346,547 +10277,12 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
10346
10277
  this.sessionMentionTargets.delete(sessionId);
10347
10278
  this.stopReaction(chatId, messageId, sessionId);
10348
10279
  }
10349
- /** Deliver every Agent segment immediately unless aggregation is enabled. */
10350
10280
  async dispatchBackgroundResponse(sessionId, text, context) {
10351
10281
  const target = this.router.getTarget(sessionId);
10352
- if (!target || target.channelName !== this.name || context !== void 0 && context.kind !== "agent") {
10282
+ if (!target || target.channelName !== this.name || context !== void 0 && context.kind !== "agent" || !text.trim()) {
10353
10283
  return super.dispatchBackgroundResponse(sessionId, text, context);
10354
10284
  }
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")}`;
10285
+ return super.dispatchBackgroundResponse(sessionId, this.formatBackgroundAgentResponse(text, context?.label), context);
10890
10286
  }
10891
10287
  formatBackgroundAgentResponse(text, label) {
10892
10288
  return `## \u{1F916} Agent \xB7 ${this.formatBackgroundAgentLabel(label)}
@@ -10897,22 +10293,11 @@ ${text}`;
10897
10293
  const normalized = label?.replace(new RegExp("\\p{Cc}+", "gu"), " ").replace(/\s+/g, " ").trim();
10898
10294
  return escapeDingTalkMarkdown(normalized || "\u540E\u53F0\u4EFB\u52A1");
10899
10295
  }
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) {
10296
+ async sendResponseMessage(chatId, text, sessionId, sourceLabel, prepared = false) {
10912
10297
  const atUserId = this.atSender ? this.sessionMentionTargets.get(sessionId) : void 0;
10913
10298
  if (atUserId)
10914
10299
  this.sessionMentionTargets.delete(sessionId);
10915
- await this.sendReply(chatId, text, atUserId, sourceLabel ?? this.getResponseSourceLabel(sessionId), prepared, failOnHttpError);
10300
+ await this.sendReply(chatId, text, atUserId, sourceLabel ?? this.getResponseSourceLabel(sessionId), prepared);
10916
10301
  }
10917
10302
  async sendFallbackReply(chatId, text, sessionId, sourceLabel) {
10918
10303
  const atUserId = this.atSender ? this.sessionMentionTargets.get(sessionId) : void 0;
@@ -11363,12 +10748,6 @@ var plugin = {
11363
10748
  required: true,
11364
10749
  envResolvable: true
11365
10750
  },
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
10751
  {
11373
10752
  key: "interactiveCards",
11374
10753
  label: "Interactive Cards",