Skip to main content

codex_convert_proxy/convert/streaming/
events.rs

1//! Response stream event types for the Responses API streaming protocol.
2
3use crate::types::response_api::ResponseObject;
4
5use crate::convert::context::ResponseRequestContext;
6
7/// SSE event types for Responses API streaming.
8#[derive(Debug, Clone)]
9pub enum ResponseStreamEvent {
10    /// Initial response created event.
11    Created {
12        id: String,
13        model: String,
14        status: String,
15        created_at: i64,
16        request_context: Option<ResponseRequestContext>,
17    },
18    /// Response is in progress.
19    InProgress {
20        id: String,
21        model: String,
22        status: String,
23        created_at: i64,
24        request_context: Option<ResponseRequestContext>,
25    },
26    /// Output item was added.
27    OutputItemAdded {
28        output_index: u32,
29        item_id: String,
30        item_type: String,
31        role: Option<String>,
32        call_id: Option<String>,
33        name: Option<String>,
34    },
35    /// Content part was added.
36    ContentPartAdded {
37        item_id: String,
38        output_index: u32,
39        content_index: u32,
40        part_type: String,
41    },
42    /// Output text delta (content chunk).
43    OutputTextDelta {
44        item_id: String,
45        output_index: u32,
46        content_index: u32,
47        delta: String,
48    },
49    /// Output text done.
50    OutputTextDone {
51        item_id: String,
52        output_index: u32,
53        content_index: u32,
54        text: String,
55    },
56    /// Content part done.
57    ContentPartDone {
58        item_id: String,
59        output_index: u32,
60        content_index: u32,
61        part_type: String,
62        text: String,
63    },
64    /// Output item done.
65    OutputItemDone {
66        output_index: u32,
67        item_id: String,
68        item_type: String,
69        role: Option<String>,
70        call_id: Option<String>,
71        name: Option<String>,
72        arguments: Option<String>,
73        text: Option<String>,
74        refusal: Option<String>,
75        summary: Option<Vec<crate::types::response_api::ReasoningSummaryPart>>,
76    },
77    /// Reasoning output item added.
78    ReasoningAdded {
79        output_index: u32,
80        item_id: String,
81    },
82    /// Reasoning text delta.
83    ReasoningDelta {
84        item_id: String,
85        output_index: u32,
86        content_index: u32,
87        delta: String,
88    },
89    /// Reasoning text done.
90    ReasoningTextDone {
91        item_id: String,
92        output_index: u32,
93        content_index: u32,
94        text: String,
95    },
96    /// Reasoning summary text delta.
97    ReasoningSummaryTextDelta {
98        item_id: String,
99        output_index: u32,
100        content_index: u32,
101        delta: String,
102    },
103    /// Reasoning summary text done.
104    ReasoningSummaryTextDone {
105        item_id: String,
106        output_index: u32,
107        content_index: u32,
108        text: String,
109    },
110    /// Function call arguments delta.
111    FunctionCallArgumentsDelta {
112        output_index: u32,
113        item_id: String,
114        delta: String,
115    },
116    /// Function call arguments done.
117    FunctionCallArgumentsDone {
118        output_index: u32,
119        item_id: String,
120        name: String,
121        arguments: String,
122    },
123    /// Response completed with final object.
124    Completed {
125        response: Box<ResponseObject>,
126    },
127    /// Response error event.
128    Error {
129        id: Option<String>,
130        error_type: String,
131        message: String,
132        code: Option<String>,
133    },
134    /// Response failed event.
135    Failed {
136        id: String,
137        model: String,
138        status: String,
139        created_at: i64,
140    },
141    /// Response incomplete event.
142    Incomplete {
143        id: String,
144        model: String,
145        status: String,
146        created_at: i64,
147        reason: Option<String>,
148    },
149    /// Refusal content delta.
150    RefusalDelta {
151        item_id: String,
152        output_index: u32,
153        content_index: u32,
154        delta: String,
155    },
156    /// Refusal content done.
157    RefusalDone {
158        item_id: String,
159        output_index: u32,
160        content_index: u32,
161        refusal: String,
162    },
163}