@openclaw/discord 2026.5.28-beta.3 → 2026.5.28

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 (66) hide show
  1. package/dist/action-runtime-api.js +1 -1
  2. package/dist/{api-ChQJ1kfZ.js → api-BmXlcjYW.js} +5 -5
  3. package/dist/api.js +14 -14
  4. package/dist/{approval-handler.runtime-CIZiiFBd.js → approval-handler.runtime-CN_E7nkQ.js} +3 -3
  5. package/dist/{audit-D6BXQsYY.js → audit-BFCBp74H.js} +3 -3
  6. package/dist/{channel--B_psO5e.js → channel-COXb22wL.js} +15 -15
  7. package/dist/{channel-actions-BOH34yJ5.js → channel-actions-C2g9OmnG.js} +15 -3
  8. package/dist/{channel-actions.runtime-B1RCm1JP.js → channel-actions.runtime-drnbrgpt.js} +5 -5
  9. package/dist/channel-plugin-api.js +1 -1
  10. package/dist/{channel.setup-COYdCbY_.js → channel.setup-BsrP5-hv.js} +2 -2
  11. package/dist/{components-DX5Baphr.js → components-CjQujWa1.js} +27 -26
  12. package/dist/contract-api.js +2 -2
  13. package/dist/{conversation-identity-Dugx5WfH.js → conversation-identity-CsPV1Gjx.js} +2 -2
  14. package/dist/{directory-config-CcjUkNgK.js → directory-config-BqPvRoDv.js} +1 -1
  15. package/dist/directory-contract-api.js +1 -1
  16. package/dist/{directory-live-NOtxlJZ3.js → directory-live-CCI0IMZq.js} +2 -2
  17. package/dist/{handle-action.guild-admin-wC9VaAdl.js → handle-action.guild-admin-BmjclQbR.js} +1 -1
  18. package/dist/index.js +1 -1
  19. package/dist/legacy-state-migrations-api.js +99 -0
  20. package/dist/{manager.runtime-Bwgq6hJW.js → manager.runtime-ClhnLsZf.js} +3 -3
  21. package/dist/{message-handler-DhqxKFLP.js → message-handler-BnhAHqem.js} +6 -6
  22. package/dist/{message-handler.preflight-BC8QmsWW.js → message-handler.preflight-B1RTQ6ZO.js} +10 -10
  23. package/dist/{message-handler.process-DE1an2G4.js → message-handler.process-B1ODKav3.js} +9 -9
  24. package/dist/{message-utils-BlvuUPP4.js → message-utils-CmB03FoF.js} +1 -1
  25. package/dist/{outbound-adapter-BGrOFkR8.js → outbound-adapter-DfY2Dtf3.js} +11 -11
  26. package/dist/{pluralkit-Cq_PUr06.js → pluralkit-DAZN3ZMK.js} +1 -1
  27. package/dist/{probe-CSBPZIYV.js → probe-BiEg-_i1.js} +1 -1
  28. package/dist/{probe.runtime-BhWW0223.js → probe.runtime-Dja7CbJT.js} +1 -1
  29. package/dist/{provider-DIVQuJTw.js → provider-DCcqVFp-.js} +198 -138
  30. package/dist/{provider-session.runtime-C7jT_K-7.js → provider-session.runtime-mKSG07RE.js} +3 -3
  31. package/dist/provider.runtime-BmpunJHX.js +2 -0
  32. package/dist/{resolve-allowlist-common-CzfIcLSO.js → resolve-allowlist-common-DAIbZobr.js} +1 -1
  33. package/dist/{resolve-channels-CQ13aBCV.js → resolve-channels-D1zgoxnw.js} +3 -3
  34. package/dist/{resolve-users-Bj4Y4uWR.js → resolve-users-wPAvLk_8.js} +3 -3
  35. package/dist/{retry-after-CSukypPP.js → retry-after-D5_VmM-_.js} +10 -6
  36. package/dist/runtime-api.actions.js +2 -2
  37. package/dist/runtime-api.js +19 -19
  38. package/dist/runtime-api.lookup.js +5 -5
  39. package/dist/runtime-api.monitor-B38upMUK.js +5 -0
  40. package/dist/runtime-api.monitor.js +4 -4
  41. package/dist/runtime-api.send.js +5 -5
  42. package/dist/runtime-api.threads.js +3 -3
  43. package/dist/{runtime-DA70ebm-.js → runtime-gaB5-Wsj.js} +7 -7
  44. package/dist/{send-3r8QQkTY.js → send-CBxhnbKU.js} +3 -3
  45. package/dist/{send.components-2qRLUwBn.js → send.components-uuQuHL3t.js} +4 -4
  46. package/dist/{send.outbound-LjX_KYiO.js → send.outbound-DZHJYmNF.js} +3 -3
  47. package/dist/{send.receipt-Bo_43DQZ.js → send.receipt-3y2lVFRf.js} +4 -6
  48. package/dist/{send.shared-CXctTF1I.js → send.shared-Ddl21-Gt.js} +4 -5
  49. package/dist/setup-entry.js +5 -0
  50. package/dist/setup-plugin-api.js +1 -1
  51. package/dist/{subagent-hooks-DoWTMQyQ.js → subagent-hooks-BacIbIBD.js} +2 -2
  52. package/dist/subagent-hooks-api.js +1 -1
  53. package/dist/{system-events-DV85gUxb.js → system-events-Cw6Hp8RF.js} +1 -1
  54. package/dist/{target-resolver-DVpZI7ZL.js → target-resolver-jjQzAS6T.js} +2 -2
  55. package/dist/targets-BVKF5wbg.js +3 -0
  56. package/dist/{thread-bindings-Cm3GqlNC.js → thread-bindings-BBq-yzq2.js} +4 -4
  57. package/dist/{thread-bindings.discord-api-JrJXT7L0.js → thread-bindings.discord-api-5QgEd_dW.js} +6 -6
  58. package/dist/{thread-bindings.manager-DqJuGG-r.js → thread-bindings.manager-COkxjwR9.js} +3 -3
  59. package/dist/{transcripts-source-lEfSvSRD.js → transcripts-source-DDrS8HrV.js} +1 -1
  60. package/dist/transcripts-source-api.js +1 -1
  61. package/dist/{typing-DlT_14RX.js → typing-B7bCMPJJ.js} +1 -1
  62. package/npm-shrinkwrap.json +3 -3
  63. package/package.json +7 -4
  64. package/dist/provider.runtime-BtnupyG-.js +0 -2
  65. package/dist/runtime-api.monitor-P-emTjcx.js +0 -5
  66. package/dist/targets-0WHF7kV0.js +0 -3
@@ -1,6 +1,6 @@
1
- import { a as reconcileAcpThreadBindingsOnStartup } from "./thread-bindings-Cm3GqlNC.js";
2
- import { n as createThreadBindingManager, t as createNoopThreadBindingManager } from "./thread-bindings.manager-DqJuGG-r.js";
3
- import { t as createDiscordMessageHandler } from "./message-handler-DhqxKFLP.js";
1
+ import { a as reconcileAcpThreadBindingsOnStartup } from "./thread-bindings-BBq-yzq2.js";
2
+ import { n as createThreadBindingManager, t as createNoopThreadBindingManager } from "./thread-bindings.manager-COkxjwR9.js";
3
+ import { t as createDiscordMessageHandler } from "./message-handler-BnhAHqem.js";
4
4
  import { resolveThreadBindingIdleTimeoutMs, resolveThreadBindingMaxAgeMs, resolveThreadBindingsEnabled } from "openclaw/plugin-sdk/conversation-runtime";
5
5
  import { getAcpSessionManager, isAcpRuntimeError } from "openclaw/plugin-sdk/acp-runtime";
6
6
  export { createDiscordMessageHandler, createNoopThreadBindingManager, createThreadBindingManager, getAcpSessionManager, isAcpRuntimeError, reconcileAcpThreadBindingsOnStartup, resolveThreadBindingIdleTimeoutMs, resolveThreadBindingMaxAgeMs, resolveThreadBindingsEnabled };
@@ -0,0 +1,2 @@
1
+ import { t as monitorDiscordProvider } from "./provider-DCcqVFp-.js";
2
+ export { monitorDiscordProvider };
@@ -1,5 +1,5 @@
1
1
  import { p as normalizeDiscordToken } from "./accounts-dXTfmnSZ.js";
2
- import { n as fetchDiscord } from "./api-ChQJ1kfZ.js";
2
+ import { n as fetchDiscord } from "./api-BmXlcjYW.js";
3
3
  import { a as normalizeDiscordSlug } from "./allow-list-BnkWtVpA.js";
4
4
  //#region extensions/discord/src/guilds.ts
