Wire GoogleTokenStore and DeviceFlowClient into main
This commit is contained in:
27
src/main.ts
27
src/main.ts
@@ -10,7 +10,9 @@ import { JobStore } from "./scheduler/store.js";
|
||||
import { createOpenAiTranscriber } from "./stt/openai.js";
|
||||
import { BOT_COMMANDS, formatStatus, registerBridge } from "./telegram/bridge.js";
|
||||
import { Outbound } from "./telegram/outbound.js";
|
||||
import { createDeviceFlowClient, type DeviceFlowClient } from "./telegram/google-device-flow.js";
|
||||
import { createCalendarTool } from "./tools/calendar.js";
|
||||
import { createGoogleTokenStore, type GoogleTokenStore } from "./tools/google-token-store.js";
|
||||
import { createPlaywrightMcpBridge } from "./agent/playwright-mcp.js";
|
||||
import { createScheduleTool } from "./tools/schedule.js";
|
||||
import { createSendTool } from "./tools/send.js";
|
||||
@@ -83,11 +85,30 @@ async function main(): Promise<void> {
|
||||
chatId: config.telegramOwnerId,
|
||||
workspaceDir: config.workspaceDir,
|
||||
}));
|
||||
let deviceFlow: DeviceFlowClient | null = null;
|
||||
let tokenStore: GoogleTokenStore | null = null;
|
||||
if (config.google) {
|
||||
customTools.push(createCalendarTool(config.google, config.timezone));
|
||||
tokenStore = createGoogleTokenStore(config.workspaceDir);
|
||||
if (config.google.refreshToken && tokenStore.read() === null) {
|
||||
tokenStore.write(config.google.refreshToken);
|
||||
logger.warn(
|
||||
"GOOGLE_REFRESH_TOKEN env var seeded into workspace/.secretary/google-token.json. " +
|
||||
"You can remove GOOGLE_REFRESH_TOKEN from .env now — future updates come through /connect_calendar.",
|
||||
);
|
||||
}
|
||||
customTools.push(createCalendarTool({
|
||||
clientId: config.google.clientId,
|
||||
clientSecret: config.google.clientSecret,
|
||||
tokenStore,
|
||||
timezone: config.timezone,
|
||||
}));
|
||||
logger.info("calendar tool enabled");
|
||||
deviceFlow = createDeviceFlowClient({
|
||||
clientId: config.google.clientId,
|
||||
clientSecret: config.google.clientSecret,
|
||||
});
|
||||
} else {
|
||||
logger.info("calendar tool disabled (set GOOGLE_CLIENT_ID/SECRET/REFRESH_TOKEN to enable)");
|
||||
logger.info("calendar tool disabled (set GOOGLE_CLIENT_ID/SECRET to enable)");
|
||||
}
|
||||
|
||||
let playwrightDispose: (() => Promise<void>) | undefined;
|
||||
@@ -125,7 +146,7 @@ async function main(): Promise<void> {
|
||||
: undefined;
|
||||
if (!transcriber) logger.warn("OPENAI_API_KEY not set, voice messages will not be transcribed");
|
||||
|
||||
registerBridge({ bot, config, host, scheduler, outbound, transcriber, logger });
|
||||
registerBridge({ bot, config, host, scheduler, outbound, transcriber, logger, deviceFlow, tokenStore });
|
||||
await bot.api.setMyCommands(BOT_COMMANDS);
|
||||
await scheduler.start();
|
||||
logger.info(`scheduler ready with ${scheduler.list().length} job(s)`);
|
||||
|
||||
Reference in New Issue
Block a user