diff options
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, 15 insertions, 18 deletions
diff --git a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts index 1b1cec04..a64a9795 100644 --- a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts +++ b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts @@ -17,10 +17,8 @@ import { } from '../types.js'; import { EventMetadataKey } from './event-metadata-key.js'; import { Config } from '../../config/config.js'; -import { - getInstallationId, - getGoogleAccountEmail, -} from '../../utils/user_id.js'; +import { getInstallationId } from '../../utils/user_id.js'; +import { getGoogleAccountId } from '../../utils/user_id.js'; const start_session_event_name = 'start_session'; const new_prompt_event_name = 'new_prompt'; @@ -68,23 +66,13 @@ export class ClearcutLogger { } createLogEvent(name: string, data: object): object { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const logEvent: any = { + return { 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 { @@ -92,24 +80,33 @@ export class ClearcutLogger { return; } + // Fire and forget - don't await this.flushToClearcut().catch((error) => { console.debug('Error flushing to Clearcut:', error); }); } - flushToClearcut(): Promise<LogResponse> { + async 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); @@ -258,7 +255,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 to Clearcut:', error); + console.debug('Error flushing start session event to Clearcut:', error); }); } |
