@openclaw/discord 2026.5.26 → 2026.5.27
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/action-runtime-api.js +1 -1
- package/dist/api.js +12 -12
- package/dist/{approval-handler.runtime-BlGs6D0-.js → approval-handler.runtime-BDxD97LJ.js} +18 -5
- package/dist/{audit-DE8lNdMv.js → audit-BdUjE2tr.js} +3 -3
- package/dist/{channel-XYTSE8wN.js → channel-9YoMy5Jf.js} +16 -16
- package/dist/{channel-actions-DICb5UUl.js → channel-actions-DZfkB0nd.js} +17 -2
- package/dist/{channel-actions.runtime-92Esj8jy.js → channel-actions.runtime-suaDJHH0.js} +5 -5
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel.setup-JaozRxYz.js → channel.setup-B-kHacpx.js} +3 -3
- package/dist/{components-Bpf9ITyn.js → components-Dlc81IU5.js} +1 -1
- package/dist/contract-api.js +3 -3
- package/dist/{conversation-identity-Be5JQPP9.js → conversation-identity-DAEgiGDV.js} +2 -2
- package/dist/{directory-config-oK2sOZ2m.js → directory-config-Cgp0csDd.js} +1 -1
- package/dist/directory-contract-api.js +1 -1
- package/dist/{directory-live-BRjo48ro.js → directory-live-C-ECRrM8.js} +1 -1
- package/dist/{doctor-DBPfLj15.js → doctor-Q80i7GdG.js} +2 -2
- package/dist/{doctor-contract-CLMMYrdF.js → doctor-contract-8-Ia3d_X.js} +1 -1
- package/dist/doctor-contract-api.js +1 -1
- package/dist/{handle-action.guild-admin-_LgqCYcN.js → handle-action.guild-admin-DWFTAcfd.js} +30 -12
- package/dist/index.js +1 -1
- package/dist/{manager.runtime-Bs0ngLSw.js → manager.runtime-D6V2SPKr.js} +3 -3
- package/dist/{message-handler-B9n5CtIS.js → message-handler-B5-UG_oD.js} +7 -7
- package/dist/{message-handler.preflight-Cu8cFBgW.js → message-handler.preflight-Ddww-wnF.js} +12 -13
- package/dist/{message-handler.process-DO17vBlT.js → message-handler.process-HWGh2NOP.js} +379 -352
- package/dist/{message-utils-DxHZcpPf.js → message-utils-4w0_DPFE.js} +1 -1
- package/dist/{outbound-adapter-C8lzfSt6.js → outbound-adapter-DYUYRaBd.js} +7 -8
- package/dist/{pluralkit-CTbOoDPp.js → pluralkit-BS1MuvYs.js} +1 -1
- package/dist/{preview-streaming-CQ7PsV9J.js → preview-streaming-DXT8oJdo.js} +1 -1
- package/dist/{provider-D3RwHRhI.js → provider-CO6pih5z.js} +21 -24
- package/dist/{provider-session.runtime-DbNYskMy.js → provider-session.runtime-BD5XLPI8.js} +3 -3
- package/dist/provider.runtime-pUGk7VR5.js +2 -0
- package/dist/{resolve-channels-CIV0C8ST.js → resolve-channels-pD06YNCU.js} +1 -1
- package/dist/{resolve-users-LZKYHrJx.js → resolve-users-BiWLqNNO.js} +1 -1
- package/dist/runtime-api.actions.js +2 -2
- package/dist/runtime-api.js +18 -18
- package/dist/runtime-api.lookup.js +4 -4
- package/dist/runtime-api.monitor-BjgSsR6H.js +5 -0
- package/dist/runtime-api.monitor.js +4 -4
- package/dist/runtime-api.send.js +5 -5
- package/dist/runtime-api.threads.js +3 -3
- package/dist/{runtime-DBkHf0qH.js → runtime-xSazIM0F.js} +144 -9
- package/dist/{send-CM1NFFrZ.js → send-BzXZ8iUI.js} +6 -3
- package/dist/{send.components-swKESEWc.js → send.components-AK8K4TwB.js} +4 -4
- package/dist/{send.outbound-BHQPWbwU.js → send.outbound-ZrMnBa8C.js} +3 -3
- package/dist/{send.receipt-D_6lR7zH.js → send.receipt-BzfsP3Bb.js} +1 -1
- package/dist/{send.shared-aYGYz83q.js → send.shared-ehnDGwXx.js} +81 -3
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{shared-BwF8ShpE.js → shared-ToNRC7ax.js} +2 -2
- package/dist/{subagent-hooks-DHA_1pBI.js → subagent-hooks-Di_2iXU8.js} +2 -2
- package/dist/subagent-hooks-api.js +1 -1
- package/dist/{system-events-Cr3EqBah.js → system-events-DbqKnNPF.js} +1 -1
- package/dist/{target-resolver-CVgOsap6.js → target-resolver-DXPvq5-L.js} +2 -2
- package/dist/targets-BBVHRaeO.js +3 -0
- package/dist/test-api.js +3 -3
- package/dist/{thread-bindings-Dw4wcHWn.js → thread-bindings-Bw40FTRZ.js} +4 -4
- package/dist/{thread-bindings.discord-api-xCfun-pQ.js → thread-bindings.discord-api-irWYI8YX.js} +4 -4
- package/dist/{thread-bindings.manager-UJ5FvZfO.js → thread-bindings.manager-LoYZzlss.js} +3 -3
- package/dist/{transcripts-source-emawQzBc.js → transcripts-source-CwahHAYt.js} +1 -1
- package/dist/transcripts-source-api.js +1 -1
- package/dist/{typing-BhIpRSfR.js → typing-Cv09OhaY.js} +1 -1
- package/npm-shrinkwrap.json +3 -3
- package/openclaw.plugin.json +2 -0
- package/package.json +6 -6
- package/dist/provider.runtime-rUg1sHKP.js +0 -2
- package/dist/runtime-api.monitor-CUn-x5uG.js +0 -5
- package/dist/targets-CNDNKpqQ.js +0 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { u as resolveDiscordChannelInfoSafe } from "./thread-bindings.discord-api-
|
|
1
|
+
import { u as resolveDiscordChannelInfoSafe } from "./thread-bindings.discord-api-irWYI8YX.js";
|
|
2
2
|
import { a as mergeAbortSignals } from "./timeouts-l_PsHQvX.js";
|
|
3
3
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeOptionalStringifiedId, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
4
4
|
import { ComponentType, StickerFormatType } from "discord-api-types/v10";
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { o as normalizeDiscordOutboundTarget, s as chunkDiscordTextWithMode, t as createDiscordSendReceipt, x as DiscordError } from "./send.receipt-
|
|
1
|
+
import { o as normalizeDiscordOutboundTarget, s as chunkDiscordTextWithMode, t as createDiscordSendReceipt, x as DiscordError } from "./send.receipt-BzfsP3Bb.js";
|
|
2
2
|
import { s as resolveDiscordAccount } from "./accounts-dXTfmnSZ.js";
|
|
3
|
-
import { d as readDiscordComponentSpec } from "./components-
|
|
3
|
+
import { d as readDiscordComponentSpec } from "./components-Dlc81IU5.js";
|
|
4
4
|
import { n as notifyDiscordInboundEventOutboundPayloadSuccess } from "./inbound-event-delivery-CEPlt2uz.js";
|
|
5
5
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
6
6
|
import { resolvePayloadMediaUrls, sendPayloadMediaSequenceOrFallback, sendTextMediaPayload } from "openclaw/plugin-sdk/reply-payload";
|
|
7
7
|
import { resolveRetryConfig, retryAsync } from "openclaw/plugin-sdk/retry-runtime";
|
|
8
|
+
import { createReplyToFanout, resolveOutboundSendDep } from "openclaw/plugin-sdk/channel-outbound";
|
|
8
9
|
import { attachChannelToResult, createAttachedChannelResultAdapter } from "openclaw/plugin-sdk/channel-send-result";
|
|
9
|
-
import { resolveOutboundSendDep } from "openclaw/plugin-sdk/outbound-send-deps";
|
|
10
|
-
import { createReplyToFanout } from "openclaw/plugin-sdk/outbound-runtime";
|
|
11
10
|
//#region extensions/discord/src/delivery-retry.ts
|
|
12
11
|
const DISCORD_DELIVERY_RETRY_DEFAULTS = {
|
|
13
12
|
attempts: 3,
|
|
@@ -85,11 +84,11 @@ function normalizeDiscordApprovalPayload(payload) {
|
|
|
85
84
|
let discordComponentSendPromise;
|
|
86
85
|
let discordSharedInteractivePromise;
|
|
87
86
|
async function sendDiscordComponentMessageLazy(...args) {
|
|
88
|
-
discordComponentSendPromise ??= import("./send.components-
|
|
87
|
+
discordComponentSendPromise ??= import("./send.components-AK8K4TwB.js").then((n) => n.i).then((module) => module.sendDiscordComponentMessage);
|
|
89
88
|
return await (await discordComponentSendPromise)(...args);
|
|
90
89
|
}
|
|
91
90
|
function loadDiscordSharedInteractive() {
|
|
92
|
-
discordSharedInteractivePromise ??= import("./components-
|
|
91
|
+
discordSharedInteractivePromise ??= import("./components-Dlc81IU5.js").then((n) => n.a);
|
|
93
92
|
return discordSharedInteractivePromise;
|
|
94
93
|
}
|
|
95
94
|
function addPayloadTextFallback(spec, payload) {
|
|
@@ -124,7 +123,7 @@ async function resolveDiscordComponentSpec(payload) {
|
|
|
124
123
|
//#region extensions/discord/src/outbound-send-context.ts
|
|
125
124
|
let discordSendRuntimePromise;
|
|
126
125
|
async function loadDiscordSendRuntime() {
|
|
127
|
-
discordSendRuntimePromise ??= import("./send-
|
|
126
|
+
discordSendRuntimePromise ??= import("./send-BzXZ8iUI.js").then((n) => n.t);
|
|
128
127
|
return await discordSendRuntimePromise;
|
|
129
128
|
}
|
|
130
129
|
function resolveDiscordOutboundTarget(params) {
|
|
@@ -314,7 +313,7 @@ function stripDiscordInternalRuntimeScaffolding(text) {
|
|
|
314
313
|
}
|
|
315
314
|
let discordThreadBindingsPromise;
|
|
316
315
|
function loadDiscordThreadBindings() {
|
|
317
|
-
discordThreadBindingsPromise ??= import("./thread-bindings-
|
|
316
|
+
discordThreadBindingsPromise ??= import("./thread-bindings-Bw40FTRZ.js").then((n) => n.t);
|
|
318
317
|
return discordThreadBindingsPromise;
|
|
319
318
|
}
|
|
320
319
|
function resolveDiscordWebhookIdentity(params) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Wt as __exportAll } from "./send.receipt-
|
|
1
|
+
import { Wt as __exportAll } from "./send.receipt-BzfsP3Bb.js";
|
|
2
2
|
import { resolveFetch } from "openclaw/plugin-sdk/fetch-runtime";
|
|
3
3
|
//#region extensions/discord/src/pluralkit.ts
|
|
4
4
|
var pluralkit_exports = /* @__PURE__ */ __exportAll({ fetchPluralKitMessageInfo: () => fetchPluralKitMessageInfo });
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { resolveChannelPreviewStreamMode } from "openclaw/plugin-sdk/channel-
|
|
1
|
+
import { resolveChannelPreviewStreamMode } from "openclaw/plugin-sdk/channel-outbound";
|
|
2
2
|
//#region extensions/discord/src/preview-streaming.ts
|
|
3
3
|
function resolveDiscordPreviewStreamMode(params = {}) {
|
|
4
4
|
if (params.streaming === void 0 && params.streamMode === void 0) return "progress";
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { $ as BaseMessageInteractiveComponent, A as User, B as Container, D as CommandWithSubcommands, E as Command, F as Modal, J as Separator, K as Row, O as Guild, R as Button, S as RateLimitError, Wt as __exportAll, X as TextDisplay, Y as StringSelectMenu, c as discord_exports, ct as createThread, d as MessageReactionAddListener, dt as editChannel, f as MessageReactionRemoveListener, g as ThreadUpdateListener, k as Message, l as InteractionCreateListener, m as ReadyListener, mt as getChannelMessage, p as PresenceUpdateListener, s as chunkDiscordTextWithMode, u as MessageCreateListener, v as Client, y as Plugin } from "./send.receipt-
|
|
1
|
+
import { $ as BaseMessageInteractiveComponent, A as User, B as Container, D as CommandWithSubcommands, E as Command, F as Modal, J as Separator, K as Row, O as Guild, R as Button, S as RateLimitError, Wt as __exportAll, X as TextDisplay, Y as StringSelectMenu, c as discord_exports, ct as createThread, d as MessageReactionAddListener, dt as editChannel, f as MessageReactionRemoveListener, g as ThreadUpdateListener, k as Message, l as InteractionCreateListener, m as ReadyListener, mt as getChannelMessage, p as PresenceUpdateListener, s as chunkDiscordTextWithMode, u as MessageCreateListener, v as Client, y as Plugin } from "./send.receipt-BzfsP3Bb.js";
|
|
2
2
|
import { c as resolveDiscordAccountAllowFrom, d as resolveDiscordAccountDmPolicy, f as resolveDiscordMaxLinesPerMessage, p as normalizeDiscordToken, s as resolveDiscordAccount } from "./accounts-dXTfmnSZ.js";
|
|
3
|
-
import { _ as parseDiscordComponentCustomId, b as parseDiscordModalCustomIdForInteraction, v as parseDiscordComponentCustomIdForInteraction, y as parseDiscordModalCustomId } from "./components-
|
|
4
|
-
import { a as resolveDiscordComponentEntryWithPersistence, o as resolveDiscordModalEntryWithPersistence, t as editDiscordComponentMessage } from "./send.components-
|
|
3
|
+
import { _ as parseDiscordComponentCustomId, b as parseDiscordModalCustomIdForInteraction, v as parseDiscordComponentCustomIdForInteraction, y as parseDiscordModalCustomId } from "./components-Dlc81IU5.js";
|
|
4
|
+
import { a as resolveDiscordComponentEntryWithPersistence, o as resolveDiscordModalEntryWithPersistence, t as editDiscordComponentMessage } from "./send.components-AK8K4TwB.js";
|
|
5
5
|
import { c as setPresence, i as unregisterGateway, r as registerGateway } from "./gateway-registry-DPxmW0Db.js";
|
|
6
|
-
import {
|
|
6
|
+
import { B as DISCORD_REST_TIMEOUT_MS, D as canViewDiscordGuildChannel, H as withValidatedDiscordProxy, I as createDiscordRestClient, V as validateDiscordProxyUrl } from "./send.shared-ehnDGwXx.js";
|
|
7
7
|
import { a as summarizeDiscordResponseBody, i as isDiscordRateLimitResponseBody } from "./api-Kq7vtaSO.js";
|
|
8
8
|
import { S as resolveTimestampMs, _ as resolveGroupDmAllow, a as normalizeDiscordSlug, b as formatDiscordUserTag, c as resolveDiscordChannelConfigWithFallback, d as resolveDiscordGuildEntry, f as resolveDiscordMemberAccessState, i as normalizeDiscordDisplaySlug, l as resolveDiscordChannelPolicyCommandAuthorizer, m as resolveDiscordOwnerAccess, n as isDiscordGroupAllowedByPolicy, o as resolveDiscordAllowListMatch, r as normalizeDiscordAllowList, v as shouldEmitDiscordReactionNotification, y as formatDiscordReactionEmoji } from "./allow-list-BnkWtVpA.js";
|
|
9
|
-
import { s as sendVoiceMessageDiscord } from "./send-
|
|
10
|
-
import { i as formatMention, t as sendMessageDiscord } from "./send.outbound-
|
|
11
|
-
import { a as getDiscordExecApprovalApprovers, s as isDiscordExecApprovalClientEnabled, t as resolveDiscordConversationIdentity } from "./conversation-identity-
|
|
12
|
-
import { t as resolveDiscordChannelAllowlist } from "./resolve-channels-
|
|
13
|
-
import { t as resolveDiscordUserAllowlist } from "./resolve-users-
|
|
14
|
-
import { _ as formatThreadBindingDurationLabel, a as isThreadArchived, d as resolveDiscordChannelNameSafe, f as resolveDiscordChannelParentIdSafe, l as resolveDiscordChannelIdSafe, m as resolveDiscordChannelTopicSafe, p as resolveDiscordChannelParentSafe, u as resolveDiscordChannelInfoSafe } from "./thread-bindings.discord-api-
|
|
9
|
+
import { s as sendVoiceMessageDiscord } from "./send-BzXZ8iUI.js";
|
|
10
|
+
import { i as formatMention, t as sendMessageDiscord } from "./send.outbound-ZrMnBa8C.js";
|
|
11
|
+
import { a as getDiscordExecApprovalApprovers, s as isDiscordExecApprovalClientEnabled, t as resolveDiscordConversationIdentity } from "./conversation-identity-DAEgiGDV.js";
|
|
12
|
+
import { t as resolveDiscordChannelAllowlist } from "./resolve-channels-pD06YNCU.js";
|
|
13
|
+
import { t as resolveDiscordUserAllowlist } from "./resolve-users-BiWLqNNO.js";
|
|
14
|
+
import { _ as formatThreadBindingDurationLabel, a as isThreadArchived, d as resolveDiscordChannelNameSafe, f as resolveDiscordChannelParentIdSafe, l as resolveDiscordChannelIdSafe, m as resolveDiscordChannelTopicSafe, p as resolveDiscordChannelParentSafe, u as resolveDiscordChannelInfoSafe } from "./thread-bindings.discord-api-irWYI8YX.js";
|
|
15
15
|
import { r as parseApplicationIdFromToken, t as fetchDiscordApplicationId } from "./probe-DfIM7zSY.js";
|
|
16
16
|
import { o as raceWithTimeout, s as withAbortTimeout } from "./timeouts-l_PsHQvX.js";
|
|
17
|
-
import { d as resolveDiscordMessageChannelId, n as resolveDiscordForwardedMessagesTextFromSnapshots, t as resolveDiscordEmbedText, u as resolveDiscordChannelInfo } from "./message-utils-
|
|
17
|
+
import { d as resolveDiscordMessageChannelId, n as resolveDiscordForwardedMessagesTextFromSnapshots, t as resolveDiscordEmbedText, u as resolveDiscordChannelInfo } from "./message-utils-4w0_DPFE.js";
|
|
18
18
|
import { t as resolveDiscordSenderIdentity } from "./sender-identity-BFp5w0F8.js";
|
|
19
19
|
import { n as buildDiscordInboundAccessContext, t as buildDiscordGroupSystemPrompt } from "./inbound-context-B5EsqsSr.js";
|
|
20
|
-
import "./approval-handler.runtime-
|
|
20
|
+
import "./approval-handler.runtime-BDxD97LJ.js";
|
|
21
21
|
import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
|
|
22
22
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, normalizeOptionalStringifiedId, normalizeStringEntries, normalizeStringEntriesLower, summarizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
23
23
|
import { buildAgentSessionKey, deriveLastRoutePolicy, isAcpSessionKey, isSubagentSessionKey, parseAgentSessionKey, resolveAgentIdFromSessionKey, resolveAgentRoute } from "openclaw/plugin-sdk/routing";
|
|
@@ -38,16 +38,14 @@ import { createNonExitingRuntime, createSubsystemLogger, danger, formatDurationS
|
|
|
38
38
|
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
|
39
39
|
import { resolveMarkdownTableMode } from "openclaw/plugin-sdk/markdown-table-runtime";
|
|
40
40
|
import { chunkItems, sanitizeAssistantVisibleText } from "openclaw/plugin-sdk/text-chunking";
|
|
41
|
-
import { createChannelMessageReplyPipeline, sendDurableMessageBatch } from "openclaw/plugin-sdk/channel-
|
|
41
|
+
import { buildOutboundSessionContext, createChannelMessageReplyPipeline, resolveChannelStreamingBlockEnabled, sendDurableMessageBatch } from "openclaw/plugin-sdk/channel-outbound";
|
|
42
42
|
import { fetchWithSsrFGuard, formatErrorMessage as formatErrorMessage$1 } from "openclaw/plugin-sdk/ssrf-runtime";
|
|
43
43
|
import { GROUP_POLICY_BLOCKED_LABEL, resolveDefaultGroupPolicy, resolveOpenProviderRuntimeGroupPolicy, warnMissingProviderGroupPolicyFallbackOnce } from "openclaw/plugin-sdk/runtime-group-policy";
|
|
44
44
|
import { createChannelPairingChallengeIssuer } from "openclaw/plugin-sdk/channel-pairing";
|
|
45
45
|
import { CHANNEL_APPROVAL_NATIVE_RUNTIME_CONTEXT_CAPABILITY } from "openclaw/plugin-sdk/approval-handler-adapter-runtime";
|
|
46
46
|
import { readJsonFileWithFallback, writeJsonFileAtomically } from "openclaw/plugin-sdk/json-store";
|
|
47
47
|
import { resolveStateDir } from "openclaw/plugin-sdk/state-paths";
|
|
48
|
-
import { buildOutboundSessionContext } from "openclaw/plugin-sdk/outbound-runtime";
|
|
49
48
|
import { addAllowlistUserEntriesFromConfigEntry, buildAllowlistResolutionSummary, canonicalizeAllowlistWithResolvedIds, patchAllowlistUsersInConfigEntries, summarizeMapping } from "openclaw/plugin-sdk/allow-from";
|
|
50
|
-
import { resolveChannelStreamingBlockEnabled } from "openclaw/plugin-sdk/channel-streaming";
|
|
51
49
|
import { buildPairingReply, upsertChannelPairingRequest, upsertChannelPairingRequest as upsertChannelPairingRequest$1 } from "openclaw/plugin-sdk/conversation-runtime";
|
|
52
50
|
import { clearExpiredCooldowns, ensureAuthProfileStore, isProfileInCooldown, resolveAgentAvatar, resolveDefaultModelForAgent, resolveHumanDelayConfig, resolveProfilesUnavailableReason } from "openclaw/plugin-sdk/agent-runtime";
|
|
53
51
|
import { truncateUtf16Safe, withTimeout } from "openclaw/plugin-sdk/text-utility-runtime";
|
|
@@ -59,7 +57,7 @@ import { applyModelOverrideToSessionEntry, resolveChannelModelOverride } from "o
|
|
|
59
57
|
import { completeWithPreparedSimpleCompletionModel, extractAssistantText, prepareSimpleCompletionModelForAgent } from "openclaw/plugin-sdk/simple-completion-runtime";
|
|
60
58
|
import { createReplyReferencePlanner } from "openclaw/plugin-sdk/reply-reference";
|
|
61
59
|
import { getSessionEntry, loadSessionStore, readSessionUpdatedAt as readSessionUpdatedAt$1, resolveStorePath, resolveStorePath as resolveStorePath$1, updateSessionStore } from "openclaw/plugin-sdk/session-store-runtime";
|
|
62
|
-
import { formatInboundEnvelope, resolveEnvelopeFormatOptions } from "openclaw/plugin-sdk/channel-inbound";
|
|
60
|
+
import { formatInboundEnvelope, resolveEnvelopeFormatOptions, runChannelInboundEvent } from "openclaw/plugin-sdk/channel-inbound";
|
|
63
61
|
import { buildCommandTextFromArgs, findCommandByNativeName, formatCommandArgMenuTitle, listChatCommands, listNativeCommandSpecsForConfig, listSkillCommandsForAgents, resolveCommandAuthorizedFromAuthorizers, resolveNativeCommandSessionTargets, resolveStoredModelOverride, serializeCommandArgs } from "openclaw/plugin-sdk/command-auth-native";
|
|
64
62
|
import { buildCommandTextFromArgs as buildCommandTextFromArgs$1, findCommandByNativeName as findCommandByNativeName$1, parseCommandArgs, resolveCommandArgChoices, resolveCommandArgMenu, serializeCommandArgs as serializeCommandArgs$1 } from "openclaw/plugin-sdk/native-command-registry";
|
|
65
63
|
import { resolveDirectStatusReplyForSession } from "openclaw/plugin-sdk/command-status-runtime";
|
|
@@ -79,7 +77,6 @@ import { captureHttpExchange, captureWsEvent, resolveDebugProxySettings, resolve
|
|
|
79
77
|
import * as dns from "node:dns";
|
|
80
78
|
import { registerChannelRuntimeContext } from "openclaw/plugin-sdk/channel-runtime-context";
|
|
81
79
|
import { logDebug, logError } from "openclaw/plugin-sdk/logging-core";
|
|
82
|
-
import { runInboundReplyTurn } from "openclaw/plugin-sdk/inbound-reply-dispatch";
|
|
83
80
|
import { resolveApprovalOverGateway } from "openclaw/plugin-sdk/approval-gateway-runtime";
|
|
84
81
|
import { resolveRequestUrl } from "openclaw/plugin-sdk/request-url";
|
|
85
82
|
import { Agent as Agent$1, fetch as fetch$1 } from "undici";
|
|
@@ -7764,7 +7761,7 @@ async function loadConversationRuntime$1() {
|
|
|
7764
7761
|
return await conversationRuntimePromise$1;
|
|
7765
7762
|
}
|
|
7766
7763
|
async function loadTypingRuntime() {
|
|
7767
|
-
typingRuntimePromise ??= import("./typing-
|
|
7764
|
+
typingRuntimePromise ??= import("./typing-Cv09OhaY.js").then((n) => n.n);
|
|
7768
7765
|
return await typingRuntimePromise;
|
|
7769
7766
|
}
|
|
7770
7767
|
function buildDiscordComponentConversationLabel(params) {
|
|
@@ -7935,7 +7932,7 @@ async function dispatchDiscordComponentEvent(params) {
|
|
|
7935
7932
|
replyToMode,
|
|
7936
7933
|
startId: params.replyToId
|
|
7937
7934
|
});
|
|
7938
|
-
await
|
|
7935
|
+
await runChannelInboundEvent({
|
|
7939
7936
|
channel: "discord",
|
|
7940
7937
|
accountId,
|
|
7941
7938
|
raw: interaction,
|
|
@@ -8185,7 +8182,7 @@ async function dispatchPluginDiscordInteractiveEvent(params) {
|
|
|
8185
8182
|
//#region extensions/discord/src/monitor/agent-components.handlers.ts
|
|
8186
8183
|
let componentsRuntimePromise;
|
|
8187
8184
|
async function loadComponentsRuntime() {
|
|
8188
|
-
componentsRuntimePromise ??= import("./components-
|
|
8185
|
+
componentsRuntimePromise ??= import("./components-Dlc81IU5.js").then((n) => n.t);
|
|
8189
8186
|
return await componentsRuntimePromise;
|
|
8190
8187
|
}
|
|
8191
8188
|
async function handleDiscordComponentEvent(params) {
|
|
@@ -9417,7 +9414,7 @@ async function runDiscordGatewayLifecycle(params) {
|
|
|
9417
9414
|
gatewayEmitter?.removeListener(DISCORD_GATEWAY_TRANSPORT_ACTIVITY_EVENT, onGatewayTransportActivity);
|
|
9418
9415
|
if (params.voiceManager) {
|
|
9419
9416
|
await params.voiceManager.destroy();
|
|
9420
|
-
const { setDiscordTranscriptsVoiceManager } = await import("./transcripts-source-
|
|
9417
|
+
const { setDiscordTranscriptsVoiceManager } = await import("./transcripts-source-CwahHAYt.js").then((n) => n.n);
|
|
9421
9418
|
setDiscordTranscriptsVoiceManager({
|
|
9422
9419
|
accountId: params.accountId,
|
|
9423
9420
|
manager: null
|
|
@@ -9695,7 +9692,7 @@ function logDiscordStartupPhase(params) {
|
|
|
9695
9692
|
});
|
|
9696
9693
|
}
|
|
9697
9694
|
async function loadDiscordVoiceRuntime() {
|
|
9698
|
-
const promise = discordVoiceRuntimePromise ?? import("./manager.runtime-
|
|
9695
|
+
const promise = discordVoiceRuntimePromise ?? import("./manager.runtime-D6V2SPKr.js");
|
|
9699
9696
|
discordVoiceRuntimePromise = promise;
|
|
9700
9697
|
try {
|
|
9701
9698
|
return await promise;
|
|
@@ -9705,7 +9702,7 @@ async function loadDiscordVoiceRuntime() {
|
|
|
9705
9702
|
}
|
|
9706
9703
|
}
|
|
9707
9704
|
async function loadDiscordProviderSessionRuntime() {
|
|
9708
|
-
const promise = discordProviderSessionRuntimePromise ?? import("./provider-session.runtime-
|
|
9705
|
+
const promise = discordProviderSessionRuntimePromise ?? import("./provider-session.runtime-BD5XLPI8.js");
|
|
9709
9706
|
discordProviderSessionRuntimePromise = promise;
|
|
9710
9707
|
try {
|
|
9711
9708
|
return await promise;
|
|
@@ -9975,7 +9972,7 @@ async function monitorDiscordProvider(opts = {}) {
|
|
|
9975
9972
|
runtime,
|
|
9976
9973
|
botUserId
|
|
9977
9974
|
});
|
|
9978
|
-
const { setDiscordTranscriptsVoiceManager } = await import("./transcripts-source-
|
|
9975
|
+
const { setDiscordTranscriptsVoiceManager } = await import("./transcripts-source-CwahHAYt.js").then((n) => n.n);
|
|
9979
9976
|
setDiscordTranscriptsVoiceManager({
|
|
9980
9977
|
accountId: account.accountId,
|
|
9981
9978
|
manager: voiceManager
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a as reconcileAcpThreadBindingsOnStartup } from "./thread-bindings-
|
|
2
|
-
import { n as createThreadBindingManager, t as createNoopThreadBindingManager } from "./thread-bindings.manager-
|
|
3
|
-
import { t as createDiscordMessageHandler } from "./message-handler-
|
|
1
|
+
import { a as reconcileAcpThreadBindingsOnStartup } from "./thread-bindings-Bw40FTRZ.js";
|
|
2
|
+
import { n as createThreadBindingManager, t as createNoopThreadBindingManager } from "./thread-bindings.manager-LoYZzlss.js";
|
|
3
|
+
import { t as createDiscordMessageHandler } from "./message-handler-B5-UG_oD.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 };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Wt as __exportAll } from "./send.receipt-
|
|
1
|
+
import { Wt as __exportAll } from "./send.receipt-BzfsP3Bb.js";
|
|
2
2
|
import { n as fetchDiscord, t as DiscordApiError } from "./api-Kq7vtaSO.js";
|
|
3
3
|
import { a as normalizeDiscordSlug } from "./allow-list-BnkWtVpA.js";
|
|
4
4
|
import { i as listGuilds, n as filterDiscordGuilds, r as resolveDiscordAllowlistToken, t as buildDiscordUnresolvedResults } from "./resolve-allowlist-common-QzX-w4-_.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Wt as __exportAll } from "./send.receipt-
|
|
1
|
+
import { Wt as __exportAll } from "./send.receipt-BzfsP3Bb.js";
|
|
2
2
|
import { n as fetchDiscord } from "./api-Kq7vtaSO.js";
|
|
3
3
|
import { i as listGuilds, n as filterDiscordGuilds, r as resolveDiscordAllowlistToken, t as buildDiscordUnresolvedResults } from "./resolve-allowlist-common-QzX-w4-_.js";
|
|
4
4
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as readDiscordChannelCreateParams, c as readDiscordParentIdParam, i as requiredGuildPermissionForModerationAction, n as isDiscordModerationAction, o as readDiscordChannelEditParams, r as readDiscordModerationCommand, s as readDiscordChannelMoveParams, t as handleDiscordAction } from "./runtime-
|
|
2
|
-
import { t as discordMessageActions } from "./channel-actions-
|
|
1
|
+
import { a as readDiscordChannelCreateParams, c as readDiscordParentIdParam, i as requiredGuildPermissionForModerationAction, n as isDiscordModerationAction, o as readDiscordChannelEditParams, r as readDiscordModerationCommand, s as readDiscordChannelMoveParams, t as handleDiscordAction } from "./runtime-xSazIM0F.js";
|
|
2
|
+
import { t as discordMessageActions } from "./channel-actions-DZfkB0nd.js";
|
|
3
3
|
export { discordMessageActions, handleDiscordAction, isDiscordModerationAction, readDiscordChannelCreateParams, readDiscordChannelEditParams, readDiscordChannelMoveParams, readDiscordModerationCommand, readDiscordParentIdParam, requiredGuildPermissionForModerationAction };
|
package/dist/runtime-api.js
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import { x as resolveDiscordOutboundSessionRoute } from "./components-
|
|
2
|
-
import { n as registerBuiltDiscordComponentMessage, r as sendDiscordComponentMessage, t as editDiscordComponentMessage } from "./send.components-
|
|
1
|
+
import { x as resolveDiscordOutboundSessionRoute } from "./components-Dlc81IU5.js";
|
|
2
|
+
import { n as registerBuiltDiscordComponentMessage, r as sendDiscordComponentMessage, t as editDiscordComponentMessage } from "./send.components-AK8K4TwB.js";
|
|
3
3
|
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";
|
|
4
|
-
import {
|
|
5
|
-
import { n as listDiscordDirectoryGroupsLive, r as listDiscordDirectoryPeersLive } from "./directory-live-
|
|
4
|
+
import { A as hasAllGuildPermissionsDiscord, M as hasAnyGuildPermissionDiscord, O as fetchChannelPermissionsDiscord, k as fetchMemberGuildPermissionsDiscord, w as DiscordSendError } from "./send.shared-ehnDGwXx.js";
|
|
5
|
+
import { n as listDiscordDirectoryGroupsLive, r as listDiscordDirectoryPeersLive } from "./directory-live-C-ECRrM8.js";
|
|
6
6
|
import { _ as resolveGroupDmAllow, a as normalizeDiscordSlug, c as resolveDiscordChannelConfigWithFallback, d as resolveDiscordGuildEntry, g as resolveDiscordShouldRequireMention, n as isDiscordGroupAllowedByPolicy, r as normalizeDiscordAllowList, s as resolveDiscordChannelConfig, t as allowListMatches, u as resolveDiscordCommandAuthorized, v as shouldEmitDiscordReactionNotification } from "./allow-list-BnkWtVpA.js";
|
|
7
|
-
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 "./send-
|
|
8
|
-
import { n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-
|
|
9
|
-
import { a as readDiscordChannelCreateParams, c as readDiscordParentIdParam, i as requiredGuildPermissionForModerationAction, n as isDiscordModerationAction, o as readDiscordChannelEditParams, r as readDiscordModerationCommand, s as readDiscordChannelMoveParams, t as handleDiscordAction } from "./runtime-
|
|
7
|
+
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 "./send-BzXZ8iUI.js";
|
|
8
|
+
import { n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-ZrMnBa8C.js";
|
|
9
|
+
import { a as readDiscordChannelCreateParams, c as readDiscordParentIdParam, i as requiredGuildPermissionForModerationAction, n as isDiscordModerationAction, o as readDiscordChannelEditParams, r as readDiscordModerationCommand, s as readDiscordChannelMoveParams, t as handleDiscordAction } from "./runtime-xSazIM0F.js";
|
|
10
10
|
import { r as setDiscordRuntime } from "./runtime-DgnVQ7zW.js";
|
|
11
|
-
import { t as discordMessageActions } from "./channel-actions-
|
|
11
|
+
import { t as discordMessageActions } from "./channel-actions-DZfkB0nd.js";
|
|
12
12
|
import { C as resolveThreadBindingMaxAgeMs, S as resolveThreadBindingMaxAgeExpiresAt, b as resolveThreadBindingIdleTimeoutMs, l as isRecentlyUnboundThreadWebhookMessage, x as resolveThreadBindingInactivityExpiresAt } from "./thread-bindings.state-BsOnj5NX.js";
|
|
13
13
|
import { n as setThreadBindingMaxAgeBySessionKey, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-D5gY2ZTE.js";
|
|
14
|
-
import { t as resolveDiscordChannelAllowlist } from "./resolve-channels-
|
|
15
|
-
import { t as resolveDiscordUserAllowlist } from "./resolve-users-
|
|
16
|
-
import { _ as formatThreadBindingDurationLabel, b as resolveThreadBindingThreadName, g as resolveThreadBindingPersonaFromRecord, h as resolveThreadBindingPersona, y as resolveThreadBindingIntroText } from "./thread-bindings.discord-api-
|
|
17
|
-
import { a as reconcileAcpThreadBindingsOnStartup, c as resolveDiscordThreadBindingMaxAgeMs, i as listThreadBindingsForAccount, l as resolveThreadBindingsEnabled, n as autoBindSpawnedDiscordSubagent, o as unbindThreadBindingsBySessionKey, r as listThreadBindingsBySessionKey, s as resolveDiscordThreadBindingIdleTimeoutMs } from "./thread-bindings-
|
|
18
|
-
import { i as testing, n as createThreadBindingManager, r as getThreadBindingManager, t as createNoopThreadBindingManager } from "./thread-bindings.manager-
|
|
14
|
+
import { t as resolveDiscordChannelAllowlist } from "./resolve-channels-pD06YNCU.js";
|
|
15
|
+
import { t as resolveDiscordUserAllowlist } from "./resolve-users-BiWLqNNO.js";
|
|
16
|
+
import { _ as formatThreadBindingDurationLabel, b as resolveThreadBindingThreadName, g as resolveThreadBindingPersonaFromRecord, h as resolveThreadBindingPersona, y as resolveThreadBindingIntroText } from "./thread-bindings.discord-api-irWYI8YX.js";
|
|
17
|
+
import { a as reconcileAcpThreadBindingsOnStartup, c as resolveDiscordThreadBindingMaxAgeMs, i as listThreadBindingsForAccount, l as resolveThreadBindingsEnabled, n as autoBindSpawnedDiscordSubagent, o as unbindThreadBindingsBySessionKey, r as listThreadBindingsBySessionKey, s as resolveDiscordThreadBindingIdleTimeoutMs } from "./thread-bindings-Bw40FTRZ.js";
|
|
18
|
+
import { i as testing, n as createThreadBindingManager, r as getThreadBindingManager, t as createNoopThreadBindingManager } from "./thread-bindings.manager-LoYZzlss.js";
|
|
19
19
|
import { a as resolveDiscordPrivilegedIntentsFromFlags, i as probeDiscord, n as fetchDiscordApplicationSummary, r as parseApplicationIdFromToken, t as fetchDiscordApplicationId } from "./probe-DfIM7zSY.js";
|
|
20
20
|
import { a as mergeAbortSignals, i as DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, n as DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, r as DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, t as DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS } from "./timeouts-l_PsHQvX.js";
|
|
21
21
|
import "./runtime-api.actions.js";
|
|
22
|
-
import { r as collectDiscordAuditChannelIds, t as auditDiscordChannelPermissions } from "./audit-
|
|
22
|
+
import { r as collectDiscordAuditChannelIds, t as auditDiscordChannelPermissions } from "./audit-BdUjE2tr.js";
|
|
23
23
|
import "./runtime-api.lookup.js";
|
|
24
|
-
import { S as sanitizeDiscordThreadName, _ as registerDiscordListener, b as resolveDiscordReplyTarget, c as resolveDiscordGatewayIntents, d as createDiscordNativeCommand, l as waitForDiscordGatewayPluginRegistration, s as createDiscordGatewayPlugin, t as monitorDiscordProvider } from "./provider-
|
|
25
|
-
import { i as buildDiscordMediaPayload } from "./message-utils-
|
|
26
|
-
import { t as createDiscordMessageHandler } from "./message-handler-
|
|
27
|
-
import "./runtime-api.monitor-
|
|
24
|
+
import { S as sanitizeDiscordThreadName, _ as registerDiscordListener, b as resolveDiscordReplyTarget, c as resolveDiscordGatewayIntents, d as createDiscordNativeCommand, l as waitForDiscordGatewayPluginRegistration, s as createDiscordGatewayPlugin, t as monitorDiscordProvider } from "./provider-CO6pih5z.js";
|
|
25
|
+
import { i as buildDiscordMediaPayload } from "./message-utils-4w0_DPFE.js";
|
|
26
|
+
import { t as createDiscordMessageHandler } from "./message-handler-B5-UG_oD.js";
|
|
27
|
+
import "./runtime-api.monitor-BjgSsR6H.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,7 +1,7 @@
|
|
|
1
|
-
import { n as listDiscordDirectoryGroupsLive, r as listDiscordDirectoryPeersLive } from "./directory-live-
|
|
1
|
+
import { n as listDiscordDirectoryGroupsLive, r as listDiscordDirectoryPeersLive } from "./directory-live-C-ECRrM8.js";
|
|
2
2
|
import { r as setDiscordRuntime } from "./runtime-DgnVQ7zW.js";
|
|
3
|
-
import { t as resolveDiscordChannelAllowlist } from "./resolve-channels-
|
|
4
|
-
import { t as resolveDiscordUserAllowlist } from "./resolve-users-
|
|
3
|
+
import { t as resolveDiscordChannelAllowlist } from "./resolve-channels-pD06YNCU.js";
|
|
4
|
+
import { t as resolveDiscordUserAllowlist } from "./resolve-users-BiWLqNNO.js";
|
|
5
5
|
import { a as resolveDiscordPrivilegedIntentsFromFlags, i as probeDiscord, n as fetchDiscordApplicationSummary, r as parseApplicationIdFromToken, t as fetchDiscordApplicationId } from "./probe-DfIM7zSY.js";
|
|
6
|
-
import { r as collectDiscordAuditChannelIds, t as auditDiscordChannelPermissions } from "./audit-
|
|
6
|
+
import { r as collectDiscordAuditChannelIds, t as auditDiscordChannelPermissions } from "./audit-BdUjE2tr.js";
|
|
7
7
|
export { auditDiscordChannelPermissions, collectDiscordAuditChannelIds, fetchDiscordApplicationId, fetchDiscordApplicationSummary, listDiscordDirectoryGroupsLive, listDiscordDirectoryPeersLive, parseApplicationIdFromToken, probeDiscord, resolveDiscordChannelAllowlist, resolveDiscordPrivilegedIntentsFromFlags, resolveDiscordUserAllowlist, setDiscordRuntime };
|
|
@@ -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-BnkWtVpA.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-l_PsHQvX.js";
|
|
4
|
-
import { S as sanitizeDiscordThreadName, _ as registerDiscordListener, b as resolveDiscordReplyTarget, c as resolveDiscordGatewayIntents, d as createDiscordNativeCommand, l as waitForDiscordGatewayPluginRegistration, s as createDiscordGatewayPlugin, t as monitorDiscordProvider } from "./provider-
|
|
5
|
-
import { i as buildDiscordMediaPayload } from "./message-utils-
|
|
6
|
-
import { t as createDiscordMessageHandler } from "./message-handler-
|
|
7
|
-
import "./runtime-api.monitor-
|
|
4
|
+
import { S as sanitizeDiscordThreadName, _ as registerDiscordListener, b as resolveDiscordReplyTarget, c as resolveDiscordGatewayIntents, d as createDiscordNativeCommand, l as waitForDiscordGatewayPluginRegistration, s as createDiscordGatewayPlugin, t as monitorDiscordProvider } from "./provider-CO6pih5z.js";
|
|
5
|
+
import { i as buildDiscordMediaPayload } from "./message-utils-4w0_DPFE.js";
|
|
6
|
+
import { t as createDiscordMessageHandler } from "./message-handler-B5-UG_oD.js";
|
|
7
|
+
import "./runtime-api.monitor-BjgSsR6H.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 };
|
package/dist/runtime-api.send.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { x as resolveDiscordOutboundSessionRoute } from "./components-
|
|
2
|
-
import { n as registerBuiltDiscordComponentMessage, r as sendDiscordComponentMessage, t as editDiscordComponentMessage } from "./send.components-
|
|
3
|
-
import {
|
|
4
|
-
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 "./send-
|
|
5
|
-
import { n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-
|
|
1
|
+
import { x as resolveDiscordOutboundSessionRoute } from "./components-Dlc81IU5.js";
|
|
2
|
+
import { n as registerBuiltDiscordComponentMessage, r as sendDiscordComponentMessage, t as editDiscordComponentMessage } from "./send.components-AK8K4TwB.js";
|
|
3
|
+
import { A as hasAllGuildPermissionsDiscord, M as hasAnyGuildPermissionDiscord, O as fetchChannelPermissionsDiscord, k as fetchMemberGuildPermissionsDiscord, w as DiscordSendError } from "./send.shared-ehnDGwXx.js";
|
|
4
|
+
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 "./send-BzXZ8iUI.js";
|
|
5
|
+
import { n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-ZrMnBa8C.js";
|
|
6
6
|
export { DiscordSendError, addRoleDiscord, banMemberDiscord, createChannelDiscord, createScheduledEventDiscord, createThreadDiscord, deleteChannelDiscord, deleteMessageDiscord, editChannelDiscord, editDiscordComponentMessage, editMessageDiscord, fetchChannelInfoDiscord, fetchChannelPermissionsDiscord, fetchMemberGuildPermissionsDiscord, fetchMemberInfoDiscord, fetchMessageDiscord, fetchReactionsDiscord, fetchRoleInfoDiscord, fetchVoiceStatusDiscord, hasAllGuildPermissionsDiscord, hasAnyGuildPermissionDiscord, kickMemberDiscord, listGuildChannelsDiscord, listGuildEmojisDiscord, listPinsDiscord, listScheduledEventsDiscord, listThreadsDiscord, moveChannelDiscord, pinMessageDiscord, reactMessageDiscord, readMessagesDiscord, registerBuiltDiscordComponentMessage, removeChannelPermissionDiscord, removeOwnReactionsDiscord, removeReactionDiscord, removeRoleDiscord, resolveDiscordOutboundSessionRoute, resolveEventCoverImage, searchMessagesDiscord, sendDiscordComponentMessage, sendMessageDiscord, sendPollDiscord, sendStickerDiscord, sendTypingDiscord, sendVoiceMessageDiscord, sendWebhookMessageDiscord, setChannelPermissionDiscord, timeoutMemberDiscord, unpinMessageDiscord, uploadEmojiDiscord, uploadStickerDiscord };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { C as resolveThreadBindingMaxAgeMs, S as resolveThreadBindingMaxAgeExpiresAt, b as resolveThreadBindingIdleTimeoutMs, l as isRecentlyUnboundThreadWebhookMessage, x as resolveThreadBindingInactivityExpiresAt } from "./thread-bindings.state-BsOnj5NX.js";
|
|
2
2
|
import { n as setThreadBindingMaxAgeBySessionKey, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-D5gY2ZTE.js";
|
|
3
|
-
import { _ as formatThreadBindingDurationLabel, b as resolveThreadBindingThreadName, g as resolveThreadBindingPersonaFromRecord, h as resolveThreadBindingPersona, y as resolveThreadBindingIntroText } from "./thread-bindings.discord-api-
|
|
4
|
-
import { a as reconcileAcpThreadBindingsOnStartup, c as resolveDiscordThreadBindingMaxAgeMs, i as listThreadBindingsForAccount, l as resolveThreadBindingsEnabled, n as autoBindSpawnedDiscordSubagent, o as unbindThreadBindingsBySessionKey, r as listThreadBindingsBySessionKey, s as resolveDiscordThreadBindingIdleTimeoutMs } from "./thread-bindings-
|
|
5
|
-
import { i as testing, n as createThreadBindingManager, r as getThreadBindingManager, t as createNoopThreadBindingManager } from "./thread-bindings.manager-
|
|
3
|
+
import { _ as formatThreadBindingDurationLabel, b as resolveThreadBindingThreadName, g as resolveThreadBindingPersonaFromRecord, h as resolveThreadBindingPersona, y as resolveThreadBindingIntroText } from "./thread-bindings.discord-api-irWYI8YX.js";
|
|
4
|
+
import { a as reconcileAcpThreadBindingsOnStartup, c as resolveDiscordThreadBindingMaxAgeMs, i as listThreadBindingsForAccount, l as resolveThreadBindingsEnabled, n as autoBindSpawnedDiscordSubagent, o as unbindThreadBindingsBySessionKey, r as listThreadBindingsBySessionKey, s as resolveDiscordThreadBindingIdleTimeoutMs } from "./thread-bindings-Bw40FTRZ.js";
|
|
5
|
+
import { i as testing, n as createThreadBindingManager, r as getThreadBindingManager, t as createNoopThreadBindingManager } from "./thread-bindings.manager-LoYZzlss.js";
|
|
6
6
|
export { testing as __testing, testing, autoBindSpawnedDiscordSubagent, createNoopThreadBindingManager, createThreadBindingManager, formatThreadBindingDurationLabel, getThreadBindingManager, isRecentlyUnboundThreadWebhookMessage, listThreadBindingsBySessionKey, listThreadBindingsForAccount, reconcileAcpThreadBindingsOnStartup, resolveDiscordThreadBindingIdleTimeoutMs, resolveDiscordThreadBindingMaxAgeMs, resolveThreadBindingIdleTimeoutMs, resolveThreadBindingInactivityExpiresAt, resolveThreadBindingIntroText, resolveThreadBindingMaxAgeExpiresAt, resolveThreadBindingMaxAgeMs, resolveThreadBindingPersona, resolveThreadBindingPersonaFromRecord, resolveThreadBindingThreadName, resolveThreadBindingsEnabled, setThreadBindingIdleTimeoutBySessionKey, setThreadBindingMaxAgeBySessionKey, unbindThreadBindingsBySessionKey };
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { Ut as resolveDiscordChannelId } from "./send.receipt-
|
|
1
|
+
import { Ut as resolveDiscordChannelId } from "./send.receipt-BzfsP3Bb.js";
|
|
2
2
|
import { a as mergeDiscordAccountConfig, o as resolveDefaultDiscordAccountId, t as createDiscordActionGate } from "./accounts-dXTfmnSZ.js";
|
|
3
|
-
import { d as readDiscordComponentSpec } from "./components-
|
|
4
|
-
import { c as jsonResult, d as readNumberParam, f as readReactionParams, g as withNormalizedTimestamp, h as resolvePollMaxSelections, l as parseAvailableTags, m as readStringParam, p as readStringArrayParam, r as sendDiscordComponentMessage, s as assertMediaNotDataUrl, u as readBooleanParam } from "./send.components-
|
|
3
|
+
import { d as readDiscordComponentSpec } from "./components-Dlc81IU5.js";
|
|
4
|
+
import { c as jsonResult, d as readNumberParam, f as readReactionParams, g as withNormalizedTimestamp, h as resolvePollMaxSelections, l as parseAvailableTags, m as readStringParam, p as readStringArrayParam, r as sendDiscordComponentMessage, s as assertMediaNotDataUrl, u as readBooleanParam } from "./send.components-AK8K4TwB.js";
|
|
5
5
|
import { n as getGateway, o as getPresence } from "./gateway-registry-DPxmW0Db.js";
|
|
6
|
-
import {
|
|
6
|
+
import { E as canManageGuildRoleDiscord, L as createDiscordRuntimeAccountContext, M as hasAnyGuildPermissionDiscord, N as isThreadChannelType$1, O as fetchChannelPermissionsDiscord, T as canManageGuildMemberRoleDiscord, d as resolveDiscordTargetChannelId, j as hasAnyChannelPermissionDiscord } from "./send.shared-ehnDGwXx.js";
|
|
7
7
|
import { a as normalizeDiscordSlug, c as resolveDiscordChannelConfigWithFallback, n as isDiscordGroupAllowedByPolicy } from "./allow-list-BnkWtVpA.js";
|
|
8
|
-
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, d as deleteMessageDiscord, f as editMessageDiscord, g as pinMessageDiscord, h as listThreadsDiscord, i as removeOwnReactionsDiscord, j as removeRoleDiscord, k as listGuildChannelsDiscord, l as DiscordThreadInitialMessageError, m as listPinsDiscord, n as fetchReactionsDiscord, p as fetchMessageDiscord, r as reactMessageDiscord, s as sendVoiceMessageDiscord, u as createThreadDiscord, v as searchMessagesDiscord, w as fetchGuildInfoDiscord, x as banMemberDiscord, y as unpinMessageDiscord, z as editChannelDiscord } from "./send-
|
|
9
|
-
import { n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-
|
|
10
|
-
import "./targets-
|
|
8
|
+
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, d as deleteMessageDiscord, f as editMessageDiscord, g as pinMessageDiscord, h as listThreadsDiscord, i as removeOwnReactionsDiscord, j as removeRoleDiscord, k as listGuildChannelsDiscord, l as DiscordThreadInitialMessageError, m as listPinsDiscord, n as fetchReactionsDiscord, p as fetchMessageDiscord, r as reactMessageDiscord, s as sendVoiceMessageDiscord, u as createThreadDiscord, v as searchMessagesDiscord, w as fetchGuildInfoDiscord, x as banMemberDiscord, y as unpinMessageDiscord, z as editChannelDiscord } from "./send-BzXZ8iUI.js";
|
|
9
|
+
import { n as sendPollDiscord, r as sendStickerDiscord, t as sendMessageDiscord } from "./send.outbound-ZrMnBa8C.js";
|
|
10
|
+
import "./targets-BBVHRaeO.js";
|
|
11
11
|
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
12
|
-
import { PermissionFlagsBits } from "discord-api-types/v10";
|
|
12
|
+
import { ChannelType, PermissionFlagsBits } from "discord-api-types/v10";
|
|
13
13
|
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
|
14
14
|
import { resolveOpenProviderRuntimeGroupPolicy } from "openclaw/plugin-sdk/runtime-group-policy";
|
|
15
15
|
//#region extensions/discord/src/actions/runtime.shared.ts
|
|
@@ -69,6 +69,8 @@ function readDiscordChannelMoveParams(params) {
|
|
|
69
69
|
//#region extensions/discord/src/actions/runtime.guild.ts
|
|
70
70
|
const discordGuildActionRuntime = {
|
|
71
71
|
addRoleDiscord,
|
|
72
|
+
canManageGuildRoleDiscord,
|
|
73
|
+
canManageGuildMemberRoleDiscord,
|
|
72
74
|
createChannelDiscord,
|
|
73
75
|
createScheduledEventDiscord,
|
|
74
76
|
resolveEventCoverImage,
|
|
@@ -76,6 +78,8 @@ const discordGuildActionRuntime = {
|
|
|
76
78
|
editChannelDiscord,
|
|
77
79
|
fetchChannelInfoDiscord,
|
|
78
80
|
fetchMemberInfoDiscord,
|
|
81
|
+
hasAnyChannelPermissionDiscord,
|
|
82
|
+
hasAnyGuildPermissionDiscord,
|
|
79
83
|
fetchRoleInfoDiscord,
|
|
80
84
|
fetchVoiceStatusDiscord,
|
|
81
85
|
listGuildChannelsDiscord,
|
|
@@ -88,6 +92,130 @@ const discordGuildActionRuntime = {
|
|
|
88
92
|
uploadEmojiDiscord,
|
|
89
93
|
uploadStickerDiscord
|
|
90
94
|
};
|
|
95
|
+
const expressionPermissions = [
|
|
96
|
+
PermissionFlagsBits.ManageGuildExpressions,
|
|
97
|
+
PermissionFlagsBits.CreateGuildExpressions,
|
|
98
|
+
PermissionFlagsBits.ManageEmojisAndStickers
|
|
99
|
+
];
|
|
100
|
+
const channelGuard = {
|
|
101
|
+
gate: "channels",
|
|
102
|
+
disabledMessage: "Discord channel management is disabled.",
|
|
103
|
+
permissions: [PermissionFlagsBits.ManageChannels]
|
|
104
|
+
};
|
|
105
|
+
const existingChannelGuard = {
|
|
106
|
+
...channelGuard,
|
|
107
|
+
permissionScope: "channel"
|
|
108
|
+
};
|
|
109
|
+
const channelPermissionGuard = {
|
|
110
|
+
...channelGuard,
|
|
111
|
+
permissions: [PermissionFlagsBits.ManageRoles],
|
|
112
|
+
permissionScope: "channel"
|
|
113
|
+
};
|
|
114
|
+
const guildAdminActionGuards = {
|
|
115
|
+
emojiUpload: {
|
|
116
|
+
gate: "emojiUploads",
|
|
117
|
+
disabledMessage: "Discord emoji uploads are disabled.",
|
|
118
|
+
permissions: expressionPermissions
|
|
119
|
+
},
|
|
120
|
+
stickerUpload: {
|
|
121
|
+
gate: "stickerUploads",
|
|
122
|
+
disabledMessage: "Discord sticker uploads are disabled.",
|
|
123
|
+
permissions: expressionPermissions
|
|
124
|
+
},
|
|
125
|
+
roleAdd: {
|
|
126
|
+
gate: "roles",
|
|
127
|
+
defaultEnabled: false,
|
|
128
|
+
disabledMessage: "Discord role changes are disabled.",
|
|
129
|
+
permissions: [PermissionFlagsBits.ManageRoles]
|
|
130
|
+
},
|
|
131
|
+
roleRemove: {
|
|
132
|
+
gate: "roles",
|
|
133
|
+
defaultEnabled: false,
|
|
134
|
+
disabledMessage: "Discord role changes are disabled.",
|
|
135
|
+
permissions: [PermissionFlagsBits.ManageRoles]
|
|
136
|
+
},
|
|
137
|
+
eventCreate: {
|
|
138
|
+
gate: "events",
|
|
139
|
+
disabledMessage: "Discord events are disabled.",
|
|
140
|
+
permissions: [PermissionFlagsBits.ManageEvents, PermissionFlagsBits.CreateEvents]
|
|
141
|
+
},
|
|
142
|
+
channelCreate: channelGuard,
|
|
143
|
+
channelEdit: existingChannelGuard,
|
|
144
|
+
channelDelete: existingChannelGuard,
|
|
145
|
+
channelMove: existingChannelGuard,
|
|
146
|
+
categoryCreate: channelGuard,
|
|
147
|
+
categoryEdit: existingChannelGuard,
|
|
148
|
+
categoryDelete: existingChannelGuard,
|
|
149
|
+
channelPermissionSet: channelPermissionGuard,
|
|
150
|
+
channelPermissionRemove: channelPermissionGuard
|
|
151
|
+
};
|
|
152
|
+
function isThreadChannelType(channelType) {
|
|
153
|
+
return channelType === ChannelType.GuildNewsThread || channelType === ChannelType.GuildPublicThread || channelType === ChannelType.GuildPrivateThread;
|
|
154
|
+
}
|
|
155
|
+
function isLockedThreadChannel(channel) {
|
|
156
|
+
if (!channel || typeof channel !== "object") return false;
|
|
157
|
+
return channel.thread_metadata?.locked === true;
|
|
158
|
+
}
|
|
159
|
+
function assertGuildAdminActionEnabled(action, isActionEnabled) {
|
|
160
|
+
const guard = guildAdminActionGuards[action];
|
|
161
|
+
if (guard && !isActionEnabled(guard.gate, guard.defaultEnabled)) throw new Error(guard.disabledMessage);
|
|
162
|
+
}
|
|
163
|
+
async function resolveGuildIdForGuildAdminAction(params) {
|
|
164
|
+
const guildId = readStringParam(params.values, "guildId");
|
|
165
|
+
if (guildId) return guildId;
|
|
166
|
+
const channelLikeId = readStringParam(params.values, "channelId") ?? readStringParam(params.values, "categoryId");
|
|
167
|
+
if (!channelLikeId) return;
|
|
168
|
+
const channel = await discordGuildActionRuntime.fetchChannelInfoDiscord(channelLikeId, createDiscordActionOptions({
|
|
169
|
+
cfg: params.cfg,
|
|
170
|
+
accountId: params.accountId
|
|
171
|
+
}));
|
|
172
|
+
return "guild_id" in channel ? channel.guild_id ?? void 0 : void 0;
|
|
173
|
+
}
|
|
174
|
+
function readChannelScopedPermissionTargetId(action, values) {
|
|
175
|
+
if (action === "eventCreate") return readStringParam(values, "channelId");
|
|
176
|
+
if (action === "categoryEdit" || action === "categoryDelete") return readStringParam(values, "categoryId");
|
|
177
|
+
return readStringParam(values, "channelId");
|
|
178
|
+
}
|
|
179
|
+
async function resolveGuildAdminActionPermissions(params) {
|
|
180
|
+
if (params.action !== "channelEdit") return params.guard.permissions;
|
|
181
|
+
const channelId = readStringParam(params.values, "channelId");
|
|
182
|
+
if (!channelId) return params.guard.permissions;
|
|
183
|
+
const channel = await discordGuildActionRuntime.fetchChannelInfoDiscord(channelId, createDiscordActionOptions({
|
|
184
|
+
cfg: params.cfg,
|
|
185
|
+
accountId: params.accountId
|
|
186
|
+
}));
|
|
187
|
+
if (!isThreadChannelType("type" in channel ? channel.type : void 0)) return params.guard.permissions;
|
|
188
|
+
return params.values.archived === false && !("name" in params.values) && !("topic" in params.values) && !("position" in params.values) && !("parentId" in params.values) && !("clearParent" in params.values) && !("nsfw" in params.values) && !("rateLimitPerUser" in params.values) && !("locked" in params.values) && !("autoArchiveDuration" in params.values) && !isLockedThreadChannel(channel) ? [PermissionFlagsBits.ManageThreads, PermissionFlagsBits.SendMessagesInThreads] : [PermissionFlagsBits.ManageThreads];
|
|
189
|
+
}
|
|
190
|
+
async function verifySenderGuildAdminPermission(params) {
|
|
191
|
+
const guard = guildAdminActionGuards[params.action];
|
|
192
|
+
const senderUserId = readStringParam(params.values, "senderUserId");
|
|
193
|
+
if (!guard?.permissions.length || !senderUserId) return;
|
|
194
|
+
const requiredPermissions = await resolveGuildAdminActionPermissions({
|
|
195
|
+
...params,
|
|
196
|
+
guard
|
|
197
|
+
});
|
|
198
|
+
const guildId = await resolveGuildIdForGuildAdminAction(params);
|
|
199
|
+
if (!guildId) throw new Error(`Guild id required to authorize Discord guild action: ${params.action}`);
|
|
200
|
+
const actionOptions = createDiscordActionOptions({
|
|
201
|
+
cfg: params.cfg,
|
|
202
|
+
accountId: params.accountId
|
|
203
|
+
});
|
|
204
|
+
const targetChannelId = guard?.permissionScope === "channel" || params.action === "eventCreate" ? readChannelScopedPermissionTargetId(params.action, params.values) : void 0;
|
|
205
|
+
if (!(targetChannelId ? await discordGuildActionRuntime.hasAnyChannelPermissionDiscord(guildId, targetChannelId, senderUserId, requiredPermissions, actionOptions) : await discordGuildActionRuntime.hasAnyGuildPermissionDiscord(guildId, senderUserId, requiredPermissions, actionOptions))) throw new Error("Sender does not have required permissions for this guild action.");
|
|
206
|
+
if (params.action === "roleAdd" || params.action === "roleRemove") {
|
|
207
|
+
const targetUserId = readStringParam(params.values, "userId", { required: true });
|
|
208
|
+
const roleId = readStringParam(params.values, "roleId", { required: true });
|
|
209
|
+
if (!await discordGuildActionRuntime.canManageGuildMemberRoleDiscord(guildId, senderUserId, targetUserId, roleId, actionOptions, { assignablePermissionCeiling: params.action === "roleAdd" })) throw new Error("Sender cannot manage the requested role or member.");
|
|
210
|
+
}
|
|
211
|
+
if (params.action === "channelPermissionSet" || params.action === "channelPermissionRemove") {
|
|
212
|
+
const targetType = readStringParam(params.values, "targetType");
|
|
213
|
+
if (targetType === "member") return;
|
|
214
|
+
const targetId = readStringParam(params.values, "targetId", { required: true });
|
|
215
|
+
const canManageRole = await discordGuildActionRuntime.canManageGuildRoleDiscord(guildId, senderUserId, targetId, actionOptions);
|
|
216
|
+
if (canManageRole === false || targetType === "role" && canManageRole === null) throw new Error("Sender cannot manage the requested role overwrite.");
|
|
217
|
+
}
|
|
218
|
+
}
|
|
91
219
|
async function runRoleMutation(params) {
|
|
92
220
|
const guildId = readStringParam(params.values, "guildId", { required: true });
|
|
93
221
|
const userId = readStringParam(params.values, "userId", { required: true });
|
|
@@ -110,6 +238,13 @@ function readChannelPermissionTarget(params) {
|
|
|
110
238
|
async function handleDiscordGuildAction(action, params, isActionEnabled, cfg, options) {
|
|
111
239
|
const accountId = readStringParam(params, "accountId");
|
|
112
240
|
if (!cfg) throw new Error("Discord guild actions require a resolved runtime config.");
|
|
241
|
+
assertGuildAdminActionEnabled(action, isActionEnabled);
|
|
242
|
+
await verifySenderGuildAdminPermission({
|
|
243
|
+
action,
|
|
244
|
+
values: params,
|
|
245
|
+
accountId,
|
|
246
|
+
cfg
|
|
247
|
+
});
|
|
113
248
|
const withOpts = (extra) => createDiscordActionOptions({
|
|
114
249
|
cfg,
|
|
115
250
|
accountId,
|
|
@@ -605,7 +740,7 @@ async function appendDiscordThreadRenameResult(ctx, params) {
|
|
|
605
740
|
};
|
|
606
741
|
}
|
|
607
742
|
try {
|
|
608
|
-
if (!isThreadChannelType((await discordMessagingActionRuntime.fetchChannelInfoDiscord(channelId, ctx.withOpts())).type)) return {
|
|
743
|
+
if (!isThreadChannelType$1((await discordMessagingActionRuntime.fetchChannelInfoDiscord(channelId, ctx.withOpts())).type)) return {
|
|
609
744
|
...params.payload,
|
|
610
745
|
warning: "Discord threadName was ignored because the send target is not a thread."
|
|
611
746
|
};
|