use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, schemars::JsonSchema)]
pub enum WireProtocol {
#[serde(rename = "anthropic")]
Anthropic,
#[serde(rename = "openai-chat", alias = "openai_chat", alias = "openai")]
OpenAiChat,
#[serde(rename = "openai-responses", alias = "openai_responses")]
OpenAiResponses,
#[serde(rename = "gemini")]
Gemini,
}
impl WireProtocol {
#[must_use]
pub const fn as_tag(self) -> &'static str {
match self {
Self::Anthropic => "anthropic",
Self::OpenAiChat => "openai-chat",
Self::OpenAiResponses => "openai-responses",
Self::Gemini => "gemini",
}
}
}
impl std::fmt::Display for WireProtocol {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(self.as_tag())
}
}