Skip to main content

codetether_agent/tui/app/state/
pending_tool.rs

1//! Helpers for the in-flight tool fields on [`super::AppState`].
2
3use std::time::Instant;
4
5impl super::AppState {
6    /// Mark `name` as the currently-running tool and record when it started.
7    pub fn start_pending_tool(&mut self, name: String) {
8        self.pending_tool_name = Some(name);
9        self.pending_tool_started_at = Some(Instant::now());
10    }
11
12    /// Record the tool result fields and clear the in-flight marker.
13    pub fn note_tool_completed(&mut self, name: String, duration_ms: u64, success: bool) {
14        self.last_tool_name = Some(name);
15        self.last_tool_latency_ms = Some(duration_ms);
16        self.last_tool_success = Some(success);
17        self.pending_tool_name = None;
18        self.pending_tool_started_at = None;
19    }
20
21    /// Borrowed view of the in-flight tool, if any: `(name, started_at)`.
22    pub fn pending_tool_snapshot(&self) -> Option<(&str, Instant)> {
23        self.pending_tool_name
24            .as_deref()
25            .zip(self.pending_tool_started_at)
26    }
27}