use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(
Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize, JsonSchema,
)]
#[serde(transparent)]
pub struct HarnessId(pub String);
impl HarnessId {
pub const CLAUDE_CODE: &'static str = "claude-code";
pub const CODEX: &'static str = "codex";
pub const PI: &'static str = "pi";
pub const OPENCODE: &'static str = "opencode";
pub const GROK: &'static str = "grok";
pub const GEMINI: &'static str = "gemini";
pub const GOOSE: &'static str = "goose";
pub const HERMES: &'static str = "hermes";
pub const OPENCLAW: &'static str = "openclaw";
pub const SUPERCODE: &'static str = "supercode";
pub const ORCHESTRATOR: &'static str = "orchestrator";
pub fn new(value: impl Into<String>) -> Self {
Self(value.into())
}
pub fn as_str(&self) -> &str {
&self.0
}
}
impl From<&str> for HarnessId {
fn from(value: &str) -> Self {
Self::new(value)
}
}