aboutsummaryrefslogtreecommitdiff
path: root/src/detect/agents/mod.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-06-03 04:38:46 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-06-03 04:38:46 +0300
commit58af4902fc51b6be8fec99a3cec576c98e0c6075 (patch)
tree8dbb2501a61904b4c90d368150b5370b5f9e90e6 /src/detect/agents/mod.rs
parent816cb88cd9df3cba305a50842ebf78db19279dd5 (diff)
fix: preserve status in transcript viewers
Diffstat (limited to 'src/detect/agents/mod.rs')
-rw-r--r--src/detect/agents/mod.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/detect/agents/mod.rs b/src/detect/agents/mod.rs
index 4597c122..a89b2f37 100644
--- a/src/detect/agents/mod.rs
+++ b/src/detect/agents/mod.rs
@@ -39,14 +39,34 @@ pub(super) fn detect(agent: Agent, screen_content: &str) -> AgentDetection {
Agent::Qodercli => qodercli::detect(screen_content),
};
+ let skip_state_update = should_skip_state_update(agent, screen_content);
+ if skip_state_update {
+ return AgentDetection {
+ state,
+ skip_state_update: true,
+ visible_blocker: false,
+ visible_idle: false,
+ visible_working: false,
+ };
+ }
+
AgentDetection {
state,
+ skip_state_update: false,
visible_blocker: has_visible_blocker(agent, screen_content, state),
visible_idle: has_visible_idle(agent, screen_content, state),
visible_working: has_visible_working(agent, screen_content, state),
}
}
+pub(super) fn should_skip_state_update(agent: Agent, content: &str) -> bool {
+ match agent {
+ Agent::Claude => claude_code::is_transcript_viewer(content),
+ Agent::Codex => codex::is_transcript_viewer(content),
+ _ => false,
+ }
+}
+
fn has_visible_blocker(agent: Agent, content: &str, state: AgentState) -> bool {
if state != AgentState::Blocked {
return false;