@openai/agents-openai 0.4.15 → 0.5.0
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/defaults.d.ts +4 -0
- package/dist/defaults.js +15 -1
- package/dist/defaults.js.map +1 -1
- package/dist/defaults.mjs +11 -0
- package/dist/defaults.mjs.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -2
- package/dist/index.mjs.map +1 -1
- package/dist/metadata.js +2 -2
- package/dist/metadata.js.map +1 -1
- package/dist/metadata.mjs +2 -2
- package/dist/metadata.mjs.map +1 -1
- package/dist/openaiProvider.d.ts +7 -0
- package/dist/openaiProvider.js +84 -2
- package/dist/openaiProvider.js.map +1 -1
- package/dist/openaiProvider.mjs +86 -4
- package/dist/openaiProvider.mjs.map +1 -1
- package/dist/openaiResponsesModel.d.ts +28 -1
- package/dist/openaiResponsesModel.js +435 -33
- package/dist/openaiResponsesModel.js.map +1 -1
- package/dist/openaiResponsesModel.mjs +433 -32
- package/dist/openaiResponsesModel.mjs.map +1 -1
- package/dist/responsesTransportUtils.d.ts +29 -0
- package/dist/responsesTransportUtils.js +208 -0
- package/dist/responsesTransportUtils.js.map +1 -0
- package/dist/responsesTransportUtils.mjs +198 -0
- package/dist/responsesTransportUtils.mjs.map +1 -0
- package/dist/responsesWebSocketConnection.d.ts +22 -0
- package/dist/responsesWebSocketConnection.js +273 -0
- package/dist/responsesWebSocketConnection.js.map +1 -0
- package/dist/responsesWebSocketConnection.mjs +259 -0
- package/dist/responsesWebSocketConnection.mjs.map +1 -0
- package/dist/responsesWebSocketSession.d.ts +22 -0
- package/dist/responsesWebSocketSession.js +56 -0
- package/dist/responsesWebSocketSession.js.map +1 -0
- package/dist/responsesWebSocketSession.mjs +53 -0
- package/dist/responsesWebSocketSession.mjs.map +1 -0
- package/package.json +2 -2
package/dist/defaults.d.ts
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { OpenAI } from 'openai';
|
|
2
2
|
export declare const DEFAULT_OPENAI_API = "responses";
|
|
3
3
|
export declare const DEFAULT_OPENAI_MODEL = "gpt-4.1";
|
|
4
|
+
export declare const DEFAULT_OPENAI_RESPONSES_TRANSPORT = "http";
|
|
4
5
|
export declare function setTracingExportApiKey(key: string): void;
|
|
5
6
|
export declare function getTracingExportApiKey(): string | undefined;
|
|
6
7
|
export declare function shouldUseResponsesByDefault(): boolean;
|
|
8
|
+
export declare function shouldUseResponsesWebSocketByDefault(): boolean;
|
|
7
9
|
export declare function setOpenAIAPI(value: 'chat_completions' | 'responses'): void;
|
|
10
|
+
export declare function setOpenAIResponsesTransport(value: 'http' | 'websocket'): void;
|
|
8
11
|
export declare function setDefaultOpenAIClient(client: OpenAI): void;
|
|
9
12
|
export declare function getDefaultOpenAIClient(): OpenAI | undefined;
|
|
10
13
|
export declare function setDefaultOpenAIKey(key: string): void;
|
|
11
14
|
export declare function getDefaultOpenAIKey(): string | undefined;
|
|
15
|
+
export declare function getDefaultOpenAIWebSocketBaseURL(): string | undefined;
|
|
12
16
|
export declare const HEADERS: {
|
|
13
17
|
'User-Agent': string;
|
|
14
18
|
};
|
package/dist/defaults.js
CHANGED
|
@@ -3,20 +3,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.HEADERS = exports.DEFAULT_OPENAI_MODEL = exports.DEFAULT_OPENAI_API = void 0;
|
|
6
|
+
exports.HEADERS = exports.DEFAULT_OPENAI_RESPONSES_TRANSPORT = exports.DEFAULT_OPENAI_MODEL = exports.DEFAULT_OPENAI_API = void 0;
|
|
7
7
|
exports.setTracingExportApiKey = setTracingExportApiKey;
|
|
8
8
|
exports.getTracingExportApiKey = getTracingExportApiKey;
|
|
9
9
|
exports.shouldUseResponsesByDefault = shouldUseResponsesByDefault;
|
|
10
|
+
exports.shouldUseResponsesWebSocketByDefault = shouldUseResponsesWebSocketByDefault;
|
|
10
11
|
exports.setOpenAIAPI = setOpenAIAPI;
|
|
12
|
+
exports.setOpenAIResponsesTransport = setOpenAIResponsesTransport;
|
|
11
13
|
exports.setDefaultOpenAIClient = setDefaultOpenAIClient;
|
|
12
14
|
exports.getDefaultOpenAIClient = getDefaultOpenAIClient;
|
|
13
15
|
exports.setDefaultOpenAIKey = setDefaultOpenAIKey;
|
|
14
16
|
exports.getDefaultOpenAIKey = getDefaultOpenAIKey;
|
|
17
|
+
exports.getDefaultOpenAIWebSocketBaseURL = getDefaultOpenAIWebSocketBaseURL;
|
|
15
18
|
const _shims_1 = require("@openai/agents-core/_shims");
|
|
16
19
|
const metadata_1 = __importDefault(require("./metadata.js"));
|
|
17
20
|
exports.DEFAULT_OPENAI_API = 'responses';
|
|
18
21
|
exports.DEFAULT_OPENAI_MODEL = 'gpt-4.1';
|
|
22
|
+
exports.DEFAULT_OPENAI_RESPONSES_TRANSPORT = 'http';
|
|
19
23
|
let _defaultOpenAIAPI = exports.DEFAULT_OPENAI_API;
|
|
24
|
+
let _defaultOpenAIResponsesTransport = exports.DEFAULT_OPENAI_RESPONSES_TRANSPORT;
|
|
20
25
|
let _defaultOpenAIClient;
|
|
21
26
|
let _defaultOpenAIKey = undefined;
|
|
22
27
|
let _defaultTracingApiKey = undefined;
|
|
@@ -29,9 +34,15 @@ function getTracingExportApiKey() {
|
|
|
29
34
|
function shouldUseResponsesByDefault() {
|
|
30
35
|
return _defaultOpenAIAPI === 'responses';
|
|
31
36
|
}
|
|
37
|
+
function shouldUseResponsesWebSocketByDefault() {
|
|
38
|
+
return _defaultOpenAIResponsesTransport === 'websocket';
|
|
39
|
+
}
|
|
32
40
|
function setOpenAIAPI(value) {
|
|
33
41
|
_defaultOpenAIAPI = value;
|
|
34
42
|
}
|
|
43
|
+
function setOpenAIResponsesTransport(value) {
|
|
44
|
+
_defaultOpenAIResponsesTransport = value;
|
|
45
|
+
}
|
|
35
46
|
function setDefaultOpenAIClient(client) {
|
|
36
47
|
_defaultOpenAIClient = client;
|
|
37
48
|
}
|
|
@@ -44,6 +55,9 @@ function setDefaultOpenAIKey(key) {
|
|
|
44
55
|
function getDefaultOpenAIKey() {
|
|
45
56
|
return _defaultOpenAIKey ?? (0, _shims_1.loadEnv)().OPENAI_API_KEY;
|
|
46
57
|
}
|
|
58
|
+
function getDefaultOpenAIWebSocketBaseURL() {
|
|
59
|
+
return (0, _shims_1.loadEnv)().OPENAI_WEBSOCKET_BASE_URL;
|
|
60
|
+
}
|
|
47
61
|
exports.HEADERS = {
|
|
48
62
|
'User-Agent': `Agents/JavaScript ${metadata_1.default.version}`,
|
|
49
63
|
};
|
package/dist/defaults.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":";;;;;;AAcA,wDAEC;AAED,wDAEC;AAED,kEAEC;AAED,oFAEC;AAED,oCAEC;AAED,kEAEC;AAED,wDAEC;AAED,wDAEC;AAED,kDAEC;AAED,kDAEC;AAED,4EAEC;AAvDD,uDAAqD;AACrD,6DAAkC;AAErB,QAAA,kBAAkB,GAAG,WAAW,CAAC;AACjC,QAAA,oBAAoB,GAAG,SAAS,CAAC;AACjC,QAAA,kCAAkC,GAAG,MAAM,CAAC;AAEzD,IAAI,iBAAiB,GAAG,0BAAkB,CAAC;AAC3C,IAAI,gCAAgC,GAAG,0CAAkC,CAAC;AAC1E,IAAI,oBAAwC,CAAC;AAC7C,IAAI,iBAAiB,GAAuB,SAAS,CAAC;AACtD,IAAI,qBAAqB,GAAuB,SAAS,CAAC;AAE1D,SAAgB,sBAAsB,CAAC,GAAW;IAChD,qBAAqB,GAAG,GAAG,CAAC;AAC9B,CAAC;AAED,SAAgB,sBAAsB;IACpC,OAAO,qBAAqB,IAAI,IAAA,gBAAO,GAAE,CAAC,cAAc,CAAC;AAC3D,CAAC;AAED,SAAgB,2BAA2B;IACzC,OAAO,iBAAiB,KAAK,WAAW,CAAC;AAC3C,CAAC;AAED,SAAgB,oCAAoC;IAClD,OAAO,gCAAgC,KAAK,WAAW,CAAC;AAC1D,CAAC;AAED,SAAgB,YAAY,CAAC,KAAuC;IAClE,iBAAiB,GAAG,KAAK,CAAC;AAC5B,CAAC;AAED,SAAgB,2BAA2B,CAAC,KAA2B;IACrE,gCAAgC,GAAG,KAAK,CAAC;AAC3C,CAAC;AAED,SAAgB,sBAAsB,CAAC,MAAc;IACnD,oBAAoB,GAAG,MAAM,CAAC;AAChC,CAAC;AAED,SAAgB,sBAAsB;IACpC,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,SAAgB,mBAAmB,CAAC,GAAW;IAC7C,iBAAiB,GAAG,GAAG,CAAC;AAC1B,CAAC;AAED,SAAgB,mBAAmB;IACjC,OAAO,iBAAiB,IAAI,IAAA,gBAAO,GAAE,CAAC,cAAc,CAAC;AACvD,CAAC;AAED,SAAgB,gCAAgC;IAC9C,OAAO,IAAA,gBAAO,GAAE,CAAC,yBAAyB,CAAC;AAC7C,CAAC;AAEY,QAAA,OAAO,GAAG;IACrB,YAAY,EAAE,qBAAqB,kBAAQ,CAAC,OAAO,EAAE;CACtD,CAAC"}
|
package/dist/defaults.mjs
CHANGED
|
@@ -2,7 +2,9 @@ import { loadEnv } from '@openai/agents-core/_shims';
|
|
|
2
2
|
import METADATA from "./metadata.mjs";
|
|
3
3
|
export const DEFAULT_OPENAI_API = 'responses';
|
|
4
4
|
export const DEFAULT_OPENAI_MODEL = 'gpt-4.1';
|
|
5
|
+
export const DEFAULT_OPENAI_RESPONSES_TRANSPORT = 'http';
|
|
5
6
|
let _defaultOpenAIAPI = DEFAULT_OPENAI_API;
|
|
7
|
+
let _defaultOpenAIResponsesTransport = DEFAULT_OPENAI_RESPONSES_TRANSPORT;
|
|
6
8
|
let _defaultOpenAIClient;
|
|
7
9
|
let _defaultOpenAIKey = undefined;
|
|
8
10
|
let _defaultTracingApiKey = undefined;
|
|
@@ -15,9 +17,15 @@ export function getTracingExportApiKey() {
|
|
|
15
17
|
export function shouldUseResponsesByDefault() {
|
|
16
18
|
return _defaultOpenAIAPI === 'responses';
|
|
17
19
|
}
|
|
20
|
+
export function shouldUseResponsesWebSocketByDefault() {
|
|
21
|
+
return _defaultOpenAIResponsesTransport === 'websocket';
|
|
22
|
+
}
|
|
18
23
|
export function setOpenAIAPI(value) {
|
|
19
24
|
_defaultOpenAIAPI = value;
|
|
20
25
|
}
|
|
26
|
+
export function setOpenAIResponsesTransport(value) {
|
|
27
|
+
_defaultOpenAIResponsesTransport = value;
|
|
28
|
+
}
|
|
21
29
|
export function setDefaultOpenAIClient(client) {
|
|
22
30
|
_defaultOpenAIClient = client;
|
|
23
31
|
}
|
|
@@ -30,6 +38,9 @@ export function setDefaultOpenAIKey(key) {
|
|
|
30
38
|
export function getDefaultOpenAIKey() {
|
|
31
39
|
return _defaultOpenAIKey ?? loadEnv().OPENAI_API_KEY;
|
|
32
40
|
}
|
|
41
|
+
export function getDefaultOpenAIWebSocketBaseURL() {
|
|
42
|
+
return loadEnv().OPENAI_WEBSOCKET_BASE_URL;
|
|
43
|
+
}
|
|
33
44
|
export const HEADERS = {
|
|
34
45
|
'User-Agent': `Agents/JavaScript ${METADATA.version}`,
|
|
35
46
|
};
|
package/dist/defaults.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.mjs","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"OACO,EAAE,OAAO,EAAE,MAAM,4BAA4B;OAC7C,QAAQ;AAEf,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAC9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"defaults.mjs","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"OACO,EAAE,OAAO,EAAE,MAAM,4BAA4B;OAC7C,QAAQ;AAEf,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAC9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAC;AAC9C,MAAM,CAAC,MAAM,kCAAkC,GAAG,MAAM,CAAC;AAEzD,IAAI,iBAAiB,GAAG,kBAAkB,CAAC;AAC3C,IAAI,gCAAgC,GAAG,kCAAkC,CAAC;AAC1E,IAAI,oBAAwC,CAAC;AAC7C,IAAI,iBAAiB,GAAuB,SAAS,CAAC;AACtD,IAAI,qBAAqB,GAAuB,SAAS,CAAC;AAE1D,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,qBAAqB,GAAG,GAAG,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,qBAAqB,IAAI,OAAO,EAAE,CAAC,cAAc,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,OAAO,iBAAiB,KAAK,WAAW,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,oCAAoC;IAClD,OAAO,gCAAgC,KAAK,WAAW,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAuC;IAClE,iBAAiB,GAAG,KAAK,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAA2B;IACrE,gCAAgC,GAAG,KAAK,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAc;IACnD,oBAAoB,GAAG,MAAM,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,iBAAiB,GAAG,GAAG,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,iBAAiB,IAAI,OAAO,EAAE,CAAC,cAAc,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,gCAAgC;IAC9C,OAAO,OAAO,EAAE,CAAC,yBAAyB,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,YAAY,EAAE,qBAAqB,QAAQ,CAAC,OAAO,EAAE;CACtD,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export { OpenAIProvider } from './openaiProvider';
|
|
2
|
-
export {
|
|
2
|
+
export { withResponsesWebSocketSession, type ResponsesWebSocketSession, type ResponsesWebSocketSessionOptions, } from './responsesWebSocketSession';
|
|
3
|
+
export { OpenAIResponsesModel, OpenAIResponsesWSModel, } from './openaiResponsesModel';
|
|
3
4
|
export { OpenAIChatCompletionsModel } from './openaiChatCompletionsModel';
|
|
4
|
-
export { setDefaultOpenAIClient, setOpenAIAPI, setDefaultOpenAIKey, setTracingExportApiKey, } from './defaults';
|
|
5
|
+
export { setDefaultOpenAIClient, setOpenAIAPI, setOpenAIResponsesTransport, setDefaultOpenAIKey, setTracingExportApiKey, } from './defaults';
|
|
5
6
|
export { setDefaultOpenAITracingExporter, OpenAITracingExporter, OpenAITracingExporterOptions, } from './openaiTracingExporter';
|
|
6
7
|
export { webSearchTool, fileSearchTool, codeInterpreterTool, imageGenerationTool, } from './tools';
|
|
7
8
|
export { OpenAIConversationsSession, startOpenAIConversationsSession, type OpenAIConversationsSessionOptions, } from './memory/openaiConversationsSession';
|
package/dist/index.js
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OpenAIResponsesCompactionSession = exports.startOpenAIConversationsSession = exports.OpenAIConversationsSession = exports.imageGenerationTool = exports.codeInterpreterTool = exports.fileSearchTool = exports.webSearchTool = exports.OpenAITracingExporter = exports.setDefaultOpenAITracingExporter = exports.setTracingExportApiKey = exports.setDefaultOpenAIKey = exports.setOpenAIAPI = exports.setDefaultOpenAIClient = exports.OpenAIChatCompletionsModel = exports.OpenAIResponsesModel = exports.OpenAIProvider = void 0;
|
|
3
|
+
exports.OpenAIResponsesCompactionSession = exports.startOpenAIConversationsSession = exports.OpenAIConversationsSession = exports.imageGenerationTool = exports.codeInterpreterTool = exports.fileSearchTool = exports.webSearchTool = exports.OpenAITracingExporter = exports.setDefaultOpenAITracingExporter = exports.setTracingExportApiKey = exports.setDefaultOpenAIKey = exports.setOpenAIResponsesTransport = exports.setOpenAIAPI = exports.setDefaultOpenAIClient = exports.OpenAIChatCompletionsModel = exports.OpenAIResponsesWSModel = exports.OpenAIResponsesModel = exports.withResponsesWebSocketSession = exports.OpenAIProvider = void 0;
|
|
4
4
|
var openaiProvider_1 = require("./openaiProvider.js");
|
|
5
5
|
Object.defineProperty(exports, "OpenAIProvider", { enumerable: true, get: function () { return openaiProvider_1.OpenAIProvider; } });
|
|
6
|
+
var responsesWebSocketSession_1 = require("./responsesWebSocketSession.js");
|
|
7
|
+
Object.defineProperty(exports, "withResponsesWebSocketSession", { enumerable: true, get: function () { return responsesWebSocketSession_1.withResponsesWebSocketSession; } });
|
|
6
8
|
var openaiResponsesModel_1 = require("./openaiResponsesModel.js");
|
|
7
9
|
Object.defineProperty(exports, "OpenAIResponsesModel", { enumerable: true, get: function () { return openaiResponsesModel_1.OpenAIResponsesModel; } });
|
|
10
|
+
Object.defineProperty(exports, "OpenAIResponsesWSModel", { enumerable: true, get: function () { return openaiResponsesModel_1.OpenAIResponsesWSModel; } });
|
|
8
11
|
var openaiChatCompletionsModel_1 = require("./openaiChatCompletionsModel.js");
|
|
9
12
|
Object.defineProperty(exports, "OpenAIChatCompletionsModel", { enumerable: true, get: function () { return openaiChatCompletionsModel_1.OpenAIChatCompletionsModel; } });
|
|
10
13
|
var defaults_1 = require("./defaults.js");
|
|
11
14
|
Object.defineProperty(exports, "setDefaultOpenAIClient", { enumerable: true, get: function () { return defaults_1.setDefaultOpenAIClient; } });
|
|
12
15
|
Object.defineProperty(exports, "setOpenAIAPI", { enumerable: true, get: function () { return defaults_1.setOpenAIAPI; } });
|
|
16
|
+
Object.defineProperty(exports, "setOpenAIResponsesTransport", { enumerable: true, get: function () { return defaults_1.setOpenAIResponsesTransport; } });
|
|
13
17
|
Object.defineProperty(exports, "setDefaultOpenAIKey", { enumerable: true, get: function () { return defaults_1.setDefaultOpenAIKey; } });
|
|
14
18
|
Object.defineProperty(exports, "setTracingExportApiKey", { enumerable: true, get: function () { return defaults_1.setTracingExportApiKey; } });
|
|
15
19
|
var openaiTracingExporter_1 = require("./openaiTracingExporter.js");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,sDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,sDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,4EAIqC;AAHnC,0IAAA,6BAA6B,OAAA;AAI/B,kEAGgC;AAF9B,4HAAA,oBAAoB,OAAA;AACpB,8HAAA,sBAAsB,OAAA;AAExB,8EAA0E;AAAjE,wIAAA,0BAA0B,OAAA;AACnC,0CAMoB;AALlB,kHAAA,sBAAsB,OAAA;AACtB,wGAAA,YAAY,OAAA;AACZ,uHAAA,2BAA2B,OAAA;AAC3B,+GAAA,mBAAmB,OAAA;AACnB,kHAAA,sBAAsB,OAAA;AAExB,oEAIiC;AAH/B,wIAAA,+BAA+B,OAAA;AAC/B,8HAAA,qBAAqB,OAAA;AAGvB,oCAKiB;AAJf,sGAAA,aAAa,OAAA;AACb,uGAAA,cAAc,OAAA;AACd,4GAAA,mBAAmB,OAAA;AACnB,4GAAA,mBAAmB,OAAA;AAErB,qFAI6C;AAH3C,wIAAA,0BAA0B,OAAA;AAC1B,6IAAA,+BAA+B,OAAA;AAGjC,iGAKmD;AAJjD,oJAAA,gCAAgC,OAAA"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export { OpenAIProvider } from "./openaiProvider.mjs";
|
|
2
|
-
export {
|
|
2
|
+
export { withResponsesWebSocketSession, } from "./responsesWebSocketSession.mjs";
|
|
3
|
+
export { OpenAIResponsesModel, OpenAIResponsesWSModel, } from "./openaiResponsesModel.mjs";
|
|
3
4
|
export { OpenAIChatCompletionsModel } from "./openaiChatCompletionsModel.mjs";
|
|
4
|
-
export { setDefaultOpenAIClient, setOpenAIAPI, setDefaultOpenAIKey, setTracingExportApiKey, } from "./defaults.mjs";
|
|
5
|
+
export { setDefaultOpenAIClient, setOpenAIAPI, setOpenAIResponsesTransport, setDefaultOpenAIKey, setTracingExportApiKey, } from "./defaults.mjs";
|
|
5
6
|
export { setDefaultOpenAITracingExporter, OpenAITracingExporter, } from "./openaiTracingExporter.mjs";
|
|
6
7
|
export { webSearchTool, fileSearchTool, codeInterpreterTool, imageGenerationTool, } from "./tools.mjs";
|
|
7
8
|
export { OpenAIConversationsSession, startOpenAIConversationsSession, } from "./memory/openaiConversationsSession.mjs";
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"OAAO,EAAE,cAAc,EAAE;OAClB,
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"OAAO,EAAE,cAAc,EAAE;OAClB,EACL,6BAA6B,GAG9B;OACM,EACL,oBAAoB,EACpB,sBAAsB,GACvB;OACM,EAAE,0BAA0B,EAAE;OAC9B,EACL,sBAAsB,EACtB,YAAY,EACZ,2BAA2B,EAC3B,mBAAmB,EACnB,sBAAsB,GACvB;OACM,EACL,+BAA+B,EAC/B,qBAAqB,GAEtB;OACM,EACL,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,mBAAmB,GACpB;OACM,EACL,0BAA0B,EAC1B,+BAA+B,GAEhC;OACM,EACL,gCAAgC,GAIjC"}
|
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-openai",
|
|
7
|
-
"version": "0.
|
|
7
|
+
"version": "0.5.0",
|
|
8
8
|
"versions": {
|
|
9
|
-
"@openai/agents-openai": "0.
|
|
9
|
+
"@openai/agents-openai": "0.5.0",
|
|
10
10
|
"@openai/agents-core": "workspace:*",
|
|
11
11
|
"openai": "^6.20.0"
|
|
12
12
|
}
|
package/dist/metadata.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":";AACA,uCAAuC;;;AAE1B,QAAA,QAAQ,GAAG;IACtB,MAAM,EAAE,uBAAuB;IAC/B,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":";AACA,uCAAuC;;;AAE1B,QAAA,QAAQ,GAAG;IACtB,MAAM,EAAE,uBAAuB;IAC/B,SAAS,EAAE,OAAO;IAClB,UAAU,EAAE;QACV,uBAAuB,EAAE,OAAO;QAChC,qBAAqB,EAAE,aAAa;QACpC,QAAQ,EAAE,SAAS;KACpB;CACF,CAAC;AAEF,kBAAe,gBAAQ,CAAC"}
|
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-openai",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.5.0",
|
|
5
5
|
"versions": {
|
|
6
|
-
"@openai/agents-openai": "0.
|
|
6
|
+
"@openai/agents-openai": "0.5.0",
|
|
7
7
|
"@openai/agents-core": "workspace:*",
|
|
8
8
|
"openai": "^6.20.0"
|
|
9
9
|
}
|
package/dist/metadata.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.mjs","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AACA,uCAAuC;AAEvC,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,MAAM,EAAE,uBAAuB;IAC/B,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"metadata.mjs","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AACA,uCAAuC;AAEvC,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,MAAM,EAAE,uBAAuB;IAC/B,SAAS,EAAE,OAAO;IAClB,UAAU,EAAE;QACV,uBAAuB,EAAE,OAAO;QAChC,qBAAqB,EAAE,aAAa;QACpC,QAAQ,EAAE,SAAS;KACpB;CACF,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
package/dist/openaiProvider.d.ts
CHANGED
|
@@ -6,9 +6,12 @@ import OpenAI from 'openai';
|
|
|
6
6
|
export type OpenAIProviderOptions = {
|
|
7
7
|
apiKey?: string;
|
|
8
8
|
baseURL?: string;
|
|
9
|
+
websocketBaseURL?: string;
|
|
10
|
+
cacheResponsesWebSocketModels?: boolean;
|
|
9
11
|
organization?: string;
|
|
10
12
|
project?: string;
|
|
11
13
|
useResponses?: boolean;
|
|
14
|
+
useResponsesWebSocket?: boolean;
|
|
12
15
|
openAIClient?: OpenAI;
|
|
13
16
|
};
|
|
14
17
|
/**
|
|
@@ -18,4 +21,8 @@ export declare class OpenAIProvider implements ModelProvider {
|
|
|
18
21
|
#private;
|
|
19
22
|
constructor(options?: OpenAIProviderOptions);
|
|
20
23
|
getModel(modelName?: string | undefined): Promise<Model>;
|
|
24
|
+
/**
|
|
25
|
+
* Closes cached model wrappers (for example websocket-backed responses models) and clears cache.
|
|
26
|
+
*/
|
|
27
|
+
close(): Promise<void>;
|
|
21
28
|
}
|
package/dist/openaiProvider.js
CHANGED
|
@@ -15,6 +15,10 @@ const openaiChatCompletionsModel_1 = require("./openaiChatCompletionsModel.js");
|
|
|
15
15
|
class OpenAIProvider {
|
|
16
16
|
#client;
|
|
17
17
|
#useResponses;
|
|
18
|
+
#useResponsesWebSocket;
|
|
19
|
+
#websocketBaseURL;
|
|
20
|
+
#cacheResponsesWebSocketModels;
|
|
21
|
+
#modelCache = new Map();
|
|
18
22
|
#options;
|
|
19
23
|
constructor(options = {}) {
|
|
20
24
|
this.#options = options;
|
|
@@ -25,9 +29,16 @@ class OpenAIProvider {
|
|
|
25
29
|
if (this.#options.baseURL) {
|
|
26
30
|
throw new Error('Cannot provide both baseURL and openAIClient');
|
|
27
31
|
}
|
|
32
|
+
if (this.#options.websocketBaseURL) {
|
|
33
|
+
throw new Error('Cannot provide both websocketBaseURL and openAIClient');
|
|
34
|
+
}
|
|
28
35
|
this.#client = this.#options.openAIClient;
|
|
29
36
|
}
|
|
30
37
|
this.#useResponses = this.#options.useResponses;
|
|
38
|
+
this.#useResponsesWebSocket = this.#options.useResponsesWebSocket;
|
|
39
|
+
this.#websocketBaseURL = this.#options.websocketBaseURL;
|
|
40
|
+
this.#cacheResponsesWebSocketModels =
|
|
41
|
+
this.#options.cacheResponsesWebSocketModels ?? true;
|
|
31
42
|
}
|
|
32
43
|
/**
|
|
33
44
|
* Lazy loads the OpenAI client to not throw an error if you don't have an API key set but
|
|
@@ -49,13 +60,84 @@ class OpenAIProvider {
|
|
|
49
60
|
}
|
|
50
61
|
return this.#client;
|
|
51
62
|
}
|
|
63
|
+
#getWebSocketBaseURLForResponsesModel(client) {
|
|
64
|
+
if (typeof this.#websocketBaseURL !== 'undefined') {
|
|
65
|
+
return this.#websocketBaseURL;
|
|
66
|
+
}
|
|
67
|
+
// Preserve configured client/provider endpoints rather than redirecting via env websocket base URL.
|
|
68
|
+
if (this.#options.openAIClient || this.#options.baseURL) {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
const defaultClient = (0, defaults_1.getDefaultOpenAIClient)();
|
|
72
|
+
if (defaultClient && client === defaultClient) {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
return (0, defaults_1.getDefaultOpenAIWebSocketBaseURL)();
|
|
76
|
+
}
|
|
52
77
|
async getModel(modelName) {
|
|
53
78
|
const model = modelName || (0, agents_core_1.getDefaultModel)();
|
|
54
79
|
const useResponses = this.#useResponses ?? (0, defaults_1.shouldUseResponsesByDefault)();
|
|
80
|
+
const useResponsesWebSocket = this.#useResponsesWebSocket ?? (0, defaults_1.shouldUseResponsesWebSocketByDefault)();
|
|
81
|
+
const shouldCacheModelWrapper = !(useResponses &&
|
|
82
|
+
useResponsesWebSocket &&
|
|
83
|
+
!this.#cacheResponsesWebSocketModels);
|
|
84
|
+
const cacheKey = JSON.stringify([
|
|
85
|
+
model,
|
|
86
|
+
useResponses,
|
|
87
|
+
useResponsesWebSocket,
|
|
88
|
+
]);
|
|
89
|
+
if (shouldCacheModelWrapper) {
|
|
90
|
+
const cachedModel = this.#modelCache.get(cacheKey);
|
|
91
|
+
if (cachedModel) {
|
|
92
|
+
return cachedModel;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
let resolvedModel;
|
|
55
96
|
if (useResponses) {
|
|
56
|
-
|
|
97
|
+
const client = this.#getClient();
|
|
98
|
+
resolvedModel = useResponsesWebSocket
|
|
99
|
+
? new openaiResponsesModel_1.OpenAIResponsesWSModel(client, model, {
|
|
100
|
+
websocketBaseURL: this.#getWebSocketBaseURLForResponsesModel(client),
|
|
101
|
+
reuseConnection: shouldCacheModelWrapper,
|
|
102
|
+
})
|
|
103
|
+
: new openaiResponsesModel_1.OpenAIResponsesModel(client, model);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
resolvedModel = new openaiChatCompletionsModel_1.OpenAIChatCompletionsModel(this.#getClient(), model);
|
|
107
|
+
}
|
|
108
|
+
if (shouldCacheModelWrapper) {
|
|
109
|
+
this.#modelCache.set(cacheKey, resolvedModel);
|
|
110
|
+
}
|
|
111
|
+
return resolvedModel;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Closes cached model wrappers (for example websocket-backed responses models) and clears cache.
|
|
115
|
+
*/
|
|
116
|
+
async close() {
|
|
117
|
+
const cachedModels = Array.from(new Set(this.#modelCache.values()));
|
|
118
|
+
this.#modelCache.clear();
|
|
119
|
+
const closeErrors = [];
|
|
120
|
+
await Promise.all(cachedModels.map(async (model) => {
|
|
121
|
+
const maybeClose = model
|
|
122
|
+
.close;
|
|
123
|
+
if (typeof maybeClose !== 'function') {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
try {
|
|
127
|
+
await maybeClose.call(model);
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
closeErrors.push(error);
|
|
131
|
+
}
|
|
132
|
+
}));
|
|
133
|
+
if (closeErrors.length === 1) {
|
|
134
|
+
throw closeErrors[0];
|
|
135
|
+
}
|
|
136
|
+
if (closeErrors.length > 1) {
|
|
137
|
+
const error = new Error('Failed to close OpenAIProvider.');
|
|
138
|
+
error.causes = closeErrors;
|
|
139
|
+
throw error;
|
|
57
140
|
}
|
|
58
|
-
return new openaiChatCompletionsModel_1.OpenAIChatCompletionsModel(this.#getClient(), model);
|
|
59
141
|
}
|
|
60
142
|
}
|
|
61
143
|
exports.OpenAIProvider = OpenAIProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openaiProvider.js","sourceRoot":"","sources":["../src/openaiProvider.ts"],"names":[],"mappings":";;;;;;AAAA,qDAA4E;AAC5E,oDAA4B;AAC5B,
|
|
1
|
+
{"version":3,"file":"openaiProvider.js","sourceRoot":"","sources":["../src/openaiProvider.ts"],"names":[],"mappings":";;;;;;AAAA,qDAA4E;AAC5E,oDAA4B;AAC5B,4CAMoB;AACpB,oEAGgC;AAChC,gFAA0E;AAiB1E;;GAEG;AACH,MAAa,cAAc;IACzB,OAAO,CAAU;IACjB,aAAa,CAAW;IACxB,sBAAsB,CAAW;IACjC,iBAAiB,CAAU;IAC3B,8BAA8B,CAAU;IACxC,WAAW,GAAG,IAAI,GAAG,EAAiB,CAAC;IACvC,QAAQ,CAAwB;IAEhC,YAAY,UAAiC,EAAE;QAC7C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YACjE,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAClE,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb,uDAAuD,CACxD,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAChD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAClE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACxD,IAAI,CAAC,8BAA8B;YACjC,IAAI,CAAC,QAAQ,CAAC,6BAA6B,IAAI,IAAI,CAAC;IACxD,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,wDAAwD;QACxD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO;gBACV,6DAA6D;gBAC7D,IAAA,iCAAsB,GAAE;oBACxB,uCAAuC;oBACvC,IAAI,gBAAM,CAAC;wBACT,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAA,8BAAmB,GAAE;wBACrD,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;wBAC9B,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;wBACxC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;qBAC/B,CAAC,CAAC;QACP,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,qCAAqC,CAAC,MAAc;QAClD,IAAI,OAAO,IAAI,CAAC,iBAAiB,KAAK,WAAW,EAAE,CAAC;YAClD,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAChC,CAAC;QAED,oGAAoG;QACpG,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACxD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,aAAa,GAAG,IAAA,iCAAsB,GAAE,CAAC;QAC/C,IAAI,aAAa,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;YAC9C,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,IAAA,2CAAgC,GAAE,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAA8B;QAC3C,MAAM,KAAK,GAAG,SAAS,IAAI,IAAA,6BAAe,GAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,IAAI,IAAA,sCAA2B,GAAE,CAAC;QACzE,MAAM,qBAAqB,GACzB,IAAI,CAAC,sBAAsB,IAAI,IAAA,+CAAoC,GAAE,CAAC;QACxE,MAAM,uBAAuB,GAAG,CAAC,CAC/B,YAAY;YACZ,qBAAqB;YACrB,CAAC,IAAI,CAAC,8BAA8B,CACrC,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;YAC9B,KAAK;YACL,YAAY;YACZ,qBAAqB;SACtB,CAAC,CAAC;QAEH,IAAI,uBAAuB,EAAE,CAAC;YAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,WAAW,CAAC;YACrB,CAAC;QACH,CAAC;QAED,IAAI,aAAoB,CAAC;QAEzB,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACjC,aAAa,GAAG,qBAAqB;gBACnC,CAAC,CAAC,IAAI,6CAAsB,CAAC,MAAM,EAAE,KAAK,EAAE;oBACxC,gBAAgB,EACd,IAAI,CAAC,qCAAqC,CAAC,MAAM,CAAC;oBACpD,eAAe,EAAE,uBAAuB;iBACzC,CAAC;gBACJ,CAAC,CAAC,IAAI,2CAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,IAAI,uDAA0B,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,uBAAuB,EAAE,CAAC;YAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAEzB,MAAM,WAAW,GAAc,EAAE,CAAC;QAClC,MAAM,OAAO,CAAC,GAAG,CACf,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC/B,MAAM,UAAU,GAAI,KAAgD;iBACjE,KAAK,CAAC;YACT,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;gBACrC,OAAO;YACT,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QAEF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;QACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YAC1D,KAAwC,CAAC,MAAM,GAAG,WAAW,CAAC;YAC/D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAnJD,wCAmJC"}
|
package/dist/openaiProvider.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getDefaultModel } from '@openai/agents-core';
|
|
2
2
|
import OpenAI from 'openai';
|
|
3
|
-
import { getDefaultOpenAIClient, getDefaultOpenAIKey, shouldUseResponsesByDefault, } from "./defaults.mjs";
|
|
4
|
-
import { OpenAIResponsesModel } from "./openaiResponsesModel.mjs";
|
|
3
|
+
import { getDefaultOpenAIClient, getDefaultOpenAIKey, getDefaultOpenAIWebSocketBaseURL, shouldUseResponsesByDefault, shouldUseResponsesWebSocketByDefault, } from "./defaults.mjs";
|
|
4
|
+
import { OpenAIResponsesModel, OpenAIResponsesWSModel, } from "./openaiResponsesModel.mjs";
|
|
5
5
|
import { OpenAIChatCompletionsModel } from "./openaiChatCompletionsModel.mjs";
|
|
6
6
|
/**
|
|
7
7
|
* The provider of OpenAI's models (or Chat Completions compatible ones)
|
|
@@ -9,6 +9,10 @@ import { OpenAIChatCompletionsModel } from "./openaiChatCompletionsModel.mjs";
|
|
|
9
9
|
export class OpenAIProvider {
|
|
10
10
|
#client;
|
|
11
11
|
#useResponses;
|
|
12
|
+
#useResponsesWebSocket;
|
|
13
|
+
#websocketBaseURL;
|
|
14
|
+
#cacheResponsesWebSocketModels;
|
|
15
|
+
#modelCache = new Map();
|
|
12
16
|
#options;
|
|
13
17
|
constructor(options = {}) {
|
|
14
18
|
this.#options = options;
|
|
@@ -19,9 +23,16 @@ export class OpenAIProvider {
|
|
|
19
23
|
if (this.#options.baseURL) {
|
|
20
24
|
throw new Error('Cannot provide both baseURL and openAIClient');
|
|
21
25
|
}
|
|
26
|
+
if (this.#options.websocketBaseURL) {
|
|
27
|
+
throw new Error('Cannot provide both websocketBaseURL and openAIClient');
|
|
28
|
+
}
|
|
22
29
|
this.#client = this.#options.openAIClient;
|
|
23
30
|
}
|
|
24
31
|
this.#useResponses = this.#options.useResponses;
|
|
32
|
+
this.#useResponsesWebSocket = this.#options.useResponsesWebSocket;
|
|
33
|
+
this.#websocketBaseURL = this.#options.websocketBaseURL;
|
|
34
|
+
this.#cacheResponsesWebSocketModels =
|
|
35
|
+
this.#options.cacheResponsesWebSocketModels ?? true;
|
|
25
36
|
}
|
|
26
37
|
/**
|
|
27
38
|
* Lazy loads the OpenAI client to not throw an error if you don't have an API key set but
|
|
@@ -43,13 +54,84 @@ export class OpenAIProvider {
|
|
|
43
54
|
}
|
|
44
55
|
return this.#client;
|
|
45
56
|
}
|
|
57
|
+
#getWebSocketBaseURLForResponsesModel(client) {
|
|
58
|
+
if (typeof this.#websocketBaseURL !== 'undefined') {
|
|
59
|
+
return this.#websocketBaseURL;
|
|
60
|
+
}
|
|
61
|
+
// Preserve configured client/provider endpoints rather than redirecting via env websocket base URL.
|
|
62
|
+
if (this.#options.openAIClient || this.#options.baseURL) {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
const defaultClient = getDefaultOpenAIClient();
|
|
66
|
+
if (defaultClient && client === defaultClient) {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
return getDefaultOpenAIWebSocketBaseURL();
|
|
70
|
+
}
|
|
46
71
|
async getModel(modelName) {
|
|
47
72
|
const model = modelName || getDefaultModel();
|
|
48
73
|
const useResponses = this.#useResponses ?? shouldUseResponsesByDefault();
|
|
74
|
+
const useResponsesWebSocket = this.#useResponsesWebSocket ?? shouldUseResponsesWebSocketByDefault();
|
|
75
|
+
const shouldCacheModelWrapper = !(useResponses &&
|
|
76
|
+
useResponsesWebSocket &&
|
|
77
|
+
!this.#cacheResponsesWebSocketModels);
|
|
78
|
+
const cacheKey = JSON.stringify([
|
|
79
|
+
model,
|
|
80
|
+
useResponses,
|
|
81
|
+
useResponsesWebSocket,
|
|
82
|
+
]);
|
|
83
|
+
if (shouldCacheModelWrapper) {
|
|
84
|
+
const cachedModel = this.#modelCache.get(cacheKey);
|
|
85
|
+
if (cachedModel) {
|
|
86
|
+
return cachedModel;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
let resolvedModel;
|
|
49
90
|
if (useResponses) {
|
|
50
|
-
|
|
91
|
+
const client = this.#getClient();
|
|
92
|
+
resolvedModel = useResponsesWebSocket
|
|
93
|
+
? new OpenAIResponsesWSModel(client, model, {
|
|
94
|
+
websocketBaseURL: this.#getWebSocketBaseURLForResponsesModel(client),
|
|
95
|
+
reuseConnection: shouldCacheModelWrapper,
|
|
96
|
+
})
|
|
97
|
+
: new OpenAIResponsesModel(client, model);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
resolvedModel = new OpenAIChatCompletionsModel(this.#getClient(), model);
|
|
101
|
+
}
|
|
102
|
+
if (shouldCacheModelWrapper) {
|
|
103
|
+
this.#modelCache.set(cacheKey, resolvedModel);
|
|
104
|
+
}
|
|
105
|
+
return resolvedModel;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Closes cached model wrappers (for example websocket-backed responses models) and clears cache.
|
|
109
|
+
*/
|
|
110
|
+
async close() {
|
|
111
|
+
const cachedModels = Array.from(new Set(this.#modelCache.values()));
|
|
112
|
+
this.#modelCache.clear();
|
|
113
|
+
const closeErrors = [];
|
|
114
|
+
await Promise.all(cachedModels.map(async (model) => {
|
|
115
|
+
const maybeClose = model
|
|
116
|
+
.close;
|
|
117
|
+
if (typeof maybeClose !== 'function') {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
try {
|
|
121
|
+
await maybeClose.call(model);
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
closeErrors.push(error);
|
|
125
|
+
}
|
|
126
|
+
}));
|
|
127
|
+
if (closeErrors.length === 1) {
|
|
128
|
+
throw closeErrors[0];
|
|
129
|
+
}
|
|
130
|
+
if (closeErrors.length > 1) {
|
|
131
|
+
const error = new Error('Failed to close OpenAIProvider.');
|
|
132
|
+
error.causes = closeErrors;
|
|
133
|
+
throw error;
|
|
51
134
|
}
|
|
52
|
-
return new OpenAIChatCompletionsModel(this.#getClient(), model);
|
|
53
135
|
}
|
|
54
136
|
}
|
|
55
137
|
//# sourceMappingURL=openaiProvider.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openaiProvider.mjs","sourceRoot":"","sources":["../src/openaiProvider.ts"],"names":[],"mappings":"OAAO,EAAwB,eAAe,EAAE,MAAM,qBAAqB;OACpE,MAAM,MAAM,QAAQ;OACpB,EACL,sBAAsB,EACtB,mBAAmB,EACnB,2BAA2B,
|
|
1
|
+
{"version":3,"file":"openaiProvider.mjs","sourceRoot":"","sources":["../src/openaiProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,18 @@ import { Model, protocol } from '@openai/agents-core';
|
|
|
2
2
|
import type { SerializedTool, ModelRequest, ModelResponse, ModelSettingsToolChoice, ResponseStreamEvent } from '@openai/agents-core';
|
|
3
3
|
import OpenAI from 'openai';
|
|
4
4
|
import { ToolChoiceFunction, ToolChoiceOptions, ToolChoiceTypes } from 'openai/resources/responses/responses';
|
|
5
|
+
import { headerAccumulatorToSDKHeaders } from './responsesTransportUtils';
|
|
5
6
|
type ToolChoice = ToolChoiceOptions | ToolChoiceTypes | {
|
|
6
7
|
type: 'web_search';
|
|
7
8
|
} | ToolChoiceFunction;
|
|
9
|
+
type ResponsesCreateRequestSDKHeaders = ReturnType<typeof headerAccumulatorToSDKHeaders>;
|
|
10
|
+
type BuiltResponsesCreateRequest = {
|
|
11
|
+
requestData: Record<string, any>;
|
|
12
|
+
sdkRequestHeaders: ResponsesCreateRequestSDKHeaders;
|
|
13
|
+
signal: AbortSignal | undefined;
|
|
14
|
+
transportExtraHeaders?: Record<string, unknown>;
|
|
15
|
+
transportExtraQuery?: Record<string, unknown>;
|
|
16
|
+
};
|
|
8
17
|
type ResponseOutputItemWithFunctionResult = OpenAI.Responses.ResponseOutputItem | (OpenAI.Responses.ResponseFunctionToolCallOutputItem & {
|
|
9
18
|
name?: string;
|
|
10
19
|
function_name?: string;
|
|
@@ -21,8 +30,11 @@ export { getToolChoice, converTool, getInputItems, convertToOutputItem };
|
|
|
21
30
|
* Model implementation that uses OpenAI's Responses API to generate responses.
|
|
22
31
|
*/
|
|
23
32
|
export declare class OpenAIResponsesModel implements Model {
|
|
24
|
-
|
|
33
|
+
protected readonly _client: OpenAI;
|
|
34
|
+
protected readonly _model: string;
|
|
25
35
|
constructor(client: OpenAI, model: string);
|
|
36
|
+
protected _fetchResponse(request: ModelRequest, stream: false): Promise<OpenAI.Responses.Response>;
|
|
37
|
+
protected _buildResponsesCreateRequest(request: ModelRequest, stream: boolean): BuiltResponsesCreateRequest;
|
|
26
38
|
/**
|
|
27
39
|
* Get a response from the OpenAI model using the Responses API.
|
|
28
40
|
* @param request - The request to send to the model.
|
|
@@ -36,3 +48,18 @@ export declare class OpenAIResponsesModel implements Model {
|
|
|
36
48
|
*/
|
|
37
49
|
getStreamedResponse(request: ModelRequest): AsyncIterable<ResponseStreamEvent>;
|
|
38
50
|
}
|
|
51
|
+
export type OpenAIResponsesWSModelOptions = {
|
|
52
|
+
websocketBaseURL?: string;
|
|
53
|
+
reuseConnection?: boolean;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Model implementation that uses the OpenAI Responses API over a websocket transport.
|
|
57
|
+
*
|
|
58
|
+
* @see {@link https://developers.openai.com/api/docs/guides/websocket-mode}
|
|
59
|
+
*/
|
|
60
|
+
export declare class OpenAIResponsesWSModel extends OpenAIResponsesModel {
|
|
61
|
+
#private;
|
|
62
|
+
constructor(client: OpenAI, model: string, options?: OpenAIResponsesWSModelOptions);
|
|
63
|
+
protected _fetchResponse(request: ModelRequest, stream: false): Promise<OpenAI.Responses.Response>;
|
|
64
|
+
close(): Promise<void>;
|
|
65
|
+
}
|