summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorowenofbrien <[email protected]>2025-08-14 05:12:26 -0500
committerGitHub <[email protected]>2025-08-14 10:12:26 +0000
commitdd55a82a2891fc2e9b197cf491fb8205d1ba9619 (patch)
tree9a4911db1c35d26323cdc658f1cd93a6107ab7e2
parent3e004048cf8e8fe77c5cc48b10756ecaa14a846f (diff)
Log CLI version and git commit hash (v2) (#6176)
-rw-r--r--.gitignore1
-rw-r--r--packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts9
-rw-r--r--packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts6
-rw-r--r--scripts/generate-git-commit-info.js23
4 files changed, 34 insertions, 5 deletions
diff --git a/.gitignore b/.gitignore
index af3591bd..fbbb2dcc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,5 +37,6 @@ packages/*/coverage/
# Generated files
packages/cli/src/generated/
+packages/core/src/generated/
.integration-tests/
packages/vscode-ide-companion/*.vsix
diff --git a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts
index 7ccfd440..60a31ae7 100644
--- a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts
+++ b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts
@@ -30,6 +30,7 @@ import {
} from '../../utils/user_account.js';
import { getInstallationId } from '../../utils/user_id.js';
import { FixedDeque } from 'mnemonist';
+import { GIT_COMMIT_INFO, CLI_VERSION } from '../../generated/git-commit.js';
import { DetectedIde, detectIde } from '../../ide/detect-ide.js';
const start_session_event_name = 'start_session';
@@ -374,6 +375,14 @@ export class ClearcutLogger {
EventMetadataKey.GEMINI_CLI_START_SESSION_TELEMETRY_LOG_USER_PROMPTS_ENABLED,
value: event.telemetry_log_user_prompts_enabled.toString(),
},
+ {
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_VERSION,
+ value: CLI_VERSION,
+ },
+ {
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_GIT_COMMIT_HASH,
+ value: GIT_COMMIT_INFO,
+ },
];
// Flush start event immediately
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 cb4172ed..66797caa 100644
--- a/packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts
+++ b/packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts
@@ -157,6 +157,12 @@ export enum EventMetadataKey {
// Logs the session id
GEMINI_CLI_SESSION_ID = 40,
+ // Logs the Gemini CLI version
+ GEMINI_CLI_VERSION = 54,
+
+ // Logs the Gemini CLI Git commit hash
+ GEMINI_CLI_GIT_COMMIT_HASH = 55,
+
// ==========================================================================
// Loop Detected Event Keys
// ===========================================================================
diff --git a/scripts/generate-git-commit-info.js b/scripts/generate-git-commit-info.js
index 7c4871ec..64b3c748 100644
--- a/scripts/generate-git-commit-info.js
+++ b/scripts/generate-git-commit-info.js
@@ -21,16 +21,24 @@ import { execSync } from 'child_process';
import { existsSync, mkdirSync, writeFileSync } from 'fs';
import { dirname, join, relative } from 'path';
import { fileURLToPath } from 'url';
+import { readPackageUp } from 'read-package-up';
const __dirname = dirname(fileURLToPath(import.meta.url));
const root = join(__dirname, '..');
const scriptPath = relative(root, fileURLToPath(import.meta.url));
-const generatedDir = join(root, 'packages/cli/src/generated');
-const gitCommitFile = join(generatedDir, 'git-commit.ts');
+const generatedCliDir = join(root, 'packages/cli/src/generated');
+const cliGitCommitFile = join(generatedCliDir, 'git-commit.ts');
+const generatedCoreDir = join(root, 'packages/core/src/generated');
+const coreGitCommitFile = join(generatedCoreDir, 'git-commit.ts');
let gitCommitInfo = 'N/A';
+let cliVersion = 'UNKNOWN';
-if (!existsSync(generatedDir)) {
- mkdirSync(generatedDir, { recursive: true });
+if (!existsSync(generatedCliDir)) {
+ mkdirSync(generatedCliDir, { recursive: true });
+}
+
+if (!existsSync(generatedCoreDir)) {
+ mkdirSync(generatedCoreDir, { recursive: true });
}
try {
@@ -40,6 +48,9 @@ try {
if (gitHash) {
gitCommitInfo = gitHash;
}
+
+ const result = await readPackageUp();
+ cliVersion = result?.packageJson?.version ?? 'UNKNOWN';
} catch {
// ignore
}
@@ -53,6 +64,8 @@ const fileContent = `/**
// This file is auto-generated by the build script (${scriptPath})
// Do not edit this file manually.
export const GIT_COMMIT_INFO = '${gitCommitInfo}';
+export const CLI_VERSION = '${cliVersion}';
`;
-writeFileSync(gitCommitFile, fileContent);
+writeFileSync(cliGitCommitFile, fileContent);
+writeFileSync(coreGitCommitFile, fileContent);