#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ReasoningEffort {
Low,
Medium,
High,
Unknown(String),
}
impl serde::Serialize for ReasoningEffort {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
match self {
ReasoningEffort::Low => serializer.serialize_str("low"),
ReasoningEffort::Medium => serializer.serialize_str("medium"),
ReasoningEffort::High => serializer.serialize_str("high"),
ReasoningEffort::Unknown(s) => serializer.serialize_str(s),
}
}
}
impl<'de> serde::Deserialize<'de> for ReasoningEffort {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
Ok(match s.as_str() {
"low" => ReasoningEffort::Low,
"medium" => ReasoningEffort::Medium,
"high" => ReasoningEffort::High,
_ => ReasoningEffort::Unknown(s),
})
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum VerbosityLevel {
Low,
Medium,
High,
Unknown(String),
}
impl serde::Serialize for VerbosityLevel {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
match self {
VerbosityLevel::Low => serializer.serialize_str("low"),
VerbosityLevel::Medium => serializer.serialize_str("medium"),
VerbosityLevel::High => serializer.serialize_str("high"),
VerbosityLevel::Unknown(s) => serializer.serialize_str(s),
}
}
}
impl<'de> serde::Deserialize<'de> for VerbosityLevel {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
Ok(match s.as_str() {
"low" => VerbosityLevel::Low,
"medium" => VerbosityLevel::Medium,
"high" => VerbosityLevel::High,
_ => VerbosityLevel::Unknown(s),
})
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum OutputType {
Message,
FunctionCall,
Unknown(String),
}
impl serde::Serialize for OutputType {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
match self {
OutputType::Message => serializer.serialize_str("message"),
OutputType::FunctionCall => serializer.serialize_str("function_call"),
OutputType::Unknown(s) => serializer.serialize_str(s),
}
}
}
impl<'de> serde::Deserialize<'de> for OutputType {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
Ok(match s.as_str() {
"message" => OutputType::Message,
"function_call" => OutputType::FunctionCall,
_ => OutputType::Unknown(s),
})
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ContentType {
OutputText,
Unknown(String),
}
impl serde::Serialize for ContentType {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
match self {
ContentType::OutputText => serializer.serialize_str("output_text"),
ContentType::Unknown(s) => serializer.serialize_str(s),
}
}
}
impl<'de> serde::Deserialize<'de> for ContentType {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
Ok(match s.as_str() {
"output_text" => ContentType::OutputText,
_ => ContentType::Unknown(s),
})
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Status {
InProgress,
Completed,
RequiresAction,
Failed,
Unknown(String),
}
impl serde::Serialize for Status {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
match self {
Status::InProgress => serializer.serialize_str("in_progress"),
Status::Completed => serializer.serialize_str("completed"),
Status::RequiresAction => serializer.serialize_str("requires_action"),
Status::Failed => serializer.serialize_str("failed"),
Status::Unknown(s) => serializer.serialize_str(s),
}
}
}
impl<'de> serde::Deserialize<'de> for Status {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
Ok(match s.as_str() {
"in_progress" => Status::InProgress,
"completed" => Status::Completed,
"requires_action" => Status::RequiresAction,
"failed" => Status::Failed,
_ => Status::Unknown(s),
})
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Role {
User,
Assistant,
Tool,
System,
Unknown(String),
}
impl serde::Serialize for Role {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
match self {
Role::User => serializer.serialize_str("user"),
Role::Assistant => serializer.serialize_str("assistant"),
Role::Tool => serializer.serialize_str("tool"),
Role::System => serializer.serialize_str("system"),
Role::Unknown(s) => serializer.serialize_str(s),
}
}
}
impl<'de> serde::Deserialize<'de> for Role {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
Ok(match s.as_str() {
"user" => Role::User,
"assistant" => Role::Assistant,
"tool" => Role::Tool,
"system" => Role::System,
_ => Role::Unknown(s),
})
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum FormatType {
Markdown,
PlainText,
Unknown(String),
}
impl serde::Serialize for FormatType {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
match self {
FormatType::Markdown => serializer.serialize_str("markdown"),
FormatType::PlainText => serializer.serialize_str("plain_text"),
FormatType::Unknown(s) => serializer.serialize_str(s),
}
}
}
impl<'de> serde::Deserialize<'de> for FormatType {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
Ok(match s.as_str() {
"markdown" => FormatType::Markdown,
"plain_text" => FormatType::PlainText,
_ => FormatType::Unknown(s),
})
}
}