Skip to main content

gproxy_protocol/openai/generate_content/responses/
websocket.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4use crate::openai::common::{Metadata, Rest};
5
6use super::{ResponseCreateRequest, ResponseInput, ResponseItem};
7
8#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9#[serde(untagged)]
10#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
11pub enum ResponseWebSocketRequest {
12    ResponseCreate(Box<ResponseCreateWebSocketRequest>),
13    ResponseInject(ResponseInjectWebSocketRequest),
14    ResponseSteer(ResponseSteerWebSocketRequest),
15    Unknown(Value),
16}
17
18#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
19#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
20pub struct ResponseCreateWebSocketRequest {
21    #[serde(rename = "type")]
22    pub type_: ResponseCreateWebSocketRequestType,
23    #[serde(flatten)]
24    pub response: ResponseCreateRequest,
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub generate: Option<bool>,
27    #[serde(skip_serializing_if = "Option::is_none")]
28    pub client_metadata: Option<Metadata>,
29    #[serde(default, flatten)]
30    pub rest: Rest,
31}
32
33#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
34#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
35pub enum ResponseCreateWebSocketRequestType {
36    #[serde(rename = "response.create")]
37    ResponseCreate,
38}
39
40#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
41#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
42pub struct ResponseInjectWebSocketRequest {
43    #[serde(rename = "type")]
44    pub type_: ResponseInjectWebSocketRequestType,
45    pub response_id: String,
46    pub input: Vec<ResponseItem>,
47    #[serde(default, flatten)]
48    pub rest: Rest,
49}
50
51#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
52#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
53pub enum ResponseInjectWebSocketRequestType {
54    #[serde(rename = "response.inject")]
55    ResponseInject,
56}
57
58#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
59#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
60pub struct ResponseSteerWebSocketRequest {
61    #[serde(rename = "type")]
62    pub type_: ResponseSteerWebSocketRequestType,
63    pub previous_response_id: String,
64    pub input: ResponseInput,
65}
66
67#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
68#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
69pub enum ResponseSteerWebSocketRequestType {
70    #[serde(rename = "response.steer")]
71    ResponseSteer,
72}
73
74#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
75#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
76pub struct ResponseInjectCreatedEvent {
77    pub response_id: String,
78    #[serde(skip_serializing_if = "Option::is_none")]
79    pub sequence_number: Option<u64>,
80    #[serde(default, flatten)]
81    pub rest: Rest,
82}
83
84#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
85#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
86pub struct ResponseInjectFailedEvent {
87    pub response_id: String,
88    pub input: Vec<ResponseItem>,
89    pub error: ResponseInjectError,
90    #[serde(skip_serializing_if = "Option::is_none")]
91    pub sequence_number: Option<u64>,
92    #[serde(default, flatten)]
93    pub rest: Rest,
94}
95
96#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
97#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
98pub struct ResponseInjectError {
99    pub code: String,
100    pub message: String,
101    #[serde(default, flatten)]
102    pub rest: Rest,
103}
104
105#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
106#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
107pub struct ResponseSteerReference {
108    pub id: String,
109    pub previous_response_id: String,
110    #[serde(default, flatten)]
111    pub rest: Rest,
112}
113
114#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
115#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
116pub struct ResponseSteerAcceptedEvent {
117    pub steer: ResponseSteerReference,
118    #[serde(skip_serializing_if = "Option::is_none")]
119    pub sequence_number: Option<u64>,
120    #[serde(skip_serializing_if = "Option::is_none")]
121    pub stream_id: Option<String>,
122    #[serde(default, flatten)]
123    pub rest: Rest,
124}
125
126#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
127#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
128pub struct ResponseSteerPendingEvent {
129    pub steer: ResponseSteerReference,
130    pub reason: String,
131    pub required_input: Vec<Value>,
132    #[serde(skip_serializing_if = "Option::is_none")]
133    pub sequence_number: Option<u64>,
134    #[serde(skip_serializing_if = "Option::is_none")]
135    pub stream_id: Option<String>,
136    #[serde(default, flatten)]
137    pub rest: Rest,
138}
139
140#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
141#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
142pub struct ResponseSteerFailedEvent {
143    pub steer: ResponseSteerFailure,
144    pub error: ResponseSteerError,
145    #[serde(skip_serializing_if = "Option::is_none")]
146    pub sequence_number: Option<u64>,
147    #[serde(skip_serializing_if = "Option::is_none")]
148    pub stream_id: Option<String>,
149    #[serde(default, flatten)]
150    pub rest: Rest,
151}
152
153#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
154#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
155pub struct ResponseSteerFailure {
156    #[serde(skip_serializing_if = "Option::is_none")]
157    pub id: Option<String>,
158    pub previous_response_id: String,
159    pub input: ResponseInput,
160    #[serde(default, flatten)]
161    pub rest: Rest,
162}
163
164#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
165#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
166pub struct ResponseSteerError {
167    pub code: String,
168    pub message: String,
169    #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
170    pub type_: Option<String>,
171    #[serde(default, flatten)]
172    pub rest: Rest,
173}