@openclaw/discord 2026.5.7 → 2026.5.10-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 (110) hide show
  1. package/dist/{access-CHY9FK3X.js → access-R4X7pYt4.js} +1 -1
  2. package/dist/action-runtime-api.js +1 -1
  3. package/dist/{allow-list-ek-1hMKN.js → allow-list-4wnZg5P9.js} +2 -6
  4. package/dist/api.js +18 -16
  5. package/dist/{approval-handler.runtime-BBZRYAGs.js → approval-handler.runtime-B5BCBw4D.js} +3 -4
  6. package/dist/{approval-native-CBdZsAR7.js → approval-native-CrCc3b4u.js} +2 -2
  7. package/dist/{approval-shared-Ck6TxKgo.js → approval-shared-Ckk65xSG.js} +1 -1
  8. package/dist/{audit-CCJ0h49k.js → audit-BRBe8xFv.js} +4 -4
  9. package/dist/{channel-UXGa9PGc.js → channel-DTBEGHsT.js} +53 -31
  10. package/dist/{channel-actions-Br29_1nE.js → channel-actions-CHgoSpPF.js} +27 -1
  11. package/dist/{channel-actions.runtime-ChmNUig1.js → channel-actions.runtime-E5Plubuu.js} +5 -5
  12. package/dist/channel-config-api.js +1 -1
  13. package/dist/channel-plugin-api.js +1 -1
  14. package/dist/{channel.setup-D_xyQu_h.js → channel.setup-EQXuueIk.js} +3 -3
  15. package/dist/chunk-DYl-_5RL.js +179 -0
  16. package/dist/{components-D5LnN7ZQ.js → components-BJOShoIU.js} +2 -3
  17. package/dist/{config-schema-Cc953rAs.js → config-schema-BGn5I3_3.js} +46 -1
  18. package/dist/contract-api.js +7 -7
  19. package/dist/{conversation-identity-DHhS0ez3.js → conversation-identity-BPQm_uhV.js} +1 -1
  20. package/dist/{directory-config-DoETeOOx.js → directory-config-JBaFwbAQ.js} +1 -1
  21. package/dist/directory-contract-api.js +1 -1
  22. package/dist/{directory-live-DJ0V5asB.js → directory-live-B4kW11z5.js} +2 -2
  23. package/dist/{discord-eZlimVfW.js → discord-DtHMmZqJ.js} +58 -15
  24. package/dist/{doctor-Bo-yifB3.js → doctor-CPV4Ch3V.js} +3 -3
  25. package/dist/{doctor-contract-Bso46EOQ.js → doctor-contract-BGjjFBdq.js} +1 -1
  26. package/dist/doctor-contract-api.js +1 -1
  27. package/dist/{handle-action.guild-admin-sJiQymg8.js → handle-action.guild-admin-DSeMCHvR.js} +6 -3
  28. package/dist/{inbound-context-CRylwjg0.js → inbound-context-BAwOn5Iq.js} +1 -1
  29. package/dist/manager.runtime-DGvCDWI5.js +2082 -0
  30. package/dist/{message-handler-C9Ohf-ea.js → message-handler-BWHSteQf.js} +7 -7
  31. package/dist/{message-handler.preflight-BrvazsYn.js → message-handler.preflight-q7ose9Ta.js} +31 -42
  32. package/dist/{message-handler.process-CEnzuLiN.js → message-handler.process-BN8bE7AE.js} +81 -64
  33. package/dist/{message-utils-9kaGF59d.js → message-utils-DEjCwCRz.js} +2 -2
  34. package/dist/normalize-Cu94FOqy.js +58 -0
  35. package/dist/{outbound-adapter-DNsTVJfH.js → outbound-adapter-Bt8FL3yO.js} +78 -17
  36. package/dist/{outbound-session-route-DK9qkPgP.js → outbound-session-route-BaJRt05p.js} +1 -1
  37. package/dist/{pluralkit-OFss_pIy.js → pluralkit-CUfobeQu.js} +1 -1
  38. package/dist/{preflight-audio-CRmUxxuM.js → preflight-audio-BcsH127L.js} +1 -1
  39. package/dist/{preview-streaming-Cc_oeIPP.js → preview-streaming-DCPAe24T.js} +1 -0
  40. package/dist/{probe.runtime-CMgUDax3.js → probe.runtime-4Q9GD7FG.js} +1 -1
  41. package/dist/{provider-CuOh6z_b.js → provider-DBvvDP9A.js} +185 -225
  42. package/dist/{provider-session.runtime-CCESIHVo.js → provider-session.runtime-DepAOR1U.js} +3 -3
  43. package/dist/provider.runtime-BlbOt97W.js +2 -0
  44. package/dist/{reply-delivery-D9aKHtDH.js → reply-delivery-vHSqaKKo.js} +9 -6
  45. package/dist/{resolve-allowlist-common-_e1cWOb3.js → resolve-allowlist-common-ZcVU4OMA.js} +1 -1
  46. package/dist/{resolve-channels-kyuvrXJg.js → resolve-channels-D9Dubj_y.js} +3 -3
  47. package/dist/{resolve-users-CAwh4EBq.js → resolve-users-DlzKsLQe.js} +2 -2
  48. package/dist/route-resolution-foWW8_D1.js +268 -0
  49. package/dist/runtime-api.actions.js +2 -2
  50. package/dist/runtime-api.js +25 -25
  51. package/dist/runtime-api.lookup.js +6 -6
  52. package/dist/runtime-api.monitor-CsetE9pd.js +6 -0
  53. package/dist/runtime-api.monitor.js +7 -7
  54. package/dist/runtime-api.send.js +5 -5
  55. package/dist/runtime-api.threads.js +5 -5
  56. package/dist/{runtime-D8alY00g.js → runtime-oXRGbcb5.js} +7 -7
  57. package/dist/runtime-setter-api.js +1 -1
  58. package/dist/secret-contract-api.js +1 -1
  59. package/dist/{security-audit-BtRd_VhN.js → security-audit-BQ_sGK3J.js} +1 -1
  60. package/dist/security-audit-contract-api.js +1 -1
  61. package/dist/{security-audit.runtime-Dm1LW9KX.js → security-audit.runtime-B7Gmz2DX.js} +1 -1
  62. package/dist/security-contract-api.js +1 -1
  63. package/dist/{send-8S_HKJpQ.js → send-BSBMchf8.js} +83 -57
  64. package/dist/{send.components-A42c_5tQ.js → send.components-BoEhxys4.js} +22 -15
  65. package/dist/{send.outbound-D3tonSz8.js → send.outbound-B2DK2loZ.js} +22 -11
  66. package/dist/send.receipt-BAZw2Zsz.js +35 -0
  67. package/dist/{send.shared-BQGiUPvZ.js → send.shared-DzwpAEMP.js} +26 -7
  68. package/dist/session-key-api.js +1 -1
  69. package/dist/setup-plugin-api.js +1 -1
  70. package/dist/{shared-BEW4H3bj.js → shared-CBsrEG5q.js} +8 -8
  71. package/dist/{shared-interactive-KgJjCqnB.js → shared-interactive-D39V9Wtn.js} +3 -3
  72. package/dist/{subagent-hooks-T0LPLh4H.js → subagent-hooks-BDy1pJD5.js} +2 -2
  73. package/dist/subagent-hooks-api.js +1 -1
  74. package/dist/{system-events-_fzSG--3.js → system-events-BeVImqnV.js} +1 -1
  75. package/dist/target-parsing-D-H7nnh2.js +51 -0
  76. package/dist/target-resolver-DzOelJEt.js +85 -0
  77. package/dist/targets-Dj-qyUaE.js +3 -0
  78. package/dist/test-api.js +4 -4
  79. package/dist/{thread-bindings-CMpZjP50.js → thread-bindings-DUzBL8jL.js} +7 -7
  80. package/dist/{thread-bindings.discord-api-CwWGoyei.js → thread-bindings.discord-api-dpSDYFKX.js} +7 -7
  81. package/dist/{thread-bindings.manager-BtxfLfWf.js → thread-bindings.manager-DTuwm8Tk.js} +5 -6
  82. package/dist/{thread-bindings.session-updates-jcZSiRPI.js → thread-bindings.session-updates-BhcGQTJb.js} +1 -1
  83. package/dist/{threading-BMmpA2JR.js → threading-CTUnZtNi.js} +4 -5
  84. package/dist/timeouts.js +1 -1
  85. package/dist/{typing-Bw6NKWLZ.js → typing-BYeVSviE.js} +2 -3
  86. package/openclaw.plugin.json +222 -1
  87. package/package.json +5 -5
  88. package/dist/manager.runtime-Cug1PoeZ.js +0 -1025
  89. package/dist/provider.runtime-B68g3qLv.js +0 -2
  90. package/dist/rolldown-runtime-C3SqQTfK.js +0 -28
  91. package/dist/route-resolution-BWErj5Cn.js +0 -236
  92. package/dist/runtime-api.monitor-DzkCxeBL.js +0 -6
  93. package/dist/target-resolver-DA84_xbt.js +0 -365
  94. package/dist/targets-FwL1BPTU.js +0 -2
  95. /package/dist/{agent-components.runtime-Dof1YMSz.js → agent-components.runtime-zT8qPsnM.js} +0 -0
  96. /package/dist/{audit-core-CejGc3hO.js → audit-core-CG37TsZm.js} +0 -0
  97. /package/dist/{channel-access-DFIQqbYm.js → channel-access-BL-wemES.js} +0 -0
  98. /package/dist/{doctor-shared-Cqvfgv9m.js → doctor-shared-D_QLzu30.js} +0 -0
  99. /package/dist/{mentions-BPZUaFk7.js → mentions-f806C7MB.js} +0 -0
  100. /package/dist/{preflight-audio.runtime-DPVbpZid.js → preflight-audio.runtime-fXnUxxBa.js} +0 -0
  101. /package/dist/{probe-E80IMT1X.js → probe-CjO53qsc.js} +0 -0
  102. /package/dist/{runtime-K9RT6Egn.js → runtime-BqCoo-zp.js} +0 -0
  103. /package/dist/{secret-config-contract-5S9U9pjx.js → secret-config-contract-BCQNNS7N.js} +0 -0
  104. /package/dist/{security-contract-BE8rsdPq.js → security-contract-DrbQqyyW.js} +0 -0
  105. /package/dist/{security-doctor-DiilN216.js → security-doctor-BJH5YIGL.js} +0 -0
  106. /package/dist/{sender-identity-BGUfyvOC.js → sender-identity-CDOVm5Dk.js} +0 -0
  107. /package/dist/{session-contract-CuW9Nlxg.js → session-contract-D871HDFG.js} +0 -0
  108. /package/dist/{session-key-normalization-B5La-jFM.js → session-key-normalization-BQNCS1gu.js} +0 -0
  109. /package/dist/{thread-bindings.state-WU4duXKY.js → thread-bindings.state-DwgDYzBM.js} +0 -0
  110. /package/dist/{timeouts-CdsmBWWs.js → timeouts-C3FYXWJX.js} +0 -0
