export interface AuthenticatedUserLike { id: string; tenantId?: string | null; teamId?: string | null; organizationId?: string | null; orgId?: string | null; } export interface ActorTenantScope { userId: string; tenantId: string; } /** * Build the immutable server-derived scope used for Tess session operations. * Current Mosaic auth is user-scoped; future org/team claims can populate one * of the tenant fields without allowing clients to choose another tenant. */ export function scopeFromUser(user: AuthenticatedUserLike): ActorTenantScope { return { userId: user.id, tenantId: user.tenantId ?? user.teamId ?? user.organizationId ?? user.orgId ?? user.id, }; }