@@ -18,6 +18,7 @@ import {
1818import { AnalyticsEvent } from '@codebuff/common/constants/analytics-events'
1919import { getModelForRequest , markClaudeOAuthRateLimited , fetchClaudeOAuthResetTime } from './model-provider'
2020import { getValidClaudeOAuthCredentials } from '../credentials'
21+ import { getErrorStatusCode } from '../error-utils'
2122
2223import type { ModelRequestParams } from './model-provider'
2324import type { OpenRouterProviderRoutingOptions } from '@codebuff/common/types/agent-template'
@@ -116,17 +117,15 @@ type OpenRouterUsageAccounting = {
116117function isClaudeOAuthRateLimitError ( error : unknown ) : boolean {
117118 if ( ! error || typeof error !== 'object' ) return false
118119
119- // Check for APICallError from AI SDK
120+ // Check status code (handles both 'status' from AI SDK and 'statusCode' from our errors)
121+ const statusCode = getErrorStatusCode ( error )
122+ if ( statusCode === 429 ) return true
123+
124+ // Check error message for rate limit indicators
120125 const err = error as {
121- statusCode ?: number
122126 message ?: string
123127 responseBody ?: string
124128 }
125-
126- // Check status code
127- if ( err . statusCode === 429 ) return true
128-
129- // Check error message for rate limit indicators
130129 const message = ( err . message || '' ) . toLowerCase ( )
131130 const responseBody = ( err . responseBody || '' ) . toLowerCase ( )
132131
@@ -149,15 +148,15 @@ function isClaudeOAuthRateLimitError(error: unknown): boolean {
149148function isClaudeOAuthAuthError ( error : unknown ) : boolean {
150149 if ( ! error || typeof error !== 'object' ) return false
151150
151+ // Check status code (handles both 'status' from AI SDK and 'statusCode' from our errors)
152+ const statusCode = getErrorStatusCode ( error )
153+ if ( statusCode === 401 || statusCode === 403 ) return true
154+
155+ // Check error message for auth indicators
152156 const err = error as {
153- statusCode ?: number
154157 message ?: string
155158 responseBody ?: string
156159 }
157-
158- // 401 Unauthorized or 403 Forbidden typically indicate auth issues
159- if ( err . statusCode === 401 || err . statusCode === 403 ) return true
160-
161160 const message = ( err . message || '' ) . toLowerCase ( )
162161 const responseBody = ( err . responseBody || '' ) . toLowerCase ( )
163162
0 commit comments