@openclaw/discord 2026.5.19 → 2026.5.20-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 (99) hide show
  1. package/dist/{account-inspect-DCXwNu_u.js → account-inspect-CcJ-bl80.js} +1 -1
  2. package/dist/account-inspect-api.js +1 -1
  3. package/dist/action-runtime-api.js +1 -1
  4. package/dist/api.js +19 -19
  5. package/dist/{approval-handler.runtime-CRpNixJy.js → approval-handler.runtime-hi6B0JCi.js} +4 -4
  6. package/dist/{audit-DEF10R9j.js → audit-DJIvRRzY.js} +5 -5
  7. package/dist/{channel-CR9HckAC.js → channel-BswuOAN6.js} +22 -22
  8. package/dist/{channel-actions-CpmPx9PW.js → channel-actions-CSepY2Kq.js} +5 -5
  9. package/dist/{channel-actions.runtime-Be5OvB1r.js → channel-actions.runtime-CSjcHZNT.js} +6 -6
  10. package/dist/channel-config-api.js +1 -1
  11. package/dist/channel-plugin-api.js +1 -1
  12. package/dist/{channel.setup-DR3-U0wF.js → channel.setup-C0rcLtB9.js} +4 -4
  13. package/dist/{components-q41bHoCx.js → components-DDPGekgY.js} +1 -1
  14. package/dist/{config-schema-jz2FX2x5.js → config-schema-BGgg8U6A.js} +13 -1
  15. package/dist/contract-api.js +7 -7
  16. package/dist/{conversation-identity-BY7sjUQh.js → conversation-identity-CAyt5wzy.js} +3 -3
  17. package/dist/{directory-config-x3YzNdoX.js → directory-config-BcWtq4k8.js} +2 -2
  18. package/dist/directory-contract-api.js +1 -1
  19. package/dist/{directory-live-CJiEWQwK.js → directory-live-5HHCCe5Q.js} +4 -4
  20. package/dist/{doctor-CzcS8Yt1.js → doctor-BLcVWv42.js} +5 -5
  21. package/dist/{doctor-contract-AkgUZQHW.js → doctor-contract-Bia3BmP_.js} +1 -1
  22. package/dist/doctor-contract-api.js +1 -1
  23. package/dist/{handle-action.guild-admin-kAzbjGMw.js → handle-action.guild-admin-DX2D9qkG.js} +1 -1
  24. package/dist/{inbound-context-CzEAvKgx.js → inbound-context-B5EsqsSr.js} +1 -1
  25. package/dist/{manager.runtime-CGcJ0yjq.js → manager.runtime-Dq0mc5K0.js} +364 -22
  26. package/dist/{message-handler-1NV0WiHC.js → message-handler-wQJd4Peh.js} +7 -7
  27. package/dist/{message-handler.preflight-DQ-oPY7m.js → message-handler.preflight-ANdoLbtA.js} +16 -18
  28. package/dist/{message-handler.process-PpgZ0qC4.js → message-handler.process-DG4qm0sQ.js} +27 -16
  29. package/dist/{message-utils-BKrlzFtM.js → message-utils-Bw-wDr8G.js} +2 -2
  30. package/dist/{outbound-adapter-CaZzpMnE.js → outbound-adapter-TGbHliO_.js} +8 -8
  31. package/dist/{pluralkit-BnCH6cHK.js → pluralkit-sQLfeyIZ.js} +1 -1
  32. package/dist/{preflight-audio-B0keJeQe.js → preflight-audio-ClWbnQto.js} +1 -1
  33. package/dist/{probe-BLDNbk41.js → probe-CRWV5COl.js} +2 -2
  34. package/dist/{probe.runtime-DKB38YvU.js → probe.runtime-h9mEzmMs.js} +1 -1
  35. package/dist/{provider-BZtjA1y_.js → provider-CzKMDsSE.js} +45 -64
  36. package/dist/{provider-session.runtime-DVfzQxFH.js → provider-session.runtime-D0XbJS5X.js} +3 -3
  37. package/dist/provider.runtime-CUUefRl3.js +2 -0
  38. package/dist/{resolve-allowlist-common-C8L5MYFl.js → resolve-allowlist-common-Bec0FONA.js} +3 -3
  39. package/dist/{resolve-channels-Czrd7fOv.js → resolve-channels-DcWaMURg.js} +4 -4
  40. package/dist/{resolve-users-D7hQMaaq.js → resolve-users-TQPLKDeV.js} +3 -3
  41. package/dist/{runtime-BJUWt4mA.js → runtime-DP_0_5a0.js} +9 -9
  42. package/dist/runtime-api.actions.js +2 -2
  43. package/dist/runtime-api.js +25 -25
  44. package/dist/runtime-api.lookup.js +6 -6
  45. package/dist/runtime-api.monitor-D1psRR2u.js +5 -0
  46. package/dist/runtime-api.monitor.js +7 -7
  47. package/dist/runtime-api.send.js +5 -5
  48. package/dist/runtime-api.threads.js +5 -5
  49. package/dist/runtime-setter-api.js +1 -1
  50. package/dist/secret-contract-api.js +1 -1
  51. package/dist/{security-audit-Dx3j4a0l.js → security-audit-C_fzlczo.js} +1 -1
  52. package/dist/security-audit-contract-api.js +1 -1
  53. package/dist/{security-audit.runtime-C5nnf0k8.js → security-audit.runtime-Dt4zoGpL.js} +1 -1
  54. package/dist/security-contract-api.js +1 -1
  55. package/dist/{send-BsBy21Te.js → send-CEAtV0qd.js} +5 -6
  56. package/dist/{send.components-BuZBJysI.js → send.components-sY6aQV0K.js} +8 -8
  57. package/dist/{send.outbound-C0OzZAv_.js → send.outbound-1vG9pOh2.js} +4 -4
  58. package/dist/{send.shared-C6JLgsbp.js → send.shared-D4clao4K.js} +3 -3
  59. package/dist/{sender-identity-DC0FdEcU.js → sender-identity-BFp5w0F8.js} +1 -1
  60. package/dist/session-key-api.js +1 -1
  61. package/dist/setup-plugin-api.js +1 -1
  62. package/dist/{shared-CYe5A_Bs.js → shared-mo-r7V5W.js} +10 -10
  63. package/dist/{subagent-hooks-DCIt8Gt7.js → subagent-hooks-D65kqOor.js} +3 -3
  64. package/dist/subagent-hooks-api.js +1 -1
  65. package/dist/{system-events-DEuiLTl9.js → system-events-HgHeiMHg.js} +2 -2
  66. package/dist/{target-resolver-C5tK3vit.js → target-resolver-BpGdnBIZ.js} +3 -3
  67. package/dist/targets-DMdVjHOU.js +3 -0
  68. package/dist/test-api.js +4 -4
  69. package/dist/{thread-bindings-BcXgbZ3-.js → thread-bindings-BQz8z6MR.js} +6 -6
  70. package/dist/{thread-bindings.discord-api-BzelVdsY.js → thread-bindings.discord-api-Ddalj9wo.js} +5 -5
  71. package/dist/{thread-bindings.manager-CouT_qjE.js → thread-bindings.manager-I5f-Oykv.js} +4 -4
  72. package/dist/{thread-bindings.session-updates-CgOqEOPe.js → thread-bindings.session-updates-D5gY2ZTE.js} +1 -1
  73. package/dist/timeouts.js +1 -1
  74. package/dist/{typing-DtdZgo-g.js → typing-DUUjLsPr.js} +2 -2
  75. package/openclaw.plugin.json +72 -2
  76. package/package.json +4 -4
  77. package/dist/provider.runtime-DlegJeN5.js +0 -2
  78. package/dist/runtime-api.monitor-BlxEnLN_.js +0 -5
  79. package/dist/targets-JvlTzyfK.js +0 -3
  80. /package/dist/{accounts-ltxKLzxN.js → accounts-C2TOAmpo.js} +0 -0
  81. /package/dist/{agent-components.runtime-BIemD2Iz.js → agent-components.runtime-CEPrf2SY.js} +0 -0
  82. /package/dist/{allow-list-CBI-M84K.js → allow-list-BnkWtVpA.js} +0 -0
  83. /package/dist/{api-DgQLz1wq.js → api-Kq7vtaSO.js} +0 -0
  84. /package/dist/{audit-core-DRyoXREU.js → audit-core-xwjIczO0.js} +0 -0
  85. /package/dist/{channel-api-JudoSiJv.js → channel-api-CAJ0wMoV.js} +0 -0
  86. /package/dist/{config-api-oLS_52S7.js → config-api-JiPdJeb0.js} +0 -0
  87. /package/dist/{gateway-registry-BKSpa4GB.js → gateway-registry-DPxmW0Db.js} +0 -0
  88. /package/dist/{inbound-event-delivery-D8zHG9Lz.js → inbound-event-delivery-DTGIjZVJ.js} +0 -0
  89. /package/dist/{preflight-audio.runtime-DT1Hmhsq.js → preflight-audio.runtime-CoCXMM8r.js} +0 -0
  90. /package/dist/{preview-streaming-nClS_TQx.js → preview-streaming-CQ7PsV9J.js} +0 -0
  91. /package/dist/{runtime-Tqtvj5GX.js → runtime-DgnVQ7zW.js} +0 -0
  92. /package/dist/{secret-config-contract-57_WV6qt.js → secret-config-contract-BjM-1hr9.js} +0 -0
  93. /package/dist/{security-contract-BWDASKVo.js → security-contract-DSHk7I2w.js} +0 -0
  94. /package/dist/{security-doctor-DepqtNCI.js → security-doctor-uUo8hTD5.js} +0 -0
  95. /package/dist/{send.receipt-Dhym-qOF.js → send.receipt-spSPAC77.js} +0 -0
  96. /package/dist/{session-contract-Dwhw3RTY.js → session-contract-BO5tlIdl.js} +0 -0
  97. /package/dist/{session-key-normalization-DnCXUKGA.js → session-key-normalization-wJgsKPNF.js} +0 -0
  98. /package/dist/{thread-bindings.state-CSphZOiL.js → thread-bindings.state-BsOnj5NX.js} +0 -0
  99. /package/dist/{timeouts-CEwuGaWT.js → timeouts-l_PsHQvX.js} +0 -0
