export class PlatformError extends Error { constructor(message, { code = 'PLATFORM_ERROR', status = 500, details = null, expose = false, cause = undefined } = {}) { super(String(message || 'Unbekannter Plattformfehler'), { cause }); this.name = 'PlatformError'; this.code = String(code || 'PLATFORM_ERROR'); this.status = Number.isInteger(status) ? status : 500; this.details = details; this.expose = Boolean(expose || this.status < 500); } } export function normalizePlatformError(error) { if (error instanceof PlatformError) return error; return new PlatformError(error?.message || 'Interner Serverfehler', { code: error?.code || 'INTERNAL_ERROR', status: Number.isInteger(error?.status) ? error.status : 500, details: error?.details || null, expose: Boolean(error?.expose), cause: error, }); } export function platformErrorPayload(error, requestId = null) { const normalized = normalizePlatformError(error); return { error: normalized.expose ? normalized.message : 'Interner Serverfehler', code: normalized.code, request_id: requestId || null, ...(normalized.expose && normalized.details ? { details: normalized.details } : {}), }; }