From 67008d4643e331a4b9181d12927c82f08fe58597 Mon Sep 17 00:00:00 2001 From: Sandy Tao Date: Tue, 22 Jul 2025 17:31:57 -0700 Subject: Log when flash model decided to continue (#4698) Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- .../src/telemetry/clearcut-logger/clearcut-logger.ts | 20 ++++++++++++++++++++ packages/core/src/telemetry/types.ts | 15 ++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) (limited to 'packages/core/src/telemetry') diff --git a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts index 5addd99e..ba47e7a0 100644 --- a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts +++ b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts @@ -18,6 +18,7 @@ import { ApiErrorEvent, FlashFallbackEvent, LoopDetectedEvent, + FlashDecidedToContinueEvent, } from '../types.js'; import { EventMetadataKey } from './event-metadata-key.js'; import { Config } from '../../config/config.js'; @@ -37,6 +38,7 @@ const api_error_event_name = 'api_error'; const end_session_event_name = 'end_session'; const flash_fallback_event_name = 'flash_fallback'; const loop_detected_event_name = 'loop_detected'; +const flash_decided_to_continue_event_name = 'flash_decided_to_continue'; export interface LogResponse { nextRequestWaitMs?: number; @@ -492,6 +494,24 @@ export class ClearcutLogger { this.flushIfNeeded(); } + logFlashDecidedToContinueEvent(event: FlashDecidedToContinueEvent): void { + const data = [ + { + gemini_cli_key: EventMetadataKey.GEMINI_CLI_PROMPT_ID, + value: JSON.stringify(event.prompt_id), + }, + { + gemini_cli_key: EventMetadataKey.GEMINI_CLI_SESSION_ID, + value: this.config?.getSessionId() ?? '', + }, + ]; + + this.enqueueLogEvent( + this.createLogEvent(flash_decided_to_continue_event_name, data), + ); + this.flushIfNeeded(); + } + logEndSessionEvent(event: EndSessionEvent): void { const data = [ { diff --git a/packages/core/src/telemetry/types.ts b/packages/core/src/telemetry/types.ts index 9420a29e..268457b5 100644 --- a/packages/core/src/telemetry/types.ts +++ b/packages/core/src/telemetry/types.ts @@ -264,6 +264,18 @@ export class LoopDetectedEvent { } } +export class FlashDecidedToContinueEvent { + 'event.name': 'flash_decided_to_continue'; + 'event.timestamp': string; // ISO 8601 + prompt_id: string; + + constructor(prompt_id: string) { + this['event.name'] = 'flash_decided_to_continue'; + this['event.timestamp'] = new Date().toISOString(); + this.prompt_id = prompt_id; + } +} + export type TelemetryEvent = | StartSessionEvent | EndSessionEvent @@ -273,4 +285,5 @@ export type TelemetryEvent = | ApiErrorEvent | ApiResponseEvent | FlashFallbackEvent - | LoopDetectedEvent; + | LoopDetectedEvent + | FlashDecidedToContinueEvent; -- cgit v1.2.3