openai 7.5.0 → 7.7.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 (597) hide show
  1. package/CHANGELOG.md +117 -0
  2. package/README.md +46 -2
  3. package/auth/index.d.mts +1 -1
  4. package/auth/index.d.mts.map +1 -1
  5. package/auth/index.d.ts +1 -1
  6. package/auth/index.d.ts.map +1 -1
  7. package/auth/index.js.map +1 -1
  8. package/auth/index.mjs.map +1 -1
  9. package/auth/subject-token-providers.d.mts.map +1 -1
  10. package/auth/subject-token-providers.d.ts.map +1 -1
  11. package/auth/subject-token-providers.js +176 -4
  12. package/auth/subject-token-providers.js.map +1 -1
  13. package/auth/subject-token-providers.mjs +176 -4
  14. package/auth/subject-token-providers.mjs.map +1 -1
  15. package/auth/types.d.mts +17 -0
  16. package/auth/types.d.mts.map +1 -1
  17. package/auth/types.d.ts +17 -0
  18. package/auth/types.d.ts.map +1 -1
  19. package/auth/workload-identity-auth.d.mts.map +1 -1
  20. package/auth/workload-identity-auth.d.ts.map +1 -1
  21. package/auth/workload-identity-auth.js +80 -7
  22. package/auth/workload-identity-auth.js.map +1 -1
  23. package/auth/workload-identity-auth.mjs +80 -7
  24. package/auth/workload-identity-auth.mjs.map +1 -1
  25. package/auth/x509-transport.d.mts +5 -0
  26. package/auth/x509-transport.d.mts.map +1 -0
  27. package/auth/x509-transport.d.ts +5 -0
  28. package/auth/x509-transport.d.ts.map +1 -0
  29. package/auth/x509-transport.js +39 -0
  30. package/auth/x509-transport.js.map +1 -0
  31. package/auth/x509-transport.mjs +36 -0
  32. package/auth/x509-transport.mjs.map +1 -0
  33. package/azure.d.mts +11 -2
  34. package/azure.d.mts.map +1 -1
  35. package/azure.d.ts +11 -2
  36. package/azure.d.ts.map +1 -1
  37. package/azure.js +7 -1
  38. package/azure.js.map +1 -1
  39. package/azure.mjs +7 -1
  40. package/azure.mjs.map +1 -1
  41. package/bedrock.d.mts +6 -2
  42. package/bedrock.d.mts.map +1 -1
  43. package/bedrock.d.ts +6 -2
  44. package/bedrock.d.ts.map +1 -1
  45. package/bedrock.js +34 -4
  46. package/bedrock.js.map +1 -1
  47. package/bedrock.mjs +35 -5
  48. package/bedrock.mjs.map +1 -1
  49. package/beta/realtime/internal-base.d.mts +2 -0
  50. package/beta/realtime/internal-base.d.mts.map +1 -1
  51. package/beta/realtime/internal-base.d.ts +2 -0
  52. package/beta/realtime/internal-base.d.ts.map +1 -1
  53. package/beta/realtime/internal-base.js +15 -0
  54. package/beta/realtime/internal-base.js.map +1 -1
  55. package/beta/realtime/internal-base.mjs +14 -0
  56. package/beta/realtime/internal-base.mjs.map +1 -1
  57. package/beta/realtime/websocket.d.mts +11 -5
  58. package/beta/realtime/websocket.d.mts.map +1 -1
  59. package/beta/realtime/websocket.d.ts +11 -5
  60. package/beta/realtime/websocket.d.ts.map +1 -1
  61. package/beta/realtime/websocket.js +106 -31
  62. package/beta/realtime/websocket.js.map +1 -1
  63. package/beta/realtime/websocket.mjs +107 -32
  64. package/beta/realtime/websocket.mjs.map +1 -1
  65. package/beta/realtime/ws.d.mts +0 -2
  66. package/beta/realtime/ws.d.mts.map +1 -1
  67. package/beta/realtime/ws.d.ts +0 -2
  68. package/beta/realtime/ws.d.ts.map +1 -1
  69. package/beta/realtime/ws.js +24 -5
  70. package/beta/realtime/ws.js.map +1 -1
  71. package/beta/realtime/ws.mjs +25 -6
  72. package/beta/realtime/ws.mjs.map +1 -1
  73. package/client.d.mts +17 -2
  74. package/client.d.mts.map +1 -1
  75. package/client.d.ts +17 -2
  76. package/client.d.ts.map +1 -1
  77. package/client.js +422 -70
  78. package/client.js.map +1 -1
  79. package/client.mjs +423 -71
  80. package/client.mjs.map +1 -1
  81. package/core/EventEmitter.d.mts.map +1 -1
  82. package/core/EventEmitter.d.ts.map +1 -1
  83. package/core/EventEmitter.js +67 -9
  84. package/core/EventEmitter.js.map +1 -1
  85. package/core/EventEmitter.mjs +68 -10
  86. package/core/EventEmitter.mjs.map +1 -1
  87. package/core/streaming.d.mts +1 -0
  88. package/core/streaming.d.mts.map +1 -1
  89. package/core/streaming.d.ts +1 -0
  90. package/core/streaming.d.ts.map +1 -1
  91. package/core/streaming.js +216 -26
  92. package/core/streaming.js.map +1 -1
  93. package/core/streaming.mjs +216 -26
  94. package/core/streaming.mjs.map +1 -1
  95. package/helpers/audio.d.mts +5 -5
  96. package/helpers/audio.d.mts.map +1 -1
  97. package/helpers/audio.d.ts +5 -5
  98. package/helpers/audio.d.ts.map +1 -1
  99. package/helpers/audio.js +93 -22
  100. package/helpers/audio.js.map +1 -1
  101. package/helpers/audio.mjs +93 -22
  102. package/helpers/audio.mjs.map +1 -1
  103. package/helpers/standard-schema.d.mts.map +1 -1
  104. package/helpers/standard-schema.d.ts.map +1 -1
  105. package/helpers/standard-schema.js +34 -14
  106. package/helpers/standard-schema.js.map +1 -1
  107. package/helpers/standard-schema.mjs +35 -15
  108. package/helpers/standard-schema.mjs.map +1 -1
  109. package/helpers/zod-v3-strict-schema.d.mts +7 -0
  110. package/helpers/zod-v3-strict-schema.d.mts.map +1 -0
  111. package/helpers/zod-v3-strict-schema.d.ts +7 -0
  112. package/helpers/zod-v3-strict-schema.d.ts.map +1 -0
  113. package/helpers/zod-v3-strict-schema.js +403 -0
  114. package/helpers/zod-v3-strict-schema.js.map +1 -0
  115. package/helpers/zod-v3-strict-schema.mjs +399 -0
  116. package/helpers/zod-v3-strict-schema.mjs.map +1 -0
  117. package/helpers/zod.d.mts.map +1 -1
  118. package/helpers/zod.d.ts.map +1 -1
  119. package/helpers/zod.js +11 -3
  120. package/helpers/zod.js.map +1 -1
  121. package/helpers/zod.mjs +12 -4
  122. package/helpers/zod.mjs.map +1 -1
  123. package/index.d.mts +1 -1
  124. package/index.d.mts.map +1 -1
  125. package/index.d.ts +1 -1
  126. package/index.d.ts.map +1 -1
  127. package/index.js.map +1 -1
  128. package/index.mjs.map +1 -1
  129. package/internal/assistant-stream-delta.d.mts.map +1 -1
  130. package/internal/assistant-stream-delta.d.ts.map +1 -1
  131. package/internal/assistant-stream-delta.js +28 -8
  132. package/internal/assistant-stream-delta.js.map +1 -1
  133. package/internal/assistant-stream-delta.mjs +28 -8
  134. package/internal/assistant-stream-delta.mjs.map +1 -1
  135. package/internal/auth/x509-token-exchange.d.mts +16 -0
  136. package/internal/auth/x509-token-exchange.d.mts.map +1 -0
  137. package/internal/auth/x509-token-exchange.d.ts +16 -0
  138. package/internal/auth/x509-token-exchange.d.ts.map +1 -0
  139. package/internal/auth/x509-token-exchange.js +246 -0
  140. package/internal/auth/x509-token-exchange.js.map +1 -0
  141. package/internal/auth/x509-token-exchange.mjs +243 -0
  142. package/internal/auth/x509-token-exchange.mjs.map +1 -0
  143. package/internal/auth/x509-transport-capability.d.mts +37 -0
  144. package/internal/auth/x509-transport-capability.d.mts.map +1 -0
  145. package/internal/auth/x509-transport-capability.d.ts +37 -0
  146. package/internal/auth/x509-transport-capability.d.ts.map +1 -0
  147. package/internal/auth/x509-transport-capability.js +169 -0
  148. package/internal/auth/x509-transport-capability.js.map +1 -0
  149. package/internal/auth/x509-transport-capability.mjs +164 -0
  150. package/internal/auth/x509-transport-capability.mjs.map +1 -0
  151. package/internal/auth/x509-transport-registry.d.mts +63 -0
  152. package/internal/auth/x509-transport-registry.d.mts.map +1 -0
  153. package/internal/auth/x509-transport-registry.d.ts +63 -0
  154. package/internal/auth/x509-transport-registry.d.ts.map +1 -0
  155. package/internal/auth/x509-transport-registry.js +53 -0
  156. package/internal/auth/x509-transport-registry.js.map +1 -0
  157. package/internal/auth/x509-transport-registry.mjs +48 -0
  158. package/internal/auth/x509-transport-registry.mjs.map +1 -0
  159. package/internal/auth/x509-transport-state-browser.d.mts +21 -0
  160. package/internal/auth/x509-transport-state-browser.d.mts.map +1 -0
  161. package/internal/auth/x509-transport-state-browser.d.ts +21 -0
  162. package/internal/auth/x509-transport-state-browser.d.ts.map +1 -0
  163. package/internal/auth/x509-transport-state-browser.js +30 -0
  164. package/internal/auth/x509-transport-state-browser.js.map +1 -0
  165. package/internal/auth/x509-transport-state-browser.mjs +27 -0
  166. package/internal/auth/x509-transport-state-browser.mjs.map +1 -0
  167. package/internal/auth/x509-transport-state.cjs +30 -0
  168. package/internal/auth/x509-transport-state.cjs.map +1 -0
  169. package/internal/auth/x509-transport-state.d.cts +21 -0
  170. package/internal/auth/x509-transport-state.d.cts.map +1 -0
  171. package/internal/auth/x509-workload-identity-auth.d.mts +128 -0
  172. package/internal/auth/x509-workload-identity-auth.d.mts.map +1 -0
  173. package/internal/auth/x509-workload-identity-auth.d.ts +128 -0
  174. package/internal/auth/x509-workload-identity-auth.d.ts.map +1 -0
  175. package/internal/auth/x509-workload-identity-auth.js +767 -0
  176. package/internal/auth/x509-workload-identity-auth.js.map +1 -0
  177. package/internal/auth/x509-workload-identity-auth.mjs +757 -0
  178. package/internal/auth/x509-workload-identity-auth.mjs.map +1 -0
  179. package/internal/bedrock.d.mts +2 -0
  180. package/internal/bedrock.d.mts.map +1 -1
  181. package/internal/bedrock.d.ts +2 -0
  182. package/internal/bedrock.d.ts.map +1 -1
  183. package/internal/bedrock.js +169 -5
  184. package/internal/bedrock.js.map +1 -1
  185. package/internal/bedrock.mjs +168 -5
  186. package/internal/bedrock.mjs.map +1 -1
  187. package/internal/data-residency.d.mts +12 -0
  188. package/internal/data-residency.d.mts.map +1 -0
  189. package/internal/data-residency.d.ts +12 -0
  190. package/internal/data-residency.d.ts.map +1 -0
  191. package/internal/data-residency.js +34 -0
  192. package/internal/data-residency.js.map +1 -0
  193. package/internal/data-residency.mjs +30 -0
  194. package/internal/data-residency.mjs.map +1 -0
  195. package/internal/multipart-encoding.d.mts +8 -0
  196. package/internal/multipart-encoding.d.mts.map +1 -0
  197. package/internal/multipart-encoding.d.ts +8 -0
  198. package/internal/multipart-encoding.d.ts.map +1 -0
  199. package/internal/multipart-encoding.js +51 -0
  200. package/internal/multipart-encoding.js.map +1 -0
  201. package/internal/multipart-encoding.mjs +48 -0
  202. package/internal/multipart-encoding.mjs.map +1 -0
  203. package/internal/qs/utils.d.mts.map +1 -1
  204. package/internal/qs/utils.d.ts.map +1 -1
  205. package/internal/qs/utils.js +307 -10
  206. package/internal/qs/utils.js.map +1 -1
  207. package/internal/qs/utils.mjs +307 -10
  208. package/internal/qs/utils.mjs.map +1 -1
  209. package/internal/request-options.d.mts +7 -0
  210. package/internal/request-options.d.mts.map +1 -1
  211. package/internal/request-options.d.ts +7 -0
  212. package/internal/request-options.d.ts.map +1 -1
  213. package/internal/request-options.js +43 -1
  214. package/internal/request-options.js.map +1 -1
  215. package/internal/request-options.mjs +42 -1
  216. package/internal/request-options.mjs.map +1 -1
  217. package/internal/responses/canonical-output-text.js +3 -3
  218. package/internal/responses/canonical-output-text.js.map +1 -1
  219. package/internal/responses/canonical-output-text.mjs +3 -3
  220. package/internal/responses/canonical-output-text.mjs.map +1 -1
  221. package/internal/responses/response-accumulator.d.mts +1 -1
  222. package/internal/responses/response-accumulator.d.mts.map +1 -1
  223. package/internal/responses/response-accumulator.d.ts +1 -1
  224. package/internal/responses/response-accumulator.d.ts.map +1 -1
  225. package/internal/responses/response-accumulator.js +331 -25
  226. package/internal/responses/response-accumulator.js.map +1 -1
  227. package/internal/responses/response-accumulator.mjs +331 -25
  228. package/internal/responses/response-accumulator.mjs.map +1 -1
  229. package/internal/tslib.js +6 -0
  230. package/internal/tslib.mjs +6 -1
  231. package/internal/uploads.d.mts +10 -6
  232. package/internal/uploads.d.mts.map +1 -1
  233. package/internal/uploads.d.ts +10 -6
  234. package/internal/uploads.d.ts.map +1 -1
  235. package/internal/uploads.js +65 -24
  236. package/internal/uploads.js.map +1 -1
  237. package/internal/uploads.mjs +65 -24
  238. package/internal/uploads.mjs.map +1 -1
  239. package/internal/utils/env.d.mts.map +1 -1
  240. package/internal/utils/env.d.ts.map +1 -1
  241. package/internal/utils/env.js +9 -4
  242. package/internal/utils/env.js.map +1 -1
  243. package/internal/utils/env.mjs +9 -4
  244. package/internal/utils/env.mjs.map +1 -1
  245. package/internal/ws.d.mts.map +1 -1
  246. package/internal/ws.d.ts.map +1 -1
  247. package/internal/ws.js +23 -1
  248. package/internal/ws.js.map +1 -1
  249. package/internal/ws.mjs +23 -1
  250. package/internal/ws.mjs.map +1 -1
  251. package/lib/AbstractChatCompletionRunner.d.mts.map +1 -1
  252. package/lib/AbstractChatCompletionRunner.d.ts.map +1 -1
  253. package/lib/AbstractChatCompletionRunner.js +32 -7
  254. package/lib/AbstractChatCompletionRunner.js.map +1 -1
  255. package/lib/AbstractChatCompletionRunner.mjs +34 -9
  256. package/lib/AbstractChatCompletionRunner.mjs.map +1 -1
  257. package/lib/AssistantStream.d.mts.map +1 -1
  258. package/lib/AssistantStream.d.ts.map +1 -1
  259. package/lib/AssistantStream.js +211 -23
  260. package/lib/AssistantStream.js.map +1 -1
  261. package/lib/AssistantStream.mjs +211 -23
  262. package/lib/AssistantStream.mjs.map +1 -1
  263. package/lib/ChatCompletionStream.d.mts +1 -1
  264. package/lib/ChatCompletionStream.d.mts.map +1 -1
  265. package/lib/ChatCompletionStream.d.ts +1 -1
  266. package/lib/ChatCompletionStream.d.ts.map +1 -1
  267. package/lib/ChatCompletionStream.js +1118 -67
  268. package/lib/ChatCompletionStream.js.map +1 -1
  269. package/lib/ChatCompletionStream.mjs +1119 -68
  270. package/lib/ChatCompletionStream.mjs.map +1 -1
  271. package/lib/EventEmitter.d.mts.map +1 -1
  272. package/lib/EventEmitter.d.ts.map +1 -1
  273. package/lib/EventEmitter.js +67 -9
  274. package/lib/EventEmitter.js.map +1 -1
  275. package/lib/EventEmitter.mjs +68 -10
  276. package/lib/EventEmitter.mjs.map +1 -1
  277. package/lib/EventStream.d.mts +4 -0
  278. package/lib/EventStream.d.mts.map +1 -1
  279. package/lib/EventStream.d.ts +4 -0
  280. package/lib/EventStream.d.ts.map +1 -1
  281. package/lib/EventStream.js +1096 -11
  282. package/lib/EventStream.js.map +1 -1
  283. package/lib/EventStream.mjs +1097 -12
  284. package/lib/EventStream.mjs.map +1 -1
  285. package/lib/ResponsesParser.d.mts.map +1 -1
  286. package/lib/ResponsesParser.d.ts.map +1 -1
  287. package/lib/ResponsesParser.js +1 -1
  288. package/lib/ResponsesParser.js.map +1 -1
  289. package/lib/ResponsesParser.mjs +1 -1
  290. package/lib/ResponsesParser.mjs.map +1 -1
  291. package/lib/Util.d.mts +2 -0
  292. package/lib/Util.d.mts.map +1 -1
  293. package/lib/Util.d.ts +2 -0
  294. package/lib/Util.d.ts.map +1 -1
  295. package/lib/Util.js +7 -4
  296. package/lib/Util.js.map +1 -1
  297. package/lib/Util.mjs +7 -4
  298. package/lib/Util.mjs.map +1 -1
  299. package/lib/assistant-run-polling.d.mts +12 -0
  300. package/lib/assistant-run-polling.d.mts.map +1 -0
  301. package/lib/assistant-run-polling.d.ts +12 -0
  302. package/lib/assistant-run-polling.d.ts.map +1 -0
  303. package/lib/assistant-run-polling.js +17 -0
  304. package/lib/assistant-run-polling.js.map +1 -0
  305. package/lib/assistant-run-polling.mjs +14 -0
  306. package/lib/assistant-run-polling.mjs.map +1 -0
  307. package/lib/embeddings.d.mts +18 -0
  308. package/lib/embeddings.d.mts.map +1 -0
  309. package/lib/embeddings.d.ts +18 -0
  310. package/lib/embeddings.d.ts.map +1 -0
  311. package/lib/embeddings.js +50 -0
  312. package/lib/embeddings.js.map +1 -0
  313. package/lib/embeddings.mjs +47 -0
  314. package/lib/embeddings.mjs.map +1 -0
  315. package/lib/file-processing.d.mts +10 -0
  316. package/lib/file-processing.d.mts.map +1 -0
  317. package/lib/file-processing.d.ts +10 -0
  318. package/lib/file-processing.d.ts.map +1 -0
  319. package/lib/file-processing.js +30 -0
  320. package/lib/file-processing.js.map +1 -0
  321. package/lib/file-processing.mjs +27 -0
  322. package/lib/file-processing.mjs.map +1 -0
  323. package/lib/parser.d.mts.map +1 -1
  324. package/lib/parser.d.ts.map +1 -1
  325. package/lib/parser.js +16 -4
  326. package/lib/parser.js.map +1 -1
  327. package/lib/parser.mjs +16 -4
  328. package/lib/parser.mjs.map +1 -1
  329. package/lib/polling.d.mts +20 -0
  330. package/lib/polling.d.mts.map +1 -0
  331. package/lib/polling.d.ts +20 -0
  332. package/lib/polling.d.ts.map +1 -0
  333. package/lib/polling.js +130 -0
  334. package/lib/polling.js.map +1 -0
  335. package/lib/polling.mjs +127 -0
  336. package/lib/polling.mjs.map +1 -0
  337. package/lib/responses/ResponseStream.d.mts.map +1 -1
  338. package/lib/responses/ResponseStream.d.ts.map +1 -1
  339. package/lib/responses/ResponseStream.js +21 -11
  340. package/lib/responses/ResponseStream.js.map +1 -1
  341. package/lib/responses/ResponseStream.mjs +21 -11
  342. package/lib/responses/ResponseStream.mjs.map +1 -1
  343. package/lib/vector-store-polling.d.mts +22 -0
  344. package/lib/vector-store-polling.d.mts.map +1 -0
  345. package/lib/vector-store-polling.d.ts +22 -0
  346. package/lib/vector-store-polling.d.ts.map +1 -0
  347. package/lib/vector-store-polling.js +24 -0
  348. package/lib/vector-store-polling.js.map +1 -0
  349. package/lib/vector-store-polling.mjs +20 -0
  350. package/lib/vector-store-polling.mjs.map +1 -0
  351. package/lib/vector-store-upload.d.mts +17 -0
  352. package/lib/vector-store-upload.d.mts.map +1 -0
  353. package/lib/vector-store-upload.d.ts +17 -0
  354. package/lib/vector-store-upload.d.ts.map +1 -0
  355. package/lib/vector-store-upload.js +37 -0
  356. package/lib/vector-store-upload.js.map +1 -0
  357. package/lib/vector-store-upload.mjs +34 -0
  358. package/lib/vector-store-upload.mjs.map +1 -0
  359. package/lib/webhook-signature.d.mts +15 -0
  360. package/lib/webhook-signature.d.mts.map +1 -0
  361. package/lib/webhook-signature.d.ts +15 -0
  362. package/lib/webhook-signature.d.ts.map +1 -0
  363. package/lib/webhook-signature.js +125 -0
  364. package/lib/webhook-signature.js.map +1 -0
  365. package/lib/webhook-signature.mjs +121 -0
  366. package/lib/webhook-signature.mjs.map +1 -0
  367. package/package.json +14 -1
  368. package/realtime/internal-base.d.mts +2 -0
  369. package/realtime/internal-base.d.mts.map +1 -1
  370. package/realtime/internal-base.d.ts +2 -0
  371. package/realtime/internal-base.d.ts.map +1 -1
  372. package/realtime/internal-base.js +15 -0
  373. package/realtime/internal-base.js.map +1 -1
  374. package/realtime/internal-base.mjs +14 -0
  375. package/realtime/internal-base.mjs.map +1 -1
  376. package/realtime/websocket.d.mts +3 -2
  377. package/realtime/websocket.d.mts.map +1 -1
  378. package/realtime/websocket.d.ts +3 -2
  379. package/realtime/websocket.d.ts.map +1 -1
  380. package/realtime/websocket.js +90 -26
  381. package/realtime/websocket.js.map +1 -1
  382. package/realtime/websocket.mjs +91 -27
  383. package/realtime/websocket.mjs.map +1 -1
  384. package/realtime/ws.d.mts.map +1 -1
  385. package/realtime/ws.d.ts.map +1 -1
  386. package/realtime/ws.js +9 -1
  387. package/realtime/ws.js.map +1 -1
  388. package/realtime/ws.mjs +10 -2
  389. package/realtime/ws.mjs.map +1 -1
  390. package/resources/admin/organization/index.d.mts +2 -2
  391. package/resources/admin/organization/index.d.mts.map +1 -1
  392. package/resources/admin/organization/index.d.ts +2 -2
  393. package/resources/admin/organization/index.d.ts.map +1 -1
  394. package/resources/admin/organization/index.js.map +1 -1
  395. package/resources/admin/organization/index.mjs.map +1 -1
  396. package/resources/admin/organization/organization.d.mts +4 -4
  397. package/resources/admin/organization/organization.d.mts.map +1 -1
  398. package/resources/admin/organization/organization.d.ts +4 -4
  399. package/resources/admin/organization/organization.d.ts.map +1 -1
  400. package/resources/admin/organization/organization.js.map +1 -1
  401. package/resources/admin/organization/organization.mjs.map +1 -1
  402. package/resources/admin/organization/projects/index.d.mts +1 -1
  403. package/resources/admin/organization/projects/index.d.mts.map +1 -1
  404. package/resources/admin/organization/projects/index.d.ts +1 -1
  405. package/resources/admin/organization/projects/index.d.ts.map +1 -1
  406. package/resources/admin/organization/projects/index.js.map +1 -1
  407. package/resources/admin/organization/projects/index.mjs.map +1 -1
  408. package/resources/admin/organization/projects/projects.d.mts +22 -5
  409. package/resources/admin/organization/projects/projects.d.mts.map +1 -1
  410. package/resources/admin/organization/projects/projects.d.ts +22 -5
  411. package/resources/admin/organization/projects/projects.d.ts.map +1 -1
  412. package/resources/admin/organization/projects/projects.js.map +1 -1
  413. package/resources/admin/organization/projects/projects.mjs.map +1 -1
  414. package/resources/admin/organization/usage.d.mts +62 -1
  415. package/resources/admin/organization/usage.d.mts.map +1 -1
  416. package/resources/admin/organization/usage.d.ts +62 -1
  417. package/resources/admin/organization/usage.d.ts.map +1 -1
  418. package/resources/admin/organization/usage.js.map +1 -1
  419. package/resources/admin/organization/usage.mjs.map +1 -1
  420. package/resources/beta/responses/internal-base.d.mts.map +1 -1
  421. package/resources/beta/responses/internal-base.d.ts.map +1 -1
  422. package/resources/beta/responses/internal-base.js +2 -0
  423. package/resources/beta/responses/internal-base.js.map +1 -1
  424. package/resources/beta/responses/internal-base.mjs +2 -0
  425. package/resources/beta/responses/internal-base.mjs.map +1 -1
  426. package/resources/beta/responses/responses.d.mts +17 -20
  427. package/resources/beta/responses/responses.d.mts.map +1 -1
  428. package/resources/beta/responses/responses.d.ts +17 -20
  429. package/resources/beta/responses/responses.d.ts.map +1 -1
  430. package/resources/beta/responses/responses.js.map +1 -1
  431. package/resources/beta/responses/responses.mjs.map +1 -1
  432. package/resources/beta/threads/runs/index.d.mts +1 -1
  433. package/resources/beta/threads/runs/index.d.mts.map +1 -1
  434. package/resources/beta/threads/runs/index.d.ts +1 -1
  435. package/resources/beta/threads/runs/index.d.ts.map +1 -1
  436. package/resources/beta/threads/runs/runs.d.mts.map +1 -1
  437. package/resources/beta/threads/runs/runs.d.ts.map +1 -1
  438. package/resources/beta/threads/runs/runs.js +2 -43
  439. package/resources/beta/threads/runs/runs.js.map +1 -1
  440. package/resources/beta/threads/runs/runs.mjs +2 -43
  441. package/resources/beta/threads/runs/runs.mjs.map +1 -1
  442. package/resources/chat/completions/completions.d.mts +6 -0
  443. package/resources/chat/completions/completions.d.mts.map +1 -1
  444. package/resources/chat/completions/completions.d.ts +6 -0
  445. package/resources/chat/completions/completions.d.ts.map +1 -1
  446. package/resources/chat/completions/completions.js.map +1 -1
  447. package/resources/chat/completions/completions.mjs.map +1 -1
  448. package/resources/embeddings.d.mts.map +1 -1
  449. package/resources/embeddings.d.ts.map +1 -1
  450. package/resources/embeddings.js +2 -36
  451. package/resources/embeddings.js.map +1 -1
  452. package/resources/embeddings.mjs +2 -36
  453. package/resources/embeddings.mjs.map +1 -1
  454. package/resources/files.d.mts.map +1 -1
  455. package/resources/files.d.ts.map +1 -1
  456. package/resources/files.js +2 -15
  457. package/resources/files.js.map +1 -1
  458. package/resources/files.mjs +2 -15
  459. package/resources/files.mjs.map +1 -1
  460. package/resources/images.d.mts +12 -22
  461. package/resources/images.d.mts.map +1 -1
  462. package/resources/images.d.ts +12 -22
  463. package/resources/images.d.ts.map +1 -1
  464. package/resources/realtime/calls.d.mts +23 -1
  465. package/resources/realtime/calls.d.mts.map +1 -1
  466. package/resources/realtime/calls.d.ts +23 -1
  467. package/resources/realtime/calls.d.ts.map +1 -1
  468. package/resources/realtime/calls.js +24 -0
  469. package/resources/realtime/calls.js.map +1 -1
  470. package/resources/realtime/calls.mjs +24 -0
  471. package/resources/realtime/calls.mjs.map +1 -1
  472. package/resources/realtime/index.d.mts +1 -1
  473. package/resources/realtime/index.d.mts.map +1 -1
  474. package/resources/realtime/index.d.ts +1 -1
  475. package/resources/realtime/index.d.ts.map +1 -1
  476. package/resources/realtime/index.js.map +1 -1
  477. package/resources/realtime/index.mjs +1 -1
  478. package/resources/realtime/index.mjs.map +1 -1
  479. package/resources/realtime/realtime.d.mts +5 -4
  480. package/resources/realtime/realtime.d.mts.map +1 -1
  481. package/resources/realtime/realtime.d.ts +5 -4
  482. package/resources/realtime/realtime.d.ts.map +1 -1
  483. package/resources/realtime/realtime.js.map +1 -1
  484. package/resources/realtime/realtime.mjs.map +1 -1
  485. package/resources/responses/internal-base.d.mts.map +1 -1
  486. package/resources/responses/internal-base.d.ts.map +1 -1
  487. package/resources/responses/internal-base.js +2 -0
  488. package/resources/responses/internal-base.js.map +1 -1
  489. package/resources/responses/internal-base.mjs +2 -0
  490. package/resources/responses/internal-base.mjs.map +1 -1
  491. package/resources/responses/responses.d.mts +17 -20
  492. package/resources/responses/responses.d.mts.map +1 -1
  493. package/resources/responses/responses.d.ts +17 -20
  494. package/resources/responses/responses.d.ts.map +1 -1
  495. package/resources/responses/responses.js.map +1 -1
  496. package/resources/responses/responses.mjs.map +1 -1
  497. package/resources/vector-stores/file-batches.d.mts.map +1 -1
  498. package/resources/vector-stores/file-batches.d.ts.map +1 -1
  499. package/resources/vector-stores/file-batches.js +4 -61
  500. package/resources/vector-stores/file-batches.js.map +1 -1
  501. package/resources/vector-stores/file-batches.mjs +4 -61
  502. package/resources/vector-stores/file-batches.mjs.map +1 -1
  503. package/resources/vector-stores/files.d.mts +1 -1
  504. package/resources/vector-stores/files.d.mts.map +1 -1
  505. package/resources/vector-stores/files.d.ts +1 -1
  506. package/resources/vector-stores/files.d.ts.map +1 -1
  507. package/resources/vector-stores/files.js +2 -35
  508. package/resources/vector-stores/files.js.map +1 -1
  509. package/resources/vector-stores/files.mjs +2 -35
  510. package/resources/vector-stores/files.mjs.map +1 -1
  511. package/resources/webhooks/webhooks.d.mts.map +1 -1
  512. package/resources/webhooks/webhooks.d.ts.map +1 -1
  513. package/resources/webhooks/webhooks.js +5 -43
  514. package/resources/webhooks/webhooks.js.map +1 -1
  515. package/resources/webhooks/webhooks.mjs +5 -43
  516. package/resources/webhooks/webhooks.mjs.map +1 -1
  517. package/src/auth/index.ts +6 -1
  518. package/src/auth/subject-token-providers.ts +196 -4
  519. package/src/auth/types.ts +24 -0
  520. package/src/auth/workload-identity-auth.ts +104 -7
  521. package/src/auth/x509-transport.ts +49 -0
  522. package/src/azure.ts +22 -1
  523. package/src/bedrock.ts +49 -5
  524. package/src/beta/realtime/internal-base.ts +15 -0
  525. package/src/beta/realtime/websocket.ts +148 -40
  526. package/src/beta/realtime/ws.ts +31 -13
  527. package/src/client.ts +536 -92
  528. package/src/core/EventEmitter.ts +91 -7
  529. package/src/core/streaming.ts +226 -30
  530. package/src/helpers/audio.ts +93 -22
  531. package/src/helpers/standard-schema.ts +50 -16
  532. package/src/helpers/zod-v3-strict-schema.ts +514 -0
  533. package/src/helpers/zod.ts +17 -4
  534. package/src/index.ts +1 -1
  535. package/src/internal/assistant-stream-delta.ts +33 -10
  536. package/src/internal/auth/x509-token-exchange.ts +310 -0
  537. package/src/internal/auth/x509-transport-capability.ts +219 -0
  538. package/src/internal/auth/x509-transport-registry.ts +118 -0
  539. package/src/internal/auth/x509-transport-state-browser.ts +36 -0
  540. package/src/internal/auth/x509-transport-state.cts +36 -0
  541. package/src/internal/auth/x509-workload-identity-auth.ts +958 -0
  542. package/src/internal/bedrock.ts +182 -5
  543. package/src/internal/data-residency.ts +44 -0
  544. package/src/internal/multipart-encoding.ts +53 -0
  545. package/src/internal/qs/utils.ts +375 -13
  546. package/src/internal/request-options.ts +52 -1
  547. package/src/internal/responses/canonical-output-text.ts +3 -3
  548. package/src/internal/responses/response-accumulator.ts +411 -24
  549. package/src/internal/uploads.ts +81 -26
  550. package/src/internal/utils/env.ts +9 -5
  551. package/src/internal/ws.ts +24 -3
  552. package/src/lib/AbstractChatCompletionRunner.ts +33 -6
  553. package/src/lib/AssistantStream.ts +262 -22
  554. package/src/lib/ChatCompletionStream.ts +1467 -103
  555. package/src/lib/EventEmitter.ts +91 -7
  556. package/src/lib/EventStream.ts +1483 -10
  557. package/src/lib/ResponsesParser.ts +4 -1
  558. package/src/lib/Util.ts +7 -5
  559. package/src/lib/assistant-run-polling.ts +27 -0
  560. package/src/lib/embeddings.ts +65 -0
  561. package/src/lib/file-processing.ts +36 -0
  562. package/src/lib/parser.ts +19 -4
  563. package/src/lib/polling.ts +144 -0
  564. package/src/lib/responses/ResponseStream.ts +22 -10
  565. package/src/lib/vector-store-polling.ts +46 -0
  566. package/src/lib/vector-store-upload.ts +53 -0
  567. package/src/lib/webhook-signature.ts +164 -0
  568. package/src/realtime/internal-base.ts +15 -0
  569. package/src/realtime/websocket.ts +130 -27
  570. package/src/realtime/ws.ts +15 -2
  571. package/src/resources/admin/organization/index.ts +2 -0
  572. package/src/resources/admin/organization/organization.ts +4 -0
  573. package/src/resources/admin/organization/projects/index.ts +1 -0
  574. package/src/resources/admin/organization/projects/projects.ts +37 -4
  575. package/src/resources/admin/organization/usage.ts +83 -0
  576. package/src/resources/beta/responses/internal-base.ts +2 -0
  577. package/src/resources/beta/responses/responses.ts +19 -22
  578. package/src/resources/beta/threads/runs/index.ts +1 -1
  579. package/src/resources/beta/threads/runs/runs.ts +2 -45
  580. package/src/resources/chat/completions/completions.ts +7 -0
  581. package/src/resources/embeddings.ts +2 -42
  582. package/src/resources/files.ts +2 -19
  583. package/src/resources/images.ts +12 -22
  584. package/src/resources/realtime/api.md +1 -0
  585. package/src/resources/realtime/calls.ts +46 -0
  586. package/src/resources/realtime/index.ts +7 -1
  587. package/src/resources/realtime/realtime.ts +5 -3
  588. package/src/resources/responses/internal-base.ts +2 -0
  589. package/src/resources/responses/responses.ts +19 -22
  590. package/src/resources/vector-stores/file-batches.ts +8 -77
  591. package/src/resources/vector-stores/files.ts +3 -43
  592. package/src/resources/webhooks/webhooks.ts +5 -61
  593. package/src/version.ts +1 -1
  594. package/version.d.mts +1 -1
  595. package/version.d.ts +1 -1
  596. package/version.js +1 -1
  597. package/version.mjs +1 -1
