vtcode_core/models_manager/mod.rs
1//! Models Manager Module
2//!
3//! This module provides centralized model discovery, caching, and management
4//! following patterns from OpenAI Codex. It coordinates:
5//!
6//! - **Remote Model Discovery**: Fetching available models from provider APIs
7//! - **Local Model Presets**: Built-in model configurations for offline use
8//! - **Caching**: TTL-based disk and memory caching for model metadata
9//! - **Model Families**: Grouping models by capabilities and characteristics
10//!
11//! ## Architecture
12//!
13//! ```text
14//! ┌─────────────────┐
15//! │ ModelsManager │
16//! ├─────────────────┤
17//! │ - local_models │──────┐
18//! │ - remote_models │ │
19//! │ - cache │ ▼
20//! └────────┬────────┘ ┌─────────────┐
21//! │ │ ModelFamily │
22//! │ └─────────────┘
23//! ▼
24//! ┌───────────┐
25//! │ ModelsCache │
26//! └───────────┘
27//! ```
28//!
29//! ## Usage
30//!
31//! ```rust,ignore
32//! use vtcode_core::models_manager::ModelsManager;
33//!
34//! let manager = ModelsManager::new();
35//!
36//! // List available models
37//! let models = manager.list_models().await;
38//!
39//! // Get a specific model's family
40//! let family = manager.construct_model_family("gemini-2.5-flash").await;
41//! ```
42
43pub mod cache;
44pub mod manager;
45pub mod model_family;
46pub mod model_presets;
47
48pub use cache::ModelsCache;
49pub use manager::{ModelsManager, SharedModelsManager, new_shared_models_manager};
50pub use model_family::{ModelFamily, find_family_for_model};
51pub use model_presets::{ModelInfo, ModelPreset, builtin_model_presets, presets_for_provider};