From 5a641fe1c1870463ce39909356482e9ae51ffcd6 Mon Sep 17 00:00:00 2001 From: Graham King Date: Wed, 23 Sep 2026 09:21:26 -0400 Subject: [PATCH 1/2] feat(stage): recognize additional harness tool aliases MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add tool aliases to Stage’s existing signal categories: ┌─────────────────┬────────────────┬────────────────────────────┐ │ Category │ Tools │ Harnesses │ ├─────────────────┼────────────────┼────────────────────────────┤ │ Observe │ glob, grep │ Claude Code and OpenCode │ ├─────────────────┼────────────────┼────────────────────────────┤ │ Observe │ grep, find, ls │ Pi’s optional search tools │ ├─────────────────┼────────────────┼────────────────────────────┤ │ Plan │ todo_list │ Hermes │ ├─────────────────┼────────────────┼────────────────────────────┤ │ Shell inference │ exec │ OpenClaw │ ├─────────────────┼────────────────┼────────────────────────────┤ │ Shell inference │ powershell │ Pi on Windows │ └─────────────────┴────────────────┴────────────────────────────┘ Shell tools use the existing command heuristics. Matching remains case-insensitive, covering Claude Code’s Glob and Grep. Assisted-by: Pi:GPT 6 Astra high Signed-off-by: Graham King --- crates/libsy/src/algorithms/util/tool_signals.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/crates/libsy/src/algorithms/util/tool_signals.rs b/crates/libsy/src/algorithms/util/tool_signals.rs index 9c2ed8310..2e375c91b 100644 --- a/crates/libsy/src/algorithms/util/tool_signals.rs +++ b/crates/libsy/src/algorithms/util/tool_signals.rs @@ -183,11 +183,13 @@ static GIT_READ_SUBCOMMANDS: &[&str] = &[ "tag", ]; -static READ_TOOL_NAMES: &[&str] = &["read", "view", "read_file", "search_files"]; +static READ_TOOL_NAMES: &[&str] = &[ + "read", "view", "read_file", "search_files", "glob", "grep", "find", "ls", +]; // Planning / scratchpad tool calls — investigative (non-producing) activity. // `update_plan` is codex's equivalent of `todowrite`. -static PLAN_TOOL_NAMES: &[&str] = &["todowrite", "todo_write", "todo", "update_plan"]; +static PLAN_TOOL_NAMES: &[&str] = &["todowrite", "todo_write", "todo", "update_plan", "todo_list"]; // Tool names that route through Bash-command pattern matching. `bash` is // claude-code's name; `shell_command` is codex's; `shell` / `local_shell_call` @@ -200,6 +202,8 @@ static BASH_TOOL_NAMES: &[&str] = &[ "local_shell_call", "terminal", "exec_command", // codex + "exec", // openclaw + "powershell", // pi on Windows ]; // Prefer false negatives: tests_passed clears a capable hold, so a false positive From b3fb1acbdec4854bd7dcbf7c7ed620ed2d132618 Mon Sep 17 00:00:00 2001 From: Graham King Date: Wed, 23 Sep 2026 09:26:39 -0400 Subject: [PATCH 2/2] cargo fmt Signed-off-by: Graham King --- .../libsy/src/algorithms/util/tool_signals.rs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/crates/libsy/src/algorithms/util/tool_signals.rs b/crates/libsy/src/algorithms/util/tool_signals.rs index 2e375c91b..59d6afc15 100644 --- a/crates/libsy/src/algorithms/util/tool_signals.rs +++ b/crates/libsy/src/algorithms/util/tool_signals.rs @@ -184,12 +184,25 @@ static GIT_READ_SUBCOMMANDS: &[&str] = &[ ]; static READ_TOOL_NAMES: &[&str] = &[ - "read", "view", "read_file", "search_files", "glob", "grep", "find", "ls", + "read", + "view", + "read_file", + "search_files", + "glob", + "grep", + "find", + "ls", ]; // Planning / scratchpad tool calls — investigative (non-producing) activity. // `update_plan` is codex's equivalent of `todowrite`. -static PLAN_TOOL_NAMES: &[&str] = &["todowrite", "todo_write", "todo", "update_plan", "todo_list"]; +static PLAN_TOOL_NAMES: &[&str] = &[ + "todowrite", + "todo_write", + "todo", + "update_plan", + "todo_list", +]; // Tool names that route through Bash-command pattern matching. `bash` is // claude-code's name; `shell_command` is codex's; `shell` / `local_shell_call`