error.js
586 Bytes
import * as v from 'valibot'
/**
* 统一错误形状:全 API 失败响应同形。
* `code` 与 `retryable` 的语义与各能力包的结构化错误(如 `TtsError`)对齐,
* 前端可一套分支处理全部失败(401 / 限流 / 校验失败等)。
* @typedef {{
* error: { code: string, message: string, retryable: boolean, details?: object }
* }} ApiErrorT
*/
export const ApiError = v.object({
error: v.object({
code: v.string(),
message: v.string(),
retryable: v.boolean(),
details: v.optional(v.record(v.string(), v.unknown())),
}),
})