From cf57a11a0e831db7520465c3d13764f499d3f199 Mon Sep 17 00:00:00 2001 From: Ilya Kantor Date: Thu, 17 Apr 2025 22:49:02 +0200 Subject: [PATCH] Fix bug with stack overflow on console calls Fixed a bug with the multiple tool call within a single window. It was overwriting console with its own methods, so that `console.log` was causing a stack overflow due to calling itself. --- src/puppeteer/index.ts | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/puppeteer/index.ts b/src/puppeteer/index.ts index 1849c78398..e028b8fd03 100644 --- a/src/puppeteer/index.ts +++ b/src/puppeteer/index.ts @@ -351,17 +351,19 @@ async function handleToolCall(name: string, args: any): Promise case "puppeteer_evaluate": try { await page.evaluate(() => { - window.mcpHelper = { - logs: [], - originalConsole: { ...console }, - }; - - ['log', 'info', 'warn', 'error'].forEach(method => { - (console as any)[method] = (...args: any[]) => { - window.mcpHelper.logs.push(`[${method}] ${args.join(' ')}`); - (window.mcpHelper.originalConsole as any)[method](...args); + if (!window.mcpHelper) { + window.mcpHelper = { + logs: [], + originalConsole: { ...console }, }; - }); + + ['log', 'info', 'warn', 'error'].forEach(method => { + (console as any)[method] = (...args: any[]) => { + window.mcpHelper.logs.push(`[${method}] ${args.join(' ')}`); + (window.mcpHelper.originalConsole as any)[method](...args); + }; + }); + } }); const result = await page.evaluate(args.script);