@openclaw/discord 2026.9.6 → 2026.9.7

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 (150) hide show
  1. package/assets/icon.png +0 -0
  2. package/dist/.setup/{account-inspect-BwQj24ht.mjs → account-inspect-De8hOUxG.mjs} +1 -1
  3. package/dist/.setup/{accounts-CwJQoLjM.mjs → accounts-ChaMcixG.mjs} +1 -4
  4. package/dist/.setup/{activities-api-COU4-0nR.mjs → activities-api-tvbsU2e3.mjs} +38 -66
  5. package/dist/.setup/{api-CBK9zcq5.mjs → api-DVbJwZVt.mjs} +10 -2
  6. package/dist/.setup/{approval-handler.runtime-CbBktBb4.mjs → approval-handler.runtime-DxCK2Rux.mjs} +49 -125
  7. package/dist/.setup/{approval-message-updates-jf9zMaIC.mjs → approval-message-updates-BKFqavHZ.mjs} +2 -2
  8. package/dist/.setup/{audit-vKbh-LFR.mjs → audit-CLg9I71N.mjs} +5 -5
  9. package/dist/.setup/{channel-Dv4e3Jpc.mjs → channel-DxlUVU9t.mjs} +121 -227
  10. package/dist/.setup/{channel-type-DKnjV1XW.mjs → channel-type-DRCrEMss.mjs} +22 -22
  11. package/dist/.setup/{channel.setup-0NX6FFwi.mjs → channel.setup-CRo1GjV7.mjs} +6 -9
  12. package/dist/.setup/{components-yBEb75bB.mjs → components-Cq1PvIpN.mjs} +41 -69
  13. package/dist/.setup/{config-schema-CiZz-mtA.mjs → config-schema-oxELUSDx.mjs} +19 -44
  14. package/dist/.setup/{conversation-binding-route-B7qImK_b.mjs → conversation-binding-route-Caz_XuFH.mjs} +10 -5
  15. package/dist/.setup/{directory-config-BytTftz-.mjs → directory-config-esqNn0Eo.mjs} +6 -9
  16. package/dist/.setup/{directory-live--EGTH0DC.mjs → directory-live-DtKRHuGV.mjs} +6 -12
  17. package/dist/.setup/{discord-BXpHW-cu.mjs → discord-0xJYfdDD.mjs} +82 -386
  18. package/dist/.setup/{doctor-D1R-uFIu.mjs → doctor-BCl1H5tl.mjs} +21 -36
  19. package/dist/.setup/{doctor-contract-Co5vRCZ6.mjs → doctor-contract-CvvgwrrG.mjs} +41 -50
  20. package/dist/.setup/{channel-actions.runtime-leZuw01r.mjs → handle-action-CUvQWnE7.mjs} +67 -104
  21. package/dist/.setup/{handle-action.guild-admin-DcFa8NwA.mjs → handle-action.guild-admin-Df-8gVle.mjs} +62 -120
  22. package/dist/.setup/{live-policy-config-eKQ-PLdy.mjs → live-policy-config-8Pv20CHc.mjs} +2 -3
  23. package/dist/.setup/{message-handler-X6ejmbtY.mjs → message-handler-B-Jk4oDk.mjs} +18 -94
  24. package/dist/.setup/{message-handler.preflight-pluralkit-8Xji34AF.mjs → message-handler.preflight-pluralkit-CWLUBVcx.mjs} +8 -10
  25. package/dist/.setup/{message-handler.preflight-DE_POxFc.mjs → message-handler.preflight-v-__NSDq.mjs} +69 -180
  26. package/dist/.setup/{message-handler.process-CCmIVnxy.mjs → message-handler.process-BNFFuChn.mjs} +65 -86
  27. package/dist/.setup/{outbound-adapter-ClIgmu4F.mjs → outbound-adapter-BobT-kse.mjs} +105 -19
  28. package/dist/.setup/{outbound-session-route-VulUE0yV.mjs → outbound-session-route-zVGxxceg.mjs} +140 -108
  29. package/dist/.setup/{pluralkit-CdAt1G0P.mjs → pluralkit-a6_NLfH9.mjs} +1 -1
  30. package/dist/.setup/{presence-cache-dYSHPWMx.mjs → presence-cache-Di3H3DIU.mjs} +0 -4
  31. package/dist/.setup/{probe-CupW4we4.mjs → probe-LYrIHlBF.mjs} +13 -4
  32. package/dist/.setup/{provider-iOf73HW-.mjs → provider-B_G5hASF.mjs} +721 -1416
  33. package/dist/.setup/provider-session.runtime-BYlTBFD2.mjs +6 -0
  34. package/dist/.setup/provider.runtime-CUE3UxER.mjs +2 -0
  35. package/dist/.setup/{realtime-session.runtime-Dz8uVutq.mjs → realtime-session.runtime-oUd9DOcz.mjs} +41 -55
  36. package/dist/.setup/{receive-recovery-DHst8WRx.mjs → receive-recovery-CHPOsnLc.mjs} +1 -4
  37. package/dist/.setup/{resolve-allowlist-common-CwMBzbx9.mjs → resolve-allowlist-common-DPdRggu5.mjs} +4 -7
  38. package/dist/.setup/{resolve-channels-BbvsLQOZ.mjs → resolve-channels-BFPNRmVv.mjs} +21 -40
  39. package/dist/.setup/{resolve-users-ByFlR7LQ.mjs → resolve-users-0-aBuCy3.mjs} +4 -4
  40. package/dist/.setup/{retry-BEYkDy0P.mjs → retry-pz_cSha2.mjs} +3 -3
  41. package/dist/.setup/rolldown-runtime-B4FMCO8f.mjs +28 -0
  42. package/dist/.setup/{runtime-B8lJfyrA.mjs → runtime-FN000lxA.mjs} +60 -162
  43. package/dist/.setup/runtime-doctor-migrations-CshUGl36.mjs +159 -0
  44. package/dist/.setup/{runtime-DisDbixd.mjs → runtime-sUksZ--Q.mjs} +2 -5
  45. package/dist/.setup/{secret-config-contract-DFu9hfU8.mjs → secret-config-contract-uOE2J7yM.mjs} +15 -85
  46. package/dist/.setup/{security-audit-s5w50-Ly.mjs → security-audit-Cdaegq7C.mjs} +3 -1
  47. package/dist/.setup/{send-CIBzvXjS.mjs → send-CrfEI6Bs.mjs} +53 -108
  48. package/dist/.setup/{send.components-ChY21qr-.mjs → send.components-DxQAMfES.mjs} +62 -107
  49. package/dist/.setup/{send.outbound-QTyuFupn.mjs → send.outbound-BISKnb-a.mjs} +66 -140
  50. package/dist/.setup/{send.shared-VNvWfX2T.mjs → send.shared-DGFkbkQR.mjs} +10 -25
  51. package/dist/.setup/{sender-identity-0Ymgvmaj.mjs → sender-identity-B9X5Vb9R.mjs} +2 -3
  52. package/dist/.setup/setup-plugin-api-BQUBxbhe.mjs +3 -0
  53. package/dist/.setup/{shared-DHPDaMSx.mjs → shared-B3wZ4hN-.mjs} +25 -32
  54. package/dist/.setup/{subagent-hooks-CjW7r8Pe.mjs → subagent-hooks-nlUE9ow7.mjs} +5 -6
  55. package/dist/.setup/system-events-CdeZnvPV.mjs +33 -0
  56. package/dist/.setup/{target-resolver-BXpy6VT8.mjs → target-resolver-BuLapkhy.mjs} +9 -12
  57. package/dist/.setup/targets-0KUcEIYx.mjs +3 -0
  58. package/dist/.setup/{thread-bindings-CEh2dhqP.mjs → thread-bindings-D7TfgjR_.mjs} +33 -35
  59. package/dist/.setup/{thread-bindings.manager-ve-i6oqt.mjs → thread-bindings.manager-DN-NissX.mjs} +325 -233
  60. package/dist/.setup/thread-bindings.session-updates-CshfKghV.mjs +359 -0
  61. package/dist/.setup/{thread-bindings.state-BThFQEga.mjs → thread-bindings.state-g6v9zAym.mjs} +21 -62
  62. package/dist/.setup/{transcripts-source-DVegW0WI.mjs → transcripts-source-p8EV179h.mjs} +76 -235
  63. package/dist/.setup/{typing-BKZL5fGj.mjs → typing-BiHCzBRu.mjs} +2 -1
  64. package/dist/.setup/{voice-runtime-elTtjEIG.mjs → voice-runtime-B46rcwrG.mjs} +140 -244
  65. package/dist/account-inspect-api.js +1 -1
  66. package/dist/action-runtime-api.js +1 -1
  67. package/dist/activities-api.js +1 -1
  68. package/dist/api.js +18 -18
  69. package/dist/channel-config-api.js +1 -1
  70. package/dist/channel-plugin-api.js +1 -1
  71. package/dist/directory-contract-api.js +1 -1
  72. package/dist/doctor-contract-api.js +4 -4
  73. package/dist/index.js +1 -1
  74. package/dist/runtime-api.js +20 -20
  75. package/dist/secret-contract-api.js +1 -1
  76. package/dist/security-audit-contract-api.js +1 -1
  77. package/dist/setup-entry.js +1 -1
  78. package/dist/setup-plugin-api.js +1 -1
  79. package/dist/src/voice/audio-worker.runtime.js +15 -24
  80. package/dist/subagent-hooks-api.js +3 -4
  81. package/dist/transcripts-source-api.js +1 -1
  82. package/node_modules/@types/node/README.md +2 -2
  83. package/node_modules/@types/node/child_process.d.ts +1 -1
  84. package/node_modules/@types/node/crypto.d.ts +20 -8
  85. package/node_modules/@types/node/ffi.d.ts +14 -0
  86. package/node_modules/@types/node/http2.d.ts +3 -2
  87. package/node_modules/@types/node/net.d.ts +16 -4
  88. package/node_modules/@types/node/package.json +2 -17
  89. package/node_modules/@types/node/process.d.ts +1 -0
  90. package/node_modules/@types/node/quic.d.ts +39 -1
  91. package/node_modules/@types/node/stream/iter.d.ts +9 -12
  92. package/node_modules/@types/node/test/reporters.d.ts +1 -0
  93. package/node_modules/@types/node/test.d.ts +72 -0
  94. package/node_modules/@types/node/tls.d.ts +14 -10
  95. package/node_modules/@types/node/vm.d.ts +2 -1
  96. package/node_modules/@types/node/worker_threads.d.ts +4 -1
  97. package/node_modules/typebox/build/compile/code.mjs +1 -2
  98. package/node_modules/typebox/build/compile/validator.mjs +5 -1
  99. package/node_modules/typebox/build/format/iri.mjs +16 -9
  100. package/node_modules/typebox/build/guard/emit.mjs +2 -2
  101. package/node_modules/typebox/build/guard/guard.d.mts +7 -5
  102. package/node_modules/typebox/build/guard/guard.mjs +14 -9
  103. package/node_modules/typebox/build/guard/index.mjs +6 -0
  104. package/node_modules/typebox/build/guard/unicode/unicode.d.mts +6 -0
  105. package/node_modules/typebox/build/guard/unicode/unicode.mjs +35 -0
  106. package/node_modules/typebox/build/guard/{string.mjs → unicode/unicode_segment.mjs} +16 -19
  107. package/node_modules/typebox/build/schema/build.mjs +2 -3
  108. package/node_modules/typebox/build/schema/engine/_pathing.d.mts +1 -0
  109. package/node_modules/typebox/build/schema/engine/_pathing.mjs +11 -0
  110. package/node_modules/typebox/build/schema/engine/_refine.mjs +13 -5
  111. package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +2 -1
  112. package/node_modules/typebox/build/schema/engine/dependencies.mjs +2 -1
  113. package/node_modules/typebox/build/schema/engine/dependentSchemas.mjs +2 -1
  114. package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +1 -1
  115. package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +2 -2
  116. package/node_modules/typebox/build/schema/engine/format.mjs +9 -2
  117. package/node_modules/typebox/build/schema/engine/patternProperties.mjs +3 -2
  118. package/node_modules/typebox/build/schema/engine/properties.mjs +3 -2
  119. package/node_modules/typebox/build/schema/engine/propertyNames.mjs +2 -1
  120. package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +1 -1
  121. package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +2 -2
  122. package/node_modules/typebox/build/schema/engine/ref.d.mts +1 -1
  123. package/node_modules/typebox/build/schema/engine/ref.mjs +2 -2
  124. package/node_modules/typebox/build/schema/engine/schema.mjs +24 -24
  125. package/node_modules/typebox/build/schema/parse.mjs +3 -0
  126. package/node_modules/typebox/build/schema/pointer/pointer.d.mts +1 -6
  127. package/node_modules/typebox/build/schema/pointer/pointer.mjs +47 -64
  128. package/node_modules/typebox/build/system/settings/internal.d.mts +2 -0
  129. package/node_modules/typebox/build/system/settings/internal.mjs +20 -0
  130. package/node_modules/typebox/build/system/settings/settings.d.mts +11 -0
  131. package/node_modules/typebox/build/system/settings/settings.mjs +14 -0
  132. package/node_modules/typebox/build/type/extends/inference.d.mts +1 -1
  133. package/node_modules/typebox/build/type/extends/inference.mjs +15 -2
  134. package/node_modules/typebox/build/type/extends/tuple.d.mts +2 -1
  135. package/node_modules/typebox/build/type/extends/tuple.mjs +21 -1
  136. package/node_modules/typebox/build/value/parse/parse.mjs +10 -4
  137. package/node_modules/typebox/package.json +1 -1
  138. package/node_modules/typebox/readme.md +3 -1
  139. package/openclaw.plugin.json +21 -1
  140. package/package.json +5 -5
  141. package/dist/.setup/agent-components.runtime-CEPrf2SY.mjs +0 -4
  142. package/dist/.setup/probe.runtime-DBQ_AGPe.mjs +0 -2
  143. package/dist/.setup/provider-session.runtime-DrGAYnZv.mjs +0 -6
  144. package/dist/.setup/provider.runtime-BmjW_pIw.mjs +0 -2
  145. package/dist/.setup/security-audit.runtime-DHtYenx9.mjs +0 -2
  146. package/dist/.setup/setup-plugin-api-Dvr41dyx.mjs +0 -3
  147. package/dist/.setup/system-events-B2YEEMbS.mjs +0 -34
  148. package/dist/.setup/targets-CvemhN3i.mjs +0 -3
  149. package/dist/.setup/thread-bindings.session-updates-DCQq1WZ5.mjs +0 -55
  150. /package/node_modules/typebox/build/guard/{string.d.mts → unicode/unicode_segment.d.mts} +0 -0
