diff --git a/rust/crates/api/src/providers/mod.rs b/rust/crates/api/src/providers/mod.rs index 34d69b51..0a41fd33 100644 --- a/rust/crates/api/src/providers/mod.rs +++ b/rust/crates/api/src/providers/mod.rs @@ -49,6 +49,55 @@ pub struct ModelTokenLimit { pub context_window_tokens: u32, } +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize)] +#[serde(rename_all = "snake_case")] +pub enum ProviderWireProtocol { + AnthropicMessages, + OpenAiChatCompletions, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize)] +#[serde(rename_all = "snake_case")] +pub enum ProviderFeatureSupport { + Supported, + Unsupported, + PassthroughAsTool, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize)] +pub struct ProviderCapabilityReport { + pub provider: ProviderKind, + pub wire_protocol: ProviderWireProtocol, + pub auth_env: &'static str, + pub base_url_env: &'static str, + pub default_base_url: &'static str, + pub tool_calls: ProviderFeatureSupport, + pub streaming: ProviderFeatureSupport, + pub streaming_usage: ProviderFeatureSupport, + pub prompt_cache: ProviderFeatureSupport, + pub custom_parameters: ProviderFeatureSupport, + pub reasoning_effort: ProviderFeatureSupport, + pub reasoning_content_history: ProviderFeatureSupport, + pub fixed_sampling_reasoning_models: ProviderFeatureSupport, + pub web_search: ProviderFeatureSupport, + pub web_fetch: ProviderFeatureSupport, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize)] +#[serde(rename_all = "snake_case")] +pub enum ProviderDiagnosticSeverity { + Info, + Warning, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize)] +pub struct ProviderDiagnostic { + pub code: &'static str, + pub severity: ProviderDiagnosticSeverity, + pub message: String, + pub action: String, +} + #[allow(clippy::struct_excessive_bools)] #[derive(Debug, Clone, PartialEq, Eq, Serialize)] pub struct ProviderDiagnostics {