diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-06-08 20:55:51 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-06-09 04:26:19 +0300 |
| commit | ee51c5e5fbaea694e65bb0a4908f75bcaf9707d1 (patch) | |
| tree | f566d2a5921d4112602a7abcffb5cf6eb04d5f24 /src/detect/agents/claude_code.rs | |
| parent | a7cd7806f2fa0251e2dca41ffec61ceafb6f0e18 (diff) | |
feat: use pty-first agent detection
Diffstat (limited to 'src/detect/agents/claude_code.rs')
| -rw-r--r-- | src/detect/agents/claude_code.rs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/detect/agents/claude_code.rs b/src/detect/agents/claude_code.rs index 910eb679..a13019a4 100644 --- a/src/detect/agents/claude_code.rs +++ b/src/detect/agents/claude_code.rs @@ -27,6 +27,10 @@ pub(super) fn detect(content: &str) -> AgentState { return AgentState::Blocked; } + if has_dynamic_workflow_prompt(&lower) { + return AgentState::Blocked; + } + if has_working_chrome(content) { return AgentState::Working; } @@ -45,6 +49,7 @@ pub(super) fn detect(content: &str) -> AgentState { pub(super) fn has_visible_blocker(content: &str) -> bool { let lower = content.to_lowercase(); has_live_blocked_form(content) + || has_dynamic_workflow_prompt(&lower) || lower.contains("do you want to proceed?") && has_claude_yes_no_choice(content) && (lower.contains("bash command") @@ -96,6 +101,7 @@ fn has_claude_blocked_prompt(content: &str, lower_content: &str) -> bool { has_confirmation_prompt(lower_content) || lower_content.contains("do you want to proceed?") || lower_content.contains("would you like to proceed?") + || has_dynamic_workflow_prompt(lower_content) || lower_content.contains("waiting for permission") || lower_content.contains("do you want to allow this connection?") || lower_content.contains("tab to amend") @@ -105,6 +111,10 @@ fn has_claude_blocked_prompt(content: &str, lower_content: &str) -> bool { || (has_selection_prompt(content) && has_claude_yes_no_choice(content)) } +fn has_dynamic_workflow_prompt(lower_content: &str) -> bool { + lower_content.contains("run a dynamic workflow?") && lower_content.contains("esc to cancel") +} + fn has_live_blocked_form(content: &str) -> bool { let region = content_after_last_horizontal_rule(content); region.lines().any(|line| { |
