| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Louter.Protocol.GeminiStreaming
Description
Gemini Streaming Protocol Handler Converts OpenAI SSE stream to Gemini newline-delimited JSON format
Synopsis
- data ToolCallState = ToolCallState {
- toolCallId :: Maybe Text
- toolCallName :: Maybe Text
- toolCallArgs :: Text
- convertOpenAIToGeminiStream :: (Builder -> IO ()) -> IO () -> BodyReader -> IO ()
- streamGeminiDeltas :: (Builder -> IO ()) -> IO () -> BodyReader -> IO ()
- processOpenAILineToGeminiStateful :: (Builder -> IO ()) -> IO () -> ToolCallState -> ByteString -> IO ToolCallState
- processToolCallChunk :: ToolCallState -> KeyMap Value -> IO (ToolCallState, Maybe Value)
- openAIChunkToGemini :: KeyMap Value -> Value
State Types
data ToolCallState Source #
State for tracking tool call arguments during streaming
Constructors
| ToolCallState | |
Fields
| |
Instances
| Show ToolCallState Source # | |
Defined in Louter.Protocol.GeminiStreaming Methods showsPrec :: Int -> ToolCallState -> ShowS # show :: ToolCallState -> String # showList :: [ToolCallState] -> ShowS # | |
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