@openclaw/discord 2026.5.16-beta.4 → 2026.5.16-beta.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 (62) hide show
  1. package/dist/{account-inspect-B_N30NV0.js → account-inspect-DCXwNu_u.js} +1 -1
  2. package/dist/account-inspect-api.js +1 -1
  3. package/dist/{accounts-DnNVBDfc.js → accounts-ltxKLzxN.js} +4 -1
  4. package/dist/action-runtime-api.js +1 -1
  5. package/dist/api.js +13 -13
  6. package/dist/{approval-handler.runtime-B5Dd-jlK.js → approval-handler.runtime-CpNuGEHP.js} +3 -3
  7. package/dist/{audit-CPAL0IL6.js → audit-CniGmJUL.js} +3 -3
  8. package/dist/{channel-DeO4mqqA.js → channel-BN96pzUF.js} +16 -16
  9. package/dist/{channel-actions--MV0t13k.js → channel-actions-DRqDFJUk.js} +4 -4
  10. package/dist/{channel-actions.runtime-G9ARNi7H.js → channel-actions.runtime-DVnGrlsm.js} +4 -4
  11. package/dist/channel-config-api.js +1 -1
  12. package/dist/channel-plugin-api.js +1 -1
  13. package/dist/{channel.setup-DMqaeOeB.js → channel.setup-D1j7U4B3.js} +4 -4
  14. package/dist/{components-Cgm7XT8-.js → components-KsP3ijoj.js} +36 -3
  15. package/dist/{config-schema-B6sPhXLp.js → config-schema-jz2FX2x5.js} +4 -0
  16. package/dist/contract-api.js +2 -2
  17. package/dist/{conversation-identity-Bpwp-7uO.js → conversation-identity-CYgemFy7.js} +2 -2
  18. package/dist/{directory-config-mr3WFi1h.js → directory-config-B5jO6mjo.js} +1 -1
  19. package/dist/directory-contract-api.js +1 -1
  20. package/dist/{directory-live-MrDSKsMf.js → directory-live-D5VrQBC7.js} +1 -1
  21. package/dist/{doctor-DfHqek8h.js → doctor-CzcS8Yt1.js} +3 -3
  22. package/dist/{handle-action.guild-admin-DUVD8LGs.js → handle-action.guild-admin-CqCngm8I.js} +1 -1
  23. package/dist/{manager.runtime-BsOZkg8V.js → manager.runtime-M7DBhy6O.js} +3 -3
  24. package/dist/{message-handler-B-SLojCO.js → message-handler-COfX_LVy.js} +5 -5
  25. package/dist/{message-handler.preflight-DPcejg12.js → message-handler.preflight-C8r_m521.js} +8 -8
  26. package/dist/{message-handler.process-B9kCtqjZ.js → message-handler.process-C-2YTjrL.js} +88 -20
  27. package/dist/{message-utils-BZoXOhcI.js → message-utils-BZriBbcg.js} +1 -1
  28. package/dist/{outbound-adapter-DyTqAH35.js → outbound-adapter-C54-43UU.js} +25 -7
  29. package/dist/{probe-DW9lJUZB.js → probe-BLDNbk41.js} +1 -1
  30. package/dist/{probe.runtime-CvMZb8ZL.js → probe.runtime-DKB38YvU.js} +1 -1
  31. package/dist/{provider-BYIVfxV_.js → provider-BdUg28Bu.js} +42 -28
  32. package/dist/{provider-session.runtime-B-8Gitv9.js → provider-session.runtime-B0l5ERJI.js} +3 -3
  33. package/dist/provider.runtime-BXfPVafJ.js +2 -0
  34. package/dist/{resolve-allowlist-common-COuUtNM8.js → resolve-allowlist-common-C8L5MYFl.js} +1 -1
  35. package/dist/{resolve-channels-CerN-VOT.js → resolve-channels-AxDQ4jXh.js} +1 -1
  36. package/dist/{resolve-users-DIG4uHLS.js → resolve-users-D7w0icpA.js} +1 -1
  37. package/dist/{runtime-ToiiUiXe.js → runtime-CqTcWrem.js} +7 -7
  38. package/dist/runtime-api.actions.js +2 -2
  39. package/dist/runtime-api.js +19 -19
  40. package/dist/runtime-api.lookup.js +5 -5
  41. package/dist/runtime-api.monitor-Vhw0bH2K.js +5 -0
  42. package/dist/runtime-api.monitor.js +4 -4
  43. package/dist/runtime-api.send.js +5 -5
  44. package/dist/runtime-api.threads.js +3 -3
  45. package/dist/{send-CvXckvRn.js → send-DuW4qqIK.js} +3 -3
  46. package/dist/{send.components-BlNbbG3H.js → send.components-BjAjvjmT.js} +4 -4
  47. package/dist/{send.outbound-BKh71kjw.js → send.outbound-PAYV11wW.js} +3 -3
  48. package/dist/{send.shared-Bdj-DP6-.js → send.shared-CJ6oJrVc.js} +2 -2
  49. package/dist/setup-plugin-api.js +1 -1
  50. package/dist/{shared-CpwVKWm5.js → shared-CYe5A_Bs.js} +4 -4
  51. package/dist/{subagent-hooks-DguyFWsd.js → subagent-hooks-CnPSppNz.js} +2 -2
  52. package/dist/subagent-hooks-api.js +1 -1
  53. package/dist/{target-resolver-BsGT9hI7.js → target-resolver-CgtNlbhO.js} +2 -2
  54. package/dist/{targets-DwW6OieO.js → targets-Z4SW2zZs.js} +1 -1
  55. package/dist/test-api.js +3 -3
  56. package/dist/{thread-bindings-CqKojFDg.js → thread-bindings-CXZ2h9DB.js} +3 -3
  57. package/dist/{thread-bindings.discord-api-BQJf05t-.js → thread-bindings.discord-api-_zMU4M2x.js} +3 -3
  58. package/dist/{thread-bindings.manager-kjSGaifo.js → thread-bindings.manager-XKdkYEit.js} +2 -2
  59. package/openclaw.plugin.json +14 -0
  60. package/package.json +4 -4
  61. package/dist/provider.runtime-BZj7ZoKH.js +0 -2
  62. package/dist/runtime-api.monitor-DJZRR16k.js +0 -5
