openai 7.28.0 → 7.30.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 (291) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/client.d.mts +3 -0
  3. package/client.d.mts.map +1 -1
  4. package/client.d.ts +3 -0
  5. package/client.d.ts.map +1 -1
  6. package/client.js +3 -0
  7. package/client.js.map +1 -1
  8. package/client.mjs +3 -0
  9. package/client.mjs.map +1 -1
  10. package/helpers/standard-schema.d.mts +8 -3
  11. package/helpers/standard-schema.d.mts.map +1 -1
  12. package/helpers/standard-schema.d.ts +8 -3
  13. package/helpers/standard-schema.d.ts.map +1 -1
  14. package/helpers/standard-schema.js +1 -0
  15. package/helpers/standard-schema.js.map +1 -1
  16. package/helpers/standard-schema.mjs +1 -0
  17. package/helpers/standard-schema.mjs.map +1 -1
  18. package/helpers/zod.d.mts +2 -0
  19. package/helpers/zod.d.mts.map +1 -1
  20. package/helpers/zod.d.ts +2 -0
  21. package/helpers/zod.d.ts.map +1 -1
  22. package/helpers/zod.js +1 -0
  23. package/helpers/zod.js.map +1 -1
  24. package/helpers/zod.mjs +1 -0
  25. package/helpers/zod.mjs.map +1 -1
  26. package/lib/ChatCompletionStream.d.mts +2 -1
  27. package/lib/ChatCompletionStream.d.mts.map +1 -1
  28. package/lib/ChatCompletionStream.d.ts +2 -1
  29. package/lib/ChatCompletionStream.d.ts.map +1 -1
  30. package/lib/ChatCompletionStream.js +9 -2
  31. package/lib/ChatCompletionStream.js.map +1 -1
  32. package/lib/ChatCompletionStream.mjs +9 -2
  33. package/lib/ChatCompletionStream.mjs.map +1 -1
  34. package/lib/ResponsesParser.d.mts.map +1 -1
  35. package/lib/ResponsesParser.d.ts.map +1 -1
  36. package/lib/ResponsesParser.js +5 -0
  37. package/lib/ResponsesParser.js.map +1 -1
  38. package/lib/ResponsesParser.mjs +5 -0
  39. package/lib/ResponsesParser.mjs.map +1 -1
  40. package/lib/agents/agent-session-stream.d.mts +7 -0
  41. package/lib/agents/agent-session-stream.d.mts.map +1 -1
  42. package/lib/agents/agent-session-stream.d.ts +7 -0
  43. package/lib/agents/agent-session-stream.d.ts.map +1 -1
  44. package/lib/agents/agent-session-stream.js +8 -110
  45. package/lib/agents/agent-session-stream.js.map +1 -1
  46. package/lib/agents/agent-session-stream.mjs +9 -111
  47. package/lib/agents/agent-session-stream.mjs.map +1 -1
  48. package/lib/beta/agents/agent-session-create-stream.d.mts +41 -1
  49. package/lib/beta/agents/agent-session-create-stream.d.mts.map +1 -1
  50. package/lib/beta/agents/agent-session-create-stream.d.ts +41 -1
  51. package/lib/beta/agents/agent-session-create-stream.d.ts.map +1 -1
  52. package/lib/beta/agents/agent-session-create-stream.js +70 -2
  53. package/lib/beta/agents/agent-session-create-stream.js.map +1 -1
  54. package/lib/beta/agents/agent-session-create-stream.mjs +69 -2
  55. package/lib/beta/agents/agent-session-create-stream.mjs.map +1 -1
  56. package/lib/beta/agents/function-tool.d.mts.map +1 -1
  57. package/lib/beta/agents/function-tool.d.ts.map +1 -1
  58. package/lib/beta/agents/function-tool.js +22 -15
  59. package/lib/beta/agents/function-tool.js.map +1 -1
  60. package/lib/beta/agents/function-tool.mjs +22 -15
  61. package/lib/beta/agents/function-tool.mjs.map +1 -1
  62. package/lib/beta/agents/parse-result.d.mts +2 -0
  63. package/lib/beta/agents/parse-result.d.mts.map +1 -1
  64. package/lib/beta/agents/parse-result.d.ts +2 -0
  65. package/lib/beta/agents/parse-result.d.ts.map +1 -1
  66. package/lib/beta/agents/tool-dispatcher.d.mts +13 -0
  67. package/lib/beta/agents/tool-dispatcher.d.mts.map +1 -0
  68. package/lib/beta/agents/tool-dispatcher.d.ts +13 -0
  69. package/lib/beta/agents/tool-dispatcher.d.ts.map +1 -0
  70. package/lib/beta/agents/tool-dispatcher.js +185 -0
  71. package/lib/beta/agents/tool-dispatcher.js.map +1 -0
  72. package/lib/beta/agents/tool-dispatcher.mjs +181 -0
  73. package/lib/beta/agents/tool-dispatcher.mjs.map +1 -0
  74. package/lib/beta/agents/tool-error.d.mts +13 -0
  75. package/lib/beta/agents/tool-error.d.mts.map +1 -0
  76. package/lib/beta/agents/tool-error.d.ts +13 -0
  77. package/lib/beta/agents/tool-error.d.ts.map +1 -0
  78. package/lib/beta/agents/tool-error.js +3 -0
  79. package/lib/beta/agents/tool-error.js.map +1 -0
  80. package/lib/beta/agents/tool-error.mjs +2 -0
  81. package/lib/beta/agents/tool-error.mjs.map +1 -0
  82. package/lib/beta/agents/tool-stages.d.mts +12 -0
  83. package/lib/beta/agents/tool-stages.d.mts.map +1 -0
  84. package/lib/beta/agents/tool-stages.d.ts +12 -0
  85. package/lib/beta/agents/tool-stages.d.ts.map +1 -0
  86. package/lib/beta/agents/tool-stages.js +6 -0
  87. package/lib/beta/agents/tool-stages.js.map +1 -0
  88. package/lib/beta/agents/tool-stages.mjs +3 -0
  89. package/lib/beta/agents/tool-stages.mjs.map +1 -0
  90. package/lib/chat-completions/streaming.d.mts +11 -0
  91. package/lib/chat-completions/streaming.d.mts.map +1 -0
  92. package/lib/chat-completions/streaming.d.ts +11 -0
  93. package/lib/chat-completions/streaming.d.ts.map +1 -0
  94. package/lib/chat-completions/streaming.js +27 -0
  95. package/lib/chat-completions/streaming.js.map +1 -0
  96. package/lib/chat-completions/streaming.mjs +23 -0
  97. package/lib/chat-completions/streaming.mjs.map +1 -0
  98. package/package.json +1 -1
  99. package/resources/admin/organization/usage.d.mts +304 -9
  100. package/resources/admin/organization/usage.d.mts.map +1 -1
  101. package/resources/admin/organization/usage.d.ts +304 -9
  102. package/resources/admin/organization/usage.d.ts.map +1 -1
  103. package/resources/beta/agents/agents.d.mts +12 -6
  104. package/resources/beta/agents/agents.d.mts.map +1 -1
  105. package/resources/beta/agents/agents.d.ts +12 -6
  106. package/resources/beta/agents/agents.d.ts.map +1 -1
  107. package/resources/beta/agents/agents.js.map +1 -1
  108. package/resources/beta/agents/agents.mjs.map +1 -1
  109. package/resources/beta/agents/environments/templates.d.mts +6 -8
  110. package/resources/beta/agents/environments/templates.d.mts.map +1 -1
  111. package/resources/beta/agents/environments/templates.d.ts +6 -8
  112. package/resources/beta/agents/environments/templates.d.ts.map +1 -1
  113. package/resources/beta/agents/sessions/index.d.mts +1 -1
  114. package/resources/beta/agents/sessions/index.d.mts.map +1 -1
  115. package/resources/beta/agents/sessions/index.d.ts +1 -1
  116. package/resources/beta/agents/sessions/index.d.ts.map +1 -1
  117. package/resources/beta/agents/sessions/index.js +2 -2
  118. package/resources/beta/agents/sessions/index.js.map +1 -1
  119. package/resources/beta/agents/sessions/index.mjs +1 -1
  120. package/resources/beta/agents/sessions/index.mjs.map +1 -1
  121. package/resources/beta/agents/sessions/sessions.d.mts +6 -3
  122. package/resources/beta/agents/sessions/sessions.d.mts.map +1 -1
  123. package/resources/beta/agents/sessions/sessions.d.ts +6 -3
  124. package/resources/beta/agents/sessions/sessions.d.ts.map +1 -1
  125. package/resources/beta/agents/sessions/sessions.js +7 -4
  126. package/resources/beta/agents/sessions/sessions.js.map +1 -1
  127. package/resources/beta/agents/sessions/sessions.mjs +8 -5
  128. package/resources/beta/agents/sessions/sessions.mjs.map +1 -1
  129. package/resources/beta/agents/sessions/subagents/turns/turns.d.mts +2 -2
  130. package/resources/beta/agents/sessions/subagents/turns/turns.d.mts.map +1 -1
  131. package/resources/beta/agents/sessions/subagents/turns/turns.d.ts +2 -2
  132. package/resources/beta/agents/sessions/subagents/turns/turns.d.ts.map +1 -1
  133. package/resources/beta/agents/sessions/turns/index.d.mts +3 -0
  134. package/resources/beta/agents/sessions/turns/index.d.mts.map +1 -0
  135. package/resources/beta/agents/sessions/turns/index.d.ts +3 -0
  136. package/resources/beta/agents/sessions/turns/index.d.ts.map +1 -0
  137. package/resources/beta/agents/sessions/turns/index.js +9 -0
  138. package/resources/beta/agents/sessions/turns/index.js.map +1 -0
  139. package/resources/beta/agents/sessions/turns/index.mjs +4 -0
  140. package/resources/beta/agents/sessions/turns/index.mjs.map +1 -0
  141. package/resources/beta/agents/sessions/turns/items.d.mts +43 -0
  142. package/resources/beta/agents/sessions/turns/items.d.mts.map +1 -0
  143. package/resources/beta/agents/sessions/turns/items.d.ts +43 -0
  144. package/resources/beta/agents/sessions/turns/items.d.ts.map +1 -0
  145. package/resources/beta/agents/sessions/turns/items.js +40 -0
  146. package/resources/beta/agents/sessions/turns/items.js.map +1 -0
  147. package/resources/beta/agents/sessions/turns/items.mjs +36 -0
  148. package/resources/beta/agents/sessions/turns/items.mjs.map +1 -0
  149. package/resources/beta/agents/sessions/turns/turns.d.mts +128 -0
  150. package/resources/beta/agents/sessions/turns/turns.d.mts.map +1 -0
  151. package/resources/beta/agents/sessions/turns/turns.d.ts +128 -0
  152. package/resources/beta/agents/sessions/turns/turns.d.ts.map +1 -0
  153. package/resources/beta/agents/sessions/turns/turns.js +111 -0
  154. package/resources/beta/agents/sessions/turns/turns.js.map +1 -0
  155. package/resources/beta/agents/sessions/turns/turns.mjs +106 -0
  156. package/resources/beta/agents/sessions/turns/turns.mjs.map +1 -0
  157. package/resources/beta/agents/sessions/turns.d.mts +1 -123
  158. package/resources/beta/agents/sessions/turns.d.mts.map +1 -1
  159. package/resources/beta/agents/sessions/turns.d.ts +1 -123
  160. package/resources/beta/agents/sessions/turns.d.ts.map +1 -1
  161. package/resources/beta/agents/sessions/turns.js +2 -99
  162. package/resources/beta/agents/sessions/turns.js.map +1 -1
  163. package/resources/beta/agents/sessions/turns.mjs +1 -97
  164. package/resources/beta/agents/sessions/turns.mjs.map +1 -1
  165. package/resources/beta/beta.d.mts +2 -2
  166. package/resources/beta/beta.d.mts.map +1 -1
  167. package/resources/beta/beta.d.ts +2 -2
  168. package/resources/beta/beta.d.ts.map +1 -1
  169. package/resources/beta/beta.js.map +1 -1
  170. package/resources/beta/beta.mjs.map +1 -1
  171. package/resources/beta/index.d.mts +1 -1
  172. package/resources/beta/index.d.mts.map +1 -1
  173. package/resources/beta/index.d.ts +1 -1
  174. package/resources/beta/index.d.ts.map +1 -1
  175. package/resources/beta/index.js.map +1 -1
  176. package/resources/beta/index.mjs.map +1 -1
  177. package/resources/beta/responses/index.d.mts +1 -1
  178. package/resources/beta/responses/index.d.mts.map +1 -1
  179. package/resources/beta/responses/index.d.ts +1 -1
  180. package/resources/beta/responses/index.d.ts.map +1 -1
  181. package/resources/beta/responses/index.js.map +1 -1
  182. package/resources/beta/responses/index.mjs.map +1 -1
  183. package/resources/beta/responses/responses.d.mts +378 -6
  184. package/resources/beta/responses/responses.d.mts.map +1 -1
  185. package/resources/beta/responses/responses.d.ts +378 -6
  186. package/resources/beta/responses/responses.d.ts.map +1 -1
  187. package/resources/beta/responses/responses.js.map +1 -1
  188. package/resources/beta/responses/responses.mjs.map +1 -1
  189. package/resources/chat/completions/completions.d.mts +42 -8
  190. package/resources/chat/completions/completions.d.mts.map +1 -1
  191. package/resources/chat/completions/completions.d.ts +42 -8
  192. package/resources/chat/completions/completions.d.ts.map +1 -1
  193. package/resources/chat/completions/completions.js +5 -2
  194. package/resources/chat/completions/completions.js.map +1 -1
  195. package/resources/chat/completions/completions.mjs +5 -2
  196. package/resources/chat/completions/completions.mjs.map +1 -1
  197. package/resources/completions.d.mts +1 -1
  198. package/resources/completions.d.mts.map +1 -1
  199. package/resources/completions.d.ts +1 -1
  200. package/resources/completions.d.ts.map +1 -1
  201. package/resources/decisions.d.mts +196 -0
  202. package/resources/decisions.d.mts.map +1 -0
  203. package/resources/decisions.d.ts +196 -0
  204. package/resources/decisions.d.ts.map +1 -0
  205. package/resources/decisions.js +32 -0
  206. package/resources/decisions.js.map +1 -0
  207. package/resources/decisions.mjs +28 -0
  208. package/resources/decisions.mjs.map +1 -0
  209. package/resources/fine-tuning/jobs/jobs.d.mts +7 -2
  210. package/resources/fine-tuning/jobs/jobs.d.mts.map +1 -1
  211. package/resources/fine-tuning/jobs/jobs.d.ts +7 -2
  212. package/resources/fine-tuning/jobs/jobs.d.ts.map +1 -1
  213. package/resources/fine-tuning/jobs/jobs.js.map +1 -1
  214. package/resources/fine-tuning/jobs/jobs.mjs.map +1 -1
  215. package/resources/graders/grader-models.d.mts +1 -1
  216. package/resources/graders/grader-models.d.ts +1 -1
  217. package/resources/images.d.mts +4 -3
  218. package/resources/images.d.mts.map +1 -1
  219. package/resources/images.d.ts +4 -3
  220. package/resources/images.d.ts.map +1 -1
  221. package/resources/index.d.mts +1 -0
  222. package/resources/index.d.mts.map +1 -1
  223. package/resources/index.d.ts +1 -0
  224. package/resources/index.d.ts.map +1 -1
  225. package/resources/index.js +3 -1
  226. package/resources/index.js.map +1 -1
  227. package/resources/index.mjs +1 -0
  228. package/resources/index.mjs.map +1 -1
  229. package/resources/realtime/realtime.d.mts +10 -0
  230. package/resources/realtime/realtime.d.mts.map +1 -1
  231. package/resources/realtime/realtime.d.ts +10 -0
  232. package/resources/realtime/realtime.d.ts.map +1 -1
  233. package/resources/realtime/realtime.js.map +1 -1
  234. package/resources/realtime/realtime.mjs.map +1 -1
  235. package/resources/responses/responses.d.mts +380 -6
  236. package/resources/responses/responses.d.mts.map +1 -1
  237. package/resources/responses/responses.d.ts +380 -6
  238. package/resources/responses/responses.d.ts.map +1 -1
  239. package/resources/responses/responses.js.map +1 -1
  240. package/resources/responses/responses.mjs.map +1 -1
  241. package/resources/shared.d.mts +5 -0
  242. package/resources/shared.d.mts.map +1 -1
  243. package/resources/shared.d.ts +5 -0
  244. package/resources/shared.d.ts.map +1 -1
  245. package/resources/videos.d.mts +5 -0
  246. package/resources/videos.d.mts.map +1 -1
  247. package/resources/videos.d.ts +5 -0
  248. package/resources/videos.d.ts.map +1 -1
  249. package/src/client.ts +21 -0
  250. package/src/helpers/standard-schema.ts +11 -4
  251. package/src/helpers/zod.ts +4 -0
  252. package/src/lib/ChatCompletionStream.ts +10 -3
  253. package/src/lib/ResponsesParser.ts +8 -0
  254. package/src/lib/agents/agent-session-stream.ts +20 -124
  255. package/src/lib/beta/agents/agent-session-create-stream.ts +87 -1
  256. package/src/lib/beta/agents/function-tool.ts +23 -15
  257. package/src/lib/beta/agents/tool-dispatcher.ts +226 -0
  258. package/src/lib/beta/agents/tool-error.ts +12 -0
  259. package/src/lib/beta/agents/tool-stages.ts +14 -0
  260. package/src/lib/chat-completions/streaming.ts +35 -0
  261. package/src/resources/admin/organization/usage.ts +350 -9
  262. package/src/resources/beta/agents/agents.ts +14 -5
  263. package/src/resources/beta/agents/environments/templates.ts +6 -8
  264. package/src/resources/beta/agents/sessions/index.ts +7 -1
  265. package/src/resources/beta/agents/sessions/sessions.ts +16 -4
  266. package/src/resources/beta/agents/sessions/subagents/turns/turns.ts +2 -2
  267. package/src/resources/beta/agents/sessions/turns/index.ts +4 -0
  268. package/src/resources/beta/agents/sessions/turns/items.ts +79 -0
  269. package/src/resources/beta/agents/sessions/turns/turns.ts +383 -0
  270. package/src/resources/beta/agents/sessions/turns.ts +1 -373
  271. package/src/resources/beta/beta.ts +2 -0
  272. package/src/resources/beta/index.ts +1 -0
  273. package/src/resources/beta/responses/index.ts +1 -0
  274. package/src/resources/beta/responses/responses.ts +470 -5
  275. package/src/resources/chat/completions/completions.ts +65 -18
  276. package/src/resources/completions.ts +1 -1
  277. package/src/resources/decisions.ts +290 -0
  278. package/src/resources/fine-tuning/jobs/jobs.ts +7 -2
  279. package/src/resources/graders/grader-models.ts +1 -1
  280. package/src/resources/images.ts +4 -3
  281. package/src/resources/index.ts +9 -0
  282. package/src/resources/realtime/realtime.ts +10 -0
  283. package/src/resources/responses/api.md +1 -0
  284. package/src/resources/responses/responses.ts +472 -5
  285. package/src/resources/shared.ts +6 -0
  286. package/src/resources/videos.ts +6 -0
  287. package/src/version.ts +1 -1
  288. package/version.d.mts +1 -1
  289. package/version.d.ts +1 -1
  290. package/version.js +1 -1
  291. package/version.mjs +1 -1
