github / github/copilot-sdk

Re-export ModelPolicyState and ModelPickerCategory from the crate root alongside Model/ModelPolicy

Open
#1,674 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Java
Stars
10.5k
Forks
1.5k
Avg merge
1d 11h
Merged PRs (30d)
128

Description

### Summary

The crate-root prelude (`pub use types::*`) surfaces a curated set of
generated protocol types, but omits two enums that are the field types
of structs already re-exported there. This makes the model-info surface
inconsistent: you can name the container struct at the crate root but
must reach through `copilot::rpc` for the enum that one of its fields
holds.

### Details

`types.rs` curates the public re-export block:

```rust
/// Re-exports of generated protocol types that are part of the SDK's
/// public API surface. ...
pub use crate::generated::api_types::{
Model, ModelBilling, ModelCapabilities, ModelCapabilitiesLimits, ModelCapabilitiesLimitsVision,
ModelCapabilitiesSupports, ModelList, ModelPolicy, PermissionDecision,
PermissionDecisionApproveOnce, PermissionDecisionReject, PermissionDecisionUserNotAvailable,
};
```

Two enums are missing from that list even though they are the declared
field types of structs that *are* in it:

- `ModelPolicy.state: ModelPolicyState` — `ModelPolicy` is re-exported; `ModelPolicyState` is not.
- `Model.model_picker_category: Option` — `Model` is re-exported; `ModelPickerCategory` is not.

### Consequence

A consumer that pattern-matches on `policy.state` or reads
`model.model_picker_category` can refer to `copilot::Model` /
`copilot::ModelPolicy` from the crate root, but has to import the field
enums from a different path:

```rust
use copilot::{Model, ModelPolicy}; // crate root
use copilot::rpc::{ModelPolicyState, ModelPickerCategory}; // only here
```

Because the curated list looks complete, it's easy to assume the whole
model-info surface lives at the crate root and be surprised these two
don't. It's a small ergonomics/consistency papercut, not a correctness
issue (both are reachable via `copilot::rpc`).

### Suggested fix

Add `ModelPolicyState` and `ModelPickerCategory` to the curated
`pub use crate::generated::api_types::{ ... }` block in `types.rs`, so
the full model-info type set is reachable from the crate root alongside
`Model` and `ModelPolicy`.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.