import posthog from "posthog-js" import type { TelemetrySetting } from "@roo-code/types" class TelemetryClient { private static instance: TelemetryClient private static telemetryEnabled: boolean = false public updateTelemetryState(telemetrySetting: TelemetrySetting, apiKey?: string, distinctId?: string) { posthog.reset() if (telemetrySetting !== "disabled" && apiKey && distinctId) { TelemetryClient.telemetryEnabled = true posthog.init(apiKey, { api_host: "https://ph.roocode.com", ui_host: "https://us.posthog.com", persistence: "localStorage", loaded: () => posthog.identify(distinctId), capture_pageview: false, capture_pageleave: false, autocapture: false, }) } else { TelemetryClient.telemetryEnabled = false } } public static getInstance(): TelemetryClient { if (!TelemetryClient.instance) { TelemetryClient.instance = new TelemetryClient() } return TelemetryClient.instance } public capture(eventName: string, properties?: Record) { if (TelemetryClient.telemetryEnabled) { try { posthog.capture(eventName, properties) } catch (_error) { // Silently fail if there's an error capturing an event. } } } } export const telemetryClient = TelemetryClient.getInstance()