refactor: route remaining channel imports through plugin sdk

This commit is contained in:
Peter Steinberger 2026-03-16 01:17:13 -07:00
parent f11589b311
commit a73d6620b3
No known key found for this signature in database
32 changed files with 233 additions and 92 deletions

View File

@ -7,9 +7,6 @@ import {
estimateTokens,
SessionManager,
} from "@mariozechner/pi-coding-agent";
import { resolveSignalReactionLevel } from "../../../extensions/signal/src/reaction-level.js";
import { resolveTelegramInlineButtonsScope } from "../../../extensions/telegram/src/inline-buttons.js";
import { resolveTelegramReactionLevel } from "../../../extensions/telegram/src/reaction-level.js";
import { resolveHeartbeatPrompt } from "../../auto-reply/heartbeat.js";
import type { ReasoningLevel, ThinkLevel } from "../../auto-reply/thinking.js";
import { resolveChannelCapabilities } from "../../config/channel-capabilities.js";
@ -22,6 +19,11 @@ import { createInternalHookEvent, triggerInternalHook } from "../../hooks/intern
import { getMachineDisplayName } from "../../infra/machine-name.js";
import { generateSecureToken } from "../../infra/secure-random.js";
import { getMemorySearchManager } from "../../memory/index.js";
import { resolveSignalReactionLevel } from "../../plugin-sdk/signal.js";
import {
resolveTelegramInlineButtonsScope,
resolveTelegramReactionLevel,
} from "../../plugin-sdk/telegram.js";
import { getGlobalHookRunner } from "../../plugins/hook-runner-global.js";
import { prepareProviderRuntimeAuth } from "../../plugins/provider-runtime.js";
import { type enqueueCommand, enqueueCommandInLane } from "../../process/command-queue.js";

View File

