use serde::Deserialize;
pub(super) fn summarize_from_value<T>(v: &serde_json::Value) -> Option<String>
where
T: serde::de::DeserializeOwned + ToolSummaryLine,
{
let t: T = serde_json::from_value(v.clone()).ok()?;
t.summary_line()
}
pub(super) trait ToolSummaryLine {
fn summary_line(self) -> Option<String>;
}
include!("tool_summary_args/fragment_core.rs");
include!("tool_summary_args/fragment_read_file.rs");
include!("tool_summary_args/fragment_git_files_diff.rs");
include!("tool_summary_args/fragment_git_files_file_ops.rs");
include!("tool_summary_args/fragment_git_files_git_write.rs");
include!("tool_summary_args/fragment_git_files_tail.rs");
include!("tool_summary_args/fragment_gh_archive.rs");