openai 6.32.0 → 6.34.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 (146) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/README.md +96 -0
  3. package/auth/index.d.mts +4 -0
  4. package/auth/index.d.mts.map +1 -0
  5. package/auth/index.d.ts +4 -0
  6. package/auth/index.d.ts.map +1 -0
  7. package/auth/index.js +11 -0
  8. package/auth/index.js.map +1 -0
  9. package/auth/index.mjs +3 -0
  10. package/auth/index.mjs.map +1 -0
  11. package/auth/subject-token-providers.d.mts +20 -0
  12. package/auth/subject-token-providers.d.mts.map +1 -0
  13. package/auth/subject-token-providers.d.ts +20 -0
  14. package/auth/subject-token-providers.d.ts.map +1 -0
  15. package/auth/subject-token-providers.js +127 -0
  16. package/auth/subject-token-providers.js.map +1 -0
  17. package/auth/subject-token-providers.mjs +121 -0
  18. package/auth/subject-token-providers.mjs.map +1 -0
  19. package/auth/types.d.mts +23 -0
  20. package/auth/types.d.mts.map +1 -0
  21. package/auth/types.d.ts +23 -0
  22. package/auth/types.d.ts.map +1 -0
  23. package/auth/types.js +3 -0
  24. package/auth/types.js.map +1 -0
  25. package/auth/types.mjs +2 -0
  26. package/auth/types.mjs.map +1 -0
  27. package/auth/workload-identity-auth.d.mts +16 -0
  28. package/auth/workload-identity-auth.d.mts.map +1 -0
  29. package/auth/workload-identity-auth.d.ts +16 -0
  30. package/auth/workload-identity-auth.d.ts.map +1 -0
  31. package/auth/workload-identity-auth.js +92 -0
  32. package/auth/workload-identity-auth.js.map +1 -0
  33. package/auth/workload-identity-auth.mjs +87 -0
  34. package/auth/workload-identity-auth.mjs.map +1 -0
  35. package/azure.d.mts +2 -1
  36. package/azure.d.mts.map +1 -1
  37. package/azure.d.ts +2 -1
  38. package/azure.d.ts.map +1 -1
  39. package/azure.js.map +1 -1
  40. package/azure.mjs.map +1 -1
  41. package/client.d.mts +11 -1
  42. package/client.d.mts.map +1 -1
  43. package/client.d.ts +11 -1
  44. package/client.d.ts.map +1 -1
  45. package/client.js +73 -10
  46. package/client.js.map +1 -1
  47. package/client.mjs +73 -10
  48. package/client.mjs.map +1 -1
  49. package/core/error.d.mts +15 -0
  50. package/core/error.d.mts.map +1 -1
  51. package/core/error.d.ts +15 -0
  52. package/core/error.d.ts.map +1 -1
  53. package/core/error.js +34 -1
  54. package/core/error.js.map +1 -1
  55. package/core/error.mjs +31 -0
  56. package/core/error.mjs.map +1 -1
  57. package/index.d.mts +1 -1
  58. package/index.d.mts.map +1 -1
  59. package/index.d.ts +1 -1
  60. package/index.d.ts.map +1 -1
  61. package/index.js +3 -1
  62. package/index.js.map +1 -1
  63. package/index.mjs +1 -1
  64. package/index.mjs.map +1 -1
  65. package/package.json +11 -1
  66. package/resources/conversations/conversations.d.mts +7 -0
  67. package/resources/conversations/conversations.d.mts.map +1 -1
  68. package/resources/conversations/conversations.d.ts +7 -0
  69. package/resources/conversations/conversations.d.ts.map +1 -1
  70. package/resources/conversations/conversations.js.map +1 -1
  71. package/resources/conversations/conversations.mjs.map +1 -1
  72. package/resources/conversations/items.d.mts +1 -1
  73. package/resources/conversations/items.d.mts.map +1 -1
  74. package/resources/conversations/items.d.ts +1 -1
  75. package/resources/conversations/items.d.ts.map +1 -1
  76. package/resources/realtime/calls.d.mts +3 -2
  77. package/resources/realtime/calls.d.mts.map +1 -1
  78. package/resources/realtime/calls.d.ts +3 -2
  79. package/resources/realtime/calls.d.ts.map +1 -1
  80. package/resources/realtime/client-secrets.d.mts +3 -2
  81. package/resources/realtime/client-secrets.d.mts.map +1 -1
  82. package/resources/realtime/client-secrets.d.ts +3 -2
  83. package/resources/realtime/client-secrets.d.ts.map +1 -1
  84. package/resources/realtime/realtime.d.mts +6 -4
  85. package/resources/realtime/realtime.d.mts.map +1 -1
  86. package/resources/realtime/realtime.d.ts +6 -4
  87. package/resources/realtime/realtime.d.ts.map +1 -1
  88. package/resources/realtime/realtime.js.map +1 -1
  89. package/resources/realtime/realtime.mjs.map +1 -1
  90. package/resources/responses/internal-base.d.mts +9 -0
  91. package/resources/responses/internal-base.d.mts.map +1 -1
  92. package/resources/responses/internal-base.d.ts +9 -0
  93. package/resources/responses/internal-base.d.ts.map +1 -1
  94. package/resources/responses/internal-base.js.map +1 -1
  95. package/resources/responses/internal-base.mjs.map +1 -1
  96. package/resources/responses/responses.d.mts +153 -14
  97. package/resources/responses/responses.d.mts.map +1 -1
  98. package/resources/responses/responses.d.ts +153 -14
  99. package/resources/responses/responses.d.ts.map +1 -1
  100. package/resources/responses/responses.js.map +1 -1
  101. package/resources/responses/responses.mjs.map +1 -1
  102. package/resources/responses/ws.d.mts +26 -1
  103. package/resources/responses/ws.d.mts.map +1 -1
  104. package/resources/responses/ws.d.ts +26 -1
  105. package/resources/responses/ws.d.ts.map +1 -1
  106. package/resources/responses/ws.js +118 -0
  107. package/resources/responses/ws.js.map +1 -1
  108. package/resources/responses/ws.mjs +118 -0
  109. package/resources/responses/ws.mjs.map +1 -1
  110. package/resources/shared.d.mts +1 -0
  111. package/resources/shared.d.mts.map +1 -1
  112. package/resources/shared.d.ts +1 -0
  113. package/resources/shared.d.ts.map +1 -1
  114. package/resources/vector-stores/file-batches.d.mts +9 -5
  115. package/resources/vector-stores/file-batches.d.mts.map +1 -1
  116. package/resources/vector-stores/file-batches.d.ts +9 -5
  117. package/resources/vector-stores/file-batches.d.ts.map +1 -1
  118. package/resources/vector-stores/files.d.mts +3 -1
  119. package/resources/vector-stores/files.d.mts.map +1 -1
  120. package/resources/vector-stores/files.d.ts +3 -1
  121. package/resources/vector-stores/files.d.ts.map +1 -1
  122. package/src/auth/index.ts +9 -0
  123. package/src/auth/subject-token-providers.ts +185 -0
  124. package/src/auth/types.ts +28 -0
  125. package/src/auth/workload-identity-auth.ts +118 -0
  126. package/src/azure.ts +2 -1
  127. package/src/client.ts +112 -9
  128. package/src/core/error.ts +40 -0
  129. package/src/index.ts +2 -0
  130. package/src/resources/conversations/conversations.ts +8 -0
  131. package/src/resources/conversations/items.ts +1 -0
  132. package/src/resources/realtime/calls.ts +3 -2
  133. package/src/resources/realtime/client-secrets.ts +3 -2
  134. package/src/resources/realtime/realtime.ts +6 -4
  135. package/src/resources/responses/api.md +2 -0
  136. package/src/resources/responses/internal-base.ts +5 -1
  137. package/src/resources/responses/responses.ts +198 -14
  138. package/src/resources/responses/ws.ts +130 -1
  139. package/src/resources/shared.ts +2 -0
  140. package/src/resources/vector-stores/file-batches.ts +9 -5
  141. package/src/resources/vector-stores/files.ts +3 -1
  142. package/src/version.ts +1 -1
  143. package/version.d.mts +1 -1
  144. package/version.d.ts +1 -1
  145. package/version.js +1 -1
  146. package/version.mjs +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,62 @@
