use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
pub use objectiveai_sdk::cli::command::tools::get::Exec;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
#[schemars(rename = "filesystem.tools.Manifest")]
pub struct Manifest {
pub description: String,
pub version: String,
pub owner: String,
pub exec: Exec,
}
impl Manifest {
pub fn tool_name(&self, name: &str) -> String {
objectiveai_sdk::agent::materialize_tool_name(&self.owner, name, &self.version)
}
}
#[derive(Debug, Clone, PartialEq, 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)
}
}
impl From<ManifestWithNameAndSource>
for objectiveai_sdk::cli::command::tools::get::ResponseManifest
{
fn from(m: ManifestWithNameAndSource) -> Self {
Self {
name: m.name,
description: m.manifest.description,
version: m.manifest.version,
owner: m.manifest.owner,
exec: m.manifest.exec,
source: m.source,
}
}
}