Skip to main content

mentra_provider/
lib.rs

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}