@openclaw/discord 2026.5.6 → 2026.5.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 (94) hide show
  1. package/dist/action-runtime-api.js +1 -1
  2. package/dist/api.js +14 -15
  3. package/dist/{approval-handler.runtime-TRKg9NzZ.js → approval-handler.runtime-BBZRYAGs.js} +2 -2
  4. package/dist/{approval-native-DJs5M8fw.js → approval-native-CBdZsAR7.js} +2 -2
  5. package/dist/{approval-shared-GfJeMdLu.js → approval-shared-Ck6TxKgo.js} +1 -1
  6. package/dist/audit-CCJ0h49k.js +24 -0
  7. package/dist/{audit-CdKtgVPO.js → audit-core-CejGc3hO.js} +29 -26
  8. package/dist/{channel-D8E-S2xn.js → channel-UXGa9PGc.js} +33 -21
  9. package/dist/{channel-actions-BvEKvoM5.js → channel-actions-Br29_1nE.js} +1 -1
  10. package/dist/{channel-actions.runtime-BNZAM-9-.js → channel-actions.runtime-ChmNUig1.js} +4 -4
  11. package/dist/channel-config-api.js +1 -1
  12. package/dist/channel-plugin-api.js +1 -1
  13. package/dist/{channel.setup-C-HEMkxU.js → channel.setup-D_xyQu_h.js} +3 -3
  14. package/dist/{config-schema-CC1qhiTN.js → config-schema-Cc953rAs.js} +4 -0
  15. package/dist/contract-api.js +7 -7
  16. package/dist/{conversation-identity-BN9wSmxJ.js → conversation-identity-DHhS0ez3.js} +1 -1
  17. package/dist/directory-contract-api.js +1 -1
  18. package/dist/{doctor-Bgzf3Du2.js → doctor-Bo-yifB3.js} +3 -3
  19. package/dist/{doctor-contract-Dxq4VIkE.js → doctor-contract-Bso46EOQ.js} +1 -1
  20. package/dist/doctor-contract-api.js +1 -1
  21. package/dist/{handle-action.guild-admin-nTLXjfyh.js → handle-action.guild-admin-sJiQymg8.js} +1 -1
  22. package/dist/{manager.runtime-B0TEyget.js → manager.runtime-Cug1PoeZ.js} +12 -6
  23. package/dist/{message-handler-CSPx1uqO.js → message-handler-C9Ohf-ea.js} +7 -7
  24. package/dist/{message-handler.preflight-FbHEumdA.js → message-handler.preflight-BrvazsYn.js} +12 -12
  25. package/dist/{message-handler.process-CVZ-6HNh.js → message-handler.process-CEnzuLiN.js} +13 -13
  26. package/dist/{message-utils-Dmgu-7fC.js → message-utils-9kaGF59d.js} +2 -2
  27. package/dist/{outbound-adapter-FG0CgK3I.js → outbound-adapter-DNsTVJfH.js} +4 -4
  28. package/dist/{outbound-session-route-uHGLDP-Y.js → outbound-session-route-DK9qkPgP.js} +1 -1
  29. package/dist/{preflight-audio-BpYtUAT6.js → preflight-audio-CRmUxxuM.js} +1 -1
  30. package/dist/{probe.runtime-ch3eJ1Ar.js → probe.runtime-CMgUDax3.js} +1 -1
  31. package/dist/{provider-DqqLCjug.js → provider-CuOh6z_b.js} +25 -25
  32. package/dist/{provider-session.runtime-BMF3HBc2.js → provider-session.runtime-CCESIHVo.js} +3 -3
  33. package/dist/provider.runtime-B68g3qLv.js +2 -0
  34. package/dist/{reply-delivery-QiXSsCCR.js → reply-delivery-D9aKHtDH.js} +3 -3
  35. package/dist/{resolve-channels-VAqom3Dn.js → resolve-channels-kyuvrXJg.js} +1 -1
  36. package/dist/{resolve-users-DPJkRKx1.js → resolve-users-CAwh4EBq.js} +1 -1
  37. package/dist/{route-resolution-DODkzE43.js → route-resolution-BWErj5Cn.js} +1 -1
  38. package/dist/{runtime-NObmZxWs.js → runtime-D8alY00g.js} +6 -6
  39. package/dist/runtime-api.actions.js +2 -2
  40. package/dist/runtime-api.js +22 -22
  41. package/dist/runtime-api.lookup.js +4 -4
  42. package/dist/runtime-api.monitor-DzkCxeBL.js +6 -0
  43. package/dist/runtime-api.monitor.js +6 -6
  44. package/dist/runtime-api.send.js +5 -5
  45. package/dist/runtime-api.threads.js +5 -5
  46. package/dist/secret-contract-api.js +1 -1
  47. package/dist/{security-audit-Cdz2iq3m.js → security-audit-BtRd_VhN.js} +1 -1
  48. package/dist/security-audit-contract-api.js +1 -1
  49. package/dist/{security-audit.runtime-DBV1T1_N.js → security-audit.runtime-Dm1LW9KX.js} +1 -1
  50. package/dist/security-contract-api.js +1 -1
  51. package/dist/{send-Rz5xnelg.js → send-8S_HKJpQ.js} +2 -2
  52. package/dist/{send.components-CoCE4aan.js → send.components-A42c_5tQ.js} +3 -3
  53. package/dist/{send.outbound-DN-HfmW2.js → send.outbound-D3tonSz8.js} +1 -1
  54. package/dist/{send.shared-BWZyuxM-.js → send.shared-BQGiUPvZ.js} +3 -79
  55. package/dist/session-key-api.js +1 -1
  56. package/dist/setup-plugin-api.js +1 -1
  57. package/dist/{shared-Ugd3DMEH.js → shared-BEW4H3bj.js} +8 -8
  58. package/dist/{subagent-hooks-DgpxQHUn.js → subagent-hooks-T0LPLh4H.js} +1 -1
  59. package/dist/subagent-hooks-api.js +1 -1
  60. package/dist/{normalize-B-ktw-T_.js → target-resolver-DA84_xbt.js} +91 -1
  61. package/dist/targets-FwL1BPTU.js +2 -0
  62. package/dist/test-api.js +4 -4
  63. package/dist/{thread-bindings-C7GN5ebh.js → thread-bindings-CMpZjP50.js} +6 -6
  64. package/dist/{thread-bindings.discord-api-CfZnSqIb.js → thread-bindings.discord-api-CwWGoyei.js} +6 -6
  65. package/dist/{thread-bindings.manager-BxPG0IHV.js → thread-bindings.manager-BtxfLfWf.js} +4 -4
  66. package/dist/{thread-bindings.session-updates-TTP020qQ.js → thread-bindings.session-updates-jcZSiRPI.js} +1 -1
  67. package/dist/{threading-Bi95Nz8h.js → threading-BMmpA2JR.js} +3 -3
  68. package/dist/timeouts.js +1 -1
  69. package/dist/{typing-BSi1dUHm.js → typing-Bw6NKWLZ.js} +1 -1
  70. package/openclaw.plugin.json +14 -0
  71. package/package.json +4 -4
  72. package/dist/provider.runtime-2FGjVR8w.js +0 -2
  73. package/dist/runtime-api.monitor-DPIfax5N.js +0 -6
  74. package/dist/targets-DcNwQ9vN.js +0 -3
  75. /package/dist/{access-B9ujuUtS.js → access-CHY9FK3X.js} +0 -0
  76. /package/dist/{agent-components.runtime-DUhLr9hy.js → agent-components.runtime-Dof1YMSz.js} +0 -0
  77. /package/dist/{channel-access-ewDxhd9q.js → channel-access-DFIQqbYm.js} +0 -0
  78. /package/dist/{directory-config-DElx_Gr4.js → directory-config-DoETeOOx.js} +0 -0
  79. /package/dist/{doctor-shared-DU8RcnF5.js → doctor-shared-Cqvfgv9m.js} +0 -0
  80. /package/dist/{inbound-context-e_oBBJtF.js → inbound-context-CRylwjg0.js} +0 -0
  81. /package/dist/{pluralkit-voQvSN3g.js → pluralkit-OFss_pIy.js} +0 -0
  82. /package/dist/{preflight-audio.runtime-BAGmU6uO.js → preflight-audio.runtime-DPVbpZid.js} +0 -0
  83. /package/dist/{preview-streaming-BzkA67Qa.js → preview-streaming-Cc_oeIPP.js} +0 -0
  84. /package/dist/{probe-DmHUl6wI.js → probe-E80IMT1X.js} +0 -0
  85. /package/dist/{resolve-allowlist-common-Cl2N5YLW.js → resolve-allowlist-common-_e1cWOb3.js} +0 -0
  86. /package/dist/{secret-config-contract-CoGryS5c.js → secret-config-contract-5S9U9pjx.js} +0 -0
  87. /package/dist/{security-contract-ei3Mz8Sa.js → security-contract-BE8rsdPq.js} +0 -0
  88. /package/dist/{security-doctor-CzTzpXV8.js → security-doctor-DiilN216.js} +0 -0
  89. /package/dist/{sender-identity-BiSDAk2P.js → sender-identity-BGUfyvOC.js} +0 -0
  90. /package/dist/{session-contract-goJZckp2.js → session-contract-CuW9Nlxg.js} +0 -0
  91. /package/dist/{session-key-normalization-Daag9II6.js → session-key-normalization-B5La-jFM.js} +0 -0
  92. /package/dist/{system-events-B-xNU7II.js → system-events-_fzSG--3.js} +0 -0
  93. /package/dist/{thread-bindings.state-Dzu1gCE7.js → thread-bindings.state-WU4duXKY.js} +0 -0
  94. /package/dist/{timeouts-C7jeTtGs.js → timeouts-CdsmBWWs.js} +0 -0
