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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/dist/{account-inspect-D5xmUpnj.js → account-inspect-BDfKyuvL.js} +1 -1
  2. package/dist/account-inspect-api.js +1 -1
  3. package/dist/{accounts-DNl-oCEw.js → accounts-CfQ-vSyf.js} +5 -124
  4. package/dist/action-runtime-api.js +1 -1
  5. package/dist/{activities-api-KCBAmWxD.js → activities-api-q-9PaaHH.js} +5 -4
  6. package/dist/activities-api.js +1 -1
  7. package/dist/api.js +15 -15
  8. package/dist/{approval-handler.runtime-B12RCYr8.js → approval-handler.runtime-B7qhK3fR.js} +28 -105
  9. package/dist/{audit-Yc7eZDd6.js → audit-CBEv_ERu.js} +5 -5
  10. package/dist/{channel-cXYzGc4L.js → channel-Dx1tMTfx.js} +18 -20
  11. package/dist/{channel-actions.runtime-CODTvo7c.js → channel-actions.runtime-CLWWu9nC.js} +56 -56
  12. package/dist/channel-config-api.js +1 -1
  13. package/dist/channel-plugin-api.js +1 -1
  14. package/dist/channel-type-CVLZyGYS.js +7 -0
  15. package/dist/{channel.setup-CSiwnMgs.js → channel.setup-DOzXS2Pk.js} +5 -5
  16. package/dist/{components-ezGKo_Yh.js → components-B9V5o361.js} +6 -22
  17. package/dist/{conversation-binding-route-D6rCQ5S0.js → conversation-binding-route-DJYrY2TQ.js} +1 -1
  18. package/dist/{directory-config-XyCfoqLg.js → directory-config-BK6eqekJ.js} +2 -2
  19. package/dist/directory-contract-api.js +1 -1
  20. package/dist/{directory-live-Df0NbFJB.js → directory-live-DSAJSrJk.js} +2 -2
  21. package/dist/{doctor-DYY31GrO.js → doctor-Cm7Y1pJ2.js} +4 -4
  22. package/dist/doctor-contract-api.js +1 -1
  23. package/dist/{handle-action.guild-admin-6Tvvinsa.js → handle-action.guild-admin-BdwCRHmm.js} +9 -5
  24. package/dist/index.js +1 -1
  25. package/dist/{message-handler-B61q5MOF.js → message-handler-BXpWZyni.js} +5 -5
  26. package/dist/{message-handler.preflight-Bzg_Hawz.js → message-handler.preflight-Ba5LAY_X.js} +13 -15
  27. package/dist/{message-handler.process--4_712Ec.js → message-handler.process-3HEzmemS.js} +59 -65
  28. package/dist/{message-utils-BXLLnFl6.js → message-text-aiwO5R2F.js} +32 -30
  29. package/dist/{outbound-adapter-DxHTOqiN.js → outbound-adapter-BE4jSq2d.js} +53 -58
  30. package/dist/{outbound-components-B2PL0ooH.js → outbound-components-oLpg8Qzb.js} +3 -3
  31. package/dist/outbound-session-route-Cg15ZFJd.js +625 -0
  32. package/dist/{owner-access-Bg41VzAf.js → owner-access-UlYi9t0M.js} +1 -1
  33. package/dist/{pluralkit-dUl4v1X3.js → pluralkit-Tiyl70dx.js} +1 -1
  34. package/dist/{probe-BTdtVRwU.js → probe-n6ZXxK8V.js} +1 -1
  35. package/dist/{probe.runtime-Dq5-PRKT.js → probe.runtime-CN4bdPfZ.js} +1 -1
  36. package/dist/{provider-DlK_ynqt.js → provider-B11xwilq.js} +244 -238
  37. package/dist/{provider-session.runtime-CvvphHvs.js → provider-session.runtime-B9xe-Qaf.js} +3 -3
  38. package/dist/provider.runtime-DiYaHvOz.js +2 -0
  39. package/dist/{realtime-session.runtime-ysbMG8v7.js → realtime-session.runtime-CU8IQUS-.js} +74 -86
  40. package/dist/{resolve-allowlist-common-DIVXbD1P.js → resolve-allowlist-common-BLoYaxEG.js} +1 -1
  41. package/dist/{resolve-channels-CGeUoIqb.js → resolve-channels-C2sT_n67.js} +4 -3
  42. package/dist/{resolve-users-BtKxLUZv.js → resolve-users-CzpjLwjy.js} +2 -2
  43. package/dist/{retry-DNsVTeTo.js → retry-Cv4jCU5Z.js} +144 -5
  44. package/dist/{runtime-D71_VFLr.js → runtime-BHrTlFkf.js} +72 -55
  45. package/dist/{runtime-CQovMsH3.js → runtime-CY4PRMF-.js} +2 -2
  46. package/dist/runtime-api.js +16 -23
  47. package/dist/{sdk-runtime-37OU6_Yh.js → sdk-runtime-4geQHtXc.js} +55 -86
  48. package/dist/{send-rQIffSYu.js → send-C49MFF9j.js} +78 -15
  49. package/dist/{send.components-ChK1wS7w.js → send.components-DKKAw5VX.js} +14 -21
  50. package/dist/{send.outbound-HIkgji_7.js → send.outbound-zam0TrZx.js} +58 -69
  51. package/dist/{send.shared-B3fpaLWJ.js → send.shared-JjljcV4O.js} +35 -20
  52. package/dist/setup-plugin-api.js +1 -1
  53. package/dist/{shared-CaAaoksy.js → shared-_5EcP4jW.js} +27 -8
  54. package/dist/{subagent-hooks-CNT2ZJTJ.js → subagent-hooks-DQzvOptn.js} +2 -2
  55. package/dist/subagent-hooks-api.js +1 -6
  56. package/dist/{system-events-Nuwoq_au.js → system-events-C7yxaHWP.js} +1 -1
  57. package/dist/{target-resolver-DIXShHaZ.js → target-resolver-vxIh6O3-.js} +3 -3
  58. package/dist/targets-CtTKvntJ.js +3 -0
  59. package/dist/{thread-bindings-VlymUnbz.js → thread-bindings-DW5F9vat.js} +3 -4
  60. package/dist/{thread-bindings.manager-CngsgErq.js → thread-bindings.manager-ByOtwjo_.js} +6 -10
  61. package/dist/{threading-DU6pgeGm.js → threading-agH1T_6s.js} +47 -25
  62. package/dist/{transcripts-source-DeIMNbRh.js → transcripts-source-BR11iHA4.js} +3 -3
  63. package/dist/transcripts-source-api.js +1 -1
  64. package/dist/{typing-oLiS5Z13.js → typing-Dc_YMY2e.js} +1 -1
  65. package/dist/{voice-runtime-CjNFaynA.js → voice-runtime-DIeaa8fJ.js} +56 -64
  66. package/node_modules/@discord/embedded-app-sdk/node_modules/uuid/README.md +19 -19
  67. package/node_modules/@discord/embedded-app-sdk/node_modules/uuid/dist/v1.js +7 -3
  68. package/node_modules/@discord/embedded-app-sdk/node_modules/uuid/dist/v7.js +5 -2
  69. package/node_modules/@discord/embedded-app-sdk/node_modules/uuid/dist-node/v1.js +7 -3
  70. package/node_modules/@discord/embedded-app-sdk/node_modules/uuid/dist-node/v7.js +5 -2
  71. package/node_modules/@discord/embedded-app-sdk/node_modules/uuid/package.json +4 -3
  72. package/node_modules/@discordjs/voice/node_modules/@types/node/README.md +1 -1
  73. package/node_modules/@discordjs/voice/node_modules/@types/node/child_process.d.ts +0 -1
  74. package/node_modules/@discordjs/voice/node_modules/@types/node/crypto.d.ts +6 -6
  75. package/node_modules/@discordjs/voice/node_modules/@types/node/dns/promises.d.ts +5 -5
  76. package/node_modules/@discordjs/voice/node_modules/@types/node/dns.d.ts +5 -5
  77. package/node_modules/@discordjs/voice/node_modules/@types/node/fs.d.ts +7 -0
  78. package/node_modules/@discordjs/voice/node_modules/@types/node/http.d.ts +30 -0
  79. package/node_modules/@discordjs/voice/node_modules/@types/node/http2.d.ts +4 -4
  80. package/node_modules/@discordjs/voice/node_modules/@types/node/os.d.ts +30 -30
  81. package/node_modules/@discordjs/voice/node_modules/@types/node/package.json +2 -2
  82. package/node_modules/@discordjs/voice/node_modules/@types/node/perf_hooks.d.ts +2 -1
  83. package/node_modules/@discordjs/voice/node_modules/@types/node/process.d.ts +42 -43
  84. package/node_modules/@discordjs/voice/node_modules/@types/node/quic.d.ts +1049 -84
  85. package/node_modules/@discordjs/voice/node_modules/@types/node/sqlite.d.ts +14 -1
  86. package/node_modules/@discordjs/voice/node_modules/@types/node/stream/iter.d.ts +3 -2
  87. package/node_modules/@discordjs/voice/node_modules/@types/node/test.d.ts +61 -0
  88. package/node_modules/@discordjs/voice/node_modules/@types/node/v8.d.ts +20 -23
  89. package/node_modules/discord-api-types/CHANGELOG.md +8 -0
  90. package/node_modules/discord-api-types/package.json +4 -4
  91. package/node_modules/discord-api-types/payloads/v10/channel.d.ts +2 -2
  92. package/node_modules/discord-api-types/payloads/v10/channel.d.ts.map +1 -1
  93. package/node_modules/discord-api-types/payloads/v10/gateway.d.ts +4 -0
  94. package/node_modules/discord-api-types/payloads/v10/gateway.d.ts.map +1 -1
  95. package/node_modules/discord-api-types/payloads/v10/gateway.js.map +1 -1
  96. package/node_modules/discord-api-types/payloads/v10/message.d.ts +4 -1
  97. package/node_modules/discord-api-types/payloads/v10/message.d.ts.map +1 -1
  98. package/node_modules/discord-api-types/payloads/v10/message.js +1 -0
  99. package/node_modules/discord-api-types/payloads/v10/message.js.map +1 -1
  100. package/node_modules/discord-api-types/payloads/v9/channel.d.ts +2 -2
  101. package/node_modules/discord-api-types/payloads/v9/channel.d.ts.map +1 -1
  102. package/node_modules/discord-api-types/payloads/v9/gateway.d.ts +4 -0
  103. package/node_modules/discord-api-types/payloads/v9/gateway.d.ts.map +1 -1
  104. package/node_modules/discord-api-types/payloads/v9/gateway.js.map +1 -1
  105. package/node_modules/discord-api-types/payloads/v9/message.d.ts +4 -1
  106. package/node_modules/discord-api-types/payloads/v9/message.d.ts.map +1 -1
  107. package/node_modules/discord-api-types/payloads/v9/message.js +1 -0
  108. package/node_modules/discord-api-types/payloads/v9/message.js.map +1 -1
  109. package/node_modules/typebox/build/format/date.d.mts +1 -1
  110. package/node_modules/typebox/build/format/date.mjs +1 -1
  111. package/node_modules/typebox/build/format/date_time.d.mts +2 -2
  112. package/node_modules/typebox/build/format/date_time.mjs +3 -3
  113. package/node_modules/typebox/build/format/email.d.mts +1 -1
  114. package/node_modules/typebox/build/format/email.mjs +2 -2
  115. package/node_modules/typebox/build/format/hostname.mjs +2 -10
  116. package/node_modules/typebox/build/format/idn_email.d.mts +1 -1
  117. package/node_modules/typebox/build/format/idn_email.mjs +3 -3
  118. package/node_modules/typebox/build/format/idn_hostname.d.mts +1 -0
  119. package/node_modules/typebox/build/format/idn_hostname.mjs +3 -11
  120. package/node_modules/typebox/build/format/idna/format/bidi.d.mts +3 -0
  121. package/node_modules/typebox/build/format/idna/format/bidi.mjs +98 -0
  122. package/node_modules/typebox/build/format/idna/format/puny.d.mts +3 -0
  123. package/node_modules/typebox/build/format/idna/format/puny.mjs +144 -0
  124. package/node_modules/typebox/build/format/idna/hostname.d.mts +1 -0
  125. package/node_modules/typebox/build/format/idna/hostname.mjs +16 -0
  126. package/node_modules/typebox/build/format/idna/idn-hostname.d.mts +1 -0
  127. package/node_modules/typebox/build/format/idna/idn-hostname.mjs +23 -0
  128. package/node_modules/typebox/build/format/idna/index.d.mts +2 -0
  129. package/node_modules/typebox/build/format/idna/index.mjs +2 -0
  130. package/node_modules/typebox/build/format/idna/label/ascii.d.mts +1 -0
  131. package/node_modules/typebox/build/format/idna/label/ascii.mjs +9 -0
  132. package/node_modules/typebox/build/format/idna/label/puny.d.mts +1 -0
  133. package/node_modules/typebox/build/format/idna/label/puny.mjs +28 -0
  134. package/node_modules/typebox/build/format/idna/label/unicode.d.mts +1 -0
  135. package/node_modules/typebox/build/format/idna/label/unicode.mjs +106 -0
  136. package/node_modules/typebox/build/format/idna/pattern/pattern.d.mts +30 -0
  137. package/node_modules/typebox/build/format/idna/pattern/pattern.mjs +70 -0
  138. package/node_modules/typebox/build/format/ipv4.d.mts +0 -1
  139. package/node_modules/typebox/build/format/ipv4.mjs +2 -32
  140. package/node_modules/typebox/build/format/ipv6.mjs +2 -61
  141. package/node_modules/typebox/build/format/iri.d.mts +2 -2
  142. package/node_modules/typebox/build/format/iri.mjs +26 -8
  143. package/node_modules/typebox/build/format/iri_reference.d.mts +2 -2
  144. package/node_modules/typebox/build/format/iri_reference.mjs +9 -55
  145. package/node_modules/typebox/build/format/regex.d.mts +1 -2
  146. package/node_modules/typebox/build/format/regex.mjs +2 -6
  147. package/node_modules/typebox/build/format/time.d.mts +2 -2
  148. package/node_modules/typebox/build/format/time.mjs +19 -14
  149. package/node_modules/typebox/build/format/uri.d.mts +1 -1
  150. package/node_modules/typebox/build/format/uri.mjs +3 -130
  151. package/node_modules/typebox/build/format/uri_reference.d.mts +1 -1
  152. package/node_modules/typebox/build/format/uri_reference.mjs +2 -3
  153. package/node_modules/typebox/build/format/uri_template.d.mts +2 -3
  154. package/node_modules/typebox/build/format/uri_template.mjs +4 -5
  155. package/node_modules/typebox/build/format/url.d.mts +3 -3
  156. package/node_modules/typebox/build/format/url.mjs +4 -5
  157. package/node_modules/typebox/build/guard/emit.d.mts +3 -1
  158. package/node_modules/typebox/build/guard/emit.mjs +12 -5
  159. package/node_modules/typebox/build/guard/guard.d.mts +8 -2
  160. package/node_modules/typebox/build/guard/guard.mjs +25 -4
  161. package/node_modules/typebox/build/guard/string.d.mts +2 -2
  162. package/node_modules/typebox/build/guard/string.mjs +7 -7
  163. package/node_modules/typebox/build/schema/engine/_context.mjs +3 -3
  164. package/node_modules/typebox/build/schema/engine/_functions.mjs +1 -2
  165. package/node_modules/typebox/build/schema/engine/_regexp.d.mts +2 -0
  166. package/node_modules/typebox/build/schema/engine/_regexp.mjs +4 -0
  167. package/node_modules/typebox/build/schema/engine/_stack.mjs +12 -13
  168. package/node_modules/typebox/build/schema/engine/additionalItems.mjs +17 -7
  169. package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +4 -3
  170. package/node_modules/typebox/build/schema/engine/contains.mjs +18 -6
  171. package/node_modules/typebox/build/schema/engine/enum.mjs +1 -1
  172. package/node_modules/typebox/build/schema/engine/items.mjs +26 -6
  173. package/node_modules/typebox/build/schema/engine/maxContains.mjs +3 -3
  174. package/node_modules/typebox/build/schema/engine/minContains.mjs +14 -4
  175. package/node_modules/typebox/build/schema/engine/not.mjs +4 -2
  176. package/node_modules/typebox/build/schema/engine/oneOf.mjs +7 -6
  177. package/node_modules/typebox/build/schema/engine/pattern.mjs +3 -2
  178. package/node_modules/typebox/build/schema/engine/patternProperties.mjs +4 -3
  179. package/node_modules/typebox/build/schema/engine/ref.mjs +1 -7
  180. package/node_modules/typebox/build/schema/engine/schema.mjs +13 -4
  181. package/node_modules/typebox/build/schema/engine/type.mjs +1 -1
  182. package/node_modules/typebox/build/schema/resolve/resolve.d.mts +4 -1
  183. package/node_modules/typebox/build/schema/resolve/resolve.mjs +202 -1
  184. package/node_modules/typebox/build/schema/static/propertyNames.d.mts +5 -0
  185. package/node_modules/typebox/build/schema/static/propertyNames.mjs +3 -0
  186. package/node_modules/typebox/build/schema/static/schema.d.mts +3 -0
  187. package/node_modules/typebox/build/schema/types/index.d.mts +0 -2
  188. package/node_modules/typebox/build/schema/types/index.mjs +0 -2
  189. package/node_modules/typebox/build/system/memory/clone.mjs +14 -11
  190. package/node_modules/typebox/build/system/memory/discard.mjs +6 -5
  191. package/node_modules/typebox/build/system/settings/settings.d.mts +9 -0
  192. package/node_modules/typebox/build/system/settings/settings.mjs +2 -0
  193. package/node_modules/typebox/build/type/engine/call/distribute_arguments.d.mts +6 -1
  194. package/node_modules/typebox/build/type/engine/call/distribute_arguments.mjs +16 -3
  195. package/node_modules/typebox/build/type/engine/call/instantiate.mjs +34 -4
  196. package/node_modules/typebox/build/type/engine/evaluate/broaden.d.mts +5 -5
  197. package/node_modules/typebox/build/type/engine/evaluate/broaden.mjs +20 -26
  198. package/node_modules/typebox/build/type/engine/evaluate/compare.d.mts +6 -10
  199. package/node_modules/typebox/build/type/engine/evaluate/compare.mjs +9 -13
  200. package/node_modules/typebox/build/type/engine/evaluate/composite.d.mts +7 -4
  201. package/node_modules/typebox/build/type/engine/evaluate/composite.mjs +12 -19
  202. package/node_modules/typebox/build/type/engine/evaluate/distribute.d.mts +4 -20
  203. package/node_modules/typebox/build/type/engine/evaluate/distribute.mjs +8 -20
  204. package/node_modules/typebox/build/type/engine/evaluate/evaluate.d.mts +4 -4
  205. package/node_modules/typebox/build/type/engine/evaluate/evaluate.mjs +11 -8
  206. package/node_modules/typebox/build/type/engine/evaluate/flatten.d.mts +1 -1
  207. package/node_modules/typebox/build/type/engine/evaluate/flatten.mjs +3 -4
  208. package/node_modules/typebox/build/type/engine/evaluate/narrow.d.mts +17 -2
  209. package/node_modules/typebox/build/type/engine/evaluate/narrow.mjs +26 -6
  210. package/node_modules/typebox/build/type/engine/exclude/operation.mjs +3 -4
  211. package/node_modules/typebox/build/type/engine/extract/operation.d.mts +1 -1
  212. package/node_modules/typebox/build/type/engine/extract/operation.mjs +3 -4
  213. package/node_modules/typebox/build/type/engine/priority/priority.d.mts +2 -2
  214. package/node_modules/typebox/build/type/engine/priority/priority.mjs +3 -4
  215. package/node_modules/typebox/build/type/script/mapping.d.mts +32 -29
  216. package/node_modules/typebox/build/type/script/mapping.mjs +18 -25
  217. package/node_modules/typebox/build/type/script/parser.d.mts +19 -25
  218. package/node_modules/typebox/build/type/script/parser.mjs +27 -23
  219. package/node_modules/typebox/build/value/errors/errors.d.mts +2 -2
  220. package/node_modules/typebox/build/value/errors/errors.mjs +1 -1
  221. package/node_modules/typebox/package.json +27 -27
  222. package/node_modules/typebox/readme.md +79 -82
  223. package/node_modules/undici/docs/docs/api/Client.md +21 -8
  224. package/node_modules/undici/lib/api/readable.js +33 -43
  225. package/node_modules/undici/lib/core/connect.js +16 -2
  226. package/node_modules/undici/lib/core/symbols.js +1 -0
  227. package/node_modules/undici/lib/dispatcher/client-h1.js +3 -3
  228. package/node_modules/undici/lib/dispatcher/client-h2.js +179 -10
  229. package/node_modules/undici/lib/dispatcher/client.js +74 -29
  230. package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +28 -6
  231. package/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +15 -1
  232. package/node_modules/undici/lib/handler/retry-handler.js +7 -2
  233. package/node_modules/undici/lib/interceptor/cache.js +5 -2
  234. package/node_modules/undici/lib/interceptor/deduplicate.js +1 -1
  235. package/node_modules/undici/lib/mock/mock-utils.js +213 -24
  236. package/node_modules/undici/lib/util/cache.js +2 -4
  237. package/node_modules/undici/lib/web/websocket/websocket.js +22 -0
  238. package/node_modules/undici/package.json +1 -1
  239. package/node_modules/undici/types/client.d.ts +40 -0
  240. package/node_modules/ws/lib/permessage-deflate.js +3 -1
  241. package/node_modules/ws/package.json +1 -1
  242. package/package.json +8 -8
  243. package/dist/approval-message-safety-XGFPbDoI.js +0 -226
  244. package/dist/audit-core-BCX8UeFH.js +0 -105
  245. package/dist/channel-actions-Dr2QI8Bf.js +0 -212
  246. package/dist/inbound-event-delivery-De2qxTrP.js +0 -39
  247. package/dist/provider.runtime-CzKGRiAF.js +0 -2
  248. package/dist/runtime-api.actions.js +0 -3
  249. package/dist/runtime-api.lookup.js +0 -7
  250. package/dist/runtime-api.monitor-CzeTYF32.js +0 -6
  251. package/dist/runtime-api.monitor.js +0 -9
  252. package/dist/runtime-api.send.js +0 -7
  253. package/dist/runtime-api.threads.js +0 -5
  254. package/dist/send.reactions-gmJ6yFPo.js +0 -78
  255. package/dist/send.receipt-Cnhoautb.js +0 -76
  256. package/dist/subagent-progress-FPLqBY1s.js +0 -110
  257. package/dist/targets-B2pf49zc.js +0 -3
  258. package/node_modules/typebox/build/format/_idna.d.mts +0 -2
  259. package/node_modules/typebox/build/format/_idna.mjs +0 -246
  260. package/node_modules/typebox/build/format/_puny.d.mts +0 -1
  261. package/node_modules/typebox/build/format/_puny.mjs +0 -77
  262. package/node_modules/typebox/build/schema/resolve/ref.d.mts +0 -3
  263. package/node_modules/typebox/build/schema/resolve/ref.mjs +0 -146
  264. package/node_modules/typebox/build/schema/types/contentEncoding.d.mts +0 -9
  265. package/node_modules/typebox/build/schema/types/contentEncoding.mjs +0 -13
  266. package/node_modules/typebox/build/schema/types/contentMediaType.d.mts +0 -9
  267. package/node_modules/typebox/build/schema/types/contentMediaType.mjs +0 -13
  268. package/dist/{config-schema-DC5kDtQ5.js → config-schema-BR13IAx6.js} +2 -2
