Files
cursor-byok/server/src/model/model_spec.rs
T

45 lines
1.2 KiB
Rust

use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq, Eq)]
pub struct ReasoningSpec {
pub enabled: bool,
pub effort: Option<String>,
}
#[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum ModelLatency {
#[default]
Standard,
Fast,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
pub struct ModelSpec {
pub model_id: String,
pub display_name: Option<String>,
pub reasoning: ReasoningSpec,
pub latency: ModelLatency,
pub max_output_tokens: Option<u64>,
pub context_window_tokens: Option<u64>,
#[serde(default)]
pub supports_image_generation: bool,
#[serde(default)]
pub extra_params: serde_json::Value,
}
impl ModelSpec {
pub fn new(model_id: impl Into<String>) -> Self {
Self {
model_id: model_id.into(),
display_name: None,
reasoning: ReasoningSpec::default(),
latency: ModelLatency::Standard,
max_output_tokens: None,
context_window_tokens: None,
supports_image_generation: false,
extra_params: serde_json::json!({}),
}
}
}