aboutsummaryrefslogtreecommitdiff
path: root/src/detect/agents/amp.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-06-08 20:55:51 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-06-09 04:26:19 +0300
commitee51c5e5fbaea694e65bb0a4908f75bcaf9707d1 (patch)
treef566d2a5921d4112602a7abcffb5cf6eb04d5f24 /src/detect/agents/amp.rs
parenta7cd7806f2fa0251e2dca41ffec61ceafb6f0e18 (diff)
feat: use pty-first agent detection
Diffstat (limited to 'src/detect/agents/amp.rs')
-rw-r--r--src/detect/agents/amp.rs23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/detect/agents/amp.rs b/src/detect/agents/amp.rs
index ad76ca27..b1fcba4d 100644
--- a/src/detect/agents/amp.rs
+++ b/src/detect/agents/amp.rs
@@ -17,6 +17,19 @@ use super::super::AgentState;
pub(super) fn detect(content: &str) -> AgentState {
let lower = content.to_lowercase();
+ if has_visible_blocker(content) {
+ return AgentState::Blocked;
+ }
+
+ if lower.contains("esc to cancel") {
+ return AgentState::Working;
+ }
+
+ AgentState::Idle
+}
+
+pub(super) fn has_visible_blocker(content: &str) -> bool {
+ let lower = content.to_lowercase();
let has_waiting_for_approval = lower.contains("waiting for approval");
let has_approval_header = lower.contains("invoke tool")
|| lower.contains("run this command?")
@@ -29,13 +42,5 @@ pub(super) fn detect(content: &str) -> AgentState {
|| lower.contains("allow file for every session")
|| lower.contains("deny with feedback"));
- if has_approval_actions && (has_waiting_for_approval || has_approval_header) {
- return AgentState::Blocked;
- }
-
- if lower.contains("esc to cancel") {
- return AgentState::Working;
- }
-
- AgentState::Idle
+ has_approval_actions && (has_waiting_for_approval || has_approval_header)
}