|
|
@@ -26,14 +26,22 @@ function tr(translator: Translator | undefined, key: string, text: string, vars?
|
|
|
}
|
|
|
|
|
|
export function formatServerError(error: unknown, translate?: Translator, fallback?: string) {
|
|
|
- if (isConfigInvalidErrorLike(error)) return parseReadableConfigInvalidError(error, translate)
|
|
|
- if (isProviderModelNotFoundErrorLike(error)) return parseReadableProviderModelNotFoundError(error, translate)
|
|
|
+ const unwrapped = unwrapNamedError(error)
|
|
|
+ if (isConfigInvalidErrorLike(unwrapped)) return parseReadableConfigInvalidError(unwrapped, translate)
|
|
|
+ if (isProviderModelNotFoundErrorLike(unwrapped)) return parseReadableProviderModelNotFoundError(unwrapped, translate)
|
|
|
if (error instanceof Error && error.message) return error.message
|
|
|
if (typeof error === "string" && error) return error
|
|
|
if (fallback) return fallback
|
|
|
return tr(translate, "error.chain.unknown", "Unknown error")
|
|
|
}
|
|
|
|
|
|
+function unwrapNamedError(error: unknown): unknown {
|
|
|
+ if (error instanceof Error && error.cause && typeof error.cause === "object" && "body" in error.cause) {
|
|
|
+ return (error.cause as Record<string, unknown>).body
|
|
|
+ }
|
|
|
+ return error
|
|
|
+}
|
|
|
+
|
|
|
function isConfigInvalidErrorLike(error: unknown): error is ConfigInvalidError {
|
|
|
if (typeof error !== "object" || error === null) return false
|
|
|
const o = error as Record<string, unknown>
|