diff --git a/cli/planoai/config_generator.py b/cli/planoai/config_generator.py index 3ffebe09..b8c24d8b 100644 --- a/cli/planoai/config_generator.py +++ b/cli/planoai/config_generator.py @@ -14,6 +14,7 @@ SUPPORTED_PROVIDERS_WITH_BASE_URL = [ "qwen", "amazon_bedrock", "plano", + "openrouter", ] SUPPORTED_PROVIDERS_WITHOUT_BASE_URL = [ diff --git a/config/plano_config_schema.yaml b/config/plano_config_schema.yaml index d681b089..bac8502a 100644 --- a/config/plano_config_schema.yaml +++ b/config/plano_config_schema.yaml @@ -190,6 +190,7 @@ properties: - openai - xiaomi - gemini + - openrouter routing_preferences: type: array items: @@ -238,6 +239,7 @@ properties: - openai - xiaomi - gemini + - openrouter routing_preferences: type: array items: diff --git a/crates/common/src/configuration.rs b/crates/common/src/configuration.rs index c4c5924a..43ee7ab6 100644 --- a/crates/common/src/configuration.rs +++ b/crates/common/src/configuration.rs @@ -370,6 +370,8 @@ pub enum LlmProviderType { AmazonBedrock, #[serde(rename = "plano")] Plano, + #[serde(rename = "openrouter")] + OpenRouter, } impl Display for LlmProviderType { @@ -391,6 +393,7 @@ impl Display for LlmProviderType { LlmProviderType::Qwen => write!(f, "qwen"), LlmProviderType::AmazonBedrock => write!(f, "amazon_bedrock"), LlmProviderType::Plano => write!(f, "plano"), + LlmProviderType::OpenRouter => write!(f, "openrouter"), } } } diff --git a/crates/hermesllm/src/providers/id.rs b/crates/hermesllm/src/providers/id.rs index c410bd78..6cc0b6b2 100644 --- a/crates/hermesllm/src/providers/id.rs +++ b/crates/hermesllm/src/providers/id.rs @@ -44,6 +44,7 @@ pub enum ProviderId { Zhipu, Qwen, AmazonBedrock, + OpenRouter, } impl TryFrom<&str> for ProviderId { @@ -71,6 +72,7 @@ impl TryFrom<&str> for ProviderId { "qwen" => Ok(ProviderId::Qwen), "amazon_bedrock" => Ok(ProviderId::AmazonBedrock), "amazon" => Ok(ProviderId::AmazonBedrock), // alias + "openrouter" => Ok(ProviderId::OpenRouter), _ => Err(format!("Unknown provider: {}", value)), } } @@ -148,7 +150,8 @@ impl ProviderId { | ProviderId::Ollama | ProviderId::Moonshotai | ProviderId::Zhipu - | ProviderId::Qwen, + | ProviderId::Qwen + | ProviderId::OpenRouter, SupportedAPIsFromClient::AnthropicMessagesAPI(_), ) => SupportedUpstreamAPIs::OpenAIChatCompletions(OpenAIApi::ChatCompletions), @@ -167,7 +170,8 @@ impl ProviderId { | ProviderId::Ollama | ProviderId::Moonshotai | ProviderId::Zhipu - | ProviderId::Qwen, + | ProviderId::Qwen + | ProviderId::OpenRouter, SupportedAPIsFromClient::OpenAIChatCompletions(_), ) => SupportedUpstreamAPIs::OpenAIChatCompletions(OpenAIApi::ChatCompletions), @@ -234,6 +238,7 @@ impl Display for ProviderId { ProviderId::Zhipu => write!(f, "zhipu"), ProviderId::Qwen => write!(f, "qwen"), ProviderId::AmazonBedrock => write!(f, "amazon_bedrock"), + ProviderId::OpenRouter => write!(f, "openrouter"), } } }