From 4cc9bfe67d78d6a491ac92858a89f0df8100772a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 25 Sep 2026 22:51:52 +0000 Subject: [PATCH] chore: sync public mirror from internal --- .repository-projection.json | 6 +- packages/local-host-rs/src/agent/harness.rs | 45 +- .../src/agent/native_codex_tests.rs | 2 +- packages/local-host-rs/src/model_catalog.rs | 127 +++-- .../local-host-rs/src/model_catalog_data.json | 172 ++---- .../src/model_facts_generated.rs | 136 ++--- .../src/model_facts_resolution.generated.json | 501 +++++++++--------- 7 files changed, 476 insertions(+), 513 deletions(-) diff --git a/.repository-projection.json b/.repository-projection.json index efcc3f1c2..4f8c84e8c 100644 --- a/.repository-projection.json +++ b/.repository-projection.json @@ -3,11 +3,11 @@ "projection": "deixic-code", "projectionSchemaVersion": 1, "sourceRepository": "dx-corp/mono", - "sourceSha": "80416a066acccdb2394733a9db4adcae19d88f23", + "sourceSha": "d8306b05ea2444bec1b093cd59f640459ffffc66", "destinationRepository": "dx-corp/code", - "priorProjectedBase": "cb29d92a07316cffe6bf950c4ad77b0ed7ee921b", + "priorProjectedBase": "0cb305ad096c8c2fb8190a07dd0a0754e19a7fe8", "definitionDigest": "82936441c776e3e8edb5d215a75007ec9714a233f489d460075d79d5ef5ba32f", "toolDigest": "ab19140af8e449c04288cb7c52e992982833e3882ddce59d22314d971feaf946", - "contentDigest": "5525064be7ac0064bf34bda4542c3731edd92950be4fd2addcfee4ede4e2f02e", + "contentDigest": "2ae3cdf620189fde5a33c386615c14e5d476c2cf1946a5332c3c64ee238584ea", "publicationEligible": true } diff --git a/packages/local-host-rs/src/agent/harness.rs b/packages/local-host-rs/src/agent/harness.rs index c8a8fe5fc..61d198f57 100644 --- a/packages/local-host-rs/src/agent/harness.rs +++ b/packages/local-host-rs/src/agent/harness.rs @@ -32,6 +32,13 @@ pub struct AgentHarness { hook_log: PathBuf, } +/// Upper bound for an event a test expects to arrive. `wait_for_event` returns +/// as soon as the event is observed, so this only bounds a failing test. The +/// previous 2-12 s limits expired on a loaded host during the full +/// maestro-local-host suite (9 of 3232 tests on dev-desktop, 2026-09-25) while +/// the same tests passed when run alone. +const EVENT_WAIT: Duration = Duration::from_secs(30); + impl AgentHarness { /// Create a harness with a scripted client and hook logging enabled. pub fn with_scripted(responses: Vec) -> anyhow::Result { @@ -229,7 +236,7 @@ async fn scripted_stream_error_dispatches_stop_failure() { .expect("prompt"); let saw_error = harness - .wait_for_event(Duration::from_secs(5), |event| { + .wait_for_event(EVENT_WAIT, |event| { matches!(event, FromAgent::Error { terminal: true, .. }) }) .await; @@ -291,7 +298,7 @@ async fn scripted_provider_error_preserves_kind_and_never_completes_turn() { assert!(matches!( harness - .wait_for_event(Duration::from_secs(5), |event| matches!( + .wait_for_event(EVENT_WAIT, |event| matches!( event, FromAgent::ProviderError { .. } )) @@ -333,7 +340,7 @@ async fn scripted_partial_text_eof_is_transient_protocol_error() { .expect("prompt"); let snapshot = harness - .wait_for_event(Duration::from_secs(2), |event| { + .wait_for_event(EVENT_WAIT, |event| { matches!(event, FromAgent::ConversationSnapshot { .. }) }) .await @@ -349,7 +356,7 @@ async fn scripted_partial_text_eof_is_transient_protocol_error() { ); assert!(matches!( harness - .wait_for_event(Duration::from_secs(5), |event| matches!( + .wait_for_event(EVENT_WAIT, |event| matches!( event, FromAgent::ProviderError { .. } )) @@ -396,7 +403,7 @@ async fn scripted_completed_tool_block_eof_is_transient_protocol_error() { assert!(matches!( harness - .wait_for_event(Duration::from_secs(5), |event| matches!( + .wait_for_event(EVENT_WAIT, |event| matches!( event, FromAgent::ProviderError { .. } )) @@ -432,7 +439,7 @@ async fn successful_native_loop_emits_explicit_turn_completed() { assert!( harness - .wait_for_event(Duration::from_secs(5), |event| matches!( + .wait_for_event(EVENT_WAIT, |event| matches!( event, FromAgent::TurnCompleted { .. } )) @@ -465,7 +472,7 @@ async fn continue_preserves_provider_error_kind_and_does_not_complete() { .expect("prompt"); assert!( harness - .wait_for_event(Duration::from_secs(5), |event| matches!( + .wait_for_event(EVENT_WAIT, |event| matches!( event, FromAgent::TurnCompleted { .. } )) @@ -476,7 +483,7 @@ async fn continue_preserves_provider_error_kind_and_does_not_complete() { harness.agent.continue_execution().expect("continue"); assert!(matches!( harness - .wait_for_event(Duration::from_secs(5), |event| matches!( + .wait_for_event(EVENT_WAIT, |event| matches!( event, FromAgent::ProviderError { .. } )) @@ -515,7 +522,7 @@ async fn cancelled_native_loop_emits_explicit_turn_interrupted() { .expect("prompt"); assert!( harness - .wait_for_event(Duration::from_secs(5), |event| matches!( + .wait_for_event(EVENT_WAIT, |event| matches!( event, FromAgent::ResponseStart { .. } )) @@ -526,7 +533,7 @@ async fn cancelled_native_loop_emits_explicit_turn_interrupted() { assert!(matches!( harness - .wait_for_event(Duration::from_secs(5), |event| matches!( + .wait_for_event(EVENT_WAIT, |event| matches!( event, FromAgent::TurnInterrupted { .. } )) @@ -573,7 +580,7 @@ async fn side_question_eof_reports_structured_transient_protocol_error() { assert!(matches!( harness - .wait_for_event(Duration::from_secs(5), |event| matches!( + .wait_for_event(EVENT_WAIT, |event| matches!( event, FromAgent::SideQuestionEnd { .. } )) @@ -605,7 +612,7 @@ async fn scripted_empty_response_is_terminal_error_without_response_end() { .expect("prompt"); let error = harness - .wait_for_event(Duration::from_secs(12), |event| { + .wait_for_event(EVENT_WAIT, |event| { matches!(event, FromAgent::Error { terminal: true, .. }) }) .await @@ -656,7 +663,7 @@ async fn scripted_empty_response_retries_before_terminal_success() { assert!( harness - .wait_for_event(Duration::from_secs(5), |event| { + .wait_for_event(EVENT_WAIT, |event| { matches!(event, FromAgent::Status { message } if message.contains("Retrying")) }) .await @@ -665,7 +672,7 @@ async fn scripted_empty_response_retries_before_terminal_success() { ); assert!( harness - .wait_for_event(Duration::from_secs(5), |event| { + .wait_for_event(EVENT_WAIT, |event| { matches!(event, FromAgent::ResponseEnd { response_id, .. } if response_id == "done") }) .await @@ -700,7 +707,7 @@ async fn scripted_billed_empty_completion_steers_once_then_completes() { assert!( harness - .wait_for_event(Duration::from_secs(5), |event| { + .wait_for_event(EVENT_WAIT, |event| { matches!( event, FromAgent::Status { message } @@ -713,7 +720,7 @@ async fn scripted_billed_empty_completion_steers_once_then_completes() { ); assert!( harness - .wait_for_event(Duration::from_secs(5), |event| { + .wait_for_event(EVENT_WAIT, |event| { matches!(event, FromAgent::ResponseEnd { response_id, .. } if response_id == "done") }) .await @@ -756,7 +763,7 @@ async fn scripted_tool_side_effect_is_not_repeated_by_later_empty_retry() { .expect("prompt"); assert!( harness - .wait_for_event(Duration::from_secs(8), |event| { + .wait_for_event(EVENT_WAIT, |event| { matches!(event, FromAgent::ResponseEnd { response_id, .. } if response_id == "done") }) .await @@ -786,7 +793,7 @@ async fn scripted_text_response_still_completes() { assert!( harness - .wait_for_event(Duration::from_secs(5), |event| { + .wait_for_event(EVENT_WAIT, |event| { matches!(event, FromAgent::ResponseEnd { response_id, .. } if response_id == "done") }) .await @@ -821,7 +828,7 @@ async fn scripted_tool_only_turn_is_not_rejected_as_empty() { assert!( harness - .wait_for_event(Duration::from_secs(5), |event| { + .wait_for_event(EVENT_WAIT, |event| { matches!(event, FromAgent::ResponseEnd { response_id, .. } if response_id == "done") }) .await diff --git a/packages/local-host-rs/src/agent/native_codex_tests.rs b/packages/local-host-rs/src/agent/native_codex_tests.rs index c4bec5fc1..096bc7a67 100644 --- a/packages/local-host-rs/src/agent/native_codex_tests.rs +++ b/packages/local-host-rs/src/agent/native_codex_tests.rs @@ -682,7 +682,7 @@ async fn native_provider_checkpoint_survives_process_death_and_restores_tool_con let sessions = tempfile::tempdir().expect("sessions"); let mut recorder = crate::headless::SessionRecorder::new(sessions.path()).expect("session recorder"); - let snapshot = tokio::time::timeout(std::time::Duration::from_secs(5), async { + let snapshot = tokio::time::timeout(std::time::Duration::from_secs(30), async { loop { match source_events.recv().await { Some(FromAgent::ConversationSnapshot { messages, .. }) => break messages, diff --git a/packages/local-host-rs/src/model_catalog.rs b/packages/local-host-rs/src/model_catalog.rs index 8bbf96247..f0be78001 100644 --- a/packages/local-host-rs/src/model_catalog.rs +++ b/packages/local-host-rs/src/model_catalog.rs @@ -812,12 +812,12 @@ async fn write_cache_atomic(path: &Path, cache: &CachedCatalog) -> anyhow::Resul } /// Positive output ceiling that is distinct from an aggregator's context copy -/// or exact 90% fallback. Keep in sync with the snapshot generator. +/// or rounded 90% fallback. Keep in sync with the snapshot generator. fn distinct_output_tokens(context: Option, output: Option) -> Option { let output = output.filter(|tokens| *tokens > 0)?; match context.filter(|tokens| *tokens > 0) { Some(context) if u64::from(output) * 100 >= u64::from(context) * 99 => None, - Some(context) if u64::from(output) == (u64::from(context) * 9 + 5) / 10 => None, + Some(context) if (u64::from(output) * 10).abs_diff(u64::from(context) * 9) <= 10 => None, _ => Some(output), } } @@ -847,7 +847,12 @@ fn parse_limit_tokens(model: &serde_json::Value, field: &str) -> Option { /// /// Vendor-native rows are inserted first so a distinct Google/OpenAI/Moonshot /// output wins over an OpenRouter row that copied the context window. -type DevTokenWindow = (Option, Option); +#[derive(Clone, Copy, Debug)] +struct DevTokenWindow { + context: Option, + output: Option, + is_openrouter: bool, +} #[derive(Debug, Default)] struct DevTokenLimits { @@ -880,31 +885,31 @@ impl DevTokenLimits { let context = parse_limit_tokens(model, "context"); let output = parse_limit_tokens(model, "output"); if provider == "openrouter" { - self.push(id, context, output); + self.push(id, context, output, true); } else { - self.push(&format!("{provider}/{id}"), context, output); + let namespace = if provider == "zai" { "z-ai" } else { provider }; + self.push(&format!("{namespace}/{id}"), context, output, false); } } } - fn push(&mut self, key: &str, context: Option, output: Option) { + fn push(&mut self, key: &str, context: Option, output: Option, is_openrouter: bool) { self.entries .entry(key.to_owned()) .or_default() - .push((context, output)); + .push(DevTokenWindow { + context, + output, + is_openrouter, + }); } - fn distinct_output( - &self, - openrouter_id: &str, - openrouter_context: u32, - openrouter_output: Option, - ) -> Option { - if let Some(output) = distinct_output_tokens(Some(openrouter_context), openrouter_output) { - return Some(output); - } - for (_context, output) in self.candidates(openrouter_id) { - if let Some(resolved) = distinct_output_tokens(Some(openrouter_context), output) { + fn distinct_output(&self, openrouter_id: &str, rejected_aggregator: bool) -> Option { + for candidate in self.candidates(openrouter_id) { + if rejected_aggregator && candidate.is_openrouter { + continue; + } + if let Some(resolved) = distinct_output_tokens(candidate.context, candidate.output) { return Some(resolved); } } @@ -1058,24 +1063,34 @@ fn map_openrouter_model( return None; } let top_provider = model.get("top_provider"); - let context_tokens = model - .get("context_length") - .or_else(|| top_provider.and_then(|provider| provider.get("context_length"))) - .and_then(serde_json::Value::as_u64) - .and_then(|context| u32::try_from(context).ok()) - .filter(|context| *context > 0)?; - let advertised_output = top_provider - .and_then(|provider| provider.get("max_completion_tokens")) - .or_else(|| model.get("max_completion_tokens")) - .and_then(serde_json::Value::as_u64) - .and_then(|output| u32::try_from(output).ok()) - .filter(|output| *output > 0); + let positive_u32 = |value: Option<&serde_json::Value>| { + value + .and_then(serde_json::Value::as_u64) + .and_then(|tokens| u32::try_from(tokens).ok()) + .filter(|tokens| *tokens > 0) + }; + let model_context = positive_u32(model.get("context_length")); + let provider_context = + positive_u32(top_provider.and_then(|provider| provider.get("context_length"))); + let context_tokens = model_context.or(provider_context)?; + let top_output_field = top_provider.and_then(|provider| provider.get("max_completion_tokens")); + let top_output = positive_u32(top_output_field); + let (advertised_context, advertised_output, checked_provider) = + if top_output_field.is_some() && provider_context.is_some() { + (provider_context, top_output, true) + } else { + ( + model_context, + positive_u32(model.get("max_completion_tokens")), + false, + ) + }; + let advertised_distinct = distinct_output_tokens(advertised_context, advertised_output); + let rejected_aggregator = checked_provider && advertised_distinct.is_none(); let output_tokens = omit_unverified_sonar_output( id, - limits.map_or_else( - || distinct_output_tokens(Some(context_tokens), advertised_output), - |limits| limits.distinct_output(id, context_tokens, advertised_output), - ), + advertised_distinct + .or_else(|| limits.and_then(|limits| limits.distinct_output(id, rejected_aggregator))), ); let name = model .get("name") @@ -1751,9 +1766,9 @@ mod tests { }); let openrouter = serde_json::json!({"data": [ {"id": "perplexity/sonar-reasoning-pro", "context_length": 128_000, - "top_provider": {"max_completion_tokens": 115_200}}, + "top_provider": {"context_length": 128_000, "max_completion_tokens": 115_200}}, {"id": "perplexity/another-model", "context_length": 128_000, - "top_provider": {"max_completion_tokens": 4_096}} + "top_provider": {"context_length": 128_000, "max_completion_tokens": 4_096}} ]}); let limits = DevTokenLimits::from_models_dev(&models_dev); let refreshed = map_openrouter_catalog_with_limits(&openrouter, Some(&limits)).unwrap(); @@ -2294,6 +2309,7 @@ mod tests { assert_eq!(distinct_output_tokens(Some(262_144), Some(262_140)), None); assert_eq!(distinct_output_tokens(Some(1_000_000), Some(900_000)), None); assert_eq!(distinct_output_tokens(Some(262_143), Some(235_929)), None); + assert_eq!(distinct_output_tokens(Some(1_048_575), Some(943_717)), None); assert_eq!( distinct_output_tokens(Some(200_000), Some(100_000)), Some(100_000) @@ -2301,6 +2317,43 @@ mod tests { assert_eq!(distinct_output_tokens(Some(200_000), None), None); } + #[test] + fn runtime_openrouter_output_uses_matching_context_and_vendor_fallback() { + let openrouter = serde_json::json!({"data": [ + {"id": "z-ai/glm-5.3", "context_length": 1_310_720, + "top_provider": {"context_length": 1_048_575, "max_completion_tokens": 943_717}}, + {"id": "example/near-context", "context_length": 200_000, + "top_provider": {"context_length": 100_000, "max_completion_tokens": 99_000}}, + {"id": "example/valid", "context_length": 200_000, + "top_provider": {"context_length": 100_000, "max_completion_tokens": 50_000}}, + {"id": "example/missing-provider-context", "context_length": 200_000, + "top_provider": {"max_completion_tokens": 50_000}}, + {"id": "example/model-level-output", "context_length": 200_000, + "max_completion_tokens": 50_000} + ]}); + let models_dev = serde_json::json!({ + "zai": {"models": {"glm-5.3": {"limit": {"context": 1_000_000, "output": 131_072}}}}, + "openrouter": {"models": {"z-ai/glm-5.3": { + "limit": {"context": 1_310_720, "output": 943_717} + }}} + }); + let limits = DevTokenLimits::from_models_dev(&models_dev); + let models = map_openrouter_catalog_with_limits(&openrouter, Some(&limits)).unwrap(); + let output = |id: &str| { + models + .iter() + .find(|model| model.id == id) + .unwrap() + .capabilities + .output_tokens + }; + assert_eq!(output("z-ai/glm-5.3"), Some(131_072)); + assert_eq!(output("example/near-context"), None); + assert_eq!(output("example/valid"), Some(50_000)); + assert_eq!(output("example/missing-provider-context"), None); + assert_eq!(output("example/model-level-output"), Some(50_000)); + } + #[test] fn runtime_mappers_keep_vendor_corrected_context() { let native = serde_json::json!({ @@ -2400,7 +2453,7 @@ mod tests { "architecture": {"input_modalities": ["text", "image"]}, "supported_parameters": ["tools", "tool_choice", "reasoning"], "reasoning": {"default_enabled": true}, - "top_provider": {"max_completion_tokens": 64_000} + "top_provider": {"context_length": 200_000, "max_completion_tokens": 64_000} }, { "id": "openai/gpt-5.6", diff --git a/packages/local-host-rs/src/model_catalog_data.json b/packages/local-host-rs/src/model_catalog_data.json index 6ef6b0bcb..e95ee4e77 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": 1790322601, + "generated_at": 1790356629, "source": "https://models.dev/api.json+https://openrouter.ai/api/v1/models", "vendor_corrections": [ { @@ -1331,9 +1331,9 @@ ], "reasoning_efforts": [], "cost": { - "input": 0.09, - "output": 0.3, - "cache_read": 0.05 + "input": 0.0675, + "output": 0.225, + "cache_read": 0.0375 }, "open_weights": true, "verification": { @@ -2767,9 +2767,9 @@ "temperature": true }, "cost": { - "input": 0.04, - "output": 0.49, - "cache_read": 0.01 + "input": 0.075, + "output": 0.3, + "cache_read": 0.0015 }, "verification": { "state": "catalog", @@ -2791,8 +2791,8 @@ "temperature": true }, "cost": { - "input": 0.09984, - "output": 2.88, + "input": 0.2528, + "output": 1.9584, "cache_read": 0.08832 }, "verification": { @@ -2812,7 +2812,6 @@ "reasoning": true, "streaming": true, "context_tokens": 1310720, - "output_tokens": 943718, "temperature": true }, "cost": { @@ -2892,9 +2891,9 @@ "temperature": true }, "cost": { - "input": 0.8845, + "input": 1.2, "output": 10.5346, - "cache_read": 0.33 + "cache_read": 0.3 }, "verification": { "state": "catalog", @@ -3896,7 +3895,6 @@ "reasoning": true, "streaming": true, "context_tokens": 262144, - "output_tokens": 235929, "temperature": true }, "cost": { @@ -4307,7 +4305,6 @@ "reasoning": true, "streaming": true, "context_tokens": 8192, - "output_tokens": 7372, "temperature": true }, "cost": { @@ -4409,9 +4406,9 @@ "temperature": true }, "cost": { - "input": 0.049, - "output": 0.098, - "cache_read": 0.0098 + "input": 0.04788, + "output": 0.09576, + "cache_read": 0.009576 }, "status": "deprecated", "verification": { @@ -4431,7 +4428,6 @@ "reasoning": true, "streaming": true, "context_tokens": 1310720, - "output_tokens": 943718, "temperature": true }, "cost": { @@ -4486,9 +4482,9 @@ "temperature": true }, "cost": { - "input": 0.783, - "output": 1.566, - "cache_read": 0.06525 + "input": 0.702786, + "output": 1.405572, + "cache_read": 0.058566 }, "verification": { "state": "catalog", @@ -4511,9 +4507,9 @@ "temperature": true }, "cost": { - "input": 0.462, - "output": 1.386, - "cache_read": 0.0154 + "input": 0.34584, + "output": 1.03752, + "cache_read": 0.011528 }, "verification": { "state": "catalog", @@ -4532,13 +4528,12 @@ "reasoning": true, "streaming": true, "context_tokens": 1048576, - "output_tokens": 393216, "temperature": true }, "cost": { - "input": 0.3, - "output": 1.2, - "cache_read": 0.006 + "input": 0.075, + "output": 0.3, + "cache_read": 0.0015 }, "verification": { "state": "catalog", @@ -5166,7 +5161,6 @@ "reasoning": false, "streaming": true, "context_tokens": 131072, - "output_tokens": 117964, "temperature": true }, "cost": { @@ -5215,13 +5209,13 @@ "reasoning": true, "streaming": true, "context_tokens": 262144, - "output_tokens": 235929, + "output_tokens": 32768, "temperature": true }, "cost": { - "input": 0.09, - "output": 0.3, - "cache_read": 0.05 + "input": 0.0675, + "output": 0.225, + "cache_read": 0.0375 }, "verification": { "state": "catalog", @@ -5361,7 +5355,6 @@ "reasoning": false, "streaming": true, "context_tokens": 8192, - "output_tokens": 3686, "temperature": true }, "cost": { @@ -5408,7 +5401,6 @@ "reasoning": true, "streaming": true, "context_tokens": 131072, - "output_tokens": 117964, "temperature": true }, "cost": { @@ -5508,7 +5500,6 @@ "reasoning": true, "streaming": true, "context_tokens": 262144, - "output_tokens": 235929, "temperature": true }, "cost": { @@ -5585,9 +5576,9 @@ "temperature": true }, "cost": { - "input": 0.06, - "output": 0.18, - "cache_read": 0.012 + "input": 0.021, + "output": 0.0616, + "cache_read": 0.0042 }, "verification": { "state": "catalog", @@ -5656,7 +5647,6 @@ "reasoning": false, "streaming": true, "context_tokens": 262144, - "output_tokens": 235929, "temperature": true }, "cost": { @@ -5778,7 +5768,6 @@ "reasoning": false, "streaming": true, "context_tokens": 131072, - "output_tokens": 117964, "temperature": true }, "cost": { @@ -5826,7 +5815,6 @@ "reasoning": false, "streaming": true, "context_tokens": 131072, - "output_tokens": 117964, "temperature": true }, "cost": { @@ -6096,7 +6084,6 @@ "reasoning": false, "streaming": true, "context_tokens": 16384, - "output_tokens": 14745, "temperature": true }, "cost": { @@ -6144,7 +6131,6 @@ "reasoning": false, "streaming": true, "context_tokens": 1000192, - "output_tokens": 900172, "temperature": true }, "cost": { @@ -6192,7 +6178,6 @@ "reasoning": true, "streaming": true, "context_tokens": 204800, - "output_tokens": 176947, "temperature": true }, "cost": { @@ -6884,7 +6869,6 @@ "reasoning": true, "streaming": true, "context_tokens": 262144, - "output_tokens": 235929, "temperature": true }, "cost": { @@ -6909,7 +6893,6 @@ "reasoning": true, "streaming": true, "context_tokens": 262144, - "output_tokens": 235929, "temperature": true }, "cost": { @@ -6934,7 +6917,6 @@ "reasoning": true, "streaming": true, "context_tokens": 262144, - "output_tokens": 235929, "temperature": true }, "cost": { @@ -7019,54 +7001,6 @@ "source": "openrouter" } }, - { - "id": "nex-agi/nex-n2.5-mini:free", - "name": "Nex AGI: Nex-N2.5-Mini (free)", - "provider": "openrouter", - "description": "Nex-N2.5 is an agentic model built to turn goals into working, verified outcomes. Its core strength is agentic coding…", - "capabilities": { - "protocol": "openai-chat", - "tools": true, - "vision": true, - "reasoning": true, - "streaming": true, - "context_tokens": 262144, - "output_tokens": 235929, - "temperature": true - }, - "cost": { - "input": 0, - "output": 0 - }, - "verification": { - "state": "catalog", - "source": "openrouter" - } - }, - { - "id": "nex-agi/nex-n2.5-pro:free", - "name": "Nex AGI: Nex-N2.5-Pro (free)", - "provider": "openrouter", - "description": "Nex-N2.5 is an agentic model built to turn goals into working, verified outcomes. Its core strength is agentic coding…", - "capabilities": { - "protocol": "openai-chat", - "tools": true, - "vision": true, - "reasoning": true, - "streaming": true, - "context_tokens": 262144, - "output_tokens": 235929, - "temperature": true - }, - "cost": { - "input": 0, - "output": 0 - }, - "verification": { - "state": "catalog", - "source": "openrouter" - } - }, { "id": "nousresearch/hermes-3-llama-3.1-405b", "name": "Nous: Hermes 3 405B Instruct", @@ -7127,7 +7061,6 @@ "reasoning": true, "streaming": true, "context_tokens": 131072, - "output_tokens": 117964, "temperature": true }, "cost": { @@ -7151,7 +7084,6 @@ "reasoning": true, "streaming": true, "context_tokens": 262144, - "output_tokens": 235929, "temperature": true }, "cost": { @@ -7200,7 +7132,6 @@ "reasoning": true, "streaming": true, "context_tokens": 262144, - "output_tokens": 235929, "temperature": true }, "cost": { @@ -7224,7 +7155,6 @@ "reasoning": true, "streaming": true, "context_tokens": 262144, - "output_tokens": 235929, "temperature": true }, "cost": { @@ -7248,7 +7178,6 @@ "reasoning": true, "streaming": true, "context_tokens": 262144, - "output_tokens": 182520, "temperature": true }, "cost": { @@ -7297,7 +7226,6 @@ "reasoning": true, "streaming": true, "context_tokens": 131072, - "output_tokens": 117964, "temperature": true }, "cost": { @@ -7344,12 +7272,11 @@ "vision": false, "reasoning": true, "streaming": true, - "context_tokens": 262144, - "output_tokens": 131072, + "context_tokens": 1000000, "temperature": true }, "cost": { - "input": 0.08, + "input": 0.07, "output": 0.2, "cache_read": 0.04 }, @@ -7419,7 +7346,6 @@ "reasoning": false, "streaming": true, "context_tokens": 4095, - "output_tokens": 3685, "temperature": true }, "cost": { @@ -7467,7 +7393,6 @@ "reasoning": false, "streaming": true, "context_tokens": 4095, - "output_tokens": 3685, "temperature": true }, "cost": { @@ -9119,7 +9044,7 @@ "reasoning": false, "streaming": true, "context_tokens": 127072, - "output_tokens": 114364, + "output_tokens": 4096, "temperature": true }, "cost": { @@ -9552,7 +9477,6 @@ "reasoning": false, "streaming": true, "context_tokens": 262144, - "output_tokens": 235929, "temperature": true }, "cost": { @@ -9577,7 +9501,6 @@ "reasoning": true, "streaming": true, "context_tokens": 131072, - "output_tokens": 117964, "temperature": true }, "cost": { @@ -9625,7 +9548,6 @@ "reasoning": false, "streaming": true, "context_tokens": 262144, - "output_tokens": 235929, "temperature": true }, "cost": { @@ -9746,7 +9668,6 @@ "reasoning": false, "streaming": true, "context_tokens": 262144, - "output_tokens": 235929, "temperature": true }, "cost": { @@ -9796,7 +9717,6 @@ "reasoning": false, "streaming": true, "context_tokens": 262144, - "output_tokens": 235929, "temperature": true }, "cost": { @@ -9897,7 +9817,6 @@ "reasoning": false, "streaming": true, "context_tokens": 262144, - "output_tokens": 235929, "temperature": true }, "cost": { @@ -9922,7 +9841,6 @@ "reasoning": true, "streaming": true, "context_tokens": 262144, - "output_tokens": 235929, "temperature": true }, "cost": { @@ -10188,7 +10106,6 @@ "reasoning": true, "streaming": true, "context_tokens": 262144, - "output_tokens": 235929, "temperature": true }, "cost": { @@ -10334,7 +10251,6 @@ "reasoning": true, "streaming": true, "context_tokens": 262144, - "output_tokens": 235929, "temperature": true }, "cost": { @@ -10562,7 +10478,6 @@ "reasoning": true, "streaming": true, "context_tokens": 262144, - "output_tokens": 235929, "temperature": true }, "cost": { @@ -10688,7 +10603,6 @@ "reasoning": true, "streaming": true, "context_tokens": 16384, - "output_tokens": 14745, "temperature": true }, "cost": { @@ -10883,7 +10797,6 @@ "reasoning": false, "streaming": true, "context_tokens": 8192, - "output_tokens": 7372, "temperature": true }, "cost": { @@ -11003,7 +10916,6 @@ "reasoning": true, "streaming": true, "context_tokens": 262144, - "output_tokens": 230400, "temperature": true }, "cost": { @@ -11028,7 +10940,6 @@ "reasoning": true, "streaming": true, "context_tokens": 131072, - "output_tokens": 117964, "temperature": true }, "cost": { @@ -11128,9 +11039,9 @@ "temperature": true }, "cost": { - "input": 0.132, - "output": 0.528, - "cache_read": 0.033 + "input": 0.0825, + "output": 0.33, + "cache_read": 0.020625 }, "verification": { "state": "catalog", @@ -11149,7 +11060,6 @@ "reasoning": true, "streaming": true, "context_tokens": 262144, - "output_tokens": 235929, "temperature": true }, "cost": { @@ -11199,7 +11109,6 @@ "reasoning": false, "streaming": true, "context_tokens": 131072, - "output_tokens": 117964, "temperature": true }, "cost": { @@ -11272,7 +11181,6 @@ "reasoning": true, "streaming": true, "context_tokens": 1048576, - "output_tokens": 471859, "temperature": true }, "cost": { @@ -11395,7 +11303,6 @@ "reasoning": false, "streaming": true, "context_tokens": 6144, - "output_tokens": 5529, "temperature": true }, "cost": { @@ -11444,7 +11351,6 @@ "reasoning": true, "streaming": true, "context_tokens": 131072, - "output_tokens": 117964, "temperature": true }, "cost": { @@ -11961,7 +11867,7 @@ "reasoning": true, "streaming": true, "context_tokens": 200000, - "output_tokens": 117964, + "output_tokens": 131072, "temperature": true }, "cost": { @@ -12084,7 +11990,7 @@ "vision": false, "reasoning": true, "streaming": true, - "context_tokens": 32768, + "context_tokens": 131072, "temperature": true }, "cost": { @@ -12108,7 +12014,7 @@ "reasoning": true, "streaming": true, "context_tokens": 1310720, - "output_tokens": 943717, + "output_tokens": 131072, "temperature": true }, "cost": { diff --git a/packages/local-host-rs/src/model_facts_generated.rs b/packages/local-host-rs/src/model_facts_generated.rs index 5cf4c5f0f..a9b0193b8 100644 --- a/packages/local-host-rs/src/model_facts_generated.rs +++ b/packages/local-host-rs/src/model_facts_generated.rs @@ -55,7 +55,7 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("baidu/ernie-4.5-vl-424b-a47b", ModelFacts { context_window: 123_000, max_output_tokens: Some(16_000), input_per_million: Some(0.42), output_per_million: Some(1.25), cache_read_per_million: None, cache_write_per_million: None }), ("bytedance-seed/seed-1.6", ModelFacts { context_window: 262_144, max_output_tokens: Some(32_768), input_per_million: Some(0.25), output_per_million: Some(2.0), cache_read_per_million: None, cache_write_per_million: None }), ("bytedance-seed/seed-1.6-flash", ModelFacts { context_window: 262_144, max_output_tokens: Some(32_768), input_per_million: Some(0.075), output_per_million: Some(0.3), cache_read_per_million: None, cache_write_per_million: None }), - ("bytedance-seed/seed-2-1-turbo", ModelFacts { context_window: 262_144, max_output_tokens: Some(235_929), input_per_million: Some(0.5), output_per_million: Some(2.5), cache_read_per_million: None, cache_write_per_million: None }), + ("bytedance-seed/seed-2-1-turbo", 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: None, cache_write_per_million: None }), ("bytedance-seed/seed-2.0-code", ModelFacts { context_window: 262_144, max_output_tokens: Some(131_072), input_per_million: Some(0.5), output_per_million: Some(3.0), cache_read_per_million: None, cache_write_per_million: None }), ("bytedance-seed/seed-2.0-lite", ModelFacts { context_window: 262_144, max_output_tokens: Some(131_072), input_per_million: Some(0.25), output_per_million: Some(2.0), cache_read_per_million: None, cache_write_per_million: None }), ("bytedance-seed/seed-2.0-mini", ModelFacts { context_window: 262_144, max_output_tokens: Some(131_072), input_per_million: Some(0.1), output_per_million: Some(0.4), cache_read_per_million: None, cache_write_per_million: None }), @@ -89,16 +89,16 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("deepseek/deepseek-chat-v3.1", ModelFacts { context_window: 163_840, max_output_tokens: Some(32_768), input_per_million: Some(0.25), output_per_million: Some(0.95), cache_read_per_million: Some(0.13), cache_write_per_million: None }), ("deepseek/deepseek-r1", ModelFacts { context_window: 64_000, max_output_tokens: Some(16_000), input_per_million: Some(0.7), output_per_million: Some(2.5), cache_read_per_million: None, cache_write_per_million: None }), ("deepseek/deepseek-r1-0528", ModelFacts { context_window: 163_840, max_output_tokens: Some(32_768), input_per_million: Some(0.5), output_per_million: Some(2.15), cache_read_per_million: Some(0.35), cache_write_per_million: None }), - ("deepseek/deepseek-r1-distill-llama-70b", ModelFacts { context_window: 8_192, max_output_tokens: Some(7_372), input_per_million: Some(0.8), output_per_million: Some(0.8), cache_read_per_million: None, cache_write_per_million: None }), + ("deepseek/deepseek-r1-distill-llama-70b", ModelFacts { context_window: 8_192, max_output_tokens: None, input_per_million: Some(0.8), output_per_million: Some(0.8), cache_read_per_million: None, cache_write_per_million: None }), ("deepseek/deepseek-v3.1-terminus", ModelFacts { context_window: 163_840, max_output_tokens: Some(32_768), input_per_million: Some(0.27), output_per_million: Some(1.0), cache_read_per_million: Some(0.135), cache_write_per_million: None }), ("deepseek/deepseek-v3.2", ModelFacts { context_window: 163_840, max_output_tokens: Some(65_536), input_per_million: Some(0.269), output_per_million: Some(0.4), cache_read_per_million: Some(0.1345), cache_write_per_million: None }), ("deepseek/deepseek-v3.2-exp", ModelFacts { context_window: 163_840, max_output_tokens: Some(65_536), input_per_million: Some(0.27), output_per_million: Some(0.41), cache_read_per_million: None, cache_write_per_million: None }), - ("deepseek/deepseek-v4-flash", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(384_000), input_per_million: Some(0.049), output_per_million: Some(0.098), cache_read_per_million: Some(0.0098), cache_write_per_million: None }), - ("deepseek/deepseek-v4-flash-0731", ModelFacts { context_window: 1_310_720, max_output_tokens: Some(943_718), input_per_million: Some(0.03), output_per_million: Some(0.32), cache_read_per_million: Some(0.016), cache_write_per_million: None }), + ("deepseek/deepseek-v4-flash", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(384_000), input_per_million: Some(0.04788), output_per_million: Some(0.09576), cache_read_per_million: Some(0.009576), cache_write_per_million: None }), + ("deepseek/deepseek-v4-flash-0731", ModelFacts { context_window: 1_310_720, max_output_tokens: None, input_per_million: Some(0.03), output_per_million: Some(0.32), 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(393_216), input_per_million: Some(0.22), output_per_million: Some(0.66), cache_read_per_million: Some(0.007), 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.783), output_per_million: Some(1.566), cache_read_per_million: Some(0.06525), cache_write_per_million: None }), - ("deepseek/deepseek-v4-pro-0813", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(384_000), input_per_million: Some(0.462), output_per_million: Some(1.386), cache_read_per_million: Some(0.0154), cache_write_per_million: None }), - ("deepseek/deepseek-v4.1-flash", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(393_216), input_per_million: Some(0.3), output_per_million: Some(1.2), cache_read_per_million: Some(0.006), 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.702786), output_per_million: Some(1.405572), cache_read_per_million: Some(0.058566), cache_write_per_million: None }), + ("deepseek/deepseek-v4-pro-0813", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(384_000), input_per_million: Some(0.34584), output_per_million: Some(1.03752), cache_read_per_million: Some(0.011528), 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.075), output_per_million: Some(0.3), cache_read_per_million: Some(0.0015), 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 }), @@ -118,7 +118,7 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("gemini-3.8-flash", 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-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-26b-a4b-it", ModelFacts { context_window: 262_144, max_output_tokens: Some(32_768), input_per_million: Some(0.0675), output_per_million: Some(0.225), cache_read_per_million: Some(0.0375), 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 }), ("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) }), @@ -142,9 +142,9 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("google/gemini-3.8-flash", 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/gemma-2-27b-it", ModelFacts { context_window: 8_192, max_output_tokens: Some(2_048), input_per_million: Some(0.65), output_per_million: Some(0.65), cache_read_per_million: None, cache_write_per_million: None }), ("google/gemma-3-12b-it", ModelFacts { context_window: 131_072, max_output_tokens: Some(16_384), input_per_million: Some(0.05), output_per_million: Some(0.15), cache_read_per_million: None, cache_write_per_million: None }), - ("google/gemma-3-27b-it", ModelFacts { context_window: 131_072, max_output_tokens: Some(117_964), input_per_million: Some(0.08), output_per_million: Some(0.45), cache_read_per_million: Some(0.04), cache_write_per_million: None }), + ("google/gemma-3-27b-it", ModelFacts { context_window: 131_072, max_output_tokens: None, input_per_million: Some(0.08), output_per_million: Some(0.45), cache_read_per_million: Some(0.04), cache_write_per_million: None }), ("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(235_929), 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", ModelFacts { context_window: 262_144, max_output_tokens: Some(32_768), input_per_million: Some(0.0675), output_per_million: Some(0.225), cache_read_per_million: Some(0.0375), 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: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 }), @@ -186,26 +186,26 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("grok-4.6", 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 }), ("grok-4.7", 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 }), ("grok-build-0.1", ModelFacts { context_window: 256_000, max_output_tokens: None, input_per_million: Some(1.0), output_per_million: Some(2.0), cache_read_per_million: Some(0.2), cache_write_per_million: None }), - ("gryphe/mythomax-l2-13b", ModelFacts { context_window: 8_192, max_output_tokens: Some(3_686), input_per_million: Some(0.08), output_per_million: Some(0.11), cache_read_per_million: None, cache_write_per_million: None }), + ("gryphe/mythomax-l2-13b", ModelFacts { context_window: 8_192, max_output_tokens: None, input_per_million: Some(0.08), output_per_million: Some(0.11), cache_read_per_million: None, cache_write_per_million: None }), ("ibm-granite/granite-4.0-h-micro", ModelFacts { context_window: 131_000, max_output_tokens: None, input_per_million: Some(0.017), output_per_million: Some(0.112), cache_read_per_million: None, cache_write_per_million: None }), - ("ibm-granite/granite-4.2-8b", ModelFacts { context_window: 131_072, max_output_tokens: Some(117_964), input_per_million: Some(0.06), output_per_million: Some(0.25), cache_read_per_million: Some(0.015), cache_write_per_million: None }), + ("ibm-granite/granite-4.2-8b", ModelFacts { context_window: 131_072, max_output_tokens: None, input_per_million: Some(0.06), output_per_million: Some(0.25), cache_read_per_million: Some(0.015), cache_write_per_million: None }), ("inception/mercury-2", ModelFacts { context_window: 128_000, max_output_tokens: Some(50_000), input_per_million: Some(0.25), output_per_million: Some(0.75), cache_read_per_million: Some(0.025), cache_write_per_million: None }), ("inception/mercury-2.5", ModelFacts { context_window: 260_000, max_output_tokens: Some(65_536), input_per_million: Some(0.04), output_per_million: Some(0.15), cache_read_per_million: Some(0.004), cache_write_per_million: None }), ("inclusionai/ling-3.0-flash", ModelFacts { context_window: 262_144, max_output_tokens: Some(32_768), input_per_million: Some(0.021), output_per_million: Some(0.063), cache_read_per_million: Some(0.0042), cache_write_per_million: None }), - ("inclusionai/ling-3.0-flash-fin", ModelFacts { context_window: 262_144, max_output_tokens: Some(235_929), input_per_million: Some(0.06), output_per_million: Some(0.18), cache_read_per_million: Some(0.012), cache_write_per_million: None }), + ("inclusionai/ling-3.0-flash-fin", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.06), output_per_million: Some(0.18), cache_read_per_million: Some(0.012), cache_write_per_million: None }), ("inclusionai/ling-3.0-flash-fin: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 }), ("inclusionai/ling-3.0-flash-sante: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 }), - ("inclusionai/ling-3.0-flash-vl", ModelFacts { context_window: 262_144, max_output_tokens: Some(32_768), input_per_million: Some(0.06), output_per_million: Some(0.18), cache_read_per_million: Some(0.012), cache_write_per_million: None }), + ("inclusionai/ling-3.0-flash-vl", ModelFacts { context_window: 262_144, max_output_tokens: Some(32_768), input_per_million: Some(0.021), output_per_million: Some(0.0616), cache_read_per_million: Some(0.0042), cache_write_per_million: None }), ("inference-net/schematron-v2-small", ModelFacts { context_window: 128_000, max_output_tokens: Some(4_096), input_per_million: Some(0.05), output_per_million: Some(0.23), cache_read_per_million: Some(0.05), cache_write_per_million: None }), ("inference-net/schematron-v2-turbo", ModelFacts { context_window: 128_000, max_output_tokens: Some(8_192), input_per_million: Some(0.03), output_per_million: Some(0.15), cache_read_per_million: Some(0.03), cache_write_per_million: None }), - ("kwaipilot/kat-coder-pro-v2.5", ModelFacts { context_window: 262_144, max_output_tokens: Some(235_929), input_per_million: Some(0.74), output_per_million: Some(2.96), cache_read_per_million: Some(0.15), cache_write_per_million: None }), + ("kwaipilot/kat-coder-pro-v2.5", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.74), output_per_million: Some(2.96), cache_read_per_million: Some(0.15), cache_write_per_million: None }), ("liquid/lfm-2.5-2.6b:free", ModelFacts { context_window: 65_536, max_output_tokens: Some(8_192), input_per_million: Some(0.0), output_per_million: Some(0.0), cache_read_per_million: None, cache_write_per_million: None }), ("mancer/weaver", ModelFacts { context_window: 8_000, max_output_tokens: Some(6_000), input_per_million: Some(0.4), output_per_million: Some(0.75), cache_read_per_million: None, cache_write_per_million: None }), ("meituan/longcat-2.0", ModelFacts { context_window: 1_048_756, max_output_tokens: Some(262_144), input_per_million: Some(0.3), output_per_million: Some(1.2), cache_read_per_million: Some(0.006), cache_write_per_million: None }), ("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: Some(117_964), 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.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: Some(117_964), 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.05), output_per_million: Some(0.33), 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(16_384), input_per_million: Some(0.1), output_per_million: Some(0.32), cache_read_per_million: None, 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: None, cache_write_per_million: None }), ("meta-llama/llama-4-scout", ModelFacts { context_window: 1_310_720, max_output_tokens: Some(16_384), input_per_million: Some(0.1), output_per_million: Some(0.3), cache_read_per_million: None, cache_write_per_million: None }), @@ -216,11 +216,11 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("meta/muse-spark-1.2-contributor", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(131_072), input_per_million: Some(0.1), output_per_million: Some(0.2), cache_read_per_million: Some(0.002), cache_write_per_million: None }), ("meta/muse-spark-1.3", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(131_072), input_per_million: Some(1.25), output_per_million: Some(4.25), cache_read_per_million: Some(0.15), cache_write_per_million: None }), ("meta/muse-spark-1.3-contributor", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(131_072), input_per_million: Some(0.1), output_per_million: Some(0.2), cache_read_per_million: Some(0.002), cache_write_per_million: None }), - ("microsoft/phi-4", ModelFacts { context_window: 16_384, max_output_tokens: Some(14_745), input_per_million: Some(0.07), output_per_million: Some(0.14), cache_read_per_million: None, cache_write_per_million: None }), + ("microsoft/phi-4", ModelFacts { context_window: 16_384, max_output_tokens: None, input_per_million: Some(0.07), output_per_million: Some(0.14), cache_read_per_million: None, cache_write_per_million: None }), ("microsoft/wizardlm-2-8x22b", ModelFacts { context_window: 65_535, max_output_tokens: Some(8_000), input_per_million: Some(0.62), output_per_million: Some(0.62), cache_read_per_million: None, cache_write_per_million: None }), - ("minimax/minimax-01", ModelFacts { context_window: 1_000_192, max_output_tokens: Some(900_172), input_per_million: Some(0.2), output_per_million: Some(1.1), cache_read_per_million: None, cache_write_per_million: None }), + ("minimax/minimax-01", ModelFacts { context_window: 1_000_192, max_output_tokens: None, input_per_million: Some(0.2), output_per_million: Some(1.1), cache_read_per_million: None, cache_write_per_million: None }), ("minimax/minimax-m1", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(40_000), input_per_million: Some(0.4), output_per_million: Some(2.2), cache_read_per_million: None, cache_write_per_million: None }), - ("minimax/minimax-m2", ModelFacts { context_window: 204_800, max_output_tokens: Some(176_947), input_per_million: Some(0.3), output_per_million: Some(1.2), cache_read_per_million: None, cache_write_per_million: None }), + ("minimax/minimax-m2", ModelFacts { context_window: 204_800, max_output_tokens: None, input_per_million: Some(0.3), output_per_million: Some(1.2), 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 }), @@ -248,33 +248,31 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("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 }), ("moonshotai/kimi-k2-0905", ModelFacts { context_window: 262_144, max_output_tokens: Some(98_304), input_per_million: Some(0.6), output_per_million: Some(2.5), cache_read_per_million: None, cache_write_per_million: None }), ("moonshotai/kimi-k2-thinking", ModelFacts { context_window: 262_144, max_output_tokens: Some(98_304), input_per_million: Some(0.6), output_per_million: Some(2.5), cache_read_per_million: Some(0.15), cache_write_per_million: None }), - ("moonshotai/kimi-k2.5", ModelFacts { context_window: 262_144, max_output_tokens: Some(235_929), input_per_million: Some(0.45), output_per_million: Some(2.25), cache_read_per_million: Some(0.07), cache_write_per_million: None }), - ("moonshotai/kimi-k2.6", ModelFacts { context_window: 262_144, max_output_tokens: Some(235_929), input_per_million: Some(0.95), output_per_million: Some(4.0), cache_read_per_million: Some(0.16), cache_write_per_million: None }), - ("moonshotai/kimi-k2.7-code", ModelFacts { context_window: 262_144, max_output_tokens: Some(235_929), input_per_million: Some(0.6562), output_per_million: Some(3.3), cache_read_per_million: Some(0.18), cache_write_per_million: None }), + ("moonshotai/kimi-k2.5", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.45), output_per_million: Some(2.25), cache_read_per_million: Some(0.07), cache_write_per_million: None }), + ("moonshotai/kimi-k2.6", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.95), output_per_million: Some(4.0), cache_read_per_million: Some(0.16), cache_write_per_million: None }), + ("moonshotai/kimi-k2.7-code", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.6562), output_per_million: Some(3.3), 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(3.0), output_per_million: Some(15.0), cache_read_per_million: Some(0.3), 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:free", ModelFacts { context_window: 262_144, max_output_tokens: Some(235_929), input_per_million: Some(0.0), output_per_million: Some(0.0), cache_read_per_million: None, cache_write_per_million: None }), - ("nex-agi/nex-n2.5-pro:free", ModelFacts { context_window: 262_144, max_output_tokens: Some(235_929), input_per_million: Some(0.0), output_per_million: Some(0.0), cache_read_per_million: None, cache_write_per_million: None }), ("nousresearch/hermes-3-llama-3.1-405b", ModelFacts { context_window: 131_072, max_output_tokens: Some(16_384), input_per_million: Some(1.0), output_per_million: Some(1.0), cache_read_per_million: None, cache_write_per_million: None }), ("nousresearch/hermes-3-llama-3.1-70b", ModelFacts { context_window: 131_072, max_output_tokens: Some(16_384), input_per_million: Some(0.7), output_per_million: Some(0.7), cache_read_per_million: None, cache_write_per_million: None }), - ("nousresearch/hermes-4-405b", ModelFacts { context_window: 131_072, max_output_tokens: Some(117_964), input_per_million: Some(1.0), output_per_million: Some(3.0), cache_read_per_million: None, cache_write_per_million: None }), - ("nvidia/nemotron-3-nano-30b-a3b", ModelFacts { context_window: 262_144, max_output_tokens: Some(235_929), input_per_million: Some(0.05), output_per_million: Some(0.2), cache_read_per_million: Some(0.03), cache_write_per_million: None }), + ("nousresearch/hermes-4-405b", ModelFacts { context_window: 131_072, max_output_tokens: None, input_per_million: Some(1.0), output_per_million: Some(3.0), cache_read_per_million: None, cache_write_per_million: None }), + ("nvidia/nemotron-3-nano-30b-a3b", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.05), output_per_million: Some(0.2), cache_read_per_million: Some(0.03), cache_write_per_million: None }), ("nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free", ModelFacts { context_window: 256_000, 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 }), - ("nvidia/nemotron-3-super-120b-a12b", ModelFacts { context_window: 262_144, max_output_tokens: Some(235_929), input_per_million: Some(0.08), output_per_million: Some(0.45), cache_read_per_million: None, cache_write_per_million: None }), - ("nvidia/nemotron-3-super-120b-a12b:free", ModelFacts { context_window: 262_144, max_output_tokens: Some(235_929), input_per_million: Some(0.0), output_per_million: Some(0.0), cache_read_per_million: None, cache_write_per_million: None }), - ("nvidia/nemotron-3-ultra-550b-a55b", ModelFacts { context_window: 262_144, max_output_tokens: Some(182_520), input_per_million: Some(0.6), output_per_million: Some(2.4), cache_read_per_million: Some(0.12), cache_write_per_million: None }), + ("nvidia/nemotron-3-super-120b-a12b", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.08), output_per_million: Some(0.45), cache_read_per_million: None, cache_write_per_million: None }), + ("nvidia/nemotron-3-super-120b-a12b:free", ModelFacts { context_window: 262_144, 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 }), + ("nvidia/nemotron-3-ultra-550b-a55b", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.6), output_per_million: Some(2.4), cache_read_per_million: Some(0.12), cache_write_per_million: None }), ("nvidia/nemotron-3-ultra-550b-a55b:free", ModelFacts { context_window: 1_000_000, 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 }), - ("nvidia/nemotron-3.5-content-safety", ModelFacts { context_window: 131_072, max_output_tokens: Some(117_964), input_per_million: Some(0.2), output_per_million: Some(0.2), cache_read_per_million: None, cache_write_per_million: None }), + ("nvidia/nemotron-3.5-content-safety", ModelFacts { context_window: 131_072, max_output_tokens: None, input_per_million: Some(0.2), output_per_million: Some(0.2), cache_read_per_million: None, cache_write_per_million: None }), ("nvidia/nemotron-3.5-content-safety:free", ModelFacts { context_window: 128_000, max_output_tokens: Some(8_192), input_per_million: Some(0.0), output_per_million: Some(0.0), cache_read_per_million: None, cache_write_per_million: None }), - ("nvidia/nemotron-3.5-lightning", ModelFacts { context_window: 262_144, max_output_tokens: Some(131_072), input_per_million: Some(0.08), output_per_million: Some(0.2), cache_read_per_million: Some(0.04), cache_write_per_million: None }), + ("nvidia/nemotron-3.5-lightning", ModelFacts { context_window: 1_000_000, max_output_tokens: None, input_per_million: Some(0.07), output_per_million: Some(0.2), cache_read_per_million: Some(0.04), cache_write_per_million: None }), ("nvidia/nemotron-3.5-lightning:free", ModelFacts { context_window: 1_000_000, 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 }), ("o3", ModelFacts { context_window: 200_000, max_output_tokens: Some(100_000), input_per_million: Some(2.0), output_per_million: Some(8.0), cache_read_per_million: Some(0.5), cache_write_per_million: None }), ("o3-pro", ModelFacts { context_window: 200_000, max_output_tokens: Some(100_000), input_per_million: Some(20.0), output_per_million: Some(80.0), cache_read_per_million: None, cache_write_per_million: None }), ("openai/gpt-3.5-turbo", ModelFacts { context_window: 16_385, max_output_tokens: Some(4_096), input_per_million: Some(0.5), output_per_million: Some(1.5), cache_read_per_million: None, cache_write_per_million: None }), - ("openai/gpt-3.5-turbo-0613", ModelFacts { context_window: 4_095, max_output_tokens: Some(3_685), input_per_million: Some(1.0), output_per_million: Some(2.0), cache_read_per_million: None, cache_write_per_million: None }), + ("openai/gpt-3.5-turbo-0613", ModelFacts { context_window: 4_095, max_output_tokens: None, input_per_million: Some(1.0), output_per_million: Some(2.0), cache_read_per_million: None, cache_write_per_million: None }), ("openai/gpt-3.5-turbo-16k", ModelFacts { context_window: 16_385, max_output_tokens: Some(4_096), input_per_million: Some(3.0), output_per_million: Some(4.0), cache_read_per_million: None, cache_write_per_million: None }), - ("openai/gpt-3.5-turbo-instruct", ModelFacts { context_window: 4_095, max_output_tokens: Some(3_685), input_per_million: Some(1.5), output_per_million: Some(2.0), cache_read_per_million: None, cache_write_per_million: None }), + ("openai/gpt-3.5-turbo-instruct", ModelFacts { context_window: 4_095, max_output_tokens: None, input_per_million: Some(1.5), output_per_million: Some(2.0), cache_read_per_million: None, cache_write_per_million: None }), ("openai/gpt-4", ModelFacts { context_window: 8_191, max_output_tokens: Some(4_096), input_per_million: Some(30.0), output_per_million: Some(60.0), cache_read_per_million: None, cache_write_per_million: None }), ("openai/gpt-4-turbo", ModelFacts { context_window: 128_000, max_output_tokens: Some(4_096), input_per_million: Some(10.0), output_per_million: Some(30.0), cache_read_per_million: None, cache_write_per_million: None }), ("openai/gpt-4.1", ModelFacts { context_window: 1_047_576, max_output_tokens: Some(32_768), input_per_million: Some(2.0), output_per_million: Some(8.0), cache_read_per_million: Some(0.5), cache_write_per_million: None }), @@ -341,7 +339,7 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("openrouter/fusion", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(128_000), input_per_million: None, output_per_million: None, cache_read_per_million: None, cache_write_per_million: None }), ("openrouter/pareto-code", ModelFacts { context_window: 2_000_000, max_output_tokens: Some(200_000), input_per_million: None, output_per_million: None, cache_read_per_million: None, cache_write_per_million: None }), ("perceptron/perceptron-mk1", ModelFacts { context_window: 32_768, max_output_tokens: Some(8_192), input_per_million: Some(0.15), output_per_million: Some(1.5), cache_read_per_million: None, cache_write_per_million: None }), - ("perplexity/sonar", ModelFacts { context_window: 127_072, max_output_tokens: Some(114_364), input_per_million: Some(1.0), output_per_million: Some(1.0), cache_read_per_million: None, cache_write_per_million: None }), + ("perplexity/sonar", ModelFacts { context_window: 127_072, max_output_tokens: Some(4_096), input_per_million: Some(1.0), output_per_million: Some(1.0), cache_read_per_million: None, cache_write_per_million: None }), ("perplexity/sonar-deep-research", ModelFacts { context_window: 128_000, max_output_tokens: Some(32_768), input_per_million: Some(2.0), output_per_million: Some(8.0), cache_read_per_million: None, cache_write_per_million: None }), ("perplexity/sonar-pro", ModelFacts { context_window: 200_000, max_output_tokens: Some(8_000), input_per_million: Some(3.0), output_per_million: Some(15.0), cache_read_per_million: None, cache_write_per_million: None }), ("perplexity/sonar-pro-search", ModelFacts { context_window: 200_000, max_output_tokens: Some(8_000), input_per_million: Some(3.0), output_per_million: Some(15.0), cache_read_per_million: None, cache_write_per_million: None }), @@ -359,22 +357,22 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("qwen/qwen2.5-vl-72b-instruct", ModelFacts { context_window: 128_000, max_output_tokens: None, input_per_million: Some(0.8), output_per_million: Some(1.0), cache_read_per_million: Some(0.4), cache_write_per_million: None }), ("qwen/qwen3-14b", ModelFacts { context_window: 131_072, max_output_tokens: Some(16_384), input_per_million: Some(0.12), output_per_million: Some(0.24), cache_read_per_million: None, cache_write_per_million: None }), ("qwen/qwen3-235b-a22b", ModelFacts { context_window: 131_072, max_output_tokens: Some(8_192), input_per_million: Some(0.455), output_per_million: Some(1.82), cache_read_per_million: None, cache_write_per_million: None }), - ("qwen/qwen3-235b-a22b-2507", ModelFacts { context_window: 262_144, max_output_tokens: Some(235_929), input_per_million: Some(0.0875), output_per_million: Some(0.35), cache_read_per_million: Some(0.0175), cache_write_per_million: None }), - ("qwen/qwen3-235b-a22b-thinking-2507", ModelFacts { context_window: 131_072, max_output_tokens: Some(117_964), input_per_million: Some(0.23), output_per_million: Some(2.3), cache_read_per_million: None, cache_write_per_million: None }), + ("qwen/qwen3-235b-a22b-2507", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.0875), output_per_million: Some(0.35), cache_read_per_million: Some(0.0175), cache_write_per_million: None }), + ("qwen/qwen3-235b-a22b-thinking-2507", ModelFacts { context_window: 131_072, max_output_tokens: None, input_per_million: Some(0.23), output_per_million: Some(2.3), cache_read_per_million: None, cache_write_per_million: None }), ("qwen/qwen3-30b-a3b", ModelFacts { context_window: 131_072, max_output_tokens: Some(16_384), input_per_million: Some(0.12), output_per_million: Some(0.5), cache_read_per_million: None, cache_write_per_million: None }), - ("qwen/qwen3-30b-a3b-instruct-2507", ModelFacts { context_window: 262_144, max_output_tokens: Some(235_929), input_per_million: Some(0.1), output_per_million: Some(0.3), cache_read_per_million: None, cache_write_per_million: None }), + ("qwen/qwen3-30b-a3b-instruct-2507", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.1), output_per_million: Some(0.3), cache_read_per_million: None, cache_write_per_million: None }), ("qwen/qwen3-30b-a3b-thinking-2507", ModelFacts { context_window: 81_920, max_output_tokens: Some(32_768), input_per_million: Some(0.2), output_per_million: Some(2.4), cache_read_per_million: None, cache_write_per_million: None }), ("qwen/qwen3-32b", ModelFacts { context_window: 131_072, max_output_tokens: Some(16_384), input_per_million: Some(0.08), output_per_million: Some(0.28), cache_read_per_million: None, cache_write_per_million: None }), ("qwen/qwen3-8b", ModelFacts { context_window: 131_072, max_output_tokens: Some(8_192), input_per_million: Some(0.117), output_per_million: Some(0.455), cache_read_per_million: None, cache_write_per_million: None }), ("qwen/qwen3-coder", ModelFacts { context_window: 262_144, max_output_tokens: Some(65_536), input_per_million: Some(0.3), output_per_million: Some(1.0), cache_read_per_million: Some(0.1), cache_write_per_million: None }), - ("qwen/qwen3-coder-30b-a3b-instruct", ModelFacts { context_window: 262_144, max_output_tokens: Some(235_929), input_per_million: Some(0.07), output_per_million: Some(0.28), cache_read_per_million: None, cache_write_per_million: None }), + ("qwen/qwen3-coder-30b-a3b-instruct", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.07), output_per_million: Some(0.28), cache_read_per_million: None, cache_write_per_million: None }), ("qwen/qwen3-coder-flash", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(65_536), input_per_million: Some(0.195), output_per_million: Some(0.975), cache_read_per_million: Some(0.039), cache_write_per_million: Some(0.24375) }), - ("qwen/qwen3-coder-next", ModelFacts { context_window: 262_144, max_output_tokens: Some(235_929), input_per_million: Some(0.12), output_per_million: Some(0.8), cache_read_per_million: Some(0.07), cache_write_per_million: None }), + ("qwen/qwen3-coder-next", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.12), output_per_million: Some(0.8), cache_read_per_million: Some(0.07), cache_write_per_million: None }), ("qwen/qwen3-coder-plus", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(65_536), input_per_million: Some(0.65), output_per_million: Some(3.25), cache_read_per_million: Some(0.13), cache_write_per_million: Some(0.8125) }), ("qwen/qwen3-max", ModelFacts { context_window: 262_144, max_output_tokens: Some(65_536), input_per_million: Some(0.78), output_per_million: Some(3.9), cache_read_per_million: Some(0.156), cache_write_per_million: Some(0.975) }), ("qwen/qwen3-max-thinking", ModelFacts { context_window: 262_144, max_output_tokens: Some(65_536), input_per_million: Some(0.78), output_per_million: Some(3.9), cache_read_per_million: None, cache_write_per_million: None }), - ("qwen/qwen3-next-80b-a3b-instruct", ModelFacts { context_window: 262_144, max_output_tokens: Some(235_929), input_per_million: Some(0.1), output_per_million: Some(1.1), cache_read_per_million: Some(0.07), cache_write_per_million: None }), - ("qwen/qwen3-next-80b-a3b-thinking", ModelFacts { context_window: 262_144, max_output_tokens: Some(235_929), input_per_million: Some(0.15), output_per_million: Some(1.2), cache_read_per_million: None, cache_write_per_million: None }), + ("qwen/qwen3-next-80b-a3b-instruct", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.1), output_per_million: Some(1.1), cache_read_per_million: Some(0.07), cache_write_per_million: None }), + ("qwen/qwen3-next-80b-a3b-thinking", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.15), output_per_million: Some(1.2), cache_read_per_million: None, cache_write_per_million: None }), ("qwen/qwen3-vl-235b-a22b-instruct", ModelFacts { context_window: 262_144, max_output_tokens: Some(32_768), input_per_million: Some(0.21), output_per_million: Some(1.9), cache_read_per_million: Some(0.1), cache_write_per_million: None }), ("qwen/qwen3-vl-235b-a22b-thinking", ModelFacts { context_window: 131_072, max_output_tokens: Some(32_768), input_per_million: Some(0.4), output_per_million: Some(4.0), cache_read_per_million: None, cache_write_per_million: None }), ("qwen/qwen3-vl-30b-a3b-instruct", ModelFacts { context_window: 262_144, max_output_tokens: Some(16_384), input_per_million: Some(0.15), output_per_million: Some(0.6), cache_read_per_million: None, cache_write_per_million: None }), @@ -385,13 +383,13 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("qwen/qwen3.5-122b-a10b", ModelFacts { context_window: 262_144, max_output_tokens: Some(65_536), input_per_million: Some(0.26), output_per_million: Some(2.08), cache_read_per_million: None, cache_write_per_million: None }), ("qwen/qwen3.5-27b", ModelFacts { context_window: 262_144, max_output_tokens: Some(65_536), input_per_million: Some(0.195), output_per_million: Some(1.56), cache_read_per_million: None, cache_write_per_million: None }), ("qwen/qwen3.5-35b-a3b", ModelFacts { context_window: 262_144, max_output_tokens: Some(16_384), input_per_million: Some(0.3125), output_per_million: Some(1.25), cache_read_per_million: Some(0.15625), cache_write_per_million: None }), - ("qwen/qwen3.5-397b-a17b", ModelFacts { context_window: 262_144, max_output_tokens: Some(235_929), input_per_million: Some(0.55), output_per_million: Some(3.5), cache_read_per_million: Some(0.225), cache_write_per_million: None }), + ("qwen/qwen3.5-397b-a17b", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.55), output_per_million: Some(3.5), cache_read_per_million: Some(0.225), cache_write_per_million: None }), ("qwen/qwen3.5-9b", ModelFacts { context_window: 262_144, max_output_tokens: Some(32_768), input_per_million: Some(0.1), output_per_million: Some(0.15), cache_read_per_million: None, cache_write_per_million: None }), ("qwen/qwen3.5-flash-02-23", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(65_536), input_per_million: Some(0.065), output_per_million: Some(0.26), cache_read_per_million: None, cache_write_per_million: None }), ("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: None, input_per_million: Some(0.32), output_per_million: Some(2.7), cache_read_per_million: Some(0.15), cache_write_per_million: None }), - ("qwen/qwen3.6-35b-a3b", ModelFacts { context_window: 262_144, max_output_tokens: Some(235_929), 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-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-max-preview", ModelFacts { context_window: 262_144, max_output_tokens: Some(65_536), input_per_million: Some(1.027), output_per_million: Some(6.162), cache_read_per_million: None, cache_write_per_million: Some(1.28375) }), ("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) }), @@ -400,12 +398,12 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("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: Some(131_072), input_per_million: Some(0.42), output_per_million: Some(3.0), cache_read_per_million: Some(0.085), cache_write_per_million: None }), - ("qwen/qwen3.8-27b:free", ModelFacts { context_window: 262_144, max_output_tokens: Some(235_929), input_per_million: Some(0.0), output_per_million: Some(0.0), cache_read_per_million: None, cache_write_per_million: None }), + ("qwen/qwen3.8-27b:free", ModelFacts { context_window: 262_144, 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 }), ("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: Some(0.2) }), ("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: Some(2.5) }), ("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 }), ("qwen/qwen3.8-omni-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 }), - ("rekaai/reka-edge", ModelFacts { context_window: 16_384, max_output_tokens: Some(14_745), input_per_million: Some(0.1), output_per_million: Some(0.1), cache_read_per_million: None, cache_write_per_million: None }), + ("rekaai/reka-edge", ModelFacts { context_window: 16_384, max_output_tokens: None, input_per_million: Some(0.1), output_per_million: Some(0.1), cache_read_per_million: None, cache_write_per_million: None }), ("rekaai/reka-flash-3", ModelFacts { context_window: 65_536, max_output_tokens: None, input_per_million: Some(0.1), output_per_million: Some(0.2), cache_read_per_million: None, cache_write_per_million: None }), ("relace/relace-apply-3", ModelFacts { context_window: 256_000, max_output_tokens: Some(128_000), input_per_million: Some(0.85), output_per_million: Some(1.25), cache_read_per_million: None, cache_write_per_million: None }), ("relace/relace-search", ModelFacts { context_window: 256_000, max_output_tokens: Some(128_000), input_per_million: Some(1.0), output_per_million: Some(3.0), cache_read_per_million: None, cache_write_per_million: None }), @@ -413,30 +411,30 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("sakana/fugu-ultra", ModelFacts { context_window: 1_000_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 }), ("sakana/fugu-ultra-v2", ModelFacts { context_window: 1_000_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 }), ("sakana/sakana-namazu", ModelFacts { context_window: 262_144, max_output_tokens: Some(65_536), input_per_million: Some(0.95), output_per_million: Some(4.0), cache_read_per_million: Some(0.15), cache_write_per_million: None }), - ("sao10k/l3-lunaris-8b", ModelFacts { context_window: 8_192, max_output_tokens: Some(7_372), input_per_million: Some(0.04), output_per_million: Some(0.05), cache_read_per_million: None, cache_write_per_million: None }), + ("sao10k/l3-lunaris-8b", ModelFacts { context_window: 8_192, max_output_tokens: None, input_per_million: Some(0.04), output_per_million: Some(0.05), cache_read_per_million: None, cache_write_per_million: None }), ("sao10k/l3.1-euryale-70b", ModelFacts { context_window: 131_072, max_output_tokens: Some(16_384), input_per_million: Some(0.85), output_per_million: Some(0.85), cache_read_per_million: None, cache_write_per_million: None }), ("sao10k/l3.3-euryale-70b", ModelFacts { context_window: 131_072, max_output_tokens: Some(16_384), input_per_million: Some(0.65), output_per_million: Some(0.75), cache_read_per_million: None, cache_write_per_million: None }), ("stealth/space-bunny-alpha", ModelFacts { context_window: 1_000_000, max_output_tokens: Some(524_288), input_per_million: Some(0.0), 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: Some(230_400), input_per_million: Some(0.2), output_per_million: Some(1.15), cache_read_per_million: Some(0.04), cache_write_per_million: None }), - ("tencent/hunyuan-a13b-instruct", ModelFacts { context_window: 131_072, max_output_tokens: Some(117_964), input_per_million: Some(0.14), output_per_million: Some(0.57), 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 }), + ("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 }), ("tencent/hy-mt2-7b", 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 }), - ("tencent/hy3", ModelFacts { context_window: 262_144, max_output_tokens: Some(128_000), input_per_million: Some(0.132), output_per_million: Some(0.528), cache_read_per_million: Some(0.033), cache_write_per_million: None }), - ("tencent/hy3-preview", ModelFacts { context_window: 262_144, max_output_tokens: Some(235_929), input_per_million: Some(0.18), output_per_million: Some(0.6), cache_read_per_million: Some(0.06), cache_write_per_million: None }), + ("tencent/hy3", ModelFacts { context_window: 262_144, max_output_tokens: Some(128_000), input_per_million: Some(0.0825), output_per_million: Some(0.33), cache_read_per_million: Some(0.020625), cache_write_per_million: None }), + ("tencent/hy3-preview", ModelFacts { context_window: 262_144, max_output_tokens: None, input_per_million: Some(0.18), output_per_million: Some(0.6), cache_read_per_million: Some(0.06), cache_write_per_million: None }), ("tencent/hy4-preview", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(64_000), input_per_million: Some(0.834), output_per_million: Some(2.501), cache_read_per_million: Some(0.042), cache_write_per_million: None }), - ("thedrummer/cydonia-24b-v4.1", ModelFacts { context_window: 131_072, max_output_tokens: Some(117_964), input_per_million: Some(0.3), output_per_million: Some(0.5), cache_read_per_million: Some(0.15), cache_write_per_million: None }), + ("thedrummer/cydonia-24b-v4.1", ModelFacts { context_window: 131_072, max_output_tokens: None, input_per_million: Some(0.3), output_per_million: Some(0.5), cache_read_per_million: Some(0.15), cache_write_per_million: None }), ("thedrummer/skyfall-36b-v2", ModelFacts { context_window: 32_768, max_output_tokens: None, input_per_million: Some(0.55), output_per_million: Some(0.8), cache_read_per_million: Some(0.25), cache_write_per_million: None }), ("thedrummer/unslopnemo-12b", ModelFacts { context_window: 1_024_000, max_output_tokens: Some(819_200), input_per_million: Some(0.4), output_per_million: Some(0.4), cache_read_per_million: None, cache_write_per_million: None }), - ("thinkingmachines/inkling", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(471_859), input_per_million: Some(1.0), output_per_million: Some(4.05), cache_read_per_million: Some(0.17), cache_write_per_million: None }), + ("thinkingmachines/inkling", ModelFacts { context_window: 1_048_576, max_output_tokens: None, input_per_million: Some(1.0), output_per_million: Some(4.05), cache_read_per_million: Some(0.17), cache_write_per_million: None }), ("thinkingmachines/inkling-small", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(262_144), input_per_million: Some(0.45), output_per_million: Some(1.2), cache_read_per_million: Some(0.1), cache_write_per_million: None }), ("thinkingmachines/inkling-small:free", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(262_144), input_per_million: Some(0.0), output_per_million: Some(0.0), cache_read_per_million: None, cache_write_per_million: None }), ("thinkingmachines/inkling:free", ModelFacts { context_window: 1_048_576, max_output_tokens: Some(262_144), input_per_million: Some(0.0), output_per_million: Some(0.0), cache_read_per_million: None, cache_write_per_million: None }), ("unbiased/pareto", 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 }), - ("undi95/remm-slerp-l2-13b", ModelFacts { context_window: 6_144, max_output_tokens: Some(5_529), input_per_million: Some(0.35), output_per_million: Some(0.65), cache_read_per_million: None, cache_write_per_million: None }), + ("undi95/remm-slerp-l2-13b", ModelFacts { context_window: 6_144, max_output_tokens: None, input_per_million: Some(0.35), output_per_million: Some(0.65), cache_read_per_million: None, cache_write_per_million: None }), ("upstage/solar-mini4", ModelFacts { context_window: 524_288, max_output_tokens: Some(131_072), input_per_million: Some(0.05), output_per_million: Some(0.2), cache_read_per_million: Some(0.005), cache_write_per_million: None }), - ("upstage/solar-pro-3", ModelFacts { context_window: 131_072, max_output_tokens: Some(117_964), input_per_million: Some(0.15), output_per_million: Some(0.6), cache_read_per_million: Some(0.015), cache_write_per_million: None }), + ("upstage/solar-pro-3", ModelFacts { context_window: 131_072, max_output_tokens: None, input_per_million: Some(0.15), output_per_million: Some(0.6), cache_read_per_million: Some(0.015), cache_write_per_million: None }), ("upstage/solar-pro4", ModelFacts { context_window: 524_288, max_output_tokens: Some(131_072), input_per_million: Some(0.09), output_per_million: Some(0.36), cache_read_per_million: Some(0.018), cache_write_per_million: None }), ("writer/palmyra-x5", ModelFacts { context_window: 1_040_000, max_output_tokens: Some(8_192), input_per_million: Some(0.6), output_per_million: Some(6.0), cache_read_per_million: None, cache_write_per_million: None }), ("x-ai/grok-4.20", ModelFacts { context_window: 2_000_000, max_output_tokens: None, input_per_million: Some(1.25), output_per_million: Some(2.5), cache_read_per_million: Some(0.2), cache_write_per_million: None }), @@ -457,13 +455,13 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("z-ai/glm-4.6", ModelFacts { context_window: 204_800, max_output_tokens: Some(16_384), input_per_million: Some(0.43), output_per_million: Some(1.75), cache_read_per_million: Some(0.08), cache_write_per_million: None }), ("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(117_964), 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-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-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(0.9646), output_per_million: Some(3.0316), cache_read_per_million: Some(0.17914), 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.6496), output_per_million: Some(2.0416), cache_read_per_million: Some(0.12064), cache_write_per_million: None }), - ("z-ai/glm-5.2:free", ModelFacts { context_window: 32_768, 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 }), - ("z-ai/glm-5.3", ModelFacts { context_window: 1_310_720, max_output_tokens: Some(943_717), input_per_million: Some(1.4), output_per_million: Some(4.4), cache_read_per_million: Some(0.26), cache_write_per_million: None }), + ("z-ai/glm-5.2:free", ModelFacts { context_window: 131_072, 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 }), + ("z-ai/glm-5.3", ModelFacts { context_window: 1_310_720, max_output_tokens: Some(131_072), input_per_million: Some(1.4), output_per_million: Some(4.4), cache_read_per_million: Some(0.26), cache_write_per_million: None }), ("z-ai/glm-5.3-flash", ModelFacts { context_window: 1_310_720, max_output_tokens: Some(128_000), input_per_million: Some(0.045), output_per_million: Some(0.14), cache_read_per_million: Some(0.01), 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 }), @@ -472,12 +470,12 @@ pub static MODEL_FACTS: &[(&str, ModelFacts)] = &[ ("~anthropic/claude-haiku-latest", ModelFacts { context_window: 200_000, max_output_tokens: Some(64_000), input_per_million: Some(1.0), output_per_million: Some(5.0), cache_read_per_million: Some(0.1), cache_write_per_million: Some(1.25) }), ("~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.2), 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.04), output_per_million: Some(0.49), cache_read_per_million: Some(0.01), cache_write_per_million: None }), - ("~deepseek/deepseek-pro-latest", ModelFacts { context_window: 1_048_576, max_output_tokens: None, input_per_million: Some(0.09984), output_per_million: Some(2.88), cache_read_per_million: Some(0.08832), cache_write_per_million: None }), - ("~deepseek/deepseek-v4-flash-latest", ModelFacts { context_window: 1_310_720, max_output_tokens: Some(943_718), input_per_million: Some(0.03), output_per_million: Some(0.32), cache_read_per_million: Some(0.016), cache_write_per_million: None }), + ("~deepseek/deepseek-flash-latest", ModelFacts { context_window: 1_048_576, max_output_tokens: None, input_per_million: Some(0.075), output_per_million: Some(0.3), cache_read_per_million: Some(0.0015), cache_write_per_million: None }), + ("~deepseek/deepseek-pro-latest", ModelFacts { context_window: 1_048_576, max_output_tokens: None, input_per_million: Some(0.2528), output_per_million: Some(1.9584), cache_read_per_million: Some(0.08832), cache_write_per_million: None }), + ("~deepseek/deepseek-v4-flash-latest", ModelFacts { context_window: 1_310_720, max_output_tokens: None, input_per_million: Some(0.03), output_per_million: Some(0.32), cache_read_per_million: Some(0.016), 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.8845), output_per_million: Some(10.5346), cache_read_per_million: Some(0.33), cache_write_per_million: None }), + ("~moonshotai/kimi-latest", ModelFacts { context_window: 1_048_576, max_output_tokens: None, input_per_million: Some(1.2), output_per_million: Some(10.5346), cache_read_per_million: Some(0.3), 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 }), @@ -722,8 +720,6 @@ pub static BARE_ALIASES: &[(&str, &str)] = &[ ("nemotron-3.5-content-safety:free", "nvidia/nemotron-3.5-content-safety:free"), ("nemotron-3.5-lightning", "nvidia/nemotron-3.5-lightning"), ("nemotron-3.5-lightning:free", "nvidia/nemotron-3.5-lightning:free"), - ("nex-n2.5-mini:free", "nex-agi/nex-n2.5-mini:free"), - ("nex-n2.5-pro:free", "nex-agi/nex-n2.5-pro:free"), ("north-mini-code:free", "cohere/north-mini-code:free"), ("nova-2-lite-v1", "amazon/nova-2-lite-v1"), ("nova-lite-v1", "amazon/nova-lite-v1"), @@ -833,7 +829,7 @@ pub static BARE_ALIASES: &[(&str, &str)] = &[ /// The ids tried, in order, when resolving `model_id`. /// /// 1. The id as given, trimmed. -/// 2. Its bare name after the last slash, so a provider-qualified route +/// 2. Each suffix after a slash, longest first, so a provider-qualified route /// (`openai/gpt-4o`, `vertex-ai/gemini-3.7-flash`) finds the direct row /// when the qualified row is absent. /// 3. For Claude ids only, the dotted release suffix rewritten with dashes, so @@ -858,9 +854,13 @@ pub fn model_facts_candidates(model_id: &str) -> Vec { return Vec::new(); } let mut candidates = vec![trimmed.to_owned()]; - let bare = trimmed.rsplit('/').next().unwrap_or(trimmed); - if !bare.is_empty() && bare != trimmed { - candidates.push(bare.to_owned()); + for (index, byte) in trimmed.bytes().enumerate() { + if byte == b'/' { + let suffix = &trimmed[index + 1..]; + if !suffix.is_empty() { + candidates.push(suffix.to_owned()); + } + } } for candidate in candidates.clone() { let name = candidate.rsplit('/').next().unwrap_or(candidate.as_str()); diff --git a/packages/local-host-rs/src/model_facts_resolution.generated.json b/packages/local-host-rs/src/model_facts_resolution.generated.json index ffe105b91..f25d1edd9 100644 --- a/packages/local-host-rs/src/model_facts_resolution.generated.json +++ b/packages/local-host-rs/src/model_facts_resolution.generated.json @@ -19,106 +19,107 @@ {"probe":"some-gateway/claude-sonnet-4.5","candidates":["some-gateway/claude-sonnet-4.5","claude-sonnet-4.5","some-gateway/claude-sonnet-4-5","claude-sonnet-4-5","anthropic/claude-sonnet-4.5"],"resolved":"claude-sonnet-4-5"}, {"probe":"vertex-ai/gemini-3.7-flash","candidates":["vertex-ai/gemini-3.7-flash","gemini-3.7-flash"],"resolved":"gemini-3.7-flash"}, {"probe":"anthropic/claude-sonnet-4.5:thinking","candidates":["anthropic/claude-sonnet-4.5:thinking","claude-sonnet-4.5:thinking","anthropic/claude-sonnet-4-5:thinking","claude-sonnet-4-5:thinking"],"resolved":null}, - {"probe":"aion-labs/aion-2.0","candidates":["aion-labs/aion-2.0","aion-2.0"],"resolved":"aion-labs/aion-2.0"}, - {"probe":"aion-2.0","candidates":["aion-2.0","aion-labs/aion-2.0"],"resolved":"aion-labs/aion-2.0"}, - {"probe":"x-provider/aion-labs/aion-2.0","candidates":["x-provider/aion-labs/aion-2.0","aion-2.0","aion-labs/aion-2.0"],"resolved":"aion-labs/aion-2.0"}, - {"probe":"aion-labs/aion-2.0:free","candidates":["aion-labs/aion-2.0:free","aion-2.0:free"],"resolved":null}, - {"probe":"aion-labs/aion-2-0","candidates":["aion-labs/aion-2-0","aion-2-0"],"resolved":null}, - {"probe":"aion.labs/aion.2.0","candidates":["aion.labs/aion.2.0","aion.2.0"],"resolved":null}, - {"probe":"amazon/nova-pro-v1","candidates":["amazon/nova-pro-v1","nova-pro-v1"],"resolved":"amazon/nova-pro-v1"}, - {"probe":"nova-pro-v1","candidates":["nova-pro-v1","amazon/nova-pro-v1"],"resolved":"amazon/nova-pro-v1"}, - {"probe":"x-provider/amazon/nova-pro-v1","candidates":["x-provider/amazon/nova-pro-v1","nova-pro-v1","amazon/nova-pro-v1"],"resolved":"amazon/nova-pro-v1"}, - {"probe":"amazon/nova-pro-v1:free","candidates":["amazon/nova-pro-v1:free","nova-pro-v1:free"],"resolved":null}, - {"probe":"amazon/nova.pro.v1","candidates":["amazon/nova.pro.v1","nova.pro.v1"],"resolved":null}, + {"probe":"aion-labs/aion-3.5-mini","candidates":["aion-labs/aion-3.5-mini","aion-3.5-mini"],"resolved":"aion-labs/aion-3.5-mini"}, + {"probe":"aion-3.5-mini","candidates":["aion-3.5-mini","aion-labs/aion-3.5-mini"],"resolved":"aion-labs/aion-3.5-mini"}, + {"probe":"x-provider/aion-labs/aion-3.5-mini","candidates":["x-provider/aion-labs/aion-3.5-mini","aion-labs/aion-3.5-mini","aion-3.5-mini"],"resolved":"aion-labs/aion-3.5-mini"}, + {"probe":"aion-labs/aion-3.5-mini:free","candidates":["aion-labs/aion-3.5-mini:free","aion-3.5-mini:free"],"resolved":null}, + {"probe":"aion-labs/aion-3-5-mini","candidates":["aion-labs/aion-3-5-mini","aion-3-5-mini"],"resolved":null}, + {"probe":"aion.labs/aion.3.5.mini","candidates":["aion.labs/aion.3.5.mini","aion.3.5.mini"],"resolved":null}, {"probe":"anthropic/claude-3-haiku","candidates":["anthropic/claude-3-haiku","claude-3-haiku"],"resolved":"anthropic/claude-3-haiku"}, {"probe":"claude-3-haiku","candidates":["claude-3-haiku","anthropic/claude-3-haiku"],"resolved":"anthropic/claude-3-haiku"}, - {"probe":"x-provider/anthropic/claude-3-haiku","candidates":["x-provider/anthropic/claude-3-haiku","claude-3-haiku","anthropic/claude-3-haiku"],"resolved":"anthropic/claude-3-haiku"}, + {"probe":"x-provider/anthropic/claude-3-haiku","candidates":["x-provider/anthropic/claude-3-haiku","anthropic/claude-3-haiku","claude-3-haiku"],"resolved":"anthropic/claude-3-haiku"}, {"probe":"anthropic/claude-3-haiku:free","candidates":["anthropic/claude-3-haiku:free","claude-3-haiku:free"],"resolved":null}, {"probe":"anthropic/claude.3.haiku","candidates":["anthropic/claude.3.haiku","claude.3.haiku"],"resolved":null}, {"probe":"anthropic/claude-fable-5","candidates":["anthropic/claude-fable-5","claude-fable-5"],"resolved":"anthropic/claude-fable-5"}, {"probe":"claude-fable-5","candidates":["claude-fable-5"],"resolved":"claude-fable-5"}, - {"probe":"x-provider/anthropic/claude-fable-5","candidates":["x-provider/anthropic/claude-fable-5","claude-fable-5"],"resolved":"claude-fable-5"}, + {"probe":"x-provider/anthropic/claude-fable-5","candidates":["x-provider/anthropic/claude-fable-5","anthropic/claude-fable-5","claude-fable-5"],"resolved":"anthropic/claude-fable-5"}, {"probe":"anthropic/claude-fable-5:free","candidates":["anthropic/claude-fable-5:free","claude-fable-5:free"],"resolved":null}, {"probe":"anthropic/claude.fable.5","candidates":["anthropic/claude.fable.5","claude.fable.5"],"resolved":null}, {"probe":"anthropic/claude-fable-5.1","candidates":["anthropic/claude-fable-5.1","claude-fable-5.1","anthropic/claude-fable-5-1","claude-fable-5-1"],"resolved":"anthropic/claude-fable-5.1"}, {"probe":"claude-fable-5.1","candidates":["claude-fable-5.1","claude-fable-5-1","anthropic/claude-fable-5.1"],"resolved":"claude-fable-5-1"}, - {"probe":"x-provider/anthropic/claude-fable-5.1","candidates":["x-provider/anthropic/claude-fable-5.1","claude-fable-5.1","x-provider/anthropic/claude-fable-5-1","claude-fable-5-1","anthropic/claude-fable-5.1"],"resolved":"claude-fable-5-1"}, + {"probe":"x-provider/anthropic/claude-fable-5.1","candidates":["x-provider/anthropic/claude-fable-5.1","anthropic/claude-fable-5.1","claude-fable-5.1","x-provider/anthropic/claude-fable-5-1","anthropic/claude-fable-5-1","claude-fable-5-1"],"resolved":"anthropic/claude-fable-5.1"}, {"probe":"anthropic/claude-fable-5.1:free","candidates":["anthropic/claude-fable-5.1:free","claude-fable-5.1:free","anthropic/claude-fable-5-1:free","claude-fable-5-1:free"],"resolved":null}, {"probe":"anthropic/claude-fable-5-1","candidates":["anthropic/claude-fable-5-1","claude-fable-5-1"],"resolved":"claude-fable-5-1"}, {"probe":"anthropic/claude.fable.5.1","candidates":["anthropic/claude.fable.5.1","claude.fable.5.1"],"resolved":null}, {"probe":"anthropic/claude-haiku-4.5","candidates":["anthropic/claude-haiku-4.5","claude-haiku-4.5","anthropic/claude-haiku-4-5","claude-haiku-4-5"],"resolved":"anthropic/claude-haiku-4.5"}, {"probe":"claude-haiku-4.5","candidates":["claude-haiku-4.5","claude-haiku-4-5","anthropic/claude-haiku-4.5"],"resolved":"claude-haiku-4-5"}, - {"probe":"x-provider/anthropic/claude-haiku-4.5","candidates":["x-provider/anthropic/claude-haiku-4.5","claude-haiku-4.5","x-provider/anthropic/claude-haiku-4-5","claude-haiku-4-5","anthropic/claude-haiku-4.5"],"resolved":"claude-haiku-4-5"}, + {"probe":"x-provider/anthropic/claude-haiku-4.5","candidates":["x-provider/anthropic/claude-haiku-4.5","anthropic/claude-haiku-4.5","claude-haiku-4.5","x-provider/anthropic/claude-haiku-4-5","anthropic/claude-haiku-4-5","claude-haiku-4-5"],"resolved":"anthropic/claude-haiku-4.5"}, {"probe":"anthropic/claude-haiku-4.5:free","candidates":["anthropic/claude-haiku-4.5:free","claude-haiku-4.5:free","anthropic/claude-haiku-4-5:free","claude-haiku-4-5:free"],"resolved":null}, {"probe":"anthropic/claude-haiku-4-5","candidates":["anthropic/claude-haiku-4-5","claude-haiku-4-5"],"resolved":"claude-haiku-4-5"}, {"probe":"anthropic/claude.haiku.4.5","candidates":["anthropic/claude.haiku.4.5","claude.haiku.4.5"],"resolved":null}, {"probe":"anthropic/claude-opus-4.1","candidates":["anthropic/claude-opus-4.1","claude-opus-4.1","anthropic/claude-opus-4-1","claude-opus-4-1"],"resolved":"anthropic/claude-opus-4.1"}, {"probe":"claude-opus-4.1","candidates":["claude-opus-4.1","claude-opus-4-1","anthropic/claude-opus-4.1"],"resolved":"anthropic/claude-opus-4.1"}, - {"probe":"x-provider/anthropic/claude-opus-4.1","candidates":["x-provider/anthropic/claude-opus-4.1","claude-opus-4.1","x-provider/anthropic/claude-opus-4-1","claude-opus-4-1","anthropic/claude-opus-4.1"],"resolved":"anthropic/claude-opus-4.1"}, + {"probe":"x-provider/anthropic/claude-opus-4.1","candidates":["x-provider/anthropic/claude-opus-4.1","anthropic/claude-opus-4.1","claude-opus-4.1","x-provider/anthropic/claude-opus-4-1","anthropic/claude-opus-4-1","claude-opus-4-1"],"resolved":"anthropic/claude-opus-4.1"}, {"probe":"anthropic/claude-opus-4.1:free","candidates":["anthropic/claude-opus-4.1:free","claude-opus-4.1:free","anthropic/claude-opus-4-1:free","claude-opus-4-1:free"],"resolved":null}, {"probe":"anthropic/claude-opus-4-1","candidates":["anthropic/claude-opus-4-1","claude-opus-4-1"],"resolved":null}, {"probe":"anthropic/claude.opus.4.1","candidates":["anthropic/claude.opus.4.1","claude.opus.4.1"],"resolved":null}, {"probe":"anthropic/claude-opus-4.5","candidates":["anthropic/claude-opus-4.5","claude-opus-4.5","anthropic/claude-opus-4-5","claude-opus-4-5"],"resolved":"anthropic/claude-opus-4.5"}, {"probe":"claude-opus-4.5","candidates":["claude-opus-4.5","claude-opus-4-5","anthropic/claude-opus-4.5"],"resolved":"claude-opus-4-5"}, - {"probe":"x-provider/anthropic/claude-opus-4.5","candidates":["x-provider/anthropic/claude-opus-4.5","claude-opus-4.5","x-provider/anthropic/claude-opus-4-5","claude-opus-4-5","anthropic/claude-opus-4.5"],"resolved":"claude-opus-4-5"}, + {"probe":"x-provider/anthropic/claude-opus-4.5","candidates":["x-provider/anthropic/claude-opus-4.5","anthropic/claude-opus-4.5","claude-opus-4.5","x-provider/anthropic/claude-opus-4-5","anthropic/claude-opus-4-5","claude-opus-4-5"],"resolved":"anthropic/claude-opus-4.5"}, {"probe":"anthropic/claude-opus-4.5:free","candidates":["anthropic/claude-opus-4.5:free","claude-opus-4.5:free","anthropic/claude-opus-4-5:free","claude-opus-4-5:free"],"resolved":null}, {"probe":"anthropic/claude-opus-4-5","candidates":["anthropic/claude-opus-4-5","claude-opus-4-5"],"resolved":"claude-opus-4-5"}, {"probe":"anthropic/claude.opus.4.5","candidates":["anthropic/claude.opus.4.5","claude.opus.4.5"],"resolved":null}, {"probe":"anthropic/claude-opus-4.6","candidates":["anthropic/claude-opus-4.6","claude-opus-4.6","anthropic/claude-opus-4-6","claude-opus-4-6"],"resolved":"anthropic/claude-opus-4.6"}, {"probe":"claude-opus-4.6","candidates":["claude-opus-4.6","claude-opus-4-6","anthropic/claude-opus-4.6"],"resolved":"claude-opus-4-6"}, - {"probe":"x-provider/anthropic/claude-opus-4.6","candidates":["x-provider/anthropic/claude-opus-4.6","claude-opus-4.6","x-provider/anthropic/claude-opus-4-6","claude-opus-4-6","anthropic/claude-opus-4.6"],"resolved":"claude-opus-4-6"}, + {"probe":"x-provider/anthropic/claude-opus-4.6","candidates":["x-provider/anthropic/claude-opus-4.6","anthropic/claude-opus-4.6","claude-opus-4.6","x-provider/anthropic/claude-opus-4-6","anthropic/claude-opus-4-6","claude-opus-4-6"],"resolved":"anthropic/claude-opus-4.6"}, {"probe":"anthropic/claude-opus-4.6:free","candidates":["anthropic/claude-opus-4.6:free","claude-opus-4.6:free","anthropic/claude-opus-4-6:free","claude-opus-4-6:free"],"resolved":null}, {"probe":"anthropic/claude-opus-4-6","candidates":["anthropic/claude-opus-4-6","claude-opus-4-6"],"resolved":"claude-opus-4-6"}, {"probe":"anthropic/claude.opus.4.6","candidates":["anthropic/claude.opus.4.6","claude.opus.4.6"],"resolved":null}, {"probe":"anthropic/claude-opus-4.7","candidates":["anthropic/claude-opus-4.7","claude-opus-4.7","anthropic/claude-opus-4-7","claude-opus-4-7"],"resolved":"anthropic/claude-opus-4.7"}, {"probe":"claude-opus-4.7","candidates":["claude-opus-4.7","claude-opus-4-7","anthropic/claude-opus-4.7"],"resolved":"claude-opus-4-7"}, - {"probe":"x-provider/anthropic/claude-opus-4.7","candidates":["x-provider/anthropic/claude-opus-4.7","claude-opus-4.7","x-provider/anthropic/claude-opus-4-7","claude-opus-4-7","anthropic/claude-opus-4.7"],"resolved":"claude-opus-4-7"}, + {"probe":"x-provider/anthropic/claude-opus-4.7","candidates":["x-provider/anthropic/claude-opus-4.7","anthropic/claude-opus-4.7","claude-opus-4.7","x-provider/anthropic/claude-opus-4-7","anthropic/claude-opus-4-7","claude-opus-4-7"],"resolved":"anthropic/claude-opus-4.7"}, {"probe":"anthropic/claude-opus-4.7:free","candidates":["anthropic/claude-opus-4.7:free","claude-opus-4.7:free","anthropic/claude-opus-4-7:free","claude-opus-4-7:free"],"resolved":null}, {"probe":"anthropic/claude-opus-4-7","candidates":["anthropic/claude-opus-4-7","claude-opus-4-7"],"resolved":"claude-opus-4-7"}, {"probe":"anthropic/claude.opus.4.7","candidates":["anthropic/claude.opus.4.7","claude.opus.4.7"],"resolved":null}, {"probe":"anthropic/claude-opus-4.8","candidates":["anthropic/claude-opus-4.8","claude-opus-4.8","anthropic/claude-opus-4-8","claude-opus-4-8"],"resolved":"anthropic/claude-opus-4.8"}, {"probe":"claude-opus-4.8","candidates":["claude-opus-4.8","claude-opus-4-8","anthropic/claude-opus-4.8"],"resolved":"claude-opus-4-8"}, - {"probe":"x-provider/anthropic/claude-opus-4.8","candidates":["x-provider/anthropic/claude-opus-4.8","claude-opus-4.8","x-provider/anthropic/claude-opus-4-8","claude-opus-4-8","anthropic/claude-opus-4.8"],"resolved":"claude-opus-4-8"}, + {"probe":"x-provider/anthropic/claude-opus-4.8","candidates":["x-provider/anthropic/claude-opus-4.8","anthropic/claude-opus-4.8","claude-opus-4.8","x-provider/anthropic/claude-opus-4-8","anthropic/claude-opus-4-8","claude-opus-4-8"],"resolved":"anthropic/claude-opus-4.8"}, {"probe":"anthropic/claude-opus-4.8:free","candidates":["anthropic/claude-opus-4.8:free","claude-opus-4.8:free","anthropic/claude-opus-4-8:free","claude-opus-4-8:free"],"resolved":null}, {"probe":"anthropic/claude-opus-4-8","candidates":["anthropic/claude-opus-4-8","claude-opus-4-8"],"resolved":"claude-opus-4-8"}, {"probe":"anthropic/claude.opus.4.8","candidates":["anthropic/claude.opus.4.8","claude.opus.4.8"],"resolved":null}, {"probe":"anthropic/claude-opus-5","candidates":["anthropic/claude-opus-5","claude-opus-5"],"resolved":"anthropic/claude-opus-5"}, {"probe":"claude-opus-5","candidates":["claude-opus-5"],"resolved":"claude-opus-5"}, - {"probe":"x-provider/anthropic/claude-opus-5","candidates":["x-provider/anthropic/claude-opus-5","claude-opus-5"],"resolved":"claude-opus-5"}, + {"probe":"x-provider/anthropic/claude-opus-5","candidates":["x-provider/anthropic/claude-opus-5","anthropic/claude-opus-5","claude-opus-5"],"resolved":"anthropic/claude-opus-5"}, {"probe":"anthropic/claude-opus-5:free","candidates":["anthropic/claude-opus-5:free","claude-opus-5:free"],"resolved":null}, {"probe":"anthropic/claude.opus.5","candidates":["anthropic/claude.opus.5","claude.opus.5"],"resolved":null}, - {"probe":"x-provider/anthropic/claude-opus-5.5","candidates":["x-provider/anthropic/claude-opus-5.5","claude-opus-5.5","x-provider/anthropic/claude-opus-5-5","claude-opus-5-5","anthropic/claude-opus-5.5"],"resolved":"claude-opus-5-5"}, + {"probe":"x-provider/anthropic/claude-opus-5.5","candidates":["x-provider/anthropic/claude-opus-5.5","anthropic/claude-opus-5.5","claude-opus-5.5","x-provider/anthropic/claude-opus-5-5","anthropic/claude-opus-5-5","claude-opus-5-5"],"resolved":"anthropic/claude-opus-5.5"}, {"probe":"anthropic/claude-opus-5.5:free","candidates":["anthropic/claude-opus-5.5:free","claude-opus-5.5:free","anthropic/claude-opus-5-5:free","claude-opus-5-5:free"],"resolved":null}, {"probe":"anthropic/claude-opus-5-5","candidates":["anthropic/claude-opus-5-5","claude-opus-5-5"],"resolved":"claude-opus-5-5"}, {"probe":"anthropic/claude.opus.5.5","candidates":["anthropic/claude.opus.5.5","claude.opus.5.5"],"resolved":null}, {"probe":"anthropic/claude-sonnet-4","candidates":["anthropic/claude-sonnet-4","claude-sonnet-4"],"resolved":"anthropic/claude-sonnet-4"}, {"probe":"claude-sonnet-4","candidates":["claude-sonnet-4","anthropic/claude-sonnet-4"],"resolved":"anthropic/claude-sonnet-4"}, - {"probe":"x-provider/anthropic/claude-sonnet-4","candidates":["x-provider/anthropic/claude-sonnet-4","claude-sonnet-4","anthropic/claude-sonnet-4"],"resolved":"anthropic/claude-sonnet-4"}, + {"probe":"x-provider/anthropic/claude-sonnet-4","candidates":["x-provider/anthropic/claude-sonnet-4","anthropic/claude-sonnet-4","claude-sonnet-4"],"resolved":"anthropic/claude-sonnet-4"}, {"probe":"anthropic/claude-sonnet-4:free","candidates":["anthropic/claude-sonnet-4:free","claude-sonnet-4:free"],"resolved":null}, {"probe":"anthropic/claude.sonnet.4","candidates":["anthropic/claude.sonnet.4","claude.sonnet.4"],"resolved":null}, {"probe":"anthropic/claude-sonnet-4.5","candidates":["anthropic/claude-sonnet-4.5","claude-sonnet-4.5","anthropic/claude-sonnet-4-5","claude-sonnet-4-5"],"resolved":"anthropic/claude-sonnet-4.5"}, {"probe":"claude-sonnet-4.5","candidates":["claude-sonnet-4.5","claude-sonnet-4-5","anthropic/claude-sonnet-4.5"],"resolved":"claude-sonnet-4-5"}, - {"probe":"x-provider/anthropic/claude-sonnet-4.5","candidates":["x-provider/anthropic/claude-sonnet-4.5","claude-sonnet-4.5","x-provider/anthropic/claude-sonnet-4-5","claude-sonnet-4-5","anthropic/claude-sonnet-4.5"],"resolved":"claude-sonnet-4-5"}, + {"probe":"x-provider/anthropic/claude-sonnet-4.5","candidates":["x-provider/anthropic/claude-sonnet-4.5","anthropic/claude-sonnet-4.5","claude-sonnet-4.5","x-provider/anthropic/claude-sonnet-4-5","anthropic/claude-sonnet-4-5","claude-sonnet-4-5"],"resolved":"anthropic/claude-sonnet-4.5"}, {"probe":"anthropic/claude-sonnet-4.5:free","candidates":["anthropic/claude-sonnet-4.5:free","claude-sonnet-4.5:free","anthropic/claude-sonnet-4-5:free","claude-sonnet-4-5:free"],"resolved":null}, {"probe":"anthropic/claude-sonnet-4-5","candidates":["anthropic/claude-sonnet-4-5","claude-sonnet-4-5"],"resolved":"claude-sonnet-4-5"}, {"probe":"anthropic/claude.sonnet.4.5","candidates":["anthropic/claude.sonnet.4.5","claude.sonnet.4.5"],"resolved":null}, {"probe":"anthropic/claude-sonnet-4.6","candidates":["anthropic/claude-sonnet-4.6","claude-sonnet-4.6","anthropic/claude-sonnet-4-6","claude-sonnet-4-6"],"resolved":"anthropic/claude-sonnet-4.6"}, {"probe":"claude-sonnet-4.6","candidates":["claude-sonnet-4.6","claude-sonnet-4-6","anthropic/claude-sonnet-4.6"],"resolved":"claude-sonnet-4-6"}, - {"probe":"x-provider/anthropic/claude-sonnet-4.6","candidates":["x-provider/anthropic/claude-sonnet-4.6","claude-sonnet-4.6","x-provider/anthropic/claude-sonnet-4-6","claude-sonnet-4-6","anthropic/claude-sonnet-4.6"],"resolved":"claude-sonnet-4-6"}, + {"probe":"x-provider/anthropic/claude-sonnet-4.6","candidates":["x-provider/anthropic/claude-sonnet-4.6","anthropic/claude-sonnet-4.6","claude-sonnet-4.6","x-provider/anthropic/claude-sonnet-4-6","anthropic/claude-sonnet-4-6","claude-sonnet-4-6"],"resolved":"anthropic/claude-sonnet-4.6"}, {"probe":"anthropic/claude-sonnet-4.6:free","candidates":["anthropic/claude-sonnet-4.6:free","claude-sonnet-4.6:free","anthropic/claude-sonnet-4-6:free","claude-sonnet-4-6:free"],"resolved":null}, {"probe":"anthropic/claude-sonnet-4-6","candidates":["anthropic/claude-sonnet-4-6","claude-sonnet-4-6"],"resolved":"claude-sonnet-4-6"}, {"probe":"anthropic/claude.sonnet.4.6","candidates":["anthropic/claude.sonnet.4.6","claude.sonnet.4.6"],"resolved":null}, {"probe":"anthropic/claude-sonnet-5","candidates":["anthropic/claude-sonnet-5","claude-sonnet-5"],"resolved":"anthropic/claude-sonnet-5"}, {"probe":"claude-sonnet-5","candidates":["claude-sonnet-5"],"resolved":"claude-sonnet-5"}, - {"probe":"x-provider/anthropic/claude-sonnet-5","candidates":["x-provider/anthropic/claude-sonnet-5","claude-sonnet-5"],"resolved":"claude-sonnet-5"}, + {"probe":"x-provider/anthropic/claude-sonnet-5","candidates":["x-provider/anthropic/claude-sonnet-5","anthropic/claude-sonnet-5","claude-sonnet-5"],"resolved":"anthropic/claude-sonnet-5"}, {"probe":"anthropic/claude-sonnet-5:free","candidates":["anthropic/claude-sonnet-5:free","claude-sonnet-5:free"],"resolved":null}, {"probe":"anthropic/claude.sonnet.5","candidates":["anthropic/claude.sonnet.5","claude.sonnet.5"],"resolved":null}, - {"probe":"bytedance-seed/seed-1.6-flash","candidates":["bytedance-seed/seed-1.6-flash","seed-1.6-flash"],"resolved":"bytedance-seed/seed-1.6-flash"}, - {"probe":"seed-1.6-flash","candidates":["seed-1.6-flash","bytedance-seed/seed-1.6-flash"],"resolved":"bytedance-seed/seed-1.6-flash"}, - {"probe":"x-provider/bytedance-seed/seed-1.6-flash","candidates":["x-provider/bytedance-seed/seed-1.6-flash","seed-1.6-flash","bytedance-seed/seed-1.6-flash"],"resolved":"bytedance-seed/seed-1.6-flash"}, - {"probe":"bytedance-seed/seed-1.6-flash:free","candidates":["bytedance-seed/seed-1.6-flash:free","seed-1.6-flash:free"],"resolved":null}, - {"probe":"bytedance-seed/seed-1-6-flash","candidates":["bytedance-seed/seed-1-6-flash","seed-1-6-flash"],"resolved":null}, - {"probe":"bytedance.seed/seed.1.6.flash","candidates":["bytedance.seed/seed.1.6.flash","seed.1.6.flash"],"resolved":null}, + {"probe":"bytedance-seed/seed-1.6","candidates":["bytedance-seed/seed-1.6","seed-1.6"],"resolved":"bytedance-seed/seed-1.6"}, + {"probe":"seed-1.6","candidates":["seed-1.6","bytedance-seed/seed-1.6"],"resolved":"bytedance-seed/seed-1.6"}, + {"probe":"x-provider/bytedance-seed/seed-1.6","candidates":["x-provider/bytedance-seed/seed-1.6","bytedance-seed/seed-1.6","seed-1.6"],"resolved":"bytedance-seed/seed-1.6"}, + {"probe":"bytedance-seed/seed-1.6:free","candidates":["bytedance-seed/seed-1.6:free","seed-1.6:free"],"resolved":null}, + {"probe":"bytedance-seed/seed-1-6","candidates":["bytedance-seed/seed-1-6","seed-1-6"],"resolved":null}, + {"probe":"bytedance.seed/seed.1.6","candidates":["bytedance.seed/seed.1.6","seed.1.6"],"resolved":null}, + {"probe":"bytedance-seed/seed-2.0-lite","candidates":["bytedance-seed/seed-2.0-lite","seed-2.0-lite"],"resolved":"bytedance-seed/seed-2.0-lite"}, + {"probe":"seed-2.0-lite","candidates":["seed-2.0-lite","bytedance-seed/seed-2.0-lite"],"resolved":"bytedance-seed/seed-2.0-lite"}, + {"probe":"x-provider/bytedance-seed/seed-2.0-lite","candidates":["x-provider/bytedance-seed/seed-2.0-lite","bytedance-seed/seed-2.0-lite","seed-2.0-lite"],"resolved":"bytedance-seed/seed-2.0-lite"}, + {"probe":"bytedance-seed/seed-2.0-lite:free","candidates":["bytedance-seed/seed-2.0-lite:free","seed-2.0-lite:free"],"resolved":null}, + {"probe":"bytedance-seed/seed-2-0-lite","candidates":["bytedance-seed/seed-2-0-lite","seed-2-0-lite"],"resolved":null}, + {"probe":"bytedance.seed/seed.2.0.lite","candidates":["bytedance.seed/seed.2.0.lite","seed.2.0.lite"],"resolved":null}, {"probe":"x-provider/claude-fable-5","candidates":["x-provider/claude-fable-5","claude-fable-5"],"resolved":"claude-fable-5"}, {"probe":"claude-fable-5:free","candidates":["claude-fable-5:free"],"resolved":null}, {"probe":"claude.fable.5","candidates":["claude.fable.5"],"resolved":null}, @@ -178,393 +179,389 @@ {"probe":"claude.sonnet.5","candidates":["claude.sonnet.5"],"resolved":null}, {"probe":"cohere/north-mini-code:free","candidates":["cohere/north-mini-code:free","north-mini-code:free"],"resolved":"cohere/north-mini-code:free"}, {"probe":"north-mini-code:free","candidates":["north-mini-code:free","cohere/north-mini-code:free"],"resolved":"cohere/north-mini-code:free"}, - {"probe":"x-provider/cohere/north-mini-code:free","candidates":["x-provider/cohere/north-mini-code:free","north-mini-code:free","cohere/north-mini-code:free"],"resolved":"cohere/north-mini-code:free"}, + {"probe":"x-provider/cohere/north-mini-code:free","candidates":["x-provider/cohere/north-mini-code:free","cohere/north-mini-code:free","north-mini-code:free"],"resolved":"cohere/north-mini-code:free"}, {"probe":"cohere/north-mini-code:free:free","candidates":["cohere/north-mini-code:free:free","north-mini-code:free:free"],"resolved":null}, {"probe":"cohere/north.mini.code:free","candidates":["cohere/north.mini.code:free","north.mini.code:free"],"resolved":null}, - {"probe":"deepseek/deepseek-chat","candidates":["deepseek/deepseek-chat","deepseek-chat"],"resolved":"deepseek/deepseek-chat"}, - {"probe":"deepseek-chat","candidates":["deepseek-chat","deepseek/deepseek-chat"],"resolved":"deepseek/deepseek-chat"}, - {"probe":"x-provider/deepseek/deepseek-chat","candidates":["x-provider/deepseek/deepseek-chat","deepseek-chat","deepseek/deepseek-chat"],"resolved":"deepseek/deepseek-chat"}, - {"probe":"deepseek/deepseek-chat:free","candidates":["deepseek/deepseek-chat:free","deepseek-chat:free"],"resolved":null}, - {"probe":"deepseek/deepseek.chat","candidates":["deepseek/deepseek.chat","deepseek.chat"],"resolved":null}, - {"probe":"deepseek/deepseek-v4-flash-0731","candidates":["deepseek/deepseek-v4-flash-0731","deepseek-v4-flash-0731"],"resolved":"deepseek/deepseek-v4-flash-0731"}, - {"probe":"deepseek-v4-flash-0731","candidates":["deepseek-v4-flash-0731","deepseek/deepseek-v4-flash-0731"],"resolved":"deepseek/deepseek-v4-flash-0731"}, - {"probe":"x-provider/deepseek/deepseek-v4-flash-0731","candidates":["x-provider/deepseek/deepseek-v4-flash-0731","deepseek-v4-flash-0731","deepseek/deepseek-v4-flash-0731"],"resolved":"deepseek/deepseek-v4-flash-0731"}, - {"probe":"deepseek/deepseek-v4-flash-0731:free","candidates":["deepseek/deepseek-v4-flash-0731:free","deepseek-v4-flash-0731:free"],"resolved":null}, - {"probe":"deepseek/deepseek.v4.flash.0731","candidates":["deepseek/deepseek.v4.flash.0731","deepseek.v4.flash.0731"],"resolved":null}, + {"probe":"deepseek/deepseek-r1","candidates":["deepseek/deepseek-r1","deepseek-r1"],"resolved":"deepseek/deepseek-r1"}, + {"probe":"deepseek-r1","candidates":["deepseek-r1","deepseek/deepseek-r1"],"resolved":"deepseek/deepseek-r1"}, + {"probe":"x-provider/deepseek/deepseek-r1","candidates":["x-provider/deepseek/deepseek-r1","deepseek/deepseek-r1","deepseek-r1"],"resolved":"deepseek/deepseek-r1"}, + {"probe":"deepseek/deepseek-r1:free","candidates":["deepseek/deepseek-r1:free","deepseek-r1:free"],"resolved":null}, + {"probe":"deepseek/deepseek.r1","candidates":["deepseek/deepseek.r1","deepseek.r1"],"resolved":null}, + {"probe":"deepseek/deepseek-r1-0528","candidates":["deepseek/deepseek-r1-0528","deepseek-r1-0528"],"resolved":"deepseek/deepseek-r1-0528"}, + {"probe":"deepseek-r1-0528","candidates":["deepseek-r1-0528","deepseek/deepseek-r1-0528"],"resolved":"deepseek/deepseek-r1-0528"}, + {"probe":"x-provider/deepseek/deepseek-r1-0528","candidates":["x-provider/deepseek/deepseek-r1-0528","deepseek/deepseek-r1-0528","deepseek-r1-0528"],"resolved":"deepseek/deepseek-r1-0528"}, + {"probe":"deepseek/deepseek-r1-0528:free","candidates":["deepseek/deepseek-r1-0528:free","deepseek-r1-0528:free"],"resolved":null}, + {"probe":"deepseek/deepseek.r1.0528","candidates":["deepseek/deepseek.r1.0528","deepseek.r1.0528"],"resolved":null}, + {"probe":"deepseek/deepseek-v4-flash","candidates":["deepseek/deepseek-v4-flash","deepseek-v4-flash"],"resolved":"deepseek/deepseek-v4-flash"}, + {"probe":"deepseek-v4-flash","candidates":["deepseek-v4-flash","deepseek/deepseek-v4-flash"],"resolved":"deepseek/deepseek-v4-flash"}, + {"probe":"x-provider/deepseek/deepseek-v4-flash","candidates":["x-provider/deepseek/deepseek-v4-flash","deepseek/deepseek-v4-flash","deepseek-v4-flash"],"resolved":"deepseek/deepseek-v4-flash"}, + {"probe":"deepseek/deepseek-v4-flash:free","candidates":["deepseek/deepseek-v4-flash:free","deepseek-v4-flash:free"],"resolved":null}, + {"probe":"deepseek/deepseek.v4.flash","candidates":["deepseek/deepseek.v4.flash","deepseek.v4.flash"],"resolved":null}, + {"probe":"deepseek/deepseek-v4-pro-0813","candidates":["deepseek/deepseek-v4-pro-0813","deepseek-v4-pro-0813"],"resolved":"deepseek/deepseek-v4-pro-0813"}, + {"probe":"deepseek-v4-pro-0813","candidates":["deepseek-v4-pro-0813","deepseek/deepseek-v4-pro-0813"],"resolved":"deepseek/deepseek-v4-pro-0813"}, + {"probe":"x-provider/deepseek/deepseek-v4-pro-0813","candidates":["x-provider/deepseek/deepseek-v4-pro-0813","deepseek/deepseek-v4-pro-0813","deepseek-v4-pro-0813"],"resolved":"deepseek/deepseek-v4-pro-0813"}, + {"probe":"deepseek/deepseek-v4-pro-0813:free","candidates":["deepseek/deepseek-v4-pro-0813:free","deepseek-v4-pro-0813:free"],"resolved":null}, + {"probe":"deepseek/deepseek.v4.pro.0813","candidates":["deepseek/deepseek.v4.pro.0813","deepseek.v4.pro.0813"],"resolved":null}, {"probe":"dots-studio/dots-3-note-preview:free","candidates":["dots-studio/dots-3-note-preview:free","dots-3-note-preview:free"],"resolved":"dots-studio/dots-3-note-preview:free"}, {"probe":"dots-3-note-preview:free","candidates":["dots-3-note-preview:free","dots-studio/dots-3-note-preview:free"],"resolved":"dots-studio/dots-3-note-preview:free"}, - {"probe":"x-provider/dots-studio/dots-3-note-preview:free","candidates":["x-provider/dots-studio/dots-3-note-preview:free","dots-3-note-preview:free","dots-studio/dots-3-note-preview:free"],"resolved":"dots-studio/dots-3-note-preview:free"}, + {"probe":"x-provider/dots-studio/dots-3-note-preview:free","candidates":["x-provider/dots-studio/dots-3-note-preview:free","dots-studio/dots-3-note-preview:free","dots-3-note-preview:free"],"resolved":"dots-studio/dots-3-note-preview:free"}, {"probe":"dots-studio/dots-3-note-preview:free:free","candidates":["dots-studio/dots-3-note-preview:free:free","dots-3-note-preview:free:free"],"resolved":null}, {"probe":"dots.studio/dots.3.note.preview:free","candidates":["dots.studio/dots.3.note.preview:free","dots.3.note.preview:free"],"resolved":null}, - {"probe":"gemini-2.5-pro","candidates":["gemini-2.5-pro"],"resolved":"gemini-2.5-pro"}, - {"probe":"x-provider/gemini-2.5-pro","candidates":["x-provider/gemini-2.5-pro","gemini-2.5-pro"],"resolved":"gemini-2.5-pro"}, - {"probe":"gemini-2.5-pro:free","candidates":["gemini-2.5-pro:free"],"resolved":null}, - {"probe":"gemini-2-5-pro","candidates":["gemini-2-5-pro"],"resolved":null}, - {"probe":"gemini.2.5.pro","candidates":["gemini.2.5.pro"],"resolved":null}, + {"probe":"gemini-3.1-pro-preview","candidates":["gemini-3.1-pro-preview"],"resolved":"gemini-3.1-pro-preview"}, + {"probe":"x-provider/gemini-3.1-pro-preview","candidates":["x-provider/gemini-3.1-pro-preview","gemini-3.1-pro-preview"],"resolved":"gemini-3.1-pro-preview"}, + {"probe":"gemini-3.1-pro-preview:free","candidates":["gemini-3.1-pro-preview:free"],"resolved":null}, + {"probe":"gemini-3-1-pro-preview","candidates":["gemini-3-1-pro-preview"],"resolved":null}, + {"probe":"gemini.3.1.pro.preview","candidates":["gemini.3.1.pro.preview"],"resolved":null}, + {"probe":"gemini-flash-lite-latest","candidates":["gemini-flash-lite-latest"],"resolved":"gemini-flash-lite-latest"}, + {"probe":"x-provider/gemini-flash-lite-latest","candidates":["x-provider/gemini-flash-lite-latest","gemini-flash-lite-latest"],"resolved":"gemini-flash-lite-latest"}, + {"probe":"gemini-flash-lite-latest:free","candidates":["gemini-flash-lite-latest:free"],"resolved":null}, + {"probe":"gemini.flash.lite.latest","candidates":["gemini.flash.lite.latest"],"resolved":null}, + {"probe":"gemma-4-31b-it","candidates":["gemma-4-31b-it"],"resolved":"gemma-4-31b-it"}, + {"probe":"x-provider/gemma-4-31b-it","candidates":["x-provider/gemma-4-31b-it","gemma-4-31b-it"],"resolved":"gemma-4-31b-it"}, + {"probe":"gemma-4-31b-it:free","candidates":["gemma-4-31b-it:free","google/gemma-4-31b-it:free"],"resolved":"google/gemma-4-31b-it:free"}, + {"probe":"gemma.4.31b.it","candidates":["gemma.4.31b.it"],"resolved":null}, + {"probe":"google/gemini-2.5-flash-lite","candidates":["google/gemini-2.5-flash-lite","gemini-2.5-flash-lite"],"resolved":"google/gemini-2.5-flash-lite"}, + {"probe":"gemini-2.5-flash-lite","candidates":["gemini-2.5-flash-lite"],"resolved":"gemini-2.5-flash-lite"}, + {"probe":"x-provider/google/gemini-2.5-flash-lite","candidates":["x-provider/google/gemini-2.5-flash-lite","google/gemini-2.5-flash-lite","gemini-2.5-flash-lite"],"resolved":"google/gemini-2.5-flash-lite"}, + {"probe":"google/gemini-2.5-flash-lite:free","candidates":["google/gemini-2.5-flash-lite:free","gemini-2.5-flash-lite:free"],"resolved":null}, + {"probe":"google/gemini-2-5-flash-lite","candidates":["google/gemini-2-5-flash-lite","gemini-2-5-flash-lite"],"resolved":null}, + {"probe":"google/gemini.2.5.flash.lite","candidates":["google/gemini.2.5.flash.lite","gemini.2.5.flash.lite"],"resolved":null}, + {"probe":"google/gemini-3.5-flash","candidates":["google/gemini-3.5-flash","gemini-3.5-flash"],"resolved":"google/gemini-3.5-flash"}, + {"probe":"gemini-3.5-flash","candidates":["gemini-3.5-flash"],"resolved":"gemini-3.5-flash"}, + {"probe":"x-provider/google/gemini-3.5-flash","candidates":["x-provider/google/gemini-3.5-flash","google/gemini-3.5-flash","gemini-3.5-flash"],"resolved":"google/gemini-3.5-flash"}, + {"probe":"google/gemini-3.5-flash:free","candidates":["google/gemini-3.5-flash:free","gemini-3.5-flash:free"],"resolved":null}, + {"probe":"google/gemini-3-5-flash","candidates":["google/gemini-3-5-flash","gemini-3-5-flash"],"resolved":null}, + {"probe":"google/gemini.3.5.flash","candidates":["google/gemini.3.5.flash","gemini.3.5.flash"],"resolved":null}, + {"probe":"google/gemini-3.7-flash","candidates":["google/gemini-3.7-flash","gemini-3.7-flash"],"resolved":"google/gemini-3.7-flash"}, {"probe":"gemini-3.7-flash","candidates":["gemini-3.7-flash"],"resolved":"gemini-3.7-flash"}, - {"probe":"x-provider/gemini-3.7-flash","candidates":["x-provider/gemini-3.7-flash","gemini-3.7-flash"],"resolved":"gemini-3.7-flash"}, - {"probe":"gemini-3.7-flash:free","candidates":["gemini-3.7-flash:free"],"resolved":null}, - {"probe":"gemini-3-7-flash","candidates":["gemini-3-7-flash"],"resolved":null}, - {"probe":"gemini.3.7.flash","candidates":["gemini.3.7.flash"],"resolved":null}, - {"probe":"google/gemini-2.5-pro-preview","candidates":["google/gemini-2.5-pro-preview","gemini-2.5-pro-preview"],"resolved":"google/gemini-2.5-pro-preview"}, - {"probe":"gemini-2.5-pro-preview","candidates":["gemini-2.5-pro-preview","google/gemini-2.5-pro-preview"],"resolved":"google/gemini-2.5-pro-preview"}, - {"probe":"x-provider/google/gemini-2.5-pro-preview","candidates":["x-provider/google/gemini-2.5-pro-preview","gemini-2.5-pro-preview","google/gemini-2.5-pro-preview"],"resolved":"google/gemini-2.5-pro-preview"}, - {"probe":"google/gemini-2.5-pro-preview:free","candidates":["google/gemini-2.5-pro-preview:free","gemini-2.5-pro-preview:free"],"resolved":null}, - {"probe":"google/gemini-2-5-pro-preview","candidates":["google/gemini-2-5-pro-preview","gemini-2-5-pro-preview"],"resolved":null}, - {"probe":"google/gemini.2.5.pro.preview","candidates":["google/gemini.2.5.pro.preview","gemini.2.5.pro.preview"],"resolved":null}, - {"probe":"google/gemini-3.1-pro-preview-customtools","candidates":["google/gemini-3.1-pro-preview-customtools","gemini-3.1-pro-preview-customtools"],"resolved":"google/gemini-3.1-pro-preview-customtools"}, - {"probe":"gemini-3.1-pro-preview-customtools","candidates":["gemini-3.1-pro-preview-customtools"],"resolved":"gemini-3.1-pro-preview-customtools"}, - {"probe":"x-provider/google/gemini-3.1-pro-preview-customtools","candidates":["x-provider/google/gemini-3.1-pro-preview-customtools","gemini-3.1-pro-preview-customtools"],"resolved":"gemini-3.1-pro-preview-customtools"}, - {"probe":"google/gemini-3.1-pro-preview-customtools:free","candidates":["google/gemini-3.1-pro-preview-customtools:free","gemini-3.1-pro-preview-customtools:free"],"resolved":null}, - {"probe":"google/gemini-3-1-pro-preview-customtools","candidates":["google/gemini-3-1-pro-preview-customtools","gemini-3-1-pro-preview-customtools"],"resolved":null}, - {"probe":"google/gemini.3.1.pro.preview.customtools","candidates":["google/gemini.3.1.pro.preview.customtools","gemini.3.1.pro.preview.customtools"],"resolved":null}, + {"probe":"x-provider/google/gemini-3.7-flash","candidates":["x-provider/google/gemini-3.7-flash","google/gemini-3.7-flash","gemini-3.7-flash"],"resolved":"google/gemini-3.7-flash"}, + {"probe":"google/gemini-3.7-flash:free","candidates":["google/gemini-3.7-flash:free","gemini-3.7-flash:free"],"resolved":null}, + {"probe":"google/gemini-3-7-flash","candidates":["google/gemini-3-7-flash","gemini-3-7-flash"],"resolved":null}, + {"probe":"google/gemini.3.7.flash","candidates":["google/gemini.3.7.flash","gemini.3.7.flash"],"resolved":null}, + {"probe":"google/gemma-3-27b-it","candidates":["google/gemma-3-27b-it","gemma-3-27b-it"],"resolved":"google/gemma-3-27b-it"}, + {"probe":"gemma-3-27b-it","candidates":["gemma-3-27b-it","google/gemma-3-27b-it"],"resolved":"google/gemma-3-27b-it"}, + {"probe":"x-provider/google/gemma-3-27b-it","candidates":["x-provider/google/gemma-3-27b-it","google/gemma-3-27b-it","gemma-3-27b-it"],"resolved":"google/gemma-3-27b-it"}, + {"probe":"google/gemma-3-27b-it:free","candidates":["google/gemma-3-27b-it:free","gemma-3-27b-it:free"],"resolved":null}, + {"probe":"google/gemma.3.27b.it","candidates":["google/gemma.3.27b.it","gemma.3.27b.it"],"resolved":null}, {"probe":"google/gemma-4-26b-a4b-it","candidates":["google/gemma-4-26b-a4b-it","gemma-4-26b-a4b-it"],"resolved":"google/gemma-4-26b-a4b-it"}, {"probe":"gemma-4-26b-a4b-it","candidates":["gemma-4-26b-a4b-it"],"resolved":"gemma-4-26b-a4b-it"}, - {"probe":"x-provider/google/gemma-4-26b-a4b-it","candidates":["x-provider/google/gemma-4-26b-a4b-it","gemma-4-26b-a4b-it"],"resolved":"gemma-4-26b-a4b-it"}, + {"probe":"x-provider/google/gemma-4-26b-a4b-it","candidates":["x-provider/google/gemma-4-26b-a4b-it","google/gemma-4-26b-a4b-it","gemma-4-26b-a4b-it"],"resolved":"google/gemma-4-26b-a4b-it"}, {"probe":"google/gemma-4-26b-a4b-it:free","candidates":["google/gemma-4-26b-a4b-it:free","gemma-4-26b-a4b-it:free"],"resolved":"google/gemma-4-26b-a4b-it:free"}, {"probe":"google/gemma.4.26b.a4b.it","candidates":["google/gemma.4.26b.a4b.it","gemma.4.26b.a4b.it"],"resolved":null}, {"probe":"gemma-4-26b-a4b-it:free","candidates":["gemma-4-26b-a4b-it:free","google/gemma-4-26b-a4b-it:free"],"resolved":"google/gemma-4-26b-a4b-it:free"}, - {"probe":"x-provider/google/gemma-4-26b-a4b-it:free","candidates":["x-provider/google/gemma-4-26b-a4b-it:free","gemma-4-26b-a4b-it:free","google/gemma-4-26b-a4b-it:free"],"resolved":"google/gemma-4-26b-a4b-it:free"}, + {"probe":"x-provider/google/gemma-4-26b-a4b-it:free","candidates":["x-provider/google/gemma-4-26b-a4b-it:free","google/gemma-4-26b-a4b-it:free","gemma-4-26b-a4b-it:free"],"resolved":"google/gemma-4-26b-a4b-it:free"}, {"probe":"google/gemma-4-26b-a4b-it:free:free","candidates":["google/gemma-4-26b-a4b-it:free:free","gemma-4-26b-a4b-it:free:free"],"resolved":null}, {"probe":"google/gemma.4.26b.a4b.it:free","candidates":["google/gemma.4.26b.a4b.it:free","gemma.4.26b.a4b.it:free"],"resolved":null}, {"probe":"google/gemma-4-31b-it:free","candidates":["google/gemma-4-31b-it:free","gemma-4-31b-it:free"],"resolved":"google/gemma-4-31b-it:free"}, - {"probe":"gemma-4-31b-it:free","candidates":["gemma-4-31b-it:free","google/gemma-4-31b-it:free"],"resolved":"google/gemma-4-31b-it:free"}, - {"probe":"x-provider/google/gemma-4-31b-it:free","candidates":["x-provider/google/gemma-4-31b-it:free","gemma-4-31b-it:free","google/gemma-4-31b-it:free"],"resolved":"google/gemma-4-31b-it:free"}, + {"probe":"x-provider/google/gemma-4-31b-it:free","candidates":["x-provider/google/gemma-4-31b-it:free","google/gemma-4-31b-it:free","gemma-4-31b-it:free"],"resolved":"google/gemma-4-31b-it:free"}, {"probe":"google/gemma-4-31b-it:free:free","candidates":["google/gemma-4-31b-it:free:free","gemma-4-31b-it:free:free"],"resolved":null}, {"probe":"google/gemma.4.31b.it:free","candidates":["google/gemma.4.31b.it:free","gemma.4.31b.it:free"],"resolved":null}, - {"probe":"gpt-4o-2024-11-20","candidates":["gpt-4o-2024-11-20"],"resolved":"gpt-4o-2024-11-20"}, - {"probe":"x-provider/gpt-4o-2024-11-20","candidates":["x-provider/gpt-4o-2024-11-20","gpt-4o-2024-11-20"],"resolved":"gpt-4o-2024-11-20"}, - {"probe":"gpt-4o-2024-11-20:free","candidates":["gpt-4o-2024-11-20:free"],"resolved":null}, - {"probe":"gpt.4o.2024.11.20","candidates":["gpt.4o.2024.11.20"],"resolved":null}, - {"probe":"gpt-5.3-codex-spark","candidates":["gpt-5.3-codex-spark"],"resolved":"gpt-5.3-codex-spark"}, - {"probe":"x-provider/gpt-5.3-codex-spark","candidates":["x-provider/gpt-5.3-codex-spark","gpt-5.3-codex-spark"],"resolved":"gpt-5.3-codex-spark"}, - {"probe":"gpt-5.3-codex-spark:free","candidates":["gpt-5.3-codex-spark:free"],"resolved":null}, - {"probe":"gpt-5-3-codex-spark","candidates":["gpt-5-3-codex-spark"],"resolved":null}, - {"probe":"gpt.5.3.codex.spark","candidates":["gpt.5.3.codex.spark"],"resolved":null}, - {"probe":"gpt-5.6-terra","candidates":["gpt-5.6-terra"],"resolved":"gpt-5.6-terra"}, - {"probe":"x-provider/gpt-5.6-terra","candidates":["x-provider/gpt-5.6-terra","gpt-5.6-terra"],"resolved":"gpt-5.6-terra"}, - {"probe":"gpt-5.6-terra:free","candidates":["gpt-5.6-terra:free"],"resolved":null}, - {"probe":"gpt-5-6-terra","candidates":["gpt-5-6-terra"],"resolved":null}, - {"probe":"gpt.5.6.terra","candidates":["gpt.5.6.terra"],"resolved":null}, - {"probe":"grok-4.7","candidates":["grok-4.7"],"resolved":"grok-4.7"}, - {"probe":"x-provider/grok-4.7","candidates":["x-provider/grok-4.7","grok-4.7"],"resolved":"grok-4.7"}, - {"probe":"grok-4.7:free","candidates":["grok-4.7:free"],"resolved":null}, - {"probe":"grok-4-7","candidates":["grok-4-7"],"resolved":null}, - {"probe":"grok.4.7","candidates":["grok.4.7"],"resolved":null}, + {"probe":"gpt-5.4","candidates":["gpt-5.4"],"resolved":"gpt-5.4"}, + {"probe":"x-provider/gpt-5.4","candidates":["x-provider/gpt-5.4","gpt-5.4"],"resolved":"gpt-5.4"}, + {"probe":"gpt-5.4:free","candidates":["gpt-5.4:free"],"resolved":null}, + {"probe":"gpt-5-4","candidates":["gpt-5-4"],"resolved":null}, + {"probe":"gpt.5.4","candidates":["gpt.5.4"],"resolved":null}, + {"probe":"gryphe/mythomax-l2-13b","candidates":["gryphe/mythomax-l2-13b","mythomax-l2-13b"],"resolved":"gryphe/mythomax-l2-13b"}, + {"probe":"mythomax-l2-13b","candidates":["mythomax-l2-13b","gryphe/mythomax-l2-13b"],"resolved":"gryphe/mythomax-l2-13b"}, + {"probe":"x-provider/gryphe/mythomax-l2-13b","candidates":["x-provider/gryphe/mythomax-l2-13b","gryphe/mythomax-l2-13b","mythomax-l2-13b"],"resolved":"gryphe/mythomax-l2-13b"}, + {"probe":"gryphe/mythomax-l2-13b:free","candidates":["gryphe/mythomax-l2-13b:free","mythomax-l2-13b:free"],"resolved":null}, + {"probe":"gryphe/mythomax.l2.13b","candidates":["gryphe/mythomax.l2.13b","mythomax.l2.13b"],"resolved":null}, + {"probe":"inception/mercury-2.5","candidates":["inception/mercury-2.5","mercury-2.5"],"resolved":"inception/mercury-2.5"}, + {"probe":"mercury-2.5","candidates":["mercury-2.5","inception/mercury-2.5"],"resolved":"inception/mercury-2.5"}, + {"probe":"x-provider/inception/mercury-2.5","candidates":["x-provider/inception/mercury-2.5","inception/mercury-2.5","mercury-2.5"],"resolved":"inception/mercury-2.5"}, + {"probe":"inception/mercury-2.5:free","candidates":["inception/mercury-2.5:free","mercury-2.5:free"],"resolved":null}, + {"probe":"inception/mercury-2-5","candidates":["inception/mercury-2-5","mercury-2-5"],"resolved":null}, + {"probe":"inception/mercury.2.5","candidates":["inception/mercury.2.5","mercury.2.5"],"resolved":null}, {"probe":"inclusionai/ling-3.0-flash-fin:free","candidates":["inclusionai/ling-3.0-flash-fin:free","ling-3.0-flash-fin:free"],"resolved":"inclusionai/ling-3.0-flash-fin:free"}, {"probe":"ling-3.0-flash-fin:free","candidates":["ling-3.0-flash-fin:free","inclusionai/ling-3.0-flash-fin:free"],"resolved":"inclusionai/ling-3.0-flash-fin:free"}, - {"probe":"x-provider/inclusionai/ling-3.0-flash-fin:free","candidates":["x-provider/inclusionai/ling-3.0-flash-fin:free","ling-3.0-flash-fin:free","inclusionai/ling-3.0-flash-fin:free"],"resolved":"inclusionai/ling-3.0-flash-fin:free"}, + {"probe":"x-provider/inclusionai/ling-3.0-flash-fin:free","candidates":["x-provider/inclusionai/ling-3.0-flash-fin:free","inclusionai/ling-3.0-flash-fin:free","ling-3.0-flash-fin:free"],"resolved":"inclusionai/ling-3.0-flash-fin:free"}, {"probe":"inclusionai/ling-3.0-flash-fin:free:free","candidates":["inclusionai/ling-3.0-flash-fin:free:free","ling-3.0-flash-fin:free:free"],"resolved":null}, {"probe":"inclusionai/ling-3-0-flash-fin:free","candidates":["inclusionai/ling-3-0-flash-fin:free","ling-3-0-flash-fin:free"],"resolved":null}, {"probe":"inclusionai/ling.3.0.flash.fin:free","candidates":["inclusionai/ling.3.0.flash.fin:free","ling.3.0.flash.fin:free"],"resolved":null}, {"probe":"inclusionai/ling-3.0-flash-sante:free","candidates":["inclusionai/ling-3.0-flash-sante:free","ling-3.0-flash-sante:free"],"resolved":"inclusionai/ling-3.0-flash-sante:free"}, {"probe":"ling-3.0-flash-sante:free","candidates":["ling-3.0-flash-sante:free","inclusionai/ling-3.0-flash-sante:free"],"resolved":"inclusionai/ling-3.0-flash-sante:free"}, - {"probe":"x-provider/inclusionai/ling-3.0-flash-sante:free","candidates":["x-provider/inclusionai/ling-3.0-flash-sante:free","ling-3.0-flash-sante:free","inclusionai/ling-3.0-flash-sante:free"],"resolved":"inclusionai/ling-3.0-flash-sante:free"}, + {"probe":"x-provider/inclusionai/ling-3.0-flash-sante:free","candidates":["x-provider/inclusionai/ling-3.0-flash-sante:free","inclusionai/ling-3.0-flash-sante:free","ling-3.0-flash-sante:free"],"resolved":"inclusionai/ling-3.0-flash-sante:free"}, {"probe":"inclusionai/ling-3.0-flash-sante:free:free","candidates":["inclusionai/ling-3.0-flash-sante:free:free","ling-3.0-flash-sante:free:free"],"resolved":null}, {"probe":"inclusionai/ling-3-0-flash-sante:free","candidates":["inclusionai/ling-3-0-flash-sante:free","ling-3-0-flash-sante:free"],"resolved":null}, {"probe":"inclusionai/ling.3.0.flash.sante:free","candidates":["inclusionai/ling.3.0.flash.sante:free","ling.3.0.flash.sante:free"],"resolved":null}, + {"probe":"inference-net/schematron-v2-small","candidates":["inference-net/schematron-v2-small","schematron-v2-small"],"resolved":"inference-net/schematron-v2-small"}, + {"probe":"schematron-v2-small","candidates":["schematron-v2-small","inference-net/schematron-v2-small"],"resolved":"inference-net/schematron-v2-small"}, + {"probe":"x-provider/inference-net/schematron-v2-small","candidates":["x-provider/inference-net/schematron-v2-small","inference-net/schematron-v2-small","schematron-v2-small"],"resolved":"inference-net/schematron-v2-small"}, + {"probe":"inference-net/schematron-v2-small:free","candidates":["inference-net/schematron-v2-small:free","schematron-v2-small:free"],"resolved":null}, + {"probe":"inference.net/schematron.v2.small","candidates":["inference.net/schematron.v2.small","schematron.v2.small"],"resolved":null}, {"probe":"liquid/lfm-2.5-2.6b:free","candidates":["liquid/lfm-2.5-2.6b:free","lfm-2.5-2.6b:free"],"resolved":"liquid/lfm-2.5-2.6b:free"}, {"probe":"lfm-2.5-2.6b:free","candidates":["lfm-2.5-2.6b:free","liquid/lfm-2.5-2.6b:free"],"resolved":"liquid/lfm-2.5-2.6b:free"}, - {"probe":"x-provider/liquid/lfm-2.5-2.6b:free","candidates":["x-provider/liquid/lfm-2.5-2.6b:free","lfm-2.5-2.6b:free","liquid/lfm-2.5-2.6b:free"],"resolved":"liquid/lfm-2.5-2.6b:free"}, + {"probe":"x-provider/liquid/lfm-2.5-2.6b:free","candidates":["x-provider/liquid/lfm-2.5-2.6b:free","liquid/lfm-2.5-2.6b:free","lfm-2.5-2.6b:free"],"resolved":"liquid/lfm-2.5-2.6b:free"}, {"probe":"liquid/lfm-2.5-2.6b:free:free","candidates":["liquid/lfm-2.5-2.6b:free:free","lfm-2.5-2.6b:free:free"],"resolved":null}, {"probe":"liquid/lfm-2-5-2-6b:free","candidates":["liquid/lfm-2-5-2-6b:free","lfm-2-5-2-6b:free"],"resolved":null}, {"probe":"liquid/lfm.2.5.2.6b:free","candidates":["liquid/lfm.2.5.2.6b:free","lfm.2.5.2.6b:free"],"resolved":null}, - {"probe":"meta-llama/llama-3.2-1b-instruct","candidates":["meta-llama/llama-3.2-1b-instruct","llama-3.2-1b-instruct"],"resolved":"meta-llama/llama-3.2-1b-instruct"}, - {"probe":"llama-3.2-1b-instruct","candidates":["llama-3.2-1b-instruct","meta-llama/llama-3.2-1b-instruct"],"resolved":"meta-llama/llama-3.2-1b-instruct"}, - {"probe":"x-provider/meta-llama/llama-3.2-1b-instruct","candidates":["x-provider/meta-llama/llama-3.2-1b-instruct","llama-3.2-1b-instruct","meta-llama/llama-3.2-1b-instruct"],"resolved":"meta-llama/llama-3.2-1b-instruct"}, - {"probe":"meta-llama/llama-3.2-1b-instruct:free","candidates":["meta-llama/llama-3.2-1b-instruct:free","llama-3.2-1b-instruct:free"],"resolved":null}, - {"probe":"meta-llama/llama-3-2-1b-instruct","candidates":["meta-llama/llama-3-2-1b-instruct","llama-3-2-1b-instruct"],"resolved":null}, - {"probe":"meta.llama/llama.3.2.1b.instruct","candidates":["meta.llama/llama.3.2.1b.instruct","llama.3.2.1b.instruct"],"resolved":null}, - {"probe":"meta/muse-spark-1.3","candidates":["meta/muse-spark-1.3","muse-spark-1.3"],"resolved":"meta/muse-spark-1.3"}, - {"probe":"muse-spark-1.3","candidates":["muse-spark-1.3","meta/muse-spark-1.3"],"resolved":"meta/muse-spark-1.3"}, - {"probe":"x-provider/meta/muse-spark-1.3","candidates":["x-provider/meta/muse-spark-1.3","muse-spark-1.3","meta/muse-spark-1.3"],"resolved":"meta/muse-spark-1.3"}, - {"probe":"meta/muse-spark-1.3:free","candidates":["meta/muse-spark-1.3:free","muse-spark-1.3:free"],"resolved":null}, - {"probe":"meta/muse-spark-1-3","candidates":["meta/muse-spark-1-3","muse-spark-1-3"],"resolved":null}, - {"probe":"meta/muse.spark.1.3","candidates":["meta/muse.spark.1.3","muse.spark.1.3"],"resolved":null}, - {"probe":"minimax/minimax-m2.7","candidates":["minimax/minimax-m2.7","minimax-m2.7"],"resolved":"minimax/minimax-m2.7"}, - {"probe":"minimax-m2.7","candidates":["minimax-m2.7","minimax/minimax-m2.7"],"resolved":"minimax/minimax-m2.7"}, - {"probe":"x-provider/minimax/minimax-m2.7","candidates":["x-provider/minimax/minimax-m2.7","minimax-m2.7","minimax/minimax-m2.7"],"resolved":"minimax/minimax-m2.7"}, - {"probe":"minimax/minimax-m2.7:free","candidates":["minimax/minimax-m2.7:free","minimax-m2.7:free"],"resolved":null}, - {"probe":"minimax/minimax-m2-7","candidates":["minimax/minimax-m2-7","minimax-m2-7"],"resolved":null}, - {"probe":"minimax/minimax.m2.7","candidates":["minimax/minimax.m2.7","minimax.m2.7"],"resolved":null}, - {"probe":"mistralai/mistral-medium-3","candidates":["mistralai/mistral-medium-3","mistral-medium-3"],"resolved":"mistralai/mistral-medium-3"}, - {"probe":"mistral-medium-3","candidates":["mistral-medium-3","mistralai/mistral-medium-3"],"resolved":"mistralai/mistral-medium-3"}, - {"probe":"x-provider/mistralai/mistral-medium-3","candidates":["x-provider/mistralai/mistral-medium-3","mistral-medium-3","mistralai/mistral-medium-3"],"resolved":"mistralai/mistral-medium-3"}, - {"probe":"mistralai/mistral-medium-3:free","candidates":["mistralai/mistral-medium-3:free","mistral-medium-3:free"],"resolved":null}, - {"probe":"mistralai/mistral.medium.3","candidates":["mistralai/mistral.medium.3","mistral.medium.3"],"resolved":null}, - {"probe":"mistralai/voxtral-small-24b-2507","candidates":["mistralai/voxtral-small-24b-2507","voxtral-small-24b-2507"],"resolved":"mistralai/voxtral-small-24b-2507"}, - {"probe":"voxtral-small-24b-2507","candidates":["voxtral-small-24b-2507","mistralai/voxtral-small-24b-2507"],"resolved":"mistralai/voxtral-small-24b-2507"}, - {"probe":"x-provider/mistralai/voxtral-small-24b-2507","candidates":["x-provider/mistralai/voxtral-small-24b-2507","voxtral-small-24b-2507","mistralai/voxtral-small-24b-2507"],"resolved":"mistralai/voxtral-small-24b-2507"}, - {"probe":"mistralai/voxtral-small-24b-2507:free","candidates":["mistralai/voxtral-small-24b-2507:free","voxtral-small-24b-2507:free"],"resolved":null}, - {"probe":"mistralai/voxtral.small.24b.2507","candidates":["mistralai/voxtral.small.24b.2507","voxtral.small.24b.2507"],"resolved":null}, - {"probe":"nex-agi/nex-n2.5-mini:free","candidates":["nex-agi/nex-n2.5-mini:free","nex-n2.5-mini:free"],"resolved":"nex-agi/nex-n2.5-mini:free"}, - {"probe":"nex-n2.5-mini:free","candidates":["nex-n2.5-mini:free","nex-agi/nex-n2.5-mini:free"],"resolved":"nex-agi/nex-n2.5-mini:free"}, - {"probe":"x-provider/nex-agi/nex-n2.5-mini:free","candidates":["x-provider/nex-agi/nex-n2.5-mini:free","nex-n2.5-mini:free","nex-agi/nex-n2.5-mini:free"],"resolved":"nex-agi/nex-n2.5-mini:free"}, - {"probe":"nex-agi/nex-n2.5-mini:free:free","candidates":["nex-agi/nex-n2.5-mini:free:free","nex-n2.5-mini:free:free"],"resolved":null}, - {"probe":"nex-agi/nex-n2-5-mini:free","candidates":["nex-agi/nex-n2-5-mini:free","nex-n2-5-mini:free"],"resolved":null}, - {"probe":"nex.agi/nex.n2.5.mini:free","candidates":["nex.agi/nex.n2.5.mini:free","nex.n2.5.mini:free"],"resolved":null}, - {"probe":"nex-agi/nex-n2.5-pro:free","candidates":["nex-agi/nex-n2.5-pro:free","nex-n2.5-pro:free"],"resolved":"nex-agi/nex-n2.5-pro:free"}, - {"probe":"nex-n2.5-pro:free","candidates":["nex-n2.5-pro:free","nex-agi/nex-n2.5-pro:free"],"resolved":"nex-agi/nex-n2.5-pro:free"}, - {"probe":"x-provider/nex-agi/nex-n2.5-pro:free","candidates":["x-provider/nex-agi/nex-n2.5-pro:free","nex-n2.5-pro:free","nex-agi/nex-n2.5-pro:free"],"resolved":"nex-agi/nex-n2.5-pro:free"}, - {"probe":"nex-agi/nex-n2.5-pro:free:free","candidates":["nex-agi/nex-n2.5-pro:free:free","nex-n2.5-pro:free:free"],"resolved":null}, - {"probe":"nex-agi/nex-n2-5-pro:free","candidates":["nex-agi/nex-n2-5-pro:free","nex-n2-5-pro:free"],"resolved":null}, - {"probe":"nex.agi/nex.n2.5.pro:free","candidates":["nex.agi/nex.n2.5.pro:free","nex.n2.5.pro:free"],"resolved":null}, + {"probe":"meituan/longcat-2.0","candidates":["meituan/longcat-2.0","longcat-2.0"],"resolved":"meituan/longcat-2.0"}, + {"probe":"longcat-2.0","candidates":["longcat-2.0","meituan/longcat-2.0"],"resolved":"meituan/longcat-2.0"}, + {"probe":"x-provider/meituan/longcat-2.0","candidates":["x-provider/meituan/longcat-2.0","meituan/longcat-2.0","longcat-2.0"],"resolved":"meituan/longcat-2.0"}, + {"probe":"meituan/longcat-2.0:free","candidates":["meituan/longcat-2.0:free","longcat-2.0:free"],"resolved":null}, + {"probe":"meituan/longcat-2-0","candidates":["meituan/longcat-2-0","longcat-2-0"],"resolved":null}, + {"probe":"meituan/longcat.2.0","candidates":["meituan/longcat.2.0","longcat.2.0"],"resolved":null}, + {"probe":"mistralai/devstral-2512","candidates":["mistralai/devstral-2512","devstral-2512"],"resolved":"mistralai/devstral-2512"}, + {"probe":"devstral-2512","candidates":["devstral-2512","mistralai/devstral-2512"],"resolved":"mistralai/devstral-2512"}, + {"probe":"x-provider/mistralai/devstral-2512","candidates":["x-provider/mistralai/devstral-2512","mistralai/devstral-2512","devstral-2512"],"resolved":"mistralai/devstral-2512"}, + {"probe":"mistralai/devstral-2512:free","candidates":["mistralai/devstral-2512:free","devstral-2512:free"],"resolved":null}, + {"probe":"mistralai/devstral.2512","candidates":["mistralai/devstral.2512","devstral.2512"],"resolved":null}, {"probe":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free","candidates":["nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free","nemotron-3-nano-omni-30b-a3b-reasoning:free"],"resolved":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free"}, {"probe":"nemotron-3-nano-omni-30b-a3b-reasoning:free","candidates":["nemotron-3-nano-omni-30b-a3b-reasoning:free","nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free"],"resolved":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free"}, - {"probe":"x-provider/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free","candidates":["x-provider/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free","nemotron-3-nano-omni-30b-a3b-reasoning:free","nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free"],"resolved":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free"}, + {"probe":"x-provider/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free","candidates":["x-provider/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free","nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free","nemotron-3-nano-omni-30b-a3b-reasoning:free"],"resolved":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free"}, {"probe":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free:free","candidates":["nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free:free","nemotron-3-nano-omni-30b-a3b-reasoning:free:free"],"resolved":null}, {"probe":"nvidia/nemotron.3.nano.omni.30b.a3b.reasoning:free","candidates":["nvidia/nemotron.3.nano.omni.30b.a3b.reasoning:free","nemotron.3.nano.omni.30b.a3b.reasoning:free"],"resolved":null}, {"probe":"nvidia/nemotron-3-super-120b-a12b:free","candidates":["nvidia/nemotron-3-super-120b-a12b:free","nemotron-3-super-120b-a12b:free"],"resolved":"nvidia/nemotron-3-super-120b-a12b:free"}, {"probe":"nemotron-3-super-120b-a12b:free","candidates":["nemotron-3-super-120b-a12b:free","nvidia/nemotron-3-super-120b-a12b:free"],"resolved":"nvidia/nemotron-3-super-120b-a12b:free"}, - {"probe":"x-provider/nvidia/nemotron-3-super-120b-a12b:free","candidates":["x-provider/nvidia/nemotron-3-super-120b-a12b:free","nemotron-3-super-120b-a12b:free","nvidia/nemotron-3-super-120b-a12b:free"],"resolved":"nvidia/nemotron-3-super-120b-a12b:free"}, + {"probe":"x-provider/nvidia/nemotron-3-super-120b-a12b:free","candidates":["x-provider/nvidia/nemotron-3-super-120b-a12b:free","nvidia/nemotron-3-super-120b-a12b:free","nemotron-3-super-120b-a12b:free"],"resolved":"nvidia/nemotron-3-super-120b-a12b:free"}, {"probe":"nvidia/nemotron-3-super-120b-a12b:free:free","candidates":["nvidia/nemotron-3-super-120b-a12b:free:free","nemotron-3-super-120b-a12b:free:free"],"resolved":null}, {"probe":"nvidia/nemotron.3.super.120b.a12b:free","candidates":["nvidia/nemotron.3.super.120b.a12b:free","nemotron.3.super.120b.a12b:free"],"resolved":null}, {"probe":"nvidia/nemotron-3-ultra-550b-a55b:free","candidates":["nvidia/nemotron-3-ultra-550b-a55b:free","nemotron-3-ultra-550b-a55b:free"],"resolved":"nvidia/nemotron-3-ultra-550b-a55b:free"}, {"probe":"nemotron-3-ultra-550b-a55b:free","candidates":["nemotron-3-ultra-550b-a55b:free","nvidia/nemotron-3-ultra-550b-a55b:free"],"resolved":"nvidia/nemotron-3-ultra-550b-a55b:free"}, - {"probe":"x-provider/nvidia/nemotron-3-ultra-550b-a55b:free","candidates":["x-provider/nvidia/nemotron-3-ultra-550b-a55b:free","nemotron-3-ultra-550b-a55b:free","nvidia/nemotron-3-ultra-550b-a55b:free"],"resolved":"nvidia/nemotron-3-ultra-550b-a55b:free"}, + {"probe":"x-provider/nvidia/nemotron-3-ultra-550b-a55b:free","candidates":["x-provider/nvidia/nemotron-3-ultra-550b-a55b:free","nvidia/nemotron-3-ultra-550b-a55b:free","nemotron-3-ultra-550b-a55b:free"],"resolved":"nvidia/nemotron-3-ultra-550b-a55b:free"}, {"probe":"nvidia/nemotron-3-ultra-550b-a55b:free:free","candidates":["nvidia/nemotron-3-ultra-550b-a55b:free:free","nemotron-3-ultra-550b-a55b:free:free"],"resolved":null}, {"probe":"nvidia/nemotron.3.ultra.550b.a55b:free","candidates":["nvidia/nemotron.3.ultra.550b.a55b:free","nemotron.3.ultra.550b.a55b:free"],"resolved":null}, {"probe":"nvidia/nemotron-3.5-content-safety:free","candidates":["nvidia/nemotron-3.5-content-safety:free","nemotron-3.5-content-safety:free"],"resolved":"nvidia/nemotron-3.5-content-safety:free"}, {"probe":"nemotron-3.5-content-safety:free","candidates":["nemotron-3.5-content-safety:free","nvidia/nemotron-3.5-content-safety:free"],"resolved":"nvidia/nemotron-3.5-content-safety:free"}, - {"probe":"x-provider/nvidia/nemotron-3.5-content-safety:free","candidates":["x-provider/nvidia/nemotron-3.5-content-safety:free","nemotron-3.5-content-safety:free","nvidia/nemotron-3.5-content-safety:free"],"resolved":"nvidia/nemotron-3.5-content-safety:free"}, + {"probe":"x-provider/nvidia/nemotron-3.5-content-safety:free","candidates":["x-provider/nvidia/nemotron-3.5-content-safety:free","nvidia/nemotron-3.5-content-safety:free","nemotron-3.5-content-safety:free"],"resolved":"nvidia/nemotron-3.5-content-safety:free"}, {"probe":"nvidia/nemotron-3.5-content-safety:free:free","candidates":["nvidia/nemotron-3.5-content-safety:free:free","nemotron-3.5-content-safety:free:free"],"resolved":null}, {"probe":"nvidia/nemotron-3-5-content-safety:free","candidates":["nvidia/nemotron-3-5-content-safety:free","nemotron-3-5-content-safety:free"],"resolved":null}, {"probe":"nvidia/nemotron.3.5.content.safety:free","candidates":["nvidia/nemotron.3.5.content.safety:free","nemotron.3.5.content.safety:free"],"resolved":null}, {"probe":"nvidia/nemotron-3.5-lightning:free","candidates":["nvidia/nemotron-3.5-lightning:free","nemotron-3.5-lightning:free"],"resolved":"nvidia/nemotron-3.5-lightning:free"}, {"probe":"nemotron-3.5-lightning:free","candidates":["nemotron-3.5-lightning:free","nvidia/nemotron-3.5-lightning:free"],"resolved":"nvidia/nemotron-3.5-lightning:free"}, - {"probe":"x-provider/nvidia/nemotron-3.5-lightning:free","candidates":["x-provider/nvidia/nemotron-3.5-lightning:free","nemotron-3.5-lightning:free","nvidia/nemotron-3.5-lightning:free"],"resolved":"nvidia/nemotron-3.5-lightning:free"}, + {"probe":"x-provider/nvidia/nemotron-3.5-lightning:free","candidates":["x-provider/nvidia/nemotron-3.5-lightning:free","nvidia/nemotron-3.5-lightning:free","nemotron-3.5-lightning:free"],"resolved":"nvidia/nemotron-3.5-lightning:free"}, {"probe":"nvidia/nemotron-3.5-lightning:free:free","candidates":["nvidia/nemotron-3.5-lightning:free:free","nemotron-3.5-lightning:free:free"],"resolved":null}, {"probe":"nvidia/nemotron-3-5-lightning:free","candidates":["nvidia/nemotron-3-5-lightning:free","nemotron-3-5-lightning:free"],"resolved":null}, {"probe":"nvidia/nemotron.3.5.lightning:free","candidates":["nvidia/nemotron.3.5.lightning:free","nemotron.3.5.lightning:free"],"resolved":null}, - {"probe":"openai/gpt-3.5-turbo-instruct","candidates":["openai/gpt-3.5-turbo-instruct","gpt-3.5-turbo-instruct"],"resolved":"openai/gpt-3.5-turbo-instruct"}, - {"probe":"gpt-3.5-turbo-instruct","candidates":["gpt-3.5-turbo-instruct","openai/gpt-3.5-turbo-instruct"],"resolved":"openai/gpt-3.5-turbo-instruct"}, - {"probe":"x-provider/openai/gpt-3.5-turbo-instruct","candidates":["x-provider/openai/gpt-3.5-turbo-instruct","gpt-3.5-turbo-instruct","openai/gpt-3.5-turbo-instruct"],"resolved":"openai/gpt-3.5-turbo-instruct"}, - {"probe":"openai/gpt-3.5-turbo-instruct:free","candidates":["openai/gpt-3.5-turbo-instruct:free","gpt-3.5-turbo-instruct:free"],"resolved":null}, - {"probe":"openai/gpt-3-5-turbo-instruct","candidates":["openai/gpt-3-5-turbo-instruct","gpt-3-5-turbo-instruct"],"resolved":null}, - {"probe":"openai/gpt.3.5.turbo.instruct","candidates":["openai/gpt.3.5.turbo.instruct","gpt.3.5.turbo.instruct"],"resolved":null}, - {"probe":"openai/gpt-4o-mini","candidates":["openai/gpt-4o-mini","gpt-4o-mini"],"resolved":"openai/gpt-4o-mini"}, - {"probe":"gpt-4o-mini","candidates":["gpt-4o-mini"],"resolved":"gpt-4o-mini"}, - {"probe":"x-provider/openai/gpt-4o-mini","candidates":["x-provider/openai/gpt-4o-mini","gpt-4o-mini"],"resolved":"gpt-4o-mini"}, - {"probe":"openai/gpt-4o-mini:free","candidates":["openai/gpt-4o-mini:free","gpt-4o-mini:free"],"resolved":null}, - {"probe":"openai/gpt.4o.mini","candidates":["openai/gpt.4o.mini","gpt.4o.mini"],"resolved":null}, - {"probe":"openai/gpt-5.1-codex-max","candidates":["openai/gpt-5.1-codex-max","gpt-5.1-codex-max"],"resolved":"openai/gpt-5.1-codex-max"}, - {"probe":"gpt-5.1-codex-max","candidates":["gpt-5.1-codex-max","openai/gpt-5.1-codex-max"],"resolved":"openai/gpt-5.1-codex-max"}, - {"probe":"x-provider/openai/gpt-5.1-codex-max","candidates":["x-provider/openai/gpt-5.1-codex-max","gpt-5.1-codex-max","openai/gpt-5.1-codex-max"],"resolved":"openai/gpt-5.1-codex-max"}, - {"probe":"openai/gpt-5.1-codex-max:free","candidates":["openai/gpt-5.1-codex-max:free","gpt-5.1-codex-max:free"],"resolved":null}, - {"probe":"openai/gpt-5-1-codex-max","candidates":["openai/gpt-5-1-codex-max","gpt-5-1-codex-max"],"resolved":null}, - {"probe":"openai/gpt.5.1.codex.max","candidates":["openai/gpt.5.1.codex.max","gpt.5.1.codex.max"],"resolved":null}, - {"probe":"openai/gpt-5.4-nano","candidates":["openai/gpt-5.4-nano","gpt-5.4-nano"],"resolved":"openai/gpt-5.4-nano"}, - {"probe":"gpt-5.4-nano","candidates":["gpt-5.4-nano"],"resolved":"gpt-5.4-nano"}, - {"probe":"x-provider/openai/gpt-5.4-nano","candidates":["x-provider/openai/gpt-5.4-nano","gpt-5.4-nano"],"resolved":"gpt-5.4-nano"}, - {"probe":"openai/gpt-5.4-nano:free","candidates":["openai/gpt-5.4-nano:free","gpt-5.4-nano:free"],"resolved":null}, - {"probe":"openai/gpt-5-4-nano","candidates":["openai/gpt-5-4-nano","gpt-5-4-nano"],"resolved":null}, - {"probe":"openai/gpt.5.4.nano","candidates":["openai/gpt.5.4.nano","gpt.5.4.nano"],"resolved":null}, - {"probe":"openai/gpt-6-astra","candidates":["openai/gpt-6-astra","gpt-6-astra"],"resolved":"openai/gpt-6-astra"}, - {"probe":"gpt-6-astra","candidates":["gpt-6-astra"],"resolved":"gpt-6-astra"}, - {"probe":"x-provider/openai/gpt-6-astra","candidates":["x-provider/openai/gpt-6-astra","gpt-6-astra"],"resolved":"gpt-6-astra"}, - {"probe":"openai/gpt-6-astra:free","candidates":["openai/gpt-6-astra:free","gpt-6-astra:free"],"resolved":null}, - {"probe":"openai/gpt.6.astra","candidates":["openai/gpt.6.astra","gpt.6.astra"],"resolved":null}, + {"probe":"openai/gpt-3.5-turbo-0613","candidates":["openai/gpt-3.5-turbo-0613","gpt-3.5-turbo-0613"],"resolved":"openai/gpt-3.5-turbo-0613"}, + {"probe":"gpt-3.5-turbo-0613","candidates":["gpt-3.5-turbo-0613","openai/gpt-3.5-turbo-0613"],"resolved":"openai/gpt-3.5-turbo-0613"}, + {"probe":"x-provider/openai/gpt-3.5-turbo-0613","candidates":["x-provider/openai/gpt-3.5-turbo-0613","openai/gpt-3.5-turbo-0613","gpt-3.5-turbo-0613"],"resolved":"openai/gpt-3.5-turbo-0613"}, + {"probe":"openai/gpt-3.5-turbo-0613:free","candidates":["openai/gpt-3.5-turbo-0613:free","gpt-3.5-turbo-0613:free"],"resolved":null}, + {"probe":"openai/gpt-3-5-turbo-0613","candidates":["openai/gpt-3-5-turbo-0613","gpt-3-5-turbo-0613"],"resolved":null}, + {"probe":"openai/gpt.3.5.turbo.0613","candidates":["openai/gpt.3.5.turbo.0613","gpt.3.5.turbo.0613"],"resolved":null}, + {"probe":"openai/gpt-4.1-nano","candidates":["openai/gpt-4.1-nano","gpt-4.1-nano"],"resolved":"openai/gpt-4.1-nano"}, + {"probe":"gpt-4.1-nano","candidates":["gpt-4.1-nano","openai/gpt-4.1-nano"],"resolved":"openai/gpt-4.1-nano"}, + {"probe":"x-provider/openai/gpt-4.1-nano","candidates":["x-provider/openai/gpt-4.1-nano","openai/gpt-4.1-nano","gpt-4.1-nano"],"resolved":"openai/gpt-4.1-nano"}, + {"probe":"openai/gpt-4.1-nano:free","candidates":["openai/gpt-4.1-nano:free","gpt-4.1-nano:free"],"resolved":null}, + {"probe":"openai/gpt-4-1-nano","candidates":["openai/gpt-4-1-nano","gpt-4-1-nano"],"resolved":null}, + {"probe":"openai/gpt.4.1.nano","candidates":["openai/gpt.4.1.nano","gpt.4.1.nano"],"resolved":null}, + {"probe":"openai/gpt-4o-2024-08-06","candidates":["openai/gpt-4o-2024-08-06","gpt-4o-2024-08-06"],"resolved":"openai/gpt-4o-2024-08-06"}, + {"probe":"gpt-4o-2024-08-06","candidates":["gpt-4o-2024-08-06"],"resolved":"gpt-4o-2024-08-06"}, + {"probe":"x-provider/openai/gpt-4o-2024-08-06","candidates":["x-provider/openai/gpt-4o-2024-08-06","openai/gpt-4o-2024-08-06","gpt-4o-2024-08-06"],"resolved":"openai/gpt-4o-2024-08-06"}, + {"probe":"openai/gpt-4o-2024-08-06:free","candidates":["openai/gpt-4o-2024-08-06:free","gpt-4o-2024-08-06:free"],"resolved":null}, + {"probe":"openai/gpt.4o.2024.08.06","candidates":["openai/gpt.4o.2024.08.06","gpt.4o.2024.08.06"],"resolved":null}, + {"probe":"openai/gpt-5.6-luna","candidates":["openai/gpt-5.6-luna","gpt-5.6-luna"],"resolved":"openai/gpt-5.6-luna"}, + {"probe":"gpt-5.6-luna","candidates":["gpt-5.6-luna"],"resolved":"gpt-5.6-luna"}, + {"probe":"x-provider/openai/gpt-5.6-luna","candidates":["x-provider/openai/gpt-5.6-luna","openai/gpt-5.6-luna","gpt-5.6-luna"],"resolved":"openai/gpt-5.6-luna"}, + {"probe":"openai/gpt-5.6-luna:free","candidates":["openai/gpt-5.6-luna:free","gpt-5.6-luna:free"],"resolved":null}, + {"probe":"openai/gpt-5-6-luna","candidates":["openai/gpt-5-6-luna","gpt-5-6-luna"],"resolved":null}, + {"probe":"openai/gpt.5.6.luna","candidates":["openai/gpt.5.6.luna","gpt.5.6.luna"],"resolved":null}, + {"probe":"openai/gpt-5.6-sol","candidates":["openai/gpt-5.6-sol","gpt-5.6-sol"],"resolved":"openai/gpt-5.6-sol"}, + {"probe":"gpt-5.6-sol","candidates":["gpt-5.6-sol"],"resolved":"gpt-5.6-sol"}, + {"probe":"x-provider/openai/gpt-5.6-sol","candidates":["x-provider/openai/gpt-5.6-sol","openai/gpt-5.6-sol","gpt-5.6-sol"],"resolved":"openai/gpt-5.6-sol"}, + {"probe":"openai/gpt-5.6-sol:free","candidates":["openai/gpt-5.6-sol:free","gpt-5.6-sol:free"],"resolved":null}, + {"probe":"openai/gpt-5-6-sol","candidates":["openai/gpt-5-6-sol","gpt-5-6-sol"],"resolved":null}, + {"probe":"openai/gpt.5.6.sol","candidates":["openai/gpt.5.6.sol","gpt.5.6.sol"],"resolved":null}, + {"probe":"openai/gpt-5.6-terra-pro","candidates":["openai/gpt-5.6-terra-pro","gpt-5.6-terra-pro"],"resolved":"openai/gpt-5.6-terra-pro"}, + {"probe":"gpt-5.6-terra-pro","candidates":["gpt-5.6-terra-pro","openai/gpt-5.6-terra-pro"],"resolved":"openai/gpt-5.6-terra-pro"}, + {"probe":"x-provider/openai/gpt-5.6-terra-pro","candidates":["x-provider/openai/gpt-5.6-terra-pro","openai/gpt-5.6-terra-pro","gpt-5.6-terra-pro"],"resolved":"openai/gpt-5.6-terra-pro"}, + {"probe":"openai/gpt-5.6-terra-pro:free","candidates":["openai/gpt-5.6-terra-pro:free","gpt-5.6-terra-pro:free"],"resolved":null}, + {"probe":"openai/gpt-5-6-terra-pro","candidates":["openai/gpt-5-6-terra-pro","gpt-5-6-terra-pro"],"resolved":null}, + {"probe":"openai/gpt.5.6.terra.pro","candidates":["openai/gpt.5.6.terra.pro","gpt.5.6.terra.pro"],"resolved":null}, + {"probe":"openai/gpt-audio","candidates":["openai/gpt-audio","gpt-audio"],"resolved":"openai/gpt-audio"}, + {"probe":"gpt-audio","candidates":["gpt-audio","openai/gpt-audio"],"resolved":"openai/gpt-audio"}, + {"probe":"x-provider/openai/gpt-audio","candidates":["x-provider/openai/gpt-audio","openai/gpt-audio","gpt-audio"],"resolved":"openai/gpt-audio"}, + {"probe":"openai/gpt-audio:free","candidates":["openai/gpt-audio:free","gpt-audio:free"],"resolved":null}, + {"probe":"openai/gpt.audio","candidates":["openai/gpt.audio","gpt.audio"],"resolved":null}, + {"probe":"openai/gpt-audio-mini","candidates":["openai/gpt-audio-mini","gpt-audio-mini"],"resolved":"openai/gpt-audio-mini"}, + {"probe":"gpt-audio-mini","candidates":["gpt-audio-mini","openai/gpt-audio-mini"],"resolved":"openai/gpt-audio-mini"}, + {"probe":"x-provider/openai/gpt-audio-mini","candidates":["x-provider/openai/gpt-audio-mini","openai/gpt-audio-mini","gpt-audio-mini"],"resolved":"openai/gpt-audio-mini"}, + {"probe":"openai/gpt-audio-mini:free","candidates":["openai/gpt-audio-mini:free","gpt-audio-mini:free"],"resolved":null}, + {"probe":"openai/gpt.audio.mini","candidates":["openai/gpt.audio.mini","gpt.audio.mini"],"resolved":null}, {"probe":"openai/gpt-oss-20b","candidates":["openai/gpt-oss-20b","gpt-oss-20b"],"resolved":"openai/gpt-oss-20b"}, {"probe":"gpt-oss-20b","candidates":["gpt-oss-20b","openai/gpt-oss-20b"],"resolved":"openai/gpt-oss-20b"}, - {"probe":"x-provider/openai/gpt-oss-20b","candidates":["x-provider/openai/gpt-oss-20b","gpt-oss-20b","openai/gpt-oss-20b"],"resolved":"openai/gpt-oss-20b"}, + {"probe":"x-provider/openai/gpt-oss-20b","candidates":["x-provider/openai/gpt-oss-20b","openai/gpt-oss-20b","gpt-oss-20b"],"resolved":"openai/gpt-oss-20b"}, {"probe":"openai/gpt-oss-20b:free","candidates":["openai/gpt-oss-20b:free","gpt-oss-20b:free"],"resolved":null}, {"probe":"openai/gpt.oss.20b","candidates":["openai/gpt.oss.20b","gpt.oss.20b"],"resolved":null}, - {"probe":"openrouter/auto","candidates":["openrouter/auto","auto"],"resolved":"openrouter/auto"}, - {"probe":"auto","candidates":["auto","openrouter/auto"],"resolved":"openrouter/auto"}, - {"probe":"x-provider/openrouter/auto","candidates":["x-provider/openrouter/auto","auto","openrouter/auto"],"resolved":"openrouter/auto"}, - {"probe":"openrouter/auto:free","candidates":["openrouter/auto:free","auto:free"],"resolved":null}, - {"probe":"perplexity/sonar-pro-search","candidates":["perplexity/sonar-pro-search","sonar-pro-search"],"resolved":"perplexity/sonar-pro-search"}, - {"probe":"sonar-pro-search","candidates":["sonar-pro-search","perplexity/sonar-pro-search"],"resolved":"perplexity/sonar-pro-search"}, - {"probe":"x-provider/perplexity/sonar-pro-search","candidates":["x-provider/perplexity/sonar-pro-search","sonar-pro-search","perplexity/sonar-pro-search"],"resolved":"perplexity/sonar-pro-search"}, - {"probe":"perplexity/sonar-pro-search:free","candidates":["perplexity/sonar-pro-search:free","sonar-pro-search:free"],"resolved":null}, - {"probe":"perplexity/sonar.pro.search","candidates":["perplexity/sonar.pro.search","sonar.pro.search"],"resolved":null}, {"probe":"poolside/laguna-s-2.1:free","candidates":["poolside/laguna-s-2.1:free","laguna-s-2.1:free"],"resolved":"poolside/laguna-s-2.1:free"}, {"probe":"laguna-s-2.1:free","candidates":["laguna-s-2.1:free","poolside/laguna-s-2.1:free"],"resolved":"poolside/laguna-s-2.1:free"}, - {"probe":"x-provider/poolside/laguna-s-2.1:free","candidates":["x-provider/poolside/laguna-s-2.1:free","laguna-s-2.1:free","poolside/laguna-s-2.1:free"],"resolved":"poolside/laguna-s-2.1:free"}, + {"probe":"x-provider/poolside/laguna-s-2.1:free","candidates":["x-provider/poolside/laguna-s-2.1:free","poolside/laguna-s-2.1:free","laguna-s-2.1:free"],"resolved":"poolside/laguna-s-2.1:free"}, {"probe":"poolside/laguna-s-2.1:free:free","candidates":["poolside/laguna-s-2.1:free:free","laguna-s-2.1:free:free"],"resolved":null}, {"probe":"poolside/laguna-s-2-1:free","candidates":["poolside/laguna-s-2-1:free","laguna-s-2-1:free"],"resolved":null}, {"probe":"poolside/laguna.s.2.1:free","candidates":["poolside/laguna.s.2.1:free","laguna.s.2.1:free"],"resolved":null}, {"probe":"poolside/laguna-xs-2.1:free","candidates":["poolside/laguna-xs-2.1:free","laguna-xs-2.1:free"],"resolved":"poolside/laguna-xs-2.1:free"}, {"probe":"laguna-xs-2.1:free","candidates":["laguna-xs-2.1:free","poolside/laguna-xs-2.1:free"],"resolved":"poolside/laguna-xs-2.1:free"}, - {"probe":"x-provider/poolside/laguna-xs-2.1:free","candidates":["x-provider/poolside/laguna-xs-2.1:free","laguna-xs-2.1:free","poolside/laguna-xs-2.1:free"],"resolved":"poolside/laguna-xs-2.1:free"}, + {"probe":"x-provider/poolside/laguna-xs-2.1:free","candidates":["x-provider/poolside/laguna-xs-2.1:free","poolside/laguna-xs-2.1:free","laguna-xs-2.1:free"],"resolved":"poolside/laguna-xs-2.1:free"}, {"probe":"poolside/laguna-xs-2.1:free:free","candidates":["poolside/laguna-xs-2.1:free:free","laguna-xs-2.1:free:free"],"resolved":null}, {"probe":"poolside/laguna-xs-2-1:free","candidates":["poolside/laguna-xs-2-1:free","laguna-xs-2-1:free"],"resolved":null}, {"probe":"poolside/laguna.xs.2.1:free","candidates":["poolside/laguna.xs.2.1:free","laguna.xs.2.1:free"],"resolved":null}, - {"probe":"qwen/qwen-plus","candidates":["qwen/qwen-plus","qwen-plus"],"resolved":"qwen/qwen-plus"}, - {"probe":"qwen-plus","candidates":["qwen-plus","qwen/qwen-plus"],"resolved":"qwen/qwen-plus"}, - {"probe":"x-provider/qwen/qwen-plus","candidates":["x-provider/qwen/qwen-plus","qwen-plus","qwen/qwen-plus"],"resolved":"qwen/qwen-plus"}, - {"probe":"qwen/qwen-plus:free","candidates":["qwen/qwen-plus:free","qwen-plus:free"],"resolved":null}, - {"probe":"qwen/qwen.plus","candidates":["qwen/qwen.plus","qwen.plus"],"resolved":null}, - {"probe":"qwen/qwen3-32b","candidates":["qwen/qwen3-32b","qwen3-32b"],"resolved":"qwen/qwen3-32b"}, - {"probe":"qwen3-32b","candidates":["qwen3-32b","qwen/qwen3-32b"],"resolved":"qwen/qwen3-32b"}, - {"probe":"x-provider/qwen/qwen3-32b","candidates":["x-provider/qwen/qwen3-32b","qwen3-32b","qwen/qwen3-32b"],"resolved":"qwen/qwen3-32b"}, - {"probe":"qwen/qwen3-32b:free","candidates":["qwen/qwen3-32b:free","qwen3-32b:free"],"resolved":null}, - {"probe":"qwen/qwen3.32b","candidates":["qwen/qwen3.32b","qwen3.32b"],"resolved":null}, - {"probe":"qwen/qwen3-next-80b-a3b-thinking","candidates":["qwen/qwen3-next-80b-a3b-thinking","qwen3-next-80b-a3b-thinking"],"resolved":"qwen/qwen3-next-80b-a3b-thinking"}, - {"probe":"qwen3-next-80b-a3b-thinking","candidates":["qwen3-next-80b-a3b-thinking","qwen/qwen3-next-80b-a3b-thinking"],"resolved":"qwen/qwen3-next-80b-a3b-thinking"}, - {"probe":"x-provider/qwen/qwen3-next-80b-a3b-thinking","candidates":["x-provider/qwen/qwen3-next-80b-a3b-thinking","qwen3-next-80b-a3b-thinking","qwen/qwen3-next-80b-a3b-thinking"],"resolved":"qwen/qwen3-next-80b-a3b-thinking"}, - {"probe":"qwen/qwen3-next-80b-a3b-thinking:free","candidates":["qwen/qwen3-next-80b-a3b-thinking:free","qwen3-next-80b-a3b-thinking:free"],"resolved":null}, - {"probe":"qwen/qwen3.next.80b.a3b.thinking","candidates":["qwen/qwen3.next.80b.a3b.thinking","qwen3.next.80b.a3b.thinking"],"resolved":null}, - {"probe":"qwen/qwen3.5-35b-a3b","candidates":["qwen/qwen3.5-35b-a3b","qwen3.5-35b-a3b"],"resolved":"qwen/qwen3.5-35b-a3b"}, - {"probe":"qwen3.5-35b-a3b","candidates":["qwen3.5-35b-a3b","qwen/qwen3.5-35b-a3b"],"resolved":"qwen/qwen3.5-35b-a3b"}, - {"probe":"x-provider/qwen/qwen3.5-35b-a3b","candidates":["x-provider/qwen/qwen3.5-35b-a3b","qwen3.5-35b-a3b","qwen/qwen3.5-35b-a3b"],"resolved":"qwen/qwen3.5-35b-a3b"}, - {"probe":"qwen/qwen3.5-35b-a3b:free","candidates":["qwen/qwen3.5-35b-a3b:free","qwen3.5-35b-a3b:free"],"resolved":null}, - {"probe":"qwen/qwen3-5-35b-a3b","candidates":["qwen/qwen3-5-35b-a3b","qwen3-5-35b-a3b"],"resolved":null}, - {"probe":"qwen/qwen3.5.35b.a3b","candidates":["qwen/qwen3.5.35b.a3b","qwen3.5.35b.a3b"],"resolved":null}, - {"probe":"qwen/qwen3.6-plus","candidates":["qwen/qwen3.6-plus","qwen3.6-plus"],"resolved":"qwen/qwen3.6-plus"}, - {"probe":"qwen3.6-plus","candidates":["qwen3.6-plus","qwen/qwen3.6-plus"],"resolved":"qwen/qwen3.6-plus"}, - {"probe":"x-provider/qwen/qwen3.6-plus","candidates":["x-provider/qwen/qwen3.6-plus","qwen3.6-plus","qwen/qwen3.6-plus"],"resolved":"qwen/qwen3.6-plus"}, - {"probe":"qwen/qwen3.6-plus:free","candidates":["qwen/qwen3.6-plus:free","qwen3.6-plus:free"],"resolved":null}, - {"probe":"qwen/qwen3-6-plus","candidates":["qwen/qwen3-6-plus","qwen3-6-plus"],"resolved":null}, - {"probe":"qwen/qwen3.6.plus","candidates":["qwen/qwen3.6.plus","qwen3.6.plus"],"resolved":null}, + {"probe":"qwen/qwen3-8b","candidates":["qwen/qwen3-8b","qwen3-8b"],"resolved":"qwen/qwen3-8b"}, + {"probe":"qwen3-8b","candidates":["qwen3-8b","qwen/qwen3-8b"],"resolved":"qwen/qwen3-8b"}, + {"probe":"x-provider/qwen/qwen3-8b","candidates":["x-provider/qwen/qwen3-8b","qwen/qwen3-8b","qwen3-8b"],"resolved":"qwen/qwen3-8b"}, + {"probe":"qwen/qwen3-8b:free","candidates":["qwen/qwen3-8b:free","qwen3-8b:free"],"resolved":null}, + {"probe":"qwen/qwen3.8b","candidates":["qwen/qwen3.8b","qwen3.8b"],"resolved":null}, + {"probe":"qwen/qwen3-coder-flash","candidates":["qwen/qwen3-coder-flash","qwen3-coder-flash"],"resolved":"qwen/qwen3-coder-flash"}, + {"probe":"qwen3-coder-flash","candidates":["qwen3-coder-flash","qwen/qwen3-coder-flash"],"resolved":"qwen/qwen3-coder-flash"}, + {"probe":"x-provider/qwen/qwen3-coder-flash","candidates":["x-provider/qwen/qwen3-coder-flash","qwen/qwen3-coder-flash","qwen3-coder-flash"],"resolved":"qwen/qwen3-coder-flash"}, + {"probe":"qwen/qwen3-coder-flash:free","candidates":["qwen/qwen3-coder-flash:free","qwen3-coder-flash:free"],"resolved":null}, + {"probe":"qwen/qwen3.coder.flash","candidates":["qwen/qwen3.coder.flash","qwen3.coder.flash"],"resolved":null}, + {"probe":"qwen/qwen3-coder-plus","candidates":["qwen/qwen3-coder-plus","qwen3-coder-plus"],"resolved":"qwen/qwen3-coder-plus"}, + {"probe":"qwen3-coder-plus","candidates":["qwen3-coder-plus","qwen/qwen3-coder-plus"],"resolved":"qwen/qwen3-coder-plus"}, + {"probe":"x-provider/qwen/qwen3-coder-plus","candidates":["x-provider/qwen/qwen3-coder-plus","qwen/qwen3-coder-plus","qwen3-coder-plus"],"resolved":"qwen/qwen3-coder-plus"}, + {"probe":"qwen/qwen3-coder-plus:free","candidates":["qwen/qwen3-coder-plus:free","qwen3-coder-plus:free"],"resolved":null}, + {"probe":"qwen/qwen3.coder.plus","candidates":["qwen/qwen3.coder.plus","qwen3.coder.plus"],"resolved":null}, + {"probe":"qwen/qwen3-vl-235b-a22b-instruct","candidates":["qwen/qwen3-vl-235b-a22b-instruct","qwen3-vl-235b-a22b-instruct"],"resolved":"qwen/qwen3-vl-235b-a22b-instruct"}, + {"probe":"qwen3-vl-235b-a22b-instruct","candidates":["qwen3-vl-235b-a22b-instruct","qwen/qwen3-vl-235b-a22b-instruct"],"resolved":"qwen/qwen3-vl-235b-a22b-instruct"}, + {"probe":"x-provider/qwen/qwen3-vl-235b-a22b-instruct","candidates":["x-provider/qwen/qwen3-vl-235b-a22b-instruct","qwen/qwen3-vl-235b-a22b-instruct","qwen3-vl-235b-a22b-instruct"],"resolved":"qwen/qwen3-vl-235b-a22b-instruct"}, + {"probe":"qwen/qwen3-vl-235b-a22b-instruct:free","candidates":["qwen/qwen3-vl-235b-a22b-instruct:free","qwen3-vl-235b-a22b-instruct:free"],"resolved":null}, + {"probe":"qwen/qwen3.vl.235b.a22b.instruct","candidates":["qwen/qwen3.vl.235b.a22b.instruct","qwen3.vl.235b.a22b.instruct"],"resolved":null}, + {"probe":"qwen/qwen3-vl-235b-a22b-thinking","candidates":["qwen/qwen3-vl-235b-a22b-thinking","qwen3-vl-235b-a22b-thinking"],"resolved":"qwen/qwen3-vl-235b-a22b-thinking"}, + {"probe":"qwen3-vl-235b-a22b-thinking","candidates":["qwen3-vl-235b-a22b-thinking","qwen/qwen3-vl-235b-a22b-thinking"],"resolved":"qwen/qwen3-vl-235b-a22b-thinking"}, + {"probe":"x-provider/qwen/qwen3-vl-235b-a22b-thinking","candidates":["x-provider/qwen/qwen3-vl-235b-a22b-thinking","qwen/qwen3-vl-235b-a22b-thinking","qwen3-vl-235b-a22b-thinking"],"resolved":"qwen/qwen3-vl-235b-a22b-thinking"}, + {"probe":"qwen/qwen3-vl-235b-a22b-thinking:free","candidates":["qwen/qwen3-vl-235b-a22b-thinking:free","qwen3-vl-235b-a22b-thinking:free"],"resolved":null}, + {"probe":"qwen/qwen3.vl.235b.a22b.thinking","candidates":["qwen/qwen3.vl.235b.a22b.thinking","qwen3.vl.235b.a22b.thinking"],"resolved":null}, {"probe":"qwen/qwen3.8-27b:free","candidates":["qwen/qwen3.8-27b:free","qwen3.8-27b:free"],"resolved":"qwen/qwen3.8-27b:free"}, {"probe":"qwen3.8-27b:free","candidates":["qwen3.8-27b:free","qwen/qwen3.8-27b:free"],"resolved":"qwen/qwen3.8-27b:free"}, - {"probe":"x-provider/qwen/qwen3.8-27b:free","candidates":["x-provider/qwen/qwen3.8-27b:free","qwen3.8-27b:free","qwen/qwen3.8-27b:free"],"resolved":"qwen/qwen3.8-27b:free"}, + {"probe":"x-provider/qwen/qwen3.8-27b:free","candidates":["x-provider/qwen/qwen3.8-27b:free","qwen/qwen3.8-27b:free","qwen3.8-27b:free"],"resolved":"qwen/qwen3.8-27b:free"}, {"probe":"qwen/qwen3.8-27b:free:free","candidates":["qwen/qwen3.8-27b:free:free","qwen3.8-27b:free:free"],"resolved":null}, {"probe":"qwen/qwen3-8-27b:free","candidates":["qwen/qwen3-8-27b:free","qwen3-8-27b:free"],"resolved":null}, {"probe":"qwen/qwen3.8.27b:free","candidates":["qwen/qwen3.8.27b:free","qwen3.8.27b:free"],"resolved":null}, - {"probe":"qwen/qwen3.8-omni-flash","candidates":["qwen/qwen3.8-omni-flash","qwen3.8-omni-flash"],"resolved":"qwen/qwen3.8-omni-flash"}, - {"probe":"qwen3.8-omni-flash","candidates":["qwen3.8-omni-flash","qwen/qwen3.8-omni-flash"],"resolved":"qwen/qwen3.8-omni-flash"}, - {"probe":"x-provider/qwen/qwen3.8-omni-flash","candidates":["x-provider/qwen/qwen3.8-omni-flash","qwen3.8-omni-flash","qwen/qwen3.8-omni-flash"],"resolved":"qwen/qwen3.8-omni-flash"}, - {"probe":"qwen/qwen3.8-omni-flash:free","candidates":["qwen/qwen3.8-omni-flash:free","qwen3.8-omni-flash:free"],"resolved":null}, - {"probe":"qwen/qwen3-8-omni-flash","candidates":["qwen/qwen3-8-omni-flash","qwen3-8-omni-flash"],"resolved":null}, - {"probe":"qwen/qwen3.8.omni.flash","candidates":["qwen/qwen3.8.omni.flash","qwen3.8.omni.flash"],"resolved":null}, - {"probe":"sao10k/l3.1-euryale-70b","candidates":["sao10k/l3.1-euryale-70b","l3.1-euryale-70b"],"resolved":"sao10k/l3.1-euryale-70b"}, - {"probe":"l3.1-euryale-70b","candidates":["l3.1-euryale-70b","sao10k/l3.1-euryale-70b"],"resolved":"sao10k/l3.1-euryale-70b"}, - {"probe":"x-provider/sao10k/l3.1-euryale-70b","candidates":["x-provider/sao10k/l3.1-euryale-70b","l3.1-euryale-70b","sao10k/l3.1-euryale-70b"],"resolved":"sao10k/l3.1-euryale-70b"}, - {"probe":"sao10k/l3.1-euryale-70b:free","candidates":["sao10k/l3.1-euryale-70b:free","l3.1-euryale-70b:free"],"resolved":null}, - {"probe":"sao10k/l3-1-euryale-70b","candidates":["sao10k/l3-1-euryale-70b","l3-1-euryale-70b"],"resolved":null}, - {"probe":"sao10k/l3.1.euryale.70b","candidates":["sao10k/l3.1.euryale.70b","l3.1.euryale.70b"],"resolved":null}, {"probe":"tencent/hy3-preview","candidates":["tencent/hy3-preview","hy3-preview"],"resolved":"tencent/hy3-preview"}, {"probe":"hy3-preview","candidates":["hy3-preview","tencent/hy3-preview"],"resolved":"tencent/hy3-preview"}, - {"probe":"x-provider/tencent/hy3-preview","candidates":["x-provider/tencent/hy3-preview","hy3-preview","tencent/hy3-preview"],"resolved":"tencent/hy3-preview"}, + {"probe":"x-provider/tencent/hy3-preview","candidates":["x-provider/tencent/hy3-preview","tencent/hy3-preview","hy3-preview"],"resolved":"tencent/hy3-preview"}, {"probe":"tencent/hy3-preview:free","candidates":["tencent/hy3-preview:free","hy3-preview:free"],"resolved":null}, {"probe":"tencent/hy3.preview","candidates":["tencent/hy3.preview","hy3.preview"],"resolved":null}, {"probe":"thinkingmachines/inkling-small:free","candidates":["thinkingmachines/inkling-small:free","inkling-small:free"],"resolved":"thinkingmachines/inkling-small:free"}, {"probe":"inkling-small:free","candidates":["inkling-small:free","thinkingmachines/inkling-small:free"],"resolved":"thinkingmachines/inkling-small:free"}, - {"probe":"x-provider/thinkingmachines/inkling-small:free","candidates":["x-provider/thinkingmachines/inkling-small:free","inkling-small:free","thinkingmachines/inkling-small:free"],"resolved":"thinkingmachines/inkling-small:free"}, + {"probe":"x-provider/thinkingmachines/inkling-small:free","candidates":["x-provider/thinkingmachines/inkling-small:free","thinkingmachines/inkling-small:free","inkling-small:free"],"resolved":"thinkingmachines/inkling-small:free"}, {"probe":"thinkingmachines/inkling-small:free:free","candidates":["thinkingmachines/inkling-small:free:free","inkling-small:free:free"],"resolved":null}, {"probe":"thinkingmachines/inkling.small:free","candidates":["thinkingmachines/inkling.small:free","inkling.small:free"],"resolved":null}, {"probe":"thinkingmachines/inkling:free","candidates":["thinkingmachines/inkling:free","inkling:free"],"resolved":"thinkingmachines/inkling:free"}, {"probe":"inkling:free","candidates":["inkling:free","thinkingmachines/inkling:free"],"resolved":"thinkingmachines/inkling:free"}, - {"probe":"x-provider/thinkingmachines/inkling:free","candidates":["x-provider/thinkingmachines/inkling:free","inkling:free","thinkingmachines/inkling:free"],"resolved":"thinkingmachines/inkling:free"}, + {"probe":"x-provider/thinkingmachines/inkling:free","candidates":["x-provider/thinkingmachines/inkling:free","thinkingmachines/inkling:free","inkling:free"],"resolved":"thinkingmachines/inkling:free"}, {"probe":"thinkingmachines/inkling:free:free","candidates":["thinkingmachines/inkling:free:free","inkling:free:free"],"resolved":null}, {"probe":"undi95/remm-slerp-l2-13b","candidates":["undi95/remm-slerp-l2-13b","remm-slerp-l2-13b"],"resolved":"undi95/remm-slerp-l2-13b"}, {"probe":"remm-slerp-l2-13b","candidates":["remm-slerp-l2-13b","undi95/remm-slerp-l2-13b"],"resolved":"undi95/remm-slerp-l2-13b"}, - {"probe":"x-provider/undi95/remm-slerp-l2-13b","candidates":["x-provider/undi95/remm-slerp-l2-13b","remm-slerp-l2-13b","undi95/remm-slerp-l2-13b"],"resolved":"undi95/remm-slerp-l2-13b"}, + {"probe":"x-provider/undi95/remm-slerp-l2-13b","candidates":["x-provider/undi95/remm-slerp-l2-13b","undi95/remm-slerp-l2-13b","remm-slerp-l2-13b"],"resolved":"undi95/remm-slerp-l2-13b"}, {"probe":"undi95/remm-slerp-l2-13b:free","candidates":["undi95/remm-slerp-l2-13b:free","remm-slerp-l2-13b:free"],"resolved":null}, {"probe":"undi95/remm.slerp.l2.13b","candidates":["undi95/remm.slerp.l2.13b","remm.slerp.l2.13b"],"resolved":null}, {"probe":"x-ai/grok-4.7","candidates":["x-ai/grok-4.7","grok-4.7"],"resolved":"x-ai/grok-4.7"}, - {"probe":"x-provider/x-ai/grok-4.7","candidates":["x-provider/x-ai/grok-4.7","grok-4.7"],"resolved":"grok-4.7"}, + {"probe":"grok-4.7","candidates":["grok-4.7"],"resolved":"grok-4.7"}, + {"probe":"x-provider/x-ai/grok-4.7","candidates":["x-provider/x-ai/grok-4.7","x-ai/grok-4.7","grok-4.7"],"resolved":"x-ai/grok-4.7"}, {"probe":"x-ai/grok-4.7:free","candidates":["x-ai/grok-4.7:free","grok-4.7:free"],"resolved":null}, {"probe":"x-ai/grok-4-7","candidates":["x-ai/grok-4-7","grok-4-7"],"resolved":null}, {"probe":"x.ai/grok.4.7","candidates":["x.ai/grok.4.7","grok.4.7"],"resolved":null}, - {"probe":"z-ai/glm-4.6","candidates":["z-ai/glm-4.6","glm-4.6"],"resolved":"z-ai/glm-4.6"}, - {"probe":"glm-4.6","candidates":["glm-4.6","z-ai/glm-4.6"],"resolved":"z-ai/glm-4.6"}, - {"probe":"x-provider/z-ai/glm-4.6","candidates":["x-provider/z-ai/glm-4.6","glm-4.6","z-ai/glm-4.6"],"resolved":"z-ai/glm-4.6"}, - {"probe":"z-ai/glm-4.6:free","candidates":["z-ai/glm-4.6:free","glm-4.6:free"],"resolved":null}, - {"probe":"z-ai/glm-4-6","candidates":["z-ai/glm-4-6","glm-4-6"],"resolved":null}, - {"probe":"z.ai/glm.4.6","candidates":["z.ai/glm.4.6","glm.4.6"],"resolved":null}, {"probe":"z-ai/glm-5.2:free","candidates":["z-ai/glm-5.2:free","glm-5.2:free"],"resolved":"z-ai/glm-5.2:free"}, {"probe":"glm-5.2:free","candidates":["glm-5.2:free","z-ai/glm-5.2:free"],"resolved":"z-ai/glm-5.2:free"}, - {"probe":"x-provider/z-ai/glm-5.2:free","candidates":["x-provider/z-ai/glm-5.2:free","glm-5.2:free","z-ai/glm-5.2:free"],"resolved":"z-ai/glm-5.2:free"}, + {"probe":"x-provider/z-ai/glm-5.2:free","candidates":["x-provider/z-ai/glm-5.2:free","z-ai/glm-5.2:free","glm-5.2:free"],"resolved":"z-ai/glm-5.2:free"}, {"probe":"z-ai/glm-5.2:free:free","candidates":["z-ai/glm-5.2:free:free","glm-5.2:free:free"],"resolved":null}, {"probe":"z-ai/glm-5-2:free","candidates":["z-ai/glm-5-2:free","glm-5-2:free"],"resolved":null}, {"probe":"z.ai/glm.5.2:free","candidates":["z.ai/glm.5.2:free","glm.5.2:free"],"resolved":null}, - {"probe":"z-ai/glm-5.3-flash","candidates":["z-ai/glm-5.3-flash","glm-5.3-flash"],"resolved":"z-ai/glm-5.3-flash"}, - {"probe":"glm-5.3-flash","candidates":["glm-5.3-flash","z-ai/glm-5.3-flash"],"resolved":"z-ai/glm-5.3-flash"}, - {"probe":"x-provider/z-ai/glm-5.3-flash","candidates":["x-provider/z-ai/glm-5.3-flash","glm-5.3-flash","z-ai/glm-5.3-flash"],"resolved":"z-ai/glm-5.3-flash"}, - {"probe":"z-ai/glm-5.3-flash:free","candidates":["z-ai/glm-5.3-flash:free","glm-5.3-flash:free"],"resolved":null}, - {"probe":"z-ai/glm-5-3-flash","candidates":["z-ai/glm-5-3-flash","glm-5-3-flash"],"resolved":null}, - {"probe":"z.ai/glm.5.3.flash","candidates":["z.ai/glm.5.3.flash","glm.5.3.flash"],"resolved":null}, + {"probe":"z-ai/glm-5.3","candidates":["z-ai/glm-5.3","glm-5.3"],"resolved":"z-ai/glm-5.3"}, + {"probe":"glm-5.3","candidates":["glm-5.3","z-ai/glm-5.3"],"resolved":"z-ai/glm-5.3"}, + {"probe":"x-provider/z-ai/glm-5.3","candidates":["x-provider/z-ai/glm-5.3","z-ai/glm-5.3","glm-5.3"],"resolved":"z-ai/glm-5.3"}, + {"probe":"z-ai/glm-5.3:free","candidates":["z-ai/glm-5.3:free","glm-5.3:free"],"resolved":null}, + {"probe":"z-ai/glm-5-3","candidates":["z-ai/glm-5-3","glm-5-3"],"resolved":null}, + {"probe":"z.ai/glm.5.3","candidates":["z.ai/glm.5.3","glm.5.3"],"resolved":null}, + {"probe":"z-ai/glm-5.3-prime","candidates":["z-ai/glm-5.3-prime","glm-5.3-prime"],"resolved":"z-ai/glm-5.3-prime"}, + {"probe":"glm-5.3-prime","candidates":["glm-5.3-prime","z-ai/glm-5.3-prime"],"resolved":"z-ai/glm-5.3-prime"}, + {"probe":"x-provider/z-ai/glm-5.3-prime","candidates":["x-provider/z-ai/glm-5.3-prime","z-ai/glm-5.3-prime","glm-5.3-prime"],"resolved":"z-ai/glm-5.3-prime"}, + {"probe":"z-ai/glm-5.3-prime:free","candidates":["z-ai/glm-5.3-prime:free","glm-5.3-prime:free"],"resolved":null}, + {"probe":"z-ai/glm-5-3-prime","candidates":["z-ai/glm-5-3-prime","glm-5-3-prime"],"resolved":null}, + {"probe":"z.ai/glm.5.3.prime","candidates":["z.ai/glm.5.3.prime","glm.5.3.prime"],"resolved":null}, + {"probe":"z-ai/glm-5v-turbo","candidates":["z-ai/glm-5v-turbo","glm-5v-turbo"],"resolved":"z-ai/glm-5v-turbo"}, + {"probe":"glm-5v-turbo","candidates":["glm-5v-turbo","z-ai/glm-5v-turbo"],"resolved":"z-ai/glm-5v-turbo"}, + {"probe":"x-provider/z-ai/glm-5v-turbo","candidates":["x-provider/z-ai/glm-5v-turbo","z-ai/glm-5v-turbo","glm-5v-turbo"],"resolved":"z-ai/glm-5v-turbo"}, + {"probe":"z-ai/glm-5v-turbo:free","candidates":["z-ai/glm-5v-turbo:free","glm-5v-turbo:free"],"resolved":null}, + {"probe":"z.ai/glm.5v.turbo","candidates":["z.ai/glm.5v.turbo","glm.5v.turbo"],"resolved":null}, {"probe":"~anthropic/claude-fable-latest","candidates":["~anthropic/claude-fable-latest","claude-fable-latest"],"resolved":"~anthropic/claude-fable-latest"}, {"probe":"claude-fable-latest","candidates":["claude-fable-latest","~anthropic/claude-fable-latest"],"resolved":"~anthropic/claude-fable-latest"}, - {"probe":"x-provider/~anthropic/claude-fable-latest","candidates":["x-provider/~anthropic/claude-fable-latest","claude-fable-latest","~anthropic/claude-fable-latest"],"resolved":"~anthropic/claude-fable-latest"}, + {"probe":"x-provider/~anthropic/claude-fable-latest","candidates":["x-provider/~anthropic/claude-fable-latest","~anthropic/claude-fable-latest","claude-fable-latest"],"resolved":"~anthropic/claude-fable-latest"}, {"probe":"~anthropic/claude-fable-latest:free","candidates":["~anthropic/claude-fable-latest:free","claude-fable-latest:free"],"resolved":null}, {"probe":"~anthropic/claude.fable.latest","candidates":["~anthropic/claude.fable.latest","claude.fable.latest"],"resolved":null}, {"probe":"~anthropic/claude-haiku-latest","candidates":["~anthropic/claude-haiku-latest","claude-haiku-latest"],"resolved":"~anthropic/claude-haiku-latest"}, {"probe":"claude-haiku-latest","candidates":["claude-haiku-latest","~anthropic/claude-haiku-latest"],"resolved":"~anthropic/claude-haiku-latest"}, - {"probe":"x-provider/~anthropic/claude-haiku-latest","candidates":["x-provider/~anthropic/claude-haiku-latest","claude-haiku-latest","~anthropic/claude-haiku-latest"],"resolved":"~anthropic/claude-haiku-latest"}, + {"probe":"x-provider/~anthropic/claude-haiku-latest","candidates":["x-provider/~anthropic/claude-haiku-latest","~anthropic/claude-haiku-latest","claude-haiku-latest"],"resolved":"~anthropic/claude-haiku-latest"}, {"probe":"~anthropic/claude-haiku-latest:free","candidates":["~anthropic/claude-haiku-latest:free","claude-haiku-latest:free"],"resolved":null}, {"probe":"~anthropic/claude.haiku.latest","candidates":["~anthropic/claude.haiku.latest","claude.haiku.latest"],"resolved":null}, {"probe":"~anthropic/claude-opus-latest","candidates":["~anthropic/claude-opus-latest","claude-opus-latest"],"resolved":"~anthropic/claude-opus-latest"}, {"probe":"claude-opus-latest","candidates":["claude-opus-latest","~anthropic/claude-opus-latest"],"resolved":"~anthropic/claude-opus-latest"}, - {"probe":"x-provider/~anthropic/claude-opus-latest","candidates":["x-provider/~anthropic/claude-opus-latest","claude-opus-latest","~anthropic/claude-opus-latest"],"resolved":"~anthropic/claude-opus-latest"}, + {"probe":"x-provider/~anthropic/claude-opus-latest","candidates":["x-provider/~anthropic/claude-opus-latest","~anthropic/claude-opus-latest","claude-opus-latest"],"resolved":"~anthropic/claude-opus-latest"}, {"probe":"~anthropic/claude-opus-latest:free","candidates":["~anthropic/claude-opus-latest:free","claude-opus-latest:free"],"resolved":null}, {"probe":"~anthropic/claude.opus.latest","candidates":["~anthropic/claude.opus.latest","claude.opus.latest"],"resolved":null}, {"probe":"~anthropic/claude-sonnet-latest","candidates":["~anthropic/claude-sonnet-latest","claude-sonnet-latest"],"resolved":"~anthropic/claude-sonnet-latest"}, {"probe":"claude-sonnet-latest","candidates":["claude-sonnet-latest","~anthropic/claude-sonnet-latest"],"resolved":"~anthropic/claude-sonnet-latest"}, - {"probe":"x-provider/~anthropic/claude-sonnet-latest","candidates":["x-provider/~anthropic/claude-sonnet-latest","claude-sonnet-latest","~anthropic/claude-sonnet-latest"],"resolved":"~anthropic/claude-sonnet-latest"}, + {"probe":"x-provider/~anthropic/claude-sonnet-latest","candidates":["x-provider/~anthropic/claude-sonnet-latest","~anthropic/claude-sonnet-latest","claude-sonnet-latest"],"resolved":"~anthropic/claude-sonnet-latest"}, {"probe":"~anthropic/claude-sonnet-latest:free","candidates":["~anthropic/claude-sonnet-latest:free","claude-sonnet-latest:free"],"resolved":null}, {"probe":"~anthropic/claude.sonnet.latest","candidates":["~anthropic/claude.sonnet.latest","claude.sonnet.latest"],"resolved":null}, {"probe":"~deepseek/deepseek-flash-latest","candidates":["~deepseek/deepseek-flash-latest","deepseek-flash-latest"],"resolved":"~deepseek/deepseek-flash-latest"}, {"probe":"deepseek-flash-latest","candidates":["deepseek-flash-latest","~deepseek/deepseek-flash-latest"],"resolved":"~deepseek/deepseek-flash-latest"}, - {"probe":"x-provider/~deepseek/deepseek-flash-latest","candidates":["x-provider/~deepseek/deepseek-flash-latest","deepseek-flash-latest","~deepseek/deepseek-flash-latest"],"resolved":"~deepseek/deepseek-flash-latest"}, + {"probe":"x-provider/~deepseek/deepseek-flash-latest","candidates":["x-provider/~deepseek/deepseek-flash-latest","~deepseek/deepseek-flash-latest","deepseek-flash-latest"],"resolved":"~deepseek/deepseek-flash-latest"}, {"probe":"~deepseek/deepseek-flash-latest:free","candidates":["~deepseek/deepseek-flash-latest:free","deepseek-flash-latest:free"],"resolved":null}, {"probe":"~deepseek/deepseek.flash.latest","candidates":["~deepseek/deepseek.flash.latest","deepseek.flash.latest"],"resolved":null}, {"probe":"~deepseek/deepseek-pro-latest","candidates":["~deepseek/deepseek-pro-latest","deepseek-pro-latest"],"resolved":"~deepseek/deepseek-pro-latest"}, {"probe":"deepseek-pro-latest","candidates":["deepseek-pro-latest","~deepseek/deepseek-pro-latest"],"resolved":"~deepseek/deepseek-pro-latest"}, - {"probe":"x-provider/~deepseek/deepseek-pro-latest","candidates":["x-provider/~deepseek/deepseek-pro-latest","deepseek-pro-latest","~deepseek/deepseek-pro-latest"],"resolved":"~deepseek/deepseek-pro-latest"}, + {"probe":"x-provider/~deepseek/deepseek-pro-latest","candidates":["x-provider/~deepseek/deepseek-pro-latest","~deepseek/deepseek-pro-latest","deepseek-pro-latest"],"resolved":"~deepseek/deepseek-pro-latest"}, {"probe":"~deepseek/deepseek-pro-latest:free","candidates":["~deepseek/deepseek-pro-latest:free","deepseek-pro-latest:free"],"resolved":null}, {"probe":"~deepseek/deepseek.pro.latest","candidates":["~deepseek/deepseek.pro.latest","deepseek.pro.latest"],"resolved":null}, {"probe":"~deepseek/deepseek-v4-flash-latest","candidates":["~deepseek/deepseek-v4-flash-latest","deepseek-v4-flash-latest"],"resolved":"~deepseek/deepseek-v4-flash-latest"}, {"probe":"deepseek-v4-flash-latest","candidates":["deepseek-v4-flash-latest","~deepseek/deepseek-v4-flash-latest"],"resolved":"~deepseek/deepseek-v4-flash-latest"}, - {"probe":"x-provider/~deepseek/deepseek-v4-flash-latest","candidates":["x-provider/~deepseek/deepseek-v4-flash-latest","deepseek-v4-flash-latest","~deepseek/deepseek-v4-flash-latest"],"resolved":"~deepseek/deepseek-v4-flash-latest"}, + {"probe":"x-provider/~deepseek/deepseek-v4-flash-latest","candidates":["x-provider/~deepseek/deepseek-v4-flash-latest","~deepseek/deepseek-v4-flash-latest","deepseek-v4-flash-latest"],"resolved":"~deepseek/deepseek-v4-flash-latest"}, {"probe":"~deepseek/deepseek-v4-flash-latest:free","candidates":["~deepseek/deepseek-v4-flash-latest:free","deepseek-v4-flash-latest:free"],"resolved":null}, {"probe":"~deepseek/deepseek.v4.flash.latest","candidates":["~deepseek/deepseek.v4.flash.latest","deepseek.v4.flash.latest"],"resolved":null}, {"probe":"~google/gemini-flash-latest","candidates":["~google/gemini-flash-latest","gemini-flash-latest"],"resolved":"~google/gemini-flash-latest"}, {"probe":"gemini-flash-latest","candidates":["gemini-flash-latest"],"resolved":"gemini-flash-latest"}, - {"probe":"x-provider/~google/gemini-flash-latest","candidates":["x-provider/~google/gemini-flash-latest","gemini-flash-latest"],"resolved":"gemini-flash-latest"}, + {"probe":"x-provider/~google/gemini-flash-latest","candidates":["x-provider/~google/gemini-flash-latest","~google/gemini-flash-latest","gemini-flash-latest"],"resolved":"~google/gemini-flash-latest"}, {"probe":"~google/gemini-flash-latest:free","candidates":["~google/gemini-flash-latest:free","gemini-flash-latest:free"],"resolved":null}, {"probe":"~google/gemini.flash.latest","candidates":["~google/gemini.flash.latest","gemini.flash.latest"],"resolved":null}, {"probe":"~google/gemini-pro-latest","candidates":["~google/gemini-pro-latest","gemini-pro-latest"],"resolved":"~google/gemini-pro-latest"}, {"probe":"gemini-pro-latest","candidates":["gemini-pro-latest","~google/gemini-pro-latest"],"resolved":"~google/gemini-pro-latest"}, - {"probe":"x-provider/~google/gemini-pro-latest","candidates":["x-provider/~google/gemini-pro-latest","gemini-pro-latest","~google/gemini-pro-latest"],"resolved":"~google/gemini-pro-latest"}, + {"probe":"x-provider/~google/gemini-pro-latest","candidates":["x-provider/~google/gemini-pro-latest","~google/gemini-pro-latest","gemini-pro-latest"],"resolved":"~google/gemini-pro-latest"}, {"probe":"~google/gemini-pro-latest:free","candidates":["~google/gemini-pro-latest:free","gemini-pro-latest:free"],"resolved":null}, {"probe":"~google/gemini.pro.latest","candidates":["~google/gemini.pro.latest","gemini.pro.latest"],"resolved":null}, {"probe":"~moonshotai/kimi-latest","candidates":["~moonshotai/kimi-latest","kimi-latest"],"resolved":"~moonshotai/kimi-latest"}, {"probe":"kimi-latest","candidates":["kimi-latest","~moonshotai/kimi-latest"],"resolved":"~moonshotai/kimi-latest"}, - {"probe":"x-provider/~moonshotai/kimi-latest","candidates":["x-provider/~moonshotai/kimi-latest","kimi-latest","~moonshotai/kimi-latest"],"resolved":"~moonshotai/kimi-latest"}, + {"probe":"x-provider/~moonshotai/kimi-latest","candidates":["x-provider/~moonshotai/kimi-latest","~moonshotai/kimi-latest","kimi-latest"],"resolved":"~moonshotai/kimi-latest"}, {"probe":"~moonshotai/kimi-latest:free","candidates":["~moonshotai/kimi-latest:free","kimi-latest:free"],"resolved":null}, {"probe":"~moonshotai/kimi.latest","candidates":["~moonshotai/kimi.latest","kimi.latest"],"resolved":null}, {"probe":"~openai/gpt-astra-latest","candidates":["~openai/gpt-astra-latest","gpt-astra-latest"],"resolved":"~openai/gpt-astra-latest"}, {"probe":"gpt-astra-latest","candidates":["gpt-astra-latest","~openai/gpt-astra-latest"],"resolved":"~openai/gpt-astra-latest"}, - {"probe":"x-provider/~openai/gpt-astra-latest","candidates":["x-provider/~openai/gpt-astra-latest","gpt-astra-latest","~openai/gpt-astra-latest"],"resolved":"~openai/gpt-astra-latest"}, + {"probe":"x-provider/~openai/gpt-astra-latest","candidates":["x-provider/~openai/gpt-astra-latest","~openai/gpt-astra-latest","gpt-astra-latest"],"resolved":"~openai/gpt-astra-latest"}, {"probe":"~openai/gpt-astra-latest:free","candidates":["~openai/gpt-astra-latest:free","gpt-astra-latest:free"],"resolved":null}, {"probe":"~openai/gpt.astra.latest","candidates":["~openai/gpt.astra.latest","gpt.astra.latest"],"resolved":null}, {"probe":"~openai/gpt-luna-latest","candidates":["~openai/gpt-luna-latest","gpt-luna-latest"],"resolved":"~openai/gpt-luna-latest"}, {"probe":"gpt-luna-latest","candidates":["gpt-luna-latest","~openai/gpt-luna-latest"],"resolved":"~openai/gpt-luna-latest"}, - {"probe":"x-provider/~openai/gpt-luna-latest","candidates":["x-provider/~openai/gpt-luna-latest","gpt-luna-latest","~openai/gpt-luna-latest"],"resolved":"~openai/gpt-luna-latest"}, + {"probe":"x-provider/~openai/gpt-luna-latest","candidates":["x-provider/~openai/gpt-luna-latest","~openai/gpt-luna-latest","gpt-luna-latest"],"resolved":"~openai/gpt-luna-latest"}, {"probe":"~openai/gpt-luna-latest:free","candidates":["~openai/gpt-luna-latest:free","gpt-luna-latest:free"],"resolved":null}, {"probe":"~openai/gpt.luna.latest","candidates":["~openai/gpt.luna.latest","gpt.luna.latest"],"resolved":null}, {"probe":"~openai/gpt-mini-latest","candidates":["~openai/gpt-mini-latest","gpt-mini-latest"],"resolved":"~openai/gpt-mini-latest"}, {"probe":"gpt-mini-latest","candidates":["gpt-mini-latest","~openai/gpt-mini-latest"],"resolved":"~openai/gpt-mini-latest"}, - {"probe":"x-provider/~openai/gpt-mini-latest","candidates":["x-provider/~openai/gpt-mini-latest","gpt-mini-latest","~openai/gpt-mini-latest"],"resolved":"~openai/gpt-mini-latest"}, + {"probe":"x-provider/~openai/gpt-mini-latest","candidates":["x-provider/~openai/gpt-mini-latest","~openai/gpt-mini-latest","gpt-mini-latest"],"resolved":"~openai/gpt-mini-latest"}, {"probe":"~openai/gpt-mini-latest:free","candidates":["~openai/gpt-mini-latest:free","gpt-mini-latest:free"],"resolved":null}, {"probe":"~openai/gpt.mini.latest","candidates":["~openai/gpt.mini.latest","gpt.mini.latest"],"resolved":null}, {"probe":"~openai/gpt-sol-latest","candidates":["~openai/gpt-sol-latest","gpt-sol-latest"],"resolved":"~openai/gpt-sol-latest"}, {"probe":"gpt-sol-latest","candidates":["gpt-sol-latest","~openai/gpt-sol-latest"],"resolved":"~openai/gpt-sol-latest"}, - {"probe":"x-provider/~openai/gpt-sol-latest","candidates":["x-provider/~openai/gpt-sol-latest","gpt-sol-latest","~openai/gpt-sol-latest"],"resolved":"~openai/gpt-sol-latest"}, + {"probe":"x-provider/~openai/gpt-sol-latest","candidates":["x-provider/~openai/gpt-sol-latest","~openai/gpt-sol-latest","gpt-sol-latest"],"resolved":"~openai/gpt-sol-latest"}, {"probe":"~openai/gpt-sol-latest:free","candidates":["~openai/gpt-sol-latest:free","gpt-sol-latest:free"],"resolved":null}, {"probe":"~openai/gpt.sol.latest","candidates":["~openai/gpt.sol.latest","gpt.sol.latest"],"resolved":null}, {"probe":"~openai/gpt-terra-latest","candidates":["~openai/gpt-terra-latest","gpt-terra-latest"],"resolved":"~openai/gpt-terra-latest"}, {"probe":"gpt-terra-latest","candidates":["gpt-terra-latest","~openai/gpt-terra-latest"],"resolved":"~openai/gpt-terra-latest"}, - {"probe":"x-provider/~openai/gpt-terra-latest","candidates":["x-provider/~openai/gpt-terra-latest","gpt-terra-latest","~openai/gpt-terra-latest"],"resolved":"~openai/gpt-terra-latest"}, + {"probe":"x-provider/~openai/gpt-terra-latest","candidates":["x-provider/~openai/gpt-terra-latest","~openai/gpt-terra-latest","gpt-terra-latest"],"resolved":"~openai/gpt-terra-latest"}, {"probe":"~openai/gpt-terra-latest:free","candidates":["~openai/gpt-terra-latest:free","gpt-terra-latest:free"],"resolved":null}, {"probe":"~openai/gpt.terra.latest","candidates":["~openai/gpt.terra.latest","gpt.terra.latest"],"resolved":null}, {"probe":"~x-ai/grok-latest","candidates":["~x-ai/grok-latest","grok-latest"],"resolved":"~x-ai/grok-latest"}, {"probe":"grok-latest","candidates":["grok-latest","~x-ai/grok-latest"],"resolved":"~x-ai/grok-latest"}, - {"probe":"x-provider/~x-ai/grok-latest","candidates":["x-provider/~x-ai/grok-latest","grok-latest","~x-ai/grok-latest"],"resolved":"~x-ai/grok-latest"}, + {"probe":"x-provider/~x-ai/grok-latest","candidates":["x-provider/~x-ai/grok-latest","~x-ai/grok-latest","grok-latest"],"resolved":"~x-ai/grok-latest"}, {"probe":"~x-ai/grok-latest:free","candidates":["~x-ai/grok-latest:free","grok-latest:free"],"resolved":null}, {"probe":"~x.ai/grok.latest","candidates":["~x.ai/grok.latest","grok.latest"],"resolved":null}, {"probe":"~z-ai/glm-flash-latest","candidates":["~z-ai/glm-flash-latest","glm-flash-latest"],"resolved":"~z-ai/glm-flash-latest"}, {"probe":"glm-flash-latest","candidates":["glm-flash-latest","~z-ai/glm-flash-latest"],"resolved":"~z-ai/glm-flash-latest"}, - {"probe":"x-provider/~z-ai/glm-flash-latest","candidates":["x-provider/~z-ai/glm-flash-latest","glm-flash-latest","~z-ai/glm-flash-latest"],"resolved":"~z-ai/glm-flash-latest"}, + {"probe":"x-provider/~z-ai/glm-flash-latest","candidates":["x-provider/~z-ai/glm-flash-latest","~z-ai/glm-flash-latest","glm-flash-latest"],"resolved":"~z-ai/glm-flash-latest"}, {"probe":"~z-ai/glm-flash-latest:free","candidates":["~z-ai/glm-flash-latest:free","glm-flash-latest:free"],"resolved":null}, {"probe":"~z.ai/glm.flash.latest","candidates":["~z.ai/glm.flash.latest","glm.flash.latest"],"resolved":null}, {"probe":"~z-ai/glm-latest","candidates":["~z-ai/glm-latest","glm-latest"],"resolved":"~z-ai/glm-latest"}, {"probe":"glm-latest","candidates":["glm-latest","~z-ai/glm-latest"],"resolved":"~z-ai/glm-latest"}, - {"probe":"x-provider/~z-ai/glm-latest","candidates":["x-provider/~z-ai/glm-latest","glm-latest","~z-ai/glm-latest"],"resolved":"~z-ai/glm-latest"}, + {"probe":"x-provider/~z-ai/glm-latest","candidates":["x-provider/~z-ai/glm-latest","~z-ai/glm-latest","glm-latest"],"resolved":"~z-ai/glm-latest"}, {"probe":"~z-ai/glm-latest:free","candidates":["~z-ai/glm-latest:free","glm-latest:free"],"resolved":null}, {"probe":"~z.ai/glm.latest","candidates":["~z.ai/glm.latest","glm.latest"],"resolved":null} ]