1use super::{
6 ConversationCreatedEvent, ConversationItem, ConversationItemAdded, ConversationItemCreateEvent,
7 ConversationItemCreatedEvent, ConversationItemDeleteEvent, ConversationItemDeletedEvent,
8 ConversationItemDone, ConversationItemInputAudioTranscriptionCompletedEvent,
9 ConversationItemInputAudioTranscriptionDeltaEvent,
10 ConversationItemInputAudioTranscriptionFailedEvent,
11 ConversationItemInputAudioTranscriptionSegment, ConversationItemRetrieveEvent,
12 ConversationItemTruncateEvent, ConversationItemTruncatedEvent, InputAudioBufferAppendEvent,
13 InputAudioBufferClearEvent, InputAudioBufferClearedEvent, InputAudioBufferCommitEvent,
14 InputAudioBufferCommittedEvent, InputAudioBufferDtmfEventReceivedEvent,
15 InputAudioBufferSpeechStartedEvent, InputAudioBufferSpeechStoppedEvent,
16 InputAudioBufferTimeoutTriggered, McpListToolsCompleted, McpListToolsFailed,
17 McpListToolsInProgress, OutputAudioBufferClearEvent, RateLimitsUpdatedEvent,
18 RealtimeErrorEvent, ResponseAudioDeltaEvent, ResponseAudioDoneEvent,
19 ResponseAudioTranscriptDeltaEvent, ResponseAudioTranscriptDoneEvent, ResponseCancelEvent,
20 ResponseContentPartAddedEvent, ResponseContentPartDoneEvent, ResponseCreateEvent,
21 ResponseCreatedEvent, ResponseDoneEvent, ResponseFunctionCallArgumentsDeltaEvent,
22 ResponseFunctionCallArgumentsDoneEvent, ResponseMcpCallArgumentsDelta,
23 ResponseMcpCallArgumentsDone, ResponseMcpCallCompleted, ResponseMcpCallFailed,
24 ResponseMcpCallInProgress, ResponseOutputItemAddedEvent, ResponseOutputItemDoneEvent,
25 ResponseTextDeltaEvent, ResponseTextDoneEvent, SessionCreatedEvent, SessionUpdateEvent,
26 SessionUpdatedEvent,
27};
28use crate::Rest;
29use serde::{Deserialize, Serialize};
30
31pub type HandshakeRequest = crate::WireRequest<()>;
32pub type HandshakeResponse = crate::WireResponse<()>;
33
34#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
36#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
37#[serde(untagged)]
38#[allow(clippy::large_enum_variant)]
39#[derive(gproxy_protocol_macros::DeclaredFields)]
40pub enum RealtimeClientEvent {
41 ConversationItemCreateEvent(ConversationItemCreateEvent),
42 ConversationItemDeleteEvent(ConversationItemDeleteEvent),
43 ConversationItemRetrieveEvent(ConversationItemRetrieveEvent),
44 ConversationItemTruncateEvent(ConversationItemTruncateEvent),
45 InputAudioBufferAppendEvent(InputAudioBufferAppendEvent),
46 InputAudioBufferClearEvent(InputAudioBufferClearEvent),
47 OutputAudioBufferClearEvent(OutputAudioBufferClearEvent),
48 InputAudioBufferCommitEvent(InputAudioBufferCommitEvent),
49 ResponseCancelEvent(ResponseCancelEvent),
50 ResponseCreateEvent(ResponseCreateEvent),
51 SessionUpdateEvent(SessionUpdateEvent),
52}
53
54#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
56#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
57#[serde(untagged)]
58#[derive(gproxy_protocol_macros::DeclaredFields)]
59pub enum RealtimeServerEvent {
60 ConversationCreatedEvent(ConversationCreatedEvent),
61 ConversationItemCreatedEvent(ConversationItemCreatedEvent),
62 ConversationItemDeletedEvent(ConversationItemDeletedEvent),
63 ConversationItemInputAudioTranscriptionCompletedEvent(
64 ConversationItemInputAudioTranscriptionCompletedEvent,
65 ),
66 ConversationItemInputAudioTranscriptionDeltaEvent(
67 ConversationItemInputAudioTranscriptionDeltaEvent,
68 ),
69 ConversationItemInputAudioTranscriptionFailedEvent(
70 ConversationItemInputAudioTranscriptionFailedEvent,
71 ),
72 ConversationItemRetrieved(ConversationItemRetrieved),
73 ConversationItemTruncatedEvent(ConversationItemTruncatedEvent),
74 RealtimeErrorEvent(RealtimeErrorEvent),
75 InputAudioBufferClearedEvent(InputAudioBufferClearedEvent),
76 InputAudioBufferCommittedEvent(InputAudioBufferCommittedEvent),
77 InputAudioBufferDtmfEventReceivedEvent(InputAudioBufferDtmfEventReceivedEvent),
78 InputAudioBufferSpeechStartedEvent(InputAudioBufferSpeechStartedEvent),
79 InputAudioBufferSpeechStoppedEvent(InputAudioBufferSpeechStoppedEvent),
80 RateLimitsUpdatedEvent(RateLimitsUpdatedEvent),
81 ResponseAudioDeltaEvent(ResponseAudioDeltaEvent),
82 ResponseAudioDoneEvent(ResponseAudioDoneEvent),
83 ResponseAudioTranscriptDeltaEvent(ResponseAudioTranscriptDeltaEvent),
84 ResponseAudioTranscriptDoneEvent(ResponseAudioTranscriptDoneEvent),
85 ResponseContentPartAddedEvent(ResponseContentPartAddedEvent),
86 ResponseContentPartDoneEvent(ResponseContentPartDoneEvent),
87 ResponseCreatedEvent(ResponseCreatedEvent),
88 ResponseDoneEvent(ResponseDoneEvent),
89 ResponseFunctionCallArgumentsDeltaEvent(ResponseFunctionCallArgumentsDeltaEvent),
90 ResponseFunctionCallArgumentsDoneEvent(ResponseFunctionCallArgumentsDoneEvent),
91 ResponseOutputItemAddedEvent(ResponseOutputItemAddedEvent),
92 ResponseOutputItemDoneEvent(ResponseOutputItemDoneEvent),
93 ResponseTextDeltaEvent(ResponseTextDeltaEvent),
94 ResponseTextDoneEvent(ResponseTextDoneEvent),
95 SessionCreatedEvent(SessionCreatedEvent),
96 SessionUpdatedEvent(SessionUpdatedEvent),
97 RealtimeServerEventOutputAudioBufferStarted(RealtimeServerEventOutputAudioBufferStarted),
98 RealtimeServerEventOutputAudioBufferStopped(RealtimeServerEventOutputAudioBufferStopped),
99 RealtimeServerEventOutputAudioBufferCleared(RealtimeServerEventOutputAudioBufferCleared),
100 ConversationItemAdded(ConversationItemAdded),
101 ConversationItemDone(ConversationItemDone),
102 InputAudioBufferTimeoutTriggered(InputAudioBufferTimeoutTriggered),
103 ConversationItemInputAudioTranscriptionSegment(ConversationItemInputAudioTranscriptionSegment),
104 McpListToolsInProgress(McpListToolsInProgress),
105 McpListToolsCompleted(McpListToolsCompleted),
106 McpListToolsFailed(McpListToolsFailed),
107 ResponseMcpCallArgumentsDelta(ResponseMcpCallArgumentsDelta),
108 ResponseMcpCallArgumentsDone(ResponseMcpCallArgumentsDone),
109 ResponseMcpCallInProgress(ResponseMcpCallInProgress),
110 ResponseMcpCallCompleted(ResponseMcpCallCompleted),
111 ResponseMcpCallFailed(ResponseMcpCallFailed),
112}
113
114#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
116#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
117#[derive(gproxy_protocol_macros::DeclaredFields)]
118pub struct ConversationItemRetrieved {
119 pub event_id: String,
120 pub item: ConversationItem,
121 #[serde(rename = "type")]
122 pub type_: ConversationItemRetrievedType,
123 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
124 pub rest: Rest,
125}
126
127#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
129#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
130#[derive(gproxy_protocol_macros::DeclaredFields)]
131pub struct RealtimeServerEventOutputAudioBufferStarted {
132 pub event_id: String,
133 pub response_id: String,
134 #[serde(rename = "type")]
135 pub type_: RealtimeServerEventOutputAudioBufferStartedType,
136 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
137 pub rest: Rest,
138}
139
140#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
142#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
143#[derive(gproxy_protocol_macros::DeclaredFields)]
144pub struct RealtimeServerEventOutputAudioBufferStopped {
145 pub event_id: String,
146 pub response_id: String,
147 #[serde(rename = "type")]
148 pub type_: RealtimeServerEventOutputAudioBufferStoppedType,
149 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
150 pub rest: Rest,
151}
152
153#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
155#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
156#[derive(gproxy_protocol_macros::DeclaredFields)]
157pub struct RealtimeServerEventOutputAudioBufferCleared {
158 pub event_id: String,
159 pub response_id: String,
160 #[serde(rename = "type")]
161 pub type_: RealtimeServerEventOutputAudioBufferClearedType,
162 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
163 pub rest: Rest,
164}
165
166#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
167#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
168#[derive(gproxy_protocol_macros::DeclaredFields)]
169pub enum ConversationItemRetrievedType {
170 #[serde(rename = "conversation.item.retrieved")]
171 ConversationItemRetrieved,
172}
173
174#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
175#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
176#[derive(gproxy_protocol_macros::DeclaredFields)]
177pub enum RealtimeServerEventOutputAudioBufferStartedType {
178 #[serde(rename = "output_audio_buffer.started")]
179 OutputAudioBufferStarted,
180}
181
182#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
183#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
184#[derive(gproxy_protocol_macros::DeclaredFields)]
185pub enum RealtimeServerEventOutputAudioBufferStoppedType {
186 #[serde(rename = "output_audio_buffer.stopped")]
187 OutputAudioBufferStopped,
188}
189
190#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
191#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
192#[derive(gproxy_protocol_macros::DeclaredFields)]
193pub enum RealtimeServerEventOutputAudioBufferClearedType {
194 #[serde(rename = "output_audio_buffer.cleared")]
195 OutputAudioBufferCleared,
196}