@@ -1,12 +1,9 @@
1
1
  import { t as normalizeDiscordToken } from "./token-BZtonk7d.js";
2
- import { a as mergeDiscordAccountConfig, c as resolveDiscordAccountAllowFrom, s as resolveDiscordAccount } from "./accounts-CaHGiVB4.js";
3
- import { a as chunkDiscordTextWithMode, o as parseDiscordTarget, t as allowFromContainsDiscordUserId } from "./normalize-B-ktw-T_.js";
2
+ import { a as mergeDiscordAccountConfig, s as resolveDiscordAccount } from "./accounts-CaHGiVB4.js";
3
+ import { s as chunkDiscordTextWithMode, t as parseAndResolveDiscordTarget } from "./target-resolver-DA84_xbt.js";
4
4
  import { $ as createChannelMessage, J as createUserDmChannel, St as getGuildMember, Y as getCurrentUser, at as getChannel, h as RateLimitError, p as RequestClient, u as Embed, w as serializePayload, xt as getGuild } from "./discord-eZlimVfW.js";
5
- import { t as rememberDiscordDirectoryUser } from "./directory-cache-D93eSrpB.js";
6
- import { r as listDiscordDirectoryPeersLive } from "./directory-live-DJ0V5asB.js";
7
5
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
8
6
  import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
