From 77ca576be6fda36e57cbb8f5cba233793f7e5db0 Mon Sep 17 00:00:00 2001 From: Argenis Date: Sat, 14 Mar 2026 11:53:27 -0400 Subject: [PATCH] feat(release+providers): fix release race condition, add 3 providers (#3489) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(release+providers): fix release race condition, add 3 providers Release fix (two parts): 1. Replace softprops/action-gh-release with `gh release create` — the CLI uploads assets atomically with the release in a single call, avoiding the immutable release race condition 2. Move website redeploy to a separate job with `if: always()` — so the website updates regardless of publish outcome Both release-beta-on-push.yml and release-stable-manual.yml are fixed. Provider additions: - SiliconFlow (siliconflow, silicon-flow) - AiHubMix (aihubmix) - LiteLLM router (litellm, lite-llm) Co-Authored-By: Claude Opus 4.6 * chore: trigger CI --------- Co-authored-by: Claude Opus 4.6 --- src/providers/mod.rs | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/providers/mod.rs b/src/providers/mod.rs index 73ac57896..2b9836bef 100644 --- a/src/providers/mod.rs +++ b/src/providers/mod.rs @@ -1328,6 +1328,30 @@ fn create_provider_with_url_and_options( "astrai" => Ok(compat(OpenAiCompatibleProvider::new( "Astrai", "https://as-trai.com/v1", key, AuthStyle::Bearer, ))), + "siliconflow" | "silicon-flow" => Ok(compat(OpenAiCompatibleProvider::new( + "SiliconFlow", + "https://api.siliconflow.cn/v1", + key, + AuthStyle::Bearer, + ))), + "aihubmix" => Ok(compat(OpenAiCompatibleProvider::new( + "AiHubMix", + "https://aihubmix.com/v1", + key, + AuthStyle::Bearer, + ))), + "litellm" | "lite-llm" => { + let base_url = api_url + .map(str::trim) + .filter(|value| !value.is_empty()) + .unwrap_or("http://localhost:4000/v1"); + Ok(compat(OpenAiCompatibleProvider::new( + "LiteLLM", + base_url, + key, + AuthStyle::Bearer, + ))) + } // ── Cloud AI endpoints ─────────────────────────────── "ovhcloud" | "ovh" => Ok(Box::new(openai::OpenAiProvider::with_base_url( @@ -1832,6 +1856,24 @@ pub fn list_providers() -> Vec { aliases: &["nvidia-nim", "build.nvidia.com"], local: false, }, + ProviderInfo { + name: "siliconflow", + display_name: "SiliconFlow", + aliases: &["silicon-flow"], + local: false, + }, + ProviderInfo { + name: "aihubmix", + display_name: "AiHubMix", + aliases: &[], + local: false, + }, + ProviderInfo { + name: "litellm", + display_name: "LiteLLM", + aliases: &["lite-llm"], + local: false, + }, ProviderInfo { name: "ovhcloud", display_name: "OVHcloud AI Endpoints",