@ -7,9 +7,6 @@ import {
DefaultResourceLoader,
SessionManager,
} from "@mariozechner/pi-coding-agent";
import { resolveSignalReactionLevel } from "../../../../extensions/signal/src/reaction-level.js";
import { resolveTelegramInlineButtonsScope } from "../../../../extensions/telegram/src/inline-buttons.js";
import { resolveTelegramReactionLevel } from "../../../../extensions/telegram/src/reaction-level.js";
import { resolveHeartbeatPrompt } from "../../../auto-reply/heartbeat.js";
import { resolveChannelCapabilities } from "../../../config/channel-capabilities.js";
import type { OpenClawConfig } from "../../../config/config.js";
@ -19,6 +16,11 @@ import {
ensureGlobalUndiciStreamTimeouts,
} from "../../../infra/net/undici-global-dispatcher.js";
import { MAX_IMAGE_BYTES } from "../../../media/constants.js";
import { resolveSignalReactionLevel } from "../../../plugin-sdk/signal.js";
import {
resolveTelegramInlineButtonsScope,
resolveTelegramReactionLevel,
} from "../../../plugin-sdk/telegram.js";
import { getGlobalHookRunner } from "../../../plugins/hook-runner-global.js";
import type {
PluginHookAgentContext,

View File

@ -1,7 +1,7 @@
import path from "node:path";
import { fileURLToPath } from "node:url";
import type { ImageContent } from "@mariozechner/pi-ai";
import { loadWebMedia } from "../../../../extensions/whatsapp/src/media.js";
import { loadWebMedia } from "../../../plugin-sdk/web-media.js";
import { resolveUserPath } from "../../../utils.js";
import type { ImageSanitizationLimits } from "../../image-sanitization.js";
import {

View File

@ -1,5 +1,5 @@
import type { AgentToolResult } from "@mariozechner/pi-agent-core";
import { getPresence } from "../../../extensions/discord/src/monitor/presence-cache.js";
import type { DiscordActionConfig } from "../../config/config.js";
import {
addRoleDiscord,
createChannelDiscord,
@ -19,8 +19,8 @@ import {
setChannelPermissionDiscord,
uploadEmojiDiscord,
uploadStickerDiscord,
} from "../../../extensions/discord/src/send.js";
import type { DiscordActionConfig } from "../../config/config.js";
} from "../../plugin-sdk/discord.js";
import { getPresence } from "../../plugin-sdk/discord.js";
import {
type ActionGate,
jsonResult,

View File

@ -1,5 +1,7 @@
import type { AgentToolResult } from "@mariozechner/pi-agent-core";
import { readDiscordComponentSpec } from "../../../extensions/discord/src/components.js";
import type { DiscordActionConfig } from "../../config/config.js";
import type { OpenClawConfig } from "../../config/config.js";
import { readBooleanParam } from "../../plugin-sdk/boolean-param.js";
import {
createThreadDiscord,
deleteMessageDiscord,
@ -21,15 +23,9 @@ import {
sendStickerDiscord,
sendVoiceMessageDiscord,
unpinMessageDiscord,
} from "../../../extensions/discord/src/send.js";
import type {
DiscordSendComponents,
DiscordSendEmbeds,
} from "../../../extensions/discord/src/send.shared.js";
import { resolveDiscordChannelId } from "../../../extensions/discord/src/targets.js";
import type { DiscordActionConfig } from "../../config/config.js";
import type { OpenClawConfig } from "../../config/config.js";
import { readBooleanParam } from "../../plugin-sdk/boolean-param.js";
} from "../../plugin-sdk/discord.js";
import type { DiscordSendComponents, DiscordSendEmbeds } from "../../plugin-sdk/discord.js";
import { readDiscordComponentSpec, resolveDiscordChannelId } from "../../plugin-sdk/discord.js";
import { resolvePollMaxSelections } from "../../polls.js";
import { withNormalizedTimestamp } from "../date-time.js";
import { assertMediaNotDataUrl } from "../sandbox-paths.js";

View File

@ -1,11 +1,11 @@
import type { AgentToolResult } from "@mariozechner/pi-agent-core";
import type { DiscordActionConfig } from "../../config/config.js";
import {
banMemberDiscord,
hasAnyGuildPermissionDiscord,
kickMemberDiscord,
timeoutMemberDiscord,
} from "../../../extensions/discord/src/send.js";
import type { DiscordActionConfig } from "../../config/config.js";
} from "../../plugin-sdk/discord.js";
import { type ActionGate, jsonResult, readStringParam } from "./common.js";
import {
isDiscordModerationAction,

View File

@ -1,7 +1,7 @@
import type { Activity, UpdatePresenceData } from "@buape/carbon/gateway";
import type { AgentToolResult } from "@mariozechner/pi-agent-core";
import { getGateway } from "../../../extensions/discord/src/monitor/gateway-registry.js";
import type { DiscordActionConfig } from "../../config/config.js";
import { getGateway } from "../../plugin-sdk/discord.js";
import { type ActionGate, jsonResult, readStringParam } from "./common.js";
const ACTIVITY_TYPE_MAP: Record<string, number> = {

View File

@ -1,6 +1,6 @@
import type { AgentToolResult } from "@mariozechner/pi-agent-core";
import { createDiscordActionGate } from "../../../extensions/discord/src/accounts.js";
import type { OpenClawConfig } from "../../config/config.js";
import { createDiscordActionGate } from "../../plugin-sdk/discord.js";
import { readStringParam } from "./common.js";
import { handleDiscordGuildAction } from "./discord-actions-guild.js";
import { handleDiscordMessagingAction } from "./discord-actions-messaging.js";

View File

@ -1,7 +1,7 @@
import { type Context, complete } from "@mariozechner/pi-ai";
import { Type } from "@sinclair/typebox";
import { loadWebMedia } from "../../../extensions/whatsapp/src/media.js";
import type { OpenClawConfig } from "../../config/config.js";
import { loadWebMedia } from "../../plugin-sdk/web-media.js";
import { resolveUserPath } from "../../utils.js";
import { isMinimaxVlmModel, isMinimaxVlmProvider, minimaxUnderstandImage } from "../minimax-vlm.js";
import {

View File

@ -1,6 +1,6 @@
import { type Api, type Model } from "@mariozechner/pi-ai";
import { getDefaultLocalRoots } from "../../../extensions/whatsapp/src/media.js";
import type { OpenClawConfig } from "../../config/config.js";
import { getDefaultLocalRoots } from "../../plugin-sdk/web-media.js";
import type { ImageModelConfig } from "./image-tool.helpers.js";
import { getApiKeyForModel, normalizeWorkspaceDir, requireApiKey } from "./tool-runtime.helpers.js";

View File

@ -1,8 +1,8 @@
import { type Context, complete } from "@mariozechner/pi-ai";
import { Type } from "@sinclair/typebox";
import { loadWebMediaRaw } from "../../../extensions/whatsapp/src/media.js";
import type { OpenClawConfig } from "../../config/config.js";
import { extractPdfContent, type PdfExtractedContent } from "../../media/pdf-extract.js";
import { loadWebMediaRaw } from "../../plugin-sdk/web-media.js";
import { resolveUserPath } from "../../utils.js";
import {
coerceImageModelConfig,

View File

@ -1,5 +1,5 @@
import type { AgentToolResult } from "@mariozechner/pi-agent-core";
import { resolveSlackAccount } from "../../../extensions/slack/src/accounts.js";
import type { OpenClawConfig } from "../../config/config.js";
import {
deleteSlackMessage,
downloadSlackFile,
@ -15,11 +15,14 @@ import {
removeSlackReaction,
sendSlackMessage,
unpinSlackMessage,
} from "../../../extensions/slack/src/actions.js";
import { parseSlackBlocksInput } from "../../../extensions/slack/src/blocks-input.js";
import { recordSlackThreadParticipation } from "../../../extensions/slack/src/sent-thread-cache.js";
import { parseSlackTarget, resolveSlackChannelId } from "../../../extensions/slack/src/targets.js";
import type { OpenClawConfig } from "../../config/config.js";
} from "../../plugin-sdk/slack.js";
import {
parseSlackBlocksInput,
parseSlackTarget,
recordSlackThreadParticipation,
resolveSlackAccount,
resolveSlackChannelId,
} from "../../plugin-sdk/slack.js";
import { withNormalizedTimestamp } from "../date-time.js";
import {
createActionGate,

View File

@ -1,17 +1,15 @@
import type { AgentToolResult } from "@mariozechner/pi-agent-core";
import type { OpenClawConfig } from "../../config/config.js";
import { readBooleanParam } from "../../plugin-sdk/boolean-param.js";
import {
createTelegramActionGate,
resolveTelegramPollActionGateState,
} from "../../../extensions/telegram/src/accounts.js";
import type {
TelegramButtonStyle,
TelegramInlineButtons,
} from "../../../extensions/telegram/src/button-types.js";
} from "../../plugin-sdk/telegram.js";
import type { TelegramButtonStyle, TelegramInlineButtons } from "../../plugin-sdk/telegram.js";
import {
resolveTelegramInlineButtonsScope,
resolveTelegramTargetChatType,
} from "../../../extensions/telegram/src/inline-buttons.js";
import { resolveTelegramReactionLevel } from "../../../extensions/telegram/src/reaction-level.js";
} from "../../plugin-sdk/telegram.js";
import {
createForumTopicTelegram,
deleteMessageTelegram,
@ -21,11 +19,13 @@ import {
sendMessageTelegram,
sendPollTelegram,
sendStickerTelegram,
} from "../../../extensions/telegram/src/send.js";
import { getCacheStats, searchStickers } from "../../../extensions/telegram/src/sticker-cache.js";
import { resolveTelegramToken } from "../../../extensions/telegram/src/token.js";
import type { OpenClawConfig } from "../../config/config.js";
import { readBooleanParam } from "../../plugin-sdk/boolean-param.js";
} from "../../plugin-sdk/telegram.js";
import {
getCacheStats,
resolveTelegramReactionLevel,
resolveTelegramToken,
searchStickers,
} from "../../plugin-sdk/telegram.js";
import { resolvePollMaxSelections } from "../../polls.js";
import {
jsonResult,

View File

@ -1,6 +1,6 @@
import type { AgentToolResult } from "@mariozechner/pi-agent-core";
import { sendReactionWhatsApp } from "../../../extensions/whatsapp/src/send.js";
import type { OpenClawConfig } from "../../config/config.js";
import { sendReactionWhatsApp } from "../../plugin-sdk/whatsapp.js";
import { createActionGate, jsonResult, readReactionParams, readStringParam } from "./common.js";
import { resolveAuthorizedWhatsAppOutboundTarget } from "./whatsapp-target-auth.js";

View File

@ -1,5 +1,5 @@
import { resolveWhatsAppAccount } from "../../../extensions/whatsapp/src/accounts.js";
import type { OpenClawConfig } from "../../config/config.js";
import { resolveWhatsAppAccount } from "../../plugin-sdk/whatsapp.js";
import { resolveWhatsAppOutboundTarget } from "../../whatsapp/resolve-outbound-target.js";
import { ToolAuthorizationError } from "./common.js";

View File

@ -7,19 +7,11 @@ export {
monitorWebChannel,
resolveHeartbeatRecipients,
runWebHeartbeatOnce,
type WebChannelStatus,
type WebMonitorTuning,
} from "../extensions/whatsapp/src/auto-reply.js";
export {
extractMediaPlaceholder,
extractText,
monitorWebInbox,
type WebInboundMessage,
type WebListenerCloseReason,
} from "../extensions/whatsapp/src/inbound.js";
export { loginWeb } from "../extensions/whatsapp/src/login.js";
export { loadWebMedia, optimizeImageToJpeg } from "../extensions/whatsapp/src/media.js";
export { sendMessageWhatsApp } from "../extensions/whatsapp/src/send.js";
} from "./plugin-sdk/whatsapp.js";
export { extractMediaPlaceholder, extractText, monitorWebInbox } from "./plugin-sdk/whatsapp.js";
export { loginWeb } from "./plugin-sdk/whatsapp.js";
export { loadWebMedia, optimizeImageToJpeg } from "./plugin-sdk/whatsapp.js";
export { sendMessageWhatsApp } from "./plugin-sdk/whatsapp.js";
export {
createWaSocket,
formatError,
@ -30,4 +22,4 @@ export {
WA_WEB_AUTH_DIR,
waitForWaConnection,
webAuthExists,
} from "../extensions/whatsapp/src/session.js";
} from "./plugin-sdk/whatsapp.js";

View File

@ -1,2 +1,2 @@
// Public entrypoint for the Discord channel action adapter.
export * from "../../../../extensions/discord/src/channel-actions.js";
export * from "../../../plugin-sdk/discord.js";

View File

@ -1,2 +1,2 @@
// Public entrypoint for the Telegram channel action adapter.
export * from "../../../../extensions/telegram/src/channel-actions.js";
export * from "../../../plugin-sdk/telegram.js";

View File

@ -1,2 +1,2 @@
// Shim: re-exports from extensions/whatsapp/src/agent-tools-login.ts
export * from "../../../../extensions/whatsapp/src/agent-tools-login.js";
// Shim: keep legacy import path while the runtime loads the plugin SDK surface.
export * from "../../../plugin-sdk/whatsapp.js";

View File

@ -1,4 +1,2 @@
export {
inspectDiscordAccount,
type InspectedDiscordAccount,
} from "../../extensions/discord/src/account-inspect.js";
export { inspectDiscordAccount } from "../plugin-sdk/discord.js";
export type { InspectedDiscordAccount } from "../plugin-sdk/discord.js";

View File

@ -1,4 +1,2 @@
export {
inspectSlackAccount,
type InspectedSlackAccount,
} from "../../extensions/slack/src/account-inspect.js";
export { inspectSlackAccount } from "../plugin-sdk/slack.js";
export type { InspectedSlackAccount } from "../plugin-sdk/slack.js";

View File

@ -1,4 +1,2 @@
export {
inspectTelegramAccount,
type InspectedTelegramAccount,
} from "../../extensions/telegram/src/account-inspect.js";
export { inspectTelegramAccount } from "../plugin-sdk/telegram.js";
export type { InspectedTelegramAccount } from "../plugin-sdk/telegram.js";

View File

@ -19,32 +19,32 @@ const sendFns = vi.hoisted(() => ({
imessage: vi.fn(async () => ({ messageId: "i1", chatId: "imessage:1" })),
}));
vi.mock("../channels/web/index.js", () => {
vi.mock("../plugin-sdk/whatsapp.js", () => {
moduleLoads.whatsapp();
return { sendMessageWhatsApp: sendFns.whatsapp };
});
vi.mock("../../extensions/telegram/src/send.js", () => {
vi.mock("../plugin-sdk/telegram.js", () => {
moduleLoads.telegram();
return { sendMessageTelegram: sendFns.telegram };
});
vi.mock("../../extensions/discord/src/send.js", () => {
vi.mock("../plugin-sdk/discord.js", () => {
moduleLoads.discord();
return { sendMessageDiscord: sendFns.discord };
});
vi.mock("../../extensions/slack/src/send.js", () => {
vi.mock("../plugin-sdk/slack.js", () => {
moduleLoads.slack();
return { sendMessageSlack: sendFns.slack };
});
vi.mock("../../extensions/signal/src/send.js", () => {
vi.mock("../plugin-sdk/signal.js", () => {
moduleLoads.signal();
return { sendMessageSignal: sendFns.signal };
});
vi.mock("../../extensions/imessage/src/send.js", () => {
vi.mock("../plugin-sdk/imessage.js", () => {
moduleLoads.imessage();
return { sendMessageIMessage: sendFns.imessage };
});

View File

@ -35,32 +35,32 @@ export function createDefaultDeps(): CliDeps {
return {
whatsapp: createLazySender(
"whatsapp",
() => import("../channels/web/index.js") as Promise<Record<string, unknown>>,
() => import("../plugin-sdk/whatsapp.js") as Promise<Record<string, unknown>>,
"sendMessageWhatsApp",
),
telegram: createLazySender(
"telegram",
() => import("../../extensions/telegram/src/send.js") as Promise<Record<string, unknown>>,
() => import("../plugin-sdk/telegram.js") as Promise<Record<string, unknown>>,
"sendMessageTelegram",
),
discord: createLazySender(
"discord",
() => import("../../extensions/discord/src/send.js") as Promise<Record<string, unknown>>,
() => import("../plugin-sdk/discord.js") as Promise<Record<string, unknown>>,
"sendMessageDiscord",
),
slack: createLazySender(
"slack",
() => import("../../extensions/slack/src/send.js") as Promise<Record<string, unknown>>,
() => import("../plugin-sdk/slack.js") as Promise<Record<string, unknown>>,
"sendMessageSlack",
),
signal: createLazySender(
"signal",
() => import("../../extensions/signal/src/send.js") as Promise<Record<string, unknown>>,
() => import("../plugin-sdk/signal.js") as Promise<Record<string, unknown>>,
"sendMessageSignal",
),
imessage: createLazySender(
"imessage",
() => import("../../extensions/imessage/src/send.js") as Promise<Record<string, unknown>>,
() => import("../plugin-sdk/imessage.js") as Promise<Record<string, unknown>>,
"sendMessageIMessage",
),
};
@ -70,4 +70,4 @@ export function createOutboundSendDeps(deps: CliDeps): OutboundSendDeps {
return createOutboundSendDepsFromCliSource(deps);
}
export { logWebSelfId } from "../../extensions/whatsapp/src/auth-store.js";
export { logWebSelfId } from "../plugin-sdk/whatsapp.js";

View File

@ -8,12 +8,12 @@ import {
import { createServer as createHttpsServer } from "node:https";
import type { TlsOptions } from "node:tls";
import type { WebSocketServer } from "ws";
import { handleSlackHttpRequest } from "../../extensions/slack/src/http/index.js";
import { resolveAgentAvatar } from "../agents/identity-avatar.js";
import { CANVAS_WS_PATH, handleA2uiHttpRequest } from "../canvas-host/a2ui.js";
import type { CanvasHostHandler } from "../canvas-host/server.js";
import { loadConfig } from "../config/config.js";
import type { createSubsystemLogger } from "../logging/subsystem.js";
import { handleSlackHttpRequest } from "../plugin-sdk/slack.js";
import { safeEqualSecret } from "../security/secret-equal.js";
import {
AUTH_RATE_LIMIT_SCOPE_HOOK_AUTH,

View File

@ -3,9 +3,14 @@ export type { OpenClawConfig } from "../config/config.js";
export type { DiscordAccountConfig, DiscordActionConfig } from "../config/types.js";
export type { InspectedDiscordAccount } from "../../extensions/discord/src/account-inspect.js";
export type { ResolvedDiscordAccount } from "../../extensions/discord/src/accounts.js";
export type {
DiscordSendComponents,
DiscordSendEmbeds,
} from "../../extensions/discord/src/send.shared.js";
export * from "./channel-plugin-common.js";
export {
createDiscordActionGate,
listDiscordAccountIds,
resolveDefaultDiscordAccountId,
resolveDiscordAccount,
@ -50,6 +55,55 @@ export {
listThreadBindingsBySessionKey,
unbindThreadBindingsBySessionKey,
} from "../../extensions/discord/src/monitor/thread-bindings.js";
export { getGateway } from "../../extensions/discord/src/monitor/gateway-registry.js";
export { getPresence } from "../../extensions/discord/src/monitor/presence-cache.js";
export { readDiscordComponentSpec } from "../../extensions/discord/src/components.js";
export { resolveDiscordChannelId } from "../../extensions/discord/src/targets.js";
export {
addRoleDiscord,
banMemberDiscord,
createChannelDiscord,
createScheduledEventDiscord,
createThreadDiscord,
deleteChannelDiscord,
deleteMessageDiscord,
editChannelDiscord,
editMessageDiscord,
fetchChannelInfoDiscord,
fetchChannelPermissionsDiscord,
fetchMemberInfoDiscord,
fetchMessageDiscord,
fetchReactionsDiscord,
fetchRoleInfoDiscord,
fetchVoiceStatusDiscord,
hasAnyGuildPermissionDiscord,
kickMemberDiscord,
listGuildChannelsDiscord,
listGuildEmojisDiscord,
listPinsDiscord,
listScheduledEventsDiscord,
listThreadsDiscord,
moveChannelDiscord,
pinMessageDiscord,
reactMessageDiscord,
readMessagesDiscord,
removeChannelPermissionDiscord,
removeOwnReactionsDiscord,
removeReactionDiscord,
removeRoleDiscord,
searchMessagesDiscord,
sendDiscordComponentMessage,
sendMessageDiscord,
sendPollDiscord,
sendStickerDiscord,
sendVoiceMessageDiscord,
setChannelPermissionDiscord,
timeoutMemberDiscord,
unpinMessageDiscord,
uploadEmojiDiscord,
uploadStickerDiscord,
} from "../../extensions/discord/src/send.js";
export { discordMessageActions } from "../../extensions/discord/src/channel-actions.js";
export type {
ThreadBindingManager,
ThreadBindingRecord,

View File

@ -28,6 +28,7 @@ export type {
ChatSenderAllowParams,
ParsedChatTarget,
} from "../../extensions/imessage/src/target-parsing-helpers.js";
export { sendMessageIMessage } from "../../extensions/imessage/src/send.js";
export {
resolveAllowlistProviderRuntimeGroupPolicy,

View File

@ -13,6 +13,7 @@ export {
removeReactionSignal,
sendReactionSignal,
} from "../../extensions/signal/src/send-reactions.js";
export { sendMessageSignal } from "../../extensions/signal/src/send.js";
export {
looksLikeSignalTargetId,
normalizeSignalMessagingTarget,

View File

@ -31,6 +31,26 @@ export {
listSlackMessageActions,
} from "../../extensions/slack/src/message-actions.js";
export { buildSlackThreadingToolContext } from "../../extensions/slack/src/threading-tool-context.js";
export { parseSlackBlocksInput } from "../../extensions/slack/src/blocks-input.js";
export { handleSlackHttpRequest } from "../../extensions/slack/src/http/index.js";
export { sendMessageSlack } from "../../extensions/slack/src/send.js";
export {
deleteSlackMessage,
downloadSlackFile,
editSlackMessage,
getSlackMemberInfo,
listSlackEmojis,
listSlackPins,
listSlackReactions,
pinSlackMessage,
reactSlackMessage,
readSlackMessages,
removeOwnSlackReactions,
removeSlackReaction,
sendSlackMessage,
unpinSlackMessage,
} from "../../extensions/slack/src/actions.js";
export { recordSlackThreadParticipation } from "../../extensions/slack/src/sent-thread-cache.js";
export { buildComputedAccountStatusSnapshot } from "./status-helpers.js";
export {

View File

@ -11,6 +11,10 @@ export type { TelegramAccountConfig, TelegramActionConfig } from "../config/type
export type { InspectedTelegramAccount } from "../../extensions/telegram/src/account-inspect.js";
export type { ResolvedTelegramAccount } from "../../extensions/telegram/src/accounts.js";
export type { TelegramProbe } from "../../extensions/telegram/src/probe.js";
export type {
TelegramButtonStyle,
TelegramInlineButtons,
} from "../../extensions/telegram/src/button-types.js";
export { emptyPluginConfigSchema } from "../plugins/config-schema.js";
@ -32,8 +36,10 @@ export { PAIRING_APPROVED_MESSAGE } from "../channels/plugins/pairing-message.js
export { getChatChannelMeta } from "../channels/registry.js";
export {
createTelegramActionGate,
listTelegramAccountIds,
resolveDefaultTelegramAccountId,
resolveTelegramPollActionGateState,
resolveTelegramAccount,
} from "../../extensions/telegram/src/accounts.js";
export { inspectTelegramAccount } from "../../extensions/telegram/src/account-inspect.js";
@ -58,6 +64,24 @@ export {
normalizeTelegramAllowFromEntry,
} from "../../extensions/telegram/src/allow-from.js";
export { fetchTelegramChatId } from "../../extensions/telegram/src/api-fetch.js";
export {
resolveTelegramInlineButtonsScope,
resolveTelegramTargetChatType,
} from "../../extensions/telegram/src/inline-buttons.js";
export { resolveTelegramReactionLevel } from "../../extensions/telegram/src/reaction-level.js";
export {
createForumTopicTelegram,
deleteMessageTelegram,
editForumTopicTelegram,
editMessageTelegram,
reactMessageTelegram,
sendMessageTelegram,
sendPollTelegram,
sendStickerTelegram,
} from "../../extensions/telegram/src/send.js";
export { getCacheStats, searchStickers } from "../../extensions/telegram/src/sticker-cache.js";
export { resolveTelegramToken } from "../../extensions/telegram/src/token.js";
export { telegramMessageActions } from "../../extensions/telegram/src/channel-actions.js";
export { collectTelegramStatusIssues } from "../../extensions/telegram/src/status-issues.js";
export { sendTelegramPayloadMessages } from "../../extensions/telegram/src/outbound-adapter.js";
export {

View File

@ -1 +1,6 @@
export { loadWebMedia, type WebMediaResult } from "../../extensions/whatsapp/src/media.js";
export {
getDefaultLocalRoots,
loadWebMedia,
loadWebMediaRaw,
type WebMediaResult,
} from "../../extensions/whatsapp/src/media.js";

View File

@ -31,6 +31,53 @@ export {
listEnabledWhatsAppAccounts,
resolveWhatsAppAccount,
} from "../../extensions/whatsapp/src/accounts.js";
export {
WA_WEB_AUTH_DIR,
logWebSelfId,
logoutWeb,
pickWebChannel,
webAuthExists,
} from "../../extensions/whatsapp/src/auth-store.js";
export {
DEFAULT_WEB_MEDIA_BYTES,
HEARTBEAT_PROMPT,
HEARTBEAT_TOKEN,
monitorWebChannel,
resolveHeartbeatRecipients,
runWebHeartbeatOnce,
} from "../../extensions/whatsapp/src/auto-reply.js";
export type {
WebChannelStatus,
WebMonitorTuning,
} from "../../extensions/whatsapp/src/auto-reply.js";
export {
extractMediaPlaceholder,
extractText,
monitorWebInbox,
} from "../../extensions/whatsapp/src/inbound.js";
export type {
WebInboundMessage,
WebListenerCloseReason,
} from "../../extensions/whatsapp/src/inbound.js";
export { loginWeb } from "../../extensions/whatsapp/src/login.js";
export {
getDefaultLocalRoots,
loadWebMedia,
loadWebMediaRaw,
optimizeImageToJpeg,
} from "../../extensions/whatsapp/src/media.js";
export {
sendMessageWhatsApp,
sendPollWhatsApp,
sendReactionWhatsApp,
} from "../../extensions/whatsapp/src/send.js";
export {
createWaSocket,
formatError,
getStatusCode,
waitForWaConnection,
} from "../../extensions/whatsapp/src/session.js";
export { createWhatsAppLoginTool } from "../../extensions/whatsapp/src/agent-tools-login.js";
export { normalizeWhatsAppAllowFromEntries } from "../channels/plugins/normalize/whatsapp.js";
export {
collectAllowlistProviderGroupPolicyWarnings,