use serde::{Deserialize, Serialize};
use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
#[serde(rename_all = "lowercase")]
pub enum ReasoningEffortLevel {
None,
Minimal,
Low,
#[default]
Medium,
High,
XHigh,
}
impl ReasoningEffortLevel {
pub const fn as_str(self) -> &'static str {
match self {
Self::None => "none",
Self::Minimal => "minimal",
Self::Low => "low",
Self::Medium => "medium",
Self::High => "high",
Self::XHigh => "xhigh",
}
}
}
impl fmt::Display for ReasoningEffortLevel {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(self.as_str())
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
#[serde(rename_all = "lowercase")]
pub enum SystemPromptMode {
Minimal,
Lightweight,
#[default]
Default,
Specialized,
}
impl SystemPromptMode {
pub const fn as_str(self) -> &'static str {
match self {
Self::Minimal => "minimal",
Self::Lightweight => "lightweight",
Self::Default => "default",
Self::Specialized => "specialized",
}
}
}
impl fmt::Display for SystemPromptMode {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(self.as_str())
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
#[serde(rename_all = "lowercase")]
pub enum ToolDocumentationMode {
Minimal,
Progressive,
#[default]
Full,
}
impl ToolDocumentationMode {
pub const fn as_str(self) -> &'static str {
match self {
Self::Minimal => "minimal",
Self::Progressive => "progressive",
Self::Full => "full",
}
}
}
impl fmt::Display for ToolDocumentationMode {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(self.as_str())
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
#[serde(rename_all = "lowercase")]
pub enum VerbosityLevel {
Low,
#[default]
Medium,
High,
}
impl VerbosityLevel {
pub const fn as_str(self) -> &'static str {
match self {
Self::Low => "low",
Self::Medium => "medium",
Self::High => "high",
}
}
}
impl fmt::Display for VerbosityLevel {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(self.as_str())
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
#[serde(rename_all = "lowercase")]
pub enum UiSurfacePreference {
#[default]
Auto,
Alternate,
Inline,
}
impl UiSurfacePreference {
pub const fn as_str(self) -> &'static str {
match self {
Self::Auto => "auto",
Self::Alternate => "alternate",
Self::Inline => "inline",
}
}
}
impl fmt::Display for UiSurfacePreference {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(self.as_str())
}
}