rho-coding-agent 1.9.0

A lightweight agent harness inspired by Pi
Documentation
use super::*;

impl App {
    pub(super) fn execute_skills_command(&mut self) -> anyhow::Result<()> {
        let picker = skill_picker::skill_picker(crate::skills::discover(&self.info.runtime.cwd));
        if picker.items.is_empty() {
            self.insert_entry(&Entry::Notice("no skills loaded".into()));
            self.status = "skills".into();
            return Ok(());
        }

        self.composer = ComposerMode::Picker(picker);
        self.status = "select skill".into();
        Ok(())
    }

    pub(super) fn execute_skill_command(
        &mut self,
        name: &str,
        agent: &mut InteractiveRuntime,
    ) -> anyhow::Result<bool> {
        let Some(name) = name.strip_prefix("skill:") else {
            return Ok(false);
        };
        let Some(skill) = crate::skills::discover(&self.info.runtime.cwd)
            .into_iter()
            .find(|skill| skill.name == name)
        else {
            return Ok(false);
        };

        self.ensure_session(agent)?;
        agent.load_skill(
            &skill,
            self.info
                .services
                .config_repository
                .load()?
                .max_output_bytes,
        )?;
        self.insert_entry(&Entry::Notice(format!(
            "loaded skill {} from {}",
            skill.name, skill.source
        )));
        self.status = format!("loaded skill {}", skill.name);
        Ok(true)
    }
}