@openclaw/discord 2026.9.7 → 2026.9.9

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 (75) hide show
  1. package/dist/.setup/{account-inspect-De8hOUxG.mjs → account-inspect-Bp8nbBSx.mjs} +2 -2
  2. package/dist/.setup/{channel-type-DRCrEMss.mjs → allow-list-Kty_8Xca.mjs} +7 -7
  3. package/dist/.setup/{api-DVbJwZVt.mjs → api-CotnTQLx.mjs} +3 -3
  4. package/dist/.setup/{approval-handler.runtime-DxCK2Rux.mjs → approval-handler.runtime-DqU_yO2L.mjs} +9 -9
  5. package/dist/.setup/{approval-message-updates-BKFqavHZ.mjs → approval-message-updates-CdnQ98c8.mjs} +2 -2
  6. package/dist/.setup/{audit-CLg9I71N.mjs → audit-CqUeNcJH.mjs} +4 -4
  7. package/dist/.setup/{channel-DxlUVU9t.mjs → channel-Bu1qLdnm.mjs} +28 -23
  8. package/dist/.setup/{channel.setup-CRo1GjV7.mjs → channel.setup-DRCLt54O.mjs} +4 -4
  9. package/dist/.setup/{components-Cq1PvIpN.mjs → components-CwpgbGDR.mjs} +3 -3
  10. package/dist/.setup/{conversation-binding-route-Caz_XuFH.mjs → conversation-binding-route-DC0Y2v1B.mjs} +1 -1
  11. package/dist/.setup/{directory-config-esqNn0Eo.mjs → directory-config-DLT0PP2j.mjs} +1 -1
  12. package/dist/.setup/{directory-live-DtKRHuGV.mjs → directory-live-DPVUIJ8-.mjs} +4 -4
  13. package/dist/.setup/{discord-0xJYfdDD.mjs → discord-DTLP81g6.mjs} +3 -3
  14. package/dist/.setup/{doctor-BCl1H5tl.mjs → doctor-E3AF74Ms.mjs} +5 -5
  15. package/dist/.setup/{handle-action-CUvQWnE7.mjs → handle-action-cmTFQysA.mjs} +8 -8
  16. package/dist/.setup/{handle-action.guild-admin-Df-8gVle.mjs → handle-action.guild-admin-CH8nj2w0.mjs} +2 -2
  17. package/dist/.setup/{live-policy-config-8Pv20CHc.mjs → live-policy-config-D--q9Zta.mjs} +1 -1
  18. package/dist/.setup/{message-handler-B-Jk4oDk.mjs → message-handler-BVZO6wCg.mjs} +12 -11
  19. package/dist/.setup/{message-handler.preflight-v-__NSDq.mjs → message-handler.preflight-Be_b_NFp.mjs} +17 -17
  20. package/dist/.setup/{message-handler.preflight-pluralkit-CWLUBVcx.mjs → message-handler.preflight-pluralkit-TPGXsd8P.mjs} +7 -7
  21. package/dist/.setup/{message-handler.process-BNFFuChn.mjs → message-handler.process-BUBGcAoh.mjs} +21 -21
  22. package/dist/.setup/{outbound-adapter-BobT-kse.mjs → outbound-adapter-CSiCDzCN.mjs} +9 -9
  23. package/dist/.setup/{outbound-session-route-zVGxxceg.mjs → outbound-session-route-D0ryINch.mjs} +13 -13
  24. package/dist/.setup/{probe-LYrIHlBF.mjs → probe-DTSDdlpy.mjs} +4 -4
  25. package/dist/.setup/{provider-B_G5hASF.mjs → provider-BTm60b3t.mjs} +81 -81
  26. package/dist/.setup/{provider-session.runtime-BYlTBFD2.mjs → provider-session.runtime-DKJ-qSt9.mjs} +3 -3
  27. package/dist/.setup/provider.runtime-BvoZBuZY.mjs +2 -0
  28. package/dist/.setup/{realtime-session.runtime-oUd9DOcz.mjs → realtime-session.runtime-JZd7A5bS.mjs} +19 -19
  29. package/dist/.setup/{resolve-allowlist-common-DPdRggu5.mjs → resolve-allowlist-common-Ck4M_Ot2.mjs} +3 -3
  30. package/dist/.setup/{resolve-channels-BFPNRmVv.mjs → resolve-channels-CEaKGzuh.mjs} +3 -3
  31. package/dist/.setup/{resolve-users-0-aBuCy3.mjs → resolve-users-CMz4PVnV.mjs} +2 -2
  32. package/dist/.setup/{runtime-FN000lxA.mjs → runtime-DwW5C0WK.mjs} +12 -12
  33. package/dist/.setup/{runtime-sUksZ--Q.mjs → runtime-Lsy4dEx7.mjs} +2 -2
  34. package/dist/.setup/{send-CrfEI6Bs.mjs → send-DY5EeBPr.mjs} +15 -15
  35. package/dist/.setup/{send.components-DxQAMfES.mjs → send.components-DGwzyA_4.mjs} +7 -7
  36. package/dist/.setup/{send.outbound-BISKnb-a.mjs → send.outbound-DR8O-Pvo.mjs} +8 -8
  37. package/dist/.setup/{retry-pz_cSha2.mjs → send.receipt-D0JBijZQ.mjs} +217 -217
  38. package/dist/.setup/{send.shared-DGFkbkQR.mjs → send.shared-r0Fj2v_h.mjs} +40 -40
  39. package/dist/.setup/{sender-identity-B9X5Vb9R.mjs → sender-identity-DQCoikZl.mjs} +1 -1
  40. package/dist/.setup/setup-plugin-api-BEoo_L8p.mjs +3 -0
  41. package/dist/.setup/{shared-B3wZ4hN-.mjs → shared-CDq4vJm3.mjs} +7 -7
  42. package/dist/.setup/{subagent-hooks-nlUE9ow7.mjs → subagent-hooks-Bk0mMyHh.mjs} +2 -2
  43. package/dist/.setup/{system-events-CdeZnvPV.mjs → system-events-I1rH-U6o.mjs} +2 -2
  44. package/dist/.setup/{target-resolver-BuLapkhy.mjs → target-resolver-Dcg0WjsF.mjs} +3 -3
  45. package/dist/.setup/targets-CJkVZIkE.mjs +3 -0
  46. package/dist/.setup/{thread-bindings-D7TfgjR_.mjs → thread-bindings-E0TiUQUX.mjs} +6 -6
  47. package/dist/.setup/{thread-bindings.manager-DN-NissX.mjs → thread-bindings.manager-CEoFDOs9.mjs} +14 -14
  48. package/dist/.setup/{thread-bindings.session-updates-CshfKghV.mjs → thread-bindings.session-updates-DvtjzKO-.mjs} +2 -2
  49. package/dist/.setup/{transcripts-source-p8EV179h.mjs → transcripts-source-CHhpvL97.mjs} +17 -17
  50. package/dist/.setup/{typing-BiHCzBRu.mjs → typing-Cr0b2zBq.mjs} +1 -1
  51. package/dist/.setup/{voice-runtime-B46rcwrG.mjs → voice-runtime-BngIfPc3.mjs} +46 -46
  52. package/dist/account-inspect-api.js +1 -1
  53. package/dist/action-runtime-api.js +1 -1
  54. package/dist/activities-api.js +791 -1
  55. package/dist/api.js +15 -15
  56. package/dist/channel-config-api.js +1 -1
  57. package/dist/channel-plugin-api.js +1 -1
  58. package/dist/directory-contract-api.js +1 -1
  59. package/dist/doctor-contract-api.js +1 -1
  60. package/dist/index.js +9 -5
  61. package/dist/runtime-api.js +20 -20
  62. package/dist/setup-entry.js +1 -1
  63. package/dist/setup-plugin-api.js +1 -1
  64. package/dist/src/voice/audio-worker.runtime.js +3 -3
  65. package/dist/subagent-hooks-api.js +1 -1
  66. package/dist/transcripts-source-api.js +1 -1
  67. package/package.json +4 -4
  68. package/dist/.setup/activities-api-tvbsU2e3.mjs +0 -792
  69. package/dist/.setup/provider.runtime-CUE3UxER.mjs +0 -2
  70. package/dist/.setup/setup-plugin-api-BQUBxbhe.mjs +0 -3
  71. package/dist/.setup/targets-0KUcEIYx.mjs +0 -3
  72. package/dist/.setup/{accounts-ChaMcixG.mjs → accounts-DS-A-gCx.mjs} +3 -3
  73. package/dist/.setup/{config-schema-oxELUSDx.mjs → config-schema-DKUSr985.mjs} +2 -2
  74. package/dist/.setup/{receive-recovery-CHPOsnLc.mjs → receive-recovery-D6eikHf5.mjs} +2 -2
  75. package/dist/.setup/{thread-bindings.state-g6v9zAym.mjs → thread-bindings.state-755lJHln.mjs} +3 -3
