import { AGENT_CANVAS_CLIENT_SOURCE } from "#/api/client-source"; import { getBackendTelemetryProperties } from "#/services/telemetry-context"; import { trackEvent } from "#/services/telemetry"; export type CloudConnectionSource = | "onboarding" | "add_backend_modal" | "manage_backends_modal" | "cloud_auto_connect"; const CLOUD_CONVERSATION_READY_INSERT_ID_PREFIX = `${AGENT_CANVAS_CLIENT_SOURCE}:cloud_conversation_ready`; function trackCloudFunnelEvent( event: string, properties: Record, ): void { void trackEvent(event, properties); } function cloudLoginBackendContext() { return getBackendTelemetryProperties({ backendKind: "cloud", connectionMethod: "cloud_login", }); } function cloudConversationBackendContext() { return getBackendTelemetryProperties({ backendKind: "cloud", }); } export function trackCloudDeviceAuthorizationStarted( _host: string, source?: CloudConnectionSource, ): void { trackCloudFunnelEvent("cloud_device_authorization_started", { ...cloudLoginBackendContext(), source, }); } export function trackCloudDeviceAuthorizationSucceeded( _host: string, source?: CloudConnectionSource, ): void { trackCloudFunnelEvent("cloud_device_authorization_succeeded", { ...cloudLoginBackendContext(), source, }); } export function trackCloudConversationReady( taskId: string, conversationId: string, ): void { trackCloudFunnelEvent("cloud_conversation_ready", { ...cloudConversationBackendContext(), $insert_id: `${CLOUD_CONVERSATION_READY_INSERT_ID_PREFIX}:${taskId}`, task_id: taskId, conversation_id: conversationId, }); }