File size: 2,031 Bytes
3d700dd | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | import type { BackendKind } from "#/api/backend-registry/types";
export const UNKNOWN_TELEMETRY_VERSION = "unknown";
export type BackendConnectionMethod = "manual" | "cloud_login" | "cloud_cookie";
export interface CloudTelemetryContextInput {
userId?: string | null;
email?: string | null;
orgId?: string | null;
}
export interface BackendTelemetryContextInput {
backendKind?: BackendKind | null;
agentServerVersion?: string | null;
automationSdkVersion?: string | null;
backendVersion?: string | null;
connectionMethod?: BackendConnectionMethod;
}
function normalizeTelemetryVersion(version: string | null | undefined): string {
const trimmed = version?.trim();
return trimmed || UNKNOWN_TELEMETRY_VERSION;
}
function normalizeOptionalProperty(
value: string | null | undefined,
): string | null {
const trimmed = value?.trim();
return trimmed || null;
}
export function getBackendTelemetryProperties({
backendKind,
agentServerVersion,
automationSdkVersion,
backendVersion,
connectionMethod,
}: BackendTelemetryContextInput): Record<string, unknown> {
const resolvedAgentServerVersion = normalizeTelemetryVersion(
agentServerVersion ?? backendVersion,
);
const resolvedAutomationSdkVersion =
normalizeTelemetryVersion(automationSdkVersion);
const resolvedBackendVersion = normalizeTelemetryVersion(
backendVersion ?? agentServerVersion,
);
return {
backend_kind: backendKind ?? null,
agent_server_version: resolvedAgentServerVersion,
automation_sdk_version: resolvedAutomationSdkVersion,
backend_version: resolvedBackendVersion,
...(connectionMethod ? { connection_method: connectionMethod } : {}),
};
}
export function getCloudTelemetryProperties(
context: CloudTelemetryContextInput | null = null,
): Record<string, unknown> {
return {
cloud_user_id: normalizeOptionalProperty(context?.userId),
cloud_user_email: normalizeOptionalProperty(context?.email),
cloud_org_id: normalizeOptionalProperty(context?.orgId),
};
}
|