summaryrefslogtreecommitdiff
path: root/packages/core
diff options
context:
space:
mode:
Diffstat (limited to 'packages/core')
-rw-r--r--packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts24
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 = [
{