MCPcopy Index your code
hub / github.com/CodebuffAI/codebuff / parseOpenRouterError

Function parseOpenRouterError

web/src/llm-api/openrouter.ts:873–916  ·  view source on GitHub ↗

* Parses an error response from OpenRouter and returns an OpenRouterError.

(
  response: Response,
)

Source from the content-addressed store, hash-verified

871 * Parses an error response from OpenRouter and returns an OpenRouterError.
872 */
873async function parseOpenRouterError(
874 response: Response,
875): Promise<OpenRouterError> {
876 const errorText = await response.text()
877 let errorBody: OpenRouterError['errorBody']
878 try {
879 const parsed = JSON.parse(errorText)
880 const validated = OpenRouterErrorResponseSchema.safeParse(parsed)
881 if (validated.success) {
882 // metadata is not in the schema but OpenRouter includes it for provider errors
883 const metadata = (parsed as any).error?.metadata as
884 | { raw?: string; provider_name?: string }
885 | undefined
886 const enhancedMessage = buildEnhancedErrorMessage(
887 validated.data.error.message,
888 metadata,
889 )
890 errorBody = {
891 error: {
892 message: enhancedMessage,
893 code: validated.data.error.code ?? null,
894 type: validated.data.error.type,
895 param: validated.data.error.param,
896 metadata,
897 },
898 }
899 } else {
900 errorBody = {
901 error: {
902 message: errorText || response.statusText,
903 code: response.status,
904 },
905 }
906 }
907 } catch {
908 errorBody = {
909 error: {
910 message: errorText || response.statusText,
911 code: response.status,
912 },
913 }
914 }
915 return new OpenRouterError(response.status, response.statusText, errorBody)
916}
917
918/**
919 * Convert credits (integer cents) back to a cost value that will result in the same

Callers 2

handleOpenRouterStreamFunction · 0.85

Calls 2

parseMethod · 0.80

Tested by

no test coverage detected