@openai-oauth/ai-sdk 2.0.0-beta.2 → 2.0.0-beta.4

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.
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  Connect OpenAI OAuth credentials to the Vercel AI SDK.
6
6
 
7
7
  ```bash
8
- npm i @openai-oauth/ai-sdk ai
8
+ npm i @openai-oauth/ai-sdk @openai-oauth/local ai
9
9
  ```
10
10
 
11
11
  Quickstart:
@@ -23,6 +23,27 @@ const result = await generateText({
23
23
  });
24
24
  ```
25
25
 
26
+ Generate or edit images with GPT Image 2:
27
+
28
+ ```ts
29
+ import { readFile } from "node:fs/promises";
30
+ import { generateImage } from "ai";
31
+
32
+ const result = await generateImage({
33
+ model: openai.image("gpt-image-2"),
34
+ prompt: "A tiny house in a forest",
35
+ });
36
+
37
+ const inputImage = await readFile("input.png");
38
+ const edited = await generateImage({
39
+ model: openai.image("gpt-image-2"),
40
+ prompt: {
41
+ text: "Add a red hat",
42
+ images: [inputImage],
43
+ },
44
+ });
45
+ ```
46
+
26
47
  ## Package Notes
27
48
 
28
49
  `@openai-oauth/ai-sdk` accepts any OpenAI OAuth credential source.
@@ -54,7 +75,7 @@ export async function POST(request: Request) {
54
75
  }
55
76
  ```
56
77
 
