Re-export ModelPolicyState and ModelPickerCategory from the crate root alongside Model/ModelPolicy
- 主要语言
- Java
- 星标
- 10.5k
- 派生
- 1.5k
- 平均合并
- 1 天 14 小时
- 30 天内合并 PR
- 129
描述
### 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`.
贡献指南
调研方向
打开 types.rs,检查已经导出 Model 和 ModelPolicy 的精选 pub use crate::generated::api_types 块。在其中添加指定的两个 enum 导出,然后验证 crate 根的导入可以编译,并确认 ModelPolicyState 和 ModelPickerCategory 可以与各自的容器类型一起访问。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- rust
- 领域
- api
- Issue 类型
- 功能
- 难度
- 1/5
- 预计耗时
- 1 小时以内
- 活跃度
- 冷清
- 描述清晰度
- 描述清楚
- 新手友好度
- 88/100