louter-0.1.1.2: Multi-protocol LLM router and client library
Safe HaskellNone
LanguageHaskell2010

Louter.Protocol.GeminiStreaming

Description

Gemini Streaming Protocol Handler Converts OpenAI SSE stream to Gemini newline-delimited JSON format

Synopsis

State Types

data ToolCallState Source #

State for tracking tool call arguments during streaming

Instances

Instances details
Show ToolCallState Source # 
Instance details

Defined in Louter.Protocol.GeminiStreaming

Main Streaming Functions

convertOpenAIToGeminiStream :: (Builder -> IO ()) -> IO () -> BodyReader -> IO () Source #

Convert OpenAI SSE stream to Gemini newline-delimited JSON format

streamGeminiDeltas :: (Builder -> IO ()) -> IO () -> BodyReader -> IO () Source #

Stream Gemini deltas from OpenAI response

Internal Functions (exported for testing)

processOpenAILineToGeminiStateful :: (Builder -> IO ()) -> IO () -> ToolCallState -> ByteString -> IO ToolCallState Source #

Process a single OpenAI SSE line with state tracking for tool calls

processToolCallChunk :: ToolCallState -> KeyMap Value -> IO (ToolCallState, Maybe Value) Source #

Process tool call chunk, accumulating arguments until complete

openAIChunkToGemini :: KeyMap Value -> Value Source #

Convert OpenAI chunk to Gemini chunk