Skip to content

v0.9.14: App-server typed command catalog for client slash-command surfaces #6178

Description

@Hmbown

Why this matters

GPUI Hmbown/codewhale-apps#556 (Linear APPS-28) requires the composer to route slash commands through shared command definitions — "the existing Codewhale command registry, aliases, hidden tiers and user-command shadowing," with host commands like /settings or /compact never submitted as paid model prompts. Without a served catalog, the desktop must hardcode a second command list that rots against the registry.

Current behavior

  • The command registry, aliases, hidden tiers and user-command shadowing live TUI-side; there is no /v1/commands (or equivalent) route — the full /v1/* route table in crates/tui/src/runtime_api.rs contains no command surface.
  • Clients cannot distinguish "Engine-handled host command" from "model prompt" without duplicating the registry.
  • Command contract: finish the FEAT-02x adoption or fold crates/command-contract #6145 covers the internal crates/command-contract adoption question; this issue is the client-facing read surface regardless of where the registry lands.

Desired behavior

  1. A route serving the typed command catalog: name, aliases, summary, hidden/tier flag, argument shape, and whether it is host-handled vs model-bound — enough for a client to complete, validate, and never submit a host command as a prompt.
  2. User-command shadowing reflected in the served result (a user command that shadows a builtin must win).
  3. Forward-compatible: unknown command kinds must be ignorable by older clients.

Acceptance criteria

  • GET on the route returns the full catalog including aliases and hidden-tier markers
  • A user-defined command shadowing a builtin appears with the winning definition
  • Each entry states host-handled vs model-bound so a client can gate submit
  • cargo test -p codewhale-tui route test covers catalog shape and shadowing

Related: Hmbown/codewhale-apps#556, #6145 (command-contract adoption), #6152.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestrustPull requests that update rust code

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions