diff --git a/src/channels/discord/plugin-sdk-bridge.ts b/src/channels/discord/plugin-sdk-bridge.ts new file mode 100644 index 00000000000..b2d5fd7269f --- /dev/null +++ b/src/channels/discord/plugin-sdk-bridge.ts @@ -0,0 +1,100 @@ +export type { + DiscordPluralKitConfig, + DiscordSendComponents, + DiscordSendEmbeds, + InspectedDiscordAccount, + ResolvedDiscordAccount, +} from "../../../extensions/discord/api.js"; +export type { + ThreadBindingManager, + ThreadBindingRecord, + ThreadBindingTargetKind, +} from "../../../extensions/discord/runtime-api.js"; + +export { + collectDiscordStatusIssues, + createDiscordActionGate, + inspectDiscordAccount, + listDiscordAccountIds, + looksLikeDiscordTargetId, + normalizeDiscordMessagingTarget, + normalizeDiscordOutboundTarget, + readDiscordComponentSpec, + resolveDefaultDiscordAccountId, + resolveDiscordChannelId, + resolveDiscordGroupRequireMention, + resolveDiscordGroupToolPolicy, +} from "../../../extensions/discord/api.js"; +export { + 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"; +export { normalizeExplicitDiscordSessionKey } from "../../../extensions/discord/session-key-api.js"; +export { + listDiscordDirectoryGroupsFromConfig, + listDiscordDirectoryPeersFromConfig, +} from "../../../extensions/discord/src/directory-config.js"; diff --git a/src/channels/slack/plugin-sdk-bridge.ts b/src/channels/slack/plugin-sdk-bridge.ts new file mode 100644 index 00000000000..c98058badd8 --- /dev/null +++ b/src/channels/slack/plugin-sdk-bridge.ts @@ -0,0 +1,47 @@ +export type { InspectedSlackAccount, ResolvedSlackAccount } from "../../../extensions/slack/api.js"; +export type { SlackActionContext } from "../../../extensions/slack/runtime-api.js"; + +export { + 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"; +export { + handleSlackAction, + listSlackDirectoryGroupsLive, + listSlackDirectoryPeersLive, + monitorSlackProvider, + probeSlack, + resolveSlackChannelAllowlist, + resolveSlackUserAllowlist, + sendMessageSlack, +} from "../../../extensions/slack/runtime-api.js"; +export { + listSlackDirectoryGroupsFromConfig, + listSlackDirectoryPeersFromConfig, +} from "../../../extensions/slack/src/directory-config.js"; diff --git a/src/channels/telegram/plugin-sdk-bridge.ts b/src/channels/telegram/plugin-sdk-bridge.ts new file mode 100644 index 00000000000..0b17b015e32 --- /dev/null +++ b/src/channels/telegram/plugin-sdk-bridge.ts @@ -0,0 +1,67 @@ +export type { + InspectedTelegramAccount, + ProviderInfo, + ResolvedTelegramAccount, + StickerMetadata, + TelegramButtonStyle, + TelegramInlineButtons, +} from "../../../extensions/telegram/api.js"; +export type { TelegramProbe } from "../../../extensions/telegram/runtime-api.js"; + +export { + buildBrowseProvidersButton, + buildModelsKeyboard, + buildProviderKeyboard, + calculateTotalPages, + collectTelegramStatusIssues, + createTelegramActionGate, + fetchTelegramChatId, + getCacheStats, + getModelsPageSize, + inspectTelegramAccount, + isNumericTelegramUserId, + isTelegramExecApprovalApprover, + isTelegramExecApprovalClientEnabled, + listTelegramAccountIds, + looksLikeTelegramTargetId, + normalizeTelegramAllowFromEntry, + normalizeTelegramMessagingTarget, + parseTelegramReplyToMessageId, + parseTelegramThreadId, + resolveDefaultTelegramAccountId, + resolveTelegramGroupRequireMention, + resolveTelegramGroupToolPolicy, + resolveTelegramInlineButtonsScope, + resolveTelegramPollActionGateState, + resolveTelegramReactionLevel, + resolveTelegramTargetChatType, + searchStickers, + sendTelegramPayloadMessages, +} from "../../../extensions/telegram/api.js"; +export { + 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"; +export { + listTelegramDirectoryGroupsFromConfig, + listTelegramDirectoryPeersFromConfig, +} from "../../../extensions/telegram/src/directory-config.js"; diff --git a/src/channels/whatsapp/plugin-sdk-bridge.ts b/src/channels/whatsapp/plugin-sdk-bridge.ts new file mode 100644 index 00000000000..5b1d6031d91 --- /dev/null +++ b/src/channels/whatsapp/plugin-sdk-bridge.ts @@ -0,0 +1,50 @@ +export type { + WebChannelStatus, + WebInboundMessage, + WebListenerCloseReason, + WebMonitorTuning, +} from "../../../extensions/whatsapp/runtime-api.js"; + +export { + hasAnyWhatsAppAuth, + listEnabledWhatsAppAccounts, + resolveWhatsAppAccount, + resolveWhatsAppGroupRequireMention, + resolveWhatsAppGroupToolPolicy, +} from "../../../extensions/whatsapp/api.js"; +export { + 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"; +export { + listWhatsAppDirectoryGroupsFromConfig, + listWhatsAppDirectoryPeersFromConfig, +} from "../../../extensions/whatsapp/src/directory-config.js"; diff --git a/src/plugin-sdk/discord.ts b/src/plugin-sdk/discord.ts index f5dfbde8cce..063717815cb 100644 --- a/src/plugin-sdk/discord.ts +++ b/src/plugin-sdk/discord.ts @@ -4,8 +4,12 @@ import type { DiscordSendEmbeds, InspectedDiscordAccount, ResolvedDiscordAccount, -} from "../../extensions/discord/api.js"; + ThreadBindingManager, + ThreadBindingRecord, + ThreadBindingTargetKind, +} from "../channels/discord/plugin-sdk-bridge.js"; import { + collectDiscordStatusIssues, createDiscordActionGate, inspectDiscordAccount, listDiscordAccountIds, @@ -17,13 +21,7 @@ import { resolveDiscordChannelId, resolveDiscordGroupRequireMention, resolveDiscordGroupToolPolicy, - collectDiscordStatusIssues, -} from "../../extensions/discord/api.js"; -import type { - ThreadBindingManager, - ThreadBindingRecord, - ThreadBindingTargetKind, -} from "../../extensions/discord/runtime-api.js"; +} from "../channels/discord/plugin-sdk-bridge.js"; import { addRoleDiscord, auditDiscordChannelPermissions, @@ -91,12 +89,10 @@ import { 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"; + normalizeExplicitDiscordSessionKey, +} from "../channels/discord/plugin-sdk-bridge.js"; export type { ChannelAccountSnapshot, diff --git a/src/plugin-sdk/provider-models.ts b/src/plugin-sdk/provider-models.ts index 25b954acae2..21e27c48362 100644 --- a/src/plugin-sdk/provider-models.ts +++ b/src/plugin-sdk/provider-models.ts @@ -1,9 +1,17 @@ // Public model/catalog helpers for provider plugins. +import type { ModelDefinitionConfig } from "../config/types.models.js"; +import { + KILOCODE_DEFAULT_CONTEXT_WINDOW, + KILOCODE_DEFAULT_COST, + KILOCODE_DEFAULT_MAX_TOKENS, + KILOCODE_DEFAULT_MODEL_ID, + KILOCODE_DEFAULT_MODEL_NAME, +} from "../providers/kilocode-shared.js"; import { KIMI_CODING_BASE_URL, KIMI_CODING_DEFAULT_MODEL_ID, -} from "../../extensions/kimi-coding/provider-catalog.js"; +} from "../providers/plugin-sdk-provider-models-bridge.js"; import { buildMinimaxApiModelDefinition, buildMinimaxModelDefinition, @@ -15,14 +23,14 @@ import { MINIMAX_HOSTED_MODEL_ID, MINIMAX_HOSTED_MODEL_REF, MINIMAX_LM_STUDIO_COST, -} from "../../extensions/minimax/model-definitions.js"; +} from "../providers/plugin-sdk-provider-models-bridge.js"; import { buildMistralModelDefinition, MISTRAL_BASE_URL, MISTRAL_DEFAULT_COST, MISTRAL_DEFAULT_MODEL_ID, MISTRAL_DEFAULT_MODEL_REF, -} from "../../extensions/mistral/model-definitions.js"; +} from "../providers/plugin-sdk-provider-models-bridge.js"; import { buildModelStudioDefaultModelDefinition, buildModelStudioModelDefinition, @@ -31,24 +39,24 @@ import { 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"; +} from "../providers/plugin-sdk-provider-models-bridge.js"; +import { MOONSHOT_CN_BASE_URL } from "../providers/plugin-sdk-provider-models-bridge.js"; import { buildMoonshotProvider, MOONSHOT_BASE_URL, MOONSHOT_DEFAULT_MODEL_ID, -} from "../../extensions/moonshot/provider-catalog.js"; +} from "../providers/plugin-sdk-provider-models-bridge.js"; import { QIANFAN_BASE_URL, QIANFAN_DEFAULT_MODEL_ID, -} from "../../extensions/qianfan/provider-catalog.js"; +} from "../providers/plugin-sdk-provider-models-bridge.js"; import { buildXaiModelDefinition, XAI_BASE_URL, XAI_DEFAULT_COST, XAI_DEFAULT_MODEL_ID, XAI_DEFAULT_MODEL_REF, -} from "../../extensions/xai/model-definitions.js"; +} from "../providers/plugin-sdk-provider-models-bridge.js"; import { buildZaiModelDefinition, resolveZaiBaseUrl, @@ -59,15 +67,7 @@ import { 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, - KILOCODE_DEFAULT_COST, - KILOCODE_DEFAULT_MAX_TOKENS, - KILOCODE_DEFAULT_MODEL_ID, - KILOCODE_DEFAULT_MODEL_NAME, -} from "../providers/kilocode-shared.js"; +} from "../providers/plugin-sdk-provider-models-bridge.js"; export type { ModelApi, ModelProviderConfig } from "../config/types.models.js"; export type { ModelDefinitionConfig } from "../config/types.models.js"; diff --git a/src/plugin-sdk/slack.ts b/src/plugin-sdk/slack.ts index 0847512cd66..d19bf5af69c 100644 --- a/src/plugin-sdk/slack.ts +++ b/src/plugin-sdk/slack.ts @@ -1,4 +1,8 @@ -import type { InspectedSlackAccount, ResolvedSlackAccount } from "../../extensions/slack/api.js"; +import type { + InspectedSlackAccount, + ResolvedSlackAccount, + SlackActionContext, +} from "../channels/slack/plugin-sdk-bridge.js"; import { buildSlackThreadingToolContext, deleteSlackMessage, @@ -28,8 +32,7 @@ import { resolveSlackReplyToMode, sendSlackMessage, unpinSlackMessage, -} from "../../extensions/slack/api.js"; -import type { SlackActionContext } from "../../extensions/slack/runtime-api.js"; +} from "../channels/slack/plugin-sdk-bridge.js"; import { handleSlackAction, listSlackDirectoryGroupsLive, @@ -39,11 +42,9 @@ import { resolveSlackChannelAllowlist, resolveSlackUserAllowlist, sendMessageSlack, -} from "../../extensions/slack/runtime-api.js"; -import { listSlackDirectoryGroupsFromConfig, listSlackDirectoryPeersFromConfig, -} from "../../extensions/slack/src/directory-config.js"; +} from "../channels/slack/plugin-sdk-bridge.js"; export type { OpenClawConfig } from "../config/config.js"; export type { SlackAccountConfig } from "../config/types.slack.js"; diff --git a/src/plugin-sdk/telegram.ts b/src/plugin-sdk/telegram.ts index 31197b025ad..919f0f49b23 100644 --- a/src/plugin-sdk/telegram.ts +++ b/src/plugin-sdk/telegram.ts @@ -5,7 +5,8 @@ import type { StickerMetadata, TelegramButtonStyle, TelegramInlineButtons, -} from "../../extensions/telegram/api.js"; + TelegramProbe, +} from "../channels/telegram/plugin-sdk-bridge.js"; import { buildBrowseProvidersButton, buildModelsKeyboard, @@ -35,8 +36,7 @@ import { searchStickers, sendTelegramPayloadMessages, collectTelegramStatusIssues, -} from "../../extensions/telegram/api.js"; -import type { TelegramProbe } from "../../extensions/telegram/runtime-api.js"; +} from "../channels/telegram/plugin-sdk-bridge.js"; import { auditTelegramGroupMembership, collectTelegramUnmentionedGroupIds, @@ -59,11 +59,9 @@ import { setTelegramThreadBindingMaxAgeBySessionKey, telegramMessageActions, unpinMessageTelegram, -} from "../../extensions/telegram/runtime-api.js"; -import { listTelegramDirectoryGroupsFromConfig, listTelegramDirectoryPeersFromConfig, -} from "../../extensions/telegram/src/directory-config.js"; +} from "../channels/telegram/plugin-sdk-bridge.js"; export type { ChannelAccountSnapshot, diff --git a/src/plugin-sdk/whatsapp.ts b/src/plugin-sdk/whatsapp.ts index 1f73eb302f3..0effe43a10e 100644 --- a/src/plugin-sdk/whatsapp.ts +++ b/src/plugin-sdk/whatsapp.ts @@ -4,13 +4,15 @@ import { resolveWhatsAppAccount, resolveWhatsAppGroupRequireMention, resolveWhatsAppGroupToolPolicy, -} from "../../extensions/whatsapp/api.js"; + listWhatsAppDirectoryGroupsFromConfig, + listWhatsAppDirectoryPeersFromConfig, +} from "../channels/whatsapp/plugin-sdk-bridge.js"; import type { WebChannelStatus, WebInboundMessage, WebListenerCloseReason, WebMonitorTuning, -} from "../../extensions/whatsapp/runtime-api.js"; +} from "../channels/whatsapp/plugin-sdk-bridge.js"; import { createWhatsAppLoginTool, createWaSocket, @@ -42,11 +44,7 @@ import { waitForWaConnection, WA_WEB_AUTH_DIR, webAuthExists, -} from "../../extensions/whatsapp/runtime-api.js"; -import { - listWhatsAppDirectoryGroupsFromConfig, - listWhatsAppDirectoryPeersFromConfig, -} from "../../extensions/whatsapp/src/directory-config.js"; +} from "../channels/whatsapp/plugin-sdk-bridge.js"; export type { ChannelMessageActionName } from "../channels/plugins/types.js"; export type { OpenClawConfig } from "../config/config.js"; diff --git a/src/providers/plugin-sdk-provider-models-bridge.ts b/src/providers/plugin-sdk-provider-models-bridge.ts new file mode 100644 index 00000000000..8c2f70a071f --- /dev/null +++ b/src/providers/plugin-sdk-provider-models-bridge.ts @@ -0,0 +1,60 @@ +export { + KIMI_CODING_BASE_URL, + KIMI_CODING_DEFAULT_MODEL_ID, +} from "../../extensions/kimi-coding/provider-catalog.js"; +export { + 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"; +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 { MOONSHOT_CN_BASE_URL } from "../../extensions/moonshot/onboard.js"; +export { + buildMoonshotProvider, + MOONSHOT_BASE_URL, + MOONSHOT_DEFAULT_MODEL_ID, +} from "../../extensions/moonshot/provider-catalog.js"; +export { + QIANFAN_BASE_URL, + QIANFAN_DEFAULT_MODEL_ID, +} from "../../extensions/qianfan/provider-catalog.js"; +export { + buildXaiModelDefinition, + 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, + ZAI_DEFAULT_COST, + ZAI_DEFAULT_MODEL_ID, + ZAI_DEFAULT_MODEL_REF, + ZAI_GLOBAL_BASE_URL, +} from "../../extensions/zai/model-definitions.js";