Enable clearcut logging by default (#1309)
Clearcut logging can now be disabled via disableDataCollection in user settings
This commit is contained in:
parent
07880d43d2
commit
631591ce79
|
@ -226,7 +226,7 @@ export async function loadCliConfig(
|
|||
process.env.OTEL_EXPORTER_OTLP_ENDPOINT ??
|
||||
settings.telemetry?.otlpEndpoint,
|
||||
logPrompts: argv.telemetryLogPrompts ?? settings.telemetry?.logPrompts,
|
||||
disableDataCollection: settings.telemetry?.disableDataCollection ?? true,
|
||||
disableDataCollection: settings.telemetry?.disableDataCollection ?? false,
|
||||
},
|
||||
// Git-aware file filtering settings
|
||||
fileFiltering: {
|
||||
|
|
|
@ -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[] {
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue