(error)
| 74449 | function getSuggestedModels(provider, failedModel) { |
| 74450 | const providerKey = provider.toLowerCase(); |
| 74451 | const models = MODEL_LIST[providerKey]; |
| 74452 | if (!models || !Array.isArray(models)) { |
| 74453 | return []; |
| 74454 | } |
| 74455 | return models.filter((m5) => m5 !== failedModel).slice(0, 5); |
| 74456 | } |
| 74457 | function isInsufficientCreditsError(error) { |
| 74458 | if (error instanceof InsufficientCreditsError) { |
| 74459 | return true; |
| 74460 | } |
| 74461 | if (error instanceof Error) { |
| 74462 | const message = error.message.toLowerCase(); |
| 74463 | if (message.includes("insufficient") || message.includes("credit") || message.includes("quota") || message.includes("balance") || message.includes("billing") || message.includes("payment") || message.includes("exceeded") || message.includes("limit reached") || message.includes("no remaining")) { |
| 74464 | return true; |
| 74465 | } |
| 74466 | if ("status" in error && error.status === 402) { |
| 74467 | return true; |
| 74468 | } |
| 74469 | if ("response" in error) { |
| 74470 | const response = error.response; |
| 74471 | if (response?.status === 402) { |
| 74472 | return true; |
| 74473 | } |
| 74474 | } |
no test coverage detected
searching dependent graphs…