Wire Playwright MCP bridge into main.ts startup

This commit is contained in:
EugeneTes
2026-09-08 10:52:03 +00:00
parent a3ce614171
commit 8106c55e46

View File

@@ -11,6 +11,7 @@ import { createOpenAiTranscriber } from "./stt/openai.js";
import { BOT_COMMANDS, formatStatus, registerBridge } from "./telegram/bridge.js";
import { Outbound } from "./telegram/outbound.js";
import { createCalendarTool } from "./tools/calendar.js";
import { createPlaywrightMcpBridge } from "./agent/playwright-mcp.js";
import { createScheduleTool } from "./tools/schedule.js";
import { ensureWorkspace } from "./workspace.js";
@@ -66,6 +67,7 @@ async function main(): Promise<void> {
logger.info(`shutting down (${reason})`);
await bot.stop().catch(() => undefined);
await Promise.race([host?.abort().catch(() => undefined), sleep(5000)]);
await playwrightDispose?.().catch((err) => logger.warn("playwright dispose failed", err));
await scheduler.stop();
// Give in-flight Telegram API calls (the online message, a reply being sent, progress-message
// cleanup triggered by the abort) time to finish before the process exits.
@@ -81,6 +83,25 @@ async function main(): Promise<void> {
} else {
logger.info("calendar tool disabled (set GOOGLE_CLIENT_ID/SECRET/REFRESH_TOKEN to enable)");
}
let playwrightDispose: (() => Promise<void>) | undefined;
if (config.playwright?.enabled) {
try {
const bridge = await createPlaywrightMcpBridge({
headless: config.playwright.headless,
browser: config.playwright.browser,
extraArgs: config.playwright.extraArgs,
logger,
});
customTools.push(...bridge.tools);
playwrightDispose = bridge.dispose;
logger.info(`playwright tools enabled (${bridge.tools.length} tools)`);
} catch (err) {
logger.error("playwright bridge failed to start, continuing without browser tools", err);
}
} else {
logger.info("playwright tools disabled (set PLAYWRIGHT_ENABLED=true to enable)");
}
const backend = createPiBackend({
workspaceDir: config.workspaceDir,
piModel: config.piModel,