@@ -1,15 +1,46 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.withAgentTurnResult = withAgentTurnResult;
4
+ exports.captureCreationTools = captureCreationTools;
5
+ const error_1 = require("../../../core/error.js");
6
+ const headers_1 = require("../../../internal/headers.js");
7
+ const turn_state_1 = require("../../agents/turn-state.js");
8
+ const tool_dispatcher_1 = require("./tool-dispatcher.js");
4
9
  const parse_result_1 = require("./parse-result.js");
5
10
  const result_collection_1 = require("./result-collection.js");
11
+ async function* dispatchCreationTools(source, dispatcher, signal) {
12
+ const state = new turn_state_1.TurnState();
13
+ let sessionID;
14
+ for await (const event of { [Symbol.asyncIterator]: source }) {
15
+ if (event.type === 'agent.session.created') {
16
+ sessionID ?? (sessionID = event.session.id);
17
+ }
18
+ const dispatch = state.accept(event) ? dispatcher.prepare(state.call(event), sessionID) : undefined;
19
+ yield event;
20
+ if (signal.aborted) {
21
+ return;
22
+ }
23
+ try {
24
+ await dispatch?.();
25
+ }
26
+ catch (error) {
27
+ if (signal.aborted && error instanceof error_1.APIUserAbortError) {
28
+ return;
29
+ }
30
+ throw error;
31
+ }
32
+ }
33
+ }
6
34
  /** Add beta result collection without replacing custom stream instances.
7
35
  * @internal
8
36
  */
