diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-17 01:41:17 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-17 01:41:17 +0300 |
| commit | f7fe0f203e0f349df33819aab239c0aade016f79 (patch) | |
| tree | 51540d4a040a1a2d32ecf73c5c2d9277a7d4efef /src/app/agents.rs | |
| parent | 3ecacfddae86d603bfd0d1a0c01602b1d34b1df3 (diff) | |
fix: polish terminal-core agent semantics
Diffstat (limited to 'src/app/agents.rs')
| -rw-r--r-- | src/app/agents.rs | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/app/agents.rs b/src/app/agents.rs index f9e410f5..15b93674 100644 --- a/src/app/agents.rs +++ b/src/app/agents.rs @@ -17,7 +17,6 @@ impl App { .filter_map(move |pane_id| self.agent_info(ws_idx, pane_id)) }) }) - .filter(|agent| agent.name.is_some() || agent.agent.is_some()) .collect() } @@ -88,8 +87,11 @@ impl App { })); }; match normalized_name { - Some(name) => terminal.set_manual_label(name), - None => terminal.clear_manual_label(), + Some(name) => { + terminal.set_agent_name(name.clone()); + terminal.set_manual_label(name); + } + None => terminal.clear_agent_name(), } self.state.mark_session_dirty(); self.agent_info(resolved.ws_idx, resolved.pane_id) @@ -195,6 +197,7 @@ impl App { let Some(terminal) = self.state.terminals.get_mut(&terminal_id) else { return Err(AgentStartError::SpawnFailed("terminal disappeared".into())); }; + terminal.set_agent_name(name.clone()); terminal.set_manual_label(name); self.state.mark_session_dirty(); @@ -403,10 +406,16 @@ impl App { ws_idx: usize, pane_id: crate::layout::PaneId, ) -> Option<crate::api::schema::AgentInfo> { + let ws = self.state.workspaces.get(ws_idx)?; + let pane_state = ws.pane_state(pane_id)?; + let terminal = self.state.terminals.get(&pane_state.attached_terminal_id)?; + if !terminal.is_agent_terminal() { + return None; + } let pane = self.pane_info(ws_idx, pane_id)?; Some(crate::api::schema::AgentInfo { terminal_id: pane.terminal_id, - name: pane.label, + name: terminal.agent_name.clone(), agent: pane.agent, agent_status: pane.agent_status, workspace_id: pane.workspace_id, |
