From b20c8389f3f483f3972c254ec97fff4004b7c75f Mon Sep 17 00:00:00 2001 From: Jerop Kipruto Date: Fri, 13 Jun 2025 03:44:17 -0400 Subject: Handle telemetry in non-interactive mode (#1002) Changes: - Ensure proper shutdown in non-interactive mode - Ensures the initial user prompt is logged in non-interactive mode - Improve telemetry for streaming - handle chunks and input token count is now alongside other token counts in response To test: - Follow instructions in https://github.com/google-gemini/gemini-cli/blob/main/docs/core/telemetry.md#google-cloud - Run CLI in non-interactive mode and observe logs/metrics in GCP Logs Explorer and Metrics Explorer #750 --- packages/cli/src/gemini.tsx | 6 ++++++ packages/cli/src/nonInteractiveCli.ts | 6 ++++++ 2 files changed, 12 insertions(+) (limited to 'packages/cli/src') diff --git a/packages/cli/src/gemini.tsx b/packages/cli/src/gemini.tsx index 0478a40e..34ec3bd0 100644 --- a/packages/cli/src/gemini.tsx +++ b/packages/cli/src/gemini.tsx @@ -33,6 +33,7 @@ import { WebSearchTool, WriteFileTool, sessionId, + logUserPrompt, } from '@gemini-cli/core'; export async function main() { @@ -120,6 +121,11 @@ export async function main() { process.exit(1); } + logUserPrompt(config, { + prompt: input, + prompt_length: input.length, + }); + // Non-interactive mode handled by runNonInteractive const nonInteractiveConfig = await loadNonInteractiveConfig( config, diff --git a/packages/cli/src/nonInteractiveCli.ts b/packages/cli/src/nonInteractiveCli.ts index 069a7be8..bf60011f 100644 --- a/packages/cli/src/nonInteractiveCli.ts +++ b/packages/cli/src/nonInteractiveCli.ts @@ -9,6 +9,8 @@ import { ToolCallRequestInfo, executeToolCall, ToolRegistry, + shutdownTelemetry, + isTelemetrySdkInitialized, } from '@gemini-cli/core'; import { Content, @@ -119,5 +121,9 @@ export async function runNonInteractive( } catch (error) { console.error('Error processing input:', error); process.exit(1); + } finally { + if (isTelemetrySdkInitialized()) { + await shutdownTelemetry(); + } } } -- cgit v1.2.3