@openclaw/discord 2026.8.1-beta.2 → 2026.9.1-beta.1

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 (287) hide show
  1. package/dist/{account-inspect-CqzrH14k.js → account-inspect-BDfKyuvL.js} +1 -1
  2. package/dist/account-inspect-api.js +1 -1
  3. package/dist/{accounts-DJTf1LtA.js → accounts-CfQ-vSyf.js} +34 -1
  4. package/dist/action-runtime-api.js +1 -1
  5. package/dist/{activities-api-DS7vpdtp.js → activities-api-q-9PaaHH.js} +134 -175
  6. package/dist/activities-api.js +1 -1
  7. package/dist/api.js +17 -17
  8. package/dist/{approval-handler.runtime-B6yEV79q.js → approval-handler.runtime-B7qhK3fR.js} +29 -106
  9. package/dist/{audit-Db-rlntl.js → audit-CBEv_ERu.js} +5 -5
  10. package/dist/{channel-CnnbJSt5.js → channel-Dx1tMTfx.js} +72 -50
  11. package/dist/{channel-actions.runtime-CLKrx6tr.js → channel-actions.runtime-CLWWu9nC.js} +28 -43
  12. package/dist/channel-config-api.js +1 -1
  13. package/dist/channel-plugin-api.js +1 -1
  14. package/dist/channel-type-CVLZyGYS.js +7 -0
  15. package/dist/{channel.setup-BFAO-V1P.js → channel.setup-DOzXS2Pk.js} +5 -5
  16. package/dist/{outbound-session-route-DxLkrgKQ.js → components-B9V5o361.js} +8 -70
  17. package/dist/{config-schema-BgEskFAs.js → config-schema-BR13IAx6.js} +33 -7
  18. package/dist/conversation-binding-route-DJYrY2TQ.js +43 -0
  19. package/dist/{directory-config-BVX7Cflc.js → directory-config-BK6eqekJ.js} +2 -2
  20. package/dist/directory-contract-api.js +1 -1
  21. package/dist/{directory-live-DGIGxpIo.js → directory-live-DSAJSrJk.js} +3 -3
  22. package/dist/{doctor-BzC-TLnB.js → doctor-Cm7Y1pJ2.js} +33 -12
  23. package/dist/doctor-contract-api.js +2 -2
  24. package/dist/{handle-action.guild-admin-BNVTUISF.js → handle-action.guild-admin-BdwCRHmm.js} +9 -5
  25. package/dist/index.js +3 -4
  26. package/dist/{message-handler-Unk_f10F.js → message-handler-BXpWZyni.js} +82 -6
  27. package/dist/{message-handler.preflight-C9zecxR9.js → message-handler.preflight-Ba5LAY_X.js} +38 -50
  28. package/dist/{message-handler.process-DWQ6UHHu.js → message-handler.process-3HEzmemS.js} +204 -234
  29. package/dist/{message-utils-BSCPVgy0.js → message-text-aiwO5R2F.js} +41 -40
  30. package/dist/{outbound-adapter-D9nRivT1.js → outbound-adapter-BE4jSq2d.js} +113 -88
  31. package/dist/{outbound-components-cTzwBJ60.js → outbound-components-oLpg8Qzb.js} +3 -3
  32. package/dist/outbound-session-route-Cg15ZFJd.js +625 -0
  33. package/dist/owner-access-UlYi9t0M.js +107 -0
  34. package/dist/{pluralkit-DdiJ9KMK.js → pluralkit-Tiyl70dx.js} +1 -1
  35. package/dist/{probe-Bl-k5_Ku.js → probe-n6ZXxK8V.js} +1 -1
  36. package/dist/{probe.runtime-M9fREKvp.js → probe.runtime-CN4bdPfZ.js} +1 -1
  37. package/dist/{provider-DvSNb-2v.js → provider-B11xwilq.js} +720 -1325
  38. package/dist/{provider-session.runtime-BUEqD0rA.js → provider-session.runtime-B9xe-Qaf.js} +3 -3
  39. package/dist/provider.runtime-DiYaHvOz.js +2 -0
  40. package/dist/{realtime-session.runtime-C7wen-aF.js → realtime-session.runtime-CU8IQUS-.js} +97 -98
  41. package/dist/{resolve-allowlist-common-D04lpEzb.js → resolve-allowlist-common-BLoYaxEG.js} +2 -2
  42. package/dist/{resolve-channels-Dm7jEeg6.js → resolve-channels-C2sT_n67.js} +5 -4
  43. package/dist/{resolve-users-bktrCUUU.js → resolve-users-CzpjLwjy.js} +2 -2
  44. package/dist/{retry-CLpJcXXf.js → retry-Cv4jCU5Z.js} +111 -18
  45. package/dist/{runtime-DGsSyDTS.js → runtime-BHrTlFkf.js} +88 -85
  46. package/dist/{runtime-DoHjckYm.js → runtime-CY4PRMF-.js} +9 -10
  47. package/dist/runtime-api.js +19 -25
  48. package/dist/{sdk-runtime-QpY8PvCh.js → sdk-runtime-4geQHtXc.js} +57 -89
  49. package/dist/{secret-config-contract-B1akrlyY.js → secret-config-contract-B3i6WxV5.js} +53 -25
  50. package/dist/secret-contract-api.js +1 -1
  51. package/dist/security-audit-contract-api.js +1 -1
  52. package/dist/{security-audit.runtime-CPN0xFYz.js → security-audit.runtime-BVKF9VtY.js} +1 -1
  53. package/dist/{send-B7Q6Oc1I.js → send-C49MFF9j.js} +82 -19
  54. package/dist/{send.components-iJyFXw9L.js → send.components-DKKAw5VX.js} +21 -38
  55. package/dist/{send.outbound-DS5tHwfR.js → send.outbound-zam0TrZx.js} +77 -78
  56. package/dist/{send.shared-BmwFjW6T.js → send.shared-JjljcV4O.js} +135 -120
  57. package/dist/{sender-identity-QtalnCYv.js → sender-identity-BJtfyise.js} +1 -1
  58. package/dist/setup-plugin-api.js +1 -1
  59. package/dist/{shared-BIXIX6uJ.js → shared-_5EcP4jW.js} +38 -14
  60. package/dist/subagent-hooks-DQzvOptn.js +49 -0
  61. package/dist/subagent-hooks-api.js +1 -6
  62. package/dist/{system-events-CTqDf6_s.js → system-events-C7yxaHWP.js} +2 -2
  63. package/dist/{target-resolver-maOKSqO0.js → target-resolver-vxIh6O3-.js} +3 -3
  64. package/dist/targets-CtTKvntJ.js +3 -0
  65. package/dist/{thread-bindings-3L8p82GV.js → thread-bindings-DW5F9vat.js} +28 -26
  66. package/dist/{thread-bindings.manager-DCIH6WDC.js → thread-bindings.manager-ByOtwjo_.js} +9 -12
  67. package/dist/{thread-bindings.session-updates-bJ2KQFY6.js → thread-bindings.session-updates-CJb-BpPL.js} +1 -1
  68. package/dist/{thread-bindings.state-aeV8HNgV.js → thread-bindings.state-D8OMdk4O.js} +1 -1
  69. package/dist/threading-agH1T_6s.js +478 -0
  70. package/dist/transcripts-source-BR11iHA4.js +265 -0
  71. package/dist/transcripts-source-api.js +7 -2
  72. package/dist/{typing-CS-nNVoe.js → typing-Dc_YMY2e.js} +1 -1
  73. package/dist/{voice-runtime-BEdqNcST.js → voice-runtime-DIeaa8fJ.js} +230 -148
  74. package/node_modules/@discord/embedded-app-sdk/node_modules/uuid/README.md +19 -19
  75. package/node_modules/@discord/embedded-app-sdk/node_modules/uuid/dist/v1.js +7 -3
  76. package/node_modules/@discord/embedded-app-sdk/node_modules/uuid/dist/v7.js +5 -2
  77. package/node_modules/@discord/embedded-app-sdk/node_modules/uuid/dist-node/v1.js +7 -3
  78. package/node_modules/@discord/embedded-app-sdk/node_modules/uuid/dist-node/v7.js +5 -2
  79. package/node_modules/@discord/embedded-app-sdk/node_modules/uuid/package.json +4 -3
  80. package/node_modules/@discordjs/voice/node_modules/@types/node/README.md +1 -1
  81. package/node_modules/@discordjs/voice/node_modules/@types/node/child_process.d.ts +0 -1
  82. package/node_modules/@discordjs/voice/node_modules/@types/node/crypto.d.ts +6 -6
  83. package/node_modules/@discordjs/voice/node_modules/@types/node/dns/promises.d.ts +5 -5
  84. package/node_modules/@discordjs/voice/node_modules/@types/node/dns.d.ts +5 -5
  85. package/node_modules/@discordjs/voice/node_modules/@types/node/fs.d.ts +7 -0
  86. package/node_modules/@discordjs/voice/node_modules/@types/node/http.d.ts +30 -0
  87. package/node_modules/@discordjs/voice/node_modules/@types/node/http2.d.ts +4 -4
  88. package/node_modules/@discordjs/voice/node_modules/@types/node/os.d.ts +30 -30
  89. package/node_modules/@discordjs/voice/node_modules/@types/node/package.json +2 -2
  90. package/node_modules/@discordjs/voice/node_modules/@types/node/perf_hooks.d.ts +2 -1
  91. package/node_modules/@discordjs/voice/node_modules/@types/node/process.d.ts +42 -43
  92. package/node_modules/@discordjs/voice/node_modules/@types/node/quic.d.ts +1049 -84
  93. package/node_modules/@discordjs/voice/node_modules/@types/node/sqlite.d.ts +14 -1
  94. package/node_modules/@discordjs/voice/node_modules/@types/node/stream/iter.d.ts +3 -2
  95. package/node_modules/@discordjs/voice/node_modules/@types/node/test.d.ts +61 -0
  96. package/node_modules/@discordjs/voice/node_modules/@types/node/v8.d.ts +20 -23
  97. package/node_modules/discord-api-types/CHANGELOG.md +8 -0
  98. package/node_modules/discord-api-types/package.json +4 -4
  99. package/node_modules/discord-api-types/payloads/v10/channel.d.ts +2 -2
  100. package/node_modules/discord-api-types/payloads/v10/channel.d.ts.map +1 -1
  101. package/node_modules/discord-api-types/payloads/v10/gateway.d.ts +4 -0
  102. package/node_modules/discord-api-types/payloads/v10/gateway.d.ts.map +1 -1
  103. package/node_modules/discord-api-types/payloads/v10/gateway.js.map +1 -1
  104. package/node_modules/discord-api-types/payloads/v10/message.d.ts +4 -1
  105. package/node_modules/discord-api-types/payloads/v10/message.d.ts.map +1 -1
  106. package/node_modules/discord-api-types/payloads/v10/message.js +1 -0
  107. package/node_modules/discord-api-types/payloads/v10/message.js.map +1 -1
  108. package/node_modules/discord-api-types/payloads/v9/channel.d.ts +2 -2
  109. package/node_modules/discord-api-types/payloads/v9/channel.d.ts.map +1 -1
  110. package/node_modules/discord-api-types/payloads/v9/gateway.d.ts +4 -0
  111. package/node_modules/discord-api-types/payloads/v9/gateway.d.ts.map +1 -1
  112. package/node_modules/discord-api-types/payloads/v9/gateway.js.map +1 -1
  113. package/node_modules/discord-api-types/payloads/v9/message.d.ts +4 -1
  114. package/node_modules/discord-api-types/payloads/v9/message.d.ts.map +1 -1
  115. package/node_modules/discord-api-types/payloads/v9/message.js +1 -0
  116. package/node_modules/discord-api-types/payloads/v9/message.js.map +1 -1
  117. package/node_modules/typebox/build/format/date.d.mts +1 -1
  118. package/node_modules/typebox/build/format/date.mjs +1 -1
  119. package/node_modules/typebox/build/format/date_time.d.mts +2 -2
  120. package/node_modules/typebox/build/format/date_time.mjs +3 -3
  121. package/node_modules/typebox/build/format/email.d.mts +1 -1
  122. package/node_modules/typebox/build/format/email.mjs +2 -2
  123. package/node_modules/typebox/build/format/hostname.mjs +2 -10
  124. package/node_modules/typebox/build/format/idn_email.d.mts +1 -1
  125. package/node_modules/typebox/build/format/idn_email.mjs +3 -3
  126. package/node_modules/typebox/build/format/idn_hostname.d.mts +1 -0
  127. package/node_modules/typebox/build/format/idn_hostname.mjs +3 -11
  128. package/node_modules/typebox/build/format/idna/format/bidi.d.mts +3 -0
  129. package/node_modules/typebox/build/format/idna/format/bidi.mjs +98 -0
  130. package/node_modules/typebox/build/format/idna/format/puny.d.mts +3 -0
  131. package/node_modules/typebox/build/format/idna/format/puny.mjs +144 -0
  132. package/node_modules/typebox/build/format/idna/hostname.d.mts +1 -0
  133. package/node_modules/typebox/build/format/idna/hostname.mjs +16 -0
  134. package/node_modules/typebox/build/format/idna/idn-hostname.d.mts +1 -0
  135. package/node_modules/typebox/build/format/idna/idn-hostname.mjs +23 -0
  136. package/node_modules/typebox/build/format/idna/index.d.mts +2 -0
  137. package/node_modules/typebox/build/format/idna/index.mjs +2 -0
  138. package/node_modules/typebox/build/format/idna/label/ascii.d.mts +1 -0
  139. package/node_modules/typebox/build/format/idna/label/ascii.mjs +9 -0
  140. package/node_modules/typebox/build/format/idna/label/puny.d.mts +1 -0
  141. package/node_modules/typebox/build/format/idna/label/puny.mjs +28 -0
  142. package/node_modules/typebox/build/format/idna/label/unicode.d.mts +1 -0
  143. package/node_modules/typebox/build/format/idna/label/unicode.mjs +106 -0
  144. package/node_modules/typebox/build/format/idna/pattern/pattern.d.mts +30 -0
  145. package/node_modules/typebox/build/format/idna/pattern/pattern.mjs +70 -0
  146. package/node_modules/typebox/build/format/ipv4.d.mts +0 -1
  147. package/node_modules/typebox/build/format/ipv4.mjs +2 -32
  148. package/node_modules/typebox/build/format/ipv6.mjs +2 -61
  149. package/node_modules/typebox/build/format/iri.d.mts +2 -2
  150. package/node_modules/typebox/build/format/iri.mjs +26 -8
  151. package/node_modules/typebox/build/format/iri_reference.d.mts +2 -2
  152. package/node_modules/typebox/build/format/iri_reference.mjs +9 -55
  153. package/node_modules/typebox/build/format/regex.d.mts +1 -2
  154. package/node_modules/typebox/build/format/regex.mjs +2 -6
  155. package/node_modules/typebox/build/format/time.d.mts +2 -2
  156. package/node_modules/typebox/build/format/time.mjs +19 -14
  157. package/node_modules/typebox/build/format/uri.d.mts +1 -1
  158. package/node_modules/typebox/build/format/uri.mjs +3 -130
  159. package/node_modules/typebox/build/format/uri_reference.d.mts +1 -1
  160. package/node_modules/typebox/build/format/uri_reference.mjs +2 -3
  161. package/node_modules/typebox/build/format/uri_template.d.mts +2 -3
  162. package/node_modules/typebox/build/format/uri_template.mjs +4 -5
  163. package/node_modules/typebox/build/format/url.d.mts +3 -3
  164. package/node_modules/typebox/build/format/url.mjs +4 -5
  165. package/node_modules/typebox/build/guard/emit.d.mts +3 -1
  166. package/node_modules/typebox/build/guard/emit.mjs +12 -5
  167. package/node_modules/typebox/build/guard/guard.d.mts +8 -2
  168. package/node_modules/typebox/build/guard/guard.mjs +25 -4
  169. package/node_modules/typebox/build/guard/string.d.mts +2 -2
  170. package/node_modules/typebox/build/guard/string.mjs +7 -7
  171. package/node_modules/typebox/build/schema/engine/_context.mjs +3 -3
  172. package/node_modules/typebox/build/schema/engine/_functions.mjs +1 -2
  173. package/node_modules/typebox/build/schema/engine/_regexp.d.mts +2 -0
  174. package/node_modules/typebox/build/schema/engine/_regexp.mjs +4 -0
  175. package/node_modules/typebox/build/schema/engine/_stack.mjs +12 -13
  176. package/node_modules/typebox/build/schema/engine/additionalItems.mjs +17 -7
  177. package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +4 -3
  178. package/node_modules/typebox/build/schema/engine/contains.mjs +18 -6
  179. package/node_modules/typebox/build/schema/engine/enum.mjs +1 -1
  180. package/node_modules/typebox/build/schema/engine/items.mjs +26 -6
  181. package/node_modules/typebox/build/schema/engine/maxContains.mjs +3 -3
  182. package/node_modules/typebox/build/schema/engine/minContains.mjs +14 -4
  183. package/node_modules/typebox/build/schema/engine/not.mjs +4 -2
  184. package/node_modules/typebox/build/schema/engine/oneOf.mjs +7 -6
  185. package/node_modules/typebox/build/schema/engine/pattern.mjs +3 -2
  186. package/node_modules/typebox/build/schema/engine/patternProperties.mjs +4 -3
  187. package/node_modules/typebox/build/schema/engine/ref.mjs +1 -7
  188. package/node_modules/typebox/build/schema/engine/schema.mjs +13 -4
  189. package/node_modules/typebox/build/schema/engine/type.mjs +1 -1
  190. package/node_modules/typebox/build/schema/resolve/resolve.d.mts +4 -1
  191. package/node_modules/typebox/build/schema/resolve/resolve.mjs +202 -1
  192. package/node_modules/typebox/build/schema/static/propertyNames.d.mts +5 -0
  193. package/node_modules/typebox/build/schema/static/propertyNames.mjs +3 -0
  194. package/node_modules/typebox/build/schema/static/schema.d.mts +3 -0
  195. package/node_modules/typebox/build/schema/types/index.d.mts +0 -2
  196. package/node_modules/typebox/build/schema/types/index.mjs +0 -2
  197. package/node_modules/typebox/build/system/memory/clone.mjs +14 -11
  198. package/node_modules/typebox/build/system/memory/discard.mjs +6 -5
  199. package/node_modules/typebox/build/system/settings/settings.d.mts +9 -0
  200. package/node_modules/typebox/build/system/settings/settings.mjs +2 -0
  201. package/node_modules/typebox/build/type/engine/call/distribute_arguments.d.mts +6 -1
  202. package/node_modules/typebox/build/type/engine/call/distribute_arguments.mjs +16 -3
  203. package/node_modules/typebox/build/type/engine/call/instantiate.mjs +34 -4
  204. package/node_modules/typebox/build/type/engine/evaluate/broaden.d.mts +5 -5
  205. package/node_modules/typebox/build/type/engine/evaluate/broaden.mjs +20 -26
  206. package/node_modules/typebox/build/type/engine/evaluate/compare.d.mts +6 -10
  207. package/node_modules/typebox/build/type/engine/evaluate/compare.mjs +9 -13
  208. package/node_modules/typebox/build/type/engine/evaluate/composite.d.mts +7 -4
  209. package/node_modules/typebox/build/type/engine/evaluate/composite.mjs +12 -19
  210. package/node_modules/typebox/build/type/engine/evaluate/distribute.d.mts +4 -20
  211. package/node_modules/typebox/build/type/engine/evaluate/distribute.mjs +8 -20
  212. package/node_modules/typebox/build/type/engine/evaluate/evaluate.d.mts +4 -4
  213. package/node_modules/typebox/build/type/engine/evaluate/evaluate.mjs +11 -8
  214. package/node_modules/typebox/build/type/engine/evaluate/flatten.d.mts +1 -1
  215. package/node_modules/typebox/build/type/engine/evaluate/flatten.mjs +3 -4
  216. package/node_modules/typebox/build/type/engine/evaluate/narrow.d.mts +17 -2
  217. package/node_modules/typebox/build/type/engine/evaluate/narrow.mjs +26 -6
  218. package/node_modules/typebox/build/type/engine/exclude/operation.mjs +3 -4
  219. package/node_modules/typebox/build/type/engine/extract/operation.d.mts +1 -1
  220. package/node_modules/typebox/build/type/engine/extract/operation.mjs +3 -4
  221. package/node_modules/typebox/build/type/engine/priority/priority.d.mts +2 -2
  222. package/node_modules/typebox/build/type/engine/priority/priority.mjs +3 -4
  223. package/node_modules/typebox/build/type/script/mapping.d.mts +32 -29
  224. package/node_modules/typebox/build/type/script/mapping.mjs +18 -25
  225. package/node_modules/typebox/build/type/script/parser.d.mts +19 -25
  226. package/node_modules/typebox/build/type/script/parser.mjs +27 -23
  227. package/node_modules/typebox/build/value/errors/errors.d.mts +2 -2
  228. package/node_modules/typebox/build/value/errors/errors.mjs +1 -1
  229. package/node_modules/typebox/package.json +27 -27
  230. package/node_modules/typebox/readme.md +79 -82
  231. package/node_modules/undici/docs/docs/api/Client.md +21 -8
  232. package/node_modules/undici/lib/api/readable.js +33 -43
  233. package/node_modules/undici/lib/core/connect.js +16 -2
  234. package/node_modules/undici/lib/core/symbols.js +1 -0
  235. package/node_modules/undici/lib/dispatcher/client-h1.js +3 -3
  236. package/node_modules/undici/lib/dispatcher/client-h2.js +179 -10
  237. package/node_modules/undici/lib/dispatcher/client.js +74 -29
  238. package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +28 -6
  239. package/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +15 -1
  240. package/node_modules/undici/lib/handler/retry-handler.js +7 -2
  241. package/node_modules/undici/lib/interceptor/cache.js +5 -2
  242. package/node_modules/undici/lib/interceptor/deduplicate.js +1 -1
  243. package/node_modules/undici/lib/mock/mock-utils.js +213 -24
  244. package/node_modules/undici/lib/util/cache.js +2 -4
  245. package/node_modules/undici/lib/web/websocket/websocket.js +22 -0
  246. package/node_modules/undici/package.json +1 -1
  247. package/node_modules/undici/types/client.d.ts +40 -0
  248. package/node_modules/ws/lib/permessage-deflate.js +3 -1
  249. package/node_modules/ws/package.json +1 -1
  250. package/openclaw.plugin.json +12 -6
  251. package/package.json +8 -10
  252. package/dist/approval-message-safety-AcIxvrf3.js +0 -140
  253. package/dist/audit-core-xwjIczO0.js +0 -105
  254. package/dist/channel-actions-5s_hjYKd.js +0 -208
  255. package/dist/channel-api-CAJ0wMoV.js +0 -21
  256. package/dist/inbound-event-delivery-De2qxTrP.js +0 -39
  257. package/dist/provider.runtime-C9PnJZbZ.js +0 -2
  258. package/dist/runtime-api.actions.js +0 -3
  259. package/dist/runtime-api.lookup.js +0 -7
  260. package/dist/runtime-api.monitor-CHxrFPnW.js +0 -5
  261. package/dist/runtime-api.monitor.js +0 -8
  262. package/dist/runtime-api.send.js +0 -7
  263. package/dist/runtime-api.threads.js +0 -5
  264. package/dist/send.reactions-BAn0iiVQ.js +0 -78
  265. package/dist/send.receipt-IPI1p-SP.js +0 -66
  266. package/dist/subagent-hooks-CTt5KCJr.js +0 -120
  267. package/dist/subagent-progress-DhaE_h8a.js +0 -109
  268. package/dist/targets-yUFTHoAx.js +0 -3
  269. package/dist/transcripts-source-CfFMexGt.js +0 -123
  270. package/node_modules/p-map/index.d.ts +0 -155
  271. package/node_modules/p-map/index.js +0 -285
  272. package/node_modules/p-map/license +0 -9
  273. package/node_modules/p-map/package.json +0 -57
  274. package/node_modules/p-map/readme.md +0 -190
  275. package/node_modules/typebox/build/format/_idna.d.mts +0 -2
  276. package/node_modules/typebox/build/format/_idna.mjs +0 -246
  277. package/node_modules/typebox/build/format/_puny.d.mts +0 -1
  278. package/node_modules/typebox/build/format/_puny.mjs +0 -77
  279. package/node_modules/typebox/build/schema/resolve/ref.d.mts +0 -3
  280. package/node_modules/typebox/build/schema/resolve/ref.mjs +0 -146
  281. package/node_modules/typebox/build/schema/types/contentEncoding.d.mts +0 -9
  282. package/node_modules/typebox/build/schema/types/contentEncoding.mjs +0 -13
  283. package/node_modules/typebox/build/schema/types/contentMediaType.d.mts +0 -9
  284. package/node_modules/typebox/build/schema/types/contentMediaType.mjs +0 -13
  285. package/dist/{allow-list-DnxIlPP2.js → allow-list-BDMimASD.js} +1 -1
  286. package/dist/{doctor-contract-DLa-BTiU.js → doctor-contract-DsWvKIXF.js} +1 -1
  287. package/dist/{security-audit-jGnJF__m.js → security-audit-BfJhAXZp.js} +1 -1
