Wire Playwright MCP bridge into main.ts startup
This commit is contained in:
21
src/main.ts
21
src/main.ts
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user