@openclaw/discord 2026.6.11 → 2026.7.1-beta.2

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-4GFMoWu0.js → api-CJvEMuA6.js} +9 -2
  3. package/dist/api.js +14 -14
  4. package/dist/{approval-handler.runtime-SsFtZQA6.js → approval-handler.runtime-Cg7CuLSc.js} +3 -3
  5. package/dist/{audit-CAnmyf2A.js → audit-BCVhE9Oe.js} +3 -3
  6. package/dist/{channel-YA7AbYP3.js → channel-CfngVOjW.js} +17 -37
  7. package/dist/{channel-actions-BJ3n5Z1l.js → channel-actions-DJ_i4v9b.js} +3 -6
  8. package/dist/{channel-actions.runtime-D2QTRgZ9.js → channel-actions.runtime-BDW12z0o.js} +5 -5
  9. package/dist/channel-plugin-api.js +1 -1
  10. package/dist/{channel.setup-B1zDEAR7.js → channel.setup-BYZ78cmU.js} +3 -3
  11. package/dist/{components-Dm4c_ce6.js → components-CBPNJhVP.js} +1 -1
  12. package/dist/{conversation-identity-DZ0BD7xO.js → conversation-identity-CnYbx3sO.js} +2 -2
  13. package/dist/{directory-config-BK1OhHa3.js → directory-config-CouAqvDj.js} +1 -1
  14. package/dist/directory-contract-api.js +1 -1
  15. package/dist/{directory-live-DP3CmwGf.js → directory-live-C8lwwDJo.js} +2 -2
  16. package/dist/{doctor-D3ngpo-Y.js → doctor-CKIw8urm.js} +1 -1
  17. package/dist/{handle-action.guild-admin-B2cOoU2D.js → handle-action.guild-admin-CHMDXefq.js} +2 -2
  18. package/dist/index.js +1 -1
  19. package/dist/{manager.runtime-CPHxr9B3.js → manager.runtime-BkMOU8kh.js} +4 -4
  20. package/dist/{message-handler-CKaTgBIV.js → message-handler-B2cEpj5S.js} +11 -15
  21. package/dist/{message-handler.preflight--eAiaewz.js → message-handler.preflight-B93Az6zg.js} +15 -41
  22. package/dist/{message-handler.process-PhKAmrEd.js → message-handler.process-CW5mMw4o.js} +204 -33
  23. package/dist/{message-utils-O1vK3kPu.js → message-utils-Dy9KeClm.js} +1 -1
  24. package/dist/{outbound-adapter-fO_7hbTh.js → outbound-adapter-n_qRwyHZ.js} +17 -23
  25. package/dist/{pluralkit-B3MzPaPU.js → pluralkit-DaWTJTmF.js} +3 -3
  26. package/dist/{preflight-audio-ClWbnQto.js → preflight-audio-DecwnhEA.js} +2 -5
  27. package/dist/{probe-CxnDikWm.js → probe-Bkf8mJlj.js} +3 -2
  28. package/dist/{probe.runtime-DLFkSDVB.js → probe.runtime-3Rerer9g.js} +1 -1
  29. package/dist/{provider-BJaJ20MY.js → provider-BuTO6czP.js} +68 -60
  30. package/dist/{provider-session.runtime-D6xc-60s.js → provider-session.runtime-DmBTGaQX.js} +3 -3
  31. package/dist/provider.runtime-CqZpKOCE.js +2 -0
  32. package/dist/{resolve-allowlist-common-BDpBb8dF.js → resolve-allowlist-common-BDNoAQll.js} +1 -1
  33. package/dist/{resolve-channels-iJIjYfRw.js → resolve-channels-C_rAwrkj.js} +3 -3
  34. package/dist/{resolve-users-_fv1mm1f.js → resolve-users-Cz1tkemy.js} +3 -3
  35. package/dist/{runtime-ywXByivr.js → runtime-DaaaVvJm.js} +330 -303
  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-ChuqOjHq.js +6 -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/{send-Dc5uQX5H.js → send-B_yfprXu.js} +18 -9
  44. package/dist/{send.components-D4bl20xr.js → send.components-C2psXc7A.js} +4 -4
  45. package/dist/{send.outbound-5axvwLkl.js → send.outbound-BPcCF1v2.js} +5 -4
  46. package/dist/{send.receipt-B21MspvT.js → send.receipt-CK162xD0.js} +28 -1
  47. package/dist/{send.shared-9082A2sO.js → send.shared-CUTfqvXx.js} +4 -15
  48. package/dist/session-binding-contract-api.js +1 -1
  49. package/dist/setup-plugin-api.js +1 -1
  50. package/dist/{shared-D11J9bXI.js → shared-AnStShZr.js} +3 -10
  51. package/dist/{subagent-hooks-NTv6B4up.js → subagent-hooks-DkO-jpvh.js} +2 -2
  52. package/dist/subagent-hooks-api.js +2 -5
  53. package/dist/{system-events-BzaI1WpN.js → system-events-XRYuwB2n.js} +1 -1
  54. package/dist/{target-resolver-agnOrtOU.js → target-resolver-DYufMbXm.js} +2 -2
  55. package/dist/targets-BA7gf0K0.js +3 -0
  56. package/dist/{thread-bindings-DNitaHVh.js → thread-bindings-BuXtcLSp.js} +4 -4
  57. package/dist/{thread-bindings.discord-api-CjYNuvZa.js → thread-bindings.discord-api-CetgvIbE.js} +4 -4
  58. package/dist/{thread-bindings.manager-PZvJ4TJx.js → thread-bindings.manager-B7AHjU4s.js} +3 -3
  59. package/dist/{transcripts-source-Bi8N6h5X.js → transcripts-source-DW6d1eCL.js} +1 -1
  60. package/dist/transcripts-source-api.js +1 -1
  61. package/dist/{typing-BdRqXUN3.js → typing-BMQEI8OW.js} +1 -1
  62. package/npm-shrinkwrap.json +3 -3
  63. package/package.json +4 -4
  64. package/dist/provider.runtime-jNlHxUSW.js +0 -2
  65. package/dist/runtime-api.monitor-Bb5AaRzg.js +0 -6
  66. package/dist/targets-ClUPljCU.js +0 -3
@@ -1,2 +1,2 @@
1
- import { t as handleDiscordAction } from "./runtime-ywXByivr.js";
1
+ import { t as handleDiscordAction } from "./runtime-DaaaVvJm.js";
2
2
  export { handleDiscordAction };
@@ -1,5 +1,6 @@
1
1
  import { n as parseRetryAfterHeaderSeconds, t as parseDiscordRetryAfterBodySeconds } from "./retry-after-D5_VmM-_.js";
