use config::OpenRouterConfig;
use crate::openai;
pub mod config;
pub type OpenRouter = openai::GenericOpenAI<OpenRouterConfig>;
pub type OpenRouterBuilder = openai::GenericOpenAIBuilder<OpenRouterConfig>;
pub type OpenRouterBuilderError = openai::GenericOpenAIBuilderError;
pub use openai::{Options, OptionsBuilder, OptionsBuilderError};
impl OpenRouter {
pub fn builder() -> OpenRouterBuilder {
let mut builder = OpenRouterBuilder::default();
builder.default_options(Options::builder().replay_plaintext_reasoning(true));
builder
}
}
impl Default for OpenRouter {
fn default() -> Self {
Self::builder().build().unwrap()
}
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn plaintext_reasoning_replay_default_survives_options_merge() {
let client = OpenRouter::builder()
.default_options(Options::builder().prompt_model("qwen/qwen3-30b-a3b"))
.build()
.unwrap();
assert_eq!(client.options().replay_plaintext_reasoning, Some(true));
let client = OpenRouter::builder()
.default_options(Options::builder().replay_plaintext_reasoning(false))
.build()
.unwrap();
assert_eq!(client.options().replay_plaintext_reasoning, Some(false));
}
#[test]
fn test_default_prompt_model() {
let openai = OpenRouter::builder()
.default_prompt_model("llama3.1")
.build()
.unwrap();
assert_eq!(
openai.default_options.prompt_model,
Some("llama3.1".to_string())
);
}
#[test]
fn test_default_models() {
let openrouter = OpenRouter::builder()
.default_prompt_model("llama3.1")
.build()
.unwrap();
assert_eq!(
openrouter.default_options.prompt_model,
Some("llama3.1".to_string())
);
}
#[test]
fn test_building_via_default_prompt_model() {
let mut client = OpenRouter::default();
assert!(client.default_options.prompt_model.is_none());
client.with_default_prompt_model("llama3.1");
assert_eq!(
client.default_options.prompt_model,
Some("llama3.1".to_string())
);
}
}