github / github/copilot-sdk

Parity backlog: high-level session/client methods exposed in Rust SDK only

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

描述

The Rust SDK's [Cross-SDK Consistency Review](https://github.com/github/copilot-sdk/pull/1164#issuecomment-3162199497) on PR #1164 surfaced several methods that the Rust SDK promotes to first-class `Session` / `Client` methods, but which are reachable from other SDKs only via the lower-level generated RPC layer (or not at all).

These are real protocol methods backed by the CLI server. The Rust SDK established a richer high-level surface; the other SDKs are consistent with each other but lag behind. Tracking here as a parity backlog item across Node/Python/Go/.NET.

### Methods the Rust SDK exposes at the high level

| Method | RPC call | Status in other SDKs |
|---|---|---|
| `Session::get_model()` | `session.model.getCurrent` | Generated RPC only |
| `Session::get_mode()` / `set_mode()` | `session.mode.get` / `session.mode.set` | Generated RPC only |
| `Session::get_name()` / `set_name()` | `session.name.get` / `session.name.set` | Generated RPC only |
| `Session::list_workspace_files()` / `read_workspace_file()` / `create_workspace_file()` | `session.workspace.*` | Not exposed |
| `Session::read_plan()` / `update_plan()` / `delete_plan()` | `session.plan.*` | Not exposed |
| `Session::start_fleet()` | `session.fleet.start` | Not exposed |
| `Session::send_telemetry()` | `session.sendTelemetry` | Not exposed at session level |
| `Client::get_quota()` | `account.getQuota` | .NET generated only |

### Why it matters

- Consumers shouldn't have to drop into the generated RPC layer for first-class Copilot session features.
- Names, signatures, and ergonomics across SDKs should converge so the Rust SDK isn't a moving target.

### Suggested approach

Each SDK could pick this up independently — most additions are mechanical wrappers around the existing generated RPC types. We should agree on naming first so we don't end up with `getModel` / `Model` / `GetCurrentModel` / `get_model` style drift.

The Rust signatures in `rust/src/session.rs` and `rust/src/lib.rs` (PR #1164) can serve as the reference shape. If a different SDK has a stronger reason to deviate, that's worth a discussion before landing.

### Out of scope

Idiomatic differences like Rust's `subscribe()` returning a `tokio::sync::broadcast::Receiver` vs Node's callback `on(handler)` are correctly idiomatic for each language — the consistency review flagged these as expected, and they don't belong here.

  Generated via Copilot (Claude Opus 4.7) on behalf of @tclem

贡献指南

打开贡献指南

调研方向

从 rust/src/session.rs 和 rust/src/lib.rs 开始,这两个文件定义了参考性的高阶 Session 和 Client 方法,然后检查一个目标 SDK 中生成的 RPC 层。选择一个具体的方法或 SDK,并在提出 wrapper 之前确认其现有的 RPC 类型和命名约定。选定的 SDK 能够提供约定的高阶方法,且不要求使用者调用生成的 RPC,即视为完成。

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

评估

技术栈
go, node.js, python, rust
领域
api, developer-experience
Issue 类型
功能
难度
4/5
预计耗时
3-5 天
活跃度
冷清
描述清晰度
基本清楚
新手友好度
45/100

把新 issue 发到你的邮箱

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