Skip to content

Commit f541a60

Browse files
Fix
1 parent 87ca283 commit f541a60

26 files changed

Lines changed: 112 additions & 106 deletions

src/McpContext.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ export class McpContext implements Context {
157157
}
158158
void this.#createMcpPage(page);
159159
} catch (err) {
160-
this.logger?.('Error handling targetcreated', err);
160+
this.logger()?.('Error handling targetcreated', err);
161161
}
162162
};
163163

@@ -179,7 +179,7 @@ export class McpContext implements Context {
179179
this.#mcpPages.delete(foundPage);
180180
}
181181
} catch (err) {
182-
this.logger?.('Error handling targetdestroyed', err);
182+
this.logger()?.('Error handling targetdestroyed', err);
183183
}
184184
};
185185

@@ -554,7 +554,7 @@ export class McpContext implements Context {
554554
allPages.push(page);
555555
}
556556
} catch (e) {
557-
this.logger?.('Failed to get page for extension target', e);
557+
this.logger()?.('Failed to get page for extension target', e);
558558
}
559559
}),
560560
);
@@ -600,7 +600,7 @@ export class McpContext implements Context {
600600
await fs.writeFile(filePath, data);
601601
return {filename: filePath};
602602
} catch (err) {
603-
this.logger?.(err);
603+
this.logger()?.(err);
604604
throw new Error('Could not save a file', {cause: err});
605605
}
606606
}

src/McpPage.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ export class McpPage implements ContextPage {
183183
async #initFocusEmulationNoThrow(): Promise<void> {
184184
// We emulate a focused page for all pages to support multi-agent workflows.
185185
void this.pptrPage.emulateFocusedPage(true).catch(error => {
186-
logger?.('Error turning on focused page emulation', error);
186+
logger()?.('Error turning on focused page emulation', error);
187187
});
188188
}
189189

@@ -195,7 +195,7 @@ export class McpPage implements ContextPage {
195195
const session = await this.pptrPage.createCDPSession();
196196
this.#devtoolsUniverse = await createTargetUniverse(session);
197197
} catch (e) {
198-
logger?.('Failed to initialize DevTools universe', e);
198+
logger()?.('Failed to initialize DevTools universe', e);
199199
}
200200
}
201201