9
- import { buildMessagingTarget } from "openclaw/plugin-sdk/messaging-targets";
10
7
  import { ChannelType, PermissionFlagsBits } from "discord-api-types/v10";
11
8
  import { PollLayoutType } from "discord-api-types/payloads/v10";
12
9
  import { buildOutboundMediaLoadOptions, extensionForMime, normalizePollDurationHours, normalizePollInput } from "openclaw/plugin-sdk/media-runtime";
@@ -210,79 +207,6 @@ function resolveDiscordRest(opts) {
210
207
  return createDiscordRestClient(opts).rest;
211
208
  }
212
209
  //#endregion
213
- //#region extensions/discord/src/send-target-parsing.ts
214
- const parseDiscordSendTarget = (raw, options = {}) => parseDiscordTarget(raw, options);
215
- //#endregion
216
- //#region extensions/discord/src/target-resolver.ts
217
- /**
218
- * Resolve a Discord username to user ID using the directory lookup.
219
- * This enables sending DMs by username instead of requiring explicit user IDs.
220
- */
221
- async function resolveDiscordTarget(raw, options, parseOptions = {}) {
222
- const trimmed = raw.trim();
223
- if (!trimmed) return;
224
- const likelyUsername = isLikelyUsername(trimmed);
225
- const shouldLookup = isExplicitUserLookup(trimmed, parseOptions) || likelyUsername;
226
- if (/^\d+$/.test(trimmed) && parseOptions.defaultKind !== "user" && isConfiguredAllowedDiscordDmUser(trimmed, options)) return buildMessagingTarget("user", trimmed, trimmed);
227
- const directParse = safeParseDiscordTarget(trimmed, parseOptions);
228
- if (directParse && directParse.kind !== "channel" && !likelyUsername) return directParse;
229
- if (!shouldLookup) return directParse ?? parseDiscordSendTarget(trimmed, parseOptions);
230
- try {
231
- const match = (await listDiscordDirectoryPeersLive({
232
- ...options,
233
- query: trimmed,
234
- limit: 1
235
- }))[0];
236
- if (match && match.kind === "user") {
237
- const userId = match.id.replace(/^user:/, "");
238
- const resolvedAccountId = resolveDiscordAccount({
239
- cfg: options.cfg,
240
- accountId: options.accountId
241
- }).accountId;
242
- rememberDiscordDirectoryUser({
243
- accountId: resolvedAccountId,
244
- userId,
245
- handles: [
246
- trimmed,
247
- match.name,
248
- match.handle
249
- ]
250
- });
251
- return buildMessagingTarget("user", userId, trimmed);
252
- }
253
- } catch {}
254
- return parseDiscordSendTarget(trimmed, parseOptions);
255
- }
256
- async function parseAndResolveDiscordTarget(raw, options, parseOptions = {}) {
257
- const resolved = await resolveDiscordTarget(raw, options, parseOptions) ?? parseDiscordSendTarget(raw, parseOptions);
258
- if (!resolved) throw new Error("Recipient is required for Discord sends");
259
- return resolved;
260
- }
261
- function safeParseDiscordTarget(input, options) {
262
- try {
263
- return parseDiscordSendTarget(input, options);
264
- } catch {
265
- return;
266
- }
267
- }
268
- function isConfiguredAllowedDiscordDmUser(input, options) {
269
- return allowFromContainsDiscordUserId(resolveDiscordAccountAllowFrom({
270
- cfg: options.cfg,
271
- accountId: options.accountId
272
- }) ?? [], input);
273
- }
274
- function isExplicitUserLookup(input, options) {
275
- if (/^<@!?(\d+)>$/.test(input)) return true;
276
- if (/^(user:|discord:)/.test(input)) return true;
277
- if (input.startsWith("@")) return true;
278
- if (/^\d+$/.test(input)) return options.defaultKind === "user";
279
- return false;
280
- }
281
- function isLikelyUsername(input) {
282
- if (/^(user:|channel:|discord:|@|<@!?)|[\d]+$/.test(input)) return false;
283
- return true;
284
- }
285
- //#endregion
286
210
  //#region extensions/discord/src/recipient-resolution.ts