57
- Use `@openai-oauth/react` to establish the browser credentials. See the [Sign in with ChatGPT setup](https://github.com/EvanZhouDev/openai-oauth#sign-in-with-chatgpt-setup).
78
+ Use `@openai-oauth/react` to establish the browser credentials. See the [React Component setup](https://github.com/EvanZhouDev/openai-oauth#react-component).
58
79
 
59
80
  API shape:
60
81
 
@@ -63,6 +84,8 @@ const openai = createOpenAIOAuth(credentials);
63
84
 
64
85
  openai("gpt-5.4-mini");
65
86
  openai.languageModel("gpt-5.4-mini");
87
+ openai.image("gpt-image-2");
88
+ openai.imageModel("gpt-image-2");
66
89
  ```
67
90
 
68
91
  Exports:
@@ -72,6 +95,7 @@ Exports:
72
95
  - `OpenAIOAuthProviderInput`
73
96
  - `OpenAIOAuthProviderSettings`
74
97
  - `OpenAIOAuthModelId`
98
+ - `OpenAIOAuthImageModelId`
75
99
 
76
100
  ## More
77
101
 
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
- import { ProviderV3, LanguageModelV3 } from '@ai-sdk/provider';
1
+ import { ProviderV3, LanguageModelV3, ImageModelV3 } from '@ai-sdk/provider';
2
2
  import { OpenAIOAuthTransport, OpenAIOAuth } from '@openai-oauth/core';
3
3
 
4
4
  type OpenAIOAuthModelId = string;
5
+ type OpenAIOAuthImageModelId = string;
5
6
  type OpenAIOAuthProviderSettings = {
6
7
  name?: string;
7
8
  };
@@ -9,7 +10,9 @@ type OpenAIOAuthProviderInput = OpenAIOAuthTransport | OpenAIOAuth;
9
10
  interface OpenAIOAuthProvider extends ProviderV3 {
10
11
  (modelId: OpenAIOAuthModelId): LanguageModelV3;
11
12
  languageModel(modelId: OpenAIOAuthModelId): LanguageModelV3;
13
+ image(modelId: OpenAIOAuthImageModelId): ImageModelV3;
14
+ imageModel(modelId: OpenAIOAuthImageModelId): ImageModelV3;
12
15
  }
13
16
  declare const createOpenAIOAuth: (input: OpenAIOAuthProviderInput, settings?: OpenAIOAuthProviderSettings) => OpenAIOAuthProvider;
14
17
 
15
- export { type OpenAIOAuthModelId, type OpenAIOAuthProvider, type OpenAIOAuthProviderInput, type OpenAIOAuthProviderSettings, createOpenAIOAuth };
18
+ export { type OpenAIOAuthImageModelId, type OpenAIOAuthModelId, type OpenAIOAuthProvider, type OpenAIOAuthProviderInput, type OpenAIOAuthProviderSettings, createOpenAIOAuth };
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // src/provider.ts
2
- import { OpenAIResponsesLanguageModel } from "@ai-sdk/openai/internal";
2
+ import { createOpenAI } from "@ai-sdk/openai";
3
3
  import {
4
4
  NoSuchModelError
5
5
  } from "@ai-sdk/provider";
@@ -7,6 +7,80 @@ import { withUserAgentSuffix } from "@ai-sdk/provider-utils";
7
7
  import {
8
8
  createOpenAIOAuthTransport
9
9
  } from "@openai-oauth/core";
10
+
11
+ // package.json
12
+ var package_default = {
13
+ name: "@openai-oauth/ai-sdk",
14
+ version: "2.0.0-beta.4",
15
+ description: "Vercel AI SDK provider adapter for openai-oauth auth handles.",
16
+ keywords: [
17
+ "openai",
18
+ "oauth",
19
+ "chatgpt",
20
+ "codex",
21
+ "ai-sdk",
22
+ "vercel-ai-sdk"
23
+ ],
24
+ type: "module",
25
+ engines: {
26
+ node: ">=20"
27
+ },
28
+ sideEffects: false,
29
+ main: "./dist/index.js",
30
+ types: "./dist/index.d.ts",
31
+ exports: {
32
+ ".": {
33
+ types: "./dist/index.d.ts",
34
+ import: "./dist/index.js",
35
+ default: "./dist/index.js"
36
+ }
37
+ },
38
+ files: [
39
+ "dist",
40
+ "README.md",
41
+ "LICENSE"
42
+ ],
43
+ scripts: {
44
+ build: "tsup src/index.ts --format esm --dts --outDir dist --clean",
45
+ prepublishOnly: "bun run build",
46
+ typecheck: "tsc --noEmit",
47
+ test: "vitest run",
48
+ "test:live": "LIVE_CODEX_E2E=1 vitest run test/live.e2e.test.ts"
49
+ },
50
+ publishConfig: {
51
+ access: "public"
52
+ },
53
+ peerDependencies: {
54
+ ai: "^6.0.116"
55
+ },
56
+ dependencies: {
57
+ "@ai-sdk/openai": "3.0.41",
58
+ "@ai-sdk/provider": "3.0.8",
59
+ "@ai-sdk/provider-utils": "4.0.19",
60
+ "@openai-oauth/core": "workspace:*"
61
+ },
62
+ devDependencies: {
63
+ "@openai-oauth/local": "workspace:*",
64
+ "@types/node": "20.17.24",
65
+ ai: "6.0.116",
66
+ typescript: "5.9.2",
67
+ vitest: "4.1.10",
68
+ zod: "^3.25.76"
69
+ },
70
+ author: "EvanZhouDev",
71
+ license: "AGPL-3.0-only",
72
+ repository: {
73
+ type: "git",
74
+ url: "git+https://github.com/EvanZhouDev/openai-oauth.git",
75
+ directory: "packages/ai-sdk"
76
+ },
77
+ bugs: {
78
+ url: "https://github.com/EvanZhouDev/openai-oauth/issues"
79
+ },
80
+ homepage: "https://github.com/EvanZhouDev/openai-oauth#readme"
81
+ };
82
+
83
+ // src/provider.ts
10
84
  var emptyUsage = () => ({
11
85
  inputTokens: {
12
86
  total: void 0,
@@ -30,17 +104,23 @@ var mergeProviderMetadata = (left, right) => {
30
104
  }
31
105
  return merged;
32
106
  };
33
- var CodexResponsesLanguageModel = class extends OpenAIResponsesLanguageModel {
34
- generateMode;
35
- constructor(modelId, config, options = {}) {
36
- super(modelId, config);
37
- this.generateMode = options.generateMode ?? "stream";
107
+ var CodexResponsesLanguageModel = class {
108
+ constructor(model) {
109
+ this.model = model;
110
+ this.provider = model.provider;
111
+ this.modelId = model.modelId;
112
+ this.supportedUrls = model.supportedUrls;
113
+ }
114
+ model;
115
+ specificationVersion = "v3";
116
+ provider;
117
+ modelId;
118
+ supportedUrls;
119
+ doStream(options) {
120
+ return this.model.doStream(options);
38
121
  }
39
122
  async doGenerate(options) {
40
- if (this.generateMode === "response") {
41
- return super.doGenerate(options);
42
- }
43
- const streamResult = await super.doStream(options);
123
+ const streamResult = await this.model.doStream(options);
44
124
  const reader = streamResult.stream.getReader();
45
125
  const content = [];
46
126
  const warnings = [];
@@ -220,25 +300,25 @@ var createOpenAIOAuth = (input, settings = {}) => {
220
300
  const baseURL = transport.baseURL;
221
301
  const providerName = settings.name ?? "openai";
222
302
  const oauthFetch = transport.fetch;
223
- const config = {
224
- provider: `${providerName}.responses`,
225
- url: ({ path }) => `${baseURL}${path}`,
226
- headers: () => withUserAgentSuffix({}, "oai-oauth/0.0.0"),
303
+ const provider = createOpenAI({
304
+ apiKey: "openai-oauth",
305
+ baseURL,
227
306
  fetch: oauthFetch,
228
- fileIdPrefixes: ["file-"]
229
- };
230
- const createModel = (modelId) => new CodexResponsesLanguageModel(modelId, config);
307
+ headers: withUserAgentSuffix({}, `openai-oauth/${package_default.version}`),
308
+ name: providerName
309
+ });
310
+ const createModel = (modelId) => new CodexResponsesLanguageModel(provider.responses(modelId));
311
+ const createImageModel = (modelId) => provider.image(modelId);
231
312
  const providerFn = (modelId) => createModel(modelId);
232
313
  const specificationVersion = "v3";
233
314
  return Object.assign(providerFn, {
234
315
  specificationVersion,
235
316
  languageModel: createModel,
317
+ image: createImageModel,
236
318
  embeddingModel: (modelId) => {
237
319
  throw new NoSuchModelError({ modelId, modelType: "embeddingModel" });
238
320
  },
239
- imageModel: (modelId) => {
240
- throw new NoSuchModelError({ modelId, modelType: "imageModel" });
241
- }
321
+ imageModel: createImageModel
242
322
  });
243
323
  };
244
324
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openai-oauth/ai-sdk",
3
- "version": "2.0.0-beta.2",
3
+ "version": "2.0.0-beta.4",
4
4
  "description": "Vercel AI SDK provider adapter for openai-oauth auth handles.",
5
5
  "keywords": [
6
6
  "openai",
@@ -11,6 +11,9 @@
11
11
  "vercel-ai-sdk"
12
12
  ],
13
13
  "type": "module",
14
+ "engines": {
15
+ "node": ">=20"
16
+ },
14
17
  "sideEffects": false,
15
18
  "main": "./dist/index.js",
16
19
  "types": "./dist/index.d.ts",
@@ -43,14 +46,14 @@
43
46
  "@ai-sdk/openai": "3.0.41",
44
47
  "@ai-sdk/provider": "3.0.8",
45
48
  "@ai-sdk/provider-utils": "4.0.19",
46
- "@openai-oauth/core": "2.0.0-beta.2"
49
+ "@openai-oauth/core": "2.0.0-beta.4"
47
50
  },
48
51
  "devDependencies": {
49
- "@openai-oauth/local": "2.0.0-beta.2",
52
+ "@openai-oauth/local": "2.0.0-beta.4",
50
53
  "@types/node": "20.17.24",
51
54
  "ai": "6.0.116",
52
- "typescript": "latest",
53
- "vitest": "latest",
55
+ "typescript": "5.9.2",
56
+ "vitest": "4.1.10",
54
57
  "zod": "^3.25.76"
55
58
  },
56
59
  "author": "EvanZhouDev",