aboutsummaryrefslogtreecommitdiff
path: root/src/detect/manifests/grok.toml
blob: ef2457ae8b682c09c161e5c13bc3c47827f86ae4 (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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
id = "grok"
version = "2026.07.03.1"
min_engine_version = 2
updated_at = "2026-07-03T00:00:00Z"
aliases = ["grok-build"]

# Evidence: Grok Build 0.2.82 live pane reads.
#
# Working turns render one live status line directly above the prompt box:
#   "⠧ Waiting on subagent… 2.8s   13s ⇣29.7k [stop]"
#   "⠴ Explore /tmp/… + 1 more… 5.6s   19s ⇣29.7k [stop]"
# with a braille spinner and a trailing [stop] chip, plus an Esc:cancel
# footer hint. Permission prompts and ask-user-question dialogs replace the
# spinner with "◆" and draw a "┃"-guttered option list:
#   "┃  2 (○) Yes, proceed"
#   "┃  z (○) Type your answer here"
# with footer hints "1/3:select │ Ctrl+o:yolo │ Ctrl+c:cancel" (permission)
# or "Esc:unselect │ Tab:scrollback │ Shift+x:dismiss" (question dialog).
# Idle footers end with "Ctrl+.:shortcuts" and never contain "Esc:cancel".
# The startup splash draws its logo with braille characters, so working
# rules must anchor on the [stop] chip, not on a bare spinner glyph.

[[rules]]
id = "option_dialog_blocked"
state = "blocked"
priority = 320
region = "whole_recent"
visible_blocker = true
line_regex = ['^\s*┃\s+[0-9a-z]+\s+\([●○]\)\s']

[[rules]]
id = "permission_hints_blocked"
state = "blocked"
priority = 310
region = "bottom_non_empty_lines(2)"
visible_blocker = true
contains = [":select", "ctrl+o:yolo", "ctrl+c:cancel"]

[[rules]]
id = "question_dialog_hints_blocked"
state = "blocked"
priority = 305
region = "bottom_non_empty_lines(2)"
visible_blocker = true
contains = ["tab:scrollback", "shift+x:dismiss"]

# Pre-0.2.x permission UI kept for older Grok Build releases.
[[rules]]
id = "permission_scope_selector"
state = "blocked"
priority = 300
region = "whole_recent"
visible_blocker = true
contains = ["yes, proceed", "no, reject"]
any = [
  { contains = ["use ← → to choose permission whitelist scope"] },
  { contains = ["←/→:scope"] },
]

[[rules]]
id = "spinner_status_working"
state = "working"
priority = 200
region = "whole_recent"
visible_working = true
line_regex = ['^\s*[\x{2801}-\x{28FF}]\s.*\[stop\]\s*$']

[[rules]]
id = "esc_cancel_hints_working"
state = "working"
priority = 190
region = "bottom_non_empty_lines(2)"
visible_working = true
contains = ["esc:cancel", "ctrl+.:shortcuts"]

# Pre-0.2.x working chrome kept for older Grok Build releases.
[[rules]]
id = "waiting_tool_working"
state = "working"
priority = 120
region = "whole_recent"
visible_working = true
any = [
  { all = [{ contains = ["ctrl+c:cancel", "ctrl+enter:interject"] }, { contains = ["waiting"] }] },
  { line_regex = ['^\s*[\x{2801}-\x{28FF}]\s+(Run|Read|Search|List)\b'] },
]

[[rules]]
id = "prompt_hints_idle"
state = "idle"
priority = 100
region = "bottom_non_empty_lines(2)"
visible_idle = true
contains = ["ctrl+.:shortcuts"]
not = [
  { contains = ["esc:cancel"] },
  { contains = ["ctrl+c:cancel"] },
]