summaryrefslogtreecommitdiff
path: root/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts
diff options
context:
space:
mode:
authorShreya Keshive <[email protected]>2025-07-29 16:20:37 -0400
committerGitHub <[email protected]>2025-07-29 20:20:37 +0000
commit293bb820193a41aee6f1421367a2d1fc6d836422 (patch)
tree639f1cb516ea4f0dd772a0a54a20790f5a63520c /packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts
parent80079cd2a5741d7024c8500853fe7a3af5e6ba0a (diff)
Adds centralized support to log slash commands + sub commands (#5128)
Diffstat (limited to 'packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts')
-rw-r--r--packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts21
1 files changed, 21 insertions, 0 deletions
diff --git a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts
index fd5a9ab2..d221ef5e 100644
--- a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts
+++ b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts
@@ -19,6 +19,7 @@ import {
FlashFallbackEvent,
LoopDetectedEvent,
FlashDecidedToContinueEvent,
+ SlashCommandEvent,
} from '../types.js';
import { EventMetadataKey } from './event-metadata-key.js';
import { Config } from '../../config/config.js';
@@ -40,6 +41,7 @@ const end_session_event_name = 'end_session';
const flash_fallback_event_name = 'flash_fallback';
const loop_detected_event_name = 'loop_detected';
const flash_decided_to_continue_event_name = 'flash_decided_to_continue';
+const slash_command_event_name = 'slash_command';
export interface LogResponse {
nextRequestWaitMs?: number;
@@ -528,6 +530,25 @@ export class ClearcutLogger {
this.flushIfNeeded();
}
+ logSlashCommandEvent(event: SlashCommandEvent): void {
+ const data = [
+ {
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_SLASH_COMMAND_NAME,
+ value: JSON.stringify(event.command),
+ },
+ ];
+
+ if (event.subcommand) {
+ data.push({
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_SLASH_COMMAND_SUBCOMMAND,
+ value: JSON.stringify(event.subcommand),
+ });
+ }
+
+ this.enqueueLogEvent(this.createLogEvent(slash_command_event_name, data));
+ this.flushIfNeeded();
+ }
+
logEndSessionEvent(event: EndSessionEvent): void {
const data = [
{