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/terminal | |
| parent | 3ecacfddae86d603bfd0d1a0c01602b1d34b1df3 (diff) | |
fix: polish terminal-core agent semantics
Diffstat (limited to 'src/terminal')
| -rw-r--r-- | src/terminal/state.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/terminal/state.rs b/src/terminal/state.rs index df89b688..f9d5b522 100644 --- a/src/terminal/state.rs +++ b/src/terminal/state.rs @@ -38,6 +38,7 @@ pub struct TerminalState { pub fallback_state: AgentState, pub hook_authority: Option<HookAuthority>, pub manual_label: Option<String>, + pub agent_name: Option<String>, hook_report_sequences: HashMap<String, u64>, pub state: AgentState, pub revision: u64, @@ -53,6 +54,7 @@ impl TerminalState { fallback_state: AgentState::Unknown, hook_authority: None, manual_label: None, + agent_name: None, hook_report_sequences: HashMap::new(), state: AgentState::Unknown, revision: 0, @@ -231,6 +233,21 @@ impl TerminalState { self.manual_label = None; } + pub fn set_agent_name(&mut self, name: String) { + let name = name.trim().to_string(); + self.agent_name = (!name.is_empty()).then_some(name); + } + + pub fn clear_agent_name(&mut self) { + self.agent_name = None; + } + + pub fn is_agent_terminal(&self) -> bool { + self.agent_name.is_some() + || self.effective_agent_label().is_some() + || self.launch_argv.is_some() + } + pub fn border_label(&self, show_agent_labels: bool) -> Option<&str> { self.manual_label.as_deref().or_else(|| { show_agent_labels |