@@ -1,4 +1,4 @@
1
- import { o as mergeDiscordAccountConfig, s as resolveDefaultDiscordAccountId, u as resolveDiscordAccountConfig } from "./accounts-DNl-oCEw.js";
1
+ import { o as mergeDiscordAccountConfig, s as resolveDefaultDiscordAccountId, u as resolveDiscordAccountConfig } from "./accounts-CfQ-vSyf.js";
2
2
  import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-id";
3
3
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  import { hasConfiguredSecretInput, normalizeSecretInputString } from "openclaw/plugin-sdk/secret-input";
@@ -1,4 +1,4 @@
1
- import { t as inspectDiscordAccount } from "./account-inspect-D5xmUpnj.js";
1
+ import { t as inspectDiscordAccount } from "./account-inspect-BDfKyuvL.js";
2
2
  //#region extensions/discord/account-inspect-api.ts
3
3
  function inspectDiscordReadOnlyAccount(cfg, accountId) {
4
4
  return inspectDiscordAccount({
@@ -1,130 +1,11 @@
1
- import "./config-schema-DC5kDtQ5.js";
2
1
  import { createAccountActionGate, createAccountListHelpers } from "openclaw/plugin-sdk/account-helpers";
3
- import { DEFAULT_ACCOUNT_ID as DEFAULT_ACCOUNT_ID$2, normalizeAccountId } from "openclaw/plugin-sdk/account-id";
2
+ import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
4
3
  import { mapAllowFromEntries, normalizeChannelDmPolicy } from "openclaw/plugin-sdk/channel-config-helpers";
5
- import { DEFAULT_ACCOUNT_ID as DEFAULT_ACCOUNT_ID$1, buildOutboundBaseSessionKey, normalizeAccountId as normalizeAccountId$1, resolveAccountEntry } from "openclaw/plugin-sdk/routing";
4
+ import { resolveConfiguredFromCredentialStatuses } from "openclaw/plugin-sdk/channel-status";
5
+ import { DEFAULT_ACCOUNT_ID as DEFAULT_ACCOUNT_ID$1, normalizeAccountId as normalizeAccountId$1, resolveAccountEntry } from "openclaw/plugin-sdk/routing";
6
6
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
7
- import { PAIRING_APPROVED_MESSAGE as PAIRING_APPROVED_MESSAGE$1, buildTokenChannelStatusSummary as buildTokenChannelStatusSummary$1, projectCredentialSnapshotFields as projectCredentialSnapshotFields$1, resolveConfiguredFromCredentialStatuses, resolveConfiguredFromCredentialStatuses as resolveConfiguredFromCredentialStatuses$1 } from "openclaw/plugin-sdk/channel-status";
8
- import "openclaw/plugin-sdk/channel-config-schema";
9
- import { normalizeResolvedSecretInputString, resolveSecretInputString } from "openclaw/plugin-sdk/secret-input";
10
- import { buildThreadAwareOutboundSessionRoute } from "openclaw/plugin-sdk/channel-core";
11
- import { assertMediaNotDataUrl, jsonResult, parseAvailableTags, readNonNegativeIntegerParam, readPositiveIntegerParam, readReactionParams, readStringArrayParam, readStringParam, withNormalizedTimestamp } from "openclaw/plugin-sdk/channel-actions";
12
- import { readBooleanParam as readBooleanParam$1 } from "openclaw/plugin-sdk/boolean-param";
13
- import "openclaw/plugin-sdk/channel-plugin-common";
14
- import { loadOutboundMediaFromUrl } from "openclaw/plugin-sdk/outbound-media";
15
- import { buildMessagingTarget, parseMentionPrefixOrAtUserTarget, requireTargetKind } from "openclaw/plugin-sdk/channel-targets";
16
7
  import { getRuntimeConfigSnapshot, getRuntimeConfigSourceSnapshot, selectApplicableRuntimeConfig } from "openclaw/plugin-sdk/runtime-config-snapshot";
17
- //#region extensions/discord/src/channel-api.ts
18
- const DISCORD_CHANNEL_META = {
19
- id: "discord",
20
- label: "Discord",
21
- selectionLabel: "Discord (Bot API)",
22
- detailLabel: "Discord Bot",
23
- docsPath: "/channels/discord",
24
- docsLabel: "discord",
25
- blurb: "very well supported right now.",
26
- systemImage: "bubble.left.and.bubble.right",
27
- markdownCapable: true,
28
- preferSessionLookupForAnnounceTarget: true
29
- };
30
- function getChatChannelMeta(id) {
31
- if (id !== DISCORD_CHANNEL_META.id) throw new Error(`Unsupported Discord channel meta lookup: ${id}`);
32
- return DISCORD_CHANNEL_META;
33
- }
34
- //#endregion
35
- //#region extensions/discord/src/target-parsing.ts
36
- function parseDiscordTarget(raw, options = {}) {
37
- const trimmed = raw.trim();
38
- if (!trimmed) return;
39
- const providerPrefixedTarget = parseDiscordProviderPrefixedTarget(trimmed);
40
- if (providerPrefixedTarget) return providerPrefixedTarget;
41
- const userTarget = parseMentionPrefixOrAtUserTarget({
42
- raw: trimmed,
43
- mentionPattern: /^<@!?(\d+)>$/,
44
- prefixes: [
45
- {
46
- prefix: "user:",
47
- kind: "user"
48
- },
49
- {
50
- prefix: "channel:",
51
- kind: "channel"
52
- },
53
- {
54
- prefix: "discord:",
55
- kind: "user"
56
- }
57
- ],
58
- atUserPattern: /^\d+$/,
59
- atUserErrorMessage: "Discord DMs require a user id (use user:<id> or a <@id> mention)"
60
- });
61
- if (userTarget) return userTarget;
62
- if (/^\d+$/.test(trimmed)) {
63
- if (options.defaultKind) return buildMessagingTarget(options.defaultKind, trimmed, trimmed);
64
- throw new Error(options.ambiguousMessage ?? `Ambiguous Discord recipient "${trimmed}". For DMs use "user:${trimmed}" or "<@${trimmed}>"; for channels use "channel:${trimmed}".`);
65
- }
66
- return buildMessagingTarget("channel", trimmed, trimmed);
67
- }
68
- function parseDiscordProviderPrefixedTarget(raw) {
69
- const match = /^discord:(channel|user):(.+)$/i.exec(raw);
70
- if (!match) return;
71
- const kind = match[1]?.toLowerCase();
72
- const id = match[2]?.trim();
73
- if (!kind || !id) return;
74
- return buildMessagingTarget(kind, id, `${kind}:${id}`);
75
- }
76
- function resolveDiscordChannelId(raw) {
77
- return requireTargetKind({
78
- platform: "Discord",
79
- target: parseDiscordTarget(raw, { defaultKind: "channel" }),
80
- kind: "channel"
81
- });
82
- }
83
- //#endregion
84
- //#region extensions/discord/src/outbound-session-route.ts
85
- function resolveDiscordOutboundSessionRoute(params) {
86
- const parsed = parseDiscordTarget(params.target, { defaultKind: resolveDiscordOutboundTargetKindHint(params) });
87
- if (!parsed) return null;
88
- const explicitThreadId = params.threadId == null ? void 0 : String(params.threadId).trim();
89
- const peerId = explicitThreadId || parsed.id;
90
- const isDm = parsed.kind === "user" && !explicitThreadId;
91
- const recipientSessionExact = /^\d+$/.test(peerId);
92
- const peer = {
93
- kind: isDm ? "direct" : "channel",
94
- id: peerId
95
- };
96
- const baseSessionKey = buildOutboundBaseSessionKey({
97
- cfg: params.cfg,
98
- agentId: params.agentId,
99
- channel: "discord",
100
- accountId: params.accountId,
101
- peer
102
- });
103
- return buildThreadAwareOutboundSessionRoute({
104
- route: {
105
- sessionKey: baseSessionKey,
106
- baseSessionKey,
107
- recipientSessionExact,
108
- peer,
109
- chatType: isDm ? "direct" : "channel",
110
- from: isDm ? `discord:${peerId}` : `discord:channel:${peerId}`,
111
- to: isDm ? `user:${peerId}` : `channel:${peerId}`
112
- },
113
- threadId: params.threadId,
114
- precedence: ["threadId"],
115
- useSuffix: false
116
- });
117
- }
118
- function resolveDiscordOutboundTargetKindHint(params) {
119
- const resolvedKind = params.resolvedTarget?.kind;
120
- if (resolvedKind === "user") return "user";
121
- if (resolvedKind === "group" || resolvedKind === "channel") return "channel";
122
- const target = params.target.trim();
123
- if (/^channel:/i.test(target)) return "channel";
124
- if (/^(user:|discord:|@|<@!?)/i.test(target)) return "user";
125
- return "channel";
126
- }
127
- //#endregion
8
+ import { normalizeResolvedSecretInputString, resolveSecretInputString } from "openclaw/plugin-sdk/secret-input";
128
9
  //#region extensions/discord/src/runtime-config.ts
129
10
  function selectDiscordRuntimeConfig(inputConfig) {
130
11
  return selectApplicableRuntimeConfig({
@@ -368,4 +249,4 @@ function listDiscordStartupAccountIds(cfg) {
368
249
  return [defaultAccountId, ...startupAccountIds.filter((candidateId) => candidateId !== defaultAccountId)];
369
250
  }
370
251
  //#endregion
371
- export { resolveDiscordChannelId as A, readPositiveIntegerParam as C, withNormalizedTimestamp as D, readStringParam as E, projectCredentialSnapshotFields$1 as F, resolveConfiguredFromCredentialStatuses$1 as I, PAIRING_APPROVED_MESSAGE$1 as M, buildTokenChannelStatusSummary$1 as N, resolveDiscordOutboundSessionRoute as O, getChatChannelMeta as P, readNonNegativeIntegerParam as S, readStringArrayParam as T, assertMediaNotDataUrl as _, listEnabledDiscordAccounts as a, parseAvailableTags as b, resolveDiscordAccount as c, resolveDiscordAccountDisabledReason as d, resolveDiscordAccountDmPolicy as f, selectDiscordActivitiesRuntimeConfig as g, resolveDiscordToken as h, listDiscordStartupAccountIds as i, DEFAULT_ACCOUNT_ID$2 as j, parseDiscordTarget as k, resolveDiscordAccountAllowFrom as l, normalizeDiscordToken as m, isDiscordAccountEnabledForRuntime as n, mergeDiscordAccountConfig as o, resolveDiscordMaxLinesPerMessage as p, listDiscordAccountIds as r, resolveDefaultDiscordAccountId as s, createDiscordActionGate as t, resolveDiscordAccountConfig as u, jsonResult as v, readReactionParams as w, readBooleanParam$1 as x, loadOutboundMediaFromUrl as y };
252
+ export { listEnabledDiscordAccounts as a, resolveDiscordAccount as c, resolveDiscordAccountDisabledReason as d, resolveDiscordAccountDmPolicy as f, selectDiscordActivitiesRuntimeConfig as g, resolveDiscordToken as h, listDiscordStartupAccountIds as i, resolveDiscordAccountAllowFrom as l, normalizeDiscordToken as m, isDiscordAccountEnabledForRuntime as n, mergeDiscordAccountConfig as o, resolveDiscordMaxLinesPerMessage as p, listDiscordAccountIds as r, resolveDefaultDiscordAccountId as s, createDiscordActionGate as t, resolveDiscordAccountConfig as u };
@@ -1,2 +1,2 @@
1
- import { t as handleDiscordAction } from "./runtime-D71_VFLr.js";
1
+ import { t as handleDiscordAction } from "./runtime-BHrTlFkf.js";
2
2
  export { handleDiscordAction };
@@ -1,7 +1,8 @@
1
- import { i as buildDiscordPresentationComponents, x as parseDiscordActivityCustomId } from "./components-ezGKo_Yh.js";
2
- import { A as resolveDiscordChannelId$1, c as resolveDiscordAccount } from "./accounts-DNl-oCEw.js";
3
- import { r as sendDiscordComponentMessage } from "./send.components-ChK1wS7w.js";
4
- import { r as setDiscordActivitiesRuntime, t as DiscordActivitiesRuntime } from "./runtime-CQovMsH3.js";
1
+ import { v as resolveDiscordChannelId$1 } from "./retry-Cv4jCU5Z.js";
2
+ import { i as buildDiscordPresentationComponents, x as parseDiscordActivityCustomId } from "./components-B9V5o361.js";
3
+ import { c as resolveDiscordAccount } from "./accounts-CfQ-vSyf.js";
4
+ import { r as sendDiscordComponentMessage } from "./send.components-DKKAw5VX.js";
5
+ import { r as setDiscordActivitiesRuntime, t as DiscordActivitiesRuntime } from "./runtime-CY4PRMF-.js";
5
6
  import fs from "node:fs/promises";
6
7
  import { logError } from "openclaw/plugin-sdk/logging-core";
7
8
  import { resolveRequestClientIp } from "openclaw/plugin-sdk/webhook-ingress";
@@ -1,2 +1,2 @@
1
- import { t as registerDiscordActivities } from "./activities-api-KCBAmWxD.js";
1
+ import { t as registerDiscordActivities } from "./activities-api-q-9PaaHH.js";
2
2
  export { registerDiscordActivities };
package/dist/api.js CHANGED
@@ -1,24 +1,24 @@
1
- import { d as normalizeDiscordMessagingTarget, f as normalizeDiscordOutboundTarget, u as looksLikeDiscordTargetId } from "./retry-DNsVTeTo.js";
2
- import { C as parseDiscordComponentCustomId, E as parseDiscordModalCustomIdForInteraction, T as parseDiscordModalCustomId, _ as DISCORD_MODAL_CUSTOM_ID_KEY, b as buildDiscordModalCustomId, d as buildDiscordComponentMessage, f as buildDiscordComponentMessageFlags, g as DISCORD_COMPONENT_CUSTOM_ID_KEY, h as resolveDiscordComponentAttachmentName, l as DiscordFormModal, m as readDiscordComponentSpec, n as formatDiscordComponentEventText, p as DISCORD_COMPONENT_ATTACHMENT_PREFIX, r as buildDiscordInteractiveComponents, u as createDiscordFormModal, w as parseDiscordComponentCustomIdForInteraction, y as buildDiscordComponentCustomId } from "./components-ezGKo_Yh.js";
3
- import { A as resolveDiscordChannelId, a as listEnabledDiscordAccounts, c as resolveDiscordAccount, k as parseDiscordTarget, o as mergeDiscordAccountConfig, p as resolveDiscordMaxLinesPerMessage, r as listDiscordAccountIds, s as resolveDefaultDiscordAccountId, t as createDiscordActionGate, u as resolveDiscordAccountConfig } from "./accounts-DNl-oCEw.js";
1
+ import { _ as parseDiscordTarget, g as normalizeDiscordOutboundTarget, h as normalizeDiscordMessagingTarget, m as looksLikeDiscordTargetId, v as resolveDiscordChannelId } from "./retry-Cv4jCU5Z.js";
2
+ import { C as parseDiscordComponentCustomId, E as parseDiscordModalCustomIdForInteraction, T as parseDiscordModalCustomId, _ as DISCORD_MODAL_CUSTOM_ID_KEY, b as buildDiscordModalCustomId, d as buildDiscordComponentMessage, f as buildDiscordComponentMessageFlags, g as DISCORD_COMPONENT_CUSTOM_ID_KEY, h as resolveDiscordComponentAttachmentName, l as DiscordFormModal, m as readDiscordComponentSpec, n as formatDiscordComponentEventText, p as DISCORD_COMPONENT_ATTACHMENT_PREFIX, r as buildDiscordInteractiveComponents, u as createDiscordFormModal, w as parseDiscordComponentCustomIdForInteraction, y as buildDiscordComponentCustomId } from "./components-B9V5o361.js";
3
+ import { a as listEnabledDiscordAccounts, c as resolveDiscordAccount, o as mergeDiscordAccountConfig, p as resolveDiscordMaxLinesPerMessage, r as listDiscordAccountIds, s as resolveDefaultDiscordAccountId, t as createDiscordActionGate, u as resolveDiscordAccountConfig } from "./accounts-CfQ-vSyf.js";
4
4
  import { i as requestDiscord, n as DiscordApiError, r as fetchDiscord } from "./api-DNVbJyEy.js";
5
- import { i as parseDiscordSendTarget, n as resolveDiscordTarget } from "./target-resolver-DIXShHaZ.js";
6
- import { t as inspectDiscordAccount } from "./account-inspect-D5xmUpnj.js";
5
+ import { i as parseDiscordSendTarget, n as resolveDiscordTarget } from "./target-resolver-vxIh6O3-.js";
6
+ import { t as inspectDiscordAccount } from "./account-inspect-BDfKyuvL.js";
7
7
  import { i as DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, n as DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, r as DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, t as DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS } from "./timeouts-B9cy6RvQ.js";
8
- import "./targets-B2pf49zc.js";
9
- import { f as getDiscordExecApprovalApprovers, h as shouldSuppressLocalDiscordExecApprovalPrompt, m as isDiscordExecApprovalClientEnabled, p as isDiscordExecApprovalApprover } from "./approval-message-safety-XGFPbDoI.js";
10
- import { i as resolveDiscordGroupToolPolicy, n as collectDiscordStatusIssues, r as resolveDiscordGroupRequireMention, t as discordPlugin } from "./channel-cXYzGc4L.js";
8
+ import "./targets-CtTKvntJ.js";
9
+ import { C as shouldSuppressLocalDiscordExecApprovalPrompt, S as isDiscordExecApprovalClientEnabled, b as getDiscordExecApprovalApprovers, x as isDiscordExecApprovalApprover } from "./outbound-session-route-Cg15ZFJd.js";
10
+ import { i as resolveDiscordGroupToolPolicy, n as collectDiscordStatusIssues, r as resolveDiscordGroupRequireMention, t as discordPlugin } from "./channel-Dx1tMTfx.js";
11
11
  import { t as normalizeExplicitDiscordSessionKey } from "./session-key-normalization-wJgsKPNF.js";
12
- import { t as discordSetupPlugin } from "./channel.setup-CSiwnMgs.js";
13
- import { n as handleDiscordSubagentEnded, t as handleDiscordSubagentDeliveryTarget } from "./subagent-hooks-CNT2ZJTJ.js";
14
- import { t as tryHandleDiscordMessageActionGuildAdmin } from "./handle-action.guild-admin-6Tvvinsa.js";
15
- import { n as listDiscordDirectoryGroupsFromConfig, r as listDiscordDirectoryPeersFromConfig } from "./directory-config-XyCfoqLg.js";
16
- import { t as fetchPluralKitMessageInfo } from "./pluralkit-dUl4v1X3.js";
17
- import { i as probeDiscord, n as fetchDiscordApplicationSummary, o as resolveDiscordPrivilegedIntentsFromFlags, r as parseApplicationIdFromToken, t as fetchDiscordApplicationId } from "./probe-BTdtVRwU.js";
12
+ import { t as discordSetupPlugin } from "./channel.setup-DOzXS2Pk.js";
13
+ import { n as handleDiscordSubagentEnded, t as handleDiscordSubagentDeliveryTarget } from "./subagent-hooks-DQzvOptn.js";
14
+ import { t as tryHandleDiscordMessageActionGuildAdmin } from "./handle-action.guild-admin-BdwCRHmm.js";
15
+ import { n as listDiscordDirectoryGroupsFromConfig, r as listDiscordDirectoryPeersFromConfig } from "./directory-config-BK6eqekJ.js";
16
+ import { t as fetchPluralKitMessageInfo } from "./pluralkit-Tiyl70dx.js";
17
+ import { i as probeDiscord, n as fetchDiscordApplicationSummary, o as resolveDiscordPrivilegedIntentsFromFlags, r as parseApplicationIdFromToken, t as fetchDiscordApplicationId } from "./probe-n6ZXxK8V.js";
18
18
  import { t as collectDiscordSecurityAuditFindings } from "./security-audit-BfJhAXZp.js";
19
19
  import { resolveOpenProviderRuntimeGroupPolicy as resolveDiscordRuntimeGroupPolicy } from "openclaw/plugin-sdk/runtime-group-policy";
20
20
  //#region extensions/discord/api.ts
21
- const handleDiscordMessageAction = async (...args) => (await import("./channel-actions.runtime-CODTvo7c.js")).handleDiscordMessageAction(...args);
21
+ const handleDiscordMessageAction = async (...args) => (await import("./channel-actions.runtime-CLWWu9nC.js")).handleDiscordMessageAction(...args);
22
22
  /**
23
23
  * @deprecated Shipped `@openclaw/discord/api` compatibility only. Use native
24
24
  * `AbortSignal.any` after filtering optional signals. Removal with the next
@@ -1,8 +1,8 @@
1
- import { Ct as editChannelMessage, J as Button, V as serializePayload, X as Container, dt as stripUndefinedFields, it as Separator, nt as Row, ot as TextDisplay, pt as createUserDmChannel, vt as createChannelMessage, xt as deleteChannelMessage } from "./retry-DNsVTeTo.js";
2
- import { s as buildExecApprovalCustomId } from "./components-ezGKo_Yh.js";
3
- import { P as createDiscordClient, k as createDiscordMessageNonce } from "./send.shared-B3fpaLWJ.js";
4
- import { m as isDiscordExecApprovalClientEnabled, n as formatDiscordApprovalDisplayValue, t as DISCORD_APPROVAL_ALLOWED_MENTIONS } from "./approval-message-safety-XGFPbDoI.js";
5
- import { a as shouldHandleDiscordApprovalRequest } from "./channel-cXYzGc4L.js";
1
+ import { Dt as deleteChannelMessage, _t as stripUndefinedFields, ct as Row, et as Button, ft as TextDisplay, kt as editChannelMessage, nt as Container, q as serializePayload, ut as Separator, wt as createChannelMessage, yt as createUserDmChannel } from "./retry-Cv4jCU5Z.js";
2
+ import { s as buildExecApprovalCustomId } from "./components-B9V5o361.js";
3
+ import { N as createDiscordClient, O as createDiscordMessageNonce } from "./send.shared-JjljcV4O.js";
4
+ import { S as isDiscordExecApprovalClientEnabled, n as DISCORD_APPROVAL_ALLOWED_MENTIONS, r as formatDiscordApprovalDisplayValue } from "./outbound-session-route-Cg15ZFJd.js";
5
+ import { a as shouldHandleDiscordApprovalRequest } from "./channel-Dx1tMTfx.js";
6
6
  import { logDebug, logError } from "openclaw/plugin-sdk/logging-core";
7
7
  import { ButtonStyle } from "discord-api-types/v10";
8
8
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -137,97 +137,34 @@ function resolveCommandPreviews(commandText, commandPreview, maxChars, secondary
137
137
  commandSecondaryPreview: formatOptionalCommandPreview(commandPreview, secondaryMaxChars)
138
138
  };
139
139
  }
140
- function createExecApprovalRequestContainer(params) {
141
- const { commandPreview, commandSecondaryPreview } = resolveCommandPreviews(params.view.commandText, params.view.commandPreview, 1e3, 500);
142
- const expiresAtSeconds = Math.max(0, Math.floor(params.view.expiresAtMs / 1e3));
140
+ function createApprovalContainer(params) {
141
+ const { view } = params;
142
+ const plugin = view.approvalKind === "plugin";
143
+ const pending = view.phase === "pending";
144
+ const approvalLabel = plugin ? "Plugin" : "Exec";
145
+ const { commandPreview, commandSecondaryPreview } = plugin ? {
146
+ commandPreview: formatCommandPreview(view.title, 700),
147
+ commandSecondaryPreview: formatOptionalCommandPreview(view.description, 1e3)
148
+ } : resolveCommandPreviews(view.commandText, view.commandPreview, pending ? 1e3 : 500, pending ? 500 : 300);
149
+ const decisionLabel = view.phase !== "resolved" ? void 0 : view.decision === "allow-once" ? "Allowed (once)" : view.decision === "allow-always" ? "Allowed (always)" : "Denied";
150
+ const title = pending ? `${approvalLabel} Approval Required` : `${approvalLabel} Approval: ${view.phase === "expired" ? "Expired" : decisionLabel}`;
151
+ const description = pending ? plugin ? "A plugin action needs your approval." : "A command needs your approval." : view.phase === "expired" ? "This approval request has expired." : view.resolvedBy ? `Resolved by ${formatDiscordApprovalDisplayValue(view.resolvedBy)}` : "Resolved";
152
+ const accentColor = view.phase === "expired" ? "#99AAB5" : view.phase === "resolved" ? view.decision === "deny" ? "#ED4245" : view.decision === "allow-always" ? "#5865F2" : "#57F287" : plugin ? view.severity === "critical" ? "#ED4245" : view.severity === "info" ? "#5865F2" : "#FAA61A" : "#FFA500";
153
+ const approvalId = formatDiscordApprovalDisplayValue(view.approvalId);
154
+ const footer = pending ? `Expires <t:${Math.max(0, Math.floor(view.expiresAtMs / 1e3))}:R> · ID: ${approvalId}` : `ID: ${approvalId}`;
143
155
  return new ExecApprovalContainer({
144
156
  cfg: params.cfg,
145
157
  accountId: params.accountId,
146
- title: "Exec Approval Required",
147
- description: "A command needs your approval.",
158
+ title,
159
+ description,
148
160
  commandPreview,
149
161
  commandSecondaryPreview,
150
- metadataLines: buildApprovalMetadataLines(params.view.metadata),
162
+ metadataLines: buildApprovalMetadataLines(view.metadata),
151
163
  actionRow: params.actionRow,
152
- footer: `Expires <t:${expiresAtSeconds}:R> · ID: ${formatDiscordApprovalDisplayValue(params.view.approvalId)}`,
153
- accentColor: "#FFA500"
154
- });
155
- }
156
- function createPluginApprovalRequestContainer(params) {
157
- const expiresAtSeconds = Math.max(0, Math.floor(params.view.expiresAtMs / 1e3));
158
- const severity = params.view.severity;
159
- const accentColor = severity === "critical" ? "#ED4245" : severity === "info" ? "#5865F2" : "#FAA61A";
160
- return new ExecApprovalContainer({
161
- cfg: params.cfg,
162
- accountId: params.accountId,
163
- title: "Plugin Approval Required",
164
- description: "A plugin action needs your approval.",
165
- commandPreview: formatCommandPreview(params.view.title, 700),
166
- commandSecondaryPreview: formatOptionalCommandPreview(params.view.description, 1e3),
167
- metadataLines: buildApprovalMetadataLines(params.view.metadata),
168
- actionRow: params.actionRow,
169
- footer: `Expires <t:${expiresAtSeconds}:R> · ID: ${formatDiscordApprovalDisplayValue(params.view.approvalId)}`,
164
+ footer,
170
165
  accentColor
171
166
  });
172
167
  }
173
- function createExecResolvedContainer(params) {
174
- const { commandPreview, commandSecondaryPreview } = resolveCommandPreviews(params.view.commandText, params.view.commandPreview, 500, 300);
175
- const decisionLabel = params.view.decision === "allow-once" ? "Allowed (once)" : params.view.decision === "allow-always" ? "Allowed (always)" : "Denied";
176
- const accentColor = params.view.decision === "deny" ? "#ED4245" : params.view.decision === "allow-always" ? "#5865F2" : "#57F287";
177
- return new ExecApprovalContainer({
178
- cfg: params.cfg,
179
- accountId: params.accountId,
180
- title: `Exec Approval: ${decisionLabel}`,
181
- description: params.view.resolvedBy ? `Resolved by ${formatDiscordApprovalDisplayValue(params.view.resolvedBy)}` : "Resolved",
182
- commandPreview,
183
- commandSecondaryPreview,
184
- metadataLines: buildApprovalMetadataLines(params.view.metadata),
185
- footer: `ID: ${formatDiscordApprovalDisplayValue(params.view.approvalId)}`,
186
- accentColor
187
- });
188
- }
189
- function createPluginResolvedContainer(params) {
190
- const decisionLabel = params.view.decision === "allow-once" ? "Allowed (once)" : params.view.decision === "allow-always" ? "Allowed (always)" : "Denied";
191
- const accentColor = params.view.decision === "deny" ? "#ED4245" : params.view.decision === "allow-always" ? "#5865F2" : "#57F287";
192
- return new ExecApprovalContainer({
193
- cfg: params.cfg,
194
- accountId: params.accountId,
195
- title: `Plugin Approval: ${decisionLabel}`,
196
- description: params.view.resolvedBy ? `Resolved by ${formatDiscordApprovalDisplayValue(params.view.resolvedBy)}` : "Resolved",
197
- commandPreview: formatCommandPreview(params.view.title, 700),
198
- commandSecondaryPreview: formatOptionalCommandPreview(params.view.description, 1e3),
199
- metadataLines: buildApprovalMetadataLines(params.view.metadata),
200
- footer: `ID: ${formatDiscordApprovalDisplayValue(params.view.approvalId)}`,
201
- accentColor
202
- });
203
- }
204
- function createExecExpiredContainer(params) {
205
- const { commandPreview, commandSecondaryPreview } = resolveCommandPreviews(params.view.commandText, params.view.commandPreview, 500, 300);
206
- return new ExecApprovalContainer({
207
- cfg: params.cfg,
208
- accountId: params.accountId,
209
- title: "Exec Approval: Expired",
210
- description: "This approval request has expired.",
211
- commandPreview,
212
- commandSecondaryPreview,
213
- metadataLines: buildApprovalMetadataLines(params.view.metadata),
214
- footer: `ID: ${formatDiscordApprovalDisplayValue(params.view.approvalId)}`,
215
- accentColor: "#99AAB5"
216
- });
217
- }
218
- function createPluginExpiredContainer(params) {
219
- return new ExecApprovalContainer({
220
- cfg: params.cfg,
221
- accountId: params.accountId,
222
- title: "Plugin Approval: Expired",
223
- description: "This approval request has expired.",
224
- commandPreview: formatCommandPreview(params.view.title, 700),
225
- commandSecondaryPreview: formatOptionalCommandPreview(params.view.description, 1e3),
226
- metadataLines: buildApprovalMetadataLines(params.view.metadata),
227
- footer: `ID: ${formatDiscordApprovalDisplayValue(params.view.approvalId)}`,
228
- accentColor: "#99AAB5"
229
- });
230
- }
231
168
  async function updateMessage(params) {
232
169
  try {
233
170
  const { rest, request: discordRequest } = createDiscordClient({
@@ -287,17 +224,11 @@ const discordApprovalNativeRuntime = createChannelApprovalNativeRuntimeAdapter({
287
224
  context
288
225
  });
289
226
  if (!resolved) return { body: {} };
290
- const actionRow = createApprovalActionRow(view);
291
- return { body: stripUndefinedFields(serializePayload(buildExecApprovalPayload(view.approvalKind === "plugin" ? createPluginApprovalRequestContainer({
227
+ return { body: stripUndefinedFields(serializePayload(buildExecApprovalPayload(createApprovalContainer({
292
228
  view,
293
229
  cfg,
294
230
  accountId: resolved.accountId,
295
- actionRow
296
- }) : createExecApprovalRequestContainer({
297
- view,
298
- cfg,
299
- accountId: resolved.accountId,
300
- actionRow
231
+ actionRow: createApprovalActionRow(view)
301
232
  })))) };
302
233
  },
303
234
  buildResolvedResult: ({ cfg, accountId, context, view }) => {
@@ -309,11 +240,7 @@ const discordApprovalNativeRuntime = createChannelApprovalNativeRuntimeAdapter({
309
240
  if (!resolvedContext) return { kind: "delete" };
310
241
  return {
311
242
  kind: "update",
312
- payload: view.approvalKind === "plugin" ? createPluginResolvedContainer({
313
- view,
314
- cfg,
315
- accountId: resolvedContext.accountId
316
- }) : createExecResolvedContainer({
243
+ payload: createApprovalContainer({
317
244
  view,
318
245
  cfg,
319
246
  accountId: resolvedContext.accountId
@@ -329,11 +256,7 @@ const discordApprovalNativeRuntime = createChannelApprovalNativeRuntimeAdapter({
329
256
  if (!resolvedContext) return { kind: "delete" };
330
257
  return {
331
258
  kind: "update",
332
- payload: view.approvalKind === "plugin" ? createPluginExpiredContainer({
333
- view,
334
- cfg,
335
- accountId: resolvedContext.accountId
336
- }) : createExecExpiredContainer({
259
+ payload: createApprovalContainer({
337
260
  view,
338
261
  cfg,
339
262
  accountId: resolvedContext.accountId
@@ -1,8 +1,8 @@
1
- import { en as __exportAll } from "./retry-DNsVTeTo.js";
2
- import { x as fetchChannelPermissionsDiscord } from "./send.shared-B3fpaLWJ.js";
3
- import { t as inspectDiscordAccount } from "./account-inspect-D5xmUpnj.js";
4
- import "./send-rQIffSYu.js";
5
- import { n as collectDiscordAuditChannelIdsForAccount, t as auditDiscordChannelPermissionsWithFetcher } from "./audit-core-BCX8UeFH.js";
1
+ import { on as __exportAll } from "./retry-Cv4jCU5Z.js";
2
+ import { x as fetchChannelPermissionsDiscord } from "./send.shared-JjljcV4O.js";
3
+ import { t as inspectDiscordAccount } from "./account-inspect-BDfKyuvL.js";
4
+ import "./send-C49MFF9j.js";
5
+ import { _ as auditDiscordChannelPermissionsWithFetcher, v as collectDiscordAuditChannelIdsForAccount } from "./outbound-session-route-Cg15ZFJd.js";
6
6
  //#region extensions/discord/src/audit.ts
7
7
  var audit_exports = /* @__PURE__ */ __exportAll({
8
8
  auditDiscordChannelPermissions: () => auditDiscordChannelPermissions,
@@ -1,24 +1,22 @@
1
- import { d as normalizeDiscordMessagingTarget, u as looksLikeDiscordTargetId } from "./retry-DNsVTeTo.js";
2
- import { F as projectCredentialSnapshotFields, I as resolveConfiguredFromCredentialStatuses, M as PAIRING_APPROVED_MESSAGE, N as buildTokenChannelStatusSummary, O as resolveDiscordOutboundSessionRoute, c as resolveDiscordAccount, i as listDiscordStartupAccountIds, j as DEFAULT_ACCOUNT_ID, k as parseDiscordTarget, l as resolveDiscordAccountAllowFrom, r as listDiscordAccountIds, s as resolveDefaultDiscordAccountId } from "./accounts-DNl-oCEw.js";
1
+ import { _ as parseDiscordTarget, h as normalizeDiscordMessagingTarget, m as looksLikeDiscordTargetId } from "./retry-Cv4jCU5Z.js";
2
+ import { c as resolveDiscordAccount, i as listDiscordStartupAccountIds, l as resolveDiscordAccountAllowFrom, r as listDiscordAccountIds, s as resolveDefaultDiscordAccountId } from "./accounts-CfQ-vSyf.js";
3
3
  import { t as getDiscordRuntime } from "./runtime-DgnVQ7zW.js";
4
4
  import { u as withAbortTimeout } from "./timeouts-B9cy6RvQ.js";
5
- import { _ as createChannelApproverDmTargetResolver, b as matchesApprovalRequestFilters, d as resolveDiscordRuntimeBindingConversationId, f as getDiscordExecApprovalApprovers, g as createApproverRestrictedNativeApprovalCapability, h as shouldSuppressLocalDiscordExecApprovalPrompt, m as isDiscordExecApprovalClientEnabled, o as resolveDiscordConversationRoute, p as isDiscordExecApprovalApprover, u as resolveDiscordCurrentConversationIdentity, v as createChannelNativeOriginTargetResolver, y as isChannelExecApprovalClientEnabledFromConfig } from "./approval-message-safety-XGFPbDoI.js";
6
- import { r as resolveRequiredDiscordChannelPermissions } from "./audit-core-BCX8UeFH.js";
7
- import { t as discordMessageActions } from "./channel-actions-Dr2QI8Bf.js";
5
+ import { C as shouldSuppressLocalDiscordExecApprovalPrompt, D as isChannelExecApprovalClientEnabledFromConfig, E as createChannelNativeOriginTargetResolver, O as matchesApprovalRequestFilters, S as isDiscordExecApprovalClientEnabled, T as createChannelApproverDmTargetResolver, b as getDiscordExecApprovalApprovers, d as resolveDiscordCurrentConversationIdentity, f as resolveDiscordRuntimeBindingConversationId, p as discordMessageActions, s as resolveDiscordConversationRoute, t as resolveDiscordOutboundSessionRoute, w as createApproverRestrictedNativeApprovalCapability, x as isDiscordExecApprovalApprover, y as resolveRequiredDiscordChannelPermissions } from "./outbound-session-route-Cg15ZFJd.js";
6
+ import { a as discordSecurityAdapter, c as buildTokenChannelStatusSummary, i as discordSetupContract, l as projectCredentialSnapshotFields, n as discordConfigAdapter, o as DEFAULT_ACCOUNT_ID, s as PAIRING_APPROVED_MESSAGE, t as createDiscordPluginBase, u as resolveConfiguredFromCredentialStatuses } from "./shared-_5EcP4jW.js";
8
7
  import { r as openDiscordCommandDeployHashStore } from "./command-deploy-store-DFkBTViB.js";
9
- import { t as resolveDiscordConversationBindingRoute } from "./conversation-binding-route-D6rCQ5S0.js";
8
+ import { t as resolveDiscordConversationBindingRoute } from "./conversation-binding-route-DJYrY2TQ.js";
10
9
  import { n as setThreadBindingMaxAgeBySessionKey, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-CJb-BpPL.js";
11
- import { n as discordOutbound } from "./outbound-adapter-DxHTOqiN.js";
12
- import { a as discordSecurityAdapter, i as discordSetupContract, n as discordConfigAdapter, t as createDiscordPluginBase } from "./shared-CaAaoksy.js";
10
+ import { n as discordOutbound } from "./outbound-adapter-BE4jSq2d.js";
13
11
  import { t as normalizeExplicitDiscordSessionKey } from "./session-key-normalization-wJgsKPNF.js";
14
12
  import { t as defaultTopLevelPlacement } from "./thread-binding-api-BDZJD4na.js";
15
13
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
16
14
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/string-coerce-runtime";
17
- import { createChatChannelPlugin } from "openclaw/plugin-sdk/channel-core";
18
15
  import { sleepWithAbort } from "openclaw/plugin-sdk/runtime-env";
19
16
  import { createChannelMessageAdapterFromOutbound } from "openclaw/plugin-sdk/channel-outbound";
20
17
  import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
21
18
  import { buildLegacyDmAccountAllowlistAdapter, createAccountScopedAllowlistNameResolver, createNestedAllowlistOverrideResolver } from "openclaw/plugin-sdk/allowlist-config-edit";
19
+ import { createChatChannelPlugin } from "openclaw/plugin-sdk/channel-core";
22
20
  import { createPairingPrefixStripper } from "openclaw/plugin-sdk/channel-pairing";
23
21
  import { createChannelDirectoryAdapter, createRuntimeDirectoryLiveAdapter } from "openclaw/plugin-sdk/directory-runtime";
24
22
  import { appendMatchMetadata, createComputedAccountStatusAdapter, createDefaultChannelRuntimeState, isRecord as isRecord$1, readAccountStatusSnapshot, resolveEnabledConfiguredAccountId } from "openclaw/plugin-sdk/status-helpers";
@@ -194,7 +192,7 @@ function createDiscordApprovalCapability(configOverride) {
194
192
  request,
195
193
  configOverride
196
194
  }),
197
- load: async () => (await import("./approval-handler.runtime-B12RCYr8.js")).discordApprovalNativeRuntime
195
+ load: async () => (await import("./approval-handler.runtime-B7qhK3fR.js")).discordApprovalNativeRuntime
198
196
  })
199
197
  });
200
198
  }
@@ -301,22 +299,22 @@ function resolveDiscordInboundConversation(params) {
301
299
  }
302
300
  //#endregion
303
301
  //#region extensions/discord/src/channel.loaders.ts
304
- const loadDiscordDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-XyCfoqLg.js").then((n) => n.t));
305
- const loadDiscordResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-CGeUoIqb.js").then((n) => n.n));
306
- const loadDiscordResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-BtKxLUZv.js").then((n) => n.n));
307
- const loadDiscordThreadBindingsManagerModule = createLazyRuntimeModule(() => import("./thread-bindings.manager-CngsgErq.js").then((n) => n.i));
308
- const loadDiscordTargetResolverModule = createLazyRuntimeModule(() => import("./target-resolver-DIXShHaZ.js").then((n) => n.r));
309
- const loadDiscordProviderRuntime = createLazyRuntimeModule(() => import("./provider.runtime-CzKGRiAF.js"));
310
- const loadDiscordProbeRuntime = createLazyRuntimeModule(() => import("./probe.runtime-Dq5-PRKT.js"));
302
+ const loadDiscordDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-BK6eqekJ.js").then((n) => n.t));
303
+ const loadDiscordResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-C2sT_n67.js").then((n) => n.n));
304
+ const loadDiscordResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-CzpjLwjy.js").then((n) => n.n));
305
+ const loadDiscordThreadBindingsManagerModule = createLazyRuntimeModule(() => import("./thread-bindings.manager-ByOtwjo_.js").then((n) => n.i));
306
+ const loadDiscordTargetResolverModule = createLazyRuntimeModule(() => import("./target-resolver-vxIh6O3-.js").then((n) => n.r));
307
+ const loadDiscordProviderRuntime = createLazyRuntimeModule(() => import("./provider.runtime-DiYaHvOz.js"));
308
+ const loadDiscordProbeRuntime = createLazyRuntimeModule(() => import("./probe.runtime-CN4bdPfZ.js"));
311
309
  async function probeDiscordStatusAccount(params) {
312
310
  const startedAtMs = Date.now();
313
311
  const runtime = await loadDiscordProbeRuntime();
314
312
  const remainingMs = Math.max(1, params.timeoutMs - Math.max(0, Date.now() - startedAtMs));
315
313
  return await runtime.probeDiscord(params.token, remainingMs, { includeApplication: true });
316
314
  }
317
- const loadDiscordAuditModule = createLazyRuntimeModule(() => import("./audit-Yc7eZDd6.js").then((n) => n.n));
318
- const loadDiscordSendModule = createLazyRuntimeModule(() => import("./send-rQIffSYu.js").then((n) => n.t));
319
- const loadDiscordDirectoryLiveModule = createLazyRuntimeModule(() => import("./directory-live-Df0NbFJB.js").then((n) => n.t));
315
+ const loadDiscordAuditModule = createLazyRuntimeModule(() => import("./audit-CBEv_ERu.js").then((n) => n.n));
316
+ const loadDiscordSendModule = createLazyRuntimeModule(() => import("./send-C49MFF9j.js").then((n) => n.t));
317
+ const loadDiscordDirectoryLiveModule = createLazyRuntimeModule(() => import("./directory-live-DSAJSrJk.js").then((n) => n.t));
320
318
  //#endregion
321
319
  //#region extensions/discord/src/conversation-route-owner.ts
322
320
  function inspectDiscordConversationRouteOwner(params) {