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)]
40#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
41pub enum RealtimeClientEvent {
42 ConversationItemCreateEvent(ConversationItemCreateEvent),
43 ConversationItemDeleteEvent(ConversationItemDeleteEvent),
44 ConversationItemRetrieveEvent(ConversationItemRetrieveEvent),
45 ConversationItemTruncateEvent(ConversationItemTruncateEvent),
46 InputAudioBufferAppendEvent(InputAudioBufferAppendEvent),
47 InputAudioBufferClearEvent(InputAudioBufferClearEvent),
48 OutputAudioBufferClearEvent(OutputAudioBufferClearEvent),
49 InputAudioBufferCommitEvent(InputAudioBufferCommitEvent),
50 ResponseCancelEvent(ResponseCancelEvent),
51 ResponseCreateEvent(ResponseCreateEvent),
52 SessionUpdateEvent(SessionUpdateEvent),
53}
54
55#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
57#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
58#[serde(untagged)]
59#[derive(gproxy_protocol_macros::DeclaredFields)]
60#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
61pub enum RealtimeServerEvent {
62 ConversationCreatedEvent(ConversationCreatedEvent),
63 ConversationItemCreatedEvent(ConversationItemCreatedEvent),
64 ConversationItemDeletedEvent(ConversationItemDeletedEvent),
65 ConversationItemInputAudioTranscriptionCompletedEvent(
66 ConversationItemInputAudioTranscriptionCompletedEvent,
67 ),
68 ConversationItemInputAudioTranscriptionDeltaEvent(
69 ConversationItemInputAudioTranscriptionDeltaEvent,
70 ),
71 ConversationItemInputAudioTranscriptionFailedEvent(
72 ConversationItemInputAudioTranscriptionFailedEvent,
73 ),
74 ConversationItemRetrieved(ConversationItemRetrieved),
75 ConversationItemTruncatedEvent(ConversationItemTruncatedEvent),
76 RealtimeErrorEvent(RealtimeErrorEvent),
77 InputAudioBufferClearedEvent(InputAudioBufferClearedEvent),
78 InputAudioBufferCommittedEvent(InputAudioBufferCommittedEvent),
79 InputAudioBufferDtmfEventReceivedEvent(InputAudioBufferDtmfEventReceivedEvent),
80 InputAudioBufferSpeechStartedEvent(InputAudioBufferSpeechStartedEvent),
81 InputAudioBufferSpeechStoppedEvent(InputAudioBufferSpeechStoppedEvent),
82 RateLimitsUpdatedEvent(RateLimitsUpdatedEvent),
83 ResponseAudioDeltaEvent(ResponseAudioDeltaEvent),
84 ResponseAudioDoneEvent(ResponseAudioDoneEvent),
85 ResponseAudioTranscriptDeltaEvent(ResponseAudioTranscriptDeltaEvent),
86 ResponseAudioTranscriptDoneEvent(ResponseAudioTranscriptDoneEvent),
87 ResponseContentPartAddedEvent(ResponseContentPartAddedEvent),
88 ResponseContentPartDoneEvent(ResponseContentPartDoneEvent),
89 ResponseCreatedEvent(ResponseCreatedEvent),
90 ResponseDoneEvent(ResponseDoneEvent),
91 ResponseFunctionCallArgumentsDeltaEvent(ResponseFunctionCallArgumentsDeltaEvent),
92 ResponseFunctionCallArgumentsDoneEvent(ResponseFunctionCallArgumentsDoneEvent),
93 ResponseOutputItemAddedEvent(ResponseOutputItemAddedEvent),
94 ResponseOutputItemDoneEvent(ResponseOutputItemDoneEvent),
95 ResponseTextDeltaEvent(ResponseTextDeltaEvent),
96 ResponseTextDoneEvent(ResponseTextDoneEvent),
97 SessionCreatedEvent(SessionCreatedEvent),
98 SessionUpdatedEvent(SessionUpdatedEvent),
99 RealtimeServerEventOutputAudioBufferStarted(RealtimeServerEventOutputAudioBufferStarted),
100 RealtimeServerEventOutputAudioBufferStopped(RealtimeServerEventOutputAudioBufferStopped),
101 RealtimeServerEventOutputAudioBufferCleared(RealtimeServerEventOutputAudioBufferCleared),
102 ConversationItemAdded(ConversationItemAdded),
103 ConversationItemDone(ConversationItemDone),
104 InputAudioBufferTimeoutTriggered(InputAudioBufferTimeoutTriggered),
105 ConversationItemInputAudioTranscriptionSegment(ConversationItemInputAudioTranscriptionSegment),
106 McpListToolsInProgress(McpListToolsInProgress),
107 McpListToolsCompleted(McpListToolsCompleted),
108 McpListToolsFailed(McpListToolsFailed),
109 ResponseMcpCallArgumentsDelta(ResponseMcpCallArgumentsDelta),
110 ResponseMcpCallArgumentsDone(ResponseMcpCallArgumentsDone),
111 ResponseMcpCallInProgress(ResponseMcpCallInProgress),
112 ResponseMcpCallCompleted(ResponseMcpCallCompleted),
113 ResponseMcpCallFailed(ResponseMcpCallFailed),
114}
115
116#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
118#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
119#[derive(gproxy_protocol_macros::DeclaredFields)]
120#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
121pub struct ConversationItemRetrieved {
122 pub event_id: String,
123 pub item: ConversationItem,
124 #[serde(rename = "type")]
125 pub type_: ConversationItemRetrievedType,
126 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
127 pub rest: Rest,
128}
129
130#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
132#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
133#[derive(gproxy_protocol_macros::DeclaredFields)]
134#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
135pub struct RealtimeServerEventOutputAudioBufferStarted {
136 pub event_id: String,
137 pub response_id: String,
138 #[serde(rename = "type")]
139 pub type_: RealtimeServerEventOutputAudioBufferStartedType,
140 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
141 pub rest: Rest,
142}
143
144#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
146#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
147#[derive(gproxy_protocol_macros::DeclaredFields)]
148#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
149pub struct RealtimeServerEventOutputAudioBufferStopped {
150 pub event_id: String,
151 pub response_id: String,
152 #[serde(rename = "type")]
153 pub type_: RealtimeServerEventOutputAudioBufferStoppedType,
154 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
155 pub rest: Rest,
156}
157
158#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
160#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
161#[derive(gproxy_protocol_macros::DeclaredFields)]
162#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
163pub struct RealtimeServerEventOutputAudioBufferCleared {
164 pub event_id: String,
165 pub response_id: String,
166 #[serde(rename = "type")]
167 pub type_: RealtimeServerEventOutputAudioBufferClearedType,
168 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
169 pub rest: Rest,
170}
171
172#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
173#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
174#[derive(gproxy_protocol_macros::DeclaredFields)]
175#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
176pub enum ConversationItemRetrievedType {
177 #[serde(rename = "conversation.item.retrieved")]
178 ConversationItemRetrieved,
179}
180
181#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
182#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
183#[derive(gproxy_protocol_macros::DeclaredFields)]
184#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
185pub enum RealtimeServerEventOutputAudioBufferStartedType {
186 #[serde(rename = "output_audio_buffer.started")]
187 OutputAudioBufferStarted,
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)]
193#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
194pub enum RealtimeServerEventOutputAudioBufferStoppedType {
195 #[serde(rename = "output_audio_buffer.stopped")]
196 OutputAudioBufferStopped,
197}
198
199#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
200#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
201#[derive(gproxy_protocol_macros::DeclaredFields)]
202#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
203pub enum RealtimeServerEventOutputAudioBufferClearedType {
204 #[serde(rename = "output_audio_buffer.cleared")]
205 OutputAudioBufferCleared,
206}