use crate::{hook::mcp::McpServerConfig, service::ServiceConfig};
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;
#[derive(Serialize, Deserialize)]
pub struct Manifest {
pub package: Package,
#[serde(default)]
pub mcp_servers: BTreeMap<String, McpServerConfig>,
#[serde(default)]
pub skills: BTreeMap<String, SkillResource>,
#[serde(default)]
pub services: BTreeMap<String, ServiceConfig>,
#[serde(default)]
pub agents: BTreeMap<String, AgentResource>,
}
#[derive(Serialize, Deserialize)]
pub struct Package {
pub name: String,
#[serde(default)]
pub description: String,
#[serde(default)]
pub logo: String,
#[serde(default)]
pub repository: String,
#[serde(default)]
pub keywords: Vec<String>,
}
#[derive(Serialize, Deserialize)]
pub struct SkillResource {
#[serde(default)]
pub name: String,
pub description: String,
pub path: String,
}
#[derive(Serialize, Deserialize)]
pub struct AgentResource {
pub description: String,
pub prompt: String,
#[serde(default)]
pub skills: Vec<String>,
}