@@ -1,4 +1,4 @@
1
- import { t as inspectDiscordAccount } from "./.setup/account-inspect-BwQj24ht.mjs";
1
+ import { t as inspectDiscordAccount } from "./.setup/account-inspect-De8hOUxG.mjs";
2
2
  //#region extensions/discord/account-inspect-api.ts
3
3
  function inspectDiscordReadOnlyAccount(cfg, accountId) {
4
4
  return inspectDiscordAccount({
@@ -1,2 +1,2 @@
1
- import { t as handleDiscordAction } from "./.setup/runtime-B8lJfyrA.mjs";
1
+ import { t as handleDiscordAction } from "./.setup/runtime-FN000lxA.mjs";
2
2
  export { handleDiscordAction };
@@ -1,2 +1,2 @@
1
- import { t as registerDiscordActivities } from "./.setup/activities-api-COU4-0nR.mjs";
1
+ import { t as registerDiscordActivities } from "./.setup/activities-api-tvbsU2e3.mjs";
2
2
  export { registerDiscordActivities };
package/dist/api.js CHANGED
@@ -1,24 +1,24 @@
1
- import { D as parseDiscordModalCustomIdForInteraction, E as parseDiscordModalCustomId, T as parseDiscordComponentCustomIdForInteraction, _ as DISCORD_COMPONENT_CUSTOM_ID_KEY, b as buildDiscordComponentCustomId, d as buildDiscordComponentMessage, f as buildDiscordComponentMessageFlags, g as resolveDiscordComponentAttachmentName, h as readDiscordComponentSpec, l as DiscordFormModal, n as formatDiscordComponentEventText, p as DISCORD_COMPONENT_ATTACHMENT_PREFIX, r as buildDiscordInteractiveComponents, u as createDiscordFormModal, v as DISCORD_MODAL_CUSTOM_ID_KEY, w as parseDiscordComponentCustomId, x as buildDiscordModalCustomId } from "./.setup/components-yBEb75bB.mjs";
2
- import { a as listEnabledDiscordAccounts, c as resolveDiscordAccount, o as mergeDiscordAccountConfig, p as resolveDiscordMaxLinesPerMessage, r as listDiscordAccountIds, s as resolveDefaultDiscordAccountId, t as createDiscordActionGate, u as resolveDiscordAccountConfig } from "./.setup/accounts-CwJQoLjM.mjs";
3
- import { i as requestDiscord, n as DiscordApiError, r as fetchDiscord } from "./.setup/api-CBK9zcq5.mjs";
4
- import { _ as normalizeDiscordMessagingTarget, b as resolveDiscordChannelId, h as looksLikeDiscordTargetId, v as normalizeDiscordOutboundTarget, y as parseDiscordTarget } from "./.setup/retry-BEYkDy0P.mjs";
5
- import { i as parseDiscordSendTarget, n as resolveDiscordTarget } from "./.setup/target-resolver-BXpy6VT8.mjs";
6
- import { t as inspectDiscordAccount } from "./.setup/account-inspect-BwQj24ht.mjs";
1
+ import { D as parseDiscordModalCustomIdForInteraction, E as parseDiscordModalCustomId, T as parseDiscordComponentCustomIdForInteraction, _ as DISCORD_COMPONENT_CUSTOM_ID_KEY, b as buildDiscordComponentCustomId, d as buildDiscordComponentMessage, f as buildDiscordComponentMessageFlags, g as resolveDiscordComponentAttachmentName, h as readDiscordComponentSpec, l as DiscordFormModal, n as formatDiscordComponentEventText, p as DISCORD_COMPONENT_ATTACHMENT_PREFIX, r as buildDiscordInteractiveComponents, u as createDiscordFormModal, v as DISCORD_MODAL_CUSTOM_ID_KEY, w as parseDiscordComponentCustomId, x as buildDiscordModalCustomId } from "./.setup/components-Cq1PvIpN.mjs";
2
+ import { a as listEnabledDiscordAccounts, c as resolveDiscordAccount, o as mergeDiscordAccountConfig, p as resolveDiscordMaxLinesPerMessage, r as listDiscordAccountIds, s as resolveDefaultDiscordAccountId, t as createDiscordActionGate, u as resolveDiscordAccountConfig } from "./.setup/accounts-ChaMcixG.mjs";
3
+ import { i as requestDiscord, n as DiscordApiError, r as fetchDiscord } from "./.setup/api-DVbJwZVt.mjs";
4
+ import { b as parseDiscordTarget, g as looksLikeDiscordTargetId, v as normalizeDiscordMessagingTarget, x as resolveDiscordChannelId, y as normalizeDiscordOutboundTarget } from "./.setup/retry-pz_cSha2.mjs";
5
+ import { n as resolveDiscordTarget } from "./.setup/target-resolver-BuLapkhy.mjs";
6
+ import { t as inspectDiscordAccount } from "./.setup/account-inspect-De8hOUxG.mjs";
7
7
  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 "./.setup/timeouts-D86uWLt_.mjs";
8
- import "./.setup/targets-CvemhN3i.mjs";
9
- import { D as isDiscordExecApprovalClientEnabled, E as isDiscordExecApprovalApprover, O as shouldSuppressLocalDiscordExecApprovalPrompt, T as getDiscordExecApprovalApprovers } from "./.setup/outbound-session-route-VulUE0yV.mjs";
10
- import { i as resolveDiscordGroupToolPolicy, n as collectDiscordStatusIssues, r as resolveDiscordGroupRequireMention, t as discordPlugin } from "./.setup/channel-Dv4e3Jpc.mjs";
8
+ import "./.setup/targets-0KUcEIYx.mjs";
9
+ import { D as isDiscordExecApprovalClientEnabled, E as isDiscordExecApprovalApprover, O as shouldSuppressLocalDiscordExecApprovalPrompt, T as getDiscordExecApprovalApprovers } from "./.setup/outbound-session-route-zVGxxceg.mjs";
10
+ import { i as resolveDiscordGroupToolPolicy, n as collectDiscordStatusIssues, r as resolveDiscordGroupRequireMention, t as discordPlugin } from "./.setup/channel-DxlUVU9t.mjs";
11
11
  import { t as normalizeExplicitDiscordSessionKey } from "./.setup/session-key-normalization-wJgsKPNF.mjs";
12
- import { t as discordSetupPlugin } from "./.setup/channel.setup-0NX6FFwi.mjs";
13
- import { n as handleDiscordSubagentEnded, t as handleDiscordSubagentDeliveryTarget } from "./.setup/subagent-hooks-CjW7r8Pe.mjs";
14
- import { t as tryHandleDiscordMessageActionGuildAdmin } from "./.setup/handle-action.guild-admin-DcFa8NwA.mjs";
15
- import { n as listDiscordDirectoryGroupsFromConfig, r as listDiscordDirectoryPeersFromConfig } from "./.setup/directory-config-BytTftz-.mjs";
16
- import { t as fetchPluralKitMessageInfo } from "./.setup/pluralkit-CdAt1G0P.mjs";
17
- import { i as probeDiscord, n as fetchDiscordApplicationSummary, o as resolveDiscordPrivilegedIntentsFromFlags, r as parseApplicationIdFromToken, t as fetchDiscordApplicationId } from "./.setup/probe-CupW4we4.mjs";
18
- import { t as collectDiscordSecurityAuditFindings } from "./.setup/security-audit-s5w50-Ly.mjs";
12
+ import { t as discordSetupPlugin } from "./.setup/channel.setup-CRo1GjV7.mjs";
13
+ import { n as handleDiscordSubagentEnded, t as handleDiscordSubagentDeliveryTarget } from "./.setup/subagent-hooks-nlUE9ow7.mjs";
14
+ import { t as tryHandleDiscordMessageActionGuildAdmin } from "./.setup/handle-action.guild-admin-Df-8gVle.mjs";
15
+ import { n as listDiscordDirectoryGroupsFromConfig, r as listDiscordDirectoryPeersFromConfig } from "./.setup/directory-config-esqNn0Eo.mjs";
16
+ import { t as fetchPluralKitMessageInfo } from "./.setup/pluralkit-a6_NLfH9.mjs";
17
+ import { i as probeDiscord, n as fetchDiscordApplicationSummary, r as parseApplicationIdFromToken, s as resolveDiscordPrivilegedIntentsFromFlags, t as fetchDiscordApplicationId } from "./.setup/probe-LYrIHlBF.mjs";
18
+ import { t as collectDiscordSecurityAuditFindings } from "./.setup/security-audit-Cdaegq7C.mjs";
19
19
  import { resolveOpenProviderRuntimeGroupPolicy as resolveDiscordRuntimeGroupPolicy } from "openclaw/plugin-sdk/runtime-group-policy";
20
20
  //#region extensions/discord/api.ts
21
- const handleDiscordMessageAction = async (...args) => (await import("./.setup/channel-actions.runtime-leZuw01r.mjs")).handleDiscordMessageAction(...args);
21
+ const handleDiscordMessageAction = async (...args) => (await import("./.setup/handle-action-CUvQWnE7.mjs")).handleDiscordMessageAction(...args);
22
22
  /**
23
23
  * @deprecated Shipped `@openclaw/discord/api` compatibility only. Use native
24
24
  * `AbortSignal.any` after filtering optional signals. Removal with the next
@@ -29,4 +29,4 @@ function mergeAbortSignals(signals) {
29
29
  return activeSignals.length > 1 ? AbortSignal.any(activeSignals) : activeSignals[0];
30
30
  }
31
31
  //#endregion
32
- export { DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS, DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, DISCORD_COMPONENT_ATTACHMENT_PREFIX, DISCORD_COMPONENT_CUSTOM_ID_KEY, DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, DISCORD_MODAL_CUSTOM_ID_KEY, DiscordApiError, DiscordFormModal, buildDiscordComponentCustomId, buildDiscordComponentMessage, buildDiscordComponentMessageFlags, buildDiscordInteractiveComponents, buildDiscordModalCustomId, collectDiscordSecurityAuditFindings, collectDiscordStatusIssues, createDiscordActionGate, createDiscordFormModal, discordPlugin, discordSetupPlugin, fetchDiscord, fetchDiscordApplicationId, fetchDiscordApplicationSummary, fetchPluralKitMessageInfo, formatDiscordComponentEventText, getDiscordExecApprovalApprovers, handleDiscordMessageAction, handleDiscordSubagentDeliveryTarget, handleDiscordSubagentEnded, inspectDiscordAccount, isDiscordExecApprovalApprover, isDiscordExecApprovalClientEnabled, listDiscordAccountIds, listDiscordDirectoryGroupsFromConfig, listDiscordDirectoryPeersFromConfig, listEnabledDiscordAccounts, looksLikeDiscordTargetId, mergeAbortSignals, mergeDiscordAccountConfig, normalizeDiscordMessagingTarget, normalizeDiscordOutboundTarget, normalizeExplicitDiscordSessionKey, parseApplicationIdFromToken, parseDiscordComponentCustomId, parseDiscordComponentCustomIdForInteraction as parseDiscordComponentCustomIdForCarbon, parseDiscordComponentCustomIdForInteraction, parseDiscordModalCustomId, parseDiscordModalCustomIdForInteraction as parseDiscordModalCustomIdForCarbon, parseDiscordModalCustomIdForInteraction, parseDiscordSendTarget, parseDiscordTarget, probeDiscord, readDiscordComponentSpec, requestDiscord, resolveDefaultDiscordAccountId, resolveDiscordAccount, resolveDiscordAccountConfig, resolveDiscordChannelId, resolveDiscordComponentAttachmentName, resolveDiscordGroupRequireMention, resolveDiscordGroupToolPolicy, resolveDiscordMaxLinesPerMessage, resolveDiscordPrivilegedIntentsFromFlags, resolveDiscordRuntimeGroupPolicy, resolveDiscordTarget, shouldSuppressLocalDiscordExecApprovalPrompt, tryHandleDiscordMessageActionGuildAdmin };
32
+ export { DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS, DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, DISCORD_COMPONENT_ATTACHMENT_PREFIX, DISCORD_COMPONENT_CUSTOM_ID_KEY, DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, DISCORD_MODAL_CUSTOM_ID_KEY, DiscordApiError, DiscordFormModal, buildDiscordComponentCustomId, buildDiscordComponentMessage, buildDiscordComponentMessageFlags, buildDiscordInteractiveComponents, buildDiscordModalCustomId, collectDiscordSecurityAuditFindings, collectDiscordStatusIssues, createDiscordActionGate, createDiscordFormModal, discordPlugin, discordSetupPlugin, fetchDiscord, fetchDiscordApplicationId, fetchDiscordApplicationSummary, fetchPluralKitMessageInfo, formatDiscordComponentEventText, getDiscordExecApprovalApprovers, handleDiscordMessageAction, handleDiscordSubagentDeliveryTarget, handleDiscordSubagentEnded, inspectDiscordAccount, isDiscordExecApprovalApprover, isDiscordExecApprovalClientEnabled, listDiscordAccountIds, listDiscordDirectoryGroupsFromConfig, listDiscordDirectoryPeersFromConfig, listEnabledDiscordAccounts, looksLikeDiscordTargetId, mergeAbortSignals, mergeDiscordAccountConfig, normalizeDiscordMessagingTarget, normalizeDiscordOutboundTarget, normalizeExplicitDiscordSessionKey, parseApplicationIdFromToken, parseDiscordComponentCustomId, parseDiscordComponentCustomIdForInteraction as parseDiscordComponentCustomIdForCarbon, parseDiscordComponentCustomIdForInteraction, parseDiscordModalCustomId, parseDiscordModalCustomIdForInteraction as parseDiscordModalCustomIdForCarbon, parseDiscordModalCustomIdForInteraction, parseDiscordTarget as parseDiscordSendTarget, parseDiscordTarget, probeDiscord, readDiscordComponentSpec, requestDiscord, resolveDefaultDiscordAccountId, resolveDiscordAccount, resolveDiscordAccountConfig, resolveDiscordChannelId, resolveDiscordComponentAttachmentName, resolveDiscordGroupRequireMention, resolveDiscordGroupToolPolicy, resolveDiscordMaxLinesPerMessage, resolveDiscordPrivilegedIntentsFromFlags, resolveDiscordRuntimeGroupPolicy, resolveDiscordTarget, shouldSuppressLocalDiscordExecApprovalPrompt, tryHandleDiscordMessageActionGuildAdmin };
@@ -1,2 +1,2 @@
1
- import { t as DiscordChannelConfigSchema } from "./.setup/config-schema-CiZz-mtA.mjs";
1
+ import { t as DiscordChannelConfigSchema } from "./.setup/config-schema-oxELUSDx.mjs";
2
2
  export { DiscordChannelConfigSchema };
@@ -1,2 +1,2 @@
1
- import { t as discordPlugin } from "./.setup/channel-Dv4e3Jpc.mjs";
1
+ import { t as discordPlugin } from "./.setup/channel-DxlUVU9t.mjs";
2
2
  export { discordPlugin };
@@ -1,4 +1,4 @@
1
- import { n as listDiscordDirectoryGroupsFromConfig, r as listDiscordDirectoryPeersFromConfig } from "./.setup/directory-config-BytTftz-.mjs";
1
+ import { n as listDiscordDirectoryGroupsFromConfig, r as listDiscordDirectoryPeersFromConfig } from "./.setup/directory-config-esqNn0Eo.mjs";
2
2
  //#region extensions/discord/directory-contract-api.ts
3
3
  const discordDirectoryContractPlugin = {
4
4
  id: "discord",
@@ -1,9 +1,9 @@
1
1
  import { n as DISCORD_COMMAND_DEPLOY_HASH_NAMESPACE, t as DISCORD_COMMAND_DEPLOY_HASH_MAX_ENTRIES } from "./.setup/command-deploy-store-DFkBTViB.mjs";
2
- import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./.setup/doctor-contract-Co5vRCZ6.mjs";
2
+ import { t as runtime_doctor_migrations_exports } from "./.setup/runtime-doctor-migrations-CshUGl36.mjs";
3
+ import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./.setup/doctor-contract-CvvgwrrG.mjs";
3
4
  import { i as sanitizeRecentModels, r as preferenceTimestampMs, t as buildPreferenceModelKey } from "./.setup/model-picker-preference-primitives-BHT1LkR_.mjs";
4
5
  import { MAX_DATE_TIMESTAMP_MS, timestampMsToIsoString } from "openclaw/plugin-sdk/number-runtime";
5
6
  import path from "node:path";
6
- import { definePluginDoctorMigrationFromPlans } from "openclaw/plugin-sdk/runtime-doctor-migrations";
7
7
  import fs from "node:fs";
8
8
  //#region extensions/discord/src/monitor/model-picker-preferences-migrations.ts
9
9
  const PREFERENCE_MAX_ENTRIES = 2e3;
@@ -111,7 +111,7 @@ const detectDiscordLegacyStateMigrations = async ({ stateDir }) => {
111
111
  });
112
112
  const threadBindingsSourcePath = path.join(stateDir, "discord", "thread-bindings.json");
113
113
  if (fileExists(threadBindingsSourcePath)) {
114
- const { normalizePersistedBinding, THREAD_BINDINGS_MAX_ENTRIES, THREAD_BINDINGS_NAMESPACE, toBindingRecordKey } = await import("./.setup/thread-bindings.state-BThFQEga.mjs").then((n) => n.O);
114
+ const { normalizePersistedBinding, THREAD_BINDINGS_MAX_ENTRIES, THREAD_BINDINGS_NAMESPACE, toBindingRecordKey } = await import("./.setup/thread-bindings.state-g6v9zAym.mjs").then((n) => n.A);
115
115
  plans.push({
116
116
  kind: "plugin-state-import",
117
117
  label: "Discord thread bindings",
@@ -142,7 +142,7 @@ const detectDiscordLegacyStateMigrations = async ({ stateDir }) => {
142
142
  };
143
143
  //#endregion
144
144
  //#region extensions/discord/doctor-contract-api.ts
145
- const stateMigrations = [definePluginDoctorMigrationFromPlans({
145
+ const stateMigrations = [(0, runtime_doctor_migrations_exports.definePluginDoctorMigrationFromPlans)({
146
146
  id: "discord-legacy-state",
147
147
  label: "Discord legacy state",
148
148
  resolvePlans: detectDiscordLegacyStateMigrations
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { t as registerDiscordActivities } from "./.setup/activities-api-COU4-0nR.mjs";
1
+ import { t as registerDiscordActivities } from "./.setup/activities-api-tvbsU2e3.mjs";
2
2
  import { registerDiscordSubagentHooks } from "./subagent-hooks-api.js";
3
3
  import { registerDiscordTranscriptSourceProvider } from "./transcripts-source-api.js";
4
4
  import { defineBundledChannelEntry } from "openclaw/plugin-sdk/channel-entry-contract";
@@ -1,23 +1,23 @@
1
- import { _ as resolveDiscordShouldRequireMention, c as resolveDiscordChannelConfig, d as resolveDiscordCommandAuthorized, f as resolveDiscordGuildEntry, i as normalizeDiscordAllowList, l as resolveDiscordChannelConfigWithFallback, n as allowListMatches, o as normalizeDiscordSlug, r as isDiscordGroupAllowedByPolicy, v as resolveGroupDmAllow, y as shouldEmitDiscordReactionNotification } from "./.setup/channel-type-DKnjV1XW.mjs";
2
- import { n as registerBuiltDiscordComponentMessage, r as sendDiscordComponentMessage, t as editDiscordComponentMessage } from "./.setup/send.components-ChY21qr-.mjs";
1
+ import { b as shouldEmitDiscordReactionNotification, c as resolveDiscordChannelConfig, d as resolveDiscordCommandAuthorized, f as resolveDiscordGuildEntry, i as normalizeDiscordAllowList, l as resolveDiscordChannelConfigWithFallback, n as allowListMatches, o as normalizeDiscordSlug, r as isDiscordGroupAllowedByPolicy, v as resolveDiscordShouldRequireMention, y as resolveGroupDmAllow } from "./.setup/channel-type-DRCrEMss.mjs";
2
+ import { n as registerBuiltDiscordComponentMessage, r as sendDiscordComponentMessage, t as editDiscordComponentMessage } from "./.setup/send.components-DxQAMfES.mjs";
3
3
  import { r as setDiscordRuntime } from "./.setup/runtime-DgnVQ7zW.mjs";
4
- import { n as listDiscordDirectoryGroupsLive, r as listDiscordDirectoryPeersLive } from "./.setup/directory-live--EGTH0DC.mjs";
5
- import { C as hasAllGuildPermissionsDiscord, G as unregisterGateway, H as clearGateways, S as fetchMemberGuildPermissionsDiscord, T as hasAnyGuildPermissionDiscord, U as getGateway, W as registerGateway, _ as DiscordSendError, x as fetchChannelPermissionsDiscord } from "./.setup/send.shared-VNvWfX2T.mjs";
6
- import { n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./.setup/send.outbound-QTyuFupn.mjs";
7
- import { _ as sanitizeDiscordThreadName, h as resolveDiscordReplyTarget } from "./.setup/transcripts-source-DVegW0WI.mjs";
8
- import { i as setPresence, n as getPresence, r as presenceCacheSize, t as clearPresences } from "./.setup/presence-cache-dYSHPWMx.mjs";
9
- import { A as listScheduledEventsDiscord, B as moveChannelDiscord, C as fetchChannelInfoDiscord, D as fetchVoiceStatusDiscord, E as fetchRoleInfoDiscord, F as uploadEmojiDiscord, H as setChannelPermissionDiscord, I as uploadStickerDiscord, L as createChannelDiscord, M as resolveEventCoverImage, N as timeoutMemberDiscord, O as kickMemberDiscord, P as listGuildEmojisDiscord, R as deleteChannelDiscord, S as createScheduledEventDiscord, T as fetchMemberInfoDiscord, V as removeChannelPermissionDiscord, _ as readMessagesDiscord, a as removeReactionDiscord, b as addRoleDiscord, c as sendWebhookMessageDiscord, d as deleteMessageDiscord, f as editMessageDiscord, g as pinMessageDiscord, h as listThreadsDiscord, i as removeOwnReactionsDiscord, j as removeRoleDiscord, k as listGuildChannelsDiscord, m as listPinsDiscord, n as fetchReactionsDiscord, o as sendTypingDiscord, p as fetchMessageDiscord, r as reactMessageDiscord, s as sendVoiceMessageDiscord, u as createThreadDiscord, v as searchMessagesDiscord, x as banMemberDiscord, y as unpinMessageDiscord, z as editChannelDiscord } from "./.setup/send-CIBzvXjS.mjs";
4
+ import { n as listDiscordDirectoryGroupsLive, r as listDiscordDirectoryPeersLive } from "./.setup/directory-live-DtKRHuGV.mjs";
5
+ import { H as getGateway, S as hasAllGuildPermissionsDiscord, U as registerGateway, V as clearGateways, W as unregisterGateway, b as fetchChannelPermissionsDiscord, g as DiscordSendError, w as hasAnyGuildPermissionDiscord, x as fetchMemberGuildPermissionsDiscord } from "./.setup/send.shared-DGFkbkQR.mjs";
6
+ import { n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./.setup/send.outbound-BISKnb-a.mjs";
7
+ import { h as sanitizeDiscordThreadName, p as resolveDiscordReplyTarget } from "./.setup/transcripts-source-p8EV179h.mjs";
8
+ import { i as setPresence, n as getPresence, r as presenceCacheSize, t as clearPresences } from "./.setup/presence-cache-Di3H3DIU.mjs";
9
+ import { A as listScheduledEventsDiscord, B as moveChannelDiscord, C as fetchChannelInfoDiscord, D as fetchVoiceStatusDiscord, E as fetchRoleInfoDiscord, F as uploadEmojiDiscord, H as setChannelPermissionDiscord, I as uploadStickerDiscord, L as createChannelDiscord, M as resolveEventCoverImage, N as timeoutMemberDiscord, O as kickMemberDiscord, P as listGuildEmojisDiscord, R as deleteChannelDiscord, S as createScheduledEventDiscord, T as fetchMemberInfoDiscord, V as removeChannelPermissionDiscord, _ as readMessagesDiscord, a as removeReactionDiscord, b as addRoleDiscord, c as sendWebhookMessageDiscord, d as deleteMessageDiscord, f as editMessageDiscord, g as pinMessageDiscord, h as listThreadsDiscord, i as removeOwnReactionsDiscord, j as removeRoleDiscord, k as listGuildChannelsDiscord, m as listPinsDiscord, n as fetchReactionsDiscord, o as sendTypingDiscord, p as fetchMessageDiscord, r as reactMessageDiscord, s as sendVoiceMessageDiscord, u as createThreadDiscord, v as searchMessagesDiscord, x as banMemberDiscord, y as unpinMessageDiscord, z as editChannelDiscord } from "./.setup/send-CrfEI6Bs.mjs";
10
10
  import { a as isAbortError, i as DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, l as runDiscordTaskWithTimeout, n as DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, o as normalizeDiscordInboundWorkerTimeoutMs, r as DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, s as normalizeDiscordListenerTimeoutMs, t as DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS } from "./.setup/timeouts-D86uWLt_.mjs";
11
- import { c as readDiscordChannelMoveParams, i as requiredGuildPermissionForModerationAction, l as readDiscordParentIdParam, n as isDiscordModerationAction, o as readDiscordChannelCreateParams, r as readDiscordModerationCommand, s as readDiscordChannelEditParams, t as handleDiscordAction } from "./.setup/runtime-B8lJfyrA.mjs";
12
- import { t as resolveDiscordOutboundSessionRoute, v as discordMessageActions } from "./.setup/outbound-session-route-VulUE0yV.mjs";
13
- import { C as resolveThreadBindingMaxAgeMs, S as resolveThreadBindingMaxAgeExpiresAt, b as resolveThreadBindingIdleTimeoutMs, x as resolveThreadBindingInactivityExpiresAt } from "./.setup/thread-bindings.state-BThFQEga.mjs";
14
- import { n as setThreadBindingMaxAgeBySessionKey, t as setThreadBindingIdleTimeoutBySessionKey } from "./.setup/thread-bindings.session-updates-DCQq1WZ5.mjs";
15
- import { t as resolveDiscordChannelAllowlist } from "./.setup/resolve-channels-BbvsLQOZ.mjs";
16
- import { t as resolveDiscordUserAllowlist } from "./.setup/resolve-users-ByFlR7LQ.mjs";
17
- import { a as createNoopThreadBindingManager, c as resolveThreadBindingPersona, d as resolveThreadBindingIntroText, f as resolveThreadBindingThreadName, l as resolveThreadBindingPersonaFromRecord, r as getThreadBindingManager, t as createThreadBindingManager, u as formatThreadBindingDurationLabel } from "./.setup/thread-bindings.manager-ve-i6oqt.mjs";
18
- 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 "./.setup/thread-bindings-CEh2dhqP.mjs";
19
- import { i as probeDiscord, n as fetchDiscordApplicationSummary, o as resolveDiscordPrivilegedIntentsFromFlags, r as parseApplicationIdFromToken, t as fetchDiscordApplicationId } from "./.setup/probe-CupW4we4.mjs";
20
- import { r as collectDiscordAuditChannelIds, t as auditDiscordChannelPermissions } from "./.setup/audit-vKbh-LFR.mjs";
21
- import { b as registerDiscordListener, d as resolveDiscordGatewayIntents, f as waitForDiscordGatewayPluginRegistration, p as createDiscordNativeCommand, t as monitorDiscordProvider, u as createDiscordGatewayPlugin } from "./.setup/provider-iOf73HW-.mjs";
22
- import { t as createDiscordMessageHandler } from "./.setup/message-handler-X6ejmbtY.mjs";
11
+ import { c as readDiscordChannelMoveParams, i as requiredGuildPermissionForModerationAction, l as readDiscordParentIdParam, n as isDiscordModerationAction, o as readDiscordChannelCreateParams, r as readDiscordModerationCommand, s as readDiscordChannelEditParams, t as handleDiscordAction } from "./.setup/runtime-FN000lxA.mjs";
12
+ import { t as resolveDiscordOutboundSessionRoute, v as discordMessageActions } from "./.setup/outbound-session-route-zVGxxceg.mjs";
13
+ import { D as resolveThreadBindingMaxAgeMs, E as resolveThreadBindingMaxAgeExpiresAt, T as resolveThreadBindingInactivityExpiresAt, w as resolveThreadBindingIdleTimeoutMs } from "./.setup/thread-bindings.state-g6v9zAym.mjs";
14
+ import { r as setThreadBindingMaxAgeBySessionKey, t as setThreadBindingIdleTimeoutBySessionKey } from "./.setup/thread-bindings.session-updates-CshfKghV.mjs";
15
+ import { t as resolveDiscordChannelAllowlist } from "./.setup/resolve-channels-BFPNRmVv.mjs";
16
+ import { t as resolveDiscordUserAllowlist } from "./.setup/resolve-users-0-aBuCy3.mjs";
17
+ import { c as resolveThreadBindingPersonaFromRecord, i as createNoopThreadBindingManager, n as getThreadBindingManager, s as resolveThreadBindingPersona, t as createThreadBindingManager } from "./.setup/thread-bindings.manager-DN-NissX.mjs";
18
+ import { a as autoBindSpawnedDiscordSubagent, c as reconcileAcpThreadBindingsOnStartup, d as resolveDiscordThreadBindingIdleTimeoutMs, f as resolveDiscordThreadBindingMaxAgeMs, l as unbindThreadBindingsBySessionKey, n as resolveThreadBindingIntroText, o as listThreadBindingsBySessionKey, p as resolveThreadBindingsEnabled, r as resolveThreadBindingThreadName, s as listThreadBindingsForAccount, t as formatThreadBindingDurationLabel } from "./.setup/thread-bindings-D7TfgjR_.mjs";
19
+ import { i as probeDiscord, n as fetchDiscordApplicationSummary, r as parseApplicationIdFromToken, s as resolveDiscordPrivilegedIntentsFromFlags, t as fetchDiscordApplicationId } from "./.setup/probe-LYrIHlBF.mjs";
20
+ import { r as collectDiscordAuditChannelIds, t as auditDiscordChannelPermissions } from "./.setup/audit-CLg9I71N.mjs";
21
+ import { S as createDiscordNativeCommand, b as resolveDiscordGatewayIntents, k as registerDiscordListener, t as monitorDiscordProvider, x as waitForDiscordGatewayPluginRegistration, y as createDiscordGatewayPlugin } from "./.setup/provider-B_G5hASF.mjs";
22
+ import { t as createDiscordMessageHandler } from "./.setup/message-handler-B-Jk4oDk.mjs";
23
23
  export { DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS, DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, DiscordSendError, addRoleDiscord, allowListMatches, auditDiscordChannelPermissions, autoBindSpawnedDiscordSubagent, banMemberDiscord, clearGateways, clearPresences, collectDiscordAuditChannelIds, createChannelDiscord, createDiscordGatewayPlugin, createDiscordMessageHandler, createDiscordNativeCommand, createNoopThreadBindingManager, createScheduledEventDiscord, createThreadBindingManager, createThreadDiscord, deleteChannelDiscord, deleteMessageDiscord, discordMessageActions, editChannelDiscord, editDiscordComponentMessage, editMessageDiscord, fetchChannelInfoDiscord, fetchChannelPermissionsDiscord, fetchDiscordApplicationId, fetchDiscordApplicationSummary, fetchMemberGuildPermissionsDiscord, fetchMemberInfoDiscord, fetchMessageDiscord, fetchReactionsDiscord, fetchRoleInfoDiscord, fetchVoiceStatusDiscord, formatThreadBindingDurationLabel, getGateway, getPresence, getThreadBindingManager, handleDiscordAction, hasAllGuildPermissionsDiscord, hasAnyGuildPermissionDiscord, isAbortError, isDiscordGroupAllowedByPolicy, isDiscordModerationAction, kickMemberDiscord, listDiscordDirectoryGroupsLive, listDiscordDirectoryPeersLive, listGuildChannelsDiscord, listGuildEmojisDiscord, listPinsDiscord, listScheduledEventsDiscord, listThreadBindingsBySessionKey, listThreadBindingsForAccount, listThreadsDiscord, monitorDiscordProvider, moveChannelDiscord, normalizeDiscordAllowList, normalizeDiscordInboundWorkerTimeoutMs, normalizeDiscordListenerTimeoutMs, normalizeDiscordSlug, parseApplicationIdFromToken, pinMessageDiscord, presenceCacheSize, probeDiscord, reactMessageDiscord, readDiscordChannelCreateParams, readDiscordChannelEditParams, readDiscordChannelMoveParams, readDiscordModerationCommand, readDiscordParentIdParam, readMessagesDiscord, reconcileAcpThreadBindingsOnStartup, registerBuiltDiscordComponentMessage, registerDiscordListener, registerGateway, removeChannelPermissionDiscord, removeOwnReactionsDiscord, removeReactionDiscord, removeRoleDiscord, requiredGuildPermissionForModerationAction, resolveDiscordChannelAllowlist, resolveDiscordChannelConfig, resolveDiscordChannelConfigWithFallback, resolveDiscordCommandAuthorized, resolveDiscordGatewayIntents, resolveDiscordGuildEntry, resolveDiscordOutboundSessionRoute, resolveDiscordPrivilegedIntentsFromFlags, resolveDiscordReplyTarget, resolveDiscordShouldRequireMention, resolveDiscordThreadBindingIdleTimeoutMs, resolveDiscordThreadBindingMaxAgeMs, resolveDiscordUserAllowlist, resolveEventCoverImage, resolveGroupDmAllow, resolveThreadBindingIdleTimeoutMs, resolveThreadBindingInactivityExpiresAt, resolveThreadBindingIntroText, resolveThreadBindingMaxAgeExpiresAt, resolveThreadBindingMaxAgeMs, resolveThreadBindingPersona, resolveThreadBindingPersonaFromRecord, resolveThreadBindingThreadName, resolveThreadBindingsEnabled, runDiscordTaskWithTimeout, sanitizeDiscordThreadName, searchMessagesDiscord, sendDiscordComponentMessage, sendMessageDiscord, sendPollDiscord, sendStickerDiscord, sendTypingDiscord, sendVoiceMessageDiscord, sendWebhookMessageDiscord, setChannelPermissionDiscord, setDiscordRuntime, setPresence, setThreadBindingIdleTimeoutBySessionKey, setThreadBindingMaxAgeBySessionKey, shouldEmitDiscordReactionNotification, timeoutMemberDiscord, unbindThreadBindingsBySessionKey, unpinMessageDiscord, unregisterGateway, uploadEmojiDiscord, uploadStickerDiscord, waitForDiscordGatewayPluginRegistration };
@@ -1,2 +1,2 @@
1
- import { r as secretTargetRegistryEntries, t as collectRuntimeConfigAssignments } from "./.setup/secret-config-contract-DFu9hfU8.mjs";
1
+ import { r as secretTargetRegistryEntries, t as collectRuntimeConfigAssignments } from "./.setup/secret-config-contract-uOE2J7yM.mjs";
2
2
  export { collectRuntimeConfigAssignments, secretTargetRegistryEntries };
@@ -1,2 +1,2 @@
1
- import { t as collectDiscordSecurityAuditFindings } from "./.setup/security-audit-s5w50-Ly.mjs";
1
+ import { t as collectDiscordSecurityAuditFindings } from "./.setup/security-audit-Cdaegq7C.mjs";
2
2
  export { collectDiscordSecurityAuditFindings };
@@ -4,7 +4,7 @@ import { fileURLToPath } from "node:url";
4
4
  var setup_entry_default = defineBundledChannelSetupEntry({
5
5
  importMetaUrl: import.meta.url,
6
6
  plugin: {
7
- specifier: fileURLToPath(new URL(".setup/setup-plugin-api-Dvr41dyx.mjs", import.meta.url).href),
7
+ specifier: fileURLToPath(new URL(".setup/setup-plugin-api-BQUBxbhe.mjs", import.meta.url).href),
8
8
  exportName: "discordSetupPlugin"
9
9
  }
10
10
  });
@@ -1,2 +1,2 @@
1
- import { t as discordSetupPlugin } from "./.setup/channel.setup-0NX6FFwi.mjs";
1
+ import { t as discordSetupPlugin } from "./.setup/channel.setup-CRo1GjV7.mjs";
2
2
  export { discordSetupPlugin };
@@ -1,4 +1,4 @@
1
- import { S as setDiscordAudioOutputStatus, _ as getDiscordAudioOutputStatus, b as retireDiscordAudioOutput, f as createRealtimePcmToDiscordConverter, h as DiscordAudioOutputStatus, i as enableDaveReceivePassthrough, l as createDiscordOpusEncodeStream, n as analyzeVoiceReceiveError, p as decodeOpusStreamChunks, s as recoverDaveZeroTransition, u as createDiscordOpusPlaybackStream, v as releaseDiscordAudioInput, x as serializeDiscordAudioError } from "../../.setup/receive-recovery-DHst8WRx.mjs";
1
+ import { _ as releaseDiscordAudioInput, b as serializeDiscordAudioError, c as createDiscordOpusEncodeStream, d as createRealtimePcmToDiscordConverter, f as decodeOpusStreamChunks, g as getDiscordAudioOutputStatus, i as enableDaveReceivePassthrough, l as createDiscordOpusPlaybackStream, m as DiscordAudioOutputStatus, n as analyzeVoiceReceiveError, o as recoverDaveZeroTransition, x as setDiscordAudioOutputStatus, y as retireDiscordAudioOutput } from "../../.setup/receive-recovery-CHPOsnLc.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
4
4
  import { createSubsystemLogger } from "openclaw/plugin-sdk/runtime-env";
@@ -515,7 +515,7 @@ var DiscordAudioWorker = class {
515
515
  this.stopped = false;
516
516
  this.stopAbort = new AbortController();
517
517
  this.tasks = /* @__PURE__ */ new Set();
518
- this.onPlayerError = (error) => this.post({
518
+ this.onError = (error) => this.post({
519
519
  type: "error",
520
520
  error: serializeDiscordAudioError(error)
521
521
  });
@@ -552,7 +552,7 @@ var DiscordAudioWorker = class {
552
552
  type: "player",
553
553
  status: state.status
554
554
  }));
555
- this.player.on("error", this.onPlayerError);
555
+ this.player.on("error", this.onError);
556
556
  }
557
557
  async connect() {
558
558
  const deadline = Date.now() + this.options.connectTimeoutMs;
@@ -581,10 +581,7 @@ var DiscordAudioWorker = class {
581
581
  }
582
582
  });
583
583
  this.connection = connection;
584
- connection.on("error", (error) => this.post({
585
- type: "error",
586
- error: serializeDiscordAudioError(error)
587
- }));
584
+ connection.on("error", this.onError);
588
585
  try {
589
586
  await this.sdk.entersState(connection, this.sdk.VoiceConnectionStatus.Ready, AbortSignal.any([this.stopAbort.signal, AbortSignal.timeout(Math.max(1, deadline - Date.now()))]));
590
587
  if (this.stopped) return;
@@ -1002,10 +999,7 @@ var DiscordAudioWorker = class {
1002
999
  }
1003
1000
  track(task) {
1004
1001
  this.tasks.add(task);
1005
- task.catch((error) => this.post({
1006
- type: "error",
1007
- error: serializeDiscordAudioError(error)
1008
- })).finally(() => this.tasks.delete(task));
1002
+ task.catch(this.onError).finally(() => this.tasks.delete(task));
1009
1003
  }
1010
1004
  async stop() {
1011
1005
  if (this.stopped) return;
@@ -1025,7 +1019,7 @@ var DiscordAudioWorker = class {
1025
1019
  connection?.receiver.speaking.off("end", this.onSpeakingEnd);
1026
1020
  connection?.off(this.sdk.VoiceConnectionStatus.Disconnected, this.onDisconnected);
1027
1021
  connection?.off(this.sdk.VoiceConnectionStatus.Destroyed, this.onDestroyed);
1028
- this.player.off("error", this.onPlayerError);
1022
+ this.player.off("error", this.onError);
1029
1023
  if (connection && connection.state.status !== this.sdk.VoiceConnectionStatus.Destroyed) connection.destroy();
1030
1024
  this.post({ type: "gateway-destroy" });
1031
1025
  await Promise.allSettled(this.tasks);
@@ -1040,26 +1034,23 @@ const media = new DiscordAudioWorker(workerData, (event) => {
1040
1034
  port.postMessage(event);
1041
1035
  if (event.type === "stopped") port.close();
1042
1036
  });
1037
+ const fail = (error) => {
1038
+ port.postMessage({
1039
+ type: "error",
1040
+ error: serializeDiscordAudioError(error)
1041
+ });
1042
+ media.stop();
1043
+ };
1043
1044
  port.on("message", (command) => {
1044
1045
  try {
1045
1046
  media.receive(command);
1046
1047
  } catch (error) {
1047
- port.postMessage({
1048
- type: "error",
1049
- error: serializeDiscordAudioError(error)
1050
- });
1051
- media.stop();
1048
+ fail(error);
1052
1049
  }
1053
1050
  });
1054
1051
  port.on("close", () => {
1055
1052
  media.stop();
1056
1053
  });
1057
- media.connect().catch((error) => {
1058
- port.postMessage({
1059
- type: "error",
1060
- error: serializeDiscordAudioError(error)
1061
- });
1062
- media.stop();
1063
- });
1054
+ media.connect().catch(fail);
1064
1055
  //#endregion
1065
1056
  export {};
@@ -1,11 +1,10 @@
1
1
  import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
2
2
  //#region extensions/discord/subagent-hooks-api.ts
3
- const loadDiscordSubagentHooksModule = createLazyRuntimeModule(() => import("./.setup/subagent-hooks-CjW7r8Pe.mjs").then((n) => n.r));
3
+ const loadDiscordSubagentHooksModule = createLazyRuntimeModule(() => import("./.setup/subagent-hooks-nlUE9ow7.mjs").then((n) => n.r));
4
4
  function registerDiscordSubagentHooks(api) {
5
5
  api.on("subagent_ended", async (event) => {
6
- const { ensureBindingsLoadedAsync, handleDiscordSubagentEnded } = await loadDiscordSubagentHooksModule();
7
- await ensureBindingsLoadedAsync();
8
- handleDiscordSubagentEnded(event);
6
+ const { handleDiscordSubagentEnded } = await loadDiscordSubagentHooksModule();
7
+ await handleDiscordSubagentEnded(event);
9
8
  });
10
9
  api.on("subagent_delivery_target", async (event) => {
11
10
  const { handleDiscordSubagentDeliveryTargetAsync } = await loadDiscordSubagentHooksModule();
@@ -1,4 +1,4 @@
1
- import { n as discordVoiceTranscriptsSourceProvider } from "./.setup/transcripts-source-DVegW0WI.mjs";
1
+ import { n as discordVoiceTranscriptsSourceProvider } from "./.setup/transcripts-source-p8EV179h.mjs";
2
2
  //#region extensions/discord/transcripts-source-api.ts
3
3
  function registerDiscordTranscriptSourceProvider(api) {
4
4
  api.registerTranscriptSourceProvider(discordVoiceTranscriptsSourceProvider);
@@ -8,8 +8,8 @@ This package contains type definitions for node (https://nodejs.org/).
8
8
  Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node.
9
9
 
10
10
  ### Additional Details
11
- * Last updated: Wed, 09 Sep 2026 18:05:03 GMT
11
+ * Last updated: Sat, 19 Sep 2026 00:09:37 GMT
12
12
  * Dependencies: [undici-types](https://npmjs.com/package/undici-types)
13
13
 
14
14
  # Credits
15
- These definitions were written by [Microsoft TypeScript](https://github.com/Microsoft), [Alberto Schiabel](https://github.com/jkomyno), [Andrew Makarov](https://github.com/r3nya), [Benjamin Toueg](https://github.com/btoueg), [David Junger](https://github.com/touffy), [Mohsen Azimi](https://github.com/mohsen1), [Nikita Galkin](https://github.com/galkin), [Sebastian Silbermann](https://github.com/eps1lon), [Wilco Bakker](https://github.com/WilcoBakker), [Marcin Kopacz](https://github.com/chyzwar), [Trivikram Kamat](https://github.com/trivikr), [Junxiao Shi](https://github.com/yoursunny), [Ilia Baryshnikov](https://github.com/qwelias), [ExE Boss](https://github.com/ExE-Boss), [Piotr Błażejewicz](https://github.com/peterblazejewicz), [Anna Henningsen](https://github.com/addaleax), [Victor Perin](https://github.com/victorperin), [NodeJS Contributors](https://github.com/NodeJS), [Linus Unnebäck](https://github.com/LinusU), [wafuwafu13](https://github.com/wafuwafu13), [Matteo Collina](https://github.com/mcollina), [Dmitry Semigradsky](https://github.com/Semigradsky), [René](https://github.com/Renegade334), and [Yagiz Nizipli](https://github.com/anonrig).
15
+ These definitions were written by [Microsoft TypeScript](https://github.com/Microsoft), [Alberto Schiabel](https://github.com/jkomyno), [Andrew Makarov](https://github.com/r3nya), [Benjamin Toueg](https://github.com/btoueg), [David Junger](https://github.com/touffy), [Mohsen Azimi](https://github.com/mohsen1), [Nikita Galkin](https://github.com/galkin), [Sebastian Silbermann](https://github.com/eps1lon), [Wilco Bakker](https://github.com/WilcoBakker), [Trivikram Kamat](https://github.com/trivikr), [Junxiao Shi](https://github.com/yoursunny), [ExE Boss](https://github.com/ExE-Boss), [Piotr Błażejewicz](https://github.com/peterblazejewicz), [Anna Henningsen](https://github.com/addaleax), [NodeJS Contributors](https://github.com/NodeJS), [Linus Unnebäck](https://github.com/LinusU), [wafuwafu13](https://github.com/wafuwafu13), [Matteo Collina](https://github.com/mcollina), [Dmitry Semigradsky](https://github.com/Semigradsky), [René](https://github.com/Renegade334), and [Yagiz Nizipli](https://github.com/anonrig).
@@ -1136,7 +1136,7 @@ declare module "node:child_process" {
1136
1136
  stderr: string | NonSharedBuffer;
1137
1137
  }>;
1138
1138
  }
1139
- interface ForkOptions extends ProcessEnvOptions, MessagingOptions, Abortable {
1139
+ interface ForkOptions extends CommonOptions, MessagingOptions, Abortable {
1140
1140
  execPath?: string | undefined;
1141
1141
  execArgv?: string[] | undefined;
1142
1142
  silent?: boolean | undefined;
@@ -88,6 +88,8 @@ declare module "node:crypto" {
88
88
  * behavior. For XOF hash functions such as `'shake256'`, the `outputLength` option
89
89
  * can be used to specify the desired output length in bytes.
90
90
  *
91
+ * When the data is small (< 5MB) and readily available, `crypto.hash()` is usually faster.
92
+ *
91
93
  * The `algorithm` is dependent on the available algorithms supported by the
92
94
  * version of OpenSSL on the platform. Examples are `'sha256'`, `'sha512'`, etc.
93
95
  * On recent releases of OpenSSL, `openssl list -digest-algorithms` will
@@ -1304,8 +1306,11 @@ declare module "node:crypto" {
1304
1306
  /**
1305
1307
  * Calculates the signature on all the data passed through using either `sign.update()` or `sign.write()`.
1306
1308
  *
1307
- * If `privateKey` is not a `KeyObject`, this function behaves as if `privateKey` had been passed to {@link createPrivateKey}. If it is an
1308
- * object, the following additional properties can be passed:
1309
+ * If `privateKey` is not a `KeyObject`, this function behaves as if
1310
+ * `privateKey` had been passed to `crypto.createPrivateKey()`. When
1311
+ * `privateKey` is a string, `ArrayBuffer`, `Buffer`, `TypedArray`, or
1312
+ * `DataView`, it must contain PEM-encoded key material. If it is an object, the
1313
+ * following additional properties can be passed:
1309
1314
  *
1310
1315
  * If `outputEncoding` is provided a string is returned; otherwise a `Buffer` is returned.
1311
1316
  *
@@ -1375,8 +1380,11 @@ declare module "node:crypto" {
1375
1380
  /**
1376
1381
  * Verifies the provided data using the given `key` and `signature`.
1377
1382
  *
1378
- * If `key` is not a `KeyObject`, this function behaves as if `key` had been passed to {@link createPublicKey}. If it is an
1379
- * object, the following additional properties can be passed:
1383
+ * If `key` is not a `KeyObject`, this function behaves as if
1384
+ * `key` had been passed to `crypto.createPublicKey()`. When `key` is a string,
1385
+ * `ArrayBuffer`, `Buffer`, `TypedArray`, or `DataView`, it must contain
1386
+ * PEM-encoded key material. If it is an object, the following additional
1387
+ * properties can be passed:
1380
1388
  *
1381
1389
  * The `signature` argument is the previously calculated signature for the data, in
1382
1390
  * the `signatureEncoding`.
@@ -2690,8 +2698,10 @@ declare module "node:crypto" {
2690
2698
  * ML-DSA.
2691
2699
  *
2692
2700
  * If `key` is not a `KeyObject`, this function behaves as if `key` had been
2693
- * passed to {@link createPrivateKey}. If it is an object, the following
2694
- * additional properties can be passed:
2701
+ * passed to `crypto.createPrivateKey()`. When `key` is a string, `ArrayBuffer`,
2702
+ * `Buffer`, `TypedArray`, or `DataView`, it must contain PEM-encoded key
2703
+ * material. If it is an object, the following additional properties can be
2704
+ * passed:
2695
2705
  *
2696
2706
  * If the `callback` function is provided this function uses libuv's threadpool.
2697
2707
  * @since v12.0.0
@@ -2716,8 +2726,10 @@ declare module "node:crypto" {
2716
2726
  * ML-DSA.
2717
2727
  *
2718
2728
  * If `key` is not a `KeyObject`, this function behaves as if `key` had been
2719
- * passed to {@link createPublicKey}. If it is an object, the following
2720
- * additional properties can be passed:
2729
+ * passed to `crypto.createPublicKey()`. When `key` is a string, `ArrayBuffer`,
2730
+ * `Buffer`, `TypedArray`, or `DataView`, it must contain PEM-encoded key
2731
+ * material. If it is an object, the following additional properties can be
2732
+ * passed:
2721
2733
  *
2722
2734
  * The `signature` argument is the previously calculated signature for the `data`.
2723
2735
  *
@@ -415,6 +415,20 @@ declare module "node:ffi" {
415
415
  * @since v26.1.0
416
416
  */
417
417
  function getRawPointer(source: ArrayBuffer | NodeJS.ArrayBufferView): bigint;
418
+ /**
419
+ * Returns the address of the current thread's `uv_loop_t` as a `bigint`.
420
+ *
421
+ * The returned address is for the current Node.js environment. In the main thread,
422
+ * this is the main thread event loop. In a worker thread, this is that worker's
423
+ * event loop.
424
+ *
425
+ * This is unsafe and dangerous. The returned pointer is only valid for the lifetime
426
+ * of the current environment. Using it after the environment exits, or from native
427
+ * code that assumes a different thread or lifetime, can crash the process or
428
+ * corrupt memory.
429
+ * @since v26.6.0
430
+ */
431
+ function getCurrentEventLoop(): bigint;
418
432
  type ReturnType = { [K in keyof DataTypeMap]: K }[keyof DataTypeMap];
419
433
  type ArgumentType = Exclude<ReturnType, "void">;
420
434
  interface DataTypeMap {
@@ -685,10 +685,11 @@ declare module "node:http2" {
685
685
  * Returns a `Proxy` object that acts as a `net.Socket` (or `tls.TLSSocket`) but
686
686
  * limits available methods to ones safe to use with HTTP/2.
687
687
  *
688
- * `destroy`, `emit`, `end`, `pause`, `read`, `resume`, and `write` will throw
688
+ * `emit`, `end`, `pause`, `read`, `resume`, and `write` will throw
689
689
  * an error with code `ERR_HTTP2_NO_SOCKET_MANIPULATION`. See `Http2Session and Sockets` for more information.
690
690
  *
691
- * `setTimeout` method will be called on this `Http2Session`.
691
+ * `destroy`, `setTimeout`, `ref`, and `unref` methods will be called on this
692
+ * `Http2Session`.
692
693
  *
693
694
  * All other interactions will be routed directly to the socket.
694
695
  * @since v8.4.0
@@ -353,10 +353,11 @@ declare module "node:net" {
353
353
  /**
354
354
  * This property represents the state of the connection as a string.
355
355
  *
356
- * * If the stream is connecting `socket.readyState` is `opening`.
357
- * * If the stream is readable and writable, it is `open`.
358
- * * If the stream is readable and not writable, it is `readOnly`.
359
- * * If the stream is not readable and writable, it is `writeOnly`.
356
+ * * If the socket is connecting, `socket.readyState` is `opening`.
357
+ * * If the socket is readable and writable, it is `open`.
358
+ * * If the socket is readable and not writable, it is `readOnly`.
359
+ * * If the socket is not readable and writable, it is `writeOnly`.
360
+ * * Otherwise, it is `closed`.
360
361
  * @since v0.5.0
361
362
  */
362
363
  readonly readyState: SocketReadyState;
@@ -378,6 +379,12 @@ declare module "node:net" {
378
379
  * @since v0.5.10
379
380
  */
380
381
  readonly remotePort: number | undefined;
382
+ /**
383
+ * Reference to the server that accepted the socket. This is `null` for sockets
384
+ * that were not accepted by a server.
385
+ * @since v0.3.4
386
+ */
387
+ readonly server: Server | null;
381
388
  /**
382
389
  * The socket timeout in milliseconds as set by `socket.setTimeout()`.
383
390
  * It is `undefined` if a timeout has not been set.
@@ -486,6 +493,11 @@ declare module "node:net" {
486
493
  * throw `ERR_SOCKET_HANDLE_ADOPTED`. A handle that is never adopted must be
487
494
  * closed to avoid leaking the socket.
488
495
  *
496
+ * When an adopted `BoundSocket` connects to a numeric IP literal, `connect(2)` is
497
+ * issued synchronously, so `socket.localAddress` is resolved once
498
+ * `socket.connect()` returns. Connection failures are still reported via a
499
+ * deferred `'error'` event.
500
+ *
489
501
  * ```js
490
502
  * import net from 'node:net';
491
503
  *
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@types/node",
3
- "version": "26.5.1",
3
+ "version": "26.6.2",
4
4
  "description": "TypeScript definitions for node",
5
5
  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node",
6
6
  "license": "MIT",
@@ -50,11 +50,6 @@
50
50
  "githubUsername": "WilcoBakker",
51
51
  "url": "https://github.com/WilcoBakker"
52
52
  },
53
- {
54
- "name": "Marcin Kopacz",
55
- "githubUsername": "chyzwar",
56
- "url": "https://github.com/chyzwar"
57
- },
58
53
  {
59
54
  "name": "Trivikram Kamat",
60
55
  "githubUsername": "trivikr",
@@ -65,11 +60,6 @@
65
60
  "githubUsername": "yoursunny",
66
61
  "url": "https://github.com/yoursunny"
67
62
  },
68
- {
69
- "name": "Ilia Baryshnikov",
70
- "githubUsername": "qwelias",
71
- "url": "https://github.com/qwelias"
72
- },
73
63
  {
74
64
  "name": "ExE Boss",
75
65
  "githubUsername": "ExE-Boss",
@@ -85,11 +75,6 @@
85
75
  "githubUsername": "addaleax",
86
76
  "url": "https://github.com/addaleax"
87
77
  },
88
- {
89
- "name": "Victor Perin",
90
- "githubUsername": "victorperin",
91
- "url": "https://github.com/victorperin"
92
- },
93
78
  {
94
79
  "name": "NodeJS Contributors",
95
80
  "githubUsername": "NodeJS",
@@ -150,6 +135,6 @@
150
135
  "undici-types": "~8.9.0"
151
136
  },
152
137
  "peerDependencies": {},
153
- "typesPublisherContentHash": "6f5c8d0dfea5f391f6d414b5de64b03719aeafbbbe627156f715a8c47167ddcd",
138
+ "typesPublisherContentHash": "6fd8885e736abe0d2ec8284c43e09a6a80eeced090dc6974536c890169d46439",
154
139
  "typeScriptVersion": "5.6"
155
140
  }
@@ -110,6 +110,7 @@ declare module "node:process" {
110
110
  "node:util/types": typeof import("node:util/types");
111
111
  "v8": typeof import("v8");
112
112
  "node:v8": typeof import("node:v8");
113
+ "node:vfs": typeof import("node:vfs");
113
114
  "vm": typeof import("vm");
114
115
  "node:vm": typeof import("node:vm");
115
116
  "wasi": typeof import("wasi");