diff --git a/.repository-projection.json b/.repository-projection.json index abda0bdc5..c1eea8ac8 100644 --- a/.repository-projection.json +++ b/.repository-projection.json @@ -3,11 +3,11 @@ "projection": "deixic-code", "projectionSchemaVersion": 1, "sourceRepository": "dx-corp/mono", - "sourceSha": "0da1ce55bfc1828a887a629a786e55a947742ee3", + "sourceSha": "2c68a6379c5ba741d9ea616eee74f5b30a7cf717", "destinationRepository": "dx-corp/code", - "priorProjectedBase": "eaa327992f6ff12865841e97bdffa2a288b1daa4", + "priorProjectedBase": "8826042eec8e13c7ff16e5db4a216db6385ea10e", "definitionDigest": "93eb3fb9be07d3644538c5519cf38973b4246cdcf2f8d7b60ccd593d7ca73033", "toolDigest": "af7618786ec1e7b039f7f09614699596e629012b1f7dac8ca7787895d68744de", - "contentDigest": "942ad8423dd2c7a7f3bc92d5cf0a3c851941c19571ad17f9be3d719579c790d2", + "contentDigest": "efd51e2dae354caa72d6603c41cdbb36e9f961a0544b9e81a75355d4e86c2107", "publicationEligible": true } diff --git a/packages/local-host-rs/src/model_catalog_data.json b/packages/local-host-rs/src/model_catalog_data.json index b2b7625e8..ac48d0d46 100644 --- a/packages/local-host-rs/src/model_catalog_data.json +++ b/packages/local-host-rs/src/model_catalog_data.json @@ -1,5 +1,5 @@ { - "generated_at": 1791993243, + "generated_at": 1792050939, "source": "https://models.dev/api.json+https://openrouter.ai/api/v1/models", "vendor_corrections": [ { @@ -1464,9 +1464,8 @@ ], "reasoning_efforts": [], "cost": { - "input": 0.09, - "output": 0.34, - "cache_read": 0.05 + "input": 0.2, + "output": 0.4 }, "open_weights": true, "verification": { @@ -3235,7 +3234,7 @@ "temperature": true }, "cost": { - "input": 0.02016, + "input": 0.01368, "output": 0.891, "cache_read": 0.0054 }, @@ -3260,9 +3259,9 @@ "temperature": true }, "cost": { - "input": 0.1307, + "input": 0.225, "output": 8, - "cache_read": 0.13 + "cache_read": 0.23 }, "verification": { "state": "catalog", @@ -3336,9 +3335,9 @@ }, "cost": { "input": 2, - "output": 12, - "cache_read": 0.2, - "cache_write": 0.375 + "output": 10, + "cache_read": 0.1, + "cache_write": 0.1875 }, "verification": { "state": "catalog", @@ -3360,9 +3359,9 @@ "temperature": true }, "cost": { - "input": 0.536, - "output": 14, - "cache_read": 0.3 + "input": 0.33, + "output": 24, + "cache_read": 0.32 }, "verification": { "state": "catalog", @@ -3564,7 +3563,7 @@ "cost": { "input": 0.036, "output": 0.9, - "cache_read": 0.0108 + "cache_read": 0.01125 }, "verification": { "state": "catalog", @@ -3583,13 +3582,12 @@ "reasoning": true, "streaming": true, "context_tokens": 1048576, - "output_tokens": 131072, "temperature": true }, "cost": { - "input": 0.063, - "output": 4.4, - "cache_read": 0.0586 + "input": 0.05, + "output": 4.8, + "cache_read": 0.049 }, "verification": { "state": "catalog", @@ -4951,9 +4949,9 @@ "temperature": true }, "cost": { - "input": 0.418992, - "output": 0.837984, - "cache_read": 0.034916 + "input": 0.95526, + "output": 1.91052, + "cache_read": 0.079605 }, "verification": { "state": "catalog", @@ -4976,9 +4974,9 @@ "temperature": true }, "cost": { - "input": 0.66, - "output": 1.98, - "cache_read": 0.022 + "input": 1.32, + "output": 3.96, + "cache_read": 0.044 }, "verification": { "state": "catalog", @@ -5000,7 +4998,7 @@ "temperature": true }, "cost": { - "input": 0.02016, + "input": 0.01368, "output": 0.891, "cache_read": 0.0054 }, @@ -5780,9 +5778,8 @@ "temperature": true }, "cost": { - "input": 0.09, - "output": 0.34, - "cache_read": 0.05 + "input": 0.2, + "output": 0.4 }, "verification": { "state": "catalog", @@ -6289,8 +6286,8 @@ "temperature": true }, "cost": { - "input": 0.05, - "output": 0.33 + "input": 0.0509, + "output": 0.335 }, "verification": { "state": "catalog", @@ -6748,13 +6745,13 @@ "reasoning": true, "streaming": true, "context_tokens": 204800, - "output_tokens": 128000, + "output_tokens": 32768, "temperature": true }, "cost": { "input": 0.27, - "output": 1.08, - "cache_read": 0.027 + "output": 0.95, + "cache_read": 0.03 }, "verification": { "state": "catalog", @@ -7248,8 +7245,8 @@ "temperature": true }, "cost": { - "input": 0.09375, - "output": 0.25 + "input": 0.075, + "output": 0.2 }, "verification": { "state": "catalog", @@ -7466,9 +7463,9 @@ "temperature": true }, "cost": { - "input": 0.7, + "input": 0.45, "output": 15, - "cache_read": 0.32 + "cache_read": 0.28 }, "verification": { "state": "catalog", @@ -8882,10 +8879,10 @@ "temperature": false }, "cost": { - "input": 2, - "output": 10, - "cache_read": 0.2, - "cache_write": 2.5 + "input": 4, + "output": 20, + "cache_read": 0.4, + "cache_write": 5 }, "verification": { "state": "catalog", @@ -8908,10 +8905,10 @@ "temperature": false }, "cost": { - "input": 2, - "output": 10, - "cache_read": 0.2, - "cache_write": 2.5 + "input": 4, + "output": 20, + "cache_read": 0.4, + "cache_write": 5 }, "verification": { "state": "catalog", @@ -9263,11 +9260,13 @@ "reasoning": true, "streaming": true, "context_tokens": 131072, + "output_tokens": 65536, "temperature": true }, "cost": { - "input": 0.037, - "output": 0.17 + "input": 0.15, + "output": 0.6, + "cache_read": 0.075 }, "verification": { "state": "catalog", @@ -10671,13 +10670,12 @@ "reasoning": true, "streaming": true, "context_tokens": 262144, - "output_tokens": 65536, "temperature": true }, "cost": { - "input": 0.1, - "output": 0.95, - "cache_read": 0.1 + "input": 0.15, + "output": 1, + "cache_read": 0.05 }, "verification": { "state": "catalog", @@ -10852,9 +10850,9 @@ "temperature": true }, "cost": { - "input": 0.04, - "output": 2.3, - "cache_read": 0.0198 + "input": 0.24, + "output": 2.2, + "cache_read": 0.05 }, "verification": { "state": "catalog", @@ -11332,7 +11330,7 @@ "vision": true, "reasoning": true, "streaming": true, - "context_tokens": 1000000, + "context_tokens": 1048576, "output_tokens": 64000, "temperature": true }, @@ -12353,13 +12351,13 @@ "reasoning": true, "streaming": true, "context_tokens": 204800, - "output_tokens": 128000, + "output_tokens": 131072, "temperature": true }, "cost": { - "input": 0.6, - "output": 1.92, - "cache_read": 0.12 + "input": 1, + "output": 3.2, + "cache_read": 0.2 }, "verification": { "state": "catalog", @@ -12403,13 +12401,13 @@ "reasoning": true, "streaming": true, "context_tokens": 204800, - "output_tokens": 131072, + "output_tokens": 128000, "temperature": true }, "cost": { - "input": 1.33, - "output": 4.18, - "cache_read": 0.247 + "input": 0.966, + "output": 3.036, + "cache_read": 0.1794 }, "verification": { "state": "catalog", @@ -12432,9 +12430,9 @@ "temperature": true }, "cost": { - "input": 0.05, + "input": 0.0341, "output": 7, - "cache_read": 0.049 + "cache_read": 0.0331 }, "verification": { "state": "catalog", @@ -12457,9 +12455,9 @@ "temperature": true }, "cost": { - "input": 0.079, + "input": 0.05, "output": 4.8, - "cache_read": 0.059 + "cache_read": 0.049 }, "verification": { "state": "catalog", @@ -12482,9 +12480,9 @@ "temperature": true }, "cost": { - "input": 0.036, - "output": 0.9, - "cache_read": 0.0108 + "input": 0.15, + "output": 0.5, + "cache_read": 0.03 }, "verification": { "state": "catalog", diff --git a/packages/local-host-rs/src/model_facts_generated.rs b/packages/local-host-rs/src/model_facts_generated.rs index f7f8fac38..0d8fb048d 100644 --- a/packages/local-host-rs/src/model_facts_generated.rs +++ b/packages/local-host-rs/src/model_facts_generated.rs @@ -97,9 +97,9 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("deepseek/deepseek-v4-flash", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(393_216), input_per_million: Some(0.091), output_per_million: Some(0.182), cache_read_per_million: Some(0.0182), cache_write_per_million: None }), ("deepseek/deepseek-v4-flash-0731", ModelFacts { context_window: 1_048_576, max_output_tokens: None, input_per_million: Some(0.016), output_per_million: Some(0.64), cache_read_per_million: Some(0.016), cache_write_per_million: None }), ("deepseek/deepseek-v4-flash-vision-exp", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(262_144), input_per_million: Some(0.2156), output_per_million: Some(0.6468), cache_read_per_million: Some(0.00686), cache_write_per_million: None }), - ("deepseek/deepseek-v4-pro", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(384_000), input_per_million: Some(0.418992), output_per_million: Some(0.837984), cache_read_per_million: Some(0.034916), cache_write_per_million: None }), - ("deepseek/deepseek-v4-pro-0813", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(393_216), input_per_million: Some(0.66), output_per_million: Some(1.98), cache_read_per_million: Some(0.022), cache_write_per_million: None }), - ("deepseek/deepseek-v4.1-flash", ModelFacts { context_window: 1_048_576, max_output_tokens: None, input_per_million: Some(0.02016), output_per_million: Some(0.891), cache_read_per_million: Some(0.0054), cache_write_per_million: None }), + ("deepseek/deepseek-v4-pro", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(384_000), input_per_million: Some(0.95526), output_per_million: Some(1.91052), cache_read_per_million: Some(0.079605), cache_write_per_million: None }), + ("deepseek/deepseek-v4-pro-0813", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(393_216), input_per_million: Some(1.32), output_per_million: Some(3.96), cache_read_per_million: Some(0.044), cache_write_per_million: None }), + ("deepseek/deepseek-v4.1-flash", ModelFacts { context_window: 1_048_576, max_output_tokens: None, input_per_million: Some(0.01368), output_per_million: Some(0.891), cache_read_per_million: Some(0.0054), cache_write_per_million: None }), ("dots-studio/dots-3-note-preview:free", ModelFacts { context_window: 512_000, max_output_tokens: None, input_per_million: Some(0.0), output_per_million: Some(0.0), cache_read_per_million: None, cache_write_per_million: None }), ("fireworks/ember-1", ModelFacts { context_window: 1_048_576, max_output_tokens: None, input_per_million: Some(3.0), output_per_million: Some(15.0), cache_read_per_million: Some(0.3), cache_write_per_million: None }), ("gemini-2.5-computer-use-preview-10-2025", ModelFacts { context_window: 128_000, max_output_tokens: Some(64_000), input_per_million: Some(1.25), output_per_million: Some(10.0), cache_read_per_million: None, cache_write_per_million: None }), @@ -121,7 +121,7 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("gemini-flash-latest", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(65_536), input_per_million: Some(0.75), output_per_million: Some(3.75), cache_read_per_million: Some(0.075), cache_write_per_million: None }), ("gemini-flash-lite-latest", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(65_536), input_per_million: Some(0.3), output_per_million: Some(2.5), cache_read_per_million: Some(0.03), cache_write_per_million: None }), ("gemma-4-26b-a4b-it", ModelFacts { context_window: 262_144, max_output_tokens: Some(32_768), input_per_million: Some(0.09), output_per_million: Some(0.3), cache_read_per_million: Some(0.05), cache_write_per_million: None }), - ("gemma-4-31b-it", ModelFacts { context_window: 262_144, max_output_tokens: Some(32_768), input_per_million: Some(0.09), output_per_million: Some(0.34), cache_read_per_million: Some(0.05), cache_write_per_million: None }), + ("gemma-4-31b-it", ModelFacts { context_window: 262_144, max_output_tokens: Some(32_768), input_per_million: Some(0.2), output_per_million: Some(0.4), cache_read_per_million: None, cache_write_per_million: None }), ("google/gemini-2.5-flash", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(65_535), input_per_million: Some(0.3), output_per_million: Some(2.5), cache_read_per_million: Some(0.03), cache_write_per_million: Some(0.083333) }), ("google/gemini-2.5-flash-image", ModelFacts { context_window: 32_768, max_output_tokens: Some(8_192), input_per_million: Some(0.3), output_per_million: Some(2.5), cache_read_per_million: Some(0.03), cache_write_per_million: Some(0.083333) }), ("google/gemini-2.5-flash-lite", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(65_535), input_per_million: Some(0.1), output_per_million: Some(0.4), cache_read_per_million: Some(0.01), cache_write_per_million: Some(0.083333) }), @@ -150,7 +150,7 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("google/gemma-3-4b-it", ModelFacts { context_window: 131_072, max_output_tokens: Some(16_384), input_per_million: Some(0.05), output_per_million: Some(0.1), cache_read_per_million: None, cache_write_per_million: None }), ("google/gemma-4-26b-a4b-it", ModelFacts { context_window: 262_144, max_output_tokens: Some(32_768), input_per_million: Some(0.09), output_per_million: Some(0.3), cache_read_per_million: Some(0.05), cache_write_per_million: None }), ("google/gemma-4-26b-a4b-it:free", ModelFacts { context_window: 262_144, max_output_tokens: Some(32_768), input_per_million: Some(0.0), output_per_million: Some(0.0), cache_read_per_million: None, cache_write_per_million: None }), - ("google/gemma-4-31b-it", ModelFacts { context_window: 262_144, max_output_tokens: Some(16_384), input_per_million: Some(0.09), output_per_million: Some(0.34), cache_read_per_million: Some(0.05), cache_write_per_million: None }), + ("google/gemma-4-31b-it", ModelFacts { context_window: 262_144, max_output_tokens: Some(16_384), input_per_million: Some(0.2), output_per_million: Some(0.4), cache_read_per_million: None, cache_write_per_million: None }), ("google/gemma-4-31b-it:free", ModelFacts { context_window: 262_144, max_output_tokens: Some(32_768), input_per_million: Some(0.0), output_per_million: Some(0.0), cache_read_per_million: None, cache_write_per_million: None }), ("google/lyria-3-clip-preview", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(65_536), input_per_million: Some(0.0), output_per_million: Some(0.0), cache_read_per_million: None, cache_write_per_million: None }), ("google/lyria-3-pro-preview", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(65_536), input_per_million: Some(0.0), output_per_million: Some(0.0), cache_read_per_million: None, cache_write_per_million: None }), @@ -210,7 +210,7 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("meta-llama/llama-3.1-70b-instruct", ModelFacts { context_window: 131_072, max_output_tokens: Some(16_384), input_per_million: Some(0.4), output_per_million: Some(0.4), cache_read_per_million: None, cache_write_per_million: None }), ("meta-llama/llama-3.1-8b-instruct", ModelFacts { context_window: 131_072, max_output_tokens: None, input_per_million: Some(0.05), output_per_million: Some(0.08), cache_read_per_million: Some(0.025), cache_write_per_million: None }), ("meta-llama/llama-3.2-1b-instruct", ModelFacts { context_window: 60_000, max_output_tokens: None, input_per_million: Some(0.027), output_per_million: Some(0.201), cache_read_per_million: None, cache_write_per_million: None }), - ("meta-llama/llama-3.2-3b-instruct", ModelFacts { context_window: 131_072, max_output_tokens: None, input_per_million: Some(0.05), output_per_million: Some(0.33), cache_read_per_million: None, cache_write_per_million: None }), + ("meta-llama/llama-3.2-3b-instruct", ModelFacts { context_window: 131_072, max_output_tokens: None, input_per_million: Some(0.0509), output_per_million: Some(0.335), cache_read_per_million: None, cache_write_per_million: None }), ("meta-llama/llama-3.3-70b-instruct", ModelFacts { context_window: 131_072, max_output_tokens: Some(32_768), input_per_million: Some(0.59), output_per_million: Some(0.79), cache_read_per_million: Some(0.295), cache_write_per_million: None }), ("meta-llama/llama-4-maverick", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(16_384), input_per_million: Some(0.1875), output_per_million: Some(0.6525), cache_read_per_million: Some(0.05), cache_write_per_million: None }), ("meta-llama/llama-4-scout", ModelFacts { context_window: 1_310_720, max_output_tokens: None, input_per_million: Some(0.18), output_per_million: Some(0.59), cache_read_per_million: None, cache_write_per_million: None }), @@ -229,7 +229,7 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("minimax/minimax-m2", ModelFacts { context_window: 204_800, max_output_tokens: Some(131_072), input_per_million: Some(0.255), output_per_million: Some(1.02), cache_read_per_million: None, cache_write_per_million: None }), ("minimax/minimax-m2-her", ModelFacts { context_window: 65_536, max_output_tokens: Some(2_048), input_per_million: Some(0.3), output_per_million: Some(1.2), cache_read_per_million: Some(0.03), cache_write_per_million: None }), ("minimax/minimax-m2.1", ModelFacts { context_window: 204_800, max_output_tokens: Some(131_072), input_per_million: Some(0.3), output_per_million: Some(1.2), cache_read_per_million: Some(0.03), cache_write_per_million: None }), - ("minimax/minimax-m2.5", ModelFacts { context_window: 204_800, max_output_tokens: Some(128_000), input_per_million: Some(0.27), output_per_million: Some(1.08), cache_read_per_million: Some(0.027), cache_write_per_million: None }), + ("minimax/minimax-m2.5", ModelFacts { context_window: 204_800, max_output_tokens: Some(32_768), input_per_million: Some(0.27), output_per_million: Some(0.95), cache_read_per_million: Some(0.03), cache_write_per_million: None }), ("minimax/minimax-m2.7", ModelFacts { context_window: 204_800, max_output_tokens: Some(131_072), input_per_million: Some(0.3), output_per_million: Some(1.2), cache_read_per_million: Some(0.06), cache_write_per_million: None }), ("minimax/minimax-m3", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(512_000), input_per_million: Some(0.3), output_per_million: Some(1.2), cache_read_per_million: Some(0.06), cache_write_per_million: None }), ("mistralai/codestral-2508", ModelFacts { context_window: 256_000, max_output_tokens: Some(204_800), input_per_million: Some(0.3), output_per_million: Some(0.9), cache_read_per_million: Some(0.03), cache_write_per_million: None }), @@ -249,7 +249,7 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("mistralai/mistral-small-24b-instruct-2501", ModelFacts { context_window: 32_768, max_output_tokens: Some(16_384), input_per_million: Some(0.05), output_per_million: Some(0.08), cache_read_per_million: None, cache_write_per_million: None }), ("mistralai/mistral-small-2603", ModelFacts { context_window: 262_144, max_output_tokens: Some(209_715), input_per_million: Some(0.15), output_per_million: Some(0.6), cache_read_per_million: Some(0.015), cache_write_per_million: None }), ("mistralai/mistral-small-3.1-24b-instruct", ModelFacts { context_window: 128_000, max_output_tokens: Some(102_400), input_per_million: Some(0.351), output_per_million: Some(0.555), cache_read_per_million: None, cache_write_per_million: None }), - ("mistralai/mistral-small-3.2-24b-instruct", ModelFacts { context_window: 256_000, max_output_tokens: Some(16_384), input_per_million: Some(0.09375), output_per_million: Some(0.25), cache_read_per_million: None, cache_write_per_million: None }), + ("mistralai/mistral-small-3.2-24b-instruct", ModelFacts { context_window: 256_000, max_output_tokens: Some(16_384), input_per_million: Some(0.075), output_per_million: Some(0.2), cache_read_per_million: None, cache_write_per_million: None }), ("mistralai/mixtral-8x22b-instruct", ModelFacts { context_window: 65_536, max_output_tokens: Some(52_428), input_per_million: Some(2.0), output_per_million: Some(6.0), cache_read_per_million: Some(0.2), cache_write_per_million: None }), ("mistralai/voxtral-small-24b-2507", ModelFacts { context_window: 32_768, max_output_tokens: Some(26_214), input_per_million: Some(0.1), output_per_million: Some(0.3), cache_read_per_million: Some(0.01), cache_write_per_million: None }), ("moonshotai/kimi-k2", ModelFacts { context_window: 131_072, max_output_tokens: Some(98_304), input_per_million: Some(0.57), output_per_million: Some(2.3), cache_read_per_million: None, cache_write_per_million: None }), @@ -258,7 +258,7 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("moonshotai/kimi-k2.5", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.5), output_per_million: Some(2.5), cache_read_per_million: Some(0.15), cache_write_per_million: None }), ("moonshotai/kimi-k2.6", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.65), output_per_million: Some(3.41), cache_read_per_million: Some(0.15), cache_write_per_million: None }), ("moonshotai/kimi-k2.7-code", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.6712), output_per_million: Some(3.35), cache_read_per_million: Some(0.18), cache_write_per_million: None }), - ("moonshotai/kimi-k3", ModelFacts { context_window: 1_048_576, max_output_tokens: None, input_per_million: Some(0.7), output_per_million: Some(15.0), cache_read_per_million: Some(0.32), cache_write_per_million: None }), + ("moonshotai/kimi-k3", ModelFacts { context_window: 1_048_576, max_output_tokens: None, input_per_million: Some(0.45), output_per_million: Some(15.0), cache_read_per_million: Some(0.28), cache_write_per_million: None }), ("morph/morph-v3-fast", ModelFacts { context_window: 81_920, max_output_tokens: Some(38_000), input_per_million: Some(0.8), output_per_million: Some(1.2), cache_read_per_million: None, cache_write_per_million: None }), ("morph/morph-v3-large", ModelFacts { context_window: 262_144, max_output_tokens: Some(131_072), input_per_million: Some(0.9), output_per_million: Some(1.9), cache_read_per_million: None, cache_write_per_million: None }), ("nex-agi/nex-n2.5-mini", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.025), output_per_million: Some(0.1), cache_read_per_million: Some(0.0025), cache_write_per_million: None }), @@ -318,8 +318,8 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("openai/gpt-5.5-pro", ModelFacts { context_window: 1_050_000, max_output_tokens: Some(128_000), input_per_million: Some(30.0), output_per_million: Some(180.0), cache_read_per_million: None, cache_write_per_million: None }), ("openai/gpt-5.6-luna", ModelFacts { context_window: 1_050_000, max_output_tokens: Some(128_000), input_per_million: Some(0.2), output_per_million: Some(1.2), cache_read_per_million: Some(0.02), cache_write_per_million: Some(0.25) }), ("openai/gpt-5.6-luna-pro", ModelFacts { context_window: 1_050_000, max_output_tokens: Some(128_000), input_per_million: Some(0.2), output_per_million: Some(1.2), cache_read_per_million: Some(0.02), cache_write_per_million: Some(0.25) }), - ("openai/gpt-5.6-sol", ModelFacts { context_window: 1_050_000, max_output_tokens: Some(128_000), input_per_million: Some(2.0), output_per_million: Some(10.0), cache_read_per_million: Some(0.2), cache_write_per_million: Some(2.5) }), - ("openai/gpt-5.6-sol-pro", ModelFacts { context_window: 1_050_000, max_output_tokens: Some(128_000), input_per_million: Some(2.0), output_per_million: Some(10.0), cache_read_per_million: Some(0.2), cache_write_per_million: Some(2.5) }), + ("openai/gpt-5.6-sol", ModelFacts { context_window: 1_050_000, max_output_tokens: Some(128_000), input_per_million: Some(4.0), output_per_million: Some(20.0), cache_read_per_million: Some(0.4), cache_write_per_million: Some(5.0) }), + ("openai/gpt-5.6-sol-pro", ModelFacts { context_window: 1_050_000, max_output_tokens: Some(128_000), input_per_million: Some(4.0), output_per_million: Some(20.0), cache_read_per_million: Some(0.4), cache_write_per_million: Some(5.0) }), ("openai/gpt-5.6-terra", ModelFacts { context_window: 1_050_000, max_output_tokens: Some(128_000), input_per_million: Some(2.0), output_per_million: Some(12.0), cache_read_per_million: Some(0.2), cache_write_per_million: Some(2.5) }), ("openai/gpt-5.6-terra-pro", ModelFacts { context_window: 1_050_000, max_output_tokens: Some(128_000), input_per_million: Some(2.0), output_per_million: Some(12.0), cache_read_per_million: Some(0.2), cache_write_per_million: Some(2.5) }), ("openai/gpt-6-astra", ModelFacts { context_window: 1_050_000, max_output_tokens: Some(128_000), input_per_million: Some(10.0), output_per_million: Some(50.0), cache_read_per_million: Some(1.0), cache_write_per_million: Some(12.5) }), @@ -333,7 +333,7 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("openai/gpt-audio", ModelFacts { context_window: 128_000, max_output_tokens: Some(16_384), input_per_million: Some(2.5), output_per_million: Some(10.0), cache_read_per_million: None, cache_write_per_million: None }), ("openai/gpt-audio-mini", ModelFacts { context_window: 128_000, max_output_tokens: Some(16_384), input_per_million: Some(0.6), output_per_million: Some(2.4), cache_read_per_million: None, cache_write_per_million: None }), ("openai/gpt-chat-latest", ModelFacts { context_window: 400_000, max_output_tokens: Some(128_000), input_per_million: Some(5.0), output_per_million: Some(30.0), cache_read_per_million: Some(0.5), cache_write_per_million: None }), - ("openai/gpt-oss-120b", ModelFacts { context_window: 131_072, max_output_tokens: None, input_per_million: Some(0.037), output_per_million: Some(0.17), cache_read_per_million: None, cache_write_per_million: None }), + ("openai/gpt-oss-120b", ModelFacts { context_window: 131_072, max_output_tokens: Some(65_536), input_per_million: Some(0.15), output_per_million: Some(0.6), cache_read_per_million: Some(0.075), cache_write_per_million: None }), ("openai/gpt-oss-20b", ModelFacts { context_window: 131_072, max_output_tokens: Some(32_768), input_per_million: Some(0.018), output_per_million: Some(0.09), cache_read_per_million: Some(0.009), cache_write_per_million: None }), ("openai/gpt-oss-safeguard-20b", ModelFacts { context_window: 131_072, max_output_tokens: Some(65_536), input_per_million: Some(0.075), output_per_million: Some(0.3), cache_read_per_million: Some(0.0375), cache_write_per_million: None }), ("openai/o1", ModelFacts { context_window: 200_000, max_output_tokens: Some(100_000), input_per_million: Some(15.0), output_per_million: Some(60.0), cache_read_per_million: Some(7.5), cache_write_per_million: None }), @@ -392,14 +392,14 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("qwen/qwen3.5-plus-02-15", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(65_536), input_per_million: Some(0.26), output_per_million: Some(1.56), cache_read_per_million: None, cache_write_per_million: None }), ("qwen/qwen3.5-plus-20260420", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(65_536), input_per_million: Some(0.3), output_per_million: Some(1.8), cache_read_per_million: None, cache_write_per_million: Some(0.375) }), ("qwen/qwen3.6-27b", ModelFacts { context_window: 262_144, max_output_tokens: Some(81_920), input_per_million: Some(0.32), output_per_million: Some(3.2), cache_read_per_million: None, cache_write_per_million: None }), - ("qwen/qwen3.6-35b-a3b", ModelFacts { context_window: 262_144, max_output_tokens: Some(65_536), input_per_million: Some(0.1), output_per_million: Some(0.95), cache_read_per_million: Some(0.1), cache_write_per_million: None }), + ("qwen/qwen3.6-35b-a3b", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.15), output_per_million: Some(1.0), cache_read_per_million: Some(0.05), cache_write_per_million: None }), ("qwen/qwen3.6-flash", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(65_536), input_per_million: Some(0.1875), output_per_million: Some(1.125), cache_read_per_million: None, cache_write_per_million: Some(0.234375) }), ("qwen/qwen3.6-plus", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(65_536), input_per_million: Some(0.325), output_per_million: Some(1.95), cache_read_per_million: None, cache_write_per_million: Some(0.40625) }), ("qwen/qwen3.7-flash", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(65_536), input_per_million: Some(0.03), output_per_million: Some(0.13), cache_read_per_million: Some(0.006), cache_write_per_million: Some(0.038) }), ("qwen/qwen3.7-max", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(131_072), input_per_million: Some(1.475), output_per_million: Some(4.425), cache_read_per_million: Some(0.295), cache_write_per_million: Some(1.84375) }), ("qwen/qwen3.7-plus", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(131_072), input_per_million: Some(0.32), output_per_million: Some(1.28), cache_read_per_million: Some(0.064), cache_write_per_million: Some(0.4) }), ("qwen/qwen3.8-2.4t-a95b", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(131_072), input_per_million: Some(2.0), output_per_million: Some(6.0), cache_read_per_million: Some(0.25), cache_write_per_million: None }), - ("qwen/qwen3.8-27b", ModelFacts { context_window: 1_000_000, max_output_tokens: None, input_per_million: Some(0.04), output_per_million: Some(2.3), cache_read_per_million: Some(0.0198), cache_write_per_million: None }), + ("qwen/qwen3.8-27b", ModelFacts { context_window: 1_000_000, max_output_tokens: None, input_per_million: Some(0.24), output_per_million: Some(2.2), cache_read_per_million: Some(0.05), cache_write_per_million: None }), ("qwen/qwen3.8-flash", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(131_072), input_per_million: Some(0.15), output_per_million: Some(0.47), cache_read_per_million: Some(0.016), cache_write_per_million: None }), ("qwen/qwen3.8-max-0902", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(131_072), input_per_million: Some(2.0), output_per_million: Some(6.0), cache_read_per_million: Some(0.25), cache_write_per_million: None }), ("qwen/qwen3.8-max-prime", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(131_072), input_per_million: Some(4.0), output_per_million: Some(12.0), cache_read_per_million: Some(0.5), cache_write_per_million: None }), @@ -419,7 +419,7 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("scaledown/summarize", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(4_000), input_per_million: Some(0.04), output_per_million: Some(0.0), cache_read_per_million: None, cache_write_per_million: None }), ("stepfun/step-3.5-flash", ModelFacts { context_window: 262_144, max_output_tokens: Some(65_536), input_per_million: Some(0.1), output_per_million: Some(0.3), cache_read_per_million: None, cache_write_per_million: None }), ("stepfun/step-3.7-flash", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.2), output_per_million: Some(1.15), cache_read_per_million: Some(0.04), cache_write_per_million: None }), - ("stepfun/step-5-preview", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(64_000), input_per_million: Some(1.0), output_per_million: Some(2.7), cache_read_per_million: Some(0.05), cache_write_per_million: None }), + ("stepfun/step-5-preview", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(64_000), input_per_million: Some(1.0), output_per_million: Some(2.7), cache_read_per_million: Some(0.05), cache_write_per_million: None }), ("tencent/hunyuan-a13b-instruct", ModelFacts { context_window: 131_072, max_output_tokens: None, input_per_million: Some(0.14), output_per_million: Some(0.57), cache_read_per_million: None, cache_write_per_million: None }), ("tencent/hy-mt2-1.8b", ModelFacts { context_window: 8_192, max_output_tokens: Some(4_096), input_per_million: Some(0.044), output_per_million: Some(0.177), cache_read_per_million: None, cache_write_per_million: None }), ("tencent/hy-mt2-30b-a3b", ModelFacts { context_window: 8_192, max_output_tokens: Some(4_096), input_per_million: Some(0.074), output_per_million: Some(0.295), cache_read_per_million: None, cache_write_per_million: None }), @@ -461,12 +461,12 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("z-ai/glm-4.6v", ModelFacts { context_window: 131_072, max_output_tokens: Some(32_768), input_per_million: Some(0.3), output_per_million: Some(0.9), cache_read_per_million: Some(0.055), cache_write_per_million: None }), ("z-ai/glm-4.7", ModelFacts { context_window: 204_800, max_output_tokens: Some(131_072), input_per_million: Some(0.6), output_per_million: Some(2.2), cache_read_per_million: Some(0.11), cache_write_per_million: None }), ("z-ai/glm-4.7-flash", ModelFacts { context_window: 200_000, max_output_tokens: Some(131_072), input_per_million: Some(0.0605), output_per_million: Some(0.4), cache_read_per_million: None, cache_write_per_million: None }), - ("z-ai/glm-5", ModelFacts { context_window: 204_800, max_output_tokens: Some(128_000), input_per_million: Some(0.6), output_per_million: Some(1.92), cache_read_per_million: Some(0.12), cache_write_per_million: None }), + ("z-ai/glm-5", ModelFacts { context_window: 204_800, max_output_tokens: Some(131_072), input_per_million: Some(1.0), output_per_million: Some(3.2), cache_read_per_million: Some(0.2), cache_write_per_million: None }), ("z-ai/glm-5-turbo", ModelFacts { context_window: 202_752, max_output_tokens: Some(131_072), input_per_million: Some(1.2), output_per_million: Some(4.0), cache_read_per_million: Some(0.24), cache_write_per_million: None }), - ("z-ai/glm-5.1", ModelFacts { context_window: 204_800, max_output_tokens: Some(131_072), input_per_million: Some(1.33), output_per_million: Some(4.18), cache_read_per_million: Some(0.247), cache_write_per_million: None }), - ("z-ai/glm-5.2", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(131_072), input_per_million: Some(0.05), output_per_million: Some(7.0), cache_read_per_million: Some(0.049), cache_write_per_million: None }), - ("z-ai/glm-5.3", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(131_072), input_per_million: Some(0.079), output_per_million: Some(4.8), cache_read_per_million: Some(0.059), cache_write_per_million: None }), - ("z-ai/glm-5.3-flash", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(131_072), input_per_million: Some(0.036), output_per_million: Some(0.9), cache_read_per_million: Some(0.0108), cache_write_per_million: None }), + ("z-ai/glm-5.1", ModelFacts { context_window: 204_800, max_output_tokens: Some(128_000), input_per_million: Some(0.966), output_per_million: Some(3.036), cache_read_per_million: Some(0.1794), cache_write_per_million: None }), + ("z-ai/glm-5.2", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(131_072), input_per_million: Some(0.0341), output_per_million: Some(7.0), cache_read_per_million: Some(0.0331), cache_write_per_million: None }), + ("z-ai/glm-5.3", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(131_072), input_per_million: Some(0.05), output_per_million: Some(4.8), cache_read_per_million: Some(0.049), cache_write_per_million: None }), + ("z-ai/glm-5.3-flash", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(131_072), input_per_million: Some(0.15), output_per_million: Some(0.5), cache_read_per_million: Some(0.03), cache_write_per_million: None }), ("z-ai/glm-5.3-flashx", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(131_072), input_per_million: Some(0.37), output_per_million: Some(1.25), cache_read_per_million: Some(0.09), cache_write_per_million: None }), ("z-ai/glm-5.3-prime", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(131_072), input_per_million: Some(2.8), output_per_million: Some(8.8), cache_read_per_million: Some(0.56), cache_write_per_million: None }), ("z-ai/glm-5v-turbo", ModelFacts { context_window: 202_752, max_output_tokens: Some(131_072), input_per_million: Some(1.2), output_per_million: Some(4.0), cache_read_per_million: Some(0.24), cache_write_per_million: None }), @@ -474,12 +474,12 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("~anthropic/claude-haiku-latest", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(128_000), input_per_million: Some(0.1), output_per_million: Some(0.5), cache_read_per_million: Some(0.01), cache_write_per_million: Some(0.125) }), ("~anthropic/claude-opus-latest", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(128_000), input_per_million: Some(4.0), output_per_million: Some(20.0), cache_read_per_million: Some(0.2), cache_write_per_million: Some(5.0) }), ("~anthropic/claude-sonnet-latest", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(128_000), input_per_million: Some(2.0), output_per_million: Some(10.0), cache_read_per_million: Some(0.1), cache_write_per_million: Some(2.5) }), - ("~deepseek/deepseek-flash-latest", ModelFacts { context_window: 1_048_576, max_output_tokens: None, input_per_million: Some(0.02016), output_per_million: Some(0.891), cache_read_per_million: Some(0.0054), cache_write_per_million: None }), - ("~deepseek/deepseek-pro-latest", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(393_216), input_per_million: Some(0.1307), output_per_million: Some(8.0), cache_read_per_million: Some(0.13), cache_write_per_million: None }), + ("~deepseek/deepseek-flash-latest", ModelFacts { context_window: 1_048_576, max_output_tokens: None, input_per_million: Some(0.01368), output_per_million: Some(0.891), cache_read_per_million: Some(0.0054), cache_write_per_million: None }), + ("~deepseek/deepseek-pro-latest", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(393_216), input_per_million: Some(0.225), output_per_million: Some(8.0), cache_read_per_million: Some(0.23), cache_write_per_million: None }), ("~deepseek/deepseek-v4-flash-latest", ModelFacts { context_window: 1_048_576, max_output_tokens: None, input_per_million: Some(0.0144), output_per_million: Some(0.576), cache_read_per_million: Some(0.0108), cache_write_per_million: None }), ("~google/gemini-flash-latest", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(65_536), input_per_million: Some(0.75), output_per_million: Some(3.75), cache_read_per_million: Some(0.075), cache_write_per_million: Some(0.041667) }), - ("~google/gemini-pro-latest", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(65_536), input_per_million: Some(2.0), output_per_million: Some(12.0), cache_read_per_million: Some(0.2), cache_write_per_million: Some(0.375) }), - ("~moonshotai/kimi-latest", ModelFacts { context_window: 1_048_576, max_output_tokens: None, input_per_million: Some(0.536), output_per_million: Some(14.0), cache_read_per_million: Some(0.3), cache_write_per_million: None }), + ("~google/gemini-pro-latest", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(65_536), input_per_million: Some(2.0), output_per_million: Some(10.0), cache_read_per_million: Some(0.1), cache_write_per_million: Some(0.1875) }), + ("~moonshotai/kimi-latest", ModelFacts { context_window: 1_048_576, max_output_tokens: None, input_per_million: Some(0.33), output_per_million: Some(24.0), cache_read_per_million: Some(0.32), cache_write_per_million: None }), ("~openai/gpt-astra-latest", ModelFacts { context_window: 1_050_000, max_output_tokens: Some(128_000), input_per_million: Some(10.0), output_per_million: Some(50.0), cache_read_per_million: Some(1.0), cache_write_per_million: Some(12.5) }), ("~openai/gpt-luna-latest", ModelFacts { context_window: 1_050_000, max_output_tokens: Some(128_000), input_per_million: Some(0.1), output_per_million: Some(0.5), cache_read_per_million: Some(0.01), cache_write_per_million: Some(0.125) }), ("~openai/gpt-mini-latest", ModelFacts { context_window: 400_000, max_output_tokens: Some(128_000), input_per_million: Some(0.75), output_per_million: Some(4.5), cache_read_per_million: Some(0.075), cache_write_per_million: None }), @@ -487,8 +487,8 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("~openai/gpt-terra-latest", ModelFacts { context_window: 1_050_000, max_output_tokens: Some(128_000), input_per_million: Some(2.0), output_per_million: Some(12.0), cache_read_per_million: Some(0.2), cache_write_per_million: Some(2.5) }), ("~unbiased/pareto-latest", ModelFacts { context_window: 262_144, max_output_tokens: Some(131_072), input_per_million: Some(2.5), output_per_million: Some(7.5), cache_read_per_million: Some(0.25), cache_write_per_million: None }), ("~x-ai/grok-latest", ModelFacts { context_window: 500_000, max_output_tokens: None, input_per_million: Some(2.0), output_per_million: Some(6.0), cache_read_per_million: Some(0.5), cache_write_per_million: None }), - ("~z-ai/glm-flash-latest", ModelFacts { context_window: 1_048_576, max_output_tokens: None, input_per_million: Some(0.036), output_per_million: Some(0.9), cache_read_per_million: Some(0.0108), cache_write_per_million: None }), - ("~z-ai/glm-latest", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(131_072), input_per_million: Some(0.063), output_per_million: Some(4.4), cache_read_per_million: Some(0.0586), cache_write_per_million: None }), + ("~z-ai/glm-flash-latest", ModelFacts { context_window: 1_048_576, max_output_tokens: None, input_per_million: Some(0.036), output_per_million: Some(0.9), cache_read_per_million: Some(0.01125), cache_write_per_million: None }), + ("~z-ai/glm-latest", ModelFacts { context_window: 1_048_576, max_output_tokens: None, input_per_million: Some(0.05), output_per_million: Some(4.8), cache_read_per_million: Some(0.049), cache_write_per_million: None }), ]; /// Bare name -> the one namespaced id carrying it, for names the catalog has