Extension commands: let `CommandDefinition` declare an input hint and choices

Offen
#2,911 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
70/100
Issue-Typ
Feature
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
typescript

Rechercherichtung

Start by reading the TypeScript definition of CommandDefinition and the SlashCommandInput type, then trace where CopilotClient sends commands during session.create and session.resume. Add the input shape to the definition and forward it with each command; done when client commands can provide the hint and choices described in the issue.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Context

Built-in commands show users what they accept as they type. /computer draws [on|off|show] after its name and lists each choice with its description, so a user can find and pick a subcommand without leaving the prompt. Extension commands cannot do this: the slash menu shows an extension command's description and nothing about what it accepts. Users of an extension command with subcommands (in our case a voice extension's on, off, status, listen, stop, and five more) must remember them or run a help subcommand to find them. The alternative, one command per action, crowds the slash menu.

The runtime already models this. SlashCommandInfo, which session.commands.list returns, has an experimental input?: SlashCommandInput: a hint, literal choices that each have a description, plus required and completion. The SlashCommandInputChoice docs use /computer's values as their example. But CommandDefinition takes only name, description and handler, and CopilotClient sends just { name, description } to the runtime on session.create and session.resume. This is the same in 1.0.29 and 1.0.30-preview.1, with CLI 1.0.107.

Request

Let CommandDefinition carry the existing input shape, and forward it with the command:

export interface CommandDefinition {
    name: string;
    description?: string;
    /** Shown as for built-in commands: the hint after the name, the choices as completions. */
    input?: SlashCommandInput;
    handler: CommandHandler;
}

A kind: "client" command would then render its hint and choices the same way a built-in command does.

Vorherrschende Sprache
Java
Sterne
10.7k
Forks
1.5k
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus github/copilot-sdk

Alle Issues in github/copilot-sdk

Ähnliche Issues

Weitere Issues zu Java

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.