openai 7.16.0 → 7.17.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 (631) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/_vendor/zod-to-json-schema/Options.d.mts.map +1 -1
  3. package/_vendor/zod-to-json-schema/Options.d.ts.map +1 -1
  4. package/_vendor/zod-to-json-schema/Options.js +2 -0
  5. package/_vendor/zod-to-json-schema/Options.js.map +1 -1
  6. package/_vendor/zod-to-json-schema/Options.mjs +2 -0
  7. package/_vendor/zod-to-json-schema/Options.mjs.map +1 -1
  8. package/_vendor/zod-to-json-schema/parseDef.d.mts.map +1 -1
  9. package/_vendor/zod-to-json-schema/parseDef.d.ts.map +1 -1
  10. package/_vendor/zod-to-json-schema/parseDef.js +1 -0
  11. package/_vendor/zod-to-json-schema/parseDef.js.map +1 -1
  12. package/_vendor/zod-to-json-schema/parseDef.mjs +1 -0
  13. package/_vendor/zod-to-json-schema/parseDef.mjs.map +1 -1
  14. package/_vendor/zod-to-json-schema/parsers/bigint.d.mts.map +1 -1
  15. package/_vendor/zod-to-json-schema/parsers/bigint.d.ts.map +1 -1
  16. package/_vendor/zod-to-json-schema/parsers/bigint.js +2 -0
  17. package/_vendor/zod-to-json-schema/parsers/bigint.js.map +1 -1
  18. package/_vendor/zod-to-json-schema/parsers/bigint.mjs +2 -0
  19. package/_vendor/zod-to-json-schema/parsers/bigint.mjs.map +1 -1
  20. package/_vendor/zod-to-json-schema/parsers/literal.d.mts.map +1 -1
  21. package/_vendor/zod-to-json-schema/parsers/literal.d.ts.map +1 -1
  22. package/_vendor/zod-to-json-schema/parsers/literal.js +1 -0
  23. package/_vendor/zod-to-json-schema/parsers/literal.js.map +1 -1
  24. package/_vendor/zod-to-json-schema/parsers/literal.mjs +1 -0
  25. package/_vendor/zod-to-json-schema/parsers/literal.mjs.map +1 -1
  26. package/_vendor/zod-to-json-schema/parsers/null.d.mts.map +1 -1
  27. package/_vendor/zod-to-json-schema/parsers/null.d.ts.map +1 -1
  28. package/_vendor/zod-to-json-schema/parsers/null.js +1 -0
  29. package/_vendor/zod-to-json-schema/parsers/null.js.map +1 -1
  30. package/_vendor/zod-to-json-schema/parsers/null.mjs +1 -0
  31. package/_vendor/zod-to-json-schema/parsers/null.mjs.map +1 -1
  32. package/_vendor/zod-to-json-schema/parsers/nullable.d.mts.map +1 -1
  33. package/_vendor/zod-to-json-schema/parsers/nullable.d.ts.map +1 -1
  34. package/_vendor/zod-to-json-schema/parsers/nullable.js +4 -0
  35. package/_vendor/zod-to-json-schema/parsers/nullable.js.map +1 -1
  36. package/_vendor/zod-to-json-schema/parsers/nullable.mjs +4 -0
  37. package/_vendor/zod-to-json-schema/parsers/nullable.mjs.map +1 -1
  38. package/_vendor/zod-to-json-schema/parsers/number.d.mts.map +1 -1
  39. package/_vendor/zod-to-json-schema/parsers/number.d.ts.map +1 -1
  40. package/_vendor/zod-to-json-schema/parsers/number.js +2 -0
  41. package/_vendor/zod-to-json-schema/parsers/number.js.map +1 -1
  42. package/_vendor/zod-to-json-schema/parsers/number.mjs +2 -0
  43. package/_vendor/zod-to-json-schema/parsers/number.mjs.map +1 -1
  44. package/_vendor/zod-to-json-schema/parsers/optional.d.mts.map +1 -1
  45. package/_vendor/zod-to-json-schema/parsers/optional.d.ts.map +1 -1
  46. package/_vendor/zod-to-json-schema/parsers/optional.js +6 -7
  47. package/_vendor/zod-to-json-schema/parsers/optional.js.map +1 -1
  48. package/_vendor/zod-to-json-schema/parsers/optional.mjs +6 -7
  49. package/_vendor/zod-to-json-schema/parsers/optional.mjs.map +1 -1
  50. package/_vendor/zod-to-json-schema/parsers/record.d.mts.map +1 -1
  51. package/_vendor/zod-to-json-schema/parsers/record.d.ts.map +1 -1
  52. package/_vendor/zod-to-json-schema/parsers/record.js +2 -0
  53. package/_vendor/zod-to-json-schema/parsers/record.js.map +1 -1
  54. package/_vendor/zod-to-json-schema/parsers/record.mjs +2 -0
  55. package/_vendor/zod-to-json-schema/parsers/record.mjs.map +1 -1
  56. package/_vendor/zod-to-json-schema/parsers/string.d.mts.map +1 -1
  57. package/_vendor/zod-to-json-schema/parsers/string.d.ts.map +1 -1
  58. package/_vendor/zod-to-json-schema/parsers/string.js +1 -0
  59. package/_vendor/zod-to-json-schema/parsers/string.js.map +1 -1
  60. package/_vendor/zod-to-json-schema/parsers/string.mjs +1 -0
  61. package/_vendor/zod-to-json-schema/parsers/string.mjs.map +1 -1
  62. package/_vendor/zod-to-json-schema/parsers/union.d.mts.map +1 -1
  63. package/_vendor/zod-to-json-schema/parsers/union.d.ts.map +1 -1
  64. package/_vendor/zod-to-json-schema/parsers/union.js +3 -0
  65. package/_vendor/zod-to-json-schema/parsers/union.js.map +1 -1
  66. package/_vendor/zod-to-json-schema/parsers/union.mjs +3 -0
  67. package/_vendor/zod-to-json-schema/parsers/union.mjs.map +1 -1
  68. package/_vendor/zod-to-json-schema/util.d.mts.map +1 -1
  69. package/_vendor/zod-to-json-schema/util.d.ts.map +1 -1
  70. package/_vendor/zod-to-json-schema/util.js +1 -0
  71. package/_vendor/zod-to-json-schema/util.js.map +1 -1
  72. package/_vendor/zod-to-json-schema/util.mjs +1 -0
  73. package/_vendor/zod-to-json-schema/util.mjs.map +1 -1
  74. package/_vendor/zod-to-json-schema/zodToJsonSchema.d.mts.map +1 -1
  75. package/_vendor/zod-to-json-schema/zodToJsonSchema.d.ts.map +1 -1
  76. package/_vendor/zod-to-json-schema/zodToJsonSchema.js +2 -0
  77. package/_vendor/zod-to-json-schema/zodToJsonSchema.js.map +1 -1
  78. package/_vendor/zod-to-json-schema/zodToJsonSchema.mjs +2 -0
  79. package/_vendor/zod-to-json-schema/zodToJsonSchema.mjs.map +1 -1
  80. package/auth/subject-token-providers.d.mts.map +1 -1
  81. package/auth/subject-token-providers.d.ts.map +1 -1
  82. package/auth/subject-token-providers.js +6 -1
  83. package/auth/subject-token-providers.js.map +1 -1
  84. package/auth/subject-token-providers.mjs +6 -1
  85. package/auth/subject-token-providers.mjs.map +1 -1
  86. package/auth/workload-identity-auth.d.mts.map +1 -1
  87. package/auth/workload-identity-auth.d.ts.map +1 -1
  88. package/auth/workload-identity-auth.js +9 -0
  89. package/auth/workload-identity-auth.js.map +1 -1
  90. package/auth/workload-identity-auth.mjs +9 -0
  91. package/auth/workload-identity-auth.mjs.map +1 -1
  92. package/auth/x509-transport.d.mts.map +1 -1
  93. package/auth/x509-transport.d.ts.map +1 -1
  94. package/auth/x509-transport.js +11 -0
  95. package/auth/x509-transport.js.map +1 -1
  96. package/auth/x509-transport.mjs +11 -0
  97. package/auth/x509-transport.mjs.map +1 -1
  98. package/azure.d.mts.map +1 -1
  99. package/azure.d.ts.map +1 -1
  100. package/azure.js +3 -0
  101. package/azure.js.map +1 -1
  102. package/azure.mjs +3 -0
  103. package/azure.mjs.map +1 -1
  104. package/bedrock.d.mts.map +1 -1
  105. package/bedrock.d.ts.map +1 -1
  106. package/bedrock.js +5 -0
  107. package/bedrock.js.map +1 -1
  108. package/bedrock.mjs +5 -0
  109. package/bedrock.mjs.map +1 -1
  110. package/beta/realtime/internal-base.d.mts.map +1 -1
  111. package/beta/realtime/internal-base.d.ts.map +1 -1
  112. package/beta/realtime/internal-base.js +1 -0
  113. package/beta/realtime/internal-base.js.map +1 -1
  114. package/beta/realtime/internal-base.mjs +1 -0
  115. package/beta/realtime/internal-base.mjs.map +1 -1
  116. package/beta/realtime/websocket.d.mts.map +1 -1
  117. package/beta/realtime/websocket.d.ts.map +1 -1
  118. package/beta/realtime/websocket.js +9 -1
  119. package/beta/realtime/websocket.js.map +1 -1
  120. package/beta/realtime/websocket.mjs +9 -1
  121. package/beta/realtime/websocket.mjs.map +1 -1
  122. package/beta/realtime/ws.d.mts.map +1 -1
  123. package/beta/realtime/ws.d.ts.map +1 -1
  124. package/beta/realtime/ws.js +3 -0
  125. package/beta/realtime/ws.js.map +1 -1
  126. package/beta/realtime/ws.mjs +3 -0
  127. package/beta/realtime/ws.mjs.map +1 -1
  128. package/client.d.mts +1 -0
  129. package/client.d.mts.map +1 -1
  130. package/client.d.ts +1 -0
  131. package/client.d.ts.map +1 -1
  132. package/client.js +27 -6
  133. package/client.js.map +1 -1
  134. package/client.mjs +27 -6
  135. package/client.mjs.map +1 -1
  136. package/core/EventEmitter.d.mts.map +1 -1
  137. package/core/EventEmitter.d.ts.map +1 -1
  138. package/core/EventEmitter.js +15 -0
  139. package/core/EventEmitter.js.map +1 -1
  140. package/core/EventEmitter.mjs +15 -0
  141. package/core/EventEmitter.mjs.map +1 -1
  142. package/core/streaming.d.mts +1 -0
  143. package/core/streaming.d.mts.map +1 -1
  144. package/core/streaming.d.ts +1 -0
  145. package/core/streaming.d.ts.map +1 -1
  146. package/core/streaming.js +28 -1
  147. package/core/streaming.js.map +1 -1
  148. package/core/streaming.mjs +28 -1
  149. package/core/streaming.mjs.map +1 -1
  150. package/helpers/audio.d.mts.map +1 -1
  151. package/helpers/audio.d.ts.map +1 -1
  152. package/helpers/audio.js +2 -0
  153. package/helpers/audio.js.map +1 -1
  154. package/helpers/audio.mjs +2 -0
  155. package/helpers/audio.mjs.map +1 -1
  156. package/helpers/standard-schema.d.mts.map +1 -1
  157. package/helpers/standard-schema.d.ts.map +1 -1
  158. package/helpers/standard-schema.js +28 -18
  159. package/helpers/standard-schema.js.map +1 -1
  160. package/helpers/standard-schema.mjs +28 -18
  161. package/helpers/standard-schema.mjs.map +1 -1
  162. package/helpers/zod-v3-strict-schema.d.mts.map +1 -1
  163. package/helpers/zod-v3-strict-schema.d.ts.map +1 -1
  164. package/helpers/zod-v3-strict-schema.js +5 -0
  165. package/helpers/zod-v3-strict-schema.js.map +1 -1
  166. package/helpers/zod-v3-strict-schema.mjs +5 -0
  167. package/helpers/zod-v3-strict-schema.mjs.map +1 -1
  168. package/helpers/zod.d.mts.map +1 -1
  169. package/helpers/zod.d.ts.map +1 -1
  170. package/helpers/zod.js +16 -1
  171. package/helpers/zod.js.map +1 -1
  172. package/helpers/zod.mjs +17 -2
  173. package/helpers/zod.mjs.map +1 -1
  174. package/internal/assistant-stream-delta.d.mts.map +1 -1
  175. package/internal/assistant-stream-delta.d.ts.map +1 -1
  176. package/internal/assistant-stream-delta.js +8 -1
  177. package/internal/assistant-stream-delta.js.map +1 -1
  178. package/internal/assistant-stream-delta.mjs +8 -1
  179. package/internal/assistant-stream-delta.mjs.map +1 -1
  180. package/internal/auth/x509-credential-options.d.mts.map +1 -1
  181. package/internal/auth/x509-credential-options.d.ts.map +1 -1
  182. package/internal/auth/x509-credential-options.js +3 -0
  183. package/internal/auth/x509-credential-options.js.map +1 -1
  184. package/internal/auth/x509-credential-options.mjs +3 -0
  185. package/internal/auth/x509-credential-options.mjs.map +1 -1
  186. package/internal/auth/x509-token-exchange.d.mts.map +1 -1
  187. package/internal/auth/x509-token-exchange.d.ts.map +1 -1
  188. package/internal/auth/x509-token-exchange.js +2 -0
  189. package/internal/auth/x509-token-exchange.js.map +1 -1
  190. package/internal/auth/x509-token-exchange.mjs +2 -0
  191. package/internal/auth/x509-token-exchange.mjs.map +1 -1
  192. package/internal/auth/x509-transport-capability.d.mts.map +1 -1
  193. package/internal/auth/x509-transport-capability.d.ts.map +1 -1
  194. package/internal/auth/x509-transport-capability.js +1 -0
  195. package/internal/auth/x509-transport-capability.js.map +1 -1
  196. package/internal/auth/x509-transport-capability.mjs +1 -0
  197. package/internal/auth/x509-transport-capability.mjs.map +1 -1
  198. package/internal/auth/x509-transport-state.mjs +1 -0
  199. package/internal/auth/x509-workload-identity-auth.d.mts.map +1 -1
  200. package/internal/auth/x509-workload-identity-auth.d.ts.map +1 -1
  201. package/internal/auth/x509-workload-identity-auth.js +11 -0
  202. package/internal/auth/x509-workload-identity-auth.js.map +1 -1
  203. package/internal/auth/x509-workload-identity-auth.mjs +11 -0
  204. package/internal/auth/x509-workload-identity-auth.mjs.map +1 -1
  205. package/internal/bedrock.d.mts.map +1 -1
  206. package/internal/bedrock.d.ts.map +1 -1
  207. package/internal/bedrock.js +17 -1
  208. package/internal/bedrock.js.map +1 -1
  209. package/internal/bedrock.mjs +17 -1
  210. package/internal/bedrock.mjs.map +1 -1
  211. package/internal/decoders/line.d.mts.map +1 -1
  212. package/internal/decoders/line.d.ts.map +1 -1
  213. package/internal/decoders/line.js +1 -0
  214. package/internal/decoders/line.js.map +1 -1
  215. package/internal/decoders/line.mjs +1 -0
  216. package/internal/decoders/line.mjs.map +1 -1
  217. package/internal/parse.d.mts +1 -0
  218. package/internal/parse.d.mts.map +1 -1
  219. package/internal/parse.d.ts +1 -0
  220. package/internal/parse.d.ts.map +1 -1
  221. package/internal/parse.js.map +1 -1
  222. package/internal/parse.mjs.map +1 -1
  223. package/internal/provider.d.mts.map +1 -1
  224. package/internal/provider.d.ts.map +1 -1
  225. package/internal/provider.js +3 -0
  226. package/internal/provider.js.map +1 -1
  227. package/internal/provider.mjs +3 -0
  228. package/internal/provider.mjs.map +1 -1
  229. package/internal/qs/stringify.d.mts.map +1 -1
  230. package/internal/qs/stringify.d.ts.map +1 -1
  231. package/internal/qs/stringify.js +3 -0
  232. package/internal/qs/stringify.js.map +1 -1
  233. package/internal/qs/stringify.mjs +3 -0
  234. package/internal/qs/stringify.mjs.map +1 -1
  235. package/internal/qs/utils.d.mts.map +1 -1
  236. package/internal/qs/utils.d.ts.map +1 -1
  237. package/internal/qs/utils.js +15 -3
  238. package/internal/qs/utils.js.map +1 -1
  239. package/internal/qs/utils.mjs +15 -3
  240. package/internal/qs/utils.mjs.map +1 -1
  241. package/internal/responses/response-accumulator.d.mts.map +1 -1
  242. package/internal/responses/response-accumulator.d.ts.map +1 -1
  243. package/internal/responses/response-accumulator.js +20 -4
  244. package/internal/responses/response-accumulator.js.map +1 -1
  245. package/internal/responses/response-accumulator.mjs +20 -4
  246. package/internal/responses/response-accumulator.mjs.map +1 -1
  247. package/internal/to-file.js.map +1 -1
  248. package/internal/to-file.mjs.map +1 -1
  249. package/internal/uploads.d.mts.map +1 -1
  250. package/internal/uploads.d.ts.map +1 -1
  251. package/internal/uploads.js +10 -0
  252. package/internal/uploads.js.map +1 -1
  253. package/internal/uploads.mjs +10 -0
  254. package/internal/uploads.mjs.map +1 -1
  255. package/internal/utils/abort.d.mts.map +1 -1
  256. package/internal/utils/abort.d.ts.map +1 -1
  257. package/internal/utils/abort.js +9 -2
  258. package/internal/utils/abort.js.map +1 -1
  259. package/internal/utils/abort.mjs +9 -2
  260. package/internal/utils/abort.mjs.map +1 -1
  261. package/internal/utils/bytes.d.mts.map +1 -1
  262. package/internal/utils/bytes.d.ts.map +1 -1
  263. package/internal/utils/bytes.js +2 -0
  264. package/internal/utils/bytes.js.map +1 -1
  265. package/internal/utils/bytes.mjs +2 -0
  266. package/internal/utils/bytes.mjs.map +1 -1
  267. package/internal/utils/path.d.mts.map +1 -1
  268. package/internal/utils/path.d.ts.map +1 -1
  269. package/internal/utils/path.js +2 -0
  270. package/internal/utils/path.js.map +1 -1
  271. package/internal/utils/path.mjs +2 -0
  272. package/internal/utils/path.mjs.map +1 -1
  273. package/internal/utils/sleep.d.mts +1 -1
  274. package/internal/utils/sleep.d.mts.map +1 -1
  275. package/internal/utils/sleep.d.ts +1 -1
  276. package/internal/utils/sleep.d.ts.map +1 -1
  277. package/internal/utils/sleep.js +51 -1
  278. package/internal/utils/sleep.js.map +1 -1
  279. package/internal/utils/sleep.mjs +51 -1
  280. package/internal/utils/sleep.mjs.map +1 -1
  281. package/internal/ws-adapter-browser.d.mts.map +1 -1
  282. package/internal/ws-adapter-browser.d.ts.map +1 -1
  283. package/internal/ws-adapter-browser.js +2 -0
  284. package/internal/ws-adapter-browser.js.map +1 -1
  285. package/internal/ws-adapter-browser.mjs +2 -0
  286. package/internal/ws-adapter-browser.mjs.map +1 -1
  287. package/internal/ws.d.mts +9 -0
  288. package/internal/ws.d.mts.map +1 -1
  289. package/internal/ws.d.ts +9 -0
  290. package/internal/ws.d.ts.map +1 -1
  291. package/internal/ws.js +36 -4
  292. package/internal/ws.js.map +1 -1
  293. package/internal/ws.mjs +35 -4
  294. package/internal/ws.mjs.map +1 -1
  295. package/lib/AbstractChatCompletionRunner.d.mts.map +1 -1
  296. package/lib/AbstractChatCompletionRunner.d.ts.map +1 -1
  297. package/lib/AbstractChatCompletionRunner.js +41 -16
  298. package/lib/AbstractChatCompletionRunner.js.map +1 -1
  299. package/lib/AbstractChatCompletionRunner.mjs +42 -17
  300. package/lib/AbstractChatCompletionRunner.mjs.map +1 -1
  301. package/lib/AssistantStream.d.mts.map +1 -1
  302. package/lib/AssistantStream.d.ts.map +1 -1
  303. package/lib/AssistantStream.js +19 -5
  304. package/lib/AssistantStream.js.map +1 -1
  305. package/lib/AssistantStream.mjs +20 -6
  306. package/lib/AssistantStream.mjs.map +1 -1
  307. package/lib/ChatCompletionRunner.d.mts.map +1 -1
  308. package/lib/ChatCompletionRunner.d.ts.map +1 -1
  309. package/lib/ChatCompletionRunner.js +1 -0
  310. package/lib/ChatCompletionRunner.js.map +1 -1
  311. package/lib/ChatCompletionRunner.mjs +1 -0
  312. package/lib/ChatCompletionRunner.mjs.map +1 -1
  313. package/lib/ChatCompletionStream.d.mts +6 -1
  314. package/lib/ChatCompletionStream.d.mts.map +1 -1
  315. package/lib/ChatCompletionStream.d.ts +6 -1
  316. package/lib/ChatCompletionStream.d.ts.map +1 -1
  317. package/lib/ChatCompletionStream.js +63 -7
  318. package/lib/ChatCompletionStream.js.map +1 -1
  319. package/lib/ChatCompletionStream.mjs +64 -8
  320. package/lib/ChatCompletionStream.mjs.map +1 -1
  321. package/lib/EventEmitter.d.mts.map +1 -1
  322. package/lib/EventEmitter.d.ts.map +1 -1
  323. package/lib/EventEmitter.js +15 -0
  324. package/lib/EventEmitter.js.map +1 -1
  325. package/lib/EventEmitter.mjs +15 -0
  326. package/lib/EventEmitter.mjs.map +1 -1
  327. package/lib/EventStream.d.mts +2 -0
  328. package/lib/EventStream.d.mts.map +1 -1
  329. package/lib/EventStream.d.ts +2 -0
  330. package/lib/EventStream.d.ts.map +1 -1
  331. package/lib/EventStream.js +111 -14
  332. package/lib/EventStream.js.map +1 -1
  333. package/lib/EventStream.mjs +111 -14
  334. package/lib/EventStream.mjs.map +1 -1
  335. package/lib/ResponsesParser.d.mts.map +1 -1
  336. package/lib/ResponsesParser.d.ts.map +1 -1
  337. package/lib/ResponsesParser.js +4 -0
  338. package/lib/ResponsesParser.js.map +1 -1
  339. package/lib/ResponsesParser.mjs +4 -0
  340. package/lib/ResponsesParser.mjs.map +1 -1
  341. package/lib/RunnableFunction.d.mts.map +1 -1
  342. package/lib/RunnableFunction.d.ts.map +1 -1
  343. package/lib/RunnableFunction.js.map +1 -1
  344. package/lib/RunnableFunction.mjs.map +1 -1
  345. package/lib/agents/agent-session-stream.d.mts.map +1 -1
  346. package/lib/agents/agent-session-stream.d.ts.map +1 -1
  347. package/lib/agents/agent-session-stream.js +5 -2
  348. package/lib/agents/agent-session-stream.js.map +1 -1
  349. package/lib/agents/agent-session-stream.mjs +5 -2
  350. package/lib/agents/agent-session-stream.mjs.map +1 -1
  351. package/lib/embeddings.d.mts.map +1 -1
  352. package/lib/embeddings.d.ts.map +1 -1
  353. package/lib/embeddings.js +2 -0
  354. package/lib/embeddings.js.map +1 -1
  355. package/lib/embeddings.mjs +2 -0
  356. package/lib/embeddings.mjs.map +1 -1
  357. package/lib/live/transcript-grouper.d.mts.map +1 -1
  358. package/lib/live/transcript-grouper.d.ts.map +1 -1
  359. package/lib/live/transcript-grouper.js +8 -2
  360. package/lib/live/transcript-grouper.js.map +1 -1
  361. package/lib/live/transcript-grouper.mjs +8 -2
  362. package/lib/live/transcript-grouper.mjs.map +1 -1
  363. package/lib/parser.d.mts.map +1 -1
  364. package/lib/parser.d.ts.map +1 -1
  365. package/lib/parser.js +13 -0
  366. package/lib/parser.js.map +1 -1
  367. package/lib/parser.mjs +13 -0
  368. package/lib/parser.mjs.map +1 -1
  369. package/lib/responses/ResponseInputItems.d.mts.map +1 -1
  370. package/lib/responses/ResponseInputItems.d.ts.map +1 -1
  371. package/lib/responses/ResponseInputItems.js +11 -0
  372. package/lib/responses/ResponseInputItems.js.map +1 -1
  373. package/lib/responses/ResponseInputItems.mjs +11 -0
  374. package/lib/responses/ResponseInputItems.mjs.map +1 -1
  375. package/lib/responses/ResponseStream.d.mts.map +1 -1
  376. package/lib/responses/ResponseStream.d.ts.map +1 -1
  377. package/lib/responses/ResponseStream.js +7 -3
  378. package/lib/responses/ResponseStream.js.map +1 -1
  379. package/lib/responses/ResponseStream.mjs +8 -4
  380. package/lib/responses/ResponseStream.mjs.map +1 -1
  381. package/lib/transform.d.mts.map +1 -1
  382. package/lib/transform.d.ts.map +1 -1
  383. package/lib/transform.js +69 -33
  384. package/lib/transform.js.map +1 -1
  385. package/lib/transform.mjs +69 -33
  386. package/lib/transform.mjs.map +1 -1
  387. package/lib/webrtc/connection.d.mts.map +1 -1
  388. package/lib/webrtc/connection.d.ts.map +1 -1
  389. package/lib/webrtc/connection.js +6 -1
  390. package/lib/webrtc/connection.js.map +1 -1
  391. package/lib/webrtc/connection.mjs +6 -1
  392. package/lib/webrtc/connection.mjs.map +1 -1
  393. package/lib/webrtc/data-channel.d.mts.map +1 -1
  394. package/lib/webrtc/data-channel.d.ts.map +1 -1
  395. package/lib/webrtc/data-channel.js +9 -1
  396. package/lib/webrtc/data-channel.js.map +1 -1
  397. package/lib/webrtc/data-channel.mjs +9 -1
  398. package/lib/webrtc/data-channel.mjs.map +1 -1
  399. package/lib/webrtc/subscriptions.d.mts.map +1 -1
  400. package/lib/webrtc/subscriptions.d.ts.map +1 -1
  401. package/lib/webrtc/subscriptions.js +2 -0
  402. package/lib/webrtc/subscriptions.js.map +1 -1
  403. package/lib/webrtc/subscriptions.mjs +2 -0
  404. package/lib/webrtc/subscriptions.mjs.map +1 -1
  405. package/lib/webrtc/types.d.mts.map +1 -1
  406. package/lib/webrtc/types.d.ts.map +1 -1
  407. package/package.json +1 -1
  408. package/providers/bedrock/aws.d.mts.map +1 -1
  409. package/providers/bedrock/aws.d.ts.map +1 -1
  410. package/providers/bedrock/aws.js +4 -0
  411. package/providers/bedrock/aws.js.map +1 -1
  412. package/providers/bedrock/aws.mjs +4 -0
  413. package/providers/bedrock/aws.mjs.map +1 -1
  414. package/realtime/internal-base.d.mts.map +1 -1
  415. package/realtime/internal-base.d.ts.map +1 -1
  416. package/realtime/internal-base.js +1 -0
  417. package/realtime/internal-base.js.map +1 -1
  418. package/realtime/internal-base.mjs +1 -0
  419. package/realtime/internal-base.mjs.map +1 -1
  420. package/realtime/websocket.d.mts.map +1 -1
  421. package/realtime/websocket.d.ts.map +1 -1
  422. package/realtime/websocket.js +9 -1
  423. package/realtime/websocket.js.map +1 -1
  424. package/realtime/websocket.mjs +9 -1
  425. package/realtime/websocket.mjs.map +1 -1
  426. package/realtime/ws.d.mts.map +1 -1
  427. package/realtime/ws.d.ts.map +1 -1
  428. package/realtime/ws.js +3 -0
  429. package/realtime/ws.js.map +1 -1
  430. package/realtime/ws.mjs +3 -0
  431. package/realtime/ws.mjs.map +1 -1
  432. package/resources/beta/agents/agents.d.mts +2 -1
  433. package/resources/beta/agents/agents.d.mts.map +1 -1
  434. package/resources/beta/agents/agents.d.ts +2 -1
  435. package/resources/beta/agents/agents.d.ts.map +1 -1
  436. package/resources/beta/agents/agents.js.map +1 -1
  437. package/resources/beta/agents/agents.mjs.map +1 -1
  438. package/resources/beta/beta.d.mts +2 -2
  439. package/resources/beta/beta.d.mts.map +1 -1
  440. package/resources/beta/beta.d.ts +2 -2
  441. package/resources/beta/beta.d.ts.map +1 -1
  442. package/resources/beta/beta.js.map +1 -1
  443. package/resources/beta/beta.mjs.map +1 -1
  444. package/resources/beta/index.d.mts +1 -1
  445. package/resources/beta/index.d.mts.map +1 -1
  446. package/resources/beta/index.d.ts +1 -1
  447. package/resources/beta/index.d.ts.map +1 -1
  448. package/resources/beta/index.js.map +1 -1
  449. package/resources/beta/index.mjs.map +1 -1
  450. package/resources/beta/responses/index.d.mts +1 -1
  451. package/resources/beta/responses/index.d.mts.map +1 -1
  452. package/resources/beta/responses/index.d.ts +1 -1
  453. package/resources/beta/responses/index.d.ts.map +1 -1
  454. package/resources/beta/responses/index.js.map +1 -1
  455. package/resources/beta/responses/index.mjs.map +1 -1
  456. package/resources/beta/responses/internal-base.d.mts +3 -0
  457. package/resources/beta/responses/internal-base.d.mts.map +1 -1
  458. package/resources/beta/responses/internal-base.d.ts +3 -0
  459. package/resources/beta/responses/internal-base.d.ts.map +1 -1
  460. package/resources/beta/responses/internal-base.js +21 -12
  461. package/resources/beta/responses/internal-base.js.map +1 -1
  462. package/resources/beta/responses/internal-base.mjs +21 -12
  463. package/resources/beta/responses/internal-base.mjs.map +1 -1
  464. package/resources/beta/responses/responses.d.mts +51 -3
  465. package/resources/beta/responses/responses.d.mts.map +1 -1
  466. package/resources/beta/responses/responses.d.ts +51 -3
  467. package/resources/beta/responses/responses.d.ts.map +1 -1
  468. package/resources/beta/responses/responses.js.map +1 -1
  469. package/resources/beta/responses/responses.mjs.map +1 -1
  470. package/resources/beta/responses/ws-base.d.mts +5 -1
  471. package/resources/beta/responses/ws-base.d.mts.map +1 -1
  472. package/resources/beta/responses/ws-base.d.ts +5 -1
  473. package/resources/beta/responses/ws-base.d.ts.map +1 -1
  474. package/resources/beta/responses/ws-base.js +2 -4
  475. package/resources/beta/responses/ws-base.js.map +1 -1
  476. package/resources/beta/responses/ws-base.mjs +2 -4
  477. package/resources/beta/responses/ws-base.mjs.map +1 -1
  478. package/resources/beta/responses/ws.d.mts +2 -0
  479. package/resources/beta/responses/ws.d.mts.map +1 -1
  480. package/resources/beta/responses/ws.d.ts +2 -0
  481. package/resources/beta/responses/ws.d.ts.map +1 -1
  482. package/resources/beta/responses/ws.js +12 -3
  483. package/resources/beta/responses/ws.js.map +1 -1
  484. package/resources/beta/responses/ws.mjs +12 -3
  485. package/resources/beta/responses/ws.mjs.map +1 -1
  486. package/resources/live/forks/internal-base.d.mts +3 -0
  487. package/resources/live/forks/internal-base.d.mts.map +1 -1
  488. package/resources/live/forks/internal-base.d.ts +3 -0
  489. package/resources/live/forks/internal-base.d.ts.map +1 -1
  490. package/resources/live/forks/internal-base.js +21 -5
  491. package/resources/live/forks/internal-base.js.map +1 -1
  492. package/resources/live/forks/internal-base.mjs +21 -5
  493. package/resources/live/forks/internal-base.mjs.map +1 -1
  494. package/resources/live/internal-base.d.mts +3 -0
  495. package/resources/live/internal-base.d.mts.map +1 -1
  496. package/resources/live/internal-base.d.ts +3 -0
  497. package/resources/live/internal-base.d.ts.map +1 -1
  498. package/resources/live/internal-base.js +21 -5
  499. package/resources/live/internal-base.js.map +1 -1
  500. package/resources/live/internal-base.mjs +21 -5
  501. package/resources/live/internal-base.mjs.map +1 -1
  502. package/resources/live/sideband/internal-base.d.mts +3 -0
  503. package/resources/live/sideband/internal-base.d.mts.map +1 -1
  504. package/resources/live/sideband/internal-base.d.ts +3 -0
  505. package/resources/live/sideband/internal-base.d.ts.map +1 -1
  506. package/resources/live/sideband/internal-base.js +21 -5
  507. package/resources/live/sideband/internal-base.js.map +1 -1
  508. package/resources/live/sideband/internal-base.mjs +21 -5
  509. package/resources/live/sideband/internal-base.mjs.map +1 -1
  510. package/resources/responses/internal-base.d.mts +3 -0
  511. package/resources/responses/internal-base.d.mts.map +1 -1
  512. package/resources/responses/internal-base.d.ts +3 -0
  513. package/resources/responses/internal-base.d.ts.map +1 -1
  514. package/resources/responses/internal-base.js +21 -12
  515. package/resources/responses/internal-base.js.map +1 -1
  516. package/resources/responses/internal-base.mjs +21 -12
  517. package/resources/responses/internal-base.mjs.map +1 -1
  518. package/resources/responses/responses.d.mts +36 -3
  519. package/resources/responses/responses.d.mts.map +1 -1
  520. package/resources/responses/responses.d.ts +36 -3
  521. package/resources/responses/responses.d.ts.map +1 -1
  522. package/resources/responses/responses.js.map +1 -1
  523. package/resources/responses/responses.mjs.map +1 -1
  524. package/resources/responses/ws-base.d.mts +5 -1
  525. package/resources/responses/ws-base.d.mts.map +1 -1
  526. package/resources/responses/ws-base.d.ts +5 -1
  527. package/resources/responses/ws-base.d.ts.map +1 -1
  528. package/resources/responses/ws-base.js +2 -4
  529. package/resources/responses/ws-base.js.map +1 -1
  530. package/resources/responses/ws-base.mjs +2 -4
  531. package/resources/responses/ws-base.mjs.map +1 -1
  532. package/resources/responses/ws.d.mts +2 -0
  533. package/resources/responses/ws.d.mts.map +1 -1
  534. package/resources/responses/ws.d.ts +2 -0
  535. package/resources/responses/ws.d.ts.map +1 -1
  536. package/resources/responses/ws.js +12 -3
  537. package/resources/responses/ws.js.map +1 -1
  538. package/resources/responses/ws.mjs +12 -3
  539. package/resources/responses/ws.mjs.map +1 -1
  540. package/src/_vendor/zod-to-json-schema/Options.ts +2 -0
  541. package/src/_vendor/zod-to-json-schema/parseDef.ts +1 -0
  542. package/src/_vendor/zod-to-json-schema/parsers/bigint.ts +2 -0
  543. package/src/_vendor/zod-to-json-schema/parsers/literal.ts +1 -0
  544. package/src/_vendor/zod-to-json-schema/parsers/null.ts +1 -0
  545. package/src/_vendor/zod-to-json-schema/parsers/nullable.ts +4 -0
  546. package/src/_vendor/zod-to-json-schema/parsers/number.ts +2 -0
  547. package/src/_vendor/zod-to-json-schema/parsers/optional.ts +6 -7
  548. package/src/_vendor/zod-to-json-schema/parsers/record.ts +2 -0
  549. package/src/_vendor/zod-to-json-schema/parsers/string.ts +1 -0
  550. package/src/_vendor/zod-to-json-schema/parsers/union.ts +3 -0
  551. package/src/_vendor/zod-to-json-schema/util.ts +1 -0
  552. package/src/_vendor/zod-to-json-schema/zodToJsonSchema.ts +3 -1
  553. package/src/auth/subject-token-providers.ts +6 -1
  554. package/src/auth/workload-identity-auth.ts +10 -1
  555. package/src/auth/x509-transport.ts +13 -2
  556. package/src/azure.ts +3 -0
  557. package/src/bedrock.ts +5 -0
  558. package/src/beta/realtime/internal-base.ts +2 -0
  559. package/src/beta/realtime/websocket.ts +11 -1
  560. package/src/beta/realtime/ws.ts +3 -0
  561. package/src/client.ts +35 -3
  562. package/src/core/EventEmitter.ts +15 -0
  563. package/src/core/streaming.ts +30 -2
  564. package/src/helpers/audio.ts +2 -0
  565. package/src/helpers/standard-schema.ts +31 -19
  566. package/src/helpers/zod-v3-strict-schema.ts +8 -2
  567. package/src/helpers/zod.ts +32 -13
  568. package/src/internal/assistant-stream-delta.ts +7 -1
  569. package/src/internal/auth/x509-credential-options.ts +3 -0
  570. package/src/internal/auth/x509-token-exchange.ts +10 -1
  571. package/src/internal/auth/x509-transport-capability.ts +2 -1
  572. package/src/internal/auth/x509-workload-identity-auth.ts +13 -8
  573. package/src/internal/bedrock.ts +15 -0
  574. package/src/internal/decoders/line.ts +1 -0
  575. package/src/internal/parse.ts +1 -0
  576. package/src/internal/provider.ts +3 -0
  577. package/src/internal/qs/stringify.ts +3 -0
  578. package/src/internal/qs/utils.ts +14 -3
  579. package/src/internal/responses/response-accumulator.ts +34 -4
  580. package/src/internal/to-file.ts +1 -1
  581. package/src/internal/uploads.ts +11 -1
  582. package/src/internal/utils/abort.ts +7 -2
  583. package/src/internal/utils/bytes.ts +2 -0
  584. package/src/internal/utils/path.ts +2 -0
  585. package/src/internal/utils/sleep.ts +52 -1
  586. package/src/internal/ws-adapter-browser.ts +2 -0
  587. package/src/internal/ws.ts +44 -4
  588. package/src/lib/AbstractChatCompletionRunner.ts +40 -17
  589. package/src/lib/AssistantStream.ts +31 -20
  590. package/src/lib/ChatCompletionRunner.ts +1 -0
  591. package/src/lib/ChatCompletionStream.ts +81 -14
  592. package/src/lib/EventEmitter.ts +15 -0
  593. package/src/lib/EventStream.ts +93 -3
  594. package/src/lib/ResponsesParser.ts +5 -0
  595. package/src/lib/RunnableFunction.ts +4 -1
  596. package/src/lib/agents/agent-session-stream.ts +5 -3
  597. package/src/lib/embeddings.ts +3 -1
  598. package/src/lib/live/transcript-grouper.ts +4 -0
  599. package/src/lib/parser.ts +16 -2
  600. package/src/lib/responses/ResponseInputItems.ts +11 -0
  601. package/src/lib/responses/ResponseStream.ts +6 -3
  602. package/src/lib/transform.ts +70 -35
  603. package/src/lib/webrtc/connection.ts +5 -1
  604. package/src/lib/webrtc/data-channel.ts +7 -0
  605. package/src/lib/webrtc/subscriptions.ts +3 -0
  606. package/src/lib/webrtc/types.ts +1 -0
  607. package/src/providers/bedrock/aws.ts +5 -1
  608. package/src/realtime/internal-base.ts +2 -0
  609. package/src/realtime/websocket.ts +11 -1
  610. package/src/realtime/ws.ts +3 -0
  611. package/src/resources/beta/agents/agents.ts +2 -0
  612. package/src/resources/beta/beta.ts +2 -0
  613. package/src/resources/beta/index.ts +1 -0
  614. package/src/resources/beta/responses/index.ts +1 -0
  615. package/src/resources/beta/responses/internal-base.ts +24 -11
  616. package/src/resources/beta/responses/responses.ts +58 -0
  617. package/src/resources/beta/responses/ws-base.ts +7 -5
  618. package/src/resources/beta/responses/ws.ts +21 -6
  619. package/src/resources/live/forks/internal-base.ts +24 -5
  620. package/src/resources/live/internal-base.ts +24 -5
  621. package/src/resources/live/sideband/internal-base.ts +24 -5
  622. package/src/resources/responses/api.md +1 -0
  623. package/src/resources/responses/internal-base.ts +24 -11
  624. package/src/resources/responses/responses.ts +41 -0
  625. package/src/resources/responses/ws-base.ts +7 -5
  626. package/src/resources/responses/ws.ts +21 -6
  627. package/src/version.ts +1 -1
  628. package/version.d.mts +1 -1
  629. package/version.d.ts +1 -1
  630. package/version.js +1 -1
  631. package/version.mjs +1 -1
