@openclaw/discord 2026.9.8 → 2026.9.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/.setup/{account-inspect-De8hOUxG.mjs → account-inspect-Bp8nbBSx.mjs} +2 -2
  2. package/dist/.setup/{channel-type-DRCrEMss.mjs → allow-list-Kty_8Xca.mjs} +7 -7
  3. package/dist/.setup/{api-DVbJwZVt.mjs → api-CotnTQLx.mjs} +3 -3
  4. package/dist/.setup/{approval-handler.runtime-DxCK2Rux.mjs → approval-handler.runtime-DqU_yO2L.mjs} +9 -9
  5. package/dist/.setup/{approval-message-updates-BKFqavHZ.mjs → approval-message-updates-CdnQ98c8.mjs} +2 -2
  6. package/dist/.setup/{audit-CLg9I71N.mjs → audit-CqUeNcJH.mjs} +4 -4
  7. package/dist/.setup/{channel-DxlUVU9t.mjs → channel-Bu1qLdnm.mjs} +28 -23
  8. package/dist/.setup/{channel.setup-CRo1GjV7.mjs → channel.setup-DRCLt54O.mjs} +4 -4
  9. package/dist/.setup/{components-Cq1PvIpN.mjs → components-CwpgbGDR.mjs} +3 -3
  10. package/dist/.setup/{conversation-binding-route-Caz_XuFH.mjs → conversation-binding-route-DC0Y2v1B.mjs} +1 -1
  11. package/dist/.setup/{directory-config-esqNn0Eo.mjs → directory-config-DLT0PP2j.mjs} +1 -1
  12. package/dist/.setup/{directory-live-DtKRHuGV.mjs → directory-live-DPVUIJ8-.mjs} +4 -4
  13. package/dist/.setup/{discord-0xJYfdDD.mjs → discord-DTLP81g6.mjs} +3 -3
  14. package/dist/.setup/{doctor-BCl1H5tl.mjs → doctor-E3AF74Ms.mjs} +5 -5
  15. package/dist/.setup/{handle-action-CUvQWnE7.mjs → handle-action-cmTFQysA.mjs} +8 -8
  16. package/dist/.setup/{handle-action.guild-admin-Df-8gVle.mjs → handle-action.guild-admin-CH8nj2w0.mjs} +2 -2
  17. package/dist/.setup/{live-policy-config-8Pv20CHc.mjs → live-policy-config-D--q9Zta.mjs} +1 -1
  18. package/dist/.setup/{message-handler-B-Jk4oDk.mjs → message-handler-BVZO6wCg.mjs} +12 -11
  19. package/dist/.setup/{message-handler.preflight-v-__NSDq.mjs → message-handler.preflight-Be_b_NFp.mjs} +17 -17
  20. package/dist/.setup/{message-handler.preflight-pluralkit-CWLUBVcx.mjs → message-handler.preflight-pluralkit-TPGXsd8P.mjs} +7 -7
  21. package/dist/.setup/{message-handler.process-BNFFuChn.mjs → message-handler.process-BUBGcAoh.mjs} +21 -21
  22. package/dist/.setup/{outbound-adapter-BobT-kse.mjs → outbound-adapter-CSiCDzCN.mjs} +9 -9
  23. package/dist/.setup/{outbound-session-route-zVGxxceg.mjs → outbound-session-route-D0ryINch.mjs} +13 -13
  24. package/dist/.setup/{probe-LYrIHlBF.mjs → probe-DTSDdlpy.mjs} +4 -4
  25. package/dist/.setup/{provider-B_G5hASF.mjs → provider-BTm60b3t.mjs} +81 -81
  26. package/dist/.setup/{provider-session.runtime-BYlTBFD2.mjs → provider-session.runtime-DKJ-qSt9.mjs} +3 -3
  27. package/dist/.setup/provider.runtime-BvoZBuZY.mjs +2 -0
  28. package/dist/.setup/{realtime-session.runtime-oUd9DOcz.mjs → realtime-session.runtime-JZd7A5bS.mjs} +19 -19
  29. package/dist/.setup/{resolve-allowlist-common-DPdRggu5.mjs → resolve-allowlist-common-Ck4M_Ot2.mjs} +3 -3
  30. package/dist/.setup/{resolve-channels-BFPNRmVv.mjs → resolve-channels-CEaKGzuh.mjs} +3 -3
  31. package/dist/.setup/{resolve-users-0-aBuCy3.mjs → resolve-users-CMz4PVnV.mjs} +2 -2
  32. package/dist/.setup/{runtime-FN000lxA.mjs → runtime-DwW5C0WK.mjs} +12 -12
  33. package/dist/.setup/{runtime-sUksZ--Q.mjs → runtime-Lsy4dEx7.mjs} +2 -2
  34. package/dist/.setup/{send-CrfEI6Bs.mjs → send-DY5EeBPr.mjs} +15 -15
  35. package/dist/.setup/{send.components-DxQAMfES.mjs → send.components-DGwzyA_4.mjs} +7 -7
  36. package/dist/.setup/{send.outbound-BISKnb-a.mjs → send.outbound-DR8O-Pvo.mjs} +8 -8
  37. package/dist/.setup/{retry-pz_cSha2.mjs → send.receipt-D0JBijZQ.mjs} +217 -217
  38. package/dist/.setup/{send.shared-DGFkbkQR.mjs → send.shared-r0Fj2v_h.mjs} +40 -40
  39. package/dist/.setup/{sender-identity-B9X5Vb9R.mjs → sender-identity-DQCoikZl.mjs} +1 -1
  40. package/dist/.setup/setup-plugin-api-BEoo_L8p.mjs +3 -0
  41. package/dist/.setup/{shared-B3wZ4hN-.mjs → shared-CDq4vJm3.mjs} +7 -7
  42. package/dist/.setup/{subagent-hooks-nlUE9ow7.mjs → subagent-hooks-Bk0mMyHh.mjs} +2 -2
  43. package/dist/.setup/{system-events-CdeZnvPV.mjs → system-events-I1rH-U6o.mjs} +2 -2
  44. package/dist/.setup/{target-resolver-BuLapkhy.mjs → target-resolver-Dcg0WjsF.mjs} +3 -3
  45. package/dist/.setup/targets-CJkVZIkE.mjs +3 -0
  46. package/dist/.setup/{thread-bindings-D7TfgjR_.mjs → thread-bindings-E0TiUQUX.mjs} +6 -6
  47. package/dist/.setup/{thread-bindings.manager-DN-NissX.mjs → thread-bindings.manager-CEoFDOs9.mjs} +14 -14
  48. package/dist/.setup/{thread-bindings.session-updates-CshfKghV.mjs → thread-bindings.session-updates-DvtjzKO-.mjs} +2 -2
  49. package/dist/.setup/{transcripts-source-p8EV179h.mjs → transcripts-source-CHhpvL97.mjs} +17 -17
  50. package/dist/.setup/{typing-BiHCzBRu.mjs → typing-Cr0b2zBq.mjs} +1 -1
  51. package/dist/.setup/{voice-runtime-B46rcwrG.mjs → voice-runtime-BngIfPc3.mjs} +46 -46
  52. package/dist/account-inspect-api.js +1 -1
  53. package/dist/action-runtime-api.js +1 -1
  54. package/dist/activities-api.js +791 -1
  55. package/dist/api.js +15 -15
  56. package/dist/channel-config-api.js +1 -1
  57. package/dist/channel-plugin-api.js +1 -1
  58. package/dist/directory-contract-api.js +1 -1
  59. package/dist/doctor-contract-api.js +1 -1
  60. package/dist/index.js +9 -5
  61. package/dist/runtime-api.js +20 -20
  62. package/dist/setup-entry.js +1 -1
  63. package/dist/setup-plugin-api.js +1 -1
  64. package/dist/src/voice/audio-worker.runtime.js +3 -3
  65. package/dist/subagent-hooks-api.js +1 -1
  66. package/dist/transcripts-source-api.js +1 -1
  67. package/package.json +4 -4
  68. package/dist/.setup/activities-api-tvbsU2e3.mjs +0 -792
  69. package/dist/.setup/provider.runtime-CUE3UxER.mjs +0 -2
  70. package/dist/.setup/setup-plugin-api-BQUBxbhe.mjs +0 -3
  71. package/dist/.setup/targets-0KUcEIYx.mjs +0 -3
  72. package/dist/.setup/{accounts-ChaMcixG.mjs → accounts-DS-A-gCx.mjs} +3 -3
  73. package/dist/.setup/{config-schema-oxELUSDx.mjs → config-schema-DKUSr985.mjs} +2 -2
  74. package/dist/.setup/{receive-recovery-CHPOsnLc.mjs → receive-recovery-D6eikHf5.mjs} +2 -2
  75. package/dist/.setup/{thread-bindings.state-g6v9zAym.mjs → thread-bindings.state-755lJHln.mjs} +3 -3
