diff --git a/src/plugin-sdk/discord.ts b/src/plugin-sdk/discord.ts index 1f0f3f6d67c..7cb368f90ac 100644 --- a/src/plugin-sdk/discord.ts +++ b/src/plugin-sdk/discord.ts @@ -12,10 +12,6 @@ import { } from "./facade-loader.js"; import { getRuntimeConfig, getRuntimeConfigSnapshot } from "./runtime-config-snapshot.js"; -export type { - DiscordComponentBuildResult, - DiscordComponentMessageSpec, -} from "../../extensions/discord/api.js"; export type { ChannelMessageActionAdapter, ChannelMessageActionName } from "./channel-contract.js"; export type { ChannelPlugin } from "./channel-core.js"; export type { OpenClawConfig } from "./config-types.js"; @@ -41,6 +37,43 @@ export { DiscordConfigSchema } from "./bundled-channel-config-schema.js"; export type DiscordAccountConfig = NonNullable["discord"]>; +export type DiscordComponentMessageSpec = { + text?: string; + reusable?: boolean; + container?: { + accentColor?: string | number; + spoiler?: boolean; + }; + blocks?: unknown[]; + modal?: unknown; +}; + +export type DiscordComponentBuildResult = { + components: unknown[]; + entries: unknown[]; + modals: unknown[]; +}; + +export type DiscordComponentSendOpts = { + cfg?: OpenClawConfig; + accountId?: string; + replyTo?: string; + files?: unknown; + mediaReadFile?: (filePath: string) => Promise; + filename?: string; + textLimit?: number; + maxLinesPerMessage?: number; + tableMode?: unknown; + chunkMode?: unknown; + [key: string]: unknown; +}; + +export type DiscordComponentSendResult = { + id?: string; + channel_id?: string; + [key: string]: unknown; +}; + export type ResolvedDiscordAccount = { accountId: string; enabled: boolean; @@ -70,9 +103,29 @@ type DirectoryConfigParams = { accountId?: string | null; }; +type BuildDiscordComponentMessage = (params: { + spec: DiscordComponentMessageSpec; + fallbackText?: string; + sessionKey?: string; + agentId?: string; + accountId?: string; +}) => DiscordComponentBuildResult; + +type EditDiscordComponentMessage = ( + to: string, + messageId: string, + spec: DiscordComponentMessageSpec, + opts: DiscordComponentSendOpts, +) => Promise; + +type RegisterBuiltDiscordComponentMessage = (params: { + buildResult: DiscordComponentBuildResult; + messageId: string; +}) => void; + type DiscordApiFacadeModule = { collectDiscordStatusIssues: (accounts: ChannelAccountSnapshot[]) => ChannelStatusIssue[]; - buildDiscordComponentMessage: typeof import("../../extensions/discord/api.js").buildDiscordComponentMessage; + buildDiscordComponentMessage: BuildDiscordComponentMessage; discordOnboardingAdapter?: NonNullable["setup"]>; inspectDiscordAccount: (params: { cfg: OpenClawConfig; accountId?: string | null }) => unknown; listDiscordAccountIds: (cfg: OpenClawConfig) => string[]; @@ -95,8 +148,8 @@ type DiscordApiFacadeModule = { }; type DiscordRuntimeFacadeModule = { - editDiscordComponentMessage: typeof import("../../extensions/discord/runtime-api.js").editDiscordComponentMessage; - registerBuiltDiscordComponentMessage: typeof import("../../extensions/discord/runtime-api.js").registerBuiltDiscordComponentMessage; + editDiscordComponentMessage: EditDiscordComponentMessage; + registerBuiltDiscordComponentMessage: RegisterBuiltDiscordComponentMessage; autoBindSpawnedDiscordSubagent: (params: { cfg: OpenClawConfig; accountId?: string; diff --git a/src/plugin-sdk/telegram-account.ts b/src/plugin-sdk/telegram-account.ts index 915fbf754c9..341e487daa3 100644 --- a/src/plugin-sdk/telegram-account.ts +++ b/src/plugin-sdk/telegram-account.ts @@ -1,10 +1,24 @@ import type { OpenClawConfig } from "./config-types.js"; import { loadBundledPluginPublicSurfaceModuleSync } from "./facade-loader.js"; -export type { ResolvedTelegramAccount } from "../../extensions/telegram/api.js"; +export type TelegramAccountConfig = NonNullable< + NonNullable["telegram"] +>; + +export type ResolvedTelegramAccount = { + accountId: string; + enabled: boolean; + name?: string; + token: string; + tokenSource: "env" | "tokenFile" | "config" | "none"; + config: TelegramAccountConfig; +}; type TelegramAccountFacadeModule = { - resolveTelegramAccount: typeof import("../../extensions/telegram/api.js").resolveTelegramAccount; + resolveTelegramAccount: (params: { + cfg: OpenClawConfig; + accountId?: string | null; + }) => ResolvedTelegramAccount; }; function loadTelegramAccountFacadeModule(): TelegramAccountFacadeModule { @@ -21,6 +35,6 @@ function loadTelegramAccountFacadeModule(): TelegramAccountFacadeModule { export function resolveTelegramAccount(params: { cfg: OpenClawConfig; accountId?: string | null; -}): ReturnType { +}): ResolvedTelegramAccount { return loadTelegramAccountFacadeModule().resolveTelegramAccount(params); }