( authType?: AuthType, error?: unknown, userTier?: UserTierId, currentModel?: string, fallbackModel?: string, )
| 57 | `\nPossible quota limitations in place or slow response times detected. Switching to the ${fallbackModel} model for the rest of this session.`; |
| 58 | |
| 59 | function getRateLimitMessage( |
| 60 | authType?: AuthType, |
| 61 | error?: unknown, |
| 62 | userTier?: UserTierId, |
| 63 | currentModel?: string, |
| 64 | fallbackModel?: string, |
| 65 | ): string { |
| 66 | switch (authType) { |
| 67 | case AuthType.LOGIN_WITH_GOOGLE: { |
| 68 | // Determine if user is on a paid tier (Legacy or Standard) - default to FREE if not specified |
| 69 | const isPaidTier = |
| 70 | userTier === UserTierId.LEGACY || userTier === UserTierId.STANDARD; |
| 71 | |
| 72 | if (isProQuotaExceededError(error)) { |
| 73 | return isPaidTier |
| 74 | ? getRateLimitErrorMessageGoogleProQuotaPaid( |
| 75 | currentModel || DEFAULT_PRIMARY_MODEL, |
| 76 | fallbackModel, |
| 77 | ) |
| 78 | : getRateLimitErrorMessageGoogleProQuotaFree( |
| 79 | currentModel || DEFAULT_PRIMARY_MODEL, |
| 80 | fallbackModel, |
| 81 | ); |
| 82 | } else if (isGenericQuotaExceededError(error)) { |
| 83 | return isPaidTier |
| 84 | ? getRateLimitErrorMessageGoogleGenericQuotaPaid( |
| 85 | currentModel || DEFAULT_PRIMARY_MODEL, |
| 86 | ) |
| 87 | : getRateLimitErrorMessageGoogleGenericQuotaFree(); |
| 88 | } else { |
| 89 | return isPaidTier |
| 90 | ? getRateLimitErrorMessageGooglePaid(fallbackModel) |
| 91 | : getRateLimitErrorMessageGoogleFree(fallbackModel); |
| 92 | } |
| 93 | } |
| 94 | case AuthType.USE_GROK: |
| 95 | return getRateLimitErrorMessageDefault(fallbackModel); |
| 96 | case AuthType.USE_VERTEX_AI: |
| 97 | return RATE_LIMIT_ERROR_MESSAGE_VERTEX; |
| 98 | default: |
| 99 | return getRateLimitErrorMessageDefault(fallbackModel); |
| 100 | } |
| 101 | } |
| 102 | |
| 103 | export function parseAndFormatApiError( |
| 104 | error: unknown, |
no test coverage detected