github / github/copilot-sdk

Support autocomplete/ghost text for extension slash command arguments

未关闭
#1,219 0 条评论 1 个 reaction 已指派 0 人 在 GitHub 查看
enhancement
主要语言
Java
星标
10.5k
派生
1.5k
平均合并
1 天 14 小时
30 天内合并 PR
129

描述

## Summary

Please add an SDK/API surface that lets Copilot CLI extensions provide autocomplete, ghost text, or structured argument suggestions for extension slash commands.

## Scenario

I am building a Copilot CLI extension that registers a deterministic `/cost` command via `joinSession({ commands: [...] })`. The command has useful subcommands/options such as:

```text
/cost
/cost help
/cost panel on|off|refresh
/cost session
/cost live-session
/cost --plan pro|pro-plus|business|enterprise
/cost --billing-model usage-based|premium-requests
/cost --currency USD
```

Built-in slash commands appear to show ghost text / inline hints for supported arguments as the user types. For extension commands, I only see the command name/description; after typing `/cost` there does not appear to be a way to suggest supported subcommands/options.

## Current SDK surface

The generated/types docs I found for `CommandDefinition` only expose:

```ts
export interface CommandDefinition {
name: string;
description?: string;
handler: CommandHandler;
}
```

That is enough to register `/cost`, but not enough to provide argument completions, examples, or dynamic suggestions.

## Requested capability

It would be useful if extension commands could declare one or more of the following:

- static usage text/examples for ghost text after the command name
- structured subcommands/options/enum values
- dynamic completion callback based on the current argument prefix and session context
- optional descriptions for each subcommand/option

For example, something like:

```ts
commands: [
{
name: 'cost',
description: 'Show Copilot session cost.',
usage: 'panel on|off|refresh | session | --plan ',
completions: async ({ args, cursor, sessionId }) => [
{ value: 'panel', description: 'Open or manage the cost panel' },
{ value: 'session', description: 'Show cost for a completed session' },
{ value: '--plan', description: 'Compare against a subscription plan' }
],
handler
}
]
```

## Why this matters

Extension slash commands can be deterministic command surfaces rather than model-routed prompts. Without argument hints, users have to remember command syntax or run a separate help command. Built-in-command-quality discoverability would make SDK extensions feel native and easier to learn.

## Workaround today

The extension can implement `/cost help`, but that is less discoverable and does not help while typing.

## Environment

Observed with Copilot CLI / SDK builds around `1.0.41-0` / `1.0.43` on Windows while authoring a project-scoped extension under `.github/extensions//extension.mjs`.

贡献指南

打开贡献指南

调研方向

从 generated/types 中关于 CommandDefinition 的文档,以及通过 joinSession({ commands: [...] }) 展示的扩展注册开始。跟踪 Copilot CLI 如何处理项目范围的扩展命令。Done 应提供一个有文档说明的 SDK 接口,用于静态使用或结构化建议,以及动态参数补全,并在支持的情况下提供描述。

由索引模型根据 Issue 内容生成。

评估

技术栈
javascript, typescript
领域
api, cli, developer-experience
Issue 类型
功能
难度
5/5
预计耗时
一周以上
活跃度
冷清
描述清晰度
基本清楚
新手友好度
45/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。