From 71f706cf29cf70a888ee65117b21ad31042207f8 Mon Sep 17 00:00:00 2001 From: Richie Foreman Date: Mon, 18 Aug 2025 15:59:13 -0400 Subject: feat(client/compression): Log telemetry when compressing chat context. (#6195) --- packages/core/src/telemetry/loggers.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'packages/core/src/telemetry/loggers.ts') diff --git a/packages/core/src/telemetry/loggers.ts b/packages/core/src/telemetry/loggers.ts index afc92807..bfa98b32 100644 --- a/packages/core/src/telemetry/loggers.ts +++ b/packages/core/src/telemetry/loggers.ts @@ -19,6 +19,7 @@ import { EVENT_NEXT_SPEAKER_CHECK, SERVICE_NAME, EVENT_SLASH_COMMAND, + EVENT_CHAT_COMPRESSION, } from './constants.js'; import { ApiErrorEvent, @@ -33,12 +34,14 @@ import { LoopDetectedEvent, SlashCommandEvent, KittySequenceOverflowEvent, + ChatCompressionEvent, } from './types.js'; import { recordApiErrorMetrics, recordTokenUsageMetrics, recordApiResponseMetrics, recordToolCallMetrics, + recordChatCompressionMetrics, } from './metrics.js'; import { isTelemetrySdkInitialized } from './sdk.js'; import { uiTelemetryService, UiEvent } from './uiTelemetry.js'; @@ -380,6 +383,31 @@ export function logIdeConnection( logger.emit(logRecord); } +export function logChatCompression( + config: Config, + event: ChatCompressionEvent, +): void { + ClearcutLogger.getInstance(config)?.logChatCompressionEvent(event); + + const attributes: LogAttributes = { + ...getCommonAttributes(config), + ...event, + 'event.name': EVENT_CHAT_COMPRESSION, + }; + + const logger = logs.getLogger(SERVICE_NAME); + const logRecord: LogRecord = { + body: `Chat compression (Saved ${event.tokens_before - event.tokens_after} tokens)`, + attributes, + }; + logger.emit(logRecord); + + recordChatCompressionMetrics(config, { + tokens_before: event.tokens_before, + tokens_after: event.tokens_after, + }); +} + export function logKittySequenceOverflow( config: Config, event: KittySequenceOverflowEvent, -- cgit v1.2.3