@@ -1,7 +1,7 @@
1
- import { n as listDiscordDirectoryGroupsLive, r as listDiscordDirectoryPeersLive } from "./directory-live-CJiEWQwK.js";
2
- import { r as setDiscordRuntime } from "./runtime-Tqtvj5GX.js";
3
- import { t as resolveDiscordChannelAllowlist } from "./resolve-channels-Czrd7fOv.js";
4
- import { t as resolveDiscordUserAllowlist } from "./resolve-users-D7hQMaaq.js";
5
- import { a as resolveDiscordPrivilegedIntentsFromFlags, i as probeDiscord, n as fetchDiscordApplicationSummary, r as parseApplicationIdFromToken, t as fetchDiscordApplicationId } from "./probe-BLDNbk41.js";
6
- import { r as collectDiscordAuditChannelIds, t as auditDiscordChannelPermissions } from "./audit-DEF10R9j.js";
1
+ import { n as listDiscordDirectoryGroupsLive, r as listDiscordDirectoryPeersLive } from "./directory-live-5HHCCe5Q.js";
2
+ import { r as setDiscordRuntime } from "./runtime-DgnVQ7zW.js";
3
+ import { t as resolveDiscordChannelAllowlist } from "./resolve-channels-DcWaMURg.js";
4
+ import { t as resolveDiscordUserAllowlist } from "./resolve-users-TQPLKDeV.js";
5
+ import { a as resolveDiscordPrivilegedIntentsFromFlags, i as probeDiscord, n as fetchDiscordApplicationSummary, r as parseApplicationIdFromToken, t as fetchDiscordApplicationId } from "./probe-CRWV5COl.js";
6
+ import { r as collectDiscordAuditChannelIds, t as auditDiscordChannelPermissions } from "./audit-DJIvRRzY.js";
7
7
  export { auditDiscordChannelPermissions, collectDiscordAuditChannelIds, fetchDiscordApplicationId, fetchDiscordApplicationSummary, listDiscordDirectoryGroupsLive, listDiscordDirectoryPeersLive, parseApplicationIdFromToken, probeDiscord, resolveDiscordChannelAllowlist, resolveDiscordPrivilegedIntentsFromFlags, resolveDiscordUserAllowlist, setDiscordRuntime };
@@ -0,0 +1,5 @@
1
+ import "./allow-list-BnkWtVpA.js";
2
+ import "./provider-CzKMDsSE.js";
3
+ import "./message-utils-Bw-wDr8G.js";
4
+ import "./message-handler-wQJd4Peh.js";
5
+ export {};
@@ -1,8 +1,8 @@
1
- import { a as clearPresences, c as setPresence, i as unregisterGateway, n as getGateway, o as getPresence, r as registerGateway, s as presenceCacheSize, t as clearGateways } from "./gateway-registry-BKSpa4GB.js";
2
- import { _ as resolveGroupDmAllow, a as normalizeDiscordSlug, c as resolveDiscordChannelConfigWithFallback, d as resolveDiscordGuildEntry, g as resolveDiscordShouldRequireMention, n as isDiscordGroupAllowedByPolicy, r as normalizeDiscordAllowList, s as resolveDiscordChannelConfig, t as allowListMatches, u as resolveDiscordCommandAuthorized, v as shouldEmitDiscordReactionNotification } from "./allow-list-CBI-M84K.js";
3
- import { a as mergeAbortSignals, i as DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, n as DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, r as DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, t as DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS } from "./timeouts-CEwuGaWT.js";
4
- import { S as sanitizeDiscordThreadName, _ as registerDiscordListener, b as resolveDiscordReplyTarget, c as resolveDiscordGatewayIntents, d as createDiscordNativeCommand, l as waitForDiscordGatewayPluginRegistration, s as createDiscordGatewayPlugin, t as monitorDiscordProvider } from "./provider-BZtjA1y_.js";
5
- import { i as buildDiscordMediaPayload } from "./message-utils-BKrlzFtM.js";
6
- import { t as createDiscordMessageHandler } from "./message-handler-1NV0WiHC.js";
7
- import "./runtime-api.monitor-BlxEnLN_.js";
1
+ import { a as clearPresences, c as setPresence, i as unregisterGateway, n as getGateway, o as getPresence, r as registerGateway, s as presenceCacheSize, t as clearGateways } from "./gateway-registry-DPxmW0Db.js";
2
+ import { _ as resolveGroupDmAllow, a as normalizeDiscordSlug, c as resolveDiscordChannelConfigWithFallback, d as resolveDiscordGuildEntry, g as resolveDiscordShouldRequireMention, n as isDiscordGroupAllowedByPolicy, r as normalizeDiscordAllowList, s as resolveDiscordChannelConfig, t as allowListMatches, u as resolveDiscordCommandAuthorized, v as shouldEmitDiscordReactionNotification } from "./allow-list-BnkWtVpA.js";
3
+ import { a as mergeAbortSignals, i as DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, n as DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, r as DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, t as DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS } from "./timeouts-l_PsHQvX.js";
4
+ import { S as sanitizeDiscordThreadName, _ as registerDiscordListener, b as resolveDiscordReplyTarget, c as resolveDiscordGatewayIntents, d as createDiscordNativeCommand, l as waitForDiscordGatewayPluginRegistration, s as createDiscordGatewayPlugin, t as monitorDiscordProvider } from "./provider-CzKMDsSE.js";
5
+ import { i as buildDiscordMediaPayload } from "./message-utils-Bw-wDr8G.js";
6
+ import { t as createDiscordMessageHandler } from "./message-handler-wQJd4Peh.js";
7
+ import "./runtime-api.monitor-D1psRR2u.js";
8
8
  export { DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS, DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, allowListMatches, buildDiscordMediaPayload, clearGateways, clearPresences, createDiscordGatewayPlugin, createDiscordMessageHandler, createDiscordNativeCommand, getGateway, getPresence, isDiscordGroupAllowedByPolicy, mergeAbortSignals, monitorDiscordProvider, normalizeDiscordAllowList, normalizeDiscordSlug, presenceCacheSize, registerDiscordListener, registerGateway, resolveDiscordChannelConfig, resolveDiscordChannelConfigWithFallback, resolveDiscordCommandAuthorized, resolveDiscordGatewayIntents, resolveDiscordGuildEntry, resolveDiscordReplyTarget, resolveDiscordShouldRequireMention, resolveGroupDmAllow, sanitizeDiscordThreadName, setPresence, shouldEmitDiscordReactionNotification, unregisterGateway, waitForDiscordGatewayPluginRegistration };
