aboutsummaryrefslogtreecommitdiff
path: root/src/terminal
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/terminal
parent3ecacfddae86d603bfd0d1a0c01602b1d34b1df3 (diff)
fix: polish terminal-core agent semantics
Diffstat (limited to 'src/terminal')
-rw-r--r--src/terminal/state.rs17
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