@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.
Files changed (40) hide show
  1. package/dist/defaults.d.ts +4 -0
  2. package/dist/defaults.js +15 -1
  3. package/dist/defaults.js.map +1 -1
  4. package/dist/defaults.mjs +11 -0
  5. package/dist/defaults.mjs.map +1 -1
  6. package/dist/index.d.ts +3 -2
  7. package/dist/index.js +5 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/index.mjs +3 -2
  10. package/dist/index.mjs.map +1 -1
  11. package/dist/metadata.js +2 -2
  12. package/dist/metadata.js.map +1 -1
  13. package/dist/metadata.mjs +2 -2
  14. package/dist/metadata.mjs.map +1 -1
  15. package/dist/openaiProvider.d.ts +7 -0
  16. package/dist/openaiProvider.js +84 -2
  17. package/dist/openaiProvider.js.map +1 -1
  18. package/dist/openaiProvider.mjs +86 -4
  19. package/dist/openaiProvider.mjs.map +1 -1
  20. package/dist/openaiResponsesModel.d.ts +28 -1
  21. package/dist/openaiResponsesModel.js +435 -33
  22. package/dist/openaiResponsesModel.js.map +1 -1
  23. package/dist/openaiResponsesModel.mjs +433 -32
  24. package/dist/openaiResponsesModel.mjs.map +1 -1
  25. package/dist/responsesTransportUtils.d.ts +29 -0
  26. package/dist/responsesTransportUtils.js +208 -0
  27. package/dist/responsesTransportUtils.js.map +1 -0
  28. package/dist/responsesTransportUtils.mjs +198 -0
  29. package/dist/responsesTransportUtils.mjs.map +1 -0
  30. package/dist/responsesWebSocketConnection.d.ts +22 -0
  31. package/dist/responsesWebSocketConnection.js +273 -0
  32. package/dist/responsesWebSocketConnection.js.map +1 -0
  33. package/dist/responsesWebSocketConnection.mjs +259 -0
  34. package/dist/responsesWebSocketConnection.mjs.map +1 -0
  35. package/dist/responsesWebSocketSession.d.ts +22 -0
  36. package/dist/responsesWebSocketSession.js +56 -0
  37. package/dist/responsesWebSocketSession.js.map +1 -0
  38. package/dist/responsesWebSocketSession.mjs +53 -0
  39. package/dist/responsesWebSocketSession.mjs.map +1 -0
  40. package/package.json +2 -2
@@ -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
  };
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":";;;;;;AAYA,wDAEC;AAED,wDAEC;AAED,kEAEC;AAED,oCAEC;AAED,wDAEC;AAED,wDAEC;AAED,kDAEC;AAED,kDAEC;AAzCD,uDAAqD;AACrD,6DAAkC;AAErB,QAAA,kBAAkB,GAAG,WAAW,CAAC;AACjC,QAAA,oBAAoB,GAAG,SAAS,CAAC;AAE9C,IAAI,iBAAiB,GAAG,0BAAkB,CAAC;AAC3C,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,YAAY,CAAC,KAAuC;IAClE,iBAAiB,GAAG,KAAK,CAAC;AAC5B,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;AAEY,QAAA,OAAO,GAAG;IACrB,YAAY,EAAE,qBAAqB,kBAAQ,CAAC,OAAO,EAAE;CACtD,CAAC"}
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
  };
@@ -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;AAE9C,IAAI,iBAAiB,GAAG,kBAAkB,CAAC;AAC3C,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,YAAY,CAAC,KAAuC;IAClE,iBAAiB,GAAG,KAAK,CAAC;AAC5B,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,CAAC,MAAM,OAAO,GAAG;IACrB,YAAY,EAAE,qBAAqB,QAAQ,CAAC,OAAO,EAAE;CACtD,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 { OpenAIResponsesModel } from './openaiResponsesModel';
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,kEAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B,8EAA0E;AAAjE,wIAAA,0BAA0B,OAAA;AACnC,0CAKoB;AAJlB,kHAAA,sBAAsB,OAAA;AACtB,wGAAA,YAAY,OAAA;AACZ,+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"}
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 { OpenAIResponsesModel } from "./openaiResponsesModel.mjs";
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";
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"OAAO,EAAE,cAAc,EAAE;OAClB,EAAE,oBAAoB,EAAE;OACxB,EAAE,0BAA0B,EAAE;OAC9B,EACL,sBAAsB,EACtB,YAAY,EACZ,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"}
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.4.15",
7
+ "version": "0.5.0",
8
8
  "versions": {
9
- "@openai/agents-openai": "0.4.15",
9
+ "@openai/agents-openai": "0.5.0",
10
10
  "@openai/agents-core": "workspace:*",
11
11
  "openai": "^6.20.0"
12
12
  }
@@ -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,QAAQ;IACnB,UAAU,EAAE;QACV,uBAAuB,EAAE,QAAQ;QACjC,qBAAqB,EAAE,aAAa;QACpC,QAAQ,EAAE,SAAS;KACpB;CACF,CAAC;AAEF,kBAAe,gBAAQ,CAAC"}
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.15",
4
+ "version": "0.5.0",
5
5
  "versions": {
6
- "@openai/agents-openai": "0.4.15",
6
+ "@openai/agents-openai": "0.5.0",
7
7
  "@openai/agents-core": "workspace:*",
8
8
  "openai": "^6.20.0"
9
9
  }
@@ -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,QAAQ;IACnB,UAAU,EAAE;QACV,uBAAuB,EAAE,QAAQ;QACjC,qBAAqB,EAAE,aAAa;QACpC,QAAQ,EAAE,SAAS;KACpB;CACF,CAAC;AAEF,eAAe,QAAQ,CAAC"}
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"}
@@ -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
  }
@@ -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
- return new openaiResponsesModel_1.OpenAIResponsesModel(this.#getClient(), model);
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,4CAIoB;AACpB,oEAA8D;AAC9D,gFAA0E;AAc1E;;GAEG;AACH,MAAa,cAAc;IACzB,OAAO,CAAU;IACjB,aAAa,CAAW;IACxB,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,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;IAClD,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,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;QAEzE,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,IAAI,2CAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,IAAI,uDAA0B,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;CACF;AAlDD,wCAkDC"}
1
+ {"version":3,"file":"openaiProvider.js","sourceRoot":"","sources":["../src/openaiProvider.ts"],"names":[],"mappings":"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"}
@@ -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
- return new OpenAIResponsesModel(this.#getClient(), model);
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,GAC5B;OACM,EAAE,oBAAoB,EAAE;OACxB,EAAE,0BAA0B,EAAE;AAcrC;;GAEG;AACH,MAAM,OAAO,cAAc;IACzB,OAAO,CAAU;IACjB,aAAa,CAAW;IACxB,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,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,wDAAwD;QACxD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO;gBACV,6DAA6D;gBAC7D,sBAAsB,EAAE;oBACxB,uCAAuC;oBACvC,IAAI,MAAM,CAAC;wBACT,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,mBAAmB,EAAE;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,KAAK,CAAC,QAAQ,CAAC,SAA8B;QAC3C,MAAM,KAAK,GAAG,SAAS,IAAI,eAAe,EAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,IAAI,2BAA2B,EAAE,CAAC;QAEzE,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,IAAI,0BAA0B,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;CACF"}
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
- #private;
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
+ }