@@ -1,20 +1,20 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
2
- import { C as withDiscordRequestAuthority, mt as getChannel, nt as createChannelWebhook } from "./discord-0xJYfdDD.mjs";
3
- import { t as isDiscordThreadChannelType } from "./channel-type-DRCrEMss.mjs";
4
- import { t as canFallbackDiscordWebhookSend, x as resolveDiscordChannelId } from "./retry-pz_cSha2.mjs";
5
- import { N as createDiscordRestClient } from "./send.shared-DGFkbkQR.mjs";
6
- import { t as sendMessageDiscord } from "./send.outbound-BISKnb-a.mjs";
2
+ import { k as isDiscordThreadChannelType } from "./allow-list-Kty_8Xca.mjs";
3
+ import { P as createDiscordRestClient } from "./send.shared-r0Fj2v_h.mjs";
4
+ import { C as withDiscordRequestAuthority, mt as getChannel, nt as createChannelWebhook } from "./discord-DTLP81g6.mjs";
5
+ import { h as canFallbackDiscordWebhookSend, m as resolveDiscordChannelId } from "./send.receipt-D0JBijZQ.mjs";
6
+ import { c as sendWebhookMessageDiscord, u as createThreadDiscord } from "./send-DY5EeBPr.mjs";
7
+ import { t as sendMessageDiscord } from "./send.outbound-DR8O-Pvo.mjs";
8
+ import { C as resolvePreparedThreadBindingLifecycle, D as resolveThreadBindingMaxAgeMs$1, M as toReusableWebhookKey, S as resolveBindingRecordKey, _ as refreshUnboundThreadWebhookIdentity, c as THREAD_BINDING_TOUCH_PERSIST_MIN_INTERVAL_MS, d as forgetThreadBindingToken, f as getThreadBindingToken, h as normalizeThreadBindingDurationMs, i as REUSABLE_WEBHOOKS_BY_ACCOUNT_CHANNEL, j as toBindingRecordKey, k as shouldDefaultPersist, m as normalizeTargetKind, n as MANAGERS_BY_ACCOUNT_ID, r as PERSIST_BY_ACCOUNT_ID, t as BINDINGS_BY_THREAD_ID, u as ensureBindingsLoadedAsync, v as rememberReusableWebhook, w as resolveThreadBindingIdleTimeoutMs$1, x as resolveBindingIdsForSession, y as rememberThreadBindingToken } from "./thread-bindings.state-755lJHln.mjs";
9
+ import { c as drainThreadBindingAccountOperations, d as runThreadBindingAccountOperation, f as runThreadBindingMutation, h as updateBindingRecordSync, l as drainThreadBindingMutations, m as snapshotThreadBindingJson, p as shouldPersistAnyBindingState, s as commitBindingRecord } from "./thread-bindings.session-updates-DvtjzKO-.mjs";
7
10
  import { n as resolveDiscordChannelInfoSafe, t as resolveDiscordChannelIdSafe } from "./channel-access-C12aDZ0p.mjs";
