claude_agent/models/
mod.rs1mod 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}