Make the agents overview an interactive task dashboard (#39112)

## What changed

- Let users start tasks, open root sessions, rename tasks, and stop active work directly from the agents overview.
- Show details for the selected task on wide terminals and limit the overview to root sessions while still reflecting background activity.
- Preserve draft input and pending server requests when switching sessions so running roots and their subagents can continue in the background.
- Apply the selected project's working directory when dispatching from project grouping, including remote workspaces.

## Testing

- Expand overview rendering and interaction coverage for root filtering, dispatch, search, selection, renaming, and responsive input.
- Cover switching away from roots with running subagents and retaining background server requests.

GitOrigin-RevId: b7b0d33b7ecc077498efb756a0ad2fd425158b17
This commit is contained in:
Eric Traut authored and copyberry committed 2026-08-17 23:47:55 +00:00
1 parent 632420e67a
commit 319b2f72b1
11 files changed
+1129 -138

No files matched your search

+19 -1
View File
@@ -195,13 +195,31 @@ pub(crate) enum TranscriptExportDestination {
#[allow(clippy::large_enum_variant)]
#[derive(Debug)]
pub(crate) enum AppEvent {
/// Open the daemon-wide overview of loaded root sessions and their subagents.
/// Open the daemon-wide overview of loaded root sessions.
OpenAgentsOverview,
/// Update the daemon-wide overview after a background thread listing finishes.
AgentsOverviewThreadsLoaded {
request_id: Uuid,
result: Result<Vec<Thread>, String>,
},
/// Switch to a root session selected from the shared dashboard.
SelectAgentsOverviewThread {
thread_id: ThreadId,
},
/// Start a background task directly from the shared dashboard.
DispatchAgentsOverviewTask {
prompt: String,
cwd: Option<AbsolutePathBuf>,
},
/// Rename a task directly from the shared dashboard.
RenameAgentsOverviewThread {
thread_id: ThreadId,
name: String,
},
/// Interrupt a task directly from the shared dashboard.
StopAgentsOverviewThread {
thread_id: ThreadId,
},
/// Open the agent picker for switching active threads.
OpenAgentPicker,
/// Merge a completed root-scoped agent-picker refresh without blocking terminal input.