8
- import { c as sendWebhookMessageDiscord, u as createThreadDiscord } from "./send-CrfEI6Bs.mjs";
9
- import { C as resolvePreparedThreadBindingLifecycle, D as resolveThreadBindingMaxAgeMs$1, M as toReusableWebhookKey, S as resolveBindingRecordKey, _ as refreshUnboundThreadWebhookIdentity, c as THREAD_BINDING_TOUCH_PERSIST_MIN_INTERVAL_MS, d as forgetThreadBindingToken, f as getThreadBindingToken, h as normalizeThreadBindingDurationMs, i as REUSABLE_WEBHOOKS_BY_ACCOUNT_CHANNEL, j as toBindingRecordKey, k as shouldDefaultPersist, m as normalizeTargetKind, n as MANAGERS_BY_ACCOUNT_ID, r as PERSIST_BY_ACCOUNT_ID, t as BINDINGS_BY_THREAD_ID, u as ensureBindingsLoadedAsync, v as rememberReusableWebhook, w as resolveThreadBindingIdleTimeoutMs$1, x as resolveBindingIdsForSession, y as rememberThreadBindingToken } from "./thread-bindings.state-g6v9zAym.mjs";
10
- import { c as drainThreadBindingAccountOperations, d as runThreadBindingAccountOperation, f as runThreadBindingMutation, h as updateBindingRecordSync, l as drainThreadBindingMutations, m as snapshotThreadBindingJson, p as shouldPersistAnyBindingState, s as commitBindingRecord } from "./thread-bindings.session-updates-CshfKghV.mjs";
11
- import { parseStrictNonNegativeInteger } from "openclaw/plugin-sdk/number-runtime";
12
- import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
11
+ import { createSubsystemLogger, logVerbose } from "openclaw/plugin-sdk/runtime-env";
13
12
  import { asOptionalObjectRecord, normalizeOptionalString, normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/string-coerce-runtime";
13
+ import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
14
14
  import { getRuntimeConfigSnapshot } from "openclaw/plugin-sdk/runtime-config-snapshot";
15
- import { createSubsystemLogger, logVerbose } from "openclaw/plugin-sdk/runtime-env";
16
- import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
15
+ import { parseStrictNonNegativeInteger as parseStrictNonNegativeInteger$1 } from "openclaw/plugin-sdk/number-runtime";
17
16
  import { SYSTEM_MARK } from "openclaw/plugin-sdk/text-chunking";
17
+ import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
18
18
  import { registerSessionBindingAdapter, resolveThreadBindingConversationIdFromBindingId, resolveThreadBindingFarewellText, resolveThreadBindingThreadName, unregisterSessionBindingAdapter } from "openclaw/plugin-sdk/conversation-runtime";
19
19
  import { resolveSessionAgentIdStrict } from "openclaw/plugin-sdk/agent-scope-runtime";
20
20
  //#region extensions/discord/src/monitor/thread-bindings.persona.ts
@@ -63,12 +63,12 @@ function summarizeDiscordError(err) {
63
63
  function extractDiscordErrorStatus(err) {
64
64
  if (!err || typeof err !== "object") return;
65
65
  const candidate = err;
66
- return parseStrictNonNegativeInteger(candidate.status) ?? parseStrictNonNegativeInteger(candidate.statusCode) ?? parseStrictNonNegativeInteger(candidate.response?.status);
66
+ return parseStrictNonNegativeInteger$1(candidate.status) ?? parseStrictNonNegativeInteger$1(candidate.statusCode) ?? parseStrictNonNegativeInteger$1(candidate.response?.status);
67
67
  }
68
68
  function extractDiscordErrorCode(err) {
69
69
  if (!err || typeof err !== "object") return;
70
70
  const candidate = err;
71
- return parseStrictNonNegativeInteger(candidate.code) ?? parseStrictNonNegativeInteger(candidate.rawError?.code) ?? parseStrictNonNegativeInteger(candidate.body?.code) ?? parseStrictNonNegativeInteger(candidate.response?.body?.code) ?? parseStrictNonNegativeInteger(candidate.response?.data?.code);
71
+ return parseStrictNonNegativeInteger$1(candidate.code) ?? parseStrictNonNegativeInteger$1(candidate.rawError?.code) ?? parseStrictNonNegativeInteger$1(candidate.body?.code) ?? parseStrictNonNegativeInteger$1(candidate.response?.body?.code) ?? parseStrictNonNegativeInteger$1(candidate.response?.data?.code);
72
72
  }
73
73
  function isDiscordThreadGoneError(err) {
74
74
  if (extractDiscordErrorCode(err) === 10003) return true;
@@ -1,8 +1,8 @@
1
1
  import { t as getDiscordRuntime } from "./runtime-DgnVQ7zW.mjs";
2
- import { O as setBindingRecord, a as THREAD_BINDINGS_MAX_ENTRIES, b as removeBindingRecord, g as openThreadBindingsStore, l as ensureBindingsLoaded, n as MANAGERS_BY_ACCOUNT_ID, o as THREAD_BINDINGS_NAMESPACE, p as normalizePersistedBinding, r as PERSIST_BY_ACCOUNT_ID, s as THREAD_BINDINGS_STATE, t as BINDINGS_BY_THREAD_ID, u as ensureBindingsLoadedAsync, x as resolveBindingIdsForSession } from "./thread-bindings.state-g6v9zAym.mjs";
2
+ import { O as setBindingRecord, a as THREAD_BINDINGS_MAX_ENTRIES, b as removeBindingRecord, g as openThreadBindingsStore, l as ensureBindingsLoaded, n as MANAGERS_BY_ACCOUNT_ID, o as THREAD_BINDINGS_NAMESPACE, p as normalizePersistedBinding, r as PERSIST_BY_ACCOUNT_ID, s as THREAD_BINDINGS_STATE, t as BINDINGS_BY_THREAD_ID, u as ensureBindingsLoadedAsync, x as resolveBindingIdsForSession } from "./thread-bindings.state-755lJHln.mjs";
3
+ import { logVerbose } from "openclaw/plugin-sdk/runtime-env";
3
4
  import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
4
5
  import { createPluginStateErrorReporter } from "openclaw/plugin-sdk/plugin-state-runtime";
5
- import { logVerbose } from "openclaw/plugin-sdk/runtime-env";
6
6
  //#region extensions/discord/src/monitor/thread-bindings.persistence.ts
7
7
  function shouldPersistAnyBindingState() {
8
8
  for (const value of PERSIST_BY_ACCOUNT_ID.values()) if (value) return true;
@@ -1,27 +1,27 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
2
- import { _ as DiscordError, ft as editChannel, ht as getChannelMessage, lt as createThread, t as discord_exports } from "./discord-0xJYfdDD.mjs";
3
- import { D as getDiscordEndpointRuntime, f as resolveDiscordGuildEntry, i as normalizeDiscordAllowList, k as resolveDiscordEndpointMediaGuard, l as resolveDiscordChannelConfigWithFallback, n as allowListMatches, o as normalizeDiscordSlug, p as resolveDiscordMemberAccessState, r as isDiscordGroupAllowedByPolicy, t as isDiscordThreadChannelType } from "./channel-type-DRCrEMss.mjs";
4
- import { a as listEnabledDiscordAccounts, c as resolveDiscordAccount, l as resolveDiscordAccountAllowFrom } from "./accounts-ChaMcixG.mjs";
2
+ import { a as listEnabledDiscordAccounts, c as resolveDiscordAccount, l as resolveDiscordAccountAllowFrom } from "./accounts-DS-A-gCx.mjs";
3
+ import { E as getDiscordEndpointRuntime, O as resolveDiscordEndpointMediaGuard, a as normalizeDiscordSlug, c as resolveDiscordChannelConfigWithFallback, d as resolveDiscordGuildEntry, f as resolveDiscordMemberAccessState, k as isDiscordThreadChannelType, n as isDiscordGroupAllowedByPolicy, r as normalizeDiscordAllowList, t as allowListMatches } from "./allow-list-Kty_8Xca.mjs";
4
+ import { _ as DiscordError, ft as editChannel, ht as getChannelMessage, lt as createThread, t as discord_exports } from "./discord-DTLP81g6.mjs";
5
5
  import { t as resolveDiscordCommandOwnerAllowFrom } from "./command-owners-D78sAoOz.mjs";
6
6
  import { a as resolveDiscordChannelParentSafe, i as resolveDiscordChannelParentIdSafe, n as resolveDiscordChannelInfoSafe, r as resolveDiscordChannelNameSafe, t as resolveDiscordChannelIdSafe } from "./channel-access-C12aDZ0p.mjs";
7
+ import { createSubsystemLogger, getChildLogger, logVerbose } from "openclaw/plugin-sdk/runtime-env";
8
+ import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-id";
9
+ import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeOptionalStringifiedId, summarizeStringEntries, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
10
+ import { buildAgentSessionKey } from "openclaw/plugin-sdk/routing";
7
11
  import { ComponentType, StickerFormatType } from "discord-api-types/v10";
8
12
  import { asDateTimestampMs, resolveExpiresAtMsFromDurationMs } from "openclaw/plugin-sdk/number-runtime";
9
13
  import { formatErrorMessage } from "openclaw/plugin-sdk/ssrf-runtime";
10
14
  import { resolveGlobalSingleton } from "openclaw/plugin-sdk/global-singleton";
11
- import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-id";
12
- import { buildAgentSessionKey } from "openclaw/plugin-sdk/routing";
13
- import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeOptionalStringifiedId, summarizeStringEntries, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
14
- import { getFileExtension, normalizeMimeType } from "openclaw/plugin-sdk/media-mime";
15
- import { createSubsystemLogger, getChildLogger, logVerbose } from "openclaw/plugin-sdk/runtime-env";
15
+ import { saveRemoteMedia } from "openclaw/plugin-sdk/media-runtime";
16
16
  import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
17
17
  import { createReplyReferencePlanner } from "openclaw/plugin-sdk/reply-reference";
18
- import { saveRemoteMedia } from "openclaw/plugin-sdk/media-runtime";
19
- import { resolveCommandAuthorizedFromAuthorizers } from "openclaw/plugin-sdk/command-auth-native";
20
18
  import { resolveOpenProviderRuntimeGroupPolicy } from "openclaw/plugin-sdk/runtime-group-policy";
19
+ import { getFileExtension, normalizeMimeType } from "openclaw/plugin-sdk/media-mime";
21
20
  import { pruneMapToMaxSize } from "openclaw/plugin-sdk/collection-runtime";
22
21
  import { resolveChannelModelOverride } from "openclaw/plugin-sdk/model-session-runtime";
23
22
  import { generateConversationLabel } from "openclaw/plugin-sdk/reply-dispatch-runtime";
24
23
  import { formatMediaPlaceholderText } from "openclaw/plugin-sdk/channel-inbound";
24
+ import { resolveCommandAuthorizedFromAuthorizers } from "openclaw/plugin-sdk/command-auth-native";
25
25
  //#region extensions/discord/src/monitor/message-channel-info-state.ts
26
26
  const discordChannelInfoCacheState = { entries: /* @__PURE__ */ new Map() };
27
27
  //#endregion
@@ -1014,6 +1014,12 @@ async function resolveFetchedDiscordThreadLikeChannelContext(params) {
1014
1014
  });
1015
1015
  }
1016
1016
  //#endregion
1017
+ //#region extensions/discord/src/voice/config.ts
1018
+ function resolveDiscordVoiceEnabled(voice) {
1019
+ if (voice?.enabled !== void 0) return voice.enabled;
1020
+ return voice !== void 0;
1021
+ }
1022
+ //#endregion
1017
1023
  //#region extensions/discord/src/voice/owner-access.ts
1018
1024
  async function resolveDiscordVoiceAccessTarget(params) {
1019
1025
  const [guild, channel] = await Promise.all([params.client.fetchGuild(params.guildId).catch(() => null), params.client.fetchChannel(params.channelId).catch(() => null)]);
@@ -1140,12 +1146,6 @@ async function authorizeDiscordVoiceIngress(initialParams) {
1140
1146
  };
1141
1147
  }
1142
1148
  //#endregion
1143
- //#region extensions/discord/src/voice/config.ts
1144
- function resolveDiscordVoiceEnabled(voice) {
1145
- if (voice?.enabled !== void 0) return voice.enabled;
1146
- return voice !== void 0;
1147
- }
1148
- //#endregion
1149
1149
  //#region extensions/discord/src/voice/transcripts-source.ts
1150
1150
  const TRANSCRIPTS_STATE = resolveGlobalSingleton(Symbol.for("openclaw.discordTranscriptsState"), () => ({
1151
1151
  managersByAccountId: /* @__PURE__ */ new Map(),
@@ -1618,4 +1618,4 @@ const discordVoiceTranscriptsSourceProvider = {
1618
1618
  }
1619
1619
  };
1620
1620
  //#endregion
1621
- export { resolveDiscordMessageChannelId as A, resolveReferencedReplyMediaList as C, resolveDiscordReferencedReplyMessage as D, resolveDiscordMessageStickers as E, resolveDiscordReferencedReplyMessageId as O, resolveMediaList as S, hasDiscordMessageStickers as T, resolveDiscordMessageHistoryText as _, resolveDiscordVoiceEnabled as a, formatDiscordMediaText as b, resolveDiscordVoiceAccessTarget as c, threading_exports as d, resolveDiscordAutoThreadReplyPlan as f, resolveDiscordMessageBatch as g, sanitizeDiscordThreadName as h, setDiscordTranscriptsVoiceManager as i, resolveDiscordChannelInfo as k, resolveDiscordThreadLikeChannelContext as l, resolveDiscordThreadStarter as m, discordVoiceTranscriptsSourceProvider as n, authorizeDiscordVoiceIngress as o, resolveDiscordReplyTarget as p, resolveDiscordTranscriptsCapture as r, resolveDiscordVoiceAccess as s, bindDiscordCaptureReceipts as t, resolveFetchedDiscordThreadLikeChannelContext as u, resolveDiscordMessageMentionDocuments as v, resolveDiscordCdnPolicy as w, resolveForwardedMediaList as x, resolveDiscordMessageText as y };
1621
+ export { resolveDiscordMessageChannelId as A, resolveReferencedReplyMediaList as C, resolveDiscordReferencedReplyMessage as D, resolveDiscordMessageStickers as E, resolveDiscordReferencedReplyMessageId as O, resolveMediaList as S, hasDiscordMessageStickers as T, resolveDiscordMessageHistoryText as _, authorizeDiscordVoiceIngress as a, formatDiscordMediaText as b, resolveDiscordVoiceEnabled as c, threading_exports as d, resolveDiscordAutoThreadReplyPlan as f, resolveDiscordMessageBatch as g, sanitizeDiscordThreadName as h, setDiscordTranscriptsVoiceManager as i, resolveDiscordChannelInfo as k, resolveDiscordThreadLikeChannelContext as l, resolveDiscordThreadStarter as m, discordVoiceTranscriptsSourceProvider as n, resolveDiscordVoiceAccess as o, resolveDiscordReplyTarget as p, resolveDiscordTranscriptsCapture as r, resolveDiscordVoiceAccessTarget as s, bindDiscordCaptureReceipts as t, resolveFetchedDiscordThreadLikeChannelContext as u, resolveDiscordMessageMentionDocuments as v, resolveDiscordCdnPolicy as w, resolveForwardedMediaList as x, resolveDiscordMessageText as y };
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
2
- import { St as sendChannelTyping } from "./discord-0xJYfdDD.mjs";
2
+ import { St as sendChannelTyping } from "./discord-DTLP81g6.mjs";
3
3
  import { c as raceWithTimeout } from "./timeouts-D86uWLt_.mjs";
4
4
  //#region extensions/discord/src/monitor/typing.ts
5
5
  var typing_exports = /* @__PURE__ */ __exportAll({ sendTyping: () => sendTyping });
@@ -1,25 +1,25 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
2
- import { Nt as getGuildVoiceState, l as ReadyListener, p as VoiceStateUpdateListener, t as discord_exports, u as ResumedListener, y as isUnknownDiscordVoiceStateError } from "./discord-0xJYfdDD.mjs";
3
- import { S as formatDiscordUserTag, g as resolveDiscordOwnerAccess, o as normalizeDiscordSlug } from "./channel-type-DRCrEMss.mjs";
2
+ import { a as noteVoiceDecryptFailure, n as analyzeVoiceReceiveError, p as writeVoiceWavFile, r as createVoiceReceiveRecoveryState, s as resetVoiceReceiveRecoveryState, t as DECRYPT_FAILURE_WINDOW_MS, v as restoreDiscordAudioError } from "./receive-recovery-D6eikHf5.mjs";
3
+ import { a as normalizeDiscordSlug, h as resolveDiscordOwnerAccess, x as formatDiscordUserTag } from "./allow-list-Kty_8Xca.mjs";
4
+ import { Nt as getGuildVoiceState, l as ReadyListener, p as VoiceStateUpdateListener, t as discord_exports, u as ResumedListener, y as isUnknownDiscordVoiceStateError } from "./discord-DTLP81g6.mjs";
5
+ import { p as parseDiscordTarget } from "./send.receipt-D0JBijZQ.mjs";
6
+ import { o as formatMention } from "./send.outbound-DR8O-Pvo.mjs";
4
7
  import { t as getDiscordRuntime } from "./runtime-DgnVQ7zW.mjs";
5
- import { b as parseDiscordTarget } from "./retry-pz_cSha2.mjs";
6
- import { o as formatMention } from "./send.outbound-BISKnb-a.mjs";
7
- import { a as resolveDiscordVoiceEnabled, c as resolveDiscordVoiceAccessTarget, o as authorizeDiscordVoiceIngress, r as resolveDiscordTranscriptsCapture, s as resolveDiscordVoiceAccess, t as bindDiscordCaptureReceipts } from "./transcripts-source-p8EV179h.mjs";
8
- import { a as noteVoiceDecryptFailure, n as analyzeVoiceReceiveError, p as writeVoiceWavFile, r as createVoiceReceiveRecoveryState, s as resetVoiceReceiveRecoveryState, t as DECRYPT_FAILURE_WINDOW_MS, v as restoreDiscordAudioError } from "./receive-recovery-CHPOsnLc.mjs";
9
- import { C as buildDiscordGroupSystemPrompt, _ as resolveDiscordVoiceMode, d as MIN_SEGMENT_SECONDS, f as VOICE_CONNECT_READY_TIMEOUT_MS, g as logVoiceVerbose, h as isVoiceChannel, m as isDiscordRealtimeVoiceMode, p as VOICE_RECONNECT_GRACE_MS, u as CAPTURE_FINALIZE_GRACE_MS, v as resolveVoiceTimeoutMs } from "./provider-B_G5hASF.mjs";
8
+ import { C as buildDiscordGroupSystemPrompt, _ as resolveDiscordVoiceMode, d as MIN_SEGMENT_SECONDS, f as VOICE_CONNECT_READY_TIMEOUT_MS, g as logVoiceVerbose, h as isVoiceChannel, m as isDiscordRealtimeVoiceMode, p as VOICE_RECONNECT_GRACE_MS, u as CAPTURE_FINALIZE_GRACE_MS, v as resolveVoiceTimeoutMs } from "./provider-BTm60b3t.mjs";
9
+ import { a as authorizeDiscordVoiceIngress, c as resolveDiscordVoiceEnabled, o as resolveDiscordVoiceAccess, r as resolveDiscordTranscriptsCapture, s as resolveDiscordVoiceAccessTarget, t as bindDiscordCaptureReceipts } from "./transcripts-source-CHhpvL97.mjs";
10
+ import { Worker } from "node:worker_threads";
11
+ import { PassThrough, Readable } from "node:stream";
12
+ import { formatErrorMessage, readErrorName, toErrorObject } from "openclaw/plugin-sdk/error-runtime";
13
+ import { createSubsystemLogger, logVerbose } from "openclaw/plugin-sdk/runtime-env";
14
+ import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
15
+ import { resolveAgentRoute } from "openclaw/plugin-sdk/routing";
10
16
  import { randomUUID } from "node:crypto";
11
17
  import { expectDefined } from "openclaw/plugin-sdk/expect-runtime";
12
18
  import { asDateTimestampMs, resolveExpiresAtMsFromDurationMs } from "openclaw/plugin-sdk/number-runtime";
13
- import { formatErrorMessage } from "openclaw/plugin-sdk/ssrf-runtime";
14
- import { formatErrorMessage as formatErrorMessage$1, readErrorName, toErrorObject } from "openclaw/plugin-sdk/error-runtime";
15
- import { resolveAgentRoute } from "openclaw/plugin-sdk/routing";
16
- import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
17
- import { createSubsystemLogger, logVerbose } from "openclaw/plugin-sdk/runtime-env";
18
- import { escapeRegExp, truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
19
- import { stripInlineDirectiveTagsForDisplay } from "openclaw/plugin-sdk/text-chunking";
19
+ import { formatErrorMessage as formatErrorMessage$1 } from "openclaw/plugin-sdk/ssrf-runtime";
20
20
  import { unlinkIfExists } from "openclaw/plugin-sdk/media-runtime";
21
- import { Worker } from "node:worker_threads";
22
- import { PassThrough, Readable } from "node:stream";
21
+ import { stripInlineDirectiveTagsForDisplay } from "openclaw/plugin-sdk/text-chunking";
22
+ import { escapeRegExp, truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
23
23
  import { createDeferred } from "openclaw/plugin-sdk/extension-shared";
24
24
  import { enqueueRoutedSystemEvent } from "openclaw/plugin-sdk/system-event-runtime";
25
25
  import { resolveAgentDir } from "openclaw/plugin-sdk/agent-runtime";
@@ -125,7 +125,7 @@ async function handleDiscordVoiceAgentControlToolCall(params) {
125
125
  });
126
126
  } catch (error) {
127
127
  if (!params.isCurrent()) return;
128
- await params.session.submitToolResult(params.callId, { error: formatErrorMessage$1(error) });
128
+ await params.session.submitToolResult(params.callId, { error: formatErrorMessage(error) });
129
129
  return;
130
130
  }
131
131
  if (!params.isCurrent()) return;
@@ -758,7 +758,7 @@ var DiscordVoiceMembershipTracker = class {
758
758
  }
759
759
  }
760
760
  logFailure(entry, err) {
761
- logger$8.warn(`discord voice: participant notification failed guild=${entry.guildId} channel=${entry.channelId}: ${formatErrorMessage(err)}`);
761
+ logger$8.warn(`discord voice: participant notification failed guild=${entry.guildId} channel=${entry.channelId}: ${formatErrorMessage$1(err)}`);
762
762
  }
763
763
  roster(entry, botUserId, additionalUserIds) {
764
764
  return collectDiscordVoiceParticipants({
@@ -1040,7 +1040,7 @@ var DiscordVoiceFollowing = class {
1040
1040
  if (this.followUsersReconcileTimer) return;
1041
1041
  this.followUsersReconcileTimer = setInterval(() => {
1042
1042
  this.reconcileFollowedUsers("interval").catch((err) => {
1043
- logger$7.warn(`discord voice: follow user reconciliation failed: ${formatErrorMessage(err)}`);
1043
+ logger$7.warn(`discord voice: follow user reconciliation failed: ${formatErrorMessage$1(err)}`);
1044
1044
  });
1045
1045
  }, FOLLOW_USERS_RECONCILE_INTERVAL_MS);
1046
1046
  this.followUsersReconcileTimer.unref?.();
@@ -1066,10 +1066,10 @@ var DiscordVoiceFollowing = class {
1066
1066
  for (const userId of plan.userIds) {
1067
1067
  const voiceState = await getGuildVoiceState(this.params.client.rest, plan.guildId, userId).catch((err) => {
1068
1068
  if (!isUnknownDiscordVoiceStateError(err)) {
1069
- logger$7.warn(`follow-user reconcile skipped (transient voice-state error) guild=${plan.guildId} user=${userId} trigger=${reason}: ${formatErrorMessage(err)}`);
1069
+ logger$7.warn(`follow-user reconcile skipped (transient voice-state error) guild=${plan.guildId} user=${userId} trigger=${reason}: ${formatErrorMessage$1(err)}`);
1070
1070
  return "transient-error";
1071
1071
  }
1072
- logFollowUserReconcileVerbose(reason, `follow user reconcile reason=${reason}: no voice state guild ${plan.guildId} user ${userId}: ${formatErrorMessage(err)}`);
1072
+ logFollowUserReconcileVerbose(reason, `follow user reconcile reason=${reason}: no voice state guild ${plan.guildId} user ${userId}: ${formatErrorMessage$1(err)}`);
1073
1073
  });
1074
1074
  if (this.params.destroyed()) return;
1075
1075
  if (voiceState === "transient-error") continue;
@@ -1193,10 +1193,10 @@ var DiscordVoiceFollowing = class {
1193
1193
  if (!botUserId) return;
1194
1194
  const botVoiceState = await getGuildVoiceState(this.params.client.rest, guildId, botUserId).catch((err) => {
1195
1195
  if (!isUnknownDiscordVoiceStateError(err)) {
1196
- logger$7.warn(`discord voice: follow reconcile skipped transient bot voice state error guild=${guildId} reason=${reason}: ${formatErrorMessage(err)}`);
1196
+ logger$7.warn(`discord voice: follow reconcile skipped transient bot voice state error guild=${guildId} reason=${reason}: ${formatErrorMessage$1(err)}`);
1197
1197
  return "transient-error";
1198
1198
  }
1199
- logFollowUserReconcileVerbose(reason, `follow user reconcile reason=${reason}: no bot voice state guild ${guildId}: ${formatErrorMessage(err)}`);
1199
+ logFollowUserReconcileVerbose(reason, `follow user reconcile reason=${reason}: no bot voice state guild ${guildId}: ${formatErrorMessage$1(err)}`);
1200
1200
  });
1201
1201
  if (this.params.destroyed() || botVoiceState === "transient-error") return;
1202
1202
  const botChannelId = botVoiceState?.channel_id?.trim();
@@ -1364,7 +1364,7 @@ async function processDiscordVoiceSegment(params) {
1364
1364
  const conversationCurrent = () => !entry.captureOnly && entry.sessionLifecycle.status === "active" && params.isConversationCurrent();
1365
1365
  logVoiceVerbose(`segment processing (${durationSeconds.toFixed(2)}s): guild ${entry.guildId} channel ${entry.channelId}`);
1366
1366
  const ingress = params.resolveIngressContext().catch((error) => {
1367
- logger$6.warn(`discord voice: conversation authorization failed: ${formatErrorMessage$1(error)}`);
1367
+ logger$6.warn(`discord voice: conversation authorization failed: ${formatErrorMessage(error)}`);
1368
1368
  return null;
1369
1369
  });
1370
1370
  const conversationAuthorized = ingress.then((context) => Boolean(context) && conversationCurrent());
@@ -1438,10 +1438,10 @@ async function respondToDiscordVoiceTranscript(params) {
1438
1438
  text: transcript
1439
1439
  }).catch((error) => {
1440
1440
  if (readErrorName(error) === "AbortError") {
1441
- logger$6.warn(`discord voice: active-run control cancelled: ${formatErrorMessage$1(error)}`);
1441
+ logger$6.warn(`discord voice: active-run control cancelled: ${formatErrorMessage(error)}`);
1442
1442
  return null;
1443
1443
  }
1444
- logger$6.warn(`discord voice: active-run control failed; falling back to normal segment handling: ${formatErrorMessage$1(error)}`);
1444
+ logger$6.warn(`discord voice: active-run control failed; falling back to normal segment handling: ${formatErrorMessage(error)}`);
1445
1445
  });
1446
1446
  if (control === null || !conversationCurrent()) return;
1447
1447
  if (control?.handled) {
@@ -1601,7 +1601,7 @@ var DiscordVoiceRecording = class {
1601
1601
  try {
1602
1602
  await wav.cleanup();
1603
1603
  } catch (error) {
1604
- logger$5.warn(`discord voice: recording cleanup failed: ${formatErrorMessage(error)}`);
1604
+ logger$5.warn(`discord voice: recording cleanup failed: ${formatErrorMessage$1(error)}`);
1605
1605
  } finally {
1606
1606
  releaseBudget();
1607
1607
  }
@@ -1630,7 +1630,7 @@ var DiscordVoiceRecording = class {
1630
1630
  });
1631
1631
  } catch (error) {
1632
1632
  this.params.onExcluded();
1633
- logger$5.warn(`discord voice: recording failed: ${formatErrorMessage(error)}`);
1633
+ logger$5.warn(`discord voice: recording failed: ${formatErrorMessage$1(error)}`);
1634
1634
  } finally {
1635
1635
  await cleanup();
1636
1636
  }
@@ -1700,7 +1700,7 @@ var DiscordVoiceReceive = class {
1700
1700
  }
1701
1701
  }
1702
1702
  captureCurrentSpeakers(entry) {
1703
- for (const userId of entry.audio.speakingUsers) this.handleSpeakingStart(entry, userId, "scan").catch((error) => logger$4.warn(`discord voice: capture failed: ${formatErrorMessage(error)}`));
1703
+ for (const userId of entry.audio.speakingUsers) this.handleSpeakingStart(entry, userId, "scan").catch((error) => logger$4.warn(`discord voice: capture failed: ${formatErrorMessage$1(error)}`));
1704
1704
  }
1705
1705
  responseContext(entry, userId) {
1706
1706
  return {
@@ -1715,7 +1715,7 @@ var DiscordVoiceReceive = class {
1715
1715
  speakerContext: this.params.speakerContext,
1716
1716
  client: this.params.client,
1717
1717
  enqueuePlayback: (playbackEntry, task) => {
1718
- playbackEntry.playbackQueue = playbackEntry.playbackQueue.then(task).catch((err) => logger$4.warn(`discord voice: playback failed: ${formatErrorMessage(err)}`));
1718
+ playbackEntry.playbackQueue = playbackEntry.playbackQueue.then(task).catch((err) => logger$4.warn(`discord voice: playback failed: ${formatErrorMessage$1(err)}`));
1719
1719
  }
1720
1720
  };
1721
1721
  }
@@ -1879,12 +1879,12 @@ var DiscordVoiceReceive = class {
1879
1879
  ingress: currentIngress,
1880
1880
  transcript
1881
1881
  });
1882
- }).catch((error) => logger$4.warn(`discord voice: processing failed: ${formatErrorMessage(error)}`));
1882
+ }).catch((error) => logger$4.warn(`discord voice: processing failed: ${formatErrorMessage$1(error)}`));
1883
1883
  }
1884
1884
  }
1885
1885
  } finally {
1886
1886
  realtimeRecording?.sealBatch();
1887
- if (conversationCompletion) conversationCompletion.catch((error) => logger$4.warn(`discord voice: conversation failed: ${formatErrorMessage(error)}`));
1887
+ if (conversationCompletion) conversationCompletion.catch((error) => logger$4.warn(`discord voice: conversation failed: ${formatErrorMessage$1(error)}`));
1888
1888
  else if (conversation) entry.conversations.release(conversation);
1889
1889
  captureReceipts.close();
1890
1890
  stream.off("data", acceptPacket);
@@ -1971,7 +1971,7 @@ var DiscordVoiceReceive = class {
1971
1971
  recovery = this.recoverFromDecryptFailures(entry);
1972
1972
  }
1973
1973
  } else recovery = this.recoverFromDecryptFailures(entry);
1974
- recovery.catch((recoverErr) => logger$4.warn(`discord voice: decrypt recovery failed: ${formatErrorMessage(recoverErr)}`)).finally(() => {
1974
+ recovery.catch((recoverErr) => logger$4.warn(`discord voice: decrypt recovery failed: ${formatErrorMessage$1(recoverErr)}`)).finally(() => {
1975
1975
  entry.receiveRecovery.decryptRecoveryInFlight = false;
1976
1976
  });
1977
1977
  }
@@ -2353,7 +2353,7 @@ var DiscordVoiceConversationInput = class {
2353
2353
  for (const { pcm, receipt } of audio) this.sendAudio(pcm, receipt);
2354
2354
  })().catch((error) => {
2355
2355
  this.retire();
2356
- params.warn(`discord voice: conversation admission failed: ${formatErrorMessage(error)}`);
2356
+ params.warn(`discord voice: conversation admission failed: ${formatErrorMessage$1(error)}`);
2357
2357
  });
2358
2358
  this.ready = Promise.race([admission, this.cancelled.promise]);
2359
2359
  }
@@ -2386,7 +2386,7 @@ var DiscordVoiceConversationInput = class {
2386
2386
  this.turn?.sendInputAudio(pcm, receipt);
2387
2387
  } catch (error) {
2388
2388
  this.retire();
2389
- this.params.warn(`discord voice: conversation audio failed: ${formatErrorMessage(error)}`);
2389
+ this.params.warn(`discord voice: conversation audio failed: ${formatErrorMessage$1(error)}`);
2390
2390
  }
2391
2391
  }
