agent_doc_flow/
closeout.rs1use std::path::Path;
2
3pub fn closeout_latency_message(file: &Path, total_ms: u128, phases: &[(String, u128)]) -> String {
4 let phase_text = phases
5 .iter()
6 .map(|(phase, elapsed)| format!("{phase}:{elapsed}ms"))
7 .collect::<Vec<_>>()
8 .join(",");
9 format!(
10 "closeout_latency file={} total_ms={} phases={}",
11 file.display(),
12 total_ms,
13 phase_text
14 )
15}
16
17#[cfg(test)]
18mod tests {
19 use super::*;
20
21 #[test]
22 fn closeout_latency_message_lists_phase_timings() {
23 let message = closeout_latency_message(
24 Path::new("tasks/doc.md"),
25 300,
26 &[
27 ("git_commit".to_string(), 12),
28 ("session_check".to_string(), 4),
29 ],
30 );
31
32 assert!(message.contains("closeout_latency file=tasks/doc.md total_ms=300"));
33 assert!(message.contains("git_commit:12ms,session_check:4ms"));
34 }
35}