diff --git a/src/plugin-sdk/discord.ts b/src/plugin-sdk/discord.ts index 4a968f2fbbc..f5dfbde8cce 100644 --- a/src/plugin-sdk/discord.ts +++ b/src/plugin-sdk/discord.ts @@ -1,3 +1,103 @@ +import type { + DiscordPluralKitConfig, + DiscordSendComponents, + DiscordSendEmbeds, + InspectedDiscordAccount, + ResolvedDiscordAccount, +} from "../../extensions/discord/api.js"; +import { + createDiscordActionGate, + inspectDiscordAccount, + listDiscordAccountIds, + looksLikeDiscordTargetId, + normalizeDiscordMessagingTarget, + normalizeDiscordOutboundTarget, + readDiscordComponentSpec, + resolveDefaultDiscordAccountId, + resolveDiscordChannelId, + resolveDiscordGroupRequireMention, + resolveDiscordGroupToolPolicy, + collectDiscordStatusIssues, +} from "../../extensions/discord/api.js"; +import type { + ThreadBindingManager, + ThreadBindingRecord, + ThreadBindingTargetKind, +} from "../../extensions/discord/runtime-api.js"; +import { + addRoleDiscord, + auditDiscordChannelPermissions, + autoBindSpawnedDiscordSubagent, + banMemberDiscord, + collectDiscordAuditChannelIds, + createChannelDiscord, + createScheduledEventDiscord, + createThreadDiscord, + deleteChannelDiscord, + deleteMessageDiscord, + DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, + DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, + discordMessageActions, + editChannelDiscord, + editMessageDiscord, + fetchChannelInfoDiscord, + fetchChannelPermissionsDiscord, + fetchMemberInfoDiscord, + fetchMessageDiscord, + fetchReactionsDiscord, + fetchRoleInfoDiscord, + fetchVoiceStatusDiscord, + getGateway, + getPresence, + getThreadBindingManager, + hasAnyGuildPermissionDiscord, + kickMemberDiscord, + listDiscordDirectoryGroupsLive, + listDiscordDirectoryPeersLive, + listGuildChannelsDiscord, + listGuildEmojisDiscord, + listPinsDiscord, + listScheduledEventsDiscord, + listThreadBindingsBySessionKey, + listThreadsDiscord, + monitorDiscordProvider, + moveChannelDiscord, + pinMessageDiscord, + probeDiscord, + reactMessageDiscord, + readMessagesDiscord, + removeChannelPermissionDiscord, + removeOwnReactionsDiscord, + removeReactionDiscord, + removeRoleDiscord, + resolveDiscordChannelAllowlist, + resolveDiscordUserAllowlist, + resolveThreadBindingIdleTimeoutMs, + resolveThreadBindingInactivityExpiresAt, + resolveThreadBindingMaxAgeExpiresAt, + resolveThreadBindingMaxAgeMs, + searchMessagesDiscord, + sendDiscordComponentMessage, + sendMessageDiscord, + sendPollDiscord, + sendStickerDiscord, + sendTypingDiscord, + sendVoiceMessageDiscord, + setChannelPermissionDiscord, + setThreadBindingIdleTimeoutBySessionKey, + setThreadBindingMaxAgeBySessionKey, + timeoutMemberDiscord, + unbindThreadBindingsBySessionKey, + unpinMessageDiscord, + uploadEmojiDiscord, + uploadStickerDiscord, +} from "../../extensions/discord/runtime-api.js"; +import { normalizeExplicitDiscordSessionKey } from "../../extensions/discord/session-key-api.js"; +import { + listDiscordDirectoryGroupsFromConfig, + listDiscordDirectoryPeersFromConfig, +} from "../../extensions/discord/src/directory-config.js"; + export type { ChannelAccountSnapshot, ChannelGatewayContext, @@ -6,15 +106,16 @@ export type { export type { OpenClawConfig } from "../config/config.js"; export type { DiscordAccountConfig, DiscordActionConfig } from "../config/types.js"; export type { DiscordConfig } from "../config/types.discord.js"; -export type { DiscordPluralKitConfig } from "../../extensions/discord/api.js"; -export type { InspectedDiscordAccount } from "../../extensions/discord/api.js"; -export type { ResolvedDiscordAccount } from "../../extensions/discord/api.js"; -export type { DiscordSendComponents, DiscordSendEmbeds } from "../../extensions/discord/api.js"; export type { + DiscordPluralKitConfig, + DiscordSendComponents, + DiscordSendEmbeds, + InspectedDiscordAccount, + ResolvedDiscordAccount, ThreadBindingManager, ThreadBindingRecord, ThreadBindingTargetKind, -} from "../../extensions/discord/runtime-api.js"; +}; export type { ChannelConfiguredBindingProvider, ChannelConfiguredBindingConversationRef, @@ -49,14 +150,8 @@ export { resolveDefaultGroupPolicy, resolveOpenProviderRuntimeGroupPolicy, } from "../config/runtime-group-policy.js"; -export { - listDiscordDirectoryGroupsFromConfig, - listDiscordDirectoryPeersFromConfig, -} from "../../extensions/discord/src/directory-config.js"; -export { - resolveDiscordGroupRequireMention, - resolveDiscordGroupToolPolicy, -} from "../../extensions/discord/api.js"; +export { listDiscordDirectoryGroupsFromConfig, listDiscordDirectoryPeersFromConfig }; +export { resolveDiscordGroupRequireMention, resolveDiscordGroupToolPolicy }; export { DiscordConfigSchema } from "../config/zod-schema.providers-core.js"; export { @@ -64,49 +159,22 @@ export { buildTokenChannelStatusSummary, } from "./status-helpers.js"; -export { - createDiscordActionGate, - listDiscordAccountIds, - resolveDefaultDiscordAccountId, -} from "../../extensions/discord/api.js"; -export { inspectDiscordAccount } from "../../extensions/discord/api.js"; -export { - looksLikeDiscordTargetId, - normalizeDiscordMessagingTarget, - normalizeDiscordOutboundTarget, -} from "../../extensions/discord/api.js"; -export { collectDiscordAuditChannelIds } from "../../extensions/discord/runtime-api.js"; -export { collectDiscordStatusIssues } from "../../extensions/discord/api.js"; -export { - DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, - DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, -} from "../../extensions/discord/runtime-api.js"; -export { normalizeExplicitDiscordSessionKey } from "../../extensions/discord/session-key-api.js"; -export { - autoBindSpawnedDiscordSubagent, - getThreadBindingManager, - listThreadBindingsBySessionKey, - resolveThreadBindingIdleTimeoutMs, - resolveThreadBindingInactivityExpiresAt, - resolveThreadBindingMaxAgeExpiresAt, - resolveThreadBindingMaxAgeMs, - setThreadBindingIdleTimeoutBySessionKey, - setThreadBindingMaxAgeBySessionKey, - unbindThreadBindingsBySessionKey, -} from "../../extensions/discord/runtime-api.js"; -export { getGateway } from "../../extensions/discord/runtime-api.js"; -export { getPresence } from "../../extensions/discord/runtime-api.js"; -export { readDiscordComponentSpec } from "../../extensions/discord/api.js"; -export { resolveDiscordChannelId } from "../../extensions/discord/api.js"; export { addRoleDiscord, auditDiscordChannelPermissions, + autoBindSpawnedDiscordSubagent, banMemberDiscord, + collectDiscordAuditChannelIds, + collectDiscordStatusIssues, createChannelDiscord, + createDiscordActionGate, createScheduledEventDiscord, createThreadDiscord, deleteChannelDiscord, deleteMessageDiscord, + DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS, + DISCORD_DEFAULT_LISTENER_TIMEOUT_MS, + discordMessageActions, editChannelDiscord, editMessageDiscord, fetchChannelInfoDiscord, @@ -116,38 +184,57 @@ export { fetchReactionsDiscord, fetchRoleInfoDiscord, fetchVoiceStatusDiscord, + getGateway, + getPresence, + getThreadBindingManager, hasAnyGuildPermissionDiscord, + inspectDiscordAccount, kickMemberDiscord, + listDiscordAccountIds, listDiscordDirectoryGroupsLive, listDiscordDirectoryPeersLive, listGuildChannelsDiscord, listGuildEmojisDiscord, listPinsDiscord, listScheduledEventsDiscord, + listThreadBindingsBySessionKey, listThreadsDiscord, + looksLikeDiscordTargetId, monitorDiscordProvider, moveChannelDiscord, + normalizeDiscordMessagingTarget, + normalizeDiscordOutboundTarget, + normalizeExplicitDiscordSessionKey, pinMessageDiscord, probeDiscord, reactMessageDiscord, + readDiscordComponentSpec, readMessagesDiscord, removeChannelPermissionDiscord, removeOwnReactionsDiscord, removeReactionDiscord, removeRoleDiscord, + resolveDefaultDiscordAccountId, resolveDiscordChannelAllowlist, + resolveDiscordChannelId, resolveDiscordUserAllowlist, + resolveThreadBindingIdleTimeoutMs, + resolveThreadBindingInactivityExpiresAt, + resolveThreadBindingMaxAgeExpiresAt, + resolveThreadBindingMaxAgeMs, searchMessagesDiscord, sendDiscordComponentMessage, sendMessageDiscord, sendPollDiscord, - sendTypingDiscord, sendStickerDiscord, + sendTypingDiscord, sendVoiceMessageDiscord, setChannelPermissionDiscord, + setThreadBindingIdleTimeoutBySessionKey, + setThreadBindingMaxAgeBySessionKey, timeoutMemberDiscord, + unbindThreadBindingsBySessionKey, unpinMessageDiscord, uploadEmojiDiscord, uploadStickerDiscord, -} from "../../extensions/discord/runtime-api.js"; -export { discordMessageActions } from "../../extensions/discord/runtime-api.js"; +}; diff --git a/src/plugin-sdk/provider-models.ts b/src/plugin-sdk/provider-models.ts index 8f6f2565138..25b954acae2 100644 --- a/src/plugin-sdk/provider-models.ts +++ b/src/plugin-sdk/provider-models.ts @@ -1,5 +1,65 @@ // Public model/catalog helpers for provider plugins. +import { + KIMI_CODING_BASE_URL, + KIMI_CODING_DEFAULT_MODEL_ID, +} from "../../extensions/kimi-coding/provider-catalog.js"; +import { + buildMinimaxApiModelDefinition, + buildMinimaxModelDefinition, + DEFAULT_MINIMAX_BASE_URL, + MINIMAX_API_BASE_URL, + MINIMAX_API_COST, + MINIMAX_CN_API_BASE_URL, + MINIMAX_HOSTED_COST, + MINIMAX_HOSTED_MODEL_ID, + MINIMAX_HOSTED_MODEL_REF, + MINIMAX_LM_STUDIO_COST, +} from "../../extensions/minimax/model-definitions.js"; +import { + buildMistralModelDefinition, + MISTRAL_BASE_URL, + MISTRAL_DEFAULT_COST, + MISTRAL_DEFAULT_MODEL_ID, + MISTRAL_DEFAULT_MODEL_REF, +} from "../../extensions/mistral/model-definitions.js"; +import { + buildModelStudioDefaultModelDefinition, + buildModelStudioModelDefinition, + MODELSTUDIO_CN_BASE_URL, + MODELSTUDIO_DEFAULT_COST, + MODELSTUDIO_DEFAULT_MODEL_ID, + MODELSTUDIO_DEFAULT_MODEL_REF, + MODELSTUDIO_GLOBAL_BASE_URL, +} from "../../extensions/modelstudio/model-definitions.js"; +import { MOONSHOT_CN_BASE_URL } from "../../extensions/moonshot/onboard.js"; +import { + buildMoonshotProvider, + MOONSHOT_BASE_URL, + MOONSHOT_DEFAULT_MODEL_ID, +} from "../../extensions/moonshot/provider-catalog.js"; +import { + QIANFAN_BASE_URL, + QIANFAN_DEFAULT_MODEL_ID, +} from "../../extensions/qianfan/provider-catalog.js"; +import { + buildXaiModelDefinition, + XAI_BASE_URL, + XAI_DEFAULT_COST, + XAI_DEFAULT_MODEL_ID, + XAI_DEFAULT_MODEL_REF, +} from "../../extensions/xai/model-definitions.js"; +import { + buildZaiModelDefinition, + resolveZaiBaseUrl, + ZAI_CODING_CN_BASE_URL, + ZAI_CODING_GLOBAL_BASE_URL, + ZAI_CN_BASE_URL, + ZAI_DEFAULT_COST, + ZAI_DEFAULT_MODEL_ID, + ZAI_DEFAULT_MODEL_REF, + ZAI_GLOBAL_BASE_URL, +} from "../../extensions/zai/model-definitions.js"; import type { ModelDefinitionConfig } from "../config/types.models.js"; import { KILOCODE_DEFAULT_CONTEXT_WINDOW, @@ -37,7 +97,15 @@ export { OPENCODE_ZEN_DEFAULT_MODEL_REF } from "../agents/opencode-zen-models.js export { buildMinimaxApiModelDefinition, buildMinimaxModelDefinition, + buildMistralModelDefinition, + buildModelStudioDefaultModelDefinition, + buildModelStudioModelDefinition, + buildMoonshotProvider, + buildXaiModelDefinition, + buildZaiModelDefinition, DEFAULT_MINIMAX_BASE_URL, + KIMI_CODING_BASE_URL, + KIMI_CODING_DEFAULT_MODEL_ID, MINIMAX_API_BASE_URL, MINIMAX_API_COST, MINIMAX_CN_API_BASE_URL, @@ -45,47 +113,25 @@ export { MINIMAX_HOSTED_MODEL_ID, MINIMAX_HOSTED_MODEL_REF, MINIMAX_LM_STUDIO_COST, -} from "../../extensions/minimax/model-definitions.js"; -export { - buildMistralModelDefinition, MISTRAL_BASE_URL, MISTRAL_DEFAULT_COST, MISTRAL_DEFAULT_MODEL_ID, MISTRAL_DEFAULT_MODEL_REF, -} from "../../extensions/mistral/model-definitions.js"; -export { - buildModelStudioDefaultModelDefinition, - buildModelStudioModelDefinition, MODELSTUDIO_CN_BASE_URL, MODELSTUDIO_DEFAULT_COST, MODELSTUDIO_DEFAULT_MODEL_ID, MODELSTUDIO_DEFAULT_MODEL_REF, MODELSTUDIO_GLOBAL_BASE_URL, -} from "../../extensions/modelstudio/model-definitions.js"; -export { - buildMoonshotProvider, MOONSHOT_BASE_URL, + MOONSHOT_CN_BASE_URL, MOONSHOT_DEFAULT_MODEL_ID, -} from "../../extensions/moonshot/provider-catalog.js"; -export { MOONSHOT_CN_BASE_URL } from "../../extensions/moonshot/onboard.js"; -export { - KIMI_CODING_BASE_URL, - KIMI_CODING_DEFAULT_MODEL_ID, -} from "../../extensions/kimi-coding/provider-catalog.js"; -export { QIANFAN_BASE_URL, QIANFAN_DEFAULT_MODEL_ID, -} from "../../extensions/qianfan/provider-catalog.js"; -export { - buildXaiModelDefinition, + resolveZaiBaseUrl, XAI_BASE_URL, XAI_DEFAULT_COST, XAI_DEFAULT_MODEL_ID, XAI_DEFAULT_MODEL_REF, -} from "../../extensions/xai/model-definitions.js"; -export { - buildZaiModelDefinition, - resolveZaiBaseUrl, ZAI_CODING_CN_BASE_URL, ZAI_CODING_GLOBAL_BASE_URL, ZAI_CN_BASE_URL, @@ -93,7 +139,7 @@ export { ZAI_DEFAULT_MODEL_ID, ZAI_DEFAULT_MODEL_REF, ZAI_GLOBAL_BASE_URL, -} from "../../extensions/zai/model-definitions.js"; +}; export { buildCloudflareAiGatewayModelDefinition, diff --git a/src/plugin-sdk/slack.ts b/src/plugin-sdk/slack.ts index bef98db2bfc..0847512cd66 100644 --- a/src/plugin-sdk/slack.ts +++ b/src/plugin-sdk/slack.ts @@ -1,7 +1,53 @@ +import type { InspectedSlackAccount, ResolvedSlackAccount } from "../../extensions/slack/api.js"; +import { + buildSlackThreadingToolContext, + deleteSlackMessage, + downloadSlackFile, + editSlackMessage, + extractSlackToolSend, + getSlackMemberInfo, + handleSlackHttpRequest, + inspectSlackAccount, + isSlackInteractiveRepliesEnabled, + listEnabledSlackAccounts, + listSlackAccountIds, + listSlackEmojis, + listSlackMessageActions, + listSlackPins, + listSlackReactions, + parseSlackBlocksInput, + pinSlackMessage, + reactSlackMessage, + readSlackMessages, + recordSlackThreadParticipation, + removeOwnSlackReactions, + removeSlackReaction, + resolveDefaultSlackAccountId, + resolveSlackGroupRequireMention, + resolveSlackGroupToolPolicy, + resolveSlackReplyToMode, + sendSlackMessage, + unpinSlackMessage, +} from "../../extensions/slack/api.js"; +import type { SlackActionContext } from "../../extensions/slack/runtime-api.js"; +import { + handleSlackAction, + listSlackDirectoryGroupsLive, + listSlackDirectoryPeersLive, + monitorSlackProvider, + probeSlack, + resolveSlackChannelAllowlist, + resolveSlackUserAllowlist, + sendMessageSlack, +} from "../../extensions/slack/runtime-api.js"; +import { + listSlackDirectoryGroupsFromConfig, + listSlackDirectoryPeersFromConfig, +} from "../../extensions/slack/src/directory-config.js"; + export type { OpenClawConfig } from "../config/config.js"; export type { SlackAccountConfig } from "../config/types.slack.js"; -export type { InspectedSlackAccount } from "../../extensions/slack/api.js"; -export type { ResolvedSlackAccount } from "../../extensions/slack/api.js"; +export type { InspectedSlackAccount, ResolvedSlackAccount, SlackActionContext }; export type { ChannelMessageActionContext, ChannelPlugin, @@ -32,59 +78,51 @@ export { looksLikeSlackTargetId, normalizeSlackMessagingTarget, } from "../channels/plugins/normalize/slack.js"; -export { - listSlackDirectoryGroupsFromConfig, - listSlackDirectoryPeersFromConfig, -} from "../../extensions/slack/src/directory-config.js"; +export { listSlackDirectoryGroupsFromConfig, listSlackDirectoryPeersFromConfig }; export { resolveDefaultGroupPolicy, resolveOpenProviderRuntimeGroupPolicy, } from "../config/runtime-group-policy.js"; -export { - resolveSlackGroupRequireMention, - resolveSlackGroupToolPolicy, -} from "../../extensions/slack/api.js"; +export { resolveSlackGroupRequireMention, resolveSlackGroupToolPolicy }; export { SlackConfigSchema } from "../config/zod-schema.providers-core.js"; export { buildComputedAccountStatusSnapshot } from "./status-helpers.js"; export { + inspectSlackAccount, + isSlackInteractiveRepliesEnabled, listEnabledSlackAccounts, listSlackAccountIds, resolveDefaultSlackAccountId, resolveSlackReplyToMode, -} from "../../extensions/slack/api.js"; -export { isSlackInteractiveRepliesEnabled } from "../../extensions/slack/api.js"; -export { inspectSlackAccount } from "../../extensions/slack/api.js"; +}; export { parseSlackTarget, resolveSlackChannelId } from "./slack-targets.js"; -export { extractSlackToolSend, listSlackMessageActions } from "../../extensions/slack/api.js"; -export { buildSlackThreadingToolContext } from "../../extensions/slack/api.js"; -export { parseSlackBlocksInput } from "../../extensions/slack/api.js"; -export { handleSlackHttpRequest } from "../../extensions/slack/api.js"; -export { - handleSlackAction, - listSlackDirectoryGroupsLive, - listSlackDirectoryPeersLive, - monitorSlackProvider, - probeSlack, - resolveSlackChannelAllowlist, - resolveSlackUserAllowlist, - sendMessageSlack, -} from "../../extensions/slack/runtime-api.js"; export { + buildSlackThreadingToolContext, deleteSlackMessage, downloadSlackFile, editSlackMessage, + extractSlackToolSend, getSlackMemberInfo, + handleSlackAction, + handleSlackHttpRequest, + listSlackDirectoryGroupsLive, + listSlackDirectoryPeersLive, listSlackEmojis, + listSlackMessageActions, listSlackPins, listSlackReactions, + monitorSlackProvider, + parseSlackBlocksInput, pinSlackMessage, + probeSlack, reactSlackMessage, readSlackMessages, + recordSlackThreadParticipation, removeOwnSlackReactions, removeSlackReaction, + resolveSlackChannelAllowlist, + resolveSlackUserAllowlist, + sendMessageSlack, sendSlackMessage, unpinSlackMessage, -} from "../../extensions/slack/api.js"; -export { recordSlackThreadParticipation } from "../../extensions/slack/api.js"; -export type { SlackActionContext } from "../../extensions/slack/runtime-api.js"; +}; diff --git a/src/plugin-sdk/telegram.ts b/src/plugin-sdk/telegram.ts index fa06fded55d..31197b025ad 100644 --- a/src/plugin-sdk/telegram.ts +++ b/src/plugin-sdk/telegram.ts @@ -1,3 +1,70 @@ +import type { + InspectedTelegramAccount, + ProviderInfo, + ResolvedTelegramAccount, + StickerMetadata, + TelegramButtonStyle, + TelegramInlineButtons, +} from "../../extensions/telegram/api.js"; +import { + buildBrowseProvidersButton, + buildModelsKeyboard, + buildProviderKeyboard, + calculateTotalPages, + createTelegramActionGate, + fetchTelegramChatId, + getCacheStats, + getModelsPageSize, + inspectTelegramAccount, + isNumericTelegramUserId, + isTelegramExecApprovalApprover, + isTelegramExecApprovalClientEnabled, + listTelegramAccountIds, + looksLikeTelegramTargetId, + normalizeTelegramAllowFromEntry, + normalizeTelegramMessagingTarget, + parseTelegramReplyToMessageId, + parseTelegramThreadId, + resolveDefaultTelegramAccountId, + resolveTelegramGroupRequireMention, + resolveTelegramGroupToolPolicy, + resolveTelegramInlineButtonsScope, + resolveTelegramPollActionGateState, + resolveTelegramReactionLevel, + resolveTelegramTargetChatType, + searchStickers, + sendTelegramPayloadMessages, + collectTelegramStatusIssues, +} from "../../extensions/telegram/api.js"; +import type { TelegramProbe } from "../../extensions/telegram/runtime-api.js"; +import { + auditTelegramGroupMembership, + collectTelegramUnmentionedGroupIds, + createForumTopicTelegram, + deleteMessageTelegram, + editForumTopicTelegram, + editMessageReplyMarkupTelegram, + editMessageTelegram, + monitorTelegramProvider, + pinMessageTelegram, + probeTelegram, + reactMessageTelegram, + renameForumTopicTelegram, + resolveTelegramToken, + sendMessageTelegram, + sendPollTelegram, + sendStickerTelegram, + sendTypingTelegram, + setTelegramThreadBindingIdleTimeoutBySessionKey, + setTelegramThreadBindingMaxAgeBySessionKey, + telegramMessageActions, + unpinMessageTelegram, +} from "../../extensions/telegram/runtime-api.js"; +import { + listTelegramDirectoryGroupsFromConfig, + listTelegramDirectoryPeersFromConfig, +} from "../../extensions/telegram/src/directory-config.js"; + export type { ChannelAccountSnapshot, ChannelGatewayContext, @@ -17,11 +84,15 @@ export type { ChannelConfiguredBindingConversationRef, ChannelConfiguredBindingMatch, } from "../channels/plugins/types.adapters.js"; -export type { InspectedTelegramAccount } from "../../extensions/telegram/api.js"; -export type { ResolvedTelegramAccount } from "../../extensions/telegram/api.js"; -export type { TelegramProbe } from "../../extensions/telegram/runtime-api.js"; -export type { TelegramButtonStyle, TelegramInlineButtons } from "../../extensions/telegram/api.js"; -export type { StickerMetadata } from "../../extensions/telegram/api.js"; +export type { + InspectedTelegramAccount, + ProviderInfo, + ResolvedTelegramAccount, + StickerMetadata, + TelegramButtonStyle, + TelegramInlineButtons, + TelegramProbe, +}; export { emptyPluginConfigSchema } from "../plugins/config-schema.js"; export { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "../routing/session-key.js"; @@ -48,80 +119,58 @@ export { resolveAllowlistProviderRuntimeGroupPolicy, resolveDefaultGroupPolicy, } from "../config/runtime-group-policy.js"; -export { - listTelegramDirectoryGroupsFromConfig, - listTelegramDirectoryPeersFromConfig, -} from "../../extensions/telegram/src/directory-config.js"; -export { - resolveTelegramGroupRequireMention, - resolveTelegramGroupToolPolicy, -} from "../../extensions/telegram/api.js"; +export { listTelegramDirectoryGroupsFromConfig, listTelegramDirectoryPeersFromConfig }; +export { resolveTelegramGroupRequireMention, resolveTelegramGroupToolPolicy }; export { TelegramConfigSchema } from "../config/zod-schema.providers-core.js"; export { buildTokenChannelStatusSummary } from "./status-helpers.js"; -export { - createTelegramActionGate, - listTelegramAccountIds, - resolveDefaultTelegramAccountId, - resolveTelegramPollActionGateState, -} from "../../extensions/telegram/api.js"; -export { inspectTelegramAccount } from "../../extensions/telegram/api.js"; -export { - looksLikeTelegramTargetId, - normalizeTelegramMessagingTarget, -} from "../../extensions/telegram/api.js"; -export { - parseTelegramReplyToMessageId, - parseTelegramThreadId, -} from "../../extensions/telegram/api.js"; -export { - isNumericTelegramUserId, - normalizeTelegramAllowFromEntry, -} from "../../extensions/telegram/api.js"; -export { fetchTelegramChatId } from "../../extensions/telegram/api.js"; -export { - resolveTelegramInlineButtonsScope, - resolveTelegramTargetChatType, -} from "../../extensions/telegram/api.js"; -export { resolveTelegramReactionLevel } from "../../extensions/telegram/api.js"; export { auditTelegramGroupMembership, - collectTelegramUnmentionedGroupIds, - createForumTopicTelegram, - deleteMessageTelegram, - editForumTopicTelegram, - editMessageReplyMarkupTelegram, - editMessageTelegram, - monitorTelegramProvider, - pinMessageTelegram, - reactMessageTelegram, - renameForumTopicTelegram, - probeTelegram, - sendMessageTelegram, - sendPollTelegram, - sendStickerTelegram, - sendTypingTelegram, - unpinMessageTelegram, -} from "../../extensions/telegram/runtime-api.js"; -export { getCacheStats, searchStickers } from "../../extensions/telegram/api.js"; -export { resolveTelegramToken } from "../../extensions/telegram/runtime-api.js"; -export { telegramMessageActions } from "../../extensions/telegram/runtime-api.js"; -export { - setTelegramThreadBindingIdleTimeoutBySessionKey, - setTelegramThreadBindingMaxAgeBySessionKey, -} from "../../extensions/telegram/runtime-api.js"; -export { collectTelegramStatusIssues } from "../../extensions/telegram/api.js"; -export { sendTelegramPayloadMessages } from "../../extensions/telegram/api.js"; -export { buildBrowseProvidersButton, buildModelsKeyboard, buildProviderKeyboard, calculateTotalPages, + collectTelegramStatusIssues, + collectTelegramUnmentionedGroupIds, + createForumTopicTelegram, + createTelegramActionGate, + deleteMessageTelegram, + editForumTopicTelegram, + editMessageReplyMarkupTelegram, + editMessageTelegram, + fetchTelegramChatId, + getCacheStats, getModelsPageSize, - type ProviderInfo, -} from "../../extensions/telegram/api.js"; -export { + inspectTelegramAccount, + isNumericTelegramUserId, isTelegramExecApprovalApprover, isTelegramExecApprovalClientEnabled, -} from "../../extensions/telegram/api.js"; + listTelegramAccountIds, + looksLikeTelegramTargetId, + monitorTelegramProvider, + normalizeTelegramAllowFromEntry, + normalizeTelegramMessagingTarget, + parseTelegramReplyToMessageId, + parseTelegramThreadId, + pinMessageTelegram, + probeTelegram, + reactMessageTelegram, + renameForumTopicTelegram, + resolveDefaultTelegramAccountId, + resolveTelegramInlineButtonsScope, + resolveTelegramPollActionGateState, + resolveTelegramReactionLevel, + resolveTelegramTargetChatType, + resolveTelegramToken, + searchStickers, + sendMessageTelegram, + sendPollTelegram, + sendStickerTelegram, + sendTelegramPayloadMessages, + sendTypingTelegram, + setTelegramThreadBindingIdleTimeoutBySessionKey, + setTelegramThreadBindingMaxAgeBySessionKey, + telegramMessageActions, + unpinMessageTelegram, +}; diff --git a/src/plugin-sdk/whatsapp.ts b/src/plugin-sdk/whatsapp.ts index d5182f9004c..1f73eb302f3 100644 --- a/src/plugin-sdk/whatsapp.ts +++ b/src/plugin-sdk/whatsapp.ts @@ -1,11 +1,57 @@ +import { + hasAnyWhatsAppAuth, + listEnabledWhatsAppAccounts, + resolveWhatsAppAccount, + resolveWhatsAppGroupRequireMention, + resolveWhatsAppGroupToolPolicy, +} from "../../extensions/whatsapp/api.js"; +import type { + WebChannelStatus, + WebInboundMessage, + WebListenerCloseReason, + WebMonitorTuning, +} from "../../extensions/whatsapp/runtime-api.js"; +import { + createWhatsAppLoginTool, + createWaSocket, + DEFAULT_WEB_MEDIA_BYTES, + extractMediaPlaceholder, + extractText, + formatError, + getActiveWebListener, + getDefaultLocalRoots, + getStatusCode, + getWebAuthAgeMs, + HEARTBEAT_PROMPT, + HEARTBEAT_TOKEN, + loadWebMedia, + loadWebMediaRaw, + loginWeb, + logWebSelfId, + logoutWeb, + monitorWebChannel, + monitorWebInbox, + optimizeImageToJpeg, + pickWebChannel, + readWebSelfId, + resolveHeartbeatRecipients, + runWebHeartbeatOnce, + sendMessageWhatsApp, + sendPollWhatsApp, + sendReactionWhatsApp, + waitForWaConnection, + WA_WEB_AUTH_DIR, + webAuthExists, +} from "../../extensions/whatsapp/runtime-api.js"; +import { + listWhatsAppDirectoryGroupsFromConfig, + listWhatsAppDirectoryPeersFromConfig, +} from "../../extensions/whatsapp/src/directory-config.js"; + export type { ChannelMessageActionName } from "../channels/plugins/types.js"; export type { OpenClawConfig } from "../config/config.js"; export type { DmPolicy, GroupPolicy, WhatsAppAccountConfig } from "../config/types.js"; -export type { WebChannelStatus, WebMonitorTuning } from "../../extensions/whatsapp/runtime-api.js"; -export type { - WebInboundMessage, - WebListenerCloseReason, -} from "../../extensions/whatsapp/runtime-api.js"; +export type { WebChannelStatus, WebInboundMessage, WebListenerCloseReason, WebMonitorTuning }; export type { ChannelMessageActionContext, ChannelPlugin, @@ -33,10 +79,7 @@ export { resolveWhatsAppConfigDefaultTo, } from "./channel-config-helpers.js"; export { normalizeWhatsAppAllowFromEntries } from "../channels/plugins/normalize/whatsapp.js"; -export { - listWhatsAppDirectoryGroupsFromConfig, - listWhatsAppDirectoryPeersFromConfig, -} from "../../extensions/whatsapp/src/directory-config.js"; +export { listWhatsAppDirectoryGroupsFromConfig, listWhatsAppDirectoryPeersFromConfig }; export { collectAllowlistProviderGroupPolicyWarnings, collectOpenGroupPolicyRouteAllowlistWarnings, @@ -49,10 +92,7 @@ export { resolveAllowlistProviderRuntimeGroupPolicy, resolveDefaultGroupPolicy, } from "../config/runtime-group-policy.js"; -export { - resolveWhatsAppGroupRequireMention, - resolveWhatsAppGroupToolPolicy, -} from "../../extensions/whatsapp/api.js"; +export { resolveWhatsAppGroupRequireMention, resolveWhatsAppGroupToolPolicy }; export { createWhatsAppOutboundBase, resolveWhatsAppGroupIntroHint, @@ -65,50 +105,36 @@ export { createActionGate, readStringParam } from "../agents/tools/common.js"; export { createPluginRuntimeStore } from "./runtime-store.js"; export { normalizeE164 } from "../utils.js"; +export { hasAnyWhatsAppAuth, listEnabledWhatsAppAccounts, resolveWhatsAppAccount }; export { - hasAnyWhatsAppAuth, - listEnabledWhatsAppAccounts, - resolveWhatsAppAccount, -} from "../../extensions/whatsapp/api.js"; -export { - getActiveWebListener, - getWebAuthAgeMs, - WA_WEB_AUTH_DIR, - logWebSelfId, - logoutWeb, - pickWebChannel, - readWebSelfId, - webAuthExists, -} from "../../extensions/whatsapp/runtime-api.js"; -export { + createWaSocket, + createWhatsAppLoginTool, DEFAULT_WEB_MEDIA_BYTES, - HEARTBEAT_PROMPT, - HEARTBEAT_TOKEN, - monitorWebChannel, - resolveHeartbeatRecipients, - runWebHeartbeatOnce, -} from "../../extensions/whatsapp/runtime-api.js"; -export { extractMediaPlaceholder, extractText, - monitorWebInbox, -} from "../../extensions/whatsapp/runtime-api.js"; -export { loginWeb } from "../../extensions/whatsapp/runtime-api.js"; -export { + formatError, + getActiveWebListener, getDefaultLocalRoots, + getStatusCode, + getWebAuthAgeMs, + HEARTBEAT_PROMPT, + HEARTBEAT_TOKEN, loadWebMedia, loadWebMediaRaw, + loginWeb, + logWebSelfId, + logoutWeb, + monitorWebChannel, + monitorWebInbox, optimizeImageToJpeg, -} from "../../extensions/whatsapp/runtime-api.js"; -export { + pickWebChannel, + readWebSelfId, + resolveHeartbeatRecipients, + runWebHeartbeatOnce, sendMessageWhatsApp, sendPollWhatsApp, sendReactionWhatsApp, -} from "../../extensions/whatsapp/runtime-api.js"; -export { - createWaSocket, - formatError, - getStatusCode, waitForWaConnection, -} from "../../extensions/whatsapp/runtime-api.js"; -export { createWhatsAppLoginTool } from "../../extensions/whatsapp/runtime-api.js"; + WA_WEB_AUTH_DIR, + webAuthExists, +}; diff --git a/src/plugins/runtime/types-channel.ts b/src/plugins/runtime/types-channel.ts index b5f9a8e8e7a..dbad805c1e1 100644 --- a/src/plugins/runtime/types-channel.ts +++ b/src/plugins/runtime/types-channel.ts @@ -94,29 +94,29 @@ export type PluginRuntimeChannel = { shouldHandleTextCommands: typeof import("../../auto-reply/commands-registry.js").shouldHandleTextCommands; }; discord: { - messageActions: typeof import("../../../extensions/discord/runtime-api.js").discordMessageActions; - auditChannelPermissions: typeof import("../../../extensions/discord/runtime-api.js").auditDiscordChannelPermissions; - listDirectoryGroupsLive: typeof import("../../../extensions/discord/runtime-api.js").listDiscordDirectoryGroupsLive; - listDirectoryPeersLive: typeof import("../../../extensions/discord/runtime-api.js").listDiscordDirectoryPeersLive; - probeDiscord: typeof import("../../../extensions/discord/runtime-api.js").probeDiscord; - resolveChannelAllowlist: typeof import("../../../extensions/discord/runtime-api.js").resolveDiscordChannelAllowlist; - resolveUserAllowlist: typeof import("../../../extensions/discord/runtime-api.js").resolveDiscordUserAllowlist; - sendComponentMessage: typeof import("../../../extensions/discord/runtime-api.js").sendDiscordComponentMessage; - sendMessageDiscord: typeof import("../../../extensions/discord/runtime-api.js").sendMessageDiscord; - sendPollDiscord: typeof import("../../../extensions/discord/runtime-api.js").sendPollDiscord; - monitorDiscordProvider: typeof import("../../../extensions/discord/runtime-api.js").monitorDiscordProvider; + messageActions: typeof import("openclaw/plugin-sdk/discord").discordMessageActions; + auditChannelPermissions: typeof import("openclaw/plugin-sdk/discord").auditDiscordChannelPermissions; + listDirectoryGroupsLive: typeof import("openclaw/plugin-sdk/discord").listDiscordDirectoryGroupsLive; + listDirectoryPeersLive: typeof import("openclaw/plugin-sdk/discord").listDiscordDirectoryPeersLive; + probeDiscord: typeof import("openclaw/plugin-sdk/discord").probeDiscord; + resolveChannelAllowlist: typeof import("openclaw/plugin-sdk/discord").resolveDiscordChannelAllowlist; + resolveUserAllowlist: typeof import("openclaw/plugin-sdk/discord").resolveDiscordUserAllowlist; + sendComponentMessage: typeof import("openclaw/plugin-sdk/discord").sendDiscordComponentMessage; + sendMessageDiscord: typeof import("openclaw/plugin-sdk/discord").sendMessageDiscord; + sendPollDiscord: typeof import("openclaw/plugin-sdk/discord").sendPollDiscord; + monitorDiscordProvider: typeof import("openclaw/plugin-sdk/discord").monitorDiscordProvider; threadBindings: { - getManager: typeof import("../../../extensions/discord/runtime-api.js").getThreadBindingManager; - resolveIdleTimeoutMs: typeof import("../../../extensions/discord/runtime-api.js").resolveThreadBindingIdleTimeoutMs; - resolveInactivityExpiresAt: typeof import("../../../extensions/discord/runtime-api.js").resolveThreadBindingInactivityExpiresAt; - resolveMaxAgeMs: typeof import("../../../extensions/discord/runtime-api.js").resolveThreadBindingMaxAgeMs; - resolveMaxAgeExpiresAt: typeof import("../../../extensions/discord/runtime-api.js").resolveThreadBindingMaxAgeExpiresAt; - setIdleTimeoutBySessionKey: typeof import("../../../extensions/discord/runtime-api.js").setThreadBindingIdleTimeoutBySessionKey; - setMaxAgeBySessionKey: typeof import("../../../extensions/discord/runtime-api.js").setThreadBindingMaxAgeBySessionKey; - unbindBySessionKey: typeof import("../../../extensions/discord/runtime-api.js").unbindThreadBindingsBySessionKey; + getManager: typeof import("openclaw/plugin-sdk/discord").getThreadBindingManager; + resolveIdleTimeoutMs: typeof import("openclaw/plugin-sdk/discord").resolveThreadBindingIdleTimeoutMs; + resolveInactivityExpiresAt: typeof import("openclaw/plugin-sdk/discord").resolveThreadBindingInactivityExpiresAt; + resolveMaxAgeMs: typeof import("openclaw/plugin-sdk/discord").resolveThreadBindingMaxAgeMs; + resolveMaxAgeExpiresAt: typeof import("openclaw/plugin-sdk/discord").resolveThreadBindingMaxAgeExpiresAt; + setIdleTimeoutBySessionKey: typeof import("openclaw/plugin-sdk/discord").setThreadBindingIdleTimeoutBySessionKey; + setMaxAgeBySessionKey: typeof import("openclaw/plugin-sdk/discord").setThreadBindingMaxAgeBySessionKey; + unbindBySessionKey: typeof import("openclaw/plugin-sdk/discord").unbindThreadBindingsBySessionKey; }; typing: { - pulse: typeof import("../../../extensions/discord/runtime-api.js").sendTypingDiscord; + pulse: typeof import("openclaw/plugin-sdk/discord").sendTypingDiscord; start: (params: { channelId: string; accountId?: string; @@ -128,39 +128,39 @@ export type PluginRuntimeChannel = { }>; }; conversationActions: { - editMessage: typeof import("../../../extensions/discord/runtime-api.js").editMessageDiscord; - deleteMessage: typeof import("../../../extensions/discord/runtime-api.js").deleteMessageDiscord; - pinMessage: typeof import("../../../extensions/discord/runtime-api.js").pinMessageDiscord; - unpinMessage: typeof import("../../../extensions/discord/runtime-api.js").unpinMessageDiscord; - createThread: typeof import("../../../extensions/discord/runtime-api.js").createThreadDiscord; - editChannel: typeof import("../../../extensions/discord/runtime-api.js").editChannelDiscord; + editMessage: typeof import("openclaw/plugin-sdk/discord").editMessageDiscord; + deleteMessage: typeof import("openclaw/plugin-sdk/discord").deleteMessageDiscord; + pinMessage: typeof import("openclaw/plugin-sdk/discord").pinMessageDiscord; + unpinMessage: typeof import("openclaw/plugin-sdk/discord").unpinMessageDiscord; + createThread: typeof import("openclaw/plugin-sdk/discord").createThreadDiscord; + editChannel: typeof import("openclaw/plugin-sdk/discord").editChannelDiscord; }; }; slack: { - listDirectoryGroupsLive: typeof import("../../../extensions/slack/runtime-api.js").listSlackDirectoryGroupsLive; - listDirectoryPeersLive: typeof import("../../../extensions/slack/runtime-api.js").listSlackDirectoryPeersLive; - probeSlack: typeof import("../../../extensions/slack/runtime-api.js").probeSlack; - resolveChannelAllowlist: typeof import("../../../extensions/slack/runtime-api.js").resolveSlackChannelAllowlist; - resolveUserAllowlist: typeof import("../../../extensions/slack/runtime-api.js").resolveSlackUserAllowlist; - sendMessageSlack: typeof import("../../../extensions/slack/runtime-api.js").sendMessageSlack; - monitorSlackProvider: typeof import("../../../extensions/slack/runtime-api.js").monitorSlackProvider; - handleSlackAction: typeof import("../../../extensions/slack/runtime-api.js").handleSlackAction; + listDirectoryGroupsLive: typeof import("openclaw/plugin-sdk/slack").listSlackDirectoryGroupsLive; + listDirectoryPeersLive: typeof import("openclaw/plugin-sdk/slack").listSlackDirectoryPeersLive; + probeSlack: typeof import("openclaw/plugin-sdk/slack").probeSlack; + resolveChannelAllowlist: typeof import("openclaw/plugin-sdk/slack").resolveSlackChannelAllowlist; + resolveUserAllowlist: typeof import("openclaw/plugin-sdk/slack").resolveSlackUserAllowlist; + sendMessageSlack: typeof import("openclaw/plugin-sdk/slack").sendMessageSlack; + monitorSlackProvider: typeof import("openclaw/plugin-sdk/slack").monitorSlackProvider; + handleSlackAction: typeof import("openclaw/plugin-sdk/slack").handleSlackAction; }; telegram: { - auditGroupMembership: typeof import("../../../extensions/telegram/runtime-api.js").auditTelegramGroupMembership; - collectUnmentionedGroupIds: typeof import("../../../extensions/telegram/runtime-api.js").collectTelegramUnmentionedGroupIds; - probeTelegram: typeof import("../../../extensions/telegram/runtime-api.js").probeTelegram; - resolveTelegramToken: typeof import("../../../extensions/telegram/runtime-api.js").resolveTelegramToken; - sendMessageTelegram: typeof import("../../../extensions/telegram/runtime-api.js").sendMessageTelegram; - sendPollTelegram: typeof import("../../../extensions/telegram/runtime-api.js").sendPollTelegram; - monitorTelegramProvider: typeof import("../../../extensions/telegram/runtime-api.js").monitorTelegramProvider; - messageActions: typeof import("../../../extensions/telegram/runtime-api.js").telegramMessageActions; + auditGroupMembership: typeof import("openclaw/plugin-sdk/telegram").auditTelegramGroupMembership; + collectUnmentionedGroupIds: typeof import("openclaw/plugin-sdk/telegram").collectTelegramUnmentionedGroupIds; + probeTelegram: typeof import("openclaw/plugin-sdk/telegram").probeTelegram; + resolveTelegramToken: typeof import("openclaw/plugin-sdk/telegram").resolveTelegramToken; + sendMessageTelegram: typeof import("openclaw/plugin-sdk/telegram").sendMessageTelegram; + sendPollTelegram: typeof import("openclaw/plugin-sdk/telegram").sendPollTelegram; + monitorTelegramProvider: typeof import("openclaw/plugin-sdk/telegram").monitorTelegramProvider; + messageActions: typeof import("openclaw/plugin-sdk/telegram").telegramMessageActions; threadBindings: { - setIdleTimeoutBySessionKey: typeof import("../../../extensions/telegram/runtime-api.js").setTelegramThreadBindingIdleTimeoutBySessionKey; - setMaxAgeBySessionKey: typeof import("../../../extensions/telegram/runtime-api.js").setTelegramThreadBindingMaxAgeBySessionKey; + setIdleTimeoutBySessionKey: typeof import("openclaw/plugin-sdk/telegram").setTelegramThreadBindingIdleTimeoutBySessionKey; + setMaxAgeBySessionKey: typeof import("openclaw/plugin-sdk/telegram").setTelegramThreadBindingMaxAgeBySessionKey; }; typing: { - pulse: typeof import("../../../extensions/telegram/runtime-api.js").sendTypingTelegram; + pulse: typeof import("openclaw/plugin-sdk/telegram").sendTypingTelegram; start: (params: { to: string; accountId?: string; @@ -173,8 +173,8 @@ export type PluginRuntimeChannel = { }>; }; conversationActions: { - editMessage: typeof import("../../../extensions/telegram/runtime-api.js").editMessageTelegram; - editReplyMarkup: typeof import("../../../extensions/telegram/runtime-api.js").editMessageReplyMarkupTelegram; + editMessage: typeof import("openclaw/plugin-sdk/telegram").editMessageTelegram; + editReplyMarkup: typeof import("openclaw/plugin-sdk/telegram").editMessageReplyMarkupTelegram; clearReplyMarkup: ( chatIdInput: string | number, messageIdInput: string | number, @@ -187,10 +187,10 @@ export type PluginRuntimeChannel = { cfg?: ReturnType; }, ) => Promise<{ ok: true; messageId: string; chatId: string }>; - deleteMessage: typeof import("../../../extensions/telegram/runtime-api.js").deleteMessageTelegram; - renameTopic: typeof import("../../../extensions/telegram/runtime-api.js").renameForumTopicTelegram; - pinMessage: typeof import("../../../extensions/telegram/runtime-api.js").pinMessageTelegram; - unpinMessage: typeof import("../../../extensions/telegram/runtime-api.js").unpinMessageTelegram; + deleteMessage: typeof import("openclaw/plugin-sdk/telegram").deleteMessageTelegram; + renameTopic: typeof import("openclaw/plugin-sdk/telegram").renameForumTopicTelegram; + pinMessage: typeof import("openclaw/plugin-sdk/telegram").pinMessageTelegram; + unpinMessage: typeof import("openclaw/plugin-sdk/telegram").unpinMessageTelegram; }; }; signal: {