diff --git a/docs/cli/telemetry.md b/docs/cli/telemetry.md index 6b579b22f6..69bb904c8d 100644 --- a/docs/cli/telemetry.md +++ b/docs/cli/telemetry.md @@ -281,6 +281,8 @@ Captures tool executions, output truncation, and Smart Edit behavior. - `prompt_id` (string) - `tool_type` ("native" or "mcp") - `mcp_server_name` (string, if applicable) + - `extension_name` (string, if applicable) + - `extension_id` (string, if applicable) - `content_length` (int, if applicable) - `metadata` (if applicable) diff --git a/packages/core/src/telemetry/loggers.test.ts b/packages/core/src/telemetry/loggers.test.ts index aa9e0a005c..74ebac5fe3 100644 --- a/packages/core/src/telemetry/loggers.test.ts +++ b/packages/core/src/telemetry/loggers.test.ts @@ -1244,6 +1244,7 @@ describe('loggers', () => { undefined, undefined, 'test-extension', + 'test-extension-id', ); const call: CompletedToolCall = { @@ -1278,7 +1279,8 @@ describe('loggers', () => { 'installation.id': 'test-installation-id', 'event.name': EVENT_TOOL_CALL, 'event.timestamp': '2025-01-01T00:00:00.000Z', - extension_id: 'test-extension', + extension_name: 'test-extension', + extension_id: 'test-extension-id', function_name: 'mock_mcp_tool', function_args: JSON.stringify( { diff --git a/packages/core/src/telemetry/types.ts b/packages/core/src/telemetry/types.ts index b235bb409c..6138705a50 100644 --- a/packages/core/src/telemetry/types.ts +++ b/packages/core/src/telemetry/types.ts @@ -223,6 +223,7 @@ export class ToolCallEvent implements BaseTelemetryEvent { tool_type: 'native' | 'mcp'; content_length?: number; mcp_server_name?: string; + extension_name?: string; extension_id?: string; // eslint-disable-next-line @typescript-eslint/no-explicit-any metadata?: { [key: string]: any }; @@ -269,6 +270,7 @@ export class ToolCallEvent implements BaseTelemetryEvent { ) { this.tool_type = 'mcp'; this.mcp_server_name = call.tool.serverName; + this.extension_name = call.tool.extensionName; this.extension_id = call.tool.extensionId; } else { this.tool_type = 'native'; @@ -319,6 +321,7 @@ export class ToolCallEvent implements BaseTelemetryEvent { tool_type: this.tool_type, content_length: this.content_length, mcp_server_name: this.mcp_server_name, + extension_name: this.extension_name, extension_id: this.extension_id, metadata: this.metadata, }; diff --git a/packages/core/src/tools/mcp-client.ts b/packages/core/src/tools/mcp-client.ts index da649894a8..eef3d30df4 100644 --- a/packages/core/src/tools/mcp-client.ts +++ b/packages/core/src/tools/mcp-client.ts @@ -628,6 +628,7 @@ export async function discoverTools( mcpServerConfig.trust, undefined, cliConfig, + mcpServerConfig.extension?.name, mcpServerConfig.extension?.id, messageBus, ); diff --git a/packages/core/src/tools/mcp-tool.ts b/packages/core/src/tools/mcp-tool.ts index 182366a6dc..5949bdf5b2 100644 --- a/packages/core/src/tools/mcp-tool.ts +++ b/packages/core/src/tools/mcp-tool.ts @@ -218,6 +218,7 @@ export class DiscoveredMCPTool extends BaseDeclarativeTool< readonly trust?: boolean, nameOverride?: string, private readonly cliConfig?: Config, + override readonly extensionName?: string, override readonly extensionId?: string, messageBus?: MessageBus, ) { @@ -230,6 +231,7 @@ export class DiscoveredMCPTool extends BaseDeclarativeTool< true, // isOutputMarkdown false, // canUpdateOutput, messageBus, + extensionName, extensionId, ); } @@ -244,6 +246,7 @@ export class DiscoveredMCPTool extends BaseDeclarativeTool< this.trust, `${this.serverName}__${this.serverToolName}`, this.cliConfig, + this.extensionName, this.extensionId, this.messageBus, ); diff --git a/packages/core/src/tools/tools.ts b/packages/core/src/tools/tools.ts index 35dac2c12d..98605aea9b 100644 --- a/packages/core/src/tools/tools.ts +++ b/packages/core/src/tools/tools.ts @@ -306,6 +306,7 @@ export abstract class DeclarativeTool< readonly isOutputMarkdown: boolean = true, readonly canUpdateOutput: boolean = false, readonly messageBus?: MessageBus, + readonly extensionName?: string, readonly extensionId?: string, ) {}