Files
openclaw/extensions/discord/runtime-api.ts
Peter Steinberger bbcfec9e96 fix(channels): prevent outbound echoes and expose native login (#111341)
* fix(channels): centralize outbound echo suppression

* chore(plugin-sdk): refresh channel outbound surface

* test(commands): avoid native plugin fallback loading

* refactor(channels): separate outbound echo state

* docs(changelog): note channel action decisions

* fix(discord): align webhook preflight call

* fix(discord): use type-only thread binding import

* fix(channels): stream login blocks and widen turn results

* test(channels): narrow drop-capable turn results

* fix(channels): address echo and reply edge cases
2026-07-19 03:49:11 -07:00

185 lines
5.3 KiB
TypeScript

// Discord API module exposes the plugin public contract.
export {
discordMessageActions,
handleDiscordAction,
isDiscordModerationAction,
readDiscordChannelCreateParams,
readDiscordChannelEditParams,
readDiscordChannelMoveParams,
readDiscordModerationCommand,
readDiscordParentIdParam,
requiredGuildPermissionForModerationAction,
type DiscordModerationAction,
type DiscordModerationCommand,
} from "./runtime-api.actions.js";
export {
auditDiscordChannelPermissions,
collectDiscordAuditChannelIds,
fetchDiscordApplicationId,
fetchDiscordApplicationSummary,
listDiscordDirectoryGroupsLive,
listDiscordDirectoryPeersLive,
parseApplicationIdFromToken,
probeDiscord,
resolveDiscordChannelAllowlist,
resolveDiscordPrivilegedIntentsFromFlags,
resolveDiscordUserAllowlist,
setDiscordRuntime,
type DiscordApplicationSummary,
type DiscordChannelResolution,
type DiscordPrivilegedIntentsSummary,
type DiscordPrivilegedIntentStatus,
type DiscordProbe,
type DiscordUserResolution,
} from "./runtime-api.lookup.js";
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,
isAbortError,
isDiscordGroupAllowedByPolicy,
monitorDiscordProvider,
normalizeDiscordAllowList,
normalizeDiscordInboundWorkerTimeoutMs,
normalizeDiscordListenerTimeoutMs,
normalizeDiscordSlug,
presenceCacheSize,
registerDiscordListener,
registerGateway,
resolveDiscordChannelConfig,
resolveDiscordChannelConfigWithFallback,
resolveDiscordCommandAuthorized,
resolveDiscordGatewayIntents,
resolveDiscordGuildEntry,
resolveDiscordReplyTarget,
resolveDiscordShouldRequireMention,
resolveGroupDmAllow,
runDiscordTaskWithTimeout,
sanitizeDiscordThreadName,
setPresence,
shouldEmitDiscordReactionNotification,
unregisterGateway,
waitForDiscordGatewayPluginRegistration,
type DiscordAllowList,
type DiscordChannelConfigResolved,
type DiscordGuildEntryResolved,
type DiscordMessageEvent,
type DiscordMessageHandler,
type MonitorDiscordOpts,
} from "./runtime-api.monitor.js";
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,
type DiscordChannelCreate,
type DiscordChannelEdit,
type DiscordChannelMove,
type DiscordChannelPermissionSet,
type DiscordEmojiUpload,
type DiscordMessageEdit,
type DiscordMessageQuery,
type DiscordModerationTarget,
type DiscordPermissionsSummary,
type DiscordReactionRuntimeContext,
type DiscordReactionSummary,
type DiscordReactionUser,
type DiscordReactOpts,
type DiscordRoleChange,
type DiscordRuntimeAccountContext,
type DiscordSearchQuery,
type DiscordSendResult,
type DiscordStickerUpload,
type DiscordThreadCreate,
type DiscordThreadList,
type DiscordTimeoutTarget,
type ResolveDiscordOutboundSessionRouteParams,
} from "./runtime-api.send.js";
export {
testing as __testing,
testing,
autoBindSpawnedDiscordSubagent,
createNoopThreadBindingManager,
createThreadBindingManager,
formatThreadBindingDurationLabel,
getThreadBindingManager,
listThreadBindingsBySessionKey,
listThreadBindingsForAccount,
reconcileAcpThreadBindingsOnStartup,
resolveDiscordThreadBindingIdleTimeoutMs,
resolveDiscordThreadBindingMaxAgeMs,
resolveThreadBindingIdleTimeoutMs,
resolveThreadBindingInactivityExpiresAt,
resolveThreadBindingIntroText,
resolveThreadBindingMaxAgeExpiresAt,
resolveThreadBindingMaxAgeMs,
resolveThreadBindingPersona,
resolveThreadBindingPersonaFromRecord,
resolveThreadBindingsEnabled,
resolveThreadBindingThreadName,
setThreadBindingIdleTimeoutBySessionKey,
setThreadBindingMaxAgeBySessionKey,
unbindThreadBindingsBySessionKey,
type AcpThreadBindingReconciliationResult,
type ThreadBindingManager,
type ThreadBindingRecord,
type ThreadBindingTargetKind,
} from "./runtime-api.threads.js";