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