Skip to main content

vtcode_core/llm/
capabilities.rs

1//! Compatibility re-export for provider capability metadata.
2
3pub use super::provider::ProviderCapabilities;
4
5#[cfg(test)]
6mod tests {
7    use super::ProviderCapabilities;
8
9    #[test]
10    fn capability_summary_reports_enabled_features() {
11        let caps = ProviderCapabilities {
12            provider_name: "gemini".to_owned(),
13            model: "gemini-2.0-pro".to_owned(),
14            streaming: true,
15            reasoning: false,
16            reasoning_effort: false,
17            tools: true,
18            parallel_tool_config: false,
19            structured_output: true,
20            context_caching: true,
21            responses_compaction: false,
22            context_edits: false,
23            vision: true,
24            context_size: 2_000_000,
25        };
26
27        let summary = caps.summary();
28        assert!(summary.contains("gemini-2.0-pro"));
29        assert!(summary.contains("2000000"));
30        assert!(summary.contains("structured-output"));
31        assert!(summary.contains("context-caching"));
32    }
33
34    #[test]
35    fn advanced_feature_detection_matches_fields() {
36        let basic = ProviderCapabilities {
37            provider_name: "basic".to_owned(),
38            model: "basic-model".to_owned(),
39            streaming: false,
40            reasoning: false,
41            reasoning_effort: false,
42            tools: true,
43            parallel_tool_config: false,
44            structured_output: false,
45            context_caching: false,
46            responses_compaction: false,
47            context_edits: false,
48            vision: false,
49            context_size: 128_000,
50        };
51
52        assert!(!basic.has_advanced_features());
53
54        let advanced = ProviderCapabilities {
55            structured_output: true,
56            ..basic
57        };
58
59        assert!(advanced.has_advanced_features());
60    }
61}