1"""Stream conversion stubs for the OpenAI Responses mapper."""
2
3from __future__ import annotations
4
5from typing import TYPE_CHECKING, Any
6
7from lexigram.ai.relay.errors import unsupported_feature
8from lexigram.contracts.ai.exceptions import RelayError
9from lexigram.contracts.ai.relay.ir import StreamDelta, StreamState
10from lexigram.contracts.core.result import Err, Result
11
12if TYPE_CHECKING:
13 from lexigram.ai.relay.mappers.openai_responses import OpenAIResponsesMapper
14
15
16class StreamMixin:
17 """Stream conversion for the OpenAI Responses format.
18
19 Stream conversion is deferred to the shared stream lifecycle task and
20 reports ``unsupported_feature`` until then.
21 """
22
23 def stream_to_delta(
24 self: OpenAIResponsesMapper,
25 event: Any,
26 *,
27 state: StreamState,
28 ) -> Result[tuple[StreamDelta, ...], RelayError]:
29 """Stream conversion is deferred to the shared stream lifecycle task."""
30 return Err(
31 unsupported_feature(
32 "openai_responses stream conversion is not implemented yet"
33 )
34 )
35
36 def delta_to_stream(
37 self: OpenAIResponsesMapper,
38 delta: StreamDelta,
39 *,
40 state: StreamState,
41 ) -> Result[tuple[Any, ...], RelayError]:
42 """Stream emission is deferred to the shared stream lifecycle task."""
43 return Err(
44 unsupported_feature(
45 "openai_responses stream conversion is not implemented yet"
46 )
47 )