unify tool tracking: ActiveToolCall with JoinHandle
One data structure for all in-flight tool calls — metadata for TUI display + JoinHandle for result collection and cancellation. Agent spawns tool calls via tokio::spawn, pushes to shared Arc<Mutex<Vec<ActiveToolCall>>>. TUI reads metadata, can abort(). No separate inflight/background collections. Non-background: awaited after stream ends. Background: persists, drained at next turn start. Co-Developed-By: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
17a018ff12
commit
a78f310e4d
5 changed files with 106 additions and 82 deletions
|
|
@ -118,6 +118,17 @@ pub struct ProcessInfo {
|
|||
pub started: Instant,
|
||||
}
|
||||
|
||||
/// A tool call in flight — metadata for TUI + JoinHandle for
|
||||
/// result collection and cancellation.
|
||||
pub struct ActiveToolCall {
|
||||
pub id: String,
|
||||
pub name: String,
|
||||
pub detail: String,
|
||||
pub started: Instant,
|
||||
pub background: bool,
|
||||
pub handle: tokio::task::JoinHandle<(ToolCall, ToolOutput)>,
|
||||
}
|
||||
|
||||
/// Shared tracker for running child processes. Allows the TUI to
|
||||
/// display what's running and kill processes by PID.
|
||||
#[derive(Debug, Clone, Default)]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue