openhands / src /services /telemetry-context.ts
SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
3d700dd verified
Raw
History Blame Contribute Delete
2.03 kB
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),
};
}