@openclaw/discord 2026.10.1-beta.1 → 2026.10.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 (72) hide show
  1. package/dist/.setup/{account-inspect-CjKqkDnH.mjs → account-inspect-DsER5ILV.mjs} +2 -2
  2. package/dist/.setup/{channel-type-D1_b5UhU.mjs → allow-list-vxkG9_JD.mjs} +6 -6
  3. package/dist/.setup/{api-_oznjffB.mjs → api-DlNUkDqj.mjs} +3 -3
  4. package/dist/.setup/{approval-handler.runtime-G-tMI_uD.mjs → approval-handler.runtime-DmnEa54W.mjs} +8 -8
  5. package/dist/.setup/{approval-message-updates-CgRwc2_Q.mjs → approval-message-updates-B0jdSqOj.mjs} +2 -2
  6. package/dist/.setup/{audit-DtvzxONM.mjs → audit-BpikUwN_.mjs} +4 -4
  7. package/dist/.setup/{channel-Ct3fRxet.mjs → channel-Dr-AUnGt.mjs} +23 -23
  8. package/dist/.setup/{channel.setup-DBJtugJO.mjs → channel.setup-BmNvkidb.mjs} +5 -5
  9. package/dist/.setup/{components-CzXLR3QH.mjs → components-DLJR0xU-.mjs} +2 -2
  10. package/dist/.setup/{conversation-binding-route-Bi62ApSt.mjs → conversation-binding-route-DicJC1Lj.mjs} +1 -1
  11. package/dist/.setup/{directory-config-BH1LA-gi.mjs → directory-config-gqsdcplU.mjs} +1 -1
  12. package/dist/.setup/{directory-live-C9xz7IPm.mjs → directory-live-Bipr0eUJ.mjs} +3 -3
  13. package/dist/.setup/{discord-J7aRzq2Q.mjs → discord-9gysrhzp.mjs} +10 -10
  14. package/dist/.setup/{doctor-DxSAngJq.mjs → doctor-B2bskDcF.mjs} +4 -4
  15. package/dist/.setup/{handle-action-DlmFX-_G.mjs → handle-action-UmkjXBfo.mjs} +8 -8
  16. package/dist/.setup/{handle-action.guild-admin-BnyqTczR.mjs → handle-action.guild-admin-CB4sc9VV.mjs} +2 -2
  17. package/dist/.setup/{live-policy-config-emmPNyh4.mjs → live-policy-config-VxexfRKo.mjs} +1 -1
  18. package/dist/.setup/{message-handler-CDWDjWF0.mjs → message-handler-BK69A-NB.mjs} +14 -13
  19. package/dist/.setup/{message-handler.preflight-Cop4atEb.mjs → message-handler.preflight-DFpsh90H.mjs} +17 -17
  20. package/dist/.setup/{message-handler.preflight-pluralkit-D1g3eq0B.mjs → message-handler.preflight-pluralkit-BXGGVmpe.mjs} +7 -7
  21. package/dist/.setup/{message-handler.process-lX7pDqsd.mjs → message-handler.process-TKoqcqIP.mjs} +21 -21
  22. package/dist/.setup/{outbound-adapter-BPq0c2wY.mjs → outbound-adapter-D4wRAb5S.mjs} +9 -9
  23. package/dist/.setup/{outbound-session-route-DGPPKA0z.mjs → outbound-session-route-BvBH4LC6.mjs} +13 -13
  24. package/dist/.setup/{probe-DIRY8vh7.mjs → probe-BwSKpnZf.mjs} +4 -4
  25. package/dist/.setup/{provider-DIexE7gK.mjs → provider-YP8gN9_o.mjs} +74 -74
  26. package/dist/.setup/{provider-session.runtime-C2UCZz8d.mjs → provider-session.runtime-D1gkPxHT.mjs} +3 -3
  27. package/dist/.setup/provider.runtime-CZ51OIgD.mjs +2 -0
  28. package/dist/.setup/{realtime-session.runtime-DvjyeY87.mjs → realtime-session.runtime-BKUQBy1u.mjs} +19 -19
  29. package/dist/.setup/{resolve-allowlist-common-DUYRrrVB.mjs → resolve-allowlist-common-BUyU3C-T.mjs} +3 -3
  30. package/dist/.setup/{resolve-channels--MUatisx.mjs → resolve-channels-DA6QlhZN.mjs} +3 -3
  31. package/dist/.setup/{resolve-users-CxLcDmM0.mjs → resolve-users-DNrwvunm.mjs} +2 -2
  32. package/dist/.setup/{runtime-CwUA0RLr.mjs → runtime-CESTexGn.mjs} +12 -12
  33. package/dist/.setup/{runtime-CerRBfaa.mjs → runtime-DPcmPST9.mjs} +2 -2
  34. package/dist/.setup/{send-2X7m2Zmw.mjs → send-CJk3VP5q.mjs} +16 -16
  35. package/dist/.setup/{send.components-RqvgmCs3.mjs → send.components-dPljuV24.mjs} +7 -7
  36. package/dist/.setup/{send.outbound-B4QHSEzm.mjs → send.outbound-rOboMO_6.mjs} +8 -8
  37. package/dist/.setup/{retry-BKzO25k4.mjs → send.receipt-DVOg2Oaw.mjs} +203 -203
  38. package/dist/.setup/{send.shared-BQIUh6Vn.mjs → send.shared-C4CN24D9.mjs} +40 -40
  39. package/dist/.setup/{sender-identity-CooeYfAn.mjs → sender-identity-AHpUNr72.mjs} +1 -1
  40. package/dist/.setup/setup-plugin-api-BVlCz3fm.mjs +3 -0
  41. package/dist/.setup/{shared-CIJn6AEC.mjs → shared-BoBnM5kM.mjs} +7 -7
  42. package/dist/.setup/{subagent-hooks-BYlVnxzy.mjs → subagent-hooks-HH8Uy9cx.mjs} +2 -2
  43. package/dist/.setup/{system-events-CQ3if_pS.mjs → system-events-Cwxaww8i.mjs} +2 -2
  44. package/dist/.setup/{target-resolver-Dzxf80Y3.mjs → target-resolver-CSFoPQ12.mjs} +3 -3
  45. package/dist/.setup/targets-bqXQENmX.mjs +3 -0
  46. package/dist/.setup/{thread-bindings-yNNlcUWE.mjs → thread-bindings-DjQCkmsd.mjs} +4 -4
  47. package/dist/.setup/{thread-bindings.manager-plk0zJAW.mjs → thread-bindings.manager-D2-GYZ5s.mjs} +10 -10
  48. package/dist/.setup/{transcripts-source-CNWswry-.mjs → transcripts-source-CaZQnGRH.mjs} +18 -18
  49. package/dist/.setup/{voice-runtime-CeS6zfY3.mjs → voice-runtime-DDymtIw8.mjs} +46 -46
  50. package/dist/account-inspect-api.js +1 -1
  51. package/dist/action-runtime-api.js +1 -1
  52. package/dist/activities-api.js +788 -1
  53. package/dist/api.js +15 -15
  54. package/dist/channel-config-api.js +1 -1
  55. package/dist/channel-plugin-api.js +1 -1
  56. package/dist/directory-contract-api.js +1 -1
  57. package/dist/index.js +9 -5
  58. package/dist/runtime-api.js +20 -20
  59. package/dist/setup-entry.js +1 -1
  60. package/dist/setup-plugin-api.js +1 -1
  61. package/dist/src/voice/audio-worker.runtime.js +3 -3
  62. package/dist/subagent-hooks-api.js +1 -1
  63. package/dist/transcripts-source-api.js +1 -1
  64. package/package.json +4 -4
  65. package/dist/.setup/activities-api-BL_hJ0JQ.mjs +0 -789
  66. package/dist/.setup/provider.runtime-Dkzrmmcm.mjs +0 -2
  67. package/dist/.setup/setup-plugin-api-nn_giXvZ.mjs +0 -3
  68. package/dist/.setup/targets-Lf8D55w-.mjs +0 -3
  69. package/dist/.setup/{accounts-DXHCL8Zm.mjs → accounts-HE9-mj1L.mjs} +2 -2
  70. package/dist/.setup/{config-schema-CsemBDpS.mjs → config-schema-BQWfnSCx.mjs} +1 -1
  71. package/dist/.setup/{receive-recovery-GqF2PUN_.mjs → receive-recovery-DgkX7Qvi.mjs} +2 -2
  72. package/dist/.setup/{thread-bindings.session-updates-C9aKtVs6.mjs → thread-bindings.session-updates-Bu_CGr_O.mjs} +2 -2
