diff options
| author | Richie Foreman <[email protected]> | 2025-08-07 18:50:48 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-08-07 22:50:48 +0000 |
| commit | 9bc0a4aff3136ae9bb16a03e4d14ba46a137141a (patch) | |
| tree | 997366a7c2cb5a46479381165289ed65ebd2e27d | |
| parent | 0c32a4061dc008f6483918a9e53cba8914e88bef (diff) | |
chore(telemetry): Log `FIREBASE_STUDIO` when using Gemini CLI within Firebase Studio (#5790)
| -rw-r--r-- | packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts index 649d82b6..45a657c7 100644 --- a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts +++ b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts @@ -51,6 +51,25 @@ export interface LogResponse { nextRequestWaitMs?: number; } +/** + * Determine the surface that the user is currently using. Surface is effectively the + * distribution channel in which the user is using Gemini CLI. Gemini CLI comes bundled + * w/ Firebase Studio and Cloud Shell. Users that manually download themselves will + * likely be "SURFACE_NOT_SET". + * + * This is computed based upon a series of environment variables these distribution + * methods might have in their runtimes. + */ +function determineSurface(): string { + if (process.env.CLOUD_SHELL === 'true') { + return 'CLOUD_SHELL'; + } else if (process.env.MONOSPACE_ENV === 'true') { + return 'FIREBASE_STUDIO'; + } else { + return process.env.SURFACE || 'SURFACE_NOT_SET'; + } +} + // Singleton class for batch posting log events to Clearcut. When a new event comes in, the elapsed time // is checked and events are flushed to Clearcut if at least a minute has passed since the last flush. export class ClearcutLogger { @@ -237,10 +256,7 @@ export class ClearcutLogger { } logStartSessionEvent(event: StartSessionEvent): void { - const surface = - process.env.CLOUD_SHELL === 'true' - ? 'CLOUD_SHELL' - : process.env.SURFACE || 'SURFACE_NOT_SET'; + const surface = determineSurface(); const data = [ { |
