From 9f1c962e022607fee525b4325fc3bd6440fbe092 Mon Sep 17 00:00:00 2001 From: yaowenc2 Date: Fri, 24 Apr 2026 23:21:51 -0700 Subject: [PATCH] feat(tracking): tag agent-connected requests with client=mcp Pairs with cloud-backend support for a `client` field on /tracking/v1/agent-connected so PostHog/Mixpanel can tell MCP connections apart from CLI. Without this, both sources POST identical bodies and the cloud cannot distinguish first-CLI-user from first-MCP-user adoption. --- src/shared/usage-tracker.test.ts | 1 + src/shared/usage-tracker.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/shared/usage-tracker.test.ts b/src/shared/usage-tracker.test.ts index f73fa59..f58b389 100644 --- a/src/shared/usage-tracker.test.ts +++ b/src/shared/usage-tracker.test.ts @@ -83,6 +83,7 @@ describe('UsageTracker', () => { const body = JSON.parse(agentCall![1].body); expect(body.app_key).toBe('uhzx8md3'); expect(body.project_id).toBeUndefined(); + expect(body.client).toBe('mcp'); // No Authorization header in local mode expect(agentCall![1].headers['Authorization']).toBeUndefined(); diff --git a/src/shared/usage-tracker.ts b/src/shared/usage-tracker.ts index b15f945..fd83451 100644 --- a/src/shared/usage-tracker.ts +++ b/src/shared/usage-tracker.ts @@ -73,7 +73,7 @@ export class UsageTracker { private async reportAgentConnected(): Promise { // eslint-disable-next-line @typescript-eslint/no-explicit-any - const body: Record = {}; + const body: Record = { client: 'mcp' }; // eslint-disable-next-line @typescript-eslint/no-explicit-any const headers: Record = { 'Content-Type': 'application/json' };