@@ -249,12 +249,14 @@ describe("webviewMessageHandler - requestRouterModels", () => {
249249 unbound : mockModels ,
250250 litellm : mockModels ,
251251 roo : mockModels ,
252+ chutes : mockModels ,
252253 ollama : { } ,
253254 lmstudio : { } ,
254255 "vercel-ai-gateway" : mockModels ,
255256 huggingface : { } ,
256257 "io-intelligence" : { } ,
257258 } ,
259+ values : undefined ,
258260 } )
259261 } )
260262
@@ -340,13 +342,15 @@ describe("webviewMessageHandler - requestRouterModels", () => {
340342 glama : mockModels ,
341343 unbound : mockModels ,
342344 roo : mockModels ,
345+ chutes : mockModels ,
343346 litellm : { } ,
344347 ollama : { } ,
345348 lmstudio : { } ,
346349 "vercel-ai-gateway" : mockModels ,
347350 huggingface : { } ,
348351 "io-intelligence" : { } ,
349352 } ,
353+ values : undefined ,
350354 } )
351355 } )
352356
@@ -369,32 +373,14 @@ describe("webviewMessageHandler - requestRouterModels", () => {
369373 . mockResolvedValueOnce ( mockModels ) // vercel-ai-gateway
370374 . mockResolvedValueOnce ( mockModels ) // deepinfra
371375 . mockResolvedValueOnce ( mockModels ) // roo
376+ . mockRejectedValueOnce ( new Error ( "Chutes API error" ) ) // chutes
372377 . mockRejectedValueOnce ( new Error ( "LiteLLM connection failed" ) ) // litellm
373378
374379 await webviewMessageHandler ( mockClineProvider , {
375380 type : "requestRouterModels" ,
376381 } )
377382
378- // Verify successful providers are included
379- expect ( mockClineProvider . postMessageToWebview ) . toHaveBeenCalledWith ( {
380- type : "routerModels" ,
381- routerModels : {
382- deepinfra : mockModels ,
383- openrouter : mockModels ,
384- requesty : { } ,
385- glama : mockModels ,
386- unbound : { } ,
387- roo : mockModels ,
388- litellm : { } ,
389- ollama : { } ,
390- lmstudio : { } ,
391- "vercel-ai-gateway" : mockModels ,
392- huggingface : { } ,
393- "io-intelligence" : { } ,
394- } ,
395- } )
396-
397- // Verify error messages were sent for failed providers
383+ // Verify error messages were sent for failed providers (these come first)
398384 expect ( mockClineProvider . postMessageToWebview ) . toHaveBeenCalledWith ( {
399385 type : "singleRouterModelFetchResponse" ,
400386 success : false ,
@@ -409,12 +395,40 @@ describe("webviewMessageHandler - requestRouterModels", () => {
409395 values : { provider : "unbound" } ,
410396 } )
411397
398+ expect ( mockClineProvider . postMessageToWebview ) . toHaveBeenCalledWith ( {
399+ type : "singleRouterModelFetchResponse" ,
400+ success : false ,
401+ error : "Chutes API error" ,
402+ values : { provider : "chutes" } ,
403+ } )
404+
412405 expect ( mockClineProvider . postMessageToWebview ) . toHaveBeenCalledWith ( {
413406 type : "singleRouterModelFetchResponse" ,
414407 success : false ,
415408 error : "LiteLLM connection failed" ,
416409 values : { provider : "litellm" } ,
417410 } )
411+
412+ // Verify final routerModels response includes successful providers and empty objects for failed ones
413+ expect ( mockClineProvider . postMessageToWebview ) . toHaveBeenCalledWith ( {
414+ type : "routerModels" ,
415+ routerModels : {
416+ deepinfra : mockModels ,
417+ openrouter : mockModels ,
418+ requesty : { } ,
419+ glama : mockModels ,
420+ unbound : { } ,
421+ roo : mockModels ,
422+ chutes : { } ,
423+ litellm : { } ,
424+ ollama : { } ,
425+ lmstudio : { } ,
426+ "vercel-ai-gateway" : mockModels ,
427+ huggingface : { } ,
428+ "io-intelligence" : { } ,
429+ } ,
430+ values : undefined ,
431+ } )
418432 } )
419433
420434 it ( "handles Error objects and string errors correctly" , async ( ) => {
@@ -427,6 +441,7 @@ describe("webviewMessageHandler - requestRouterModels", () => {
427441 . mockRejectedValueOnce ( new Error ( "Vercel AI Gateway error" ) ) // vercel-ai-gateway
428442 . mockRejectedValueOnce ( new Error ( "DeepInfra API error" ) ) // deepinfra
429443 . mockRejectedValueOnce ( new Error ( "Roo API error" ) ) // roo
444+ . mockRejectedValueOnce ( new Error ( "Chutes API error" ) ) // chutes
430445 . mockRejectedValueOnce ( new Error ( "LiteLLM connection failed" ) ) // litellm
431446
432447 await webviewMessageHandler ( mockClineProvider , {
@@ -483,6 +498,13 @@ describe("webviewMessageHandler - requestRouterModels", () => {
483498 values : { provider : "roo" } ,
484499 } )
485500
501+ expect ( mockClineProvider . postMessageToWebview ) . toHaveBeenCalledWith ( {
502+ type : "singleRouterModelFetchResponse" ,
503+ success : false ,
504+ error : "Chutes API error" ,
505+ values : { provider : "chutes" } ,
506+ } )
507+
486508 expect ( mockClineProvider . postMessageToWebview ) . toHaveBeenCalledWith ( {
487509 type : "singleRouterModelFetchResponse" ,
488510 success : false ,
0 commit comments