use std::path::PathBuf;
use bitrouter_core::routers::registry::SkillEntry;
use bitrouter_core::routers::registry::ToolEntry;
use bitrouter_core::tools::definition::ToolDefinition;
#[derive(Debug, Clone)]
pub(crate) struct SkillCatalogEntry {
pub id: String,
pub name: String,
pub description: String,
pub source: String,
pub required_apis: Vec<String>,
pub path: PathBuf,
pub created_at: String,
pub updated_at: String,
pub bound_tool: Option<String>,
}
impl SkillCatalogEntry {
pub fn to_skill_entry(&self) -> SkillEntry {
SkillEntry {
id: self.id.clone(),
name: self.name.clone(),
description: self.description.clone(),
source: self.source.clone(),
required_apis: self.required_apis.clone(),
created_at: self.created_at.clone(),
updated_at: self.updated_at.clone(),
bound_tool: self.bound_tool.clone(),
}
}
pub fn to_tool_entry(&self) -> ToolEntry {
ToolEntry {
id: format!("skill/{}", self.name),
provider: "skill".to_string(),
definition: ToolDefinition {
name: self.name.clone(),
description: Some(self.description.clone()),
input_schema: None,
annotations: None,
input_examples: Vec::new(),
},
}
}
}