@@ -1,15 +1,15 @@
1
- import { _ as releaseDiscordAudioInput, g as getDiscordAudioOutputStatus, h as admitDiscordAudioInput, m as DiscordAudioOutputStatus, u as createDiscordPcmToRealtimeConverter, v as restoreDiscordAudioError, x as setDiscordAudioOutputStatus } from "./receive-recovery-GqF2PUN_.mjs";
1
+ import { _ as releaseDiscordAudioInput, g as getDiscordAudioOutputStatus, h as admitDiscordAudioInput, m as DiscordAudioOutputStatus, u as createDiscordPcmToRealtimeConverter, v as restoreDiscordAudioError, x as setDiscordAudioOutputStatus } from "./receive-recovery-DgkX7Qvi.mjs";
2
2
  import { n as discordRealtimeVoiceSecretOwnerId } from "./secret-config-contract-uOE2J7yM.mjs";
3
- import { g as logVoiceVerbose } from "./provider-DIexE7gK.mjs";
4
- import { a as logDiscordVoiceAgentControlResult, c as formatRealtimeLifecycleLog, i as handleDiscordVoiceAgentControlToolCall, l as formatVoiceLogPreview, n as DiscordRealtimeRecording, o as maybeControlDiscordVoiceAgentRun, r as formatVoiceIngressPrompt, s as formatRealtimeInterruptionLog, u as shouldLogRealtimeVerboseEvent } from "./voice-runtime-CeS6zfY3.mjs";
3
+ import { g as logVoiceVerbose } from "./provider-YP8gN9_o.mjs";
4
+ import { a as logDiscordVoiceAgentControlResult, c as formatRealtimeLifecycleLog, i as handleDiscordVoiceAgentControlToolCall, l as formatVoiceLogPreview, n as DiscordRealtimeRecording, o as maybeControlDiscordVoiceAgentRun, r as formatVoiceIngressPrompt, s as formatRealtimeInterruptionLog, u as shouldLogRealtimeVerboseEvent } from "./voice-runtime-DDymtIw8.mjs";
5
+ import { MessageChannel } from "node:worker_threads";
6
+ import { formatErrorMessage, readErrorName, toErrorObject } from "openclaw/plugin-sdk/error-runtime";
7
+ import { createSubsystemLogger } from "openclaw/plugin-sdk/runtime-env";
5
8
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
- import { randomUUID } from "node:crypto";
7
9
  import { asDateTimestampMs, resolveExpiresAtMsFromDurationMs } from "openclaw/plugin-sdk/number-runtime";