287
211
  async function parseAndResolveRecipient(raw, cfg, accountId, parseOptions = {}) {
288
212
  if (!cfg) throw new Error("Discord recipient resolution requires a resolved runtime config. Load and resolve config at the command or gateway boundary, then pass cfg through the runtime path.");
@@ -710,4 +634,4 @@ function formatReactionEmoji(emoji) {
710
634
  return buildReactionIdentifier(emoji);
711
635
  }
712
636
  //#endregion
713
- export { resolveDiscordTarget as A, DiscordSendError as C, hasAllGuildPermissionsDiscord as D, fetchMemberGuildPermissionsDiscord as E, resolveDiscordClientAccountContext as F, resolveDiscordRest as I, DISCORD_REST_TIMEOUT_MS as L, createDiscordClient as M, createDiscordRestClient as N, hasAnyGuildPermissionDiscord as O, createDiscordRuntimeAccountContext as P, validateDiscordProxyUrl as R, DISCORD_MAX_STICKER_BYTES as S, fetchChannelPermissionsDiscord as T, resolveDiscordSendComponents as _, normalizeDiscordPollInput as a, DISCORD_MAX_EMOJI_BYTES as b, normalizeStickerIds as c, resolveDiscordTargetChannelId as d, sendDiscordMedia as f, buildDiscordMessageRequest as g, SUPPRESS_NOTIFICATIONS_FLAG as h, formatReactionEmoji as i, parseDiscordSendTarget as j, parseAndResolveRecipient as k, resolveChannelId as l, toDiscordFileBlob as m, buildDiscordTextChunks as n, normalizeEmojiName as o, sendDiscordText as p, buildReactionIdentifier as r, normalizeReactionEmoji as s, buildDiscordSendError as t, resolveDiscordChannelType as u, resolveDiscordSendEmbeds as v, canViewDiscordGuildChannel as w, DISCORD_MAX_EVENT_COVER_BYTES as x, stripUndefinedFields as y, withValidatedDiscordProxy as z };
637
+ export { createDiscordClient as A, DiscordSendError as C, hasAllGuildPermissionsDiscord as D, fetchMemberGuildPermissionsDiscord as E, DISCORD_REST_TIMEOUT_MS as F, validateDiscordProxyUrl as I, withValidatedDiscordProxy as L, createDiscordRuntimeAccountContext as M, resolveDiscordClientAccountContext as N, hasAnyGuildPermissionDiscord as O, resolveDiscordRest as P, DISCORD_MAX_STICKER_BYTES as S, fetchChannelPermissionsDiscord as T, resolveDiscordSendComponents as _, normalizeDiscordPollInput as a, DISCORD_MAX_EMOJI_BYTES as b, normalizeStickerIds as c, resolveDiscordTargetChannelId as d, sendDiscordMedia as f, buildDiscordMessageRequest as g, SUPPRESS_NOTIFICATIONS_FLAG as h, formatReactionEmoji as i, createDiscordRestClient as j, parseAndResolveRecipient as k, resolveChannelId as l, toDiscordFileBlob as m, buildDiscordTextChunks as n, normalizeEmojiName as o, sendDiscordText as p, buildReactionIdentifier as r, normalizeReactionEmoji as s, buildDiscordSendError as t, resolveDiscordChannelType as u, resolveDiscordSendEmbeds as v, canViewDiscordGuildChannel as w, DISCORD_MAX_EVENT_COVER_BYTES as x, stripUndefinedFields as y };
@@ -1,2 +1,2 @@
1
- import { t as normalizeExplicitDiscordSessionKey } from "./session-key-normalization-Daag9II6.js";
1
+ import { t as normalizeExplicitDiscordSessionKey } from "./session-key-normalization-B5La-jFM.js";
2
2
  export { normalizeExplicitDiscordSessionKey };
@@ -1,2 +1,2 @@
1
- import { t as discordSetupPlugin } from "./channel.setup-C-HEMkxU.js";
1
+ import { t as discordSetupPlugin } from "./channel.setup-D_xyQu_h.js";
2
2
  export { discordSetupPlugin };
@@ -1,12 +1,12 @@
1
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-CaHGiVB4.js";
2
2
  import { t as inspectDiscordAccount } from "./account-inspect-BcQAxhKY.js";
3
3
  import { i as getChatChannelMeta } from "./channel-api-CTSWMrnD.js";
4
- import { t as DiscordChannelConfigSchema } from "./config-schema-CC1qhiTN.js";
5
- import { n as normalizeCompatibilityConfig } from "./doctor-contract-Dxq4VIkE.js";
6
- import { t as DISCORD_LEGACY_CONFIG_RULES } from "./doctor-shared-DU8RcnF5.js";
7
- import { n as secretTargetRegistryEntries, t as collectRuntimeConfigAssignments } from "./secret-config-contract-CoGryS5c.js";
8
- import { n as unsupportedSecretRefSurfacePatterns, t as collectUnsupportedSecretRefConfigCandidates } from "./security-contract-ei3Mz8Sa.js";
9
- import { t as deriveLegacySessionChatType } from "./session-contract-goJZckp2.js";
4
+ import { t as DiscordChannelConfigSchema } from "./config-schema-Cc953rAs.js";
5
+ import { n as normalizeCompatibilityConfig } from "./doctor-contract-Bso46EOQ.js";
6
+ import { t as DISCORD_LEGACY_CONFIG_RULES } from "./doctor-shared-Cqvfgv9m.js";
7
+ import { n as secretTargetRegistryEntries, t as collectRuntimeConfigAssignments } from "./secret-config-contract-5S9U9pjx.js";
8
+ import { n as unsupportedSecretRefSurfacePatterns, t as collectUnsupportedSecretRefConfigCandidates } from "./security-contract-BE8rsdPq.js";
9
+ import { t as deriveLegacySessionChatType } from "./session-contract-CuW9Nlxg.js";
10
10
  import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
11
11
  import { describeAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
12
12
  import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter, createScopedDmSecurityResolver } from "openclaw/plugin-sdk/channel-config-helpers";
@@ -49,7 +49,7 @@ const collectDiscordSecurityWarnings = createOpenProviderConfiguredRouteWarningC
49
49
  });