@@ -1,12 +1,12 @@
1
- import { c as resolveDiscordChannelInfoSafe } from "./thread-bindings.manager-DCIH6WDC.js";
2
- import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeOptionalStringifiedId, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
1
+ import { c as resolveDiscordChannelInfoSafe } from "./thread-bindings.manager-ByOtwjo_.js";
3
2
  import { ComponentType, StickerFormatType } from "discord-api-types/v10";
4
3
  import { asDateTimestampMs, resolveExpiresAtMsFromDurationMs } from "openclaw/plugin-sdk/number-runtime";
4
+ import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeOptionalStringifiedId, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
5
+ import { getFileExtension, normalizeMimeType } from "openclaw/plugin-sdk/media-mime";
5
6
  import { getChildLogger, logVerbose } from "openclaw/plugin-sdk/runtime-env";
6
7
  import { saveRemoteMedia } from "openclaw/plugin-sdk/media-runtime";
7
8
  import { pruneMapToMaxSize } from "openclaw/plugin-sdk/collection-runtime";
8
9
  import { formatMediaPlaceholderText } from "openclaw/plugin-sdk/channel-inbound";
9
- import { getFileExtension, normalizeMimeType } from "openclaw/plugin-sdk/media-mime";
10
10
  //#region extensions/discord/src/monitor/message-channel-info-state.ts
