MCPcopy Create free account
hub / github.com/arctic-cli/interface / retryable

Function retryable

packages/arctic/src/session/retry.ts:135–159  ·  view source on GitHub ↗
(error: ReturnType<NamedError["toObject"]>)

Source from the content-addressed store, hash-verified

133 }
134
135 export function retryable(error: ReturnType<NamedError["toObject"]>) {
136 if (MessageV2.APIError.isInstance(error)) {
137 // always retry rate limit errors even if isRetryable is false
138 if (isRateLimitError(error)) {
139 if (error.data.message.includes("quota")) return "Rate limit exceeded, waiting for quota reset"
140 return "Rate limit exceeded"
141 }
142 if (!error.data.isRetryable) return undefined
143 return error.data.message.includes("Overloaded") ? "Provider is overloaded" : error.data.message
144 }
145
146 if (typeof error.data?.message === "string") {
147 try {
148 const json = JSON.parse(error.data.message)
149 if (json.type === "error" && json.error?.type === "too_many_requests") {
150 return "Too Many Requests"
151 }
152 if (json.code === "Some resource has been exhausted") {
153 return "Provider is overloaded"
154 }
155 } catch {}
156 }
157
158 return undefined
159 }
160}

Callers

nothing calls this directly

Calls 2

isRateLimitErrorFunction · 0.85
isInstanceMethod · 0.80

Tested by

no test coverage detected