@@ -96,11 +96,12 @@ function validateStaticCredentials(options: BedrockProviderOptions): AwsCredenti
96
96
  return {
97
97
  accessKeyId: options.accessKeyId,
98
98
  secretAccessKey: options.secretAccessKey,
99
+ // Spread creates an own data property without invoking inherited setters or changing the object prototype.
99
100
  ...(options.sessionToken ? { sessionToken: options.sessionToken } : {}),
100
101
  };
101
102
  }
102
103
 
103
- function requestTarget(parsedURL: URL): { path: string; query: Record<string, string | string[]> } {
104
+ function requestTarget(parsedURL: URL) {
104
105
  const query: Record<string, string | string[]> = Object.create(null);
105
106
  for (const [name, value] of parsedURL.searchParams) {
106
107
  if (name === '__proto__') {
@@ -195,6 +196,7 @@ class BedrockSigV4Auth implements BedrockRequestAuth {
195
196
  }
196
197
 
197
198
  async prepareRequest(request: FinalizedRequestInit, context: ProviderRequestContext): Promise<void> {
199
+ // SAFETY: process is optional outside Node; the native process tag is checked before using Node-specific signing and credential behavior.
198
200
  if (Object.prototype.toString.call((globalThis as any).process) !== '[object process]') {
199
201
  throw new Errors.OpenAIError(
200
202
  'Bedrock AWS credential authentication is only supported in Node.js and compatible server runtimes. Use bearer authentication in this runtime.',
@@ -230,10 +232,12 @@ class BedrockSigV4Auth implements BedrockRequestAuth {
230
232
  this.signatureV4().sign({
231
233
  protocol: parsedURL.protocol,
232
234
  hostname: parsedURL.hostname,
235
+ // Spread creates an own data property without invoking inherited setters or changing the object prototype.
233
236
  ...(parsedURL.port ? { port: Number(parsedURL.port) } : {}),
234
237
  method,
235
238
  ...target,
236
239
  headers: Object.fromEntries(headers.entries()),
240
+ // Spread creates an own data property without invoking inherited setters or changing the object prototype.
237
241
  ...(body === undefined ? {} : { body }),
238
242
  }),
239
243
  failureMessage: this.options.usesDefaultChain
@@ -13,6 +13,7 @@ import { assertX509WebSocketSupported } from '../internal/auth/x509-workload-ide
13
13
  /** Parses frame data without exposing malformed payloads through JSON syntax errors. */
14
14
  export function parseRealtimeEvent(data: string): RealtimeServerEvent {
15
15
  try {
16
+ // SAFETY: RealtimeServerEvent is the API wire contract; JSON syntax is checked here while future event types remain accepted at runtime.
16
17
  return JSON.parse(data) as RealtimeServerEvent;
17
18
  } catch (error) {
18
19
  if (error instanceof SyntaxError) {
@@ -87,6 +88,7 @@ type RealtimeEvents = Simplify<
87
88
  type: EventType;
88
89
  }
89
90
  >,
91
+ // oxlint-disable-next-line anti-slop/no-unknown-returns -- Preserve the published event-callback contract, which accepts and ignores arbitrary return values.
90
92
  ) => unknown;
91
93
  }
92
94
  >;
@@ -43,6 +43,7 @@ function isRunningInBrowserOrBrowserWorker(): boolean {
43
43
  return true;
44
44
  }
45
45
 
46
+ // SAFETY: RuntimeScope describes optional host capabilities; the following predicates verify their presence and value before use.
46
47
  const scope = globalThis as RuntimeScope;
47
48
  return (
48
49
  typeof scope.WorkerGlobalScope === 'function' &&
@@ -61,6 +62,7 @@ function isRunningInBrowserOrBrowserWorker(): boolean {
61
62
 
62
63
  /** Reports whether the runtime supports request headers in native WebSocket options. */
63
64
  function supportsWebSocketRequestHeaders(): boolean {
65
+ // SAFETY: RuntimeScope describes optional host capabilities; the following predicates verify their presence and value before use.
64
66
  const scope = globalThis as RuntimeScope;
65
67
  if (
66
68
  isRunningInBrowserOrBrowserWorker() ||
@@ -183,7 +185,9 @@ export class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
183
185
  ) {
184
186
  super();
185
187
  let apiKey = getRealtimeAPIKey(client, props.__apiKey);
188
+ // SAFETY: The supplied OpenAI client owns _options; these compatibility reads preserve its provider and browser-consent settings.
186
189
  const hasProvider = typeof (client as any)?._options?.apiKey === 'function';
190
+ // SAFETY: The supplied OpenAI client owns _options; these compatibility reads preserve its provider and browser-consent settings.
187
191
  const dangerouslyAllowBrowser =
188
192
  props.dangerouslyAllowBrowser ??
189
193
  (client as any)?._options?.dangerouslyAllowBrowser ??
@@ -257,7 +261,12 @@ export class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
257
261
  });
258
262
 
259
263
  this.socket.addEventListener('error', (event: any) => {
260
- this._onError(null, event.message, null);
264
+ // Native ErrorEvents can carry an empty message while `error` still holds the failure.
265
+ const cause = event.error ?? null;
266
+ const message = [event.message, cause?.message].find(
267
+ (value) => typeof value === 'string' && value !== '',
268
+ );
269
+ this._onError(null, message ?? 'unknown error', cause);
261
270
  });
262
271
  }
263
272
 
@@ -317,6 +326,7 @@ export class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
317
326
  return new OpenAIRealtimeWebSocket(
318
327
  {
319
328
  ...connection,
329
+ // Preserve explicit browser consent as an own data property without invoking an inherited setter.
320
330
  ...(dangerouslyAllowBrowser === undefined ? {} : { dangerouslyAllowBrowser }),
321
331
  __resolvedApiKey: isApiKeyProvider,
322
332
  __apiKey: apiKey,
@@ -55,6 +55,7 @@ export class OpenAIRealtimeWS extends OpenAIRealtimeEmitter {
55
55
  super();
56
56
  client ??= new OpenAI();
57
57
  const apiKey = props.__apiKey === undefined ? client.apiKey : props.__apiKey;
58
+ // SAFETY: The supplied OpenAI client owns _options; this read detects its existing API-key provider without changing its public surface.
58
59
  const hasProvider = typeof (client as any)?._options?.apiKey === 'function';
59
60
  if (hasProvider && !props.__resolvedApiKey) {
60
61
  throw new Error(
@@ -69,6 +70,7 @@ export class OpenAIRealtimeWS extends OpenAIRealtimeEmitter {
69
70
  const headers = {
70
71
  'User-Agent': `${client.constructor.name}/JS ${VERSION}`,
71
72
  ...props.options?.headers,
73
+ // A credential must be an own data property without invoking an inherited setter.
72
74
  ...(isAzure(client) && !props.__resolvedApiKey ? {} : { Authorization: `Bearer ${apiKey}` }),
73
75
  };
74
76
 
@@ -178,6 +180,7 @@ export class OpenAIRealtimeWS extends OpenAIRealtimeEmitter {
178
180
  ...props.options,
179
181
  headers: {
180
182
  ...props.options?.headers,
183
+ // A credential must be an own data property without invoking an inherited setter.
181
184
  ...(isApiKeyProvider ? {} : { 'api-key': apiKey }),
182
185
  },
183
186
  },
@@ -4048,6 +4048,7 @@ export interface SessionTurnError {
4048
4048
  * - `session_budget_exceeded` - The session has reached its usage budget.
4049
4049
  * - `usage_limit_exceeded` - The organization has reached a usage, plan, or
4050
4050
  * billing limit.
4051
+ * - `credit_balance_exhausted` - The organization has no API credits remaining.
4051
4052
  * - `rate_limit_exceeded` - The request exceeds the available rate limit.
4052
4053
  * - `server_overloaded` - The model service is temporarily overloaded.
4053
4054
  * - `cyber_policy` - The request was rejected by a safety policy.
@@ -4070,6 +4071,7 @@ export interface SessionTurnError {
4070
4071
  | 'context_length_exceeded'
4071
4072
  | 'session_budget_exceeded'
4072
4073
  | 'usage_limit_exceeded'
4074
+ | 'credit_balance_exhausted'
4073
4075
  | 'rate_limit_exceeded'
4074
4076
  | 'server_overloaded'
4075
4077
  | 'cyber_policy'
@@ -217,6 +217,7 @@ import {
217
217
  BetaResponseCodeInterpreterCallInProgressEvent,
218
218
  BetaResponseCodeInterpreterCallInterpretingEvent,
219
219
  BetaResponseCodeInterpreterToolCall,
220
+ BetaResponseCompactionCompactingEvent,
220
221
  BetaResponseCompactionItem,
221
222
  BetaResponseCompactionItemParam,
222
223
  BetaResponseCompletedEvent,
@@ -588,6 +589,7 @@ export declare namespace Beta {
588
589
  type BetaResponseCodeInterpreterCallInProgressEvent as BetaResponseCodeInterpreterCallInProgressEvent,
589
590
  type BetaResponseCodeInterpreterCallInterpretingEvent as BetaResponseCodeInterpreterCallInterpretingEvent,
590
591
  type BetaResponseCodeInterpreterToolCall as BetaResponseCodeInterpreterToolCall,
592
+ type BetaResponseCompactionCompactingEvent as BetaResponseCompactionCompactingEvent,
591
593
  type BetaResponseCompactionItem as BetaResponseCompactionItem,
592
594
  type BetaResponseCompactionItemParam as BetaResponseCompactionItemParam,
593
595
  type BetaResponseCompletedEvent as BetaResponseCompletedEvent,
@@ -165,6 +165,7 @@ export {
165
165
  type BetaResponseCodeInterpreterCallInProgressEvent,
166
166
  type BetaResponseCodeInterpreterCallInterpretingEvent,
167
167
  type BetaResponseCodeInterpreterToolCall,
168
+ type BetaResponseCompactionCompactingEvent,
168
169
  type BetaResponseCompactionItem,
169
170
  type BetaResponseCompactionItemParam,
170
171
  type BetaResponseCompletedEvent,
@@ -40,6 +40,7 @@ export {
40
40
  type BetaResponseCodeInterpreterCallInProgressEvent,
41
41
  type BetaResponseCodeInterpreterCallInterpretingEvent,
42
42
  type BetaResponseCodeInterpreterToolCall,
43
+ type BetaResponseCompactionCompactingEvent,
43
44
  type BetaResponseCompactionItem,
44
45
  type BetaResponseCompactionItemParam,
45
46
  type BetaResponseCompletedEvent,
@@ -27,13 +27,21 @@ type WebSocketErrorEvent = Extract<ResponsesAPI.BetaResponsesServerEvent, { type
27
27
  export class WebSocketError extends OpenAIError {
28
28
  /**
29
29
  * The error data that the API sent back in an error event.
30
+ *
31
+ * This property is non-enumerable to avoid exposing the event through
32
+ * JSON serialization, object spread, or Object.assign.
30
33
  */
31
34
  error?: WebSocketErrorEvent | undefined;
32
35
 
33
36
  constructor(message: string, event: WebSocketErrorEvent | null) {
34
37
  super(message);
35
38
 
36
- this.error = event ?? undefined;
39
+ Object.defineProperty(this, 'error', {
40
+ value: event ?? undefined,
41
+ writable: true,
42
+ configurable: true,
43
+ enumerable: false,
44
+ });
37
45
  }
38
46
  }
39
47
 
@@ -77,13 +85,8 @@ export abstract class ResponsesEmitter extends EventEmitter<WebSocketEvents> {
77
85
  protected _onError(event: null, message: string, cause: any): void;
78
86
  protected _onError(event: WebSocketErrorEvent, message?: string | undefined): void;
79
87
  protected _onError(event: WebSocketErrorEvent | null, message?: string | undefined, cause?: any): void {
80
- const eventMessage = event && ('error' in event ? event.error?.message : event.message);
81
- message = message ?? eventMessage ?? safeJSONStringify(event) ?? 'unknown error';
82
- try {
83
- message = String(message);
84
- } catch {
85
- message = '[unserializable error value]';
86
- }
88
+ const safeMessage = safeWebSocketErrorMessage(event, message);
89
+ message = safeMessage ?? 'unknown error';
87
90
 
88
91
  if (!this._hasListener('error')) {
89
92
  const error = new WebSocketError(
@@ -114,10 +117,20 @@ export function buildURL(client: OpenAI, parameters: Record<string, unknown>): U
114
117
  return url;
115
118
  }
116
119
 
117
- function safeJSONStringify(value: unknown): string | null {
120
+ function safeWebSocketErrorMessage(event: unknown, message: unknown): string | undefined {
121
+ if (typeof message === 'string') return message;
122
+ if (typeof event !== 'object' || event === null) return undefined;
123
+
118
124
  try {
119
- return JSON.stringify(value);
125
+ const error = Object.getOwnPropertyDescriptor(event, 'error')?.value;
126
+ const nestedMessage =
127
+ typeof error === 'object' && error !== null
128
+ ? Object.getOwnPropertyDescriptor(error, 'message')?.value
129
+ : undefined;
130
+ const eventMessage = Object.getOwnPropertyDescriptor(event, 'message')?.value;
131
+ const candidate = typeof nestedMessage === 'string' ? nestedMessage : eventMessage;
132
+ return typeof candidate === 'string' ? candidate : undefined;
120
133
  } catch {
121
- return null;
134
+ return undefined;
122
135
  }
123
136
  }
@@ -2443,6 +2443,49 @@ export namespace BetaResponseCodeInterpreterToolCall {
2443
2443
  }
2444
2444
  }
2445
2445
 
2446
+ /**
2447
+ * Emitted when new summary content is sampled for a compaction trigger. Contains
2448
+ * no summary content.
2449
+ */
2450
+ export interface BetaResponseCompactionCompactingEvent {
2451
+ /**
2452
+ * The ID of the compaction output item.
2453
+ */
2454
+ item_id: string;
2455
+
2456
+ /**
2457
+ * The index of the compaction output item.
2458
+ */
2459
+ output_index: number;
2460
+
2461
+ /**
2462
+ * The sequence number of the event that was emitted.
2463
+ */
2464
+ sequence_number: number;
2465
+
2466
+ /**
2467
+ * The type of the event, always `response.compaction.compacting`.
2468
+ */
2469
+ type: 'response.compaction.compacting';
2470
+
2471
+ /**
2472
+ * The agent that owns this multi-agent streaming event.
2473
+ */
2474
+ agent?: BetaResponseCompactionCompactingEvent.Agent;
2475
+ }
2476
+
2477
+ export namespace BetaResponseCompactionCompactingEvent {
2478
+ /**
2479
+ * The agent that owns this multi-agent streaming event.
2480
+ */
2481
+ export interface Agent {
2482
+ /**
2483
+ * The canonical name of the agent that produced this item.
2484
+ */
2485
+ agent_name: string;
2486
+ }
2487
+ }
2488
+
2446
2489
  /**
2447
2490
  * A compaction item generated by the
2448
2491
  * [`v1/responses/compact` API](https://developers.openai.com/api/reference/resources/responses/methods/compact).
@@ -10942,6 +10985,7 @@ export type BetaResponseStreamEvent =
10942
10985
  | BetaResponseCodeInterpreterCallCompletedEvent
10943
10986
  | BetaResponseCodeInterpreterCallInProgressEvent
10944
10987
  | BetaResponseCodeInterpreterCallInterpretingEvent
10988
+ | BetaResponseCompactionCompactingEvent
10945
10989
  | BetaResponseCompletedEvent
10946
10990
  | BetaResponseContentPartAddedEvent
10947
10991
  | BetaResponseContentPartDoneEvent
@@ -12231,6 +12275,7 @@ export type BetaResponsesServerEvent =
12231
12275
  | BetaResponsesServerEvent.BetaResponseCodeInterpreterCallWsCompleted
12232
12276
  | BetaResponsesServerEvent.BetaResponseCodeInterpreterCallInWsProgress
12233
12277
  | BetaResponsesServerEvent.BetaResponseCodeInterpreterCallWsInterpreting
12278
+ | BetaResponsesServerEvent.BetaResponseCompactionWsCompacting
12234
12279
  | BetaResponsesServerEvent.BetaResponseWsCompleted
12235
12280
  | BetaResponsesServerEvent.BetaResponseContentPartWsAdded
12236
12281
  | BetaResponsesServerEvent.BetaResponseContentPartWsDone
@@ -12387,6 +12432,18 @@ export namespace BetaResponsesServerEvent {
12387
12432
  stream_id?: string;
12388
12433
  }
12389
12434
 
12435
+ /**
12436
+ * Emitted when new summary content is sampled for a compaction trigger. Contains
12437
+ * no summary content.
12438
+ */
12439
+ export interface BetaResponseCompactionWsCompacting extends BetaResponseCompactionCompactingEvent {
12440
+ /**
12441
+ * The WebSocket lane that emitted this event. This field is present when the
12442
+ * originating `response.create` event supplied a `stream_id`.
12443
+ */
12444
+ stream_id?: string;
12445
+ }
12446
+
12390
12447
  /**
12391
12448
  * Emitted when the model response is complete.
12392
12449
  */
@@ -14820,6 +14877,7 @@ export declare namespace Responses {
14820
14877
  type BetaResponseCodeInterpreterCallInProgressEvent as BetaResponseCodeInterpreterCallInProgressEvent,
14821
14878
  type BetaResponseCodeInterpreterCallInterpretingEvent as BetaResponseCodeInterpreterCallInterpretingEvent,
14822
14879
  type BetaResponseCodeInterpreterToolCall as BetaResponseCodeInterpreterToolCall,
14880
+ type BetaResponseCompactionCompactingEvent as BetaResponseCompactionCompactingEvent,
14823
14881
  type BetaResponseCompactionItem as BetaResponseCompactionItem,
14824
14882
  type BetaResponseCompactionItemParam as BetaResponseCompactionItemParam,
14825
14883
  type BetaResponseCompletedEvent as BetaResponseCompletedEvent,
@@ -103,7 +103,11 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
103
103
  this.socket = this._connect();
104
104
  }
105
105
 
106
- /** Creates a platform-specific WebSocket for the given URL and auth headers. */
106
+ /**
107
+ * Creates a platform-specific WebSocket for the given URL and captured client auth headers.
108
+ * The transport must supply or validate its final credentials before connecting;
109
+ * these headers may be empty when authentication is managed by the transport.
110
+ */
107
111
  protected abstract _createSocket(url: URL, authHeaders: Record<string, string>): TSocket;
108
112
 
109
113
  send(event: ResponsesAPI.BetaResponsesClientEvent) {
@@ -696,9 +700,7 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
696
700
  }
697
701
 
698
702
  protected _authHeaders(): Record<string, string> {
699
- if (this._client.apiKey) {
700
- return { Authorization: `Bearer ${this._client.apiKey}` };
701
- }
702
- return {};
703
+ const apiKey = this._client.apiKey;
704
+ return typeof apiKey === 'string' && apiKey ? { Authorization: `Bearer ${apiKey}` } : {};
703
705
  }
704
706
  }
@@ -5,12 +5,17 @@ import { NodeWebSocket } from '../../../internal/ws-adapter-node';
5
5
  import { ResponsesWSBase, type ResponsesWSBaseOptions } from './ws-base';
6
6
  import { OpenAI } from '../../../client';
7
7
  import { VERSION } from '../../../version';
8
+ import { OpenAIError } from '../../../core/error';
9
+ import { snapshotWebSocketCredentials } from '../../../internal/ws';
8
10
 
9
11
  export type { WebSocketStreamOptions } from '../../../internal/ws';
10
12
 
11
13
  export type { ResponsesWSReconnectOptions } from './ws-base';
12
14
 
13
- export interface ResponsesWSClientOptions extends WS.ClientOptions, ResponsesWSBaseOptions {}
15
+ export interface ResponsesWSClientOptions extends WS.ClientOptions, ResponsesWSBaseOptions {
16
+ /** Basic authentication forwarded by the Node `ws` transport. */
17
+ auth?: string;
18
+ }
14
19
 
15
20
  export class ResponsesWS extends ResponsesWSBase<NodeWebSocket> {
16
21
  private _wsOptions: WS.ClientOptions | null | undefined;
@@ -21,7 +26,6 @@ export class ResponsesWS extends ResponsesWSBase<NodeWebSocket> {
21
26
  'ResponsesWS from "openai/resources/beta/responses/ws" requires the "ws" package but it could not be loaded.',
22
27
  );
23
28
  }
24
-
25
29
  const { reconnect, maxQueueSize, ...wsOptions } = options ?? {};
26
30
  super(client, { reconnect, maxQueueSize });
27
31
  this._wsOptions = wsOptions;
@@ -29,16 +33,27 @@ export class ResponsesWS extends ResponsesWSBase<NodeWebSocket> {
29
33
  }
30
34
 
31
35
  protected _createSocket(url: URL, authHeaders: Record<string, string>): NodeWebSocket {
32
- const ws = new WS.WebSocket(url, {
36
+ const capturedAuthHeaders = { ...authHeaders };
37
+ const socketOptions: ResponsesWSClientOptions = {
33
38
  ...this._wsOptions,
34
39
  headers: {
35
40
  'User-Agent': `${this._client.constructor.name}/JS ${VERSION}`,
36
-
37
- ...authHeaders,
41
+ ...capturedAuthHeaders,
38
42
  ...this._wsOptions?.headers,
39
43
  },
40
44
  followRedirects: false,
41
- });
45
+ };
46
+ if (
47
+ this._client._hasApiKeyProvider() &&
48
+ !capturedAuthHeaders['Authorization'] &&
49
+ !snapshotWebSocketCredentials(socketOptions)
50
+ ) {
51
+ throw new OpenAIError(
52
+ 'Cannot open a Responses WebSocket with an unresolved function-based apiKey. Resolve it before constructing the WebSocket or provide explicit WebSocket credentials.',
53
+ );
54
+ }
55
+
56
+ const ws = new WS.WebSocket(url, socketOptions);
42
57
  return new NodeWebSocket(ws);
43
58
  }
44
59
  }
@@ -22,13 +22,21 @@ export type ForksStreamMessage =
22
22
  export class WebSocketError extends OpenAIError {
23
23
  /**
24
24
  * The error data that the API sent back in an error event.
25
+ *
26
+ * This property is non-enumerable to avoid exposing the event through
27
+ * JSON serialization, object spread, or Object.assign.
25
28
  */
26
29
  error?: LiveAPI.ErrorEvent | undefined;
27
30
 
28
31
  constructor(message: string, event: LiveAPI.ErrorEvent | null) {
29
32
  super(message);
30
33
 
31
- this.error = event ?? undefined;
34
+ Object.defineProperty(this, 'error', {
35
+ value: event ?? undefined,
36
+ writable: true,
37
+ configurable: true,
38
+ enumerable: false,
39
+ });
32
40
  }
33
41
  }
34
42
 
@@ -68,7 +76,8 @@ export abstract class ForksEmitter extends EventEmitter<WebSocketEvents> {
68
76
  protected _onError(event: null, message: string, cause: any): void;
69
77
  protected _onError(event: LiveAPI.ErrorEvent, message?: string | undefined): void;
70
78
  protected _onError(event: LiveAPI.ErrorEvent | null, message?: string | undefined, cause?: any): void {
71
- message = message ?? safeJSONStringify(event) ?? 'unknown error';
79
+ const safeMessage = safeWebSocketErrorMessage(event, message);
80
+ message = safeMessage ?? 'unknown error';
72
81
 
73
82
  if (!this._hasListener('error')) {
74
83
  const error = new WebSocketError(
@@ -98,10 +107,20 @@ export function buildURL(client: OpenAI, parameters: Record<string, unknown>): U
98
107
  return url;
99
108
  }
100
109
 
101
- function safeJSONStringify(value: unknown): string | null {
110
+ function safeWebSocketErrorMessage(event: unknown, message: unknown): string | undefined {
111
+ if (typeof message === 'string') return message;
112
+ if (typeof event !== 'object' || event === null) return undefined;
113
+
102
114
  try {
103
- return JSON.stringify(value);
115
+ const error = Object.getOwnPropertyDescriptor(event, 'error')?.value;
116
+ const nestedMessage =
117
+ typeof error === 'object' && error !== null
118
+ ? Object.getOwnPropertyDescriptor(error, 'message')?.value
119
+ : undefined;
120
+ const eventMessage = Object.getOwnPropertyDescriptor(event, 'message')?.value;
121
+ const candidate = typeof nestedMessage === 'string' ? nestedMessage : eventMessage;
122
+ return typeof candidate === 'string' ? candidate : undefined;
104
123
  } catch {
105
- return null;
124
+ return undefined;
106
125
  }
107
126
  }
@@ -19,13 +19,21 @@ export type LiveStreamMessage =
19
19
  export class WebSocketError extends OpenAIError {
20
20
  /**
21
21
  * The error data that the API sent back in an error event.
22
+ *
23
+ * This property is non-enumerable to avoid exposing the event through
24
+ * JSON serialization, object spread, or Object.assign.
22
25
  */
23
26
  error?: LiveAPI.ErrorEvent | undefined;
24
27
 
25
28
  constructor(message: string, event: LiveAPI.ErrorEvent | null) {
26
29
  super(message);
27
30
 
28
- this.error = event ?? undefined;
31
+ Object.defineProperty(this, 'error', {
32
+ value: event ?? undefined,
33
+ writable: true,
34
+ configurable: true,
35
+ enumerable: false,
36
+ });
29
37
  }
30
38
  }
31
39
 
@@ -65,7 +73,8 @@ export abstract class LiveEmitter extends EventEmitter<WebSocketEvents> {
65
73
  protected _onError(event: null, message: string, cause: any): void;
66
74
  protected _onError(event: LiveAPI.ErrorEvent, message?: string | undefined): void;
67
75
  protected _onError(event: LiveAPI.ErrorEvent | null, message?: string | undefined, cause?: any): void {
68
- message = message ?? safeJSONStringify(event) ?? 'unknown error';
76
+ const safeMessage = safeWebSocketErrorMessage(event, message);
77
+ message = safeMessage ?? 'unknown error';
69
78
 
70
79
  if (!this._hasListener('error')) {
71
80
  const error = new WebSocketError(
@@ -95,10 +104,20 @@ export function buildURL(client: OpenAI, parameters: Record<string, unknown>): U
95
104
  return url;
96
105
  }
97
106
 
98
- function safeJSONStringify(value: unknown): string | null {
107
+ function safeWebSocketErrorMessage(event: unknown, message: unknown): string | undefined {
108
+ if (typeof message === 'string') return message;
109
+ if (typeof event !== 'object' || event === null) return undefined;
110
+
99
111
  try {
100
- return JSON.stringify(value);
112
+ const error = Object.getOwnPropertyDescriptor(event, 'error')?.value;
113
+ const nestedMessage =
114
+ typeof error === 'object' && error !== null
115
+ ? Object.getOwnPropertyDescriptor(error, 'message')?.value
116
+ : undefined;
117
+ const eventMessage = Object.getOwnPropertyDescriptor(event, 'message')?.value;
118
+ const candidate = typeof nestedMessage === 'string' ? nestedMessage : eventMessage;
119
+ return typeof candidate === 'string' ? candidate : undefined;
101
120
  } catch {
102
- return null;
121
+ return undefined;
103
122
  }
104
123
  }
@@ -22,13 +22,21 @@ export type SidebandStreamMessage =
22
22
  export class WebSocketError extends OpenAIError {
23
23
  /**
24
24
  * The error data that the API sent back in an error event.
25
+ *
26
+ * This property is non-enumerable to avoid exposing the event through
27
+ * JSON serialization, object spread, or Object.assign.
25
28
  */
26
29
  error?: LiveAPI.ErrorEvent | undefined;
27
30
 
28
31
  constructor(message: string, event: LiveAPI.ErrorEvent | null) {
29
32
  super(message);
30
33
 
31
- this.error = event ?? undefined;
34
+ Object.defineProperty(this, 'error', {
35
+ value: event ?? undefined,
36
+ writable: true,
37
+ configurable: true,
38
+ enumerable: false,
39
+ });
32
40
  }
33
41
  }
34
42
 
@@ -68,7 +76,8 @@ export abstract class SidebandEmitter extends EventEmitter<WebSocketEvents> {
68
76
  protected _onError(event: null, message: string, cause: any): void;
69
77
  protected _onError(event: LiveAPI.ErrorEvent, message?: string | undefined): void;
70
78
  protected _onError(event: LiveAPI.ErrorEvent | null, message?: string | undefined, cause?: any): void {
71
- message = message ?? safeJSONStringify(event) ?? 'unknown error';
79
+ const safeMessage = safeWebSocketErrorMessage(event, message);
80
+ message = safeMessage ?? 'unknown error';
72
81
 
73
82
  if (!this._hasListener('error')) {
74
83
  const error = new WebSocketError(
@@ -98,10 +107,20 @@ export function buildURL(client: OpenAI, parameters: Record<string, unknown>): U
98
107
  return url;
99
108
  }
100
109
 
101
- function safeJSONStringify(value: unknown): string | null {
110
+ function safeWebSocketErrorMessage(event: unknown, message: unknown): string | undefined {
111
+ if (typeof message === 'string') return message;
112
+ if (typeof event !== 'object' || event === null) return undefined;
113
+
102
114
  try {
103
- return JSON.stringify(value);
115
+ const error = Object.getOwnPropertyDescriptor(event, 'error')?.value;
116
+ const nestedMessage =
117
+ typeof error === 'object' && error !== null
118
+ ? Object.getOwnPropertyDescriptor(error, 'message')?.value
119
+ : undefined;
120
+ const eventMessage = Object.getOwnPropertyDescriptor(event, 'message')?.value;
121
+ const candidate = typeof nestedMessage === 'string' ? nestedMessage : eventMessage;
122
+ return typeof candidate === 'string' ? candidate : undefined;
104
123
  } catch {
105
- return null;
124
+ return undefined;
106
125
  }
107
126
  }
@@ -38,6 +38,7 @@ Types:
38
38
  - <code><a href="./src/resources/responses/responses.ts">ResponseCodeInterpreterCallInProgressEvent</a></code>
39
39
  - <code><a href="./src/resources/responses/responses.ts">ResponseCodeInterpreterCallInterpretingEvent</a></code>
40
40
  - <code><a href="./src/resources/responses/responses.ts">ResponseCodeInterpreterToolCall</a></code>
41
+ - <code><a href="./src/resources/responses/responses.ts">ResponseCompactionCompactingEvent</a></code>
41
42
  - <code><a href="./src/resources/responses/responses.ts">ResponseCompactionItem</a></code>
42
43
  - <code><a href="./src/resources/responses/responses.ts">ResponseCompactionItemParam</a></code>
43
44
  - <code><a href="./src/resources/responses/responses.ts">ResponseCompletedEvent</a></code>
@@ -27,13 +27,21 @@ type WebSocketErrorEvent = Extract<ResponsesAPI.ResponsesServerEvent, { type: 'e
27
27
  export class WebSocketError extends OpenAIError {
28
28
  /**
29
29
  * The error data that the API sent back in an error event.
30
+ *
31
+ * This property is non-enumerable to avoid exposing the event through
32
+ * JSON serialization, object spread, or Object.assign.
30
33
  */
31
34
  error?: WebSocketErrorEvent | undefined;
32
35
 
33
36
  constructor(message: string, event: WebSocketErrorEvent | null) {
34
37
  super(message);
35
38
 
36
- this.error = event ?? undefined;
39
+ Object.defineProperty(this, 'error', {
40
+ value: event ?? undefined,
41
+ writable: true,
42
+ configurable: true,
43
+ enumerable: false,
44
+ });
37
45
  }
38
46
  }
39
47
 
@@ -73,13 +81,8 @@ export abstract class ResponsesEmitter extends EventEmitter<WebSocketEvents> {
73
81
  protected _onError(event: null, message: string, cause: any): void;
74
82
  protected _onError(event: WebSocketErrorEvent, message?: string | undefined): void;
75
83
  protected _onError(event: WebSocketErrorEvent | null, message?: string | undefined, cause?: any): void {
76
- const eventMessage = event && ('error' in event ? event.error?.message : event.message);
77
- message = message ?? eventMessage ?? safeJSONStringify(event) ?? 'unknown error';
78
- try {
79
- message = String(message);
80
- } catch {
81
- message = '[unserializable error value]';
82
- }
84
+ const safeMessage = safeWebSocketErrorMessage(event, message);
85
+ message = safeMessage ?? 'unknown error';
83
86
 
84
87
  if (!this._hasListener('error')) {
85
88
  const error = new WebSocketError(
@@ -110,10 +113,20 @@ export function buildURL(client: OpenAI, parameters: Record<string, unknown>): U
110
113
  return url;
111
114
  }
112
115
 
113
- function safeJSONStringify(value: unknown): string | null {
116
+ function safeWebSocketErrorMessage(event: unknown, message: unknown): string | undefined {
117
+ if (typeof message === 'string') return message;
118
+ if (typeof event !== 'object' || event === null) return undefined;
119
+
114
120
  try {
115
- return JSON.stringify(value);
121
+ const error = Object.getOwnPropertyDescriptor(event, 'error')?.value;
122
+ const nestedMessage =
123
+ typeof error === 'object' && error !== null
124
+ ? Object.getOwnPropertyDescriptor(error, 'message')?.value
125
+ : undefined;
126
+ const eventMessage = Object.getOwnPropertyDescriptor(event, 'message')?.value;
127
+ const candidate = typeof nestedMessage === 'string' ? nestedMessage : eventMessage;
128
+ return typeof candidate === 'string' ? candidate : undefined;
116
129
  } catch {
117
- return null;
130
+ return undefined;
118
131
  }
119
132
  }