@@ -4,12 +4,6 @@ import * as path from "path"
44
55import { back as nockBack } from "nock"
66
7- import {
8- OPEN_ROUTER_PROMPT_CACHING_MODELS ,
9- OPEN_ROUTER_REASONING_BUDGET_MODELS ,
10- OPEN_ROUTER_REQUIRED_REASONING_BUDGET_MODELS ,
11- } from "@roo-code/types"
12-
137import { getOpenRouterModelEndpoints , getOpenRouterModels , parseOpenRouterModel } from "../openrouter"
148
159nockBack . fixtures = path . join ( __dirname , "fixtures" )
@@ -23,131 +17,6 @@ describe.skip("OpenRouter API", () => {
2317
2418 const models = await getOpenRouterModels ( )
2519
26- const openRouterSupportedCaching = Object . entries ( models )
27- . filter ( ( [ id , _ ] ) => id . startsWith ( "anthropic/claude" ) || id . startsWith ( "google/gemini" ) ) // only these support cache_control breakpoints (https://openrouter.ai/docs/features/prompt-caching)
28- . filter ( ( [ _ , model ] ) => model . supportsPromptCache )
29- . map ( ( [ id , _ ] ) => id )
30-
31- // Define models that are intentionally excluded
32- const excludedModels = new Set ( [
33- "google/gemini-2.5-pro-preview" , // Excluded due to lag issue (#4487)
34- "google/gemini-2.5-flash" , // OpenRouter doesn't report this as supporting prompt caching
35- "google/gemini-2.5-flash-lite-preview-06-17" , // OpenRouter doesn't report this as supporting prompt caching
36- "anthropic/claude-opus-4.1" , // Not yet available in OpenRouter API
37- "anthropic/claude-sonnet-4.5" , // Not yet available in OpenRouter API
38- ] )
39-
40- const ourCachingModels = Array . from ( OPEN_ROUTER_PROMPT_CACHING_MODELS ) . filter (
41- ( id ) => ! excludedModels . has ( id ) ,
42- )
43-
44- // Verify all our caching models are actually supported by OpenRouter
45- for ( const modelId of ourCachingModels ) {
46- expect ( openRouterSupportedCaching ) . toContain ( modelId )
47- }
48-
49- // Verify we have all supported models except intentionally excluded ones
50- const expectedCachingModels = openRouterSupportedCaching . filter ( ( id ) => ! excludedModels . has ( id ) ) . sort ( )
51-
52- expect ( ourCachingModels . sort ( ) ) . toEqual ( expectedCachingModels )
53-
54- expect (
55- Object . entries ( models )
56- . filter ( ( [ _ , model ] ) => model . supportsReasoningEffort )
57- . map ( ( [ id , _ ] ) => id )
58- . sort ( ) ,
59- ) . toEqual ( [
60- "agentica-org/deepcoder-14b-preview:free" ,
61- "aion-labs/aion-1.0" ,
62- "aion-labs/aion-1.0-mini" ,
63- "anthropic/claude-3.7-sonnet:beta" ,
64- "anthropic/claude-3.7-sonnet:thinking" ,
65- "anthropic/claude-opus-4" ,
66- // "anthropic/claude-opus-4.1", // Not yet available in OpenRouter API
67- "anthropic/claude-sonnet-4" ,
68- "arliai/qwq-32b-arliai-rpr-v1:free" ,
69- "cognitivecomputations/dolphin3.0-r1-mistral-24b:free" ,
70- "deepseek/deepseek-r1" ,
71- "deepseek/deepseek-r1-distill-llama-70b" ,
72- "deepseek/deepseek-r1-distill-llama-70b:free" ,
73- "deepseek/deepseek-r1-distill-llama-8b" ,
74- "deepseek/deepseek-r1-distill-qwen-1.5b" ,
75- "deepseek/deepseek-r1-distill-qwen-14b" ,
76- "deepseek/deepseek-r1-distill-qwen-14b:free" ,
77- "deepseek/deepseek-r1-distill-qwen-32b" ,
78- "deepseek/deepseek-r1-distill-qwen-32b:free" ,
79- "deepseek/deepseek-r1-zero:free" ,
80- "deepseek/deepseek-r1:free" ,
81- "google/gemini-2.5-flash-preview-05-20" ,
82- "google/gemini-2.5-flash-preview-05-20:thinking" ,
83- "microsoft/mai-ds-r1:free" ,
84- "microsoft/phi-4-reasoning-plus" ,
85- "microsoft/phi-4-reasoning-plus:free" ,
86- "microsoft/phi-4-reasoning:free" ,
87- "moonshotai/kimi-vl-a3b-thinking:free" ,
88- "nousresearch/deephermes-3-mistral-24b-preview:free" ,
89- "open-r1/olympiccoder-32b:free" ,
90- "openai/codex-mini" ,
91- "openai/o1-pro" ,
92- "perplexity/r1-1776" ,
93- "perplexity/sonar-deep-research" ,
94- "perplexity/sonar-reasoning" ,
95- "perplexity/sonar-reasoning-pro" ,
96- "qwen/qwen3-14b" ,
97- "qwen/qwen3-14b:free" ,
98- "qwen/qwen3-235b-a22b" ,
99- "qwen/qwen3-235b-a22b:free" ,
100- "qwen/qwen3-30b-a3b" ,
101- "qwen/qwen3-30b-a3b:free" ,
102- "qwen/qwen3-32b" ,
103- "qwen/qwen3-32b:free" ,
104- "qwen/qwen3-4b:free" ,
105- "qwen/qwen3-8b" ,
106- "qwen/qwen3-8b:free" ,
107- "qwen/qwq-32b" ,
108- "qwen/qwq-32b:free" ,
109- "rekaai/reka-flash-3:free" ,
110- "thudm/glm-z1-32b" ,
111- "thudm/glm-z1-32b:free" ,
112- "thudm/glm-z1-9b:free" ,
113- "thudm/glm-z1-rumination-32b" ,
114- "tngtech/deepseek-r1t-chimera:free" ,
115- "x-ai/grok-3-mini-beta" ,
116- ] )
117- // OpenRouter is taking a while to update their models, so we exclude some known models
118- const excludedReasoningBudgetModels = new Set ( [
119- "google/gemini-2.5-flash" ,
120- "google/gemini-2.5-flash-lite-preview-06-17" ,
121- "google/gemini-2.5-pro" ,
122- "anthropic/claude-opus-4.1" , // Not yet available in OpenRouter API
123- "anthropic/claude-sonnet-4.5" , // Not yet available in OpenRouter API
124- "anthropic/claude-haiku-4.5" , // Not yet available in OpenRouter API
125- ] )
126-
127- const expectedReasoningBudgetModels = Array . from ( OPEN_ROUTER_REASONING_BUDGET_MODELS )
128- . filter ( ( id ) => ! excludedReasoningBudgetModels . has ( id ) )
129- . sort ( )
130-
131- expect (
132- Object . entries ( models )
133- . filter ( ( [ _ , model ] ) => model . supportsReasoningBudget )
134- . map ( ( [ id , _ ] ) => id )
135- . sort ( ) ,
136- ) . toEqual ( expectedReasoningBudgetModels )
137-
138- const excludedRequiredReasoningBudgetModels = new Set ( [ "google/gemini-2.5-pro" ] )
139-
140- const expectedRequiredReasoningBudgetModels = Array . from ( OPEN_ROUTER_REQUIRED_REASONING_BUDGET_MODELS )
141- . filter ( ( id ) => ! excludedRequiredReasoningBudgetModels . has ( id ) )
142- . sort ( )
143-
144- expect (
145- Object . entries ( models )
146- . filter ( ( [ _ , model ] ) => model . requiredReasoningBudget )
147- . map ( ( [ id , _ ] ) => id )
148- . sort ( ) ,
149- ) . toEqual ( expectedRequiredReasoningBudgetModels )
150-
15120 expect ( models [ "anthropic/claude-3.7-sonnet" ] ) . toEqual ( {
15221 maxTokens : 8192 ,
15322 contextWindow : 200000 ,
0 commit comments