aboutsummaryrefslogtreecommitdiff
path: root/website/agent-detection
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-09-01 14:48:45 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-09-01 14:48:45 +0300
commit8a6d697308162874a236c84aac0b0f8c7ac01f83 (patch)
treeed7dc7e8c6f50d66bde721fae78576aede929f66 /website/agent-detection
parentb54a78aa510b87d1e3b56c619b72eaeb59e4a2a1 (diff)
refactor: separate website presentation from runtime
Diffstat (limited to 'website/agent-detection')
-rw-r--r--website/agent-detection/amp.toml65
-rw-r--r--website/agent-detection/antigravity.toml33
-rw-r--r--website/agent-detection/claude.toml226
-rw-r--r--website/agent-detection/cline.toml26
-rw-r--r--website/agent-detection/codex.toml89
-rw-r--r--website/agent-detection/cursor.toml57
-rw-r--r--website/agent-detection/devin.toml86
-rw-r--r--website/agent-detection/droid.toml48
-rw-r--r--website/agent-detection/gemini.toml25
-rw-r--r--website/agent-detection/github-copilot.toml45
-rw-r--r--website/agent-detection/grok.toml153
-rw-r--r--website/agent-detection/hermes.toml102
-rw-r--r--website/agent-detection/index.toml81
-rw-r--r--website/agent-detection/kilo.toml24
-rw-r--r--website/agent-detection/kimi.toml77
-rw-r--r--website/agent-detection/kiro.toml63
-rw-r--r--website/agent-detection/maki.toml68
-rw-r--r--website/agent-detection/opencode.toml37
-rw-r--r--website/agent-detection/pi.toml13
-rw-r--r--website/agent-detection/qodercli.toml38
-rw-r--r--website/agent-detection/qwen.toml119
21 files changed, 0 insertions, 1475 deletions
diff --git a/website/agent-detection/amp.toml b/website/agent-detection/amp.toml
deleted file mode 100644
index 1fc5dfa6..00000000
--- a/website/agent-detection/amp.toml
+++ /dev/null
@@ -1,65 +0,0 @@
-id = "amp"
-version = "2026.07.09.1"
-min_engine_version = 2
-updated_at = "2026-07-09T00:00:00Z"
-aliases = ["amp-local"]
-
-[[rules]]
-id = "osc_title_plugin_confirmation_blocked"
-state = "blocked"
-priority = 1100
-region = "osc_title"
-visible_blocker = true
-contains = ["Plugin confirmation needed"]
-
-[[rules]]
-id = "osc_title_working"
-state = "working"
-priority = 1050
-region = "osc_title"
-visible_working = true
-regex = ['^[\x{2800}-\x{28FF}] ']
-
-[[rules]]
-id = "approval_footer"
-state = "blocked"
-priority = 300
-region = "whole_recent"
-visible_blocker = true
-any = [
- { contains = ["waiting for approval"] },
- { contains = ["invoke tool"] },
- { contains = ["run this command?"] },
- { contains = ["allow editing file:"] },
- { contains = ["allow creating file:"] },
- { contains = ["confirm tool call"] },
- { contains = ["approve"], any = [{ contains = ["allow all for this session"] }, { contains = ["allow all for every session"] }, { contains = ["allow file for every session"] }, { contains = ["deny with feedback"] }] },
-]
-
-[[rules]]
-id = "status_footer_working"
-state = "working"
-priority = 200
-region = "bottom_non_empty_lines(5)"
-visible_working = true
-line_regex = ['(?i)^\s*╰\s+\S+\s+(thinking|streaming|running tools|waiting)\s+─']
-
-[[rules]]
-id = "esc_cancel_working"
-state = "working"
-priority = 100
-region = "whole_recent"
-visible_working = true
-contains = ["esc to cancel"]
-
-[[rules]]
-id = "osc_title_idle"
-state = "idle"
-priority = 50
-region = "osc_title"
-visible_idle = true
-contains = [" - amp - "]
-not = [
- { regex = ['^[\x{2800}-\x{28FF}] '] },
- { contains = ["Plugin confirmation needed"] },
-]
diff --git a/website/agent-detection/antigravity.toml b/website/agent-detection/antigravity.toml
deleted file mode 100644
index 8b9bcfcf..00000000
--- a/website/agent-detection/antigravity.toml
+++ /dev/null
@@ -1,33 +0,0 @@
-id = "agy"
-version = "2026.06.24.1"
-min_engine_version = 1
-updated_at = "2026-06-24T00:00:00Z"
-aliases = ["antigravity", "antigravity-cli"]
-
-[[rules]]
-id = "permission_prompt"
-state = "blocked"
-priority = 300
-region = "whole_recent"
-visible_blocker = true
-contains = ["requesting permission for:"]
-any = [
- { contains = ["do you want to proceed?"] },
- { contains = ["tab amend", "edit command"] },
-]
-
-[[rules]]
-id = "spinner_working"
-state = "working"
-priority = 100
-region = "whole_recent"
-visible_working = true
-line_regex = ['^\s*[\u2800-\u28FF]+\s+\p{Alphabetic}+\w*ing\b']
-
-[[rules]]
-id = "background_tasks_working"
-state = "working"
-priority = 90
-region = "bottom_non_empty_lines(5)"
-visible_working = true
-line_regex = ['(?i)·\s*[1-9][0-9]*\s+task']
diff --git a/website/agent-detection/claude.toml b/website/agent-detection/claude.toml
deleted file mode 100644
index 55adacd6..00000000
--- a/website/agent-detection/claude.toml
+++ /dev/null
@@ -1,226 +0,0 @@
-id = "claude"
-version = "2026.08.29.1"
-min_engine_version = 2
-updated_at = "2026-08-29T00:00:00Z"
-aliases = ["claude-code"]
-
-[[rules]]
-id = "osc_title_working"
-state = "working"
-priority = 1100
-region = "osc_title"
-visible_working = true
-# Braille covers <= 2.1.227; half-circles are the 2.1.228 busy spinner.
-regex = ['^[\x{2800}-\x{28FF}\x{25D0}-\x{25D3}] ']
-
-[[rules]]
-id = "live_turn_working"
-state = "working"
-priority = 970
-region = "bottom_non_empty_lines(12)"
-visible_working = true
-any = [
- { line_regex = ['^\s*[⏸⏵].*esc to interrupt(?:\s|·|$)'] },
- { line_regex = ['^\s*[\x{002A}\x{00B7}\x{2722}\x{2736}\x{273B}\x{273D}]\s+\S.*…(?:\s+\(\d+[smh](?:\s|·)|\s*$)'] },
-]
-
-[[rules]]
-id = "background_shell_working"
-state = "working"
-priority = 965
-region = "bottom_non_empty_lines(5)"
-visible_working = true
-line_regex = ['^\s*[⏸⏵].*·\s+[1-9]\d*\s+shells?\s+(?:·|$)']
-
-[[rules]]
-id = "background_agents_working"
-state = "working"
-priority = 965
-region = "last_non_empty_above_prompt_box"
-visible_working = true
-line_regex = ['^\s*[\x{002A}\x{00B7}\x{2722}\x{2736}\x{273B}\x{273D}]\s+Waiting for [1-9]\d* background agents? to finish\s*$']
-
-[[rules]]
-id = "background_mcp_task_working"
-state = "working"
-priority = 965
-region = "bottom_non_empty_lines(12)"
-visible_working = true
-# Claude renders activity summaries at column zero; wrapped continuations are indented.
-# Keeping that shape prevents user prompt text from impersonating this signal.
-regex = ['(?m)^[\x{002A}\x{00B7}\x{2722}\x{2736}\x{273B}\x{273D}][ \t]+\S[^\n]*?(?:\n[ \t]+[^\n]*?){0,3}·(?:[ \t]+|\n[ \t]*)[1-9]\d*(?:[ \t]+|\n[ \t]*)MCP(?:[ \t]+|\n[ \t]*)tasks?(?:[ \t]+|\n[ \t]*)still(?:[ \t]+|\n[ \t]*)running[ \t]*$']
-not = [
- { contains = ["do you want to proceed?"] },
- { contains = ["esc to cancel"] },
- { contains = ["waiting for permission"] },
- { contains = ["do you want to allow this connection?"] },
- { contains = ["tab to amend"] },
- { contains = ["ctrl+e to explain"] },
-]
-
-[[rules]]
-id = "btw_overlay_working"
-state = "working"
-priority = 975
-region = "bottom_non_empty_lines(5)"
-visible_working = true
-line_regex = [
- '^\s*/btw(?:\s|$)',
- '(?i)esc to close\s*$',
-]
-
-[[rules]]
-id = "transcript_viewer"
-state = "unknown"
-priority = 1000
-region = "bottom_non_empty_lines(3)"
-skip_state_update = true
-contains = ["showing detailed transcript"]
-any = [
- { contains = ["ctrl+o", "to toggle"] },
- { contains = ["ctrl+e", "show all"] },
- { contains = ["ctrl+e", "collapse"] },
- { contains = ["↑↓ scroll"] },
- { contains = ["? for shortcuts"] },
-]
-
-[[rules]]
-id = "live_blocked_form"
-state = "blocked"
-priority = 980
-region = "after_last_horizontal_rule"
-visible_blocker = true
-contains = ["esc to cancel"]
-any = [
- { contains = ["enter to confirm"] },
- { contains = ["enter to select"], any = [
- { contains = ["tab/arrow keys to navigate"] },
- { contains = ["arrow keys to navigate"] },
- { contains = ["arrows to navigate"] },
- { contains = ["↑/↓ to navigate"] },
- { contains = ["↑↓ to navigate"] },
- ] },
-]
-
-[[rules]]
-id = "dynamic_workflow_prompt"
-state = "blocked"
-priority = 980
-region = "whole_recent"
-visible_blocker = true
-contains = ["run a dynamic workflow?", "esc to cancel"]
-
-[[rules]]
-id = "mcp_elicitation_prompt"
-state = "blocked"
-priority = 980
-region = "whole_recent"
-visible_blocker = true
-# MCP elicitation dialogs (elicitation/create) show Accept/Decline controls
-# with an "Esc to cancel" footer but no Enter hint, so live_blocked_form
-# cannot see them (issue #3283). Gate on the invariant header line, the
-# Accept/Decline control line, and the cancel footer.
-contains = ["esc to cancel"]
-line_regex = ['(?i)^\s*MCP server ["\x{201C}].+["\x{201D}] requests your input\s*$']
-all = [
- { any = [
- { line_regex = ['^\s*\x{276F}?\s*Accept\b'] },
- { line_regex = ['^\s*\x{276F}?\s*Decline\b'] },
- ] },
-]
-
-[[rules]]
-id = "live_prompt_box"
-state = "idle"
-priority = 950
-region = "prompt_box_body"
-visible_idle = true
-line_regex = ['^\s*❯']
-not = [
- { contains = ["enter to select"] },
- { contains = ["esc to cancel"] },
- { contains = ["tab/arrow keys"] },
- { contains = ["arrow keys to navigate"] },
- { contains = ["↑/↓ to navigate"] },
-]
-
-[[rules]]
-id = "model_picker_menu"
-state = "unknown"
-priority = 900
-region = "whole_recent"
-skip_state_update = true
-contains = ["select model", "enter to set as default", "esc to cancel"]
-not = [
- { contains = ["do you want to proceed?"] },
- { contains = ["enter to select"] },
-]
-
-[[rules]]
-id = "bash_permission_prompt"
-state = "blocked"
-priority = 850
-region = "whole_recent"
-visible_blocker = true
-contains = ["do you want to proceed?"]
-any = [
- { contains = ["bash command"] },
- { contains = ["bash("] },
- { contains = ["contains expansion"] },
- { contains = ["tab to amend"] },
- { contains = ["ctrl+e to explain"] },
-]
-all = [
- { any = [{ line_regex = ['(?i)^\s*❯?\s*yes\b'] }, { line_regex = ['(?i)^\s*1\.\s*yes\b'] }, { line_regex = ['(?i)^\s*2\.\s*no\b'] }] },
-]
-
-[[rules]]
-id = "generic_permission_prompt"
-state = "blocked"
-priority = 840
-region = "after_last_horizontal_rule"
-visible_blocker = true
-contains = ["do you want to proceed?", "esc to cancel"]
-all = [
- { any = [
- { line_regex = ['(?i)^\s*❯?\s*1\.\s*yes\b'] },
- { line_regex = ['(?i)^\s*2\.\s*yes\b'] },
- { line_regex = ['(?i)^\s*2\.\s*no\b'] },
- { line_regex = ['(?i)^\s*3\.\s*no\b'] },
- ] },
-]
-
-[[rules]]
-id = "legacy_no_prompt_blocker"
-state = "blocked"
-priority = 300
-region = "whole_recent"
-any = [
- { contains = ["do you want to"], any = [{ contains = ["yes"] }, { contains = ["❯"] }] },
- { contains = ["would you like to"], any = [{ contains = ["yes"] }, { contains = ["❯"] }] },
- { contains = ["waiting for permission"] },
- { contains = ["do you want to allow this connection?"] },
- { contains = ["tab to amend"] },
- { contains = ["ctrl+e to explain"] },
- { contains = ["do you want to proceed?", "esc to cancel"] },
- { contains = ["review your answers"] },
- { contains = ["skip interview and plan immediately"] },
-]
-not = [
- { regex = ['(?m)^\s*❯\s*$'] },
-]
-
-[[rules]]
-id = "osc_title_idle"
-state = "idle"
-priority = 250
-region = "osc_title"
-visible_idle = true
-regex = ['^\x{2733} ']
-
-[[rules]]
-id = "osc_progress_idle"
-state = "idle"
-priority = 250
-region = "osc_progress"
-regex = ['^4;0']
diff --git a/website/agent-detection/cline.toml b/website/agent-detection/cline.toml
deleted file mode 100644
index b30f4417..00000000
--- a/website/agent-detection/cline.toml
+++ /dev/null
@@ -1,26 +0,0 @@
-id = "cline"
-version = "2026.06.10.1"
-min_engine_version = 1
-updated_at = "2026-06-10T00:00:00Z"
-
-[[rules]]
-id = "tool_permission"
-state = "blocked"
-priority = 300
-region = "whole_recent"
-visible_blocker = true
-any = [
- { contains = ["let cline use this tool"] },
- { contains = ["[act mode]", "execute command?", "yes"] },
- { contains = ["[act mode]", "use this tool?", "yes"] },
- { contains = ["[plan mode]", "execute command?", "yes"] },
- { contains = ["[plan mode]", "use this tool?", "yes"] },
-]
-
-[[rules]]
-id = "default_cline_working"
-state = "working"
-priority = -10
-region = "whole_recent"
-visible_working = true
-regex = ['(?s).+']
diff --git a/website/agent-detection/codex.toml b/website/agent-detection/codex.toml
deleted file mode 100644
index 6833f390..00000000
--- a/website/agent-detection/codex.toml
+++ /dev/null
@@ -1,89 +0,0 @@
-id = "codex"
-version = "2026.08.28.1"
-min_engine_version = 3
-updated_at = "2026-08-28T00:00:00Z"
-
-[[rules]]
-id = "osc_title_blocked"
-state = "blocked"
-priority = 1100
-region = "osc_title"
-visible_blocker = true
-contains = ["Action Required"]
-
-[[rules]]
-id = "osc_title_working"
-state = "working"
-priority = 1050
-region = "osc_title"
-visible_working = true
-regex = ['(?:^| )[⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏](?: |$)']
-
-[[rules]]
-id = "transcript_viewer"
-state = "unknown"
-priority = 1000
-region = "after_last_prompt_marker"
-skip_state_update = true
-contains = ["↑/↓ to scroll", "pgup/pgdn to", "home/end to jump", "q to quit"]
-any = [
- { contains = ["esc to edit prev"] },
- { contains = ["esc/← to edit prev"] },
-]
-
-[[rules]]
-id = "trust_directory"
-state = "blocked"
-priority = 950
-region = "top_non_empty_lines(20)"
-visible_blocker = true
-all = [
- { regex = ['\A> You are in [^\r\n]+(?:\r?\n|$)'] },
- { regex = ['(?s)Do\s+you\s+trust\s+the\s+contents\s+of\s+this\s+directory\?'] },
-]
-
-[[rules]]
-id = "live_strong_blocker"
-state = "blocked"
-priority = 900
-region = "after_last_prompt_marker"
-visible_blocker = true
-any = [
- { contains = ["press enter to confirm or esc to cancel"] },
- { contains = ["enter to submit answer"] },
- { contains = ["enter to submit all"] },
- { contains = ["allow command?"] },
-]
-
-[[rules]]
-id = "weak_blocker"
-state = "blocked"
-priority = 600
-region = "whole_recent_without_current_prompt_marker"
-any = [
- { contains = ["[y/n]"] },
- { contains = ["yes (y)"] },
- { contains = ["do you want to"], any = [{ contains = ["yes"] }, { contains = ["❯"] }] },
- { contains = ["would you like to"], any = [{ contains = ["yes"] }, { contains = ["❯"] }] },
-]
-
-[[rules]]
-id = "screen_working_fallback"
-state = "working"
-priority = 500
-region = "bottom_non_empty_lines(3)"
-visible_working = true
-line_regex = ['^[•◦]\s+Working \([^)]*esc to interrupt\)(?: · .*)?$']
-not = [{ contains = ["■ Conversation interrupted"] }]
-
-[[rules]]
-id = "osc_title_idle"
-state = "idle"
-priority = 100
-region = "osc_title"
-visible_idle = true
-regex = ['\S']
-not = [
- { regex = ['(?:^| )[⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏](?: |$)'] },
- { contains = ["Action Required"] },
-]
diff --git a/website/agent-detection/cursor.toml b/website/agent-detection/cursor.toml
deleted file mode 100644
index ee03e6db..00000000
--- a/website/agent-detection/cursor.toml
+++ /dev/null
@@ -1,57 +0,0 @@
-id = "cursor"
-version = "2026.08.03.1"
-min_engine_version = 1
-updated_at = "2026-08-03T01:08:04Z"
-aliases = ["cursor-agent"]
-
-[[rules]]
-id = "write_file_approval"
-state = "blocked"
-priority = 320
-region = "bottom_non_empty_lines(8)"
-visible_blocker = true
-contains = ["write to this file?", "proceed (y)"]
-any = [
- { contains = ["reject & propose changes"] },
- { contains = ["esc or n or p"] },
- { contains = ["add write("] },
-]
-
-[[rules]]
-id = "approval_prompt"
-state = "blocked"
-priority = 300
-region = "whole_recent"
-visible_blocker = true
-any = [
- { contains = ["waiting for approval", "run this command?"], any = [{ contains = ["run (once) (y)"] }, { contains = ["skip (esc or n)"] }] },
- { contains = ["(y) (enter)"] },
- { line_regex = ['(?i)^\s*allow .*\(y\)'] },
- { contains = ["keep (n)"] },
- { contains = ["skip (esc or n)"] },
- { line_regex = ['(?i)^\s*(?:→\s*)?run .*\(y\)'] },
-]
-
-[[rules]]
-id = "stop_hint_working"
-state = "working"
-priority = 100
-region = "bottom_non_empty_lines(6)"
-visible_working = true
-contains = ["ctrl+c to stop"]
-
-[[rules]]
-id = "background_task_status_working"
-state = "working"
-priority = 95
-region = "bottom_non_empty_lines(5)"
-visible_working = true
-line_regex = ['(?i)\b[1-9][0-9]*\s+background\s+tasks?\b']
-
-[[rules]]
-id = "spinner_working"
-state = "working"
-priority = 90
-region = "bottom_non_empty_lines(8)"
-visible_working = true
-line_regex = ['^\s*(⬡|⬢|[\u2800-\u28FF]+)\s+\p{Alphabetic}+\w*ing\b']
diff --git a/website/agent-detection/devin.toml b/website/agent-detection/devin.toml
deleted file mode 100644
index c9564f7c..00000000
--- a/website/agent-detection/devin.toml
+++ /dev/null
@@ -1,86 +0,0 @@
-id = "devin"
-version = "2026.06.15.1"
-min_engine_version = 1
-updated_at = "2026-06-15T00:00:00Z"
-aliases = ["devin-cli", "devin cli"]
-
-[[rules]]
-id = "workspace_trust_prompt"
-state = "blocked"
-priority = 300
-region = "bottom_non_empty_lines(8)"
-visible_blocker = true
-contains = [
- "do you trust the authors of this directory?",
- "with untrusted content.",
- "yes, trust ",
-]
-
-[[rules]]
-id = "permission_prompt"
-state = "blocked"
-priority = 290
-region = "bottom_non_empty_lines(8)"
-visible_blocker = true
-contains = ["approve once", "select", "confirm", "esc cancel"]
-
-[[rules]]
-id = "running_tools_footer"
-state = "working"
-priority = 200
-region = "bottom_non_empty_lines(8)"
-visible_working = true
-contains = ["running tools", "esc to interrupt"]
-not = [
- { contains = ["approve once", "esc cancel"] },
-]
-
-[[rules]]
-id = "guide_while_working"
-state = "working"
-priority = 190
-region = "bottom_non_empty_lines(6)"
-visible_working = true
-contains = ["guide devin while it works"]
-not = [
- { contains = ["approve once", "esc cancel"] },
-]
-
-[[rules]]
-id = "tool_reading_timeout"
-state = "working"
-priority = 180
-region = "bottom_non_empty_lines(8)"
-visible_working = true
-contains = ["reading shell ", "timeout:"]
-not = [
- { contains = ["approve once", "esc cancel"] },
-]
-
-[[rules]]
-id = "welcome_prompt_footer"
-state = "idle"
-priority = 120
-region = "bottom_non_empty_lines(8)"
-visible_idle = true
-contains = ["ask devin to build", "features, fix bugs", "your code"]
-line_regex = ['^\s*❭ Ask Devin to build']
-not = [
- { contains = ["approve once", "esc cancel"] },
- { contains = ["running tools", "esc to interrupt"] },
- { contains = ["guide devin while it works"] },
-]
-
-[[rules]]
-id = "live_prompt_footer"
-state = "idle"
-priority = 100
-region = "bottom_non_empty_lines(6)"
-visible_idle = true
-contains = ["context:"]
-line_regex = ['^\s*❭']
-not = [
- { contains = ["approve once", "esc cancel"] },
- { contains = ["running tools", "esc to interrupt"] },
- { contains = ["guide devin while it works"] },
-]
diff --git a/website/agent-detection/droid.toml b/website/agent-detection/droid.toml
deleted file mode 100644
index c41d71b4..00000000
--- a/website/agent-detection/droid.toml
+++ /dev/null
@@ -1,48 +0,0 @@
-id = "droid"
-version = "2026.06.10.1"
-min_engine_version = 1
-updated_at = "2026-06-10T00:00:00Z"
-
-[[rules]]
-id = "execute_selection_blocker"
-state = "blocked"
-priority = 300
-region = "whole_recent"
-visible_blocker = true
-contains = ["enter to select", "esc to cancel"]
-any = [
- { contains = ["↑↓ to navigate"] },
- { contains = ["use ↑↓ to navigate"] },
-]
-all = [
- { any = [{ contains = ["> yes, allow"] }, { contains = ["> no, cancel"] }] },
-]
-
-[[rules]]
-id = "selection_menu_blocker"
-state = "blocked"
-priority = 290
-region = "bottom_non_empty_lines(8)"
-visible_blocker = true
-contains = ["enter select", "esc cancel"]
-any = [
- { contains = ["↑/↓ navigate"] },
- { contains = ["↑↓ navigate"] },
-]
-
-[[rules]]
-id = "spinner_stop_working"
-state = "working"
-priority = 110
-region = "whole_recent"
-visible_working = true
-contains = ["esc to stop"]
-line_regex = ['^\s*[\u2800-\u28FF]']
-
-[[rules]]
-id = "stop_hint_working"
-state = "working"
-priority = 100
-region = "whole_recent"
-visible_working = true
-contains = ["esc to stop"]
diff --git a/website/agent-detection/gemini.toml b/website/agent-detection/gemini.toml
deleted file mode 100644
index 9d7a28e1..00000000
--- a/website/agent-detection/gemini.toml
+++ /dev/null
@@ -1,25 +0,0 @@
-id = "gemini"
-version = "2026.06.10.1"
-min_engine_version = 1
-updated_at = "2026-06-10T00:00:00Z"
-
-[[rules]]
-id = "apply_or_allow_change"
-state = "blocked"
-priority = 300
-region = "whole_recent"
-visible_blocker = true
-any = [
- { contains = ["│ Apply this change"] },
- { contains = ["│ Allow execution"] },
- { all = [{ contains = ["yes"] }, { any = [{ contains = ["waiting for user confirmation"] }, { contains = ["│ Do you want to proceed"] }, { contains = ["do you want to proceed?"] }] }] },
- { line_regex = ['(?i)^\s*❯.*(yes|allow)'] },
-]
-
-[[rules]]
-id = "esc_cancel_working"
-state = "working"
-priority = 100
-region = "whole_recent"
-visible_working = true
-contains = ["esc to cancel"]
diff --git a/website/agent-detection/github-copilot.toml b/website/agent-detection/github-copilot.toml
deleted file mode 100644
index 57fafdd8..00000000
--- a/website/agent-detection/github-copilot.toml
+++ /dev/null
@@ -1,45 +0,0 @@
-id = "copilot"
-version = "2026.08.29.1"
-min_engine_version = 1
-updated_at = "2026-08-29T00:00:00Z"
-aliases = ["github-copilot", "ghcs"]
-
-[[rules]]
-id = "selection_blocker"
-state = "blocked"
-priority = 300
-region = "whole_recent"
-visible_blocker = true
-all = [
- { any = [
- { contains = ["esc to cancel"] },
- { contains = ["esc cancel"] },
- ] },
- { any = [
- { contains = ["enter to select"] },
- { contains = ["enter to confirm"] },
- { contains = ["enter to submit"] },
- { contains = ["enter accept"] },
- ] },
-]
-
-[[rules]]
-id = "background_agents_working"
-state = "working"
-priority = 110
-region = "bottom_non_empty_lines(6)"
-visible_working = true
-line_regex = ['^\s*◎\s+Waiting for background agents(?:\s|·|$)']
-
-[[rules]]
-id = "working_cancel_hint"
-state = "working"
-priority = 100
-region = "whole_recent"
-visible_working = true
-any = [
- { contains = ["esc to cancel"] },
- { contains = ["esc cancel"] },
- { contains = ["esc again to cancel"] },
- { contains = ["esc interrupt"] }
-]
diff --git a/website/agent-detection/grok.toml b/website/agent-detection/grok.toml
deleted file mode 100644
index 996cf377..00000000
--- a/website/agent-detection/grok.toml
+++ /dev/null
@@ -1,153 +0,0 @@
-id = "grok"
-version = "2026.07.16.1"
-min_engine_version = 2
-updated_at = "2026-07-16T00:00:00Z"
-aliases = ["grok-build"]
-
-# Evidence: Grok Build 0.2.101 source and live pane reads.
-#
-# Grok emits OSC 0 titles by default. Idle is "grok" or
-# "<session> - grok". During a turn, the configured title gains a braille
-# spinner and activity text. Permission prompts add "⚠ Action Required";
-# that prefix blinks while the terminal is unfocused, so visible blocker
-# rules outrank the generic non-idle title rule.
-#
-# Grok also emits OSC 9;4 progress on supported terminals. Herdr retains the
-# payload after "9;": "4;1;-1" while busy and "4;0;0" when idle.
-#
-# 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 = "osc_title_blocked"
-state = "blocked"
-priority = 1300
-region = "osc_title"
-visible_blocker = true
-contains = ["Action Required"]
-
-[[rules]]
-id = "option_dialog_blocked"
-state = "blocked"
-priority = 1200
-region = "whole_recent"
-visible_blocker = true
-line_regex = ['^\s*┃\s+[0-9a-z]+\s+\([●○]\)\s']
-
-[[rules]]
-id = "permission_hints_blocked"
-state = "blocked"
-priority = 1190
-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 = 1185
-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 = 1180
-region = "whole_recent"
-visible_blocker = true
-contains = ["yes, proceed", "no, reject"]
-any = [
- { contains = ["use ← → to choose permission whitelist scope"] },
- { contains = ["←/→:scope"] },
-]
-
-[[rules]]
-id = "osc_progress_working"
-state = "working"
-priority = 1150
-region = "osc_progress"
-visible_working = true
-regex = ['^4;1;-1$']
-
-[[rules]]
-id = "osc_title_idle"
-state = "idle"
-priority = 1100
-region = "osc_title"
-visible_idle = true
-regex = ['(?:^| - )grok$']
-not = [
- { regex = ['[\x{2800}-\x{28FF}]'] },
-]
-
-# After known idle titles are excluded, any other non-empty Grok title is
-# active. OSC progress remains authoritative when a custom title omits the
-# spinner but the terminal supports progress reporting.
-[[rules]]
-id = "osc_title_working"
-state = "working"
-priority = 1000
-region = "osc_title"
-visible_working = true
-regex = ['\S']
-
-[[rules]]
-id = "osc_progress_idle"
-state = "idle"
-priority = 950
-region = "osc_progress"
-visible_idle = true
-regex = ['^4;0;0$']
-
-[[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"] },
-]
diff --git a/website/agent-detection/hermes.toml b/website/agent-detection/hermes.toml
deleted file mode 100644
index 17542184..00000000
--- a/website/agent-detection/hermes.toml
+++ /dev/null
@@ -1,102 +0,0 @@
-id = "hermes"
-version = "2026.07.24.1"
-min_engine_version = 2
-updated_at = "2026-07-24T19:12:54Z"
-aliases = ["hermes-agent"]
-
-[[rules]]
-id = "osc_title_blocked"
-state = "blocked"
-priority = 1100
-region = "osc_title"
-visible_blocker = true
-regex = ['^⚠[\u{fe0e}\u{fe0f}]?(?:\s|$)']
-
-[[rules]]
-id = "osc_title_working"
-state = "working"
-priority = 1050
-region = "osc_title"
-visible_working = true
-regex = ['^⏳[\u{fe0e}\u{fe0f}]?(?:\s|$)']
-
-[[rules]]
-id = "dangerous_command_approval"
-state = "blocked"
-priority = 900
-region = "bottom_non_empty_lines(14)"
-visible_blocker = true
-any = [
- { contains = ["dangerous"] },
- { contains = ["approval"] },
- { contains = ["allow once", "deny"] },
- { line_regex = ['(?i)^\s*[▸>]?\s*1\.\s*allow'] },
-]
-all = [
- { any = [{ contains = ["enter confirm"] }, { contains = ["enter to confirm"] }, { contains = ["↑/↓ to select"] }, { contains = ["show full command"] }] },
-]
-
-[[rules]]
-id = "clarification_prompt"
-state = "blocked"
-priority = 900
-region = "bottom_non_empty_lines(14)"
-visible_blocker = true
-any = [
- { contains = ["hermes needs your"] },
- { line_regex = ['^\s*ask\s+\S'] },
- { contains = ["type your answer"] },
-]
-all = [
- { any = [{ contains = ["enter confirm"] }, { contains = ["enter to confirm"] }, { contains = ["enter send"] }, { contains = ["press enter"] }, { contains = ["↑/↓ select"] }, { contains = ["↑/↓ to select"] }, { contains = ["other (type"] }] },
-]
-
-[[rules]]
-id = "credential_prompt"
-state = "blocked"
-priority = 900
-region = "bottom_non_empty_lines(14)"
-visible_blocker = true
-any = [
- { contains = ["sudo password"] },
- { contains = ["skill setup"] },
- { contains = ["🔑", "for "] },
-]
-
-[[rules]]
-id = "confirmation_prompt"
-state = "blocked"
-priority = 900
-region = "bottom_non_empty_lines(14)"
-visible_blocker = true
-all = [
- { any = [{ contains = ["approve once", "cancel"] }, { contains = ["start a new session", "keep going"] }] },
- { any = [{ contains = ["enter to confirm"] }, { contains = ["enter confirm"] }, { contains = ["type 1/2/3"] }, { contains = ["y/n quick"] }] },
-]
-
-[[rules]]
-id = "interrupt_status_working"
-state = "working"
-priority = 950
-region = "bottom_non_empty_lines(5)"
-visible_working = true
-any = [
- { contains = ["msg=interrupt"] },
- { contains = ["ctrl+c to interrupt"] },
-]
-
-[[rules]]
-id = "classic_cancel_working"
-state = "working"
-priority = 500
-region = "bottom_non_empty_lines(5)"
-visible_working = true
-contains = ["ctrl+c cancel"]
-
-[[rules]]
-id = "osc_title_idle"
-state = "idle"
-priority = 100
-region = "osc_title"
-visible_idle = true
-regex = ['^✓[\u{fe0e}\u{fe0f}]?(?:\s|$)']
diff --git a/website/agent-detection/index.toml b/website/agent-detection/index.toml
deleted file mode 100644
index f44a8306..00000000
--- a/website/agent-detection/index.toml
+++ /dev/null
@@ -1,81 +0,0 @@
-schema_version = 1
-
-[[agents]]
-id = "amp"
-path = "amp.toml"
-
-[[agents]]
-id = "agy"
-path = "antigravity.toml"
-
-[[agents]]
-id = "claude"
-path = "claude.toml"
-
-[[agents]]
-id = "cline"
-path = "cline.toml"
-
-[[agents]]
-id = "codex"
-path = "codex.toml"
-
-[[agents]]
-id = "cursor"
-path = "cursor.toml"
-
-[[agents]]
-id = "devin"
-path = "devin.toml"
-
-[[agents]]
-id = "droid"
-path = "droid.toml"
-
-[[agents]]
-id = "gemini"
-path = "gemini.toml"
-
-[[agents]]
-id = "grok"
-path = "grok.toml"
-
-[[agents]]
-id = "hermes"
-path = "hermes.toml"
-
-[[agents]]
-id = "kilo"
-path = "kilo.toml"
-
-[[agents]]
-id = "kimi"
-path = "kimi.toml"
-
-[[agents]]
-id = "kiro"
-path = "kiro.toml"
-
-[[agents]]
-id = "maki"
-path = "maki.toml"
-
-[[agents]]
-id = "opencode"
-path = "opencode.toml"
-
-[[agents]]
-id = "pi"
-path = "pi.toml"
-
-[[agents]]
-id = "qodercli"
-path = "qodercli.toml"
-
-[[agents]]
-id = "qwen"
-path = "qwen.toml"
-
-[[agents]]
-id = "copilot"
-path = "github-copilot.toml"
diff --git a/website/agent-detection/kilo.toml b/website/agent-detection/kilo.toml
deleted file mode 100644
index 4ef004e1..00000000
--- a/website/agent-detection/kilo.toml
+++ /dev/null
@@ -1,24 +0,0 @@
-id = "kilo"
-version = "2026.06.10.1"
-min_engine_version = 1
-updated_at = "2026-06-10T00:00:00Z"
-aliases = ["kilo-code", "kilo code", "herdr:kilo"]
-
-[[rules]]
-id = "opencode_permission"
-state = "blocked"
-priority = 300
-region = "whole_recent"
-visible_blocker = true
-any = [
- { contains = ["△ Permission required"] },
- { contains = ["esc dismiss"], any = [{ contains = ["enter confirm"] }, { contains = ["enter submit"] }, { contains = ["enter toggle"] }], all = [{ any = [{ contains = ["↑↓ select"] }, { contains = ["⇆ tab"] }] }] },
-]
-
-[[rules]]
-id = "esc_interrupt_working"
-state = "working"
-priority = 100
-region = "whole_recent"
-visible_working = true
-contains = ["esc interrupt"]
diff --git a/website/agent-detection/kimi.toml b/website/agent-detection/kimi.toml
deleted file mode 100644
index b4d0100f..00000000
--- a/website/agent-detection/kimi.toml
+++ /dev/null
@@ -1,77 +0,0 @@
-id = "kimi"
-version = "2026.06.10.1"
-min_engine_version = 1
-updated_at = "2026-06-10T00:00:00Z"
-aliases = ["kimi-code", "kimi code"]
-
-[[rules]]
-id = "current_approval_panel"
-state = "blocked"
-priority = 400
-region = "whole_recent"
-visible_blocker = true
-contains = ["↵ confirm"]
-any = [
- { contains = ["run this command?"] },
- { contains = ["write this file?"] },
- { contains = ["apply these edits?"] },
- { contains = ["stop this task?"] },
- { contains = ["ready to build with this plan?"] },
- { line_regex = ['(?i)^\s*▶?\s*approve .*\?$'] },
-]
-all = [
- { contains = [" choose"] },
- { any = [{ contains = ["approve"] }, { contains = ["reject"] }, { contains = ["revise"] }] },
-]
-
-[[rules]]
-id = "question_panel"
-state = "blocked"
-priority = 390
-region = "whole_recent"
-visible_blocker = true
-contains = ["↑↓ select", "esc cancel"]
-line_regex = ['^\s*question\s*$', '^\s*\? ']
-any = [
- { contains = ["↵ choose"] },
- { contains = ["↵ toggle"] },
- { contains = ["↵ save"] },
-]
-
-[[rules]]
-id = "legacy_approval_panel"
-state = "blocked"
-priority = 300
-region = "whole_recent"
-contains = ["requesting approval", "reject"]
-any = [
- { contains = ["approve once"] },
- { contains = ["approve for this session"] },
-]
-all = [
- { any = [{ contains = ["1/2/3/4 choose"] }, { contains = ["↵ confirm"] }] },
-]
-
-[[rules]]
-id = "background_agent_status_working"
-state = "working"
-priority = 120
-region = "bottom_non_empty_lines(3)"
-visible_working = true
-line_regex = ['(?i)\bkimi[-\w.]*\s+thinking\b.*\[[1-9][0-9]*\s+agents?\s+running\]']
-
-[[rules]]
-id = "moon_spinner_working"
-state = "working"
-priority = 100
-region = "whole_recent"
-visible_working = true
-line_regex = ['^\s*(🌕|🌖|🌗|🌘|🌑|🌒|🌓|🌔)\s*$']
-
-[[rules]]
-id = "braille_spinner_working"
-state = "working"
-priority = 90
-region = "whole_recent"
-visible_working = true
-line_regex = ['(?i)^\s*[\u2800-\u28FF]+\s*(thinking\.\.\.|working\.\.\.|using )']
diff --git a/website/agent-detection/kiro.toml b/website/agent-detection/kiro.toml
deleted file mode 100644
index 59ac0a06..00000000
--- a/website/agent-detection/kiro.toml
+++ /dev/null
@@ -1,63 +0,0 @@
-id = "kiro"
-version = "2026.08.01.1"
-min_engine_version = 1
-updated_at = "2026-08-01T00:00:00Z"
-aliases = ["kiro-cli"]
-
-[[rules]]
-id = "tool_approval"
-state = "blocked"
-priority = 300
-region = "whole_recent"
-visible_blocker = true
-contains = ["requires approval"]
-any = [
- { contains = ["yes, single permission"] },
- { contains = ["trust, always allow"] },
- { contains = ["no (tab to edit)"] },
- { contains = ["esc to close"] },
-]
-
-[[rules]]
-id = "subagent_approval"
-state = "blocked"
-priority = 290
-region = "whole_recent"
-visible_blocker = true
-contains = ["pending from subagents"]
-any = [
- { contains = ["tool approval"] },
- { contains = ["tool approvals"] },
-]
-all = [
- { any = [{ contains = ["approve all pending"] }, { contains = ["configure individually"] }, { contains = ["exit (cancel subagents)"] }] },
-]
-
-[[rules]]
-id = "prompt_idle"
-state = "idle"
-priority = 200
-region = "bottom_non_empty_lines(5)"
-visible_idle = true
-contains = ["ask a question or describe a task", "/copy to clipboard"]
-not = [
- { contains = ["kiro is working"] },
- { contains = ["esc to cancel"] },
-]
-
-[[rules]]
-id = "kiro_working_marker"
-state = "working"
-priority = 100
-region = "whole_recent"
-visible_working = true
-contains = ["kiro is working"]
-
-[[rules]]
-id = "tool_spinner_working"
-state = "working"
-priority = 90
-region = "whole_recent"
-visible_working = true
-contains = ["esc to cancel"]
-line_regex = ['^\s*(◔|◑|◕|●)\s+\p{Alphabetic}']
diff --git a/website/agent-detection/maki.toml b/website/agent-detection/maki.toml
deleted file mode 100644
index 5c58404a..00000000
--- a/website/agent-detection/maki.toml
+++ /dev/null
@@ -1,68 +0,0 @@
-id = "maki"
-version = "2026.07.09.2"
-min_engine_version = 1
-updated_at = "2026-07-09T00:00:00Z"
-
-# Maki renders a persistent one-line status bar on the bottom row. It starts
-# with the mode label "[BUILD]", "[PLAN]", or "[BASH]" when idle and gets a
-# leading braille spinner cell while the agent is streaming. Permission
-# requests and the plan-complete form replace the input box above the status
-# bar. Maki does not set OSC title or OSC 9;4 progress.
-
-[[rules]]
-id = "permission_prompt"
-state = "blocked"
-priority = 980
-region = "whole_recent"
-visible_blocker = true
-contains = ["permission required"]
-any = [
- { contains = ["y allow", "n deny"] },
- { contains = ["confirm allow"] },
- { contains = ["confirm deny"] },
- { contains = ["enter deny", "esc cancel"] },
-]
-
-[[rules]]
-id = "plan_complete_form"
-state = "blocked"
-priority = 970
-region = "whole_recent"
-visible_blocker = true
-contains = ["plan complete", "enter confirm"]
-any = [
- { contains = ["space toggle parallel"] },
- { contains = ["edit plan"] },
-]
-
-[[rules]]
-id = "status_bar_spinner_working"
-state = "working"
-priority = 900
-region = "bottom_non_empty_lines(1)"
-visible_working = true
-line_regex = ['^( [\x{2800}-\x{28FF}]){1,2} \[(BUILD|PLAN|BASH)\]']
-
-[[rules]]
-id = "status_bar_idle"
-state = "idle"
-priority = 850
-region = "bottom_non_empty_lines(1)"
-visible_idle = true
-line_regex = ['^ \[(BUILD|PLAN|BASH)\]']
-
-# On narrow panes the right side of the status bar overwrites the mode label,
-# so fall back to the prompt chevron above the input box border. The not-gates
-# keep this from matching the streaming placeholder or a status bar that still
-# shows the spinner.
-[[rules]]
-id = "prompt_box_idle"
-state = "idle"
-priority = 840
-region = "bottom_non_empty_lines(3)"
-visible_idle = true
-line_regex = ['^❯ ']
-not = [
- { contains = ["queue another prompt"] },
- { line_regex = ['^( [\x{2800}-\x{28FF}]){1,2} '] },
-]
diff --git a/website/agent-detection/opencode.toml b/website/agent-detection/opencode.toml
deleted file mode 100644
index 52452383..00000000
--- a/website/agent-detection/opencode.toml
+++ /dev/null
@@ -1,37 +0,0 @@
-id = "opencode"
-version = "2026.06.10.1"
-min_engine_version = 1
-updated_at = "2026-06-10T00:00:00Z"
-aliases = ["open-code", "herdr:opencode"]
-
-[[rules]]
-id = "permission_required"
-state = "blocked"
-priority = 300
-region = "whole_recent"
-visible_blocker = true
-any = [
- { contains = ["△ Permission required"] },
- { contains = ["esc dismiss"], any = [{ contains = ["enter confirm"] }, { contains = ["enter submit"] }, { contains = ["enter toggle"] }], all = [{ any = [{ contains = ["↑↓ select"] }, { contains = ["⇆ tab"] }] }] },
-]
-
-[[rules]]
-id = "interrupt_hint_working"
-state = "working"
-priority = 110
-region = "whole_recent"
-visible_working = true
-any = [
- { contains = ["esc to interrupt"] },
- { contains = ["ctrl+c to interrupt"] },
- { contains = ["press esc to interrupt"] },
- { line_regex = ['(?i).*opencode.*esc (again to )?interrupt'] },
-]
-
-[[rules]]
-id = "progress_bar_working"
-state = "working"
-priority = 100
-region = "whole_recent"
-visible_working = true
-regex = ['(■|⬝){4,}']
diff --git a/website/agent-detection/pi.toml b/website/agent-detection/pi.toml
deleted file mode 100644
index a58d30e9..00000000
--- a/website/agent-detection/pi.toml
+++ /dev/null
@@ -1,13 +0,0 @@
-id = "pi"
-version = "2026.06.10.1"
-min_engine_version = 1
-updated_at = "2026-06-10T00:00:00Z"
-aliases = ["herdr:pi"]
-
-[[rules]]
-id = "working_literal"
-state = "working"
-priority = 100
-region = "whole_recent"
-visible_working = true
-contains = ["Working..."]
diff --git a/website/agent-detection/qodercli.toml b/website/agent-detection/qodercli.toml
deleted file mode 100644
index 51ca805e..00000000
--- a/website/agent-detection/qodercli.toml
+++ /dev/null
@@ -1,38 +0,0 @@
-id = "qodercli"
-version = "2026.06.10.1"
-min_engine_version = 1
-updated_at = "2026-06-10T00:00:00Z"
-aliases = ["qoderclicn", "qoder", "qodercn"]
-
-[[rules]]
-id = "confirmation_or_input_blocker"
-state = "blocked"
-priority = 300
-region = "whole_recent"
-visible_blocker = true
-any = [
- { contains = ["waiting for user confirmation"], any = [{ contains = ["yes"] }, { contains = ["no"] }, { contains = ["allow"] }, { contains = ["reject"] }] },
- { contains = ["awaiting approval"], any = [{ contains = ["allow"] }, { contains = ["reject"] }] },
- { contains = ["permission required"] },
- { contains = ["allow once or always?"] },
- { contains = ["asking user"] },
- { contains = ["enter your response"] },
- { contains = ["review your answers:"] },
- { contains = ["shell awaiting input"] },
-]
-
-[[rules]]
-id = "cancel_hint_working"
-state = "working"
-priority = 100
-region = "whole_recent"
-visible_working = true
-contains = ["(esc to cancel,"]
-
-[[rules]]
-id = "spinner_working"
-state = "working"
-priority = 90
-region = "whole_recent"
-visible_working = true
-line_regex = ['^\s*[\u2800-\u28FF]\s+.*\p{Alphabetic}']
diff --git a/website/agent-detection/qwen.toml b/website/agent-detection/qwen.toml
deleted file mode 100644
index bbed2371..00000000
--- a/website/agent-detection/qwen.toml
+++ /dev/null
@@ -1,119 +0,0 @@
-id = "qwen"
-version = "2026.08.14.1"
-min_engine_version = 2
-updated_at = "2026-08-14T00:00:00Z"
-aliases = ["qwen-code", "qwen code"]
-
-# Qwen Code keeps its composer visible while responding, so the prompt box is
-# not idle evidence by itself. Its status-prefixed terminal titles are the
-# primary locale-independent signals when ui.showStatusInTitle is enabled.
-# Exact screen fallbacks cover built-in locales and narrow terminals. OSC 9;4
-# is supplemental because Qwen emits it only while a tool is executing and
-# only in terminals that advertise progress support.
-
-[[rules]]
-id = "osc_title_blocked"
-state = "blocked"
-priority = 1200
-region = "osc_title"
-visible_blocker = true
-regex = ['^\x{2733}\x{FE0E}? ']
-
-[[rules]]
-id = "osc_title_working"
-state = "working"
-priority = 1100
-region = "osc_title"
-visible_working = true
-regex = ['^\x{25D0}\x{FE0E}? ']
-
-[[rules]]
-id = "waiting_for_confirmation"
-state = "blocked"
-priority = 1000
-region = "bottom_non_empty_lines(20)"
-visible_blocker = true
-line_regex = ['^\s*⠏\s+.*\.\.\.\s*$']
-any = [
- { contains = ["Waiting for user confirmation..."] },
- { contains = ["等待用户确认..."] },
- { contains = ["等待用戶確認..."] },
- { contains = ["Warten auf Benutzerbestätigung..."] },
- { contains = ["En attente de la confirmation de l'utilisateur..."] },
- { contains = ["ユーザーの確認を待っています..."] },
- { contains = ["Aguardando confirmação do usuário..."] },
- { contains = ["Ожидание подтверждения от пользователя..."] },
- { contains = ["Esperant la confirmació de l'usuari..."] },
-]
-
-[[rules]]
-id = "tool_confirmation"
-state = "blocked"
-priority = 990
-region = "bottom_non_empty_lines(20)"
-visible_blocker = true
-contains = ["yes, allow once"]
-any = [
- { contains = ["apply this change?"] },
- { contains = ["allow execution of:"] },
- { contains = ["allow execution of mcp tool"] },
- { contains = ["do you want to proceed?"] },
- { contains = ["shell command execution"] },
-]
-
-[[rules]]
-id = "question_dialog"
-state = "blocked"
-priority = 980
-region = "bottom_non_empty_lines(20)"
-visible_blocker = true
-line_regex = [
- '^\s*[❯›]\s*(?:\[(?: |✓)\]\s*)?\d+\.\s+',
- '^\s*↑/↓\s*:.*(?:Enter|Return)\s*:',
-]
-
-[[rules]]
-id = "folder_trust_dialog"
-state = "blocked"
-priority = 970
-region = "bottom_non_empty_lines(20)"
-visible_blocker = true
-contains = ["do you trust this folder?", "trust folder (", "don't trust (esc)"]
-
-[[rules]]
-id = "cancel_hint_working"
-state = "working"
-priority = 900
-region = "bottom_non_empty_lines(8)"
-visible_working = true
-line_regex = ['^\s*(?:[⠁-⣿]|\.{1,2})\s+.*\(\d+(?:m(?:\s+\d+s)?|s).*\s·\sesc to cancel\)\s*$']
-
-[[rules]]
-id = "narrow_cancel_hint_working"
-state = "working"
-priority = 890
-region = "bottom_non_empty_lines(8)"
-visible_working = true
-line_regex = ['^\s*\(\d+(?:m(?:\s+\d+s)?|s)\s·\sesc to cancel\)\s*$']
-
-[[rules]]
-id = "osc_tool_progress_working"
-state = "working"
-priority = 850
-region = "osc_progress"
-visible_working = true
-regex = ['^4;3(?:;|$)']
-
-[[rules]]
-id = "composer_idle"
-state = "idle"
-priority = 100
-region = "bottom_non_empty_lines(30)"
-visible_idle = true
-line_regex = ['^\s*>\s*(?:type\s*)?.*$']
-any = [
- { contains = ["type your message"] },
- { contains = ["your message or @path/to/file"] },
- { contains = ["@path/to/file"] },
- { contains = ["type", "mes", "sage", "@pat", "h/to", "/fil"] },
-]