11
11
  const discordChannelInfoCacheState = { entries: /* @__PURE__ */ new Map() };
12
12
  //#endregion
@@ -68,6 +68,34 @@ async function resolveDiscordChannelInfo(client, channelId) {
68
68
  }
69
69
  }
70
70
  //#endregion
71
+ //#region extensions/discord/src/monitor/media-ssrf-policy.ts
72
+ const DISCORD_MEDIA_SSRF_POLICY = {
73
+ hostnameAllowlist: [
74
+ "cdn.discordapp.com",
75
+ "media.discordapp.net",
76
+ "*.discordapp.com",
77
+ "*.discordapp.net"
78
+ ],
79
+ allowRfc2544BenchmarkRange: true
80
+ };
81
+ function mergeHostnameList(...lists) {
82
+ const merged = lists.flatMap((list) => list ?? []).map((value) => value.trim()).filter((value) => value.length > 0);
83
+ return merged.length > 0 ? uniqueStrings(merged) : void 0;
84
+ }
85
+ /** Merges caller network policy with the Discord-owned CDN allowlist. */
86
+ function resolveDiscordCdnPolicy(policy) {
87
+ if (!policy) return DISCORD_MEDIA_SSRF_POLICY;
88
+ const hostnameAllowlist = mergeHostnameList(DISCORD_MEDIA_SSRF_POLICY.hostnameAllowlist, policy.hostnameAllowlist);
89
+ const allowedHostnames = mergeHostnameList(DISCORD_MEDIA_SSRF_POLICY.allowedHostnames, policy.allowedHostnames);
90
+ return {
91
+ ...DISCORD_MEDIA_SSRF_POLICY,
92
+ ...policy,
93
+ ...allowedHostnames ? { allowedHostnames } : {},
94
+ ...hostnameAllowlist ? { hostnameAllowlist } : {},
95
+ allowRfc2544BenchmarkRange: Boolean(DISCORD_MEDIA_SSRF_POLICY.allowRfc2544BenchmarkRange) || Boolean(policy.allowRfc2544BenchmarkRange)
96
+ };
97
+ }
98
+ //#endregion
71
99
  //#region extensions/discord/src/monitor/message-forwarded.ts
