@openclaw/discord 2026.9.4 → 2026.9.5

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 (765) hide show
  1. package/assets/activity.svg +40 -0
  2. package/assets/icon.png +0 -0
  3. package/dist/{account-inspect-BY-ve3yH.js → .setup/account-inspect-BwQj24ht.mjs} +1 -1
  4. package/dist/{activities-api-w8j7Elou.js → .setup/activities-api-DBwRt5ES.mjs} +93 -31
  5. package/dist/{api-LIV--eMq.js → .setup/api-CBK9zcq5.mjs} +7 -4
  6. package/dist/{approval-handler.runtime-BnPUU5NK.js → .setup/approval-handler.runtime-Du3n5ypX.mjs} +8 -7
  7. package/dist/.setup/approval-message-updates-BN7JtScm.mjs +17 -0
  8. package/dist/{audit-BgAgIzwo.js → .setup/audit-C8uaKoa9.mjs} +5 -5
  9. package/dist/{channel-C_OFFR5Y.js → .setup/channel-ChKdlBgH.mjs} +27 -25
  10. package/dist/{channel-actions.runtime-tShzmemq.js → .setup/channel-actions.runtime-CJmiFfps.mjs} +18 -11
  11. package/dist/{allow-list-DWEio925.js → .setup/channel-type-DKnjV1XW.mjs} +161 -1
  12. package/dist/{channel.setup-CpAwAiS0.js → .setup/channel.setup-BlC3-Kzz.mjs} +4 -4
  13. package/dist/{components-DBFTIN6P.js → .setup/components-MqMWUWnE.mjs} +3 -3
  14. package/dist/{config-schema-r38UkM_J.js → .setup/config-schema-CiZz-mtA.mjs} +1 -1
  15. package/dist/{conversation-binding-route-CB9PRqgi.js → .setup/conversation-binding-route-_rz33QHO.mjs} +1 -1
  16. package/dist/{directory-config-D1uDGbWh.js → .setup/directory-config-BytTftz-.mjs} +2 -2
  17. package/dist/{directory-live-C5o1uKlw.js → .setup/directory-live--EGTH0DC.mjs} +4 -4
  18. package/dist/{discord-CmL3ati-.js → .setup/discord-BXpHW-cu.mjs} +89 -39
  19. package/dist/{doctor-DgKMH6N7.js → .setup/doctor-DxcdkXzz.mjs} +6 -6
  20. package/dist/{handle-action.guild-admin-CpEwox_X.js → .setup/handle-action.guild-admin-DAFyh_yV.mjs} +9 -4
  21. package/dist/{live-policy-config-BblutQAq.js → .setup/live-policy-config-eKQ-PLdy.mjs} +1 -1
  22. package/dist/{message-handler-C7FZGKa8.js → .setup/message-handler-DnUrDpaU.mjs} +23 -13
  23. package/dist/{message-handler.preflight-DFpwDW2W.js → .setup/message-handler.preflight-CtqaF_fb.mjs} +33 -20
  24. package/dist/{message-handler.process-ZKrmmA9D.js → .setup/message-handler.process-Dz1xvuQU.mjs} +68 -78
  25. package/dist/{outbound-adapter-C8PTt7_p.js → .setup/outbound-adapter-C8v79z9Z.mjs} +13 -9
  26. package/dist/{outbound-session-route-B0N6os97.js → .setup/outbound-session-route-CqWbuMOm.mjs} +137 -11
  27. package/dist/{pluralkit-BiUW53Yn.js → .setup/pluralkit-CdAt1G0P.mjs} +2 -2
  28. package/dist/{probe-BcoN44eK.js → .setup/probe-CupW4we4.mjs} +14 -10
  29. package/dist/{probe.runtime-BnuED0fI.js → .setup/probe.runtime-DBQ_AGPe.mjs} +1 -1
  30. package/dist/{provider-DmRHCZ_K.js → .setup/provider-72zIvN-i.mjs} +475 -286
  31. package/dist/{provider-session.runtime-U1M8_EYY.js → .setup/provider-session.runtime-BW7QrF5C.mjs} +4 -4
  32. package/dist/.setup/provider.runtime-DuhmKdDU.mjs +2 -0
  33. package/dist/{realtime-session.runtime-Bjsk9Q5t.js → .setup/realtime-session.runtime-DTccTgTM.mjs} +758 -336
  34. package/dist/{resolve-allowlist-common-ChPf0Qy7.js → .setup/resolve-allowlist-common-CwMBzbx9.mjs} +3 -3
  35. package/dist/{resolve-channels-VbpLmUS8.js → .setup/resolve-channels-BbvsLQOZ.mjs} +4 -5
  36. package/dist/{resolve-users-D-wRFsd5.js → .setup/resolve-users-ByFlR7LQ.mjs} +3 -3
  37. package/dist/{retry-DKeoT7UO.js → .setup/retry-DBfcEgmO.mjs} +28 -6
  38. package/dist/{runtime-CbknwoBH.js → .setup/runtime-BVoa7hhx.mjs} +2 -2
  39. package/dist/{runtime-Dxl-ZOvg.js → .setup/runtime-SchNfUsQ.mjs} +92 -139
  40. package/dist/{security-audit-DKfK-iPY.js → .setup/security-audit-s5w50-Ly.mjs} +1 -1
  41. package/dist/{security-audit.runtime-sKZyKgpx.js → .setup/security-audit.runtime-DHtYenx9.mjs} +1 -1
  42. package/dist/{send-CLpzfzJe.js → .setup/send-CKDczUNL.mjs} +60 -31
  43. package/dist/{send.components-BWnkX4QN.js → .setup/send.components-DWQjXhPV.mjs} +87 -65
  44. package/dist/{send.outbound-BVTWrl_4.js → .setup/send.outbound-D0hQ7s50.mjs} +17 -7
  45. package/dist/{send.shared-BHPM3CSl.js → .setup/send.shared-Zwx6BxQ5.mjs} +15 -12
  46. package/dist/{sender-identity-f3l5OYgV.js → .setup/sender-identity-0Ymgvmaj.mjs} +1 -1
  47. package/dist/.setup/setup-plugin-api-CINIEBLa.mjs +3 -0
  48. package/dist/{shared-CPPR0Xo4.js → .setup/shared-CaA3Vv4n.mjs} +11 -11
  49. package/dist/{subagent-hooks-DfsiwCec.js → .setup/subagent-hooks-Bired9q6.mjs} +16 -4
  50. package/dist/{system-events-B6HkUhF_.js → .setup/system-events-B2YEEMbS.mjs} +2 -2
  51. package/dist/{target-resolver-CoFQ7iSX.js → .setup/target-resolver-B6MrxbYv.mjs} +4 -4
  52. package/dist/.setup/targets-D1mAB5yO.mjs +3 -0
  53. package/dist/{thread-bindings-uudC_0TY.js → .setup/thread-bindings-CK5272V3.mjs} +6 -6
  54. package/dist/{thread-bindings.manager-BeUxc8nr.js → .setup/thread-bindings.manager-eexkKyrG.mjs} +14 -9
  55. package/dist/{thread-bindings.session-updates-BwkXpcy0.js → .setup/thread-bindings.session-updates-DCQq1WZ5.mjs} +1 -1
  56. package/dist/{thread-bindings.state-dDn-dwBw.js → .setup/thread-bindings.state-BThFQEga.mjs} +46 -14
  57. package/dist/{transcripts-source-VkgenQv-.js → .setup/transcripts-source-CuWYgayu.mjs} +62 -25
  58. package/dist/{typing-DuBg1U8Q.js → .setup/typing-BKZL5fGj.mjs} +2 -2
  59. package/dist/{voice-runtime-DMYDMkJx.js → .setup/voice-runtime-DHVQ2mFz.mjs} +529 -181
  60. package/dist/account-inspect-api.js +1 -1
  61. package/dist/action-runtime-api.js +1 -1
  62. package/dist/activities-api.js +1 -1
  63. package/dist/api.js +19 -19
  64. package/dist/channel-config-api.js +1 -1
  65. package/dist/channel-plugin-api.js +1 -1
  66. package/dist/contract-api.js +1 -1
  67. package/dist/directory-contract-api.js +1 -1
  68. package/dist/doctor-contract-api.js +4 -4
  69. package/dist/index.js +1 -1
  70. package/dist/runtime-api.js +22 -22
  71. package/dist/runtime-setter-api.js +1 -1
  72. package/dist/secret-contract-api.js +1 -1
  73. package/dist/security-audit-contract-api.js +1 -1
  74. package/dist/security-contract-api.js +1 -1
  75. package/dist/session-key-api.js +1 -1
  76. package/dist/setup-entry.js +2 -1
  77. package/dist/setup-plugin-api.js +1 -1
  78. package/dist/subagent-hooks-api.js +5 -4
  79. package/dist/thread-binding-api.js +1 -1
  80. package/dist/transcripts-source-api.js +1 -1
  81. package/node_modules/@types/node/README.md +1 -1
  82. package/node_modules/@types/node/buffer.d.ts +1 -0
  83. package/node_modules/@types/node/diagnostics_channel.d.ts +4 -4
  84. package/node_modules/@types/node/ffi.d.ts +1 -1
  85. package/node_modules/@types/node/http.d.ts +1 -1
  86. package/node_modules/@types/node/package.json +3 -3
  87. package/node_modules/@types/node/perf_hooks.d.ts +31 -19
  88. package/node_modules/@types/node/quic.d.ts +6 -4
  89. package/node_modules/@types/node/stream/web.d.ts +20 -0
  90. package/node_modules/@types/node/tls.d.ts +26 -15
  91. package/node_modules/@types/node/vfs.d.ts +7 -6
  92. package/node_modules/@types/node/zlib.d.ts +17 -0
  93. package/node_modules/discord-api-types/README.md +3 -2
  94. package/node_modules/discord-api-types/package.json +46 -46
  95. package/node_modules/discord-api-types/rest/v10/interactions.d.ts +1 -0
  96. package/node_modules/discord-api-types/rest/v10/interactions.d.ts.map +1 -1
  97. package/node_modules/discord-api-types/rest/v9/interactions.d.ts +1 -0
  98. package/node_modules/discord-api-types/rest/v9/interactions.d.ts.map +1 -1
  99. package/node_modules/libopus-wasm/CHANGELOG.md +15 -0
  100. package/node_modules/libopus-wasm/README.md +1 -1
  101. package/node_modules/libopus-wasm/dist/discordjs.d.ts.map +1 -1
  102. package/node_modules/libopus-wasm/dist/generated/libopus.generated.mjs +0 -0
  103. package/node_modules/libopus-wasm/dist/index.d.ts.map +1 -1
  104. package/node_modules/libopus-wasm/dist/index.js +37 -18
  105. package/node_modules/libopus-wasm/package.json +13 -13
  106. package/node_modules/typebox/build/compile/validator.d.mts +1 -1
  107. package/node_modules/typebox/build/compile/validator.mjs +1 -1
  108. package/node_modules/typebox/build/format/idna/idn-hostname.mjs +7 -5
  109. package/node_modules/typebox/build/format/iri.mjs +5 -1
  110. package/node_modules/typebox/build/guard/emit.mjs +2 -4
  111. package/node_modules/typebox/build/guard/guard.mjs +6 -18
  112. package/node_modules/typebox/build/guard/string.mjs +16 -24
  113. package/node_modules/typebox/build/schema/build.mjs +2 -2
  114. package/node_modules/typebox/build/schema/check.mjs +1 -1
  115. package/node_modules/typebox/build/schema/compile.d.mts +3 -2
  116. package/node_modules/typebox/build/schema/compile.mjs +8 -8
  117. package/node_modules/typebox/build/schema/engine/_context.d.mts +6 -7
  118. package/node_modules/typebox/build/schema/engine/_context.mjs +23 -15
  119. package/node_modules/typebox/build/schema/engine/_functions.d.mts +2 -2
  120. package/node_modules/typebox/build/schema/engine/_functions.mjs +1 -1
  121. package/node_modules/typebox/build/schema/engine/_reducer.d.mts +3 -3
  122. package/node_modules/typebox/build/schema/engine/_refine.d.mts +5 -5
  123. package/node_modules/typebox/build/schema/engine/_refine.mjs +4 -7
  124. package/node_modules/typebox/build/schema/engine/_stack.d.mts +34 -16
  125. package/node_modules/typebox/build/schema/engine/_stack.mjs +148 -104
  126. package/node_modules/typebox/build/schema/engine/additionalItems.d.mts +4 -4
  127. package/node_modules/typebox/build/schema/engine/additionalProperties.d.mts +8 -8
  128. package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +26 -18
  129. package/node_modules/typebox/build/schema/engine/allOf.d.mts +4 -4
  130. package/node_modules/typebox/build/schema/engine/allOf.mjs +3 -3
  131. package/node_modules/typebox/build/schema/engine/anyOf.d.mts +4 -4
  132. package/node_modules/typebox/build/schema/engine/anyOf.mjs +5 -10
  133. package/node_modules/typebox/build/schema/engine/boolean.d.mts +4 -4
  134. package/node_modules/typebox/build/schema/engine/boolean.mjs +2 -6
  135. package/node_modules/typebox/build/schema/engine/const.d.mts +4 -4
  136. package/node_modules/typebox/build/schema/engine/const.mjs +2 -6
  137. package/node_modules/typebox/build/schema/engine/contains.d.mts +4 -4
  138. package/node_modules/typebox/build/schema/engine/contains.mjs +2 -6
  139. package/node_modules/typebox/build/schema/engine/dependencies.d.mts +4 -4
  140. package/node_modules/typebox/build/schema/engine/dependencies.mjs +3 -6
  141. package/node_modules/typebox/build/schema/engine/dependentRequired.d.mts +4 -4
  142. package/node_modules/typebox/build/schema/engine/dependentRequired.mjs +2 -6
  143. package/node_modules/typebox/build/schema/engine/dependentSchemas.d.mts +4 -4
  144. package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +4 -4
  145. package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +11 -7
  146. package/node_modules/typebox/build/schema/engine/enum.d.mts +4 -4
  147. package/node_modules/typebox/build/schema/engine/enum.mjs +2 -6
  148. package/node_modules/typebox/build/schema/engine/exclusiveMaximum.d.mts +4 -4
  149. package/node_modules/typebox/build/schema/engine/exclusiveMaximum.mjs +2 -6
  150. package/node_modules/typebox/build/schema/engine/exclusiveMinimum.d.mts +4 -4
  151. package/node_modules/typebox/build/schema/engine/exclusiveMinimum.mjs +2 -6
  152. package/node_modules/typebox/build/schema/engine/format.d.mts +4 -4
  153. package/node_modules/typebox/build/schema/engine/format.mjs +2 -6
  154. package/node_modules/typebox/build/schema/engine/if.d.mts +4 -4
  155. package/node_modules/typebox/build/schema/engine/if.mjs +7 -15
  156. package/node_modules/typebox/build/schema/engine/items.d.mts +4 -4
  157. package/node_modules/typebox/build/schema/engine/items.mjs +1 -1
  158. package/node_modules/typebox/build/schema/engine/maxContains.d.mts +4 -4
  159. package/node_modules/typebox/build/schema/engine/maxContains.mjs +2 -6
  160. package/node_modules/typebox/build/schema/engine/maxItems.d.mts +4 -4
  161. package/node_modules/typebox/build/schema/engine/maxItems.mjs +2 -6
  162. package/node_modules/typebox/build/schema/engine/maxLength.d.mts +4 -4
  163. package/node_modules/typebox/build/schema/engine/maxLength.mjs +2 -6
  164. package/node_modules/typebox/build/schema/engine/maxProperties.d.mts +4 -4
  165. package/node_modules/typebox/build/schema/engine/maxProperties.mjs +2 -6
  166. package/node_modules/typebox/build/schema/engine/maximum.d.mts +4 -4
  167. package/node_modules/typebox/build/schema/engine/maximum.mjs +2 -6
  168. package/node_modules/typebox/build/schema/engine/minContains.d.mts +4 -4
  169. package/node_modules/typebox/build/schema/engine/minContains.mjs +2 -6
  170. package/node_modules/typebox/build/schema/engine/minItems.d.mts +5 -5
  171. package/node_modules/typebox/build/schema/engine/minItems.mjs +2 -6
  172. package/node_modules/typebox/build/schema/engine/minLength.d.mts +4 -4
  173. package/node_modules/typebox/build/schema/engine/minLength.mjs +2 -6
  174. package/node_modules/typebox/build/schema/engine/minProperties.d.mts +4 -4
  175. package/node_modules/typebox/build/schema/engine/minProperties.mjs +2 -6
  176. package/node_modules/typebox/build/schema/engine/minimum.d.mts +4 -4
  177. package/node_modules/typebox/build/schema/engine/minimum.mjs +2 -6
  178. package/node_modules/typebox/build/schema/engine/multipleOf.d.mts +4 -4
  179. package/node_modules/typebox/build/schema/engine/multipleOf.mjs +2 -6
  180. package/node_modules/typebox/build/schema/engine/not.d.mts +4 -4
  181. package/node_modules/typebox/build/schema/engine/not.mjs +4 -8
  182. package/node_modules/typebox/build/schema/engine/oneOf.d.mts +4 -4
  183. package/node_modules/typebox/build/schema/engine/oneOf.mjs +6 -11
  184. package/node_modules/typebox/build/schema/engine/pattern.d.mts +4 -4
  185. package/node_modules/typebox/build/schema/engine/pattern.mjs +3 -7
  186. package/node_modules/typebox/build/schema/engine/patternProperties.d.mts +4 -4
  187. package/node_modules/typebox/build/schema/engine/patternProperties.mjs +1 -1
  188. package/node_modules/typebox/build/schema/engine/prefixItems.d.mts +4 -4
  189. package/node_modules/typebox/build/schema/engine/prefixItems.mjs +1 -1
  190. package/node_modules/typebox/build/schema/engine/properties.d.mts +4 -4
  191. package/node_modules/typebox/build/schema/engine/properties.mjs +1 -1
  192. package/node_modules/typebox/build/schema/engine/propertyNames.d.mts +4 -4
  193. package/node_modules/typebox/build/schema/engine/propertyNames.mjs +4 -10
  194. package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +4 -4
  195. package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +11 -7
  196. package/node_modules/typebox/build/schema/engine/ref.d.mts +4 -4
  197. package/node_modules/typebox/build/schema/engine/ref.mjs +19 -15
  198. package/node_modules/typebox/build/schema/engine/required.d.mts +4 -4
  199. package/node_modules/typebox/build/schema/engine/required.mjs +2 -6
  200. package/node_modules/typebox/build/schema/engine/schema.d.mts +7 -7
  201. package/node_modules/typebox/build/schema/engine/schema.mjs +137 -133
  202. package/node_modules/typebox/build/schema/engine/type.d.mts +4 -4
  203. package/node_modules/typebox/build/schema/engine/type.mjs +2 -6
  204. package/node_modules/typebox/build/schema/engine/unevaluatedItems.d.mts +4 -4
  205. package/node_modules/typebox/build/schema/engine/unevaluatedItems.mjs +5 -9
  206. package/node_modules/typebox/build/schema/engine/unevaluatedProperties.d.mts +4 -4
  207. package/node_modules/typebox/build/schema/engine/unevaluatedProperties.mjs +5 -9
  208. package/node_modules/typebox/build/schema/engine/uniqueItems.d.mts +4 -4
  209. package/node_modules/typebox/build/schema/engine/uniqueItems.mjs +2 -6
  210. package/node_modules/typebox/build/schema/errors.d.mts +2 -2
  211. package/node_modules/typebox/build/schema/errors.mjs +8 -14
  212. package/node_modules/typebox/build/schema/intern/index.d.mts +1 -0
  213. package/node_modules/typebox/build/schema/intern/index.mjs +1 -0
  214. package/node_modules/typebox/build/schema/intern/intern.d.mts +11 -0
  215. package/node_modules/typebox/build/schema/intern/intern.mjs +293 -0
  216. package/node_modules/typebox/build/schema/meta/draft_2019_09.d.mts +2 -0
  217. package/node_modules/typebox/build/schema/meta/draft_2019_09.mjs +288 -0
  218. package/node_modules/typebox/build/schema/meta/draft_2020_12.d.mts +2 -0
  219. package/node_modules/typebox/build/schema/meta/draft_2020_12.mjs +300 -0
  220. package/node_modules/typebox/build/schema/meta/draft_3.d.mts +2 -0
  221. package/node_modules/typebox/build/schema/meta/draft_3.mjs +143 -0
  222. package/node_modules/typebox/build/schema/meta/draft_4.d.mts +2 -0
  223. package/node_modules/typebox/build/schema/meta/draft_4.mjs +149 -0
  224. package/node_modules/typebox/build/schema/meta/draft_6.d.mts +2 -0
  225. package/node_modules/typebox/build/schema/meta/draft_6.mjs +155 -0
  226. package/node_modules/typebox/build/schema/meta/draft_7.d.mts +2 -0
  227. package/node_modules/typebox/build/schema/meta/draft_7.mjs +172 -0
  228. package/node_modules/typebox/build/schema/meta/index.d.mts +2 -0
  229. package/node_modules/typebox/build/schema/meta/index.mjs +2 -0
  230. package/node_modules/typebox/build/schema/meta/meta.d.mts +9 -0
  231. package/node_modules/typebox/build/schema/meta/meta.mjs +15 -0
  232. package/node_modules/typebox/build/schema/meta/schema.d.mts +6 -0
  233. package/node_modules/typebox/build/schema/meta/schema.mjs +1 -0
  234. package/node_modules/typebox/build/schema/parse.d.mts +1 -0
  235. package/node_modules/typebox/build/schema/parse.mjs +10 -5
  236. package/node_modules/typebox/build/schema/resolve/resolve.d.mts +8 -3
  237. package/node_modules/typebox/build/schema/resolve/resolve.mjs +268 -139
  238. package/node_modules/typebox/build/schema/schema.d.mts +2 -0
  239. package/node_modules/typebox/build/schema/schema.mjs +2 -0
  240. package/node_modules/typebox/build/value/errors/errors.d.mts +2 -12
  241. package/node_modules/typebox/build/value/errors/errors.mjs +2 -7
  242. package/node_modules/typebox/package.json +1 -1
  243. package/node_modules/typebox/readme.md +59 -89
  244. package/node_modules/undici-types/client.d.ts +8 -3
  245. package/node_modules/undici-types/connector.d.ts +1 -0
  246. package/node_modules/undici-types/cookies.d.ts +1 -1
  247. package/node_modules/undici-types/dispatcher.d.ts +3 -3
  248. package/node_modules/undici-types/errors.d.ts +10 -0
  249. package/node_modules/undici-types/fetch.d.ts +5 -1
  250. package/node_modules/undici-types/handlers.d.ts +2 -0
  251. package/node_modules/undici-types/interceptors.d.ts +1 -1
  252. package/node_modules/undici-types/mock-interceptor.d.ts +5 -1
  253. package/node_modules/undici-types/package.json +1 -1
  254. package/node_modules/undici-types/proxy-agent.d.ts +7 -0
  255. package/node_modules/zod/README.md +27 -0
  256. package/node_modules/zod/compile.cjs +77 -0
  257. package/node_modules/zod/compile.d.cts +1 -0
  258. package/node_modules/zod/compile.d.ts +1 -0
  259. package/node_modules/zod/compile.js +52 -0
  260. package/node_modules/zod/index.cjs +2 -2
  261. package/node_modules/zod/index.d.cts +1 -2
  262. package/node_modules/zod/index.d.ts +1 -2
  263. package/node_modules/zod/index.js +5 -2
  264. package/node_modules/zod/package.json +13 -2
  265. package/node_modules/zod/src/compile.ts +56 -0
  266. package/node_modules/zod/src/index.ts +5 -2
  267. package/node_modules/zod/src/v3/ZodError.ts +22 -12
  268. package/node_modules/zod/src/v3/tests/error.test.ts +35 -0
  269. package/node_modules/zod/src/v3/tests/intersection.test.ts +18 -0
  270. package/node_modules/zod/src/v3/tests/language-server.test.ts +1 -2
  271. package/node_modules/zod/src/v3/tests/object.test.ts +3 -6
  272. package/node_modules/zod/src/v3/tests/readonly.test.ts +0 -80
  273. package/node_modules/zod/src/v3/tests/string.test.ts +6 -0
  274. package/node_modules/zod/src/v3/types.ts +5 -5
  275. package/node_modules/zod/src/v4/classic/checks.ts +1 -0
  276. package/node_modules/zod/src/v4/classic/compat.ts +26 -18
  277. package/node_modules/zod/src/v4/classic/deep-partial.ts +76 -0
  278. package/node_modules/zod/src/v4/classic/errors.ts +59 -44
  279. package/node_modules/zod/src/v4/classic/external.ts +12 -9
  280. package/node_modules/zod/src/v4/classic/from-json-schema.ts +140 -78
  281. package/node_modules/zod/src/v4/classic/in-out.ts +45 -0
  282. package/node_modules/zod/src/v4/classic/index.ts +2 -2
  283. package/node_modules/zod/src/v4/classic/iso.ts +2 -72
  284. package/node_modules/zod/src/v4/classic/parse.ts +10 -4
  285. package/node_modules/zod/src/v4/classic/schemas.ts +452 -262
  286. package/node_modules/zod/src/v4/classic/tests/apply.test.ts +27 -0
  287. package/node_modules/zod/src/v4/classic/tests/array.test.ts +2 -2
  288. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +135 -0
  289. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +30 -1
  290. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +278 -0
  291. package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +1 -2
  292. package/node_modules/zod/src/v4/classic/tests/codec.test.ts +2 -1
  293. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
  294. package/node_modules/zod/src/v4/classic/tests/credit-card.test.ts +76 -0
  295. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +720 -0
  296. package/node_modules/zod/src/v4/classic/tests/date.test.ts +30 -0
  297. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +32 -18
  298. package/node_modules/zod/src/v4/classic/tests/deep-partial.test.ts +380 -0
  299. package/node_modules/zod/src/v4/classic/tests/default-locale.test.ts +32 -0
  300. package/node_modules/zod/src/v4/classic/tests/default.test.ts +46 -0
  301. package/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +31 -7
  302. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +155 -13
  303. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +11 -0
  304. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +112 -2
  305. package/node_modules/zod/src/v4/classic/tests/error.test.ts +274 -6
  306. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +425 -10
  307. package/node_modules/zod/src/v4/classic/tests/function.test.ts +31 -0
  308. package/node_modules/zod/src/v4/classic/tests/global-config.test.ts +2 -9
  309. package/node_modules/zod/src/v4/classic/tests/hash.test.ts +1 -2
  310. package/node_modules/zod/src/v4/classic/tests/in-out.test.ts +159 -0
  311. package/node_modules/zod/src/v4/classic/tests/index.test.ts +21 -2
  312. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +281 -0
  313. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +47 -0
  314. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +136 -0
  315. package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +183 -0
  316. package/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +3 -10
  317. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +36 -1
  318. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +12 -1
  319. package/node_modules/zod/src/v4/classic/tests/map.test.ts +12 -0
  320. package/node_modules/zod/src/v4/classic/tests/number.test.ts +46 -9
  321. package/node_modules/zod/src/v4/classic/tests/object.test.ts +245 -12
  322. package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +234 -0
  323. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +49 -16
  324. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +51 -4
  325. package/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +20 -2
  326. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -68
  327. package/node_modules/zod/src/v4/classic/tests/record.test.ts +186 -18
  328. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +33 -2
  329. package/node_modules/zod/src/v4/classic/tests/redos.test.ts +68 -0
  330. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +60 -0
  331. package/node_modules/zod/src/v4/classic/tests/set.test.ts +9 -0
  332. package/node_modules/zod/src/v4/classic/tests/string.test.ts +127 -5
  333. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +18 -0
  334. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +11 -2
  335. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +1585 -173
  336. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +45 -30
  337. package/node_modules/zod/src/v4/classic/tests/union.test.ts +39 -2
  338. package/node_modules/zod/src/v4/classic/tests/validate.test.ts +76 -0
  339. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +2 -2
  340. package/node_modules/zod/src/v4/core/api.ts +48 -12
  341. package/node_modules/zod/src/v4/core/checks.ts +57 -44
  342. package/node_modules/zod/src/v4/core/compile.ts +2188 -0
  343. package/node_modules/zod/src/v4/core/core.ts +98 -19
  344. package/node_modules/zod/src/v4/core/doc.ts +11 -7
  345. package/node_modules/zod/src/v4/core/errors.ts +115 -24
  346. package/node_modules/zod/src/v4/core/index.ts +3 -0
  347. package/node_modules/zod/src/v4/core/json-schema-generator.ts +6 -1
  348. package/node_modules/zod/src/v4/core/json-schema-processors.ts +257 -93
  349. package/node_modules/zod/src/v4/core/json-schema.ts +2 -1
  350. package/node_modules/zod/src/v4/core/memoizer.ts +284 -0
  351. package/node_modules/zod/src/v4/core/parse.ts +131 -38
  352. package/node_modules/zod/src/v4/core/regexes.ts +30 -13
  353. package/node_modules/zod/src/v4/core/registries.ts +2 -2
  354. package/node_modules/zod/src/v4/core/schemas.ts +759 -461
  355. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +969 -0
  356. package/node_modules/zod/src/v4/core/tests/compile-global.test.ts +89 -0
  357. package/node_modules/zod/src/v4/core/tests/compile-off-by-default.test.ts +26 -0
  358. package/node_modules/zod/src/v4/core/tests/compile-stats.test.ts +34 -0
  359. package/node_modules/zod/src/v4/core/tests/compile.test.ts +1639 -0
  360. package/node_modules/zod/src/v4/core/tests/locales/el.test.ts +1 -2
  361. package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +1 -2
  362. package/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +3 -3
  363. package/node_modules/zod/src/v4/core/tests/locales/parity.test.ts +42 -0
  364. package/node_modules/zod/src/v4/core/tests/locales/tk.test.ts +69 -0
  365. package/node_modules/zod/src/v4/core/tests/treeshake.test.ts +51 -0
  366. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +31 -0
  367. package/node_modules/zod/src/v4/core/to-json-schema.ts +275 -42
  368. package/node_modules/zod/src/v4/core/util.ts +268 -42
  369. package/node_modules/zod/src/v4/core/versions.ts +2 -2
  370. package/node_modules/zod/src/v4/core/visit.ts +193 -0
  371. package/node_modules/zod/src/v4/index.ts +3 -3
  372. package/node_modules/zod/src/v4/locales/ar.ts +3 -0
  373. package/node_modules/zod/src/v4/locales/az.ts +3 -0
  374. package/node_modules/zod/src/v4/locales/be.ts +10 -0
  375. package/node_modules/zod/src/v4/locales/bg.ts +3 -0
  376. package/node_modules/zod/src/v4/locales/bn.ts +121 -0
  377. package/node_modules/zod/src/v4/locales/ca.ts +3 -0
  378. package/node_modules/zod/src/v4/locales/ckb.ts +138 -0
  379. package/node_modules/zod/src/v4/locales/cs.ts +3 -0
  380. package/node_modules/zod/src/v4/locales/da.ts +5 -2
  381. package/node_modules/zod/src/v4/locales/de.ts +3 -0
  382. package/node_modules/zod/src/v4/locales/el.ts +1 -0
  383. package/node_modules/zod/src/v4/locales/en.ts +15 -4
  384. package/node_modules/zod/src/v4/locales/eo.ts +3 -0
  385. package/node_modules/zod/src/v4/locales/es.ts +2 -0
  386. package/node_modules/zod/src/v4/locales/fa.ts +3 -0
  387. package/node_modules/zod/src/v4/locales/fi.ts +3 -0
  388. package/node_modules/zod/src/v4/locales/fr-CA.ts +3 -0
  389. package/node_modules/zod/src/v4/locales/fr.ts +19 -14
  390. package/node_modules/zod/src/v4/locales/gu.ts +121 -0
  391. package/node_modules/zod/src/v4/locales/he.ts +6 -1
  392. package/node_modules/zod/src/v4/locales/hi.ts +124 -0
  393. package/node_modules/zod/src/v4/locales/hr.ts +2 -0
  394. package/node_modules/zod/src/v4/locales/hu.ts +3 -0
  395. package/node_modules/zod/src/v4/locales/hy.ts +9 -0
  396. package/node_modules/zod/src/v4/locales/id.ts +3 -0
  397. package/node_modules/zod/src/v4/locales/index.ts +10 -0
  398. package/node_modules/zod/src/v4/locales/is.ts +3 -0
  399. package/node_modules/zod/src/v4/locales/it.ts +3 -0
  400. package/node_modules/zod/src/v4/locales/ja.ts +3 -0
  401. package/node_modules/zod/src/v4/locales/ka.ts +3 -0
  402. package/node_modules/zod/src/v4/locales/km.ts +3 -0
  403. package/node_modules/zod/src/v4/locales/kn.ts +124 -0
  404. package/node_modules/zod/src/v4/locales/ko.ts +3 -0
  405. package/node_modules/zod/src/v4/locales/lt.ts +2 -0
  406. package/node_modules/zod/src/v4/locales/mk.ts +3 -0
  407. package/node_modules/zod/src/v4/locales/ms.ts +3 -0
  408. package/node_modules/zod/src/v4/locales/ne.ts +126 -0
  409. package/node_modules/zod/src/v4/locales/nl.ts +3 -0
  410. package/node_modules/zod/src/v4/locales/nn.ts +119 -0
  411. package/node_modules/zod/src/v4/locales/no.ts +5 -2
  412. package/node_modules/zod/src/v4/locales/ota.ts +3 -0
  413. package/node_modules/zod/src/v4/locales/pl.ts +3 -0
  414. package/node_modules/zod/src/v4/locales/ps.ts +3 -0
  415. package/node_modules/zod/src/v4/locales/pt-BR.ts +159 -0
  416. package/node_modules/zod/src/v4/locales/pt.ts +99 -58
  417. package/node_modules/zod/src/v4/locales/ro.ts +1 -0
  418. package/node_modules/zod/src/v4/locales/ru.ts +10 -0
  419. package/node_modules/zod/src/v4/locales/sk.ts +121 -0
  420. package/node_modules/zod/src/v4/locales/sl.ts +3 -0
  421. package/node_modules/zod/src/v4/locales/sv.ts +5 -2
  422. package/node_modules/zod/src/v4/locales/ta.ts +3 -0
  423. package/node_modules/zod/src/v4/locales/th.ts +3 -0
  424. package/node_modules/zod/src/v4/locales/tk.ts +111 -0
  425. package/node_modules/zod/src/v4/locales/tr.ts +3 -0
  426. package/node_modules/zod/src/v4/locales/uk.ts +3 -0
  427. package/node_modules/zod/src/v4/locales/ur.ts +3 -0
  428. package/node_modules/zod/src/v4/locales/uz.ts +1 -0
  429. package/node_modules/zod/src/v4/locales/vi.ts +3 -0
  430. package/node_modules/zod/src/v4/locales/yo.ts +3 -0
  431. package/node_modules/zod/src/v4/locales/zh-CN.ts +3 -0
  432. package/node_modules/zod/src/v4/locales/zh-TW.ts +3 -0
  433. package/node_modules/zod/src/v4/mini/checks.ts +1 -0
  434. package/node_modules/zod/src/v4/mini/deep-partial.ts +73 -0
  435. package/node_modules/zod/src/v4/mini/external.ts +10 -1
  436. package/node_modules/zod/src/v4/mini/in-out.ts +45 -0
  437. package/node_modules/zod/src/v4/mini/parse.ts +2 -0
  438. package/node_modules/zod/src/v4/mini/schemas.ts +135 -56
  439. package/node_modules/zod/src/v4/mini/tests/apply.test.ts +33 -0
  440. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +62 -1
  441. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +14 -0
  442. package/node_modules/zod/src/v4/mini/tests/codec.test.ts +35 -1
  443. package/node_modules/zod/src/v4/mini/tests/cyclic-data.test.ts +84 -0
  444. package/node_modules/zod/src/v4/mini/tests/deep-partial.test.ts +54 -0
  445. package/node_modules/zod/src/v4/mini/tests/error.test.ts +23 -4
  446. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +9 -0
  447. package/node_modules/zod/src/v4/mini/tests/index.test.ts +72 -5
  448. package/node_modules/zod/src/v4/mini/tests/number.test.ts +14 -0
  449. package/node_modules/zod/src/v4/mini/tests/object.test.ts +65 -0
  450. package/node_modules/zod/src/v4/mini/tests/string.test.ts +21 -0
  451. package/node_modules/zod/v3/ZodError.cjs +22 -12
  452. package/node_modules/zod/v3/ZodError.d.cts +1 -1
  453. package/node_modules/zod/v3/ZodError.d.ts +1 -1
  454. package/node_modules/zod/v3/ZodError.js +22 -12
  455. package/node_modules/zod/v3/types.cjs +7 -5
  456. package/node_modules/zod/v3/types.js +7 -5
  457. package/node_modules/zod/v4/classic/checks.cjs +2 -1
  458. package/node_modules/zod/v4/classic/checks.d.cts +1 -1
  459. package/node_modules/zod/v4/classic/checks.d.ts +1 -1
  460. package/node_modules/zod/v4/classic/checks.js +1 -1
  461. package/node_modules/zod/v4/classic/compat.d.cts +9 -11
  462. package/node_modules/zod/v4/classic/compat.d.ts +9 -11
  463. package/node_modules/zod/v4/classic/deep-partial.cjs +39 -0
  464. package/node_modules/zod/v4/classic/deep-partial.d.cts +14 -0
  465. package/node_modules/zod/v4/classic/deep-partial.d.ts +14 -0
  466. package/node_modules/zod/v4/classic/deep-partial.js +13 -0
  467. package/node_modules/zod/v4/classic/errors.cjs +43 -34
  468. package/node_modules/zod/v4/classic/errors.d.cts +3 -4
  469. package/node_modules/zod/v4/classic/errors.d.ts +3 -4
  470. package/node_modules/zod/v4/classic/errors.js +43 -34
  471. package/node_modules/zod/v4/classic/external.cjs +30 -27
  472. package/node_modules/zod/v4/classic/external.d.cts +5 -2
  473. package/node_modules/zod/v4/classic/external.d.ts +5 -2
  474. package/node_modules/zod/v4/classic/external.js +5 -8
  475. package/node_modules/zod/v4/classic/from-json-schema.cjs +136 -75
  476. package/node_modules/zod/v4/classic/from-json-schema.js +136 -75
  477. package/node_modules/zod/v4/classic/in-out.cjs +63 -0
  478. package/node_modules/zod/v4/classic/in-out.d.cts +8 -0
  479. package/node_modules/zod/v4/classic/in-out.d.ts +8 -0
  480. package/node_modules/zod/v4/classic/in-out.js +36 -0
  481. package/node_modules/zod/v4/classic/index.cjs +2 -2
  482. package/node_modules/zod/v4/classic/index.d.cts +1 -2
  483. package/node_modules/zod/v4/classic/index.d.ts +1 -2
  484. package/node_modules/zod/v4/classic/index.js +2 -2
  485. package/node_modules/zod/v4/classic/iso.cjs +11 -22
  486. package/node_modules/zod/v4/classic/iso.d.cts +2 -17
  487. package/node_modules/zod/v4/classic/iso.d.ts +2 -17
  488. package/node_modules/zod/v4/classic/iso.js +2 -17
  489. package/node_modules/zod/v4/classic/parse.cjs +4 -1
  490. package/node_modules/zod/v4/classic/parse.d.cts +17 -4
  491. package/node_modules/zod/v4/classic/parse.d.ts +17 -4
  492. package/node_modules/zod/v4/classic/parse.js +1 -0
  493. package/node_modules/zod/v4/classic/schemas.cjs +498 -398
  494. package/node_modules/zod/v4/classic/schemas.d.cts +53 -18
  495. package/node_modules/zod/v4/classic/schemas.d.ts +53 -18
  496. package/node_modules/zod/v4/classic/schemas.js +492 -396
  497. package/node_modules/zod/v4/core/api.cjs +23 -4
  498. package/node_modules/zod/v4/core/api.d.cts +13 -9
  499. package/node_modules/zod/v4/core/api.d.ts +13 -9
  500. package/node_modules/zod/v4/core/api.js +21 -4
  501. package/node_modules/zod/v4/core/checks.cjs +37 -31
  502. package/node_modules/zod/v4/core/checks.d.cts +13 -13
  503. package/node_modules/zod/v4/core/checks.d.ts +13 -13
  504. package/node_modules/zod/v4/core/checks.js +37 -31
  505. package/node_modules/zod/v4/core/compile.cjs +1813 -0
  506. package/node_modules/zod/v4/core/compile.d.cts +51 -0
  507. package/node_modules/zod/v4/core/compile.d.ts +51 -0
  508. package/node_modules/zod/v4/core/compile.js +1783 -0
  509. package/node_modules/zod/v4/core/core.cjs +81 -18
  510. package/node_modules/zod/v4/core/core.d.cts +16 -4
  511. package/node_modules/zod/v4/core/core.d.ts +16 -4
  512. package/node_modules/zod/v4/core/core.js +82 -19
  513. package/node_modules/zod/v4/core/doc.cjs +5 -7
  514. package/node_modules/zod/v4/core/doc.d.cts +3 -1
  515. package/node_modules/zod/v4/core/doc.d.ts +3 -1
  516. package/node_modules/zod/v4/core/doc.js +5 -7
  517. package/node_modules/zod/v4/core/errors.cjs +110 -25
  518. package/node_modules/zod/v4/core/errors.d.cts +4 -0
  519. package/node_modules/zod/v4/core/errors.d.ts +4 -0
  520. package/node_modules/zod/v4/core/errors.js +110 -25
  521. package/node_modules/zod/v4/core/index.cjs +5 -1
  522. package/node_modules/zod/v4/core/index.d.cts +3 -0
  523. package/node_modules/zod/v4/core/index.d.ts +3 -0
  524. package/node_modules/zod/v4/core/index.js +3 -0
  525. package/node_modules/zod/v4/core/json-schema-generator.cjs +4 -0
  526. package/node_modules/zod/v4/core/json-schema-generator.d.cts +2 -2
  527. package/node_modules/zod/v4/core/json-schema-generator.d.ts +2 -2
  528. package/node_modules/zod/v4/core/json-schema-generator.js +4 -0
  529. package/node_modules/zod/v4/core/json-schema-processors.cjs +264 -95
  530. package/node_modules/zod/v4/core/json-schema-processors.js +243 -97
  531. package/node_modules/zod/v4/core/json-schema.d.cts +2 -1
  532. package/node_modules/zod/v4/core/json-schema.d.ts +2 -1
  533. package/node_modules/zod/v4/core/memoizer.cjs +272 -0
  534. package/node_modules/zod/v4/core/memoizer.d.cts +15 -0
  535. package/node_modules/zod/v4/core/memoizer.d.ts +15 -0
  536. package/node_modules/zod/v4/core/memoizer.js +265 -0
  537. package/node_modules/zod/v4/core/parse.cjs +96 -34
  538. package/node_modules/zod/v4/core/parse.d.cts +14 -11
  539. package/node_modules/zod/v4/core/parse.d.ts +14 -11
  540. package/node_modules/zod/v4/core/parse.js +94 -33
  541. package/node_modules/zod/v4/core/regexes.cjs +27 -15
  542. package/node_modules/zod/v4/core/regexes.d.cts +2 -0
  543. package/node_modules/zod/v4/core/regexes.d.ts +2 -0
  544. package/node_modules/zod/v4/core/regexes.js +24 -13
  545. package/node_modules/zod/v4/core/registries.js +2 -2
  546. package/node_modules/zod/v4/core/schemas.cjs +537 -326
  547. package/node_modules/zod/v4/core/schemas.d.cts +100 -31
  548. package/node_modules/zod/v4/core/schemas.d.ts +100 -31
  549. package/node_modules/zod/v4/core/schemas.js +526 -325
  550. package/node_modules/zod/v4/core/to-json-schema.cjs +242 -39
  551. package/node_modules/zod/v4/core/to-json-schema.d.cts +42 -3
  552. package/node_modules/zod/v4/core/to-json-schema.d.ts +42 -3
  553. package/node_modules/zod/v4/core/to-json-schema.js +241 -39
  554. package/node_modules/zod/v4/core/util.cjs +212 -31
  555. package/node_modules/zod/v4/core/util.d.cts +58 -1
  556. package/node_modules/zod/v4/core/util.d.ts +58 -1
  557. package/node_modules/zod/v4/core/util.js +202 -30
  558. package/node_modules/zod/v4/core/versions.cjs +2 -2
  559. package/node_modules/zod/v4/core/versions.d.cts +1 -1
  560. package/node_modules/zod/v4/core/versions.d.ts +1 -1
  561. package/node_modules/zod/v4/core/versions.js +2 -2
  562. package/node_modules/zod/v4/core/visit.cjs +195 -0
  563. package/node_modules/zod/v4/core/visit.d.cts +30 -0
  564. package/node_modules/zod/v4/core/visit.d.ts +30 -0
  565. package/node_modules/zod/v4/core/visit.js +169 -0
  566. package/node_modules/zod/v4/index.cjs +15 -5
  567. package/node_modules/zod/v4/index.d.cts +2 -2
  568. package/node_modules/zod/v4/index.d.ts +2 -2
  569. package/node_modules/zod/v4/index.js +3 -2
  570. package/node_modules/zod/v4/locales/ar.cjs +3 -0
  571. package/node_modules/zod/v4/locales/ar.js +3 -0
  572. package/node_modules/zod/v4/locales/az.cjs +3 -0
  573. package/node_modules/zod/v4/locales/az.js +3 -0
  574. package/node_modules/zod/v4/locales/be.cjs +10 -0
  575. package/node_modules/zod/v4/locales/be.js +10 -0
  576. package/node_modules/zod/v4/locales/bg.cjs +3 -0
  577. package/node_modules/zod/v4/locales/bg.js +3 -0
  578. package/node_modules/zod/v4/locales/bn.cjs +138 -0
  579. package/node_modules/zod/v4/locales/bn.d.cts +5 -0
  580. package/node_modules/zod/v4/locales/bn.d.ts +4 -0
  581. package/node_modules/zod/v4/locales/bn.js +111 -0
  582. package/node_modules/zod/v4/locales/ca.cjs +3 -0
  583. package/node_modules/zod/v4/locales/ca.js +3 -0
  584. package/node_modules/zod/v4/locales/ckb.cjs +158 -0
  585. package/node_modules/zod/v4/locales/ckb.d.cts +5 -0
  586. package/node_modules/zod/v4/locales/ckb.d.ts +4 -0
  587. package/node_modules/zod/v4/locales/ckb.js +131 -0
  588. package/node_modules/zod/v4/locales/cs.cjs +3 -0
  589. package/node_modules/zod/v4/locales/cs.js +3 -0
  590. package/node_modules/zod/v4/locales/da.cjs +5 -2
  591. package/node_modules/zod/v4/locales/da.js +5 -2
  592. package/node_modules/zod/v4/locales/de.cjs +3 -0
  593. package/node_modules/zod/v4/locales/de.js +3 -0
  594. package/node_modules/zod/v4/locales/el.cjs +1 -0
  595. package/node_modules/zod/v4/locales/el.js +1 -0
  596. package/node_modules/zod/v4/locales/en.cjs +14 -4
  597. package/node_modules/zod/v4/locales/en.js +14 -4
  598. package/node_modules/zod/v4/locales/eo.cjs +3 -0
  599. package/node_modules/zod/v4/locales/eo.js +3 -0
  600. package/node_modules/zod/v4/locales/es.cjs +2 -0
  601. package/node_modules/zod/v4/locales/es.js +2 -0
  602. package/node_modules/zod/v4/locales/fa.cjs +3 -0
  603. package/node_modules/zod/v4/locales/fa.js +3 -0
  604. package/node_modules/zod/v4/locales/fi.cjs +3 -0
  605. package/node_modules/zod/v4/locales/fi.js +3 -0
  606. package/node_modules/zod/v4/locales/fr-CA.cjs +3 -0
  607. package/node_modules/zod/v4/locales/fr-CA.js +3 -0
  608. package/node_modules/zod/v4/locales/fr.cjs +16 -14
  609. package/node_modules/zod/v4/locales/fr.js +16 -14
  610. package/node_modules/zod/v4/locales/gu.cjs +138 -0
  611. package/node_modules/zod/v4/locales/gu.d.cts +5 -0
  612. package/node_modules/zod/v4/locales/gu.d.ts +4 -0
  613. package/node_modules/zod/v4/locales/gu.js +111 -0
  614. package/node_modules/zod/v4/locales/he.cjs +5 -0
  615. package/node_modules/zod/v4/locales/he.js +5 -0
  616. package/node_modules/zod/v4/locales/hi.cjs +136 -0
  617. package/node_modules/zod/v4/locales/hi.d.cts +5 -0
  618. package/node_modules/zod/v4/locales/hi.d.ts +4 -0
  619. package/node_modules/zod/v4/locales/hi.js +109 -0
  620. package/node_modules/zod/v4/locales/hr.cjs +2 -0
  621. package/node_modules/zod/v4/locales/hr.js +2 -0
  622. package/node_modules/zod/v4/locales/hu.cjs +3 -0
  623. package/node_modules/zod/v4/locales/hu.js +3 -0
  624. package/node_modules/zod/v4/locales/hy.cjs +9 -0
  625. package/node_modules/zod/v4/locales/hy.js +9 -0
  626. package/node_modules/zod/v4/locales/id.cjs +3 -0
  627. package/node_modules/zod/v4/locales/id.js +3 -0
  628. package/node_modules/zod/v4/locales/index.cjs +22 -2
  629. package/node_modules/zod/v4/locales/index.d.cts +10 -0
  630. package/node_modules/zod/v4/locales/index.d.ts +10 -0
  631. package/node_modules/zod/v4/locales/index.js +10 -0
  632. package/node_modules/zod/v4/locales/is.cjs +3 -0
  633. package/node_modules/zod/v4/locales/is.js +3 -0
  634. package/node_modules/zod/v4/locales/it.cjs +3 -0
  635. package/node_modules/zod/v4/locales/it.js +3 -0
  636. package/node_modules/zod/v4/locales/ja.cjs +3 -0
  637. package/node_modules/zod/v4/locales/ja.js +3 -0
  638. package/node_modules/zod/v4/locales/ka.cjs +3 -0
  639. package/node_modules/zod/v4/locales/ka.js +3 -0
  640. package/node_modules/zod/v4/locales/km.cjs +3 -0
  641. package/node_modules/zod/v4/locales/km.js +3 -0
  642. package/node_modules/zod/v4/locales/kn.cjs +141 -0
  643. package/node_modules/zod/v4/locales/kn.d.cts +5 -0
  644. package/node_modules/zod/v4/locales/kn.d.ts +4 -0
  645. package/node_modules/zod/v4/locales/kn.js +114 -0
  646. package/node_modules/zod/v4/locales/ko.cjs +3 -0
  647. package/node_modules/zod/v4/locales/ko.js +3 -0
  648. package/node_modules/zod/v4/locales/lt.cjs +2 -0
  649. package/node_modules/zod/v4/locales/lt.js +2 -0
  650. package/node_modules/zod/v4/locales/mk.cjs +3 -0
  651. package/node_modules/zod/v4/locales/mk.js +3 -0
  652. package/node_modules/zod/v4/locales/ms.cjs +3 -0
  653. package/node_modules/zod/v4/locales/ms.js +3 -0
  654. package/node_modules/zod/v4/locales/ne.cjs +136 -0
  655. package/node_modules/zod/v4/locales/ne.d.cts +5 -0
  656. package/node_modules/zod/v4/locales/ne.d.ts +4 -0
  657. package/node_modules/zod/v4/locales/ne.js +109 -0
  658. package/node_modules/zod/v4/locales/nl.cjs +3 -0
  659. package/node_modules/zod/v4/locales/nl.js +3 -0
  660. package/node_modules/zod/v4/locales/nn.cjs +138 -0
  661. package/node_modules/zod/v4/locales/nn.d.cts +5 -0
  662. package/node_modules/zod/v4/locales/nn.d.ts +4 -0
  663. package/node_modules/zod/v4/locales/nn.js +111 -0
  664. package/node_modules/zod/v4/locales/no.cjs +5 -2
  665. package/node_modules/zod/v4/locales/no.js +5 -2
  666. package/node_modules/zod/v4/locales/ota.cjs +3 -0
  667. package/node_modules/zod/v4/locales/ota.js +3 -0
  668. package/node_modules/zod/v4/locales/pl.cjs +3 -0
  669. package/node_modules/zod/v4/locales/pl.js +3 -0
  670. package/node_modules/zod/v4/locales/ps.cjs +3 -0
  671. package/node_modules/zod/v4/locales/ps.js +3 -0
  672. package/node_modules/zod/v4/locales/pt-BR.cjs +168 -0
  673. package/node_modules/zod/v4/locales/pt-BR.d.cts +5 -0
  674. package/node_modules/zod/v4/locales/pt-BR.d.ts +4 -0
  675. package/node_modules/zod/v4/locales/pt-BR.js +141 -0
  676. package/node_modules/zod/v4/locales/pt.cjs +87 -55
  677. package/node_modules/zod/v4/locales/pt.js +87 -55
  678. package/node_modules/zod/v4/locales/ro.cjs +1 -0
  679. package/node_modules/zod/v4/locales/ro.js +1 -0
  680. package/node_modules/zod/v4/locales/ru.cjs +10 -0
  681. package/node_modules/zod/v4/locales/ru.js +10 -0
  682. package/node_modules/zod/v4/locales/sk.cjs +141 -0
  683. package/node_modules/zod/v4/locales/sk.d.cts +5 -0
  684. package/node_modules/zod/v4/locales/sk.d.ts +4 -0
  685. package/node_modules/zod/v4/locales/sk.js +114 -0
  686. package/node_modules/zod/v4/locales/sl.cjs +3 -0
  687. package/node_modules/zod/v4/locales/sl.js +3 -0
  688. package/node_modules/zod/v4/locales/sv.cjs +5 -2
  689. package/node_modules/zod/v4/locales/sv.js +5 -2
  690. package/node_modules/zod/v4/locales/ta.cjs +3 -0
  691. package/node_modules/zod/v4/locales/ta.js +3 -0
  692. package/node_modules/zod/v4/locales/th.cjs +3 -0
  693. package/node_modules/zod/v4/locales/th.js +3 -0
  694. package/node_modules/zod/v4/locales/tk.cjs +132 -0
  695. package/node_modules/zod/v4/locales/tk.d.cts +5 -0
  696. package/node_modules/zod/v4/locales/tk.d.ts +4 -0
  697. package/node_modules/zod/v4/locales/tk.js +105 -0
  698. package/node_modules/zod/v4/locales/tr.cjs +3 -0
  699. package/node_modules/zod/v4/locales/tr.js +3 -0
  700. package/node_modules/zod/v4/locales/uk.cjs +3 -0
  701. package/node_modules/zod/v4/locales/uk.js +3 -0
  702. package/node_modules/zod/v4/locales/ur.cjs +3 -0
  703. package/node_modules/zod/v4/locales/ur.js +3 -0
  704. package/node_modules/zod/v4/locales/uz.cjs +1 -0
  705. package/node_modules/zod/v4/locales/uz.js +1 -0
  706. package/node_modules/zod/v4/locales/vi.cjs +3 -0
  707. package/node_modules/zod/v4/locales/vi.js +3 -0
  708. package/node_modules/zod/v4/locales/yo.cjs +3 -0
  709. package/node_modules/zod/v4/locales/yo.js +3 -0
  710. package/node_modules/zod/v4/locales/zh-CN.cjs +3 -0
  711. package/node_modules/zod/v4/locales/zh-CN.js +3 -0
  712. package/node_modules/zod/v4/locales/zh-TW.cjs +3 -0
  713. package/node_modules/zod/v4/locales/zh-TW.js +3 -0
  714. package/node_modules/zod/v4/mini/checks.cjs +2 -1
  715. package/node_modules/zod/v4/mini/checks.d.cts +1 -1
  716. package/node_modules/zod/v4/mini/checks.d.ts +1 -1
  717. package/node_modules/zod/v4/mini/checks.js +1 -1
  718. package/node_modules/zod/v4/mini/deep-partial.cjs +39 -0
  719. package/node_modules/zod/v4/mini/deep-partial.d.cts +14 -0
  720. package/node_modules/zod/v4/mini/deep-partial.d.ts +14 -0
  721. package/node_modules/zod/v4/mini/deep-partial.js +13 -0
  722. package/node_modules/zod/v4/mini/external.cjs +12 -1
  723. package/node_modules/zod/v4/mini/external.d.cts +5 -2
  724. package/node_modules/zod/v4/mini/external.d.ts +5 -2
  725. package/node_modules/zod/v4/mini/external.js +3 -1
  726. package/node_modules/zod/v4/mini/in-out.cjs +63 -0
  727. package/node_modules/zod/v4/mini/in-out.d.cts +8 -0
  728. package/node_modules/zod/v4/mini/in-out.d.ts +8 -0
  729. package/node_modules/zod/v4/mini/in-out.js +36 -0
  730. package/node_modules/zod/v4/mini/parse.cjs +3 -1
  731. package/node_modules/zod/v4/mini/parse.d.cts +1 -1
  732. package/node_modules/zod/v4/mini/parse.d.ts +1 -1
  733. package/node_modules/zod/v4/mini/parse.js +1 -1
  734. package/node_modules/zod/v4/mini/schemas.cjs +75 -47
  735. package/node_modules/zod/v4/mini/schemas.d.cts +43 -13
  736. package/node_modules/zod/v4/mini/schemas.d.ts +43 -13
  737. package/node_modules/zod/v4/mini/schemas.js +71 -45
  738. package/openclaw.plugin.json +3 -4
  739. package/package.json +10 -8
  740. package/dist/channel-type-CVLZyGYS.js +0 -7
  741. package/dist/outbound-components-DrlHcWfM.js +0 -100
  742. package/dist/provider.runtime-CqfE-RvC.js +0 -2
  743. package/dist/targets-Cm6aV9nJ.js +0 -3
  744. package/node_modules/discord-api-types/CHANGELOG.md +0 -2514
  745. package/node_modules/discord-api-types/scripts/versions.mjs +0 -46
  746. package/node_modules/zod/src/v4/core/config.ts +0 -15
  747. /package/dist/{accounts-CwJQoLjM.js → .setup/accounts-CwJQoLjM.mjs} +0 -0
  748. /package/dist/{active-turn-thread-route-fmHl1HNd.js → .setup/active-turn-thread-route-fmHl1HNd.mjs} +0 -0
  749. /package/dist/{agent-components.runtime-CEPrf2SY.js → .setup/agent-components.runtime-CEPrf2SY.mjs} +0 -0
  750. /package/dist/{channel-access-C12aDZ0p.js → .setup/channel-access-C12aDZ0p.mjs} +0 -0
  751. /package/dist/{command-deploy-store-DFkBTViB.js → .setup/command-deploy-store-DFkBTViB.mjs} +0 -0
  752. /package/dist/{command-owners-D78sAoOz.js → .setup/command-owners-D78sAoOz.mjs} +0 -0
  753. /package/dist/{doctor-contract-Co5vRCZ6.js → .setup/doctor-contract-Co5vRCZ6.mjs} +0 -0
  754. /package/dist/{message-handler.history-CJOsN9w5.js → .setup/message-handler.history-CJOsN9w5.mjs} +0 -0
  755. /package/dist/{model-picker-preference-primitives-BHT1LkR_.js → .setup/model-picker-preference-primitives-BHT1LkR_.mjs} +0 -0
  756. /package/dist/{preflight-audio-DrnqFA8U.js → .setup/preflight-audio-DrnqFA8U.mjs} +0 -0
  757. /package/dist/{presence-cache-dYSHPWMx.js → .setup/presence-cache-dYSHPWMx.mjs} +0 -0
  758. /package/dist/{runtime-DgnVQ7zW.js → .setup/runtime-DgnVQ7zW.mjs} +0 -0
  759. /package/dist/{secret-config-contract-DFu9hfU8.js → .setup/secret-config-contract-DFu9hfU8.mjs} +0 -0
  760. /package/dist/{security-contract-DSHk7I2w.js → .setup/security-contract-DSHk7I2w.mjs} +0 -0
  761. /package/dist/{security-doctor-nGgPm65L.js → .setup/security-doctor-nGgPm65L.mjs} +0 -0
  762. /package/dist/{session-contract-BO5tlIdl.js → .setup/session-contract-BO5tlIdl.mjs} +0 -0
  763. /package/dist/{session-key-normalization-wJgsKPNF.js → .setup/session-key-normalization-wJgsKPNF.mjs} +0 -0
  764. /package/dist/{thread-binding-api-BDZJD4na.js → .setup/thread-binding-api-BDZJD4na.mjs} +0 -0
  765. /package/dist/{timeouts-D86uWLt_.js → .setup/timeouts-D86uWLt_.mjs} +0 -0
