From d4ca70d17771966c9c0e05a390a64fc4d44903ae Mon Sep 17 00:00:00 2001 From: Salman Paracha Date: Sat, 9 Aug 2025 22:01:20 -0700 Subject: [PATCH] more refactoring --- crates/hermesllm/src/providers/arch/provider.rs | 1 + crates/hermesllm/src/providers/claude/provider.rs | 1 + crates/hermesllm/src/providers/deepseek/provider.rs | 1 + crates/hermesllm/src/providers/gemini/provider.rs | 1 + crates/hermesllm/src/providers/github/provider.rs | 1 + crates/hermesllm/src/providers/groq/provider.rs | 1 + crates/hermesllm/src/providers/mistral/provider.rs | 1 + crates/hermesllm/src/providers/mod.rs | 1 + crates/hermesllm/src/providers/openai/provider.rs | 2 ++ crates/hermesllm/src/providers/traits.rs | 3 ++- 10 files changed, 12 insertions(+), 1 deletion(-) diff --git a/crates/hermesllm/src/providers/arch/provider.rs b/crates/hermesllm/src/providers/arch/provider.rs index 8100af83..14124f2b 100644 --- a/crates/hermesllm/src/providers/arch/provider.rs +++ b/crates/hermesllm/src/providers/arch/provider.rs @@ -68,6 +68,7 @@ impl ProviderResponse for ArchProvider { impl StreamingResponse for ArchProvider { type Error = OpenAIApiError; + type StreamChunk = crate::apis::openai::ChatCompletionsStreamResponse; type StreamingIter = OpenAIStreamingResponse; fn try_from_bytes(&self, bytes: &[u8], provider: &super::super::ProviderId, mode: ConversionMode) -> Result { diff --git a/crates/hermesllm/src/providers/claude/provider.rs b/crates/hermesllm/src/providers/claude/provider.rs index 0febda79..b3dd5b41 100644 --- a/crates/hermesllm/src/providers/claude/provider.rs +++ b/crates/hermesllm/src/providers/claude/provider.rs @@ -71,6 +71,7 @@ impl ProviderResponse for ClaudeProvider { impl StreamingResponse for ClaudeProvider { type Error = OpenAIApiError; + type StreamChunk = crate::apis::openai::ChatCompletionsStreamResponse; type StreamingIter = OpenAIStreamingResponse; fn try_from_bytes(&self, bytes: &[u8], provider: &super::super::ProviderId, mode: ConversionMode) -> Result { diff --git a/crates/hermesllm/src/providers/deepseek/provider.rs b/crates/hermesllm/src/providers/deepseek/provider.rs index a2cee721..b61ff99f 100644 --- a/crates/hermesllm/src/providers/deepseek/provider.rs +++ b/crates/hermesllm/src/providers/deepseek/provider.rs @@ -68,6 +68,7 @@ impl ProviderResponse for DeepseekProvider { impl StreamingResponse for DeepseekProvider { type Error = OpenAIApiError; + type StreamChunk = crate::apis::openai::ChatCompletionsStreamResponse; type StreamingIter = OpenAIStreamingResponse; fn try_from_bytes(&self, bytes: &[u8], provider: &super::super::ProviderId, mode: ConversionMode) -> Result { diff --git a/crates/hermesllm/src/providers/gemini/provider.rs b/crates/hermesllm/src/providers/gemini/provider.rs index 1a222b7e..f0e18e68 100644 --- a/crates/hermesllm/src/providers/gemini/provider.rs +++ b/crates/hermesllm/src/providers/gemini/provider.rs @@ -71,6 +71,7 @@ impl ProviderResponse for GeminiProvider { impl StreamingResponse for GeminiProvider { type Error = OpenAIApiError; + type StreamChunk = crate::apis::openai::ChatCompletionsStreamResponse; type StreamingIter = OpenAIStreamingResponse; fn try_from_bytes(&self, bytes: &[u8], provider: &super::super::ProviderId, mode: ConversionMode) -> Result { diff --git a/crates/hermesllm/src/providers/github/provider.rs b/crates/hermesllm/src/providers/github/provider.rs index 6dd51542..110123d1 100644 --- a/crates/hermesllm/src/providers/github/provider.rs +++ b/crates/hermesllm/src/providers/github/provider.rs @@ -71,6 +71,7 @@ impl ProviderResponse for GitHubProvider { impl StreamingResponse for GitHubProvider { type Error = OpenAIApiError; + type StreamChunk = crate::apis::openai::ChatCompletionsStreamResponse; type StreamingIter = OpenAIStreamingResponse; fn try_from_bytes(&self, bytes: &[u8], provider: &super::super::ProviderId, mode: ConversionMode) -> Result { diff --git a/crates/hermesllm/src/providers/groq/provider.rs b/crates/hermesllm/src/providers/groq/provider.rs index 73a8148b..63f3ad79 100644 --- a/crates/hermesllm/src/providers/groq/provider.rs +++ b/crates/hermesllm/src/providers/groq/provider.rs @@ -71,6 +71,7 @@ impl ProviderResponse for GroqProvider { impl StreamingResponse for GroqProvider { type Error = OpenAIApiError; + type StreamChunk = crate::apis::openai::ChatCompletionsStreamResponse; type StreamingIter = OpenAIStreamingResponse; fn try_from_bytes(&self, bytes: &[u8], provider: &super::super::ProviderId, mode: ConversionMode) -> Result { diff --git a/crates/hermesllm/src/providers/mistral/provider.rs b/crates/hermesllm/src/providers/mistral/provider.rs index 31aae8db..84ee7fcd 100644 --- a/crates/hermesllm/src/providers/mistral/provider.rs +++ b/crates/hermesllm/src/providers/mistral/provider.rs @@ -68,6 +68,7 @@ impl ProviderResponse for MistralProvider { impl StreamingResponse for MistralProvider { type Error = OpenAIApiError; + type StreamChunk = crate::apis::openai::ChatCompletionsStreamResponse; type StreamingIter = OpenAIStreamingResponse; fn try_from_bytes(&self, bytes: &[u8], provider: &super::super::ProviderId, mode: ConversionMode) -> Result { diff --git a/crates/hermesllm/src/providers/mod.rs b/crates/hermesllm/src/providers/mod.rs index fa49dfd9..7a310a89 100644 --- a/crates/hermesllm/src/providers/mod.rs +++ b/crates/hermesllm/src/providers/mod.rs @@ -241,6 +241,7 @@ impl ProviderResponse for Provider { impl StreamingResponse for Provider { type Error = openai::provider::OpenAIApiError; + type StreamChunk = crate::apis::openai::ChatCompletionsStreamResponse; type StreamingIter = openai::provider::OpenAIStreamingResponse; fn try_from_bytes(&self, bytes: &[u8], provider_id: &super::ProviderId, mode: ConversionMode) -> Result { diff --git a/crates/hermesllm/src/providers/openai/provider.rs b/crates/hermesllm/src/providers/openai/provider.rs index 3cf85d6a..0115799c 100644 --- a/crates/hermesllm/src/providers/openai/provider.rs +++ b/crates/hermesllm/src/providers/openai/provider.rs @@ -170,6 +170,7 @@ impl ProviderResponse for OpenAIProvider { impl StreamingResponse for OpenAIProvider { type Error = OpenAIApiError; + type StreamChunk = ChatCompletionsStreamResponse; type StreamingIter = OpenAIStreamingResponse; fn try_from_bytes(&self, bytes: &[u8], _provider: &super::super::ProviderId, _mode: ConversionMode) -> Result { @@ -206,6 +207,7 @@ impl StreamChunk for ChatCompletionsStreamResponse { impl StreamingResponse for OpenAIStreamingResponse { type Error = OpenAIApiError; + type StreamChunk = ChatCompletionsStreamResponse; type StreamingIter = OpenAIStreamingResponse; fn try_from_bytes(&self, bytes: &[u8], _provider: &super::super::ProviderId, _mode: ConversionMode) -> Result { diff --git a/crates/hermesllm/src/providers/traits.rs b/crates/hermesllm/src/providers/traits.rs index 97a0eded..42749b50 100644 --- a/crates/hermesllm/src/providers/traits.rs +++ b/crates/hermesllm/src/providers/traits.rs @@ -75,7 +75,8 @@ pub trait StreamChunk { /// Trait for streaming response iterators pub trait StreamingResponse { type Error: Error + Send + Sync + 'static; - type StreamingIter: Iterator>; + type StreamChunk: StreamChunk; + type StreamingIter: Iterator>; /// Parse streaming response from raw bytes fn try_from_bytes(&self, bytes: &[u8], provider: &super::ProviderId, mode: ConversionMode) -> Result;