diff options
| author | Ivan <unmanbearpig@gmail.com> | 2026-09-20 09:23:58 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-09-20 14:23:58 +0200 |
| commit | 29f9f4056f344af60f411004fc89c7eb5f357c48 (patch) | |
| tree | 8e11bddc337094b8aece2a7abea4ee6ee6340f2a /distribution | |
| parent | a3a1c94ed54e8a65d929528336d69c7e537ed2ef (diff) | |
fix: detect codex status with custom interrupt keys (#4196)
* fix: detect codex status with custom interrupt keys
* test: remove unverified codex stale-status cases
* fix(detect): match punctuation in codex interrupt hints
Accept parentheses in remapped interrupt binding labels and simplify the cheap prefilter to a single any-gate shared by both manifest copies.
---------
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
Diffstat (limited to 'distribution')
| -rw-r--r-- | distribution/agent-detection/codex.toml | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/distribution/agent-detection/codex.toml b/distribution/agent-detection/codex.toml index 5021567a..8ceef314 100644 --- a/distribution/agent-detection/codex.toml +++ b/distribution/agent-detection/codex.toml @@ -1,7 +1,7 @@ id = "codex" -version = "2026.09.14.1" +version = "2026.09.15.1" min_engine_version = 3 -updated_at = "2026-09-14T00:00:00Z" +updated_at = "2026-09-15T00:00:00Z" [[rules]] id = "osc_title_blocked" @@ -84,11 +84,13 @@ state = "working" priority = 500 region = "before_current_prompt_marker" visible_working = true -# Cheap negative filter before the multiline search. -contains = ["esc to interrupt"] -# Animations can hide the bullet, and queued inputs can sit below a dynamic activity label. -# Require the live timer/control suffix with no later response or interruption marker. -regex = ['(?m)^(?:[•◦][ \t]+)?[^\s›•◦■✗✓─][^\r\n]* \((?:[0-9]+[hm] )*[0-9]+s • esc to interrupt\)(?: · [^\r\n]*)?(?:\r?\n(?:[^•◦›■✗✓─\r\n][^\r\n]*|•[ \t]+(?:Queued\s+follow-up\s+inputs|Messages\s+to\s+be\s+submitted\s+after\s+next\s+tool\s+call(?:\s+\(press\s+esc\s+to\s+interrupt\s+and\s+send\s+immediately\))?|Messages\s+to\s+be\s+submitted\s+at\s+end\s+of\s+turn)|›[⠁⠂⠄⠈⠐⠠⡀⢀][^\r\n]*)?)*\s*\z'] +# Support animated and reduced-motion status, including dynamic activity labels. +# The interrupt hint can be remapped, unbound, or hidden, and queued inputs can +# sit below the status. Require the live timer suffix with no later response. +any = [{ contains = [" to interrupt)"] }, { contains = ["s)"] }] +regex = ['(?m)^(?:[•◦][ \t]+)?[^\s›•◦■✗✓─][^\r\n]* \((?:[0-9]+[hm] )*[0-9]+s(?: • [^\r\n]+? to interrupt)?\)(?: · [^\r\n]*)?(?:\r?\n(?:[^•◦›■✗✓─\r\n][^\r\n]*|•[ \t]+(?:Queued\s+follow-up\s+inputs|Messages\s+to\s+be\s+submitted\s+after\s+next\s+tool\s+call(?:\s+\(press\s+[^\r\n]+?\s+to\s+interrupt\s+and\s+send\s+immediately\))?|Messages\s+to\s+be\s+submitted\s+at\s+end\s+of\s+turn)|›[⠁⠂⠄⠈⠐⠠⡀⢀][^\r\n]*)?)*\s*\z'] +# A failed reconnect keeps its final elapsed timer but is no longer working. +not = [{ line_regex = ['^(?:[•◦][ \t]+)?Reconnect failed — check the endpoint, then relaunch \([0-9hms ]+\)$'] }] [[rules]] id = "osc_title_idle" |
