From abf6ee453f7153c995a8db083f98ec6b4d374ccc Mon Sep 17 00:00:00 2001 From: Shi Shu Date: Wed, 10 Sep 2025 14:50:57 -0400 Subject: [PATCH 1/5] Remove error field from ApiResponseEvent --- .../core/src/telemetry/clearcut-logger/clearcut-logger.ts | 4 ---- packages/core/src/telemetry/loggers.test.ts | 7 ++----- packages/core/src/telemetry/loggers.ts | 5 +---- packages/core/src/telemetry/metrics.ts | 3 +-- packages/core/src/telemetry/types.ts | 3 --- 5 files changed, 4 insertions(+), 18 deletions(-) diff --git a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts index 7cd25e8cf8e..849022ba030 100644 --- a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts +++ b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts @@ -551,10 +551,6 @@ export class ClearcutLogger { gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_RESPONSE_DURATION_MS, value: JSON.stringify(event.duration_ms), }, - { - gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_ERROR_MESSAGE, - value: JSON.stringify(event.error), - }, { gemini_cli_key: EventMetadataKey.GEMINI_CLI_API_RESPONSE_INPUT_TOKEN_COUNT, diff --git a/packages/core/src/telemetry/loggers.test.ts b/packages/core/src/telemetry/loggers.test.ts index 60e191249dc..6280da617e3 100644 --- a/packages/core/src/telemetry/loggers.test.ts +++ b/packages/core/src/telemetry/loggers.test.ts @@ -315,7 +315,6 @@ describe('loggers', () => { response_text: 'test-response', prompt_id: 'prompt-id-1', auth_type: 'oauth-personal', - error: undefined, }, }); @@ -324,7 +323,6 @@ describe('loggers', () => { 'test-model', 100, 200, - undefined, ); expect(mockMetrics.recordTokenUsageMetrics).toHaveBeenCalledWith( @@ -341,7 +339,7 @@ describe('loggers', () => { }); }); - it('should log an API response with an error', () => { + it('should log an API response without an error', () => { const usageData: GenerateContentResponseUsageMetadata = { promptTokenCount: 17, candidatesTokenCount: 50, @@ -356,7 +354,6 @@ describe('loggers', () => { AuthType.USE_GEMINI, usageData, 'test-response', - 'test-error', ); logApiResponse(mockConfig, event); @@ -369,7 +366,7 @@ describe('loggers', () => { ...event, 'event.name': EVENT_API_RESPONSE, 'event.timestamp': '2025-01-01T00:00:00.000Z', - 'error.message': 'test-error', + [SemanticAttributes.HTTP_STATUS_CODE]: 200, }, }); diff --git a/packages/core/src/telemetry/loggers.ts b/packages/core/src/telemetry/loggers.ts index d87fd99fb52..09948ee22a5 100644 --- a/packages/core/src/telemetry/loggers.ts +++ b/packages/core/src/telemetry/loggers.ts @@ -352,9 +352,7 @@ export function logApiResponse(config: Config, event: ApiResponseEvent): void { if (event.response_text) { attributes['response_text'] = event.response_text; } - if (event.error) { - attributes['error.message'] = event.error; - } else if (event.status_code) { + if (event.status_code) { if (typeof event.status_code === 'number') { attributes[SemanticAttributes.HTTP_STATUS_CODE] = event.status_code; } @@ -371,7 +369,6 @@ export function logApiResponse(config: Config, event: ApiResponseEvent): void { event.model, event.duration_ms, event.status_code, - event.error, ); recordTokenUsageMetrics( config, diff --git a/packages/core/src/telemetry/metrics.ts b/packages/core/src/telemetry/metrics.ts index 385ee076f70..a51f74cee90 100644 --- a/packages/core/src/telemetry/metrics.ts +++ b/packages/core/src/telemetry/metrics.ts @@ -174,7 +174,6 @@ export function recordApiResponseMetrics( model: string, durationMs: number, statusCode?: number | string, - error?: string, ): void { if ( !apiRequestCounter || @@ -185,7 +184,7 @@ export function recordApiResponseMetrics( const metricAttributes: Attributes = { ...getCommonAttributes(config), model, - status_code: statusCode ?? (error ? 'error' : 'ok'), + status_code: statusCode ?? 'ok', }; apiRequestCounter.add(1, metricAttributes); apiRequestLatencyHistogram.record(durationMs, { diff --git a/packages/core/src/telemetry/types.ts b/packages/core/src/telemetry/types.ts index cc35a0d4216..319a82b2207 100644 --- a/packages/core/src/telemetry/types.ts +++ b/packages/core/src/telemetry/types.ts @@ -231,7 +231,6 @@ export class ApiResponseEvent implements BaseTelemetryEvent { model: string; status_code?: number | string; duration_ms: number; - error?: string; input_token_count: number; output_token_count: number; cached_content_token_count: number; @@ -249,7 +248,6 @@ export class ApiResponseEvent implements BaseTelemetryEvent { auth_type?: string, usage_data?: GenerateContentResponseUsageMetadata, response_text?: string, - error?: string, ) { this['event.name'] = 'api_response'; this['event.timestamp'] = new Date().toISOString(); @@ -263,7 +261,6 @@ export class ApiResponseEvent implements BaseTelemetryEvent { this.tool_token_count = usage_data?.toolUsePromptTokenCount ?? 0; this.total_token_count = usage_data?.totalTokenCount ?? 0; this.response_text = response_text; - this.error = error; this.prompt_id = prompt_id; this.auth_type = auth_type; } From 6cbafb3a6359bdaa8b0bd6b39d23840cb0d8825b Mon Sep 17 00:00:00 2001 From: Shi Shu Date: Wed, 10 Sep 2025 14:51:14 -0400 Subject: [PATCH 2/5] Add deprecated comment to unused metadata key --- .../core/src/telemetry/clearcut-logger/event-metadata-key.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts b/packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts index 2351c085edf..51880012985 100644 --- a/packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts +++ b/packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts @@ -97,7 +97,7 @@ export enum EventMetadataKey { // Logs the duration of the API call in milliseconds. GEMINI_CLI_API_RESPONSE_DURATION_MS = 23, - // Logs the error message of the API call, if any. + // @deprecated Logs the error message of the API call, if any. GEMINI_CLI_API_ERROR_MESSAGE = 24, // Logs the input token count of the API call. From 73dc6fa7aedb656959f558a1d559dfc646827b04 Mon Sep 17 00:00:00 2001 From: Shi Shu Date: Wed, 10 Sep 2025 14:56:32 -0400 Subject: [PATCH 3/5] Remove unnecessary test --- packages/core/src/telemetry/loggers.test.ts | 38 --------------------- 1 file changed, 38 deletions(-) diff --git a/packages/core/src/telemetry/loggers.test.ts b/packages/core/src/telemetry/loggers.test.ts index 6280da617e3..7ec35c9aba3 100644 --- a/packages/core/src/telemetry/loggers.test.ts +++ b/packages/core/src/telemetry/loggers.test.ts @@ -338,44 +338,6 @@ describe('loggers', () => { 'event.timestamp': '2025-01-01T00:00:00.000Z', }); }); - - it('should log an API response without an error', () => { - const usageData: GenerateContentResponseUsageMetadata = { - promptTokenCount: 17, - candidatesTokenCount: 50, - cachedContentTokenCount: 10, - thoughtsTokenCount: 5, - toolUsePromptTokenCount: 2, - }; - const event = new ApiResponseEvent( - 'test-model', - 100, - 'prompt-id-1', - AuthType.USE_GEMINI, - usageData, - 'test-response', - ); - - logApiResponse(mockConfig, event); - - expect(mockLogger.emit).toHaveBeenCalledWith({ - body: 'API response from test-model. Status: 200. Duration: 100ms.', - attributes: { - 'session.id': 'test-session-id', - 'user.email': 'test-user@example.com', - ...event, - 'event.name': EVENT_API_RESPONSE, - 'event.timestamp': '2025-01-01T00:00:00.000Z', - [SemanticAttributes.HTTP_STATUS_CODE]: 200, - }, - }); - - expect(mockUiEvent.addEvent).toHaveBeenCalledWith({ - ...event, - 'event.name': EVENT_API_RESPONSE, - 'event.timestamp': '2025-01-01T00:00:00.000Z', - }); - }); }); describe('logApiRequest', () => { From 24fac9b86ed28d0f80649fa473e8476fc4885c94 Mon Sep 17 00:00:00 2001 From: Shi Shu Date: Thu, 11 Sep 2025 10:50:37 -0400 Subject: [PATCH 4/5] Remove api error message enum from metadata key --- .../core/src/telemetry/clearcut-logger/event-metadata-key.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts b/packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts index 51880012985..db768a06b63 100644 --- a/packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts +++ b/packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts @@ -97,9 +97,6 @@ export enum EventMetadataKey { // Logs the duration of the API call in milliseconds. GEMINI_CLI_API_RESPONSE_DURATION_MS = 23, - // @deprecated Logs the error message of the API call, if any. - GEMINI_CLI_API_ERROR_MESSAGE = 24, - // Logs the input token count of the API call. GEMINI_CLI_API_RESPONSE_INPUT_TOKEN_COUNT = 25, From 52def99c74c4e0764428cdfcc55b17b0762bc56d Mon Sep 17 00:00:00 2001 From: Shi Shu Date: Thu, 11 Sep 2025 10:51:12 -0400 Subject: [PATCH 5/5] Add comment for deleted enum --- .../core/src/telemetry/clearcut-logger/event-metadata-key.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts b/packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts index db768a06b63..8a3790e6fd0 100644 --- a/packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts +++ b/packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts @@ -6,6 +6,8 @@ // Defines valid event metadata keys for Clearcut logging. export enum EventMetadataKey { + // Deleted enums: 24 + GEMINI_CLI_KEY_UNKNOWN = 0, // ==========================================================================