import { getActiveWebListener } from "../../../extensions/whatsapp/src/active-listener.js"; import { getWebAuthAgeMs, logoutWeb, logWebSelfId, readWebSelfId, webAuthExists, } from "../../../extensions/whatsapp/src/auth-store.js"; import { createRuntimeWhatsAppLoginTool } from "./runtime-whatsapp-login-tool.js"; import type { PluginRuntime } from "./types.js"; const sendMessageWhatsAppLazy: PluginRuntime["channel"]["whatsapp"]["sendMessageWhatsApp"] = async ( ...args ) => { const { sendMessageWhatsApp } = await loadWebOutbound(); return sendMessageWhatsApp(...args); }; const sendPollWhatsAppLazy: PluginRuntime["channel"]["whatsapp"]["sendPollWhatsApp"] = async ( ...args ) => { const { sendPollWhatsApp } = await loadWebOutbound(); return sendPollWhatsApp(...args); }; const loginWebLazy: PluginRuntime["channel"]["whatsapp"]["loginWeb"] = async (...args) => { const { loginWeb } = await loadWebLogin(); return loginWeb(...args); }; const startWebLoginWithQrLazy: PluginRuntime["channel"]["whatsapp"]["startWebLoginWithQr"] = async ( ...args ) => { const { startWebLoginWithQr } = await loadWebLoginQr(); return startWebLoginWithQr(...args); }; const waitForWebLoginLazy: PluginRuntime["channel"]["whatsapp"]["waitForWebLogin"] = async ( ...args ) => { const { waitForWebLogin } = await loadWebLoginQr(); return waitForWebLogin(...args); }; const monitorWebChannelLazy: PluginRuntime["channel"]["whatsapp"]["monitorWebChannel"] = async ( ...args ) => { const { monitorWebChannel } = await loadWebChannel(); return monitorWebChannel(...args); }; const handleWhatsAppActionLazy: PluginRuntime["channel"]["whatsapp"]["handleWhatsAppAction"] = async (...args) => { const { handleWhatsAppAction } = await loadWhatsAppActions(); return handleWhatsAppAction(...args); }; let webLoginQrPromise: Promise< typeof import("../../../extensions/whatsapp/src/login-qr.js") > | null = null; let webChannelPromise: Promise | null = null; let webOutboundPromise: Promise | null = null; let webLoginPromise: Promise | null = null; let whatsappActionsPromise: Promise< typeof import("../../agents/tools/whatsapp-actions.js") > | null = null; function loadWebOutbound() { webOutboundPromise ??= import("./runtime-whatsapp-outbound.runtime.js"); return webOutboundPromise; } function loadWebLogin() { webLoginPromise ??= import("./runtime-whatsapp-login.runtime.js"); return webLoginPromise; } function loadWebLoginQr() { webLoginQrPromise ??= import("../../../extensions/whatsapp/src/login-qr.js"); return webLoginQrPromise; } function loadWebChannel() { webChannelPromise ??= import("../../channels/web/index.js"); return webChannelPromise; } function loadWhatsAppActions() { whatsappActionsPromise ??= import("../../agents/tools/whatsapp-actions.js"); return whatsappActionsPromise; } export function createRuntimeWhatsApp(): PluginRuntime["channel"]["whatsapp"] { return { getActiveWebListener, getWebAuthAgeMs, logoutWeb, logWebSelfId, readWebSelfId, webAuthExists, sendMessageWhatsApp: sendMessageWhatsAppLazy, sendPollWhatsApp: sendPollWhatsAppLazy, loginWeb: loginWebLazy, startWebLoginWithQr: startWebLoginWithQrLazy, waitForWebLogin: waitForWebLoginLazy, monitorWebChannel: monitorWebChannelLazy, handleWhatsAppAction: handleWhatsAppActionLazy, createLoginTool: createRuntimeWhatsAppLoginTool, }; }