aboutsummaryrefslogtreecommitdiff
path: root/src/app/agents.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-17 01:41:17 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-17 01:41:17 +0300
commitf7fe0f203e0f349df33819aab239c0aade016f79 (patch)
tree51540d4a040a1a2d32ecf73c5c2d9277a7d4efef /src/app/agents.rs
parent3ecacfddae86d603bfd0d1a0c01602b1d34b1df3 (diff)
fix: polish terminal-core agent semantics
Diffstat (limited to 'src/app/agents.rs')
-rw-r--r--src/app/agents.rs17
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,