9
- function withAgentTurnResult(stream, format) {
37
+ function withAgentTurnResult(stream, format, tools) {
10
38
  let collection;
11
39
  stream.__betaTransformIterator((source) => {
12
- collection = new result_collection_1.ResultCollection(source, undefined, undefined, stream.controller.signal);
40
+ // A tool result has its own POST endpoint, independent of creation overrides.
41
+ const { path: _path, method: _method, stream: _stream, ...options } = tools?.options ?? {};
42
+ const dispatcher = tools && new tool_dispatcher_1.AgentToolDispatcher(tools.sessions, tools.handlers, stream.controller, options);
43
+ collection = new result_collection_1.ResultCollection(dispatcher ? () => dispatchCreationTools(source, dispatcher, stream.controller.signal) : source, dispatcher ? (name) => dispatcher.canHandle(name) : undefined, undefined, stream.controller.signal);
13
44
  return () => collection.iterate();
14
45
  });
15
46
  let parsed;
@@ -22,4 +53,41 @@ function withAgentTurnResult(stream, format) {
22
53
  });
23
54
  return result;
24
55
  }
56
+ /** Remove local callbacks without changing ordinary creation requests. @internal */
57
+ function captureCreationTools(body, options) {
58
+ const descriptor = Object.getOwnPropertyDescriptor(body, 'toolHandlers');
59
+ if (!descriptor) {
60
+ return { body, options };
61
+ }
62
+ const handlers = body.toolHandlers;
63
+ if (handlers === undefined && 'value' in descriptor) {
64
+ return { body, options };
65
+ }
66
+ const descriptors = Object.getOwnPropertyDescriptors(body);
67
+ delete descriptors.toolHandlers;
68
+ const capturedOptions = { ...options };
69
+ if ('toJSON' in body || capturedOptions.body !== undefined) {
70
+ throw new error_1.OpenAIError('Creation tool handlers cannot customize request body serialization');
71
+ }
72
+ if (handlers === undefined) {
73
+ // SAFETY: Preserve request fields while removing the accessor so serialization cannot evaluate it again.
74
+ return {
75
+ body: Object.create(Object.getPrototypeOf(body), descriptors),
76
+ options: capturedOptions,
77
+ };
78
+ }
79
+ const { stream } = body;
80
+ if (stream !== true) {
81
+ throw new error_1.OpenAIError('toolHandlers requires stream: true');
82
+ }
83
+ capturedOptions.headers = (0, headers_1.buildHeaders)([capturedOptions.headers]);
84
+ descriptors.stream = { value: stream, enumerable: true, configurable: true, writable: true };
85
+ // SAFETY: Preserve request fields, omitting callbacks and fixing the validated streaming mode.
86
+ const request = Object.create(Object.getPrototypeOf(body), descriptors);
87
+ return {
88
+ body: request,
89
+ options: capturedOptions,
90
+ handlers: handlers && Object.fromEntries(Object.entries(handlers)),
91
+ };
92
+ }
25
93
  //# sourceMappingURL=agent-session-create-stream.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-session-create-stream.js","sourceRoot":"","sources":["../../../src/lib/beta/agents/agent-session-create-stream.ts"],"names":[],"mappings":";;AAiBA,kDAkBC;AAhCD,oDAAyD;AACzD,8DAAuD;AAUvD;;GAEG;AACH,SAAgB,mBAAmB,CACjC,MAAiC,EACjC,MAA6B;IAE7B,IAAI,UAA4B,CAAC;IACjC,MAAM,CAAC,uBAAuB,CAAC,CAAC,MAAM,EAAE,EAAE;QACxC,UAAU,GAAG,IAAI,oCAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC1F,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,IAAI,MAA2C,CAAC;IAChD,MAAM,MAAM,GAAgC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QAChE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,KAAN,MAAM,GAAK,IAAA,sCAAuB,EAAC,UAAU,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,EAAC;QACzF,oBAAoB,EAAE,GAAgC,EAAE;YACtD,UAAU,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"agent-session-create-stream.js","sourceRoot":"","sources":["../../../src/lib/beta/agents/agent-session-create-stream.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,42 @@