1
1
  # Changelog
2
2
 
3
+ ## 6.34.0 (2026-04-08)
4
+
5
+ Full Changelog: [v6.33.0...v6.34.0](https://github.com/openai/openai-node/compare/v6.33.0...v6.34.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** add phase field to Message in conversations ([eb7cbc1](https://github.com/openai/openai-node/commit/eb7cbc1cb9d8f3189b4db6b59a6ff2c45376a598))
10
+ * **client:** add support for short-lived tokens ([#839](https://github.com/openai/openai-node/issues/839)) ([a72ebcf](https://github.com/openai/openai-node/commit/a72ebcf06bcbf4100a3f3c8723b66c34f7c261ec))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **api:** remove web_search_call.results from ResponseIncludable in responses ([1f6968e](https://github.com/openai/openai-node/commit/1f6968e1c0add39034d26f4268a75cadad42abf0))
16
+
17
+
18
+ ### Chores
19
+
20
+ * **internal:** codegen related update ([1081460](https://github.com/openai/openai-node/commit/1081460b68a90915fb019f81d9c24c0dfa48a3c4))
21
+ * **internal:** update multipart form array serialization ([3faee8d](https://github.com/openai/openai-node/commit/3faee8da8d286871adb3ce1258df57aab67272da))
22
+ * **tests:** bump steady to v0.20.1 ([b73cc6b](https://github.com/openai/openai-node/commit/b73cc6b9db6489b7e8b55cab79789ddb21e6d83f))
23
+
24
+
25
+ ### Documentation
26
+
27
+ * **api:** add multi-file ingestion recommendations to vector-stores files/file-batches ([1bc32a3](https://github.com/openai/openai-node/commit/1bc32a3cbc4d453e2835db3a1844e7c99f55df24))
28
+
29
+ ## 6.33.0 (2026-03-25)
30
+
31
+ Full Changelog: [v6.32.0...v6.33.0](https://github.com/openai/openai-node/compare/v6.32.0...v6.33.0)
32
+
33
+ ### Features
34
+
35
+ * **api:** add keys field to computer action types ([27a850e](https://github.com/openai/openai-node/commit/27a850e8a698cde5b7e05da70d8babb1205b2830))
36
+ * **client:** add async iterator and stream() to WebSocket classes ([e1c16ee](https://github.com/openai/openai-node/commit/e1c16ee35b8ef9db30e9a99a2b3460368f3044d0))
37
+
38
+
39
+ ### Bug Fixes
40
+
41
+ * **api:** align SDK response types with expanded item schemas ([491cd52](https://github.com/openai/openai-node/commit/491cd5290c36e6b1de7ff9787e80c73899d8b642))
42
+ * **types:** make type required in ResponseInputMessageItem ([2012293](https://github.com/openai/openai-node/commit/20122931977c2de8630cb03182766fbf6dc37868))
43
+
44
+
45
+ ### Chores
46
+
47
+ * **ci:** skip lint on metadata-only changes ([74a917f](https://github.com/openai/openai-node/commit/74a917fd92dd2a1bd3089f3b5f79781bdc0d4ec3))
48
+ * **internal:** refactor imports ([cfe9c60](https://github.com/openai/openai-node/commit/cfe9c60aa41e9ed53e7d5f9187d31baf4364f8bd))
49
+ * **internal:** update gitignore ([71bd114](https://github.com/openai/openai-node/commit/71bd114f97e24c547660694d03c19b22d62ae961))
50
+ * **tests:** bump steady to v0.19.4 ([f2e9dea](https://github.com/openai/openai-node/commit/f2e9dea844405f189cc63a1d1493de3eabfcb7e7))
51
+ * **tests:** bump steady to v0.19.5 ([37c6cf4](https://github.com/openai/openai-node/commit/37c6cf495b9a05128572f9e955211b67d01410f3))
52
+ * **tests:** bump steady to v0.19.6 ([496b3af](https://github.com/openai/openai-node/commit/496b3af4371cf40f5d14f72d0770e152710b09df))
53
+ * **tests:** bump steady to v0.19.7 ([8491eb6](https://github.com/openai/openai-node/commit/8491eb6d83cf8680bdc9d69e60b8e5d09e2bc8e8))
54
+
55
+
56
+ ### Refactors
57
+
58
+ * **tests:** switch from prism to steady ([47c0581](https://github.com/openai/openai-node/commit/47c0581a1923c9e700a619dd6bfa3fb93a188899))
59
+
3
60
  ## 6.32.0 (2026-03-17)
4
61
 
5
62
  Full Changelog: [v6.31.0...v6.32.0](https://github.com/openai/openai-node/compare/v6.31.0...v6.32.0)
package/README.md CHANGED
@@ -69,6 +69,102 @@ const completion = await client.chat.completions.create({
69
69
  console.log(completion.choices[0].message.content);
70
70
  ```
71
71
 
72
+ ## Workload Identity Authentication
73
+
74
+ For secure, automated environments like cloud-managed Kubernetes, Azure, and GCP, you can use workload identity authentication with short-lived tokens from cloud identity providers instead of long-lived API keys.
75
+
76
+ The `workloadIdentity` parameter is mutually exclusive with `apiKey`.
77
+
78
+ ### Kubernetes (service account tokens)
79
+
80
+ ```ts
81
+ import OpenAI from 'openai';
82
+ import { k8sServiceAccountTokenProvider } from 'openai/auth';
83
+
84
+ const client = new OpenAI({
85
+ workloadIdentity: {
86
+ clientId: 'your-client-id',
87
+ identityProviderId: 'idp-123',
88
+ serviceAccountId: 'sa-456',
89
+ provider: k8sServiceAccountTokenProvider('/var/run/secrets/kubernetes.io/serviceaccount/token'),
90
+ },
91
+ });
92
+
93
+ const response = await client.chat.completions.create({
94
+ model: 'gpt-4',
95
+ messages: [{ role: 'user', content: 'Hello!' }],
96
+ });
97
+ ```
98
+
99
+ ### Azure (managed identity)
100
+
101
+ ```ts
102
+ import OpenAI from 'openai';
103
+ import { azureManagedIdentityTokenProvider } from 'openai/auth';
104
+
105
+ const client = new OpenAI({
106
+ workloadIdentity: {
107
+ clientId: 'your-client-id',
108
+ identityProviderId: 'idp-123',
109
+ serviceAccountId: 'sa-456',
110
+ provider: azureManagedIdentityTokenProvider(),
111
+ },
112
+ });
113
+ ```
114
+
115
+ ### GCP (compute engine metadata)
116
+
117
+ ```ts
118
+ import OpenAI from 'openai';
119
+ import { gcpIDTokenProvider } from 'openai/auth';
120
+
121
+ const client = new OpenAI({
122
+ workloadIdentity: {
123
+ clientId: 'your-client-id',
124
+ identityProviderId: 'idp-123',
125
+ serviceAccountId: 'sa-456',
126
+ provider: gcpIDTokenProvider(),
127
+ },
128
+ });
129
+ ```
130
+
131
+ ### Custom subject token provider
132
+
133
+ ```ts
134
+ import OpenAI from 'openai';
135
+
136
+ const client = new OpenAI({
137
+ workloadIdentity: {
138
+ clientId: 'your-client-id',
139
+ identityProviderId: 'idp-123',
140
+ serviceAccountId: 'sa-456',
141
+ provider: {
142
+ tokenType: 'jwt',
143
+ getToken: async () => {
144
+ return 'your-jwt-token';
145
+ },
146
+ },
147
+ },
148
+ });
149
+ ```
150
+
151
+ You can also customize the token refresh buffer (default is 1200 seconds (20 minutes) before expiration):
152
+
153
+ ```ts
154
+ import OpenAI from 'openai';
155
+ import { k8sServiceAccountTokenProvider } from 'openai/auth';
156
+
157
+ const client = new OpenAI({
158
+ workloadIdentity: {
159
+ clientId: 'your-client-id',
160
+ identityProviderId: 'idp-123',
161
+ serviceAccountId: 'sa-456',
162
+ provider: k8sServiceAccountTokenProvider('/var/token'),
163
+ refreshBufferSeconds: 120.0,
164
+ },
165
+ });
166
+ ```
167
+
72
168
  ## Streaming responses
73
169
 
74
170
  We provide support for streaming responses using Server Sent Events (SSE).
@@ -0,0 +1,4 @@
1
+ export type { WorkloadIdentity, SubjectTokenProvider, TokenExchangeResponse } from "./types.mjs";
2
+ export { k8sServiceAccountTokenProvider, azureManagedIdentityTokenProvider, gcpIDTokenProvider, } from "./subject-token-providers.mjs";
3
+ export { OAuthError, SubjectTokenProviderError } from "../core/error.mjs";
4
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/auth/index.ts"],"names":[],"mappings":"YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE;OAEtE,EACL,8BAA8B,EAC9B,iCAAiC,EACjC,kBAAkB,GACnB;OAEM,EAAE,UAAU,EAAE,yBAAyB,EAAE"}
@@ -0,0 +1,4 @@
1
+ export type { WorkloadIdentity, SubjectTokenProvider, TokenExchangeResponse } from "./types.js";
2
+ export { k8sServiceAccountTokenProvider, azureManagedIdentityTokenProvider, gcpIDTokenProvider, } from "./subject-token-providers.js";
3
+ export { OAuthError, SubjectTokenProviderError } from "../core/error.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/auth/index.ts"],"names":[],"mappings":"YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE;OAEtE,EACL,8BAA8B,EAC9B,iCAAiC,EACjC,kBAAkB,GACnB;OAEM,EAAE,UAAU,EAAE,yBAAyB,EAAE"}
package/auth/index.js ADDED
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SubjectTokenProviderError = exports.OAuthError = exports.gcpIDTokenProvider = exports.azureManagedIdentityTokenProvider = exports.k8sServiceAccountTokenProvider = void 0;
4
+ var subject_token_providers_1 = require("./subject-token-providers.js");
5
+ Object.defineProperty(exports, "k8sServiceAccountTokenProvider", { enumerable: true, get: function () { return subject_token_providers_1.k8sServiceAccountTokenProvider; } });
6
+ Object.defineProperty(exports, "azureManagedIdentityTokenProvider", { enumerable: true, get: function () { return subject_token_providers_1.azureManagedIdentityTokenProvider; } });
7
+ Object.defineProperty(exports, "gcpIDTokenProvider", { enumerable: true, get: function () { return subject_token_providers_1.gcpIDTokenProvider; } });
8
+ var error_1 = require("../core/error.js");
9
+ Object.defineProperty(exports, "OAuthError", { enumerable: true, get: function () { return error_1.OAuthError; } });
10
+ Object.defineProperty(exports, "SubjectTokenProviderError", { enumerable: true, get: function () { return error_1.SubjectTokenProviderError; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/auth/index.ts"],"names":[],"mappings":";;;AAEA,wEAImC;AAHjC,yIAAA,8BAA8B,OAAA;AAC9B,4IAAA,iCAAiC,OAAA;AACjC,6HAAA,kBAAkB,OAAA;AAGpB,0CAAsE;AAA7D,mGAAA,UAAU,OAAA;AAAE,kHAAA,yBAAyB,OAAA"}
package/auth/index.mjs ADDED
@@ -0,0 +1,3 @@
1
+ export { k8sServiceAccountTokenProvider, azureManagedIdentityTokenProvider, gcpIDTokenProvider, } from "./subject-token-providers.mjs";
2
+ export { OAuthError, SubjectTokenProviderError } from "../core/error.mjs";
3
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/auth/index.ts"],"names":[],"mappings":"OAEO,EACL,8BAA8B,EAC9B,iCAAiC,EACjC,kBAAkB,GACnB;OAEM,EAAE,UAAU,EAAE,yBAAyB,EAAE"}
@@ -0,0 +1,20 @@
1
+ import type { SubjectTokenProvider } from "./types.mjs";
2
+ import type { Fetch } from "../internal/builtin-types.mjs";
3
+ type ReadFile = (path: string) => Promise<string>;
4
+ export declare function k8sServiceAccountTokenProvider(tokenPath?: string, config?: {
5
+ readFile?: ReadFile;
6
+ }): SubjectTokenProvider;
7
+ export declare function azureManagedIdentityTokenProvider(resource?: string, config?: {
8
+ objectId?: string;
9
+ clientId?: string;
10
+ msiResId?: string;
11
+ apiVersion?: string;
12
+ timeout?: number;
13
+ fetch?: Fetch;
14
+ }): SubjectTokenProvider;
15
+ export declare function gcpIDTokenProvider(audience?: string, config?: {
16
+ timeout?: number;
17
+ fetch?: Fetch;
18
+ }): SubjectTokenProvider;
19
+ export {};
20
+ //# sourceMappingURL=subject-token-providers.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subject-token-providers.d.mts","sourceRoot":"","sources":["../src/auth/subject-token-providers.ts"],"names":[],"mappings":"OAAO,KAAK,EAAE,oBAAoB,EAAE;OAC7B,KAAK,EAAE,KAAK,EAAE;AAQrB,KAAK,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAclD,wBAAgB,8BAA8B,CAC5C,SAAS,GAAE,MAA8D,EACzE,MAAM,CAAC,EAAE;IACP,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,GACA,oBAAoB,CAiCtB;AAED,wBAAgB,iCAAiC,CAC/C,QAAQ,GAAE,MAAyB,EACnC,MAAM,CAAC,EAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,GACA,oBAAoB,CA4DtB;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,GAAE,MAAoC,EAC9C,MAAM,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GAC3C,oBAAoB,CA8CtB"}
@@ -0,0 +1,20 @@
1
+ import type { SubjectTokenProvider } from "./types.js";
2
+ import type { Fetch } from "../internal/builtin-types.js";
3
+ type ReadFile = (path: string) => Promise<string>;
4
+ export declare function k8sServiceAccountTokenProvider(tokenPath?: string, config?: {
5
+ readFile?: ReadFile;
6
+ }): SubjectTokenProvider;
7
+ export declare function azureManagedIdentityTokenProvider(resource?: string, config?: {
8
+ objectId?: string;
9
+ clientId?: string;
10
+ msiResId?: string;
11
+ apiVersion?: string;
12
+ timeout?: number;
13
+ fetch?: Fetch;
14
+ }): SubjectTokenProvider;
15
+ export declare function gcpIDTokenProvider(audience?: string, config?: {
16
+ timeout?: number;
17
+ fetch?: Fetch;
18
+ }): SubjectTokenProvider;
19
+ export {};
20
+ //# sourceMappingURL=subject-token-providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subject-token-providers.d.ts","sourceRoot":"","sources":["../src/auth/subject-token-providers.ts"],"names":[],"mappings":"OAAO,KAAK,EAAE,oBAAoB,EAAE;OAC7B,KAAK,EAAE,KAAK,EAAE;AAQrB,KAAK,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAclD,wBAAgB,8BAA8B,CAC5C,SAAS,GAAE,MAA8D,EACzE,MAAM,CAAC,EAAE;IACP,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,GACA,oBAAoB,CAiCtB;AAED,wBAAgB,iCAAiC,CAC/C,QAAQ,GAAE,MAAyB,EACnC,MAAM,CAAC,EAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,GACA,oBAAoB,CA4DtB;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,GAAE,MAAoC,EAC9C,MAAM,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GAC3C,oBAAoB,CA8CtB"}
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.k8sServiceAccountTokenProvider = k8sServiceAccountTokenProvider;
4
+ exports.azureManagedIdentityTokenProvider = azureManagedIdentityTokenProvider;
5
+ exports.gcpIDTokenProvider = gcpIDTokenProvider;
6
+ const tslib_1 = require("../internal/tslib.js");
7
+ const Shims = tslib_1.__importStar(require("../internal/shims.js"));
8
+ const error_1 = require("../core/error.js");
9
+ const DEFAULT_RESOURCE = 'https://management.azure.com/';
10
+ const DEFAULT_AZURE_API_VERSION = '2018-02-01';
11
+ const AZURE_IMDS_BASE_URL = 'http://169.254.169.254/metadata/identity/oauth2/token';
12
+ let fsPromisesModule;
13
+ async function defaultReadFile(path) {
14
+ fsPromisesModule ?? (fsPromisesModule = Promise.resolve().then(() => tslib_1.__importStar(require('fs/promises'))).catch((error) => {
15
+ fsPromisesModule = undefined;
16
+ throw error;
17
+ }));
18
+ const { readFile } = await fsPromisesModule;
19
+ return readFile(path, 'utf8');
20
+ }
21
+ function k8sServiceAccountTokenProvider(tokenPath = '/var/run/secrets/kubernetes.io/serviceaccount/token', config) {
22
+ const readFile = config?.readFile ?? defaultReadFile;
23
+ return {
24
+ tokenType: 'jwt',
25
+ getToken: async () => {
26
+ let rawToken;
27
+ try {
28
+ rawToken = await readFile(tokenPath);
29
+ }
30
+ catch (error) {
31
+ if (error instanceof error_1.SubjectTokenProviderError) {
32
+ throw error;
33
+ }
34
+ throw new error_1.SubjectTokenProviderError(`Failed to read Kubernetes service account token from ${tokenPath}: ${error instanceof Error ? error.message : String(error)}`, 'kubernetes', error instanceof Error ? error : undefined);
35
+ }
36
+ const token = rawToken.trim();
37
+ if (token.length === 0) {
38
+ throw new error_1.SubjectTokenProviderError(`The token file at ${tokenPath} is empty.`, 'kubernetes');
39
+ }
40
+ return token;
41
+ },
42
+ };
43
+ }
44
+ function azureManagedIdentityTokenProvider(resource = DEFAULT_RESOURCE, config) {
45
+ const apiVersion = config?.apiVersion ?? DEFAULT_AZURE_API_VERSION;
46
+ const timeout = config?.timeout ?? 10000;
47
+ return {
48
+ tokenType: 'jwt',
49
+ getToken: async () => {
50
+ const url = new URL(AZURE_IMDS_BASE_URL);
51
+ url.searchParams.set('api-version', apiVersion);
52
+ url.searchParams.set('resource', resource);
53
+ if (config?.objectId) {
54
+ url.searchParams.set('object_id', config.objectId);
55
+ }
56
+ if (config?.clientId) {
57
+ url.searchParams.set('client_id', config.clientId);
58
+ }
59
+ if (config?.msiResId) {
60
+ url.searchParams.set('msi_res_id', config.msiResId);
61
+ }
62
+ const controller = new AbortController();
63
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
64
+ try {
65
+ const response = await (config?.fetch ?? Shims.getDefaultFetch())(url.toString(), {
66
+ headers: {
67
+ Metadata: 'true',
68
+ },
69
+ signal: controller.signal,
70
+ });
71
+ if (!response.ok) {
72
+ throw new error_1.SubjectTokenProviderError(`Failed to fetch token from Azure IMDS: status ${response.status}`, 'azure-imds');
73
+ }
74
+ const data = (await response.json());
75
+ if (!data.access_token) {
76
+ throw new error_1.SubjectTokenProviderError("IMDS response missing 'access_token' field", 'azure-imds');
77
+ }
78
+ return data.access_token;
79
+ }
80
+ catch (error) {
81
+ if (error instanceof error_1.SubjectTokenProviderError) {
82
+ throw error;
83
+ }
84
+ throw new error_1.SubjectTokenProviderError('failed to fetch token from IMDS', 'azure-imds', error instanceof Error ? error : undefined);
85
+ }
86
+ finally {
87
+ clearTimeout(timeoutId);
88
+ }
89
+ },
90
+ };
91
+ }
92
+ function gcpIDTokenProvider(audience = 'https://api.openai.com/v1', config) {
93
+ const timeout = config?.timeout || 10000;
94
+ return {
95
+ tokenType: 'id',
96
+ getToken: async () => {
97
+ const url = new URL(`http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity`);
98
+ url.searchParams.set('audience', audience);
99
+ const controller = new AbortController();
100
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
101
+ try {
102
+ const response = await (config?.fetch ?? Shims.getDefaultFetch())(url.toString(), {
103
+ headers: {
104
+ 'Metadata-Flavor': 'Google',
105
+ },
106
+ signal: controller.signal,
107
+ });
108
+ if (!response.ok) {
109
+ const errorText = await response.text();
110
+ throw new Error(`GCP Metadata Server returned ${response.status}: ${errorText}`);
111
+ }
112
+ const token = (await response.text()).trim();
113
+ if (!token) {
114
+ throw new Error('GCP metadata server returned an empty token');
115
+ }
116
+ return token;
117
+ }
118
+ catch (error) {
119
+ throw new error_1.SubjectTokenProviderError(`Failed to fetch token from GCP Metadata Server: ${error instanceof Error ? error.message : String(error)}`, 'gcp-metadata', error instanceof Error ? error : undefined);
120
+ }
121
+ finally {
122
+ clearTimeout(timeoutId);
123
+ }
124
+ },
125
+ };
126
+ }
127
+ //# sourceMappingURL=subject-token-providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subject-token-providers.js","sourceRoot":"","sources":["../src/auth/subject-token-providers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ import * as Shims from "../internal/shims.mjs";
2
+ import { SubjectTokenProviderError } from "../core/error.mjs";
3
+ const DEFAULT_RESOURCE = 'https://management.azure.com/';
4
+ const DEFAULT_AZURE_API_VERSION = '2018-02-01';
5
+ const AZURE_IMDS_BASE_URL = 'http://169.254.169.254/metadata/identity/oauth2/token';
6
+ let fsPromisesModule;
7
+ async function defaultReadFile(path) {
8
+ fsPromisesModule ?? (fsPromisesModule = import('fs/promises').catch((error) => {
9
+ fsPromisesModule = undefined;
10
+ throw error;
11
+ }));
12
+ const { readFile } = await fsPromisesModule;
13
+ return readFile(path, 'utf8');
14
+ }
15
+ export function k8sServiceAccountTokenProvider(tokenPath = '/var/run/secrets/kubernetes.io/serviceaccount/token', config) {
16
+ const readFile = config?.readFile ?? defaultReadFile;
17
+ return {
18
+ tokenType: 'jwt',
19
+ getToken: async () => {
20
+ let rawToken;
21
+ try {
22
+ rawToken = await readFile(tokenPath);
23
+ }
24
+ catch (error) {
25
+ if (error instanceof SubjectTokenProviderError) {
26
+ throw error;
27
+ }
28
+ throw new SubjectTokenProviderError(`Failed to read Kubernetes service account token from ${tokenPath}: ${error instanceof Error ? error.message : String(error)}`, 'kubernetes', error instanceof Error ? error : undefined);
29
+ }
30
+ const token = rawToken.trim();
31
+ if (token.length === 0) {
32
+ throw new SubjectTokenProviderError(`The token file at ${tokenPath} is empty.`, 'kubernetes');
33
+ }
34
+ return token;
35
+ },
36
+ };
37
+ }
38
+ export function azureManagedIdentityTokenProvider(resource = DEFAULT_RESOURCE, config) {
39
+ const apiVersion = config?.apiVersion ?? DEFAULT_AZURE_API_VERSION;
40
+ const timeout = config?.timeout ?? 10000;
41
+ return {
42
+ tokenType: 'jwt',
43
+ getToken: async () => {
44
+ const url = new URL(AZURE_IMDS_BASE_URL);
45
+ url.searchParams.set('api-version', apiVersion);
46
+ url.searchParams.set('resource', resource);
47
+ if (config?.objectId) {
48
+ url.searchParams.set('object_id', config.objectId);
49
+ }
50
+ if (config?.clientId) {
51
+ url.searchParams.set('client_id', config.clientId);
52
+ }
53
+ if (config?.msiResId) {
54
+ url.searchParams.set('msi_res_id', config.msiResId);
55
+ }
56
+ const controller = new AbortController();
57
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
58
+ try {
59
+ const response = await (config?.fetch ?? Shims.getDefaultFetch())(url.toString(), {
60
+ headers: {
61
+ Metadata: 'true',
62
+ },
63
+ signal: controller.signal,
64
+ });
65
+ if (!response.ok) {
66
+ throw new SubjectTokenProviderError(`Failed to fetch token from Azure IMDS: status ${response.status}`, 'azure-imds');
67
+ }
68
+ const data = (await response.json());
69
+ if (!data.access_token) {
70
+ throw new SubjectTokenProviderError("IMDS response missing 'access_token' field", 'azure-imds');
71
+ }
72
+ return data.access_token;
73
+ }
74
+ catch (error) {
75
+ if (error instanceof SubjectTokenProviderError) {
76
+ throw error;
77
+ }
78
+ throw new SubjectTokenProviderError('failed to fetch token from IMDS', 'azure-imds', error instanceof Error ? error : undefined);
79
+ }
80
+ finally {
81
+ clearTimeout(timeoutId);
82
+ }
83
+ },
84
+ };
85
+ }
86
+ export function gcpIDTokenProvider(audience = 'https://api.openai.com/v1', config) {
87
+ const timeout = config?.timeout || 10000;
88
+ return {
89
+ tokenType: 'id',
90
+ getToken: async () => {
91
+ const url = new URL(`http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity`);
92
+ url.searchParams.set('audience', audience);
93
+ const controller = new AbortController();
94
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
95
+ try {
96
+ const response = await (config?.fetch ?? Shims.getDefaultFetch())(url.toString(), {
97
+ headers: {
98
+ 'Metadata-Flavor': 'Google',
99
+ },
100
+ signal: controller.signal,
101
+ });
102
+ if (!response.ok) {
103
+ const errorText = await response.text();
104
+ throw new Error(`GCP Metadata Server returned ${response.status}: ${errorText}`);
105
+ }
106
+ const token = (await response.text()).trim();
107
+ if (!token) {
108
+ throw new Error('GCP metadata server returned an empty token');
109
+ }
110
+ return token;
111
+ }
112
+ catch (error) {
113
+ throw new SubjectTokenProviderError(`Failed to fetch token from GCP Metadata Server: ${error instanceof Error ? error.message : String(error)}`, 'gcp-metadata', error instanceof Error ? error : undefined);
114
+ }
115
+ finally {
116
+ clearTimeout(timeoutId);
117
+ }
118
+ },
119
+ };
120
+ }
121
+ //# sourceMappingURL=subject-token-providers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subject-token-providers.mjs","sourceRoot":"","sources":["../src/auth/subject-token-providers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export interface SubjectTokenProvider {
2
+ tokenType: 'jwt' | 'id';
3
+ getToken: () => Promise<string>;
4
+ }
5
+ export interface WorkloadIdentity {
6
+ /**A unique string that identifies the client.*/
7
+ clientId: string;
8
+ /**Identity provider resource id in WIFAPI.*/
9
+ identityProviderId: string;
10
+ /**OpenAI Service account id to bind the verified external identity to.*/
11
+ serviceAccountId: string;
12
+ /**The provider configuration for obtaining the subject token.*/
13
+ provider: SubjectTokenProvider;
14
+ /**Optional buffer time in seconds to refresh the OpenAI token before it expires. Defaults to 1200 seconds (20 minutes).*/
15
+ refreshBufferSeconds?: number;
16
+ }
17
+ export interface TokenExchangeResponse {
18
+ access_token: string;
19
+ issued_token_type: string;
20
+ token_type: string;
21
+ expires_in?: number;
22
+ }
23
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/auth/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IAEjB,6CAA6C;IAC7C,kBAAkB,EAAE,MAAM,CAAC;IAE3B,yEAAyE;IACzE,gBAAgB,EAAE,MAAM,CAAC;IAEzB,gEAAgE;IAChE,QAAQ,EAAE,oBAAoB,CAAC;IAE/B,0HAA0H;IAC1H,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,23 @@
1
+ export interface SubjectTokenProvider {
2
+ tokenType: 'jwt' | 'id';
3
+ getToken: () => Promise<string>;
4
+ }
5
+ export interface WorkloadIdentity {
6
+ /**A unique string that identifies the client.*/
7
+ clientId: string;
8
+ /**Identity provider resource id in WIFAPI.*/
9
+ identityProviderId: string;
10
+ /**OpenAI Service account id to bind the verified external identity to.*/
11
+ serviceAccountId: string;
12
+ /**The provider configuration for obtaining the subject token.*/
13
+ provider: SubjectTokenProvider;
14
+ /**Optional buffer time in seconds to refresh the OpenAI token before it expires. Defaults to 1200 seconds (20 minutes).*/
15
+ refreshBufferSeconds?: number;
16
+ }
17
+ export interface TokenExchangeResponse {
18
+ access_token: string;
19
+ issued_token_type: string;
20
+ token_type: string;
21
+ expires_in?: number;
22
+ }
23
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/auth/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IAEjB,6CAA6C;IAC7C,kBAAkB,EAAE,MAAM,CAAC;IAE3B,yEAAyE;IACzE,gBAAgB,EAAE,MAAM,CAAC;IAEzB,gEAAgE;IAChE,QAAQ,EAAE,oBAAoB,CAAC;IAE/B,0HAA0H;IAC1H,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
package/auth/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/auth/types.ts"],"names":[],"mappings":""}
package/auth/types.mjs ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/auth/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import type { WorkloadIdentity } from "./types.mjs";
2
+ import type { Fetch } from "../internal/builtin-types.mjs";
3
+ export declare class WorkloadIdentityAuth {
4
+ private cachedToken;
5
+ private refreshPromise;
6
+ private readonly config;
7
+ private readonly tokenExchangeUrl;
8
+ private readonly fetch;
9
+ constructor(config: WorkloadIdentity, fetch?: Fetch);
10
+ getToken(): Promise<string>;
11
+ private refreshToken;
12
+ private isTokenExpired;
13
+ private needsRefresh;
14
+ invalidateToken(): void;
15
+ }
16
+ //# sourceMappingURL=workload-identity-auth.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workload-identity-auth.d.mts","sourceRoot":"","sources":["../src/auth/workload-identity-auth.ts"],"names":[],"mappings":"OAAO,KAAK,EAAE,gBAAgB,EAAyB;OAChD,KAAK,EAAE,KAAK,EAAE;AAgBrB,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,cAAc,CAAgC;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiD;IAClF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;gBAElB,MAAM,EAAE,gBAAgB,EAAE,KAAK,CAAC,EAAE,KAAK;IAK7C,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;YAyBnB,YAAY;IAiD1B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,YAAY;IAMpB,eAAe,IAAI,IAAI;CAIxB"}
@@ -0,0 +1,16 @@
1
+ import type { WorkloadIdentity } from "./types.js";
2
+ import type { Fetch } from "../internal/builtin-types.js";
3
+ export declare class WorkloadIdentityAuth {
4
+ private cachedToken;
5
+ private refreshPromise;
6
+ private readonly config;
7
+ private readonly tokenExchangeUrl;
8
+ private readonly fetch;
9
+ constructor(config: WorkloadIdentity, fetch?: Fetch);
10
+ getToken(): Promise<string>;
11
+ private refreshToken;
12
+ private isTokenExpired;
13
+ private needsRefresh;
14
+ invalidateToken(): void;
15
+ }
16
+ //# sourceMappingURL=workload-identity-auth.d.ts.map