8
- import { formatErrorMessage } from "openclaw/plugin-sdk/ssrf-runtime";
9
- import { formatErrorMessage as formatErrorMessage$1, readErrorName, toErrorObject } from "openclaw/plugin-sdk/error-runtime";
10
- import { createSubsystemLogger } from "openclaw/plugin-sdk/runtime-env";
10
+ import { randomUUID } from "node:crypto";
11
+ import { formatErrorMessage as formatErrorMessage$1 } from "openclaw/plugin-sdk/ssrf-runtime";
11
12
  import { sliceUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
12
- import { MessageChannel } from "node:worker_threads";
13
13
  import { createDeferred } from "openclaw/plugin-sdk/extension-shared";
14
14
  import { REALTIME_VOICE_AGENT_CONSULT_TOOL_NAME, REALTIME_VOICE_AGENT_CONTROL_TOOL, REALTIME_VOICE_AGENT_CONTROL_TOOL_NAME, REALTIME_VOICE_AUDIO_FORMAT_PCM16_24KHZ, buildRealtimeVoiceAgentErrorProviderResult, buildRealtimeVoiceSessionInstructions, buildRealtimeVoiceSpeakExactMessage, canonicalizeRealtimeVoiceProviderId, classifyRealtimeVoiceConsultToolCall, classifySkippableRealtimeVoiceConsultTranscript, createRealtimeVoiceAgentTalkbackQueue, createRealtimeVoiceOutputActivityTracker, createRealtimeVoiceSessionHarness, isRealtimeVoiceAudioAudible, isRealtimeVoiceWakeNameRequired, matchRealtimeVoiceActivationName, matchRealtimeVoiceConsultQuestions, projectInternalRealtimeVoicePublicConfig, realtimeVoiceAudioDurationMs, registerRealtimeVoiceSelection, resolveConfiguredRealtimeVoiceProvider, resolveRealtimeVoiceAgentConsultTools, resolveRealtimeVoiceBargeIn, resolveRealtimeVoiceInterruptResponseOnInputAudio, resolveRealtimeVoiceMinBargeInAudioEndMs, resolveRealtimeVoiceSessionPolicy } from "openclaw/plugin-sdk/realtime-voice";
15
15
  import { assertSecretOwnerAvailable, isSecretOwnerAvailable } from "openclaw/plugin-sdk/channel-secret-owner-runtime";
@@ -467,10 +467,10 @@ var DiscordRealtimeConsults = class {
467
467
  if (this.params.stopped() || providerEpoch !== this.params.providerEpoch()) return;
468
468
  if (readErrorName(error) === "AbortError") {
469
469
  if (pendingForcedConsult) this.params.harness.forcedConsults.remove(pendingForcedConsult);
470
- logger$3.warn(`discord voice: realtime transcript cancelled: ${formatErrorMessage$1(error)}`);
470
+ logger$3.warn(`discord voice: realtime transcript cancelled: ${formatErrorMessage(error)}`);
471
471
  return;
472
472
  }
473
- logger$3.warn(`discord voice: realtime active-run control failed; falling back to normal transcript handling: ${formatErrorMessage$1(error)}`);
473
+ logger$3.warn(`discord voice: realtime active-run control failed; falling back to normal transcript handling: ${formatErrorMessage(error)}`);
474
474
  control = void 0;
475
475
  }
476
476
  if (this.params.stopped() || providerEpoch !== this.params.providerEpoch()) return;
@@ -1224,7 +1224,7 @@ var DiscordRealtimePlayback = class {
1224
1224
  this.completeExactSpeechResponse(reason);
1225
1225
  },
1226
1226
  onBargeIn: (reason) => this.handleBargeIn(reason),
1227
- onError: (error) => this.stopAfterPlaybackFailure("output-playback-error", error instanceof Error ? error : new Error(formatErrorMessage(error)))
1227
+ onError: (error) => this.stopAfterPlaybackFailure("output-playback-error", error instanceof Error ? error : new Error(formatErrorMessage$1(error)))
1228
1228
  });
1229
1229
  if (this.outputs.size === 0) this.params.harness.outputActivity.markStreamOpened();
1230
1230
  this.outputs.add(output);
@@ -1541,7 +1541,7 @@ var DiscordRealtimeSpeakerSession = class {
1541
1541
  }
1542
1542
  if (text.trim()) this.recording.transcript(text.trim());
1543
1543
  if (this.handlesAgentConsult) return;
1544
- this.trackOperation(() => this.turns.handleFinalUserTranscript(text)).catch((error) => this.logRealtimeError(formatErrorMessage(error)));
1544
+ this.trackOperation(() => this.turns.handleFinalUserTranscript(text)).catch((error) => this.logRealtimeError(formatErrorMessage$1(error)));
1545
1545
  },