5
5
  async function listGuilds(token, fetcher) {
@@ -1,7 +1,7 @@
1
- import { Wt as __exportAll } from "./send.receipt-Bo_43DQZ.js";
2
- import { n as fetchDiscord, t as DiscordApiError } from "./api-ChQJ1kfZ.js";
1
+ import { Wt as __exportAll } from "./send.receipt-3y2lVFRf.js";
2
+ import { n as fetchDiscord, t as DiscordApiError } from "./api-BmXlcjYW.js";
3
3
  import { a as normalizeDiscordSlug } from "./allow-list-BnkWtVpA.js";
4
- import { i as listGuilds, n as filterDiscordGuilds, r as resolveDiscordAllowlistToken, t as buildDiscordUnresolvedResults } from "./resolve-allowlist-common-CzfIcLSO.js";
4
+ import { i as listGuilds, n as filterDiscordGuilds, r as resolveDiscordAllowlistToken, t as buildDiscordUnresolvedResults } from "./resolve-allowlist-common-DAIbZobr.js";
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
- import { Wt as __exportAll } from "./send.receipt-Bo_43DQZ.js";
2
- import { n as fetchDiscord } from "./api-ChQJ1kfZ.js";
3
- import { i as listGuilds, n as filterDiscordGuilds, r as resolveDiscordAllowlistToken, t as buildDiscordUnresolvedResults } from "./resolve-allowlist-common-CzfIcLSO.js";
1
+ import { Wt as __exportAll } from "./send.receipt-3y2lVFRf.js";
2
+ import { n as fetchDiscord } from "./api-BmXlcjYW.js";
3
+ import { i as listGuilds, n as filterDiscordGuilds, r as resolveDiscordAllowlistToken, t as buildDiscordUnresolvedResults } from "./resolve-allowlist-common-DAIbZobr.js";
4
4
  import { normalizeLowercaseStringOrEmpty, 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,21 +1,25 @@
1
+ import { asFiniteNumberInRange, parseStrictFiniteNumber, parseStrictNonNegativeInteger } from "openclaw/plugin-sdk/number-runtime";
1
2
  //#region extensions/discord/src/retry-after.ts
2
3
  const RETRY_AFTER_HEADER_DELAY_RE = /^\d+$/;
3
4
  const RETRY_AFTER_BODY_SECONDS_RE = /^(?:\d+\.?\d*|\.\d+)$/;
4
5
  const RETRY_AFTER_HTTP_DATE_RE = /^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} GMT$/;
6
+ const MAX_SAFE_RETRY_AFTER_SECONDS = Number.MAX_SAFE_INTEGER / 1e3;
5
7
  function parseRetryAfterHeaderSeconds(value, now = Date.now()) {
6
8
  if (!value) return;
7
9
  const trimmed = value.trim();
8
- if (RETRY_AFTER_HEADER_DELAY_RE.test(trimmed)) {
9
- const delaySeconds = Number(trimmed);
10
- return Number.isFinite(delaySeconds) ? delaySeconds : void 0;
11
- }
10
+ if (RETRY_AFTER_HEADER_DELAY_RE.test(trimmed)) return asFiniteNumberInRange(parseStrictNonNegativeInteger(trimmed), {
11
+ min: 0,
12
+ max: MAX_SAFE_RETRY_AFTER_SECONDS
13
+ });
12
14
  if (!RETRY_AFTER_HTTP_DATE_RE.test(trimmed)) return;
13
15
  const retryAt = Date.parse(trimmed);
14
16
  return Number.isFinite(retryAt) ? Math.max(0, (retryAt - now) / 1e3) : void 0;
15
17
  }
16
18
  function parseDiscordRetryAfterBodySeconds(value) {
17
- const seconds = typeof value === "number" ? value : typeof value === "string" && RETRY_AFTER_BODY_SECONDS_RE.test(value.trim()) ? Number(value.trim()) : void 0;
18
- return seconds !== void 0 && Number.isFinite(seconds) && seconds >= 0 ? seconds : void 0;
19
+ return asFiniteNumberInRange(typeof value === "number" ? value : typeof value === "string" && RETRY_AFTER_BODY_SECONDS_RE.test(value.trim()) ? parseStrictFiniteNumber(value.trim()) : void 0, {
20
+ min: 0,
21
+ max: MAX_SAFE_RETRY_AFTER_SECONDS
22
+ });
19
23
  }
20
24
  //#endregion
21
25
  export { parseRetryAfterHeaderSeconds as n, parseDiscordRetryAfterBodySeconds as t };
@@ -1,3 +1,3 @@
1
- import { a as readDiscordChannelCreateParams, c as readDiscordParentIdParam, i as requiredGuildPermissionForModerationAction, n as isDiscordModerationAction, o as readDiscordChannelEditParams, r as readDiscordModerationCommand, s as readDiscordChannelMoveParams, t as handleDiscordAction } from "./runtime-DA70ebm-.js";
2
- import { t as discordMessageActions } from "./channel-actions-BOH34yJ5.js";
1
+ import { a as readDiscordChannelCreateParams, c as readDiscordParentIdParam, i as requiredGuildPermissionForModerationAction, n as isDiscordModerationAction, o as readDiscordChannelEditParams, r as readDiscordModerationCommand, s as readDiscordChannelMoveParams, t as handleDiscordAction } from "./runtime-gaB5-Wsj.js";
2
+ import { t as discordMessageActions } from "./channel-actions-C2g9OmnG.js";
3
3
  export { discordMessageActions, handleDiscordAction, isDiscordModerationAction, readDiscordChannelCreateParams, readDiscordChannelEditParams, readDiscordChannelMoveParams, readDiscordModerationCommand, readDiscordParentIdParam, requiredGuildPermissionForModerationAction };
@@ -1,30 +1,30 @@
1
- import { x as resolveDiscordOutboundSessionRoute } from "./components-DX5Baphr.js";
2
- import { n as registerBuiltDiscordComponentMessage, r as sendDiscordComponentMessage, t as editDiscordComponentMessage } from "./send.components-2qRLUwBn.js";
1
+ import { x as resolveDiscordOutboundSessionRoute } from "./components-CjQujWa1.js";
2
+ import { n as registerBuiltDiscordComponentMessage, r as sendDiscordComponentMessage, t as editDiscordComponentMessage } from "./send.components-uuQuHL3t.js";
3
3
  import { a as clearPresences, c as setPresence, i as unregisterGateway, n as getGateway, o as getPresence, r as registerGateway, s as presenceCacheSize, t as clearGateways } from "./gateway-registry-DPxmW0Db.js";
4
- import { A as hasAllGuildPermissionsDiscord, M as hasAnyGuildPermissionDiscord, O as fetchChannelPermissionsDiscord, k as fetchMemberGuildPermissionsDiscord, w as DiscordSendError } from "./send.shared-CXctTF1I.js";
5
- import { n as listDiscordDirectoryGroupsLive, r as listDiscordDirectoryPeersLive } from "./directory-live-NOtxlJZ3.js";
4
+ import { A as hasAllGuildPermissionsDiscord, M as hasAnyGuildPermissionDiscord, O as fetchChannelPermissionsDiscord, k as fetchMemberGuildPermissionsDiscord, w as DiscordSendError } from "./send.shared-Ddl21-Gt.js";
5
+ import { n as listDiscordDirectoryGroupsLive, r as listDiscordDirectoryPeersLive } from "./directory-live-CCI0IMZq.js";
6
6
  import { _ as resolveGroupDmAllow, a as normalizeDiscordSlug, c as resolveDiscordChannelConfigWithFallback, d as resolveDiscordGuildEntry, g as resolveDiscordShouldRequireMention, n as isDiscordGroupAllowedByPolicy, r as normalizeDiscordAllowList, s as resolveDiscordChannelConfig, t as allowListMatches, u as resolveDiscordCommandAuthorized, v as shouldEmitDiscordReactionNotification } from "./allow-list-BnkWtVpA.js";
7
- 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, c as sendWebhookMessageDiscord, d as deleteMessageDiscord, f as editMessageDiscord, g as pinMessageDiscord, h as listThreadsDiscord, i as removeOwnReactionsDiscord, j as removeRoleDiscord, k as listGuildChannelsDiscord, m as listPinsDiscord, n as fetchReactionsDiscord, o as sendTypingDiscord, p as fetchMessageDiscord, r as reactMessageDiscord, s as sendVoiceMessageDiscord, u as createThreadDiscord, v as searchMessagesDiscord, x as banMemberDiscord, y as unpinMessageDiscord, z as editChannelDiscord } from "./send-3r8QQkTY.js";
8
- import { n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-LjX_KYiO.js";
9
- import { a as readDiscordChannelCreateParams, c as readDiscordParentIdParam, i as requiredGuildPermissionForModerationAction, n as isDiscordModerationAction, o as readDiscordChannelEditParams, r as readDiscordModerationCommand, s as readDiscordChannelMoveParams, t as handleDiscordAction } from "./runtime-DA70ebm-.js";
7
+ 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, c as sendWebhookMessageDiscord, d as deleteMessageDiscord, f as editMessageDiscord, g as pinMessageDiscord, h as listThreadsDiscord, i as removeOwnReactionsDiscord, j as removeRoleDiscord, k as listGuildChannelsDiscord, m as listPinsDiscord, n as fetchReactionsDiscord, o as sendTypingDiscord, p as fetchMessageDiscord, r as reactMessageDiscord, s as sendVoiceMessageDiscord, u as createThreadDiscord, v as searchMessagesDiscord, x as banMemberDiscord, y as unpinMessageDiscord, z as editChannelDiscord } from "./send-CBxhnbKU.js";
8
+ import { n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-DZHJYmNF.js";
9
+ import { a as readDiscordChannelCreateParams, c as readDiscordParentIdParam, i as requiredGuildPermissionForModerationAction, n as isDiscordModerationAction, o as readDiscordChannelEditParams, r as readDiscordModerationCommand, s as readDiscordChannelMoveParams, t as handleDiscordAction } from "./runtime-gaB5-Wsj.js";
10
10
  import { r as setDiscordRuntime } from "./runtime-DgnVQ7zW.js";
11
- import { t as discordMessageActions } from "./channel-actions-BOH34yJ5.js";
11
+ import { t as discordMessageActions } from "./channel-actions-C2g9OmnG.js";
12
12
  import { C as resolveThreadBindingMaxAgeMs, S as resolveThreadBindingMaxAgeExpiresAt, b as resolveThreadBindingIdleTimeoutMs, l as isRecentlyUnboundThreadWebhookMessage, x as resolveThreadBindingInactivityExpiresAt } from "./thread-bindings.state-BsOnj5NX.js";
13
13
  import { n as setThreadBindingMaxAgeBySessionKey, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-D5gY2ZTE.js";
14
- import { t as resolveDiscordChannelAllowlist } from "./resolve-channels-CQ13aBCV.js";
15
- import { t as resolveDiscordUserAllowlist } from "./resolve-users-Bj4Y4uWR.js";
16
- import { _ as formatThreadBindingDurationLabel, b as resolveThreadBindingThreadName, g as resolveThreadBindingPersonaFromRecord, h as resolveThreadBindingPersona, y as resolveThreadBindingIntroText } from "./thread-bindings.discord-api-JrJXT7L0.js";
17
- import { a as reconcileAcpThreadBindingsOnStartup, c as resolveDiscordThreadBindingMaxAgeMs, i as listThreadBindingsForAccount, l as resolveThreadBindingsEnabled, n as autoBindSpawnedDiscordSubagent, o as unbindThreadBindingsBySessionKey, r as listThreadBindingsBySessionKey, s as resolveDiscordThreadBindingIdleTimeoutMs } from "./thread-bindings-Cm3GqlNC.js";
18
- import { i as testing, n as createThreadBindingManager, r as getThreadBindingManager, t as createNoopThreadBindingManager } from "./thread-bindings.manager-DqJuGG-r.js";
19
- import { a as resolveDiscordPrivilegedIntentsFromFlags, i as probeDiscord, n as fetchDiscordApplicationSummary, r as parseApplicationIdFromToken, t as fetchDiscordApplicationId } from "./probe-CSBPZIYV.js";
14
+ import { t as resolveDiscordChannelAllowlist } from "./resolve-channels-D1zgoxnw.js";
15
+ import { t as resolveDiscordUserAllowlist } from "./resolve-users-wPAvLk_8.js";
16
+ import { _ as formatThreadBindingDurationLabel, b as resolveThreadBindingThreadName, g as resolveThreadBindingPersonaFromRecord, h as resolveThreadBindingPersona, y as resolveThreadBindingIntroText } from "./thread-bindings.discord-api-5QgEd_dW.js";
17
+ import { a as reconcileAcpThreadBindingsOnStartup, c as resolveDiscordThreadBindingMaxAgeMs, i as listThreadBindingsForAccount, l as resolveThreadBindingsEnabled, n as autoBindSpawnedDiscordSubagent, o as unbindThreadBindingsBySessionKey, r as listThreadBindingsBySessionKey, s as resolveDiscordThreadBindingIdleTimeoutMs } from "./thread-bindings-BBq-yzq2.js";
18
+ import { i as testing, n as createThreadBindingManager, r as getThreadBindingManager, t as createNoopThreadBindingManager } from "./thread-bindings.manager-COkxjwR9.js";
19
+ import { a as resolveDiscordPrivilegedIntentsFromFlags, i as probeDiscord, n as fetchDiscordApplicationSummary, r as parseApplicationIdFromToken, t as fetchDiscordApplicationId } from "./probe-BiEg-_i1.js";
20
20
  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-l_PsHQvX.js";
21
21
  import "./runtime-api.actions.js";
22
- import { r as collectDiscordAuditChannelIds, t as auditDiscordChannelPermissions } from "./audit-D6BXQsYY.js";
22
+ import { r as collectDiscordAuditChannelIds, t as auditDiscordChannelPermissions } from "./audit-BFCBp74H.js";
23
23
  import "./runtime-api.lookup.js";
24
- import { C as resolveDiscordReplyTarget, T as sanitizeDiscordThreadName, b as registerDiscordListener, c as resolveDiscordGatewayIntents, d as createDiscordNativeCommand, l as waitForDiscordGatewayPluginRegistration, s as createDiscordGatewayPlugin, t as monitorDiscordProvider } from "./provider-DIVQuJTw.js";
25
- import { i as buildDiscordMediaPayload } from "./message-utils-BlvuUPP4.js";
26
- import { t as createDiscordMessageHandler } from "./message-handler-DhqxKFLP.js";
27
- import "./runtime-api.monitor-P-emTjcx.js";
24
+ import { C as resolveDiscordReplyTarget, T as sanitizeDiscordThreadName, b as registerDiscordListener, c as resolveDiscordGatewayIntents, d as createDiscordNativeCommand, l as waitForDiscordGatewayPluginRegistration, s as createDiscordGatewayPlugin, t as monitorDiscordProvider } from "./provider-DCcqVFp-.js";
25
+ import { i as buildDiscordMediaPayload } from "./message-utils-CmB03FoF.js";
26
+ import { t as createDiscordMessageHandler } from "./message-handler-BnhAHqem.js";
27
+ import "./runtime-api.monitor-B38upMUK.js";
28
28
  import "./runtime-api.send.js";
29
29
  import "./runtime-api.threads.js";
30
30
  export { DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS, DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, DiscordSendError, testing as __testing, testing, addRoleDiscord, allowListMatches, auditDiscordChannelPermissions, autoBindSpawnedDiscordSubagent, banMemberDiscord, buildDiscordMediaPayload, clearGateways, clearPresences, collectDiscordAuditChannelIds, createChannelDiscord, createDiscordGatewayPlugin, createDiscordMessageHandler, createDiscordNativeCommand, createNoopThreadBindingManager, createScheduledEventDiscord, createThreadBindingManager, createThreadDiscord, deleteChannelDiscord, deleteMessageDiscord, discordMessageActions, editChannelDiscord, editDiscordComponentMessage, editMessageDiscord, fetchChannelInfoDiscord, fetchChannelPermissionsDiscord, fetchDiscordApplicationId, fetchDiscordApplicationSummary, fetchMemberGuildPermissionsDiscord, fetchMemberInfoDiscord, fetchMessageDiscord, fetchReactionsDiscord, fetchRoleInfoDiscord, fetchVoiceStatusDiscord, formatThreadBindingDurationLabel, getGateway, getPresence, getThreadBindingManager, handleDiscordAction, hasAllGuildPermissionsDiscord, hasAnyGuildPermissionDiscord, isDiscordGroupAllowedByPolicy, isDiscordModerationAction, isRecentlyUnboundThreadWebhookMessage, kickMemberDiscord, listDiscordDirectoryGroupsLive, listDiscordDirectoryPeersLive, listGuildChannelsDiscord, listGuildEmojisDiscord, listPinsDiscord, listScheduledEventsDiscord, listThreadBindingsBySessionKey, listThreadBindingsForAccount, listThreadsDiscord, mergeAbortSignals, monitorDiscordProvider, moveChannelDiscord, normalizeDiscordAllowList, normalizeDiscordSlug, parseApplicationIdFromToken, pinMessageDiscord, presenceCacheSize, probeDiscord, reactMessageDiscord, readDiscordChannelCreateParams, readDiscordChannelEditParams, readDiscordChannelMoveParams, readDiscordModerationCommand, readDiscordParentIdParam, readMessagesDiscord, reconcileAcpThreadBindingsOnStartup, registerBuiltDiscordComponentMessage, registerDiscordListener, registerGateway, removeChannelPermissionDiscord, removeOwnReactionsDiscord, removeReactionDiscord, removeRoleDiscord, requiredGuildPermissionForModerationAction, resolveDiscordChannelAllowlist, resolveDiscordChannelConfig, resolveDiscordChannelConfigWithFallback, resolveDiscordCommandAuthorized, resolveDiscordGatewayIntents, resolveDiscordGuildEntry, resolveDiscordOutboundSessionRoute, resolveDiscordPrivilegedIntentsFromFlags, resolveDiscordReplyTarget, resolveDiscordShouldRequireMention, resolveDiscordThreadBindingIdleTimeoutMs, resolveDiscordThreadBindingMaxAgeMs, resolveDiscordUserAllowlist, resolveEventCoverImage, resolveGroupDmAllow, resolveThreadBindingIdleTimeoutMs, resolveThreadBindingInactivityExpiresAt, resolveThreadBindingIntroText, resolveThreadBindingMaxAgeExpiresAt, resolveThreadBindingMaxAgeMs, resolveThreadBindingPersona, resolveThreadBindingPersonaFromRecord, resolveThreadBindingThreadName, resolveThreadBindingsEnabled, sanitizeDiscordThreadName, searchMessagesDiscord, sendDiscordComponentMessage, sendMessageDiscord, sendPollDiscord, sendStickerDiscord, sendTypingDiscord, sendVoiceMessageDiscord, sendWebhookMessageDiscord, setChannelPermissionDiscord, setDiscordRuntime, setPresence, setThreadBindingIdleTimeoutBySessionKey, setThreadBindingMaxAgeBySessionKey, shouldEmitDiscordReactionNotification, timeoutMemberDiscord, unbindThreadBindingsBySessionKey, unpinMessageDiscord, unregisterGateway, uploadEmojiDiscord, uploadStickerDiscord, waitForDiscordGatewayPluginRegistration };
@@ -1,7 +1,7 @@
1
- import { n as listDiscordDirectoryGroupsLive, r as listDiscordDirectoryPeersLive } from "./directory-live-NOtxlJZ3.js";
1
+ import { n as listDiscordDirectoryGroupsLive, r as listDiscordDirectoryPeersLive } from "./directory-live-CCI0IMZq.js";
2
2
  import { r as setDiscordRuntime } from "./runtime-DgnVQ7zW.js";
3
- import { t as resolveDiscordChannelAllowlist } from "./resolve-channels-CQ13aBCV.js";
4
- import { t as resolveDiscordUserAllowlist } from "./resolve-users-Bj4Y4uWR.js";
5
- import { a as resolveDiscordPrivilegedIntentsFromFlags, i as probeDiscord, n as fetchDiscordApplicationSummary, r as parseApplicationIdFromToken, t as fetchDiscordApplicationId } from "./probe-CSBPZIYV.js";
6
- import { r as collectDiscordAuditChannelIds, t as auditDiscordChannelPermissions } from "./audit-D6BXQsYY.js";
3
+ import { t as resolveDiscordChannelAllowlist } from "./resolve-channels-D1zgoxnw.js";
4
+ import { t as resolveDiscordUserAllowlist } from "./resolve-users-wPAvLk_8.js";
5
+ import { a as resolveDiscordPrivilegedIntentsFromFlags, i as probeDiscord, n as fetchDiscordApplicationSummary, r as parseApplicationIdFromToken, t as fetchDiscordApplicationId } from "./probe-BiEg-_i1.js";
6
+ import { r as collectDiscordAuditChannelIds, t as auditDiscordChannelPermissions } from "./audit-BFCBp74H.js";
7
7
  export { auditDiscordChannelPermissions, collectDiscordAuditChannelIds, fetchDiscordApplicationId, fetchDiscordApplicationSummary, listDiscordDirectoryGroupsLive, listDiscordDirectoryPeersLive, parseApplicationIdFromToken, probeDiscord, resolveDiscordChannelAllowlist, resolveDiscordPrivilegedIntentsFromFlags, resolveDiscordUserAllowlist, setDiscordRuntime };
@@ -0,0 +1,5 @@
1
+ import "./allow-list-BnkWtVpA.js";
2
+ import "./provider-DCcqVFp-.js";
3
+ import "./message-utils-CmB03FoF.js";
4
+ import "./message-handler-BnhAHqem.js";
5
+ export {};
@@ -1,8 +1,8 @@
1
1
  import { a as clearPresences, c as setPresence, i as unregisterGateway, n as getGateway, o as getPresence, r as registerGateway, s as presenceCacheSize, t as clearGateways } from "./gateway-registry-DPxmW0Db.js";
2
2
  import { _ as resolveGroupDmAllow, a as normalizeDiscordSlug, c as resolveDiscordChannelConfigWithFallback, d as resolveDiscordGuildEntry, g as resolveDiscordShouldRequireMention, n as isDiscordGroupAllowedByPolicy, r as normalizeDiscordAllowList, s as resolveDiscordChannelConfig, t as allowListMatches, u as resolveDiscordCommandAuthorized, v as shouldEmitDiscordReactionNotification } from "./allow-list-BnkWtVpA.js";
3
3
  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-l_PsHQvX.js";
4
- import { C as resolveDiscordReplyTarget, T as sanitizeDiscordThreadName, b as registerDiscordListener, c as resolveDiscordGatewayIntents, d as createDiscordNativeCommand, l as waitForDiscordGatewayPluginRegistration, s as createDiscordGatewayPlugin, t as monitorDiscordProvider } from "./provider-DIVQuJTw.js";
5
- import { i as buildDiscordMediaPayload } from "./message-utils-BlvuUPP4.js";
6
- import { t as createDiscordMessageHandler } from "./message-handler-DhqxKFLP.js";
7
- import "./runtime-api.monitor-P-emTjcx.js";
4
+ import { C as resolveDiscordReplyTarget, T as sanitizeDiscordThreadName, b as registerDiscordListener, c as resolveDiscordGatewayIntents, d as createDiscordNativeCommand, l as waitForDiscordGatewayPluginRegistration, s as createDiscordGatewayPlugin, t as monitorDiscordProvider } from "./provider-DCcqVFp-.js";
5
+ import { i as buildDiscordMediaPayload } from "./message-utils-CmB03FoF.js";
6
+ import { t as createDiscordMessageHandler } from "./message-handler-BnhAHqem.js";
7
+ import "./runtime-api.monitor-B38upMUK.js";
8
8
  export { DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS, DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, allowListMatches, buildDiscordMediaPayload, clearGateways, clearPresences, createDiscordGatewayPlugin, createDiscordMessageHandler, createDiscordNativeCommand, getGateway, getPresence, isDiscordGroupAllowedByPolicy, mergeAbortSignals, monitorDiscordProvider, normalizeDiscordAllowList, normalizeDiscordSlug, presenceCacheSize, registerDiscordListener, registerGateway, resolveDiscordChannelConfig, resolveDiscordChannelConfigWithFallback, resolveDiscordCommandAuthorized, resolveDiscordGatewayIntents, resolveDiscordGuildEntry, resolveDiscordReplyTarget, resolveDiscordShouldRequireMention, resolveGroupDmAllow, sanitizeDiscordThreadName, setPresence, shouldEmitDiscordReactionNotification, unregisterGateway, waitForDiscordGatewayPluginRegistration };
@@ -1,6 +1,6 @@
1
- import { x as resolveDiscordOutboundSessionRoute } from "./components-DX5Baphr.js";
2
- import { n as registerBuiltDiscordComponentMessage, r as sendDiscordComponentMessage, t as editDiscordComponentMessage } from "./send.components-2qRLUwBn.js";
3
- import { A as hasAllGuildPermissionsDiscord, M as hasAnyGuildPermissionDiscord, O as fetchChannelPermissionsDiscord, k as fetchMemberGuildPermissionsDiscord, w as DiscordSendError } from "./send.shared-CXctTF1I.js";
4
- 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, c as sendWebhookMessageDiscord, d as deleteMessageDiscord, f as editMessageDiscord, g as pinMessageDiscord, h as listThreadsDiscord, i as removeOwnReactionsDiscord, j as removeRoleDiscord, k as listGuildChannelsDiscord, m as listPinsDiscord, n as fetchReactionsDiscord, o as sendTypingDiscord, p as fetchMessageDiscord, r as reactMessageDiscord, s as sendVoiceMessageDiscord, u as createThreadDiscord, v as searchMessagesDiscord, x as banMemberDiscord, y as unpinMessageDiscord, z as editChannelDiscord } from "./send-3r8QQkTY.js";
5
- import { n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-LjX_KYiO.js";
1
+ import { x as resolveDiscordOutboundSessionRoute } from "./components-CjQujWa1.js";
2
+ import { n as registerBuiltDiscordComponentMessage, r as sendDiscordComponentMessage, t as editDiscordComponentMessage } from "./send.components-uuQuHL3t.js";
3
+ import { A as hasAllGuildPermissionsDiscord, M as hasAnyGuildPermissionDiscord, O as fetchChannelPermissionsDiscord, k as fetchMemberGuildPermissionsDiscord, w as DiscordSendError } from "./send.shared-Ddl21-Gt.js";
4
+ 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, c as sendWebhookMessageDiscord, d as deleteMessageDiscord, f as editMessageDiscord, g as pinMessageDiscord, h as listThreadsDiscord, i as removeOwnReactionsDiscord, j as removeRoleDiscord, k as listGuildChannelsDiscord, m as listPinsDiscord, n as fetchReactionsDiscord, o as sendTypingDiscord, p as fetchMessageDiscord, r as reactMessageDiscord, s as sendVoiceMessageDiscord, u as createThreadDiscord, v as searchMessagesDiscord, x as banMemberDiscord, y as unpinMessageDiscord, z as editChannelDiscord } from "./send-CBxhnbKU.js";
5
+ import { n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-DZHJYmNF.js";
6
6
  export { DiscordSendError, addRoleDiscord, banMemberDiscord, createChannelDiscord, createScheduledEventDiscord, createThreadDiscord, deleteChannelDiscord, deleteMessageDiscord, editChannelDiscord, editDiscordComponentMessage, editMessageDiscord, fetchChannelInfoDiscord, fetchChannelPermissionsDiscord, fetchMemberGuildPermissionsDiscord, fetchMemberInfoDiscord, fetchMessageDiscord, fetchReactionsDiscord, fetchRoleInfoDiscord, fetchVoiceStatusDiscord, hasAllGuildPermissionsDiscord, hasAnyGuildPermissionDiscord, kickMemberDiscord, listGuildChannelsDiscord, listGuildEmojisDiscord, listPinsDiscord, listScheduledEventsDiscord, listThreadsDiscord, moveChannelDiscord, pinMessageDiscord, reactMessageDiscord, readMessagesDiscord, registerBuiltDiscordComponentMessage, removeChannelPermissionDiscord, removeOwnReactionsDiscord, removeReactionDiscord, removeRoleDiscord, resolveDiscordOutboundSessionRoute, resolveEventCoverImage, searchMessagesDiscord, sendDiscordComponentMessage, sendMessageDiscord, sendPollDiscord, sendStickerDiscord, sendTypingDiscord, sendVoiceMessageDiscord, sendWebhookMessageDiscord, setChannelPermissionDiscord, timeoutMemberDiscord, unpinMessageDiscord, uploadEmojiDiscord, uploadStickerDiscord };
@@ -1,6 +1,6 @@
1
1
  import { C as resolveThreadBindingMaxAgeMs, S as resolveThreadBindingMaxAgeExpiresAt, b as resolveThreadBindingIdleTimeoutMs, l as isRecentlyUnboundThreadWebhookMessage, x as resolveThreadBindingInactivityExpiresAt } from "./thread-bindings.state-BsOnj5NX.js";
2
2
  import { n as setThreadBindingMaxAgeBySessionKey, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-D5gY2ZTE.js";
3
- import { _ as formatThreadBindingDurationLabel, b as resolveThreadBindingThreadName, g as resolveThreadBindingPersonaFromRecord, h as resolveThreadBindingPersona, y as resolveThreadBindingIntroText } from "./thread-bindings.discord-api-JrJXT7L0.js";
4
- import { a as reconcileAcpThreadBindingsOnStartup, c as resolveDiscordThreadBindingMaxAgeMs, i as listThreadBindingsForAccount, l as resolveThreadBindingsEnabled, n as autoBindSpawnedDiscordSubagent, o as unbindThreadBindingsBySessionKey, r as listThreadBindingsBySessionKey, s as resolveDiscordThreadBindingIdleTimeoutMs } from "./thread-bindings-Cm3GqlNC.js";
5
- import { i as testing, n as createThreadBindingManager, r as getThreadBindingManager, t as createNoopThreadBindingManager } from "./thread-bindings.manager-DqJuGG-r.js";
3
+ import { _ as formatThreadBindingDurationLabel, b as resolveThreadBindingThreadName, g as resolveThreadBindingPersonaFromRecord, h as resolveThreadBindingPersona, y as resolveThreadBindingIntroText } from "./thread-bindings.discord-api-5QgEd_dW.js";
4
+ import { a as reconcileAcpThreadBindingsOnStartup, c as resolveDiscordThreadBindingMaxAgeMs, i as listThreadBindingsForAccount, l as resolveThreadBindingsEnabled, n as autoBindSpawnedDiscordSubagent, o as unbindThreadBindingsBySessionKey, r as listThreadBindingsBySessionKey, s as resolveDiscordThreadBindingIdleTimeoutMs } from "./thread-bindings-BBq-yzq2.js";
5
+ import { i as testing, n as createThreadBindingManager, r as getThreadBindingManager, t as createNoopThreadBindingManager } from "./thread-bindings.manager-COkxjwR9.js";
6
6
  export { testing as __testing, testing, autoBindSpawnedDiscordSubagent, createNoopThreadBindingManager, createThreadBindingManager, formatThreadBindingDurationLabel, getThreadBindingManager, isRecentlyUnboundThreadWebhookMessage, listThreadBindingsBySessionKey, listThreadBindingsForAccount, reconcileAcpThreadBindingsOnStartup, resolveDiscordThreadBindingIdleTimeoutMs, resolveDiscordThreadBindingMaxAgeMs, resolveThreadBindingIdleTimeoutMs, resolveThreadBindingInactivityExpiresAt, resolveThreadBindingIntroText, resolveThreadBindingMaxAgeExpiresAt, resolveThreadBindingMaxAgeMs, resolveThreadBindingPersona, resolveThreadBindingPersonaFromRecord, resolveThreadBindingThreadName, resolveThreadBindingsEnabled, setThreadBindingIdleTimeoutBySessionKey, setThreadBindingMaxAgeBySessionKey, unbindThreadBindingsBySessionKey };
@@ -1,13 +1,13 @@
1
- import { Ut as resolveDiscordChannelId } from "./send.receipt-Bo_43DQZ.js";
1
+ import { Ut as resolveDiscordChannelId } from "./send.receipt-3y2lVFRf.js";
2
2
  import { a as mergeDiscordAccountConfig, o as resolveDefaultDiscordAccountId, t as createDiscordActionGate } from "./accounts-dXTfmnSZ.js";
3
- import { d as readDiscordComponentSpec } from "./components-DX5Baphr.js";
4
- import { _ as withNormalizedTimestamp, c as jsonResult, d as readNonNegativeIntegerParam, f as readPositiveIntegerParam, g as resolvePollMaxSelections, h as readStringParam, l as parseAvailableTags, m as readStringArrayParam, p as readReactionParams, r as sendDiscordComponentMessage, s as assertMediaNotDataUrl, u as readBooleanParam } from "./send.components-2qRLUwBn.js";
3
+ import { d as readDiscordComponentSpec } from "./components-CjQujWa1.js";
4
+ import { _ as withNormalizedTimestamp, c as jsonResult, d as readNonNegativeIntegerParam, f as readPositiveIntegerParam, g as resolvePollMaxSelections, h as readStringParam, l as parseAvailableTags, m as readStringArrayParam, p as readReactionParams, r as sendDiscordComponentMessage, s as assertMediaNotDataUrl, u as readBooleanParam } from "./send.components-uuQuHL3t.js";
5
5
  import { n as getGateway, o as getPresence } from "./gateway-registry-DPxmW0Db.js";
6
- import { E as canManageGuildRoleDiscord, L as createDiscordRuntimeAccountContext, M as hasAnyGuildPermissionDiscord, N as isThreadChannelType$1, O as fetchChannelPermissionsDiscord, T as canManageGuildMemberRoleDiscord, d as resolveDiscordTargetChannelId, j as hasAnyChannelPermissionDiscord } from "./send.shared-CXctTF1I.js";
6
+ import { E as canManageGuildRoleDiscord, L as createDiscordRuntimeAccountContext, M as hasAnyGuildPermissionDiscord, N as isThreadChannelType$1, O as fetchChannelPermissionsDiscord, T as canManageGuildMemberRoleDiscord, d as resolveDiscordTargetChannelId, j as hasAnyChannelPermissionDiscord } from "./send.shared-Ddl21-Gt.js";
7
7
  import { a as normalizeDiscordSlug, c as resolveDiscordChannelConfigWithFallback, n as isDiscordGroupAllowedByPolicy } from "./allow-list-BnkWtVpA.js";
8
- 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-3r8QQkTY.js";
9
- import { n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-LjX_KYiO.js";
10
- import "./targets-0WHF7kV0.js";
8
+ 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-CBxhnbKU.js";
9
+ import { n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-DZHJYmNF.js";
10
+ import "./targets-BVKF5wbg.js";
11
11
  import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
12
12
  import { ChannelType, PermissionFlagsBits } from "discord-api-types/v10";
13
13
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
@@ -1,7 +1,7 @@
1
- import { At as getGuildMember, Bt as removeGuildMemberRole, C as readDiscordCode, Ct as createGuildBan, Dt as createGuildSticker, Et as createGuildScheduledEvent, Ft as listGuildRoles, It as listGuildScheduledEvents, Lt as moveGuildChannels, Mt as listGuildActiveThreads, Nt as listGuildChannels, Ot as deleteChannelPermission, Pt as listGuildEmojis, Rt as putChannelPermission, S as RateLimitError, St as addGuildMemberRole, T as readRetryAfter, Tt as createGuildEmoji, Vt as timeoutGuildMember, Wt as __exportAll, _t as listChannelPins, at as deleteOwnMessageReaction, bt as sendChannelTyping, ct as createThread, dt as editChannel, ft as editChannelMessage, gt as listChannelMessages, ht as listChannelArchivedThreads, it as createOwnMessageReaction, jt as getGuildVoiceState, kt as getGuild, lt as deleteChannel, mt as getChannelMessage, n as createDiscordSendResult, ot as listMessageReactionUsers, pt as getChannel, st as createChannelMessage, ut as deleteChannelMessage, vt as pinChannelMessage, w as readDiscordMessage, wt as createGuildChannel, x as DiscordError, xt as unpinChannelMessage, yt as searchGuildMessages, zt as removeGuildMember } from "./send.receipt-Bo_43DQZ.js";
1
+ import { At as getGuildMember, Bt as removeGuildMemberRole, C as readDiscordCode, Ct as createGuildBan, Dt as createGuildSticker, Et as createGuildScheduledEvent, Ft as listGuildRoles, It as listGuildScheduledEvents, Lt as moveGuildChannels, Mt as listGuildActiveThreads, Nt as listGuildChannels, Ot as deleteChannelPermission, Pt as listGuildEmojis, Rt as putChannelPermission, S as RateLimitError, St as addGuildMemberRole, T as readRetryAfter, Tt as createGuildEmoji, Vt as timeoutGuildMember, Wt as __exportAll, _t as listChannelPins, at as deleteOwnMessageReaction, bt as sendChannelTyping, ct as createThread, dt as editChannel, ft as editChannelMessage, gt as listChannelMessages, ht as listChannelArchivedThreads, it as createOwnMessageReaction, jt as getGuildVoiceState, kt as getGuild, lt as deleteChannel, mt as getChannelMessage, n as createDiscordSendResult, ot as listMessageReactionUsers, pt as getChannel, st as createChannelMessage, ut as deleteChannelMessage, vt as pinChannelMessage, w as readDiscordMessage, wt as createGuildChannel, x as DiscordError, xt as unpinChannelMessage, yt as searchGuildMessages, zt as removeGuildMember } from "./send.receipt-3y2lVFRf.js";
2
2
  import { s as resolveDiscordAccount } from "./accounts-dXTfmnSZ.js";
3
- import { A as hasAllGuildPermissionsDiscord, C as DISCORD_MAX_STICKER_BYTES, D as canViewDiscordGuildChannel, E as canManageGuildRoleDiscord, F as createDiscordClient, M as hasAnyGuildPermissionDiscord, O as fetchChannelPermissionsDiscord, P as parseAndResolveChannelRecipient, R as resolveDiscordClientAccountContext, S as DISCORD_MAX_EVENT_COVER_BYTES, T as canManageGuildMemberRoleDiscord, i as formatReactionEmoji, j as hasAnyChannelPermissionDiscord, k as fetchMemberGuildPermissionsDiscord, l as resolveChannelId, o as normalizeEmojiName, r as buildReactionIdentifier, s as normalizeReactionEmoji, t as buildDiscordSendError, w as DiscordSendError, x as DISCORD_MAX_EMOJI_BYTES, z as resolveDiscordRest } from "./send.shared-CXctTF1I.js";
4
- import { a as rewriteDiscordKnownMentions, n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-LjX_KYiO.js";
3
+ import { A as hasAllGuildPermissionsDiscord, C as DISCORD_MAX_STICKER_BYTES, D as canViewDiscordGuildChannel, E as canManageGuildRoleDiscord, F as createDiscordClient, M as hasAnyGuildPermissionDiscord, O as fetchChannelPermissionsDiscord, P as parseAndResolveChannelRecipient, R as resolveDiscordClientAccountContext, S as DISCORD_MAX_EVENT_COVER_BYTES, T as canManageGuildMemberRoleDiscord, i as formatReactionEmoji, j as hasAnyChannelPermissionDiscord, k as fetchMemberGuildPermissionsDiscord, l as resolveChannelId, o as normalizeEmojiName, r as buildReactionIdentifier, s as normalizeReactionEmoji, t as buildDiscordSendError, w as DiscordSendError, x as DISCORD_MAX_EMOJI_BYTES, z as resolveDiscordRest } from "./send.shared-Ddl21-Gt.js";
4
+ import { a as rewriteDiscordKnownMentions, n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-DZHJYmNF.js";
5
5
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { ChannelType } from "discord-api-types/v10";
7
7
  import crypto from "node:crypto";
@@ -1,10 +1,10 @@
1
- import { Wt as __exportAll, ft as editChannelMessage, j as serializePayload, n as createDiscordSendResult, st as createChannelMessage } from "./send.receipt-Bo_43DQZ.js";
1
+ import { Wt as __exportAll, ft as editChannelMessage, j as serializePayload, n as createDiscordSendResult, st as createChannelMessage } from "./send.receipt-3y2lVFRf.js";
2
2
  import { s as resolveDiscordAccount } from "./accounts-dXTfmnSZ.js";
3
3
  import "./config-api-JiPdJeb0.js";
4
4
  import "./channel-api-CAJ0wMoV.js";
5
- import { c as buildDiscordComponentMessage, f as resolveDiscordComponentAttachmentName, l as buildDiscordComponentMessageFlags } from "./components-DX5Baphr.js";
6
- import { F as createDiscordClient, P as parseAndResolveChannelRecipient, b as stripUndefinedFields, h as SUPPRESS_NOTIFICATIONS_FLAG, l as resolveChannelId, m as toDiscordFileBlob, t as buildDiscordSendError, u as resolveDiscordChannelType } from "./send.shared-CXctTF1I.js";
7
- import { t as sendMessageDiscord } from "./send.outbound-LjX_KYiO.js";
5
+ import { c as buildDiscordComponentMessage, f as resolveDiscordComponentAttachmentName, l as buildDiscordComponentMessageFlags } from "./components-CjQujWa1.js";
6
+ import { F as createDiscordClient, P as parseAndResolveChannelRecipient, b as stripUndefinedFields, h as SUPPRESS_NOTIFICATIONS_FLAG, l as resolveChannelId, m as toDiscordFileBlob, t as buildDiscordSendError, u as resolveDiscordChannelType } from "./send.shared-Ddl21-Gt.js";
7
+ import { t as sendMessageDiscord } from "./send.outbound-DZHJYmNF.js";
8
8
  import { n as getOptionalDiscordRuntime } from "./runtime-DgnVQ7zW.js";
9
9
  import "openclaw/plugin-sdk/account-id";
10
10
  import "openclaw/plugin-sdk/secret-input";
@@ -1,7 +1,7 @@
1
- import { ct as createThread, n as createDiscordSendResult, st as createChannelMessage } from "./send.receipt-Bo_43DQZ.js";
1
+ import { ct as createThread, n as createDiscordSendResult, st as createChannelMessage } from "./send.receipt-3y2lVFRf.js";
2
2
  import { s as resolveDiscordAccount } from "./accounts-dXTfmnSZ.js";
3
- import { F as createDiscordClient, P as parseAndResolveChannelRecipient, _ as resolveDiscordMessageFlags, a as normalizeDiscordPollInput, c as normalizeStickerIds, f as sendDiscordMedia, g as buildDiscordMessageRequest, l as resolveChannelId, n as buildDiscordTextChunks, p as sendDiscordText, t as buildDiscordSendError, u as resolveDiscordChannelType, v as resolveDiscordSendComponents, y as resolveDiscordSendEmbeds } from "./send.shared-CXctTF1I.js";
4
- import { a as resolveDiscordDirectoryUserId } from "./directory-live-NOtxlJZ3.js";
3
+ import { F as createDiscordClient, P as parseAndResolveChannelRecipient, _ as resolveDiscordMessageFlags, a as normalizeDiscordPollInput, c as normalizeStickerIds, f as sendDiscordMedia, g as buildDiscordMessageRequest, l as resolveChannelId, n as buildDiscordTextChunks, p as sendDiscordText, t as buildDiscordSendError, u as resolveDiscordChannelType, v as resolveDiscordSendComponents, y as resolveDiscordSendEmbeds } from "./send.shared-Ddl21-Gt.js";
4
+ import { a as resolveDiscordDirectoryUserId } from "./directory-live-CCI0IMZq.js";
5
5
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { ChannelType } from "discord-api-types/v10";
7
7
  import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
@@ -1,4 +1,4 @@
1
- import { n as parseRetryAfterHeaderSeconds, t as parseDiscordRetryAfterBodySeconds } from "./retry-after-CSukypPP.js";
1
+ import { n as parseRetryAfterHeaderSeconds, t as parseDiscordRetryAfterBodySeconds } from "./retry-after-D5_VmM-_.js";
2
2
  import "node:module";
3
3
  import { buildMessagingTarget, parseMentionPrefixOrAtUserTarget, requireTargetKind } from "openclaw/plugin-sdk/channel-targets";
4
4
  import { ApplicationCommandOptionType, ApplicationCommandType, ButtonStyle, ComponentType, GatewayDispatchEvents, InteractionContextType, InteractionResponseType, InteractionType, MessageFlags, Routes, TextInputStyle } from "discord-api-types/v10";
@@ -8,7 +8,7 @@ import { privateFileStore } from "openclaw/plugin-sdk/security-runtime";
8
8
  import { Type } from "typebox";
9
9
  import { Check } from "typebox/value";
10
10
  import { inspect } from "node:util";
11
- import { parseFiniteNumber, resolveIntegerOption } from "openclaw/plugin-sdk/number-runtime";
11
+ import { parseFiniteNumber, parseStrictNonNegativeInteger, resolveIntegerOption } from "openclaw/plugin-sdk/number-runtime";
12
12
  import { chunkMarkdownTextWithMode } from "openclaw/plugin-sdk/reply-chunking";
13
13
  import { createMessageReceiptFromOutboundResults } from "openclaw/plugin-sdk/channel-outbound";
14
14
  //#region \0rolldown/runtime.js
@@ -1859,9 +1859,7 @@ function serializeRequestBody(data, headers) {
1859
1859
  //#endregion
1860
1860
  //#region extensions/discord/src/internal/rest-errors.ts
1861
1861
  function readDiscordCode(body) {
1862
- const value = body && typeof body === "object" && "code" in body ? body.code : void 0;
1863
- if (typeof value === "number" && Number.isFinite(value)) return value;
1864
- if (typeof value === "string" && /^\d+$/.test(value)) return Number(value);
1862
+ return parseStrictNonNegativeInteger(body && typeof body === "object" && "code" in body ? body.code : void 0);
1865
1863
  }
1866
1864
  function readDiscordMessage(body, fallback) {
1867
1865
  const value = body && typeof body === "object" && "message" in body ? body.message : void 0;
@@ -1912,7 +1910,7 @@ function readHeaderNumber(headers, name) {
1912
1910
  const trimmed = value.trim();
1913
1911
  if (!RATE_LIMIT_HEADER_NUMBER_RE.test(trimmed)) return;
1914
1912
  const parsed = Number(trimmed);
1915
- return Number.isFinite(parsed) ? parsed : void 0;
1913
+ return Number.isFinite(parsed) && Math.abs(parsed) <= Number.MAX_SAFE_INTEGER ? parsed : void 0;
1916
1914
  }
1917
1915
  function readResetAt(response) {
1918
1916
  const resetAfter = readHeaderNumber(response.headers, "X-RateLimit-Reset-After");
@@ -1,9 +1,10 @@
1
- import { At as getGuildMember, M as Embed, S as RateLimitError, b as RequestClient, j as serializePayload, kt as getGuild, nt as createUserDmChannel, pt as getChannel, rt as getCurrentUser, s as chunkDiscordTextWithMode, st as createChannelMessage } from "./send.receipt-Bo_43DQZ.js";
1
+ import { At as getGuildMember, M as Embed, S as RateLimitError, b as RequestClient, j as serializePayload, kt as getGuild, nt as createUserDmChannel, pt as getChannel, rt as getCurrentUser, s as chunkDiscordTextWithMode, st as createChannelMessage } from "./send.receipt-3y2lVFRf.js";
2
2
  import { a as mergeDiscordAccountConfig, p as normalizeDiscordToken, s as resolveDiscordAccount } from "./accounts-dXTfmnSZ.js";
3
- import { t as parseAndResolveDiscordTarget } from "./target-resolver-DVpZI7ZL.js";
3
+ import { t as parseAndResolveDiscordTarget } from "./target-resolver-jjQzAS6T.js";
4
4
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
6
6
  import { ChannelType, MessageFlags, PermissionFlagsBits } from "discord-api-types/v10";
7
+ import { parseStrictNonNegativeInteger } from "openclaw/plugin-sdk/number-runtime";
7
8
  import { PollLayoutType } from "discord-api-types/payloads/v10";
8
9
  import { buildOutboundMediaLoadOptions, extensionForMime, normalizePollDurationHours, normalizePollInput } from "openclaw/plugin-sdk/media-runtime";
9
10
  import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
@@ -98,9 +99,7 @@ const DISCORD_RETRYABLE_ERROR_CODES = new Set([
98
99
  const DISCORD_TRANSIENT_MESSAGE_RE = /\b(?:bad gateway|fetch failed|network error|networkerror|service unavailable|socket hang up|temporarily unavailable|timed out|timeout)\b|connection (?:closed|reset|refused)/i;
99
100
  function readDiscordErrorStatus(err) {
100
101
  if (!err || typeof err !== "object") return;
101
- const raw = "status" in err && err.status !== void 0 ? err.status : "statusCode" in err && err.statusCode !== void 0 ? err.statusCode : void 0;
102
- if (typeof raw === "number" && Number.isFinite(raw)) return raw;
103
- if (typeof raw === "string" && /^\d+$/.test(raw)) return Number(raw);
102
+ return parseStrictNonNegativeInteger("status" in err && err.status !== void 0 ? err.status : "statusCode" in err && err.statusCode !== void 0 ? err.statusCode : void 0);
104
103
  }
105
104
  function isRetryableDiscordTransientError(err) {
106
105
  if (err instanceof RateLimitError) return true;
@@ -2,9 +2,14 @@ import { defineBundledChannelSetupEntry } from "openclaw/plugin-sdk/channel-entr
2
2
  //#region extensions/discord/setup-entry.ts
3
3
  var setup_entry_default = defineBundledChannelSetupEntry({
4
4
  importMetaUrl: import.meta.url,
5
+ features: { legacyStateMigrations: true },
5
6
  plugin: {
6
7
  specifier: "./setup-plugin-api.js",
7
8
  exportName: "discordSetupPlugin"
9
+ },
10
+ legacyStateMigrations: {
11
+ specifier: "./legacy-state-migrations-api.js",
12
+ exportName: "detectDiscordLegacyStateMigrations"
8
13
  }
9
14
  });
10
15
  //#endregion
@@ -1,2 +1,2 @@
1
- import { t as discordSetupPlugin } from "./channel.setup-COYdCbY_.js";
1
+ import { t as discordSetupPlugin } from "./channel.setup-BsrP5-hv.js";
2
2
  export { discordSetupPlugin };
@@ -1,6 +1,6 @@
1
- import { Wt as __exportAll } from "./send.receipt-Bo_43DQZ.js";
1
+ import { Wt as __exportAll } from "./send.receipt-3y2lVFRf.js";
2
2
  import { s as resolveDiscordAccount } from "./accounts-dXTfmnSZ.js";
3
- import { n as autoBindSpawnedDiscordSubagent, o as unbindThreadBindingsBySessionKey, r as listThreadBindingsBySessionKey } from "./thread-bindings-Cm3GqlNC.js";
3
+ import { n as autoBindSpawnedDiscordSubagent, o as unbindThreadBindingsBySessionKey, r as listThreadBindingsBySessionKey } from "./thread-bindings-BBq-yzq2.js";
4
4
  import { normalizeOptionalLowercaseString, normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { formatThreadBindingDisabledError, formatThreadBindingSpawnDisabledError, resolveThreadBindingSpawnPolicy } from "openclaw/plugin-sdk/conversation-runtime";
6
6
  //#region extensions/discord/src/subagent-hooks.ts
@@ -1,7 +1,7 @@
1
1
  //#region extensions/discord/subagent-hooks-api.ts
2
2
  let discordSubagentHooksPromise = null;
3
3
  function loadDiscordSubagentHooksModule() {
4
- discordSubagentHooksPromise ??= import("./subagent-hooks-DoWTMQyQ.js").then((n) => n.i);
4
+ discordSubagentHooksPromise ??= import("./subagent-hooks-BacIbIBD.js").then((n) => n.i);
5
5
  return discordSubagentHooksPromise;
6
6
  }
7
7
  function registerDiscordSubagentHooks(api) {
@@ -1,4 +1,4 @@
1
- import { c as discord_exports } from "./send.receipt-Bo_43DQZ.js";
1
+ import { c as discord_exports } from "./send.receipt-3y2lVFRf.js";
2
2
  import { b as formatDiscordUserTag } from "./allow-list-BnkWtVpA.js";
3
3
  //#region extensions/discord/src/monitor/system-events.ts
4
4
  function resolveDiscordSystemEvent(message, location) {
@@ -1,6 +1,6 @@
1
- import { Ht as parseDiscordTarget, Wt as __exportAll, r as allowFromContainsDiscordUserId } from "./send.receipt-Bo_43DQZ.js";
1
+ import { Ht as parseDiscordTarget, Wt as __exportAll, r as allowFromContainsDiscordUserId } from "./send.receipt-3y2lVFRf.js";
2
2
  import { c as resolveDiscordAccountAllowFrom, s as resolveDiscordAccount } from "./accounts-dXTfmnSZ.js";
3
- import { i as rememberDiscordDirectoryUser, r as listDiscordDirectoryPeersLive } from "./directory-live-NOtxlJZ3.js";
3
+ import { i as rememberDiscordDirectoryUser, r as listDiscordDirectoryPeersLive } from "./directory-live-CCI0IMZq.js";
4
4
  import { buildMessagingTarget } from "openclaw/plugin-sdk/channel-targets";
5
5
  //#region extensions/discord/src/send-target-parsing.ts
6
6
  const parseDiscordSendTarget = (raw, options = {}) => parseDiscordTarget(raw, options);
@@ -0,0 +1,3 @@
1
+ import "./send.receipt-3y2lVFRf.js";
2
+ import "./target-resolver-jjQzAS6T.js";
3
+ export {};
@@ -1,9 +1,9 @@
1
- import { Ht as parseDiscordTarget, Wt as __exportAll } from "./send.receipt-Bo_43DQZ.js";
2
- import "./targets-0WHF7kV0.js";
1
+ import { Ht as parseDiscordTarget, Wt as __exportAll } from "./send.receipt-3y2lVFRf.js";
2
+ import "./targets-BVKF5wbg.js";
3
3
  import { C as resolveThreadBindingMaxAgeMs$1, O as shouldPersistBindingMutations, S as resolveThreadBindingMaxAgeExpiresAt, T as saveBindingsToDisk, b as resolveThreadBindingIdleTimeoutMs$1, c as getThreadBindingToken, f as normalizeThreadId, g as removeBindingRecord, l as isRecentlyUnboundThreadWebhookMessage, n as MANAGERS_BY_ACCOUNT_ID, p as rememberRecentUnboundWebhookEcho, t as BINDINGS_BY_THREAD_ID, x as resolveThreadBindingInactivityExpiresAt } from "./thread-bindings.state-BsOnj5NX.js";
4
4
  import { n as setThreadBindingMaxAgeBySessionKey, r as resolveBindingIdsForTargetSession, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-D5gY2ZTE.js";
5
- import { _ as formatThreadBindingDurationLabel, b as resolveThreadBindingThreadName, g as resolveThreadBindingPersonaFromRecord, h as resolveThreadBindingPersona, s as resolveChannelIdForBinding, y as resolveThreadBindingIntroText } from "./thread-bindings.discord-api-JrJXT7L0.js";
6
- import { i as testing, n as createThreadBindingManager, r as getThreadBindingManager, t as createNoopThreadBindingManager } from "./thread-bindings.manager-DqJuGG-r.js";
5
+ import { _ as formatThreadBindingDurationLabel, b as resolveThreadBindingThreadName, g as resolveThreadBindingPersonaFromRecord, h as resolveThreadBindingPersona, s as resolveChannelIdForBinding, y as resolveThreadBindingIntroText } from "./thread-bindings.discord-api-5QgEd_dW.js";
6
+ import { i as testing, n as createThreadBindingManager, r as getThreadBindingManager, t as createNoopThreadBindingManager } from "./thread-bindings.manager-COkxjwR9.js";
7
7
  import { normalizeOptionalLowercaseString, normalizeOptionalString, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
8
8
  import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
9
9
  import { resolveThreadBindingIdleTimeoutMs, resolveThreadBindingMaxAgeMs, resolveThreadBindingsEnabled } from "openclaw/plugin-sdk/conversation-runtime";
@@ -1,10 +1,11 @@
1
- import { Ut as resolveDiscordChannelId, pt as getChannel, tt as createChannelWebhook } from "./send.receipt-Bo_43DQZ.js";
2
- import { I as createDiscordRestClient } from "./send.shared-CXctTF1I.js";
3
- import { c as sendWebhookMessageDiscord, u as createThreadDiscord } from "./send-3r8QQkTY.js";
4
- import { t as sendMessageDiscord } from "./send.outbound-LjX_KYiO.js";
1
+ import { Ut as resolveDiscordChannelId, pt as getChannel, tt as createChannelWebhook } from "./send.receipt-3y2lVFRf.js";
2
+ import { I as createDiscordRestClient } from "./send.shared-Ddl21-Gt.js";
3
+ import { c as sendWebhookMessageDiscord, u as createThreadDiscord } from "./send-CBxhnbKU.js";
4
+ import { t as sendMessageDiscord } from "./send.outbound-DZHJYmNF.js";
5
5
  import { i as REUSABLE_WEBHOOKS_BY_ACCOUNT_CHANNEL, k as toReusableWebhookKey, m as rememberReusableWebhook, t as BINDINGS_BY_THREAD_ID } from "./thread-bindings.state-BsOnj5NX.js";
6
6
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
7
7
  import { ChannelType } from "discord-api-types/v10";
8
+ import { parseStrictNonNegativeInteger } from "openclaw/plugin-sdk/number-runtime";
8
9
  import { logVerbose } from "openclaw/plugin-sdk/runtime-env";
9
10
  import { SYSTEM_MARK } from "openclaw/plugin-sdk/text-chunking";
10
11
  import { formatThreadBindingDurationLabel, resolveThreadBindingFarewellText, resolveThreadBindingIntroText, resolveThreadBindingThreadName } from "openclaw/plugin-sdk/conversation-runtime";
@@ -116,8 +117,7 @@ function summarizeDiscordError(err) {
116
117
  return "error";
117
118
  }
118
119
  function extractNumericDiscordErrorValue(value) {
119
- if (typeof value === "number" && Number.isFinite(value)) return Math.trunc(value);
120
- if (typeof value === "string" && /^\d+$/.test(value.trim())) return Number(value);
120
+ return parseStrictNonNegativeInteger(value);
121
121
  }
122
122
  function extractDiscordErrorStatus(err) {
123
123
  if (!err || typeof err !== "object") return;
@@ -1,7 +1,7 @@
1
- import { Ut as resolveDiscordChannelId, Wt as __exportAll, pt as getChannel } from "./send.receipt-Bo_43DQZ.js";
2
- import { I as createDiscordRestClient } from "./send.shared-CXctTF1I.js";
1
+ import { Ut as resolveDiscordChannelId, Wt as __exportAll, pt as getChannel } from "./send.receipt-3y2lVFRf.js";
2
+ import { I as createDiscordRestClient } from "./send.shared-Ddl21-Gt.js";
3
3
  import { A as DEFAULT_THREAD_BINDING_IDLE_TIMEOUT_MS, C as resolveThreadBindingMaxAgeMs$1, D as shouldDefaultPersist, E as setBindingRecord, M as THREAD_BINDINGS_SWEEP_INTERVAL_MS, S as resolveThreadBindingMaxAgeExpiresAt, T as saveBindingsToDisk, _ as resetThreadBindingsForTests, a as THREAD_BINDING_TOUCH_PERSIST_MIN_INTERVAL_MS, b as resolveThreadBindingIdleTimeoutMs$1, c as getThreadBindingToken, d as normalizeThreadBindingDurationMs, f as normalizeThreadId, g as removeBindingRecord, h as rememberThreadBindingToken, n as MANAGERS_BY_ACCOUNT_ID, o as ensureBindingsLoaded, p as rememberRecentUnboundWebhookEcho, r as PERSIST_BY_ACCOUNT_ID, s as forgetThreadBindingToken, t as BINDINGS_BY_THREAD_ID, u as normalizeTargetKind, v as resolveBindingIdsForSession, w as resolveThreadBindingsPath, x as resolveThreadBindingInactivityExpiresAt, y as resolveBindingRecordKey } from "./thread-bindings.state-BsOnj5NX.js";
4
- import { a as isThreadArchived, b as resolveThreadBindingThreadName, c as summarizeDiscordError, i as isDiscordThreadGoneError, n as createWebhookForChannel, o as maybeSendBindingMessage, r as findReusableWebhook, s as resolveChannelIdForBinding, t as createThreadForBinding, v as resolveThreadBindingFarewellText } from "./thread-bindings.discord-api-JrJXT7L0.js";
4
+ import { a as isThreadArchived, b as resolveThreadBindingThreadName, c as summarizeDiscordError, i as isDiscordThreadGoneError, n as createWebhookForChannel, o as maybeSendBindingMessage, r as findReusableWebhook, s as resolveChannelIdForBinding, t as createThreadForBinding, v as resolveThreadBindingFarewellText } from "./thread-bindings.discord-api-5QgEd_dW.js";
5
5
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { normalizeAccountId, resolveAgentIdFromSessionKey } from "openclaw/plugin-sdk/routing";
7
7
  import { getRuntimeConfigSnapshot } from "openclaw/plugin-sdk/runtime-config-snapshot";
@@ -1,4 +1,4 @@
1
- import { Wt as __exportAll } from "./send.receipt-Bo_43DQZ.js";
1
+ import { Wt as __exportAll } from "./send.receipt-3y2lVFRf.js";
2
2
  //#region extensions/discord/src/voice/transcripts-source.ts
3
3
  var transcripts_source_exports = /* @__PURE__ */ __exportAll({
4
4
  discordVoiceTranscriptsSourceProvider: () => discordVoiceTranscriptsSourceProvider,
@@ -1,2 +1,2 @@
1
- import { t as discordVoiceTranscriptsSourceProvider } from "./transcripts-source-lEfSvSRD.js";
1
+ import { t as discordVoiceTranscriptsSourceProvider } from "./transcripts-source-DDrS8HrV.js";
2
2
  export { discordVoiceTranscriptsSourceProvider };
@@ -1,4 +1,4 @@
1
- import { Wt as __exportAll, bt as sendChannelTyping } from "./send.receipt-Bo_43DQZ.js";
1
+ import { Wt as __exportAll, bt as sendChannelTyping } from "./send.receipt-3y2lVFRf.js";
2
2
  import { o as raceWithTimeout } from "./timeouts-l_PsHQvX.js";
3
3
  //#region extensions/discord/src/monitor/typing.ts
4
4
  var typing_exports = /* @__PURE__ */ __exportAll({ sendTyping: () => sendTyping });
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@openclaw/discord",
3
- "version": "2026.5.28-beta.3",
3
+ "version": "2026.5.28",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@openclaw/discord",
9
- "version": "2026.5.28-beta.3",
9
+ "version": "2026.5.28",
10
10
  "dependencies": {
11
11
  "@discordjs/voice": "0.19.2",
12
12
  "discord-api-types": "0.38.48",
@@ -16,7 +16,7 @@
16
16
  "ws": "8.21.0"
17
17
  },
18
18
  "peerDependencies": {
19
- "openclaw": ">=2026.5.28-beta.3"
19
+ "openclaw": ">=2026.5.28"
20
20
  },
21
21
  "peerDependenciesMeta": {
22
22
  "openclaw": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/discord",
3
- "version": "2026.5.28-beta.3",
3
+ "version": "2026.5.28",
4
4
  "description": "OpenClaw Discord channel plugin for channels, DMs, commands, and app events.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -16,7 +16,7 @@
16
16
  "ws": "8.21.0"
17
17
  },
18
18
  "peerDependencies": {
19
- "openclaw": ">=2026.5.28-beta.3"
19
+ "openclaw": ">=2026.5.28"
20
20
  },
21
21
  "peerDependenciesMeta": {
22
22
  "openclaw": {
@@ -28,6 +28,9 @@
28
28
  "./index.ts"
29
29
  ],
30
30
  "setupEntry": "./setup-entry.ts",
31
+ "setupFeatures": {
32
+ "legacyStateMigrations": true
33
+ },
31
34
  "channel": {
32
35
  "id": "discord",
33
36
  "label": "Discord",
@@ -60,10 +63,10 @@
60
63
  "allowInvalidConfigRecovery": true
61
64
  },
62
65
  "compat": {
63
- "pluginApi": ">=2026.5.28-beta.3"
66
+ "pluginApi": ">=2026.5.28"
64
67
  },
65
68
  "build": {
66
- "openclawVersion": "2026.5.28-beta.3"
69
+ "openclawVersion": "2026.5.28"
67
70
  },
68
71
  "release": {
69
72
  "publishToClawHub": true,