@@ -1,4 +1,4 @@
1
- import { a as mergeDiscordAccountConfig, l as resolveDiscordAccountConfig, o as resolveDefaultDiscordAccountId } from "./accounts-DnNVBDfc.js";
1
+ import { a as mergeDiscordAccountConfig, l as resolveDiscordAccountConfig, o as resolveDefaultDiscordAccountId } from "./accounts-ltxKLzxN.js";
2
2
  import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-id";
3
3
  import { hasConfiguredSecretInput, normalizeSecretInputString } from "openclaw/plugin-sdk/secret-input";
4
4
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -1,4 +1,4 @@
1
- import { t as inspectDiscordAccount } from "./account-inspect-B_N30NV0.js";
1
+ import { t as inspectDiscordAccount } from "./account-inspect-DCXwNu_u.js";
2
2
  //#region extensions/discord/account-inspect-api.ts
3
3
  function inspectDiscordReadOnlyAccount(cfg, accountId) {
4
4
  return inspectDiscordAccount({
@@ -95,7 +95,10 @@ function resolveDiscordToken(cfg, opts = {}) {
95
95
  }
96
96
  //#endregion
97
97
  //#region extensions/discord/src/accounts.ts
98
- const { listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("discord");
98
+ const { listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("discord", { implicitDefaultAccount: {
99
+ channelKeys: ["token"],
100
+ envVars: ["DISCORD_BOT_TOKEN"]
101
+ } });
99
102
  const listDiscordAccountIds = listAccountIds;
100
103
  const resolveDefaultDiscordAccountId = resolveDefaultAccountId;
101
104
  function resolveDiscordAccountConfig(cfg, accountId) {
@@ -1,2 +1,2 @@
1
- import { t as handleDiscordAction } from "./runtime-ToiiUiXe.js";
1
+ import { t as handleDiscordAction } from "./runtime-CqTcWrem.js";
2
2
  export { handleDiscordAction };
package/dist/api.js CHANGED
@@ -1,23 +1,23 @@
1
1
  import { Ht as parseDiscordTarget, Ut as resolveDiscordChannelId, a as normalizeDiscordMessagingTarget, i as looksLikeDiscordTargetId, o as normalizeDiscordOutboundTarget } from "./send.receipt-nKLxvA1s.js";
2
- import { a as mergeDiscordAccountConfig, f as resolveDiscordMaxLinesPerMessage, i as listEnabledDiscordAccounts, l as resolveDiscordAccountConfig, o as resolveDefaultDiscordAccountId, r as listDiscordAccountIds, s as resolveDiscordAccount, t as createDiscordActionGate } from "./accounts-DnNVBDfc.js";
3
- import { t as inspectDiscordAccount } from "./account-inspect-B_N30NV0.js";
4
- import { _ as parseDiscordComponentCustomId, b as parseDiscordModalCustomIdForInteraction, c as buildDiscordComponentMessage, d as readDiscordComponentSpec, f as resolveDiscordComponentAttachmentName, g as buildDiscordModalCustomId, h as buildDiscordComponentCustomId, l as buildDiscordComponentMessageFlags, m as DISCORD_MODAL_CUSTOM_ID_KEY, n as formatDiscordComponentEventText, o as DiscordFormModal, p as DISCORD_COMPONENT_CUSTOM_ID_KEY, r as buildDiscordInteractiveComponents, s as createDiscordFormModal, u as DISCORD_COMPONENT_ATTACHMENT_PREFIX, v as parseDiscordComponentCustomIdForInteraction, y as parseDiscordModalCustomId } from "./components-Cgm7XT8-.js";
2
+ import { a as mergeDiscordAccountConfig, f as resolveDiscordMaxLinesPerMessage, i as listEnabledDiscordAccounts, l as resolveDiscordAccountConfig, o as resolveDefaultDiscordAccountId, r as listDiscordAccountIds, s as resolveDiscordAccount, t as createDiscordActionGate } from "./accounts-ltxKLzxN.js";
3
+ import { t as inspectDiscordAccount } from "./account-inspect-DCXwNu_u.js";
4
+ import { _ as parseDiscordComponentCustomId, b as parseDiscordModalCustomIdForInteraction, c as buildDiscordComponentMessage, d as readDiscordComponentSpec, f as resolveDiscordComponentAttachmentName, g as buildDiscordModalCustomId, h as buildDiscordComponentCustomId, l as buildDiscordComponentMessageFlags, m as DISCORD_MODAL_CUSTOM_ID_KEY, n as formatDiscordComponentEventText, o as DiscordFormModal, p as DISCORD_COMPONENT_CUSTOM_ID_KEY, r as buildDiscordInteractiveComponents, s as createDiscordFormModal, u as DISCORD_COMPONENT_ATTACHMENT_PREFIX, v as parseDiscordComponentCustomIdForInteraction, y as parseDiscordModalCustomId } from "./components-KsP3ijoj.js";
5
5
  import { n as fetchDiscord, r as requestDiscord, t as DiscordApiError } from "./api-DgQLz1wq.js";
6
- import { i as parseDiscordSendTarget, n as resolveDiscordTarget } from "./target-resolver-BsGT9hI7.js";
7
- import "./targets-DwW6OieO.js";
8
- import { a as getDiscordExecApprovalApprovers, c as shouldSuppressLocalDiscordExecApprovalPrompt, o as isDiscordExecApprovalApprover, s as isDiscordExecApprovalClientEnabled } from "./conversation-identity-Bpwp-7uO.js";
9
- import { i as resolveDiscordGroupToolPolicy, n as collectDiscordStatusIssues, r as resolveDiscordGroupRequireMention, t as discordPlugin } from "./channel-DeO4mqqA.js";
6
+ import { i as parseDiscordSendTarget, n as resolveDiscordTarget } from "./target-resolver-CgtNlbhO.js";
7
+ import "./targets-Z4SW2zZs.js";
8
+ import { a as getDiscordExecApprovalApprovers, c as shouldSuppressLocalDiscordExecApprovalPrompt, o as isDiscordExecApprovalApprover, s as isDiscordExecApprovalClientEnabled } from "./conversation-identity-CYgemFy7.js";
9
+ import { i as resolveDiscordGroupToolPolicy, n as collectDiscordStatusIssues, r as resolveDiscordGroupRequireMention, t as discordPlugin } from "./channel-BN96pzUF.js";
10
10
  import { t as normalizeExplicitDiscordSessionKey } from "./session-key-normalization-DnCXUKGA.js";
11
- import { t as discordSetupPlugin } from "./channel.setup-DMqaeOeB.js";
12
- import { n as handleDiscordSubagentEnded, r as handleDiscordSubagentSpawning, t as handleDiscordSubagentDeliveryTarget } from "./subagent-hooks-DguyFWsd.js";
13
- import { t as tryHandleDiscordMessageActionGuildAdmin } from "./handle-action.guild-admin-DUVD8LGs.js";
14
- import { n as listDiscordDirectoryGroupsFromConfig, r as listDiscordDirectoryPeersFromConfig } from "./directory-config-mr3WFi1h.js";
11
+ import { t as discordSetupPlugin } from "./channel.setup-D1j7U4B3.js";
12
+ import { n as handleDiscordSubagentEnded, r as handleDiscordSubagentSpawning, t as handleDiscordSubagentDeliveryTarget } from "./subagent-hooks-CnPSppNz.js";
13
+ import { t as tryHandleDiscordMessageActionGuildAdmin } from "./handle-action.guild-admin-CqCngm8I.js";
14
+ import { n as listDiscordDirectoryGroupsFromConfig, r as listDiscordDirectoryPeersFromConfig } from "./directory-config-B5jO6mjo.js";
15
15
  import { t as fetchPluralKitMessageInfo } from "./pluralkit-BHV93ojA.js";
16
- import { a as resolveDiscordPrivilegedIntentsFromFlags, i as probeDiscord, n as fetchDiscordApplicationSummary, r as parseApplicationIdFromToken, t as fetchDiscordApplicationId } from "./probe-DW9lJUZB.js";
16
+ import { a as resolveDiscordPrivilegedIntentsFromFlags, i as probeDiscord, n as fetchDiscordApplicationSummary, r as parseApplicationIdFromToken, t as fetchDiscordApplicationId } from "./probe-BLDNbk41.js";
17
17
  import { t as collectDiscordSecurityAuditFindings } from "./security-audit-Dx3j4a0l.js";
18
18
  import { a as mergeAbortSignals, 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-CEwuGaWT.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-G9ARNi7H.js")).handleDiscordMessageAction(...args);
21
+ const handleDiscordMessageAction = async (...args) => (await import("./channel-actions.runtime-DVnGrlsm.js")).handleDiscordMessageAction(...args);
22
22
  //#endregion
23
23
  export { DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS, DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, DISCORD_COMPONENT_ATTACHMENT_PREFIX, DISCORD_COMPONENT_CUSTOM_ID_KEY, DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, DISCORD_MODAL_CUSTOM_ID_KEY, DiscordApiError, DiscordFormModal, buildDiscordComponentCustomId, buildDiscordComponentMessage, buildDiscordComponentMessageFlags, buildDiscordInteractiveComponents, buildDiscordModalCustomId, collectDiscordSecurityAuditFindings, collectDiscordStatusIssues, createDiscordActionGate, createDiscordFormModal, discordPlugin, discordSetupPlugin, fetchDiscord, fetchDiscordApplicationId, fetchDiscordApplicationSummary, fetchPluralKitMessageInfo, formatDiscordComponentEventText, getDiscordExecApprovalApprovers, handleDiscordMessageAction, handleDiscordSubagentDeliveryTarget, handleDiscordSubagentEnded, handleDiscordSubagentSpawning, inspectDiscordAccount, isDiscordExecApprovalApprover, isDiscordExecApprovalClientEnabled, listDiscordAccountIds, listDiscordDirectoryGroupsFromConfig, listDiscordDirectoryPeersFromConfig, listEnabledDiscordAccounts, looksLikeDiscordTargetId, mergeAbortSignals, mergeDiscordAccountConfig, normalizeDiscordMessagingTarget, normalizeDiscordOutboundTarget, normalizeExplicitDiscordSessionKey, parseApplicationIdFromToken, parseDiscordComponentCustomId, parseDiscordComponentCustomIdForInteraction as parseDiscordComponentCustomIdForCarbon, parseDiscordComponentCustomIdForInteraction, parseDiscordModalCustomId, parseDiscordModalCustomIdForInteraction as parseDiscordModalCustomIdForCarbon, parseDiscordModalCustomIdForInteraction, parseDiscordSendTarget, parseDiscordTarget, probeDiscord, readDiscordComponentSpec, requestDiscord, resolveDefaultDiscordAccountId, resolveDiscordAccount, resolveDiscordAccountConfig, resolveDiscordChannelId, resolveDiscordComponentAttachmentName, resolveDiscordGroupRequireMention, resolveDiscordGroupToolPolicy, resolveDiscordMaxLinesPerMessage, resolveDiscordPrivilegedIntentsFromFlags, resolveDiscordRuntimeGroupPolicy, resolveDiscordTarget, shouldSuppressLocalDiscordExecApprovalPrompt, tryHandleDiscordMessageActionGuildAdmin };
@@ -1,7 +1,7 @@
1
1
  import { B as Container, J as Separator, K as Row, M as serializePayload, R as Button, Wt as __exportAll, X as TextDisplay, ft as editChannelMessage, nt as createUserDmChannel, st as createChannelMessage, ut as deleteChannelMessage } from "./send.receipt-nKLxvA1s.js";
2
- import { t as inspectDiscordAccount } from "./account-inspect-B_N30NV0.js";
3
- import { M as createDiscordClient, b as stripUndefinedFields } from "./send.shared-Bdj-DP6-.js";
4
- import { i as shouldHandleDiscordApprovalRequest, s as isDiscordExecApprovalClientEnabled } from "./conversation-identity-Bpwp-7uO.js";
2
+ import { t as inspectDiscordAccount } from "./account-inspect-DCXwNu_u.js";
3
+ import { M as createDiscordClient, b as stripUndefinedFields } from "./send.shared-CJ6oJrVc.js";
4
+ import { i as shouldHandleDiscordApprovalRequest, s as isDiscordExecApprovalClientEnabled } from "./conversation-identity-CYgemFy7.js";
5
5
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { ButtonStyle } from "discord-api-types/v10";
7
7
  import { logDebug, logError } from "openclaw/plugin-sdk/logging-core";
@@ -1,7 +1,7 @@
1
1
  import { Wt as __exportAll } from "./send.receipt-nKLxvA1s.js";
2
- import { t as inspectDiscordAccount } from "./account-inspect-B_N30NV0.js";
3
- import { E as fetchChannelPermissionsDiscord } from "./send.shared-Bdj-DP6-.js";
4
- import "./send-CvXckvRn.js";
2
+ import { t as inspectDiscordAccount } from "./account-inspect-DCXwNu_u.js";
3
+ import { E as fetchChannelPermissionsDiscord } from "./send.shared-CJ6oJrVc.js";
4
+ import "./send-DuW4qqIK.js";
5
5
  import { n as collectDiscordAuditChannelIdsForAccount, t as auditDiscordChannelPermissionsWithFetcher } from "./audit-core-DRyoXREU.js";
6
6
  //#region extensions/discord/src/audit.ts
7
7
  var audit_exports = /* @__PURE__ */ __exportAll({
@@ -1,14 +1,14 @@
1
1
  import { Ht as parseDiscordTarget, a as normalizeDiscordMessagingTarget, i as looksLikeDiscordTargetId } from "./send.receipt-nKLxvA1s.js";
2
- import { c as resolveDiscordAccountAllowFrom, r as listDiscordAccountIds, s as resolveDiscordAccount } from "./accounts-DnNVBDfc.js";
2
+ import { c as resolveDiscordAccountAllowFrom, r as listDiscordAccountIds, s as resolveDiscordAccount } from "./accounts-ltxKLzxN.js";
3
3
  import { a as projectCredentialSnapshotFields, n as PAIRING_APPROVED_MESSAGE, o as resolveConfiguredFromCredentialStatuses, r as buildTokenChannelStatusSummary, t as DEFAULT_ACCOUNT_ID } from "./channel-api-JudoSiJv.js";
4
- import { x as resolveDiscordOutboundSessionRoute } from "./components-Cgm7XT8-.js";
4
+ import { x as resolveDiscordOutboundSessionRoute } from "./components-KsP3ijoj.js";
5
5
  import { t as getDiscordRuntime } from "./runtime-Tqtvj5GX.js";
6
- import { c as shouldSuppressLocalDiscordExecApprovalPrompt, n as resolveDiscordCurrentConversationIdentity, r as getDiscordApprovalCapability } from "./conversation-identity-Bpwp-7uO.js";
6
+ import { c as shouldSuppressLocalDiscordExecApprovalPrompt, n as resolveDiscordCurrentConversationIdentity, r as getDiscordApprovalCapability } from "./conversation-identity-CYgemFy7.js";
7
7
  import { r as resolveRequiredDiscordChannelPermissions } from "./audit-core-DRyoXREU.js";
8
- import { t as discordMessageActions$1 } from "./channel-actions--MV0t13k.js";
8
+ import { t as discordMessageActions$1 } from "./channel-actions-DRqDFJUk.js";
9
9
  import { n as setThreadBindingMaxAgeBySessionKey, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-CgOqEOPe.js";
10
- import { n as discordOutbound } from "./outbound-adapter-DyTqAH35.js";
11
- import { a as discordSecurityAdapter, i as discordSetupAdapter, n as discordConfigAdapter, t as createDiscordPluginBase } from "./shared-CpwVKWm5.js";
10
+ import { n as discordOutbound } from "./outbound-adapter-C54-43UU.js";
11
+ import { a as discordSecurityAdapter, i as discordSetupAdapter, n as discordConfigAdapter, t as createDiscordPluginBase } from "./shared-CYe5A_Bs.js";
12
12
  import { t as normalizeExplicitDiscordSessionKey } from "./session-key-normalization-DnCXUKGA.js";
13
13
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/string-coerce-runtime";
14
14
  import { createChatChannelPlugin } from "openclaw/plugin-sdk/channel-core";
@@ -126,29 +126,29 @@ let discordProbeRuntimePromise;
126
126
  let discordAuditModulePromise;
127
127
  let discordSendModulePromise;
128
128
  let discordDirectoryLiveModulePromise;
129
- const loadDiscordDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-mr3WFi1h.js").then((n) => n.t));
130
- const loadDiscordResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-CerN-VOT.js").then((n) => n.n));
131
- const loadDiscordResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-DIG4uHLS.js").then((n) => n.n));
132
- const loadDiscordThreadBindingsManagerModule = createLazyRuntimeModule(() => import("./thread-bindings.manager-kjSGaifo.js").then((n) => n.a));
133
- const loadDiscordTargetResolverModule = createLazyRuntimeModule(() => import("./target-resolver-BsGT9hI7.js").then((n) => n.r));
129
+ const loadDiscordDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-B5jO6mjo.js").then((n) => n.t));
130
+ const loadDiscordResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-AxDQ4jXh.js").then((n) => n.n));
131
+ const loadDiscordResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-D7w0icpA.js").then((n) => n.n));
132
+ const loadDiscordThreadBindingsManagerModule = createLazyRuntimeModule(() => import("./thread-bindings.manager-XKdkYEit.js").then((n) => n.a));
133
+ const loadDiscordTargetResolverModule = createLazyRuntimeModule(() => import("./target-resolver-CgtNlbhO.js").then((n) => n.r));
134
134
  async function loadDiscordProviderRuntime() {
135
- discordProviderRuntimePromise ??= import("./provider.runtime-BZj7ZoKH.js");
135
+ discordProviderRuntimePromise ??= import("./provider.runtime-BXfPVafJ.js");
136
136
  return await discordProviderRuntimePromise;
137
137
  }
138
138
  async function loadDiscordProbeRuntime() {
139
- discordProbeRuntimePromise ??= import("./probe.runtime-CvMZb8ZL.js");
139
+ discordProbeRuntimePromise ??= import("./probe.runtime-DKB38YvU.js");
140
140
  return await discordProbeRuntimePromise;
141
141
  }
142
142
  async function loadDiscordAuditModule() {
143
- discordAuditModulePromise ??= import("./audit-CPAL0IL6.js").then((n) => n.n);
143
+ discordAuditModulePromise ??= import("./audit-CniGmJUL.js").then((n) => n.n);
144
144
  return await discordAuditModulePromise;
145
145
  }
146
146
  async function loadDiscordSendModule() {
147
- discordSendModulePromise ??= import("./send-CvXckvRn.js").then((n) => n.t);
147
+ discordSendModulePromise ??= import("./send-DuW4qqIK.js").then((n) => n.t);
148
148
  return await discordSendModulePromise;
149
149
  }
150
150
  async function loadDiscordDirectoryLiveModule() {
151
- discordDirectoryLiveModulePromise ??= import("./directory-live-MrDSKsMf.js").then((n) => n.t);
151
+ discordDirectoryLiveModulePromise ??= import("./directory-live-D5VrQBC7.js").then((n) => n.t);
152
152
  return await discordDirectoryLiveModulePromise;
153
153
  }
154
154
  //#endregion
@@ -1,6 +1,6 @@
1
- import { r as listDiscordAccountIds, t as createDiscordActionGate } from "./accounts-DnNVBDfc.js";
2
- import { t as inspectDiscordAccount } from "./account-inspect-B_N30NV0.js";
3
- import { d as readDiscordComponentSpec } from "./components-Cgm7XT8-.js";
1
+ import { r as listDiscordAccountIds, t as createDiscordActionGate } from "./accounts-ltxKLzxN.js";
2
+ import { t as inspectDiscordAccount } from "./account-inspect-DCXwNu_u.js";
3
+ import { d as readDiscordComponentSpec } from "./components-KsP3ijoj.js";
4
4
  import { i as withDiscordInboundEventDeliveryMetadata } from "./inbound-event-delivery-D8zHG9Lz.js";
5
5
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { createUnionActionGate } from "openclaw/plugin-sdk/channel-actions";
@@ -8,7 +8,7 @@ import { extractToolSend } from "openclaw/plugin-sdk/tool-send";
8
8
  //#region extensions/discord/src/channel-actions.ts
9
9
  let discordChannelActionsRuntimePromise;
10
10
  async function loadDiscordChannelActionsRuntime() {
11
- discordChannelActionsRuntimePromise ??= import("./channel-actions.runtime-G9ARNi7H.js");
11
+ discordChannelActionsRuntimePromise ??= import("./channel-actions.runtime-DVnGrlsm.js");
12
12
  return await discordChannelActionsRuntimePromise;
13
13
  }
14
14
  function listDiscoverableDiscordAccounts(cfg) {
@@ -1,10 +1,10 @@
1
1
  import { Ut as resolveDiscordChannelId } from "./send.receipt-nKLxvA1s.js";
2
- import { i as buildDiscordPresentationComponents, r as buildDiscordInteractiveComponents } from "./components-Cgm7XT8-.js";
3
- import { t as handleDiscordAction } from "./runtime-ToiiUiXe.js";
4
- import "./targets-DwW6OieO.js";
2
+ import { i as buildDiscordPresentationComponents, r as buildDiscordInteractiveComponents } from "./components-KsP3ijoj.js";
3
+ import { t as handleDiscordAction } from "./runtime-CqTcWrem.js";
4
+ import "./targets-Z4SW2zZs.js";
5
5
  import "./action-runtime-api.js";
6
6
  import { r as notifyDiscordInboundEventOutboundSuccess } from "./inbound-event-delivery-D8zHG9Lz.js";
7
- import { t as tryHandleDiscordMessageActionGuildAdmin } from "./handle-action.guild-admin-DUVD8LGs.js";
7
+ import { t as tryHandleDiscordMessageActionGuildAdmin } from "./handle-action.guild-admin-CqCngm8I.js";
8
8
  import { normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/string-coerce-runtime";
9
9
  import { resolveReactionMessageId } from "openclaw/plugin-sdk/channel-actions";
10
10
  import { readBooleanParam } from "openclaw/plugin-sdk/boolean-param";
@@ -1,2 +1,2 @@
1
- import { t as DiscordChannelConfigSchema } from "./config-schema-B6sPhXLp.js";
1
+ import { t as DiscordChannelConfigSchema } from "./config-schema-jz2FX2x5.js";
2
2
  export { DiscordChannelConfigSchema };
@@ -1,2 +1,2 @@
1
- import { t as discordPlugin } from "./channel-DeO4mqqA.js";
1
+ import { t as discordPlugin } from "./channel-BN96pzUF.js";
2
2
  export { discordPlugin };
@@ -1,7 +1,7 @@
1
- import { a as mergeDiscordAccountConfig, c as resolveDiscordAccountAllowFrom, l as resolveDiscordAccountConfig, m as resolveDiscordToken, o as resolveDefaultDiscordAccountId } from "./accounts-DnNVBDfc.js";
2
- import { i as discordSetupAdapter, t as createDiscordPluginBase } from "./shared-CpwVKWm5.js";
3
- import { t as resolveDiscordChannelAllowlist } from "./resolve-channels-CerN-VOT.js";
4
- import { t as resolveDiscordUserAllowlist } from "./resolve-users-DIG4uHLS.js";
1
+ import { a as mergeDiscordAccountConfig, c as resolveDiscordAccountAllowFrom, l as resolveDiscordAccountConfig, m as resolveDiscordToken, o as resolveDefaultDiscordAccountId } from "./accounts-ltxKLzxN.js";
2
+ import { i as discordSetupAdapter, t as createDiscordPluginBase } from "./shared-CYe5A_Bs.js";
3
+ import { t as resolveDiscordChannelAllowlist } from "./resolve-channels-AxDQ4jXh.js";
4
+ import { t as resolveDiscordUserAllowlist } from "./resolve-users-D7w0icpA.js";
5
5
  import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-id";
6
6
  import { hasConfiguredSecretInput, normalizeSecretInputString } from "openclaw/plugin-sdk/secret-input";
7
7
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -4,7 +4,7 @@ import { buildOutboundBaseSessionKey } from "openclaw/plugin-sdk/routing";
4
4
  import { buildThreadAwareOutboundSessionRoute } from "openclaw/plugin-sdk/channel-core";
5
5
  import { ButtonStyle, MessageFlags, TextInputStyle } from "discord-api-types/v10";
6
6
  import crypto from "node:crypto";
7
- import { presentationToInteractiveControlsReply, reduceInteractiveReply } from "openclaw/plugin-sdk/interactive-runtime";
7
+ import { reduceInteractiveReply } from "openclaw/plugin-sdk/interactive-runtime";
8
8
  //#region extensions/discord/src/outbound-session-route.ts
9
9
  function resolveDiscordOutboundSessionRoute(params) {
10
10
  const parsed = parseDiscordTarget(params.target, { defaultKind: resolveDiscordOutboundTargetKindHint(params) });
@@ -778,6 +778,9 @@ function resolveDiscordInteractiveButtonStyle(style) {
778
778
  return style ?? "secondary";
779
779
  }
780
780
  const DISCORD_INTERACTIVE_BUTTON_ROW_SIZE = 5;
781
+ /**
782
+ * @deprecated Use buildDiscordPresentationComponents with MessagePresentation.
783
+ */
781
784
  function buildDiscordInteractiveComponents(interactive) {
782
785
  const blocks = reduceInteractiveReply(interactive, [], (state, block) => {
783
786
  if (block.type === "text") {
@@ -840,10 +843,40 @@ function buildDiscordPresentationComponents(presentation) {
840
843
  continue;
841
844
  }
842
845
  }
843
- const interactiveSpec = buildDiscordInteractiveComponents(presentationToInteractiveControlsReply(presentation));
844
- if (interactiveSpec?.blocks?.length) spec.blocks?.push(...interactiveSpec.blocks);
846
+ for (const block of presentation.blocks) {
847
+ if (block.type === "buttons") {
848
+ appendDiscordPresentationButtonBlocks(spec, block.buttons);
849
+ continue;
850
+ }
851
+ if (block.type === "select" && block.options.length > 0) spec.blocks?.push({
852
+ type: "actions",
853
+ select: {
854
+ type: "string",
855
+ placeholder: block.placeholder,
856
+ options: block.options.map((option) => ({
857
+ label: option.label,
858
+ value: option.value
859
+ }))
860
+ }
861
+ });
862
+ }
845
863
  return spec.blocks?.length ? spec : void 0;
846
864
  }
865
+ function appendDiscordPresentationButtonBlocks(spec, buttons) {
866
+ if (buttons.length === 0) return;
867
+ for (let index = 0; index < buttons.length; index += DISCORD_INTERACTIVE_BUTTON_ROW_SIZE) spec.blocks?.push({
868
+ type: "actions",
869
+ buttons: buttons.slice(index, index + DISCORD_INTERACTIVE_BUTTON_ROW_SIZE).map((button) => {
870
+ const component = {
871
+ label: button.label,
872
+ style: button.url ? "link" : resolveDiscordInteractiveButtonStyle(button.style)
873
+ };
874
+ if (button.value) component.callbackData = button.value;
875
+ if (button.url) component.url = button.url;
876
+ return component;
877
+ })
878
+ });
879
+ }
847
880
  //#endregion
848
881
  //#region extensions/discord/src/components.ts
849
882
  var components_exports = /* @__PURE__ */ __exportAll({
@@ -82,6 +82,10 @@ const DiscordChannelConfigSchema = buildChannelConfigSchema(DiscordConfigSchema,
82
82
  label: "Discord Progress Max Lines",
83
83
  help: "Maximum number of compact progress lines to keep below the draft label (default: 8)."
84
84
  },
85
+ "streaming.progress.maxLineChars": {
86
+ label: "Discord Progress Max Line Chars",
87
+ help: "Maximum characters per compact progress line before truncation (default: 120). Prose cuts at word boundaries; commands and paths keep useful suffixes."
88
+ },
85
89
  "streaming.progress.toolProgress": {
86
90
  label: "Discord Progress Tool Lines",
87
91
  help: "Show compact tool/progress lines in progress draft mode (default: true). Set false to keep only the label until final delivery."
@@ -2,7 +2,7 @@ import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doc
2
2
  import { n as secretTargetRegistryEntries, t as collectRuntimeConfigAssignments } from "./secret-config-contract-57_WV6qt.js";
3
3
  import { n as unsupportedSecretRefSurfacePatterns, t as collectUnsupportedSecretRefConfigCandidates } from "./security-contract-BWDASKVo.js";
4
4
  import { t as deriveLegacySessionChatType } from "./session-contract-Dwhw3RTY.js";
5
- import { r as createThreadBindingManager, t as __testing } from "./thread-bindings.manager-kjSGaifo.js";
6
- import { n as listDiscordDirectoryGroupsFromConfig, r as listDiscordDirectoryPeersFromConfig } from "./directory-config-mr3WFi1h.js";
5
+ import { r as createThreadBindingManager, t as __testing } from "./thread-bindings.manager-XKdkYEit.js";
6
+ import { n as listDiscordDirectoryGroupsFromConfig, r as listDiscordDirectoryPeersFromConfig } from "./directory-config-B5jO6mjo.js";
7
7
  import { t as collectDiscordSecurityAuditFindings } from "./security-audit-Dx3j4a0l.js";
8
8
  export { collectDiscordSecurityAuditFindings, collectRuntimeConfigAssignments, collectUnsupportedSecretRefConfigCandidates, createThreadBindingManager, deriveLegacySessionChatType, __testing as discordThreadBindingTesting, legacyConfigRules, listDiscordDirectoryGroupsFromConfig, listDiscordDirectoryPeersFromConfig, normalizeCompatibilityConfig, secretTargetRegistryEntries, unsupportedSecretRefSurfacePatterns };
@@ -1,5 +1,5 @@
1
1
  import { Ht as parseDiscordTarget } from "./send.receipt-nKLxvA1s.js";
2
- import { r as listDiscordAccountIds, s as resolveDiscordAccount } from "./accounts-DnNVBDfc.js";
2
+ import { r as listDiscordAccountIds, s as resolveDiscordAccount } from "./accounts-ltxKLzxN.js";
3
3
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  import { createLazyChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-sdk/approval-handler-adapter-runtime";
5
5
  import { createChannelApproverDmTargetResolver, createChannelNativeOriginTargetResolver, doesApprovalRequestMatchChannelAccount, resolveApprovalRequestSessionConversation } from "openclaw/plugin-sdk/approval-native-runtime";
@@ -229,7 +229,7 @@ function createDiscordApprovalCapability(configOverride) {
229
229
  request,
230
230
  configOverride
231
231
  }),
232
- load: async () => (await import("./approval-handler.runtime-B5Dd-jlK.js").then((n) => n.t)).discordApprovalNativeRuntime
232
+ load: async () => (await import("./approval-handler.runtime-CpNuGEHP.js").then((n) => n.t)).discordApprovalNativeRuntime
233
233
  })
234
234
  });
235
235
  }
@@ -1,5 +1,5 @@
1
1
  import { Wt as __exportAll } from "./send.receipt-nKLxvA1s.js";
2
- import { a as mergeDiscordAccountConfig, c as resolveDiscordAccountAllowFrom, o as resolveDefaultDiscordAccountId } from "./accounts-DnNVBDfc.js";
2
+ import { a as mergeDiscordAccountConfig, c as resolveDiscordAccountAllowFrom, o as resolveDefaultDiscordAccountId } from "./accounts-ltxKLzxN.js";
3
3
  import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
4
4
  import { createResolvedDirectoryEntriesLister } from "openclaw/plugin-sdk/directory-config-runtime";
5
5
  //#region extensions/discord/src/directory-config.ts
@@ -1,2 +1,2 @@
1
- import { n as listDiscordDirectoryGroupsFromConfig, r as listDiscordDirectoryPeersFromConfig } from "./directory-config-mr3WFi1h.js";
1
+ import { n as listDiscordDirectoryGroupsFromConfig, r as listDiscordDirectoryPeersFromConfig } from "./directory-config-B5jO6mjo.js";
2
2
  export { listDiscordDirectoryGroupsFromConfig, listDiscordDirectoryPeersFromConfig };
@@ -1,5 +1,5 @@
1
1
  import { Wt as __exportAll } from "./send.receipt-nKLxvA1s.js";
2
- import { p as normalizeDiscordToken, s as resolveDiscordAccount } from "./accounts-DnNVBDfc.js";
2
+ import { p as normalizeDiscordToken, s as resolveDiscordAccount } from "./accounts-ltxKLzxN.js";
3
3
  import { n as fetchDiscord } from "./api-DgQLz1wq.js";
4
4
  import { a as normalizeDiscordSlug } from "./allow-list-CBI-M84K.js";
5
5
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -1,6 +1,6 @@
1
- import { o as resolveDefaultDiscordAccountId } from "./accounts-DnNVBDfc.js";
2
- import { t as inspectDiscordAccount } from "./account-inspect-B_N30NV0.js";
3
- import { r as DISCORD_LEGACY_CONFIG_RULES } from "./shared-CpwVKWm5.js";
1
+ import { o as resolveDefaultDiscordAccountId } from "./accounts-ltxKLzxN.js";
2
+ import { t as inspectDiscordAccount } from "./account-inspect-DCXwNu_u.js";
3
+ import { r as DISCORD_LEGACY_CONFIG_RULES } from "./shared-CYe5A_Bs.js";
4
4
  import { n as normalizeCompatibilityConfig } from "./doctor-contract-AkgUZQHW.js";
5
5
  import { t as isDiscordMutableAllowEntry } from "./security-doctor-DepqtNCI.js";
6
6
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -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-ToiiUiXe.js";
1
+ import { a as readDiscordChannelCreateParams, n as isDiscordModerationAction, o as readDiscordChannelEditParams, r as readDiscordModerationCommand, s as readDiscordChannelMoveParams, t as handleDiscordAction } from "./runtime-CqTcWrem.js";
2
2
  import "./action-runtime-api.js";
3
3
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  import { readNumberParam, readStringArrayParam, readStringParam } from "openclaw/plugin-sdk/agent-runtime";
@@ -1,9 +1,9 @@
1
1
  import { Ht as parseDiscordTarget, _ as VoiceStateUpdateListener, c as discord_exports, h as ResumedListener, m as ReadyListener } from "./send.receipt-nKLxvA1s.js";
2
- import { c as resolveDiscordAccountAllowFrom } from "./accounts-DnNVBDfc.js";
2
+ import { c as resolveDiscordAccountAllowFrom } from "./accounts-ltxKLzxN.js";
3
3
  import { a as normalizeDiscordSlug, b as formatDiscordUserTag, m as resolveDiscordOwnerAccess } from "./allow-list-CBI-M84K.js";
4
- import { i as formatMention } from "./send.outbound-BKh71kjw.js";
4
+ import { i as formatMention } from "./send.outbound-PAYV11wW.js";
5
5
  import { t as getDiscordRuntime } from "./runtime-Tqtvj5GX.js";
6
- import { o as authorizeDiscordVoiceIngress, u as resolveDiscordVoiceEnabled } from "./provider-BYIVfxV_.js";
6
+ import { o as authorizeDiscordVoiceIngress, u as resolveDiscordVoiceEnabled } from "./provider-BdUg28Bu.js";
7
7
  import { t as buildDiscordGroupSystemPrompt } from "./inbound-context-CzEAvKgx.js";
8
8
  import { createRequire } from "node:module";
9
9
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -1,7 +1,7 @@
1
- import { N as createDiscordRestClient } from "./send.shared-Bdj-DP6-.js";
2
- import { d as resolveDiscordChannelNameSafe, l as resolveDiscordChannelIdSafe, p as resolveDiscordChannelParentSafe, u as resolveDiscordChannelInfoSafe } from "./thread-bindings.discord-api-BQJf05t-.js";
1
+ import { N as createDiscordRestClient } from "./send.shared-CJ6oJrVc.js";
2
+ import { d as resolveDiscordChannelNameSafe, l as resolveDiscordChannelIdSafe, p as resolveDiscordChannelParentSafe, u as resolveDiscordChannelInfoSafe } from "./thread-bindings.discord-api-_zMU4M2x.js";
3
3
  import { a as mergeAbortSignals } from "./timeouts-CEwuGaWT.js";
4
- import { c as hasDiscordMessageStickers, d as resolveDiscordMessageChannelId, r as resolveDiscordMessageText } from "./message-utils-BZoXOhcI.js";
4
+ import { c as hasDiscordMessageStickers, d as resolveDiscordMessageChannelId, r as resolveDiscordMessageText } from "./message-utils-BZriBbcg.js";
5
5
  import { t as sendTyping } from "./typing-DudlJ-Fv.js";
6
6
  import { danger, logVerbose } from "openclaw/plugin-sdk/runtime-env";
7
7
  import { resolveOpenProviderRuntimeGroupPolicy } from "openclaw/plugin-sdk/runtime-group-policy";
@@ -121,7 +121,7 @@ function applyImplicitReplyBatchGate(ctx, replyToMode, isBatched) {
121
121
  //#region extensions/discord/src/monitor/message-run-queue.ts
122
122
  let messageProcessRuntimePromise;
123
123
  async function loadMessageProcessRuntime() {
124
- messageProcessRuntimePromise ??= import("./message-handler.process-B9kCtqjZ.js");
124
+ messageProcessRuntimePromise ??= import("./message-handler.process-C-2YTjrL.js");
125
125
  return await messageProcessRuntimePromise;
126
126
  }
127
127
  async function processDiscordQueuedMessage(params) {
@@ -173,7 +173,7 @@ function createDiscordMessageRunQueue(params) {
173
173
  //#region extensions/discord/src/monitor/message-handler.ts
174
174
  let messagePreflightRuntimePromise;
175
175
  async function loadMessagePreflightRuntime() {
176
- messagePreflightRuntimePromise ??= import("./message-handler.preflight-DPcejg12.js");
176
+ messagePreflightRuntimePromise ??= import("./message-handler.preflight-C8r_m521.js");
177
177
  return await messagePreflightRuntimePromise;
178
178
  }
179
179
  function isNonEmptyString(value) {
@@ -1,12 +1,12 @@
1
1
  import { A as Message, c as discord_exports, mt as getChannelMessage } from "./send.receipt-nKLxvA1s.js";
2
- import { o as resolveDefaultDiscordAccountId } from "./accounts-DnNVBDfc.js";
2
+ import { o as resolveDefaultDiscordAccountId } from "./accounts-ltxKLzxN.js";
3
3
  import { S as resolveTimestampMs, _ as resolveGroupDmAllow, a as normalizeDiscordSlug, b as formatDiscordUserTag, c as resolveDiscordChannelConfigWithFallback, d as resolveDiscordGuildEntry, f as resolveDiscordMemberAccessState, g as resolveDiscordShouldRequireMention, i as normalizeDiscordDisplaySlug, n as isDiscordGroupAllowedByPolicy, x as resolveDiscordSystemLocation } from "./allow-list-CBI-M84K.js";
4
- import { t as resolveDiscordConversationIdentity } from "./conversation-identity-Bpwp-7uO.js";
4
+ import { t as resolveDiscordConversationIdentity } from "./conversation-identity-CYgemFy7.js";
5
5
  import { l as isRecentlyUnboundThreadWebhookMessage } from "./thread-bindings.state-CSphZOiL.js";
6
- import { d as resolveDiscordChannelNameSafe, u as resolveDiscordChannelInfoSafe } from "./thread-bindings.discord-api-BQJf05t-.js";
7
- import "./thread-bindings-CqKojFDg.js";
8
- import { C as resolveDiscordDmCommandAccess, f as buildDiscordRoutePeer, g as handleDiscordDmCommandDecision, h as shouldIgnoreStaleDiscordRouteBinding, m as resolveDiscordEffectiveRoute, p as resolveDiscordConversationRoute, w as resolveDiscordTextCommandAccess } from "./provider-BYIVfxV_.js";
9
- import { d as resolveDiscordMessageChannelId, l as resolveDiscordMessageStickers, o as resolveMediaList, r as resolveDiscordMessageText, u as resolveDiscordChannelInfo } from "./message-utils-BZoXOhcI.js";
6
+ import { d as resolveDiscordChannelNameSafe, u as resolveDiscordChannelInfoSafe } from "./thread-bindings.discord-api-_zMU4M2x.js";
7
+ import "./thread-bindings-CXZ2h9DB.js";
8
+ import { C as resolveDiscordDmCommandAccess, f as buildDiscordRoutePeer, g as handleDiscordDmCommandDecision, h as shouldIgnoreStaleDiscordRouteBinding, m as resolveDiscordEffectiveRoute, p as resolveDiscordConversationRoute, w as resolveDiscordTextCommandAccess } from "./provider-BdUg28Bu.js";
9
+ import { d as resolveDiscordMessageChannelId, l as resolveDiscordMessageStickers, o as resolveMediaList, r as resolveDiscordMessageText, u as resolveDiscordChannelInfo } from "./message-utils-BZriBbcg.js";
10
10
  import { n as resolveDiscordWebhookId, t as resolveDiscordSenderIdentity } from "./sender-identity-DC0FdEcU.js";
11
11
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
12
12
  import { getChildLogger, logVerbose, shouldLogVerbose } from "openclaw/plugin-sdk/runtime-env";
@@ -29,7 +29,7 @@ async function loadConversationRuntime$1() {
29
29
  return await conversationRuntimePromise$1;
30
30
  }
31
31
  async function loadDiscordSendRuntime() {
32
- discordSendRuntimePromise ??= import("./send-CvXckvRn.js").then((n) => n.t);
32
+ discordSendRuntimePromise ??= import("./send-DuW4qqIK.js").then((n) => n.t);
33
33
  return await discordSendRuntimePromise;
34
34
  }
35
35
  async function resolveDiscordDmPreflightAccess(params) {
@@ -439,7 +439,7 @@ async function loadSystemEventsRuntime() {
439
439
  return await systemEventsRuntimePromise;
440
440
  }
441
441
  async function loadDiscordThreadingRuntime() {
442
- discordThreadingRuntimePromise ??= import("./provider-BYIVfxV_.js").then((n) => n.v);
442
+ discordThreadingRuntimePromise ??= import("./provider-BdUg28Bu.js").then((n) => n.v);
443
443
  return await discordThreadingRuntimePromise;
444
444
  }
445
445
  function isPreflightAborted(abortSignal) {