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

Open Beginner friendly
#1,674 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
1/5
Estimated time
Under an hour
Newbie friendliness
88/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Quiet
Tech stack
rust
Domain
api

Research direction

Open types.rs and inspect the curated pub use crate::generated::api_types block that already exports Model and ModelPolicy. Add the two named enum exports there, then verify the crate-root imports compile and that ModelPolicyState and ModelPickerCategory are reachable alongside their container types.

Written by the indexing model from the issue text.

Description

enhancement
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:

/// 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: ModelPolicyStateModelPolicy is re-exported; ModelPolicyState is not.
  • Model.model_picker_category: Option<ModelPickerCategory>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:

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.

Dominant language
Java
Stars
10.5k
Forks
1.5k
Avg merge
1d 12h
Merged PRs (30d)
133

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from github/copilot-sdk

All issues in github/copilot-sdk

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.