50
50
  let discordSecurityAuditModulePromise;
51
51
  async function loadDiscordSecurityAuditModule() {
52
- discordSecurityAuditModulePromise ??= import("./security-audit.runtime-DBV1T1_N.js");
52
+ discordSecurityAuditModulePromise ??= import("./security-audit.runtime-Dm1LW9KX.js");
53
53
  return await discordSecurityAuditModulePromise;
54
54
  }
55
55
  const discordSecurityAdapter = {
@@ -69,7 +69,7 @@ const discordSetupAdapter = createEnvPatchedAccountSetupAdapter({
69
69
  const DISCORD_CHANNEL = "discord";
70
70
  let discordDoctorModulePromise;
71
71
  async function loadDiscordDoctorModule() {
72
- discordDoctorModulePromise ??= import("./doctor-Bgzf3Du2.js");
72
+ discordDoctorModulePromise ??= import("./doctor-Bo-yifB3.js");
73
73
  return await discordDoctorModulePromise;
74
74
  }
75
75
  const discordDoctor = {
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-C3SqQTfK.js";
2
2
  import { s as resolveDiscordAccount } from "./accounts-CaHGiVB4.js";
3
- import { n as autoBindSpawnedDiscordSubagent, o as unbindThreadBindingsBySessionKey, r as listThreadBindingsBySessionKey } from "./thread-bindings-C7GN5ebh.js";
3
+ import { n as autoBindSpawnedDiscordSubagent, o as unbindThreadBindingsBySessionKey, r as listThreadBindingsBySessionKey } from "./thread-bindings-CMpZjP50.js";
4
4
  import { normalizeOptionalLowercaseString, normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/text-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-DgpxQHUn.js").then((n) => n.i);
4
+ discordSubagentHooksPromise ??= import("./subagent-hooks-T0LPLh4H.js").then((n) => n.i);
5
5
  return discordSubagentHooksPromise;
6
6
  }
7
7
  function registerDiscordSubagentHooks(api) {
@@ -1,9 +1,14 @@
1
+ import { c as resolveDiscordAccountAllowFrom, s as resolveDiscordAccount } from "./accounts-CaHGiVB4.js";
2
+ import { t as rememberDiscordDirectoryUser } from "./directory-cache-D93eSrpB.js";
3
+ import { r as listDiscordDirectoryPeersLive } from "./directory-live-DJ0V5asB.js";
1
4
  import { buildMessagingTarget, parseMentionPrefixOrAtUserTarget, requireTargetKind } from "openclaw/plugin-sdk/messaging-targets";
2
5
  import { chunkMarkdownTextWithMode } from "openclaw/plugin-sdk/reply-chunking";
3
6
  //#region extensions/discord/src/target-parsing.ts
4
7
  function parseDiscordTarget(raw, options = {}) {
5
8
  const trimmed = raw.trim();
6
9
  if (!trimmed) return;
10
+ const providerPrefixedTarget = parseDiscordProviderPrefixedTarget(trimmed);
11
+ if (providerPrefixedTarget) return providerPrefixedTarget;
7
12
  const userTarget = parseMentionPrefixOrAtUserTarget({
8
13
  raw: trimmed,
9
14
  mentionPattern: /^<@!?(\d+)>$/,
@@ -31,6 +36,14 @@ function parseDiscordTarget(raw, options = {}) {
31
36
  }
32
37
  return buildMessagingTarget("channel", trimmed, trimmed);
33
38
  }
39
+ function parseDiscordProviderPrefixedTarget(raw) {
40
+ const match = /^discord:(channel|user):(.+)$/i.exec(raw);
41
+ if (!match) return;
42
+ const kind = match[1]?.toLowerCase();
43
+ const id = match[2]?.trim();
44
+ if (!kind || !id) return;
45
+ return buildMessagingTarget(kind, id, `${kind}:${id}`);
46
+ }
34
47
  function resolveDiscordChannelId(raw) {
35
48
  return requireTargetKind({
36
49
  platform: "Discord",
@@ -242,6 +255,10 @@ function normalizeDiscordOutboundTarget(to, allowFrom) {
242
255
  to: `channel:${trimmed}`
243
256
  };
244
257
  }
258
+ if (/^discord:(?:channel|user):/i.test(trimmed)) return {
259
+ ok: true,
260
+ to: normalizeDiscordMessagingTarget(trimmed) ?? trimmed
261
+ };
245
262
  return {
246
263
  ok: true,
247
264
  to: trimmed
@@ -272,4 +289,77 @@ function looksLikeDiscordTargetId(raw) {
272
289
  return false;
273
290
  }
274
291
  //#endregion
275
- export { chunkDiscordTextWithMode as a, normalizeDiscordOutboundTarget as i, looksLikeDiscordTargetId as n, parseDiscordTarget as o, normalizeDiscordMessagingTarget as r, resolveDiscordChannelId as s, allowFromContainsDiscordUserId as t };
292
+ //#region extensions/discord/src/send-target-parsing.ts
293
+ const parseDiscordSendTarget = (raw, options = {}) => parseDiscordTarget(raw, options);
294
+ //#endregion
295
+ //#region extensions/discord/src/target-resolver.ts
296
+ /**
297
+ * Resolve a Discord username to user ID using the directory lookup.
298
+ * This enables sending DMs by username instead of requiring explicit user IDs.
299
+ */
300
+ async function resolveDiscordTarget(raw, options, parseOptions = {}) {
301
+ const trimmed = raw.trim();
302
+ if (!trimmed) return;
303
+ const likelyUsername = isLikelyUsername(trimmed);
304
+ const shouldLookup = isExplicitUserLookup(trimmed, parseOptions) || likelyUsername;
305
+ if (/^\d+$/.test(trimmed) && parseOptions.defaultKind !== "user" && isConfiguredAllowedDiscordDmUser(trimmed, options)) return buildMessagingTarget("user", trimmed, trimmed);
306
+ const directParse = safeParseDiscordTarget(trimmed, parseOptions);
307
+ if (directParse && directParse.kind !== "channel" && !likelyUsername) return directParse;
308
+ if (!shouldLookup) return directParse ?? parseDiscordSendTarget(trimmed, parseOptions);
309
+ try {
310
+ const match = (await listDiscordDirectoryPeersLive({
311
+ ...options,
312
+ query: trimmed,
313
+ limit: 1
314
+ }))[0];
315
+ if (match && match.kind === "user") {
316
+ const userId = match.id.replace(/^user:/, "");
317
+ const resolvedAccountId = resolveDiscordAccount({
318
+ cfg: options.cfg,
319
+ accountId: options.accountId
320
+ }).accountId;
321
+ rememberDiscordDirectoryUser({
322
+ accountId: resolvedAccountId,
323
+ userId,
324
+ handles: [
325
+ trimmed,
326
+ match.name,
327
+ match.handle
328
+ ]
329
+ });
330
+ return buildMessagingTarget("user", userId, trimmed);
331
+ }
332
+ } catch {}
333
+ return parseDiscordSendTarget(trimmed, parseOptions);
334
+ }
335
+ async function parseAndResolveDiscordTarget(raw, options, parseOptions = {}) {
336
+ const resolved = await resolveDiscordTarget(raw, options, parseOptions) ?? parseDiscordSendTarget(raw, parseOptions);
337
+ if (!resolved) throw new Error("Recipient is required for Discord sends");
338
+ return resolved;
339
+ }
340
+ function safeParseDiscordTarget(input, options) {
341
+ try {
342
+ return parseDiscordSendTarget(input, options);
343
+ } catch {
344
+ return;
345
+ }
346
+ }
347
+ function isConfiguredAllowedDiscordDmUser(input, options) {
348
+ return allowFromContainsDiscordUserId(resolveDiscordAccountAllowFrom({
349
+ cfg: options.cfg,
350
+ accountId: options.accountId
351
+ }) ?? [], input);
352
+ }
353
+ function isExplicitUserLookup(input, options) {
354
+ if (/^<@!?(\d+)>$/.test(input)) return true;
355
+ if (/^(user:|discord:)/.test(input)) return true;
356
+ if (input.startsWith("@")) return true;
357
+ if (/^\d+$/.test(input)) return options.defaultKind === "user";
358
+ return false;
359
+ }
360
+ function isLikelyUsername(input) {
361
+ if (/^(user:|channel:|discord:|@|<@!?)|[\d]+$/.test(input)) return false;
362
+ return true;
363
+ }
364
+ //#endregion
365
+ export { normalizeDiscordMessagingTarget as a, parseDiscordTarget as c, looksLikeDiscordTargetId as i, resolveDiscordChannelId as l, resolveDiscordTarget as n, normalizeDiscordOutboundTarget as o, parseDiscordSendTarget as r, chunkDiscordTextWithMode as s, parseAndResolveDiscordTarget as t };
@@ -0,0 +1,2 @@
1
+ import "./target-resolver-DA84_xbt.js";
2
+ export {};
package/dist/test-api.js CHANGED
@@ -1,7 +1,7 @@
1
- import { t as discordPlugin } from "./channel-D8E-S2xn.js";
2
- import { n as discordOutbound } from "./outbound-adapter-FG0CgK3I.js";
3
- import { t as __testing } from "./thread-bindings.manager-BxPG0IHV.js";
4
- import { n as buildDiscordInboundAccessContext } from "./inbound-context-e_oBBJtF.js";
1
+ import { t as discordPlugin } from "./channel-UXGa9PGc.js";
2
+ import { n as discordOutbound } from "./outbound-adapter-DNsTVJfH.js";
3
+ import { t as __testing } from "./thread-bindings.manager-BtxfLfWf.js";
4
+ import { n as buildDiscordInboundAccessContext } from "./inbound-context-CRylwjg0.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,10 +1,10 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-C3SqQTfK.js";
2
- import { o as parseDiscordTarget } from "./normalize-B-ktw-T_.js";
3
- import "./targets-DcNwQ9vN.js";
4
- 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-Dzu1gCE7.js";
5
- import { n as setThreadBindingMaxAgeBySessionKey, r as resolveBindingIdsForTargetSession, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-TTP020qQ.js";
6
- import { d as formatThreadBindingDurationLabel, l as resolveThreadBindingPersona, m as resolveThreadBindingThreadName, p as resolveThreadBindingIntroText, s as resolveChannelIdForBinding, u as resolveThreadBindingPersonaFromRecord } from "./thread-bindings.discord-api-CfZnSqIb.js";
7
- import { i as getThreadBindingManager, n as createNoopThreadBindingManager, r as createThreadBindingManager, t as __testing } from "./thread-bindings.manager-BxPG0IHV.js";
2
+ import { c as parseDiscordTarget } from "./target-resolver-DA84_xbt.js";
3
+ import "./targets-FwL1BPTU.js";
4
+ 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-WU4duXKY.js";
5
+ import { n as setThreadBindingMaxAgeBySessionKey, r as resolveBindingIdsForTargetSession, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-jcZSiRPI.js";
6
+ import { d as formatThreadBindingDurationLabel, l as resolveThreadBindingPersona, m as resolveThreadBindingThreadName, p as resolveThreadBindingIntroText, s as resolveChannelIdForBinding, u as resolveThreadBindingPersonaFromRecord } from "./thread-bindings.discord-api-CwWGoyei.js";
7
+ import { i as getThreadBindingManager, n as createNoopThreadBindingManager, r as createThreadBindingManager, t as __testing } from "./thread-bindings.manager-BtxfLfWf.js";
8
8
  import { normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
9
9
  import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
10
10
  import { resolveThreadBindingIdleTimeoutMs, resolveThreadBindingMaxAgeMs, resolveThreadBindingsEnabled } from "openclaw/plugin-sdk/conversation-runtime";
@@ -1,10 +1,10 @@
1
- import { s as resolveDiscordChannelId } from "./normalize-B-ktw-T_.js";
1
+ import { l as resolveDiscordChannelId } from "./target-resolver-DA84_xbt.js";
2
2
  import { at as getChannel, q as createChannelWebhook } from "./discord-eZlimVfW.js";
3
- import { N as createDiscordRestClient } from "./send.shared-BWZyuxM-.js";
4
- import { c as sendWebhookMessageDiscord, u as createThreadDiscord } from "./send-Rz5xnelg.js";
5
- import { t as sendMessageDiscord } from "./send.outbound-DN-HfmW2.js";
6
- import { i as REUSABLE_WEBHOOKS_BY_ACCOUNT_CHANNEL, k as toReusableWebhookKey, m as rememberReusableWebhook, t as BINDINGS_BY_THREAD_ID } from "./thread-bindings.state-Dzu1gCE7.js";
7
- import { n as resolveDiscordChannelInfoSafe, t as resolveDiscordChannelIdSafe } from "./channel-access-ewDxhd9q.js";
3
+ import { j as createDiscordRestClient } from "./send.shared-BQGiUPvZ.js";
4
+ import { c as sendWebhookMessageDiscord, u as createThreadDiscord } from "./send-8S_HKJpQ.js";
5
+ import { t as sendMessageDiscord } from "./send.outbound-D3tonSz8.js";
6
+ import { i as REUSABLE_WEBHOOKS_BY_ACCOUNT_CHANNEL, k as toReusableWebhookKey, m as rememberReusableWebhook, t as BINDINGS_BY_THREAD_ID } from "./thread-bindings.state-WU4duXKY.js";
7
+ import { n as resolveDiscordChannelInfoSafe, t as resolveDiscordChannelIdSafe } from "./channel-access-DFIQqbYm.js";
8
8
  import { SYSTEM_MARK, normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
9
9
  import { ChannelType } from "discord-api-types/v10";
10
10
  import { logVerbose } from "openclaw/plugin-sdk/runtime-env";
@@ -1,9 +1,9 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-C3SqQTfK.js";
2
- import { s as resolveDiscordChannelId } from "./normalize-B-ktw-T_.js";
2
+ import { l as resolveDiscordChannelId } from "./target-resolver-DA84_xbt.js";
3
3
  import { at as getChannel } from "./discord-eZlimVfW.js";
4
- import { N as createDiscordRestClient } from "./send.shared-BWZyuxM-.js";
5
- 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-Dzu1gCE7.js";
6
- import { a as isThreadArchived, c as summarizeDiscordError, f as resolveThreadBindingFarewellText, i as isDiscordThreadGoneError, m as resolveThreadBindingThreadName, n as createWebhookForChannel, o as maybeSendBindingMessage, r as findReusableWebhook, s as resolveChannelIdForBinding, t as createThreadForBinding } from "./thread-bindings.discord-api-CfZnSqIb.js";
4
+ import { j as createDiscordRestClient } from "./send.shared-BQGiUPvZ.js";
5
+ 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-WU4duXKY.js";
6
+ import { a as isThreadArchived, c as summarizeDiscordError, f as resolveThreadBindingFarewellText, i as isDiscordThreadGoneError, m as resolveThreadBindingThreadName, n as createWebhookForChannel, o as maybeSendBindingMessage, r as findReusableWebhook, s as resolveChannelIdForBinding, t as createThreadForBinding } from "./thread-bindings.discord-api-CwWGoyei.js";
7
7
  import { normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
8
8
  import { normalizeAccountId, resolveAgentIdFromSessionKey } from "openclaw/plugin-sdk/routing";
9
9
  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-Dzu1gCE7.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-WU4duXKY.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) {
@@ -1,8 +1,8 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-C3SqQTfK.js";
2
2
  import { et as createThread, ot as getChannelMessage, rt as editChannel, t as discord_exports } from "./discord-eZlimVfW.js";
3
- import { a as resolveDiscordChannelParentSafe, i as resolveDiscordChannelParentIdSafe, r as resolveDiscordChannelNameSafe, t as resolveDiscordChannelIdSafe } from "./channel-access-ewDxhd9q.js";
4
- import { s as withAbortTimeout } from "./timeouts-C7jeTtGs.js";
5
- import { c as resolveDiscordChannelInfo, l as resolveDiscordMessageChannelId, n as resolveDiscordForwardedMessagesTextFromSnapshots, t as resolveDiscordEmbedText } from "./message-utils-Dmgu-7fC.js";
3
+ import { a as resolveDiscordChannelParentSafe, i as resolveDiscordChannelParentIdSafe, r as resolveDiscordChannelNameSafe, t as resolveDiscordChannelIdSafe } from "./channel-access-DFIQqbYm.js";
4
+ import { s as withAbortTimeout } from "./timeouts-CdsmBWWs.js";
5
+ import { c as resolveDiscordChannelInfo, l as resolveDiscordMessageChannelId, n as resolveDiscordForwardedMessagesTextFromSnapshots, t as resolveDiscordEmbedText } from "./message-utils-9kaGF59d.js";
6
6
  import { normalizeOptionalString, normalizeOptionalStringifiedId, truncateUtf16Safe } from "openclaw/plugin-sdk/text-runtime";
7
7
  import { buildAgentSessionKey } from "openclaw/plugin-sdk/routing";
8
8
  import { logVerbose } from "openclaw/plugin-sdk/runtime-env";
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-C7jeTtGs.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-CdsmBWWs.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,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-C3SqQTfK.js";
2
2
  import { ft as sendChannelTyping } from "./discord-eZlimVfW.js";
3
- import { o as raceWithTimeout } from "./timeouts-C7jeTtGs.js";
3
+ import { o as raceWithTimeout } from "./timeouts-CdsmBWWs.js";
4
4
  //#region extensions/discord/src/monitor/typing.ts
5
5
  var typing_exports = /* @__PURE__ */ __exportAll({ sendTyping: () => sendTyping });
6
6
  const DISCORD_TYPING_START_TIMEOUT_MS = 5e3;
@@ -1002,6 +1002,11 @@
1002
1002
  "exclusiveMinimum": 0,
1003
1003
  "maximum": 120000
1004
1004
  },
1005
+ "captureSilenceGraceMs": {
1006
+ "type": "integer",
1007
+ "exclusiveMinimum": 0,
1008
+ "maximum": 30000
1009
+ },
1005
1010
  "tts": {
1006
1011
  "type": "object",
1007
1012
  "properties": {
@@ -2579,6 +2584,11 @@
2579
2584
  "exclusiveMinimum": 0,
2580
2585
  "maximum": 120000
2581
2586
  },
2587
+ "captureSilenceGraceMs": {
2588
+ "type": "integer",
2589
+ "exclusiveMinimum": 0,
2590
+ "maximum": 30000
2591
+ },
2582
2592
  "tts": {
2583
2593
  "type": "object",
2584
2594
  "properties": {
@@ -3387,6 +3397,10 @@
3387
3397
  "label": "Discord Voice Reconnect Grace (ms)",
3388
3398
  "help": "Grace period for a disconnected Discord voice session to enter Signalling or Connecting before OpenClaw destroys it. Default: 15000."
3389
3399
  },
3400
+ "voice.captureSilenceGraceMs": {
3401
+ "label": "Discord Voice Capture Silence Grace (ms)",
3402
+ "help": "Silence window after Discord reports a speaker ended before OpenClaw finalizes the audio segment for transcription. Default: 2500."
3403
+ },
3390
3404
  "voice.tts": {
3391
3405
  "label": "Discord Voice Text-to-Speech",
3392
3406
  "help": "Optional TTS overrides for Discord voice playback (merged with messages.tts)."
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/discord",
3
- "version": "2026.5.6",
3
+ "version": "2026.5.7",
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.6"
24
+ "openclaw": ">=2026.5.7"
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.6"
68
+ "pluginApi": ">=2026.5.7"
69
69
  },
70
70
  "build": {
71
- "openclawVersion": "2026.5.6"
71
+ "openclawVersion": "2026.5.7"
72
72
  },
73
73
  "release": {
74
74
  "publishToClawHub": true,
@@ -1,2 +0,0 @@
1
- import { t as monitorDiscordProvider } from "./provider-DqqLCjug.js";
2
- export { monitorDiscordProvider };
@@ -1,6 +0,0 @@
1
- import "./allow-list-ek-1hMKN.js";
2
- import "./provider-DqqLCjug.js";
3
- import "./message-utils-Dmgu-7fC.js";
4
- import "./threading-Bi95Nz8h.js";
5
- import "./message-handler-CSPx1uqO.js";
6
- export {};
@@ -1,3 +0,0 @@
1
- import "./normalize-B-ktw-T_.js";
2
- import "./send.shared-BWZyuxM-.js";
3
- export {};
File without changes
File without changes