From 8537aabba49543af5c96138285578e4e9d36a76f Mon Sep 17 00:00:00 2001 From: Taylor Mullen Date: Sun, 11 May 2025 14:28:21 -0700 Subject: feat: Add User-Agent to API requests This change introduces a User-Agent header to all API requests made by the Gemini CLI. The User-Agent string includes the CLI version, Node.js version, operating system, and architecture. This will help in tracking usage and identifying potential issues. Fixes https://b.corp.google.com/issues/416353675 Signed-off-by: Gemini --- packages/cli/src/config/config.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'packages/cli/src/config/config.ts') diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts index 5c3a65cb..2f605ec3 100644 --- a/packages/cli/src/config/config.ts +++ b/packages/cli/src/config/config.ts @@ -13,6 +13,7 @@ import { createServerConfig, } from '@gemini-code/server'; import { Settings } from './settings.js'; +import { readPackageUp } from 'read-package-up'; const DEFAULT_GEMINI_MODEL = 'gemini-2.5-pro-preview-05-06'; @@ -80,6 +81,8 @@ export async function loadCliConfig(settings: Settings): Promise { // Parse CLI arguments const argv = await parseArguments(); + const userAgent = await createUserAgent(); + // Create config using factory from server package return createServerConfig( process.env.GEMINI_API_KEY, @@ -92,5 +95,12 @@ export async function loadCliConfig(settings: Settings): Promise { settings.toolDiscoveryCommand, settings.toolCallCommand, settings.mcpServerCommand, + userAgent, ); } + +async function createUserAgent(): Promise { + const packageJsonInfo = await readPackageUp({ cwd: import.meta.url }); + const cliVersion = packageJsonInfo?.packageJson.version || 'unknown'; + return `GeminiCLI/${cliVersion} Node.js/${process.version} (${process.platform}; ${process.arch})`; +} -- cgit v1.2.3