( attempt: number, retryAfterHeader?: string | null, maxDelayMs = 32000, )
| 528 | } |
| 529 | |
| 530 | export function getRetryDelay( |
| 531 | attempt: number, |
| 532 | retryAfterHeader?: string | null, |
| 533 | maxDelayMs = 32000, |
| 534 | ): number { |
| 535 | if (retryAfterHeader) { |
| 536 | const seconds = parseInt(retryAfterHeader, 10) |
| 537 | if (!isNaN(seconds)) { |
| 538 | return seconds * 1000 |
| 539 | } |
| 540 | } |
| 541 | |
| 542 | const baseDelay = Math.min( |
| 543 | BASE_DELAY_MS * Math.pow(2, attempt - 1), |
| 544 | maxDelayMs, |
| 545 | ) |
| 546 | const jitter = Math.random() * 0.25 * baseDelay |
| 547 | return baseDelay + jitter |
| 548 | } |
| 549 | |
| 550 | export function parseMaxTokensContextOverflowError(error: APIError): |
| 551 | | { |
no outgoing calls
no test coverage detected