summaryrefslogtreecommitdiff
path: root/packages/server/src
diff options
context:
space:
mode:
authorTaylor Mullen <[email protected]>2025-05-11 14:28:21 -0700
committerN. Taylor Mullen <[email protected]>2025-05-11 14:33:58 -0700
commit8537aabba49543af5c96138285578e4e9d36a76f (patch)
tree2570ee978092301320130dbc4652b00afe1cd79c /packages/server/src
parent2970f0a06c234d1cb2fafb2e02754973bd1fa26a (diff)
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
Diffstat (limited to 'packages/server/src')
-rw-r--r--packages/server/src/config/config.ts7
-rw-r--r--packages/server/src/core/client.ts10
2 files changed, 16 insertions, 1 deletions
diff --git a/packages/server/src/config/config.ts b/packages/server/src/config/config.ts
index 41409f7c..daff1807 100644
--- a/packages/server/src/config/config.ts
+++ b/packages/server/src/config/config.ts
@@ -34,6 +34,7 @@ export class Config {
private readonly toolDiscoveryCommand: string | undefined,
private readonly toolCallCommand: string | undefined,
private readonly mcpServerCommand: string | undefined,
+ private readonly userAgent: string,
) {
// toolRegistry still needs initialization based on the instance
this.toolRegistry = createToolRegistry(this);
@@ -81,6 +82,10 @@ export class Config {
getMcpServerCommand(): string | undefined {
return this.mcpServerCommand;
}
+
+ getUserAgent(): string {
+ return this.userAgent;
+ }
}
function findEnvFile(startDir: string): string | null {
@@ -117,6 +122,7 @@ export function createServerConfig(
toolDiscoveryCommand?: string,
toolCallCommand?: string,
mcpServerCommand?: string,
+ userAgent?: string,
): Config {
return new Config(
apiKey,
@@ -129,6 +135,7 @@ export function createServerConfig(
toolDiscoveryCommand,
toolCallCommand,
mcpServerCommand,
+ userAgent ?? 'GeminiCLI/unknown', // Default user agent
);
}
diff --git a/packages/server/src/core/client.ts b/packages/server/src/core/client.ts
index b8d47476..0b1e8ecf 100644
--- a/packages/server/src/core/client.ts
+++ b/packages/server/src/core/client.ts
@@ -34,7 +34,15 @@ export class GeminiClient {
private readonly MAX_TURNS = 100;
constructor(private config: Config) {
- this.client = new GoogleGenAI({ apiKey: config.getApiKey() });
+ const userAgent = config.getUserAgent();
+ this.client = new GoogleGenAI({
+ apiKey: config.getApiKey(),
+ httpOptions: {
+ headers: {
+ 'User-Agent': userAgent,
+ },
+ },
+ });
this.model = config.getModel();
}