豆豆友情提示:这是一个非官方 GitHub 代理镜像,主要用于网络测试或访问加速。请勿在此进行登录、注册或处理任何敏感信息。进行这些操作请务必访问官方网站 github.com。 Raw 内容也通过此代理提供。
Skip to content

Commit b2b5e3f

Browse files
authored
1 parent 966b86f commit b2b5e3f

File tree

5 files changed

+42
-15
lines changed

5 files changed

+42
-15
lines changed

src/daemon/daemon.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {VERSION} from '../version.js';
2121

2222
import type {DaemonMessage} from './types.js';
2323
import {
24+
DAEMON_CLIENT_NAME,
2425
getDaemonPid,
2526
getPidFilePath,
2627
getSocketPath,
@@ -65,7 +66,7 @@ async function setupMCPClient() {
6566
});
6667
mcpClient = new Client(
6768
{
68-
name: 'chrome-devtools-cli-daemon',
69+
name: DAEMON_CLIENT_NAME,
6970
version: VERSION,
7071
},
7172
{

src/daemon/utils.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export const INDEX_SCRIPT_PATH = path.join(
2121
);
2222

2323
const APP_NAME = 'chrome-devtools-mcp';
24+
export const DAEMON_CLIENT_NAME = 'chrome-devtools-cli-daemon';
2425

2526
// Using these paths due to strict limits on the POSIX socket path length.
2627
export function getSocketPath(): string {

src/telemetry/ClearcutLogger.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import process from 'node:process';
88

9+
import {DAEMON_CLIENT_NAME} from '../daemon/utils.js';
910
import {logger} from '../logger.js';
1011

1112
import type {LocalState, Persistence} from './persistence.js';
@@ -68,6 +69,14 @@ export class ClearcutLogger {
6869
this.#mcpClient = McpClient.MCP_CLIENT_CLAUDE_CODE;
6970
} else if (lowerName.includes('gemini')) {
7071
this.#mcpClient = McpClient.MCP_CLIENT_GEMINI_CLI;
72+
} else if (clientName === DAEMON_CLIENT_NAME) {
73+
this.#mcpClient = McpClient.MCP_CLIENT_DT_MCP_CLI;
74+
} else if (lowerName.includes('openclaw')) {
75+
this.#mcpClient = McpClient.MCP_CLIENT_OPENCLAW;
76+
} else if (lowerName.includes('codex')) {
77+
this.#mcpClient = McpClient.MCP_CLIENT_CODEX;
78+
} else if (lowerName.includes('antigravity')) {
79+
this.#mcpClient = McpClient.MCP_CLIENT_ANTIGRAVITY;
7180
} else {
7281
this.#mcpClient = McpClient.MCP_CLIENT_OTHER;
7382
}

src/telemetry/types.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ export enum McpClient {
7575
MCP_CLIENT_UNSPECIFIED = 0,
7676
MCP_CLIENT_CLAUDE_CODE = 1,
7777
MCP_CLIENT_GEMINI_CLI = 2,
78+
MCP_CLIENT_DT_MCP_CLI = 4,
79+
MCP_CLIENT_OPENCLAW = 5,
80+
MCP_CLIENT_CODEX = 6,
81+
MCP_CLIENT_ANTIGRAVITY = 7,
7882
MCP_CLIENT_OTHER = 3,
7983
}
8084

tests/telemetry/ClearcutLogger.test.ts

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {describe, it, afterEach, beforeEach} from 'node:test';
99

1010
import sinon from 'sinon';
1111

12+
import {DAEMON_CLIENT_NAME} from '../../src/daemon/utils.js';
1213
import {ClearcutLogger} from '../../src/telemetry/ClearcutLogger.js';
1314
import type {Persistence} from '../../src/telemetry/persistence.js';
1415
import {FilePersistence} from '../../src/telemetry/persistence.js';
@@ -55,21 +56,32 @@ describe('ClearcutLogger', () => {
5556
});
5657

5758
describe('setClientName', () => {
58-
it('appends mapped mcp_client to payload', async () => {
59-
const logger = new ClearcutLogger({
60-
persistence: mockPersistence,
61-
appVersion: '1.0.0',
62-
watchdogClient: mockWatchdogClient,
59+
const clients = [
60+
{name: 'claude-code', expected: 1}, // MCP_CLIENT_CLAUDE_CODE
61+
{name: 'gemini-cli', expected: 2}, // MCP_CLIENT_GEMINI_CLI
62+
{name: DAEMON_CLIENT_NAME, expected: 4}, // MCP_CLIENT_DT_MCP_CLI
63+
{name: 'openclaw-browser', expected: 5}, // MCP_CLIENT_OPENCLAW
64+
{name: 'codex-mcp-client', expected: 6}, // MCP_CLIENT_CODEX
65+
{name: 'antigravity-client', expected: 7}, // MCP_CLIENT_ANTIGRAVITY
66+
];
67+
68+
for (const {name, expected} of clients) {
69+
it(`maps ${name} client correctly`, async () => {
70+
const logger = new ClearcutLogger({
71+
persistence: mockPersistence,
72+
appVersion: '1.0.0',
73+
watchdogClient: mockWatchdogClient,
74+
});
75+
76+
logger.setClientName(name);
77+
await logger.logServerStart({headless: true});
78+
79+
assert(mockWatchdogClient.send.calledOnce);
80+
const msg = mockWatchdogClient.send.firstCall.args[0];
81+
assert.strictEqual(msg.type, WatchdogMessageType.LOG_EVENT);
82+
assert.strictEqual(msg.payload.mcp_client, expected);
6383
});
64-
65-
logger.setClientName('gemini-cli-mcp-client');
66-
await logger.logServerStart({headless: true});
67-
68-
assert(mockWatchdogClient.send.calledOnce);
69-
const msg = mockWatchdogClient.send.firstCall.args[0];
70-
assert.strictEqual(msg.type, WatchdogMessageType.LOG_EVENT);
71-
assert.strictEqual(msg.payload.mcp_client, 2); // 2 is MCP_CLIENT_GEMINI_CLI
72-
});
84+
}
7385
});
7486

7587
describe('logServerStart', () => {

0 commit comments

Comments
 (0)