Skip to content

Commit bedfd5d

Browse files
authored
chore: forward disclaimers (#1082)
`chrome-devtools start` should forward underlying disclaimers. This is achieved by piping stderr until the start indicator is seen.
1 parent 8e74254 commit bedfd5d

3 files changed

Lines changed: 19 additions & 3 deletions

File tree

src/daemon/client.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import fs from 'node:fs';
99
import net from 'node:net';
1010

1111
import {logger} from '../logger.js';
12+
import {START_INDICATOR} from '../server.js';
1213
import type {CallToolResult} from '../third_party/index.js';
1314
import {PipeTransport} from '../third_party/index.js';
1415

@@ -56,7 +57,7 @@ export async function startDaemon(mcpArgs: string[] = []) {
5657
logger('Starting daemon...');
5758
const child = spawn(process.execPath, [DAEMON_SCRIPT_PATH, ...mcpArgs], {
5859
detached: true,
59-
stdio: 'ignore',
60+
stdio: ['ignore', 'ignore', 'pipe'],
6061
cwd: process.cwd(),
6162
});
6263

@@ -72,8 +73,19 @@ export async function startDaemon(mcpArgs: string[] = []) {
7273
waitForFile(getPidFilePath()).then(resolve).catch(reject);
7374
});
7475

75-
child.unref();
7676
logger(`Pid file found ${getPidFilePath()}`);
77+
78+
child.stderr.pipe(process.stderr);
79+
await new Promise<void>(resolve => {
80+
child.stderr.on('data', data => {
81+
if (data.toString().includes(START_INDICATOR)) {
82+
child.stderr.unpipe(process.stderr);
83+
child.stderr.destroy();
84+
child.unref();
85+
resolve();
86+
}
87+
});
88+
});
7789
}
7890

7991
const SEND_COMMAND_TIMEOUT = 60_000; // ms

src/main.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import process from 'node:process';
1010

1111
import {cliOptions, parseArguments} from './cli.js';
1212
import {logger, saveLogsToFile} from './logger.js';
13-
import {createMcpServer} from './server.js';
13+
import {createMcpServer, START_INDICATOR} from './server.js';
1414
import {computeFlagUsage} from './telemetry/flagUtils.js';
1515
import {StdioServerTransport} from './third_party/index.js';
1616
import {VERSION} from './version.js';
@@ -56,6 +56,8 @@ Google collects usage statistics to improve Chrome DevTools MCP. To opt-out, run
5656
For more details, visit: https://github.com/ChromeDevTools/chrome-devtools-mcp#usage-statistics`,
5757
);
5858
}
59+
60+
console.error(START_INDICATOR);
5961
};
6062

6163
const {server, clearcutLogger} = await createMcpServer(args, {

src/server.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,3 +256,5 @@ export async function createMcpServer(
256256

257257
return {server, clearcutLogger};
258258
}
259+
260+
export const START_INDICATOR = 'Server started.';

0 commit comments

Comments
 (0)