1pub mod anthropic;
2mod auth;
3pub mod chat_completions;
4mod definition;
5pub mod embedding;
6mod error;
7pub mod gateway_ring;
8pub mod gemini;
9mod model;
10mod registry;
11mod request;
12mod response;
13pub mod responses;
14mod stream;
15mod tool;
16
17pub use auth::AuthScheme;
18pub use auth::CredentialSource;
19pub use auth::ProviderCredentials;
20pub use auth::StaticCredentialSource;
21pub use definition::BuiltinProvider;
22pub use definition::ProviderCapabilities;
23pub use definition::ProviderDefinition;
24pub use definition::ProviderDescriptor;
25pub use definition::ProviderId;
26pub use definition::WireApi;
27pub use embedding::EmbeddingData;
28pub use embedding::EmbeddingModelInfo;
29pub use embedding::EmbeddingProvider;
30pub use embedding::EmbeddingRequest;
31pub use embedding::EmbeddingResponse;
32pub use embedding::EmbeddingUsage;
33pub use error::ProviderError;
34pub use gateway_ring::GatewayMemberRef;
35pub use gateway_ring::GatewayRing;
36pub use gateway_ring::GatewayRingEvent;
37pub use gateway_ring::GatewayRingPolicy;
38pub use model::ContentBlock;
39pub use model::HostedToolSearchCall;
40pub use model::HostedWebSearchCall;
41pub use model::ImageGenerationCall;
42pub use model::ImageGenerationResult;
43pub use model::ImageSource;
44pub use model::Message;
45pub use model::ModelInfo;
46pub use model::ModelSelector;
47pub use model::ReasoningFormat;
48pub use model::ReasoningProvenance;
49pub use model::Role;
50pub use model::TokenUsage;
51pub use model::ToolChoice;
52pub use model::ToolResultContent;
53pub use model::WebSearchAction;
54pub use registry::Provider;
55pub use registry::ProviderRegistry;
56pub use registry::ProviderSession;
57pub use registry::ProviderSessionScope;
58pub use request::AnthropicRequestOptions;
59pub use request::CompactionInputItem;
60pub use request::CompactionRequest;
61pub use request::GeminiRequestOptions;
62pub use request::MemorySummarizeRequest;
63pub use request::ProviderRequestOptions;
64pub use request::RawMemory;
65pub use request::RawMemoryMetadata;
66pub use request::ReasoningEffort;
67pub use request::ReasoningOptions;
68pub use request::ReasoningSummary;
69pub use request::Request;
70pub use request::ResponsesRequestCompression;
71pub use request::ResponsesRequestOptions;
72pub use request::ResponsesStateMode;
73pub use request::ResponsesTextControls;
74pub use request::ResponsesTextFormat;
75pub use request::ResponsesTextFormatType;
76pub use request::ResponsesTransport;
77pub use request::ResponsesVerbosity;
78pub use request::SessionRequestOptions;
79pub use request::ToolSearchMode;
80pub use response::CompactionResponse;
81pub use response::MemorySummarizeOutput;
82pub use response::MemorySummarizeResponse;
83pub use response::Response;
84pub use response::collect_response_from_stream;
85pub use response::provider_event_stream_from_response;
86pub use stream::ContentBlockDelta;
87pub use stream::ContentBlockStart;
88pub use stream::ProviderEvent;
89pub use stream::ProviderEventStream;
90pub use stream::ResponseHeaders;
91pub use tool::ProviderToolKind;
92pub use tool::ToolLoadingPolicy;
93pub use tool::ToolSpec;
94pub use tool::ToolSpecBuilder;
95
96pub type OpenAIRequestOptions = ResponsesRequestOptions;
97
98pub mod provider {
99 pub use crate::Provider;
100
101 pub mod model {
102 pub use crate::AnthropicRequestOptions;
103 pub use crate::ContentBlock;
104 pub use crate::ContentBlockDelta;
105 pub use crate::ContentBlockStart;
106 pub use crate::HostedToolSearchCall;
107 pub use crate::HostedWebSearchCall;
108 pub use crate::ImageGenerationCall;
109 pub use crate::ImageGenerationResult;
110 pub use crate::ImageSource;
111 pub use crate::Message;
112 pub use crate::ModelInfo;
113 pub use crate::OpenAIRequestOptions;
114 pub use crate::ProviderError;
115 pub use crate::ProviderEvent;
116 pub use crate::ProviderEventStream;
117 pub use crate::ProviderId;
118 pub use crate::ProviderRequestOptions;
119 pub use crate::ReasoningEffort;
120 pub use crate::ReasoningFormat;
121 pub use crate::ReasoningOptions;
122 pub use crate::ReasoningProvenance;
123 pub use crate::ReasoningSummary;
124 pub use crate::Request;
125 pub use crate::Response;
126 pub use crate::ResponsesTextControls;
127 pub use crate::ResponsesTextFormat;
128 pub use crate::ResponsesTextFormatType;
129 pub use crate::ResponsesVerbosity;
130 pub use crate::Role;
131 pub use crate::SessionRequestOptions;
132 pub use crate::TokenUsage;
133 pub use crate::ToolChoice;
134 pub use crate::ToolResultContent;
135 pub use crate::ToolSearchMode;
136 pub use crate::WebSearchAction;
137 pub use crate::collect_response_from_stream;
138 pub use crate::provider_event_stream_from_response;
139 }
140}
141
142#[cfg(test)]
143mod tests {
144 use super::*;
145
146 #[test]
147 fn provider_definition_defaults_to_responses_wire_api_and_websockets_disabled() {
148 let definition = ProviderDefinition::new(BuiltinProvider::OpenAI);
149
150 assert_eq!(
151 definition.descriptor.id,
152 ProviderId::from(BuiltinProvider::OpenAI)
153 );
154 assert_eq!(definition.wire_api, WireApi::Responses);
155 assert!(!definition.capabilities.supports_websockets);
156 }
157}