use adk_core::AdkError;
use serde_json::Value;
pub fn tool_error_message(err: &AdkError) -> String {
format!("{}: {}", err.category, err.message)
}
pub fn unknown_tool_message(tool_name: &str) -> String {
format!("tool '{tool_name}' is not available")
}
pub fn denied_message(tool_name: &str) -> String {
format!("call to '{tool_name}' was denied by a human reviewer")
}
pub(crate) fn render_value(value: &Value) -> String {
serde_json::to_string(value).unwrap_or_else(|_| value.to_string())
}
#[cfg(test)]
mod tests {
use super::*;
use adk_core::{ErrorCategory, ErrorComponent};
#[test]
fn tool_error_includes_category_and_message() {
let err = AdkError::new(ErrorComponent::Tool, ErrorCategory::NotFound, "t", "no file");
let msg = tool_error_message(&err);
assert!(msg.contains("not_found"));
assert!(msg.contains("no file"));
}
#[test]
fn helpers_name_the_tool() {
assert!(unknown_tool_message("foo").contains("foo"));
assert!(denied_message("rm").contains("rm"));
}
}