tiny-agent 0.1.0

一个小而完整的 Rust LLM Agent 运行时:可中断、可恢复、可观测、可插拔的 agent loop / A small but complete LLM agent runtime in Rust — an interruptible, resumable, observable, pluggable agent loop.
Documentation
use crate::{sandbox::Sandbox, tools::ToolOutcome};
use schemars::JsonSchema;
use serde::Deserialize;
use serde_json::json;
use std::sync::Arc;

#[derive(Deserialize, JsonSchema)]
pub struct BashArgs {
    /// 要执行的 bash 命令
    pub command: String,
}

pub async fn bash(sandbox: Arc<dyn Sandbox>, args: BashArgs) -> Result<ToolOutcome, String> {
    let out = sandbox
        .execute(&args.command)
        .await
        .map_err(|e| e.to_string())?;
    Ok(json!({
        "stdout": out.stdout,
        "stderr": out.stderr,
        "status": out.exit_code,
    })
    .into())
}