claude_agent/models/
mod.rs

1mod builtin;
2mod family;
3mod provider;
4mod registry;
5mod spec;
6
7pub use family::{ModelFamily, ModelRole};
8pub use provider::{CloudProvider, ProviderIds};
9pub use registry::{ModelRegistry, read_registry, registry};
10pub use spec::{Capabilities, LONG_CONTEXT_THRESHOLD, ModelId, ModelSpec, ModelVersion, Pricing};
11
12pub const DEFAULT_COMPACT_THRESHOLD: f32 = 0.8;
13
14pub mod context_window {
15    use super::read_registry;
16
17    pub const STANDARD: u64 = 200_000;
18    pub const EXTENDED: u64 = 1_000_000;
19    pub const DEFAULT: u64 = 128_000;
20
21    pub fn for_model(model: &str) -> u64 {
22        read_registry()
23            .resolve(model)
24            .map(|spec| spec.capabilities.context_window)
25            .unwrap_or(DEFAULT)
26    }
27
28    pub fn for_model_extended(model: &str, extended_enabled: bool) -> u64 {
29        read_registry()
30            .resolve(model)
31            .map(|spec| spec.capabilities.effective_context(extended_enabled))
32            .unwrap_or(DEFAULT)
33    }
34}
35
36pub mod output_tokens {
37    use super::read_registry;
38
39    pub const DEFAULT: u64 = 8_192;
40
41    pub fn for_model(model: &str) -> u64 {
42        read_registry()
43            .resolve(model)
44            .map(|spec| spec.capabilities.max_output_tokens)
45            .unwrap_or(DEFAULT)
46    }
47}