From 3bb8b0206039b600de3dfa71acbff869a5f07c2e Mon Sep 17 00:00:00 2001 From: Mark IJbema Date: Wed, 18 Feb 2026 14:27:17 +0100 Subject: [PATCH] refactor: add TelemetryProxy.tryCapture() convenience method --- packages/kilo-vscode/src/KiloProvider.ts | 6 +----- .../services/autocomplete/AutocompleteServiceManager.ts | 4 ++-- .../classic-auto-complete/AutocompleteTelemetry.ts | 2 +- .../kilo-vscode/src/services/telemetry/telemetry-proxy.ts | 8 ++++++++ 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/kilo-vscode/src/KiloProvider.ts b/packages/kilo-vscode/src/KiloProvider.ts index 16c5e4a5c59..634bba1db68 100644 --- a/packages/kilo-vscode/src/KiloProvider.ts +++ b/packages/kilo-vscode/src/KiloProvider.ts @@ -399,11 +399,7 @@ export class KiloProvider implements vscode.WebviewViewProvider, TelemetryProper await this.handleResetAllSettings() break case "telemetry": - try { - TelemetryProxy.getInstance().capture(message.event, message.properties) - } catch { - // TelemetryProxy not initialized — safe to ignore - } + TelemetryProxy.tryCapture(message.event, message.properties) break } }) diff --git a/packages/kilo-vscode/src/services/autocomplete/AutocompleteServiceManager.ts b/packages/kilo-vscode/src/services/autocomplete/AutocompleteServiceManager.ts index 3c9caeb1d54..62acb37694d 100644 --- a/packages/kilo-vscode/src/services/autocomplete/AutocompleteServiceManager.ts +++ b/packages/kilo-vscode/src/services/autocomplete/AutocompleteServiceManager.ts @@ -133,7 +133,7 @@ export class AutocompleteServiceManager { enableSmartInlineTaskKeybinding: false, }) - TelemetryProxy.tryGetInstance()?.capture(TelemetryEventName.GHOST_SERVICE_DISABLED) + TelemetryProxy.tryCapture(TelemetryEventName.GHOST_SERVICE_DISABLED) await this.load() } @@ -231,7 +231,7 @@ export class AutocompleteServiceManager { } this.taskId = crypto.randomUUID() - TelemetryProxy.tryGetInstance()?.capture(TelemetryEventName.INLINE_ASSIST_AUTO_TASK, { + TelemetryProxy.tryCapture(TelemetryEventName.INLINE_ASSIST_AUTO_TASK, { taskId: this.taskId, }) diff --git a/packages/kilo-vscode/src/services/autocomplete/classic-auto-complete/AutocompleteTelemetry.ts b/packages/kilo-vscode/src/services/autocomplete/classic-auto-complete/AutocompleteTelemetry.ts index 356a60d0a3c..75cbb228d66 100644 --- a/packages/kilo-vscode/src/services/autocomplete/classic-auto-complete/AutocompleteTelemetry.ts +++ b/packages/kilo-vscode/src/services/autocomplete/classic-auto-complete/AutocompleteTelemetry.ts @@ -87,7 +87,7 @@ export class AutocompleteTelemetry { ...properties, autocompleteType: this.autocompleteType, } - TelemetryProxy.tryGetInstance()?.capture(event, props) + TelemetryProxy.tryCapture(event, props) } /** diff --git a/packages/kilo-vscode/src/services/telemetry/telemetry-proxy.ts b/packages/kilo-vscode/src/services/telemetry/telemetry-proxy.ts index 28a57b2588e..79c977f9aec 100644 --- a/packages/kilo-vscode/src/services/telemetry/telemetry-proxy.ts +++ b/packages/kilo-vscode/src/services/telemetry/telemetry-proxy.ts @@ -42,6 +42,14 @@ export class TelemetryProxy { return TelemetryProxy.instance } + /** + * Fire-and-forget capture that silently no-ops when the proxy has not been + * initialised yet. + */ + static tryCapture(event: TelemetryEventName, properties?: Record) { + TelemetryProxy.tryGetInstance()?.capture(event, properties) + } + /** * Configure the CLI server connection. Must be called before capture() will send events. */