@@ -102,23 +102,28 @@ export async function makeRouterEndpoint(routerModel: ProcessedModel): Promise<E
102
102
103
103
if ( routerMultimodalEnabled && hasImageInput ) {
104
104
const multimodalCandidate = await findFirstMultimodalCandidateId ( ) ;
105
- if ( multimodalCandidate ) {
106
- try {
107
- logger . info (
108
- { route : ROUTER_MULTIMODAL_ROUTE , model : multimodalCandidate } ,
109
- "[router] multimodal input detected; bypassing Arch selection"
110
- ) ;
111
- const ep = await createCandidateEndpoint ( multimodalCandidate ) ;
112
- const gen = await ep ( { ...params } ) ;
113
- return metadataThenStream ( gen , multimodalCandidate , ROUTER_MULTIMODAL_ROUTE ) ;
114
- } catch ( e ) {
115
- logger . warn (
116
- { route : ROUTER_MULTIMODAL_ROUTE , model : multimodalCandidate , err : String ( e ) } ,
117
- "[router] multimodal fallback failed"
118
- ) ;
119
- }
120
- } else {
121
- logger . warn ( "[router] multimodal input detected but no multimodal model available" ) ;
105
+ if ( ! multimodalCandidate ) {
106
+ throw new Error (
107
+ "No multimodal models are configured for the router. Remove the image or enable a multimodal model."
108
+ ) ;
109
+ }
110
+
111
+ try {
112
+ logger . info (
113
+ { route : ROUTER_MULTIMODAL_ROUTE , model : multimodalCandidate } ,
114
+ "[router] multimodal input detected; bypassing Arch selection"
115
+ ) ;
116
+ const ep = await createCandidateEndpoint ( multimodalCandidate ) ;
117
+ const gen = await ep ( { ...params } ) ;
118
+ return metadataThenStream ( gen , multimodalCandidate , ROUTER_MULTIMODAL_ROUTE ) ;
119
+ } catch ( e ) {
120
+ logger . error (
121
+ { route : ROUTER_MULTIMODAL_ROUTE , model : multimodalCandidate , err : String ( e ) } ,
122
+ "[router] multimodal fallback failed"
123
+ ) ;
124
+ throw new Error (
125
+ "Failed to call the configured multimodal model. Remove the image or try again later."
126
+ ) ;
122
127
}
123
128
}
124
129
0 commit comments