(input: { providerID: ProviderV2.ID; error: APICallError })
| 163 | } |
| 164 | |
| 165 | export function parseAPICallError(input: { providerID: ProviderV2.ID; error: APICallError }): ParsedAPICallError { |
| 166 | const m = message(input.providerID, input.error) |
| 167 | const body = json(input.error.responseBody) |
| 168 | if (isContextOverflow(m) || input.error.statusCode === 413 || body?.error?.code === "context_length_exceeded") { |
| 169 | return { |
| 170 | type: "context_overflow", |
| 171 | message: m, |
| 172 | responseBody: input.error.responseBody, |
| 173 | } |
| 174 | } |
| 175 | |
| 176 | const metadata = input.error.url ? { url: input.error.url } : undefined |
| 177 | return { |
| 178 | type: "api_error", |
| 179 | message: m, |
| 180 | statusCode: input.error.statusCode, |
| 181 | isRetryable: input.providerID.startsWith("openai") ? isOpenAiErrorRetryable(input.error) : input.error.isRetryable, |
| 182 | responseHeaders: input.error.responseHeaders, |
| 183 | responseBody: input.error.responseBody, |
| 184 | metadata, |
| 185 | } |
| 186 | } |
| 187 | |
| 188 | export * as ProviderError from "./error" |
nothing calls this directly
no test coverage detected