Struct OpenAI Responses Streaming Codec
Generated from cargo doc --no-deps -p nemo-relay -p nemo-relay-adaptive -p nemo-relay-ffi.
Streaming counterpart to OpenAIResponsesCodec.
Replays the OpenAI Responses SSE event sequence into the same JSON shape the API returns for a non-streaming request ({id, model, status, output, usage, incomplete_details, ...}). Once finalized, the assembled JSON can be fed back through OpenAIResponsesCodec::decode_response to produce the canonical AnnotatedLlmResponse.
Strategy
The Responses API is a relatively forgiving streaming target because every event carries either the full response snapshot (response.created, response.in_progress, response.completed, response.failed, response.incomplete) or the final-state output item (response.output_item.done). We:
- Track the latest
responsesnapshot - terminal events (completed/failed/incomplete) typically carry the complete state includingoutput, so we prefer those when present. - Track output items by
output_index-output_item.doneevents deliver the final per-item state, used as a fallback when the terminalresponse.outputis missing or empty. - Per-token
output_text.deltaandfunction_call_arguments.deltaevents are ignored because their content is redelivered in the matchingoutput_item.doneevent. Skipping deltas keeps the codec resilient to schema additions and avoids double-accumulation.
Internal state lives behind Arc<Mutex<...>> so the &self-produced collector and finalizer closures share access. Each instance is single-use because LlmFinalizerFn consumes the finalize step.
Implementations
impl OpenAIResponsesStreamingCodec
impl OpenAIResponsesStreamingCodec
new
pub fn new() -> Self
Creates a fresh streaming codec with empty accumulator state.
Trait Implementations
impl Default for OpenAIResponsesStreamingCodec
impl Default for OpenAIResponsesStreamingCodec
default
fn default() -> Self
impl StreamingCodec for OpenAIResponsesStreamingCodec
impl StreamingCodec for OpenAIResponsesStreamingCodec
collector
fn collector(&self) -> LlmCollectorFn
finalizer
fn finalizer(&self) -> LlmFinalizerFn