@@ -256,10 +256,36 @@ export class OpenRouterHandler extends BaseProvider implements SingleCompletionH
256256 try {
257257 stream = await this . client . chat . completions . create ( completionParams , requestOptions )
258258 } catch ( error ) {
259- const errorMessage = error instanceof Error ? error . message : String ( error )
260- const apiError = new ApiProviderError ( errorMessage , this . providerName , modelId , "createMessage" )
261- TelemetryService . instance . captureException ( apiError )
262- throw handleOpenAIError ( error , this . providerName )
259+ // Check if error has OpenRouter-specific metadata.raw property
260+ const errorObj = error as any
261+ const hasMetadataRaw = errorObj ?. metadata ?. raw
262+
263+ if ( hasMetadataRaw ) {
264+ const openRouterError = error as OpenRouterErrorResponse
265+ const rawErrorMessage = openRouterError . metadata ?. raw || openRouterError . message
266+
267+ const apiError = Object . assign (
268+ new ApiProviderError (
269+ rawErrorMessage ?? "Unknown error" ,
270+ this . providerName ,
271+ modelId ,
272+ "createMessage" ,
273+ openRouterError . code ,
274+ ) ,
275+ {
276+ status : openRouterError . code ,
277+ error : { message : openRouterError . message , metadata : openRouterError . metadata } ,
278+ } ,
279+ )
280+
281+ TelemetryService . instance . captureException ( apiError )
282+ throw handleOpenAIError ( error , this . providerName )
283+ } else {
284+ const errorMessage = error instanceof Error ? error . message : String ( error )
285+ const apiError = new ApiProviderError ( errorMessage , this . providerName , modelId , "createMessage" )
286+ TelemetryService . instance . captureException ( apiError )
287+ throw handleOpenAIError ( error , this . providerName )
288+ }
263289 }
264290
265291 let lastUsage : CompletionUsage | undefined = undefined
@@ -476,10 +502,36 @@ export class OpenRouterHandler extends BaseProvider implements SingleCompletionH
476502 try {
477503 response = await this . client . chat . completions . create ( completionParams , requestOptions )
478504 } catch ( error ) {
479- const errorMessage = error instanceof Error ? error . message : String ( error )
480- const apiError = new ApiProviderError ( errorMessage , this . providerName , modelId , "completePrompt" )
481- TelemetryService . instance . captureException ( apiError )
482- throw handleOpenAIError ( error , this . providerName )
505+ // Check if error has OpenRouter-specific metadata.raw property
506+ const errorObj = error as any
507+ const hasMetadataRaw = errorObj ?. metadata ?. raw
508+
509+ if ( hasMetadataRaw ) {
510+ const openRouterError = error as OpenRouterErrorResponse
511+ const rawErrorMessage = openRouterError . metadata ?. raw || openRouterError . message
512+
513+ const apiError = Object . assign (
514+ new ApiProviderError (
515+ rawErrorMessage ?? "Unknown error" ,
516+ this . providerName ,
517+ modelId ,
518+ "completePrompt" ,
519+ openRouterError . code ,
520+ ) ,
521+ {
522+ status : openRouterError . code ,
523+ error : { message : openRouterError . message , metadata : openRouterError . metadata } ,
524+ } ,
525+ )
526+
527+ TelemetryService . instance . captureException ( apiError )
528+ throw handleOpenAIError ( error , this . providerName )
529+ } else {
530+ const errorMessage = error instanceof Error ? error . message : String ( error )
531+ const apiError = new ApiProviderError ( errorMessage , this . providerName , modelId , "completePrompt" )
532+ TelemetryService . instance . captureException ( apiError )
533+ throw handleOpenAIError ( error , this . providerName )
534+ }
483535 }
484536
485537 if ( "error" in response ) {
0 commit comments