2
2
  import { resolveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
3
+ import { readResponseWithLimit } from "openclaw/plugin-sdk/response-limit-runtime";
3
4
  import { resolveFetch } from "openclaw/plugin-sdk/fetch-runtime";
4
5
  import { resolveRetryConfig, retryAsync } from "openclaw/plugin-sdk/retry-runtime";
5
6
  import { readResponseTextLimited } from "openclaw/plugin-sdk/provider-http";
@@ -28,6 +29,7 @@ const DISCORD_API_RETRY_DEFAULTS = {
28
29
  };
29
30
  const DISCORD_API_429_FALLBACK_RETRY_AFTER_SECONDS = 60;
30
31
  const DISCORD_API_ERROR_BODY_LIMIT_BYTES = 8 * 1024;
32
+ const DISCORD_API_RESPONSE_BODY_LIMIT_BYTES = 4 * 1024 * 1024;
31
33
  function parseDiscordApiErrorPayload(text) {
32
34
  const trimmed = text.trim();
33
35
  if (!trimmed.startsWith("{") || !trimmed.endsWith("}")) return null;
@@ -109,9 +111,14 @@ async function requestDiscord(path, token, options) {
109
111
  const retryAfter = res.status === 429 ? parseRetryAfterSeconds(text, res) ?? DISCORD_API_429_FALLBACK_RETRY_AFTER_SECONDS : void 0;
110
112
  throw new DiscordApiError(`Discord API ${path} failed (${res.status})${suffix}`, res.status, retryAfter);
111
113
  }
112
- const text = await res.text().catch(() => "");
114
+ const responseBody = await readResponseWithLimit(res, DISCORD_API_RESPONSE_BODY_LIMIT_BYTES, { onOverflow: ({ size, maxBytes }) => /* @__PURE__ */ new Error(`Discord API ${path} response body too large: ${size} bytes (limit: ${maxBytes} bytes)`) });
115
+ const text = new TextDecoder().decode(responseBody);
113
116
  if (!text.trim()) return;
114
- return JSON.parse(text);
117
+ try {
118
+ return JSON.parse(text);
119
+ } catch {
120
+ throw new DiscordApiError(`Discord API ${path} returned malformed JSON`, 0);
121
+ }
115
122
  }, {
116
123
  ...retryConfig,
117
124
  label: options?.label ?? path,
package/dist/api.js CHANGED
@@ -1,23 +1,23 @@
1
- import { Ht as parseDiscordTarget, Ut as resolveDiscordChannelId, a as normalizeDiscordMessagingTarget, i as looksLikeDiscordTargetId, o as normalizeDiscordOutboundTarget } from "./send.receipt-B21MspvT.js";
1
+ import { Ht as parseDiscordTarget, Ut as resolveDiscordChannelId, a as normalizeDiscordMessagingTarget, i as looksLikeDiscordTargetId, o as normalizeDiscordOutboundTarget } from "./send.receipt-CK162xD0.js";
2
2
  import { t as inspectDiscordAccount } from "./account-inspect-DDZtT5C8.js";
3
3
  import { a as mergeDiscordAccountConfig, f as resolveDiscordMaxLinesPerMessage, i as listEnabledDiscordAccounts, l as resolveDiscordAccountConfig, o as resolveDefaultDiscordAccountId, r as listDiscordAccountIds, s as resolveDiscordAccount, t as createDiscordActionGate } from "./accounts-P19jm1lf.js";
4
- import { _ as parseDiscordComponentCustomId, b as parseDiscordModalCustomIdForInteraction, c as buildDiscordComponentMessage, d as readDiscordComponentSpec, f as resolveDiscordComponentAttachmentName, g as buildDiscordModalCustomId, h as buildDiscordComponentCustomId, l as buildDiscordComponentMessageFlags, m as DISCORD_MODAL_CUSTOM_ID_KEY, n as formatDiscordComponentEventText, o as DiscordFormModal, p as DISCORD_COMPONENT_CUSTOM_ID_KEY, r as buildDiscordInteractiveComponents, s as createDiscordFormModal, u as DISCORD_COMPONENT_ATTACHMENT_PREFIX, v as parseDiscordComponentCustomIdForInteraction, y as parseDiscordModalCustomId } from "./components-Dm4c_ce6.js";
5
- import { n as fetchDiscord, r as requestDiscord, t as DiscordApiError } from "./api-4GFMoWu0.js";
6
- import { i as parseDiscordSendTarget, n as resolveDiscordTarget } from "./target-resolver-agnOrtOU.js";
7
- import "./targets-ClUPljCU.js";
8
- import { a as getDiscordExecApprovalApprovers, c as shouldSuppressLocalDiscordExecApprovalPrompt, o as isDiscordExecApprovalApprover, s as isDiscordExecApprovalClientEnabled } from "./conversation-identity-DZ0BD7xO.js";
9
- import { i as resolveDiscordGroupToolPolicy, n as collectDiscordStatusIssues, r as resolveDiscordGroupRequireMention, t as discordPlugin } from "./channel-YA7AbYP3.js";
4
+ import { _ as parseDiscordComponentCustomId, b as parseDiscordModalCustomIdForInteraction, c as buildDiscordComponentMessage, d as readDiscordComponentSpec, f as resolveDiscordComponentAttachmentName, g as buildDiscordModalCustomId, h as buildDiscordComponentCustomId, l as buildDiscordComponentMessageFlags, m as DISCORD_MODAL_CUSTOM_ID_KEY, n as formatDiscordComponentEventText, o as DiscordFormModal, p as DISCORD_COMPONENT_CUSTOM_ID_KEY, r as buildDiscordInteractiveComponents, s as createDiscordFormModal, u as DISCORD_COMPONENT_ATTACHMENT_PREFIX, v as parseDiscordComponentCustomIdForInteraction, y as parseDiscordModalCustomId } from "./components-CBPNJhVP.js";
5
+ import { n as fetchDiscord, r as requestDiscord, t as DiscordApiError } from "./api-CJvEMuA6.js";
6
+ import { i as parseDiscordSendTarget, n as resolveDiscordTarget } from "./target-resolver-DYufMbXm.js";
7
+ import "./targets-BA7gf0K0.js";
8
+ import { a as getDiscordExecApprovalApprovers, c as shouldSuppressLocalDiscordExecApprovalPrompt, o as isDiscordExecApprovalApprover, s as isDiscordExecApprovalClientEnabled } from "./conversation-identity-CnYbx3sO.js";
9
+ import { i as resolveDiscordGroupToolPolicy, n as collectDiscordStatusIssues, r as resolveDiscordGroupRequireMention, t as discordPlugin } from "./channel-CfngVOjW.js";
10
10
  import { i as DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, n as DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, o as mergeAbortSignals, r as DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, t as DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS } from "./timeouts-C5TBc_9x.js";
11
11
  import { t as normalizeExplicitDiscordSessionKey } from "./session-key-normalization-wJgsKPNF.js";
12
- import { t as discordSetupPlugin } from "./channel.setup-B1zDEAR7.js";
13
- import { n as handleDiscordSubagentEnded, r as handleDiscordSubagentSpawning, t as handleDiscordSubagentDeliveryTarget } from "./subagent-hooks-NTv6B4up.js";
14
- import { t as tryHandleDiscordMessageActionGuildAdmin } from "./handle-action.guild-admin-B2cOoU2D.js";
15
- import { n as listDiscordDirectoryGroupsFromConfig, r as listDiscordDirectoryPeersFromConfig } from "./directory-config-BK1OhHa3.js";
16
- import { t as fetchPluralKitMessageInfo } from "./pluralkit-B3MzPaPU.js";
17
- import { a as resolveDiscordPrivilegedIntentsFromFlags, i as probeDiscord, n as fetchDiscordApplicationSummary, r as parseApplicationIdFromToken, t as fetchDiscordApplicationId } from "./probe-CxnDikWm.js";
12
+ import { t as discordSetupPlugin } from "./channel.setup-BYZ78cmU.js";
13
+ import { n as handleDiscordSubagentEnded, r as handleDiscordSubagentSpawning, t as handleDiscordSubagentDeliveryTarget } from "./subagent-hooks-DkO-jpvh.js";
14
+ import { t as tryHandleDiscordMessageActionGuildAdmin } from "./handle-action.guild-admin-CHMDXefq.js";
15
+ import { n as listDiscordDirectoryGroupsFromConfig, r as listDiscordDirectoryPeersFromConfig } from "./directory-config-CouAqvDj.js";
16
+ import { t as fetchPluralKitMessageInfo } from "./pluralkit-DaWTJTmF.js";
17
+ import { a as resolveDiscordPrivilegedIntentsFromFlags, i as probeDiscord, n as fetchDiscordApplicationSummary, r as parseApplicationIdFromToken, t as fetchDiscordApplicationId } from "./probe-Bkf8mJlj.js";
18
18
  import { t as collectDiscordSecurityAuditFindings } from "./security-audit-Bh_65L5C.js";
19
19
  import { resolveOpenProviderRuntimeGroupPolicy as resolveDiscordRuntimeGroupPolicy } from "openclaw/plugin-sdk/runtime-group-policy";
20
20
  //#region extensions/discord/api.ts
21
- const handleDiscordMessageAction = async (...args) => (await import("./channel-actions.runtime-D2QTRgZ9.js")).handleDiscordMessageAction(...args);
21
+ const handleDiscordMessageAction = async (...args) => (await import("./channel-actions.runtime-BDW12z0o.js")).handleDiscordMessageAction(...args);
22
22
  //#endregion
23
23
  export { DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS, DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, DISCORD_COMPONENT_ATTACHMENT_PREFIX, DISCORD_COMPONENT_CUSTOM_ID_KEY, DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, DISCORD_MODAL_CUSTOM_ID_KEY, DiscordApiError, DiscordFormModal, buildDiscordComponentCustomId, buildDiscordComponentMessage, buildDiscordComponentMessageFlags, buildDiscordInteractiveComponents, buildDiscordModalCustomId, collectDiscordSecurityAuditFindings, collectDiscordStatusIssues, createDiscordActionGate, createDiscordFormModal, discordPlugin, discordSetupPlugin, fetchDiscord, fetchDiscordApplicationId, fetchDiscordApplicationSummary, fetchPluralKitMessageInfo, formatDiscordComponentEventText, getDiscordExecApprovalApprovers, handleDiscordMessageAction, handleDiscordSubagentDeliveryTarget, handleDiscordSubagentEnded, handleDiscordSubagentSpawning, inspectDiscordAccount, isDiscordExecApprovalApprover, isDiscordExecApprovalClientEnabled, listDiscordAccountIds, listDiscordDirectoryGroupsFromConfig, listDiscordDirectoryPeersFromConfig, listEnabledDiscordAccounts, looksLikeDiscordTargetId, mergeAbortSignals, mergeDiscordAccountConfig, normalizeDiscordMessagingTarget, normalizeDiscordOutboundTarget, normalizeExplicitDiscordSessionKey, parseApplicationIdFromToken, parseDiscordComponentCustomId, parseDiscordComponentCustomIdForInteraction as parseDiscordComponentCustomIdForCarbon, parseDiscordComponentCustomIdForInteraction, parseDiscordModalCustomId, parseDiscordModalCustomIdForInteraction as parseDiscordModalCustomIdForCarbon, parseDiscordModalCustomIdForInteraction, parseDiscordSendTarget, parseDiscordTarget, probeDiscord, readDiscordComponentSpec, requestDiscord, resolveDefaultDiscordAccountId, resolveDiscordAccount, resolveDiscordAccountConfig, resolveDiscordChannelId, resolveDiscordComponentAttachmentName, resolveDiscordGroupRequireMention, resolveDiscordGroupToolPolicy, resolveDiscordMaxLinesPerMessage, resolveDiscordPrivilegedIntentsFromFlags, resolveDiscordRuntimeGroupPolicy, resolveDiscordTarget, shouldSuppressLocalDiscordExecApprovalPrompt, tryHandleDiscordMessageActionGuildAdmin };
@@ -1,7 +1,7 @@
1
- import { B as Container, J as Separator, K as Row, R as Button, Wt as __exportAll, X as TextDisplay, ft as editChannelMessage, j as serializePayload, nt as createUserDmChannel, st as createChannelMessage, ut as deleteChannelMessage } from "./send.receipt-B21MspvT.js";
1
+ import { B as Container, J as Separator, K as Row, R as Button, Wt as __exportAll, X as TextDisplay, ft as editChannelMessage, j as serializePayload, nt as createUserDmChannel, st as createChannelMessage, ut as deleteChannelMessage } from "./send.receipt-CK162xD0.js";
2
2
  import { t as inspectDiscordAccount } from "./account-inspect-DDZtT5C8.js";
3
- import { F as createDiscordClient, b as stripUndefinedFields } from "./send.shared-9082A2sO.js";
4
- import { i as shouldHandleDiscordApprovalRequest, s as isDiscordExecApprovalClientEnabled } from "./conversation-identity-DZ0BD7xO.js";
3
+ import { F as createDiscordClient, b as stripUndefinedFields } from "./send.shared-CUTfqvXx.js";
4
+ import { i as shouldHandleDiscordApprovalRequest, s as isDiscordExecApprovalClientEnabled } from "./conversation-identity-CnYbx3sO.js";
5
5
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { ButtonStyle } from "discord-api-types/v10";
7
7
  import { logDebug, logError } from "openclaw/plugin-sdk/logging-core";
@@ -1,7 +1,7 @@
1
- import { Wt as __exportAll } from "./send.receipt-B21MspvT.js";
1
+ import { Wt as __exportAll } from "./send.receipt-CK162xD0.js";
2
2
  import { t as inspectDiscordAccount } from "./account-inspect-DDZtT5C8.js";
3
- import { O as fetchChannelPermissionsDiscord } from "./send.shared-9082A2sO.js";
4
- import "./send-Dc5uQX5H.js";
3
+ import { O as fetchChannelPermissionsDiscord } from "./send.shared-CUTfqvXx.js";
4
+ import "./send-B_yfprXu.js";
5
5
  import { n as collectDiscordAuditChannelIdsForAccount, t as auditDiscordChannelPermissionsWithFetcher } from "./audit-core-xwjIczO0.js";
6
6
  //#region extensions/discord/src/audit.ts
7
7
  var audit_exports = /* @__PURE__ */ __exportAll({
@@ -1,16 +1,17 @@
1
- import { Ht as parseDiscordTarget, a as normalizeDiscordMessagingTarget, i as looksLikeDiscordTargetId } from "./send.receipt-B21MspvT.js";
1
+ import { Ht as parseDiscordTarget, a as normalizeDiscordMessagingTarget, i as looksLikeDiscordTargetId } from "./send.receipt-CK162xD0.js";
2
2
  import { c as resolveDiscordAccountAllowFrom, r as listDiscordAccountIds, s as resolveDiscordAccount } from "./accounts-P19jm1lf.js";
3
3
  import { a as projectCredentialSnapshotFields, n as PAIRING_APPROVED_MESSAGE, o as resolveConfiguredFromCredentialStatuses, r as buildTokenChannelStatusSummary, t as DEFAULT_ACCOUNT_ID } from "./channel-api-CAJ0wMoV.js";
4
- import { x as resolveDiscordOutboundSessionRoute } from "./components-Dm4c_ce6.js";
4
+ import { x as resolveDiscordOutboundSessionRoute } from "./components-CBPNJhVP.js";
5
5
  import { t as getDiscordRuntime } from "./runtime-DgnVQ7zW.js";
6
- import { c as shouldSuppressLocalDiscordExecApprovalPrompt, n as resolveDiscordCurrentConversationIdentity, r as getDiscordApprovalCapability } from "./conversation-identity-DZ0BD7xO.js";
6
+ import { c as shouldSuppressLocalDiscordExecApprovalPrompt, n as resolveDiscordCurrentConversationIdentity, r as getDiscordApprovalCapability } from "./conversation-identity-CnYbx3sO.js";
7
7
  import { r as resolveRequiredDiscordChannelPermissions } from "./audit-core-xwjIczO0.js";
8
- import { t as discordMessageActions$1 } from "./channel-actions-BJ3n5Z1l.js";
8
+ import { t as discordMessageActions$1 } from "./channel-actions-DJ_i4v9b.js";
9
9
  import { n as setThreadBindingMaxAgeBySessionKey, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-Chs3HgGa.js";
10
10
  import { d as withAbortTimeout } from "./timeouts-C5TBc_9x.js";
11
- import { n as discordOutbound } from "./outbound-adapter-fO_7hbTh.js";
12
- import { a as discordSecurityAdapter, i as discordSetupAdapter, n as discordConfigAdapter, t as createDiscordPluginBase } from "./shared-D11J9bXI.js";
11
+ import { n as discordOutbound } from "./outbound-adapter-n_qRwyHZ.js";
12
+ import { a as discordSecurityAdapter, i as discordSetupAdapter, n as discordConfigAdapter, t as createDiscordPluginBase } from "./shared-AnStShZr.js";
13
13
  import { t as normalizeExplicitDiscordSessionKey } from "./session-key-normalization-wJgsKPNF.js";
14
+ import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
14
15
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/string-coerce-runtime";
15
16
  import { createChatChannelPlugin } from "openclaw/plugin-sdk/channel-core";
16
17
  import { sleepWithAbort } from "openclaw/plugin-sdk/runtime-env";
@@ -21,7 +22,6 @@ import { createPairingPrefixStripper } from "openclaw/plugin-sdk/channel-pairing
21
22
  import { createChannelDirectoryAdapter, createRuntimeDirectoryLiveAdapter } from "openclaw/plugin-sdk/directory-runtime";
22
23
  import { appendMatchMetadata, asString, createComputedAccountStatusAdapter, createDefaultChannelRuntimeState, isRecord as isRecord$1, resolveEnabledConfiguredAccountId } from "openclaw/plugin-sdk/status-helpers";
23
24
  import { resolveTargetsWithOptionalToken } from "openclaw/plugin-sdk/target-resolver-runtime";
24
- import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
25
25
  import { resolveToolsBySender } from "openclaw/plugin-sdk/channel-policy";
26
26
  import { normalizeAtHashSlug } from "openclaw/plugin-sdk/string-normalization-runtime";
27
27
  //#region extensions/discord/src/channel.conversation.ts
@@ -121,36 +121,16 @@ function resolveDiscordInboundConversation(params) {
121
121
  }
122
122
  //#endregion
123
123
  //#region extensions/discord/src/channel.loaders.ts
124
- let discordProviderRuntimePromise;
125
- let discordProbeRuntimePromise;
126
- let discordAuditModulePromise;
127
- let discordSendModulePromise;
128
- let discordDirectoryLiveModulePromise;
129
- const loadDiscordDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-BK1OhHa3.js").then((n) => n.t));
130
- const loadDiscordResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-iJIjYfRw.js").then((n) => n.n));
131
- const loadDiscordResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-_fv1mm1f.js").then((n) => n.n));
132
- const loadDiscordThreadBindingsManagerModule = createLazyRuntimeModule(() => import("./thread-bindings.manager-PZvJ4TJx.js").then((n) => n.a));
133
- const loadDiscordTargetResolverModule = createLazyRuntimeModule(() => import("./target-resolver-agnOrtOU.js").then((n) => n.r));
134
- async function loadDiscordProviderRuntime() {
135
- discordProviderRuntimePromise ??= import("./provider.runtime-jNlHxUSW.js");
136
- return await discordProviderRuntimePromise;
137
- }
138
- async function loadDiscordProbeRuntime() {
139
- discordProbeRuntimePromise ??= import("./probe.runtime-DLFkSDVB.js");
140
- return await discordProbeRuntimePromise;
141
- }
142
- async function loadDiscordAuditModule() {
143
- discordAuditModulePromise ??= import("./audit-CAnmyf2A.js").then((n) => n.n);
144
- return await discordAuditModulePromise;
145
- }
146
- async function loadDiscordSendModule() {
147
- discordSendModulePromise ??= import("./send-Dc5uQX5H.js").then((n) => n.t);
148
- return await discordSendModulePromise;
149
- }
150
- async function loadDiscordDirectoryLiveModule() {
151
- discordDirectoryLiveModulePromise ??= import("./directory-live-DP3CmwGf.js").then((n) => n.t);
152
- return await discordDirectoryLiveModulePromise;
153
- }
124
+ const loadDiscordDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-CouAqvDj.js").then((n) => n.t));
125
+ const loadDiscordResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-C_rAwrkj.js").then((n) => n.n));
126
+ const loadDiscordResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-Cz1tkemy.js").then((n) => n.n));
127
+ const loadDiscordThreadBindingsManagerModule = createLazyRuntimeModule(() => import("./thread-bindings.manager-B7AHjU4s.js").then((n) => n.a));
128
+ const loadDiscordTargetResolverModule = createLazyRuntimeModule(() => import("./target-resolver-DYufMbXm.js").then((n) => n.r));
129
+ const loadDiscordProviderRuntime = createLazyRuntimeModule(() => import("./provider.runtime-CqZpKOCE.js"));
130
+ const loadDiscordProbeRuntime = createLazyRuntimeModule(() => import("./probe.runtime-3Rerer9g.js"));
131
+ const loadDiscordAuditModule = createLazyRuntimeModule(() => import("./audit-BCVhE9Oe.js").then((n) => n.n));
132
+ const loadDiscordSendModule = createLazyRuntimeModule(() => import("./send-B_yfprXu.js").then((n) => n.t));
133
+ const loadDiscordDirectoryLiveModule = createLazyRuntimeModule(() => import("./directory-live-C8lwwDJo.js").then((n) => n.t));
154
134
  //#endregion
155
135
  //#region extensions/discord/src/group-policy.ts
156
136
  function normalizeDiscordSlug(value) {
@@ -1,7 +1,8 @@
1
1
  import { t as inspectDiscordAccount } from "./account-inspect-DDZtT5C8.js";
2
2
  import { r as listDiscordAccountIds, t as createDiscordActionGate } from "./accounts-P19jm1lf.js";
3
- import { d as readDiscordComponentSpec } from "./components-Dm4c_ce6.js";
3
+ import { d as readDiscordComponentSpec } from "./components-CBPNJhVP.js";
4
4
  import { i as withDiscordInboundEventDeliveryMetadata } from "./inbound-event-delivery-CEPlt2uz.js";
5
+ import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
5
6
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
7
  import { createUnionActionGate } from "openclaw/plugin-sdk/channel-actions";
7
8
  import { extractToolSend } from "openclaw/plugin-sdk/tool-send";
@@ -40,11 +41,7 @@ const localExecutionActions = new Set([
40
41
  function resolveDiscordActionExecutionMode({ action }) {
41
42
  return localExecutionActions.has(action) ? "local" : "gateway";
42
43
  }
43
- let discordChannelActionsRuntimePromise;
44
- async function loadDiscordChannelActionsRuntime() {
45
- discordChannelActionsRuntimePromise ??= import("./channel-actions.runtime-D2QTRgZ9.js");
46
- return await discordChannelActionsRuntimePromise;
47
- }
44
+ const loadDiscordChannelActionsRuntime = createLazyRuntimeModule(() => import("./channel-actions.runtime-BDW12z0o.js"));
48
45
  function listDiscoverableDiscordAccounts(cfg) {
49
46
  return listDiscordAccountIds(cfg).map((accountId) => inspectDiscordAccount({
50
47
  cfg,
@@ -1,10 +1,10 @@
1
- import { Ut as resolveDiscordChannelId } from "./send.receipt-B21MspvT.js";
2
- import { i as buildDiscordPresentationComponents, r as buildDiscordInteractiveComponents } from "./components-Dm4c_ce6.js";
3
- import { t as handleDiscordAction } from "./runtime-ywXByivr.js";
4
- import "./targets-ClUPljCU.js";
1
+ import { Ut as resolveDiscordChannelId } from "./send.receipt-CK162xD0.js";
2
+ import { i as buildDiscordPresentationComponents, r as buildDiscordInteractiveComponents } from "./components-CBPNJhVP.js";
3
+ import "./targets-BA7gf0K0.js";
4
+ import { t as handleDiscordAction } from "./runtime-DaaaVvJm.js";
5
5
  import "./action-runtime-api.js";
6
6
  import { r as notifyDiscordInboundEventOutboundSuccess } from "./inbound-event-delivery-CEPlt2uz.js";
7
- import { t as tryHandleDiscordMessageActionGuildAdmin } from "./handle-action.guild-admin-B2cOoU2D.js";
7
+ import { t as tryHandleDiscordMessageActionGuildAdmin } from "./handle-action.guild-admin-CHMDXefq.js";
8
8
  import { normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/string-coerce-runtime";
9
9
  import { resolveReactionMessageId } from "openclaw/plugin-sdk/channel-actions";
10
10
  import { readBooleanParam } from "openclaw/plugin-sdk/boolean-param";
@@ -1,2 +1,2 @@
1
- import { t as discordPlugin } from "./channel-YA7AbYP3.js";
1
+ import { t as discordPlugin } from "./channel-CfngVOjW.js";
2
2
  export { discordPlugin };
@@ -1,8 +1,8 @@
1
1
  import { n as inspectDiscordConfiguredToken } from "./account-inspect-DDZtT5C8.js";
2
2
  import { a as mergeDiscordAccountConfig, c as resolveDiscordAccountAllowFrom, l as resolveDiscordAccountConfig, m as resolveDiscordToken, o as resolveDefaultDiscordAccountId } from "./accounts-P19jm1lf.js";
3
- import { i as discordSetupAdapter, t as createDiscordPluginBase } from "./shared-D11J9bXI.js";
4
- import { t as resolveDiscordChannelAllowlist } from "./resolve-channels-iJIjYfRw.js";
5
- import { t as resolveDiscordUserAllowlist } from "./resolve-users-_fv1mm1f.js";
3
+ import { i as discordSetupAdapter, t as createDiscordPluginBase } from "./shared-AnStShZr.js";
4
+ import { t as resolveDiscordChannelAllowlist } from "./resolve-channels-C_rAwrkj.js";
5
+ import { t as resolveDiscordUserAllowlist } from "./resolve-users-Cz1tkemy.js";
6
6
  import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-id";
7
7
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
8
8
  import { createAccountScopedAllowFromSection, createAccountScopedGroupAccessSection, createLegacyCompatChannelDmPolicy, createSetupTranslator, createStandardChannelSetupStatus, parseMentionOrPrefixedId, patchChannelConfigForAccount, promptLegacyChannelAllowFromForAccount, resolveEntriesWithOptionalToken, setSetupChannelEnabled } from "openclaw/plugin-sdk/setup-runtime";
@@ -1,4 +1,4 @@
1
- import { B as Container, F as Modal, G as RoleSelectMenu, H as LinkButton, Ht as parseDiscordTarget, I as RadioGroup, J as Separator, K as Row, L as TextInput, N as CheckboxGroup, P as Label, Q as UserSelectMenu, R as Button, U as MediaGallery, V as File, W as MentionableSelectMenu, Wt as __exportAll, X as TextDisplay, Y as StringSelectMenu, Z as Thumbnail, et as parseCustomId, q as Section, z as ChannelSelectMenu } from "./send.receipt-B21MspvT.js";
1
+ import { B as Container, F as Modal, G as RoleSelectMenu, H as LinkButton, Ht as parseDiscordTarget, I as RadioGroup, J as Separator, K as Row, L as TextInput, N as CheckboxGroup, P as Label, Q as UserSelectMenu, R as Button, U as MediaGallery, V as File, W as MentionableSelectMenu, Wt as __exportAll, X as TextDisplay, Y as StringSelectMenu, Z as Thumbnail, et as parseCustomId, q as Section, z as ChannelSelectMenu } from "./send.receipt-CK162xD0.js";
2
2
  import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  import { buildOutboundBaseSessionKey } from "openclaw/plugin-sdk/routing";
4
4
  import { buildThreadAwareOutboundSessionRoute } from "openclaw/plugin-sdk/channel-core";
@@ -1,4 +1,4 @@
1
- import { Ht as parseDiscordTarget } from "./send.receipt-B21MspvT.js";
1
+ import { Ht as parseDiscordTarget } from "./send.receipt-CK162xD0.js";
2
2
  import { r as listDiscordAccountIds, s as resolveDiscordAccount } from "./accounts-P19jm1lf.js";
3
3
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  import { createLazyChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-sdk/approval-handler-adapter-runtime";
@@ -231,7 +231,7 @@ function createDiscordApprovalCapability(configOverride) {
231
231
  request,
232
232
  configOverride
233
233
  }),
234
- load: async () => (await import("./approval-handler.runtime-SsFtZQA6.js").then((n) => n.t)).discordApprovalNativeRuntime
234
+ load: async () => (await import("./approval-handler.runtime-Cg7CuLSc.js").then((n) => n.t)).discordApprovalNativeRuntime
235
235
  })
236
236
  });
237
237
  }
@@ -1,4 +1,4 @@
1
- import { Wt as __exportAll } from "./send.receipt-B21MspvT.js";
1
+ import { Wt as __exportAll } from "./send.receipt-CK162xD0.js";
2
2
  import { a as mergeDiscordAccountConfig, c as resolveDiscordAccountAllowFrom, o as resolveDefaultDiscordAccountId } from "./accounts-P19jm1lf.js";
3
3
  import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
4
4
  import { createResolvedDirectoryEntriesLister } from "openclaw/plugin-sdk/directory-config-runtime";
@@ -1,4 +1,4 @@
1
- import { n as listDiscordDirectoryGroupsFromConfig, r as listDiscordDirectoryPeersFromConfig } from "./directory-config-BK1OhHa3.js";
1
+ import { n as listDiscordDirectoryGroupsFromConfig, r as listDiscordDirectoryPeersFromConfig } from "./directory-config-CouAqvDj.js";
2
2
  //#region extensions/discord/directory-contract-api.ts
3
3
  const discordDirectoryContractPlugin = {
4
4
  id: "discord",
@@ -1,6 +1,6 @@
1
- import { Wt as __exportAll } from "./send.receipt-B21MspvT.js";
1
+ import { Wt as __exportAll } from "./send.receipt-CK162xD0.js";
2
2
  import { p as normalizeDiscordToken, s as resolveDiscordAccount } from "./accounts-P19jm1lf.js";
3
- import { n as fetchDiscord } from "./api-4GFMoWu0.js";
3
+ import { n as fetchDiscord } from "./api-CJvEMuA6.js";
4
4
  import { a as normalizeDiscordSlug } from "./allow-list-C-MqM-B_.js";
5
5
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/routing";
@@ -1,6 +1,6 @@
1
1
  import { t as inspectDiscordAccount } from "./account-inspect-DDZtT5C8.js";
2
2
  import { o as resolveDefaultDiscordAccountId } from "./accounts-P19jm1lf.js";
3
- import { r as DISCORD_LEGACY_CONFIG_RULES } from "./shared-D11J9bXI.js";
3
+ import { r as DISCORD_LEGACY_CONFIG_RULES } from "./shared-AnStShZr.js";
4
4
  import { n as normalizeCompatibilityConfig } from "./doctor-contract-CU7lnZTF.js";
5
5
  import { t as isDiscordMutableAllowEntry } from "./security-doctor-uUo8hTD5.js";
6
6
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -1,6 +1,6 @@
1
- import { a as readDiscordChannelCreateParams, n as isDiscordModerationAction, o as readDiscordChannelEditParams, r as readDiscordModerationCommand, s as readDiscordChannelMoveParams, t as handleDiscordAction } from "./runtime-ywXByivr.js";
1
+ import { a as readDiscordChannelCreateParams, n as isDiscordModerationAction, o as readDiscordChannelEditParams, r as readDiscordModerationCommand, s as readDiscordChannelMoveParams, t as handleDiscordAction } from "./runtime-DaaaVvJm.js";
2
2
  import "./action-runtime-api.js";
3
- import { n as isTrustedRequesterGuildAdminAction } from "./channel-actions-BJ3n5Z1l.js";
3
+ import { n as isTrustedRequesterGuildAdminAction } from "./channel-actions-DJ_i4v9b.js";
4
4
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { readNonNegativeIntegerParam, readPositiveIntegerParam, readStringArrayParam, readStringParam } from "openclaw/plugin-sdk/agent-runtime";
6
6
  //#region extensions/discord/src/actions/handle-action.guild-admin.ts
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { registerDiscordSubagentHooks } from "./subagent-hooks-api.js";
2
- import { t as discordVoiceTranscriptsSourceProvider } from "./transcripts-source-Bi8N6h5X.js";
2
+ import { t as discordVoiceTranscriptsSourceProvider } from "./transcripts-source-DW6d1eCL.js";
3
3
  import "./transcripts-source-api.js";
4
4
  import { defineBundledChannelEntry } from "openclaw/plugin-sdk/channel-entry-contract";
5
5
  //#region extensions/discord/index.ts
@@ -1,9 +1,9 @@
1
- import { Ht as parseDiscordTarget, _ as VoiceStateUpdateListener, c as discord_exports, h as ResumedListener, jt as getGuildVoiceState, m as ReadyListener } from "./send.receipt-B21MspvT.js";
1
+ import { Ht as parseDiscordTarget, _ as VoiceStateUpdateListener, c as discord_exports, h as ResumedListener, jt as getGuildVoiceState, m as ReadyListener } from "./send.receipt-CK162xD0.js";
2
2
  import { c as resolveDiscordAccountAllowFrom } from "./accounts-P19jm1lf.js";
3
3
  import { a as normalizeDiscordSlug, b as formatDiscordUserTag, m as resolveDiscordOwnerAccess } from "./allow-list-C-MqM-B_.js";
4
- import { o as formatMention } from "./send.outbound-5axvwLkl.js";
4
+ import { o as formatMention } from "./send.outbound-BPcCF1v2.js";
5
5
  import { t as getDiscordRuntime } from "./runtime-DgnVQ7zW.js";
6
- import { d as resolveDiscordVoiceEnabled, p as buildDiscordGroupSystemPrompt, s as authorizeDiscordVoiceIngress } from "./provider-BJaJ20MY.js";
6
+ import { d as resolveDiscordVoiceEnabled, p as buildDiscordGroupSystemPrompt, s as authorizeDiscordVoiceIngress } from "./provider-BuTO6czP.js";
7
7
  import { createRequire } from "node:module";
8
8
  import { asBoolean, normalizeOptionalString, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
9
9
  import { resolveAgentRoute } from "openclaw/plugin-sdk/routing";
@@ -12,12 +12,12 @@ import path from "node:path";
12
12
  import { resolveFfmpegBin } from "openclaw/plugin-sdk/media-runtime";
13
13
  import { createSubsystemLogger, logVerbose, shouldLogVerbose } from "openclaw/plugin-sdk/runtime-env";
14
14
  import { stripInlineDirectiveTagsForDisplay } from "openclaw/plugin-sdk/text-chunking";
15
+ import { escapeRegExp } from "openclaw/plugin-sdk/text-utility-runtime";
15
16
  import fs from "node:fs/promises";
16
17
  import { resolvePreferredOpenClawTmpDir, tempWorkspace } from "openclaw/plugin-sdk/temp-path";
17
18
  import { formatErrorMessage } from "openclaw/plugin-sdk/ssrf-runtime";
18
19
  import { REALTIME_VOICE_AGENT_CONSULT_TOOL_NAME, REALTIME_VOICE_AGENT_CONTROL_TOOL, REALTIME_VOICE_AGENT_CONTROL_TOOL_NAME, REALTIME_VOICE_AUDIO_FORMAT_PCM16_24KHZ, buildRealtimeVoiceAgentConsultChatMessage, buildRealtimeVoiceAgentConsultPolicyInstructions, classifySkippableRealtimeVoiceConsultTranscript, controlRealtimeVoiceAgentRun, createRealtimeVoiceAgentTalkbackQueue, createRealtimeVoiceBridgeSession, createRealtimeVoiceForcedConsultCoordinator, createRealtimeVoiceOutputActivityTracker, createRealtimeVoiceTurnContextTracker, matchRealtimeVoiceActivationName, matchRealtimeVoiceConsultQuestions, normalizeSupportedRealtimeVoiceActivationName, parseRealtimeVoiceAgentControlToolArgs, resamplePcm, resolveConfiguredRealtimeVoiceProvider, resolveRealtimeVoiceAgentConsultToolPolicy, resolveRealtimeVoiceAgentConsultTools, resolveRealtimeVoiceAgentConsultToolsAllow, shouldAutoControlRealtimeVoiceAgentText, sortRealtimeVoiceActivationNames } from "openclaw/plugin-sdk/realtime-voice";
19
20
  import { agentCommandFromIngress, getTtsProvider, resolveAgentDir, resolveTtsConfig, resolveTtsPrefsPath } from "openclaw/plugin-sdk/agent-runtime";
20
- import { escapeRegExp } from "openclaw/plugin-sdk/text-utility-runtime";
21
21
  import { spawn } from "node:child_process";
22
22
  import { PassThrough, Readable, Transform, pipeline } from "node:stream";
23
23
  import { Application, OpusError, createDecoder, createEncoder } from "libopus-wasm";
@@ -1,8 +1,10 @@
1
- import { I as createDiscordRestClient } from "./send.shared-9082A2sO.js";
1
+ import { I as createDiscordRestClient } from "./send.shared-CUTfqvXx.js";
2
2
  import { o as mergeAbortSignals } from "./timeouts-C5TBc_9x.js";
3
- import { d as resolveDiscordChannelNameSafe, l as resolveDiscordChannelIdSafe, p as resolveDiscordChannelParentSafe, u as resolveDiscordChannelInfoSafe } from "./thread-bindings.discord-api-CjYNuvZa.js";
4
- import { c as hasDiscordMessageStickers, d as resolveDiscordMessageChannelId, r as resolveDiscordMessageText } from "./message-utils-O1vK3kPu.js";
5
- import { t as sendTyping } from "./typing-BdRqXUN3.js";
3
+ import { d as resolveDiscordChannelNameSafe, l as resolveDiscordChannelIdSafe, p as resolveDiscordChannelParentSafe, u as resolveDiscordChannelInfoSafe } from "./thread-bindings.discord-api-CetgvIbE.js";
4
+ import { c as hasDiscordMessageStickers, d as resolveDiscordMessageChannelId, r as resolveDiscordMessageText } from "./message-utils-Dy9KeClm.js";
5
+ import { t as sendTyping } from "./typing-BMQEI8OW.js";
6
+ import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
7
+ import { finiteSecondsToTimerSafeMilliseconds } from "openclaw/plugin-sdk/number-runtime";
6
8
  import { danger, logVerbose } from "openclaw/plugin-sdk/runtime-env";
7
9
  import { createChannelRunQueue, createTypingCallbacks, resolveChannelMessageSourceReplyDeliveryMode } from "openclaw/plugin-sdk/channel-outbound";
8
10
  import { resolveOpenProviderRuntimeGroupPolicy } from "openclaw/plugin-sdk/runtime-group-policy";
@@ -176,11 +178,7 @@ function resolveDiscordAcceptedTypingPrestart(ctx) {
176
178
  }
177
179
  //#endregion
178
180
  //#region extensions/discord/src/monitor/message-run-queue.ts
179
- let messageProcessRuntimePromise;
180
- async function loadMessageProcessRuntime() {
181
- messageProcessRuntimePromise ??= import("./message-handler.process-PhKAmrEd.js");
182
- return await messageProcessRuntimePromise;
183
- }
181
+ const loadMessageProcessRuntime = createLazyRuntimeModule(() => import("./message-handler.process-CW5mMw4o.js"));
184
182
  async function processDiscordQueuedMessage(params) {
185
183
  const processDiscordMessageImpl = params.testing?.processDiscordMessage ?? (await loadMessageProcessRuntime()).processDiscordMessage;
186
184
  const abortSignal = mergeAbortSignals([params.job.runtime.abortSignal, params.lifecycleSignal]);
@@ -283,6 +281,7 @@ function createDiscordReplyTypingFeedback(params) {
283
281
  error: err
284
282
  });
285
283
  },
284
+ keepaliveIntervalMs: params.keepaliveIntervalMs,
286
285
  maxDurationMs: params.maxDurationMs ?? 12e5
287
286
  });
288
287
  const updateChannelId = (nextChannelId) => {
@@ -305,11 +304,7 @@ function createDiscordReplyTypingFeedback(params) {
305
304
  }
306
305
  //#endregion
307
306
  //#region extensions/discord/src/monitor/message-handler.ts
308
- let messagePreflightRuntimePromise;
309
- async function loadMessagePreflightRuntime() {
310
- messagePreflightRuntimePromise ??= import("./message-handler.preflight--eAiaewz.js");
311
- return await messagePreflightRuntimePromise;
312
- }
307
+ const loadMessagePreflightRuntime = createLazyRuntimeModule(() => import("./message-handler.preflight-B93Az6zg.js"));
313
308
  function isNonEmptyString(value) {
314
309
  return typeof value === "string" && value.length > 0;
315
310
  }
@@ -323,7 +318,8 @@ function startAcceptedTypingFeedback(params) {
323
318
  token: ctx.token,
324
319
  accountId: ctx.accountId,
325
320
  channelId: ctx.messageChannelId,
326
- log: logVerbose
321
+ log: logVerbose,
322
+ keepaliveIntervalMs: finiteSecondsToTimerSafeMilliseconds(ctx.cfg.agents?.defaults?.typingIntervalSeconds ?? ctx.cfg.session?.typingIntervalSeconds)
327
323
  });
328
324
  const cleanup = replyTypingFeedback.onCleanup;
329
325
  replyTypingFeedback.onCleanup = () => {
@@ -1,13 +1,14 @@
1
- import { c as discord_exports, k as Message, mt as getChannelMessage } from "./send.receipt-B21MspvT.js";
1
+ import { c as discord_exports, k as Message, mt as getChannelMessage } from "./send.receipt-CK162xD0.js";
2
2
  import { o as resolveDefaultDiscordAccountId } from "./accounts-P19jm1lf.js";
3
3
  import { S as resolveTimestampMs, _ as resolveGroupDmAllow, a as normalizeDiscordSlug, b as formatDiscordUserTag, c as resolveDiscordChannelConfigWithFallback, d as resolveDiscordGuildEntry, f as resolveDiscordMemberAccessState, g as resolveDiscordShouldRequireMention, i as normalizeDiscordDisplaySlug, n as isDiscordGroupAllowedByPolicy, x as resolveDiscordSystemLocation } from "./allow-list-C-MqM-B_.js";
4
- import { t as resolveDiscordConversationIdentity } from "./conversation-identity-DZ0BD7xO.js";
4
+ import { t as resolveDiscordConversationIdentity } from "./conversation-identity-CnYbx3sO.js";
5
5
  import { d as isRecentlyUnboundThreadWebhookMessage } from "./thread-bindings.state-iSWjCYjB.js";
6
- import { d as resolveDiscordChannelNameSafe, u as resolveDiscordChannelInfoSafe } from "./thread-bindings.discord-api-CjYNuvZa.js";
7
- import "./thread-bindings-DNitaHVh.js";
8
- import { D as resolveDiscordDmCommandAccess, O as resolveDiscordTextCommandAccess, _ as resolveDiscordConversationRoute, b as handleDiscordDmCommandDecision, g as buildDiscordRoutePeer, v as resolveDiscordEffectiveRoute, y as shouldIgnoreStaleDiscordRouteBinding } from "./provider-BJaJ20MY.js";
9
- import { d as resolveDiscordMessageChannelId, l as resolveDiscordMessageStickers, o as resolveMediaList, r as resolveDiscordMessageText, u as resolveDiscordChannelInfo } from "./message-utils-O1vK3kPu.js";
6
+ import { d as resolveDiscordChannelNameSafe, u as resolveDiscordChannelInfoSafe } from "./thread-bindings.discord-api-CetgvIbE.js";
7
+ import "./thread-bindings-BuXtcLSp.js";
8
+ import { D as resolveDiscordDmCommandAccess, O as resolveDiscordTextCommandAccess, _ as resolveDiscordConversationRoute, b as handleDiscordDmCommandDecision, g as buildDiscordRoutePeer, v as resolveDiscordEffectiveRoute, y as shouldIgnoreStaleDiscordRouteBinding } from "./provider-BuTO6czP.js";
9
+ import { d as resolveDiscordMessageChannelId, l as resolveDiscordMessageStickers, o as resolveMediaList, r as resolveDiscordMessageText, u as resolveDiscordChannelInfo } from "./message-utils-Dy9KeClm.js";
10
10
  import { n as resolveDiscordWebhookId, t as resolveDiscordSenderIdentity } from "./sender-identity-CEsfDF0L.js";
11
+ import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
11
12
  import { normalizeOptionalString, readStringValue } from "openclaw/plugin-sdk/string-coerce-runtime";
12
13
  import { MessageReferenceType, MessageType } from "discord-api-types/v10";
13
14
  import { getChildLogger, logVerbose, shouldLogVerbose } from "openclaw/plugin-sdk/runtime-env";
@@ -22,16 +23,8 @@ import { hasControlCommand } from "openclaw/plugin-sdk/command-detection";
22
23
  import { isAbortRequestText } from "openclaw/plugin-sdk/command-primitives-runtime";
23
24
  import { shouldHandleTextCommands } from "openclaw/plugin-sdk/command-surface";
24
25
  //#region extensions/discord/src/monitor/message-handler.dm-preflight.ts
25
- let conversationRuntimePromise$1;
26
- let discordSendRuntimePromise;
27
- async function loadConversationRuntime$1() {
28
- conversationRuntimePromise$1 ??= import("openclaw/plugin-sdk/conversation-binding-runtime");
29
- return await conversationRuntimePromise$1;
30
- }
31
- async function loadDiscordSendRuntime() {
32
- discordSendRuntimePromise ??= import("./send-Dc5uQX5H.js").then((n) => n.t);
33
- return await discordSendRuntimePromise;
34
- }
26
+ const loadConversationRuntime$1 = createLazyRuntimeModule(() => import("openclaw/plugin-sdk/conversation-binding-runtime"));
27
+ const loadDiscordSendRuntime = createLazyRuntimeModule(() => import("./send-B_yfprXu.js").then((n) => n.t));
35
28
  function resolveDiscordDmPairingSenderId(sender) {
36
29
  return sender.isPluralKit ? `pk:${sender.id}` : sender.id;
37
30
  }
@@ -430,26 +423,10 @@ function logDiscordPreflightInboundSummary(params) {
430
423
  }
431
424
  //#endregion
432
425
  //#region extensions/discord/src/monitor/message-handler.preflight-runtime.ts
433
- let pluralkitRuntimePromise;
434
- let preflightAudioRuntimePromise;
435
- let systemEventsRuntimePromise;
436
- let discordThreadingRuntimePromise;
437
- async function loadPluralKitRuntime() {
438
- pluralkitRuntimePromise ??= import("./pluralkit-B3MzPaPU.js").then((n) => n.n);
439
- return await pluralkitRuntimePromise;
440
- }
441
- async function loadPreflightAudioRuntime() {
442
- preflightAudioRuntimePromise ??= import("./preflight-audio-ClWbnQto.js");
443
- return await preflightAudioRuntimePromise;
444
- }
445
- async function loadSystemEventsRuntime() {
446
- systemEventsRuntimePromise ??= import("./system-events-BzaI1WpN.js");
447
- return await systemEventsRuntimePromise;
448
- }
449
- async function loadDiscordThreadingRuntime() {
450
- discordThreadingRuntimePromise ??= import("./provider-BJaJ20MY.js").then((n) => n.S);
451
- return await discordThreadingRuntimePromise;
452
- }
426
+ const loadPluralKitRuntime = createLazyRuntimeModule(() => import("./pluralkit-DaWTJTmF.js").then((n) => n.n));
427
+ const loadPreflightAudioRuntime = createLazyRuntimeModule(() => import("./preflight-audio-DecwnhEA.js"));
428
+ const loadSystemEventsRuntime = createLazyRuntimeModule(() => import("./system-events-XRYuwB2n.js"));
429
+ const loadDiscordThreadingRuntime = createLazyRuntimeModule(() => import("./provider-BuTO6czP.js").then((n) => n.S));
453
430
  function isPreflightAborted(abortSignal) {
454
431
  return Boolean(abortSignal?.aborted);
455
432
  }
@@ -495,11 +472,7 @@ async function resolveDiscordPreflightThreadContext(params) {
495
472
  }
496
473
  //#endregion
497
474
  //#region extensions/discord/src/monitor/message-handler.routing-preflight.ts
498
- let conversationRuntimePromise;
499
- async function loadConversationRuntime() {
500
- conversationRuntimePromise ??= import("openclaw/plugin-sdk/conversation-binding-runtime");
501
- return await conversationRuntimePromise;
502
- }
475
+ const loadConversationRuntime = createLazyRuntimeModule(() => import("openclaw/plugin-sdk/conversation-binding-runtime"));
503
476
  async function resolveDiscordPreflightRoute(params) {
504
477
  const conversationRuntime = await loadConversationRuntime();
505
478
  const route = resolveDiscordConversationRoute({
@@ -1108,6 +1081,7 @@ async function preflightDiscordMessage(params) {
1108
1081
  channelAllowlistConfigured,
1109
1082
  channelAllowed,
1110
1083
  shouldRequireMention,
1084
+ groupRequireMention: shouldRequireMentionByConfig,
1111
1085
  hasAnyMention,
1112
1086
  hasControlCommand: hasControlCommandInMessage,
1113
1087
  allowTextCommands,