@@ -53,6 +53,12 @@ import {
5353 handleSiliconFlowStream ,
5454 isSiliconFlowModel ,
5555} from '@/llm-api/siliconflow'
56+ import {
57+ MiniMaxError ,
58+ handleMiniMaxNonStream ,
59+ handleMiniMaxStream ,
60+ isMiniMaxModel ,
61+ } from '@/llm-api/minimax'
5662import {
5763 handleOpenAINonStream ,
5864 OPENAI_SUPPORTED_MODELS ,
@@ -366,11 +372,22 @@ export async function postChatCompletions(params: {
366372 // Handle streaming vs non-streaming
367373 try {
368374 if ( bodyStream ) {
369- // Streaming request — route to SiliconFlow/CanopyWave/Fireworks for supported models
375+ // Streaming request — route to MiniMax/SiliconFlow/CanopyWave/Fireworks for supported models
376+ const useMiniMax = isMiniMaxModel ( typedBody . model )
370377 const useSiliconFlow = false // isSiliconFlowModel(typedBody.model)
371378 const useCanopyWave = false // isCanopyWaveModel(typedBody.model)
372- const useFireworks = isFireworksModel ( typedBody . model )
373- const stream = useSiliconFlow
379+ const useFireworks = ! useMiniMax && isFireworksModel ( typedBody . model )
380+ const stream = useMiniMax
381+ ? await handleMiniMaxStream ( {
382+ body : typedBody ,
383+ userId,
384+ stripeCustomerId,
385+ agentId,
386+ fetch,
387+ logger,
388+ insertMessageBigquery,
389+ } )
390+ : useSiliconFlow
374391 ? await handleSiliconFlowStream ( {
375392 body : typedBody ,
376393 userId,
@@ -430,12 +447,13 @@ export async function postChatCompletions(params: {
430447 } ,
431448 } )
432449 } else {
433- // Non-streaming request — route to SiliconFlow/CanopyWave/Fireworks for supported models
450+ // Non-streaming request — route to MiniMax/ SiliconFlow/CanopyWave/Fireworks for supported models
434451 // TEMPORARILY DISABLED: route through OpenRouter
435452 const model = typedBody . model
453+ const useMiniMaxDirect = isMiniMaxModel ( model )
436454 const useSiliconFlow = false // isSiliconFlowModel(model)
437455 const useCanopyWave = false // isCanopyWaveModel(model)
438- const useFireworks = isFireworksModel ( model )
456+ const useFireworks = ! useMiniMaxDirect && isFireworksModel ( model )
439457 const modelParts = model . split ( '/' )
440458 const shortModelName = modelParts . length > 1 ? modelParts [ 1 ] : model
441459 const isOpenAIDirectModel =
@@ -446,7 +464,17 @@ export async function postChatCompletions(params: {
446464 const shouldUseOpenAIEndpoint =
447465 isOpenAIDirectModel && typedBody . codebuff_metadata ?. n !== undefined
448466
449- const nonStreamRequest = useSiliconFlow
467+ const nonStreamRequest = useMiniMaxDirect
468+ ? handleMiniMaxNonStream ( {
469+ body : typedBody ,
470+ userId,
471+ stripeCustomerId,
472+ agentId,
473+ fetch,
474+ logger,
475+ insertMessageBigquery,
476+ } )
477+ : useSiliconFlow
450478 ? handleSiliconFlowNonStream ( {
451479 body : typedBody ,
452480 userId,
@@ -528,10 +556,14 @@ export async function postChatCompletions(params: {
528556 if ( error instanceof SiliconFlowError ) {
529557 siliconflowError = error
530558 }
559+ let minimaxError : MiniMaxError | undefined
560+ if ( error instanceof MiniMaxError ) {
561+ minimaxError = error
562+ }
531563
532564 // Log detailed error information for debugging
533565 const errorDetails = openrouterError ?. toJSON ( )
534- const providerLabel = siliconflowError ? 'SiliconFlow' : canopywaveError ? 'CanopyWave' : fireworksError ? 'Fireworks' : 'OpenRouter'
566+ const providerLabel = minimaxError ? 'MiniMax' : siliconflowError ? 'SiliconFlow' : canopywaveError ? 'CanopyWave' : fireworksError ? 'Fireworks' : 'OpenRouter'
535567 logger . error (
536568 {
537569 error : getErrorObject ( error ) ,
@@ -545,8 +577,8 @@ export async function postChatCompletions(params: {
545577 ? typedBody . messages . length
546578 : 0 ,
547579 messages : typedBody . messages ,
548- providerStatusCode : ( openrouterError ?? fireworksError ?? canopywaveError ?? siliconflowError ) ?. statusCode ,
549- providerStatusText : ( openrouterError ?? fireworksError ?? canopywaveError ?? siliconflowError ) ?. statusText ,
580+ providerStatusCode : ( openrouterError ?? fireworksError ?? canopywaveError ?? siliconflowError ?? minimaxError ) ?. statusCode ,
581+ providerStatusText : ( openrouterError ?? fireworksError ?? canopywaveError ?? siliconflowError ?? minimaxError ) ?. statusText ,
550582 openrouterErrorCode : errorDetails ?. error ?. code ,
551583 openrouterErrorType : errorDetails ?. error ?. type ,
552584 openrouterErrorMessage : errorDetails ?. error ?. message ,
@@ -580,6 +612,9 @@ export async function postChatCompletions(params: {
580612 if ( error instanceof SiliconFlowError ) {
581613 return NextResponse . json ( error . toJSON ( ) , { status : error . statusCode } )
582614 }
615+ if ( error instanceof MiniMaxError ) {
616+ return NextResponse . json ( error . toJSON ( ) , { status : error . statusCode } )
617+ }
583618
584619 return NextResponse . json (
585620 { error : 'Failed to process request' } ,
0 commit comments