diff options
Diffstat (limited to 'packages/core/src/telemetry')
3 files changed, 38 insertions, 1 deletions
diff --git a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts index 81a9ca4b..cfbbdda6 100644 --- a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts +++ b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts @@ -20,6 +20,7 @@ import { LoopDetectedEvent, NextSpeakerCheckEvent, SlashCommandEvent, + MalformedJsonResponseEvent, } from '../types.js'; import { EventMetadataKey } from './event-metadata-key.js'; import { Config } from '../../config/config.js'; @@ -42,6 +43,7 @@ const flash_fallback_event_name = 'flash_fallback'; const loop_detected_event_name = 'loop_detected'; const next_speaker_check_event_name = 'next_speaker_check'; const slash_command_event_name = 'slash_command'; +const malformed_json_response_event_name = 'malformed_json_response'; export interface LogResponse { nextRequestWaitMs?: number; @@ -557,6 +559,21 @@ export class ClearcutLogger { this.flushIfNeeded(); } + logMalformedJsonResponseEvent(event: MalformedJsonResponseEvent): void { + const data = [ + { + gemini_cli_key: + EventMetadataKey.GEMINI_CLI_MALFORMED_JSON_RESPONSE_MODEL, + value: JSON.stringify(event.model), + }, + ]; + + this.enqueueLogEvent( + this.createLogEvent(malformed_json_response_event_name, data), + ); + this.flushIfNeeded(); + } + logEndSessionEvent(event: EndSessionEvent): void { const data = [ { 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 01dd42af..0fc35894 100644 --- a/packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts +++ b/packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts @@ -183,6 +183,13 @@ export enum EventMetadataKey { // Logs the result of the next speaker check GEMINI_CLI_NEXT_SPEAKER_CHECK_RESULT = 44, + + // ========================================================================== + // Malformed JSON Response Event Keys + // ========================================================================== + + // Logs the model that produced the malformed JSON response. + GEMINI_CLI_MALFORMED_JSON_RESPONSE_MODEL = 45, } export function getEventMetadataKey( diff --git a/packages/core/src/telemetry/types.ts b/packages/core/src/telemetry/types.ts index 6fe797bf..1633dbc4 100644 --- a/packages/core/src/telemetry/types.ts +++ b/packages/core/src/telemetry/types.ts @@ -296,6 +296,18 @@ export class SlashCommandEvent { } } +export class MalformedJsonResponseEvent { + 'event.name': 'malformed_json_response'; + 'event.timestamp': string; // ISO 8601 + model: string; + + constructor(model: string) { + this['event.name'] = 'malformed_json_response'; + this['event.timestamp'] = new Date().toISOString(); + this.model = model; + } +} + export type TelemetryEvent = | StartSessionEvent | EndSessionEvent @@ -307,4 +319,5 @@ export type TelemetryEvent = | FlashFallbackEvent | LoopDetectedEvent | NextSpeakerCheckEvent - | SlashCommandEvent; + | SlashCommandEvent + | MalformedJsonResponseEvent; |
