github / github/copilot-sdk

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

Ouverte
#1,166 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
enhancement
Langage dominant
Java
Étoiles
10.5k
Forks
1.5k
Merge moyen
1 j 11 h
PR mergées (30 j)
128

Description

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

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par rust/src/session.rs et rust/src/lib.rs, qui définissent les méthodes de haut niveau de référence de Session et Client, puis examinez la couche RPC générée dans un SDK cible. Choisissez une méthode ou un SDK spécifique et confirmez ses types RPC existants ainsi que ses conventions de nommage avant de proposer le wrapper. C’est terminé lorsque le SDK sélectionné expose la méthode de haut niveau convenue sans obliger les consommateurs à utiliser des appels RPC générés.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
go, node.js, python, rust
Domaine
api, developer-experience
Type d'issue
Fonctionnalité
Difficulté
4/5
Temps estimé
3-5 jours
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.