@openai/agents-realtime 0.0.16 → 0.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/bundle/openai-realtime-agents.mjs +5062 -5207
  2. package/dist/bundle/openai-realtime-agents.umd.js +4 -4
  3. package/dist/clientMessages.js +2 -1
  4. package/dist/guardrail.js +10 -5
  5. package/dist/guardrail.js.map +1 -1
  6. package/dist/index.js +57 -8
  7. package/dist/index.js.map +1 -1
  8. package/dist/items.d.ts +1 -1
  9. package/dist/items.js +41 -38
  10. package/dist/items.js.map +1 -1
  11. package/dist/items.mjs +1 -1
  12. package/dist/items.mjs.map +1 -1
  13. package/dist/logger.js +5 -3
  14. package/dist/logger.js.map +1 -1
  15. package/dist/metadata.d.ts +0 -1
  16. package/dist/metadata.js +8 -6
  17. package/dist/metadata.js.map +1 -1
  18. package/dist/metadata.mjs +3 -4
  19. package/dist/metadata.mjs.map +1 -1
  20. package/dist/openaiRealtimeBase.js +43 -36
  21. package/dist/openaiRealtimeBase.js.map +1 -1
  22. package/dist/openaiRealtimeEvents.d.ts +1 -1
  23. package/dist/openaiRealtimeEvents.js +389 -384
  24. package/dist/openaiRealtimeEvents.js.map +1 -1
  25. package/dist/openaiRealtimeEvents.mjs +1 -1
  26. package/dist/openaiRealtimeEvents.mjs.map +1 -1
  27. package/dist/openaiRealtimeWebRtc.js +19 -12
  28. package/dist/openaiRealtimeWebRtc.js.map +1 -1
  29. package/dist/openaiRealtimeWebsocket.js +19 -15
  30. package/dist/openaiRealtimeWebsocket.js.map +1 -1
  31. package/dist/realtimeAgent.js +6 -2
  32. package/dist/realtimeAgent.js.map +1 -1
  33. package/dist/realtimeSession.js +38 -31
  34. package/dist/realtimeSession.js.map +1 -1
  35. package/dist/realtimeSessionEvents.js +2 -1
  36. package/dist/shims/shims-browser.js +7 -3
  37. package/dist/shims/shims-browser.js.map +1 -1
  38. package/dist/shims/shims-node.js +8 -3
  39. package/dist/shims/shims-node.js.map +1 -1
  40. package/dist/shims/shims-workerd.js +7 -3
  41. package/dist/shims/shims-workerd.js.map +1 -1
  42. package/dist/shims/shims.js +17 -1
  43. package/dist/shims/shims.js.map +1 -1
  44. package/dist/transportLayer.js +2 -1
  45. package/dist/transportLayerEvents.js +2 -1
  46. package/dist/utils.js +25 -12
  47. package/dist/utils.js.map +1 -1
  48. package/package.json +20 -23
@@ -1,437 +1,442 @@
1
- import { z } from '@openai/zod/v3';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.realtimeServerEventSchema = exports.genericEventSchema = exports.transcriptionSessionUpdatedEventSchema = exports.transcriptionSessionUpdateEventSchema = exports.sessionUpdateEventSchema = exports.responseCreateEventSchema = exports.responseCancelEventSchema = exports.sessionUpdatedEventSchema = exports.sessionCreatedEventSchema = exports.responseTextDoneEventSchema = exports.responseTextDeltaEventSchema = exports.responseOutputItemDoneEventSchema = exports.responseOutputItemAddedEventSchema = exports.responseFunctionCallArgumentsDoneEventSchema = exports.responseFunctionCallArgumentsDeltaEventSchema = exports.responseDoneEventSchema = exports.responseCreatedEventSchema = exports.responseContentPartDoneEventSchema = exports.responseContentPartAddedEventSchema = exports.responseAudioTranscriptDoneEventSchema = exports.responseAudioTranscriptDeltaEventSchema = exports.responseAudioDoneEventSchema = exports.responseAudioDeltaEventSchema = exports.rateLimitsUpdatedEventSchema = exports.outputAudioBufferClearedEventSchema = exports.outputAudioBufferStoppedEventSchema = exports.outputAudioBufferStartedEventSchema = exports.inputAudioBufferSpeechStoppedEventSchema = exports.inputAudioBufferSpeechStartedEventSchema = exports.inputAudioBufferCommittedEventSchema = exports.inputAudioBufferCommitEventSchema = exports.inputAudioBufferClearEventSchema = exports.inputAudioBufferAppendEventSchema = exports.inputAudioBufferClearedEventSchema = exports.errorEventSchema = exports.conversationItemTruncateEventSchema = exports.conversationItemRetrieveEventSchema = exports.conversationItemDeleteEventSchema = exports.conversationItemCreateEventSchema = exports.conversationItemTruncatedEventSchema = exports.conversationItemRetrievedEventSchema = exports.conversationItemInputAudioTranscriptionFailedEventSchema = exports.conversationItemInputAudioTranscriptionDeltaEventSchema = exports.conversationItemInputAudioTranscriptionCompletedEventSchema = exports.conversationItemDeletedEventSchema = exports.conversationItemCreatedEventSchema = exports.conversationCreatedEventSchema = exports.conversationItemSchema = exports.conversationItemContentSchema = exports.realtimeResponse = void 0;
4
+ exports.realtimeClientEventSchema = void 0;
5
+ exports.parseRealtimeEvent = parseRealtimeEvent;
6
+ const zod_1 = require("zod");
2
7
  // Event schemas mirroring the structures defined in the OpenAI SDK typings.
3
8
  // Most fields from the interfaces in `realtime.d.ts` are captured here to