@@ -1,6 +1,6 @@
1
- import { x as resolveDiscordOutboundSessionRoute } from "./components-q41bHoCx.js";
2
- import { n as registerBuiltDiscordComponentMessage, r as sendDiscordComponentMessage, t as editDiscordComponentMessage } from "./send.components-BuZBJysI.js";
3
- import { D as fetchMemberGuildPermissionsDiscord, E as fetchChannelPermissionsDiscord, O as hasAllGuildPermissionsDiscord, k as hasAnyGuildPermissionDiscord, w as DiscordSendError } from "./send.shared-C6JLgsbp.js";
4
- import { A as removeRoleDiscord, B as removeChannelPermissionDiscord, C as fetchChannelInfoDiscord, D as kickMemberDiscord, E as fetchVoiceStatusDiscord, F as uploadStickerDiscord, I as createChannelDiscord, L as deleteChannelDiscord, M as timeoutMemberDiscord, N as listGuildEmojisDiscord, O as listGuildChannelsDiscord, P as uploadEmojiDiscord, R as editChannelDiscord, S as createScheduledEventDiscord, T as fetchRoleInfoDiscord, V as setChannelPermissionDiscord, _ as readMessagesDiscord, a as removeReactionDiscord, b as addRoleDiscord, c as sendWebhookMessageDiscord, d as deleteMessageDiscord, f as editMessageDiscord, g as pinMessageDiscord, h as listThreadsDiscord, i as removeOwnReactionsDiscord, j as resolveEventCoverImage, k as listScheduledEventsDiscord, m as listPinsDiscord, n as fetchReactionsDiscord, o as sendTypingDiscord, p as fetchMessageDiscord, r as reactMessageDiscord, s as sendVoiceMessageDiscord, u as createThreadDiscord, v as searchMessagesDiscord, w as fetchMemberInfoDiscord, x as banMemberDiscord, y as unpinMessageDiscord, z as moveChannelDiscord } from "./send-BsBy21Te.js";
5
- import { n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-C0OzZAv_.js";
1
+ import { x as resolveDiscordOutboundSessionRoute } from "./components-DDPGekgY.js";
2
+ import { n as registerBuiltDiscordComponentMessage, r as sendDiscordComponentMessage, t as editDiscordComponentMessage } from "./send.components-sY6aQV0K.js";
3
+ import { D as fetchMemberGuildPermissionsDiscord, E as fetchChannelPermissionsDiscord, O as hasAllGuildPermissionsDiscord, k as hasAnyGuildPermissionDiscord, w as DiscordSendError } from "./send.shared-D4clao4K.js";
4
+ import { A as removeRoleDiscord, B as removeChannelPermissionDiscord, C as fetchChannelInfoDiscord, D as kickMemberDiscord, E as fetchVoiceStatusDiscord, F as uploadStickerDiscord, I as createChannelDiscord, L as deleteChannelDiscord, M as timeoutMemberDiscord, N as listGuildEmojisDiscord, O as listGuildChannelsDiscord, P as uploadEmojiDiscord, R as editChannelDiscord, S as createScheduledEventDiscord, T as fetchRoleInfoDiscord, V as setChannelPermissionDiscord, _ as readMessagesDiscord, a as removeReactionDiscord, b as addRoleDiscord, c as sendWebhookMessageDiscord, d as deleteMessageDiscord, f as editMessageDiscord, g as pinMessageDiscord, h as listThreadsDiscord, i as removeOwnReactionsDiscord, j as resolveEventCoverImage, k as listScheduledEventsDiscord, m as listPinsDiscord, n as fetchReactionsDiscord, o as sendTypingDiscord, p as fetchMessageDiscord, r as reactMessageDiscord, s as sendVoiceMessageDiscord, u as createThreadDiscord, v as searchMessagesDiscord, w as fetchMemberInfoDiscord, x as banMemberDiscord, y as unpinMessageDiscord, z as moveChannelDiscord } from "./send-CEAtV0qd.js";
5
+ import { n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-1vG9pOh2.js";
6
6
  export { DiscordSendError, addRoleDiscord, banMemberDiscord, createChannelDiscord, createScheduledEventDiscord, createThreadDiscord, deleteChannelDiscord, deleteMessageDiscord, editChannelDiscord, editDiscordComponentMessage, editMessageDiscord, fetchChannelInfoDiscord, fetchChannelPermissionsDiscord, fetchMemberGuildPermissionsDiscord, fetchMemberInfoDiscord, fetchMessageDiscord, fetchReactionsDiscord, fetchRoleInfoDiscord, fetchVoiceStatusDiscord, hasAllGuildPermissionsDiscord, hasAnyGuildPermissionDiscord, kickMemberDiscord, listGuildChannelsDiscord, listGuildEmojisDiscord, listPinsDiscord, listScheduledEventsDiscord, listThreadsDiscord, moveChannelDiscord, pinMessageDiscord, reactMessageDiscord, readMessagesDiscord, registerBuiltDiscordComponentMessage, removeChannelPermissionDiscord, removeOwnReactionsDiscord, removeReactionDiscord, removeRoleDiscord, resolveDiscordOutboundSessionRoute, resolveEventCoverImage, searchMessagesDiscord, sendDiscordComponentMessage, sendMessageDiscord, sendPollDiscord, sendStickerDiscord, sendTypingDiscord, sendVoiceMessageDiscord, sendWebhookMessageDiscord, setChannelPermissionDiscord, timeoutMemberDiscord, unpinMessageDiscord, uploadEmojiDiscord, uploadStickerDiscord };
@@ -1,6 +1,6 @@
1
- import { C as resolveThreadBindingMaxAgeMs, S as resolveThreadBindingMaxAgeExpiresAt, b as resolveThreadBindingIdleTimeoutMs, l as isRecentlyUnboundThreadWebhookMessage, x as resolveThreadBindingInactivityExpiresAt } from "./thread-bindings.state-CSphZOiL.js";
2
- import { n as setThreadBindingMaxAgeBySessionKey, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-CgOqEOPe.js";
3
- import { _ as formatThreadBindingDurationLabel, b as resolveThreadBindingThreadName, g as resolveThreadBindingPersonaFromRecord, h as resolveThreadBindingPersona, y as resolveThreadBindingIntroText } from "./thread-bindings.discord-api-BzelVdsY.js";
4
- import { a as reconcileAcpThreadBindingsOnStartup, c as resolveDiscordThreadBindingMaxAgeMs, i as listThreadBindingsForAccount, l as resolveThreadBindingsEnabled, n as autoBindSpawnedDiscordSubagent, o as unbindThreadBindingsBySessionKey, r as listThreadBindingsBySessionKey, s as resolveDiscordThreadBindingIdleTimeoutMs } from "./thread-bindings-BcXgbZ3-.js";
5
- import { i as testing, n as createThreadBindingManager, r as getThreadBindingManager, t as createNoopThreadBindingManager } from "./thread-bindings.manager-CouT_qjE.js";
1
+ import { C as resolveThreadBindingMaxAgeMs, S as resolveThreadBindingMaxAgeExpiresAt, b as resolveThreadBindingIdleTimeoutMs, l as isRecentlyUnboundThreadWebhookMessage, x as resolveThreadBindingInactivityExpiresAt } from "./thread-bindings.state-BsOnj5NX.js";
2
+ import { n as setThreadBindingMaxAgeBySessionKey, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-D5gY2ZTE.js";
3
+ import { _ as formatThreadBindingDurationLabel, b as resolveThreadBindingThreadName, g as resolveThreadBindingPersonaFromRecord, h as resolveThreadBindingPersona, y as resolveThreadBindingIntroText } from "./thread-bindings.discord-api-Ddalj9wo.js";
4
+ import { a as reconcileAcpThreadBindingsOnStartup, c as resolveDiscordThreadBindingMaxAgeMs, i as listThreadBindingsForAccount, l as resolveThreadBindingsEnabled, n as autoBindSpawnedDiscordSubagent, o as unbindThreadBindingsBySessionKey, r as listThreadBindingsBySessionKey, s as resolveDiscordThreadBindingIdleTimeoutMs } from "./thread-bindings-BQz8z6MR.js";
5
+ import { i as testing, n as createThreadBindingManager, r as getThreadBindingManager, t as createNoopThreadBindingManager } from "./thread-bindings.manager-I5f-Oykv.js";
6
6
  export { testing as __testing, testing, autoBindSpawnedDiscordSubagent, createNoopThreadBindingManager, createThreadBindingManager, formatThreadBindingDurationLabel, getThreadBindingManager, isRecentlyUnboundThreadWebhookMessage, listThreadBindingsBySessionKey, listThreadBindingsForAccount, reconcileAcpThreadBindingsOnStartup, resolveDiscordThreadBindingIdleTimeoutMs, resolveDiscordThreadBindingMaxAgeMs, resolveThreadBindingIdleTimeoutMs, resolveThreadBindingInactivityExpiresAt, resolveThreadBindingIntroText, resolveThreadBindingMaxAgeExpiresAt, resolveThreadBindingMaxAgeMs, resolveThreadBindingPersona, resolveThreadBindingPersonaFromRecord, resolveThreadBindingThreadName, resolveThreadBindingsEnabled, setThreadBindingIdleTimeoutBySessionKey, setThreadBindingMaxAgeBySessionKey, unbindThreadBindingsBySessionKey };
@@ -1,2 +1,2 @@
1
- import { r as setDiscordRuntime } from "./runtime-Tqtvj5GX.js";
1
+ import { r as setDiscordRuntime } from "./runtime-DgnVQ7zW.js";
2
2
  export { setDiscordRuntime };
@@ -1,2 +1,2 @@
1
- import { n as secretTargetRegistryEntries, t as collectRuntimeConfigAssignments } from "./secret-config-contract-57_WV6qt.js";
1
+ import { n as secretTargetRegistryEntries, t as collectRuntimeConfigAssignments } from "./secret-config-contract-BjM-1hr9.js";
2
2
  export { collectRuntimeConfigAssignments, secretTargetRegistryEntries };
@@ -1,4 +1,4 @@
1
- import { t as isDiscordMutableAllowEntry } from "./security-doctor-DepqtNCI.js";
1
+ import { t as isDiscordMutableAllowEntry } from "./security-doctor-uUo8hTD5.js";
2
2
  import { coerceNativeSetting, normalizeAllowFromList } from "openclaw/plugin-sdk/channel-policy";
3
3
  import { readChannelAllowFromStore } from "openclaw/plugin-sdk/conversation-runtime";
4
4
  import { isDangerousNameMatchingEnabled } from "openclaw/plugin-sdk/dangerous-name-runtime";
@@ -1,2 +1,2 @@
1
- import { t as collectDiscordSecurityAuditFindings } from "./security-audit-Dx3j4a0l.js";
1
+ import { t as collectDiscordSecurityAuditFindings } from "./security-audit-C_fzlczo.js";
2
2
  export { collectDiscordSecurityAuditFindings };
@@ -1,2 +1,2 @@
1
- import { t as collectDiscordSecurityAuditFindings } from "./security-audit-Dx3j4a0l.js";
1
+ import { t as collectDiscordSecurityAuditFindings } from "./security-audit-C_fzlczo.js";
2
2
  export { collectDiscordSecurityAuditFindings };
@@ -1,2 +1,2 @@
1
- import { n as unsupportedSecretRefSurfacePatterns, t as collectUnsupportedSecretRefConfigCandidates } from "./security-contract-BWDASKVo.js";
1
+ import { n as unsupportedSecretRefSurfacePatterns, t as collectUnsupportedSecretRefConfigCandidates } from "./security-contract-DSHk7I2w.js";
2
2
  export { collectUnsupportedSecretRefConfigCandidates, unsupportedSecretRefSurfacePatterns };
@@ -1,7 +1,7 @@
1
- import { At as getGuildMember, Bt as removeGuildMemberRole, C as RateLimitError, Ct as createGuildBan, Dt as createGuildSticker, E as readRetryAfter, Et as createGuildScheduledEvent, Ft as listGuildRoles, It as listGuildScheduledEvents, Lt as moveGuildChannels, Mt as listGuildActiveThreads, Nt as listGuildChannels, Ot as deleteChannelPermission, Pt as listGuildEmojis, Rt as putChannelPermission, S as DiscordError, St as addGuildMemberRole, T as readDiscordMessage, Tt as createGuildEmoji, Vt as timeoutGuildMember, Wt as __exportAll, _t as listChannelPins, at as deleteOwnMessageReaction, bt as sendChannelTyping, ct as createThread, dt as editChannel, ft as editChannelMessage, gt as listChannelMessages, ht as listChannelArchivedThreads, it as createOwnMessageReaction, jt as getGuildVoiceState, lt as deleteChannel, mt as getChannelMessage, n as createDiscordSendResult, ot as listMessageReactionUsers, pt as getChannel, st as createChannelMessage, ut as deleteChannelMessage, vt as pinChannelMessage, w as readDiscordCode, wt as createGuildChannel, xt as unpinChannelMessage, yt as searchGuildMessages, zt as removeGuildMember } from "./send.receipt-Dhym-qOF.js";
2
- import { s as resolveDiscordAccount } from "./accounts-ltxKLzxN.js";
3
- import { C as DISCORD_MAX_STICKER_BYTES, D as fetchMemberGuildPermissionsDiscord, E as fetchChannelPermissionsDiscord, F as resolveDiscordClientAccountContext, I as resolveDiscordRest, M as createDiscordClient, O as hasAllGuildPermissionsDiscord, S as DISCORD_MAX_EVENT_COVER_BYTES, T as canViewDiscordGuildChannel, i as formatReactionEmoji, j as parseAndResolveRecipient, k as hasAnyGuildPermissionDiscord, l as resolveChannelId, o as normalizeEmojiName, r as buildReactionIdentifier, s as normalizeReactionEmoji, t as buildDiscordSendError, w as DiscordSendError, x as DISCORD_MAX_EMOJI_BYTES } from "./send.shared-C6JLgsbp.js";
4
- import { a as rewriteDiscordKnownMentions, n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-C0OzZAv_.js";
1
+ import { At as getGuildMember, Bt as removeGuildMemberRole, C as RateLimitError, Ct as createGuildBan, Dt as createGuildSticker, E as readRetryAfter, Et as createGuildScheduledEvent, Ft as listGuildRoles, It as listGuildScheduledEvents, Lt as moveGuildChannels, Mt as listGuildActiveThreads, Nt as listGuildChannels, Ot as deleteChannelPermission, Pt as listGuildEmojis, Rt as putChannelPermission, S as DiscordError, St as addGuildMemberRole, T as readDiscordMessage, Tt as createGuildEmoji, Vt as timeoutGuildMember, Wt as __exportAll, _t as listChannelPins, at as deleteOwnMessageReaction, bt as sendChannelTyping, ct as createThread, dt as editChannel, ft as editChannelMessage, gt as listChannelMessages, ht as listChannelArchivedThreads, it as createOwnMessageReaction, jt as getGuildVoiceState, lt as deleteChannel, mt as getChannelMessage, n as createDiscordSendResult, ot as listMessageReactionUsers, pt as getChannel, st as createChannelMessage, ut as deleteChannelMessage, vt as pinChannelMessage, w as readDiscordCode, wt as createGuildChannel, xt as unpinChannelMessage, yt as searchGuildMessages, zt as removeGuildMember } from "./send.receipt-spSPAC77.js";
2
+ import { s as resolveDiscordAccount } from "./accounts-C2TOAmpo.js";
3
+ import { C as DISCORD_MAX_STICKER_BYTES, D as fetchMemberGuildPermissionsDiscord, E as fetchChannelPermissionsDiscord, F as resolveDiscordClientAccountContext, I as resolveDiscordRest, M as createDiscordClient, O as hasAllGuildPermissionsDiscord, S as DISCORD_MAX_EVENT_COVER_BYTES, T as canViewDiscordGuildChannel, i as formatReactionEmoji, j as parseAndResolveRecipient, k as hasAnyGuildPermissionDiscord, l as resolveChannelId, o as normalizeEmojiName, r as buildReactionIdentifier, s as normalizeReactionEmoji, t as buildDiscordSendError, w as DiscordSendError, x as DISCORD_MAX_EMOJI_BYTES } from "./send.shared-D4clao4K.js";
4
+ import { a as rewriteDiscordKnownMentions, n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-1vG9pOh2.js";
5
5
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { ChannelType } from "discord-api-types/v10";
7
7
  import crypto from "node:crypto";
@@ -377,7 +377,6 @@ async function sendWebhookMessageDiscord(text, opts) {
377
377
  * - No other content (text, embeds, etc.)
378
378
  */
379
379
  const DISCORD_VOICE_MESSAGE_FLAG = 8192;
380
- const SUPPRESS_NOTIFICATIONS_FLAG = 4096;
381
380
  const WAVEFORM_SAMPLES = 256;
382
381
  const DISCORD_OPUS_SAMPLE_RATE_HZ = 48e3;
383
382
  const DISCORD_VOICE_UPLOAD_SSRF_POLICY = {
@@ -644,7 +643,7 @@ async function sendDiscordVoiceMessage(rest, channelId, audioBuffer, metadata, r
644
643
  return attachment;
645
644
  }, "voice-upload");
646
645
  const messagePayload = {
647
- flags: silent ? DISCORD_VOICE_MESSAGE_FLAG | SUPPRESS_NOTIFICATIONS_FLAG : DISCORD_VOICE_MESSAGE_FLAG,
646
+ flags: silent ? 12288 : DISCORD_VOICE_MESSAGE_FLAG,
648
647
  attachments: [{
649
648
  id: "0",
650
649
  filename,
@@ -1,11 +1,11 @@
1
- import { M as serializePayload, Wt as __exportAll, ft as editChannelMessage, n as createDiscordSendResult, st as createChannelMessage } from "./send.receipt-Dhym-qOF.js";
2
- import { s as resolveDiscordAccount } from "./accounts-ltxKLzxN.js";
3
- import "./config-api-oLS_52S7.js";
4
- import "./channel-api-JudoSiJv.js";
5
- import { c as buildDiscordComponentMessage, f as resolveDiscordComponentAttachmentName, l as buildDiscordComponentMessageFlags } from "./components-q41bHoCx.js";
6
- import { M as createDiscordClient, b as stripUndefinedFields, h as SUPPRESS_NOTIFICATIONS_FLAG, j as parseAndResolveRecipient, l as resolveChannelId, m as toDiscordFileBlob, t as buildDiscordSendError, u as resolveDiscordChannelType } from "./send.shared-C6JLgsbp.js";
7
- import { t as sendMessageDiscord } from "./send.outbound-C0OzZAv_.js";
8
- import { n as getOptionalDiscordRuntime } from "./runtime-Tqtvj5GX.js";
1
+ import { M as serializePayload, Wt as __exportAll, ft as editChannelMessage, n as createDiscordSendResult, st as createChannelMessage } from "./send.receipt-spSPAC77.js";
2
+ import { s as resolveDiscordAccount } from "./accounts-C2TOAmpo.js";
3
+ import "./config-api-JiPdJeb0.js";
4
+ import "./channel-api-CAJ0wMoV.js";
5
+ import { c as buildDiscordComponentMessage, f as resolveDiscordComponentAttachmentName, l as buildDiscordComponentMessageFlags } from "./components-DDPGekgY.js";
6
+ import { M as createDiscordClient, b as stripUndefinedFields, h as SUPPRESS_NOTIFICATIONS_FLAG, j as parseAndResolveRecipient, l as resolveChannelId, m as toDiscordFileBlob, t as buildDiscordSendError, u as resolveDiscordChannelType } from "./send.shared-D4clao4K.js";
7
+ import { t as sendMessageDiscord } from "./send.outbound-1vG9pOh2.js";
8
+ import { n as getOptionalDiscordRuntime } from "./runtime-DgnVQ7zW.js";
9
9
  import "openclaw/plugin-sdk/account-id";
10
10
  import "openclaw/plugin-sdk/secret-input";
11
11
  import "openclaw/plugin-sdk/account-helpers";
@@ -1,7 +1,7 @@
1
- import { ct as createThread, n as createDiscordSendResult, st as createChannelMessage } from "./send.receipt-Dhym-qOF.js";
2
- import { s as resolveDiscordAccount } from "./accounts-ltxKLzxN.js";
3
- import { M as createDiscordClient, _ as resolveDiscordMessageFlags, a as normalizeDiscordPollInput, c as normalizeStickerIds, f as sendDiscordMedia, g as buildDiscordMessageRequest, j as parseAndResolveRecipient, l as resolveChannelId, n as buildDiscordTextChunks, p as sendDiscordText, t as buildDiscordSendError, u as resolveDiscordChannelType, v as resolveDiscordSendComponents, y as resolveDiscordSendEmbeds } from "./send.shared-C6JLgsbp.js";
4
- import { a as resolveDiscordDirectoryUserId } from "./directory-live-CJiEWQwK.js";
1
+ import { ct as createThread, n as createDiscordSendResult, st as createChannelMessage } from "./send.receipt-spSPAC77.js";
2
+ import { s as resolveDiscordAccount } from "./accounts-C2TOAmpo.js";
3
+ import { M as createDiscordClient, _ as resolveDiscordMessageFlags, a as normalizeDiscordPollInput, c as normalizeStickerIds, f as sendDiscordMedia, g as buildDiscordMessageRequest, j as parseAndResolveRecipient, l as resolveChannelId, n as buildDiscordTextChunks, p as sendDiscordText, t as buildDiscordSendError, u as resolveDiscordChannelType, v as resolveDiscordSendComponents, y as resolveDiscordSendEmbeds } from "./send.shared-D4clao4K.js";
4
+ import { a as resolveDiscordDirectoryUserId } from "./directory-live-5HHCCe5Q.js";
5
5
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { ChannelType } from "discord-api-types/v10";
7
7
  import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
@@ -1,6 +1,6 @@
1
- import { At as getGuildMember, C as RateLimitError, M as serializePayload, kt as getGuild, nt as createUserDmChannel, pt as getChannel, rt as getCurrentUser, s as chunkDiscordTextWithMode, st as createChannelMessage, v as Embed, x as RequestClient } from "./send.receipt-Dhym-qOF.js";
2
- import { a as mergeDiscordAccountConfig, p as normalizeDiscordToken, s as resolveDiscordAccount } from "./accounts-ltxKLzxN.js";
3
- import { t as parseAndResolveDiscordTarget } from "./target-resolver-C5tK3vit.js";
1
+ import { At as getGuildMember, C as RateLimitError, M as serializePayload, kt as getGuild, nt as createUserDmChannel, pt as getChannel, rt as getCurrentUser, s as chunkDiscordTextWithMode, st as createChannelMessage, v as Embed, x as RequestClient } from "./send.receipt-spSPAC77.js";
2
+ import { a as mergeDiscordAccountConfig, p as normalizeDiscordToken, s as resolveDiscordAccount } from "./accounts-C2TOAmpo.js";
3
+ import { t as parseAndResolveDiscordTarget } from "./target-resolver-BpGdnBIZ.js";
4
4
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
6
6
  import { ChannelType, MessageFlags, PermissionFlagsBits } from "discord-api-types/v10";
@@ -1,4 +1,4 @@
1
- import { b as formatDiscordUserTag } from "./allow-list-CBI-M84K.js";
1
+ import { b as formatDiscordUserTag } from "./allow-list-BnkWtVpA.js";
2
2
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  //#region extensions/discord/src/monitor/sender-identity.ts
4
4
  function resolveDiscordWebhookId(message) {
@@ -1,2 +1,2 @@
1
- import { t as normalizeExplicitDiscordSessionKey } from "./session-key-normalization-DnCXUKGA.js";
1
+ import { t as normalizeExplicitDiscordSessionKey } from "./session-key-normalization-wJgsKPNF.js";
2
2
  export { normalizeExplicitDiscordSessionKey };
@@ -1,2 +1,2 @@
1
- import { t as discordSetupPlugin } from "./channel.setup-DR3-U0wF.js";
1
+ import { t as discordSetupPlugin } from "./channel.setup-C0rcLtB9.js";
2
2
  export { discordSetupPlugin };
@@ -1,11 +1,11 @@
1
- import { a as mergeDiscordAccountConfig, c as resolveDiscordAccountAllowFrom, d as resolveDiscordAccountDmPolicy, n as isDiscordAccountEnabledForRuntime, o as resolveDefaultDiscordAccountId, r as listDiscordAccountIds, s as resolveDiscordAccount, u as resolveDiscordAccountDisabledReason } from "./accounts-ltxKLzxN.js";
2
- import { t as inspectDiscordAccount } from "./account-inspect-DCXwNu_u.js";
3
- import { i as getChatChannelMeta, o as resolveConfiguredFromCredentialStatuses } from "./channel-api-JudoSiJv.js";
4
- import { t as DiscordChannelConfigSchema } from "./config-schema-jz2FX2x5.js";
5
- import { n as normalizeCompatibilityConfig } from "./doctor-contract-AkgUZQHW.js";
6
- import { n as secretTargetRegistryEntries, t as collectRuntimeConfigAssignments } from "./secret-config-contract-57_WV6qt.js";
7
- import { n as unsupportedSecretRefSurfacePatterns, t as collectUnsupportedSecretRefConfigCandidates } from "./security-contract-BWDASKVo.js";
8
- import { t as deriveLegacySessionChatType } from "./session-contract-Dwhw3RTY.js";
1
+ import { a as mergeDiscordAccountConfig, c as resolveDiscordAccountAllowFrom, d as resolveDiscordAccountDmPolicy, n as isDiscordAccountEnabledForRuntime, o as resolveDefaultDiscordAccountId, r as listDiscordAccountIds, s as resolveDiscordAccount, u as resolveDiscordAccountDisabledReason } from "./accounts-C2TOAmpo.js";
2
+ import { t as inspectDiscordAccount } from "./account-inspect-CcJ-bl80.js";
3
+ import { i as getChatChannelMeta, o as resolveConfiguredFromCredentialStatuses } from "./channel-api-CAJ0wMoV.js";
4
+ import { t as DiscordChannelConfigSchema } from "./config-schema-BGgg8U6A.js";
5
+ import { n as normalizeCompatibilityConfig } from "./doctor-contract-Bia3BmP_.js";
6
+ import { n as secretTargetRegistryEntries, t as collectRuntimeConfigAssignments } from "./secret-config-contract-BjM-1hr9.js";
7
+ import { n as unsupportedSecretRefSurfacePatterns, t as collectUnsupportedSecretRefConfigCandidates } from "./security-contract-DSHk7I2w.js";
8
+ import { t as deriveLegacySessionChatType } from "./session-contract-BO5tlIdl.js";
9
9
  import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
10
10
  import { describeAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
11
11
  import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter, createScopedDmSecurityResolver } from "openclaw/plugin-sdk/channel-config-helpers";
@@ -48,7 +48,7 @@ const collectDiscordSecurityWarnings = createOpenProviderConfiguredRouteWarningC
48
48
  });
49
49
  let discordSecurityAuditModulePromise;
50
50
  async function loadDiscordSecurityAuditModule() {
51
- discordSecurityAuditModulePromise ??= import("./security-audit.runtime-C5nnf0k8.js");
51
+ discordSecurityAuditModulePromise ??= import("./security-audit.runtime-Dt4zoGpL.js");
52
52
  return await discordSecurityAuditModulePromise;
53
53
  }
54
54
  const discordSecurityAdapter = {
@@ -71,7 +71,7 @@ const DISCORD_LEGACY_CONFIG_RULES = [];
71
71
  const DISCORD_CHANNEL = "discord";
72
72
  let discordDoctorModulePromise;
73
73
  async function loadDiscordDoctorModule() {
74
- discordDoctorModulePromise ??= import("./doctor-CzcS8Yt1.js");
74
+ discordDoctorModulePromise ??= import("./doctor-BLcVWv42.js");
75
75
  return await discordDoctorModulePromise;
76
76
  }
77
77
  const discordDoctor = {
@@ -1,6 +1,6 @@
1
- import { Wt as __exportAll } from "./send.receipt-Dhym-qOF.js";
2
- import { s as resolveDiscordAccount } from "./accounts-ltxKLzxN.js";
3
- import { n as autoBindSpawnedDiscordSubagent, o as unbindThreadBindingsBySessionKey, r as listThreadBindingsBySessionKey } from "./thread-bindings-BcXgbZ3-.js";
1
+ import { Wt as __exportAll } from "./send.receipt-spSPAC77.js";
2
+ import { s as resolveDiscordAccount } from "./accounts-C2TOAmpo.js";
3
+ import { n as autoBindSpawnedDiscordSubagent, o as unbindThreadBindingsBySessionKey, r as listThreadBindingsBySessionKey } from "./thread-bindings-BQz8z6MR.js";
4
4
  import { normalizeOptionalLowercaseString, normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { formatThreadBindingDisabledError, formatThreadBindingSpawnDisabledError, resolveThreadBindingSpawnPolicy } from "openclaw/plugin-sdk/conversation-runtime";
6
6
  //#region extensions/discord/src/subagent-hooks.ts
@@ -1,7 +1,7 @@
1
1
  //#region extensions/discord/subagent-hooks-api.ts
2
2
  let discordSubagentHooksPromise = null;
3
3
  function loadDiscordSubagentHooksModule() {
4
- discordSubagentHooksPromise ??= import("./subagent-hooks-DCIt8Gt7.js").then((n) => n.i);
4
+ discordSubagentHooksPromise ??= import("./subagent-hooks-D65kqOor.js").then((n) => n.i);
5
5
  return discordSubagentHooksPromise;
6
6
  }
7
7
  function registerDiscordSubagentHooks(api) {
@@ -1,5 +1,5 @@
1
- import { c as discord_exports } from "./send.receipt-Dhym-qOF.js";
2
- import { b as formatDiscordUserTag } from "./allow-list-CBI-M84K.js";
1
+ import { c as discord_exports } from "./send.receipt-spSPAC77.js";
2
+ import { b as formatDiscordUserTag } from "./allow-list-BnkWtVpA.js";
3
3
  //#region extensions/discord/src/monitor/system-events.ts
4
4
  function resolveDiscordSystemEvent(message, location) {
5
5
  switch (message.type) {
@@ -1,6 +1,6 @@
1
- import { Ht as parseDiscordTarget, Wt as __exportAll, r as allowFromContainsDiscordUserId } from "./send.receipt-Dhym-qOF.js";
2
- import { c as resolveDiscordAccountAllowFrom, s as resolveDiscordAccount } from "./accounts-ltxKLzxN.js";
3
- import { i as rememberDiscordDirectoryUser, r as listDiscordDirectoryPeersLive } from "./directory-live-CJiEWQwK.js";
1
+ import { Ht as parseDiscordTarget, Wt as __exportAll, r as allowFromContainsDiscordUserId } from "./send.receipt-spSPAC77.js";
2
+ import { c as resolveDiscordAccountAllowFrom, s as resolveDiscordAccount } from "./accounts-C2TOAmpo.js";
3
+ import { i as rememberDiscordDirectoryUser, r as listDiscordDirectoryPeersLive } from "./directory-live-5HHCCe5Q.js";
4
4
  import { buildMessagingTarget } from "openclaw/plugin-sdk/messaging-targets";
5
5
  //#region extensions/discord/src/send-target-parsing.ts
6
6
  const parseDiscordSendTarget = (raw, options = {}) => parseDiscordTarget(raw, options);
@@ -0,0 +1,3 @@
1
+ import "./send.receipt-spSPAC77.js";
2
+ import "./target-resolver-BpGdnBIZ.js";
3
+ export {};
package/dist/test-api.js CHANGED
@@ -1,7 +1,7 @@
1
- import { t as discordPlugin } from "./channel-CR9HckAC.js";
2
- import { n as discordOutbound } from "./outbound-adapter-CaZzpMnE.js";
3
- import { i as testing } from "./thread-bindings.manager-CouT_qjE.js";
4
- import { n as buildDiscordInboundAccessContext } from "./inbound-context-CzEAvKgx.js";
1
+ import { t as discordPlugin } from "./channel-BswuOAN6.js";
2
+ import { n as discordOutbound } from "./outbound-adapter-TGbHliO_.js";
3
+ import { i as testing } from "./thread-bindings.manager-I5f-Oykv.js";
4
+ import { n as buildDiscordInboundAccessContext } from "./inbound-context-B5EsqsSr.js";
5
5
  import { finalizeInboundContext } from "openclaw/plugin-sdk/reply-dispatch-runtime";
6
6
  //#region extensions/discord/src/monitor/inbound-context.test-helpers.ts
7
7
  function buildFinalizedDiscordDirectInboundContext() {
@@ -1,9 +1,9 @@
1
- import { Ht as parseDiscordTarget, Wt as __exportAll } from "./send.receipt-Dhym-qOF.js";
2
- import "./targets-JvlTzyfK.js";
3
- import { C as resolveThreadBindingMaxAgeMs$1, O as shouldPersistBindingMutations, S as resolveThreadBindingMaxAgeExpiresAt, T as saveBindingsToDisk, b as resolveThreadBindingIdleTimeoutMs$1, c as getThreadBindingToken, f as normalizeThreadId, g as removeBindingRecord, l as isRecentlyUnboundThreadWebhookMessage, n as MANAGERS_BY_ACCOUNT_ID, p as rememberRecentUnboundWebhookEcho, t as BINDINGS_BY_THREAD_ID, x as resolveThreadBindingInactivityExpiresAt } from "./thread-bindings.state-CSphZOiL.js";
4
- import { n as setThreadBindingMaxAgeBySessionKey, r as resolveBindingIdsForTargetSession, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-CgOqEOPe.js";
5
- import { _ as formatThreadBindingDurationLabel, b as resolveThreadBindingThreadName, g as resolveThreadBindingPersonaFromRecord, h as resolveThreadBindingPersona, s as resolveChannelIdForBinding, y as resolveThreadBindingIntroText } from "./thread-bindings.discord-api-BzelVdsY.js";
6
- import { i as testing, n as createThreadBindingManager, r as getThreadBindingManager, t as createNoopThreadBindingManager } from "./thread-bindings.manager-CouT_qjE.js";
1
+ import { Ht as parseDiscordTarget, Wt as __exportAll } from "./send.receipt-spSPAC77.js";
2
+ import "./targets-DMdVjHOU.js";
3
+ import { C as resolveThreadBindingMaxAgeMs$1, O as shouldPersistBindingMutations, S as resolveThreadBindingMaxAgeExpiresAt, T as saveBindingsToDisk, b as resolveThreadBindingIdleTimeoutMs$1, c as getThreadBindingToken, f as normalizeThreadId, g as removeBindingRecord, l as isRecentlyUnboundThreadWebhookMessage, n as MANAGERS_BY_ACCOUNT_ID, p as rememberRecentUnboundWebhookEcho, t as BINDINGS_BY_THREAD_ID, x as resolveThreadBindingInactivityExpiresAt } from "./thread-bindings.state-BsOnj5NX.js";
4
+ import { n as setThreadBindingMaxAgeBySessionKey, r as resolveBindingIdsForTargetSession, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-D5gY2ZTE.js";
5
+ import { _ as formatThreadBindingDurationLabel, b as resolveThreadBindingThreadName, g as resolveThreadBindingPersonaFromRecord, h as resolveThreadBindingPersona, s as resolveChannelIdForBinding, y as resolveThreadBindingIntroText } from "./thread-bindings.discord-api-Ddalj9wo.js";
6
+ import { i as testing, n as createThreadBindingManager, r as getThreadBindingManager, t as createNoopThreadBindingManager } from "./thread-bindings.manager-I5f-Oykv.js";
7
7
  import { normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
8
8
  import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
9
9
  import { resolveThreadBindingIdleTimeoutMs, resolveThreadBindingMaxAgeMs, resolveThreadBindingsEnabled } from "openclaw/plugin-sdk/conversation-runtime";
@@ -1,8 +1,8 @@
1
- import { Ut as resolveDiscordChannelId, pt as getChannel, tt as createChannelWebhook } from "./send.receipt-Dhym-qOF.js";
2
- import { N as createDiscordRestClient } from "./send.shared-C6JLgsbp.js";
3
- import { c as sendWebhookMessageDiscord, u as createThreadDiscord } from "./send-BsBy21Te.js";
4
- import { t as sendMessageDiscord } from "./send.outbound-C0OzZAv_.js";
5
- import { i as REUSABLE_WEBHOOKS_BY_ACCOUNT_CHANNEL, k as toReusableWebhookKey, m as rememberReusableWebhook, t as BINDINGS_BY_THREAD_ID } from "./thread-bindings.state-CSphZOiL.js";
1
+ import { Ut as resolveDiscordChannelId, pt as getChannel, tt as createChannelWebhook } from "./send.receipt-spSPAC77.js";
2
+ import { N as createDiscordRestClient } from "./send.shared-D4clao4K.js";
3
+ import { c as sendWebhookMessageDiscord, u as createThreadDiscord } from "./send-CEAtV0qd.js";
4
+ import { t as sendMessageDiscord } from "./send.outbound-1vG9pOh2.js";
5
+ import { i as REUSABLE_WEBHOOKS_BY_ACCOUNT_CHANNEL, k as toReusableWebhookKey, m as rememberReusableWebhook, t as BINDINGS_BY_THREAD_ID } from "./thread-bindings.state-BsOnj5NX.js";
6
6
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
7
7
  import { ChannelType } from "discord-api-types/v10";
8
8
  import { logVerbose } from "openclaw/plugin-sdk/runtime-env";
@@ -1,7 +1,7 @@
1
- import { Ut as resolveDiscordChannelId, Wt as __exportAll, pt as getChannel } from "./send.receipt-Dhym-qOF.js";
2
- import { N as createDiscordRestClient } from "./send.shared-C6JLgsbp.js";
3
- import { A as DEFAULT_THREAD_BINDING_IDLE_TIMEOUT_MS, C as resolveThreadBindingMaxAgeMs$1, D as shouldDefaultPersist, E as setBindingRecord, M as THREAD_BINDINGS_SWEEP_INTERVAL_MS, S as resolveThreadBindingMaxAgeExpiresAt, T as saveBindingsToDisk, _ as resetThreadBindingsForTests, a as THREAD_BINDING_TOUCH_PERSIST_MIN_INTERVAL_MS, b as resolveThreadBindingIdleTimeoutMs$1, c as getThreadBindingToken, d as normalizeThreadBindingDurationMs, f as normalizeThreadId, g as removeBindingRecord, h as rememberThreadBindingToken, n as MANAGERS_BY_ACCOUNT_ID, o as ensureBindingsLoaded, p as rememberRecentUnboundWebhookEcho, r as PERSIST_BY_ACCOUNT_ID, s as forgetThreadBindingToken, t as BINDINGS_BY_THREAD_ID, u as normalizeTargetKind, v as resolveBindingIdsForSession, w as resolveThreadBindingsPath, x as resolveThreadBindingInactivityExpiresAt, y as resolveBindingRecordKey } from "./thread-bindings.state-CSphZOiL.js";
4
- import { a as isThreadArchived, b as resolveThreadBindingThreadName, c as summarizeDiscordError, i as isDiscordThreadGoneError, n as createWebhookForChannel, o as maybeSendBindingMessage, r as findReusableWebhook, s as resolveChannelIdForBinding, t as createThreadForBinding, v as resolveThreadBindingFarewellText } from "./thread-bindings.discord-api-BzelVdsY.js";
1
+ import { Ut as resolveDiscordChannelId, Wt as __exportAll, pt as getChannel } from "./send.receipt-spSPAC77.js";
2
+ import { N as createDiscordRestClient } from "./send.shared-D4clao4K.js";
3
+ import { A as DEFAULT_THREAD_BINDING_IDLE_TIMEOUT_MS, C as resolveThreadBindingMaxAgeMs$1, D as shouldDefaultPersist, E as setBindingRecord, M as THREAD_BINDINGS_SWEEP_INTERVAL_MS, S as resolveThreadBindingMaxAgeExpiresAt, T as saveBindingsToDisk, _ as resetThreadBindingsForTests, a as THREAD_BINDING_TOUCH_PERSIST_MIN_INTERVAL_MS, b as resolveThreadBindingIdleTimeoutMs$1, c as getThreadBindingToken, d as normalizeThreadBindingDurationMs, f as normalizeThreadId, g as removeBindingRecord, h as rememberThreadBindingToken, n as MANAGERS_BY_ACCOUNT_ID, o as ensureBindingsLoaded, p as rememberRecentUnboundWebhookEcho, r as PERSIST_BY_ACCOUNT_ID, s as forgetThreadBindingToken, t as BINDINGS_BY_THREAD_ID, u as normalizeTargetKind, v as resolveBindingIdsForSession, w as resolveThreadBindingsPath, x as resolveThreadBindingInactivityExpiresAt, y as resolveBindingRecordKey } from "./thread-bindings.state-BsOnj5NX.js";
4
+ import { a as isThreadArchived, b as resolveThreadBindingThreadName, c as summarizeDiscordError, i as isDiscordThreadGoneError, n as createWebhookForChannel, o as maybeSendBindingMessage, r as findReusableWebhook, s as resolveChannelIdForBinding, t as createThreadForBinding, v as resolveThreadBindingFarewellText } from "./thread-bindings.discord-api-Ddalj9wo.js";
5
5
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { normalizeAccountId, resolveAgentIdFromSessionKey } from "openclaw/plugin-sdk/routing";
7
7
  import { getRuntimeConfigSnapshot } from "openclaw/plugin-sdk/runtime-config-snapshot";
@@ -1,4 +1,4 @@
1
- import { E as setBindingRecord, O as shouldPersistBindingMutations, T as saveBindingsToDisk, o as ensureBindingsLoaded, t as BINDINGS_BY_THREAD_ID, v as resolveBindingIdsForSession } from "./thread-bindings.state-CSphZOiL.js";
1
+ import { E as setBindingRecord, O as shouldPersistBindingMutations, T as saveBindingsToDisk, o as ensureBindingsLoaded, t as BINDINGS_BY_THREAD_ID, v as resolveBindingIdsForSession } from "./thread-bindings.state-BsOnj5NX.js";
2
2
  import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
3
3
  //#region extensions/discord/src/monitor/thread-bindings.session-shared.ts
4
4
  function normalizeNonNegativeMs(raw) {
package/dist/timeouts.js CHANGED
@@ -1,2 +1,2 @@
1
- import { i as DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, n as DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, r as DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, t as DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS } from "./timeouts-CEwuGaWT.js";
1
+ import { i as DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, n as DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, r as DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, t as DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS } from "./timeouts-l_PsHQvX.js";
2
2
  export { DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS, DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, DISCORD_DEFAULT_LISTENER_TIMEOUT_MS };
@@ -1,5 +1,5 @@
1
- import { Wt as __exportAll, bt as sendChannelTyping } from "./send.receipt-Dhym-qOF.js";
2
- import { o as raceWithTimeout } from "./timeouts-CEwuGaWT.js";
1
+ import { Wt as __exportAll, bt as sendChannelTyping } from "./send.receipt-spSPAC77.js";
2
+ import { o as raceWithTimeout } from "./timeouts-l_PsHQvX.js";
3
3
  //#region extensions/discord/src/monitor/typing.ts
4
4
  var typing_exports = /* @__PURE__ */ __exportAll({ sendTyping: () => sendTyping });
5
5
  const DISCORD_TYPING_START_TIMEOUT_MS = 5e3;
@@ -869,7 +869,15 @@
869
869
  "type": "object",
870
870
  "properties": {
871
871
  "enabled": {
872
- "type": "boolean"
872
+ "anyOf": [
873
+ {
874
+ "type": "boolean"
875
+ },
876
+ {
877
+ "type": "string",
878
+ "const": "auto"
879
+ }
880
+ ]
873
881
  },
874
882
  "approvers": {
875
883
  "type": "array",
@@ -1054,6 +1062,17 @@
1054
1062
  "always"
1055
1063
  ]
1056
1064
  },
1065
+ "bootstrapContextFiles": {
1066
+ "type": "array",
1067
+ "items": {
1068
+ "type": "string",
1069
+ "enum": [
1070
+ "IDENTITY.md",
1071
+ "USER.md",
1072
+ "SOUL.md"
1073
+ ]
1074
+ }
1075
+ },
1057
1076
  "bargeIn": {
1058
1077
  "type": "boolean"
1059
1078
  },
@@ -1104,6 +1123,16 @@
1104
1123
  "additionalProperties": false
1105
1124
  }
1106
1125
  },
1126
+ "followUsersEnabled": {
1127
+ "type": "boolean"
1128
+ },
1129
+ "followUsers": {
1130
+ "type": "array",
1131
+ "items": {
1132
+ "type": "string",
1133
+ "minLength": 1
1134
+ }
1135
+ },
1107
1136
  "allowedChannels": {
1108
1137
  "type": "array",
1109
1138
  "items": {
@@ -2592,7 +2621,15 @@
2592
2621
  "type": "object",
2593
2622
  "properties": {
2594
2623
  "enabled": {
2595
- "type": "boolean"
2624
+ "anyOf": [
2625
+ {
2626
+ "type": "boolean"
2627
+ },
2628
+ {
2629
+ "type": "string",
2630
+ "const": "auto"
2631
+ }
2632
+ ]
2596
2633
  },
2597
2634
  "approvers": {
2598
2635
  "type": "array",
@@ -2777,6 +2814,17 @@
2777
2814
  "always"
2778
2815
  ]
2779
2816
  },
2817
+ "bootstrapContextFiles": {
2818
+ "type": "array",
2819
+ "items": {
2820
+ "type": "string",
2821
+ "enum": [
2822
+ "IDENTITY.md",
2823
+ "USER.md",
2824
+ "SOUL.md"
2825
+ ]
2826
+ }
2827
+ },
2780
2828
  "bargeIn": {
2781
2829
  "type": "boolean"
2782
2830
  },
@@ -2827,6 +2875,16 @@
2827
2875
  "additionalProperties": false
2828
2876
  }
2829
2877
  },
2878
+ "followUsersEnabled": {
2879
+ "type": "boolean"
2880
+ },
2881
+ "followUsers": {
2882
+ "type": "array",
2883
+ "items": {
2884
+ "type": "string",
2885
+ "minLength": 1
2886
+ }
2887
+ },
2830
2888
  "allowedChannels": {
2831
2889
  "type": "array",
2832
2890
  "items": {
@@ -3679,6 +3737,14 @@
3679
3737
  "label": "Discord Voice Agent Session Target",
3680
3738
  "help": "Discord target used when voice.agentSession.mode=\"target\", for example channel:123."
3681
3739
  },
3740
+ "voice.followUsersEnabled": {
3741
+ "label": "Discord Voice Follow Users Enabled",
3742
+ "help": "Toggle Discord voice follow-users behavior without removing the saved voice.followUsers list. Defaults to true when followUsers is configured."
3743
+ },
3744
+ "voice.followUsers": {
3745
+ "label": "Discord Voice Follow Users",
3746
+ "help": "Discord user IDs to follow into voice channels. The bot joins when a followed user joins or moves, and leaves when that user disconnects."
3747
+ },
3682
3748
  "voice.realtime.provider": {
3683
3749
  "label": "Discord Realtime Provider",
3684
3750
  "help": "Realtime voice provider for agent-proxy or bidi Discord voice modes, such as openai."
@@ -3699,6 +3765,10 @@
3699
3765
  "label": "Discord Realtime Consult Policy",
3700
3766
  "help": "Use always to strongly prefer the OpenClaw agent brain for substantive realtime turns. agent-proxy defaults to always."
3701
3767
  },
3768
+ "voice.realtime.bootstrapContextFiles": {
3769
+ "label": "Discord Realtime Bootstrap Context Files",
3770
+ "help": "Agent profile bootstrap files included in realtime provider instructions for direct voice identity/persona grounding. Defaults to IDENTITY.md, USER.md, and SOUL.md; set [] to disable."
3771
+ },
3702
3772
  "voice.realtime.bargeIn": {
3703
3773
  "label": "Discord Realtime Barge-In",
3704
3774
  "help": "Allow Discord speaker-start events to interrupt active realtime playback. Set true to keep manual interruption when provider input-audio interruption is disabled for echo control."
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/discord",
3
- "version": "2026.5.19",
3
+ "version": "2026.5.20-beta.2",
4
4
  "description": "OpenClaw Discord channel plugin",
5
5
  "repository": {
6
6
  "type": "git",
@@ -21,7 +21,7 @@
21
21
  "openclaw": "workspace:*"
22
22
  },
23
23
  "peerDependencies": {
24
- "openclaw": ">=2026.5.19"
24
+ "openclaw": ">=2026.5.20-beta.2"
25
25
  },
26
26
  "peerDependenciesMeta": {
27
27
  "openclaw": {
@@ -65,10 +65,10 @@
65
65
  "allowInvalidConfigRecovery": true
66
66
  },
67
67
  "compat": {
68
- "pluginApi": ">=2026.5.19"
68
+ "pluginApi": ">=2026.5.20-beta.2"
69
69
  },
70
70
  "build": {
71
- "openclawVersion": "2026.5.19"
71
+ "openclawVersion": "2026.5.20-beta.2"
72
72
  },
73
73
  "release": {
74
74
  "publishToClawHub": true,
@@ -1,2 +0,0 @@
1
- import { t as monitorDiscordProvider } from "./provider-BZtjA1y_.js";
2
- export { monitorDiscordProvider };
@@ -1,5 +0,0 @@
1
- import "./allow-list-CBI-M84K.js";
2
- import "./provider-BZtjA1y_.js";
3
- import "./message-utils-BKrlzFtM.js";
4
- import "./message-handler-1NV0WiHC.js";
5
- export {};
@@ -1,3 +0,0 @@
1
- import "./send.receipt-Dhym-qOF.js";
2
- import "./target-resolver-C5tK3vit.js";
3
- export {};
File without changes