diff options
| author | Gaurav <[email protected]> | 2025-07-09 21:17:40 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-07-10 04:17:40 +0000 |
| commit | b7f8e1360fc13c077c24c98fe9d85e0734195000 (patch) | |
| tree | 09bad91a13c35017b4c02fab6169c151e24adb68 /packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts | |
| parent | da50a1eefbd0751aaf137882595d500e6b6b4179 (diff) | |
fix: Use Email for Clearcut Logging and Refactor User Info Fetching (#3620)
Diffstat (limited to 'packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts')
| -rw-r--r-- | packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts index a64a9795..1b1cec04 100644 --- a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts +++ b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts @@ -17,8 +17,10 @@ import { } from '../types.js'; import { EventMetadataKey } from './event-metadata-key.js'; import { Config } from '../../config/config.js'; -import { getInstallationId } from '../../utils/user_id.js'; -import { getGoogleAccountId } from '../../utils/user_id.js'; +import { + getInstallationId, + getGoogleAccountEmail, +} from '../../utils/user_id.js'; const start_session_event_name = 'start_session'; const new_prompt_event_name = 'new_prompt'; @@ -66,13 +68,23 @@ export class ClearcutLogger { } createLogEvent(name: string, data: object): object { - return { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const logEvent: any = { console_type: 'GEMINI_CLI', application: 102, event_name: name, - client_install_id: getInstallationId(), event_metadata: [data] as object[], }; + + const email = getGoogleAccountEmail(); + // Should log either email or install ID, not both. See go/cloudmill-1p-oss-instrumentation#define-sessionable-id + if (email) { + logEvent.client_email = email; + } else { + logEvent.client_install_id = getInstallationId(); + } + + return logEvent; } flushIfNeeded(): void { @@ -80,33 +92,24 @@ export class ClearcutLogger { return; } - // Fire and forget - don't await this.flushToClearcut().catch((error) => { console.debug('Error flushing to Clearcut:', error); }); } - async flushToClearcut(): Promise<LogResponse> { + flushToClearcut(): Promise<LogResponse> { if (this.config?.getDebugMode()) { console.log('Flushing log events to Clearcut.'); } const eventsToSend = [...this.events]; this.events.length = 0; - const googleAccountId = await getGoogleAccountId(); - return new Promise<Buffer>((resolve, reject) => { const request = [ { log_source_name: 'CONCORD', request_time_ms: Date.now(), log_event: eventsToSend, - // Add UserInfo with the raw Gaia ID - user_info: googleAccountId - ? { - UserID: googleAccountId, - } - : undefined, }, ]; const body = JSON.stringify(request); @@ -255,7 +258,7 @@ export class ClearcutLogger { this.enqueueLogEvent(this.createLogEvent(start_session_event_name, data)); // Flush start event immediately this.flushToClearcut().catch((error) => { - console.debug('Error flushing start session event to Clearcut:', error); + console.debug('Error flushing to Clearcut:', error); }); } |