@@ -327,15 +327,15 @@ export class McpPage implements ContextPage {
327327

328328
resolveCdpRequestId(cdpRequestId: string): number | undefined {
329329
if (!cdpRequestId) {
330-
logger?.('no network request');
330+
logger()?.('no network request');
331331
return;
332332
}
333333
const request = this.networkCollector.find(request => {
334334
// @ts-expect-error id is internal.
335335
return request.id === cdpRequestId;
336336
});
337337
if (!request) {
338-
logger?.('no network request for ' + cdpRequestId);
338+
logger()?.('no network request for ' + cdpRequestId);
339339
return;
340340
}
341341
return this.networkCollector.getIdForResource(request);
@@ -566,23 +566,23 @@ export class McpPage implements ContextPage {
566566
for (const handle of oldHandles) {
567567
await handle
568568
.dispose()
569-
.catch(e => logger?.('Failed to dispose old handle', e));
569+
.catch(e => logger()?.('Failed to dispose old handle', e));
570570
}
571571
}
572572

573573
const cdpElementIds = await Promise.all(
574574
elementHandles.map(async (elementHandle, index) => {
575575
const backendNodeId = await elementHandle.backendNodeId();
576576
if (!backendNodeId) {
577-
logger?.(
577+
logger()?.(
578578
`No backendNodeId for stashed DOM element with index ${index}`,
579579
);
580580
return `stashed-${index}`;
581581
}
582582
const cdpElementId =
583583
this.textSnapshot?.resolveCdpElementId(backendNodeId);
584584
if (!cdpElementId) {
585-
logger?.(
585+
logger()?.(
586586
`Could not get cdpElementId for backend node ${backendNodeId}`,
587587
);
588588
return `stashed-${index}`;
@@ -655,10 +655,10 @@ export class McpPage implements ContextPage {
655655

656656
async getDevToolsData(): Promise<DevToolsData> {
657657
try {
658-
logger?.('Getting DevTools UI data');
658+
logger()?.('Getting DevTools UI data');
659659
const devtoolsPage = await this.getDevToolsPage();
660660
if (!devtoolsPage) {
661-
logger?.('No DevTools page detected');
661+
logger()?.('No DevTools page detected');
662662
return {};
663663
}
664664
const {cdpRequestId, cdpBackendNodeId} = await devtoolsPage.evaluate(
@@ -681,7 +681,7 @@ export class McpPage implements ContextPage {
681681
);
682682
return {cdpBackendNodeId, cdpRequestId};
683683
} catch (err) {
684-
logger?.('error getting devtools data', err);
684+
logger()?.('error getting devtools data', err);
685685
}
686686
return {};
687687
}

src/PageCollector.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ class PageEventSubscriber {
259259
inspectorIssue,
260260
)[0];
261261
if (!issue) {
262-
logger?.('No issue mapping for for the issue: ', inspectorIssue.code);
262+
logger()?.('No issue mapping for for the issue: ', inspectorIssue.code);
263263
return;
264264
}
265265

@@ -277,7 +277,7 @@ class PageEventSubscriber {
277277
},
278278
);
279279
} catch (error) {
280-
logger?.('Error creating a new issue', error);
280+
logger()?.('Error creating a new issue', error);
281281
}
282282
};
283283
}

src/TextSnapshot.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ export class TextSnapshot {
150150

151151
resolveCdpElementId(cdpBackendNodeId: number): string | undefined {
152152
if (!cdpBackendNodeId) {
153-
logger?.('no cdpBackendNodeId');
153+
logger()?.('no cdpBackendNodeId');
154154
return;
155155
}
156156
// TODO: index by backendNodeId instead.
@@ -281,7 +281,7 @@ export class TextSnapshot {
281281
collect(node);
282282
}
283283
} catch (e) {
284-
logger?.(
284+
logger()?.(
285285
`Failed to collect descendants for backend node ${backendNodeId}`,
286286
e,
287287
);

src/ToolHandler.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,11 +209,11 @@ export class ToolHandler {
209209
const startTime = Date.now();
210210
let success = false;
211211
try {
212-
logger?.(
212+
logger()?.(
213213
`${this.tool.name} request: ${JSON.stringify(params, null, ' ')}`,
214214
);
215215
const context = await this.getContext();
216-
logger?.(`${this.tool.name} context: resolved`);
216+
logger()?.(`${this.tool.name} context: resolved`);
217217
const response = this.serverArgs.slim
218218
? new SlimMcpResponse(this.serverArgs)
219219
: new McpResponse(this.serverArgs);
@@ -289,7 +289,7 @@ export class ToolHandler {
289289
}
290290
return result;
291291
} catch (err) {
292-
logger?.(`${this.tool.name} error:`, err, err?.stack);
292+
logger()?.(`${this.tool.name} error:`, err, err?.stack);
293293
let errorText = err && 'message' in err ? err.message : String(err);
294294
if ('cause' in err && err.cause) {
295295
errorText += `\nCause: ${err.cause.message}`;

src/WaitForHelper.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ export class WaitForHelper {
180180
}
181181
return;
182182
})
183-
.catch(error => logger?.(error));
183+
.catch(error => logger()?.(error));
184184

185185
try {
186186
await action();
@@ -201,7 +201,7 @@ export class WaitForHelper {
201201
// the correct context
202202
await this.waitForStableDom();
203203
} catch (error) {
204-
logger?.(error);
204+
logger()?.(error);
205205
} finally {
206206
this.#abortController.abort();
207207
}

src/bin/chrome-devtools-mcp-main.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ const logFile = args.logFile ? saveLogsToFile(args.logFile) : undefined;
2929

3030
if (process.env['CHROME_DEVTOOLS_MCP_CRASH_ON_UNCAUGHT'] !== 'true') {
3131
process.on('unhandledRejection', (reason, promise) => {
32-
logger?.('Unhandled promise rejection', promise, reason);
32+
logger()?.('Unhandled promise rejection', promise, reason);
3333
});
3434
}
3535

@@ -43,13 +43,13 @@ async function shutdown(reason: string): Promise<void> {
4343
return;
4444
}
4545
shuttingDown = true;
46-
logger?.(`Shutting down (${reason})`);
46+
logger()?.(`Shutting down (${reason})`);
4747
// Backstop in case browser teardown hangs (e.g. unresponsive Chrome,
4848
// slow beforeunload handlers, many tabs). Exits 0 because we still
4949
// honored the shutdown request; the log line preserves observability.
5050
// Unref'd so it doesn't keep the loop alive on the clean path.
5151
setTimeout(() => {
52-
logger?.('Shutdown timeout exceeded, forcing exit');
52+
logger()?.('Shutdown timeout exceeded, forcing exit');
5353
process.exit(0);
5454
}, 10000).unref();
5555
await closeBrowser();
@@ -71,13 +71,13 @@ process.on('SIGHUP', () => {
7171
void shutdown('SIGHUP');
7272
});
7373

74-
logger?.(`Starting Chrome DevTools MCP Server v${VERSION}`);
74+
logger()?.(`Starting Chrome DevTools MCP Server v${VERSION}`);
7575
const {server} = await createMcpServer(args, {
7676
logFile,
7777
});
7878
const transport = new StdioServerTransport();
7979
await server.connect(transport);
80-
logger?.('Chrome DevTools MCP Server connected');
80+
logger()?.('Chrome DevTools MCP Server connected');
8181
logDisclaimers(args);
8282
void ClearcutLogger.get()?.logDailyActiveIfNeeded();
8383
void ClearcutLogger.get()?.logServerStart(computeFlagUsage(args, cliOptions));

src/browser.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ export async function ensureBrowserConnected(options: {
123123
);
124124
}
125125

126-
logger?.('Connecting Puppeteer to ', JSON.stringify(connectOptions));
126+
logger()?.('Connecting Puppeteer to ', JSON.stringify(connectOptions));
127127
try {
128128
// Assign mode before browser so a concurrent closeBrowser() never sees
129129
// `browser` set with `browserMode` still undefined (would fall through
@@ -139,7 +139,7 @@ export async function ensureBrowserConnected(options: {
139139
},
140140
);
141141
}
142-
logger?.('Connected Puppeteer');
142+
logger()?.('Connected Puppeteer');
143143
return browser;
144144
}
145145

@@ -304,12 +304,12 @@ export async function closeBrowser(): Promise<void> {
304304
}
305305
if (mode === 'launched') {
306306
await b.close().catch(err => {
307-
logger?.('Failed to close browser', err);
307+
logger()?.('Failed to close browser', err);
308308
});
309309
return;
310310
}
311311
await b.disconnect().catch(err => {
312-
logger?.('Failed to disconnect from browser', err);
312+
logger()?.('Failed to disconnect from browser', err);
313313
});
314314
}
315315

src/daemon/client.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ async function waitForDaemonReady(sessionId: string) {
108108

109109
export async function startDaemon(mcpArgs: string[] = [], sessionId: string) {
110110
if (isDaemonRunning(sessionId)) {
111-
logger?.('Daemon is already running');
111+
logger()?.('Daemon is already running');
112112
await waitForDaemonReady(sessionId);
113113
return;
114114
}
@@ -119,7 +119,7 @@ export async function startDaemon(mcpArgs: string[] = [], sessionId: string) {
119119
fs.unlinkSync(pidFilePath);
120120
}
121121

122-
logger?.('Starting daemon...', ...mcpArgs);
122+
logger()?.('Starting daemon...', ...mcpArgs);
123123
const child = spawn(process.execPath, [DAEMON_SCRIPT_PATH, ...mcpArgs], {
124124
detached: true,
125125
stdio: 'ignore',
@@ -163,27 +163,27 @@ export async function sendCommand(
163163
const transport = new PipeTransport(socket, socket);
164164
transport.onmessage = async (message: string) => {
165165
clearTimeout(timer);
166-
logger?.('onmessage', message);
166+
logger()?.('onmessage', message);
167167
resolve(JSON.parse(message));
168168
};
169169
socket.on('error', error => {
170170
clearTimeout(timer);
171-
logger?.('Socket error:', error);
171+
logger()?.('Socket error:', error);
172172
reject(error);
173173
});
174174
socket.on('close', () => {
175175
clearTimeout(timer);
176-
logger?.('Socket closed:');
176+
logger()?.('Socket closed:');
177177
reject(new Error('Socket closed'));
178178
});
179-
logger?.('Sending message', command);
179+
logger()?.('Sending message', command);
180180
transport.send(JSON.stringify(command));
181181
});
182182
}
183183

184184
export async function stopDaemon(sessionId: string) {
185185
if (!isDaemonRunning(sessionId)) {
186-
logger?.('Daemon is not running');
186+
logger()?.('Daemon is not running');
187187
return;
188188
}
189189

0 commit comments

Comments
 (0)