use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(
Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema,
)]
#[schemars(rename = "client_objectiveai_mcp.McpKind")]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum McpKind {
#[schemars(title = "ObjectiveAI")]
ObjectiveAi,
#[schemars(title = "Plugin")]
Plugin {
owner: String,
name: String,
version: String,
mcp: String,
},
#[schemars(title = "Laboratory")]
Laboratory {
id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[schemars(extend("omitempty" = true))]
machine: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[schemars(extend("omitempty" = true))]
machine_state: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[schemars(extend("omitempty" = true))]
agent: Option<AgentLaboratorySeed>,
},
}
#[derive(
Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema,
)]
#[schemars(rename = "client_objectiveai_mcp.AgentLaboratorySeed")]
pub struct AgentLaboratorySeed {
pub agent_full_id: String,
pub laboratory: crate::agent::Laboratory,
}