Enable clearcut logging by default (#1309)

Clearcut logging can now be disabled via disableDataCollection in user settings
This commit is contained in:
owenofbrien
2025-06-23 12:18:58 -05:00
committed by GitHub
parent 07880d43d2
commit 631591ce79
3 changed files with 80 additions and 55 deletions

View File

@@ -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 {