gestura_core/
streaming.rs1pub use gestura_core_streaming::streaming::*;
9pub use gestura_core_streaming::{
10 AnthropicProviderConfig, GeminiProviderConfig, GrokProviderConfig, OllamaProviderConfig,
11 OpenAiProviderConfig, StreamingConfig,
12};
13
14use crate::config::AppConfig;
15
16pub fn streaming_config_from(app: &AppConfig) -> StreamingConfig {
21 StreamingConfig {
22 primary: app.llm.primary.clone(),
23 fallback: app.llm.fallback.clone(),
24 openai: app.llm.openai.as_ref().map(|c| OpenAiProviderConfig {
25 api_key: c.api_key.clone(),
26 base_url: c.base_url.clone(),
27 model: c.model.clone(),
28 }),
29 anthropic: app.llm.anthropic.as_ref().map(|c| AnthropicProviderConfig {
30 api_key: c.api_key.clone(),
31 base_url: c.base_url.clone(),
32 model: c.model.clone(),
33 thinking_budget_tokens: c.thinking_budget_tokens,
34 }),
35 gemini: app.llm.gemini.as_ref().map(|c| GeminiProviderConfig {
36 api_key: c.api_key.clone(),
37 base_url: c.base_url.clone(),
38 model: c.model.clone(),
39 }),
40 grok: app.llm.grok.as_ref().map(|c| GrokProviderConfig {
41 api_key: c.api_key.clone(),
42 base_url: c.base_url.clone(),
43 model: c.model.clone(),
44 }),
45 ollama: app.llm.ollama.as_ref().map(|c| OllamaProviderConfig {
46 base_url: c.base_url.clone(),
47 model: c.model.clone(),
48 }),
49 }
50}