1
+ import { APIUserAbortError, OpenAIError } from "../../../core/error.mjs";
2
+ import { buildHeaders } from "../../../internal/headers.mjs";
3
+ import { TurnState } from "../../agents/turn-state.mjs";
4
+ import { AgentToolDispatcher } from "./tool-dispatcher.mjs";
1
5
  import { parseAgentResultPromise } from "./parse-result.mjs";
2
6
  import { ResultCollection } from "./result-collection.mjs";
7
+ async function* dispatchCreationTools(source, dispatcher, signal) {
8
+ const state = new TurnState();
9
+ let sessionID;
10
+ for await (const event of { [Symbol.asyncIterator]: source }) {
11
+ if (event.type === 'agent.session.created') {
12
+ sessionID ?? (sessionID = event.session.id);
13
+ }
14
+ const dispatch = state.accept(event) ? dispatcher.prepare(state.call(event), sessionID) : undefined;
15
+ yield event;
16
+ if (signal.aborted) {
17
+ return;
18
+ }
19
+ try {
20
+ await dispatch?.();
21
+ }
22
+ catch (error) {
23
+ if (signal.aborted && error instanceof APIUserAbortError) {
24
+ return;
25
+ }
26
+ throw error;
27
+ }
28
+ }
29
+ }
3
30
  /** Add beta result collection without replacing custom stream instances.
4
31
  * @internal
5
32
  */
6
- export function withAgentTurnResult(stream, format) {
33
+ export function withAgentTurnResult(stream, format, tools) {
7
34
  let collection;
8
35
  stream.__betaTransformIterator((source) => {
9
- collection = new ResultCollection(source, undefined, undefined, stream.controller.signal);
36
+ // A tool result has its own POST endpoint, independent of creation overrides.
37
+ const { path: _path, method: _method, stream: _stream, ...options } = tools?.options ?? {};
38
+ const dispatcher = tools && new AgentToolDispatcher(tools.sessions, tools.handlers, stream.controller, options);
39
+ collection = new ResultCollection(dispatcher ? () => dispatchCreationTools(source, dispatcher, stream.controller.signal) : source, dispatcher ? (name) => dispatcher.canHandle(name) : undefined, undefined, stream.controller.signal);
10
40
  return () => collection.iterate();
11
41
  });
12
42
  let parsed;
@@ -19,4 +49,41 @@ export function withAgentTurnResult(stream, format) {
19
49
  });
20
50
  return result;
21
51
  }
52
+ /** Remove local callbacks without changing ordinary creation requests. @internal */
53
+ export function captureCreationTools(body, options) {
54
+ const descriptor = Object.getOwnPropertyDescriptor(body, 'toolHandlers');
55
+ if (!descriptor) {
56
+ return { body, options };
57
+ }
58
+ const handlers = body.toolHandlers;
59
+ if (handlers === undefined && 'value' in descriptor) {
60
+ return { body, options };
61
+ }
62
+ const descriptors = Object.getOwnPropertyDescriptors(body);
63
+ delete descriptors.toolHandlers;
64
+ const capturedOptions = { ...options };
65
+ if ('toJSON' in body || capturedOptions.body !== undefined) {
66
+ throw new OpenAIError('Creation tool handlers cannot customize request body serialization');
67
+ }
68
+ if (handlers === undefined) {
69
+ // SAFETY: Preserve request fields while removing the accessor so serialization cannot evaluate it again.
70
+ return {
71
+ body: Object.create(Object.getPrototypeOf(body), descriptors),
72
+ options: capturedOptions,
73
+ };
74
+ }
75
+ const { stream } = body;
76
+ if (stream !== true) {
77
+ throw new OpenAIError('toolHandlers requires stream: true');
78
+ }
79
+ capturedOptions.headers = buildHeaders([capturedOptions.headers]);
80
+ descriptors.stream = { value: stream, enumerable: true, configurable: true, writable: true };
81
+ // SAFETY: Preserve request fields, omitting callbacks and fixing the validated streaming mode.
82
+ const request = Object.create(Object.getPrototypeOf(body), descriptors);
83
+ return {
84
+ body: request,
85
+ options: capturedOptions,
86
+ handlers: handlers && Object.fromEntries(Object.entries(handlers)),
87
+ };
88
+ }
22
89
  //# sourceMappingURL=agent-session-create-stream.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-session-create-stream.mjs","sourceRoot":"","sources":["../../../src/lib/beta/agents/agent-session-create-stream.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,2BAAuB;AACzD,OAAO,EAAE,gBAAgB,EAAE,gCAA4B;AAUvD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAiC,EACjC,MAA6B;IAE7B,IAAI,UAA4B,CAAC;IACjC,MAAM,CAAC,uBAAuB,CAAC,CAAC,MAAM,EAAE,EAAE;QACxC,UAAU,GAAG,IAAI,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC1F,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,IAAI,MAA2C,CAAC;IAChD,MAAM,MAAM,GAAgC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QAChE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,KAAN,MAAM,GAAK,uBAAuB,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,EAAC;QACzF,oBAAoB,EAAE,GAAgC,EAAE;YACtD,UAAU,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"agent-session-create-stream.mjs","sourceRoot":"","sources":["../../../src/lib/beta/agents/agent-session-create-stream.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"function-tool.d.mts","sourceRoot":"","sources":["../../../src/lib/beta/agents/function-tool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,8CAA0C;AAC1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,kCAA8B;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,kDAA8C;AAG5E,mFAAmF;AACnF,MAAM,WAAW,iBAAiB;IAChC,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,4BAA4B,CAAC;IACjE,+FAA+F;IAC/F,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;CACpC;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,SAAS,EACpC,IAAI,EAAE,yBAAyB,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,CAAC,GACtE,iBAAiB,CA+BnB"}