@@ -1,8 +1,8 @@
1
- import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-Bso46EOQ.js";
2
- import { n as secretTargetRegistryEntries, t as collectRuntimeConfigAssignments } from "./secret-config-contract-5S9U9pjx.js";
3
- import { n as unsupportedSecretRefSurfacePatterns, t as collectUnsupportedSecretRefConfigCandidates } from "./security-contract-BE8rsdPq.js";
4
- import { t as deriveLegacySessionChatType } from "./session-contract-CuW9Nlxg.js";
5
- import { r as createThreadBindingManager, t as __testing } from "./thread-bindings.manager-BtxfLfWf.js";
6
- import { n as listDiscordDirectoryGroupsFromConfig, r as listDiscordDirectoryPeersFromConfig } from "./directory-config-DoETeOOx.js";
7
- import { t as collectDiscordSecurityAuditFindings } from "./security-audit-BtRd_VhN.js";
1
+ import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-BGjjFBdq.js";
2
+ import { n as secretTargetRegistryEntries, t as collectRuntimeConfigAssignments } from "./secret-config-contract-BCQNNS7N.js";
3
+ import { n as unsupportedSecretRefSurfacePatterns, t as collectUnsupportedSecretRefConfigCandidates } from "./security-contract-DrbQqyyW.js";
4
+ import { t as deriveLegacySessionChatType } from "./session-contract-D871HDFG.js";
5
+ import { r as createThreadBindingManager, t as __testing } from "./thread-bindings.manager-DTuwm8Tk.js";
6
+ import { n as listDiscordDirectoryGroupsFromConfig, r as listDiscordDirectoryPeersFromConfig } from "./directory-config-JBaFwbAQ.js";
7
+ import { t as collectDiscordSecurityAuditFindings } from "./security-audit-BQ_sGK3J.js";
8
8
  export { collectDiscordSecurityAuditFindings, collectRuntimeConfigAssignments, collectUnsupportedSecretRefConfigCandidates, createThreadBindingManager, deriveLegacySessionChatType, __testing as discordThreadBindingTesting, legacyConfigRules, listDiscordDirectoryGroupsFromConfig, listDiscordDirectoryPeersFromConfig, normalizeCompatibilityConfig, secretTargetRegistryEntries, unsupportedSecretRefSurfacePatterns };
