use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
#[schemars(rename = "filesystem.tools.Manifest")]
pub struct Manifest {
pub description: String,
pub version: String,
pub owner: String,
pub exec: String,
}
impl Manifest {
pub fn tool_name(&self, name: &str) -> String {
crate::agent::materialize_tool_name(&self.owner, name, &self.version)
}
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
#[schemars(rename = "filesystem.tools.ManifestWithNameAndSource")]
pub struct ManifestWithNameAndSource {
pub name: String,
#[serde(flatten)]
pub manifest: Manifest,
pub source: String,
}
impl ManifestWithNameAndSource {
pub fn tool_name(&self) -> String {
self.manifest.tool_name(&self.name)
}
}