1
+ {"version":3,"file":"function-tool.d.mts","sourceRoot":"","sources":["../../../src/lib/beta/agents/function-tool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,8CAA0C;AAC1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,kCAA8B;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,kDAA8C;AAK5E,mFAAmF;AACnF,MAAM,WAAW,iBAAiB;IAChC,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,4BAA4B,CAAC;IACjE,+FAA+F;IAC/F,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;CACpC;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,SAAS,EACpC,IAAI,EAAE,yBAAyB,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,CAAC,GACtE,iBAAiB,CAqCnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"function-tool.d.ts","sourceRoot":"","sources":["../../../src/lib/beta/agents/function-tool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,6CAA0C;AAC1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,iCAA8B;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,iDAA8C;AAG5E,mFAAmF;AACnF,MAAM,WAAW,iBAAiB;IAChC,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,4BAA4B,CAAC;IACjE,+FAA+F;IAC/F,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;CACpC;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,SAAS,EACpC,IAAI,EAAE,yBAAyB,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,CAAC,GACtE,iBAAiB,CA+BnB"}
1
+ {"version":3,"file":"function-tool.d.ts","sourceRoot":"","sources":["../../../src/lib/beta/agents/function-tool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,6CAA0C;AAC1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,iCAA8B;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,iDAA8C;AAK5E,mFAAmF;AACnF,MAAM,WAAW,iBAAiB;IAChC,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,4BAA4B,CAAC;IACjE,+FAA+F;IAC/F,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;CACpC;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,SAAS,EACpC,IAAI,EAAE,yBAAyB,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,CAAC,GACtE,iBAAiB,CAqCnB"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.functionTool = functionTool;
4
4
  const error_1 = require("../../../core/error.js");
5
5
  const tool_output_1 = require("./tool-output.js");
6
+ const tool_stages_1 = require("./tool-stages.js");
6
7
  /**
7
8
  * Adapts a `zodResponsesFunction` or `standardResponsesFunction` to beta Agents.
8
9
  * Pass `definition` to `agent.tools` and register `handler` under `name` in
@@ -19,6 +20,26 @@ function functionTool(tool) {
19
20
  if (!execute || !tool.parameters) {
20
21
  throw new error_1.OpenAIError('Agents function tools require a callback and argument schema');
21
22
  }
23
+ const handler = async (arguments_, setStage) => {
24
+ setStage?.('arguments');
25
+ const parsed = parse(JSON.stringify(arguments_));
26
+ setStage?.('execution');
27
+ const result = await execute(parsed);
28
+ setStage?.('output');
29
+ if (Array.isArray(result)) {
30
+ return result.length > 0 && result.every(tool_output_1.isInputContent) ? result : JSON.stringify(result);
31
+ }
32
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Existing schema-tool callbacks return arbitrary application values; adapt them to the Agents dispatcher's output contract.
33
+ if (typeof result === 'object' || typeof result === 'string') {
34
+ return result;
35
+ }
36
+ const text = result === undefined ? 'undefined' : JSON.stringify(result);
37
+ if (text === undefined) {
38
+ throw new error_1.OpenAIError('Tool output must be JSON serializable');
39
+ }
40
+ return text;
41
+ };
42
+ Object.defineProperty(handler, tool_stages_1.toolStages, { value: true });
22
43
  return {
23
44
  name: tool.name,
24
45
  definition: {
@@ -28,21 +49,7 @@ function functionTool(tool) {
28
49
  parameters: tool.parameters,
29
50
  ...(tool.defer_loading === undefined ? {} : { defer_loading: tool.defer_loading }),
30
51
  },
31
- handler: async (arguments_) => {
32
- const result = await execute(parse(JSON.stringify(arguments_)));
33
- if (Array.isArray(result)) {
34
- return result.length > 0 && result.every(tool_output_1.isInputContent) ? result : JSON.stringify(result);
35
- }
36
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Existing schema-tool callbacks return arbitrary application values; adapt them to the Agents dispatcher's output contract.
37
- if (typeof result === 'object' || typeof result === 'string') {
38
- return result;
39
- }
40
- const text = result === undefined ? 'undefined' : JSON.stringify(result);
41
- if (text === undefined) {
42
- throw new error_1.OpenAIError('Tool output must be JSON serializable');
43
- }
44
- return text;
45
- },
52
+ handler,
46
53
  };
47
54
  }
48
55
  //# sourceMappingURL=function-tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"function-tool.js","sourceRoot":"","sources":["../../../src/lib/beta/agents/function-tool.ts"],"names":[],"mappings":";;AA0BA,oCAiCC;AA3DD,kDAAkD;AAIlD,kDAA+C;AAY/C;;;;;;;;;GASG;AACH,SAAgB,YAAY,CAC1B,IAAuE;IAEvE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;IAC7B,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,IAAI,mBAAW,CAAC,8DAA8D,CAAC,CAAC;IACxF,CAAC;IACD,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,UAAU,EAAE;YACV,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;YACnC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;SACnF;QACD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;YAC5B,MAAM,MAAM,GAAY,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACzE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,4BAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC7F,CAAC;YACD,qLAAqL;YACrL,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC7D,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACzE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,MAAM,IAAI,mBAAW,CAAC,uCAAuC,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"function-tool.js","sourceRoot":"","sources":["../../../src/lib/beta/agents/function-tool.ts"],"names":[],"mappings":";;AA4BA,oCAuCC;AAnED,kDAAkD;AAIlD,kDAA+C;AAC/C,kDAA2C;AAa3C;;;;;;;;;GASG;AACH,SAAgB,YAAY,CAC1B,IAAuE;IAEvE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;IAC7B,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,IAAI,mBAAW,CAAC,8DAA8D,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,OAAO,GAAsB,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;QAChE,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC;QACxB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACjD,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC;QACxB,MAAM,MAAM,GAAY,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9C,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QACrB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,4BAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC7F,CAAC;QACD,qLAAqL;QACrL,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7D,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,mBAAW,CAAC,uCAAuC,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,wBAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,UAAU,EAAE;YACV,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;YACnC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;SACnF;QACD,OAAO;KACR,CAAC;AACJ,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { OpenAIError } from "../../../core/error.mjs";
2
2
  import { isInputContent } from "./tool-output.mjs";
3
+ import { toolStages } from "./tool-stages.mjs";
3
4
  /**
4
5
  * Adapts a `zodResponsesFunction` or `standardResponsesFunction` to beta Agents.
5
6
  * Pass `definition` to `agent.tools` and register `handler` under `name` in
@@ -16,6 +17,26 @@ export function functionTool(tool) {
16
17
  if (!execute || !tool.parameters) {
17
18
  throw new OpenAIError('Agents function tools require a callback and argument schema');
18
19
  }
20
+ const handler = async (arguments_, setStage) => {
21
+ setStage?.('arguments');
22
+ const parsed = parse(JSON.stringify(arguments_));
23
+ setStage?.('execution');
24
+ const result = await execute(parsed);
25
+ setStage?.('output');
26
+ if (Array.isArray(result)) {
27
+ return result.length > 0 && result.every(isInputContent) ? result : JSON.stringify(result);
28
+ }
29
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Existing schema-tool callbacks return arbitrary application values; adapt them to the Agents dispatcher's output contract.
30
+ if (typeof result === 'object' || typeof result === 'string') {
31
+ return result;
32
+ }
33
+ const text = result === undefined ? 'undefined' : JSON.stringify(result);
34
+ if (text === undefined) {
35
+ throw new OpenAIError('Tool output must be JSON serializable');
36
+ }
37
+ return text;
38
+ };
39
+ Object.defineProperty(handler, toolStages, { value: true });
19
40
  return {
20
41
  name: tool.name,
21
42
  definition: {
@@ -25,21 +46,7 @@ export function functionTool(tool) {
25
46
  parameters: tool.parameters,
26
47
  ...(tool.defer_loading === undefined ? {} : { defer_loading: tool.defer_loading }),
27
48
  },
28
- handler: async (arguments_) => {
29
- const result = await execute(parse(JSON.stringify(arguments_)));
30
- if (Array.isArray(result)) {
31
- return result.length > 0 && result.every(isInputContent) ? result : JSON.stringify(result);
32
- }
33
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Existing schema-tool callbacks return arbitrary application values; adapt them to the Agents dispatcher's output contract.
34
- if (typeof result === 'object' || typeof result === 'string') {
35
- return result;
36
- }
37
- const text = result === undefined ? 'undefined' : JSON.stringify(result);
38
- if (text === undefined) {
39
- throw new OpenAIError('Tool output must be JSON serializable');
40
- }
41
- return text;
42
- },
49
+ handler,
43
50
  };
44
51
  }
45
52
  //# sourceMappingURL=function-tool.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"function-tool.mjs","sourceRoot":"","sources":["../../../src/lib/beta/agents/function-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gCAA4B;AAIlD,OAAO,EAAE,cAAc,EAAE,0BAAsB;AAY/C;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAuE;IAEvE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;IAC7B,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,IAAI,WAAW,CAAC,8DAA8D,CAAC,CAAC;IACxF,CAAC;IACD,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,UAAU,EAAE;YACV,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;YACnC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;SACnF;QACD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;YAC5B,MAAM,MAAM,GAAY,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACzE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC7F,CAAC;YACD,qLAAqL;YACrL,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC7D,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACzE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,MAAM,IAAI,WAAW,CAAC,uCAAuC,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"function-tool.mjs","sourceRoot":"","sources":["../../../src/lib/beta/agents/function-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gCAA4B;AAIlD,OAAO,EAAE,cAAc,EAAE,0BAAsB;AAC/C,OAAO,EAAE,UAAU,EAAE,0BAAsB;AAa3C;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAuE;IAEvE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;IAC7B,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,IAAI,WAAW,CAAC,8DAA8D,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,OAAO,GAAsB,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;QAChE,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC;QACxB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACjD,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC;QACxB,MAAM,MAAM,GAAY,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9C,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QACrB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC7F,CAAC;QACD,qLAAqL;QACrL,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7D,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,WAAW,CAAC,uCAAuC,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,UAAU,EAAE;YACV,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;YACnC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;SACnF;QACD,OAAO;KACR,CAAC;AACJ,CAAC"}
@@ -53,6 +53,7 @@ export declare function captureAgentOutput(input: SessionCreateParams, options?:
53
53
  service_tier?: "auto" | "default" | "flex" | "priority" | "fast" | null;
54
54
  tools?: Array<import("../../../resources/beta.mjs").AgentToolParam> | null;
55
55
  };
56
+ toolHandlers?: never;
56
57
  stream?: false;
57
58
  environment: import("../../../resources/beta.mjs").EnvironmentParam;
58
59
  agent_id?: string;
@@ -79,6 +80,7 @@ export declare function captureAgentOutput(input: SessionCreateParams, options?:
79
80
  service_tier?: "auto" | "default" | "flex" | "priority" | "fast" | null;
80
81
  tools?: Array<import("../../../resources/beta.mjs").AgentToolParam> | null;
81
82
  };
83
+ toolHandlers?: Record<string, import("../../agents/agent-session-stream.mjs").AgentToolHandler>;
82
84
  stream: true;
83
85
  environment: import("../../../resources/beta.mjs").EnvironmentParam;
84
86
  agent_id?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"parse-result.d.mts","sourceRoot":"","sources":["../../../src/lib/beta/agents/parse-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,8CAA0C;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,6DAAyD;AAC5F,OAAO,KAAK,EAAE,eAAe,EAAE,gCAA4B;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,kDAA8C;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,kCAA8B;AAI5E,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAuB1G;AAYD,gBAAgB;AAChB,wBAAgB,iBAAiB,CAAC,CAAC,GAAG,OAAO,EAC3C,MAAM,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,GACzC,iBAAiB,CAAC,CAAC,CAAC,GAAG,SAAS,CAiBlC;AAuBD,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;sBAzClE,CAAC;2BACZ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2EV;AAED,gBAAgB;AAChB,wBAAsB,uBAAuB,CAAC,CAAC,EAC7C,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,EAChC,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAEzB"}
1
+ {"version":3,"file":"parse-result.d.mts","sourceRoot":"","sources":["../../../src/lib/beta/agents/parse-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,8CAA0C;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,6DAAyD;AAC5F,OAAO,KAAK,EAAE,eAAe,EAAE,gCAA4B;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,kDAA8C;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,kCAA8B;AAI5E,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAuB1G;AAYD,gBAAgB;AAChB,wBAAgB,iBAAiB,CAAC,CAAC,GAAG,OAAO,EAC3C,MAAM,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,GACzC,iBAAiB,CAAC,CAAC,CAAC,GAAG,SAAS,CAiBlC;AAuBD,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;sBAzClE,CAAC;2BACZ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2EV;AAED,gBAAgB;AAChB,wBAAsB,uBAAuB,CAAC,CAAC,EAC7C,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,EAChC,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAEzB"}
@@ -53,6 +53,7 @@ export declare function captureAgentOutput(input: SessionCreateParams, options?:
53
53
  service_tier?: "auto" | "default" | "flex" | "priority" | "fast" | null;
54
54
  tools?: Array<import("../../../resources/beta.js").AgentToolParam> | null;
55
55
  };
56
+ toolHandlers?: never;
56
57
  stream?: false;
57
58
  environment: import("../../../resources/beta.js").EnvironmentParam;
58
59
  agent_id?: string;
@@ -79,6 +80,7 @@ export declare function captureAgentOutput(input: SessionCreateParams, options?:
79
80
  service_tier?: "auto" | "default" | "flex" | "priority" | "fast" | null;
80
81
  tools?: Array<import("../../../resources/beta.js").AgentToolParam> | null;
81
82
  };
83
+ toolHandlers?: Record<string, import("../../agents/agent-session-stream.js").AgentToolHandler>;
82
84
  stream: true;
83
85
  environment: import("../../../resources/beta.js").EnvironmentParam;
84
86
  agent_id?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"parse-result.d.ts","sourceRoot":"","sources":["../../../src/lib/beta/agents/parse-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,6CAA0C;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,4DAAyD;AAC5F,OAAO,KAAK,EAAE,eAAe,EAAE,+BAA4B;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,iDAA8C;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,iCAA8B;AAI5E,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAuB1G;AAYD,gBAAgB;AAChB,wBAAgB,iBAAiB,CAAC,CAAC,GAAG,OAAO,EAC3C,MAAM,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,GACzC,iBAAiB,CAAC,CAAC,CAAC,GAAG,SAAS,CAiBlC;AAuBD,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;sBAzClE,CAAC;2BACZ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2EV;AAED,gBAAgB;AAChB,wBAAsB,uBAAuB,CAAC,CAAC,EAC7C,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,EAChC,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAEzB"}
1
+ {"version":3,"file":"parse-result.d.ts","sourceRoot":"","sources":["../../../src/lib/beta/agents/parse-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,6CAA0C;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,4DAAyD;AAC5F,OAAO,KAAK,EAAE,eAAe,EAAE,+BAA4B;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,iDAA8C;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,iCAA8B;AAI5E,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAuB1G;AAYD,gBAAgB;AAChB,wBAAgB,iBAAiB,CAAC,CAAC,GAAG,OAAO,EAC3C,MAAM,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,GACzC,iBAAiB,CAAC,CAAC,CAAC,GAAG,SAAS,CAiBlC;AAuBD,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;sBAzClE,CAAC;2BACZ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2EV;AAED,gBAAgB;AAChB,wBAAsB,uBAAuB,CAAC,CAAC,EAC7C,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,EAChC,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAEzB"}
@@ -0,0 +1,13 @@
1
+ import type { RequestOptions } from "../../../internal/request-options.mjs";
2
+ import type { AgentToolHandler, AgentSessionStreamParams } from "../../agents/agent-session-stream.mjs";
3
+ import type { AgentFunctionCallItem } from "../../../resources/beta/agents/agents.mjs";
4
+ import type { Sessions } from "../../../resources/beta/agents/sessions/sessions.mjs";
5
+ /** Shared local function dispatch for creation and follow-up streams. @internal */
6
+ export declare class AgentToolDispatcher {
7
+ #private;
8
+ constructor(sessions: Sessions, handlers: Record<string, AgentToolHandler>, controller: AbortController, options?: RequestOptions, onToolError?: AgentSessionStreamParams['onToolError']);
9
+ canHandle(name: string): boolean;
10
+ /** Capture routing and arguments before the caller can mutate the yielded event. */
11
+ prepare(call: AgentFunctionCallItem | undefined, sessionID: string | undefined): (() => Promise<void>) | undefined;
12
+ }
13
+ //# sourceMappingURL=tool-dispatcher.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-dispatcher.d.mts","sourceRoot":"","sources":["../../../src/lib/beta/agents/tool-dispatcher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,8CAA0C;AAOxE,OAAO,KAAK,EACV,gBAAgB,EAEhB,wBAAwB,EACzB,8CAA0C;AAC3C,OAAO,KAAK,EACV,qBAAqB,EAGtB,kDAA8C;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,6DAAyD;AA+BjF,mFAAmF;AACnF,qBAAa,mBAAmB;;gBAQ5B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC1C,UAAU,EAAE,eAAe,EAC3B,OAAO,CAAC,EAAE,cAAc,EACxB,WAAW,CAAC,EAAE,wBAAwB,CAAC,aAAa,CAAC;IAavD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhC,oFAAoF;IACpF,OAAO,CACL,IAAI,EAAE,qBAAqB,GAAG,SAAS,EACvC,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS;CA6IrC"}
@@ -0,0 +1,13 @@
1
+ import type { RequestOptions } from "../../../internal/request-options.js";
2
+ import type { AgentToolHandler, AgentSessionStreamParams } from "../../agents/agent-session-stream.js";
3
+ import type { AgentFunctionCallItem } from "../../../resources/beta/agents/agents.js";
4
+ import type { Sessions } from "../../../resources/beta/agents/sessions/sessions.js";
5
+ /** Shared local function dispatch for creation and follow-up streams. @internal */
6
+ export declare class AgentToolDispatcher {
7
+ #private;
8
+ constructor(sessions: Sessions, handlers: Record<string, AgentToolHandler>, controller: AbortController, options?: RequestOptions, onToolError?: AgentSessionStreamParams['onToolError']);
9
+ canHandle(name: string): boolean;
10
+ /** Capture routing and arguments before the caller can mutate the yielded event. */
11
+ prepare(call: AgentFunctionCallItem | undefined, sessionID: string | undefined): (() => Promise<void>) | undefined;
12
+ }
13
+ //# sourceMappingURL=tool-dispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-dispatcher.d.ts","sourceRoot":"","sources":["../../../src/lib/beta/agents/tool-dispatcher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,6CAA0C;AAOxE,OAAO,KAAK,EACV,gBAAgB,EAEhB,wBAAwB,EACzB,6CAA0C;AAC3C,OAAO,KAAK,EACV,qBAAqB,EAGtB,iDAA8C;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,4DAAyD;AA+BjF,mFAAmF;AACnF,qBAAa,mBAAmB;;gBAQ5B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC1C,UAAU,EAAE,eAAe,EAC3B,OAAO,CAAC,EAAE,cAAc,EACxB,WAAW,CAAC,EAAE,wBAAwB,CAAC,aAAa,CAAC;IAavD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhC,oFAAoF;IACpF,OAAO,CACL,IAAI,EAAE,qBAAqB,GAAG,SAAS,EACvC,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS;CA6IrC"}
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ var _AgentToolDispatcher_instances, _AgentToolDispatcher_handlers, _AgentToolDispatcher_options, _AgentToolDispatcher_sessions, _AgentToolDispatcher_controller, _AgentToolDispatcher_onToolError, _AgentToolDispatcher_result, _AgentToolDispatcher_checkAbort, _AgentToolDispatcher_abortError, _AgentToolDispatcher_wait, _AgentToolDispatcher_submit;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.AgentToolDispatcher = void 0;
5
+ const tslib_1 = require("../../../internal/tslib.js");
6
+ const error_1 = require("../../../core/error.js");
7
+ const headers_1 = require("../../../internal/headers.js");
8
+ const uuid_1 = require("../../../internal/utils/uuid.js");
9
+ const values_1 = require("../../../internal/utils/values.js");
10
+ const tool_output_1 = require("./tool-output.js");
11
+ const tool_stages_1 = require("./tool-stages.js");
12
+ function normalizedOutput(value) {
13
+ if (value === null) {
14
+ return null;
15
+ }
16
+ if (typeof value === 'string' || (Array.isArray(value) && value.every(tool_output_1.isInputContent))) {
17
+ return value;
18
+ }
19
+ throw new error_1.OpenAIError('Tool output must be text, content, a JSON object, or null');
20
+ }
21
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- The public AgentToolOutput contract accepts arbitrary JSON-serializable object results.
22
+ function toolResult(call, value) {
23
+ const output = (0, values_1.isObj)(value) ? JSON.stringify(value) : value;
24
+ // Detect unserializable callback results inside the redacted failure boundary.
25
+ const serialized = JSON.stringify(output);
26
+ if (serialized === undefined) {
27
+ throw new error_1.OpenAIError('Tool output must be JSON serializable');
28
+ }
29
+ return {
30
+ type: 'agent.session.input.tool_result',
31
+ turn_id: call.turn_id,
32
+ call_id: call.call_id,
33
+ success: true,
34
+ output: normalizedOutput(typeof output === 'string' ? output : JSON.parse(serialized)),
35
+ };
36
+ }
37
+ /** Shared local function dispatch for creation and follow-up streams. @internal */
38
+ class AgentToolDispatcher {
39
+ constructor(sessions, handlers, controller, options, onToolError) {
40
+ _AgentToolDispatcher_instances.add(this);
41
+ _AgentToolDispatcher_handlers.set(this, void 0);
42
+ _AgentToolDispatcher_options.set(this, void 0);
43
+ _AgentToolDispatcher_sessions.set(this, void 0);
44
+ _AgentToolDispatcher_controller.set(this, void 0);
45
+ _AgentToolDispatcher_onToolError.set(this, void 0);
46
+ tslib_1.__classPrivateFieldSet(this, _AgentToolDispatcher_sessions, sessions, "f");
47
+ tslib_1.__classPrivateFieldSet(this, _AgentToolDispatcher_controller, controller, "f");
48
+ tslib_1.__classPrivateFieldSet(this, _AgentToolDispatcher_onToolError, onToolError, "f");
49
+ tslib_1.__classPrivateFieldSet(this, _AgentToolDispatcher_handlers, new Map(Object.entries(handlers)), "f");
50
+ const headers = (0, headers_1.buildHeaders)([options?.headers]);
51
+ headers.values.delete('idempotency-key');
52
+ headers.nulls.delete('idempotency-key');
53
+ const { idempotencyKey: _key, ...rest } = options ?? {};
54
+ tslib_1.__classPrivateFieldSet(this, _AgentToolDispatcher_options, { ...rest, headers, signal: controller.signal }, "f");
55
+ }
56
+ canHandle(name) {
57
+ return typeof tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_handlers, "f").get(name) === 'function';
58
+ }
59
+ /** Capture routing and arguments before the caller can mutate the yielded event. */
60
+ prepare(call, sessionID) {
61
+ const handler = call && tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_handlers, "f").get(call.name);
62
+ if (!call || typeof handler !== 'function') {
63
+ return;
64
+ }
65
+ if (!sessionID) {
66
+ throw new error_1.OpenAIError('Tool call received before the session creation event');
67
+ }
68
+ const snapshot = structuredClone(call);
69
+ return async () => {
70
+ tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_instances, "m", _AgentToolDispatcher_checkAbort).call(this);
71
+ const result = await tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_instances, "m", _AgentToolDispatcher_result).call(this, snapshot, handler, sessionID);
72
+ tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_instances, "m", _AgentToolDispatcher_checkAbort).call(this);
73
+ await tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_instances, "m", _AgentToolDispatcher_submit).call(this, sessionID, result);
74
+ };
75
+ }
76
+ }
77
+ exports.AgentToolDispatcher = AgentToolDispatcher;
78
+ _AgentToolDispatcher_handlers = new WeakMap(), _AgentToolDispatcher_options = new WeakMap(), _AgentToolDispatcher_sessions = new WeakMap(), _AgentToolDispatcher_controller = new WeakMap(), _AgentToolDispatcher_onToolError = new WeakMap(), _AgentToolDispatcher_instances = new WeakSet(), _AgentToolDispatcher_result = async function _AgentToolDispatcher_result(call, handler, sessionID) {
79
+ let stage = 'arguments';
80
+ try {
81
+ const args = typeof call.arguments === 'string' ? JSON.parse(call.arguments) : call.arguments;
82
+ if (!(0, values_1.isObj)(args)) {
83
+ throw new error_1.OpenAIError('Function arguments must be a JSON object');
84
+ }
85
+ stage = 'execution';
86
+ // SAFETY: Arguments were parsed as JSON and checked to be a non-null non-array object before invoking the handler.
87
+ const arguments_ = args;
88
+ const output = await tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_instances, "m", _AgentToolDispatcher_wait).call(this, () => tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_onToolError, "f") && handler[tool_stages_1.toolStages]
89
+ ? handler(arguments_, (value) => {
90
+ stage = value;
91
+ })
92
+ : handler(arguments_));
93
+ stage = 'output';
94
+ return toolResult(call, output);
95
+ }
96
+ catch (error) {
97
+ tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_instances, "m", _AgentToolDispatcher_checkAbort).call(this);
98
+ if (tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_onToolError, "f")) {
99
+ const failure = Object.freeze({
100
+ error,
101
+ stage,
102
+ tool_name: call.name,
103
+ session_id: sessionID,
104
+ turn_id: call.turn_id,
105
+ call_id: call.call_id,
106
+ });
107
+ try {
108
+ await tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_instances, "m", _AgentToolDispatcher_wait).call(this, () => tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_onToolError, "f")?.call(this, failure));
109
+ }
110
+ catch {
111
+ // Observers must not prevent the original sanitized tool failure from being submitted.
112
+ tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_instances, "m", _AgentToolDispatcher_checkAbort).call(this);
113
+ }
114
+ }
115
+ return {
116
+ type: 'agent.session.input.tool_result',
117
+ turn_id: call.turn_id,
118
+ call_id: call.call_id,
119
+ success: false,
120
+ error: 'Tool handler failed.',
121
+ };
122
+ }
123
+ }, _AgentToolDispatcher_checkAbort = function _AgentToolDispatcher_checkAbort() {
124
+ if (tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_controller, "f").signal.aborted) {
125
+ throw tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_instances, "m", _AgentToolDispatcher_abortError).call(this);
126
+ }
127
+ }, _AgentToolDispatcher_abortError = function _AgentToolDispatcher_abortError() {
128
+ const error = new error_1.APIUserAbortError();
129
+ Object.defineProperty(error, 'cause', {
130
+ value: tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_controller, "f").signal.reason,
131
+ writable: true,
132
+ configurable: true,
133
+ });
134
+ return error;
135
+ }, _AgentToolDispatcher_wait = async function _AgentToolDispatcher_wait(action) {
136
+ let onAbort;
137
+ // oxlint-disable-next-line promise/avoid-new -- Bridge the caller's AbortSignal while a handler or registration delay is pending.
138
+ const aborted = new Promise((_resolve, reject) => {
139
+ onAbort = () => reject(tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_instances, "m", _AgentToolDispatcher_abortError).call(this));
140
+ tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_controller, "f").signal.addEventListener('abort', onAbort, { once: true });
141
+ });
142
+ try {
143
+ tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_instances, "m", _AgentToolDispatcher_checkAbort).call(this);
144
+ // Capture synchronous throws before racing cancellation, so both promises
145
+ // always have rejection handlers even if the callback aborts and throws.
146
+ const invoke = async () => await action();
147
+ return await Promise.race([invoke(), aborted]);
148
+ }
149
+ finally {
150
+ if (onAbort) {
151
+ tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_controller, "f").signal.removeEventListener('abort', onAbort);
152
+ }
153
+ }
154
+ }, _AgentToolDispatcher_submit = async function _AgentToolDispatcher_submit(sessionID, result, key = (0, uuid_1.uuid4)(), attempt = 0) {
155
+ tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_instances, "m", _AgentToolDispatcher_checkAbort).call(this);
156
+ try {
157
+ await tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_sessions, "f").events.create(sessionID, { events: [result], 'Idempotency-Key': key }, tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_options, "f"));
158
+ }
159
+ catch (error) {
160
+ const delay = [100, 300, 600][attempt];
161
+ if (delay === undefined ||
162
+ !(error instanceof error_1.BadRequestError) ||
163
+ error.code !== 'invalid_request_error' ||
164
+ !error.error ||
165
+ !('message' in error.error) ||
166
+ error.error.message !== `Unknown pending tool call: ${result.call_id}`) {
167
+ throw error;
168
+ }
169
+ let timer;
170
+ try {
171
+ await tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_instances, "m", _AgentToolDispatcher_wait).call(this, () =>
172
+ // oxlint-disable-next-line promise/avoid-new -- Own the registration timer so cancellation clears it promptly.
173
+ new Promise((resolve) => {
174
+ timer = setTimeout(resolve, delay);
175
+ }));
176
+ }
177
+ finally {
178
+ if (timer !== undefined) {
179
+ clearTimeout(timer);
180
+ }
181
+ }
182
+ await tslib_1.__classPrivateFieldGet(this, _AgentToolDispatcher_instances, "m", _AgentToolDispatcher_submit).call(this, sessionID, result, key, attempt + 1);
183
+ }
184
+ };
185
+ //# sourceMappingURL=tool-dispatcher.js.map