use crate::{skills::SkillManager, tools::ToolRegistry};
use schemars::JsonSchema;
use serde::Deserialize;
use std::sync::Arc;
#[derive(Deserialize, JsonSchema)]
pub struct ReadSkillArgs {
skill_id: String,
path: Option<String>,
}
pub(super) fn register_read_skill(registry: &mut ToolRegistry, skills: Arc<SkillManager>) {
registry.register(
"readSkill",
"读取指定 skill 的完整说明,或读取该 skill 暴露的某个资源文件",
true,
move |_sandbox, args: ReadSkillArgs| {
let skills = skills.clone();
async move {
let result = skills
.read(&args.skill_id, args.path.as_deref())
.map_err(|e| e.to_string())?;
Ok(result.into_value().into())
}
},
);
}