@openclaw/discord 2026.6.1-beta.1 → 2026.6.1-beta.3
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.
- package/dist/api.js +1 -1
- package/dist/{channel-W1HBHzdw.js → channel-CXLt6qgK.js} +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{manager.runtime-CVB9_dwq.js → manager.runtime-M8890WS1.js} +12 -3
- package/dist/{message-handler-CQGpWQ0f.js → message-handler-DRzdnJyM.js} +2 -2
- package/dist/{message-handler.preflight-B9aZ9jQD.js → message-handler.preflight-D6YqC67A.js} +2 -2
- package/dist/{message-handler.process-DrLZOgzG.js → message-handler.process-_dPFZ80j.js} +34 -10
- package/dist/{provider-BTp6enEl.js → provider-BI4VdnRd.js} +2 -2
- package/dist/{provider-session.runtime-CC2f_W1j.js → provider-session.runtime-DgqndvlW.js} +1 -1
- package/dist/provider.runtime-D8AxhXYN.js +2 -0
- package/dist/runtime-api.js +3 -3
- package/dist/{runtime-api.monitor-BkA-vJZA.js → runtime-api.monitor-CX6Z4-7x.js} +2 -2
- package/dist/runtime-api.monitor.js +3 -3
- package/node_modules/libopus-wasm/CHANGELOG.md +6 -0
- package/node_modules/libopus-wasm/README.md +4 -1
- package/node_modules/libopus-wasm/dist/index.d.ts +12 -0
- package/node_modules/libopus-wasm/dist/index.d.ts.map +1 -1
- package/node_modules/libopus-wasm/dist/index.js +32 -0
- package/node_modules/libopus-wasm/package.json +3 -1
- package/npm-shrinkwrap.json +7 -7
- package/package.json +5 -5
- package/dist/provider.runtime-DUQJvWin.js +0 -2
package/dist/api.js
CHANGED
|
@@ -6,7 +6,7 @@ import { n as fetchDiscord, r as requestDiscord, t as DiscordApiError } from "./
|
|
|
6
6
|
import { i as parseDiscordSendTarget, n as resolveDiscordTarget } from "./target-resolver-BKGK0ftO.js";
|
|
7
7
|
import "./targets-Cv797U29.js";
|
|
8
8
|
import { a as getDiscordExecApprovalApprovers, c as shouldSuppressLocalDiscordExecApprovalPrompt, o as isDiscordExecApprovalApprover, s as isDiscordExecApprovalClientEnabled } from "./conversation-identity-CEP1KbK0.js";
|
|
9
|
-
import { i as resolveDiscordGroupToolPolicy, n as collectDiscordStatusIssues, r as resolveDiscordGroupRequireMention, t as discordPlugin } from "./channel-
|
|
9
|
+
import { i as resolveDiscordGroupToolPolicy, n as collectDiscordStatusIssues, r as resolveDiscordGroupRequireMention, t as discordPlugin } from "./channel-CXLt6qgK.js";
|
|
10
10
|
import { t as normalizeExplicitDiscordSessionKey } from "./session-key-normalization-wJgsKPNF.js";
|
|
11
11
|
import { t as discordSetupPlugin } from "./channel.setup-BX7g7pL-.js";
|
|
12
12
|
import { n as handleDiscordSubagentEnded, r as handleDiscordSubagentSpawning, t as handleDiscordSubagentDeliveryTarget } from "./subagent-hooks-nBcp0iGm.js";
|
|
@@ -131,7 +131,7 @@ const loadDiscordResolveUsersModule = createLazyRuntimeModule(() => import("./re
|
|
|
131
131
|
const loadDiscordThreadBindingsManagerModule = createLazyRuntimeModule(() => import("./thread-bindings.manager-CRc4hYr1.js").then((n) => n.a));
|
|
132
132
|
const loadDiscordTargetResolverModule = createLazyRuntimeModule(() => import("./target-resolver-BKGK0ftO.js").then((n) => n.r));
|
|
133
133
|
async function loadDiscordProviderRuntime() {
|
|
134
|
-
discordProviderRuntimePromise ??= import("./provider.runtime-
|
|
134
|
+
discordProviderRuntimePromise ??= import("./provider.runtime-D8AxhXYN.js");
|
|
135
135
|
return await discordProviderRuntimePromise;
|
|
136
136
|
}
|
|
137
137
|
async function loadDiscordProbeRuntime() {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as discordPlugin } from "./channel-
|
|
1
|
+
import { t as discordPlugin } from "./channel-CXLt6qgK.js";
|
|
2
2
|
export { discordPlugin };
|
|
@@ -3,7 +3,7 @@ import { c as resolveDiscordAccountAllowFrom } from "./accounts-P19jm1lf.js";
|
|
|
3
3
|
import { a as normalizeDiscordSlug, b as formatDiscordUserTag, m as resolveDiscordOwnerAccess } from "./allow-list-C-MqM-B_.js";
|
|
4
4
|
import { o as formatMention } from "./send.outbound-DhMLobqR.js";
|
|
5
5
|
import { t as getDiscordRuntime } from "./runtime-DgnVQ7zW.js";
|
|
6
|
-
import { f as buildDiscordGroupSystemPrompt, o as authorizeDiscordVoiceIngress, u as resolveDiscordVoiceEnabled } from "./provider-
|
|
6
|
+
import { f as buildDiscordGroupSystemPrompt, o as authorizeDiscordVoiceIngress, u as resolveDiscordVoiceEnabled } from "./provider-BI4VdnRd.js";
|
|
7
7
|
import { createRequire } from "node:module";
|
|
8
8
|
import { asBoolean, normalizeOptionalString, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
9
9
|
import { resolveAgentRoute } from "openclaw/plugin-sdk/routing";
|
|
@@ -20,7 +20,7 @@ import { agentCommandFromIngress, getTtsProvider, resolveAgentDir, resolveTtsCon
|
|
|
20
20
|
import { escapeRegExp } from "openclaw/plugin-sdk/text-utility-runtime";
|
|
21
21
|
import { spawn } from "node:child_process";
|
|
22
22
|
import { PassThrough, Readable, Transform } from "node:stream";
|
|
23
|
-
import { Application, createDecoder, createEncoder } from "libopus-wasm";
|
|
23
|
+
import { Application, OpusErrorCode, createDecoder, createEncoder, isOpusError } from "libopus-wasm";
|
|
24
24
|
import { resolveRealtimeBootstrapContextInstructions } from "openclaw/plugin-sdk/realtime-bootstrap-context";
|
|
25
25
|
import { parseTtsDirectives } from "openclaw/plugin-sdk/speech";
|
|
26
26
|
//#region extensions/discord/src/voice/audio.ts
|
|
@@ -1601,13 +1601,18 @@ function isAbortLikeReceiveError(err) {
|
|
|
1601
1601
|
const message = "message" in err && typeof err.message === "string" ? err.message : "";
|
|
1602
1602
|
return name === "AbortError" || message === "Premature close" || message.includes("The operation was aborted") || message.includes("aborted");
|
|
1603
1603
|
}
|
|
1604
|
+
function isOpusDecodeInvalidPacketError(err) {
|
|
1605
|
+
return isOpusError(err) && err.code === OpusErrorCode.InvalidPacket && (err.operation === "decode" || err.operation === "decodeFloat");
|
|
1606
|
+
}
|
|
1604
1607
|
function analyzeVoiceReceiveError(err) {
|
|
1605
1608
|
const message = formatErrorMessage(err);
|
|
1609
|
+
const normalizedMessage = message.toLowerCase();
|
|
1606
1610
|
const shouldAttemptPassthrough = message.includes(DAVE_PASSTHROUGH_DISABLED_MARKER);
|
|
1607
|
-
const isWasmMemoryAccessFailure =
|
|
1611
|
+
const isWasmMemoryAccessFailure = normalizedMessage.includes(WASM_MEMORY_ACCESS_MARKER);
|
|
1608
1612
|
return {
|
|
1609
1613
|
message,
|
|
1610
1614
|
isAbortLike: isAbortLikeReceiveError(err),
|
|
1615
|
+
isDecodeCorruption: isOpusDecodeInvalidPacketError(err),
|
|
1611
1616
|
shouldAttemptPassthrough,
|
|
1612
1617
|
countsAsDecryptFailure: message.includes(DECRYPT_FAILURE_MARKER) || shouldAttemptPassthrough || isWasmMemoryAccessFailure
|
|
1613
1618
|
};
|
|
@@ -3143,6 +3148,10 @@ var DiscordVoiceManager$1 = class {
|
|
|
3143
3148
|
logVoiceVerbose(`receive stream ended: ${analysis.message}`);
|
|
3144
3149
|
return;
|
|
3145
3150
|
}
|
|
3151
|
+
if (analysis.isDecodeCorruption && !analysis.countsAsDecryptFailure) {
|
|
3152
|
+
logVoiceVerbose(`receive decode skipped: ${analysis.message}`);
|
|
3153
|
+
return;
|
|
3154
|
+
}
|
|
3146
3155
|
logger.warn(`discord voice: receive error: ${analysis.message}`);
|
|
3147
3156
|
if (analysis.shouldAttemptPassthrough) this.enableDaveReceivePassthrough(entry, "receive decrypt error", 15);
|
|
3148
3157
|
if (!analysis.countsAsDecryptFailure) return;
|
|
@@ -178,7 +178,7 @@ function resolveDiscordAcceptedTypingPrestart(ctx) {
|
|
|
178
178
|
//#region extensions/discord/src/monitor/message-run-queue.ts
|
|
179
179
|
let messageProcessRuntimePromise;
|
|
180
180
|
async function loadMessageProcessRuntime() {
|
|
181
|
-
messageProcessRuntimePromise ??= import("./message-handler.process-
|
|
181
|
+
messageProcessRuntimePromise ??= import("./message-handler.process-_dPFZ80j.js");
|
|
182
182
|
return await messageProcessRuntimePromise;
|
|
183
183
|
}
|
|
184
184
|
async function processDiscordQueuedMessage(params) {
|
|
@@ -307,7 +307,7 @@ function createDiscordReplyTypingFeedback(params) {
|
|
|
307
307
|
//#region extensions/discord/src/monitor/message-handler.ts
|
|
308
308
|
let messagePreflightRuntimePromise;
|
|
309
309
|
async function loadMessagePreflightRuntime() {
|
|
310
|
-
messagePreflightRuntimePromise ??= import("./message-handler.preflight-
|
|
310
|
+
messagePreflightRuntimePromise ??= import("./message-handler.preflight-D6YqC67A.js");
|
|
311
311
|
return await messagePreflightRuntimePromise;
|
|
312
312
|
}
|
|
313
313
|
function isNonEmptyString(value) {
|
package/dist/{message-handler.preflight-B9aZ9jQD.js → message-handler.preflight-D6YqC67A.js}
RENAMED
|
@@ -5,7 +5,7 @@ import { t as resolveDiscordConversationIdentity } from "./conversation-identity
|
|
|
5
5
|
import { d as isRecentlyUnboundThreadWebhookMessage } from "./thread-bindings.state-CVLF7gJH.js";
|
|
6
6
|
import { d as resolveDiscordChannelNameSafe, u as resolveDiscordChannelInfoSafe } from "./thread-bindings.discord-api-CfDs1lWu.js";
|
|
7
7
|
import "./thread-bindings-Tfr_vFxk.js";
|
|
8
|
-
import { D as resolveDiscordTextCommandAccess, E as resolveDiscordDmCommandAccess, _ as resolveDiscordEffectiveRoute, g as resolveDiscordConversationRoute, h as buildDiscordRoutePeer, v as shouldIgnoreStaleDiscordRouteBinding, y as handleDiscordDmCommandDecision } from "./provider-
|
|
8
|
+
import { D as resolveDiscordTextCommandAccess, E as resolveDiscordDmCommandAccess, _ as resolveDiscordEffectiveRoute, g as resolveDiscordConversationRoute, h as buildDiscordRoutePeer, v as shouldIgnoreStaleDiscordRouteBinding, y as handleDiscordDmCommandDecision } from "./provider-BI4VdnRd.js";
|
|
9
9
|
import { d as resolveDiscordMessageChannelId, l as resolveDiscordMessageStickers, o as resolveMediaList, r as resolveDiscordMessageText, u as resolveDiscordChannelInfo } from "./message-utils-ZTGvA2L8.js";
|
|
10
10
|
import { n as resolveDiscordWebhookId, t as resolveDiscordSenderIdentity } from "./sender-identity-CEsfDF0L.js";
|
|
11
11
|
import { normalizeOptionalString, readStringValue } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
@@ -438,7 +438,7 @@ async function loadSystemEventsRuntime() {
|
|
|
438
438
|
return await systemEventsRuntimePromise;
|
|
439
439
|
}
|
|
440
440
|
async function loadDiscordThreadingRuntime() {
|
|
441
|
-
discordThreadingRuntimePromise ??= import("./provider-
|
|
441
|
+
discordThreadingRuntimePromise ??= import("./provider-BI4VdnRd.js").then((n) => n.x);
|
|
442
442
|
return await discordThreadingRuntimePromise;
|
|
443
443
|
}
|
|
444
444
|
function isPreflightAborted(abortSignal) {
|
|
@@ -10,9 +10,9 @@ import { t as beginDiscordInboundEventDeliveryCorrelation } from "./inbound-even
|
|
|
10
10
|
import { t as DISCORD_TEXT_CHUNK_LIMIT } from "./outbound-adapter-Bt6-9M13.js";
|
|
11
11
|
import { t as resolveDiscordPreviewStreamMode } from "./preview-streaming-DXT8oJdo.js";
|
|
12
12
|
import { n as DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, t as DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS } from "./timeouts-CEJ3--Uw.js";
|
|
13
|
-
import { S as resolveDiscordAutoThreadReplyPlan, a as resolveReplyContext, i as buildGuildLabel, m as createDiscordSupplementalContextAccessChecker, n as deliverDiscordReply, p as buildDiscordInboundAccessContext, r as buildDirectLabel, w as resolveDiscordThreadStarter } from "./provider-
|
|
13
|
+
import { S as resolveDiscordAutoThreadReplyPlan, a as resolveReplyContext, i as buildGuildLabel, m as createDiscordSupplementalContextAccessChecker, n as deliverDiscordReply, p as buildDiscordInboundAccessContext, r as buildDirectLabel, w as resolveDiscordThreadStarter } from "./provider-BI4VdnRd.js";
|
|
14
14
|
import { a as resolveForwardedMediaList, o as resolveMediaList, r as resolveDiscordMessageText, s as resolveReferencedReplyMediaList } from "./message-utils-ZTGvA2L8.js";
|
|
15
|
-
import { n as createDiscordReplyTypingFeedback } from "./message-handler-
|
|
15
|
+
import { n as createDiscordReplyTypingFeedback } from "./message-handler-DRzdnJyM.js";
|
|
16
16
|
import { buildAgentSessionKey, normalizeAccountId, resolveAccountEntry, resolveThreadSessionKeys } from "openclaw/plugin-sdk/routing";
|
|
17
17
|
import { MessageFlags } from "discord-api-types/v10";
|
|
18
18
|
import path from "node:path";
|
|
@@ -24,7 +24,7 @@ import { danger, logVerbose, shouldLogVerbose } from "openclaw/plugin-sdk/runtim
|
|
|
24
24
|
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
|
25
25
|
import { resolveMarkdownTableMode } from "openclaw/plugin-sdk/markdown-table-runtime";
|
|
26
26
|
import { convertMarkdownTables, stripInlineDirectiveTagsForDelivery, stripReasoningTagsFromText } from "openclaw/plugin-sdk/text-chunking";
|
|
27
|
-
import { buildChannelProgressDraftLine, buildChannelProgressDraftLineForEntry, createChannelMessageReplyPipeline, createChannelProgressDraftGate, createFinalizableDraftLifecycle, defineFinalizableLivePreviewAdapter, deliverWithFinalizableLivePreviewAdapter, formatChannelProgressDraftText, isChannelProgressDraftWorkToolName, mergeChannelProgressDraftLine, normalizeChannelProgressDraftLineIdentity, resolveChannelMessageSourceReplyDeliveryMode, resolveChannelProgressDraftMaxLines, resolveChannelStreamingBlockEnabled, resolveChannelStreamingPreviewChunk, resolveChannelStreamingPreviewToolProgress, resolveChannelStreamingProgressCommentary, resolveChannelStreamingSuppressDefaultToolProgressMessages, resolveTranscriptBackedChannelFinalText } from "openclaw/plugin-sdk/channel-outbound";
|
|
27
|
+
import { buildChannelProgressDraftLine, buildChannelProgressDraftLineForEntry, createChannelMessageReplyPipeline, createChannelProgressDraftGate, createFinalizableDraftLifecycle, defineFinalizableLivePreviewAdapter, deliverWithFinalizableLivePreviewAdapter, formatChannelProgressDraftText, isChannelProgressDraftWorkToolName, mergeChannelProgressDraftLine, normalizeChannelProgressDraftLineIdentity, resolveChannelMessageSourceReplyDeliveryMode, resolveChannelProgressDraftMaxLineChars, resolveChannelProgressDraftMaxLines, resolveChannelStreamingBlockEnabled, resolveChannelStreamingPreviewChunk, resolveChannelStreamingPreviewToolProgress, resolveChannelStreamingProgressCommentary, resolveChannelStreamingSuppressDefaultToolProgressMessages, resolveTranscriptBackedChannelFinalText } from "openclaw/plugin-sdk/channel-outbound";
|
|
28
28
|
import { recordInboundSession, resolvePinnedMainDmOwnerFromAllowlist } from "openclaw/plugin-sdk/conversation-runtime";
|
|
29
29
|
import { EmbeddedBlockChunker, formatReasoningMessage, resolveAckReaction, resolveHumanDelayConfig } from "openclaw/plugin-sdk/agent-runtime";
|
|
30
30
|
import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
|
|
@@ -698,13 +698,15 @@ function createDiscordDraftPreviewController(params) {
|
|
|
698
698
|
reasoningProgressRawText = mergeReasoningProgressText(reasoningProgressRawText, text, { snapshot: options?.snapshot === true });
|
|
699
699
|
const normalized = normalizeReasoningProgressLine(reasoningProgressRawText);
|
|
700
700
|
if (!normalized) return;
|
|
701
|
+
const displayLine = formatReasoningProgressDisplayLine(normalized, resolveChannelProgressDraftMaxLineChars(params.discordConfig));
|
|
702
|
+
if (!displayLine) return;
|
|
701
703
|
if (previewToolProgressEnabled && !previewToolProgressSuppressed) {
|
|
702
704
|
const priorIndex = lastReasoningProgressLine === void 0 ? -1 : previewToolProgressLines.lastIndexOf(lastReasoningProgressLine);
|
|
703
705
|
if (priorIndex >= 0) {
|
|
704
706
|
previewToolProgressLines = [...previewToolProgressLines];
|
|
705
|
-
previewToolProgressLines[priorIndex] =
|
|
706
|
-
} else previewToolProgressLines = [...previewToolProgressLines,
|
|
707
|
-
lastReasoningProgressLine =
|
|
707
|
+
previewToolProgressLines[priorIndex] = displayLine;
|
|
708
|
+
} else previewToolProgressLines = [...previewToolProgressLines, displayLine].slice(-resolveChannelProgressDraftMaxLines(params.discordConfig));
|
|
709
|
+
lastReasoningProgressLine = displayLine;
|
|
708
710
|
}
|
|
709
711
|
if (await progressDraftGate.noteWork() && progressDraftGate.hasStarted) await renderProgressDraft();
|
|
710
712
|
},
|
|
@@ -815,7 +817,30 @@ function createDiscordDraftPreviewController(params) {
|
|
|
815
817
|
};
|
|
816
818
|
}
|
|
817
819
|
function normalizeReasoningProgressLine(text) {
|
|
818
|
-
return text.replace(/^\s*(?:>\s*)?(?:Reasoning
|
|
820
|
+
return text.replace(/^\s*(?:>\s*)?(?:Reasoning:\s*(?:\r?\n|\r)\s*|Thinking\.{0,3}\s*(?:\r?\n|\r)\s*(?:\r?\n|\r)\s*)/i, "").replace(/\s+/g, " ").trim();
|
|
821
|
+
}
|
|
822
|
+
function normalizeReasoningProgressInput(text) {
|
|
823
|
+
const normalized = normalizeReasoningProgressLine(text);
|
|
824
|
+
return (normalized.match(/^_(.*)_$/u)?.[1] ?? normalized).trim();
|
|
825
|
+
}
|
|
826
|
+
function formatReasoningProgressDisplayLine(text, maxChars) {
|
|
827
|
+
const formatted = normalizeReasoningProgressLine(formatReasoningMessage(normalizeReasoningProgressInput(text)));
|
|
828
|
+
if (!formatted) return "";
|
|
829
|
+
if (Array.from(formatted).length <= maxChars) return formatted;
|
|
830
|
+
const italic = formatted.match(/^_(.*)_$/u);
|
|
831
|
+
if (!italic) return compactReasoningProgressDisplayLine(formatted, maxChars);
|
|
832
|
+
const body = compactReasoningProgressDisplayLine(italic[1] ?? "", Math.max(1, maxChars - 2));
|
|
833
|
+
return body ? `_${body}_` : "";
|
|
834
|
+
}
|
|
835
|
+
function compactReasoningProgressDisplayLine(text, maxChars) {
|
|
836
|
+
const normalized = text.replace(/\s+/g, " ").trim();
|
|
837
|
+
const chars = Array.from(normalized);
|
|
838
|
+
if (chars.length <= maxChars) return normalized;
|
|
839
|
+
if (maxChars <= 1) return "…";
|
|
840
|
+
const head = chars.slice(0, maxChars - 1).join("").trimEnd();
|
|
841
|
+
const boundary = head.search(/\s+\S*$/u);
|
|
842
|
+
if (boundary > Math.floor(maxChars * .6)) return `${head.slice(0, boundary).trimEnd()}…`;
|
|
843
|
+
return `${head}…`;
|
|
819
844
|
}
|
|
820
845
|
function normalizeCommentaryProgressText(text) {
|
|
821
846
|
const cleaned = stripInlineDirectiveTagsForDelivery(text).text.trim();
|
|
@@ -835,7 +860,7 @@ function mergeReasoningProgressText(current, incoming, options) {
|
|
|
835
860
|
return `${current}${incoming}`;
|
|
836
861
|
}
|
|
837
862
|
function isReasoningSnapshotText(text) {
|
|
838
|
-
return /^\s*(?:>\s*)?(?:Reasoning
|
|
863
|
+
return /^\s*(?:>\s*)?(?:Reasoning:\s*(?:\r?\n|\r)\s*|Thinking\.{0,3}\s*(?:\r?\n|\r)\s*(?:\r?\n|\r)\s*)/i.test(text);
|
|
839
864
|
}
|
|
840
865
|
function isEmptyDiscordProgressLine(line) {
|
|
841
866
|
if (!line || typeof line === "string") return false;
|
|
@@ -1449,8 +1474,7 @@ async function processDiscordMessageInner(ctx, observer) {
|
|
|
1449
1474
|
suppressDefaultToolProgressMessages: draftPreview.suppressDefaultToolProgressMessages ? true : void 0,
|
|
1450
1475
|
onReasoningStream: async (payload) => {
|
|
1451
1476
|
await statusReactions.setThinking();
|
|
1452
|
-
|
|
1453
|
-
await draftPreview.pushReasoningProgress(formattedText, { snapshot: payload?.isReasoningSnapshot === true });
|
|
1477
|
+
await draftPreview.pushReasoningProgress(payload?.text, { snapshot: payload?.isReasoningSnapshot === true });
|
|
1454
1478
|
},
|
|
1455
1479
|
onToolStart: async (payload) => {
|
|
1456
1480
|
if (isProcessAborted(abortSignal)) return;
|
|
@@ -9838,7 +9838,7 @@ function logDiscordStartupPhase(params) {
|
|
|
9838
9838
|
});
|
|
9839
9839
|
}
|
|
9840
9840
|
async function loadDiscordVoiceRuntime() {
|
|
9841
|
-
const promise = discordVoiceRuntimePromise ?? import("./manager.runtime-
|
|
9841
|
+
const promise = discordVoiceRuntimePromise ?? import("./manager.runtime-M8890WS1.js");
|
|
9842
9842
|
discordVoiceRuntimePromise = promise;
|
|
9843
9843
|
try {
|
|
9844
9844
|
return await promise;
|
|
@@ -9848,7 +9848,7 @@ async function loadDiscordVoiceRuntime() {
|
|
|
9848
9848
|
}
|
|
9849
9849
|
}
|
|
9850
9850
|
async function loadDiscordProviderSessionRuntime() {
|
|
9851
|
-
const promise = discordProviderSessionRuntimePromise ?? import("./provider-session.runtime-
|
|
9851
|
+
const promise = discordProviderSessionRuntimePromise ?? import("./provider-session.runtime-DgqndvlW.js");
|
|
9852
9852
|
discordProviderSessionRuntimePromise = promise;
|
|
9853
9853
|
try {
|
|
9854
9854
|
return await promise;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as reconcileAcpThreadBindingsOnStartup } from "./thread-bindings-Tfr_vFxk.js";
|
|
2
2
|
import { n as createThreadBindingManager, t as createNoopThreadBindingManager } from "./thread-bindings.manager-CRc4hYr1.js";
|
|
3
|
-
import { t as createDiscordMessageHandler } from "./message-handler-
|
|
3
|
+
import { t as createDiscordMessageHandler } from "./message-handler-DRzdnJyM.js";
|
|
4
4
|
import { resolveThreadBindingIdleTimeoutMs, resolveThreadBindingMaxAgeMs, resolveThreadBindingsEnabled } from "openclaw/plugin-sdk/conversation-runtime";
|
|
5
5
|
import { getAcpSessionManager, isAcpRuntimeError } from "openclaw/plugin-sdk/acp-runtime";
|
|
6
6
|
export { createDiscordMessageHandler, createNoopThreadBindingManager, createThreadBindingManager, getAcpSessionManager, isAcpRuntimeError, reconcileAcpThreadBindingsOnStartup, resolveThreadBindingIdleTimeoutMs, resolveThreadBindingMaxAgeMs, resolveThreadBindingsEnabled };
|
package/dist/runtime-api.js
CHANGED
|
@@ -21,10 +21,10 @@ import { a as mergeAbortSignals, i as DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, n as
|
|
|
21
21
|
import "./runtime-api.actions.js";
|
|
22
22
|
import { r as collectDiscordAuditChannelIds, t as auditDiscordChannelPermissions } from "./audit-eI8e8RpG.js";
|
|
23
23
|
import "./runtime-api.lookup.js";
|
|
24
|
-
import { C as resolveDiscordReplyTarget, T as sanitizeDiscordThreadName, b as registerDiscordListener, c as resolveDiscordGatewayIntents, d as createDiscordNativeCommand, l as waitForDiscordGatewayPluginRegistration, s as createDiscordGatewayPlugin, t as monitorDiscordProvider } from "./provider-
|
|
24
|
+
import { C as resolveDiscordReplyTarget, T as sanitizeDiscordThreadName, b as registerDiscordListener, c as resolveDiscordGatewayIntents, d as createDiscordNativeCommand, l as waitForDiscordGatewayPluginRegistration, s as createDiscordGatewayPlugin, t as monitorDiscordProvider } from "./provider-BI4VdnRd.js";
|
|
25
25
|
import { i as buildDiscordMediaPayload } from "./message-utils-ZTGvA2L8.js";
|
|
26
|
-
import { t as createDiscordMessageHandler } from "./message-handler-
|
|
27
|
-
import "./runtime-api.monitor-
|
|
26
|
+
import { t as createDiscordMessageHandler } from "./message-handler-DRzdnJyM.js";
|
|
27
|
+
import "./runtime-api.monitor-CX6Z4-7x.js";
|
|
28
28
|
import "./runtime-api.send.js";
|
|
29
29
|
import "./runtime-api.threads.js";
|
|
30
30
|
export { DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS, DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, DiscordSendError, testing as __testing, testing, addRoleDiscord, allowListMatches, auditDiscordChannelPermissions, autoBindSpawnedDiscordSubagent, banMemberDiscord, buildDiscordMediaPayload, 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, isDiscordGroupAllowedByPolicy, isDiscordModerationAction, isRecentlyUnboundThreadWebhookMessage, kickMemberDiscord, listDiscordDirectoryGroupsLive, listDiscordDirectoryPeersLive, listGuildChannelsDiscord, listGuildEmojisDiscord, listPinsDiscord, listScheduledEventsDiscord, listThreadBindingsBySessionKey, listThreadBindingsForAccount, listThreadsDiscord, mergeAbortSignals, monitorDiscordProvider, moveChannelDiscord, normalizeDiscordAllowList, 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, sanitizeDiscordThreadName, searchMessagesDiscord, sendDiscordComponentMessage, sendMessageDiscord, sendPollDiscord, sendStickerDiscord, sendTypingDiscord, sendVoiceMessageDiscord, sendWebhookMessageDiscord, setChannelPermissionDiscord, setDiscordRuntime, setPresence, setThreadBindingIdleTimeoutBySessionKey, setThreadBindingMaxAgeBySessionKey, shouldEmitDiscordReactionNotification, timeoutMemberDiscord, unbindThreadBindingsBySessionKey, unpinMessageDiscord, unregisterGateway, uploadEmojiDiscord, uploadStickerDiscord, waitForDiscordGatewayPluginRegistration };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./allow-list-C-MqM-B_.js";
|
|
2
2
|
import "./timeouts-CEJ3--Uw.js";
|
|
3
|
-
import "./provider-
|
|
3
|
+
import "./provider-BI4VdnRd.js";
|
|
4
4
|
import "./message-utils-ZTGvA2L8.js";
|
|
5
|
-
import "./message-handler-
|
|
5
|
+
import "./message-handler-DRzdnJyM.js";
|
|
6
6
|
export {};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { a as clearPresences, c as setPresence, i as unregisterGateway, n as getGateway, o as getPresence, r as registerGateway, s as presenceCacheSize, t as clearGateways } from "./gateway-registry-DPxmW0Db.js";
|
|
2
2
|
import { _ as resolveGroupDmAllow, a as normalizeDiscordSlug, c as resolveDiscordChannelConfigWithFallback, d as resolveDiscordGuildEntry, g as resolveDiscordShouldRequireMention, n as isDiscordGroupAllowedByPolicy, r as normalizeDiscordAllowList, s as resolveDiscordChannelConfig, t as allowListMatches, u as resolveDiscordCommandAuthorized, v as shouldEmitDiscordReactionNotification } from "./allow-list-C-MqM-B_.js";
|
|
3
3
|
import { a as mergeAbortSignals, i as DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, n as DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, r as DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, t as DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS } from "./timeouts-CEJ3--Uw.js";
|
|
4
|
-
import { C as resolveDiscordReplyTarget, T as sanitizeDiscordThreadName, b as registerDiscordListener, c as resolveDiscordGatewayIntents, d as createDiscordNativeCommand, l as waitForDiscordGatewayPluginRegistration, s as createDiscordGatewayPlugin, t as monitorDiscordProvider } from "./provider-
|
|
4
|
+
import { C as resolveDiscordReplyTarget, T as sanitizeDiscordThreadName, b as registerDiscordListener, c as resolveDiscordGatewayIntents, d as createDiscordNativeCommand, l as waitForDiscordGatewayPluginRegistration, s as createDiscordGatewayPlugin, t as monitorDiscordProvider } from "./provider-BI4VdnRd.js";
|
|
5
5
|
import { i as buildDiscordMediaPayload } from "./message-utils-ZTGvA2L8.js";
|
|
6
|
-
import { t as createDiscordMessageHandler } from "./message-handler-
|
|
7
|
-
import "./runtime-api.monitor-
|
|
6
|
+
import { t as createDiscordMessageHandler } from "./message-handler-DRzdnJyM.js";
|
|
7
|
+
import "./runtime-api.monitor-CX6Z4-7x.js";
|
|
8
8
|
export { DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS, DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, allowListMatches, buildDiscordMediaPayload, clearGateways, clearPresences, createDiscordGatewayPlugin, createDiscordMessageHandler, createDiscordNativeCommand, getGateway, getPresence, isDiscordGroupAllowedByPolicy, mergeAbortSignals, monitorDiscordProvider, normalizeDiscordAllowList, normalizeDiscordSlug, presenceCacheSize, registerDiscordListener, registerGateway, resolveDiscordChannelConfig, resolveDiscordChannelConfigWithFallback, resolveDiscordCommandAuthorized, resolveDiscordGatewayIntents, resolveDiscordGuildEntry, resolveDiscordReplyTarget, resolveDiscordShouldRequireMention, resolveGroupDmAllow, sanitizeDiscordThreadName, setPresence, shouldEmitDiscordReactionNotification, unregisterGateway, waitForDiscordGatewayPluginRegistration };
|
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.2.0 - 2026-06-01
|
|
6
|
+
|
|
7
|
+
- Add named Opus error codes, `codeName` metadata, and `isOpusError()` for structured libopus error handling.
|
|
8
|
+
- Add coverage tooling and broaden validation-path tests.
|
|
9
|
+
- Add dedicated docs pages for packet inspection (`getPacketInfo`) and error handling, list `getPacketInfo` in the API reference, and wire both into the site navigation.
|
|
10
|
+
|
|
5
11
|
## 0.1.0 - 2026-05-26
|
|
6
12
|
|
|
7
13
|
- Initial npm release of `libopus-wasm`, a small ESM-only WebAssembly wrapper around libopus 1.6.1 for raw Opus packet encode/decode in Node 20+ and browsers.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# libopus-wasm
|
|
2
2
|
|
|
3
|
+

|
|
4
|
+
|
|
3
5
|
[](https://github.com/openclaw/libopus-wasm/actions/workflows/ci.yml)
|
|
4
6
|
[](https://libopus-wasm.dev)
|
|
5
7
|
|
|
@@ -190,7 +192,8 @@ Read-only: `channels`, `maxFrameSize`, `sampleRate`.
|
|
|
190
192
|
`Bitrate` (`Auto`, `Max`) ·
|
|
191
193
|
`Bandwidth` (`Narrowband`…`Fullband`) ·
|
|
192
194
|
`EncoderCtl` / `DecoderCtl` request codes ·
|
|
193
|
-
`OpusError` (`code`, `operation`)
|
|
195
|
+
`OpusError` (`code`, `codeName`, `operation`) ·
|
|
196
|
+
`OpusErrorCode` · `isOpusError`.
|
|
194
197
|
|
|
195
198
|
### Supported formats
|
|
196
199
|
|
|
@@ -135,7 +135,19 @@ export declare function createDecoder(options?: DecoderOptions): Promise<OpusDec
|
|
|
135
135
|
export declare function getPacketInfo(packet: Uint8Array, options?: PacketInfoOptions): Promise<OpusPacketInfo>;
|
|
136
136
|
export declare class OpusError extends Error {
|
|
137
137
|
readonly code: number;
|
|
138
|
+
readonly codeName: OpusErrorCodeName | undefined;
|
|
138
139
|
readonly operation: string | undefined;
|
|
139
140
|
constructor(code: number, message: string, operation?: string);
|
|
140
141
|
}
|
|
142
|
+
export declare const OpusErrorCode: {
|
|
143
|
+
readonly BadArg: -1;
|
|
144
|
+
readonly BufferTooSmall: -2;
|
|
145
|
+
readonly InternalError: -3;
|
|
146
|
+
readonly InvalidPacket: -4;
|
|
147
|
+
readonly Unimplemented: -5;
|
|
148
|
+
readonly InvalidState: -6;
|
|
149
|
+
readonly AllocFail: -7;
|
|
150
|
+
};
|
|
151
|
+
export type OpusErrorCodeName = keyof typeof OpusErrorCode;
|
|
152
|
+
export declare function isOpusError(error: unknown): error is OpusError;
|
|
141
153
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -483,18 +483,50 @@ class WasmOpusDecoder {
|
|
|
483
483
|
}
|
|
484
484
|
export class OpusError extends Error {
|
|
485
485
|
code;
|
|
486
|
+
codeName;
|
|
486
487
|
operation;
|
|
487
488
|
constructor(code, message, operation) {
|
|
488
489
|
super(message);
|
|
489
490
|
this.name = "OpusError";
|
|
490
491
|
this.code = code;
|
|
492
|
+
this.codeName = resolveOpusErrorCodeName(code);
|
|
491
493
|
this.operation = operation;
|
|
492
494
|
}
|
|
493
495
|
}
|
|
496
|
+
export const OpusErrorCode = {
|
|
497
|
+
BadArg: -1,
|
|
498
|
+
BufferTooSmall: -2,
|
|
499
|
+
InternalError: -3,
|
|
500
|
+
InvalidPacket: -4,
|
|
501
|
+
Unimplemented: -5,
|
|
502
|
+
InvalidState: -6,
|
|
503
|
+
AllocFail: -7,
|
|
504
|
+
};
|
|
505
|
+
export function isOpusError(error) {
|
|
506
|
+
if (error instanceof OpusError) {
|
|
507
|
+
return true;
|
|
508
|
+
}
|
|
509
|
+
const candidate = error;
|
|
510
|
+
return (Boolean(error) &&
|
|
511
|
+
typeof error === "object" &&
|
|
512
|
+
candidate.name === "OpusError" &&
|
|
513
|
+
typeof candidate.message === "string" &&
|
|
514
|
+
typeof candidate.code === "number" &&
|
|
515
|
+
(typeof candidate.codeName === "string" || candidate.codeName === undefined) &&
|
|
516
|
+
(typeof candidate.operation === "string" || candidate.operation === undefined));
|
|
517
|
+
}
|
|
494
518
|
async function getModule() {
|
|
495
519
|
modulePromise ??= createLibopusModule();
|
|
496
520
|
return await modulePromise;
|
|
497
521
|
}
|
|
522
|
+
function resolveOpusErrorCodeName(code) {
|
|
523
|
+
for (const [name, value] of Object.entries(OpusErrorCode)) {
|
|
524
|
+
if (value === code) {
|
|
525
|
+
return name;
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
return undefined;
|
|
529
|
+
}
|
|
498
530
|
function createOpusError(module, code, operation) {
|
|
499
531
|
const message = module.UTF8ToString(module._oc_strerror(code));
|
|
500
532
|
return new OpusError(code, `libopus ${operation} failed (${code}): ${message}`, operation);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "libopus-wasm",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Small, modern WASM bindings for libopus raw packet encode/decode.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -42,11 +42,13 @@
|
|
|
42
42
|
"docs:build": "node scripts/build-docs-site.mjs",
|
|
43
43
|
"prepack": "pnpm build",
|
|
44
44
|
"test": "pnpm build:wasm && vitest run",
|
|
45
|
+
"test:coverage": "pnpm build:wasm && vitest run --coverage",
|
|
45
46
|
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
46
47
|
},
|
|
47
48
|
"devDependencies": {
|
|
48
49
|
"@discordjs/opus": "0.10.0",
|
|
49
50
|
"@types/node": "24.10.2",
|
|
51
|
+
"@vitest/coverage-v8": "4.0.14",
|
|
50
52
|
"typescript": "5.9.3",
|
|
51
53
|
"vitest": "4.0.14"
|
|
52
54
|
},
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/discord",
|
|
3
|
-
"version": "2026.6.1-beta.
|
|
3
|
+
"version": "2026.6.1-beta.3",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@openclaw/discord",
|
|
9
|
-
"version": "2026.6.1-beta.
|
|
9
|
+
"version": "2026.6.1-beta.3",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@discordjs/voice": "0.19.2",
|
|
12
12
|
"discord-api-types": "0.38.48",
|
|
13
|
-
"libopus-wasm": "0.
|
|
13
|
+
"libopus-wasm": "0.2.0",
|
|
14
14
|
"typebox": "1.1.39",
|
|
15
15
|
"undici": "8.3.0",
|
|
16
16
|
"ws": "8.21.0"
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
|
-
"openclaw": ">=2026.6.1-beta.
|
|
19
|
+
"openclaw": ">=2026.6.1-beta.3"
|
|
20
20
|
},
|
|
21
21
|
"peerDependenciesMeta": {
|
|
22
22
|
"openclaw": {
|
|
@@ -352,9 +352,9 @@
|
|
|
352
352
|
]
|
|
353
353
|
},
|
|
354
354
|
"node_modules/libopus-wasm": {
|
|
355
|
-
"version": "0.
|
|
356
|
-
"resolved": "https://registry.npmjs.org/libopus-wasm/-/libopus-wasm-0.
|
|
357
|
-
"integrity": "sha512
|
|
355
|
+
"version": "0.2.0",
|
|
356
|
+
"resolved": "https://registry.npmjs.org/libopus-wasm/-/libopus-wasm-0.2.0.tgz",
|
|
357
|
+
"integrity": "sha512-x/2Gu1/C6L3IICY09zyfp984AWiOYjn53u4WfdY3yh+3KTzMN8Xkm77q3lenWMVIk5SnSzjGEkQT+VQMFHLBHQ==",
|
|
358
358
|
"license": "MIT",
|
|
359
359
|
"engines": {
|
|
360
360
|
"node": ">=20"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/discord",
|
|
3
|
-
"version": "2026.6.1-beta.
|
|
3
|
+
"version": "2026.6.1-beta.3",
|
|
4
4
|
"description": "OpenClaw Discord channel plugin for channels, DMs, commands, and app events.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@discordjs/voice": "0.19.2",
|
|
12
12
|
"discord-api-types": "0.38.48",
|
|
13
|
-
"libopus-wasm": "0.
|
|
13
|
+
"libopus-wasm": "0.2.0",
|
|
14
14
|
"typebox": "1.1.39",
|
|
15
15
|
"undici": "8.3.0",
|
|
16
16
|
"ws": "8.21.0"
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
|
-
"openclaw": ">=2026.6.1-beta.
|
|
19
|
+
"openclaw": ">=2026.6.1-beta.3"
|
|
20
20
|
},
|
|
21
21
|
"peerDependenciesMeta": {
|
|
22
22
|
"openclaw": {
|
|
@@ -63,10 +63,10 @@
|
|
|
63
63
|
"allowInvalidConfigRecovery": true
|
|
64
64
|
},
|
|
65
65
|
"compat": {
|
|
66
|
-
"pluginApi": ">=2026.6.1-beta.
|
|
66
|
+
"pluginApi": ">=2026.6.1-beta.3"
|
|
67
67
|
},
|
|
68
68
|
"build": {
|
|
69
|
-
"openclawVersion": "2026.6.1-beta.
|
|
69
|
+
"openclawVersion": "2026.6.1-beta.3"
|
|
70
70
|
},
|
|
71
71
|
"release": {
|
|
72
72
|
"publishToClawHub": true,
|