fix(#1194): update Execution tool names + frontend + docs
This commit is contained in:
parent
18e0e8fc2b
commit
f5351eb59c
6 changed files with 19 additions and 17 deletions
|
|
@ -285,7 +285,7 @@ binary flavor.
|
||||||
| `messaging` | `send`, `recv`, `ask`, `answer` |
|
| `messaging` | `send`, `recv`, `ask`, `answer` |
|
||||||
| `meta` | `set_status`, `get_agent_meta` |
|
| `meta` | `set_status`, `get_agent_meta` |
|
||||||
| `inbox` | `get_loose_ends`, `cancel_loose_end`, `remind`, `request_next_turn` |
|
| `inbox` | `get_loose_ends`, `cancel_loose_end`, `remind`, `request_next_turn` |
|
||||||
| `execution` | `bash_run`, `bash_status` |
|
| `execution` | `run`, `status` (`mcp__bash__run`, `mcp__bash__status`) |
|
||||||
| `lifecycle` | `kill`, `start`, `restart`, `update` *(privileged)* |
|
| `lifecycle` | `kill`, `start`, `restart`, `update` *(privileged)* |
|
||||||
| `approvals` | `request_init_config`, `request_apply_commit`, `request_update_meta_inputs` *(privileged)* |
|
| `approvals` | `request_init_config`, `request_apply_commit`, `request_update_meta_inputs` *(privileged)* |
|
||||||
| `scheduling` | `request_schedule_prompt`, `fire_schedule_now`, `cancel_schedule`, `edit_schedule`, `list_schedules` *(privileged)* |
|
| `scheduling` | `request_schedule_prompt`, `fire_schedule_now`, `cancel_schedule`, `edit_schedule`, `list_schedules` *(privileged)* |
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ force-clear `HOST_ADDRESS` / `LOCAL_ADDRESS` / `HOST_ADDRESS6` /
|
||||||
The hive-c0re service sets `path = [ pkgs.git "/run/current-system/sw" ]`.
|
The hive-c0re service sets `path = [ pkgs.git "/run/current-system/sw" ]`.
|
||||||
In-container harness services do the same so anything an agent adds
|
In-container harness services do the same so anything an agent adds
|
||||||
to its own `agent.nix` (`environment.systemPackages`) is visible to
|
to its own `agent.nix` (`environment.systemPackages`) is visible to
|
||||||
the `bash_run` MCP tool (and any other in-container process) without
|
the `mcp__bash__run` MCP tool (and any other in-container process) without
|
||||||
editing the service definition.
|
editing the service definition.
|
||||||
`environment.HYPERHIVE_GIT` bakes git's absolute path in (read by
|
`environment.HYPERHIVE_GIT` bakes git's absolute path in (read by
|
||||||
`lifecycle::git_command()`) for the host.
|
`lifecycle::git_command()`) for the host.
|
||||||
|
|
|
||||||
|
|
@ -177,7 +177,7 @@ Under `/var/lib/hyperhive/agents/<name>/`:
|
||||||
agent consumption. Bind-mounted to `/agents/<name>/harness`
|
agent consumption. Bind-mounted to `/agents/<name>/harness`
|
||||||
inside the container (`$HYPERHIVE_HARNESS_DIR`). Contents:
|
inside the container (`$HYPERHIVE_HARNESS_DIR`). Contents:
|
||||||
- `bash-tasks/` — task JSON + stdout/stderr files for
|
- `bash-tasks/` — task JSON + stdout/stderr files for
|
||||||
background `bash_run` jobs. JSON files are
|
background `mcp__bash__run` jobs. JSON files are
|
||||||
`<id>.json` (status + tails), `<id>.out` / `<id>.err`
|
`<id>.json` (status + tails), `<id>.out` / `<id>.err`
|
||||||
(full captured output). Task files persist until container
|
(full captured output). Task files persist until container
|
||||||
purge.
|
purge.
|
||||||
|
|
|
||||||
|
|
@ -373,20 +373,21 @@ it as a stdio child via `--mcp-config`. The hyperhive socket name is
|
||||||
continue without waiting for an external message. The next turn starts
|
continue without waiting for an external message. The next turn starts
|
||||||
with `from: "self"` and `body: "continue"`. No-op if new inbox
|
with `from: "self"` and `body: "continue"`. No-op if new inbox
|
||||||
messages arrive before this turn ends. No args.
|
messages arrive before this turn ends. No args.
|
||||||
- `bash_run(cmd, timeout_secs?)` — submit a shell command for
|
- `run(cmd, timeout_secs?)` — submit a shell command for
|
||||||
background execution (`sh -c <cmd>`). Returns a task ID immediately;
|
background execution (`sh -c <cmd>`). Returns a task ID immediately;
|
||||||
the command runs asynchronously in a harness-managed tokio task. Stdout
|
the command runs asynchronously in a harness-managed tokio task. Stdout
|
||||||
and stderr stream to `harness/bash-tasks/<id>.{out,err}`. When the
|
and stderr stream to `harness/bash-tasks/<id>.{out,err}`. When the
|
||||||
task completes (or times out, or the process errors), the harness wakes
|
task completes (or times out, or the process errors), the harness wakes
|
||||||
the agent with a summary body — handle on a future turn. Default
|
the agent with a summary body — handle on a future turn. Default
|
||||||
timeout 180s; pass `timeout_secs` to override. Requires the
|
timeout 180s; pass `timeout_secs` to override. Requires the
|
||||||
`execution` tool group.
|
`execution` tool group. Exposed as `mcp__bash__run`.
|
||||||
- `bash_status(id)` — poll the status of a task submitted with
|
- `status(id)` — poll the status of a task submitted with
|
||||||
`bash_run`. Returns status (`pending`/`running`/`done`/`timed_out`/
|
`run`. Returns status (`pending`/`running`/`done`/`timed_out`/
|
||||||
`interrupted`), exit code, run duration, and the last 4 KiB of stdout
|
`interrupted`), exit code, run duration, and the last 4 KiB of stdout
|
||||||
and stderr (full output in the `.out`/`.err` files). Tasks marked
|
and stderr (full output in the `.out`/`.err` files). Tasks marked
|
||||||
`interrupted` had their process killed by a harness restart; a best-
|
`interrupted` had their process killed by a harness restart; a best-
|
||||||
effort wake was still sent so the agent is not silently blocked.
|
effort wake was still sent so the agent is not silently blocked.
|
||||||
|
Exposed as `mcp__bash__status`.
|
||||||
|
|
||||||
### Waking the agent from inside the container
|
### Waking the agent from inside the container
|
||||||
|
|
||||||
|
|
@ -581,9 +582,10 @@ status hint moved to the wake prompt + UI header.
|
||||||
- Allowed MCP tools: as listed above per flavor.
|
- Allowed MCP tools: as listed above per flavor.
|
||||||
|
|
||||||
`Bash` is disallowed — shell execution goes through
|
`Bash` is disallowed — shell execution goes through
|
||||||
`mcp__hyperhive__bash_run` (background tasks with structured output +
|
`mcp__bash__run` (background tasks with structured output +
|
||||||
task-id tracking) instead of an interactive shell. The `bash_run` /
|
task-id tracking) instead of an interactive shell. The `run` /
|
||||||
`bash_status` MCP tools are always in the `--allowedTools` list.
|
`status` MCP tools (`mcp__bash__run` / `mcp__bash__status`) are always
|
||||||
|
in the `--allowedTools` list.
|
||||||
|
|
||||||
`WebFetch` / `WebSearch` are off by default; enable the `web_tools`
|
`WebFetch` / `WebSearch` are off by default; enable the `web_tools`
|
||||||
tool group in the P3RM1SS10NS tab and rebuild the agent to enable them.
|
tool group in the P3RM1SS10NS tab and rebuild the agent to enable them.
|
||||||
|
|
|
||||||
|
|
@ -1254,13 +1254,13 @@ window.marked = marked;
|
||||||
case 'mcp__hyperhive__kill': return short + ' ' + (input.name || '');
|
case 'mcp__hyperhive__kill': return short + ' ' + (input.name || '');
|
||||||
case 'mcp__hyperhive__request_apply_commit':
|
case 'mcp__hyperhive__request_apply_commit':
|
||||||
return short + ' ' + (input.agent || '') + ' @ ' + (input.commit_ref || '').slice(0, 12);
|
return short + ' ' + (input.agent || '') + ' @ ' + (input.commit_ref || '').slice(0, 12);
|
||||||
case 'mcp__bash__bash_run': {
|
case 'mcp__bash__run': {
|
||||||
// Rich renderer handles the full body; this summary covers any
|
// Rich renderer handles the full body; this summary covers any
|
||||||
// fallback path and the details summary line.
|
// fallback path and the details summary line.
|
||||||
const firstLine = String(input.cmd || '').split('\n')[0];
|
const firstLine = String(input.cmd || '').split('\n')[0];
|
||||||
return short + ' $ ' + trim(firstLine.trim(), 72);
|
return short + ' $ ' + trim(firstLine.trim(), 72);
|
||||||
}
|
}
|
||||||
case 'mcp__bash__bash_status':
|
case 'mcp__bash__status':
|
||||||
return short + ' id:' + (input.id || '?')
|
return short + ' id:' + (input.id || '?')
|
||||||
+ (input.wait_seconds != null ? ' · wait ' + input.wait_seconds + 's' : '');
|
+ (input.wait_seconds != null ? ' · wait ' + input.wait_seconds + 's' : '');
|
||||||
default: return fmtArgsGeneric(short, input);
|
default: return fmtArgsGeneric(short, input);
|
||||||
|
|
@ -1354,10 +1354,10 @@ window.marked = marked;
|
||||||
// Bash task runner — show full command in an expandable pre block so
|
// Bash task runner — show full command in an expandable pre block so
|
||||||
// multi-line scripts are readable. Summary uses the first line so the
|
// multi-line scripts are readable. Summary uses the first line so the
|
||||||
// row is identifiable without expanding.
|
// row is identifiable without expanding.
|
||||||
if (name === 'mcp__bash__bash_run') {
|
if (name === 'mcp__bash__run') {
|
||||||
const cmd = String(input.cmd || '');
|
const cmd = String(input.cmd || '');
|
||||||
const firstLine = cmd.split('\n')[0];
|
const firstLine = cmd.split('\n')[0];
|
||||||
const summary = 'bash_run* $ ' + trim(firstLine.trim(), 72);
|
const summary = 'run* $ ' + trim(firstLine.trim(), 72);
|
||||||
return api.details('tool-use', summary, '$ ' + cmd);
|
return api.details('tool-use', summary, '$ ' + cmd);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|
|
||||||
|
|
@ -804,7 +804,7 @@ pub enum ToolGroup {
|
||||||
Scheduling,
|
Scheduling,
|
||||||
/// `get_logs` - *(privileged)*
|
/// `get_logs` - *(privileged)*
|
||||||
Diagnostics,
|
Diagnostics,
|
||||||
/// `bash_run`, `bash_status`
|
/// `run`, `status` (via `mcp__bash__*`)
|
||||||
Execution,
|
Execution,
|
||||||
/// Claude built-in web egress tools: `WebFetch` (retrieve a URL) and
|
/// Claude built-in web egress tools: `WebFetch` (retrieve a URL) and
|
||||||
/// `WebSearch` (search the web). Both are omitted from `--tools` by
|
/// `WebSearch` (search the web). Both are omitted from `--tools` by
|
||||||
|
|
@ -843,7 +843,7 @@ impl ToolGroup {
|
||||||
"list_schedules",
|
"list_schedules",
|
||||||
],
|
],
|
||||||
Self::Diagnostics => &["get_logs"],
|
Self::Diagnostics => &["get_logs"],
|
||||||
Self::Execution => &["bash_run", "bash_status"],
|
Self::Execution => &["run", "status"],
|
||||||
Self::WebTools => &[],
|
Self::WebTools => &[],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -928,7 +928,7 @@ impl ToolGroup {
|
||||||
Self::Diagnostics => {
|
Self::Diagnostics => {
|
||||||
"get_logs — read a sub-agent container's systemd journal (privileged)"
|
"get_logs — read a sub-agent container's systemd journal (privileged)"
|
||||||
}
|
}
|
||||||
Self::Execution => "bash_run, bash_status — run shell commands in the container",
|
Self::Execution => "run, status — run shell commands via mcp__bash__run / mcp__bash__status",
|
||||||
Self::WebTools => "WebFetch, WebSearch — Claude built-in web egress; not MCP tools",
|
Self::WebTools => "WebFetch, WebSearch — Claude built-in web egress; not MCP tools",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue