@openai/agents-realtime 0.4.7 → 0.4.8

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.
package/dist/metadata.js CHANGED
@@ -4,9 +4,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.METADATA = void 0;
5
5
  exports.METADATA = {
6
6
  "name": "@openai/agents-realtime",
7
- "version": "0.4.7",
7
+ "version": "0.4.8",
8
8
  "versions": {
9
- "@openai/agents-realtime": "0.4.7",
9
+ "@openai/agents-realtime": "0.4.8",
10
10
  "@openai/agents-core": "workspace:*"
11
11
  }
12
12
  };
package/dist/metadata.mjs CHANGED
@@ -1,9 +1,9 @@
1
1
  // This file is automatically generated
2
2
  export const METADATA = {
3
3
  "name": "@openai/agents-realtime",
4
- "version": "0.4.7",
4
+ "version": "0.4.8",
5
5
  "versions": {
6
- "@openai/agents-realtime": "0.4.7",
6
+ "@openai/agents-realtime": "0.4.8",
7
7
  "@openai/agents-core": "workspace:*"
8
8
  }
9
9
  };
@@ -31,6 +31,8 @@ class OpenAIRealtimeWebRTC extends openaiRealtimeBase_1.OpenAIRealtimeBase {
31
31
  #useInsecureApiKey;
32
32
  #ongoingResponse = false;
33
33
  #muted = false;
34
+ #connectPromise;
35
+ #connectAttemptId = 0;
34
36
  constructor(options = {}) {
35
37
  if (typeof RTCPeerConnection === 'undefined') {
36
38
  throw new Error('WebRTC is not supported in this environment');
@@ -79,7 +81,11 @@ class OpenAIRealtimeWebRTC extends openaiRealtimeBase_1.OpenAIRealtimeBase {
79
81
  return;
80
82
  }
81
83
  if (this.#state.status === 'connecting') {
82
- logger_1.default.warn('Realtime connection already in progress. Please await original promise');
84
+ if (this.#connectPromise) {
85
+ return this.#connectPromise;
86
+ }
87
+ logger_1.default.warn('Realtime connection already in progress but no promise found');
88
+ return;
83
89
  }
84
90
  const model = options.model ?? this.currentModel;
85
91
  this.currentModel = model;
@@ -89,8 +95,9 @@ class OpenAIRealtimeWebRTC extends openaiRealtimeBase_1.OpenAIRealtimeBase {
89
95
  if ((0, _shims_1.isBrowserEnvironment)() && !this.#useInsecureApiKey && !isClientKey) {
90
96
  throw new agents_core_1.UserError('Using the WebRTC connection in a browser environment requires an ephemeral client key. If you need to use a regular API key, use the WebSocket transport or set the `useInsecureApiKey` option to true.');
91
97
  }
98
+ const attemptId = ++this.#connectAttemptId;
92
99
  // eslint-disable-next-line no-async-promise-executor
93
- return new Promise(async (resolve, reject) => {
100
+ this.#connectPromise = new Promise(async (resolve, reject) => {
94
101
  try {
95
102
  const userSessionConfig = {
96
103
  ...(options.initialSessionConfig || {}),
@@ -123,46 +130,98 @@ class OpenAIRealtimeWebRTC extends openaiRealtimeBase_1.OpenAIRealtimeBase {
123
130
  this.emit('connection_change', this.#state.status);
124
131
  dataChannel.addEventListener('open', () => {
125
132
  this.#state = {
126
- status: 'connected',
133
+ status: 'connecting',
127
134
  peerConnection,
128
135
  dataChannel,
129
136
  callId,
130
137
  };
131
- // Sending the session config again here once the channel is connected to ensure
132
- // that the session config is sent to the server before the first response is received
133
- // Setting it on connection should work but the config is not being validated on the
134
- // server. This triggers a validation error if the config is not valid.
138
+ // Wait for session.updated acknowledgement before resolving connect().
139
+ // Without this, audio can flow to the server before config (instructions,
140
+ // tools, modalities) is applied, causing the server to use defaults.
141
+ let resolved = false;
142
+ // eslint-disable-next-line prefer-const -- declared before finish() to avoid TDZ if a callback fires synchronously
143
+ let timeoutId;
144
+ const finish = () => {
145
+ if (resolved)
146
+ return;
147
+ resolved = true;
148
+ if (timeoutId !== undefined)
149
+ clearTimeout(timeoutId);
150
+ dataChannel.removeEventListener('message', onConfigAck);
151
+ dataChannel.removeEventListener('close', onClose);
152
+ // Reject if the transport was closed/errored while waiting,
153
+ // the dataChannel is no longer open, or a different connection
154
+ // attempt is now active (stale timeout from an earlier connect).
155
+ if (this.#state.status !== 'connecting' ||
156
+ this.#state.dataChannel !== dataChannel ||
157
+ dataChannel.readyState !== 'open') {
158
+ // Transition to disconnected if this attempt is still the
159
+ // active one so that callers can retry connect() without
160
+ // needing to call close() first.
161
+ if (this.#state.dataChannel === dataChannel) {
162
+ this.close();
163
+ }
164
+ reject(new Error('Connection closed before session config was acknowledged'));
165
+ return;
166
+ }
167
+ this.#state = {
168
+ status: 'connected',
169
+ peerConnection,
170
+ dataChannel,
171
+ callId,
172
+ };
173
+ this.emit('connection_change', this.#state.status);
174
+ this._onOpen();
175
+ resolve();
176
+ };
177
+ const onConfigAck = (ackEvent) => {
178
+ const parsed = JSON.parse(ackEvent.data);
179
+ if (parsed.type === 'session.updated') {
180
+ finish();
181
+ }
182
+ };
183
+ const onClose = () => {
184
+ finish();
185
+ };
186
+ timeoutId = setTimeout(() => {
187
+ if (!resolved) {
188
+ logger_1.default.warn('Timed out waiting for session.updated ack — resolving connect() anyway');
189
+ finish();
190
+ }
191
+ }, 5000);
192
+ dataChannel.addEventListener('message', onConfigAck);
193
+ dataChannel.addEventListener('close', onClose);
194
+ // Register the general message handler AFTER onConfigAck so that
195
+ // finish() resolves connect() before _onMessage emits the
196
+ // session.updated event to external listeners.
197
+ dataChannel.addEventListener('message', (event) => {
198
+ this._onMessage(event);
199
+ const { data: parsed, isGeneric } = (0, openaiRealtimeEvents_1.parseRealtimeEvent)(event);
200
+ if (!parsed || isGeneric) {
201
+ return;
202
+ }
203
+ if (parsed.type === 'response.created') {
204
+ this.#ongoingResponse = true;
205
+ }
206
+ else if (parsed.type === 'response.done') {
207
+ this.#ongoingResponse = false;
208
+ }
209
+ if (parsed.type === 'session.created') {
210
+ this._tracingConfig = parsed.session.tracing;
211
+ // Trying to turn on tracing after the session is created
212
+ const tracingConfig = typeof userSessionConfig.tracing === 'undefined'
213
+ ? 'auto'
214
+ : userSessionConfig.tracing;
215
+ this._updateTracingConfig(tracingConfig);
216
+ }
217
+ });
135
218
  this.updateSessionConfig(userSessionConfig);
136
- this.emit('connection_change', this.#state.status);
137
- this._onOpen();
138
- resolve();
139
219
  });
140
220
  dataChannel.addEventListener('error', (event) => {
141
221
  this.close();
142
222
  this._onError(event);
143
223
  reject(event);
144
224
  });
145
- dataChannel.addEventListener('message', (event) => {
146
- this._onMessage(event);
147
- const { data: parsed, isGeneric } = (0, openaiRealtimeEvents_1.parseRealtimeEvent)(event);
148
- if (!parsed || isGeneric) {
149
- return;
150
- }
151
- if (parsed.type === 'response.created') {
152
- this.#ongoingResponse = true;
153
- }
154
- else if (parsed.type === 'response.done') {
155
- this.#ongoingResponse = false;
156
- }
157
- if (parsed.type === 'session.created') {
158
- this._tracingConfig = parsed.session.tracing;
159
- // Trying to turn on tracing after the session is created
160
- const tracingConfig = typeof userSessionConfig.tracing === 'undefined'
161
- ? 'auto'
162
- : userSessionConfig.tracing;
163
- this._updateTracingConfig(tracingConfig);
164
- }
165
- });
166
225
  // set up audio playback
167
226
  const audioElement = this.options.audioElement ?? document.createElement('audio');
168
227
  audioElement.autoplay = true;
@@ -212,7 +271,14 @@ class OpenAIRealtimeWebRTC extends openaiRealtimeBase_1.OpenAIRealtimeBase {
212
271
  this._onError(error);
213
272
  reject(error);
214
273
  }
274
+ }).finally(() => {
275
+ // Only clear if this is still the active connection attempt.
276
+ // A newer connect() may have already replaced #connectPromise.
277
+ if (this.#connectAttemptId === attemptId) {
278
+ this.#connectPromise = undefined;
279
+ }
215
280
  });
281
+ return this.#connectPromise;
216
282
  }
217
283
  /**
218
284
  * Send an event to the Realtime API. This will stringify the event and send it directly to the
@@ -1 +1 @@
1
- {"version":3,"file":"openaiRealtimeWebRtc.js","sourceRoot":"","sources":["../src/openaiRealtimeWebRtc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openaiRealtimeWebRtc.js","sourceRoot":"","sources":["../src/openaiRealtimeWebRtc.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,8 @@ export class OpenAIRealtimeWebRTC extends OpenAIRealtimeBase {
25
25
  #useInsecureApiKey;
26
26
  #ongoingResponse = false;
27
27
  #muted = false;
28
+ #connectPromise;
29
+ #connectAttemptId = 0;
28
30
  constructor(options = {}) {
29
31
  if (typeof RTCPeerConnection === 'undefined') {
30
32
  throw new Error('WebRTC is not supported in this environment');
@@ -73,7 +75,11 @@ export class OpenAIRealtimeWebRTC extends OpenAIRealtimeBase {
73
75
  return;
74
76
  }
75
77
  if (this.#state.status === 'connecting') {
76
- logger.warn('Realtime connection already in progress. Please await original promise');
78
+ if (this.#connectPromise) {
79
+ return this.#connectPromise;
80
+ }
81
+ logger.warn('Realtime connection already in progress but no promise found');
82
+ return;
77
83
  }
78
84
  const model = options.model ?? this.currentModel;
79
85
  this.currentModel = model;
@@ -83,8 +89,9 @@ export class OpenAIRealtimeWebRTC extends OpenAIRealtimeBase {
83
89
  if (isBrowserEnvironment() && !this.#useInsecureApiKey && !isClientKey) {
84
90
  throw new UserError('Using the WebRTC connection in a browser environment requires an ephemeral client key. If you need to use a regular API key, use the WebSocket transport or set the `useInsecureApiKey` option to true.');
85
91
  }
92
+ const attemptId = ++this.#connectAttemptId;
86
93
  // eslint-disable-next-line no-async-promise-executor
87
- return new Promise(async (resolve, reject) => {
94
+ this.#connectPromise = new Promise(async (resolve, reject) => {
88
95
  try {
89
96
  const userSessionConfig = {
90
97
  ...(options.initialSessionConfig || {}),
@@ -117,46 +124,98 @@ export class OpenAIRealtimeWebRTC extends OpenAIRealtimeBase {
117
124
  this.emit('connection_change', this.#state.status);
118
125
  dataChannel.addEventListener('open', () => {
119
126
  this.#state = {
120
- status: 'connected',
127
+ status: 'connecting',
121
128
  peerConnection,
122
129
  dataChannel,
123
130
  callId,
124
131
  };
125
- // Sending the session config again here once the channel is connected to ensure
126
- // that the session config is sent to the server before the first response is received
127
- // Setting it on connection should work but the config is not being validated on the
128
- // server. This triggers a validation error if the config is not valid.
132
+ // Wait for session.updated acknowledgement before resolving connect().
133
+ // Without this, audio can flow to the server before config (instructions,
134
+ // tools, modalities) is applied, causing the server to use defaults.
135
+ let resolved = false;
136
+ // eslint-disable-next-line prefer-const -- declared before finish() to avoid TDZ if a callback fires synchronously
137
+ let timeoutId;
138
+ const finish = () => {
139
+ if (resolved)
140
+ return;
141
+ resolved = true;
142
+ if (timeoutId !== undefined)
143
+ clearTimeout(timeoutId);
144
+ dataChannel.removeEventListener('message', onConfigAck);
145
+ dataChannel.removeEventListener('close', onClose);
146
+ // Reject if the transport was closed/errored while waiting,
147
+ // the dataChannel is no longer open, or a different connection
148
+ // attempt is now active (stale timeout from an earlier connect).
149
+ if (this.#state.status !== 'connecting' ||
150
+ this.#state.dataChannel !== dataChannel ||
151
+ dataChannel.readyState !== 'open') {
152
+ // Transition to disconnected if this attempt is still the
153
+ // active one so that callers can retry connect() without
154
+ // needing to call close() first.
155
+ if (this.#state.dataChannel === dataChannel) {
156
+ this.close();
157
+ }
158
+ reject(new Error('Connection closed before session config was acknowledged'));
159
+ return;
160
+ }
161
+ this.#state = {
162
+ status: 'connected',
163
+ peerConnection,
164
+ dataChannel,
165
+ callId,
166
+ };
167
+ this.emit('connection_change', this.#state.status);
168
+ this._onOpen();
169
+ resolve();
170
+ };
171
+ const onConfigAck = (ackEvent) => {
172
+ const parsed = JSON.parse(ackEvent.data);
173
+ if (parsed.type === 'session.updated') {
174
+ finish();
175
+ }
176
+ };
177
+ const onClose = () => {
178
+ finish();
179
+ };
180
+ timeoutId = setTimeout(() => {
181
+ if (!resolved) {
182
+ logger.warn('Timed out waiting for session.updated ack — resolving connect() anyway');
183
+ finish();
184
+ }
185
+ }, 5000);
186
+ dataChannel.addEventListener('message', onConfigAck);
187
+ dataChannel.addEventListener('close', onClose);
188
+ // Register the general message handler AFTER onConfigAck so that
189
+ // finish() resolves connect() before _onMessage emits the
190
+ // session.updated event to external listeners.
191
+ dataChannel.addEventListener('message', (event) => {
192
+ this._onMessage(event);
193
+ const { data: parsed, isGeneric } = parseRealtimeEvent(event);
194
+ if (!parsed || isGeneric) {
195
+ return;
196
+ }
197
+ if (parsed.type === 'response.created') {
198
+ this.#ongoingResponse = true;
199
+ }
200
+ else if (parsed.type === 'response.done') {
201
+ this.#ongoingResponse = false;
202
+ }
203
+ if (parsed.type === 'session.created') {
204
+ this._tracingConfig = parsed.session.tracing;
205
+ // Trying to turn on tracing after the session is created
206
+ const tracingConfig = typeof userSessionConfig.tracing === 'undefined'
207
+ ? 'auto'
208
+ : userSessionConfig.tracing;
209
+ this._updateTracingConfig(tracingConfig);
210
+ }
211
+ });
129
212
  this.updateSessionConfig(userSessionConfig);
130
- this.emit('connection_change', this.#state.status);
131
- this._onOpen();
132
- resolve();
133
213
  });
134
214
  dataChannel.addEventListener('error', (event) => {
135
215
  this.close();
136
216
  this._onError(event);
137
217
  reject(event);
138
218
  });
139
- dataChannel.addEventListener('message', (event) => {
140
- this._onMessage(event);
141
- const { data: parsed, isGeneric } = parseRealtimeEvent(event);
142
- if (!parsed || isGeneric) {
143
- return;
144
- }
145
- if (parsed.type === 'response.created') {
146
- this.#ongoingResponse = true;
147
- }
148
- else if (parsed.type === 'response.done') {
149
- this.#ongoingResponse = false;
150
- }
151
- if (parsed.type === 'session.created') {
152
- this._tracingConfig = parsed.session.tracing;
153
- // Trying to turn on tracing after the session is created
154
- const tracingConfig = typeof userSessionConfig.tracing === 'undefined'
155
- ? 'auto'
156
- : userSessionConfig.tracing;
157
- this._updateTracingConfig(tracingConfig);
158
- }
159
- });
160
219
  // set up audio playback
161
220
  const audioElement = this.options.audioElement ?? document.createElement('audio');
162
221
  audioElement.autoplay = true;
@@ -206,7 +265,14 @@ export class OpenAIRealtimeWebRTC extends OpenAIRealtimeBase {
206
265
  this._onError(error);
207
266
  reject(error);
208
267
  }
268
+ }).finally(() => {
269
+ // Only clear if this is still the active connection attempt.
270
+ // A newer connect() may have already replaced #connectPromise.
271
+ if (this.#connectAttemptId === attemptId) {
272
+ this.#connectPromise = undefined;
273
+ }
209
274
  });
275
+ return this.#connectPromise;
210
276
  }
211
277
  /**
212
278
  * Send an event to the Realtime API. This will stringify the event and send it directly to the
@@ -1 +1 @@
1
- {"version":3,"file":"openaiRealtimeWebRtc.mjs","sourceRoot":"","sources":["../src/openaiRealtimeWebRtc.ts"],"names":[],"mappings":"AAAA,2BAA2B;OAEpB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B;OAM1D,EAAE,SAAS,EAAE,MAAM,qBAAqB;OACxC,MAAM;OAEN,EACL,kBAAkB,GAEnB;OACM,EAAE,kBAAkB,EAAE;OACtB,EAAE,OAAO,EAAE;AA4DlB;;;;;;;GAOG;AACH,MAAM,OAAO,oBACX,SAAQ,kBAAkB;IAcG;IAX7B,IAAI,CAAS;IACb,MAAM,GAAgB;QACpB,MAAM,EAAE,cAAc;QACtB,cAAc,EAAE,SAAS;QACzB,WAAW,EAAE,SAAS;QACtB,MAAM,EAAE,SAAS;KAClB,CAAC;IACF,kBAAkB,CAAU;IAC5B,gBAAgB,GAAY,KAAK,CAAC;IAClC,MAAM,GAAG,KAAK,CAAC;IAEf,YAA6B,UAAuC,EAAE;QACpE,IAAI,OAAO,iBAAiB,KAAK,WAAW,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,CAAC;QAJY,YAAO,GAAP,OAAO,CAAkC;QAKpE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO,IAAI,0CAA0C,CAAC;QAC1E,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,IAAI,KAAK,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,OAAO,CAAC,OAA6C;QACzD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CACT,wEAAwE,CACzE,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;QACjD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAE9C,MAAM,WAAW,GAAG,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC3E,IAAI,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,WAAW,EAAE,CAAC;YACvE,MAAM,IAAI,SAAS,CACjB,yMAAyM,CAC1M,CAAC;QACJ,CAAC;QAED,qDAAqD;QACrD,OAAO,IAAI,OAAO,CAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YACjD,IAAI,CAAC;gBACH,MAAM,iBAAiB,GAAmC;oBACxD,GAAG,CAAC,OAAO,CAAC,oBAAoB,IAAI,EAAE,CAAC;oBACvC,KAAK,EAAE,IAAI,CAAC,YAAY;iBACzB,CAAC;gBAEF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;gBAEvC,IAAI,cAAc,GAAsB,IAAI,iBAAiB,EAAE,CAAC;gBAChE,MAAM,WAAW,GAAG,cAAc,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;gBACnE,IAAI,MAAM,GAAuB,SAAS,CAAC;gBAE3C,MAAM,4BAA4B,GAAG,CACnC,UAA6B,EAC7B,EAAE;oBACF,UAAU,CAAC,uBAAuB,GAAG,GAAG,EAAE;wBACxC,QAAQ,UAAU,CAAC,eAAe,EAAE,CAAC;4BACnC,KAAK,cAAc,CAAC;4BACpB,KAAK,QAAQ,CAAC;4BACd,KAAK,QAAQ;gCACX,IAAI,CAAC,KAAK,EAAE,CAAC;gCACb,MAAM;4BACR,0FAA0F;4BAC1F,iFAAiF;wBACnF,CAAC;oBACH,CAAC,CAAC;gBACJ,CAAC,CAAC;gBACF,4BAA4B,CAAC,cAAc,CAAC,CAAC;gBAE7C,IAAI,CAAC,MAAM,GAAG;oBACZ,MAAM,EAAE,YAAY;oBACpB,cAAc;oBACd,WAAW;oBACX,MAAM;iBACP,CAAC;gBACF,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAEnD,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;oBACxC,IAAI,CAAC,MAAM,GAAG;wBACZ,MAAM,EAAE,WAAW;wBACnB,cAAc;wBACd,WAAW;wBACX,MAAM;qBACP,CAAC;oBACF,gFAAgF;oBAChF,sFAAsF;oBACtF,oFAAoF;oBACpF,uEAAuE;oBACvE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;oBAC5C,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACnD,IAAI,CAAC,OAAO,EAAE,CAAC;oBACf,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;gBAEH,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;oBAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;oBACb,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBACrB,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;gBAEH,WAAW,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;oBAChD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBACvB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;oBAC9D,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;wBACzB,OAAO;oBACT,CAAC;oBAED,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;wBACvC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;oBAC/B,CAAC;yBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;wBAC3C,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;oBAChC,CAAC;oBAED,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;wBACtC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;wBAC7C,yDAAyD;wBACzD,MAAM,aAAa,GACjB,OAAO,iBAAiB,CAAC,OAAO,KAAK,WAAW;4BAC9C,CAAC,CAAC,MAAM;4BACR,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC;wBAChC,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;oBAC3C,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,wBAAwB;gBACxB,MAAM,YAAY,GAChB,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC/D,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAC7B,cAAc,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;oBACjC,YAAY,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC5C,CAAC,CAAC;gBAEF,wBAAwB;gBACxB,MAAM,MAAM,GACV,IAAI,CAAC,OAAO,CAAC,WAAW;oBACxB,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC;wBACzC,KAAK,EAAE,IAAI;qBACZ,CAAC,CAAC,CAAC;gBACN,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEpD,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;oBACtC,MAAM,sBAAsB,GAAG,cAAc,CAAC;oBAC9C,cAAc;wBACZ,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;oBAC1D,IAAI,sBAAsB,KAAK,cAAc,EAAE,CAAC;wBAC9C,sBAAsB,CAAC,uBAAuB,GAAG,IAAI,CAAC;oBACxD,CAAC;oBACD,4BAA4B,CAAC,cAAc,CAAC,CAAC;oBAC7C,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;gBACnD,CAAC;gBAED,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,CAAC;gBACjD,MAAM,cAAc,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBAEhD,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;oBACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBAC5C,CAAC;gBAED,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE;oBAC7C,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,KAAK,CAAC,GAAG;oBACf,OAAO,EAAE;wBACP,cAAc,EAAE,iBAAiB;wBACjC,aAAa,EAAE,UAAU,MAAM,EAAE;wBACjC,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,CAAC;qBACtD;iBACF,CAAC,CAAC;gBAEH,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAChE,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEzC,MAAM,MAAM,GAA8B;oBACxC,IAAI,EAAE,QAAQ;oBACd,GAAG,EAAE,MAAM,WAAW,CAAC,IAAI,EAAE;iBAC9B,CAAC;gBAEF,MAAM,cAAc,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,KAA4B;QACpC,IACE,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW;YACxB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,KAAK,MAAM,EAC7C,CAAC;YACD,MAAM,IAAI,KAAK,CACb,6FAA6F,CAC9F,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,KAAc;QACjB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;YAClD,cAAc,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC7C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACjB,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC;gBAChC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEkB,oBAAoB;QACrC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAClC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;YAClD,cAAc,CAAC,uBAAuB,GAAG,IAAI,CAAC;YAC9C,cAAc,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC7C,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;YACH,cAAc,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;YAC1C,IAAI,CAAC,MAAM,GAAG;gBACZ,MAAM,EAAE,cAAc;gBACtB,cAAc,EAAE,SAAS;gBACzB,WAAW,EAAE,SAAS;gBACtB,MAAM,EAAE,SAAS;aAClB,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,iBAAiB;aACxB,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,SAAS,CAAC;YACb,IAAI,EAAE,2BAA2B;SAClC,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"openaiRealtimeWebRtc.mjs","sourceRoot":"","sources":["../src/openaiRealtimeWebRtc.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@openai/agents-realtime",
3
3
  "repository": "https://github.com/openai/openai-agents-js",
4
4
  "homepage": "https://openai.github.io/openai-agents-js/",
5
- "version": "0.4.7",
5
+ "version": "0.4.8",
6
6
  "description": "The OpenAI Agents SDK is a lightweight yet powerful framework for building multi-agent workflows. This package contains the logic for building realtime voice agents on the server or in the browser.",
7
7
  "author": "OpenAI <support@openai.com>",
8
8
  "main": "dist/index.js",
@@ -51,7 +51,7 @@
51
51
  "@types/ws": "^8.18.1",
52
52
  "debug": "^4.4.0",
53
53
  "ws": "^8.18.1",
54
- "@openai/agents-core": "0.4.7"
54
+ "@openai/agents-core": "0.4.8"
55
55
  },
56
56
  "keywords": [
57
57
  "openai",