72
100
  const FORWARD_MESSAGE_REFERENCE_TYPE = 1;
73
101
  function normalizeDiscordStickerItems(value) {
@@ -116,15 +144,6 @@ function formatDiscordSnapshotAuthor(author) {
116
144
  }
117
145
  //#endregion
118
146
  //#region extensions/discord/src/monitor/message-media.ts
119
- const DISCORD_MEDIA_SSRF_POLICY = {
120
- hostnameAllowlist: [
121
- "cdn.discordapp.com",
122
- "media.discordapp.net",
123
- "*.discordapp.com",
124
- "*.discordapp.net"
125
- ],
126
- allowRfc2544BenchmarkRange: true
127
- };
128
147
  const AUDIO_ATTACHMENT_EXTENSIONS = /* @__PURE__ */ new Set([
129
148
  ".aac",
130
149
  ".caf",
@@ -171,26 +190,9 @@ function resolveDiscordMediaClassification(params) {
171
190
  ...kind ? { kind } : {}
172
191
  };
173
192
  }
174
- function mergeHostnameList(...lists) {
175
- const merged = lists.flatMap((list) => list ?? []).map((value) => value.trim()).filter((value) => value.length > 0);
176
- if (merged.length === 0) return;
177
- return uniqueStrings(merged);
178
- }
179
- function resolveDiscordMediaSsrFPolicy(policy) {
180
- if (!policy) return DISCORD_MEDIA_SSRF_POLICY;
181
- const hostnameAllowlist = mergeHostnameList(DISCORD_MEDIA_SSRF_POLICY.hostnameAllowlist, policy.hostnameAllowlist);
182
- const allowedHostnames = mergeHostnameList(DISCORD_MEDIA_SSRF_POLICY.allowedHostnames, policy.allowedHostnames);
183
- return {
184
- ...DISCORD_MEDIA_SSRF_POLICY,
185
- ...policy,
186
- ...allowedHostnames ? { allowedHostnames } : {},
187
- ...hostnameAllowlist ? { hostnameAllowlist } : {},
188
- allowRfc2544BenchmarkRange: Boolean(DISCORD_MEDIA_SSRF_POLICY.allowRfc2544BenchmarkRange) || Boolean(policy.allowRfc2544BenchmarkRange)
189
- };
190
- }
191
193
  async function resolveMediaList(message, maxBytes, options) {
192
194
  const out = [];
193
- const resolvedSsrFPolicy = resolveDiscordMediaSsrFPolicy(options?.ssrfPolicy);
195
+ const resolvedSsrFPolicy = resolveDiscordCdnPolicy(options?.ssrfPolicy);
194
196
  await appendResolvedMediaFromAttachments({
195
197
  attachments: message.attachments ?? [],
196
198
  maxBytes,
@@ -218,7 +220,7 @@ async function resolveMediaList(message, maxBytes, options) {
218
220
  async function resolveForwardedMediaList(message, maxBytes, options) {
219
221
  const snapshots = resolveDiscordMessageSnapshots(message);
220
222
  const out = [];
221
- const resolvedSsrFPolicy = resolveDiscordMediaSsrFPolicy(options?.ssrfPolicy);
223
+ const resolvedSsrFPolicy = resolveDiscordCdnPolicy(options?.ssrfPolicy);
222
224
  if (snapshots.length > 0) {
223
225
  for (const snapshot of snapshots) {
224
226
  await appendResolvedMediaFromAttachments({
@@ -276,7 +278,7 @@ async function resolveReferencedReplyMediaList(message, maxBytes, options) {
276
278
  const referencedReply = resolveDiscordReferencedReplyMessage(message);
277
279
  const out = [];
278
280
  if (!referencedReply) return out;
279
- const resolvedSsrFPolicy = resolveDiscordMediaSsrFPolicy(options?.ssrfPolicy);
281
+ const resolvedSsrFPolicy = resolveDiscordCdnPolicy(options?.ssrfPolicy);
280
282
  await appendResolvedMediaFromAttachments({
281
283
  attachments: referencedReply.attachments,
282
284
  maxBytes,
@@ -364,6 +366,7 @@ async function appendResolvedMediaFromAttachments(params) {
364
366
  });
365
367
  params.out.push({
366
368
  path: saved.path,
369
+ fileName: attachment.filename,
367
370
  ...classification
368
371
  });
369
372
  } catch (err) {
@@ -434,6 +437,7 @@ async function appendResolvedMediaFromStickers(params) {
434
437
  params.out.push({
435
438
  path: saved.path,
436
439
  contentType: saved.contentType,
440
+ fileName: candidate.fileName,
437
441
  kind: "sticker"
438
442
  });
439
443
  lastError = null;
@@ -467,14 +471,11 @@ function formatDiscordMediaText(params) {
467
471
  }
468
472
  //#endregion
469
473
  //#region extensions/discord/src/monitor/message-text.ts
470
- function resolveDiscordEmbedText(embed) {
471
- const title = normalizeOptionalString(embed?.title) ?? "";
472
- const description = normalizeOptionalString(embed?.description) ?? "";
473
- if (title && description) return `${title}\n${description}`;
474
- return title || description || "";
474
+ function resolveDiscordEmbedText(embeds) {
475
+ return (embeds ?? []).flatMap(({ title, description }) => [normalizeOptionalString(title), normalizeOptionalString(description)]).filter(Boolean).join("\n");
475
476
  }
476
477
  function resolveDiscordMessageText(message, options) {
477
- const embedText = resolveDiscordEmbedText(message.embeds?.[0] ?? null);
478
+ const embedText = resolveDiscordEmbedText(message.embeds);
478
479
  const componentText = extractDiscordComponentsV2Text(resolveDiscordMessageComponents(message));
479
480
  const baseText = resolveDiscordMentions(normalizeOptionalString(message.content) || embedText || componentText || normalizeOptionalString(options?.fallbackText) || "", message);
480
481
  if (!options?.includeForwarded) return baseText;
@@ -557,9 +558,9 @@ function resolveDiscordSnapshotMessageText(snapshot) {
557
558
  attachments: snapshot.attachments ?? void 0,
558
559
  stickers: resolveDiscordSnapshotStickers(snapshot)
559
560
  });
560
- const embedText = resolveDiscordEmbedText(snapshot.embeds?.[0]);
561
+ const embedText = resolveDiscordEmbedText(snapshot.embeds);
561
562
  const componentText = extractDiscordComponentsV2Text(snapshot.components);
562
563
  return [content || embedText || componentText, attachmentText].filter(Boolean).join("\n");
563
564
  }
564
565
  //#endregion
565
- export { formatDiscordMediaText as a, resolveReferencedReplyMediaList as c, resolveDiscordChannelInfo as d, resolveDiscordMessageChannelId as f, resolveDiscordMessageText as i, hasDiscordMessageStickers as l, resolveDiscordForwardedMessagesTextFromSnapshots as n, resolveForwardedMediaList as o, resolveDiscordMessageHistoryText as r, resolveMediaList as s, resolveDiscordEmbedText as t, resolveDiscordMessageStickers as u };
566
+ export { formatDiscordMediaText as a, resolveReferencedReplyMediaList as c, resolveDiscordCdnPolicy as d, resolveDiscordChannelInfo as f, resolveDiscordMessageText as i, hasDiscordMessageStickers as l, resolveDiscordForwardedMessagesTextFromSnapshots as n, resolveForwardedMediaList as o, resolveDiscordMessageChannelId as p, resolveDiscordMessageHistoryText as r, resolveMediaList as s, resolveDiscordEmbedText as t, resolveDiscordMessageStickers as u };
@@ -1,10 +1,10 @@
1
- import { a as chunkDiscordTextWithMode, c as resolveDiscordReplyReference, f as normalizeDiscordOutboundTarget, r as hasDiscordMessageCreateAmbiguity } from "./retry-CLpJcXXf.js";
2
- import { n as createDiscordSendReceiptFromResults, t as createDiscordSendReceipt } from "./send.receipt-IPI1p-SP.js";
3
- import { n as formatDiscordApprovalDisplayValue } from "./approval-message-safety-AcIxvrf3.js";
4
- import { n as notifyDiscordInboundEventOutboundPayloadSuccess } from "./inbound-event-delivery-De2qxTrP.js";
5
- import { a as sendDiscordComponentMessageLazy, i as resolveDiscordComponentSpec, n as buildDiscordPresentationPayload, t as DISCORD_PRESENTATION_CAPABILITIES } from "./outbound-components-cTzwBJ60.js";
6
- import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/string-coerce-runtime";
1
+ import { a as chunkDiscordTextWithMode, f as resolveDiscordReplyReference, g as normalizeDiscordOutboundTarget, l as toDiscordOutboundDeliveryResult, o as createDiscordSendReceipt, r as hasDiscordMessageCreateAmbiguity, s as createDiscordSendReceiptFromResults } from "./retry-Cv4jCU5Z.js";
2
+ import { t as createDiscordActionGate } from "./accounts-CfQ-vSyf.js";
3
+ import { g as notifyDiscordInboundEventOutboundPayloadSuccess, h as discordInboundEventDelivery, r as formatDiscordApprovalDisplayValue } from "./outbound-session-route-Cg15ZFJd.js";
4
+ import { a as sendDiscordComponentMessageLazy, i as resolveDiscordComponentSpec, n as buildDiscordPresentationPayload, t as DISCORD_PRESENTATION_CAPABILITIES } from "./outbound-components-oLpg8Qzb.js";
7
5
  import { expectDefined } from "openclaw/plugin-sdk/expect-runtime";
6
+ import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/string-coerce-runtime";
7
+ import { createSubsystemLogger } from "openclaw/plugin-sdk/runtime-env";
8
8
  import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
9
9
  import { createReplyToFanout, resolveOutboundSendDep } from "openclaw/plugin-sdk/channel-outbound";
10
10
  import { attachChannelToResult, createAttachedChannelResultAdapter } from "openclaw/plugin-sdk/channel-send-result";
@@ -59,7 +59,7 @@ function normalizeDiscordApprovalPayload(payload) {
59
59
  }
60
60
  //#endregion
61
61
  //#region extensions/discord/src/outbound-send-context.ts
62
- const loadDiscordSendRuntime = createLazyRuntimeModule(() => import("./send-B7Q6Oc1I.js").then((n) => n.t));
62
+ const loadDiscordSendRuntime = createLazyRuntimeModule(() => import("./send-C49MFF9j.js").then((n) => n.t));
63
63
  function resolveDiscordOutboundTarget(params) {
64
64
  if (params.threadId == null) return params.to;
65
65
  const threadId = normalizeOptionalStringifiedId(params.threadId) ?? "";
@@ -95,11 +95,7 @@ async function createDiscordPayloadSendContext(ctx) {
95
95
  }
96
96
  //#endregion
97
97
  //#region extensions/discord/src/outbound-payload.ts
98
- function resolveDiscordDeliveryProgress(ctx) {
99
- return ctx.onDeliveryResult ? async (result) => {
100
- await ctx.onDeliveryResult?.(attachChannelToResult("discord", result));
101
- } : void 0;
102
- }
98
+ const log$1 = createSubsystemLogger("discord/outbound");
103
99
  function createDiscordUnknownPayloadResult(target) {
104
100
  return {
105
101
  messageId: "",
@@ -143,10 +139,39 @@ async function sendDiscordOutboundPayload(params) {
143
139
  });
144
140
  const mediaUrls = resolvePayloadMediaUrls(payload);
145
141
  const sendContext = await createDiscordPayloadSendContext(ctx);
142
+ const payloadContext = {
143
+ ...ctx,
144
+ payload
145
+ };
146
+ const deliveredResults = [];
147
+ let createdThreadId;
148
+ payloadContext.onDeliveryResult = async (result) => {
149
+ await ctx.onDeliveryResult?.(result);
150
+ const threadId = result.receipt?.threadId;
151
+ if (threadId && payloadContext.threadId == null) {
152
+ payloadContext.threadId = threadId;
153
+ sendContext.target = `channel:${threadId}`;
154
+ createdThreadId = threadId;
155
+ }
156
+ if (createdThreadId && result.target?.kind === "channel" && result.receipt) deliveredResults.push({
157
+ messageId: result.messageId,
158
+ channelId: result.target.id,
159
+ receipt: result.receipt
160
+ });
161
+ };
162
+ const completeResult = (result) => createdThreadId ? {
163
+ ...result,
164
+ receipt: createDiscordSendReceiptFromResults({
165
+ results: deliveredResults,
166
+ threadId: createdThreadId
167
+ })
168
+ } : result;
169
+ const completeDelivery = (result) => attachChannelToResult("discord", toDiscordOutboundDeliveryResult(completeResult(result)));
170
+ const onDeliveryResult = async (result) => await payloadContext.onDeliveryResult?.(attachChannelToResult("discord", toDiscordOutboundDeliveryResult(result)));
146
171
  if (payload.audioAsVoice && mediaUrls.length > 0) {
147
172
  const voiceReply = sendContext.resolveReply();
148
- let deliveredVoice = false;
149
- let lastResult;
173
+ let voiceFailure;
174
+ let lastResult = createDiscordUnknownPayloadResult(sendContext.target);
150
175
  try {
151
176
  const voiceUrl = expectDefined(mediaUrls.at(0), "non-empty Discord voice media URLs");
152
177
  lastResult = await sendContext.sendVoice(sendContext.target, voiceUrl, {
@@ -155,33 +180,41 @@ async function sendDiscordOutboundPayload(params) {
155
180
  mediaLocalRoots: ctx.mediaLocalRoots,
156
181
  mediaReadFile: ctx.mediaReadFile
157
182
  });
158
- deliveredVoice = true;
159
183
  } catch (err) {
160
184
  if (hasDiscordMessageCreateAmbiguity(err)) throw err;
161
185
  const supplement = getReplyPayloadTtsSupplement(payload);
162
186
  const visibleFallbackText = payload.text?.trim() ? payload.text : void 0;
163
187
  const hiddenFallbackText = supplement?.visibleTextAlreadyDelivered ? void 0 : supplement?.spokenText;
164
188
  const fallbackText = visibleFallbackText ?? hiddenFallbackText;
165
- if (!fallbackText) if (supplement?.visibleTextAlreadyDelivered) lastResult = createDiscordUnknownPayloadResult(sendContext.target);
166
- else throw err;
167
- else lastResult = await sendContext.send(sendContext.target, fallbackText, {
189
+ if (!fallbackText && !supplement?.visibleTextAlreadyDelivered) throw err;
190
+ log$1.warn("discord voice send failed; continuing without voice", { error: err });
191
+ if (fallbackText) await sendContext.send(sendContext.target, fallbackText, {
168
192
  verbose: false,
169
193
  ...resolveDiscordFormattedDeliveryOptions(ctx, sendContext, voiceReply),
170
- onDeliveryResult: resolveDiscordDeliveryProgress(ctx)
194
+ onDeliveryResult
171
195
  });
196
+ voiceFailure = { error: err };
172
197
  }
173
- if (deliveredVoice) await ctx.onDeliveryResult?.(attachChannelToResult("discord", lastResult));
174
- if (deliveredVoice && payload.text?.trim()) lastResult = await sendContext.send(sendContext.target, payload.text, {
175
- verbose: false,
176
- ...resolveDiscordFormattedDeliveryOptions(ctx, sendContext),
177
- onDeliveryResult: resolveDiscordDeliveryProgress(ctx)
178
- });
179
- for (const mediaUrl of mediaUrls.slice(1)) lastResult = await sendContext.send(sendContext.target, "", {
180
- verbose: false,
181
- ...resolveDiscordMediaDeliveryOptions(ctx, sendContext, mediaUrl),
182
- onDeliveryResult: resolveDiscordDeliveryProgress(ctx)
183
- });
184
- return attachChannelToResult("discord", lastResult);
198
+ if (!voiceFailure) {
199
+ await payloadContext.onDeliveryResult?.(attachChannelToResult("discord", toDiscordOutboundDeliveryResult(lastResult)));
200
+ if (payload.text?.trim()) lastResult = await sendContext.send(sendContext.target, payload.text, {
201
+ verbose: false,
202
+ ...resolveDiscordFormattedDeliveryOptions(ctx, sendContext),
203
+ onDeliveryResult
204
+ });
205
+ }
206
+ for (const mediaUrl of mediaUrls.slice(1)) try {
207
+ lastResult = await sendContext.send(sendContext.target, "", {
208
+ verbose: false,
209
+ ...resolveDiscordMediaDeliveryOptions(ctx, sendContext, mediaUrl),
210
+ onDeliveryResult
211
+ });
212
+ } catch (err) {
213
+ if (!voiceFailure) throw err;
214
+ log$1.warn("discord remaining media send failed after voice failure", { error: err });
215
+ }
216
+ if (voiceFailure) throw voiceFailure.error;
217
+ return completeDelivery(lastResult);
185
218
  }
186
219
  const componentSpec = await resolveDiscordComponentSpec(payload);
187
220
  if (!componentSpec) {
@@ -189,7 +222,7 @@ async function sendDiscordOutboundPayload(params) {
189
222
  const nativeComponents = Array.isArray(discordData.components) ? discordData.components : void 0;
190
223
  const embeds = Array.isArray(discordData.embeds) ? discordData.embeds : void 0;
191
224
  const filename = normalizeOptionalString(discordData.filename);
192
- if (nativeComponents || embeds?.length || filename) return attachChannelToResult("discord", await sendPayloadMediaSequenceOrFallback({
225
+ if (nativeComponents || embeds?.length || filename) return completeDelivery(await sendPayloadMediaSequenceOrFallback({
193
226
  text: payload.text ?? "",
194
227
  mediaUrls,
195
228
  fallbackResult: createDiscordUnknownPayloadResult(sendContext.target),
@@ -199,7 +232,7 @@ async function sendDiscordOutboundPayload(params) {
199
232
  embeds,
200
233
  filename,
201
234
  ...resolveDiscordFormattedDeliveryOptions(ctx, sendContext),
202
- onDeliveryResult: resolveDiscordDeliveryProgress(ctx)
235
+ onDeliveryResult
203
236
  }),
204
237
  send: async ({ text, mediaUrl, isFirst }) => await sendContext.send(sendContext.target, text, {
205
238
  verbose: false,
@@ -207,60 +240,34 @@ async function sendDiscordOutboundPayload(params) {
207
240
  components: isFirst ? nativeComponents : void 0,
208
241
  embeds: isFirst ? embeds : void 0,
209
242
  filename: isFirst ? filename : void 0,
210
- onDeliveryResult: resolveDiscordDeliveryProgress(ctx)
243
+ onDeliveryResult
211
244
  })
212
245
  }));
213
- const payloadContext = {
214
- ...ctx,
215
- payload
216
- };
217
- const deliveredResults = [];
218
- let createdThreadId;
219
- payloadContext.onDeliveryResult = async (result) => {
220
- await ctx.onDeliveryResult?.(result);
221
- const threadId = result.receipt?.threadId;
222
- if (threadId && payloadContext.threadId == null) {
223
- payloadContext.threadId = threadId;
224
- createdThreadId = threadId;
225
- }
226
- if (createdThreadId && result.channelId && result.receipt) deliveredResults.push({
227
- messageId: result.messageId,
228
- channelId: result.channelId,
229
- receipt: result.receipt
230
- });
231
- };
232
- const result = await sendTextMediaPayload({
246
+ return completeResult(await sendTextMediaPayload({
233
247
  channel: "discord",
234
248
  ctx: payloadContext,
235
249
  adapter: params.fallbackAdapter
236
- });
237
- return createdThreadId ? {
238
- ...result,
239
- receipt: createDiscordSendReceiptFromResults({
240
- results: deliveredResults,
241
- threadId: createdThreadId
242
- })
243
- } : result;
250
+ }));
244
251
  }
245
- return attachChannelToResult("discord", await sendPayloadMediaSequenceOrFallback({
252
+ return completeDelivery(await sendPayloadMediaSequenceOrFallback({
246
253
  text: payload.text ?? "",
247
254
  mediaUrls,
248
255
  fallbackResult: createDiscordUnknownPayloadResult(sendContext.target),
249
256
  sendNoMedia: async () => {
250
257
  return await sendDiscordComponentMessageLazy(sendContext.target, componentSpec, {
251
258
  ...resolveDiscordFormattedDeliveryOptions(ctx, sendContext),
252
- onDeliveryResult: resolveDiscordDeliveryProgress(ctx)
259
+ onDeliveryResult
253
260
  });
254
261
  },
255
262
  send: async ({ text, mediaUrl, isFirst }) => {
256
263
  if (isFirst) return await sendDiscordComponentMessageLazy(sendContext.target, componentSpec, {
257
264
  ...resolveDiscordMediaDeliveryOptions(ctx, sendContext, mediaUrl),
258
- onDeliveryResult: resolveDiscordDeliveryProgress(ctx)
265
+ onDeliveryResult
259
266
  });
260
267
  return await sendContext.send(sendContext.target, text, {
261
268
  verbose: false,
262
269
  ...resolveDiscordMediaDeliveryOptions(ctx, sendContext, mediaUrl),
263
- onDeliveryResult: resolveDiscordDeliveryProgress(ctx)
270
+ onDeliveryResult
264
271
  });
265
272
  }
266
273
  }));
@@ -268,8 +275,9 @@ async function sendDiscordOutboundPayload(params) {
268
275
  //#endregion
269
276
  //#region extensions/discord/src/outbound-adapter.ts
270
277
  const DISCORD_TEXT_CHUNK_LIMIT = 2e3;
271
- const loadDiscordThreadBindings = createLazyRuntimeModule(() => import("./thread-bindings-3L8p82GV.js").then((n) => n.t));
272
- const loadDiscordComponentSendRuntime = createLazyRuntimeModule(() => import("./send.components-iJyFXw9L.js").then((n) => n.i));
278
+ const log = createSubsystemLogger("discord/outbound");
279
+ const loadDiscordThreadBindings = createLazyRuntimeModule(() => import("./thread-bindings-DW5F9vat.js").then((n) => n.t));
280
+ const loadDiscordComponentSendRuntime = createLazyRuntimeModule(() => import("./send.components-DKKAw5VX.js").then((n) => n.i));
273
281
  function resolveDiscordWebhookIdentity(params) {
274
282
  const usernameRaw = normalizeOptionalString(params.identity?.name);
275
283
  const fallbackUsername = normalizeOptionalString(params.binding.label) ?? params.binding.agentId;
@@ -325,7 +333,7 @@ async function resolveDiscordOutboundMessageSend(params) {
325
333
  cfg: params.cfg,
326
334
  ...resolveDiscordFormattingOptions({ formatting: params.formatting }),
327
335
  onDeliveryResult: params.onDeliveryResult ? async (result) => {
328
- await params.onDeliveryResult?.(attachChannelToResult("discord", result));
336
+ await params.onDeliveryResult?.(attachChannelToResult("discord", toDiscordOutboundDeliveryResult(result)));
329
337
  } : void 0,
330
338
  onPlatformSendDispatch: params.onPlatformSendDispatch
331
339
  }
@@ -380,17 +388,18 @@ const discordOutbound = {
380
388
  await ctx.onPlatformSendDispatch?.();
381
389
  } : void 0
382
390
  });
383
- if (webhookResult) return webhookResult;
391
+ if (webhookResult) return toDiscordOutboundDeliveryResult(webhookResult);
384
392
  } catch (error) {
385
393
  if (webhookSelected) throw error;
394
+ log.warn("discord webhook persona send failed; falling back to bot send", { error });
386
395
  }
387
396
  }
388
397
  const { send, target, options } = await resolveDiscordOutboundMessageSend(ctx);
389
- return await send(target, ctx.text, options);
398
+ return toDiscordOutboundDeliveryResult(await send(target, ctx.text, options));
390
399
  },
391
400
  sendMedia: async (ctx) => {
392
401
  const { send, target, options } = await resolveDiscordOutboundMessageSend(ctx);
393
- if (ctx.audioAsVoice && ctx.mediaUrl) return await (resolveOutboundSendDep(ctx.deps, "discordVoice") ?? (await loadDiscordSendRuntime()).sendVoiceMessageDiscord)(target, ctx.mediaUrl, {
402
+ if (ctx.audioAsVoice && ctx.mediaUrl) return toDiscordOutboundDeliveryResult(await (resolveOutboundSendDep(ctx.deps, "discordVoice") ?? (await loadDiscordSendRuntime()).sendVoiceMessageDiscord)(target, ctx.mediaUrl, {
394
403
  cfg: ctx.cfg,
395
404
  reply: options.reply,
396
405
  accountId: ctx.accountId ?? void 0,
@@ -399,7 +408,7 @@ const discordOutbound = {
399
408
  mediaLocalRoots: ctx.mediaLocalRoots,
400
409
  mediaReadFile: ctx.mediaReadFile,
401
410
  onPlatformSendDispatch: ctx.onPlatformSendDispatch
402
- });
411
+ }));
403
412
  const mediaOptions = {
404
413
  ...options,
405
414
  mediaUrl: ctx.mediaUrl,
@@ -414,26 +423,41 @@ const discordOutbound = {
414
423
  reply: options.reply?.scope === "all" ? options.reply : void 0
415
424
  });
416
425
  const threadId = captionResult.receipt?.threadId;
417
- if (!threadId) return mediaResult;
418
- return {
419
- ...captionResult,
426
+ return toDiscordOutboundDeliveryResult({
427
+ ...threadId ? captionResult : mediaResult,
420
428
  receipt: createDiscordSendReceiptFromResults({
421
429
  results: [captionResult, mediaResult],
422
430
  threadId
423
431
  })
424
- };
432
+ });
425
433
  }
426
- return await send(target, ctx.text, mediaOptions);
434
+ return toDiscordOutboundDeliveryResult(await send(target, ctx.text, mediaOptions));
427
435
  },
428
- sendPoll: async ({ cfg, to, poll, accountId, threadId, silent, onPlatformSendDispatch }) => await (await loadDiscordSendRuntime()).sendPollDiscord(resolveDiscordOutboundTarget({
429
- to,
430
- threadId
431
- }), poll, {
432
- accountId: accountId ?? void 0,
433
- silent: silent ?? void 0,
434
- cfg,
435
- onPlatformSendDispatch
436
- })
436
+ sendPoll: async ({ cfg, to, poll, content, accountId, threadId, silent, sessionKey, inboundEventKind, onPlatformSendDispatch }) => {
437
+ if (!createDiscordActionGate({
438
+ cfg,
439
+ accountId
440
+ })("polls")) throw new Error("Discord polls are disabled.");
441
+ const outboundTo = resolveDiscordOutboundTarget({
442
+ to,
443
+ threadId
444
+ });
445
+ const result = await (await loadDiscordSendRuntime()).sendPollDiscord(outboundTo, poll, {
446
+ accountId: accountId ?? void 0,
447
+ content,
448
+ threadId: threadId ?? void 0,
449
+ silent: silent ?? void 0,
450
+ cfg,
451
+ onPlatformSendDispatch
452
+ });
453
+ discordInboundEventDelivery.notify({
454
+ sessionKey,
455
+ inboundEventKind,
456
+ to: outboundTo,
457
+ accountId
458
+ });
459
+ return result;
460
+ }
437
461
  }),
438
462
  adoptTargetFromDelivery: ({ result }) => {
439
463
  const threadId = normalizeOptionalStringifiedId(result.receipt?.threadId);
@@ -456,9 +480,10 @@ const discordOutbound = {
456
480
  to: target.to,
457
481
  threadId: target.threadId
458
482
  });
483
+ const channelId = result.target?.kind === "channel" ? result.target.id : to;
459
484
  questionGatewayRuntime.registerChannelDelivery({
460
485
  questionId,
461
- deliveryId: `discord:${target.accountId ?? "default"}:${result.channelId ?? to}:${result.messageId}`,
486
+ deliveryId: `discord:${target.accountId ?? "default"}:${channelId}:${result.messageId}`,
462
487
  finalize: async (statusLine) => {
463
488
  const { editDiscordComponentMessage } = await loadDiscordComponentSendRuntime();
464
489
  await editDiscordComponentMessage(to, result.messageId, {
@@ -1,4 +1,4 @@
1
- import { h as readDiscordComponentSpec } from "./outbound-session-route-DxLkrgKQ.js";
1
+ import { m as readDiscordComponentSpec } from "./components-B9V5o361.js";
2
2
  import { createLazyRuntimeModule, createLazyRuntimeNamedExport } from "openclaw/plugin-sdk/lazy-runtime";
3
3
  //#region extensions/discord/src/outbound-components.ts
4
4
  const DISCORD_MESSAGE_COMPONENT_LIMIT = 40;
@@ -30,11 +30,11 @@ const DISCORD_PRESENTATION_CAPABILITIES = {
30
30
  }
31
31
  }
32
32
  };
33
- const loadDiscordComponentSend = createLazyRuntimeNamedExport(() => import("./send.components-iJyFXw9L.js").then((n) => n.i), "sendDiscordComponentMessage");
33
+ const loadDiscordComponentSend = createLazyRuntimeNamedExport(() => import("./send.components-DKKAw5VX.js").then((n) => n.i), "sendDiscordComponentMessage");
34
34
  async function sendDiscordComponentMessageLazy(...args) {
35
35
  return await (await loadDiscordComponentSend())(...args);
36
36
  }
37
- const loadDiscordSharedInteractive = createLazyRuntimeModule(() => import("./outbound-session-route-DxLkrgKQ.js").then((n) => n.o));
37
+ const loadDiscordSharedInteractive = createLazyRuntimeModule(() => import("./components-B9V5o361.js").then((n) => n.a));
38
38
  function addPayloadTextFallback(spec, payload) {
39
39
  return spec.text ? spec : {
40
40
  ...spec,