2392
2392
  authorizeSegment(resolve) {
@@ -2459,7 +2459,7 @@ var DiscordVoiceConversationInput = class {
2459
2459
  try {
2460
2460
  turn?.close("incomplete-input");
2461
2461
  } catch (error) {
2462
- this.params.warn(`discord voice: conversation close failed: ${formatErrorMessage(error)}`);
2462
+ this.params.warn(`discord voice: conversation close failed: ${formatErrorMessage$1(error)}`);
2463
2463
  }
2464
2464
  }
2465
2465
  };
@@ -2573,7 +2573,7 @@ var DiscordVoiceSessions = class {
2573
2573
  ok: false,
2574
2574
  error: {
2575
2575
  ok: false,
2576
- message: `Failed to resolve Discord channel ${channelId}: ${formatErrorMessage(err)}`,
2576
+ message: `Failed to resolve Discord channel ${channelId}: ${formatErrorMessage$1(err)}`,
2577
2577
  guildId,
2578
2578
  channelId
2579
2579
  }
@@ -2675,7 +2675,7 @@ var DiscordVoiceSessions = class {
2675
2675
  await this.stopTransport(guildId);
2676
2676
  return {
2677
2677
  ok: false,
2678
- message: "Failed to join voice channel: " + formatErrorMessage(error),
2678
+ message: "Failed to join voice channel: " + formatErrorMessage$1(error),
2679
2679
  guildId,
2680
2680
  channelId
2681
2681
  };
@@ -2699,7 +2699,7 @@ var DiscordVoiceSessions = class {
2699
2699
  await this.stopTransport(guildId);
2700
2700
  return {
2701
2701
  ok: false,
2702
- message: `Failed to resolve Discord voice agent session: ${formatErrorMessage(err)}`,
2702
+ message: `Failed to resolve Discord voice agent session: ${formatErrorMessage$1(err)}`,
2703
2703
  guildId,
2704
2704
  channelId
2705
2705
  };
@@ -2728,7 +2728,7 @@ var DiscordVoiceSessions = class {
2728
2728
  try {
2729
2729
  if (realtimeLifecycle.status === "starting" || realtimeLifecycle.status === "active") realtimeCompletion = realtimeLifecycle.instance.close();
2730
2730
  } catch (error) {
2731
- logger$2.warn(`discord voice: realtime close failed: ${formatErrorMessage(error)}`);
2731
+ logger$2.warn(`discord voice: realtime close failed: ${formatErrorMessage$1(error)}`);
2732
2732
  }
2733
2733
  const audioCompletion = this.stopTransport(guildId, audio);
2734
2734
  stopCompletion = Promise.allSettled([realtimeCompletion, audioCompletion]).then(() => {
@@ -2742,7 +2742,7 @@ var DiscordVoiceSessions = class {
2742
2742
  };
2743
2743
  completion.then(forget, (error) => {
2744
2744
  forget();
2745
- logger$2.warn(`discord voice: session stop failed: ${formatErrorMessage(error)}`);
2745
+ logger$2.warn(`discord voice: session stop failed: ${formatErrorMessage$1(error)}`);
2746
2746
  });
2747
2747
  return stopCompletion;
2748
2748
  };
@@ -2780,7 +2780,7 @@ var DiscordVoiceSessions = class {
2780
2780
  };
2781
2781
  const speakingHandler = (userId, speaking) => {
2782
2782
  if (speaking) this.params.receive.handleSpeakingStart(entry, userId).catch((error) => {
2783
- logger$2.warn("discord voice: capture failed: " + formatErrorMessage(error));
2783
+ logger$2.warn("discord voice: capture failed: " + formatErrorMessage$1(error));
2784
2784
  });
2785
2785
  else this.params.receive.scheduleCaptureFinalize(entry, userId, "speaker end");
2786
2786
  };
@@ -2855,7 +2855,7 @@ var DiscordVoiceSessions = class {
2855
2855
  ok: false,
2856
2856
  message: "Discord realtime voice session stopped before startup completed."
2857
2857
  };
2858
- const { DiscordRealtimeVoiceSession } = await import("./realtime-session.runtime-oUd9DOcz.mjs");
2858
+ const { DiscordRealtimeVoiceSession } = await import("./realtime-session.runtime-JZd7A5bS.mjs");
2859
2859
  const realtime = new DiscordRealtimeVoiceSession({
2860
2860
  accountId: this.params.accountId,
2861
2861
  bootstrapContextInstructions,
@@ -2865,7 +2865,7 @@ var DiscordVoiceSessions = class {
2865
2865
  getHumanParticipantCount: () => this.params.membership.countHumanParticipants(entry, this.params.botUserId()),
2866
2866
  mode: voiceMode,
2867
2867
  onTerminalError: (error) => {
2868
- logger$2.error(`discord voice: realtime session failed terminally guild=${entry.guildId} channel=${entry.channelId}: ${formatErrorMessage(error)}`);
2868
+ logger$2.error(`discord voice: realtime session failed terminally guild=${entry.guildId} channel=${entry.channelId}: ${formatErrorMessage$1(error)}`);
2869
2869
  const lifecycle = entry.realtimeLifecycle;
2870
2870
  if (options?.requireLiveEntry && lifecycle.status === "starting" && lifecycle.instance === realtime) {
2871
2871
  entry.realtimeLifecycle = {
@@ -2912,7 +2912,7 @@ var DiscordVoiceSessions = class {
2912
2912
  };
2913
2913
  return {
2914
2914
  ok: false,
2915
- message: `Failed to start Discord realtime voice: ${formatErrorMessage(err)}`
2915
+ message: `Failed to start Discord realtime voice: ${formatErrorMessage$1(err)}`
2916
2916
  };
2917
2917
  }
2918
2918
  }
@@ -2921,7 +2921,7 @@ var DiscordVoiceSessions = class {
2921
2921
  //#region extensions/discord/src/voice/listeners.ts
2922
2922
  const logger$1 = createSubsystemLogger("discord/voice");
2923
2923
  function startAutoJoin(operation, context = "") {
2924
- operation().catch((err) => logger$1.warn(`discord voice: autoJoin${context} failed: ${formatErrorMessage(err)}`));
2924
+ operation().catch((err) => logger$1.warn(`discord voice: autoJoin${context} failed: ${formatErrorMessage$1(err)}`));
2925
2925
  }
2926
2926
  var DiscordVoiceReadyListener = class extends ReadyListener {
2927
2927
  constructor(manager) {
@@ -1,4 +1,4 @@
1
- import { t as inspectDiscordAccount } from "./.setup/account-inspect-De8hOUxG.mjs";
1
+ import { t as inspectDiscordAccount } from "./.setup/account-inspect-Bp8nbBSx.mjs";
2
2
  //#region extensions/discord/account-inspect-api.ts
3
3
  function inspectDiscordReadOnlyAccount(cfg, accountId) {
4
4
  return inspectDiscordAccount({
@@ -1,2 +1,2 @@
1
- import { t as handleDiscordAction } from "./.setup/runtime-FN000lxA.mjs";
1
+ import { t as handleDiscordAction } from "./.setup/runtime-DwW5C0WK.mjs";
2
2
  export { handleDiscordAction };