@@ -0,0 +1,757 @@
1
+ var _X509WorkloadIdentityAuth_instances, _a, _X509WorkloadIdentityAuth_identityProviderId, _X509WorkloadIdentityAuth_serviceAccountId, _X509WorkloadIdentityAuth_configuredRefreshBufferMs, _X509WorkloadIdentityAuth_organization, _X509WorkloadIdentityAuth_project, _X509WorkloadIdentityAuth_transport, _X509WorkloadIdentityAuth_refreshBufferMs, _X509WorkloadIdentityAuth_cachedToken, _X509WorkloadIdentityAuth_refresh, _X509WorkloadIdentityAuth_tokenGeneration, _X509WorkloadIdentityAuth_cancelRequestBody, _X509WorkloadIdentityAuth_assignToken, _X509WorkloadIdentityAuth_recoverRefreshFailure, _X509WorkloadIdentityAuth_fallbackToken, _X509WorkloadIdentityAuth_retireRefresh, _X509WorkloadIdentityAuth_beginRefresh, _X509WorkloadIdentityAuth_refreshToken, _X509WorkloadIdentityAuth_preflight, _X509WorkloadIdentityAuth_scope, _X509WorkloadIdentityAuth_assertTenantHeaders;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "../tslib.mjs";
3
+ import { APIConnectionTimeoutError, APIUserAbortError, OAuthError, OpenAIError } from "../../core/error.mjs";
4
+ import { buildHeaders } from "../headers.mjs";
5
+ import { CancelReadableStream } from "../shims.mjs";
6
+ import { hasOwn } from "../utils/values.mjs";
7
+ import { resolveX509Transport } from "./x509-transport-registry.mjs";
8
+ import { isApprovedX509Client, findX509OAuthError, isRetryableX509IssuerError, isTransientX509ConnectionError, } from '#x509-transport-state';
9
+ /** Sole API authority approved for OpenAI X.509 workload-identity federation. */
10
+ export const X509_API_BASE_URL = 'https://mtls.api.openai.com/v1';
11
+ const X509_API_ORIGIN = 'https://mtls.api.openai.com';
12
+ const FORBIDDEN_TRANSPORT_OPTIONS = ['dispatcher', 'agent', 'client', 'tls', 'proxy'];
13
+ const headerValue = (headers, name) => Headers.prototype.get.call(headers, name);
14
+ const DEFAULT_REFRESH_BUFFER_MS = 20 * 60 * 1000;
15
+ const FAILED_REFRESH_COOLDOWN_MS = 1000;
16
+ const userAbortError = (signal) => {
17
+ const error = new APIUserAbortError();
18
+ Object.defineProperty(error, 'cause', { value: signal.reason, writable: true, configurable: true });
19
+ return error;
20
+ };
21
+ function assertSafeHeaders(headers) {
22
+ for (const name of Headers.prototype.keys.call(headers)) {
23
+ const canonical = name.toLowerCase().split('_').join('-');
24
+ if (canonical === 'api-key' ||
25
+ canonical === 'x-api-key' ||
26
+ canonical === 'proxy-authorization' ||
27
+ canonical === 'host') {
28
+ throw new OpenAIError('X.509 workload identity cannot send conflicting authentication credentials.');
29
+ }
30
+ }
31
+ }
32
+ function exchangeDeadline(timeout, callerSignal) {
33
+ const deadline = new AbortController();
34
+ const timer = timeout === undefined
35
+ ? undefined
36
+ : setTimeout(() => deadline.abort(new APIConnectionTimeoutError()), timeout);
37
+ const timerHandle = timer;
38
+ if (typeof timerHandle === 'object' &&
39
+ timerHandle !== null &&
40
+ 'unref' in timerHandle &&
41
+ typeof timerHandle.unref === 'function') {
42
+ timerHandle.unref();
43
+ }
44
+ const cancel = () => deadline.abort(callerSignal?.reason);
45
+ callerSignal?.addEventListener('abort', cancel, { once: true });
46
+ if (callerSignal?.aborted) {
47
+ cancel();
48
+ }
49
+ return {
50
+ signal: deadline.signal,
51
+ dispose: () => {
52
+ callerSignal?.removeEventListener('abort', cancel);
53
+ if (timer) {
54
+ clearTimeout(timer);
55
+ }
56
+ },
57
+ };
58
+ }
59
+ function waitForRefresh(attempt, signal) {
60
+ let abort;
61
+ // AbortSignal remains callback-only on supported TypeScript/runtime combinations.
62
+ // oxlint-disable-next-line promise/avoid-new -- A callback-only AbortSignal must race a shared refresh.
63
+ const canceled = new Promise((_resolve, reject) => {
64
+ abort = () => reject(signal.reason);
65
+ signal.addEventListener('abort', abort, { once: true });
66
+ if (signal.aborted) {
67
+ abort();
68
+ }
69
+ });
70
+ return {
71
+ result: Promise.race([attempt.promise, canceled]),
72
+ dispose: () => {
73
+ if (abort) {
74
+ signal.removeEventListener('abort', abort);
75
+ }
76
+ },
77
+ };
78
+ }
79
+ /** Distinguishes true certificate identities from extensible legacy subject-token identities. */
80
+ export function isX509WorkloadIdentity(identity) {
81
+ if (!identity || typeof identity !== 'object') {
82
+ return false;
83
+ }
84
+ let providerOwner = identity;
85
+ while (providerOwner !== null && providerOwner !== Object.prototype) {
86
+ const provider = Object.getOwnPropertyDescriptor(providerOwner, 'provider');
87
+ if (provider) {
88
+ if (!('value' in provider) || provider.value !== undefined) {
89
+ return false;
90
+ }
91
+ break;
92
+ }
93
+ providerOwner = Object.getPrototypeOf(providerOwner);
94
+ }
95
+ let current = identity;
96
+ while (current !== null && current !== Object.prototype) {
97
+ const discriminator = Object.getOwnPropertyDescriptor(current, 'type');
98
+ if (discriminator) {
99
+ if (!('value' in discriminator)) {
100
+ throw new OpenAIError('X.509 workload identity type must be a plain data property.');
101
+ }
102
+ return discriminator.value === 'x509';
103
+ }
104
+ current = Object.getPrototypeOf(current);
105
+ }
106
+ return false;
107
+ }
108
+ /** Rejects unsupported WebSocket authentication before any connection or credential side effect. */
109
+ export function assertX509WebSocketSupported(client) {
110
+ if (!client || typeof client !== 'object') {
111
+ return;
112
+ }
113
+ if (isApprovedX509Client(client)) {
114
+ throw new OpenAIError('X.509 workload identity does not support WebSocket connections.');
115
+ }
116
+ }
117
+ /** Rejects every destination outside the sole enrolled, global X.509 API authority. */
118
+ export function assertX509APIOrigin(value) {
119
+ let target;
120
+ try {
121
+ target = new URL(value);
122
+ }
123
+ catch {
124
+ throw new OpenAIError('X.509 workload identity requires the approved global mTLS API origin.');
125
+ }
126
+ if (target.origin !== X509_API_ORIGIN || target.username || target.password) {
127
+ throw new OpenAIError('X.509 workload identity requires the approved global mTLS API origin.');
128
+ }
129
+ return target;
130
+ }
131
+ /** Prevents caller options from replacing the immutable transport selected at construction. */
132
+ export function assertX509FetchOptions(options) {
133
+ if (!options) {
134
+ return;
135
+ }
136
+ for (const name of FORBIDDEN_TRANSPORT_OPTIONS) {
137
+ if (hasOwn(options, name)) {
138
+ throw new OpenAIError('X.509 workload identity cannot override its approved transport capability.');
139
+ }
140
+ }
141
+ const redirect = Object.getOwnPropertyDescriptor(options, 'redirect')?.value;
142
+ if (redirect !== undefined && redirect !== 'manual') {
143
+ throw new OpenAIError('X.509 workload identity requests require manual redirects.');
144
+ }
145
+ }
146
+ /** Rejects caller overrides while allowing the SDK-owned fields on the final RequestInit. */
147
+ export function assertX509RequestOptions(options) {
148
+ assertX509FetchOptions(options);
149
+ if (options && ['body', 'headers', 'method', 'signal'].some((name) => hasOwn(options, name))) {
150
+ throw new OpenAIError('X.509 workload identity cannot override its request body, headers, method, or signal through fetch options.');
151
+ }
152
+ }
153
+ /** Validates and snapshots the exact caller options that will reach authenticated dispatch. */
154
+ export function snapshotX509RequestOptions(options) {
155
+ assertX509RequestOptions(options);
156
+ const snapshot = { ...options };
157
+ assertX509RequestOptions(snapshot);
158
+ return snapshot;
159
+ }
160
+ /** Bridges certificate authentication into existing OpenAI auth and fetch hooks without optional peers. */
161
+ export class X509WorkloadIdentityAuth {
162
+ /** Captures one registered, immutable certificate identity and its enrolled selectors. */
163
+ constructor(identity, transport, organization, project) {
164
+ _X509WorkloadIdentityAuth_instances.add(this);
165
+ _X509WorkloadIdentityAuth_identityProviderId.set(this, void 0);
166
+ _X509WorkloadIdentityAuth_serviceAccountId.set(this, void 0);
167
+ _X509WorkloadIdentityAuth_configuredRefreshBufferMs.set(this, void 0);
168
+ _X509WorkloadIdentityAuth_organization.set(this, void 0);
169
+ _X509WorkloadIdentityAuth_project.set(this, void 0);
170
+ _X509WorkloadIdentityAuth_transport.set(this, void 0);
171
+ _X509WorkloadIdentityAuth_refreshBufferMs.set(this, void 0);
172
+ _X509WorkloadIdentityAuth_cachedToken.set(this, void 0);
173
+ _X509WorkloadIdentityAuth_refresh.set(this, void 0);
174
+ _X509WorkloadIdentityAuth_tokenGeneration.set(this, 0);
175
+ __classPrivateFieldSet(this, _X509WorkloadIdentityAuth_transport, resolveX509Transport(transport), "f");
176
+ __classPrivateFieldSet(this, _X509WorkloadIdentityAuth_identityProviderId, identity.identityProviderId, "f");
177
+ __classPrivateFieldSet(this, _X509WorkloadIdentityAuth_serviceAccountId, identity.serviceAccountId, "f");
178
+ __classPrivateFieldSet(this, _X509WorkloadIdentityAuth_configuredRefreshBufferMs, identity.refreshBufferMs, "f");
179
+ __classPrivateFieldSet(this, _X509WorkloadIdentityAuth_organization, organization, "f");
180
+ __classPrivateFieldSet(this, _X509WorkloadIdentityAuth_project, project, "f");
181
+ if (__classPrivateFieldGet(this, _X509WorkloadIdentityAuth_configuredRefreshBufferMs, "f") !== undefined &&
182
+ (!Number.isSafeInteger(__classPrivateFieldGet(this, _X509WorkloadIdentityAuth_configuredRefreshBufferMs, "f")) || __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_configuredRefreshBufferMs, "f") < 0)) {
183
+ throw new OpenAIError('X.509 workload identity requires a nonnegative integer refreshBufferMs.');
184
+ }
185
+ __classPrivateFieldSet(this, _X509WorkloadIdentityAuth_refreshBufferMs, __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_configuredRefreshBufferMs, "f") ?? DEFAULT_REFRESH_BUFFER_MS, "f");
186
+ }
187
+ /** Reconstructs the immutable selectors captured before caller-owned identity mutation. */
188
+ identitySnapshot() {
189
+ return {
190
+ type: 'x509',
191
+ identityProviderId: __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_identityProviderId, "f"),
192
+ serviceAccountId: __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_serviceAccountId, "f"),
193
+ ...(__classPrivateFieldGet(this, _X509WorkloadIdentityAuth_configuredRefreshBufferMs, "f") === undefined
194
+ ? {}
195
+ : { refreshBufferMs: __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_configuredRefreshBufferMs, "f") }),
196
+ };
197
+ }
198
+ /** Preserves explicitly headerless requests without presenting a certificate to the issuer. */
199
+ static shouldAuthenticate(options, defaultHeaders, requestHeaders = options.headers) {
200
+ return !buildHeaders([defaultHeaders, requestHeaders]).nulls.has('authorization');
201
+ }
202
+ /** Snapshots each caller-owned header layer once while preserving nulls and precedence. */
203
+ snapshotHeaders(defaultHeaders, requestHeaders) {
204
+ const scope = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this);
205
+ scope.defaultHeaders ?? (scope.defaultHeaders = buildHeaders([defaultHeaders]));
206
+ scope.requestHeaders ?? (scope.requestHeaders = buildHeaders([requestHeaders]));
207
+ return this.headerSnapshots();
208
+ }
209
+ /** Returns the already rendered caller headers without touching mutable inputs again. */
210
+ headerSnapshots() {
211
+ const { defaultHeaders, requestHeaders } = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this);
212
+ if (!defaultHeaders || !requestHeaders) {
213
+ throw new OpenAIError('X.509 workload identity requires snapshotted request headers.');
214
+ }
215
+ return { defaultHeaders, requestHeaders };
216
+ }
217
+ /** Captures enrolled public tenant selectors once before certificate presentation. */
218
+ snapshotTenant(organization, project) {
219
+ if (organization !== __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_organization, "f") || project !== __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_project, "f")) {
220
+ throw new OpenAIError('X.509 workload identity cannot override its enrolled organization or project.');
221
+ }
222
+ const scope = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this);
223
+ scope.tenant = { organization, project };
224
+ return scope.tenant;
225
+ }
226
+ /** Returns the tenant selectors already approved for this logical request. */
227
+ tenantSnapshot() {
228
+ const { tenant } = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this);
229
+ if (!tenant) {
230
+ throw new OpenAIError('X.509 workload identity requires snapshotted tenant selectors.');
231
+ }
232
+ return tenant;
233
+ }
234
+ /** Validates and retains the exact destination that authenticated dispatch will use. */
235
+ snapshotAPIURL(value) {
236
+ assertX509APIOrigin(value);
237
+ __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this).apiURL = value;
238
+ }
239
+ /** Reads the already-approved destination without rerendering caller-owned request options. */
240
+ requestAPIURL() {
241
+ const { apiURL } = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this);
242
+ if (apiURL === undefined) {
243
+ throw new OpenAIError('X.509 workload identity requires a snapshotted API destination.');
244
+ }
245
+ return apiURL;
246
+ }
247
+ /** Captures the exact caller settings approved for authenticated dispatch. */
248
+ snapshotRequest(signal, timeout, fetchOptions) {
249
+ var _b;
250
+ (_b = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this)).request ?? (_b.request = { signal, timeout, fetchOptions });
251
+ }
252
+ /** Returns immutable request settings without invoking caller-owned accessors again. */
253
+ requestSnapshot() {
254
+ const { request } = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this);
255
+ if (!request) {
256
+ throw new OpenAIError('X.509 workload identity requires snapshotted request settings.');
257
+ }
258
+ return request;
259
+ }
260
+ /** Begins local request construction without charging protected hook latency to the network. */
261
+ beginRequestPlanning() {
262
+ __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this).phase = 'planning';
263
+ }
264
+ /** Arms one absolute network deadline only after all local request preparation completes. */
265
+ beginRequestNetwork() {
266
+ const scope = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this);
267
+ if (!scope.deadlineArmed) {
268
+ scope.wallStartedAt = Date.now();
269
+ scope.monotonicStartedAt = performance.now();
270
+ scope.deadlineArmed = true;
271
+ }
272
+ }
273
+ /** Keeps certificate authentication outside overridable request construction. */
274
+ isPlanningRequest() {
275
+ return __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this).phase === 'planning';
276
+ }
277
+ /** Approves the final overridden destination and transport before minting a bearer. */
278
+ authorizePlannedRequest(url, request, timeout, allowHookSignal = false) {
279
+ const scope = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this);
280
+ const headers = Object.getOwnPropertyDescriptor(request, 'headers');
281
+ const body = Object.getOwnPropertyDescriptor(request, 'body');
282
+ const signal = Object.getOwnPropertyDescriptor(request, 'signal');
283
+ const redirect = Object.getOwnPropertyDescriptor(request, 'redirect');
284
+ if (scope.phase !== 'planning' ||
285
+ !headers ||
286
+ !(headers.value instanceof Headers) ||
287
+ (!body && 'body' in request) ||
288
+ [body, signal, redirect].some((descriptor) => descriptor && !('value' in descriptor))) {
289
+ throw new OpenAIError('X.509 workload identity requires an approved final request.');
290
+ }
291
+ this.snapshotAPIURL(url);
292
+ assertX509FetchOptions(request);
293
+ try {
294
+ assertSafeHeaders(headers.value);
295
+ }
296
+ catch {
297
+ throw new OpenAIError('X.509 workload identity cannot use caller-supplied authentication credentials.');
298
+ }
299
+ if (headerValue(headers.value, 'Authorization') !== null) {
300
+ throw new OpenAIError('X.509 workload identity cannot use caller-supplied authorization credentials.');
301
+ }
302
+ __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_assertTenantHeaders).call(this, headers.value);
303
+ if (!allowHookSignal && (signal?.value ?? undefined) !== (this.requestSnapshot().signal ?? undefined)) {
304
+ throw new OpenAIError('X.509 workload identity must preserve its approved request signal.');
305
+ }
306
+ const approved = this.requestSnapshot();
307
+ scope.request = { ...approved, timeout: Math.min(approved.timeout, timeout) };
308
+ scope.phase = 'authorizing';
309
+ }
310
+ /** Owns only SDK-created iterator adapters until authenticated dispatch takes responsibility. */
311
+ ownRequestBody(body, source) {
312
+ if (body instanceof ReadableStream && body !== source) {
313
+ __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this).materializedBody = body;
314
+ }
315
+ }
316
+ /** Recognizes every one-shot upload before issuer authentication or request replay. */
317
+ static isStreamingRequestBody(body) {
318
+ return ((globalThis.ReadableStream !== undefined && body instanceof globalThis.ReadableStream) ||
319
+ (typeof body === 'object' &&
320
+ body !== null &&
321
+ (Symbol.asyncIterator in body ||
322
+ (Symbol.iterator in body && 'next' in body && typeof body.next === 'function'))));
323
+ }
324
+ /** Retires abandoned upload adapters without masking or blocking their authentication failure. */
325
+ retireRequestBody() {
326
+ const scope = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this);
327
+ const body = scope.materializedBody;
328
+ delete scope.materializedBody;
329
+ if (body) {
330
+ void __classPrivateFieldGet(_a, _a, "m", _X509WorkloadIdentityAuth_cancelRequestBody).call(_a, body);
331
+ }
332
+ }
333
+ /** Transfers the dispatched upload while retiring any SDK-owned body replaced by a hook. */
334
+ releaseRequestBody(body) {
335
+ const scope = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this);
336
+ if (scope.materializedBody === body) {
337
+ delete scope.materializedBody;
338
+ }
339
+ else {
340
+ this.retireRequestBody();
341
+ }
342
+ }
343
+ /** Retains caller-only cancellation separately from SDK-created deadline controllers. */
344
+ setEffectiveSignal(signal) {
345
+ if (signal) {
346
+ __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this).effectiveSignal = signal;
347
+ }
348
+ else {
349
+ delete __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this).effectiveSignal;
350
+ }
351
+ }
352
+ /** Uses protected-hook cancellation when an authenticated attempt enters retry backoff. */
353
+ effectiveSignal() {
354
+ const scope = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this);
355
+ return scope.effectiveSignal ?? scope.request?.signal;
356
+ }
357
+ /** Establishes an independent scope even when concurrent requests share caller options. */
358
+ runRequest(operation, requestOwner) {
359
+ return __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_transport, "f").run(async () => {
360
+ const scope = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_transport, "f").current();
361
+ if (!scope) {
362
+ throw new OpenAIError('X.509 workload identity requires an active certificate request scope.');
363
+ }
364
+ scope.owner = this;
365
+ scope.requestOwner = requestOwner;
366
+ try {
367
+ return await operation();
368
+ }
369
+ finally {
370
+ this.retireRequestBody();
371
+ this.releaseRequestCredentials();
372
+ delete scope.requestOwner;
373
+ delete scope.owner;
374
+ }
375
+ });
376
+ }
377
+ /** Reports whether a public request-building call already belongs to an active logical operation. */
378
+ inRequest(requestOwner) {
379
+ const scope = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_transport, "f").current();
380
+ return scope?.owner === this && scope.requestOwner === requestOwner && scope.phase !== 'authorizing';
381
+ }
382
+ /** Shares a cache only when the complete, privately snapshotted credential identity matches. */
383
+ matches(other) {
384
+ return (__classPrivateFieldGet(this, _X509WorkloadIdentityAuth_transport, "f") === __classPrivateFieldGet(other, _X509WorkloadIdentityAuth_transport, "f") &&
385
+ __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_identityProviderId, "f") === __classPrivateFieldGet(other, _X509WorkloadIdentityAuth_identityProviderId, "f") &&
386
+ __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_serviceAccountId, "f") === __classPrivateFieldGet(other, _X509WorkloadIdentityAuth_serviceAccountId, "f") &&
387
+ __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_organization, "f") === __classPrivateFieldGet(other, _X509WorkloadIdentityAuth_organization, "f") &&
388
+ __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_project, "f") === __classPrivateFieldGet(other, _X509WorkloadIdentityAuth_project, "f") &&
389
+ __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_refreshBufferMs, "f") === __classPrivateFieldGet(other, _X509WorkloadIdentityAuth_refreshBufferMs, "f"));
390
+ }
391
+ /** Binds deferred response parsing to the original logical request and its unchanged deadline. */
392
+ continuation() {
393
+ const { wallStartedAt, monotonicStartedAt, deadlineArmed, request, requestOwner, effectiveSignal } = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this);
394
+ const scope = {
395
+ wallStartedAt,
396
+ monotonicStartedAt,
397
+ owner: this,
398
+ ...(deadlineArmed ? { deadlineArmed } : {}),
399
+ ...(request ? { request } : {}),
400
+ ...(effectiveSignal ? { effectiveSignal } : {}),
401
+ ...(requestOwner ? { requestOwner } : {}),
402
+ };
403
+ return (operation) => __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_transport, "f").resume(scope, async () => {
404
+ try {
405
+ return await operation();
406
+ }
407
+ finally {
408
+ this.releaseRequestCredentials();
409
+ delete scope.requestOwner;
410
+ delete scope.owner;
411
+ }
412
+ });
413
+ }
414
+ /** Removes dispatched bearer material before settled request promises can retain their scope. */
415
+ releaseRequestCredentials() {
416
+ const scope = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this);
417
+ delete scope.request;
418
+ delete scope.phase;
419
+ delete scope.deadlineArmed;
420
+ delete scope.effectiveSignal;
421
+ delete scope.materializedBody;
422
+ delete scope.apiURL;
423
+ delete scope.tenant;
424
+ delete scope.token;
425
+ delete scope.defaultHeaders;
426
+ delete scope.requestHeaders;
427
+ delete scope.tokenGeneration;
428
+ delete scope.headers;
429
+ delete scope.authorization;
430
+ }
431
+ /** Returns the original authentication start so response consumption shares its request deadline. */
432
+ requestStartedAt(_options) {
433
+ return __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_transport, "f").current()?.wallStartedAt;
434
+ }
435
+ /** Distinguishes issued workload credentials from independent admin or headerless requests. */
436
+ usedWorkloadToken(_options) {
437
+ return __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_transport, "f").current()?.token !== undefined;
438
+ }
439
+ /** Returns the budget left after certificate authentication without starting another timeout. */
440
+ remainingTimeout(_options, timeout) {
441
+ const scope = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_transport, "f").current();
442
+ if (scope === undefined) {
443
+ return timeout;
444
+ }
445
+ const remaining = timeout - (performance.now() - scope.monotonicStartedAt);
446
+ if (remaining <= 0) {
447
+ throw new APIConnectionTimeoutError();
448
+ }
449
+ return remaining;
450
+ }
451
+ /** Cancels active retry timers promptly without changing public caller-abort semantics. */
452
+ async waitForRetry(duration, signal) {
453
+ try {
454
+ await __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_transport, "f").sleep(duration, signal);
455
+ }
456
+ catch (error) {
457
+ if (signal?.aborted) {
458
+ throw userAbortError(signal);
459
+ }
460
+ throw error;
461
+ }
462
+ }
463
+ /** Trusts only issuer or connection failures privately branded by the approved transport. */
464
+ static isRetryableFailure(error) {
465
+ return (typeof error === 'object' &&
466
+ error !== null &&
467
+ (isTransientX509ConnectionError(error) || isRetryableX509IssuerError(error)));
468
+ }
469
+ /** Reads safe retry hints only from a privately branded, sanitized issuer response. */
470
+ static retryHeaders(error) {
471
+ if (!error || typeof error !== 'object' || !isRetryableX509IssuerError(error)) {
472
+ return undefined;
473
+ }
474
+ const headers = Object.getOwnPropertyDescriptor(error, 'headers')?.value;
475
+ return headers instanceof Headers ? headers : undefined;
476
+ }
477
+ /** Exchanges the exact certificate capability selected for the matching API dispatch. */
478
+ async getToken(options, context) {
479
+ const callerSignal = context ? context.signal : options?.signal;
480
+ if (callerSignal?.aborted) {
481
+ throw userAbortError(callerSignal);
482
+ }
483
+ if (options) {
484
+ assertX509RequestOptions(context ? context.fetchOptions : options.fetchOptions);
485
+ }
486
+ __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_preflight).call(this, context);
487
+ const scope = options ? __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this) : undefined;
488
+ const cached = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_cachedToken, "f");
489
+ if (cached && performance.now() < cached.refreshAt && Date.now() < cached.wallRefreshAt) {
490
+ return __classPrivateFieldGet(_a, _a, "m", _X509WorkloadIdentityAuth_assignToken).call(_a, scope, cached);
491
+ }
492
+ const remaining = context && options ? this.remainingTimeout(options, context.timeout) : context?.timeout;
493
+ const { signal, dispose } = exchangeDeadline(remaining, callerSignal);
494
+ if (callerSignal?.aborted) {
495
+ dispose();
496
+ throw userAbortError(callerSignal);
497
+ }
498
+ const attempt = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_refresh, "f") ?? __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_beginRefresh).call(this);
499
+ attempt.waiters += 1;
500
+ const waiter = waitForRefresh(attempt, signal);
501
+ try {
502
+ const exchanged = await waiter.result;
503
+ const refreshed = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_cachedToken, "f");
504
+ if (!refreshed || refreshed.accessToken !== exchanged.accessToken) {
505
+ throw new APIUserAbortError();
506
+ }
507
+ return __classPrivateFieldGet(_a, _a, "m", _X509WorkloadIdentityAuth_assignToken).call(_a, scope, refreshed);
508
+ }
509
+ catch (error) {
510
+ return await __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_recoverRefreshFailure).call(this, error, attempt, cached, scope, options, context);
511
+ }
512
+ finally {
513
+ waiter.dispose();
514
+ dispose();
515
+ attempt.waiters -= 1;
516
+ __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_retireRefresh).call(this, attempt);
517
+ }
518
+ }
519
+ /** Invalidates only the workload-token generation actually rejected by the current request. */
520
+ invalidateToken() {
521
+ const rejected = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_transport, "f").current();
522
+ if (!rejected?.token ||
523
+ __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_cachedToken, "f")?.accessToken !== rejected.token ||
524
+ __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_cachedToken, "f").generation !== rejected.tokenGeneration) {
525
+ return;
526
+ }
527
+ __classPrivateFieldSet(this, _X509WorkloadIdentityAuth_tokenGeneration, __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_tokenGeneration, "f") + 1, "f");
528
+ __classPrivateFieldSet(this, _X509WorkloadIdentityAuth_cachedToken, undefined, "f");
529
+ const refresh = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_refresh, "f");
530
+ __classPrivateFieldSet(this, _X509WorkloadIdentityAuth_refresh, undefined, "f");
531
+ refresh?.controller.abort(new APIUserAbortError());
532
+ }
533
+ /** Binds the minted credential to the original headers before protected request hooks run. */
534
+ bindRequest(options, request, adminAPIKey) {
535
+ if (!(request.headers instanceof Headers)) {
536
+ throw new OpenAIError('X.509 workload identity requires the original workload authorization headers.');
537
+ }
538
+ const scope = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this);
539
+ const { token } = scope;
540
+ const security = options.__security ?? { bearerAuth: true };
541
+ let approvedAuthorization = token ? `Bearer ${token}` : null;
542
+ if (!token &&
543
+ security.adminAPIKeyAuth &&
544
+ adminAPIKey !== null &&
545
+ headerValue(request.headers, 'Authorization') !== null) {
546
+ approvedAuthorization = new Headers({ Authorization: `Bearer ${adminAPIKey}` }).get('Authorization');
547
+ }
548
+ scope.headers = request.headers;
549
+ scope.authorization = approvedAuthorization;
550
+ this.assertRequest(request);
551
+ }
552
+ /** Rebinds an equivalent protected-hook container without relaxing final dispatch identity checks. */
553
+ adoptRequestHeaders(request) {
554
+ const scope = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_scope).call(this);
555
+ const original = scope.headers;
556
+ if (!(original instanceof Headers) || !(request.headers instanceof Headers)) {
557
+ throw new OpenAIError('X.509 workload identity must preserve its issued workload authorization.');
558
+ }
559
+ scope.headers = request.headers;
560
+ try {
561
+ this.assertRequest(request);
562
+ }
563
+ catch (error) {
564
+ scope.headers = original;
565
+ throw error;
566
+ }
567
+ }
568
+ /** Rejects request hooks that replace the selected bearer or its approved header identity. */
569
+ assertRequest(request) {
570
+ const { headers } = request;
571
+ if (!(headers instanceof Headers)) {
572
+ throw new OpenAIError('X.509 workload identity must preserve its issued workload authorization.');
573
+ }
574
+ const scope = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_transport, "f").current();
575
+ if (!scope ||
576
+ scope.headers !== headers ||
577
+ scope.authorization === undefined ||
578
+ headerValue(headers, 'Authorization') !== scope.authorization) {
579
+ throw new OpenAIError('X.509 workload identity must preserve its issued workload authorization.');
580
+ }
581
+ __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_assertTenantHeaders).call(this, headers);
582
+ assertSafeHeaders(headers);
583
+ }
584
+ /** Returns a guarded final dispatcher while preserving all existing request hook object identities. */
585
+ fetch() {
586
+ return async (input, init = {}) => {
587
+ const target = assertX509APIOrigin(typeof input === 'string' || input instanceof URL ? input : input.url);
588
+ assertX509FetchOptions(init);
589
+ this.assertRequest(init);
590
+ const approved = init.headers;
591
+ if (!(approved instanceof Headers)) {
592
+ throw new OpenAIError('X.509 workload identity must preserve its issued workload authorization.');
593
+ }
594
+ const headers = new Headers([...Headers.prototype.entries.call(approved)]);
595
+ assertSafeHeaders(headers);
596
+ init.headers = headers;
597
+ init.redirect = 'manual';
598
+ return await __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_transport, "f").dispatch(target, init);
599
+ };
600
+ }
601
+ }
602
+ _a = X509WorkloadIdentityAuth, _X509WorkloadIdentityAuth_identityProviderId = new WeakMap(), _X509WorkloadIdentityAuth_serviceAccountId = new WeakMap(), _X509WorkloadIdentityAuth_configuredRefreshBufferMs = new WeakMap(), _X509WorkloadIdentityAuth_organization = new WeakMap(), _X509WorkloadIdentityAuth_project = new WeakMap(), _X509WorkloadIdentityAuth_transport = new WeakMap(), _X509WorkloadIdentityAuth_refreshBufferMs = new WeakMap(), _X509WorkloadIdentityAuth_cachedToken = new WeakMap(), _X509WorkloadIdentityAuth_refresh = new WeakMap(), _X509WorkloadIdentityAuth_tokenGeneration = new WeakMap(), _X509WorkloadIdentityAuth_instances = new WeakSet(), _X509WorkloadIdentityAuth_cancelRequestBody = async function _X509WorkloadIdentityAuth_cancelRequestBody(body) {
603
+ try {
604
+ await CancelReadableStream(body);
605
+ }
606
+ catch {
607
+ // Upload retirement must never replace the original authentication failure.
608
+ }
609
+ }, _X509WorkloadIdentityAuth_assignToken = function _X509WorkloadIdentityAuth_assignToken(scope, token) {
610
+ if (scope) {
611
+ scope.token = token.accessToken;
612
+ scope.tokenGeneration = token.generation;
613
+ }
614
+ return token.accessToken;
615
+ }, _X509WorkloadIdentityAuth_recoverRefreshFailure = async function _X509WorkloadIdentityAuth_recoverRefreshFailure(error, attempt, cached, scope, options, context) {
616
+ const callerSignal = context ? context.signal : options?.signal;
617
+ if (callerSignal?.aborted) {
618
+ throw userAbortError(callerSignal);
619
+ }
620
+ if (attempt.controller.signal.aborted && attempt.generation !== __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_tokenGeneration, "f")) {
621
+ return await this.getToken(options, context);
622
+ }
623
+ const fallback = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_fallbackToken).call(this, error, cached, scope);
624
+ if (fallback !== undefined) {
625
+ return fallback;
626
+ }
627
+ if (error && typeof error === 'object' && !(error instanceof OAuthError)) {
628
+ const oauth = findX509OAuthError(error);
629
+ if (oauth) {
630
+ throw new OAuthError(oauth.status, oauth.error, oauth.headers);
631
+ }
632
+ }
633
+ throw error;
634
+ }, _X509WorkloadIdentityAuth_fallbackToken = function _X509WorkloadIdentityAuth_fallbackToken(error, cached, scope) {
635
+ if (!cached ||
636
+ cached !== __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_cachedToken, "f") ||
637
+ performance.now() >= cached.expiresAt ||
638
+ Date.now() >= cached.wallExpiresAt ||
639
+ !_a.isRetryableFailure(error)) {
640
+ return undefined;
641
+ }
642
+ const headers = _a.retryHeaders(error);
643
+ const milliseconds = headers?.get('retry-after-ms');
644
+ let requested = milliseconds ? Number(milliseconds) : undefined;
645
+ const retryAfter = headers?.get('retry-after');
646
+ if (retryAfter && (requested === undefined || Number.isNaN(requested))) {
647
+ const seconds = Number(retryAfter);
648
+ requested = Number.isNaN(seconds) ? Date.parse(retryAfter) - Date.now() : seconds * 1000;
649
+ }
650
+ const cooldown = requested !== undefined && Number.isFinite(requested) && requested >= 0 && requested <= 60000
651
+ ? Math.max(FAILED_REFRESH_COOLDOWN_MS, requested)
652
+ : FAILED_REFRESH_COOLDOWN_MS;
653
+ cached.refreshAt = Math.min(cached.expiresAt, performance.now() + cooldown);
654
+ cached.wallRefreshAt = Math.min(cached.wallExpiresAt, Date.now() + cooldown);
655
+ return __classPrivateFieldGet(_a, _a, "m", _X509WorkloadIdentityAuth_assignToken).call(_a, scope, cached);
656
+ }, _X509WorkloadIdentityAuth_retireRefresh = function _X509WorkloadIdentityAuth_retireRefresh(attempt) {
657
+ if (attempt.waiters !== 0 || __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_refresh, "f") !== attempt) {
658
+ return;
659
+ }
660
+ queueMicrotask(() => {
661
+ if (attempt.waiters === 0 && __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_refresh, "f") === attempt) {
662
+ __classPrivateFieldSet(this, _X509WorkloadIdentityAuth_refresh, undefined, "f");
663
+ __classPrivateFieldSet(this, _X509WorkloadIdentityAuth_tokenGeneration, __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_tokenGeneration, "f") + 1, "f");
664
+ attempt.controller.abort(new APIUserAbortError());
665
+ }
666
+ });
667
+ }, _X509WorkloadIdentityAuth_beginRefresh = function _X509WorkloadIdentityAuth_beginRefresh() {
668
+ const controller = new AbortController();
669
+ const generation = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_tokenGeneration, "f");
670
+ const attempt = {
671
+ controller,
672
+ generation,
673
+ waiters: 0,
674
+ promise: __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_instances, "m", _X509WorkloadIdentityAuth_refreshToken).call(this, controller, generation),
675
+ };
676
+ __classPrivateFieldSet(this, _X509WorkloadIdentityAuth_refresh, attempt, "f");
677
+ return attempt;
678
+ }, _X509WorkloadIdentityAuth_refreshToken = async function _X509WorkloadIdentityAuth_refreshToken(controller, generation) {
679
+ const startedAt = performance.now();
680
+ const wallStartedAt = Date.now();
681
+ try {
682
+ const token = await __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_transport, "f").exchange(__classPrivateFieldGet(this, _X509WorkloadIdentityAuth_identityProviderId, "f"), __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_serviceAccountId, "f"), controller.signal);
683
+ const lifetime = token.expiresIn * 1000;
684
+ const expiresAt = startedAt + lifetime;
685
+ const wallExpiresAt = wallStartedAt + lifetime;
686
+ if (performance.now() >= expiresAt || Date.now() >= wallExpiresAt) {
687
+ throw new OpenAIError('X.509 workload identity token expired before its exchange completed.');
688
+ }
689
+ if (__classPrivateFieldGet(this, _X509WorkloadIdentityAuth_tokenGeneration, "f") !== generation ||
690
+ controller.signal.aborted ||
691
+ __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_refresh, "f")?.controller !== controller) {
692
+ throw new APIUserAbortError();
693
+ }
694
+ __classPrivateFieldSet(this, _X509WorkloadIdentityAuth_tokenGeneration, __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_tokenGeneration, "f") + 1, "f");
695
+ __classPrivateFieldSet(this, _X509WorkloadIdentityAuth_cachedToken, {
696
+ accessToken: token.accessToken,
697
+ generation: __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_tokenGeneration, "f"),
698
+ expiresAt,
699
+ refreshAt: expiresAt - Math.min(__classPrivateFieldGet(this, _X509WorkloadIdentityAuth_refreshBufferMs, "f"), lifetime / 2),
700
+ wallExpiresAt,
701
+ wallRefreshAt: wallExpiresAt - Math.min(__classPrivateFieldGet(this, _X509WorkloadIdentityAuth_refreshBufferMs, "f"), lifetime / 2),
702
+ }, "f");
703
+ return token;
704
+ }
705
+ finally {
706
+ if (__classPrivateFieldGet(this, _X509WorkloadIdentityAuth_refresh, "f")?.controller === controller) {
707
+ __classPrivateFieldSet(this, _X509WorkloadIdentityAuth_refresh, undefined, "f");
708
+ }
709
+ }
710
+ }, _X509WorkloadIdentityAuth_preflight = function _X509WorkloadIdentityAuth_preflight(context) {
711
+ if (!context) {
712
+ return;
713
+ }
714
+ if (context.organization !== __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_organization, "f") || context.project !== __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_project, "f")) {
715
+ throw new OpenAIError('X.509 workload identity cannot override its enrolled organization or project.');
716
+ }
717
+ assertX509APIOrigin(context.apiURL);
718
+ const supplied = buildHeaders([context.defaultHeaders, context.requestHeaders]);
719
+ if ((__classPrivateFieldGet(this, _X509WorkloadIdentityAuth_organization, "f") !== null && supplied.nulls.has('openai-organization')) ||
720
+ (__classPrivateFieldGet(this, _X509WorkloadIdentityAuth_project, "f") !== null && supplied.nulls.has('openai-project'))) {
721
+ throw new OpenAIError('X.509 workload identity cannot omit its enrolled organization or project.');
722
+ }
723
+ for (const name of supplied.values.keys()) {
724
+ const canonical = name.toLowerCase().split('_').join('-');
725
+ if ((canonical === 'openai-organization' || canonical === 'openai-project') &&
726
+ (name !== canonical ||
727
+ headerValue(supplied.values, name) !==
728
+ (canonical === 'openai-organization' ? context.organization : context.project))) {
729
+ throw new OpenAIError('X.509 workload identity cannot override its enrolled organization or project.');
730
+ }
731
+ if (canonical === 'authorization' ||
732
+ canonical === 'api-key' ||
733
+ canonical === 'x-api-key' ||
734
+ canonical === 'proxy-authorization' ||
735
+ canonical === 'host') {
736
+ throw new OpenAIError('X.509 workload identity cannot use caller-supplied authentication credentials.');
737
+ }
738
+ }
739
+ }, _X509WorkloadIdentityAuth_scope = function _X509WorkloadIdentityAuth_scope() {
740
+ const scope = __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_transport, "f").current();
741
+ if (!scope || scope.owner !== this) {
742
+ throw new OpenAIError('X.509 workload identity requires an active certificate request scope.');
743
+ }
744
+ return scope;
745
+ }, _X509WorkloadIdentityAuth_assertTenantHeaders = function _X509WorkloadIdentityAuth_assertTenantHeaders(headers) {
746
+ if (headerValue(headers, 'OpenAI-Organization') !== __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_organization, "f") ||
747
+ headerValue(headers, 'OpenAI-Project') !== __classPrivateFieldGet(this, _X509WorkloadIdentityAuth_project, "f")) {
748
+ throw new OpenAIError('X.509 workload identity cannot override its enrolled organization or project.');
749
+ }
750
+ for (const name of Headers.prototype.keys.call(headers)) {
751
+ const canonical = name.toLowerCase().split('_').join('-');
752
+ if ((canonical === 'openai-organization' || canonical === 'openai-project') && name !== canonical) {
753
+ throw new OpenAIError('X.509 workload identity cannot override its enrolled organization or project.');
754
+ }
755
+ }
756
+ };
757
+ //# sourceMappingURL=x509-workload-identity-auth.mjs.map