aterm has no shell completion, so the live roster is only discoverable by running it #1241

Closed
opened 2026-08-25 21:10:57 +00:00 by coilyco-ops · 0 comments
Owner

aterm (agentic-os#1240) validates a role against the live Agent Compose roster
and refuses a stale one, and --list plus the bare interactive picker make the
roster discoverable. Neither reaches the shell, so aterm <tab> completes
nothing and the seven live slugs stay invisible until the command runs.

This matters more than usual here because the slugs turn over. Shell history
carries engineer, ops, creator, strats, director, exec, qa, pm,
content, and advisor against a live roster of seven, so the common failure is
typing a name that was correct months ago. Completion would catch it a keystroke
earlier than the refusal does.

What a next agent needs

  • The roster comes from agent-compose catalog roles --json, already parsed in
    aterm/roster.go. Seats live under each role, and only the harnesses in
    nativeHarnesses are launchable.
  • Completion has to stay cheap. The roster read is a subprocess, so a naive
    completion shells out to agent-compose on every tab press. Decide whether to
    cache, and where.
  • urfave/cli v3 has EnableShellCompletion plus ShellComplete hooks, which is
    the natural seam. aterm is the only AOS binary that would carry completion,
    so this also decides whether the others follow.
  • Both zsh and bash matter. agentic-os/shell/common.sh is sourced by both and
    is where an installed completion would hook in.

Scoped out of #1240 deliberately: it was never requested, and --list plus the
picker cover discovery well enough to ship without it.

`aterm` (agentic-os#1240) validates a role against the live Agent Compose roster and refuses a stale one, and `--list` plus the bare interactive picker make the roster discoverable. Neither reaches the shell, so `aterm <tab>` completes nothing and the seven live slugs stay invisible until the command runs. This matters more than usual here because the slugs turn over. Shell history carries `engineer`, `ops`, `creator`, `strats`, `director`, `exec`, `qa`, `pm`, `content`, and `advisor` against a live roster of seven, so the common failure is typing a name that was correct months ago. Completion would catch it a keystroke earlier than the refusal does. ## What a next agent needs * The roster comes from `agent-compose catalog roles --json`, already parsed in `aterm/roster.go`. Seats live under each role, and only the harnesses in `nativeHarnesses` are launchable. * Completion has to stay cheap. The roster read is a subprocess, so a naive completion shells out to `agent-compose` on every tab press. Decide whether to cache, and where. * urfave/cli v3 has `EnableShellCompletion` plus `ShellComplete` hooks, which is the natural seam. `aterm` is the only AOS binary that would carry completion, so this also decides whether the others follow. * Both zsh and bash matter. `agentic-os/shell/common.sh` is sourced by both and is where an installed completion would hook in. Scoped out of #1240 deliberately: it was never requested, and `--list` plus the picker cover discovery well enough to ship without it.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/agentic-os#1241
No description provided.