import type { ClawdbotConfig } from "../config/config.js"; import { sendMessageDiscord } from "../discord/send.js"; import { sendMessageIMessage } from "../imessage/send.js"; import type { OutboundSendDeps } from "../infra/outbound/deliver.js"; import { sendMessageMSTeams } from "../msteams/send.js"; import { logWebSelfId, sendMessageWhatsApp } from "../providers/web/index.js"; import { sendMessageSignal } from "../signal/send.js"; import { sendMessageSlack } from "../slack/send.js"; import { sendMessageTelegram } from "../telegram/send.js"; export type CliDeps = { sendMessageWhatsApp: typeof sendMessageWhatsApp; sendMessageTelegram: typeof sendMessageTelegram; sendMessageDiscord: typeof sendMessageDiscord; sendMessageSlack: typeof sendMessageSlack; sendMessageSignal: typeof sendMessageSignal; sendMessageIMessage: typeof sendMessageIMessage; sendMessageMSTeams: typeof sendMessageMSTeams; }; export function createDefaultDeps(): CliDeps { return { sendMessageWhatsApp, sendMessageTelegram, sendMessageDiscord, sendMessageSlack, sendMessageSignal, sendMessageIMessage, sendMessageMSTeams, }; } // Provider docking: extend this mapping when adding new outbound send deps. export function createOutboundSendDeps( deps: CliDeps, cfg: ClawdbotConfig, ): OutboundSendDeps { return { sendWhatsApp: deps.sendMessageWhatsApp, sendTelegram: deps.sendMessageTelegram, sendDiscord: deps.sendMessageDiscord, sendSlack: deps.sendMessageSlack, sendSignal: deps.sendMessageSignal, sendIMessage: deps.sendMessageIMessage, // Provider docking: MS Teams send requires full cfg (credentials), wrap to match OutboundSendDeps. sendMSTeams: deps.sendMessageMSTeams ? async (to, text, opts) => await deps.sendMessageMSTeams({ cfg, to, text, mediaUrl: opts?.mediaUrl, }) : undefined, }; } export { logWebSelfId };