@openai/agents-realtime 0.8.2 → 0.8.4
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/bundle/openai-realtime-agents.mjs +3671 -3639
- package/dist/bundle/openai-realtime-agents.umd.js +21 -21
- package/dist/metadata.js +2 -2
- package/dist/metadata.mjs +2 -2
- package/dist/openaiRealtimeSip.d.ts +1 -0
- package/dist/openaiRealtimeSip.js +28 -1
- package/dist/openaiRealtimeSip.js.map +1 -1
- package/dist/openaiRealtimeSip.mjs +28 -1
- package/dist/openaiRealtimeSip.mjs.map +1 -1
- package/package.json +3 -3
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.8.
|
|
7
|
+
"version": "0.8.4",
|
|
8
8
|
"versions": {
|
|
9
|
-
"@openai/agents-realtime": "0.8.
|
|
9
|
+
"@openai/agents-realtime": "0.8.4",
|
|
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.8.
|
|
4
|
+
"version": "0.8.4",
|
|
5
5
|
"versions": {
|
|
6
|
-
"@openai/agents-realtime": "0.8.
|
|
6
|
+
"@openai/agents-realtime": "0.8.4",
|
|
7
7
|
"@openai/agents-core": "workspace:*"
|
|
8
8
|
}
|
|
9
9
|
};
|
|
@@ -4,6 +4,20 @@ exports.OpenAIRealtimeSIP = void 0;
|
|
|
4
4
|
const agents_core_1 = require("@openai/agents-core");
|
|
5
5
|
const openaiRealtimeWebsocket_1 = require("./openaiRealtimeWebsocket.js");
|
|
6
6
|
const realtimeSession_1 = require("./realtimeSession.js");
|
|
7
|
+
const SIP_UNSUPPORTED_TURN_DETECTION_FIELDS = [
|
|
8
|
+
['threshold', 'threshold'],
|
|
9
|
+
['prefix_padding_ms', 'prefixPaddingMs/prefix_padding_ms'],
|
|
10
|
+
['silence_duration_ms', 'silenceDurationMs/silence_duration_ms'],
|
|
11
|
+
];
|
|
12
|
+
function formatFieldList(fields) {
|
|
13
|
+
if (fields.length <= 1) {
|
|
14
|
+
return fields[0] ?? '';
|
|
15
|
+
}
|
|
16
|
+
if (fields.length === 2) {
|
|
17
|
+
return `${fields[0]} and ${fields[1]}`;
|
|
18
|
+
}
|
|
19
|
+
return `${fields.slice(0, -1).join(', ')}, and ${fields.at(-1)}`;
|
|
20
|
+
}
|
|
7
21
|
/**
|
|
8
22
|
* Transport layer that connects to an existing SIP-initiated Realtime call via call ID.
|
|
9
23
|
*/
|
|
@@ -27,7 +41,9 @@ class OpenAIRealtimeSIP extends openaiRealtimeWebsocket_1.OpenAIRealtimeWebSocke
|
|
|
27
41
|
static async buildInitialConfig(agent, options = {}, overrides = {}) {
|
|
28
42
|
const sessionConfig = await realtimeSession_1.RealtimeSession.computeInitialSessionConfig(agent, options, overrides);
|
|
29
43
|
const transport = new OpenAIRealtimeSIP();
|
|
30
|
-
|
|
44
|
+
const payload = transport.buildSessionPayload(sessionConfig);
|
|
45
|
+
OpenAIRealtimeSIP.assertSupportedInitialConfigPayload(payload);
|
|
46
|
+
return payload;
|
|
31
47
|
}
|
|
32
48
|
sendAudio(_audio, _options = {}) {
|
|
33
49
|
// SIP integrations stream audio to OpenAI directly through the telephony provider, so the
|
|
@@ -40,6 +56,17 @@ class OpenAIRealtimeSIP extends openaiRealtimeWebsocket_1.OpenAIRealtimeWebSocke
|
|
|
40
56
|
}
|
|
41
57
|
await super.connect(options);
|
|
42
58
|
}
|
|
59
|
+
static assertSupportedInitialConfigPayload(payload) {
|
|
60
|
+
const turnDetection = payload.audio?.input?.turn_detection;
|
|
61
|
+
if (!turnDetection || typeof turnDetection !== 'object') {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const unsupportedFields = SIP_UNSUPPORTED_TURN_DETECTION_FIELDS.flatMap(([key, label]) => typeof turnDetection[key] === 'undefined' ? [] : [label]);
|
|
65
|
+
if (unsupportedFields.length === 0) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
throw new agents_core_1.UserError(`OpenAIRealtimeSIP.buildInitialConfig() does not support SIP turn-detection fields ${formatFieldList(unsupportedFields)}. The Realtime Calls API rejects these session.audio.input.turn_detection properties for SIP sessions, so remove them before accepting the call.`);
|
|
69
|
+
}
|
|
43
70
|
}
|
|
44
71
|
exports.OpenAIRealtimeSIP = OpenAIRealtimeSIP;
|
|
45
72
|
//# sourceMappingURL=openaiRealtimeSip.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openaiRealtimeSip.js","sourceRoot":"","sources":["../src/openaiRealtimeSip.ts"],"names":[],"mappings":";;;AAAA,qDAAgD;AAEhD,0EAGmC;AAGnC,0DAI2B;AAG3B;;GAEG;AACH,MAAa,iBAAkB,SAAQ,iDAAuB;IAC5D,YAAY,UAA0C,EAAE;QACtD,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAC7B,KAEoD,EACpD,UAAyD,EAAE,EAC3D,YAA4C,EAAE;QAE9C,MAAM,aAAa,GAAG,MAAM,iCAAe,CAAC,2BAA2B,CACrE,KAAK,EACL,OAAO,EACP,SAAS,CACV,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"openaiRealtimeSip.js","sourceRoot":"","sources":["../src/openaiRealtimeSip.ts"],"names":[],"mappings":";;;AAAA,qDAAgD;AAEhD,0EAGmC;AAGnC,0DAI2B;AAG3B,MAAM,qCAAqC,GAAG;IAC5C,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,mBAAmB,EAAE,mCAAmC,CAAC;IAC1D,CAAC,qBAAqB,EAAE,uCAAuC,CAAC;CACxD,CAAC;AAEX,SAAS,eAAe,CAAC,MAAgB;IACvC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,CAAC;IAED,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,MAAa,iBAAkB,SAAQ,iDAAuB;IAC5D,YAAY,UAA0C,EAAE;QACtD,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAC7B,KAEoD,EACpD,UAAyD,EAAE,EAC3D,YAA4C,EAAE;QAE9C,MAAM,aAAa,GAAG,MAAM,iCAAe,CAAC,2BAA2B,CACrE,KAAK,EACL,OAAO,EACP,SAAS,CACV,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;QAC7D,iBAAiB,CAAC,mCAAmC,CAAC,OAAO,CAAC,CAAC;QAC/D,OAAO,OAAO,CAAC;IACjB,CAAC;IAEQ,SAAS,CAChB,MAAmB,EACnB,WAAiC,EAAE;QAEnC,0FAA0F;QAC1F,gFAAgF;QAChF,MAAM,IAAI,KAAK,CACb,6FAA6F,CAC9F,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA6C;QACzD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,uBAAS,CACjB,6DAA6D,CAC9D,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAEO,MAAM,CAAC,mCAAmC,CAChD,OAA+B;QAE/B,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,cAG/B,CAAC;QAEd,IAAI,CAAC,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACxD,OAAO;QACT,CAAC;QAED,MAAM,iBAAiB,GAAG,qCAAqC,CAAC,OAAO,CACrE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACf,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAC3D,CAAC;QAEF,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,uBAAS,CACjB,qFAAqF,eAAe,CAAC,iBAAiB,CAAC,kJAAkJ,CAC1Q,CAAC;IACJ,CAAC;CACF;AAlFD,8CAkFC"}
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
import { UserError } from '@openai/agents-core';
|
|
2
2
|
import { OpenAIRealtimeWebSocket, } from "./openaiRealtimeWebsocket.mjs";
|
|
3
3
|
import { RealtimeSession, } from "./realtimeSession.mjs";
|
|
4
|
+
const SIP_UNSUPPORTED_TURN_DETECTION_FIELDS = [
|
|
5
|
+
['threshold', 'threshold'],
|
|
6
|
+
['prefix_padding_ms', 'prefixPaddingMs/prefix_padding_ms'],
|
|
7
|
+
['silence_duration_ms', 'silenceDurationMs/silence_duration_ms'],
|
|
8
|
+
];
|
|
9
|
+
function formatFieldList(fields) {
|
|
10
|
+
if (fields.length <= 1) {
|
|
11
|
+
return fields[0] ?? '';
|
|
12
|
+
}
|
|
13
|
+
if (fields.length === 2) {
|
|
14
|
+
return `${fields[0]} and ${fields[1]}`;
|
|
15
|
+
}
|
|
16
|
+
return `${fields.slice(0, -1).join(', ')}, and ${fields.at(-1)}`;
|
|
17
|
+
}
|
|
4
18
|
/**
|
|
5
19
|
* Transport layer that connects to an existing SIP-initiated Realtime call via call ID.
|
|
6
20
|
*/
|
|
@@ -24,7 +38,9 @@ export class OpenAIRealtimeSIP extends OpenAIRealtimeWebSocket {
|
|
|
24
38
|
static async buildInitialConfig(agent, options = {}, overrides = {}) {
|
|
25
39
|
const sessionConfig = await RealtimeSession.computeInitialSessionConfig(agent, options, overrides);
|
|
26
40
|
const transport = new OpenAIRealtimeSIP();
|
|
27
|
-
|
|
41
|
+
const payload = transport.buildSessionPayload(sessionConfig);
|
|
42
|
+
OpenAIRealtimeSIP.assertSupportedInitialConfigPayload(payload);
|
|
43
|
+
return payload;
|
|
28
44
|
}
|
|
29
45
|
sendAudio(_audio, _options = {}) {
|
|
30
46
|
// SIP integrations stream audio to OpenAI directly through the telephony provider, so the
|
|
@@ -37,5 +53,16 @@ export class OpenAIRealtimeSIP extends OpenAIRealtimeWebSocket {
|
|
|
37
53
|
}
|
|
38
54
|
await super.connect(options);
|
|
39
55
|
}
|
|
56
|
+
static assertSupportedInitialConfigPayload(payload) {
|
|
57
|
+
const turnDetection = payload.audio?.input?.turn_detection;
|
|
58
|
+
if (!turnDetection || typeof turnDetection !== 'object') {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const unsupportedFields = SIP_UNSUPPORTED_TURN_DETECTION_FIELDS.flatMap(([key, label]) => typeof turnDetection[key] === 'undefined' ? [] : [label]);
|
|
62
|
+
if (unsupportedFields.length === 0) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
throw new UserError(`OpenAIRealtimeSIP.buildInitialConfig() does not support SIP turn-detection fields ${formatFieldList(unsupportedFields)}. The Realtime Calls API rejects these session.audio.input.turn_detection properties for SIP sessions, so remove them before accepting the call.`);
|
|
66
|
+
}
|
|
40
67
|
}
|
|
41
68
|
//# sourceMappingURL=openaiRealtimeSip.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openaiRealtimeSip.mjs","sourceRoot":"","sources":["../src/openaiRealtimeSip.ts"],"names":[],"mappings":"OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB;OAExC,EACL,uBAAuB,GAExB;OAGM,EACL,eAAe,GAGhB;AAGD;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,uBAAuB;IAC5D,YAAY,UAA0C,EAAE;QACtD,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAC7B,KAEoD,EACpD,UAAyD,EAAE,EAC3D,YAA4C,EAAE;QAE9C,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,2BAA2B,CACrE,KAAK,EACL,OAAO,EACP,SAAS,CACV,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"openaiRealtimeSip.mjs","sourceRoot":"","sources":["../src/openaiRealtimeSip.ts"],"names":[],"mappings":"OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB;OAExC,EACL,uBAAuB,GAExB;OAGM,EACL,eAAe,GAGhB;AAGD,MAAM,qCAAqC,GAAG;IAC5C,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,mBAAmB,EAAE,mCAAmC,CAAC;IAC1D,CAAC,qBAAqB,EAAE,uCAAuC,CAAC;CACxD,CAAC;AAEX,SAAS,eAAe,CAAC,MAAgB;IACvC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,CAAC;IAED,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,uBAAuB;IAC5D,YAAY,UAA0C,EAAE;QACtD,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAC7B,KAEoD,EACpD,UAAyD,EAAE,EAC3D,YAA4C,EAAE;QAE9C,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,2BAA2B,CACrE,KAAK,EACL,OAAO,EACP,SAAS,CACV,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;QAC7D,iBAAiB,CAAC,mCAAmC,CAAC,OAAO,CAAC,CAAC;QAC/D,OAAO,OAAO,CAAC;IACjB,CAAC;IAEQ,SAAS,CAChB,MAAmB,EACnB,WAAiC,EAAE;QAEnC,0FAA0F;QAC1F,gFAAgF;QAChF,MAAM,IAAI,KAAK,CACb,6FAA6F,CAC9F,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA6C;QACzD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,SAAS,CACjB,6DAA6D,CAC9D,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAEO,MAAM,CAAC,mCAAmC,CAChD,OAA+B;QAE/B,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,cAG/B,CAAC;QAEd,IAAI,CAAC,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACxD,OAAO;QACT,CAAC;QAED,MAAM,iBAAiB,GAAG,qCAAqC,CAAC,OAAO,CACrE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACf,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAC3D,CAAC;QAEF,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,SAAS,CACjB,qFAAqF,eAAe,CAAC,iBAAiB,CAAC,kJAAkJ,CAC1Q,CAAC;IACJ,CAAC;CACF"}
|
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.8.
|
|
5
|
+
"version": "0.8.4",
|
|
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.8.
|
|
54
|
+
"@openai/agents-core": "0.8.4"
|
|
55
55
|
},
|
|
56
56
|
"keywords": [
|
|
57
57
|
"openai",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
67
|
"@types/debug": "^4.1.12",
|
|
68
|
-
"vite": "^6.4.
|
|
68
|
+
"vite": "^6.4.2",
|
|
69
69
|
"zod": "^4.0.0"
|
|
70
70
|
},
|
|
71
71
|
"files": [
|