#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub enum ModuleKind {
Core,
Platform,
Extension,
Integration,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct Manifest {
pub id: String,
pub description: String,
pub version: String,
pub kind: ModuleKind,
pub provides: Vec<Capability>,
pub requires: Vec<Dependency>,
pub agent_tools: Vec<ToolSpec>,
#[serde(default)]
pub required_roles: Vec<String>,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct Capability {
pub name: String,
pub version: String,
pub description: String,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct Dependency {
pub capability: String,
pub version_req: String,
pub required: bool,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct ToolSpec {
pub name: String,
pub description: String,
pub parameters_schema: serde_json::Value,
}