use super::ToolResult;
pub fn format_find_result(keyword: &str, hits: &[super::super::context::FindHit]) -> String {
if hits.is_empty() {
return format!("No results found for '{}'", keyword);
}
let mut output = format!("Results for '{}':\n", keyword);
for hit in hits {
for entry in &hit.entries {
output.push_str(&format!(
" - node (depth {}, weight {:.2})\n",
entry.depth, entry.weight
));
}
}
output
}
pub fn format_check_prompt(evidence_summary: &str, query: &str) -> String {
format!(
"Please evaluate whether the collected evidence is sufficient to answer the query.\n\n\
Query: {}\n\n\
Evidence:\n{}\n\n\
Is this sufficient? Answer YES or NO and briefly explain.",
query, evidence_summary
)
}
pub fn format_done() -> ToolResult {
ToolResult::done("Navigation complete.")
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_format_find_result_empty() {
let result = format_find_result("nonexistent", &[]);
assert!(result.contains("No results"));
}
#[test]
fn test_format_check_prompt() {
let prompt = format_check_prompt("- [Intro] 500 chars", "What is X?");
assert!(prompt.contains("What is X?"));
assert!(prompt.contains("500 chars"));
}
#[test]
fn test_format_done() {
let result = format_done();
assert!(result.should_stop);
assert!(result.success);
}
}