/** * Strip PII from monitoring endpoints for unauthenticated visitors. */ export function maskEmail(email) { const [local, domain] = String(email || '').split('@'); if (!local || !domain) { return 'account'; } if (local.length <= 4) { return `${local[0]}***@${domain}`; } return `${local.slice(0, 2)}******${local.slice(-2)}@${domain}`; } function sanitizeSubscription(subscription) { if (!subscription || typeof subscription !== 'object') { return undefined; } return { tier: subscription.tier || 'unknown' }; } function sanitizeModelQuotas(models) { if (!models || typeof models !== 'object') { return {}; } const sanitized = {}; for (const [modelId, info] of Object.entries(models)) { sanitized[modelId] = { remaining: info?.remaining ?? null, remainingFraction: info?.remainingFraction ?? null, resetTime: info?.resetTime ?? null }; } return sanitized; } export function sanitizeHealthAccount(account, index) { return { id: `account-${index + 1}`, email: maskEmail(account?.email), status: account?.status || 'unknown', modelRateLimits: {}, rateLimitCooldownRemaining: account?.rateLimitCooldownRemaining ?? 0, models: sanitizeModelQuotas(account?.models), ...(account?.error ? { error: 'Unavailable' } : {}) }; } export function sanitizeHealthPayload(payload) { return { status: payload?.status, timestamp: payload?.timestamp, latencyMs: payload?.latencyMs, summary: payload?.summary, counts: payload?.counts, accounts: (payload?.accounts || []).map(sanitizeHealthAccount) }; } export function sanitizeAccountLimitsAccount(account, index) { return { id: `account-${index + 1}`, email: maskEmail(account?.email), status: account?.status || 'unknown', error: account?.error ? 'Unavailable' : null, source: account?.source || 'unknown', enabled: account?.enabled !== false, isInvalid: Boolean(account?.isInvalid), subscription: sanitizeSubscription(account?.subscription), limits: sanitizeModelQuotas(account?.limits || account?.models), models: sanitizeModelQuotas(account?.models) }; } export function sanitizeAccountLimitsPayload(payload) { return { timestamp: payload?.timestamp, totalAccounts: payload?.totalAccounts, models: payload?.models || [], modelConfig: {}, globalQuotaThreshold: payload?.globalQuotaThreshold ?? 0, accounts: (payload?.accounts || []).map(sanitizeAccountLimitsAccount) }; }