4
9
  // provide better runtime validation when parsing events from the server.
5
- export const realtimeResponse = z.object({
6
- id: z.string().optional().nullable(),
7
- conversation_id: z.string().optional().nullable(),
8
- max_output_tokens: z.number().or(z.literal('inf')).optional().nullable(),
9
- metadata: z.record(z.string(), z.any()).optional().nullable(),
10
- modalities: z.array(z.string()).optional().nullable(),
11
- object: z.literal('realtime.response').optional().nullable(),
12
- output: z.array(z.any()).optional().nullable(),
13
- output_audio_format: z.string().optional().nullable(),
14
- status: z
10
+ exports.realtimeResponse = zod_1.z.object({
11
+ id: zod_1.z.string().optional().nullable(),
12
+ conversation_id: zod_1.z.string().optional().nullable(),
13
+ max_output_tokens: zod_1.z.number().or(zod_1.z.literal('inf')).optional().nullable(),
14
+ metadata: zod_1.z.record(zod_1.z.string(), zod_1.z.any()).optional().nullable(),
15
+ modalities: zod_1.z.array(zod_1.z.string()).optional().nullable(),
16
+ object: zod_1.z.literal('realtime.response').optional().nullable(),
17
+ output: zod_1.z.array(zod_1.z.any()).optional().nullable(),
18
+ output_audio_format: zod_1.z.string().optional().nullable(),
19
+ status: zod_1.z
15
20
  .enum(['completed', 'incomplete', 'failed', 'cancelled', 'in_progress'])
16
21
  .optional()
17
22
  .nullable(),
18
- status_details: z.record(z.string(), z.any()).optional().nullable(),
19
- usage: z
23
+ status_details: zod_1.z.record(zod_1.z.string(), zod_1.z.any()).optional().nullable(),
24
+ usage: zod_1.z
20
25
  .object({
21
- input_tokens: z.number().optional(),
22
- input_tokens_details: z.record(z.string(), z.any()).optional().nullable(),
23
- output_tokens: z.number().optional(),
24
- output_tokens_details: z
25
- .record(z.string(), z.any())
26
+ input_tokens: zod_1.z.number().optional(),
27
+ input_tokens_details: zod_1.z.record(zod_1.z.string(), zod_1.z.any()).optional().nullable(),
28
+ output_tokens: zod_1.z.number().optional(),
29
+ output_tokens_details: zod_1.z
30
+ .record(zod_1.z.string(), zod_1.z.any())
26
31
  .optional()
27
32
  .nullable(),
28
33
  })
29
34
  .optional()
30
35
  .nullable(),
31
- voice: z.string().optional().nullable(),
36
+ voice: zod_1.z.string().optional().nullable(),
32
37
  });
33
38
  // Basic content schema used by ConversationItem.
34
- export const conversationItemContentSchema = z.object({
35
- id: z.string().optional(),
36
- audio: z.string().nullable().optional(),
37
- text: z.string().nullable().optional(),
38
- transcript: z.string().nullable().optional(),
39
- type: z.union([
40
- z.literal('input_text'),
41
- z.literal('input_audio'),
42
- z.literal('item_reference'),
43
- z.literal('text'),
44
- z.literal('audio'),
39
+ exports.conversationItemContentSchema = zod_1.z.object({
40
+ id: zod_1.z.string().optional(),
41
+ audio: zod_1.z.string().nullable().optional(),
42
+ text: zod_1.z.string().nullable().optional(),
43
+ transcript: zod_1.z.string().nullable().optional(),
44
+ type: zod_1.z.union([
45
+ zod_1.z.literal('input_text'),
46
+ zod_1.z.literal('input_audio'),
47
+ zod_1.z.literal('item_reference'),
48
+ zod_1.z.literal('text'),
49
+ zod_1.z.literal('audio'),
45
50
  ]),
46
51
  });
47
- export const conversationItemSchema = z.object({
48
- id: z.string().optional(),
49
- arguments: z.string().optional(),
50
- call_id: z.string().optional(),
51
- content: z.array(conversationItemContentSchema).optional(),
52
- name: z.string().optional(),
53
- object: z.literal('realtime.item').optional(),
54
- output: z.string().optional(),
55
- role: z.enum(['user', 'assistant', 'system']).optional(),
56
- status: z.enum(['completed', 'incomplete', 'in_progress']).optional(),
57
- type: z.enum(['message', 'function_call', 'function_call_output']).optional(),
58
- });
59
- export const conversationCreatedEventSchema = z.object({
60
- type: z.literal('conversation.created'),
61
- event_id: z.string(),
62
- conversation: z.object({
63
- id: z.string().optional(),
64
- object: z.literal('realtime.conversation').optional(),
52
+ exports.conversationItemSchema = zod_1.z.object({
53
+ id: zod_1.z.string().optional(),
54
+ arguments: zod_1.z.string().optional(),
55
+ call_id: zod_1.z.string().optional(),
56
+ content: zod_1.z.array(exports.conversationItemContentSchema).optional(),
57
+ name: zod_1.z.string().optional(),
58
+ object: zod_1.z.literal('realtime.item').optional(),
59
+ output: zod_1.z.string().optional(),
60
+ role: zod_1.z.enum(['user', 'assistant', 'system']).optional(),
61
+ status: zod_1.z.enum(['completed', 'incomplete', 'in_progress']).optional(),
62
+ type: zod_1.z.enum(['message', 'function_call', 'function_call_output']).optional(),
63
+ });
64
+ exports.conversationCreatedEventSchema = zod_1.z.object({
65
+ type: zod_1.z.literal('conversation.created'),
66
+ event_id: zod_1.z.string(),
67
+ conversation: zod_1.z.object({
68
+ id: zod_1.z.string().optional(),
69
+ object: zod_1.z.literal('realtime.conversation').optional(),
65
70
  }),
66
71
  });
67
- export const conversationItemCreatedEventSchema = z.object({
68
- type: z.literal('conversation.item.created'),
69
- event_id: z.string(),
70
- item: conversationItemSchema,
71
- previous_item_id: z.string().nullable().optional(),
72
- });
73
- export const conversationItemDeletedEventSchema = z.object({
74
- type: z.literal('conversation.item.deleted'),
75
- event_id: z.string(),
76
- item_id: z.string(),
77
- });
78
- export const conversationItemInputAudioTranscriptionCompletedEventSchema = z.object({
79
- type: z.literal('conversation.item.input_audio_transcription.completed'),
80
- event_id: z.string(),
81
- item_id: z.string(),
82
- content_index: z.number(),
83
- transcript: z.string(),
84
- logprobs: z.array(z.any()).nullable().optional(),
85
- });
86
- export const conversationItemInputAudioTranscriptionDeltaEventSchema = z.object({
87
- type: z.literal('conversation.item.input_audio_transcription.delta'),
88
- event_id: z.string(),
89
- item_id: z.string(),
90
- content_index: z.number().optional(),
91
- delta: z.string().optional(),
92
- logprobs: z.array(z.any()).nullable().optional(),
93
- });
94
- export const conversationItemInputAudioTranscriptionFailedEventSchema = z.object({
95
- type: z.literal('conversation.item.input_audio_transcription.failed'),
96
- event_id: z.string(),
97
- item_id: z.string(),
98
- content_index: z.number(),
99
- error: z.object({
100
- code: z.string().optional(),
101
- message: z.string().optional(),
102
- param: z.string().optional(),
103
- type: z.string().optional(),
72
+ exports.conversationItemCreatedEventSchema = zod_1.z.object({
73
+ type: zod_1.z.literal('conversation.item.created'),
74
+ event_id: zod_1.z.string(),
75
+ item: exports.conversationItemSchema,
76
+ previous_item_id: zod_1.z.string().nullable().optional(),
77
+ });
78
+ exports.conversationItemDeletedEventSchema = zod_1.z.object({
79
+ type: zod_1.z.literal('conversation.item.deleted'),
80
+ event_id: zod_1.z.string(),
81
+ item_id: zod_1.z.string(),
82
+ });
83
+ exports.conversationItemInputAudioTranscriptionCompletedEventSchema = zod_1.z.object({
84
+ type: zod_1.z.literal('conversation.item.input_audio_transcription.completed'),
85
+ event_id: zod_1.z.string(),
86
+ item_id: zod_1.z.string(),
87
+ content_index: zod_1.z.number(),
88
+ transcript: zod_1.z.string(),
89
+ logprobs: zod_1.z.array(zod_1.z.any()).nullable().optional(),
90
+ });
91
+ exports.conversationItemInputAudioTranscriptionDeltaEventSchema = zod_1.z.object({
92
+ type: zod_1.z.literal('conversation.item.input_audio_transcription.delta'),
93
+ event_id: zod_1.z.string(),
94
+ item_id: zod_1.z.string(),
95
+ content_index: zod_1.z.number().optional(),
96
+ delta: zod_1.z.string().optional(),
97
+ logprobs: zod_1.z.array(zod_1.z.any()).nullable().optional(),
98
+ });
99
+ exports.conversationItemInputAudioTranscriptionFailedEventSchema = zod_1.z.object({
100
+ type: zod_1.z.literal('conversation.item.input_audio_transcription.failed'),
101
+ event_id: zod_1.z.string(),
102
+ item_id: zod_1.z.string(),
103
+ content_index: zod_1.z.number(),
104
+ error: zod_1.z.object({
105
+ code: zod_1.z.string().optional(),
106
+ message: zod_1.z.string().optional(),
107
+ param: zod_1.z.string().optional(),
108
+ type: zod_1.z.string().optional(),
104
109
  }),
105
110
  });
106
- export const conversationItemRetrievedEventSchema = z.object({
107
- type: z.literal('conversation.item.retrieved'),
108
- event_id: z.string(),
109
- item: conversationItemSchema,
110
- });
111
- export const conversationItemTruncatedEventSchema = z.object({
112
- type: z.literal('conversation.item.truncated'),
113
- event_id: z.string(),
114
- item_id: z.string(),
115
- audio_end_ms: z.number(),
116
- content_index: z.number(),
117
- });
118
- export const conversationItemCreateEventSchema = z.object({
119
- type: z.literal('conversation.item.create'),
120
- item: conversationItemSchema,
121
- event_id: z.string().optional(),
122
- previous_item_id: z.string().nullable().optional(),
123
- });
124
- export const conversationItemDeleteEventSchema = z.object({
125
- type: z.literal('conversation.item.delete'),
126
- item_id: z.string(),
127
- event_id: z.string().optional(),
128
- });
129
- export const conversationItemRetrieveEventSchema = z.object({
130
- type: z.literal('conversation.item.retrieve'),
131
- item_id: z.string(),
132
- event_id: z.string().optional(),
133
- });
134
- export const conversationItemTruncateEventSchema = z.object({
135
- type: z.literal('conversation.item.truncate'),
136
- item_id: z.string(),
137
- audio_end_ms: z.number(),
138
- content_index: z.number(),
139
- event_id: z.string().optional(),
140
- });
141
- export const errorEventSchema = z.object({
142
- type: z.literal('error'),
143
- event_id: z.string().optional(),
144
- error: z.any().optional(),
145
- });
146
- export const inputAudioBufferClearedEventSchema = z.object({
147
- type: z.literal('input_audio_buffer.cleared'),
148
- event_id: z.string(),
149
- });
150
- export const inputAudioBufferAppendEventSchema = z.object({
151
- type: z.literal('input_audio_buffer.append'),
152
- audio: z.string(),
153
- event_id: z.string().optional(),
154
- });
155
- export const inputAudioBufferClearEventSchema = z.object({
156
- type: z.literal('input_audio_buffer.clear'),
157
- event_id: z.string().optional(),
158
- });
159
- export const inputAudioBufferCommitEventSchema = z.object({
160
- type: z.literal('input_audio_buffer.commit'),
161
- event_id: z.string().optional(),
162
- });
163
- export const inputAudioBufferCommittedEventSchema = z.object({
164
- type: z.literal('input_audio_buffer.committed'),
165
- event_id: z.string(),
166
- item_id: z.string(),
167
- previous_item_id: z.string().nullable().optional(),
168
- });
169
- export const inputAudioBufferSpeechStartedEventSchema = z.object({
170
- type: z.literal('input_audio_buffer.speech_started'),
171
- event_id: z.string(),
172
- item_id: z.string(),
173
- audio_start_ms: z.number(),
174
- });
175
- export const inputAudioBufferSpeechStoppedEventSchema = z.object({
176
- type: z.literal('input_audio_buffer.speech_stopped'),
177
- event_id: z.string(),
178
- item_id: z.string(),
179
- audio_end_ms: z.number(),
180
- });
181
- export const outputAudioBufferStartedEventSchema = z
111
+ exports.conversationItemRetrievedEventSchema = zod_1.z.object({
112
+ type: zod_1.z.literal('conversation.item.retrieved'),
113
+ event_id: zod_1.z.string(),
114
+ item: exports.conversationItemSchema,
115
+ });
116
+ exports.conversationItemTruncatedEventSchema = zod_1.z.object({
117
+ type: zod_1.z.literal('conversation.item.truncated'),
118
+ event_id: zod_1.z.string(),
119
+ item_id: zod_1.z.string(),
120
+ audio_end_ms: zod_1.z.number(),
121
+ content_index: zod_1.z.number(),
122
+ });
123
+ exports.conversationItemCreateEventSchema = zod_1.z.object({
124
+ type: zod_1.z.literal('conversation.item.create'),
125
+ item: exports.conversationItemSchema,
126
+ event_id: zod_1.z.string().optional(),
127
+ previous_item_id: zod_1.z.string().nullable().optional(),
128
+ });
129
+ exports.conversationItemDeleteEventSchema = zod_1.z.object({
130
+ type: zod_1.z.literal('conversation.item.delete'),
131
+ item_id: zod_1.z.string(),
132
+ event_id: zod_1.z.string().optional(),
133
+ });
134
+ exports.conversationItemRetrieveEventSchema = zod_1.z.object({
135
+ type: zod_1.z.literal('conversation.item.retrieve'),
136
+ item_id: zod_1.z.string(),
137
+ event_id: zod_1.z.string().optional(),
138
+ });
139
+ exports.conversationItemTruncateEventSchema = zod_1.z.object({
140
+ type: zod_1.z.literal('conversation.item.truncate'),
141
+ item_id: zod_1.z.string(),
142
+ audio_end_ms: zod_1.z.number(),
143
+ content_index: zod_1.z.number(),
144
+ event_id: zod_1.z.string().optional(),
145
+ });
146
+ exports.errorEventSchema = zod_1.z.object({
147
+ type: zod_1.z.literal('error'),
148
+ event_id: zod_1.z.string().optional(),
149
+ error: zod_1.z.any().optional(),
150
+ });
151
+ exports.inputAudioBufferClearedEventSchema = zod_1.z.object({
152
+ type: zod_1.z.literal('input_audio_buffer.cleared'),
153
+ event_id: zod_1.z.string(),
154
+ });
155
+ exports.inputAudioBufferAppendEventSchema = zod_1.z.object({
156
+ type: zod_1.z.literal('input_audio_buffer.append'),
157
+ audio: zod_1.z.string(),
158
+ event_id: zod_1.z.string().optional(),
159
+ });
160
+ exports.inputAudioBufferClearEventSchema = zod_1.z.object({
161
+ type: zod_1.z.literal('input_audio_buffer.clear'),
162
+ event_id: zod_1.z.string().optional(),
163
+ });
164
+ exports.inputAudioBufferCommitEventSchema = zod_1.z.object({
165
+ type: zod_1.z.literal('input_audio_buffer.commit'),
166
+ event_id: zod_1.z.string().optional(),
167
+ });
168
+ exports.inputAudioBufferCommittedEventSchema = zod_1.z.object({
169
+ type: zod_1.z.literal('input_audio_buffer.committed'),
170
+ event_id: zod_1.z.string(),
171
+ item_id: zod_1.z.string(),
172
+ previous_item_id: zod_1.z.string().nullable().optional(),
173
+ });
174
+ exports.inputAudioBufferSpeechStartedEventSchema = zod_1.z.object({
175
+ type: zod_1.z.literal('input_audio_buffer.speech_started'),
176
+ event_id: zod_1.z.string(),
177
+ item_id: zod_1.z.string(),
178
+ audio_start_ms: zod_1.z.number(),
179
+ });
180
+ exports.inputAudioBufferSpeechStoppedEventSchema = zod_1.z.object({
181
+ type: zod_1.z.literal('input_audio_buffer.speech_stopped'),
182
+ event_id: zod_1.z.string(),
183
+ item_id: zod_1.z.string(),
184
+ audio_end_ms: zod_1.z.number(),
185
+ });
186
+ exports.outputAudioBufferStartedEventSchema = zod_1.z
182
187
  .object({
183
- type: z.literal('output_audio_buffer.started'),
184
- event_id: z.string(),
188
+ type: zod_1.z.literal('output_audio_buffer.started'),
189
+ event_id: zod_1.z.string(),
185
190
  })
186
191
  .passthrough();
187
- export const outputAudioBufferStoppedEventSchema = z
192
+ exports.outputAudioBufferStoppedEventSchema = zod_1.z
188
193
  .object({
189
- type: z.literal('output_audio_buffer.stopped'),
190
- event_id: z.string(),
194
+ type: zod_1.z.literal('output_audio_buffer.stopped'),
195
+ event_id: zod_1.z.string(),
191
196
  })
192
197
  .passthrough();
193
- export const outputAudioBufferClearedEventSchema = z.object({
194
- type: z.literal('output_audio_buffer.cleared'),
195
- event_id: z.string(),
196
- });
197
- export const rateLimitsUpdatedEventSchema = z.object({
198
- type: z.literal('rate_limits.updated'),
199
- event_id: z.string(),
200
- rate_limits: z.array(z.object({
201
- limit: z.number().optional(),
202
- name: z.enum(['requests', 'tokens']).optional(),
203
- remaining: z.number().optional(),
204
- reset_seconds: z.number().optional(),
198
+ exports.outputAudioBufferClearedEventSchema = zod_1.z.object({
199
+ type: zod_1.z.literal('output_audio_buffer.cleared'),
200
+ event_id: zod_1.z.string(),
201
+ });
202
+ exports.rateLimitsUpdatedEventSchema = zod_1.z.object({
203
+ type: zod_1.z.literal('rate_limits.updated'),
204
+ event_id: zod_1.z.string(),
205
+ rate_limits: zod_1.z.array(zod_1.z.object({
206
+ limit: zod_1.z.number().optional(),
207
+ name: zod_1.z.enum(['requests', 'tokens']).optional(),
208
+ remaining: zod_1.z.number().optional(),
209
+ reset_seconds: zod_1.z.number().optional(),
205
210
  })),
206
211
  });
207
- export const responseAudioDeltaEventSchema = z.object({
208
- type: z.literal('response.audio.delta'),
209
- event_id: z.string(),
210
- item_id: z.string(),
211
- content_index: z.number(),
212
- delta: z.string(),
213
- output_index: z.number(),
214
- response_id: z.string(),
215
- });
216
- export const responseAudioDoneEventSchema = z.object({
217
- type: z.literal('response.audio.done'),
218
- event_id: z.string(),
219
- item_id: z.string(),
220
- content_index: z.number(),
221
- output_index: z.number(),
222
- response_id: z.string(),
223
- });
224
- export const responseAudioTranscriptDeltaEventSchema = z.object({
225
- type: z.literal('response.audio_transcript.delta'),
226
- event_id: z.string(),
227
- item_id: z.string(),
228
- content_index: z.number(),
229
- delta: z.string(),
230
- output_index: z.number(),
231
- response_id: z.string(),
232
- });
233
- export const responseAudioTranscriptDoneEventSchema = z.object({
234
- type: z.literal('response.audio_transcript.done'),
235
- event_id: z.string(),
236
- item_id: z.string(),
237
- content_index: z.number(),
238
- transcript: z.string(),
239
- output_index: z.number(),
240
- response_id: z.string(),
241
- });
242
- export const responseContentPartAddedEventSchema = z.object({
243
- type: z.literal('response.content_part.added'),
244
- event_id: z.string(),
245
- item_id: z.string(),
246
- content_index: z.number(),
247
- output_index: z.number(),
248
- response_id: z.string(),
249
- part: z.object({
250
- audio: z.string().optional(),
251
- text: z.string().optional(),
252
- transcript: z.string().optional(),
253
- type: z.enum(['text', 'audio']).optional(),
212
+ exports.responseAudioDeltaEventSchema = zod_1.z.object({
213
+ type: zod_1.z.literal('response.audio.delta'),
214
+ event_id: zod_1.z.string(),
215
+ item_id: zod_1.z.string(),
216
+ content_index: zod_1.z.number(),
217
+ delta: zod_1.z.string(),
218
+ output_index: zod_1.z.number(),
219
+ response_id: zod_1.z.string(),
220
+ });
221
+ exports.responseAudioDoneEventSchema = zod_1.z.object({
222
+ type: zod_1.z.literal('response.audio.done'),
223
+ event_id: zod_1.z.string(),
224
+ item_id: zod_1.z.string(),
225
+ content_index: zod_1.z.number(),
226
+ output_index: zod_1.z.number(),
227
+ response_id: zod_1.z.string(),
228
+ });
229
+ exports.responseAudioTranscriptDeltaEventSchema = zod_1.z.object({
230
+ type: zod_1.z.literal('response.audio_transcript.delta'),
231
+ event_id: zod_1.z.string(),
232
+ item_id: zod_1.z.string(),
233
+ content_index: zod_1.z.number(),
234
+ delta: zod_1.z.string(),
235
+ output_index: zod_1.z.number(),
236
+ response_id: zod_1.z.string(),
237
+ });
238
+ exports.responseAudioTranscriptDoneEventSchema = zod_1.z.object({
239
+ type: zod_1.z.literal('response.audio_transcript.done'),
240
+ event_id: zod_1.z.string(),
241
+ item_id: zod_1.z.string(),
242
+ content_index: zod_1.z.number(),
243
+ transcript: zod_1.z.string(),
244
+ output_index: zod_1.z.number(),
245
+ response_id: zod_1.z.string(),
246
+ });
247
+ exports.responseContentPartAddedEventSchema = zod_1.z.object({
248
+ type: zod_1.z.literal('response.content_part.added'),
249
+ event_id: zod_1.z.string(),
250
+ item_id: zod_1.z.string(),
251
+ content_index: zod_1.z.number(),
252
+ output_index: zod_1.z.number(),
253
+ response_id: zod_1.z.string(),
254
+ part: zod_1.z.object({
255
+ audio: zod_1.z.string().optional(),
256
+ text: zod_1.z.string().optional(),
257
+ transcript: zod_1.z.string().optional(),
258
+ type: zod_1.z.enum(['text', 'audio']).optional(),
254
259
  }),
255
260
  });
256
- export const responseContentPartDoneEventSchema = z.object({
257
- type: z.literal('response.content_part.done'),
258
- event_id: z.string(),
259
- item_id: z.string(),
260
- content_index: z.number(),
261
- output_index: z.number(),
262
- response_id: z.string(),
263
- part: z.object({
264
- audio: z.string().optional(),
265
- text: z.string().optional(),
266
- transcript: z.string().optional(),
267
- type: z.enum(['text', 'audio']).optional(),
261
+ exports.responseContentPartDoneEventSchema = zod_1.z.object({
262
+ type: zod_1.z.literal('response.content_part.done'),
263
+ event_id: zod_1.z.string(),
264
+ item_id: zod_1.z.string(),
265
+ content_index: zod_1.z.number(),
266
+ output_index: zod_1.z.number(),
267
+ response_id: zod_1.z.string(),
268
+ part: zod_1.z.object({
269
+ audio: zod_1.z.string().optional(),
270
+ text: zod_1.z.string().optional(),
271
+ transcript: zod_1.z.string().optional(),
272
+ type: zod_1.z.enum(['text', 'audio']).optional(),
268
273
  }),
269
274
  });
270
- export const responseCreatedEventSchema = z.object({
271
- type: z.literal('response.created'),
272
- event_id: z.string(),
273
- response: realtimeResponse,
274
- });
275
- export const responseDoneEventSchema = z.object({
276
- type: z.literal('response.done'),
277
- event_id: z.string(),
278
- response: realtimeResponse,
279
- });
280
- export const responseFunctionCallArgumentsDeltaEventSchema = z.object({
281
- type: z.literal('response.function_call_arguments.delta'),
282
- event_id: z.string(),
283
- item_id: z.string(),
284
- call_id: z.string(),
285
- delta: z.string(),
286
- output_index: z.number(),
287
- response_id: z.string(),
288
- });
289
- export const responseFunctionCallArgumentsDoneEventSchema = z.object({
290
- type: z.literal('response.function_call_arguments.done'),
291
- event_id: z.string(),
292
- item_id: z.string(),
293
- call_id: z.string(),
294
- arguments: z.string(),
295
- output_index: z.number(),
296
- response_id: z.string(),
297
- });
298
- export const responseOutputItemAddedEventSchema = z.object({
299
- type: z.literal('response.output_item.added'),
300
- event_id: z.string(),
301
- item: conversationItemSchema,
302
- output_index: z.number(),
303
- response_id: z.string(),
304
- });
305
- export const responseOutputItemDoneEventSchema = z.object({
306
- type: z.literal('response.output_item.done'),
307
- event_id: z.string(),
308
- item: conversationItemSchema,
309
- output_index: z.number(),
310
- response_id: z.string(),
311
- });
312
- export const responseTextDeltaEventSchema = z.object({
313
- type: z.literal('response.text.delta'),
314
- event_id: z.string(),
315
- item_id: z.string(),
316
- content_index: z.number(),
317
- delta: z.string(),
318
- output_index: z.number(),
319
- response_id: z.string(),
320
- });
321
- export const responseTextDoneEventSchema = z.object({
322
- type: z.literal('response.text.done'),
323
- event_id: z.string(),
324
- item_id: z.string(),
325
- content_index: z.number(),
326
- text: z.string(),
327
- output_index: z.number(),
328
- response_id: z.string(),
329
- });
330
- export const sessionCreatedEventSchema = z.object({
331
- type: z.literal('session.created'),
332
- event_id: z.string(),
333
- session: z.any(),
334
- });
335
- export const sessionUpdatedEventSchema = z.object({
336
- type: z.literal('session.updated'),
337
- event_id: z.string(),
338
- session: z.any(),
339
- });
340
- export const responseCancelEventSchema = z.object({
341
- type: z.literal('response.cancel'),
342
- event_id: z.string().optional(),
343
- response_id: z.string().optional(),
344
- });
345
- export const responseCreateEventSchema = z.object({
346
- type: z.literal('response.create'),
347
- event_id: z.string().optional(),
348
- response: z.any().optional(),
349
- });
350
- export const sessionUpdateEventSchema = z.object({
351
- type: z.literal('session.update'),
352
- event_id: z.string().optional(),
353
- session: z.any(),
354
- });
355
- export const transcriptionSessionUpdateEventSchema = z.object({
356
- type: z.literal('transcription_session.update'),
357
- event_id: z.string().optional(),
358
- session: z.any(),
359
- });
360
- export const transcriptionSessionUpdatedEventSchema = z.object({
361
- type: z.literal('transcription_session.updated'),
362
- event_id: z.string(),
363
- session: z.any(),
275
+ exports.responseCreatedEventSchema = zod_1.z.object({
276
+ type: zod_1.z.literal('response.created'),
277
+ event_id: zod_1.z.string(),
278
+ response: exports.realtimeResponse,
279
+ });
280
+ exports.responseDoneEventSchema = zod_1.z.object({
281
+ type: zod_1.z.literal('response.done'),
282
+ event_id: zod_1.z.string(),
283
+ response: exports.realtimeResponse,
284
+ });
285
+ exports.responseFunctionCallArgumentsDeltaEventSchema = zod_1.z.object({
286
+ type: zod_1.z.literal('response.function_call_arguments.delta'),
287
+ event_id: zod_1.z.string(),
288
+ item_id: zod_1.z.string(),
289
+ call_id: zod_1.z.string(),
290
+ delta: zod_1.z.string(),
291
+ output_index: zod_1.z.number(),
292
+ response_id: zod_1.z.string(),
293
+ });
294
+ exports.responseFunctionCallArgumentsDoneEventSchema = zod_1.z.object({
295
+ type: zod_1.z.literal('response.function_call_arguments.done'),
296
+ event_id: zod_1.z.string(),
297
+ item_id: zod_1.z.string(),
298
+ call_id: zod_1.z.string(),
299
+ arguments: zod_1.z.string(),
300
+ output_index: zod_1.z.number(),
301
+ response_id: zod_1.z.string(),
302
+ });
303
+ exports.responseOutputItemAddedEventSchema = zod_1.z.object({
304
+ type: zod_1.z.literal('response.output_item.added'),
305
+ event_id: zod_1.z.string(),
306
+ item: exports.conversationItemSchema,
307
+ output_index: zod_1.z.number(),
308
+ response_id: zod_1.z.string(),
309
+ });
310
+ exports.responseOutputItemDoneEventSchema = zod_1.z.object({
311
+ type: zod_1.z.literal('response.output_item.done'),
312
+ event_id: zod_1.z.string(),
313
+ item: exports.conversationItemSchema,
314
+ output_index: zod_1.z.number(),
315
+ response_id: zod_1.z.string(),
316
+ });
317
+ exports.responseTextDeltaEventSchema = zod_1.z.object({
318
+ type: zod_1.z.literal('response.text.delta'),
319
+ event_id: zod_1.z.string(),
320
+ item_id: zod_1.z.string(),
321
+ content_index: zod_1.z.number(),
322
+ delta: zod_1.z.string(),
323
+ output_index: zod_1.z.number(),
324
+ response_id: zod_1.z.string(),
325
+ });
326
+ exports.responseTextDoneEventSchema = zod_1.z.object({
327
+ type: zod_1.z.literal('response.text.done'),
328
+ event_id: zod_1.z.string(),
329
+ item_id: zod_1.z.string(),
330
+ content_index: zod_1.z.number(),
331
+ text: zod_1.z.string(),
332
+ output_index: zod_1.z.number(),
333
+ response_id: zod_1.z.string(),
334
+ });
335
+ exports.sessionCreatedEventSchema = zod_1.z.object({
336
+ type: zod_1.z.literal('session.created'),
337
+ event_id: zod_1.z.string(),
338
+ session: zod_1.z.any(),
339
+ });
340
+ exports.sessionUpdatedEventSchema = zod_1.z.object({
341
+ type: zod_1.z.literal('session.updated'),
342
+ event_id: zod_1.z.string(),
343
+ session: zod_1.z.any(),
344
+ });
345
+ exports.responseCancelEventSchema = zod_1.z.object({
346
+ type: zod_1.z.literal('response.cancel'),
347
+ event_id: zod_1.z.string().optional(),
348
+ response_id: zod_1.z.string().optional(),
349
+ });
350
+ exports.responseCreateEventSchema = zod_1.z.object({
351
+ type: zod_1.z.literal('response.create'),
352
+ event_id: zod_1.z.string().optional(),
353
+ response: zod_1.z.any().optional(),
354
+ });
355
+ exports.sessionUpdateEventSchema = zod_1.z.object({
356
+ type: zod_1.z.literal('session.update'),
357
+ event_id: zod_1.z.string().optional(),
358
+ session: zod_1.z.any(),
359
+ });
360
+ exports.transcriptionSessionUpdateEventSchema = zod_1.z.object({
361
+ type: zod_1.z.literal('transcription_session.update'),
362
+ event_id: zod_1.z.string().optional(),
363
+ session: zod_1.z.any(),
364
+ });
365
+ exports.transcriptionSessionUpdatedEventSchema = zod_1.z.object({
366
+ type: zod_1.z.literal('transcription_session.updated'),
367
+ event_id: zod_1.z.string(),
368
+ session: zod_1.z.any(),
364
369
  });
365
370
  /**
366
371
  * This schema is used if an event is unknown to the client. The Realtime API might introduce
367
372
  * new events at some point and we should handle them gracefully by treating them as generic events
368
373
  * only requiring a type and an optional event_id.
369
374
  */
370
- export const genericEventSchema = z
375
+ exports.genericEventSchema = zod_1.z
371
376
  .object({
372
- type: z.string(),
373
- event_id: z.string().optional().nullable(),
377
+ type: zod_1.z.string(),
378
+ event_id: zod_1.z.string().optional().nullable(),
374
379
  })
375
380
  .passthrough();
376
- export const realtimeServerEventSchema = z.discriminatedUnion('type', [
377
- conversationCreatedEventSchema,
378
- conversationItemCreatedEventSchema,
379
- conversationItemDeletedEventSchema,
380
- conversationItemInputAudioTranscriptionCompletedEventSchema,
381
- conversationItemInputAudioTranscriptionDeltaEventSchema,
382
- conversationItemInputAudioTranscriptionFailedEventSchema,
383
- conversationItemRetrievedEventSchema,
384
- conversationItemTruncatedEventSchema,
385
- errorEventSchema,
386
- inputAudioBufferClearedEventSchema,
387
- inputAudioBufferCommittedEventSchema,
388
- inputAudioBufferSpeechStartedEventSchema,
389
- inputAudioBufferSpeechStoppedEventSchema,
390
- outputAudioBufferStartedEventSchema,
391
- outputAudioBufferStoppedEventSchema,
392
- outputAudioBufferClearedEventSchema,
393
- rateLimitsUpdatedEventSchema,
394
- responseAudioDeltaEventSchema,
395
- responseAudioDoneEventSchema,
396
- responseAudioTranscriptDeltaEventSchema,
397
- responseAudioTranscriptDoneEventSchema,
398
- responseContentPartAddedEventSchema,
399
- responseContentPartDoneEventSchema,
400
- responseCreatedEventSchema,
401
- responseDoneEventSchema,
402
- responseFunctionCallArgumentsDeltaEventSchema,
403
- responseFunctionCallArgumentsDoneEventSchema,
404
- responseOutputItemAddedEventSchema,
405
- responseOutputItemDoneEventSchema,
406
- responseTextDeltaEventSchema,
407
- responseTextDoneEventSchema,
408
- sessionCreatedEventSchema,
409
- sessionUpdatedEventSchema,
410
- transcriptionSessionUpdatedEventSchema,
381
+ exports.realtimeServerEventSchema = zod_1.z.discriminatedUnion('type', [
382
+ exports.conversationCreatedEventSchema,
383
+ exports.conversationItemCreatedEventSchema,
384
+ exports.conversationItemDeletedEventSchema,
385
+ exports.conversationItemInputAudioTranscriptionCompletedEventSchema,
386
+ exports.conversationItemInputAudioTranscriptionDeltaEventSchema,
387
+ exports.conversationItemInputAudioTranscriptionFailedEventSchema,
388
+ exports.conversationItemRetrievedEventSchema,
389
+ exports.conversationItemTruncatedEventSchema,
390
+ exports.errorEventSchema,
391
+ exports.inputAudioBufferClearedEventSchema,
392
+ exports.inputAudioBufferCommittedEventSchema,
393
+ exports.inputAudioBufferSpeechStartedEventSchema,
394
+ exports.inputAudioBufferSpeechStoppedEventSchema,
395
+ exports.outputAudioBufferStartedEventSchema,
396
+ exports.outputAudioBufferStoppedEventSchema,
397
+ exports.outputAudioBufferClearedEventSchema,
398
+ exports.rateLimitsUpdatedEventSchema,
399
+ exports.responseAudioDeltaEventSchema,
400
+ exports.responseAudioDoneEventSchema,
401
+ exports.responseAudioTranscriptDeltaEventSchema,
402
+ exports.responseAudioTranscriptDoneEventSchema,
403
+ exports.responseContentPartAddedEventSchema,
404
+ exports.responseContentPartDoneEventSchema,
405
+ exports.responseCreatedEventSchema,
406
+ exports.responseDoneEventSchema,
407
+ exports.responseFunctionCallArgumentsDeltaEventSchema,
408
+ exports.responseFunctionCallArgumentsDoneEventSchema,
409
+ exports.responseOutputItemAddedEventSchema,
410
+ exports.responseOutputItemDoneEventSchema,
411
+ exports.responseTextDeltaEventSchema,
412
+ exports.responseTextDoneEventSchema,
413
+ exports.sessionCreatedEventSchema,
414
+ exports.sessionUpdatedEventSchema,
415
+ exports.transcriptionSessionUpdatedEventSchema,
411
416
  ]);
412
- export const realtimeClientEventSchema = z.discriminatedUnion('type', [
413
- conversationItemCreateEventSchema,
414
- conversationItemDeleteEventSchema,
415
- conversationItemRetrieveEventSchema,
416
- conversationItemTruncateEventSchema,
417
- inputAudioBufferAppendEventSchema,
418
- inputAudioBufferClearEventSchema,
419
- inputAudioBufferCommitEventSchema,
420
- responseCancelEventSchema,
421
- responseCreateEventSchema,
422
- sessionUpdateEventSchema,
423
- transcriptionSessionUpdateEventSchema,
417
+ exports.realtimeClientEventSchema = zod_1.z.discriminatedUnion('type', [
418
+ exports.conversationItemCreateEventSchema,
419
+ exports.conversationItemDeleteEventSchema,
420
+ exports.conversationItemRetrieveEventSchema,
421
+ exports.conversationItemTruncateEventSchema,
422
+ exports.inputAudioBufferAppendEventSchema,
423
+ exports.inputAudioBufferClearEventSchema,
424
+ exports.inputAudioBufferCommitEventSchema,
425
+ exports.responseCancelEventSchema,
426
+ exports.responseCreateEventSchema,
427
+ exports.sessionUpdateEventSchema,
428
+ exports.transcriptionSessionUpdateEventSchema,
424
429
  ]);
425
430
  /**
426
431
  * Parses a realtime event from the server. If the event is unknown to the client, it will be treated as a generic event.
427
432
  * @param event - The event to parse.
428
433
  * @returns The parsed event or null if the event is unknown to the client.
429
434
  */
430
- export function parseRealtimeEvent(event) {
435
+ function parseRealtimeEvent(event) {
431
436
  const raw = JSON.parse(event.data.toString());
432
- const parsed = realtimeServerEventSchema.safeParse(raw);
437
+ const parsed = exports.realtimeServerEventSchema.safeParse(raw);
433
438
  if (!parsed.success) {
434
- const genericParsed = genericEventSchema.safeParse(raw);
439
+ const genericParsed = exports.genericEventSchema.safeParse(raw);
435
440
  if (genericParsed.success) {
436
441
  return { data: genericParsed.data, isGeneric: true };
437
442
  }