mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-07-21 07:20:50 -07:00
Telemtry(extensions) - Add logging for extension events (#8339)
Co-authored-by: Shi Shu <shii@google.com>
This commit is contained in:
@@ -12,10 +12,13 @@ import type {
|
||||
import {
|
||||
GEMINI_DIR,
|
||||
Storage,
|
||||
ClearcutLogger,
|
||||
Config,
|
||||
ExtensionInstallEvent,
|
||||
ExtensionUninstallEvent,
|
||||
ExtensionEnableEvent,
|
||||
logExtensionEnable,
|
||||
logExtensionInstallEvent,
|
||||
logExtensionUninstall,
|
||||
} from '@google/gemini-cli-core';
|
||||
import * as fs from 'node:fs';
|
||||
import * as path from 'node:path';
|
||||
@@ -123,16 +126,18 @@ export async function performWorkspaceExtensionMigration(
|
||||
return failedInstallNames;
|
||||
}
|
||||
|
||||
function getClearcutLogger(cwd: string) {
|
||||
function getTelemetryConfig(cwd: string) {
|
||||
const settings = loadSettings(cwd);
|
||||
const config = new Config({
|
||||
telemetry: settings.merged.telemetry,
|
||||
interactive: false,
|
||||
sessionId: randomUUID(),
|
||||
targetDir: cwd,
|
||||
cwd,
|
||||
model: '',
|
||||
debugMode: false,
|
||||
});
|
||||
const logger = ClearcutLogger.getInstance(config);
|
||||
return logger;
|
||||
return config;
|
||||
}
|
||||
|
||||
export function loadExtensions(
|
||||
@@ -372,7 +377,7 @@ export async function installExtension(
|
||||
askConsent: boolean = false,
|
||||
cwd: string = process.cwd(),
|
||||
): Promise<string> {
|
||||
const logger = getClearcutLogger(cwd);
|
||||
const telemetryConfig = getTelemetryConfig(cwd);
|
||||
let newExtensionConfig: ExtensionConfig | null = null;
|
||||
let localSourcePath: string | undefined;
|
||||
|
||||
@@ -467,7 +472,8 @@ export async function installExtension(
|
||||
}
|
||||
}
|
||||
|
||||
logger?.logExtensionInstallEvent(
|
||||
logExtensionInstallEvent(
|
||||
telemetryConfig,
|
||||
new ExtensionInstallEvent(
|
||||
newExtensionConfig!.name,
|
||||
newExtensionConfig!.version,
|
||||
@@ -491,7 +497,8 @@ export async function installExtension(
|
||||
// Ignore error, this is just for logging.
|
||||
}
|
||||
}
|
||||
logger?.logExtensionInstallEvent(
|
||||
logExtensionInstallEvent(
|
||||
telemetryConfig,
|
||||
new ExtensionInstallEvent(
|
||||
newExtensionConfig?.name ?? '',
|
||||
newExtensionConfig?.version ?? '',
|
||||
@@ -559,7 +566,7 @@ export async function uninstallExtension(
|
||||
extensionIdentifier: string,
|
||||
cwd: string = process.cwd(),
|
||||
): Promise<void> {
|
||||
const logger = getClearcutLogger(cwd);
|
||||
const telemetryConfig = getTelemetryConfig(cwd);
|
||||
const installedExtensions = loadUserExtensions();
|
||||
const extensionName = installedExtensions.find(
|
||||
(installed) =>
|
||||
@@ -581,7 +588,8 @@ export async function uninstallExtension(
|
||||
recursive: true,
|
||||
force: true,
|
||||
});
|
||||
logger?.logExtensionUninstallEvent(
|
||||
logExtensionUninstall(
|
||||
telemetryConfig,
|
||||
new ExtensionUninstallEvent(extensionName, 'success'),
|
||||
);
|
||||
}
|
||||
@@ -648,4 +656,6 @@ export function enableExtension(
|
||||
);
|
||||
const scopePath = scope === SettingScope.Workspace ? cwd : os.homedir();
|
||||
manager.enable(name, true, scopePath);
|
||||
const config = getTelemetryConfig(cwd);
|
||||
logExtensionEnable(config, new ExtensionEnableEvent(name, scope));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user