@@ -1,4 +1,4 @@
1
- import { c as parseDiscordTarget } from "./target-resolver-DA84_xbt.js";
1
+ import { t as parseDiscordTarget } from "./target-parsing-D-H7nnh2.js";
2
2
  import { normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
3
3
  //#region extensions/discord/src/conversation-identity.ts
4
4
  function normalizeDiscordTarget(raw, defaultKind) {
@@ -1,4 +1,4 @@
1
- import { t as __exportAll } from "./rolldown-runtime-C3SqQTfK.js";
1
+ import { Pt as __exportAll } from "./discord-DtHMmZqJ.js";
2
2
  import { a as mergeDiscordAccountConfig, c as resolveDiscordAccountAllowFrom, o as resolveDefaultDiscordAccountId } from "./accounts-CaHGiVB4.js";
3
3
  import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
4
4
  import { createResolvedDirectoryEntriesLister } from "openclaw/plugin-sdk/directory-config-runtime";
@@ -1,2 +1,2 @@
1
- import { n as listDiscordDirectoryGroupsFromConfig, r as listDiscordDirectoryPeersFromConfig } from "./directory-config-DoETeOOx.js";
1
+ import { n as listDiscordDirectoryGroupsFromConfig, r as listDiscordDirectoryPeersFromConfig } from "./directory-config-JBaFwbAQ.js";
2
2
  export { listDiscordDirectoryGroupsFromConfig, listDiscordDirectoryPeersFromConfig };
@@ -1,9 +1,9 @@
1
- import { t as __exportAll } from "./rolldown-runtime-C3SqQTfK.js";
1
+ import { Pt as __exportAll } from "./discord-DtHMmZqJ.js";
2
2
  import { t as normalizeDiscordToken } from "./token-BZtonk7d.js";
3
3
  import { s as resolveDiscordAccount } from "./accounts-CaHGiVB4.js";
4
4
  import { t as rememberDiscordDirectoryUser } from "./directory-cache-D93eSrpB.js";
5
5
  import { n as fetchDiscord } from "./api-DzNBVTto.js";
6
- import { a as normalizeDiscordSlug } from "./allow-list-ek-1hMKN.js";
6
+ import { a as normalizeDiscordSlug } from "./allow-list-4wnZg5P9.js";
7
7
  import { normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/text-runtime";
8
8
  //#region extensions/discord/src/directory-live.ts
9
9
  var directory_live_exports = /* @__PURE__ */ __exportAll({
@@ -1,11 +1,37 @@
1
- import { n as __reExport, t as __exportAll } from "./rolldown-runtime-C3SqQTfK.js";
1
+ import "node:module";
2
2
  import { ApplicationCommandOptionType, ApplicationCommandType, ButtonStyle, ComponentType, GatewayDispatchEvents, InteractionContextType, InteractionResponseType, InteractionType, MessageFlags, Routes, TextInputStyle } from "discord-api-types/v10";
3
3
  import { createHash, randomBytes } from "node:crypto";
4
- import fs from "node:fs/promises";
5
4
  import path from "node:path";
5
+ import { privateFileStore } from "openclaw/plugin-sdk/security-runtime";
6
6
  import { Type } from "typebox";
7
7
  import { Check } from "typebox/value";
8
8
  import { inspect } from "node:util";
9
+ //#region \0rolldown/runtime.js
10
+ var __defProp = Object.defineProperty;
11
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
+ var __getOwnPropNames = Object.getOwnPropertyNames;
13
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
14
+ var __exportAll = (all, no_symbols) => {
15
+ let target = {};
16
+ for (var name in all) __defProp(target, name, {
17
+ get: all[name],
18
+ enumerable: true
19
+ });
20
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
21
+ return target;
22
+ };
23
+ var __copyProps = (to, from, except, desc) => {
24
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
25
+ key = keys[i];
26
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
27
+ get: ((k) => from[k]).bind(null, key),
28
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
29
+ });
30
+ }
31
+ return to;
32
+ };
33
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
34
+ //#endregion
9
35
  //#region extensions/discord/src/internal/api.commands.ts
10
36
  async function listApplicationCommands(rest, clientId) {
11
37
  return await rest.get(Routes.applicationCommands(clientId));
@@ -255,9 +281,8 @@ var DiscordCommandDeployer = class {
255
281
  const storePath = this.params.hashStorePath;
256
282
  if (!storePath) return;
257
283
  try {
258
- const raw = await fs.readFile(storePath, "utf8");
259
- const parsed = JSON.parse(raw);
260
- if (!parsed.hashes || typeof parsed.hashes !== "object") return;
284
+ const parsed = await privateFileStore(path.dirname(storePath)).readJsonIfExists(path.basename(storePath));
285
+ if (!parsed?.hashes || typeof parsed.hashes !== "object") return;
261
286
  for (const [key, value] of Object.entries(parsed.hashes)) if (typeof value === "string" && key.trim() && value.trim()) this.hashes.set(key, value);
262
287
  } catch {}
263
288
  }
@@ -265,14 +290,11 @@ var DiscordCommandDeployer = class {
265
290
  const storePath = this.params.hashStorePath;
266
291
  if (!storePath) return;
267
292
  try {
268
- await fs.mkdir(path.dirname(storePath), { recursive: true });
269
- const tmpPath = `${storePath}.${process.pid}.${Date.now()}.tmp`;
270
- await fs.writeFile(tmpPath, `${JSON.stringify({
293
+ await privateFileStore(path.dirname(storePath)).writeJson(path.basename(storePath), {
271
294
  version: 1,
272
295
  updatedAt: (/* @__PURE__ */ new Date()).toISOString(),
273
296
  hashes: Object.fromEntries([...this.hashes.entries()].toSorted(([left], [right]) => left.localeCompare(right)))
274
- }, null, 2)}\n`, "utf8");
275
- await fs.rename(tmpPath, storePath);
297
+ }, { trailingNewline: true });
276
298
  } catch {}
277
299
  }
278
300
  get rest() {
@@ -1071,6 +1093,7 @@ const DEFAULT_SLOW_LISTENER_THRESHOLD_MS = 3e4;
1071
1093
  var DiscordEventQueue = class {
1072
1094
  constructor(options = {}) {
1073
1095
  this.queue = [];
1096
+ this.queueHead = 0;
1074
1097
  this.processing = 0;
1075
1098
  this.processedCount = 0;
1076
1099
  this.droppedCount = 0;
@@ -1083,7 +1106,7 @@ var DiscordEventQueue = class {
1083
1106
  };
1084
1107
  }
1085
1108
  enqueue(params) {
1086
- if (this.queue.length >= this.options.maxQueueSize) {
1109
+ if (this.pendingQueueSize >= this.options.maxQueueSize) {
1087
1110
  this.droppedCount += 1;
1088
1111
  return Promise.reject(/* @__PURE__ */ new Error(`Discord event queue is full for ${params.eventType}; maxQueueSize=${this.options.maxQueueSize}`));
1089
1112
  }
@@ -1098,7 +1121,7 @@ var DiscordEventQueue = class {
1098
1121
  }
1099
1122
  getMetrics() {
1100
1123
  return {
1101
- queueSize: this.queue.length,
1124
+ queueSize: this.pendingQueueSize,
1102
1125
  processing: this.processing,
1103
1126
  processed: this.processedCount,
1104
1127
  dropped: this.droppedCount,
@@ -1107,9 +1130,29 @@ var DiscordEventQueue = class {
1107
1130
  maxConcurrency: this.options.maxConcurrency
1108
1131
  };
1109
1132
  }
1133
+ get pendingQueueSize() {
1134
+ return Math.max(0, this.queue.length - this.queueHead);
1135
+ }
1136
+ takeNextJob() {
1137
+ if (this.queueHead >= this.queue.length) {
1138
+ this.queue.length = 0;
1139
+ this.queueHead = 0;
1140
+ return;
1141
+ }
1142
+ const job = this.queue[this.queueHead];
1143
+ this.queueHead += 1;
1144
+ if (this.queueHead >= this.queue.length) {
1145
+ this.queue.length = 0;
1146
+ this.queueHead = 0;
1147
+ } else if (this.queueHead > 256 && this.queueHead * 2 > this.queue.length) {
1148
+ this.queue.splice(0, this.queueHead);
1149
+ this.queueHead = 0;
1150
+ }
1151
+ return job;
1152
+ }
1110
1153
  processNext() {
1111
- while (this.processing < this.options.maxConcurrency && this.queue.length > 0) {
1112
- const job = this.queue.shift();
1154
+ while (this.processing < this.options.maxConcurrency && this.pendingQueueSize > 0) {
1155
+ const job = this.takeNextJob();
1113
1156
  if (!job) return;
1114
1157
  this.processing += 1;
1115
1158
  this.runJob(job).then(job.resolve, job.reject).finally(() => {
@@ -2748,4 +2791,4 @@ var discord_exports = /* @__PURE__ */ __exportAll({
2748
2791
  import * as import_discord_api_types_v10 from "discord-api-types/v10";
2749
2792
  __reExport(discord_exports, import_discord_api_types_v10);
2750
2793
  //#endregion
2751
- export { createChannelMessage as $, Button as A, putChannelPermission as At, Separator as B, User as C, getGuildVoiceState as Ct, Modal as D, listGuildRoles as Dt, Label as E, listGuildEmojis as Et, MediaGallery as F, BaseMessageInteractiveComponent as G, TextDisplay as H, MentionableSelectMenu as I, createUserDmChannel as J, parseCustomId as K, RoleSelectMenu as L, Container as M, removeGuildMemberRole as Mt, File as N, timeoutGuildMember as Nt, RadioGroup as O, listGuildScheduledEvents as Ot, LinkButton as P, listMessageReactionUsers as Q, Row as R, Message as S, getGuildMember as St, CheckboxGroup as T, listGuildChannels as Tt, Thumbnail as U, StringSelectMenu as V, UserSelectMenu as W, createOwnMessageReaction as X, getCurrentUser as Y, deleteOwnMessageReaction as Z, readDiscordMessage as _, createGuildEmoji as _t, MessageReactionRemoveListener as a, getChannel as at, CommandWithSubcommands as b, deleteChannelPermission as bt, ResumedListener as c, listChannelMessages as ct, Client as d, searchGuildMessages as dt, createThread as et, Plugin as f, sendChannelTyping as ft, readDiscordCode as g, createGuildChannel as gt, RateLimitError as h, createGuildBan as ht, MessageReactionAddListener as i, editChannelMessage as it, ChannelSelectMenu as j, removeGuildMember as jt, TextInput as k, moveGuildChannels as kt, ThreadUpdateListener as l, listChannelPins as lt, DiscordError as m, addGuildMemberRole as mt, InteractionCreateListener as n, deleteChannelMessage as nt, PresenceUpdateListener as o, getChannelMessage as ot, RequestClient as p, unpinChannelMessage as pt, createChannelWebhook as q, MessageCreateListener as r, editChannel as rt, ReadyListener as s, listChannelArchivedThreads as st, discord_exports as t, deleteChannel as tt, Embed as u, pinChannelMessage as ut, readRetryAfter as v, createGuildScheduledEvent as vt, serializePayload as w, listGuildActiveThreads as wt, Guild as x, getGuild as xt, Command as y, createGuildSticker as yt, Section as z };
2794
+ export { createChannelMessage as $, Button as A, putChannelPermission as At, Separator as B, User as C, getGuildVoiceState as Ct, Modal as D, listGuildRoles as Dt, Label as E, listGuildEmojis as Et, MediaGallery as F, BaseMessageInteractiveComponent as G, TextDisplay as H, MentionableSelectMenu as I, createUserDmChannel as J, parseCustomId as K, RoleSelectMenu as L, Container as M, removeGuildMemberRole as Mt, File as N, timeoutGuildMember as Nt, RadioGroup as O, listGuildScheduledEvents as Ot, LinkButton as P, __exportAll as Pt, listMessageReactionUsers as Q, Row as R, Message as S, getGuildMember as St, CheckboxGroup as T, listGuildChannels as Tt, Thumbnail as U, StringSelectMenu as V, UserSelectMenu as W, createOwnMessageReaction as X, getCurrentUser as Y, deleteOwnMessageReaction as Z, readDiscordMessage as _, createGuildEmoji as _t, MessageReactionRemoveListener as a, getChannel as at, CommandWithSubcommands as b, deleteChannelPermission as bt, ResumedListener as c, listChannelMessages as ct, Client as d, searchGuildMessages as dt, createThread as et, Plugin as f, sendChannelTyping as ft, readDiscordCode as g, createGuildChannel as gt, RateLimitError as h, createGuildBan as ht, MessageReactionAddListener as i, editChannelMessage as it, ChannelSelectMenu as j, removeGuildMember as jt, TextInput as k, moveGuildChannels as kt, ThreadUpdateListener as l, listChannelPins as lt, DiscordError as m, addGuildMemberRole as mt, InteractionCreateListener as n, deleteChannelMessage as nt, PresenceUpdateListener as o, getChannelMessage as ot, RequestClient as p, unpinChannelMessage as pt, createChannelWebhook as q, MessageCreateListener as r, editChannel as rt, ReadyListener as s, listChannelArchivedThreads as st, discord_exports as t, deleteChannel as tt, Embed as u, pinChannelMessage as ut, readRetryAfter as v, createGuildScheduledEvent as vt, serializePayload as w, listGuildActiveThreads as wt, Guild as x, getGuild as xt, Command as y, createGuildSticker as yt, Section as z };
@@ -1,8 +1,8 @@
1
1
  import { o as resolveDefaultDiscordAccountId } from "./accounts-CaHGiVB4.js";
2
2
  import { t as inspectDiscordAccount } from "./account-inspect-BcQAxhKY.js";
3
- import { n as normalizeCompatibilityConfig } from "./doctor-contract-Bso46EOQ.js";
4
- import { t as DISCORD_LEGACY_CONFIG_RULES } from "./doctor-shared-Cqvfgv9m.js";
5
- import { t as isDiscordMutableAllowEntry } from "./security-doctor-DiilN216.js";
3
+ import { n as normalizeCompatibilityConfig } from "./doctor-contract-BGjjFBdq.js";
4
+ import { t as DISCORD_LEGACY_CONFIG_RULES } from "./doctor-shared-D_QLzu30.js";
5
+ import { t as isDiscordMutableAllowEntry } from "./security-doctor-BJH5YIGL.js";
6
6
  import { normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
7
7
  import { collectProviderDangerousNameMatchingScopes } from "openclaw/plugin-sdk/runtime-doctor";
8
8
  //#region extensions/discord/src/doctor.ts
@@ -1,4 +1,4 @@
1
- import { t as resolveDiscordPreviewStreamMode } from "./preview-streaming-Cc_oeIPP.js";
1
+ import { t as resolveDiscordPreviewStreamMode } from "./preview-streaming-DCPAe24T.js";
2
2
  import { asObjectRecord, normalizeLegacyChannelAliases } from "openclaw/plugin-sdk/runtime-doctor";
3
3
  //#region extensions/discord/src/doctor-contract.ts
4
4
  const LEGACY_TTS_PROVIDER_KEYS = [
@@ -1,2 +1,2 @@
1
- import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-Bso46EOQ.js";
1
+ import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-BGjjFBdq.js";
2
2
  export { legacyConfigRules, normalizeCompatibilityConfig };
@@ -1,4 +1,4 @@
1
- import { a as readDiscordChannelCreateParams, n as isDiscordModerationAction, o as readDiscordChannelEditParams, r as readDiscordModerationCommand, s as readDiscordChannelMoveParams, t as handleDiscordAction } from "./runtime-D8alY00g.js";
1
+ import { a as readDiscordChannelCreateParams, n as isDiscordModerationAction, o as readDiscordChannelEditParams, r as readDiscordModerationCommand, s as readDiscordChannelMoveParams, t as handleDiscordAction } from "./runtime-oXRGbcb5.js";
2
2
  import "./action-runtime-api.js";
3
3
  import { normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
4
4
  import { readNumberParam, readStringArrayParam, readStringParam } from "openclaw/plugin-sdk/agent-runtime";
@@ -251,7 +251,7 @@ async function tryHandleDiscordMessageActionGuildAdmin(params) {
251
251
  }
252
252
  if (action === "thread-reply") {
253
253
  const content = readStringParam(actionParams, "message", { required: true });
254
- const mediaUrl = readStringParam(actionParams, "media", { trim: false });
254
+ const mediaUrl = readStringParam(actionParams, "media", { trim: false }) ?? readStringParam(actionParams, "path", { trim: false }) ?? readStringParam(actionParams, "filePath", { trim: false });
255
255
  const replyTo = readStringParam(actionParams, "replyTo");
256
256
  const channelId = readStringParam(actionParams, "threadId") ?? resolveChannelId();
257
257
  return await handleDiscordAction({
@@ -261,7 +261,10 @@ async function tryHandleDiscordMessageActionGuildAdmin(params) {
261
261
  content,
262
262
  mediaUrl: mediaUrl ?? void 0,
263
263
  replyTo: replyTo ?? void 0
264
- }, cfg);
264
+ }, cfg, {
265
+ mediaLocalRoots: ctx.mediaLocalRoots,
266
+ mediaReadFile: ctx.mediaReadFile
267
+ });
265
268
  }
266
269
  if (action === "search") {
267
270
  const guildId = readStringParam(actionParams, "guildId", { required: true });
@@ -1,4 +1,4 @@
1
- import { h as resolveDiscordOwnerAllowFrom, p as resolveDiscordMemberAllowed } from "./allow-list-ek-1hMKN.js";
1
+ import { h as resolveDiscordOwnerAllowFrom, p as resolveDiscordMemberAllowed } from "./allow-list-4wnZg5P9.js";
2
2
  import { buildUntrustedChannelMetadata, wrapExternalContent } from "openclaw/plugin-sdk/security-runtime";
3
3
  //#region extensions/discord/src/monitor/inbound-context.ts
4
4
  function createDiscordSupplementalContextAccessChecker(params) {