blob: 5badcad9adb928989ac1fccb043375f281f64b68 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
use super::super::{has_interrupt_pattern, AgentState};
pub(super) fn detect(content: &str) -> AgentState {
// Blocked
if content.contains("△ Permission required") || has_opencode_question_prompt(content) {
return AgentState::Blocked;
}
// Working
if has_interrupt_pattern(&content.to_lowercase()) {
return AgentState::Working;
}
AgentState::Idle
}
fn has_opencode_question_prompt(content: &str) -> bool {
let lower = content.to_lowercase();
let has_enter_action = lower.contains("enter confirm")
|| lower.contains("enter submit")
|| lower.contains("enter toggle");
let has_question_nav = content.contains("↑↓ select") || content.contains("⇆ tab");
lower.contains("esc dismiss") && has_enter_action && has_question_nav
}
|