awaken-runtime 0.6.0

Phase-based execution engine, plugin system, and agent loop for Awaken
Documentation
use awaken_runtime_contract::contract::tool::{ToolError, ToolResult};

pub(crate) fn tool_error_result(tool_name: &str, error: ToolError) -> ToolResult {
    let timed_out = matches!(error, ToolError::Timeout(_));
    let result = ToolResult::error(tool_name, error.to_string());
    if timed_out {
        result.with_metadata("timed_out", true)
    } else {
        result
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn timeout_tool_error_sets_timed_out_metadata() {
        let result = tool_error_result("slow", ToolError::Timeout("deadline".into()));
        assert_eq!(result.metadata["timed_out"], true);
    }
}