@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 +26 -2
- package/dist/index.d.ts +5 -2
- package/dist/index.js +100 -20
- package/package.json +8 -5
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 [
|
|
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 {
|
|
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
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
this.
|
|
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
|
-
|
|
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
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
headers: () => withUserAgentSuffix({}, "oai-oauth/0.0.0"),
|
|
303
|
+
const provider = createOpenAI({
|
|
304
|
+
apiKey: "openai-oauth",
|
|
305
|
+
baseURL,
|
|
227
306
|
fetch: oauthFetch,
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
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:
|
|
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.
|
|
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.
|
|
49
|
+
"@openai-oauth/core": "2.0.0-beta.4"
|
|
47
50
|
},
|
|
48
51
|
"devDependencies": {
|
|
49
|
-
"@openai-oauth/local": "2.0.0-beta.
|
|
52
|
+
"@openai-oauth/local": "2.0.0-beta.4",
|
|
50
53
|
"@types/node": "20.17.24",
|
|
51
54
|
"ai": "6.0.116",
|
|
52
|
-
"typescript": "
|
|
53
|
-
"vitest": "
|
|
55
|
+
"typescript": "5.9.2",
|
|
56
|
+
"vitest": "4.1.10",
|
|
54
57
|
"zod": "^3.25.76"
|
|
55
58
|
},
|
|
56
59
|
"author": "EvanZhouDev",
|