use crate::{
providers::ToolCall,
tools::{ToolCapability, ToolResult, contract::metadata_key as meta},
};
pub(super) fn failed_search_diagnostic_output(
call: &ToolCall,
result: &ToolResult,
) -> Option<String> {
if result.success
|| !result.content.trim().is_empty()
|| ToolCapability::from_dispatch_name(&call.name) != Some(ToolCapability::Grep)
{
return None;
}
[meta::STDERR, meta::STDOUT]
.into_iter()
.filter_map(|key| result.metadata.get(key).and_then(serde_json::Value::as_str))
.find(|text| !text.trim().is_empty())
.map(str::to_string)
}