aboutsummaryrefslogtreecommitdiff
path: root/src/detect/agents/grok.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/detect/agents/grok.rs')
-rw-r--r--src/detect/agents/grok.rs17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/detect/agents/grok.rs b/src/detect/agents/grok.rs
index 75b5cd35..8a5834a2 100644
--- a/src/detect/agents/grok.rs
+++ b/src/detect/agents/grok.rs
@@ -7,17 +7,11 @@ use super::super::{has_braille_spinner, AgentState};
/// status line such as "⠋ Waiting… 1.8s" plus live controls like
/// "Ctrl+c:cancel" and "Ctrl+Enter:interject".
pub(super) fn detect(content: &str) -> AgentState {
- let lower = content.to_lowercase();
-
- if lower.contains("use ← → to choose permission whitelist scope")
- || lower.contains("yes, proceed")
- || lower.contains("no, reject")
- || lower.contains("ctrl+o:yolo")
- || lower.contains(":scope")
- {
+ if has_visible_blocker(content) {
return AgentState::Blocked;
}
+ let lower = content.to_lowercase();
if has_braille_spinner(content)
&& (lower.contains("waiting")
|| lower.contains("run ")
@@ -34,3 +28,10 @@ pub(super) fn detect(content: &str) -> AgentState {
AgentState::Idle
}
+
+pub(super) fn has_visible_blocker(content: &str) -> bool {
+ let lower = content.to_lowercase();
+ let has_scope_selector = lower.contains("use ← → to choose permission whitelist scope")
+ || lower.contains("←/→:scope");
+ has_scope_selector && lower.contains("yes, proceed") && lower.contains("no, reject")
+}