1546
1546
  onToolCall: (event, session) => {
1547
1547
  if (this.isStopped()) return;
@@ -1561,7 +1561,7 @@ var DiscordRealtimeSpeakerSession = class {
1561
1561
  if (outcome.status === "cancelled") logger$1.info(`discord voice: realtime model interrupt confirmed server:response.done status=cancelled${outcome.reason ? ` reason=${outcome.reason}` : ""}`);
1562
1562
  else if (outcome.status === "failed" || outcome.status === "incomplete") this.logRealtimeError(outcome.message);
1563
1563
  },
1564
- onError: (error) => this.logRealtimeError(formatErrorMessage(error)),
1564
+ onError: (error) => this.logRealtimeError(formatErrorMessage$1(error)),
1565
1565
  onClose: (reason) => {
1566
1566
  if (!this.isStopped()) {
1567
1567
  this.lifecycle.status = "stopped";
@@ -1612,7 +1612,7 @@ var DiscordRealtimeSpeakerSession = class {
1612
1612
  completion = Promise.reject(toErrorObject(error, "Discord realtime provider cleanup failed"));
1613
1613
  }
1614
1614
  if (completion) this.closeCompletion = completion.then(finish, async (error) => {
1615
- this.logRealtimeError(formatErrorMessage(error));
1615
+ this.logRealtimeError(formatErrorMessage$1(error));
1616
1616
  await finish();
1617
1617
  if (disposition === "detach") throw error;
1618
1618
  });
@@ -1928,7 +1928,7 @@ var DiscordRealtimeVoiceSession = class {
1928
1928
  }
1929
1929
  for (const speaker of this.sessions) {
1930
1930
  if (speaker.session !== session) continue;
1931
- logger.warn(`discord voice: realtime speaker failed user=${speaker.userId}: ${formatErrorMessage(error)}`);
1931
+ logger.warn(`discord voice: realtime speaker failed user=${speaker.userId}: ${formatErrorMessage$1(error)}`);
1932
1932
  this.retireSpeaker(speaker, "provider-failed");
1933
1933
  this.notify("I lost a speaker's voice connection. Please try speaking again.");
1934
1934
  return;
@@ -2046,12 +2046,12 @@ var DiscordRealtimeVoiceSession = class {
2046
2046
  } catch (recoveryError) {
2047
2047
  await discardCandidates();
2048
2048
  this.callAbort.signal.throwIfAborted();
2049
- const failure = /* @__PURE__ */ new Error(`Discord voice change failed and the previous voice could not reconnect: ${formatErrorMessage(recoveryError)}. Join voice again to retry.`);
2049
+ const failure = /* @__PURE__ */ new Error(`Discord voice change failed and the previous voice could not reconnect: ${formatErrorMessage$1(recoveryError)}. Join voice again to retry.`);
2050
2050
  this.close("detach");
2051
2051
  this.params.onTerminalError(failure);
2052
2052
  throw failure;
2053
2053
  }
2054
- throw new Error(`Discord voice change failed; the previous voice was restored: ${formatErrorMessage(error)}`, { cause: error });
2054
+ throw new Error(`Discord voice change failed; the previous voice was restored: ${formatErrorMessage$1(error)}`, { cause: error });
2055
2055
  }
2056
2056
  throw error;
2057
2057
  } finally {
@@ -2088,7 +2088,7 @@ var DiscordRealtimeVoiceSession = class {
2088
2088
  completion = session.close(disposition);
2089
2089
  } catch (error) {
2090
2090
  if (disposition !== "detach") {
2091
- logger.warn(`discord voice: realtime speaker close failed: ${formatErrorMessage(error)}`);
2091
+ logger.warn(`discord voice: realtime speaker close failed: ${formatErrorMessage$1(error)}`);
2092
2092
  return;
2093
2093
  }
2094
2094
  completion = Promise.reject(toErrorObject(error, "Discord realtime speaker cleanup failed"));
@@ -2101,7 +2101,7 @@ var DiscordRealtimeVoiceSession = class {
2101
2101
  };
2102
2102
  pending.then(forget, (error) => {
2103
2103
  forget();
2104
- logger.warn(`discord voice: realtime speaker close failed: ${formatErrorMessage(error)}`);
2104
+ logger.warn(`discord voice: realtime speaker close failed: ${formatErrorMessage$1(error)}`);
2105
2105
  });
2106
2106
  }
2107
2107
  return completion;
@@ -1,6 +1,6 @@
1
- import { s as normalizeDiscordSlug } from "./channel-type-D1_b5UhU.mjs";
2
- import { m as normalizeDiscordToken } from "./accounts-DXHCL8Zm.mjs";
3
- import { r as fetchDiscord } from "./api-_oznjffB.mjs";
1
+ import { m as normalizeDiscordToken } from "./accounts-HE9-mj1L.mjs";
2
+ import { o as normalizeDiscordSlug } from "./allow-list-vxkG9_JD.mjs";
3
+ import { r as fetchDiscord } from "./api-DlNUkDqj.mjs";
4
4
  //#region extensions/discord/src/guilds.ts
5
5
  async function listGuilds(token, fetcher, options) {
6
6
  return (await fetchDiscord("/users/@me/guilds", token, fetcher, options)).filter((guild) => typeof guild.id === "string" && typeof guild.name === "string").map((guild) => ({
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
2
- import { s as normalizeDiscordSlug, t as isDiscordThreadChannelType } from "./channel-type-D1_b5UhU.mjs";
3
- import { n as DiscordApiError, r as fetchDiscord, t as DISCORD_DIRECTORY_LOOKUP_TIMEOUT_MS } from "./api-_oznjffB.mjs";
4
- import { n as resolveDiscordAllowlistToken, r as listGuilds, t as filterDiscordGuilds } from "./resolve-allowlist-common-DUYRrrVB.mjs";
2
+ import { A as isDiscordThreadChannelType, o as normalizeDiscordSlug } from "./allow-list-vxkG9_JD.mjs";
3
+ import { n as DiscordApiError, r as fetchDiscord, t as DISCORD_DIRECTORY_LOOKUP_TIMEOUT_MS } from "./api-DlNUkDqj.mjs";
4
+ import { n as resolveDiscordAllowlistToken, r as listGuilds, t as filterDiscordGuilds } from "./resolve-allowlist-common-BUyU3C-T.mjs";
5
5
  //#region extensions/discord/src/resolve-channels.ts
6
6
  var resolve_channels_exports = /* @__PURE__ */ __exportAll({ resolveDiscordChannelAllowlist: () => resolveDiscordChannelAllowlist });
7
7
  function parseDiscordChannelInput(raw) {
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
2
- import { r as fetchDiscord, t as DISCORD_DIRECTORY_LOOKUP_TIMEOUT_MS } from "./api-_oznjffB.mjs";
3
- import { n as resolveDiscordAllowlistToken, r as listGuilds, t as filterDiscordGuilds } from "./resolve-allowlist-common-DUYRrrVB.mjs";
2
+ import { r as fetchDiscord, t as DISCORD_DIRECTORY_LOOKUP_TIMEOUT_MS } from "./api-DlNUkDqj.mjs";
3
+ import { n as resolveDiscordAllowlistToken, r as listGuilds, t as filterDiscordGuilds } from "./resolve-allowlist-common-BUyU3C-T.mjs";
4
4
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  //#region extensions/discord/src/resolve-users.ts
6
6
  var resolve_users_exports = /* @__PURE__ */ __exportAll({ resolveDiscordUserAllowlist: () => resolveDiscordUserAllowlist });
@@ -1,20 +1,20 @@
1
- import { h as readDiscordComponentSpec, m as coerceDiscordComponentParam } from "./components-CzXLR3QH.mjs";
2
- import { b as resolveGroupDmAllow, i as isDiscordGroupAllowedByPolicy, r as hasConfiguredDiscordChannels, s as normalizeDiscordSlug, t as isDiscordThreadChannelType, u as resolveDiscordChannelConfigWithFallback } from "./channel-type-D1_b5UhU.mjs";
3
- import { o as mergeDiscordAccountConfig, s as resolveDefaultDiscordAccountId, t as createDiscordActionGate } from "./accounts-DXHCL8Zm.mjs";
4
- import { r as sendDiscordComponentMessage } from "./send.components-RqvgmCs3.mjs";
5
- import { b as parseDiscordTarget, f as createReusableDiscordReplyReference, m as resolveDiscordReplyReference, x as resolveDiscordChannelId } from "./retry-BKzO25k4.mjs";
6
- import { C as hasAnyChannelPermissionDiscord, H as getGateway, P as createDiscordRuntimeAccountContext, _ as canManageGuildMemberRoleDiscord, b as fetchChannelPermissionsDiscord, n as buildDiscordTextChunks, u as resolveDiscordTargetChannelId, v as canManageGuildRoleDiscord, w as hasAnyGuildPermissionDiscord, y as canViewDiscordGuildChannel } from "./send.shared-BQIUh6Vn.mjs";
7
- import { r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-B4QHSEzm.mjs";
1
+ import { o as mergeDiscordAccountConfig, s as resolveDefaultDiscordAccountId, t as createDiscordActionGate } from "./accounts-HE9-mj1L.mjs";
2
+ import { A as isDiscordThreadChannelType, l as resolveDiscordChannelConfigWithFallback, n as hasConfiguredDiscordChannels, o as normalizeDiscordSlug, r as isDiscordGroupAllowedByPolicy, y as resolveGroupDmAllow } from "./allow-list-vxkG9_JD.mjs";
3
+ import { C as hasAnyChannelPermissionDiscord, F as createDiscordRuntimeAccountContext, U as getGateway, _ as canManageGuildMemberRoleDiscord, b as fetchChannelPermissionsDiscord, n as buildDiscordTextChunks, u as resolveDiscordTargetChannelId, v as canManageGuildRoleDiscord, w as hasAnyGuildPermissionDiscord, y as canViewDiscordGuildChannel } from "./send.shared-C4CN24D9.mjs";
8
4
  import { n as getPresence } from "./presence-cache-Dg3_dADn.mjs";
9
- import { A as listScheduledEventsDiscord, B as moveChannelDiscord, C as fetchChannelInfoDiscord, D as fetchVoiceStatusDiscord, E as fetchRoleInfoDiscord, F as uploadEmojiDiscord, H as setChannelPermissionDiscord, I as uploadStickerDiscord, L as createChannelDiscord, M as resolveEventCoverImage, N as timeoutMemberDiscord, O as kickMemberDiscord, P as listGuildEmojisDiscord, R as deleteChannelDiscord, S as createScheduledEventDiscord, T as fetchMemberInfoDiscord, V as removeChannelPermissionDiscord, _ as readMessagesDiscord, a as removeReactionDiscord, b as addRoleDiscord, d as deleteMessageDiscord, f as editMessageDiscord, g as pinMessageDiscord, h as listThreadsDiscord, i as removeOwnReactionsDiscord, j as removeRoleDiscord, k as listGuildChannelsDiscord, l as DiscordThreadInitialMessageError, m as listPinsDiscord, n as fetchReactionsDiscord, p as fetchMessageDiscord, r as reactMessageDiscord, s as sendVoiceMessageDiscord, u as createThreadDiscord, v as searchMessagesDiscord, w as fetchGuildInfoDiscord, x as banMemberDiscord, y as unpinMessageDiscord, z as editChannelDiscord } from "./send-2X7m2Zmw.mjs";
10
- import "./targets-Lf8D55w-.mjs";
5
+ import { a as createReusableDiscordReplyReference, m as resolveDiscordChannelId, p as parseDiscordTarget, s as resolveDiscordReplyReference } from "./send.receipt-DVOg2Oaw.mjs";
6
+ import { A as listScheduledEventsDiscord, B as moveChannelDiscord, C as fetchChannelInfoDiscord, D as fetchVoiceStatusDiscord, E as fetchRoleInfoDiscord, F as uploadEmojiDiscord, H as setChannelPermissionDiscord, I as uploadStickerDiscord, L as createChannelDiscord, M as resolveEventCoverImage, N as timeoutMemberDiscord, O as kickMemberDiscord, P as listGuildEmojisDiscord, R as deleteChannelDiscord, S as createScheduledEventDiscord, T as fetchMemberInfoDiscord, V as removeChannelPermissionDiscord, _ as readMessagesDiscord, a as removeReactionDiscord, b as addRoleDiscord, d as deleteMessageDiscord, f as editMessageDiscord, g as pinMessageDiscord, h as listThreadsDiscord, i as removeOwnReactionsDiscord, j as removeRoleDiscord, k as listGuildChannelsDiscord, l as DiscordThreadInitialMessageError, m as listPinsDiscord, n as fetchReactionsDiscord, p as fetchMessageDiscord, r as reactMessageDiscord, s as sendVoiceMessageDiscord, u as createThreadDiscord, v as searchMessagesDiscord, w as fetchGuildInfoDiscord, x as banMemberDiscord, y as unpinMessageDiscord, z as editChannelDiscord } from "./send-CJk3VP5q.mjs";
7
+ import { r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-rOboMO_6.mjs";
8
+ import "./targets-bqXQENmX.mjs";
9
+ import { h as readDiscordComponentSpec, m as coerceDiscordComponentParam } from "./components-DLJR0xU-.mjs";
10
+ import { r as sendDiscordComponentMessage } from "./send.components-dPljuV24.mjs";
11
+ import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
11
12
  import { asBoolean, asOptionalRecord, isRecord, normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
13
+ import { assertMediaNotDataUrl, jsonResult, parseAvailableTags, readNonNegativeIntegerParam, readPositiveIntegerParam, readReactionParams, readStringArrayParam, readStringParam, withNormalizedTimestamp } from "openclaw/plugin-sdk/channel-actions";
12
14
  import { ChannelType, PermissionFlagsBits } from "discord-api-types/v10";
13
- import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
14
15
  import { createChannelProgressDraftCompositor } from "openclaw/plugin-sdk/channel-outbound";
15
- import { resolveOpenProviderRuntimeGroupPolicy } from "openclaw/plugin-sdk/runtime-group-policy";
16
- import { assertMediaNotDataUrl, jsonResult, parseAvailableTags, readNonNegativeIntegerParam, readPositiveIntegerParam, readReactionParams, readStringArrayParam, readStringParam, withNormalizedTimestamp } from "openclaw/plugin-sdk/channel-actions";
17
16
  import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
17
+ import { resolveOpenProviderRuntimeGroupPolicy } from "openclaw/plugin-sdk/runtime-group-policy";
18
18
  import { readBooleanParam } from "openclaw/plugin-sdk/boolean-param";
19
19
  //#region extensions/discord/src/actions/runtime.messaging.thread-list.ts
20
20
  function readDiscordChannelStringField(value, ...keys) {
@@ -1,5 +1,5 @@
1
- import { c as resolveDiscordAccount, g as selectDiscordActivitiesRuntimeConfig, n as isDiscordAccountEnabledForRuntime, r as listDiscordAccountIds } from "./accounts-DXHCL8Zm.mjs";
2
- import { R as resolveDiscordProxyFetchForAccount } from "./send.shared-BQIUh6Vn.mjs";
1
+ import { c as resolveDiscordAccount, g as selectDiscordActivitiesRuntimeConfig, n as isDiscordAccountEnabledForRuntime, r as listDiscordAccountIds } from "./accounts-HE9-mj1L.mjs";
2
+ import { z as resolveDiscordProxyFetchForAccount } from "./send.shared-C4CN24D9.mjs";
3
3
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  //#region extensions/discord/src/activities/config.ts
5
5
  function resolveDiscordActivitiesConfig(account, env = process.env) {
@@ -1,27 +1,27 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
2
- import { C as withDiscordRequestAuthority, S as readRetryAfter, _ as DiscordError, _t as getGuildMember, at as createOwnMessageReaction, b as readDiscordCode, ct as createThread, dt as getChannel, ft as getChannelMessage, gt as getGuild, ht as unpinChannelMessage, lt as deleteChannelMessage, mt as pinChannelMessage, ot as deleteOwnMessageReaction, st as listMessageReactionUsers, tt as stripUndefinedFields, ut as editChannelMessage, v as RateLimitError, vt as getGuildVoiceState, x as readDiscordMessage, y as isUnknownDiscordVoiceStateError, yt as listGuildEmojis } from "./discord-J7aRzq2Q.mjs";
3
- import { E as parseDiscordRetryAfterBodySeconds, O as getDiscordEndpointRuntime, k as resolveDiscordEndpointAttachmentGuard } from "./channel-type-D1_b5UhU.mjs";
4
- import { o as parseDiscordHttpErrorBody } from "./api-_oznjffB.mjs";
5
- import { a as recordDiscordMessageCreateAmbiguity, f as createReusableDiscordReplyReference, l as createDiscordSendReceiptFromResults, n as classifyDiscordDeliveryFailure, o as chunkDiscordTextWithMode, p as resolveDiscordReplyMessageId, r as createDiscordRetryRunner, u as createDiscordSendResult } from "./retry-BKzO25k4.mjs";
6
- import { C as hasAnyChannelPermissionDiscord, D as createDiscordMessageNonce, F as resolveDiscordClientAccountContext, G as parseAndResolveChannelRecipient, I as resolveDiscordRest, L as DISCORD_REST_TIMEOUT_MS, M as createDiscordClient, O as resolveDiscordMessageFlags, S as hasAllGuildPermissionsDiscord, _ as canManageGuildMemberRoleDiscord, a as normalizeEmojiName, b as fetchChannelPermissionsDiscord, c as resolveChannelId, f as sendDiscordText, g as DiscordSendError, h as DISCORD_MAX_STICKER_BYTES, j as resolveDiscordSuppressEmbeds, m as DISCORD_MAX_EVENT_COVER_BYTES, n as buildDiscordTextChunks, o as normalizeReactionEmoji, p as DISCORD_MAX_EMOJI_BYTES, r as buildReactionIdentifier, t as buildDiscordSendError, v as canManageGuildRoleDiscord, w as hasAnyGuildPermissionDiscord, x as fetchMemberGuildPermissionsDiscord, y as canViewDiscordGuildChannel } from "./send.shared-BQIUh6Vn.mjs";
7
- import { i as prepareDiscordOutboundText, n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-B4QHSEzm.mjs";
2
+ import { D as getDiscordEndpointRuntime, O as resolveDiscordEndpointAttachmentGuard, T as parseDiscordRetryAfterBodySeconds } from "./allow-list-vxkG9_JD.mjs";
3
+ import { C as hasAnyChannelPermissionDiscord, D as createDiscordMessageNonce, I as resolveDiscordClientAccountContext, L as resolveDiscordRest, M as parseAndResolveChannelRecipient, N as createDiscordClient, O as resolveDiscordMessageFlags, R as DISCORD_REST_TIMEOUT_MS, S as hasAllGuildPermissionsDiscord, _ as canManageGuildMemberRoleDiscord, a as normalizeEmojiName, b as fetchChannelPermissionsDiscord, c as resolveChannelId, f as sendDiscordText, g as DiscordSendError, h as DISCORD_MAX_STICKER_BYTES, j as resolveDiscordSuppressEmbeds, m as DISCORD_MAX_EVENT_COVER_BYTES, n as buildDiscordTextChunks, o as normalizeReactionEmoji, p as DISCORD_MAX_EMOJI_BYTES, r as buildReactionIdentifier, t as buildDiscordSendError, v as canManageGuildRoleDiscord, w as hasAnyGuildPermissionDiscord, x as fetchMemberGuildPermissionsDiscord, y as canViewDiscordGuildChannel } from "./send.shared-C4CN24D9.mjs";
4
+ import { C as withDiscordRequestAuthority, S as readRetryAfter, _ as DiscordError, _t as getGuildVoiceState, at as deleteOwnMessageReaction, b as readDiscordCode, ct as deleteChannelMessage, dt as getChannelMessage, gt as getGuildMember, ht as getGuild, it as createOwnMessageReaction, lt as editChannelMessage, mt as unpinChannelMessage, ot as listMessageReactionUsers, pt as pinChannelMessage, st as createThread, ut as getChannel, v as RateLimitError, vt as listGuildEmojis, x as readDiscordMessage, y as isUnknownDiscordVoiceStateError, yt as stripUndefinedFields } from "./discord-9gysrhzp.mjs";
5
+ import { _ as createDiscordRetryRunner, a as createReusableDiscordReplyReference, b as chunkDiscordTextWithMode, g as classifyDiscordDeliveryFailure, n as createDiscordSendReceiptFromResults, o as resolveDiscordReplyMessageId, r as createDiscordSendResult, y as recordDiscordMessageCreateAmbiguity } from "./send.receipt-DVOg2Oaw.mjs";
6
+ import { o as parseDiscordHttpErrorBody } from "./api-DlNUkDqj.mjs";
7
+ import { i as prepareDiscordOutboundText, n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-rOboMO_6.mjs";
8
8
  import { n as DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS } from "./timeouts-pun7VJ02.mjs";
9
- import fs from "node:fs/promises";
9
+ import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
10
+ import { resolvePreferredOpenClawTmpDir, withTempWorkspace } from "openclaw/plugin-sdk/temp-path";
10
11
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
11
12
  import { ChannelType, Routes } from "discord-api-types/v10";
12
- import crypto from "node:crypto";
13
+ import { MEDIA_FFMPEG_MAX_AUDIO_DURATION_SECS, buildOutboundMediaLoadOptions, extensionForMime, maxBytesForKind, parseFfprobeCodecAndSampleRate, runFfmpeg, runFfprobe, unlinkIfExists } from "openclaw/plugin-sdk/media-runtime";
14
+ import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
15
+ import { expectDefined } from "openclaw/plugin-sdk/expect-runtime";
13
16
  import { parseStrictFiniteNumber, resolveExpiresAtMsFromDurationMs, timestampMsToIsoString } from "openclaw/plugin-sdk/number-runtime";
17
+ import crypto from "node:crypto";
14
18
  import { fetchWithSsrFGuard } from "openclaw/plugin-sdk/ssrf-runtime";
15
- import { formatErrorMessage as formatErrorMessage$1 } from "openclaw/plugin-sdk/error-runtime";
16
19
  import { readProviderJsonResponse, readResponseTextLimited } from "openclaw/plugin-sdk/provider-http";
20
+ import { loadWebMediaRaw } from "openclaw/plugin-sdk/web-media";
17
21
  import { recordChannelActivity } from "openclaw/plugin-sdk/channel-activity-runtime";
18
- import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
19
- import { expectDefined } from "openclaw/plugin-sdk/expect-runtime";
20
22
  import { recordOutboundMessageIdentity } from "openclaw/plugin-sdk/channel-outbound";
21
- import { MEDIA_FFMPEG_MAX_AUDIO_DURATION_SECS, buildOutboundMediaLoadOptions, extensionForMime, maxBytesForKind, parseFfprobeCodecAndSampleRate, runFfmpeg, runFfprobe, unlinkIfExists } from "openclaw/plugin-sdk/media-runtime";
22
- import { resolvePreferredOpenClawTmpDir, withTempWorkspace } from "openclaw/plugin-sdk/temp-path";
23
- import { loadWebMediaRaw } from "openclaw/plugin-sdk/web-media";
24
23
  import { buildTimeoutAbortSignal } from "openclaw/plugin-sdk/extension-shared";
24
+ import fs from "node:fs/promises";
25
25
  import path from "node:path";
26
26
  import { writeExternalFileWithinRoot } from "openclaw/plugin-sdk/security-runtime";
27
27
  //#region extensions/discord/src/send.channels.ts
@@ -267,7 +267,7 @@ function describeDiscordThreadInitialMessageFailure(delivery) {
267
267
  }
268
268
  var DiscordThreadInitialMessageError = class extends Error {
269
269
  constructor(thread, error, initialMessageDelivery) {
270
- const initialMessageError = formatErrorMessage$1(error);
270
+ const initialMessageError = formatErrorMessage(error);
271
271
  const initialMessageWarning = describeDiscordThreadInitialMessageFailure(initialMessageDelivery);
272
272
  super(`${initialMessageWarning}: ${initialMessageError}`, { cause: error });
273
273
  this.name = "DiscordThreadInitialMessageError";
@@ -588,7 +588,7 @@ async function getAudioDuration(filePath) {
588
588
  if (duration === void 0) throw new Error("Could not parse duration");
589
589
  return Math.round(duration * 100) / 100;
590
590
  } catch (err) {
591
- const errMessage = formatErrorMessage$1(err);
591
+ const errMessage = formatErrorMessage(err);
592
592
  throw new Error(`Failed to get audio duration: ${errMessage}`, { cause: err });
593
593
  }
594
594
  }
@@ -1,18 +1,18 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
2
- import { d as buildDiscordComponentMessage, f as buildDiscordComponentMessageFlags, g as resolveDiscordComponentAttachmentName } from "./components-CzXLR3QH.mjs";
3
- import { A as serializePayload, C as withDiscordRequestAuthority, ut as editChannelMessage } from "./discord-J7aRzq2Q.mjs";
2
+ import { D as createDiscordMessageNonce, M as parseAndResolveChannelRecipient, N as createDiscordClient, T as SUPPRESS_NOTIFICATIONS_FLAG, c as resolveChannelId, l as resolveDiscordChannel, t as buildDiscordSendError } from "./send.shared-C4CN24D9.mjs";
3
+ import { A as serializePayload, C as withDiscordRequestAuthority, lt as editChannelMessage } from "./discord-9gysrhzp.mjs";
4
+ import { r as createDiscordSendResult } from "./send.receipt-DVOg2Oaw.mjs";
5
+ import { t as sendMessageDiscord } from "./send.outbound-rOboMO_6.mjs";
6
+ import { d as buildDiscordComponentMessage, f as buildDiscordComponentMessageFlags, g as resolveDiscordComponentAttachmentName } from "./components-DLJR0xU-.mjs";
4
7
  import { n as getOptionalDiscordRuntime } from "./runtime-DgnVQ7zW.mjs";
5
- import { u as createDiscordSendResult } from "./retry-BKzO25k4.mjs";
6
- import { D as createDiscordMessageNonce, G as parseAndResolveChannelRecipient, M as createDiscordClient, T as SUPPRESS_NOTIFICATIONS_FLAG, c as resolveChannelId, l as resolveDiscordChannel, t as buildDiscordSendError } from "./send.shared-BQIUh6Vn.mjs";
7
- import { t as sendMessageDiscord } from "./send.outbound-B4QHSEzm.mjs";
8
8
  import { hasNonEmptyString, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
9
9
  import { ChannelType, Routes } from "discord-api-types/v10";
10
+ import { loadOutboundMediaFromUrl } from "openclaw/plugin-sdk/outbound-media";
11
+ import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
10
12
  import { asDateTimestampMs, isFutureDateTimestampMs, resolveDateTimestampMs, resolveExpiresAtMsFromDurationMs } from "openclaw/plugin-sdk/number-runtime";
11
13
  import { resolveGlobalSingleton } from "openclaw/plugin-sdk/global-singleton";
12
14
  import { recordChannelActivity } from "openclaw/plugin-sdk/channel-activity-runtime";
13
15
  import { extensionForMime } from "openclaw/plugin-sdk/media-mime";
14
- import { loadOutboundMediaFromUrl } from "openclaw/plugin-sdk/outbound-media";
15
- import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
16
16
  import { createPluginStateErrorReporter } from "openclaw/plugin-sdk/plugin-state-runtime";
17
17
  import { createAsyncLock } from "openclaw/plugin-sdk/async-lock-runtime";
18
18
  //#region extensions/discord/src/components-registry-state.ts
@@ -1,17 +1,17 @@
1
- import { C as withDiscordRequestAuthority, ct as createThread } from "./discord-J7aRzq2Q.mjs";
2
- import { a as normalizeDiscordSnowflake, i as normalizeDiscordHandleKey, s as resolveDiscordDirectoryUserId } from "./directory-live-C9xz7IPm.mjs";
3
- import { f as createReusableDiscordReplyReference, l as createDiscordSendReceiptFromResults, u as createDiscordSendResult } from "./retry-BKzO25k4.mjs";
4
- import { A as resolveDiscordSendEmbeds, D as createDiscordMessageNonce, E as buildDiscordMessageRequest, G as parseAndResolveChannelRecipient, M as createDiscordClient, O as resolveDiscordMessageFlags, c as resolveChannelId, d as sendDiscordMedia, f as sendDiscordText, i as normalizeDiscordPollInput, j as resolveDiscordSuppressEmbeds, k as resolveDiscordSendComponents, l as resolveDiscordChannel, n as buildDiscordTextChunks, s as normalizeStickerIds, t as buildDiscordSendError } from "./send.shared-BQIUh6Vn.mjs";
1
+ import { A as resolveDiscordSendEmbeds, D as createDiscordMessageNonce, E as buildDiscordMessageRequest, M as parseAndResolveChannelRecipient, N as createDiscordClient, O as resolveDiscordMessageFlags, c as resolveChannelId, d as sendDiscordMedia, f as sendDiscordText, i as normalizeDiscordPollInput, j as resolveDiscordSuppressEmbeds, k as resolveDiscordSendComponents, l as resolveDiscordChannel, n as buildDiscordTextChunks, s as normalizeStickerIds, t as buildDiscordSendError } from "./send.shared-C4CN24D9.mjs";
2
+ import { C as withDiscordRequestAuthority, st as createThread } from "./discord-9gysrhzp.mjs";
3
+ import { a as createReusableDiscordReplyReference, n as createDiscordSendReceiptFromResults, r as createDiscordSendResult } from "./send.receipt-DVOg2Oaw.mjs";
4
+ import { a as normalizeDiscordSnowflake, i as normalizeDiscordHandleKey, s as resolveDiscordDirectoryUserId } from "./directory-live-Bipr0eUJ.mjs";
5
5
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { ChannelType, Routes } from "discord-api-types/v10";
7
- import { recordChannelActivity } from "openclaw/plugin-sdk/channel-activity-runtime";
8
7
  import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
9
- import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
10
- import { resolveChunkMode } from "openclaw/plugin-sdk/reply-chunking";
11
8
  import { expectDefined } from "openclaw/plugin-sdk/expect-runtime";
9
+ import { resolveChunkMode } from "openclaw/plugin-sdk/reply-chunking";
10
+ import { convertMarkdownTables } from "openclaw/plugin-sdk/text-chunking";
11
+ import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
12
+ import { recordChannelActivity } from "openclaw/plugin-sdk/channel-activity-runtime";
12
13
  import { resolveMarkdownTableMode } from "openclaw/plugin-sdk/markdown-table-runtime";
13
14
  import { fromMarkdown } from "mdast-util-from-markdown";
14
- import { convertMarkdownTables } from "openclaw/plugin-sdk/text-chunking";
15
15
  //#region extensions/discord/src/mentions.ts
16
16
  const MENTION_CANDIDATE_PATTERN = /(^|[\s([{"'.,;:!?])@([a-z0-9_.-]{2,32}(?:#[0-9]{4})?)/gi;
17
17
  const DISCORD_RESERVED_MENTIONS = /* @__PURE__ */ new Set(["everyone", "here"]);