diff options
| author | owenofbrien <[email protected]> | 2025-06-23 12:18:58 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-06-23 10:18:58 -0700 |
| commit | 631591ce79c0b2fedb3cc6c2e30599e7c42ab88f (patch) | |
| tree | ce63899747569051300078458d72ec9c6ea713b5 /packages/core/src | |
| parent | 07880d43d27f3d608f6b082e38ba188ed5dd67af (diff) | |
Enable clearcut logging by default (#1309)
Clearcut logging can now be disabled via disableDataCollection in user settings
Diffstat (limited to 'packages/core/src')
| -rw-r--r-- | packages/core/src/config/config.ts | 13 | ||||
| -rw-r--r-- | packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts | 120 |
2 files changed, 79 insertions, 54 deletions
diff --git a/packages/core/src/config/config.ts b/packages/core/src/config/config.ts index a9696206..d9161fae 100644 --- a/packages/core/src/config/config.ts +++ b/packages/core/src/config/config.ts @@ -117,7 +117,6 @@ export interface ConfigParameters { fileDiscoveryService?: FileDiscoveryService; bugCommand?: BugCommandSettings; model: string; - disableDataCollection?: boolean; extensionContextFilePaths?: string[]; } @@ -155,7 +154,6 @@ export class Config { private readonly cwd: string; private readonly bugCommand: BugCommandSettings | undefined; private readonly model: string; - private readonly disableDataCollection: boolean; private readonly extensionContextFilePaths: string[]; constructor(params: ConfigParameters) { @@ -183,6 +181,7 @@ export class Config { target: params.telemetry?.target ?? DEFAULT_TELEMETRY_TARGET, otlpEndpoint: params.telemetry?.otlpEndpoint ?? DEFAULT_OTLP_ENDPOINT, logPrompts: params.telemetry?.logPrompts ?? true, + disableDataCollection: params.telemetry?.disableDataCollection ?? false, }; this.fileFiltering = { @@ -196,8 +195,6 @@ export class Config { this.fileDiscoveryService = params.fileDiscoveryService ?? null; this.bugCommand = params.bugCommand; this.model = params.model; - this.disableDataCollection = - params.telemetry?.disableDataCollection ?? true; this.extensionContextFilePaths = params.extensionContextFilePaths ?? []; if (params.contextFileName) { @@ -208,10 +205,12 @@ export class Config { initializeTelemetry(this); } - if (!this.disableDataCollection) { - ClearcutLogger.getInstance(this)?.enqueueLogEvent( + if (!this.getDisableDataCollection()) { + ClearcutLogger.getInstance(this)?.logStartSessionEvent( new StartSessionEvent(this), ); + } else { + console.log('Data collection is disabled.'); } } @@ -387,7 +386,7 @@ export class Config { } getDisableDataCollection(): boolean { - return this.disableDataCollection; + return this.telemetrySettings.disableDataCollection ?? false; } getExtensionContextFilePaths(): string[] { diff --git a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts index 8da928c7..aa4afe4c 100644 --- a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts +++ b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts @@ -64,7 +64,7 @@ export class ClearcutLogger { ]); } - createLogEvent(name: string, data: Map<EventMetadataKey, string>): object { + createLogEvent(name: string, data: object): object { return { Application: 'GEMINI_CLI', event_name: name, @@ -83,6 +83,7 @@ export class ClearcutLogger { } flushToClearcut(): Promise<LogResponse> { + console.log('Flushing log events to Clearcut.'); return new Promise<Buffer>((resolve, reject) => { const request = [ { @@ -92,6 +93,7 @@ export class ClearcutLogger { }, ]; const body = JSON.stringify(request); + console.log('Clearcut POST request body:', body); const options = { hostname: 'play.googleapis.com', path: '/log', @@ -106,6 +108,7 @@ export class ClearcutLogger { }); }); req.on('error', (e) => { + console.log('Clearcut POST request error: ', e); reject(e); }); req.end(body); @@ -152,58 +155,81 @@ export class ClearcutLogger { // message is corrupted. return undefined; } - return { + + const returnVal = { nextRequestWaitMs: Number(ms), }; + console.log('Clearcut response: ', returnVal); + return returnVal; } logStartSessionEvent(event: StartSessionEvent): void { - const data: Map<EventMetadataKey, string> = new Map(); - - data.set(EventMetadataKey.GEMINI_CLI_START_SESSION_MODEL, event.model); - data.set( - EventMetadataKey.GEMINI_CLI_START_SESSION_EMBEDDING_MODEL, - event.embedding_model, - ); - data.set( - EventMetadataKey.GEMINI_CLI_START_SESSION_SANDBOX, - event.sandbox_enabled.toString(), - ); - data.set( - EventMetadataKey.GEMINI_CLI_START_SESSION_CORE_TOOLS, - event.core_tools_enabled, - ); - data.set( - EventMetadataKey.GEMINI_CLI_START_SESSION_APPROVAL_MODE, - event.approval_mode, - ); - data.set( - EventMetadataKey.GEMINI_CLI_START_SESSION_API_KEY_ENABLED, - event.api_key_enabled.toString(), - ); - data.set( - EventMetadataKey.GEMINI_CLI_START_SESSION_VERTEX_API_ENABLED, - event.vertex_ai_enabled.toString(), - ); - data.set( - EventMetadataKey.GEMINI_CLI_START_SESSION_DEBUG_MODE_ENABLED, - event.debug_enabled.toString(), - ); - data.set( - EventMetadataKey.GEMINI_CLI_START_SESSION_MCP_SERVERS, - event.mcp_servers, - ); - data.set( - EventMetadataKey.GEMINI_CLI_START_SESSION_TELEMETRY_ENABLED, - event.telemetry_enabled.toString(), - ); - data.set( - EventMetadataKey.GEMINI_CLI_START_SESSION_TELEMETRY_LOG_USER_PROMPTS_ENABLED, - event.telemetry_log_user_prompts_enabled.toString(), - ); - + const data = [ + { + EventMetadataKey: EventMetadataKey.GEMINI_CLI_START_SESSION_MODEL, + value: event.model, + }, + { + EventMetadataKey: + EventMetadataKey.GEMINI_CLI_START_SESSION_EMBEDDING_MODEL, + value: event.embedding_model, + }, + { + EventMetadataKey: EventMetadataKey.GEMINI_CLI_START_SESSION_SANDBOX, + value: event.sandbox_enabled.toString(), + }, + { + EventMetadataKey: EventMetadataKey.GEMINI_CLI_START_SESSION_CORE_TOOLS, + value: event.core_tools_enabled, + }, + { + EventMetadataKey: + EventMetadataKey.GEMINI_CLI_START_SESSION_APPROVAL_MODE, + value: event.approval_mode, + }, + { + EventMetadataKey: + EventMetadataKey.GEMINI_CLI_START_SESSION_API_KEY_ENABLED, + value: event.api_key_enabled.toString(), + }, + { + EventMetadataKey: + EventMetadataKey.GEMINI_CLI_START_SESSION_VERTEX_API_ENABLED, + value: event.vertex_ai_enabled.toString(), + }, + { + EventMetadataKey: + EventMetadataKey.GEMINI_CLI_START_SESSION_DEBUG_MODE_ENABLED, + value: event.debug_enabled.toString(), + }, + { + EventMetadataKey: + EventMetadataKey.GEMINI_CLI_START_SESSION_VERTEX_API_ENABLED, + value: event.vertex_ai_enabled.toString(), + }, + { + EventMetadataKey: EventMetadataKey.GEMINI_CLI_START_SESSION_MCP_SERVERS, + value: event.mcp_servers, + }, + { + EventMetadataKey: + EventMetadataKey.GEMINI_CLI_START_SESSION_VERTEX_API_ENABLED, + value: event.vertex_ai_enabled.toString(), + }, + { + EventMetadataKey: + EventMetadataKey.GEMINI_CLI_START_SESSION_TELEMETRY_ENABLED, + value: event.telemetry_enabled.toString(), + }, + { + EventMetadataKey: + EventMetadataKey.GEMINI_CLI_START_SESSION_TELEMETRY_LOG_USER_PROMPTS_ENABLED, + value: event.telemetry_log_user_prompts_enabled.toString(), + }, + ]; this.enqueueLogEvent(this.createLogEvent(start_session_event_name, data)); - this.flushIfNeeded(); + // Flush start event immediately + this.flushToClearcut(); } logNewPromptEvent(event: UserPromptEvent): void { |