@@ -1,4 +1,4 @@
1
- import { t as isDiscordMutableAllowEntry } from "./security-doctor-nGgPm65L.js";
1
+ import { t as isDiscordMutableAllowEntry } from "./security-doctor-nGgPm65L.mjs";
2
2
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  import { readChannelAllowFromStore } from "openclaw/plugin-sdk/conversation-runtime";
4
4
  import { coerceNativeSetting, normalizeAllowFromList } from "openclaw/plugin-sdk/channel-policy";
@@ -1,2 +1,2 @@
1
- import { t as collectDiscordSecurityAuditFindings } from "./security-audit-DKfK-iPY.js";
1
+ import { t as collectDiscordSecurityAuditFindings } from "./security-audit-s5w50-Ly.mjs";
2
2
  export { collectDiscordSecurityAuditFindings };
@@ -1,17 +1,17 @@
1
- import { At as getGuildMember, Bt as removeGuildMemberRole, Ct as createGuildBan, Dt as createGuildSticker, Et as createGuildScheduledEvent, Ft as listGuildRoles, Ht as __exportAll, It as listGuildScheduledEvents, Lt as moveGuildChannels, Mt as listGuildActiveThreads, Nt as listGuildChannels, Ot as deleteChannelPermission, Pt as listGuildEmojis, Rt as putChannelPermission, S as readRetryAfter, St as addGuildMemberRole, Tt as createGuildEmoji, Vt as timeoutGuildMember, _ as DiscordError, _t as listChannelPins, at as listMessageReactionUsers, b as readDiscordCode, bt as sendChannelTyping, ct as deleteChannel, dt as editChannelMessage, ft as getChannel, gt as listChannelMessages, ht as listChannelArchivedThreads, it as deleteOwnMessageReaction, jt as getGuildVoiceState, kt as getGuild, lt as deleteChannelMessage, pt as getChannelMessage, rt as createOwnMessageReaction, st as createThread, ut as editChannel, v as RateLimitError, vt as pinChannelMessage, wt as createGuildChannel, x as readDiscordMessage, xt as unpinChannelMessage, y as isUnknownDiscordVoiceStateError, yt as searchGuildMessages, zt as removeGuildMember } from "./discord-CmL3ati-.js";
2
- import { C as parseDiscordRetryAfterBodySeconds } from "./allow-list-DWEio925.js";
3
- import { a as recordDiscordMessageCreateAmbiguity, c as createDiscordSendReceiptFromResults, l as createDiscordSendResult, n as classifyDiscordDeliveryFailure, o as chunkDiscordTextWithMode, r as createDiscordRetryRunner } from "./retry-DKeoT7UO.js";
4
- import { C as hasAllGuildPermissionsDiscord, I as resolveDiscordClientAccountContext, K as parseAndResolveChannelRecipient, L as resolveDiscordRest, M as resolveDiscordSuppressEmbeds, N as createDiscordClient, O as createDiscordMessageNonce, R as DISCORD_REST_TIMEOUT_MS, S as fetchMemberGuildPermissionsDiscord, T as hasAnyGuildPermissionDiscord, _ as DiscordSendError, b as canViewDiscordGuildChannel, g as DISCORD_MAX_STICKER_BYTES, h as DISCORD_MAX_EVENT_COVER_BYTES, i as formatReactionEmoji, k as resolveDiscordMessageFlags, l as resolveChannelId, m as DISCORD_MAX_EMOJI_BYTES, n as buildDiscordTextChunks, o as normalizeEmojiName, p as sendDiscordText, r as buildReactionIdentifier, s as normalizeReactionEmoji, t as buildDiscordSendError, v as canManageGuildMemberRoleDiscord, w as hasAnyChannelPermissionDiscord, x as fetchChannelPermissionsDiscord, y as canManageGuildRoleDiscord } from "./send.shared-BHPM3CSl.js";
5
- import { i as prepareDiscordOutboundText, n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-BVTWrl_4.js";
6
- import { n as DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS } from "./timeouts-D86uWLt_.js";
1
+ import { At as getGuild, Bt as removeGuildMember, C as withDiscordRequestAuthority, Ct as addGuildMemberRole, Dt as createGuildScheduledEvent, Et as createGuildEmoji, Ft as listGuildEmojis, Ht as timeoutGuildMember, It as listGuildRoles, Lt as listGuildScheduledEvents, Mt as getGuildVoiceState, Nt as listGuildActiveThreads, Ot as createGuildSticker, Pt as listGuildChannels, Rt as moveGuildChannels, S as readRetryAfter, St as unpinChannelMessage, Tt as createGuildChannel, Ut as __exportAll, Vt as removeGuildMemberRole, _ as DiscordError, _t as listChannelMessages, at as deleteOwnMessageReaction, b as readDiscordCode, bt as searchGuildMessages, ct as createThread, dt as editChannel, ft as editChannelMessage, gt as listChannelArchivedThreads, it as createOwnMessageReaction, jt as getGuildMember, kt as deleteChannelPermission, lt as deleteChannel, mt as getChannelMessage, ot as listMessageReactionUsers, pt as getChannel, ut as deleteChannelMessage, v as RateLimitError, vt as listChannelPins, wt as createGuildBan, x as readDiscordMessage, xt as sendChannelTyping, y as isUnknownDiscordVoiceStateError, yt as pinChannelMessage, zt as putChannelPermission } from "./discord-BXpHW-cu.mjs";
2
+ import { D as resolveDiscordEndpointAttachmentGuard, E as getDiscordEndpointRuntime, w as parseDiscordRetryAfterBodySeconds } from "./channel-type-DKnjV1XW.mjs";
3
+ import { a as recordDiscordMessageCreateAmbiguity, c as createDiscordSendReceiptFromResults, d as createReusableDiscordReplyReference, f as resolveDiscordReplyMessageId, l as createDiscordSendResult, n as classifyDiscordDeliveryFailure, o as chunkDiscordTextWithMode, r as createDiscordRetryRunner } from "./retry-DBfcEgmO.mjs";
4
+ import { C as hasAllGuildPermissionsDiscord, I as resolveDiscordClientAccountContext, K as parseAndResolveChannelRecipient, L as resolveDiscordRest, M as resolveDiscordSuppressEmbeds, N as createDiscordClient, O as createDiscordMessageNonce, R as DISCORD_REST_TIMEOUT_MS, S as fetchMemberGuildPermissionsDiscord, T as hasAnyGuildPermissionDiscord, _ as DiscordSendError, b as canViewDiscordGuildChannel, g as DISCORD_MAX_STICKER_BYTES, h as DISCORD_MAX_EVENT_COVER_BYTES, i as formatReactionEmoji, k as resolveDiscordMessageFlags, l as resolveChannelId, m as DISCORD_MAX_EMOJI_BYTES, n as buildDiscordTextChunks, o as normalizeEmojiName, p as sendDiscordText, r as buildReactionIdentifier, s as normalizeReactionEmoji, t as buildDiscordSendError, v as canManageGuildMemberRoleDiscord, w as hasAnyChannelPermissionDiscord, x as fetchChannelPermissionsDiscord, y as canManageGuildRoleDiscord } from "./send.shared-Zwx6BxQ5.mjs";
5
+ import { i as prepareDiscordOutboundText, n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-D0hQ7s50.mjs";
6
+ import { n as DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS } from "./timeouts-D86uWLt_.mjs";
7
7
  import fs from "node:fs/promises";
8
8
  import { ChannelType } from "discord-api-types/v10";
9
9
  import crypto from "node:crypto";
10
10
  import { parseStrictFiniteNumber, resolveExpiresAtMsFromDurationMs, timestampMsToIsoString } from "openclaw/plugin-sdk/number-runtime";
11
11
  import { expectDefined } from "openclaw/plugin-sdk/expect-runtime";
12
- import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
13
- import { readProviderJsonResponse, readResponseTextLimited } from "openclaw/plugin-sdk/provider-http";
14
12
  import { fetchWithSsrFGuard } from "openclaw/plugin-sdk/ssrf-runtime";
13
+ import { formatErrorMessage as formatErrorMessage$1 } from "openclaw/plugin-sdk/error-runtime";
14
+ import { readProviderJsonResponse, readResponseTextLimited } from "openclaw/plugin-sdk/provider-http";
15
15
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
16
16
  import { recordChannelActivity } from "openclaw/plugin-sdk/channel-activity-runtime";
17
17
  import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
@@ -270,7 +270,7 @@ function describeDiscordThreadInitialMessageFailure(delivery) {
270
270
  }
271
271
  var DiscordThreadInitialMessageError = class extends Error {
272
272
  constructor(thread, error, initialMessageDelivery) {
273
- const initialMessageError = formatErrorMessage(error);
273
+ const initialMessageError = formatErrorMessage$1(error);
274
274
  const initialMessageWarning = describeDiscordThreadInitialMessageFailure(initialMessageDelivery);
275
275
  super(`${initialMessageWarning}: ${initialMessageError}`, { cause: error });
276
276
  this.name = "DiscordThreadInitialMessageError";
@@ -449,19 +449,16 @@ async function sendWebhookMessageDiscord(text, opts) {
449
449
  const webhookId = normalizeOptionalString(opts.webhookId) ?? "";
450
450
  const webhookToken = normalizeOptionalString(opts.webhookToken) ?? "";
451
451
  if (!webhookId || !webhookToken) throw new Error("Discord webhook id/token are required");
452
- const replyTo = normalizeOptionalString(opts.replyTo) ?? "";
453
- const messageReference = replyTo ? {
454
- message_id: replyTo,
455
- fail_if_not_exists: false
456
- } : void 0;
452
+ const reply = typeof opts.replyTo === "string" ? createReusableDiscordReplyReference(normalizeOptionalString(opts.replyTo)) : opts.replyTo;
457
453
  const { account, proxyFetch } = resolveDiscordClientAccountContext({
458
454
  cfg: opts.cfg,
459
455
  accountId: opts.accountId
460
456
  });
461
- const { textWithMentions } = prepareDiscordOutboundText(text, {
457
+ const { textWithMentions, textLimit } = prepareDiscordOutboundText(text, {
462
458
  cfg: opts.cfg,
463
459
  account,
464
- tableMode: opts.tableMode
460
+ tableMode: opts.tableMode,
461
+ textLimit: opts.chunking?.maxChars
465
462
  });
466
463
  const flags = resolveDiscordMessageFlags({ suppressEmbeds: resolveDiscordSuppressEmbeds({ configured: account.config.suppressEmbeds }) });
467
464
  const threadConversationId = opts.threadId == null ? "" : String(opts.threadId).trim();
@@ -471,7 +468,9 @@ async function sendWebhookMessageDiscord(text, opts) {
471
468
  conversationId: threadConversationId,
472
469
  sourceId: webhookId
473
470
  });
474
- const url = new URL(`https://discord.com/api/v10/webhooks/${encodeURIComponent(webhookId)}/${encodeURIComponent(webhookToken)}`);
471
+ const endpoint = getDiscordEndpointRuntime();
472
+ const restApiBaseUrl = endpoint?.descriptor.restApiBaseUrl ?? "https://discord.com/api/v10";
473
+ const url = new URL(`${restApiBaseUrl}/webhooks/${encodeURIComponent(webhookId)}/${encodeURIComponent(webhookToken)}`);
475
474
  url.searchParams.set("wait", opts.wait === false ? "false" : "true");
476
475
  if (opts.threadId != null && opts.threadId !== "") url.searchParams.set("thread_id", String(opts.threadId));
477
476
  const deadline = buildTimeoutAbortSignal({
@@ -479,14 +478,22 @@ async function sendWebhookMessageDiscord(text, opts) {
479
478
  operation: "discord.webhook.send"
480
479
  });
481
480
  const request = createDiscordRetryRunner({ signal: deadline.signal });
482
- const chunks = chunkDiscordTextWithMode(textWithMentions, { maxLines: Number.MAX_SAFE_INTEGER });
481
+ const chunks = chunkDiscordTextWithMode(textWithMentions, {
482
+ maxChars: textLimit,
483
+ maxLines: opts.chunking ? opts.chunking.maxLines ?? account.config.maxLinesPerMessage : Number.MAX_SAFE_INTEGER
484
+ });
483
485
  const results = [];
484
486
  try {
485
487
  for (const content of chunks.length ? chunks : [""]) {
488
+ const replyTo = resolveDiscordReplyMessageId(reply, results.length === 0);
489
+ const messageReference = replyTo ? {
490
+ message_id: replyTo,
491
+ fail_if_not_exists: false
492
+ } : void 0;
486
493
  const response = await request(async () => {
487
494
  await opts.onPlatformSendDispatch?.();
488
495
  opts.assertPlatformSendAuthorized?.();
489
- const attemptResponse = await (proxyFetch ?? fetch)(url.toString(), {
496
+ const attemptResponse = await (endpoint?.fetch ?? proxyFetch ?? fetch)(url.toString(), {
490
497
  method: "POST",
491
498
  headers: { "content-type": "application/json" },
492
499
  body: JSON.stringify({
@@ -517,7 +524,7 @@ async function sendWebhookMessageDiscord(text, opts) {
517
524
  fallbackChannelId: opts.threadId ? String(opts.threadId) : "",
518
525
  kind: "text",
519
526
  ...opts.threadId != null ? { threadId: opts.threadId } : {},
520
- ...replyTo ? { replyToId: replyTo } : {}
527
+ reply: createReusableDiscordReplyReference(replyTo)
521
528
  });
522
529
  const resultConversationId = result.channelId.trim();
523
530
  if (result.messageId && resultConversationId) recordOutboundMessageIdentity({
@@ -595,7 +602,7 @@ async function getAudioDuration(filePath) {
595
602
  if (duration === void 0) throw new Error("Could not parse duration");
596
603
  return Math.round(duration * 100) / 100;
597
604
  } catch (err) {
598
- const errMessage = formatErrorMessage(err);
605
+ const errMessage = formatErrorMessage$1(err);
599
606
  throw new Error(`Failed to get audio duration: ${errMessage}`, { cause: err });
600
607
  }
601
608
  }
@@ -726,14 +733,18 @@ async function ensureOggOpus(filePath) {
726
733
  };
727
734
  }
728
735
  /**
729
- * Get voice message metadata (duration and waveform)
736
+ * Wait for waveform cleanup before callers can release the audio input.
730
737
  */
731
738
  async function getVoiceMessageMetadata(filePath) {
732
- const [durationSecs, waveform] = await Promise.all([getAudioDuration(filePath), generateWaveform(filePath)]);
733
- return {
734
- durationSecs,
735
- waveform
736
- };
739
+ const waveform = generateWaveform(filePath);
740
+ try {
741
+ return {
742
+ durationSecs: await getAudioDuration(filePath),
743
+ waveform: await waveform
744
+ };
745
+ } finally {
746
+ await waveform;
747
+ }
737
748
  }
738
749
  function coerceDiscordErrorBody(raw) {
739
750
  if (!raw) return;
@@ -753,7 +764,8 @@ async function createVoiceRequestError(response, fallbackMessage) {
753
764
  return new DiscordError(response, parsed ?? { message: fallbackMessage });
754
765
  }
755
766
  async function requestVoiceUploadUrl(params) {
756
- const url = `${params.rest.options?.baseUrl ?? "https://discord.com/api"}/channels/${params.channelId}/attachments`;
767
+ const endpoint = params.endpointRuntime;
768
+ const url = `${endpoint?.descriptor.restApiBaseUrl ?? params.rest.options?.baseUrl ?? "https://discord.com/api"}/channels/${params.channelId}/attachments`;
757
769
  const uploadUrlInit = {
758
770
  method: "POST",
759
771
  headers: {
@@ -766,7 +778,13 @@ async function requestVoiceUploadUrl(params) {
766
778
  id: "0"
767
779
  }] })
768
780
  };
769
- const { response: res, release } = await fetchWithSsrFGuard({
781
+ const { response: res, release } = endpoint ? {
782
+ response: await endpoint.fetch(url, {
783
+ ...uploadUrlInit,
784
+ signal: AbortSignal.timeout(params.rest.options.timeout)
785
+ }),
786
+ release: async () => {}
787
+ } : await fetchWithSsrFGuard({
770
788
  url,
771
789
  init: uploadUrlInit,
772
790
  timeoutMs: params.rest.options.timeout,
@@ -781,6 +799,7 @@ async function requestVoiceUploadUrl(params) {
781
799
  }
782
800
  }
783
801
  async function uploadVoiceAttachment(params) {
802
+ const endpointGuard = resolveDiscordEndpointAttachmentGuard(params.uploadUrl, params.endpointRuntime);
784
803
  const { response: uploadResponse, release } = await fetchWithSsrFGuard({
785
804
  url: params.uploadUrl,
786
805
  init: {
@@ -789,7 +808,11 @@ async function uploadVoiceAttachment(params) {
789
808
  body: new Uint8Array(params.audioBuffer)
790
809
  },
791
810
  timeoutMs: DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS,
792
- policy: DISCORD_VOICE_UPLOAD_SSRF_POLICY,
811
+ policy: endpointGuard?.policy ?? DISCORD_VOICE_UPLOAD_SSRF_POLICY,
812
+ ...endpointGuard ? {
813
+ maxRedirects: endpointGuard.maxRedirects,
814
+ requireHttps: endpointGuard.requireHttps
815
+ } : {},
793
816
  auditContext: "discord.voice.attachment-upload"
794
817
  });
795
818
  try {
@@ -810,11 +833,13 @@ async function uploadVoiceAttachment(params) {
810
833
  async function sendDiscordVoiceMessage(rest, channelId, audioBuffer, metadata, replyTo, request, silent, token, onPlatformSendDispatch, assertPlatformSendAuthorized) {
811
834
  const filename = "voice-message.ogg";
812
835
  const fileSize = audioBuffer.byteLength;
836
+ const endpointRuntime = getDiscordEndpointRuntime() ?? null;
813
837
  const botToken = token;
814
838
  if (!botToken) throw new Error("Discord bot token is required for voice message upload");
815
839
  const { upload_filename } = await request(async () => {
816
840
  const uploadUrlResponse = await requestVoiceUploadUrl({
817
841
  rest,
842
+ endpointRuntime,
818
843
  channelId,
819
844
  botToken,
820
845
  filename,
@@ -824,7 +849,8 @@ async function sendDiscordVoiceMessage(rest, channelId, audioBuffer, metadata, r
824
849
  const attachment = uploadUrlResponse.attachments[0];
825
850
  await uploadVoiceAttachment({
826
851
  uploadUrl: attachment.upload_url,
827
- audioBuffer
852
+ audioBuffer,
853
+ endpointRuntime
828
854
  });
829
855
  return attachment;
830
856
  }, "voice-upload");
@@ -897,6 +923,9 @@ async function withMaterializedVoiceMessageInput(mediaUrl, opts, run) {
897
923
  * @param opts - Send options
898
924
  */
899
925
  async function sendVoiceMessageDiscord(to, audioPath, opts) {
926
+ return await withDiscordRequestAuthority(opts.assertPlatformSendAuthorized, () => sendVoiceMessageDiscordInternal(to, audioPath, opts));
927
+ }
928
+ async function sendVoiceMessageDiscordInternal(to, audioPath, opts) {
900
929
  const cfg = requireRuntimeConfig(opts.cfg, "Discord voice send");
901
930
  return await withMaterializedVoiceMessageInput(audioPath, opts, async (localInputPath) => {
902
931
  let oggPath = null;
@@ -1,32 +1,34 @@
1
- import { Ht as __exportAll, dt as editChannelMessage, k as serializePayload, ot as createChannelMessage } from "./discord-CmL3ati-.js";
2
- import { d as buildDiscordComponentMessage, f as buildDiscordComponentMessageFlags, g as resolveDiscordComponentAttachmentName } from "./components-DBFTIN6P.js";
3
- import { n as getOptionalDiscordRuntime } from "./runtime-DgnVQ7zW.js";
4
- import { l as createDiscordSendResult } from "./retry-DKeoT7UO.js";
5
- import { E as SUPPRESS_NOTIFICATIONS_FLAG, K as parseAndResolveChannelRecipient, N as createDiscordClient, O as createDiscordMessageNonce, l as resolveChannelId, t as buildDiscordSendError, u as resolveDiscordChannel } from "./send.shared-BHPM3CSl.js";
6
- import { t as sendMessageDiscord } from "./send.outbound-BVTWrl_4.js";
1
+ import { A as serializePayload, C as withDiscordRequestAuthority, Ut as __exportAll, ft as editChannelMessage, st as createChannelMessage } from "./discord-BXpHW-cu.mjs";
2
+ import { d as buildDiscordComponentMessage, f as buildDiscordComponentMessageFlags, g as resolveDiscordComponentAttachmentName } from "./components-MqMWUWnE.mjs";
3
+ import { n as getOptionalDiscordRuntime } from "./runtime-DgnVQ7zW.mjs";
4
+ import { l as createDiscordSendResult } from "./retry-DBfcEgmO.mjs";
5
+ import { E as SUPPRESS_NOTIFICATIONS_FLAG, K as parseAndResolveChannelRecipient, N as createDiscordClient, O as createDiscordMessageNonce, l as resolveChannelId, t as buildDiscordSendError, u as resolveDiscordChannel } from "./send.shared-Zwx6BxQ5.mjs";
6
+ import { t as sendMessageDiscord } from "./send.outbound-D0hQ7s50.mjs";
7
7
  import { ChannelType } from "discord-api-types/v10";
8
8
  import { asDateTimestampMs, isFutureDateTimestampMs, resolveDateTimestampMs, resolveExpiresAtMsFromDurationMs } from "openclaw/plugin-sdk/number-runtime";
9
+ import { resolveGlobalSingleton } from "openclaw/plugin-sdk/global-singleton";
9
10
  import { hasNonEmptyString, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
10
11
  import { recordChannelActivity } from "openclaw/plugin-sdk/channel-activity-runtime";
11
12
  import { extensionForMime } from "openclaw/plugin-sdk/media-mime";
12
13
  import { loadOutboundMediaFromUrl } from "openclaw/plugin-sdk/outbound-media";
13
14
  import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
14
15
  import { createPluginStateErrorReporter } from "openclaw/plugin-sdk/plugin-state-runtime";
15
- import { resolveGlobalSingleton } from "openclaw/plugin-sdk/global-singleton";
16
+ import { createAsyncLock } from "openclaw/plugin-sdk/async-lock-runtime";
16
17
  //#region extensions/discord/src/components-registry-state.ts
17
18
  const discordComponentRegistryState = resolveGlobalSingleton(Symbol.for("openclaw.discord.componentRegistryState"), () => ({
19
+ withRegistryLock: createAsyncLock(),
18
20
  componentEntries: /* @__PURE__ */ new Map(),
19
21
  modalEntries: /* @__PURE__ */ new Map(),
20
22
  persistentComponentStore: void 0,
21
23
  persistentModalStore: void 0,
22
24
  persistentRegistryDisabled: false
23
- }), (state) => {
25
+ }), (state) => state.withRegistryLock(async () => {
24
26
  state.componentEntries.clear();
25
27
  state.modalEntries.clear();
26
28
  state.persistentComponentStore = void 0;
27
29
  state.persistentModalStore = void 0;
28
30
  state.persistentRegistryDisabled = false;
29
- });
31
+ }));
30
32
  //#endregion
31
33
  //#region extensions/discord/src/components-registry.ts
32
34
  const DEFAULT_COMPONENT_TTL_MS = 18e5;
@@ -130,14 +132,13 @@ function pruneUndefinedRegistryValues(value) {
130
132
  }
131
133
  return result;
132
134
  }
133
- function registerEntries(entries, store, params) {
135
+ function normalizeRegistryEntries(entries, params) {
134
136
  const normalizedEntries = [];
135
137
  for (const entry of entries) {
136
138
  const normalized = normalizeEntryTimestamps({
137
139
  ...entry,
138
140
  messageId: params.messageId ?? entry.messageId
139
141
  }, params.now, params.ttlMs);
140
- store.set(entry.id, normalized);
141
142
  normalizedEntries.push(normalized);
142
143
  }
143
144
  return normalizedEntries;
@@ -156,34 +157,41 @@ function readPersistedRegistryEntry(persisted) {
156
157
  if (persisted?.version !== 1 || typeof persisted.entry?.id !== "string") return null;
157
158
  return persisted.entry;
158
159
  }
159
- function registerPersistentRegistryEntries(params) {
160
+ async function registerPersistentRegistryEntries(params) {
160
161
  if (params.entries.length === 0) return;
161
162
  const store = params.openStore();
162
163
  if (!store) return;
163
- for (const entry of params.entries) {
164
- const persistedEntry = pruneUndefinedRegistryValues(entry);
165
- store.register(entry.id, {
166
- version: 1,
167
- entry: persistedEntry
168
- }, { ttlMs: params.ttlMs }).catch(disablePersistentComponentRegistry);
169
- }
170
- }
171
- function registerPersistentEntries(params) {
172
- registerPersistentRegistryEntries({
164
+ await Promise.all(params.entries.map(async (entry) => {
165
+ try {
166
+ const persistedEntry = pruneUndefinedRegistryValues(entry);
167
+ await store.register(entry.id, {
168
+ version: 1,
169
+ entry: persistedEntry
170
+ }, { ttlMs: params.ttlMs });
171
+ } catch (error) {
172
+ disablePersistentComponentRegistry(error);
173
+ }
174
+ }));
175
+ }
176
+ async function registerPersistentEntries(params) {
177
+ await Promise.all([registerPersistentRegistryEntries({
173
178
  entries: params.entries,
174
179
  ttlMs: params.ttlMs,
175
180
  openStore: getPersistentComponentStore
176
- });
177
- registerPersistentRegistryEntries({
181
+ }), registerPersistentRegistryEntries({
178
182
  entries: params.modals,
179
183
  ttlMs: params.ttlMs,
180
184
  openStore: getPersistentModalStore
181
- });
185
+ })]);
182
186
  }
183
- function deletePersistentEntry(params) {
187
+ async function deletePersistentEntry(params) {
184
188
  const store = params.openStore();
185
189
  if (!store) return;
186
- store.delete(params.id).catch(disablePersistentComponentRegistry);
190
+ try {
191
+ await store.delete(params.id);
192
+ } catch (error) {
193
+ disablePersistentComponentRegistry(error);
194
+ }
187
195
  }
188
196
  function resolveComponentConsumptionIds(entry) {
189
197
  if (!entry.consumptionGroupId) return [entry.id];
@@ -194,10 +202,11 @@ function deleteComponentConsumptionGroup(entry) {
194
202
  const store = getComponentEntries();
195
203
  for (const id of resolveComponentConsumptionIds(entry)) store.delete(id);
196
204
  }
197
- function deletePersistentComponentConsumptionGroup(entry) {
198
- const store = getPersistentComponentStore();
199
- if (!store) return;
200
- for (const id of resolveComponentConsumptionIds(entry)) store.delete(id).catch(disablePersistentComponentRegistry);
205
+ async function deletePersistentComponentConsumptionGroup(entry) {
206
+ await Promise.all(resolveComponentConsumptionIds(entry).map((id) => deletePersistentEntry({
207
+ id,
208
+ openStore: getPersistentComponentStore
209
+ })));
201
210
  }
202
211
  async function resolvePersistentRegistryEntry(params) {
203
212
  const store = params.openStore();
@@ -212,18 +221,24 @@ async function resolvePersistentRegistryEntry(params) {
212
221
  function registerDiscordComponentEntries(params) {
213
222
  const now = Date.now();
214
223
  const ttlMs = params.ttlMs ?? DEFAULT_COMPONENT_TTL_MS;
215
- registerPersistentEntries({
216
- entries: registerEntries(params.entries, getComponentEntries(), {
217
- now,
218
- ttlMs,
219
- messageId: params.messageId
220
- }),
221
- modals: registerEntries(params.modals, getModalEntries(), {
222
- now,
223
- ttlMs,
224
- messageId: params.messageId
225
- }),
226
- ttlMs
224
+ const normalizedEntries = normalizeRegistryEntries(params.entries, {
225
+ now,
226
+ ttlMs,
227
+ messageId: params.messageId
228
+ });
229
+ const normalizedModals = normalizeRegistryEntries(params.modals, {
230
+ now,
231
+ ttlMs,
232
+ messageId: params.messageId
233
+ });
234
+ return discordComponentRegistryState.withRegistryLock(async () => {
235
+ for (const entry of normalizedEntries) getComponentEntries().set(entry.id, entry);
236
+ for (const entry of normalizedModals) getModalEntries().set(entry.id, entry);
237
+ await registerPersistentEntries({
238
+ entries: normalizedEntries,
239
+ modals: normalizedModals,
240
+ ttlMs
241
+ });
227
242
  });
228
243
  }
229
244
  function resolveDiscordComponentEntry(params) {
@@ -232,33 +247,37 @@ function resolveDiscordComponentEntry(params) {
232
247
  return entry;
233
248
  }
234
249
  async function resolveDiscordComponentEntryWithPersistence(params) {
235
- const inMemory = resolveDiscordComponentEntry(params);
236
- if (inMemory) {
237
- if (params.consume !== false) deletePersistentComponentConsumptionGroup(inMemory);
238
- return inMemory;
239
- }
240
- const persisted = await resolvePersistentRegistryEntry({
241
- ...params,
242
- openStore: getPersistentComponentStore
250
+ return discordComponentRegistryState.withRegistryLock(async () => {
251
+ const inMemory = resolveDiscordComponentEntry(params);
252
+ if (inMemory) {
253
+ if (params.consume !== false) await deletePersistentComponentConsumptionGroup(inMemory);
254
+ return inMemory;
255
+ }
256
+ const persisted = await resolvePersistentRegistryEntry({
257
+ ...params,
258
+ openStore: getPersistentComponentStore
259
+ });
260
+ if (persisted && params.consume !== false) await deletePersistentComponentConsumptionGroup(persisted);
261
+ return persisted;
243
262
  });
244
- if (persisted && params.consume !== false) deletePersistentComponentConsumptionGroup(persisted);
245
- return persisted;
246
263
  }
247
264
  function resolveDiscordModalEntry(params) {
248
265
  return resolveEntry(getModalEntries(), params);
249
266
  }
250
267
  async function resolveDiscordModalEntryWithPersistence(params) {
251
- const inMemory = resolveDiscordModalEntry(params);
252
- if (inMemory) {
253
- if (params.consume !== false) deletePersistentEntry({
268
+ return discordComponentRegistryState.withRegistryLock(async () => {
269
+ const inMemory = resolveDiscordModalEntry(params);
270
+ if (inMemory) {
271
+ if (params.consume !== false) await deletePersistentEntry({
272
+ ...params,
273
+ openStore: getPersistentModalStore
274
+ });
275
+ return inMemory;
276
+ }
277
+ return await resolvePersistentRegistryEntry({
254
278
  ...params,
255
279
  openStore: getPersistentModalStore
256
280
  });
257
- return inMemory;
258
- }
259
- return await resolvePersistentRegistryEntry({
260
- ...params,
261
- openStore: getPersistentModalStore
262
281
  });
263
282
  }
264
283
  //#endregion
@@ -304,7 +323,7 @@ function resolveClassicDiscordMessage(spec) {
304
323
  };
305
324
  }
306
325
  function registerBuiltDiscordComponentMessage(params) {
307
- registerDiscordComponentEntries({
326
+ return registerDiscordComponentEntries({
308
327
  entries: params.buildResult.entries,
309
328
  modals: params.buildResult.modals,
310
329
  messageId: params.messageId,
@@ -368,6 +387,9 @@ async function buildDiscordComponentPayload(params) {
368
387
  };
369
388
  }
370
389
  async function sendDiscordComponentMessage(to, spec, opts) {
390
+ return await withDiscordRequestAuthority(opts.assertPlatformSendAuthorized, () => sendDiscordComponentMessageInternal(to, spec, opts));
391
+ }
392
+ async function sendDiscordComponentMessageInternal(to, spec, opts) {
371
393
  const classicMessage = opts.mediaUrl ? resolveClassicDiscordMessage(spec) : void 0;
372
394
  if (classicMessage) return await sendMessageDiscord(to, classicMessage.text, {
373
395
  cfg: opts.cfg,
@@ -432,7 +454,7 @@ async function sendDiscordComponentMessage(to, spec, opts) {
432
454
  ...opts.reply ? { reply: opts.reply } : {}
433
455
  });
434
456
  await opts.onDeliveryResult?.(deliveryResult);
435
- registerBuiltDiscordComponentMessage({
457
+ await registerBuiltDiscordComponentMessage({
436
458
  buildResult,
437
459
  messageId: result.id,
438
460
  ttlMs: resolveDiscordComponentRegistryTtlMs(accountInfo.config)
@@ -469,7 +491,7 @@ async function editDiscordComponentMessage(to, messageId, spec, opts) {
469
491
  hasMedia: Boolean(opts.mediaUrl)
470
492
  });
471
493
  }
472
- registerBuiltDiscordComponentMessage({
494
+ await registerBuiltDiscordComponentMessage({
473
495
  buildResult,
474
496
  messageId: result.id ?? messageId,
475
497
  ttlMs: resolveDiscordComponentRegistryTtlMs(accountInfo.config)
@@ -490,4 +512,4 @@ async function editDiscordComponentMessage(to, messageId, spec, opts) {
490
512
  });
491
513
  }
492
514
  //#endregion
493
- export { resolveDiscordComponentEntryWithPersistence as a, send_components_exports as i, registerBuiltDiscordComponentMessage as n, resolveDiscordModalEntryWithPersistence as o, sendDiscordComponentMessage as r, editDiscordComponentMessage as t };
515
+ export { registerDiscordComponentEntries as a, send_components_exports as i, registerBuiltDiscordComponentMessage as n, resolveDiscordComponentEntryWithPersistence as o, sendDiscordComponentMessage as r, resolveDiscordModalEntryWithPersistence as s, editDiscordComponentMessage as t };
@@ -1,7 +1,7 @@
1
- import { ot as createChannelMessage, st as createThread } from "./discord-CmL3ati-.js";
2
- import { i as normalizeDiscordHandleKey, o as resolveDiscordDirectoryUserId } from "./directory-live-C5o1uKlw.js";
3
- import { c as createDiscordSendReceiptFromResults, d as createReusableDiscordReplyReference, l as createDiscordSendResult } from "./retry-DKeoT7UO.js";
4
- import { A as resolveDiscordSendComponents, D as buildDiscordMessageRequest, K as parseAndResolveChannelRecipient, M as resolveDiscordSuppressEmbeds, N as createDiscordClient, O as createDiscordMessageNonce, a as normalizeDiscordPollInput, c as normalizeStickerIds, f as sendDiscordMedia, j as resolveDiscordSendEmbeds, k as resolveDiscordMessageFlags, l as resolveChannelId, n as buildDiscordTextChunks, p as sendDiscordText, t as buildDiscordSendError, u as resolveDiscordChannel } from "./send.shared-BHPM3CSl.js";
1
+ import { C as withDiscordRequestAuthority, ct as createThread, st as createChannelMessage } from "./discord-BXpHW-cu.mjs";
2
+ import { i as normalizeDiscordHandleKey, o as resolveDiscordDirectoryUserId } from "./directory-live--EGTH0DC.mjs";
3
+ import { c as createDiscordSendReceiptFromResults, d as createReusableDiscordReplyReference, l as createDiscordSendResult } from "./retry-DBfcEgmO.mjs";
4
+ import { A as resolveDiscordSendComponents, D as buildDiscordMessageRequest, K as parseAndResolveChannelRecipient, M as resolveDiscordSuppressEmbeds, N as createDiscordClient, O as createDiscordMessageNonce, a as normalizeDiscordPollInput, c as normalizeStickerIds, f as sendDiscordMedia, j as resolveDiscordSendEmbeds, k as resolveDiscordMessageFlags, l as resolveChannelId, n as buildDiscordTextChunks, p as sendDiscordText, t as buildDiscordSendError, u as resolveDiscordChannel } from "./send.shared-Zwx6BxQ5.mjs";
5
5
  import { ChannelType } from "discord-api-types/v10";
6
6
  import { expectDefined } from "openclaw/plugin-sdk/expect-runtime";
7
7
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -382,6 +382,7 @@ function prepareDiscordOutboundText(text, params) {
382
382
  }));
383
383
  return {
384
384
  renderedText,
385
+ textLimit: typeof params.textLimit === "number" && Number.isFinite(params.textLimit) ? Math.max(1, Math.min(Math.floor(params.textLimit), 2e3)) : void 0,
385
386
  textWithMentions: rewriteDiscordKnownMentions(renderedText, {
386
387
  accountId: account.accountId,
387
388
  mentionAliases: account.config.mentionAliases
@@ -447,6 +448,9 @@ async function resolveDiscordSendTarget(to, opts) {
447
448
  };
448
449
  }
449
450
  async function sendMessageDiscord(to, text, opts) {
451
+ return await withDiscordRequestAuthority(opts.assertPlatformSendAuthorized, () => sendMessageDiscordInternal(to, text, opts));
452
+ }
453
+ async function sendMessageDiscordInternal(to, text, opts) {
450
454
  const cfg = requireRuntimeConfig(opts.cfg, "Discord send");
451
455
  const { token, rest, request, account: accountInfo } = createDiscordClient({
452
456
  ...opts,
@@ -458,12 +462,12 @@ async function sendMessageDiscord(to, text, opts) {
458
462
  configured: accountInfo.config.suppressEmbeds,
459
463
  override: opts.suppressEmbeds
460
464
  });
461
- const textLimit = typeof opts.textLimit === "number" && Number.isFinite(opts.textLimit) ? Math.max(1, Math.min(Math.floor(opts.textLimit), 2e3)) : void 0;
462
465
  const mediaMaxBytes = typeof accountInfo.config.mediaMaxMb === "number" ? accountInfo.config.mediaMaxMb * 1024 * 1024 : DEFAULT_DISCORD_MEDIA_MAX_MB * 1024 * 1024;
463
- const { renderedText, textWithMentions } = prepareDiscordOutboundText(text ?? "", {
466
+ const { renderedText, textWithMentions, textLimit } = prepareDiscordOutboundText(text ?? "", {
464
467
  cfg,
465
468
  account: accountInfo,
466
- tableMode: opts.tableMode
469
+ tableMode: opts.tableMode,
470
+ textLimit: opts.textLimit
467
471
  });
468
472
  const recipient = await parseAndResolveChannelRecipient(to, cfg, accountInfo.accountId);
469
473
  const { channelId } = await resolveChannelId(rest, recipient, request);
@@ -683,6 +687,9 @@ async function sendMessageDiscord(to, text, opts) {
683
687
  };
684
688
  }
685
689
  async function sendStickerDiscord(to, stickerIds, opts) {
690
+ return await withDiscordRequestAuthority(opts.assertPlatformSendAuthorized, () => sendStickerDiscordInternal(to, stickerIds, opts));
691
+ }
692
+ async function sendStickerDiscordInternal(to, stickerIds, opts) {
686
693
  const context = await resolveDiscordStructuredSendContext(to, opts);
687
694
  const { rewrittenContent, suppressEmbeds } = context;
688
695
  const stickers = normalizeStickerIds(stickerIds);
@@ -700,6 +707,9 @@ async function sendStickerDiscord(to, stickerIds, opts) {
700
707
  return context.send("sticker", body);
701
708
  }
702
709
  async function sendPollDiscord(to, poll, opts) {
710
+ return await withDiscordRequestAuthority(opts.assertPlatformSendAuthorized, () => sendPollDiscordInternal(to, poll, opts));
711
+ }
712
+ async function sendPollDiscordInternal(to, poll, opts) {
703
713
  const context = await resolveDiscordStructuredSendContext(to, opts);
704
714
  const { rewrittenContent, suppressEmbeds } = context;
705
715
  if (poll.durationSeconds !== void 0) throw new Error("Discord polls do not support durationSeconds; use durationHours");
@@ -1,15 +1,15 @@
1
- import { A as Embed, At as getGuildMember, O as hasDiscordV2Components, ft as getChannel, g as RequestClient, k as serializePayload, kt as getGuild, mt as getThreadMember, nt as getCurrentUser, ot as createChannelMessage, tt as createUserDmChannel } from "./discord-CmL3ati-.js";
2
- import { c as resolveDiscordAccount, m as normalizeDiscordToken, o as mergeDiscordAccountConfig } from "./accounts-CwJQoLjM.js";
3
- import { f as resolveDiscordReplyMessageId, o as chunkDiscordTextWithMode, r as createDiscordRetryRunner } from "./retry-DKeoT7UO.js";
4
- import { t as parseAndResolveDiscordTarget } from "./target-resolver-CoFQ7iSX.js";
5
- import { t as isDiscordThreadChannelType } from "./channel-type-CVLZyGYS.js";
1
+ import { A as serializePayload, At as getGuild, g as RequestClient, ht as getThreadMember, j as Embed, jt as getGuildMember, k as hasDiscordV2Components, nt as createUserDmChannel, pt as getChannel, rt as getCurrentUser, st as createChannelMessage } from "./discord-BXpHW-cu.mjs";
2
+ import { t as isDiscordThreadChannelType } from "./channel-type-DKnjV1XW.mjs";
3
+ import { c as resolveDiscordAccount, m as normalizeDiscordToken, o as mergeDiscordAccountConfig } from "./accounts-CwJQoLjM.mjs";
4
+ import { f as resolveDiscordReplyMessageId, o as chunkDiscordTextWithMode, r as createDiscordRetryRunner } from "./retry-DBfcEgmO.mjs";
5
+ import { t as parseAndResolveDiscordTarget } from "./target-resolver-B6MrxbYv.mjs";
6
6
  import { ChannelType, MessageFlags, PermissionFlagsBits } from "discord-api-types/v10";
7
7
  import { randomBytes } from "node:crypto";
8
+ import { makeProxyFetch } from "openclaw/plugin-sdk/fetch-runtime";
8
9
  import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
9
10
  import { normalizeOptionalString, normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
10
11
  import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
11
12
  import { resolveTextChunksWithFallback } from "openclaw/plugin-sdk/reply-payload";
12
- import { makeProxyFetch } from "openclaw/plugin-sdk/fetch-runtime";
13
13
  import { danger } from "openclaw/plugin-sdk/runtime-env";
14
14
  import { PollLayoutType } from "discord-api-types/payloads/v10";
15
15
  import { buildOutboundMediaLoadOptions, extensionForMime, normalizePollDurationHours, normalizePollInput } from "openclaw/plugin-sdk/media-runtime";
@@ -474,7 +474,9 @@ async function fetchChannelPermissionsDiscord(channelId, opts) {
474
474
  const channel = await getChannel(rest, channelId);
475
475
  opts.signal?.throwIfAborted();
476
476
  const channelType = "type" in channel ? channel.type : void 0;
477
- const guildId = "guild_id" in channel ? channel.guild_id : void 0;
477
+ const permissionChannel = await resolveChannelPermissionSubject(rest, channel);
478
+ opts.signal?.throwIfAborted();
479
+ const guildId = "guild_id" in permissionChannel ? permissionChannel.guild_id : void 0;
478
480
  if (!guildId) return {
479
481
  channelId,
480
482
  permissions: [],
@@ -491,7 +493,7 @@ async function fetchChannelPermissionsDiscord(channelId, opts) {
491
493
  userId: botId,
492
494
  guild,
493
495
  member,
494
- channel
496
+ channel: permissionChannel
495
497
  });
496
498
  return {
497
499
  channelId,
@@ -528,6 +530,9 @@ const DISCORD_CANNOT_DM = 50007;
528
530
  const DISCORD_UPLOAD_TOO_LARGE = 40005;
529
531
  const DISCORD_UPLOAD_TOO_LARGE_STATUS = 413;
530
532
  const DISCORD_UPLOAD_TOO_LARGE_NOTICE = "Attachment skipped: Discord rejected the file as too large.";
533
+ function resolveRequiredDiscordSendPermissions(channelType) {
534
+ return isDiscordThreadChannelType(channelType) ? ["ViewChannel", "SendMessagesInThreads"] : ["ViewChannel", "SendMessages"];
535
+ }
531
536
  function normalizeReactionEmoji(raw) {
532
537
  const trimmed = raw.trim();
533
538
  if (!trimmed) throw new Error("emoji required");
@@ -597,15 +602,13 @@ async function buildDiscordSendError(err, ctx) {
597
602
  });
598
603
  probedChannelType = permissions.channelType;
599
604
  const current = new Set(permissions.permissions);
600
- const required = ["ViewChannel", "SendMessages"];
601
- if (isDiscordThreadChannelType(probedChannelType)) required.push("SendMessagesInThreads");
605
+ const required = resolveRequiredDiscordSendPermissions(probedChannelType);
602
606
  if (ctx.hasMedia) required.push("AttachFiles");
603
607
  missing = required.filter((permission) => !current.has(permission));
604
608
  } catch {}
605
609
  const status = getDiscordErrorStatus(err);
606
610
  const apiDetails = [`code=${code}`, status != null ? `status=${status}` : void 0].filter(Boolean).join(" ");
607
- const probedPermissions = ["ViewChannel", "SendMessages"];
608
- if (isDiscordThreadChannelType(probedChannelType)) probedPermissions.push("SendMessagesInThreads");
611
+ const probedPermissions = resolveRequiredDiscordSendPermissions(probedChannelType);
609
612
  if (ctx.hasMedia) probedPermissions.push("AttachFiles");
610
613
  const probeSummary = probedPermissions.join("/");
611
614
  return new DiscordSendError(`${missing.length ? `discord missing permissions in channel ${ctx.channelId}: ${missing.join(", ")}` : `discord missing permissions in channel ${ctx.channelId}; permission probe did not identify missing ${probeSummary}`} (${apiDetails}). bot might be blocked by channel/thread overrides, archived thread state, reply target visibility, or app-role position`, {