@@ -1,7 +1,7 @@
1
- import { _ as inspectDiscordAccountTokenState, o as mergeDiscordAccountConfig, r as listDiscordAccountIds, s as resolveDefaultDiscordAccountId, u as resolveDiscordAccountConfig, v as resolveDiscordAccountAvailability } from "./accounts-ChaMcixG.mjs";
1
+ import { _ as inspectDiscordAccountTokenState, o as mergeDiscordAccountConfig, r as listDiscordAccountIds, s as resolveDefaultDiscordAccountId, u as resolveDiscordAccountConfig, v as resolveDiscordAccountAvailability } from "./accounts-DS-A-gCx.mjs";
2
2
  import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-id";
3
- import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
4
3
  import { normalizeSecretInputString } from "openclaw/plugin-sdk/secret-input";
4
+ import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  //#region extensions/discord/src/account-inspect.ts
6
6
  function inspectDiscordAccountPrimary(params) {
7
7
  const accountId = normalizeAccountId(params.accountId ?? resolveDefaultDiscordAccountId(params.cfg));
@@ -1,10 +1,15 @@
1
+ import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
1
2
  import { ChannelType } from "discord-api-types/v10";
2
3
  import { asFiniteNumberInRange, parseDateStringTimestampMs, parseStrictFiniteNumber } from "openclaw/plugin-sdk/number-runtime";
3
4
  import { readResponseWithLimit } from "openclaw/plugin-sdk/response-limit-runtime";
4
5
  import { fetchWithSsrFGuard, isBlockedHostnameOrIp, isLoopbackHost } from "openclaw/plugin-sdk/ssrf-runtime";
5
- import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { buildChannelKeyCandidates, resolveChannelEntryMatchWithFallback, resolveChannelMatchConfig } from "openclaw/plugin-sdk/channel-targets";
7
7
  import { resolveAllowlistMatchByCandidates } from "openclaw/plugin-sdk/allow-from";
8
+ //#region extensions/discord/src/channel-type.ts
9
+ function isDiscordThreadChannelType(channelType) {
10
+ return channelType === ChannelType.AnnouncementThread || channelType === ChannelType.PublicThread || channelType === ChannelType.PrivateThread;
11
+ }
12
+ //#endregion
8
13
  //#region extensions/discord/src/endpoint-runtime.ts
9
14
  const DISCORD_ENDPOINT_RESPONSE_MAX_BYTES = 8388608;
10
15
  const DISCORD_API_URL_ENV = "DISCORD_API_URL";
@@ -526,9 +531,4 @@ function shouldEmitDiscordReactionNotification(params) {
526
531
  return false;
527
532
  }
528
533
  //#endregion
529
- //#region extensions/discord/src/channel-type.ts
530
- function isDiscordThreadChannelType(channelType) {
531
- return channelType === ChannelType.AnnouncementThread || channelType === ChannelType.PublicThread || channelType === ChannelType.PrivateThread;
532
- }
533
- //#endregion
534
- export { resolveDiscordSystemLocation as C, getDiscordEndpointRuntime as D, assertDiscordEndpointGatewayUrl as E, resolveDiscordEndpointAttachmentGuard as O, formatDiscordUserTag as S, parseDiscordRetryAfterBodySeconds as T, resolveDiscordOwnerAllowFrom as _, normalizeDiscordDisplaySlug as a, shouldEmitDiscordReactionNotification as b, resolveDiscordChannelConfig as c, resolveDiscordCommandAuthorized as d, resolveDiscordGuildEntry as f, resolveDiscordOwnerAccess as g, resolveDiscordMentionPolicy as h, normalizeDiscordAllowList as i, resolveDiscordEndpointMediaGuard as k, resolveDiscordChannelConfigWithFallback as l, resolveDiscordMemberAllowed as m, allowListMatches as n, normalizeDiscordSlug as o, resolveDiscordMemberAccessState as p, isDiscordGroupAllowedByPolicy as r, resolveDiscordAllowListMatch as s, isDiscordThreadChannelType as t, resolveDiscordChannelPolicyCommandAuthorizer as u, resolveDiscordShouldRequireMention as v, resolveTimestampMs as w, formatDiscordReactionEmoji as x, resolveGroupDmAllow as y };
534
+ export { resolveTimestampMs as C, resolveDiscordEndpointAttachmentGuard as D, getDiscordEndpointRuntime as E, resolveDiscordEndpointMediaGuard as O, resolveDiscordSystemLocation as S, assertDiscordEndpointGatewayUrl as T, resolveDiscordShouldRequireMention as _, normalizeDiscordSlug as a, formatDiscordReactionEmoji as b, resolveDiscordChannelConfigWithFallback as c, resolveDiscordGuildEntry as d, resolveDiscordMemberAccessState as f, resolveDiscordOwnerAllowFrom as g, resolveDiscordOwnerAccess as h, normalizeDiscordDisplaySlug as i, isDiscordThreadChannelType as k, resolveDiscordChannelPolicyCommandAuthorizer as l, resolveDiscordMentionPolicy as m, isDiscordGroupAllowedByPolicy as n, resolveDiscordAllowListMatch as o, resolveDiscordMemberAllowed as p, normalizeDiscordAllowList as r, resolveDiscordChannelConfig as s, allowListMatches as t, resolveDiscordCommandAuthorized as u, resolveGroupDmAllow as v, parseDiscordRetryAfterBodySeconds as w, formatDiscordUserTag as x, shouldEmitDiscordReactionNotification as y };
@@ -1,11 +1,11 @@
1
- import { D as getDiscordEndpointRuntime, T as parseDiscordRetryAfterBodySeconds } from "./channel-type-DRCrEMss.mjs";
2
- import { redactToolPayloadText } from "openclaw/plugin-sdk/logging-core";
1
+ import { E as getDiscordEndpointRuntime, w as parseDiscordRetryAfterBodySeconds } from "./allow-list-Kty_8Xca.mjs";
2
+ import { sleepWithAbort } from "openclaw/plugin-sdk/runtime-env";
3
3
  import { resolveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
4
4
  import { captureChannelReadAuthority, resolveFetch } from "openclaw/plugin-sdk/fetch-runtime";
5
5
  import { readResponseWithLimit } from "openclaw/plugin-sdk/response-limit-runtime";
6
+ import { redactToolPayloadText } from "openclaw/plugin-sdk/logging-core";
6
7
  import { parseRetryAfterHeaderSeconds, resolveRetryConfig, retryAsync } from "openclaw/plugin-sdk/retry-runtime";
7
8
  import { readResponseTextLimited } from "openclaw/plugin-sdk/provider-http";
8
- import { sleepWithAbort } from "openclaw/plugin-sdk/runtime-env";
9
9
  import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
10
10
  //#region extensions/discord/src/error-body.ts
11
11
  const DISCORD_RESPONSE_BODY_SUMMARY_MAX_CHARS = 240;
@@ -1,13 +1,13 @@
1
- import { s as buildExecApprovalCustomId } from "./components-Cq1PvIpN.mjs";
2
- import { A as serializePayload, B as Container, J as Separator, K as Row, R as Button, X as TextDisplay, ct as createChannelMessage, dt as deleteChannelMessage, pt as editChannelMessage, rt as createUserDmChannel, tt as stripUndefinedFields } from "./discord-0xJYfdDD.mjs";
3
- import { s as findGraphemeChunkEnd } from "./retry-pz_cSha2.mjs";
4
- import { D as createDiscordMessageNonce, M as createDiscordClient } from "./send.shared-DGFkbkQR.mjs";
5
- import { D as isDiscordExecApprovalClientEnabled, c as formatDiscordApprovalDisplayValue, s as DISCORD_APPROVAL_ALLOWED_MENTIONS } from "./outbound-session-route-zVGxxceg.mjs";
6
- import { a as shouldHandleDiscordApprovalRequest } from "./channel-DxlUVU9t.mjs";
7
- import { t as discordApprovalMessageUpdates } from "./approval-message-updates-BKFqavHZ.mjs";
8
- import { logDebug, logError } from "openclaw/plugin-sdk/logging-core";
9
- import { ButtonStyle } from "discord-api-types/v10";
1
+ import { D as createDiscordMessageNonce, N as createDiscordClient } from "./send.shared-r0Fj2v_h.mjs";
2
+ import { A as serializePayload, B as Container, J as Separator, K as Row, R as Button, X as TextDisplay, ct as createChannelMessage, dt as deleteChannelMessage, pt as editChannelMessage, rt as createUserDmChannel, tt as stripUndefinedFields } from "./discord-DTLP81g6.mjs";
3
+ import { x as findGraphemeChunkEnd } from "./send.receipt-D0JBijZQ.mjs";
4
+ import { s as buildExecApprovalCustomId } from "./components-CwpgbGDR.mjs";
5
+ import { D as isDiscordExecApprovalClientEnabled, c as formatDiscordApprovalDisplayValue, s as DISCORD_APPROVAL_ALLOWED_MENTIONS } from "./outbound-session-route-D0ryINch.mjs";
6
+ import { a as shouldHandleDiscordApprovalRequest } from "./channel-Bu1qLdnm.mjs";
7
+ import { t as discordApprovalMessageUpdates } from "./approval-message-updates-CdnQ98c8.mjs";
10
8
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
9
+ import { ButtonStyle } from "discord-api-types/v10";
10
+ import { logDebug, logError } from "openclaw/plugin-sdk/logging-core";
11
11
  import { createChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-sdk/approval-handler-runtime";
12
12
  import { formatChannelApprovalResolvedLabel } from "openclaw/plugin-sdk/approval-runtime";
13
13
  //#region extensions/discord/src/ui-colors.ts
@@ -1,5 +1,5 @@
1
- import { c as parseExecApprovalData } from "./components-Cq1PvIpN.mjs";
2
- import { et as parseCustomId } from "./discord-0xJYfdDD.mjs";
1
+ import { et as parseCustomId } from "./discord-DTLP81g6.mjs";
2
+ import { c as parseExecApprovalData } from "./components-CwpgbGDR.mjs";
3
3
  import { KeyedAsyncQueue } from "openclaw/plugin-sdk/keyed-async-queue";
4
4
  //#region extensions/discord/src/approval-message-updates.ts
5
5
  const discordApprovalMessageUpdates = new KeyedAsyncQueue();
@@ -1,8 +1,8 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
2
- import { b as fetchChannelPermissionsDiscord } from "./send.shared-DGFkbkQR.mjs";
3
- import { t as inspectDiscordAccount } from "./account-inspect-De8hOUxG.mjs";
4
- import "./send-CrfEI6Bs.mjs";
5
- import { C as collectDiscordAuditChannelIdsForAccount, S as auditDiscordChannelPermissionsWithFetcher } from "./outbound-session-route-zVGxxceg.mjs";
2
+ import { t as inspectDiscordAccount } from "./account-inspect-Bp8nbBSx.mjs";
3
+ import { b as fetchChannelPermissionsDiscord } from "./send.shared-r0Fj2v_h.mjs";
4
+ import "./send-DY5EeBPr.mjs";
5
+ import { C as collectDiscordAuditChannelIdsForAccount, S as auditDiscordChannelPermissionsWithFetcher } from "./outbound-session-route-D0ryINch.mjs";
6
6
  //#region extensions/discord/src/audit.ts
7
7
  var audit_exports = /* @__PURE__ */ __exportAll({
8
8
  auditDiscordChannelPermissions: () => auditDiscordChannelPermissions,
@@ -1,24 +1,24 @@
1
- import { C as withDiscordRequestAuthority } from "./discord-0xJYfdDD.mjs";
2
- import { c as resolveDiscordAccount, i as listDiscordStartupAccountIds, l as resolveDiscordAccountAllowFrom, r as listDiscordAccountIds, s as resolveDefaultDiscordAccountId, u as resolveDiscordAccountConfig } from "./accounts-ChaMcixG.mjs";
3
- import { t as getDiscordRuntime } from "./runtime-DgnVQ7zW.mjs";
4
- import { _ as matchesDiscordToolContextTarget, b as parseDiscordTarget, g as looksLikeDiscordTargetId, v as normalizeDiscordMessagingTarget } from "./retry-pz_cSha2.mjs";
1
+ import { c as resolveDiscordAccount, i as listDiscordStartupAccountIds, l as resolveDiscordAccountAllowFrom, r as listDiscordAccountIds, s as resolveDefaultDiscordAccountId, u as resolveDiscordAccountConfig } from "./accounts-DS-A-gCx.mjs";
2
+ import { C as withDiscordRequestAuthority } from "./discord-DTLP81g6.mjs";
3
+ import { d as normalizeDiscordMessagingTarget, l as looksLikeDiscordTargetId, p as parseDiscordTarget, u as matchesDiscordToolContextTarget } from "./send.receipt-D0JBijZQ.mjs";
5
4
  import { u as withAbortTimeout } from "./timeouts-D86uWLt_.mjs";
6
- import { D as isDiscordExecApprovalClientEnabled, E as isDiscordExecApprovalApprover, O as shouldSuppressLocalDiscordExecApprovalPrompt, T as getDiscordExecApprovalApprovers, _ as resolveDiscordRuntimeBindingConversationId, f as resolveDiscordConversationRoute, t as resolveDiscordOutboundSessionRoute, v as discordMessageActions, w as resolveRequiredDiscordChannelPermissions } from "./outbound-session-route-zVGxxceg.mjs";
7
- import { a as normalizeDiscordAcpConversationId, c as resolveDiscordInboundConversation, i as matchDiscordAcpConversation, n as discordOutbound, o as resolveDiscordAttachedOutboundTarget, r as buildDiscordCrossContextPresentation, s as resolveDiscordCommandConversation } from "./outbound-adapter-BobT-kse.mjs";
5
+ import { t as getDiscordRuntime } from "./runtime-DgnVQ7zW.mjs";
6
+ import { D as isDiscordExecApprovalClientEnabled, E as isDiscordExecApprovalApprover, O as shouldSuppressLocalDiscordExecApprovalPrompt, T as getDiscordExecApprovalApprovers, _ as resolveDiscordRuntimeBindingConversationId, f as resolveDiscordConversationRoute, t as resolveDiscordOutboundSessionRoute, v as discordMessageActions, w as resolveRequiredDiscordChannelPermissions } from "./outbound-session-route-D0ryINch.mjs";
7
+ import { a as normalizeDiscordAcpConversationId, c as resolveDiscordInboundConversation, i as matchDiscordAcpConversation, n as discordOutbound, o as resolveDiscordAttachedOutboundTarget, r as buildDiscordCrossContextPresentation, s as resolveDiscordCommandConversation } from "./outbound-adapter-CSiCDzCN.mjs";
8
8
  import { r as openDiscordCommandDeployHashStore } from "./command-deploy-store-DFkBTViB.mjs";
9
- import { t as resolveDiscordConversationBindingRoute } from "./conversation-binding-route-Caz_XuFH.mjs";
10
- import { a as discordSecurityAdapter, i as discordSetupContract, n as discordConfigAdapter, t as createDiscordPluginBase } from "./shared-B3wZ4hN-.mjs";
9
+ import { t as resolveDiscordConversationBindingRoute } from "./conversation-binding-route-DC0Y2v1B.mjs";
10
+ import { a as discordSecurityAdapter, i as discordSetupContract, n as discordConfigAdapter, t as createDiscordPluginBase } from "./shared-CDq4vJm3.mjs";
11
11
  import { t as normalizeExplicitDiscordSessionKey } from "./session-key-normalization-wJgsKPNF.mjs";
12
- import { i as setThreadBindingMaxAgeBySessionKeyAsync, n as setThreadBindingIdleTimeoutBySessionKeyAsync, r as setThreadBindingMaxAgeBySessionKey, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-CshfKghV.mjs";
12
+ import { i as setThreadBindingMaxAgeBySessionKeyAsync, n as setThreadBindingIdleTimeoutBySessionKeyAsync, r as setThreadBindingMaxAgeBySessionKey, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-DvtjzKO-.mjs";
13
13
  import { t as defaultTopLevelPlacement } from "./thread-binding-api-BDZJD4na.mjs";
14
+ import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
14
15
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
16
+ import { sleepWithAbort } from "openclaw/plugin-sdk/runtime-env";
15
17
  import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-id";
16
- import { PAIRING_APPROVED_MESSAGE, buildTokenChannelStatusSummary, projectCredentialSnapshotFields, resolveConfiguredFromCredentialStatuses } from "openclaw/plugin-sdk/channel-status";
17
18
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
19
+ import { PAIRING_APPROVED_MESSAGE, buildTokenChannelStatusSummary, projectCredentialSnapshotFields, resolveConfiguredFromCredentialStatuses } from "openclaw/plugin-sdk/channel-status";
18
20
  import { createRuntimeConfigReader } from "openclaw/plugin-sdk/runtime-config-snapshot";
19
- import { sleepWithAbort } from "openclaw/plugin-sdk/runtime-env";
20
21
  import { createChannelMessageAdapterFromOutbound } from "openclaw/plugin-sdk/channel-outbound";
21
- import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
22
22
  import { resolveDefaultGroupPolicy, resolveOpenProviderRuntimeGroupPolicy } from "openclaw/plugin-sdk/runtime-group-policy";
23
23
  import { buildLegacyDmAccountAllowlistAdapter, createAccountScopedAllowlistNameResolver, createNestedAllowlistOverrideResolver } from "openclaw/plugin-sdk/allowlist-config-edit";
24
24
  import { createChatChannelPlugin } from "openclaw/plugin-sdk/channel-core";
@@ -196,7 +196,7 @@ function createDiscordApprovalCapability() {
196
196
  accountId,
197
197
  request
198
198
  }),
199
- load: async () => (await import("./approval-handler.runtime-DxCK2Rux.mjs")).discordApprovalNativeRuntime
199
+ load: async () => (await import("./approval-handler.runtime-DqU_yO2L.mjs")).discordApprovalNativeRuntime
200
200
  })
201
201
  });
202
202
  }
@@ -207,22 +207,22 @@ function getDiscordApprovalCapability() {
207
207
  }
208
208
  //#endregion
209
209
  //#region extensions/discord/src/channel.loaders.ts
210
- const loadDiscordDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-esqNn0Eo.mjs").then((n) => n.t));
211
- const loadDiscordResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-BFPNRmVv.mjs").then((n) => n.n));
212
- const loadDiscordResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-0-aBuCy3.mjs").then((n) => n.n));
213
- const loadDiscordThreadBindingsManagerModule = createLazyRuntimeModule(() => import("./thread-bindings.manager-DN-NissX.mjs").then((n) => n.r));
214
- const loadDiscordTargetResolverModule = createLazyRuntimeModule(() => import("./target-resolver-BuLapkhy.mjs").then((n) => n.r));
215
- const loadDiscordProviderRuntime = createLazyRuntimeModule(() => import("./provider.runtime-CUE3UxER.mjs"));
216
- const loadDiscordProbeRuntime = createLazyRuntimeModule(() => import("./probe-LYrIHlBF.mjs").then((n) => n.o));
210
+ const loadDiscordDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-DLT0PP2j.mjs").then((n) => n.t));
211
+ const loadDiscordResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-CEaKGzuh.mjs").then((n) => n.n));
212
+ const loadDiscordResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-CMz4PVnV.mjs").then((n) => n.n));
213
+ const loadDiscordThreadBindingsManagerModule = createLazyRuntimeModule(() => import("./thread-bindings.manager-CEoFDOs9.mjs").then((n) => n.r));
214
+ const loadDiscordTargetResolverModule = createLazyRuntimeModule(() => import("./target-resolver-Dcg0WjsF.mjs").then((n) => n.r));
215
+ const loadDiscordProviderRuntime = createLazyRuntimeModule(() => import("./provider.runtime-BvoZBuZY.mjs"));
216
+ const loadDiscordProbeRuntime = createLazyRuntimeModule(() => import("./probe-DTSDdlpy.mjs").then((n) => n.o));
217
217
  async function probeDiscordStatusAccount(params) {
218
218
  const startedAtMs = Date.now();
219
219
  const runtime = await loadDiscordProbeRuntime();
220
220
  const remainingMs = Math.max(1, params.timeoutMs - Math.max(0, Date.now() - startedAtMs));
221
221
  return await runtime.probeDiscord(params.token, remainingMs, { includeApplication: true });
222
222
  }
223
- const loadDiscordAuditModule = createLazyRuntimeModule(() => import("./audit-CLg9I71N.mjs").then((n) => n.n));
224
- const loadDiscordSendModule = createLazyRuntimeModule(() => import("./send-CrfEI6Bs.mjs").then((n) => n.t));
225
- const loadDiscordDirectoryLiveModule = createLazyRuntimeModule(() => import("./directory-live-DtKRHuGV.mjs").then((n) => n.t));
223
+ const loadDiscordAuditModule = createLazyRuntimeModule(() => import("./audit-CqUeNcJH.mjs").then((n) => n.n));
224
+ const loadDiscordSendModule = createLazyRuntimeModule(() => import("./send-DY5EeBPr.mjs").then((n) => n.t));
225
+ const loadDiscordDirectoryLiveModule = createLazyRuntimeModule(() => import("./directory-live-DPVUIJ8-.mjs").then((n) => n.t));
226
226
  //#endregion
227
227
  //#region extensions/discord/src/conversation-route-owner.ts
228
228
  function inspectDiscordConversationRouteOwner(params) {
@@ -917,6 +917,11 @@ const discordPlugin = createChatChannelPlugin({
917
917
  security: discordSecurityAdapter,
918
918
  threading: {
919
919
  matchesToolContextTarget: matchesDiscordToolContextTarget,
920
+ resolveAutoThreadId: ({ to, toolContext }) => {
921
+ const threadId = normalizeOptionalString(toolContext?.currentThreadTs);
922
+ if (!threadId) return;
923
+ return normalizeDiscordMessagingTarget(to) === `channel:${threadId}` ? threadId : void 0;
924
+ },
920
925
  scopedAccountReplyToMode: {
921
926
  resolveAccount: (cfg, accountId) => resolveDiscordAccount({
922
927
  cfg,
@@ -1,7 +1,7 @@
1
- import { _ as inspectDiscordAccountTokenState, h as resolveDiscordToken, l as resolveDiscordAccountAllowFrom, o as mergeDiscordAccountConfig, s as resolveDefaultDiscordAccountId, u as resolveDiscordAccountConfig } from "./accounts-ChaMcixG.mjs";
2
- import { i as discordSetupContract, t as createDiscordPluginBase } from "./shared-B3wZ4hN-.mjs";
3
- import { t as resolveDiscordChannelAllowlist } from "./resolve-channels-BFPNRmVv.mjs";
4
- import { t as resolveDiscordUserAllowlist } from "./resolve-users-0-aBuCy3.mjs";
1
+ import { _ as inspectDiscordAccountTokenState, h as resolveDiscordToken, l as resolveDiscordAccountAllowFrom, o as mergeDiscordAccountConfig, s as resolveDefaultDiscordAccountId, u as resolveDiscordAccountConfig } from "./accounts-DS-A-gCx.mjs";
2
+ import { i as discordSetupContract, t as createDiscordPluginBase } from "./shared-CDq4vJm3.mjs";
3
+ import { t as resolveDiscordChannelAllowlist } from "./resolve-channels-CEaKGzuh.mjs";
4
+ import { t as resolveDiscordUserAllowlist } from "./resolve-users-CMz4PVnV.mjs";
5
5
  import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-id";
6
6
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
7
7
  import { resolveBasicAllowFromEntries } from "openclaw/plugin-sdk/allow-from";
@@ -1,10 +1,10 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
2
- import { B as Container, F as RadioGroup, G as RoleSelectMenu, H as LinkButton, I as TextInput, J as Separator, K as Row, L as AnySelectMenu, M as CheckboxGroup, N as Label, P as Modal, Q as UserSelectMenu, R as Button, U as MediaGallery, V as File, W as MentionableSelectMenu, X as TextDisplay, Y as StringSelectMenu, Z as Thumbnail, et as parseCustomId, q as Section, z as ChannelSelectMenu } from "./discord-0xJYfdDD.mjs";
2
+ import { B as Container, F as RadioGroup, G as RoleSelectMenu, H as LinkButton, I as TextInput, J as Separator, K as Row, L as AnySelectMenu, M as CheckboxGroup, N as Label, P as Modal, Q as UserSelectMenu, R as Button, U as MediaGallery, V as File, W as MentionableSelectMenu, X as TextDisplay, Y as StringSelectMenu, Z as Thumbnail, et as parseCustomId, q as Section, z as ChannelSelectMenu } from "./discord-DTLP81g6.mjs";
3
+ import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, readNonBlankString } from "openclaw/plugin-sdk/string-coerce-runtime";
3
4
  import { ButtonStyle, MessageFlags, TextInputStyle } from "discord-api-types/v10";
4
5
  import crypto from "node:crypto";
5
- import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, readNonBlankString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
- import { legacyInteractiveReplyToPresentation, resolveMessagePresentationActionValue, resolveMessagePresentationButtonAction, resolveMessagePresentationOptionAction } from "openclaw/plugin-sdk/interactive-runtime";
7
6
  import { resolveAskUserQuestionOptionIndex } from "openclaw/plugin-sdk/reply-payload";
7
+ import { legacyInteractiveReplyToPresentation, resolveMessagePresentationActionValue, resolveMessagePresentationButtonAction, resolveMessagePresentationOptionAction } from "openclaw/plugin-sdk/interactive-runtime";
8
8
  import { buildApprovalResolutionRef } from "openclaw/plugin-sdk/approval-reference-runtime";
9
9
  //#region extensions/discord/src/custom-id-codec.ts
10
10
  /**
@@ -1,4 +1,4 @@
1
- import { m as shouldIgnoreStaleDiscordRouteBinding } from "./outbound-session-route-zVGxxceg.mjs";
1
+ import { m as shouldIgnoreStaleDiscordRouteBinding } from "./outbound-session-route-D0ryINch.mjs";
2
2
  import { logVerbose } from "openclaw/plugin-sdk/runtime-env";
3
3
  import { resolveConfiguredBindingRoute, resolveRuntimeConversationBindingRoute } from "openclaw/plugin-sdk/conversation-binding-runtime";
4
4
  //#region extensions/discord/src/monitor/conversation-binding-route.ts
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
2
- import { l as resolveDiscordAccountAllowFrom, o as mergeDiscordAccountConfig, s as resolveDefaultDiscordAccountId } from "./accounts-ChaMcixG.mjs";
2
+ import { l as resolveDiscordAccountAllowFrom, o as mergeDiscordAccountConfig, s as resolveDefaultDiscordAccountId } from "./accounts-DS-A-gCx.mjs";
3
3
  import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
4
4
  import { createResolvedDirectoryEntriesLister } from "openclaw/plugin-sdk/directory-config-runtime";
5
5
  //#region extensions/discord/src/directory-config.ts
@@ -1,9 +1,9 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
2
- import { o as normalizeDiscordSlug } from "./channel-type-DRCrEMss.mjs";
3
- import { c as resolveDiscordAccount, m as normalizeDiscordToken } from "./accounts-ChaMcixG.mjs";
4
- import { r as fetchDiscord, t as DISCORD_DIRECTORY_LOOKUP_TIMEOUT_MS } from "./api-DVbJwZVt.mjs";
5
- import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/routing";
2
+ import { c as resolveDiscordAccount, m as normalizeDiscordToken } from "./accounts-DS-A-gCx.mjs";
3
+ import { a as normalizeDiscordSlug } from "./allow-list-Kty_8Xca.mjs";
4
+ import { r as fetchDiscord, t as DISCORD_DIRECTORY_LOOKUP_TIMEOUT_MS } from "./api-CotnTQLx.mjs";
6
5
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/string-coerce-runtime";
6
+ import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/routing";
7
7
  //#region extensions/discord/src/directory-cache-state.ts
8
8
  const discordDirectoryCacheState = { handlesByAccount: /* @__PURE__ */ new Map() };
9
9
  //#endregion
@@ -1,6 +1,6 @@
1
1
  import { n as __reExport, t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
2
- import { D as getDiscordEndpointRuntime, T as parseDiscordRetryAfterBodySeconds } from "./channel-type-DRCrEMss.mjs";
3
- import { redactIdentifier, redactSensitiveFieldValue } from "openclaw/plugin-sdk/logging-core";
2
+ import { E as getDiscordEndpointRuntime, w as parseDiscordRetryAfterBodySeconds } from "./allow-list-Kty_8Xca.mjs";
3
+ import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
4
4
  import { ApplicationCommandOptionType, ApplicationCommandType, ButtonStyle, ComponentType, GatewayDispatchEvents, InteractionContextType, InteractionResponseType, InteractionType, MessageFlags, Routes, TextInputStyle } from "discord-api-types/v10";
5
5
  import { Type } from "typebox";
6
6
  import { Check } from "typebox/value";
@@ -13,7 +13,7 @@ import { captureChannelReadAuthority } from "openclaw/plugin-sdk/fetch-runtime";
13
13
  import { readResponseWithLimit } from "openclaw/plugin-sdk/response-limit-runtime";
14
14
  import { AsyncLocalStorage } from "node:async_hooks";
15
15
  import { resolveGlobalSingleton } from "openclaw/plugin-sdk/global-singleton";
16
- import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
16
+ import { redactIdentifier, redactSensitiveFieldValue } from "openclaw/plugin-sdk/logging-core";
17
17
  import { parseRetryAfterHeaderSeconds } from "openclaw/plugin-sdk/retry-runtime";
18
18
  //#region extensions/discord/src/internal/api.guild.ts
19
19
  const discordGuildEmojiListSchema = Type.Array(Type.Object({
@@ -1,12 +1,12 @@
1
- import { s as resolveDefaultDiscordAccountId } from "./accounts-ChaMcixG.mjs";
2
- import { n as discordVoiceTranscriptsSourceProvider } from "./transcripts-source-p8EV179h.mjs";
3
- import { t as inspectDiscordAccount } from "./account-inspect-De8hOUxG.mjs";
4
- import { r as DISCORD_LEGACY_CONFIG_RULES } from "./shared-B3wZ4hN-.mjs";
1
+ import { s as resolveDefaultDiscordAccountId } from "./accounts-DS-A-gCx.mjs";
2
+ import { t as inspectDiscordAccount } from "./account-inspect-Bp8nbBSx.mjs";
3
+ import { r as DISCORD_LEGACY_CONFIG_RULES } from "./shared-CDq4vJm3.mjs";
5
4
  import { t as runtime_doctor_migrations_exports } from "./runtime-doctor-migrations-CshUGl36.mjs";
6
5
  import { n as normalizeCompatibilityConfig } from "./doctor-contract-CvvgwrrG.mjs";
7
6
  import { t as isDiscordMutableAllowEntry } from "./security-doctor-nGgPm65L.mjs";
8
- import { expectDefined } from "openclaw/plugin-sdk/expect-runtime";
7
+ import { n as discordVoiceTranscriptsSourceProvider } from "./transcripts-source-CHhpvL97.mjs";
9
8
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
9
+ import { expectDefined } from "openclaw/plugin-sdk/expect-runtime";
10
10
  //#region extensions/discord/src/doctor.ts
11
11
  function sanitizeForLog(value) {
12
12
  return value.replace(/\p{Cc}+/gu, " ").trim();
@@ -1,16 +1,16 @@
1
- import { i as buildDiscordPresentationComponents, m as coerceDiscordComponentParam, r as buildDiscordInteractiveComponents } from "./components-Cq1PvIpN.mjs";
2
- import { C as withDiscordRequestAuthority } from "./discord-0xJYfdDD.mjs";
3
- import { _ as matchesDiscordToolContextTarget, b as parseDiscordTarget, x as resolveDiscordChannelId } from "./retry-pz_cSha2.mjs";
4
- import "./targets-0KUcEIYx.mjs";
5
- import { a as readDiscordAutoArchiveDurationParam, t as handleDiscordAction } from "./runtime-FN000lxA.mjs";
1
+ import { C as withDiscordRequestAuthority } from "./discord-DTLP81g6.mjs";
2
+ import { m as resolveDiscordChannelId, p as parseDiscordTarget, u as matchesDiscordToolContextTarget } from "./send.receipt-D0JBijZQ.mjs";
3
+ import "./targets-CJkVZIkE.mjs";
4
+ import { a as readDiscordAutoArchiveDurationParam, t as handleDiscordAction } from "./runtime-DwW5C0WK.mjs";
5
+ import { i as buildDiscordPresentationComponents, m as coerceDiscordComponentParam, r as buildDiscordInteractiveComponents } from "./components-CwpgbGDR.mjs";
6
6
  import "../action-runtime-api.js";
7
- import { b as discordInboundEventDelivery, i as isDiscordComponentSpecWithinMessageLimit, n as DISCORD_PRESENTATION_CAPABILITIES } from "./outbound-session-route-zVGxxceg.mjs";
8
- import { t as tryHandleDiscordMessageActionGuildAdmin } from "./handle-action.guild-admin-Df-8gVle.mjs";
7
+ import { b as discordInboundEventDelivery, i as isDiscordComponentSpecWithinMessageLimit, n as DISCORD_PRESENTATION_CAPABILITIES } from "./outbound-session-route-D0ryINch.mjs";
8
+ import { t as tryHandleDiscordMessageActionGuildAdmin } from "./handle-action.guild-admin-CH8nj2w0.mjs";
9
9
  import { n as notifyDiscordActiveTurnThreadCreated, r as notifyDiscordActiveTurnThreadReplyDelivered } from "./active-turn-thread-route-fmHl1HNd.mjs";
10
10
  import { asOptionalRecord, normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/string-coerce-runtime";
11
- import { adaptMessagePresentationForChannel, normalizeLegacyInteractiveReply, normalizeMessagePresentation, renderMessagePresentationFallbackText } from "openclaw/plugin-sdk/interactive-runtime";
12
11
  import { resolveReactionMessageId } from "openclaw/plugin-sdk/channel-actions";
13
12
  import { readBooleanParam } from "openclaw/plugin-sdk/boolean-param";
13
+ import { adaptMessagePresentationForChannel, normalizeLegacyInteractiveReply, normalizeMessagePresentation, renderMessagePresentationFallbackText } from "openclaw/plugin-sdk/interactive-runtime";
14
14
  import { readPositiveIntegerParam as readPositiveIntegerParam$1, readStringArrayParam as readStringArrayParam$1, readStringParam as readStringParam$1 } from "openclaw/plugin-sdk/agent-runtime";
15
15
  //#region extensions/discord/src/actions/handle-action.ts
16
16
  const providerId = "discord";
@@ -1,6 +1,6 @@
1
- import { c as readDiscordChannelMoveParams, n as isDiscordModerationAction, o as readDiscordChannelCreateParams, r as readDiscordModerationCommand, s as readDiscordChannelEditParams, t as handleDiscordAction } from "./runtime-FN000lxA.mjs";
1
+ import { c as readDiscordChannelMoveParams, n as isDiscordModerationAction, o as readDiscordChannelCreateParams, r as readDiscordModerationCommand, s as readDiscordChannelEditParams, t as handleDiscordAction } from "./runtime-DwW5C0WK.mjs";
2
2
  import "../action-runtime-api.js";
3
- import { y as isTrustedRequesterGuildAdminAction } from "./outbound-session-route-zVGxxceg.mjs";
3
+ import { y as isTrustedRequesterGuildAdminAction } from "./outbound-session-route-D0ryINch.mjs";
4
4
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { readBooleanParam } from "openclaw/plugin-sdk/boolean-param";
6
6
  import { readNonNegativeIntegerParam, readPositiveIntegerParam, readStringArrayParam, readStringParam } from "openclaw/plugin-sdk/param-readers";
@@ -1,4 +1,4 @@
1
- import { i as normalizeDiscordAllowList } from "./channel-type-DRCrEMss.mjs";
1
+ import { r as normalizeDiscordAllowList } from "./allow-list-Kty_8Xca.mjs";
2
2
  import { defineStableChannelIngressIdentity } from "openclaw/plugin-sdk/channel-ingress-runtime";
3
3
  //#region extensions/discord/src/monitor/ingress-identity.ts
4
4
  const DISCORD_ALLOW_LIST_PREFIXES = [
@@ -1,19 +1,19 @@
1
- import { D as getDiscordEndpointRuntime, k as resolveDiscordEndpointMediaGuard } from "./channel-type-DRCrEMss.mjs";
1
+ import { E as getDiscordEndpointRuntime, O as resolveDiscordEndpointMediaGuard } from "./allow-list-Kty_8Xca.mjs";
2
2
  import { t as getDiscordRuntime } from "./runtime-DgnVQ7zW.mjs";
3
- import { A as resolveDiscordMessageChannelId, O as resolveDiscordReferencedReplyMessageId, T as hasDiscordMessageStickers, w as resolveDiscordCdnPolicy, y as resolveDiscordMessageText } from "./transcripts-source-p8EV179h.mjs";
4
- import { D as createDiscordLivePolicyReader, O as mapGatewayDispatchData } from "./provider-B_G5hASF.mjs";
5
- import { logDebug } from "openclaw/plugin-sdk/logging-core";
6
- import { GatewayDispatchEvents } from "discord-api-types/v10";
3
+ import { D as createDiscordLivePolicyReader, O as mapGatewayDispatchData } from "./provider-BTm60b3t.mjs";
4
+ import { A as resolveDiscordMessageChannelId, O as resolveDiscordReferencedReplyMessageId, T as hasDiscordMessageStickers, w as resolveDiscordCdnPolicy, y as resolveDiscordMessageText } from "./transcripts-source-CHhpvL97.mjs";
5
+ import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
7
6
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
7
+ import { danger } from "openclaw/plugin-sdk/runtime-env";
8
8
  import { normalizeNullableString } from "openclaw/plugin-sdk/string-coerce-runtime";
9
9
  import { createRuntimeConfigReader } from "openclaw/plugin-sdk/runtime-config-snapshot";
10
- import { danger } from "openclaw/plugin-sdk/runtime-env";
11
- import { DEFAULT_INGRESS_RETRY_MAX_ATTEMPTS, createChannelIngressError, createChannelIngressMonitor, createChannelRunQueue } from "openclaw/plugin-sdk/channel-outbound";
10
+ import { GatewayDispatchEvents } from "discord-api-types/v10";
11
+ import { logDebug } from "openclaw/plugin-sdk/logging-core";
12
12
  import { saveRemoteMedia } from "openclaw/plugin-sdk/media-runtime";
13
- import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
13
+ import { DEFAULT_INGRESS_RETRY_MAX_ATTEMPTS, createChannelIngressError, createChannelIngressMonitor, createChannelRunQueue } from "openclaw/plugin-sdk/channel-outbound";
14
+ import { fanInChannelIngressLifecycles } from "openclaw/plugin-sdk/channel-ingress-runtime";
14
15
  import { pruneMapToMaxSize } from "openclaw/plugin-sdk/collection-runtime";
15
16
  import { createChannelInboundDebouncer, resolveInboundDebounceMs, shouldDebounceTextInbound } from "openclaw/plugin-sdk/channel-inbound";
16
- import { fanInChannelIngressLifecycles } from "openclaw/plugin-sdk/channel-ingress-runtime";
17
17
  //#region extensions/discord/src/monitor/ingress.ts
18
18
  const DISCORD_INGRESS_PAYLOAD_VERSION = 1;
19
19
  const DISCORD_INGRESS_DRAIN_INTERVAL_MS = 1e3;
@@ -88,6 +88,7 @@ function createDiscordIngressMonitor(params) {
88
88
  },
89
89
  appendRetryDelaysMs: [0],
90
90
  drain: {
91
+ deferredLaneOccupancy: "release",
91
92
  retryPolicy: {
92
93
  maxAttempts: DEFAULT_INGRESS_RETRY_MAX_ATTEMPTS,
93
94
  deadLetterMinAgeMs: 0
@@ -193,7 +194,7 @@ function createDiscordAvatarResolver() {
193
194
  }
194
195
  //#endregion
195
196
  //#region extensions/discord/src/monitor/message-run-queue.ts
196
- const loadMessageProcessRuntime = createLazyRuntimeModule(() => import("./message-handler.process-BNFFuChn.mjs"));
197
+ const loadMessageProcessRuntime = createLazyRuntimeModule(() => import("./message-handler.process-BUBGcAoh.mjs"));
197
198
  async function processDiscordQueuedMessage(params) {
198
199
  const abortSignal = params.job.context.abortSignal && params.lifecycleSignal ? AbortSignal.any([params.job.context.abortSignal, params.lifecycleSignal]) : params.job.context.abortSignal ?? params.lifecycleSignal;
199
200
  try {
@@ -280,7 +281,7 @@ function createDiscordMessageRunQueue(params) {
280
281
  }
281
282
  //#endregion
282
283
  //#region extensions/discord/src/monitor/message-dispatcher.ts
283
- const loadMessagePreflightRuntime = createLazyRuntimeModule(() => import("./message-handler.preflight-v-__NSDq.mjs"));
284
+ const loadMessagePreflightRuntime = createLazyRuntimeModule(() => import("./message-handler.preflight-Be_b_NFp.mjs"));
284
285
  function createDiscordMessageDispatcher(params) {
285
286
  const readPolicy = params.readPolicy ?? createDiscordLivePolicyReader({
286
287
  ...params,
@@ -1,32 +1,32 @@
1
- import { D as Message, ht as getChannelMessage, t as discord_exports } from "./discord-0xJYfdDD.mjs";
2
- import { C as resolveDiscordSystemLocation, S as formatDiscordUserTag, a as normalizeDiscordDisplaySlug, f as resolveDiscordGuildEntry, h as resolveDiscordMentionPolicy, l as resolveDiscordChannelConfigWithFallback, o as normalizeDiscordSlug, p as resolveDiscordMemberAccessState, w as resolveTimestampMs } from "./channel-type-DRCrEMss.mjs";
3
- import { s as resolveDefaultDiscordAccountId } from "./accounts-ChaMcixG.mjs";
4
- import { n as resolveDiscordChannelInfoSafe, r as resolveDiscordChannelNameSafe } from "./channel-access-C12aDZ0p.mjs";
5
- import { A as resolveDiscordMessageChannelId, D as resolveDiscordReferencedReplyMessage, E as resolveDiscordMessageStickers, S as resolveMediaList, _ as resolveDiscordMessageHistoryText, g as resolveDiscordMessageBatch, k as resolveDiscordChannelInfo, v as resolveDiscordMessageMentionDocuments, x as resolveForwardedMediaList, y as resolveDiscordMessageText } from "./transcripts-source-p8EV179h.mjs";
1
+ import { s as resolveDefaultDiscordAccountId } from "./accounts-DS-A-gCx.mjs";
2
+ import { C as resolveTimestampMs, S as resolveDiscordSystemLocation, a as normalizeDiscordSlug, c as resolveDiscordChannelConfigWithFallback, d as resolveDiscordGuildEntry, f as resolveDiscordMemberAccessState, i as normalizeDiscordDisplaySlug, m as resolveDiscordMentionPolicy, x as formatDiscordUserTag } from "./allow-list-Kty_8Xca.mjs";
3
+ import { D as Message, ht as getChannelMessage, t as discord_exports } from "./discord-DTLP81g6.mjs";
6
4
  import { n as DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, t as DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS } from "./timeouts-D86uWLt_.mjs";
7
- import { _ as resolveDiscordRuntimeBindingConversationId, f as resolveDiscordConversationRoute, h as resolveDiscordConversationIdentity, p as resolveDiscordEffectiveRoute, u as buildDiscordRoutePeer } from "./outbound-session-route-zVGxxceg.mjs";
8
- import { t as resolveDiscordConversationBindingRoute } from "./conversation-binding-route-Caz_XuFH.mjs";
9
- import { A as resolveDiscordDmCommandAccess, E as handleDiscordDmCommandDecision, j as resolveDiscordTextCommandAccess, n as resolveDiscordPreflightChannelAccess } from "./provider-B_G5hASF.mjs";
10
- import { n as resolveDiscordWebhookId, t as resolveDiscordSenderIdentity } from "./sender-identity-B9X5Vb9R.mjs";
11
- import { a as createDiscordHistorySenderProvenance, c as hasRawDiscordUserMention, d as matchesActiveDiscordMentionPatterns, f as resolveDiscordMentionState, h as shouldIgnoreBoundThreadWebhookMessage, i as loadSystemEventsRuntime, l as isBoundThreadBotSystemMessage, m as resolvePreflightMentionRequirement, n as loadDiscordThreadingRuntime, p as resolveInjectedBoundThreadLookupRecord, r as loadPreflightAudioRuntime, s as resolveDiscordHistoryMediaIds, t as resolveDiscordPreflightPluralKitInfo, u as isDiscordThreadChannelMessage } from "./message-handler.preflight-pluralkit-CWLUBVcx.mjs";
12
- import { logDebug } from "openclaw/plugin-sdk/logging-core";
13
- import { MessageReferenceType, MessageType } from "discord-api-types/v10";
14
- import { recordChannelActivity } from "openclaw/plugin-sdk/channel-activity-runtime";
15
- import { mimeTypeFromFilePath } from "openclaw/plugin-sdk/media-mime";
5
+ import { _ as resolveDiscordRuntimeBindingConversationId, f as resolveDiscordConversationRoute, h as resolveDiscordConversationIdentity, p as resolveDiscordEffectiveRoute, u as buildDiscordRoutePeer } from "./outbound-session-route-D0ryINch.mjs";
6
+ import { t as resolveDiscordConversationBindingRoute } from "./conversation-binding-route-DC0Y2v1B.mjs";
7
+ import { n as resolveDiscordChannelInfoSafe, r as resolveDiscordChannelNameSafe } from "./channel-access-C12aDZ0p.mjs";
8
+ import { A as resolveDiscordDmCommandAccess, E as handleDiscordDmCommandDecision, j as resolveDiscordTextCommandAccess, n as resolveDiscordPreflightChannelAccess } from "./provider-BTm60b3t.mjs";
9
+ import { A as resolveDiscordMessageChannelId, D as resolveDiscordReferencedReplyMessage, E as resolveDiscordMessageStickers, S as resolveMediaList, _ as resolveDiscordMessageHistoryText, g as resolveDiscordMessageBatch, k as resolveDiscordChannelInfo, v as resolveDiscordMessageMentionDocuments, x as resolveForwardedMediaList, y as resolveDiscordMessageText } from "./transcripts-source-CHhpvL97.mjs";
10
+ import { n as resolveDiscordWebhookId, t as resolveDiscordSenderIdentity } from "./sender-identity-DQCoikZl.mjs";
11
+ import { a as createDiscordHistorySenderProvenance, c as hasRawDiscordUserMention, d as matchesActiveDiscordMentionPatterns, f as resolveDiscordMentionState, h as shouldIgnoreBoundThreadWebhookMessage, i as loadSystemEventsRuntime, l as isBoundThreadBotSystemMessage, m as resolvePreflightMentionRequirement, n as loadDiscordThreadingRuntime, p as resolveInjectedBoundThreadLookupRecord, r as loadPreflightAudioRuntime, s as resolveDiscordHistoryMediaIds, t as resolveDiscordPreflightPluralKitInfo, u as isDiscordThreadChannelMessage } from "./message-handler.preflight-pluralkit-TPGXsd8P.mjs";
12
+ import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
16
13
  import { getChildLogger, logVerbose, shouldLogVerbose } from "openclaw/plugin-sdk/runtime-env";
14
+ import { MessageReferenceType, MessageType } from "discord-api-types/v10";
15
+ import { logDebug } from "openclaw/plugin-sdk/logging-core";
17
16
  import { formatAllowlistMatchMeta } from "openclaw/plugin-sdk/allow-from";
17
+ import { recordChannelActivity } from "openclaw/plugin-sdk/channel-activity-runtime";
18
18
  import { isRecentOutboundMessageIdentity } from "openclaw/plugin-sdk/channel-outbound";
19
- import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
20
- import { buildMentionRegexes, classifyChannelInboundEvent, logInboundDrop, recordChannelBotPairLoopAndCheckSuppression, resolveGroupThreadMentionFacts, resolveInboundMentionDecision, resolveUnmentionedGroupInboundPolicy, toHistoryMediaEntries, toInboundMediaFactsWithMetadata } from "openclaw/plugin-sdk/channel-inbound";
19
+ import { mimeTypeFromFilePath } from "openclaw/plugin-sdk/media-mime";
21
20
  import { isDangerousNameMatchingEnabled } from "openclaw/plugin-sdk/dangerous-name-runtime";
22
21
  import { enqueueRoutedSystemEvent } from "openclaw/plugin-sdk/system-event-runtime";
22
+ import { buildMentionRegexes, classifyChannelInboundEvent, logInboundDrop, recordChannelBotPairLoopAndCheckSuppression, resolveGroupThreadMentionFacts, resolveInboundMentionDecision, resolveUnmentionedGroupInboundPolicy, toHistoryMediaEntries, toInboundMediaFactsWithMetadata } from "openclaw/plugin-sdk/channel-inbound";
23
23
  import { hasControlCommand } from "openclaw/plugin-sdk/command-detection";
24
24
  import { isAbortRequestText } from "openclaw/plugin-sdk/command-primitives-runtime";
25
25
  import { shouldHandleTextCommands } from "openclaw/plugin-sdk/command-surface";
26
26
  import { createChannelHistoryWindow } from "openclaw/plugin-sdk/reply-history";
27
27
  //#region extensions/discord/src/monitor/message-handler.dm-preflight.ts
28
28
  const loadConversationRuntime$1 = createLazyRuntimeModule(() => import("openclaw/plugin-sdk/conversation-binding-runtime"));
29
- const loadDiscordSendRuntime = createLazyRuntimeModule(() => import("./send-CrfEI6Bs.mjs").then((n) => n.t));
29
+ const loadDiscordSendRuntime = createLazyRuntimeModule(() => import("./send-DY5EeBPr.mjs").then((n) => n.t));
30
30
  async function resolveDiscordDmPreflightAccess(params) {
31
31
  if (params.dmPolicy === "disabled") {
32
32
  logVerbose("discord: drop dm (dmPolicy: disabled)");
@@ -1,11 +1,11 @@
1
- import { t as isDiscordThreadChannelType } from "./channel-type-DRCrEMss.mjs";
2
- import { E as resolveDiscordMessageStickers } from "./transcripts-source-p8EV179h.mjs";
3
- import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
1
+ import { k as isDiscordThreadChannelType } from "./allow-list-Kty_8Xca.mjs";
2
+ import { E as resolveDiscordMessageStickers } from "./transcripts-source-CHhpvL97.mjs";
3
+ import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
4
4
  import { logVerbose } from "openclaw/plugin-sdk/runtime-env";
5
+ import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
6
  import { findCodeRegions, isInsideCode } from "openclaw/plugin-sdk/text-chunking";
6
- import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
7
- import { implicitMentionKindWhen, matchesMentionWithExplicit, normalizeMentionText } from "openclaw/plugin-sdk/channel-inbound";
8
7
  import { filterSupplementalContextItems } from "openclaw/plugin-sdk/security-runtime";
8
+ import { implicitMentionKindWhen, matchesMentionWithExplicit, normalizeMentionText } from "openclaw/plugin-sdk/channel-inbound";
9
9
  //#region extensions/discord/src/monitor/message-handler.preflight-helpers.ts
10
10
  const DISCORD_BOUND_THREAD_SYSTEM_PREFIXES = [
11
11
  "⚙️",
@@ -118,8 +118,8 @@ function resolveDiscordHistoryMediaIds(message) {
118
118
  //#region extensions/discord/src/monitor/message-handler.preflight-runtime.ts
119
119
  const loadPluralKitRuntime = createLazyRuntimeModule(() => import("./pluralkit-a6_NLfH9.mjs").then((n) => n.n));
120
120
  const loadPreflightAudioRuntime = createLazyRuntimeModule(() => import("./preflight-audio-DHGIHEpv.mjs"));
121
- const loadSystemEventsRuntime = createLazyRuntimeModule(() => import("./system-events-CdeZnvPV.mjs"));
122
- const loadDiscordThreadingRuntime = createLazyRuntimeModule(() => import("./transcripts-source-p8EV179h.mjs").then((n) => n.d));
121
+ const loadSystemEventsRuntime = createLazyRuntimeModule(() => import("./system-events-I1rH-U6o.mjs"));
122
+ const loadDiscordThreadingRuntime = createLazyRuntimeModule(() => import("./transcripts-source-CHhpvL97.mjs").then((n) => n.d));
123
123
  //#endregion
124
124
  //#region extensions/discord/src/monitor/message-handler.preflight-pluralkit.ts
125
125
  async function resolveDiscordPreflightPluralKitInfo(params) {
@@ -1,39 +1,39 @@
1
- import { C as withDiscordRequestAuthority, D as Message, Mt as getGuildMember, ct as createChannelMessage, dt as deleteChannelMessage, pt as editChannelMessage, t as discord_exports, vt as listChannelMessages } from "./discord-0xJYfdDD.mjs";
2
- import { i as normalizeDiscordAllowList, o as normalizeDiscordSlug, w as resolveTimestampMs } from "./channel-type-DRCrEMss.mjs";
3
- import { p as resolveDiscordMaxLinesPerMessage } from "./accounts-ChaMcixG.mjs";
4
- import { o as chunkDiscordTextWithMode, x as resolveDiscordChannelId } from "./retry-pz_cSha2.mjs";
5
- import { N as createDiscordRestClient, O as resolveDiscordMessageFlags, P as createDiscordRuntimeAccountContext, u as resolveDiscordTargetChannelId } from "./send.shared-DGFkbkQR.mjs";
6
- import { a as discordTextHasBroadcastMention } from "./send.outbound-BISKnb-a.mjs";
7
- import { C as resolveReferencedReplyMediaList, E as resolveDiscordMessageStickers, O as resolveDiscordReferencedReplyMessageId, _ as resolveDiscordMessageHistoryText, b as formatDiscordMediaText, f as resolveDiscordAutoThreadReplyPlan, m as resolveDiscordThreadStarter, y as resolveDiscordMessageText } from "./transcripts-source-p8EV179h.mjs";
8
- import { a as removeReactionDiscord, r as reactMessageDiscord } from "./send-CrfEI6Bs.mjs";
1
+ import { p as resolveDiscordMaxLinesPerMessage } from "./accounts-DS-A-gCx.mjs";
2
+ import { C as resolveTimestampMs, a as normalizeDiscordSlug, r as normalizeDiscordAllowList } from "./allow-list-Kty_8Xca.mjs";
3
+ import { F as createDiscordRuntimeAccountContext, O as resolveDiscordMessageFlags, P as createDiscordRestClient, u as resolveDiscordTargetChannelId } from "./send.shared-r0Fj2v_h.mjs";
4
+ import { C as withDiscordRequestAuthority, D as Message, Mt as getGuildMember, ct as createChannelMessage, dt as deleteChannelMessage, pt as editChannelMessage, t as discord_exports, vt as listChannelMessages } from "./discord-DTLP81g6.mjs";
5
+ import { b as chunkDiscordTextWithMode, m as resolveDiscordChannelId } from "./send.receipt-D0JBijZQ.mjs";
6
+ import { a as removeReactionDiscord, r as reactMessageDiscord } from "./send-DY5EeBPr.mjs";
7
+ import { a as discordTextHasBroadcastMention } from "./send.outbound-DR8O-Pvo.mjs";
9
8
  import { n as DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, t as DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS } from "./timeouts-D86uWLt_.mjs";
10
- import "./targets-0KUcEIYx.mjs";
11
- import { b as discordInboundEventDelivery, h as resolveDiscordConversationIdentity, u as buildDiscordRoutePeer } from "./outbound-session-route-zVGxxceg.mjs";
12
- import { t as DISCORD_TEXT_CHUNK_LIMIT } from "./outbound-adapter-BobT-kse.mjs";
13
- import { T as createDiscordSupplementalContextAccessChecker, a as formatDiscordReplySkip, c as buildGuildLabel, i as formatDiscordReplyDeliveryFailure, l as resolveReplyContext, o as sanitizeDiscordFrontChannelReplyPayloads, r as deliverDiscordReply, s as buildDirectLabel, w as buildDiscordInboundAccessContext } from "./provider-B_G5hASF.mjs";
14
- import { n as resolveDiscordWebhookId, t as resolveDiscordSenderIdentity } from "./sender-identity-B9X5Vb9R.mjs";
9
+ import "./targets-CJkVZIkE.mjs";
10
+ import { b as discordInboundEventDelivery, h as resolveDiscordConversationIdentity, u as buildDiscordRoutePeer } from "./outbound-session-route-D0ryINch.mjs";
11
+ import { t as DISCORD_TEXT_CHUNK_LIMIT } from "./outbound-adapter-CSiCDzCN.mjs";
12
+ import { T as createDiscordSupplementalContextAccessChecker, a as formatDiscordReplySkip, c as buildGuildLabel, i as formatDiscordReplyDeliveryFailure, l as resolveReplyContext, o as sanitizeDiscordFrontChannelReplyPayloads, r as deliverDiscordReply, s as buildDirectLabel, w as buildDiscordInboundAccessContext } from "./provider-BTm60b3t.mjs";
13
+ import { C as resolveReferencedReplyMediaList, E as resolveDiscordMessageStickers, O as resolveDiscordReferencedReplyMessageId, _ as resolveDiscordMessageHistoryText, b as formatDiscordMediaText, f as resolveDiscordAutoThreadReplyPlan, m as resolveDiscordThreadStarter, y as resolveDiscordMessageText } from "./transcripts-source-CHhpvL97.mjs";
14
+ import { n as resolveDiscordWebhookId, t as resolveDiscordSenderIdentity } from "./sender-identity-DQCoikZl.mjs";
15
15
  import { t as beginDiscordActiveTurnThreadRoute } from "./active-turn-thread-route-fmHl1HNd.mjs";
16
- import { a as createDiscordHistorySenderProvenance, h as shouldIgnoreBoundThreadWebhookMessage, l as isBoundThreadBotSystemMessage, o as filterDiscordHistoryEntriesForContext, s as resolveDiscordHistoryMediaIds, t as resolveDiscordPreflightPluralKitInfo } from "./message-handler.preflight-pluralkit-CWLUBVcx.mjs";
17
- import { t as sendTyping } from "./typing-BiHCzBRu.mjs";
16
+ import { a as createDiscordHistorySenderProvenance, h as shouldIgnoreBoundThreadWebhookMessage, l as isBoundThreadBotSystemMessage, o as filterDiscordHistoryEntriesForContext, s as resolveDiscordHistoryMediaIds, t as resolveDiscordPreflightPluralKitInfo } from "./message-handler.preflight-pluralkit-TPGXsd8P.mjs";
17
+ import { t as sendTyping } from "./typing-Cr0b2zBq.mjs";
18
18
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
19
- import { buildAgentSessionKey, resolveThreadSessionKeys } from "openclaw/plugin-sdk/routing";
19
+ import { danger, logVerbose, shouldLogVerbose, sleepWithAbort } from "openclaw/plugin-sdk/runtime-env";
20
20
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
21
+ import { buildAgentSessionKey, resolveThreadSessionKeys } from "openclaw/plugin-sdk/routing";
22
+ import { getAgentScopedMediaLocalRoots } from "openclaw/plugin-sdk/media-runtime";
21
23
  import { getReplyPayloadTtsSupplement, isReplyPayloadNonTerminalToolErrorWarning, resolveSendableOutboundReplyParts } from "openclaw/plugin-sdk/reply-payload";
22
- import { danger, logVerbose, shouldLogVerbose, sleepWithAbort } from "openclaw/plugin-sdk/runtime-env";
23
- import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
24
24
  import { resolveChunkMode } from "openclaw/plugin-sdk/reply-chunking";
25
- import { resolveMarkdownTableMode } from "openclaw/plugin-sdk/markdown-table-runtime";
26
25
  import { stripInlineDirectiveTagsForDelivery, stripReasoningTagsFromText } from "openclaw/plugin-sdk/text-chunking";
26
+ import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
27
27
  import { resolveBatchedReplyThreadingPolicy } from "openclaw/plugin-sdk/reply-reference";
28
+ import { resolveMarkdownTableMode } from "openclaw/plugin-sdk/markdown-table-runtime";
28
29
  import { bindIngressLifecycleToReplyOptions, createChannelMessageReplyPipeline, createChannelProgressDraftCompositor, createFinalizableDraftLifecycle, createLivePreviewLifecycle, createTypingCallbacks, isRecentOutboundMessageIdentity, resolveChannelDraftStreamingChunking, resolveChannelMessageSourceReplyDeliveryMode, resolveChannelPreviewStreamMode, resolveChannelStreamingBlockEnabled, resolveChannelStreamingPreviewCommandText, resolveChannelStreamingProgressNarration, resolveTranscriptBackedChannelFinalText } from "openclaw/plugin-sdk/channel-outbound";
29
- import { getAgentScopedMediaLocalRoots } from "openclaw/plugin-sdk/media-runtime";
30
- import { buildChannelInboundEventContext, createCommandTurnContext, dispatchChannelInboundTurn, formatInboundEnvelope, formatInboundMediaUnavailableText, getGroupThreadDeliverySession, hasFinalInboundReplyDispatch, readAgentRunTerminalOutcome, resolveEnvelopeFormatOptions, toHistoryMediaEntries, toInboundMediaFactsWithMetadata } from "openclaw/plugin-sdk/channel-inbound";
31
30
  import { evaluateSupplementalContextVisibility } from "openclaw/plugin-sdk/security-runtime";
32
31
  import { resolvePinnedMainDmOwnerFromAllowlist as resolvePinnedMainDmOwnerFromAllowlist$1 } from "openclaw/plugin-sdk/conversation-runtime";
33
32
  import { resolveAgentConfig } from "openclaw/plugin-sdk/agent-scope-runtime";
34
33
  import { isDangerousNameMatchingEnabled } from "openclaw/plugin-sdk/dangerous-name-runtime";
35
34
  import { EmbeddedBlockChunker, resolveAckReaction, resolveAgentConfig as resolveAgentConfig$1, resolveHumanDelayConfig } from "openclaw/plugin-sdk/agent-runtime";
36
35
  import { getSessionEntry, readSessionUpdatedAt, resolveStorePath } from "openclaw/plugin-sdk/session-store-runtime";
36
+ import { buildChannelInboundEventContext, createCommandTurnContext, dispatchChannelInboundTurn, formatInboundEnvelope, formatInboundMediaUnavailableText, getGroupThreadDeliverySession, hasFinalInboundReplyDispatch, readAgentRunTerminalOutcome, resolveEnvelopeFormatOptions, toHistoryMediaEntries, toInboundMediaFactsWithMetadata } from "openclaw/plugin-sdk/channel-inbound";
37
37
  import { getGlobalHookRunner } from "openclaw/plugin-sdk/plugin-runtime";
38
38
  import { buildHistoryContextFromEntries, buildInboundHistoryFromEntries, createChannelHistoryWindow } from "openclaw/plugin-sdk/reply-history";
39
39
  import { resolveChannelContextVisibilityMode } from "openclaw/plugin-sdk/context-visibility-runtime";