Skip to main content

elph_ai/api/
mod.rs

1//! Provider API implementation layer — ported from pi-ai `src/api/`.
2
3pub mod anthropic_messages;
4pub mod azure_base_url;
5pub mod azure_openai_responses;
6pub mod bedrock_converse_stream;
7pub mod bedrock_shared;
8pub mod cloudflare;
9pub mod codex_transport;
10pub mod common;
11pub mod faux;
12pub mod github_copilot_headers;
13pub mod google_generative_ai;
14pub mod google_shared;
15pub mod google_vertex;
16pub mod http_proxy;
17pub mod mistral_conversations;
18pub mod openai_codex_responses;
19pub mod openai_compat;
20pub mod openai_completions;
21pub mod openai_prompt_cache;
22pub mod openai_responses;
23pub mod openai_responses_shared;
24pub mod openrouter_images;
25pub mod simple_options;
26pub mod sse;
27pub mod transform_messages;
28pub mod websocket_connect;
29
30pub use anthropic_messages::{AnthropicMessagesApi, AnthropicOptions};
31pub use azure_openai_responses::{AzureOpenAIResponsesApi, AzureOpenAIResponsesOptions};
32pub use bedrock_converse_stream::{BedrockConverseStreamApi, BedrockOptions};
33pub use faux::FauxApi;
34pub use google_generative_ai::{GoogleGenerativeAIApi, GoogleOptions};
35pub use google_vertex::GoogleVertexApi;
36pub use mistral_conversations::{MistralConversationsApi, MistralOptions};
37pub use openai_codex_responses::{OpenAICodexResponsesApi, OpenAICodexResponsesOptions};
38pub use openai_completions::{OpenAICompletionsApi, OpenAICompletionsOptions};
39pub use openai_responses::{OpenAIResponsesApi, OpenAIResponsesOptions};
40pub use openrouter_images::OpenRouterImagesApi;
41
42use crate::types::ProviderStreams;
43
44/// Registry of built-in API implementations matching pi-ai `ProviderStreams`.
45pub fn builtin_apis() -> Vec<(&'static str, Box<dyn ProviderStreams>)> {
46    vec![
47        ("anthropic-messages", Box::new(AnthropicMessagesApi)),
48        ("openai-completions", Box::new(OpenAICompletionsApi)),
49        ("openai-responses", Box::new(OpenAIResponsesApi)),
50        ("openai-codex-responses", Box::new(OpenAICodexResponsesApi)),
51        ("azure-openai-responses", Box::new(AzureOpenAIResponsesApi)),
52        ("google-generative-ai", Box::new(GoogleGenerativeAIApi)),
53        ("google-vertex", Box::new(GoogleVertexApi)),
54        ("mistral-conversations", Box::new(MistralConversationsApi)),
55        ("bedrock-converse-stream", Box::new(BedrockConverseStreamApi)),
56    ]
57}
58
59pub fn api_for(name: &str) -> Option<Box<dyn ProviderStreams>> {
60    builtin_apis().into_iter().find(|(n, _)| *n == name).map(|(_, api)| api)
61}