openai-oauth 2.0.0-beta.1 → 2.0.0-beta.2
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 +2 -2
- package/dist/{chunk-XZLFK5NT.js → chunk-UZ3AHAWX.js} +149 -229
- package/dist/cli.js +6 -15
- package/dist/index.d.ts +2 -3
- package/dist/index.js +1 -3
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ Turn your ChatGPT account into an OpenAI-compatible local API.
|
|
|
9
9
|
|
|
10
10
|
OpenAI-compatible endpoint ready at http://127.0.0.1:10531/v1
|
|
11
11
|
Use this as your OpenAI base URL. No API key is required.
|
|
12
|
-
Available Models: gpt-5.
|
|
12
|
+
Available Models: gpt-5.6-sol, gpt-5.6-terra, ...
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
## Package Notes
|
|
@@ -35,7 +35,7 @@ Common flags:
|
|
|
35
35
|
|
|
36
36
|
Login listens on loopback and uses `http://localhost:1455/auth/callback`, the local callback URL accepted by OpenAI OAuth.
|
|
37
37
|
|
|
38
|
-
Advanced flags also exist for overriding the upstream Codex base URL, OAuth client id, OAuth token URL
|
|
38
|
+
The CLI resolves the latest published Codex client version automatically. Advanced flags also exist for overriding it, the upstream Codex base URL, OAuth client id, and OAuth token URL.
|
|
39
39
|
|
|
40
40
|
## More
|
|
41
41
|
|
|
@@ -18,133 +18,175 @@ var callback_success_default = `<!doctype html>
|
|
|
18
18
|
<link
|
|
19
19
|
rel="icon"
|
|
20
20
|
type="image/svg+xml"
|
|
21
|
-
href='data:image/svg+xml,%3Csvg width="1412" height="1412" viewBox="0 0 1412 1412" fill="none" xmlns="http://www.w3.org/2000/svg"%3E%3Cstyle%3E.mark%7Bfill:%23111111%7D@media(prefers-color-scheme:dark)%7B.mark%7Bfill:%23ffffff%7D%7D%3C/style%3E%3Cpath class="mark" d="M597.462 0.857699C673.717 -4.5771 755.535 16.0618 820.557 55.7878C839.621 67.4347 853.532 77.8804 870.903 91.7881C915.947 83.6597 962.083 83.5966 1007.15 91.601C1108.64 109.677 1198.75 167.436 1257.54 252.101C1315.95 336.355 1338.56 440.326 1320.41 541.218C1348.4 575.095 1369.47 609.408 1385.5 650.519C1422.8 746.143 1420.65 852.641 1379.53 946.681C1345.7 1023.88 1287.62 1087.95 1214.08 1129.17C1193.85 1140.47 1177.72 1147.33 1156.35 1155.65C1150.8 1167.38 1146.43 1180.08 1140.53 1192.52C1124.33 1226.23 1103.33 1257.42 1078.21 1285.12C1009.53 1360.77 913.675 1406.14 811.622 1411.3C797.103 1412.74 770.195 1411.71 755.535 1410.39C669.671 1402.64 607.216 1373.41 541.228 1320.14C498.371 1327.97 454.491 1328.42 411.479 1321.49C309.519 1305.16 218.308 1248.8 158.127 1164.91C95.5192 1077.93 74.597 975.652 91.7694 870.624C63.5815 837.852 41.1539 800.536 25.4414 760.272C-11.0983 663.999 -8.18036 557.204 33.5617 463.069C77.8418 363.472 155.004 295.015 255.809 256.181C260.004 248.164 265.705 231.947 270.502 221.837C286.044 188.764 306.234 158.081 330.46 130.717C398.638 53.6473 494.725 6.91416 597.462 0.857699ZM803.624 1297.49C879.882 1292.64 946.234 1261.95 997.071 1204.28C1015.09 1183.82 1029.9 1160.75 1041.02 1135.85C1047.58 1121.23 1051.8 1106.22 1056.86 1091.08C1067.19 1060.2 1088.78 1058.15 1115.61 1048.88C1125.47 1045.52 1135.09 1041.52 1144.43 1036.9C1243.91 988.43 1304.38 884.819 1297.64 774.394C1294 716.163 1271.8 660.631 1234.27 615.946C1223.26 602.711 1208.28 591.435 1203.34 574.896C1197.16 554.244 1207.83 529.807 1210.67 506.759C1221.87 416.705 1187.69 326.959 1119.41 267.154C1064.95 219.454 993.758 195.357 921.517 200.173C909.062 200.932 896.689 202.63 884.487 205.252C858.307 210.809 839.711 217.803 816.524 196.759C802.123 183.693 793.783 175.007 777.726 163.451C738.141 135.075 691.432 118.286 642.835 114.967C634.456 114.329 619.975 113.369 611.816 114.357C536.156 118.188 468.827 147.965 417.756 204.614C399.016 225.371 383.578 248.884 371.981 274.328C368.409 282.286 365.23 290.414 362.455 298.682C357.28 314.179 354.556 330.003 342.859 342.026C330.473 354.758 314.132 357.158 297.998 362.604C288.467 365.803 279.144 369.592 270.084 373.948C170.322 421.514 108.992 524.42 114.64 634.77C117.764 693.592 139.719 749.855 177.266 795.249C188.357 808.68 203.749 820.374 208.712 836.975C214.929 857.779 204.623 882.481 201.669 905.586C190.625 994.243 223.634 1082.71 290.065 1142.47C341.827 1188.92 413.829 1216.16 483.523 1212.31C496.702 1211.71 509.821 1210.17 522.783 1207.71C549.917 1202.44 573.428 1193.61 595.85 1215.61C654.397 1273.04 720.807 1298.82 803.624 1297.49Z"/%3E%
|
|
21
|
+
href='data:image/svg+xml,%3Csvg width="1412" height="1412" viewBox="0 0 1412 1412" fill="none" xmlns="http://www.w3.org/2000/svg"%3E%3Cstyle%3E.mark%7Bfill:%23111111%7D@media(prefers-color-scheme:dark)%7B.mark%7Bfill:%23ffffff%7D%7D%3C/style%3E%3Cpath class="mark" d="M597.462 0.857699C673.717 -4.5771 755.535 16.0618 820.557 55.7878C839.621 67.4347 853.532 77.8804 870.903 91.7881C915.947 83.6597 962.083 83.5966 1007.15 91.601C1108.64 109.677 1198.75 167.436 1257.54 252.101C1315.95 336.355 1338.56 440.326 1320.41 541.218C1348.4 575.095 1369.47 609.408 1385.5 650.519C1422.8 746.143 1420.65 852.641 1379.53 946.681C1345.7 1023.88 1287.62 1087.95 1214.08 1129.17C1193.85 1140.47 1177.72 1147.33 1156.35 1155.65C1150.8 1167.38 1146.43 1180.08 1140.53 1192.52C1124.33 1226.23 1103.33 1257.42 1078.21 1285.12C1009.53 1360.77 913.675 1406.14 811.622 1411.3C797.103 1412.74 770.195 1411.71 755.535 1410.39C669.671 1402.64 607.216 1373.41 541.228 1320.14C498.371 1327.97 454.491 1328.42 411.479 1321.49C309.519 1305.16 218.308 1248.8 158.127 1164.91C95.5192 1077.93 74.597 975.652 91.7694 870.624C63.5815 837.852 41.1539 800.536 25.4414 760.272C-11.0983 663.999 -8.18036 557.204 33.5617 463.069C77.8418 363.472 155.004 295.015 255.809 256.181C260.004 248.164 265.705 231.947 270.502 221.837C286.044 188.764 306.234 158.081 330.46 130.717C398.638 53.6473 494.725 6.91416 597.462 0.857699ZM803.624 1297.49C879.882 1292.64 946.234 1261.95 997.071 1204.28C1015.09 1183.82 1029.9 1160.75 1041.02 1135.85C1047.58 1121.23 1051.8 1106.22 1056.86 1091.08C1067.19 1060.2 1088.78 1058.15 1115.61 1048.88C1125.47 1045.52 1135.09 1041.52 1144.43 1036.9C1243.91 988.43 1304.38 884.819 1297.64 774.394C1294 716.163 1271.8 660.631 1234.27 615.946C1223.26 602.711 1208.28 591.435 1203.34 574.896C1197.16 554.244 1207.83 529.807 1210.67 506.759C1221.87 416.705 1187.69 326.959 1119.41 267.154C1064.95 219.454 993.758 195.357 921.517 200.173C909.062 200.932 896.689 202.63 884.487 205.252C858.307 210.809 839.711 217.803 816.524 196.759C802.123 183.693 793.783 175.007 777.726 163.451C738.141 135.075 691.432 118.286 642.835 114.967C634.456 114.329 619.975 113.369 611.816 114.357C536.156 118.188 468.827 147.965 417.756 204.614C399.016 225.371 383.578 248.884 371.981 274.328C368.409 282.286 365.23 290.414 362.455 298.682C357.28 314.179 354.556 330.003 342.859 342.026C330.473 354.758 314.132 357.158 297.998 362.604C288.467 365.803 279.144 369.592 270.084 373.948C170.322 421.514 108.992 524.42 114.64 634.77C117.764 693.592 139.719 749.855 177.266 795.249C188.357 808.68 203.749 820.374 208.712 836.975C214.929 857.779 204.623 882.481 201.669 905.586C190.625 994.243 223.634 1082.71 290.065 1142.47C341.827 1188.92 413.829 1216.16 483.523 1212.31C496.702 1211.71 509.821 1210.17 522.783 1207.71C549.917 1202.44 573.428 1193.61 595.85 1215.61C654.397 1273.04 720.807 1298.82 803.624 1297.49Z"/%3E%3C/svg%3E'
|
|
22
22
|
/>
|
|
23
23
|
<style>
|
|
24
24
|
:root {
|
|
25
25
|
color-scheme: light;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
--muted: #666666;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
* {
|
|
32
|
-
box-sizing: border-box;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
body {
|
|
36
|
-
margin: 0;
|
|
37
|
-
background: var(--background);
|
|
38
|
-
color: var(--foreground);
|
|
26
|
+
background: #ffffff;
|
|
27
|
+
color: #111111;
|
|
39
28
|
font-family:
|
|
40
|
-
-
|
|
41
|
-
|
|
29
|
+
ui-sans-serif,
|
|
30
|
+
system-ui,
|
|
31
|
+
-apple-system,
|
|
32
|
+
BlinkMacSystemFont,
|
|
33
|
+
"Segoe UI",
|
|
34
|
+
sans-serif;
|
|
42
35
|
}
|
|
43
36
|
|
|
44
|
-
|
|
37
|
+
body {
|
|
45
38
|
display: grid;
|
|
39
|
+
margin: 0;
|
|
46
40
|
min-height: 100vh;
|
|
47
41
|
place-items: center;
|
|
48
|
-
padding: 32px;
|
|
49
42
|
}
|
|
50
43
|
|
|
51
|
-
|
|
52
|
-
width: min(100%, 440px);
|
|
44
|
+
main {
|
|
53
45
|
text-align: center;
|
|
46
|
+
width: min(430px, calc(100vw - 48px));
|
|
54
47
|
}
|
|
55
48
|
|
|
56
49
|
.brand {
|
|
57
|
-
display: inline-flex;
|
|
58
50
|
align-items: center;
|
|
59
|
-
|
|
51
|
+
display: inline-flex;
|
|
52
|
+
gap: 7px;
|
|
60
53
|
margin-bottom: 28px;
|
|
61
|
-
font-size: 20px;
|
|
62
|
-
font-weight: 560;
|
|
63
|
-
letter-spacing: 0;
|
|
64
54
|
}
|
|
65
55
|
|
|
66
56
|
.logo {
|
|
67
57
|
display: block;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
58
|
+
height: 16px;
|
|
59
|
+
transform: translateY(-1px);
|
|
60
|
+
width: 16px;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.wordmark {
|
|
64
|
+
display: block;
|
|
65
|
+
height: 15px;
|
|
66
|
+
width: auto;
|
|
71
67
|
}
|
|
72
68
|
|
|
73
69
|
h1 {
|
|
74
|
-
|
|
75
|
-
font-
|
|
76
|
-
font-weight: 580;
|
|
70
|
+
font-size: clamp(25px, 3.1vw, 31px);
|
|
71
|
+
font-weight: 540;
|
|
77
72
|
letter-spacing: 0;
|
|
73
|
+
line-height: 1.1;
|
|
74
|
+
margin: 0;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
p {
|
|
78
|
+
color: #111111;
|
|
79
|
+
font-size: 18px;
|
|
80
|
+
line-height: 1.45;
|
|
81
|
+
margin: 18px auto 0;
|
|
82
|
+
max-width: 340px;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
footer {
|
|
86
|
+
align-items: center;
|
|
87
|
+
bottom: 34px;
|
|
88
|
+
color: #6f6f6f;
|
|
89
|
+
display: flex;
|
|
90
|
+
flex-direction: column;
|
|
91
|
+
font-size: 12px;
|
|
92
|
+
gap: 7px;
|
|
93
|
+
left: 24px;
|
|
94
|
+
line-height: 1.25;
|
|
95
|
+
position: fixed;
|
|
96
|
+
right: 24px;
|
|
97
|
+
text-align: center;
|
|
78
98
|
}
|
|
79
99
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
color: var(--muted);
|
|
84
|
-
font-size: 16px;
|
|
100
|
+
footer a {
|
|
101
|
+
color: inherit;
|
|
102
|
+
text-decoration: none;
|
|
85
103
|
}
|
|
86
104
|
|
|
87
|
-
a {
|
|
88
|
-
color:
|
|
89
|
-
|
|
90
|
-
|
|
105
|
+
footer a:hover {
|
|
106
|
+
color: #111111;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.footer-links {
|
|
110
|
+
align-items: center;
|
|
111
|
+
display: flex;
|
|
112
|
+
gap: 8px;
|
|
113
|
+
justify-content: center;
|
|
91
114
|
}
|
|
92
115
|
</style>
|
|
93
116
|
</head>
|
|
94
117
|
<body>
|
|
95
|
-
<main>
|
|
96
|
-
<
|
|
97
|
-
<
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
118
|
+
<main aria-labelledby="title">
|
|
119
|
+
<div class="brand" aria-label="OpenAI OAuth">
|
|
120
|
+
<svg
|
|
121
|
+
aria-hidden="true"
|
|
122
|
+
class="logo"
|
|
123
|
+
fill="none"
|
|
124
|
+
viewBox="0 0 1412 1412"
|
|
125
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
126
|
+
>
|
|
127
|
+
<path
|
|
128
|
+
d="M597.462 0.857699C673.717 -4.5771 755.535 16.0618 820.557 55.7878C839.621 67.4347 853.532 77.8804 870.903 91.7881C915.947 83.6597 962.083 83.5966 1007.15 91.601C1108.64 109.677 1198.75 167.436 1257.54 252.101C1315.95 336.355 1338.56 440.326 1320.41 541.218C1348.4 575.095 1369.47 609.408 1385.5 650.519C1422.8 746.143 1420.65 852.641 1379.53 946.681C1345.7 1023.88 1287.62 1087.95 1214.08 1129.17C1193.85 1140.47 1177.72 1147.33 1156.35 1155.65C1150.8 1167.38 1146.43 1180.08 1140.53 1192.52C1124.33 1226.23 1103.33 1257.42 1078.21 1285.12C1009.53 1360.77 913.675 1406.14 811.622 1411.3C797.103 1412.74 770.195 1411.71 755.535 1410.39C669.671 1402.64 607.216 1373.41 541.228 1320.14C498.371 1327.97 454.491 1328.42 411.479 1321.49C309.519 1305.16 218.308 1248.8 158.127 1164.91C95.5192 1077.93 74.597 975.652 91.7694 870.624C63.5815 837.852 41.1539 800.536 25.4414 760.272C-11.0983 663.999 -8.18036 557.204 33.5617 463.069C77.8418 363.472 155.004 295.015 255.809 256.181C260.004 248.164 265.705 231.947 270.502 221.837C286.044 188.764 306.234 158.081 330.46 130.717C398.638 53.6473 494.725 6.91416 597.462 0.857699ZM803.624 1297.49C879.882 1292.64 946.234 1261.95 997.071 1204.28C1015.09 1183.82 1029.9 1160.75 1041.02 1135.85C1047.58 1121.23 1051.8 1106.22 1056.86 1091.08C1067.19 1060.2 1088.78 1058.15 1115.61 1048.88C1125.47 1045.52 1135.09 1041.52 1144.43 1036.9C1243.91 988.43 1304.38 884.819 1297.64 774.394C1294 716.163 1271.8 660.631 1234.27 615.946C1223.26 602.711 1208.28 591.435 1203.34 574.896C1197.16 554.244 1207.83 529.807 1210.67 506.759C1221.87 416.705 1187.69 326.959 1119.41 267.154C1064.95 219.454 993.758 195.357 921.517 200.173C909.062 200.932 896.689 202.63 884.487 205.252C858.307 210.809 839.711 217.803 816.524 196.759C802.123 183.693 793.783 175.007 777.726 163.451C738.141 135.075 691.432 118.286 642.835 114.967C634.456 114.329 619.975 113.369 611.816 114.357C536.156 118.188 468.827 147.965 417.756 204.614C399.016 225.371 383.578 248.884 371.981 274.328C368.409 282.286 365.23 290.414 362.455 298.682C357.28 314.179 354.556 330.003 342.859 342.026C330.473 354.758 314.132 357.158 297.998 362.604C288.467 365.803 279.144 369.592 270.084 373.948C170.322 421.514 108.992 524.42 114.64 634.77C117.764 693.592 139.719 749.855 177.266 795.249C188.357 808.68 203.749 820.374 208.712 836.975C214.929 857.779 204.623 882.481 201.669 905.586C190.625 994.243 223.634 1082.71 290.065 1142.47C341.827 1188.92 413.829 1216.16 483.523 1212.31C496.702 1211.71 509.821 1210.17 522.783 1207.71C549.917 1202.44 573.428 1193.61 595.85 1215.61C654.397 1273.04 720.807 1298.82 803.624 1297.49Z"
|
|
129
|
+
fill="currentColor"
|
|
130
|
+
/>
|
|
131
|
+
<path
|
|
132
|
+
d="M528.104 673.1C645.003 673.1 739.769 767.837 739.769 884.701C739.769 1001.56 645.003 1096.3 528.104 1096.3C411.204 1096.3 316.439 1001.56 316.439 884.701C316.439 767.837 411.204 673.1 528.104 673.1ZM526.618 785.954C472.886 785.954 429.327 829.499 429.327 883.216C429.327 936.932 472.886 980.478 526.618 980.478C580.351 980.478 623.91 936.932 623.91 883.216C623.91 829.499 580.351 785.954 526.618 785.954Z"
|
|
133
|
+
fill="currentColor"
|
|
134
|
+
fill-rule="evenodd"
|
|
135
|
+
clip-rule="evenodd"
|
|
136
|
+
/>
|
|
137
|
+
<path
|
|
138
|
+
d="M974.454 335.733L1055.33 416.583L688.769 783.031L607.895 702.182L974.454 335.733Z"
|
|
139
|
+
fill="currentColor"
|
|
140
|
+
/>
|
|
141
|
+
<path
|
|
142
|
+
d="M820.585 766.758L704.525 767.283L821.11 650.733L820.585 766.758Z"
|
|
143
|
+
fill="currentColor"
|
|
144
|
+
/>
|
|
145
|
+
<path
|
|
146
|
+
d="M937.694 649.684L821.11 650.733L938.744 533.135L937.694 649.684Z"
|
|
147
|
+
fill="currentColor"
|
|
148
|
+
/>
|
|
149
|
+
<path
|
|
150
|
+
d="M1054.8 532.611L938.744 533.135L1055.33 416.586L1054.8 532.611Z"
|
|
151
|
+
fill="currentColor"
|
|
152
|
+
/>
|
|
153
|
+
<path
|
|
154
|
+
d="M1054.8 336.259L1055.33 416.583L974.454 335.733L1054.8 336.259Z"
|
|
155
|
+
fill="currentColor"
|
|
156
|
+
/>
|
|
157
|
+
</svg>
|
|
158
|
+
<svg
|
|
159
|
+
aria-label="OpenAI OAuth"
|
|
160
|
+
class="wordmark"
|
|
161
|
+
fill="none"
|
|
162
|
+
viewBox="0 0 2769 391"
|
|
163
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
164
|
+
>
|
|
165
|
+
<path d="M2495.6 239.383L2495.6 4.36719H2442.96L2442.96 251.081C2442.96 264.073 2446.69 279.793 2455.73 289.364C2464.76 298.935 2471.68 305.315 2488.69 305.315H2549.84V263.31H2514.21C2507.02 263.31 2501.82 258.862 2499.33 254.803C2496.83 250.743 2495.6 246.21 2495.6 239.383Z" fill="black"/>
|
|
166
|
+
<rect x="2543.46" y="90.5039" width="47.854" height="146.752" transform="rotate(90 2543.46 90.5039)" fill="black"/>
|
|
167
|
+
<path d="M1734.79 0C1649.66 0 1580 69.6496 1580 154.777C1580 239.904 1649.66 309.554 1734.79 309.554C1819.93 309.554 1889.59 240.334 1889.59 154.777C1889.59 69.2197 1820.36 0 1734.79 0ZM1734.79 254.092C1681.91 254.092 1639.34 210.669 1639.34 154.777C1639.34 98.8852 1681.91 55.4617 1734.79 55.4617C1787.68 55.4617 1830.25 98.8852 1830.25 154.777C1830.25 210.669 1787.68 254.092 1734.79 254.092Z" fill="black"/>
|
|
168
|
+
<path d="M1984.56 8.62109L1862.87 309.576H1922.64L1948.44 243.796H2086.89L2112.69 309.576H2173.32L2052.49 8.62109H1984.56ZM1967.79 193.923L2017.67 67.9522L2067.11 193.923H1967.79Z" fill="black"/>
|
|
169
|
+
<path d="M2687.02 86.0449C2662.08 86.0449 2635.86 97.2232 2623.82 115.71V4.36719H2567.92V305.312H2623.82V189.659C2623.82 156.124 2641.88 134.198 2671.11 134.198C2698.2 134.198 2712.82 154.835 2712.82 183.64V305.312H2768.72V174.612C2768.72 121.3 2736.04 86.0449 2687.02 86.0449Z" fill="black"/>
|
|
170
|
+
<path d="M2255.09 309.773C2280.02 309.773 2306.25 298.595 2318.29 280.108L2318.29 305.474L2374.19 305.474L2374.19 90.5062L2318.29 90.5062L2318.29 206.159C2318.29 239.694 2300.23 261.621 2271 261.621C2243.91 261.621 2229.29 240.984 2229.29 212.178L2229.29 90.5062L2173.39 90.5062L2173.39 221.207C2173.39 274.519 2206.07 309.773 2255.09 309.773Z" fill="black"/>
|
|
171
|
+
<path d="M154.577 0C69.5595 0 0 69.6066 0 154.681C0 239.756 69.5595 309.363 154.577 309.363C239.594 309.363 309.153 240.186 309.153 154.681C309.153 69.1769 240.023 0 154.577 0ZM154.577 253.935C101.763 253.935 59.2544 210.538 59.2544 154.681C59.2544 98.8242 101.763 55.4275 154.577 55.4275C207.39 55.4275 249.899 98.8242 249.899 154.681C249.899 210.538 207.39 253.935 154.577 253.935ZM465.447 85.9341C437.533 85.9341 410.487 97.1055 396.312 116.011V90.2308H340.493V391H396.312V282.293C410.482 299.91 436.674 309.363 465.442 309.363C525.555 309.363 572.787 262.099 572.787 197.648C572.787 133.198 525.561 85.9341 465.447 85.9341ZM455.996 260.81C424.222 260.81 395.883 235.889 395.883 197.648C395.883 159.408 424.222 134.487 455.996 134.487C487.77 134.487 516.104 159.408 516.104 197.648C516.104 235.889 487.77 260.81 455.996 260.81ZM704.187 85.9341C643.216 85.9341 595.125 133.627 595.125 197.648C595.125 261.669 637.204 309.363 705.905 309.363C762.154 309.363 798.222 275.419 809.385 237.178H754.854C747.984 253.076 728.662 264.247 705.476 264.247C676.707 264.247 654.809 244.053 649.656 215.265H811.962V193.352C811.962 134.916 771.171 85.9341 704.187 85.9341ZM650.086 175.735C656.097 148.666 678.425 131.049 705.476 131.049C734.244 131.049 756.142 149.955 758.719 175.735H650.086ZM960.522 85.9341C935.618 85.9341 909.426 97.1055 897.403 115.581V90.2308H841.584V305.066H897.403V189.485C897.403 155.97 915.437 134.057 944.635 134.057C971.686 134.057 986.285 154.681 986.285 183.469V305.066H1042.1V174.446C1042.1 121.167 1009.47 85.9341 960.522 85.9341ZM1185.07 4.30681L1063.55 305.076H1123.24L1149 239.336H1287.26L1313.02 305.076H1373.56L1252.91 4.30681H1185.07ZM1168.32 189.495L1218.13 63.6013L1267.51 189.495H1168.32ZM1453 4.30681H1396.32V305.076H1453V4.30681Z" fill="black"/>
|
|
172
|
+
</svg>
|
|
173
|
+
</div>
|
|
174
|
+
<h1 id="title">Sign-in complete</h1>
|
|
175
|
+
<p>
|
|
176
|
+
Your ChatGPT credentials are saved locally. You can close this
|
|
177
|
+
window and return to your terminal.
|
|
178
|
+
</p>
|
|
147
179
|
</main>
|
|
180
|
+
<footer>
|
|
181
|
+
<a href="https://github.com/evanzhoudev/openai-oauth">
|
|
182
|
+
Learn more about OpenAI OAuth
|
|
183
|
+
</a>
|
|
184
|
+
<div class="footer-links">
|
|
185
|
+
<a href="https://github.com/evanzhoudev/openai-oauth">GitHub</a>
|
|
186
|
+
<span aria-hidden="true">\u22C5</span>
|
|
187
|
+
<a href="https://github.com/evanzhoudev/openai-oauth#legal">Legal</a>
|
|
188
|
+
</div>
|
|
189
|
+
</footer>
|
|
148
190
|
</body>
|
|
149
191
|
</html>
|
|
150
192
|
`;
|
|
@@ -1085,124 +1127,24 @@ var handleChatCompletionsRequest = async (request, provider, logger) => {
|
|
|
1085
1127
|
};
|
|
1086
1128
|
|
|
1087
1129
|
// src/models.ts
|
|
1088
|
-
import { execFile } from "child_process";
|
|
1089
|
-
import { promisify } from "util";
|
|
1090
1130
|
var MODELS_CACHE_TTL_MS = 5 * 60 * 1e3;
|
|
1091
|
-
var CODEX_VERSION_CACHE_TTL_MS = 60 * 60 * 1e3;
|
|
1092
|
-
var REGISTRY_URL = "https://registry.npmjs.org/@openai/codex/latest";
|
|
1093
|
-
var FALLBACK_CODEX_CLIENT_VERSION = "0.111.0";
|
|
1094
|
-
var execFileAsync = promisify(execFile);
|
|
1095
1131
|
var isRecord2 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1096
|
-
var uniqueStrings = (values) =>
|
|
1097
|
-
|
|
1098
|
-
const result = [];
|
|
1099
|
-
for (const value of values) {
|
|
1100
|
-
if (!seen.has(value)) {
|
|
1101
|
-
seen.add(value);
|
|
1102
|
-
result.push(value);
|
|
1103
|
-
}
|
|
1104
|
-
}
|
|
1105
|
-
return result;
|
|
1106
|
-
};
|
|
1107
|
-
var normalizeVersion = (value) => {
|
|
1108
|
-
if (typeof value !== "string") {
|
|
1109
|
-
return void 0;
|
|
1110
|
-
}
|
|
1111
|
-
const match = value.trim().match(/\b\d+\.\d+\.\d+\b/);
|
|
1112
|
-
return match?.[0];
|
|
1113
|
-
};
|
|
1114
|
-
var cachedCodexClientVersion;
|
|
1115
|
-
var codexClientVersionCacheExpiresAt = 0;
|
|
1116
|
-
var inflightCodexClientVersion;
|
|
1117
|
-
var resolveLocalCodexClientVersion = async (runCommand) => {
|
|
1118
|
-
try {
|
|
1119
|
-
const { stdout, stderr } = await runCommand("codex", ["--version"]);
|
|
1120
|
-
return normalizeVersion(stdout) ?? normalizeVersion(stderr);
|
|
1121
|
-
} catch {
|
|
1122
|
-
return void 0;
|
|
1123
|
-
}
|
|
1124
|
-
};
|
|
1125
|
-
var resolveRemoteCodexClientVersion = async (fetchImpl) => {
|
|
1126
|
-
try {
|
|
1127
|
-
const response = await fetchImpl(REGISTRY_URL, {
|
|
1128
|
-
headers: {
|
|
1129
|
-
accept: "application/json"
|
|
1130
|
-
}
|
|
1131
|
-
});
|
|
1132
|
-
if (!response.ok) {
|
|
1133
|
-
return void 0;
|
|
1134
|
-
}
|
|
1135
|
-
const parsed = await response.json();
|
|
1136
|
-
return typeof parsed.version === "string" ? normalizeVersion(parsed.version) : void 0;
|
|
1137
|
-
} catch {
|
|
1138
|
-
return void 0;
|
|
1139
|
-
}
|
|
1140
|
-
};
|
|
1141
|
-
var resolveCodexClientVersion = async (dependencies = {}) => {
|
|
1142
|
-
if (typeof dependencies.codexVersion === "string" && dependencies.codexVersion.trim().length > 0) {
|
|
1143
|
-
return dependencies.codexVersion.trim();
|
|
1144
|
-
}
|
|
1145
|
-
const now = Date.now();
|
|
1146
|
-
if (cachedCodexClientVersion && now < codexClientVersionCacheExpiresAt) {
|
|
1147
|
-
return cachedCodexClientVersion;
|
|
1148
|
-
}
|
|
1149
|
-
if (inflightCodexClientVersion) {
|
|
1150
|
-
return inflightCodexClientVersion;
|
|
1151
|
-
}
|
|
1152
|
-
const runCommand = dependencies.runCommand ?? execFileAsync;
|
|
1153
|
-
const fetchImpl = dependencies.fetchImpl ?? globalThis.fetch;
|
|
1154
|
-
inflightCodexClientVersion = (async () => {
|
|
1155
|
-
const localVersion = await resolveLocalCodexClientVersion(runCommand);
|
|
1156
|
-
if (localVersion) {
|
|
1157
|
-
cachedCodexClientVersion = localVersion;
|
|
1158
|
-
codexClientVersionCacheExpiresAt = Date.now() + CODEX_VERSION_CACHE_TTL_MS;
|
|
1159
|
-
inflightCodexClientVersion = void 0;
|
|
1160
|
-
return localVersion;
|
|
1161
|
-
}
|
|
1162
|
-
const remoteVersion = await resolveRemoteCodexClientVersion(fetchImpl);
|
|
1163
|
-
if (remoteVersion) {
|
|
1164
|
-
cachedCodexClientVersion = remoteVersion;
|
|
1165
|
-
codexClientVersionCacheExpiresAt = Date.now() + CODEX_VERSION_CACHE_TTL_MS;
|
|
1166
|
-
inflightCodexClientVersion = void 0;
|
|
1167
|
-
return remoteVersion;
|
|
1168
|
-
}
|
|
1169
|
-
cachedCodexClientVersion = FALLBACK_CODEX_CLIENT_VERSION;
|
|
1170
|
-
codexClientVersionCacheExpiresAt = Date.now() + CODEX_VERSION_CACHE_TTL_MS;
|
|
1171
|
-
dependencies.onWarning?.(
|
|
1172
|
-
`Could not determine the Codex API version automatically. Falling back to ${FALLBACK_CODEX_CLIENT_VERSION}. Pass a version explicitly with --codex-version if you need to override it.`
|
|
1173
|
-
);
|
|
1174
|
-
inflightCodexClientVersion = void 0;
|
|
1175
|
-
return FALLBACK_CODEX_CLIENT_VERSION;
|
|
1176
|
-
})().catch((error) => {
|
|
1177
|
-
inflightCodexClientVersion = void 0;
|
|
1178
|
-
throw error;
|
|
1179
|
-
});
|
|
1180
|
-
return inflightCodexClientVersion;
|
|
1181
|
-
};
|
|
1182
|
-
var toUpstreamErrorMessage = (bodyText) => {
|
|
1183
|
-
if (typeof bodyText !== "string" || bodyText.length === 0) {
|
|
1184
|
-
return "Failed to load models from Codex.";
|
|
1185
|
-
}
|
|
1132
|
+
var uniqueStrings = (values) => [...new Set(values)];
|
|
1133
|
+
var modelListError = (bodyText) => {
|
|
1186
1134
|
try {
|
|
1187
1135
|
const parsed = JSON.parse(bodyText);
|
|
1188
|
-
if (
|
|
1189
|
-
return parsed.detail;
|
|
1190
|
-
}
|
|
1191
|
-
if (isRecord2(parsed.error) && typeof parsed.error.message === "string") {
|
|
1136
|
+
if (isRecord2(parsed) && isRecord2(parsed.error) && typeof parsed.error.message === "string") {
|
|
1192
1137
|
return parsed.error.message;
|
|
1193
1138
|
}
|
|
1194
1139
|
} catch {
|
|
1195
1140
|
}
|
|
1196
|
-
return bodyText;
|
|
1141
|
+
return bodyText || "Failed to load models from Codex.";
|
|
1197
1142
|
};
|
|
1198
|
-
var
|
|
1199
|
-
const
|
|
1200
|
-
const response = await client.request(
|
|
1201
|
-
`/models?client_version=${encodeURIComponent(clientVersion)}`
|
|
1202
|
-
);
|
|
1143
|
+
var readModelList = async (client) => {
|
|
1144
|
+
const response = await client.request("/models");
|
|
1203
1145
|
const bodyText = await response.text();
|
|
1204
1146
|
if (!response.ok) {
|
|
1205
|
-
throw new Error(
|
|
1147
|
+
throw new Error(modelListError(bodyText));
|
|
1206
1148
|
}
|
|
1207
1149
|
let parsed;
|
|
1208
1150
|
try {
|
|
@@ -1210,26 +1152,19 @@ var fetchAvailableModels = async (client, dependencies = {}) => {
|
|
|
1210
1152
|
} catch {
|
|
1211
1153
|
throw new Error("Codex returned an invalid models response.");
|
|
1212
1154
|
}
|
|
1213
|
-
if (!Array.isArray(parsed.
|
|
1155
|
+
if (!isRecord2(parsed) || !Array.isArray(parsed.data)) {
|
|
1214
1156
|
throw new Error("Codex returned a malformed models response.");
|
|
1215
1157
|
}
|
|
1216
1158
|
const models = uniqueStrings(
|
|
1217
|
-
parsed.
|
|
1218
|
-
(slug) => typeof slug === "string" && slug.length > 0
|
|
1219
|
-
)
|
|
1159
|
+
parsed.data.map((model) => isRecord2(model) ? model.id : void 0).filter((id) => typeof id === "string" && id.length > 0)
|
|
1220
1160
|
);
|
|
1221
1161
|
if (models.length === 0) {
|
|
1222
1162
|
throw new Error("Codex returned an empty models list.");
|
|
1223
1163
|
}
|
|
1224
1164
|
return models;
|
|
1225
1165
|
};
|
|
1226
|
-
var resolveOpenAIOAuthModels = async (client, configuredModels
|
|
1227
|
-
|
|
1228
|
-
return uniqueStrings(configuredModels);
|
|
1229
|
-
}
|
|
1230
|
-
return fetchAvailableModels(client, dependencies);
|
|
1231
|
-
};
|
|
1232
|
-
var createModelResolver = (client, configuredModels, dependencies = {}) => {
|
|
1166
|
+
var resolveOpenAIOAuthModels = async (client, configuredModels) => Array.isArray(configuredModels) && configuredModels.length > 0 ? uniqueStrings(configuredModels) : readModelList(client);
|
|
1167
|
+
var createModelResolver = (client, configuredModels) => {
|
|
1233
1168
|
let cachedModels;
|
|
1234
1169
|
let cacheExpiresAt = 0;
|
|
1235
1170
|
let inflight;
|
|
@@ -1241,7 +1176,7 @@ var createModelResolver = (client, configuredModels, dependencies = {}) => {
|
|
|
1241
1176
|
if (inflight) {
|
|
1242
1177
|
return [...await inflight];
|
|
1243
1178
|
}
|
|
1244
|
-
inflight = resolveOpenAIOAuthModels(client, configuredModels
|
|
1179
|
+
inflight = resolveOpenAIOAuthModels(client, configuredModels).then((models) => {
|
|
1245
1180
|
cachedModels = models;
|
|
1246
1181
|
cacheExpiresAt = Date.now() + MODELS_CACHE_TTL_MS;
|
|
1247
1182
|
inflight = void 0;
|
|
@@ -1279,8 +1214,7 @@ var handleResponsesRequest = async (request, settings, client) => {
|
|
|
1279
1214
|
body: JSON.stringify(
|
|
1280
1215
|
normalizeCodexResponsesBody(body, {
|
|
1281
1216
|
forceStream: true,
|
|
1282
|
-
instructions: settings.instructions
|
|
1283
|
-
storeResponses: settings.storeResponses
|
|
1217
|
+
instructions: settings.instructions
|
|
1284
1218
|
})
|
|
1285
1219
|
)
|
|
1286
1220
|
});
|
|
@@ -1354,9 +1288,7 @@ var createOpenAIOAuthFetchHandler = (settings = {}) => {
|
|
|
1354
1288
|
};
|
|
1355
1289
|
const client = createCodexOAuthClient(sharedSettings);
|
|
1356
1290
|
const provider = createOpenAIOAuth(auth);
|
|
1357
|
-
const resolveModels = createModelResolver(client, settings.models
|
|
1358
|
-
codexVersion: settings.codexVersion
|
|
1359
|
-
});
|
|
1291
|
+
const resolveModels = createModelResolver(client, settings.models);
|
|
1360
1292
|
const requestLogger = createRequestLogger(settings);
|
|
1361
1293
|
return async (request) => {
|
|
1362
1294
|
try {
|
|
@@ -1420,22 +1352,10 @@ var startOpenAIOAuthServer = async (settings = {}) => {
|
|
|
1420
1352
|
};
|
|
1421
1353
|
};
|
|
1422
1354
|
|
|
1423
|
-
// src/types.ts
|
|
1424
|
-
var defaultOpenAIOAuthModels = [
|
|
1425
|
-
"gpt-5.4",
|
|
1426
|
-
"gpt-5.3-codex",
|
|
1427
|
-
"gpt-5.3-codex-spark",
|
|
1428
|
-
"gpt-5.2",
|
|
1429
|
-
"gpt-5.1",
|
|
1430
|
-
"gpt-5.1-codex",
|
|
1431
|
-
"gpt-5.1-codex-max"
|
|
1432
|
-
];
|
|
1433
|
-
|
|
1434
1355
|
export {
|
|
1435
1356
|
runOpenAIOAuthLogin,
|
|
1436
1357
|
DEFAULT_PORT,
|
|
1437
1358
|
resolveOpenAIOAuthModels,
|
|
1438
1359
|
createOpenAIOAuthFetchHandler,
|
|
1439
|
-
startOpenAIOAuthServer
|
|
1440
|
-
defaultOpenAIOAuthModels
|
|
1360
|
+
startOpenAIOAuthServer
|
|
1441
1361
|
};
|
package/dist/cli.js
CHANGED
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
resolveOpenAIOAuthModels,
|
|
5
5
|
runOpenAIOAuthLogin,
|
|
6
6
|
startOpenAIOAuthServer
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-UZ3AHAWX.js";
|
|
8
8
|
|
|
9
9
|
// src/cli-app.ts
|
|
10
10
|
import { access } from "fs/promises";
|
|
@@ -154,7 +154,7 @@ Run \`npx openai-oauth@latest\` to use the newest version.`
|
|
|
154
154
|
};
|
|
155
155
|
|
|
156
156
|
// src/version.ts
|
|
157
|
-
var packageVersion = "2.0.0-beta.
|
|
157
|
+
var packageVersion = "2.0.0-beta.2";
|
|
158
158
|
|
|
159
159
|
// src/cli-app.ts
|
|
160
160
|
var defaultUpdateCheckWarning = (message) => {
|
|
@@ -178,7 +178,7 @@ var helpLines = [
|
|
|
178
178
|
" --host <host> Proxy host. Login callback always listens on loopback.",
|
|
179
179
|
" --port <port> Proxy port. Default: 10531.",
|
|
180
180
|
" --models <ids> Comma-separated model ids to expose from /v1/models.",
|
|
181
|
-
" --codex-version <version> Codex
|
|
181
|
+
" --codex-version <version> Override the Codex client version used for model discovery.",
|
|
182
182
|
" --base-url <url> Override the upstream Codex base URL.",
|
|
183
183
|
" --oauth-client-id <id> Override the OAuth client id used for refresh.",
|
|
184
184
|
" --oauth-token-url <url> Override the OAuth token URL used for refresh.",
|
|
@@ -192,7 +192,7 @@ var helpLines = [
|
|
|
192
192
|
"",
|
|
193
193
|
"Notes",
|
|
194
194
|
" If no auth file is found, run: npx openai-oauth login",
|
|
195
|
-
" By default, available models are discovered
|
|
195
|
+
" By default, the latest Codex version and available account models are discovered automatically."
|
|
196
196
|
];
|
|
197
197
|
var createCliParser = (argv) => yargs(argv).scriptName("openai-oauth").strict().help(false).version(false).option("host", {
|
|
198
198
|
type: "string",
|
|
@@ -206,7 +206,7 @@ var createCliParser = (argv) => yargs(argv).scriptName("openai-oauth").strict().
|
|
|
206
206
|
coerce: parseModels
|
|
207
207
|
}).option("codex-version", {
|
|
208
208
|
type: "string",
|
|
209
|
-
describe: "Codex
|
|
209
|
+
describe: "Override the Codex client version used for model discovery."
|
|
210
210
|
}).option("base-url", {
|
|
211
211
|
type: "string",
|
|
212
212
|
describe: "Override the upstream Codex base URL."
|
|
@@ -438,16 +438,7 @@ var runCli = async (argv = hideBin(process.argv)) => {
|
|
|
438
438
|
auth: () => auth.getSession(),
|
|
439
439
|
responsesState: false
|
|
440
440
|
});
|
|
441
|
-
const availableModels = await resolveOpenAIOAuthModels(
|
|
442
|
-
client,
|
|
443
|
-
options.models,
|
|
444
|
-
{
|
|
445
|
-
codexVersion: options.codexVersion,
|
|
446
|
-
onWarning: (message) => {
|
|
447
|
-
console.error(message);
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
);
|
|
441
|
+
const availableModels = await resolveOpenAIOAuthModels(client, options.models);
|
|
451
442
|
const server = await startOpenAIOAuthServer(options);
|
|
452
443
|
console.log(
|
|
453
444
|
toStartupMessage(
|
package/dist/index.d.ts
CHANGED
|
@@ -58,7 +58,7 @@ type ChatRequest = {
|
|
|
58
58
|
stop?: string | string[];
|
|
59
59
|
max_tokens?: number;
|
|
60
60
|
parallel_tool_calls?: boolean;
|
|
61
|
-
reasoning_effort?: "none" | "minimal" | "low" | "medium" | "high";
|
|
61
|
+
reasoning_effort?: "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | "ultra";
|
|
62
62
|
};
|
|
63
63
|
type ChatRequestSummary = {
|
|
64
64
|
bodyKeys: string[];
|
|
@@ -96,7 +96,6 @@ type OpenAIOAuthServerLogEvent = ({
|
|
|
96
96
|
path: "/v1/chat/completions";
|
|
97
97
|
requestId: string;
|
|
98
98
|
};
|
|
99
|
-
declare const defaultOpenAIOAuthModels: readonly string[];
|
|
100
99
|
type OpenAIOAuthServerOptions = LocalOpenAIOAuthOptions & {
|
|
101
100
|
host?: string;
|
|
102
101
|
port?: number;
|
|
@@ -115,4 +114,4 @@ type RunningOpenAIOAuthServer = {
|
|
|
115
114
|
declare const createOpenAIOAuthFetchHandler: (settings?: OpenAIOAuthServerOptions) => ((request: Request) => Promise<Response>);
|
|
116
115
|
declare const startOpenAIOAuthServer: (settings?: OpenAIOAuthServerOptions) => Promise<RunningOpenAIOAuthServer>;
|
|
117
116
|
|
|
118
|
-
export { type OpenAIOAuthLoginOptions, type OpenAIOAuthServerLogEvent, type OpenAIOAuthServerOptions, type RunningOpenAIOAuthServer, createOpenAIOAuthFetchHandler,
|
|
117
|
+
export { type OpenAIOAuthLoginOptions, type OpenAIOAuthServerLogEvent, type OpenAIOAuthServerOptions, type RunningOpenAIOAuthServer, createOpenAIOAuthFetchHandler, runOpenAIOAuthLogin, startOpenAIOAuthServer };
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createOpenAIOAuthFetchHandler,
|
|
3
|
-
defaultOpenAIOAuthModels,
|
|
4
3
|
runOpenAIOAuthLogin,
|
|
5
4
|
startOpenAIOAuthServer
|
|
6
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-UZ3AHAWX.js";
|
|
7
6
|
export {
|
|
8
7
|
createOpenAIOAuthFetchHandler,
|
|
9
|
-
defaultOpenAIOAuthModels,
|
|
10
8
|
runOpenAIOAuthLogin,
|
|
11
9
|
startOpenAIOAuthServer
|
|
12
10
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openai-oauth",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.2",
|
|
4
4
|
"description": "Free OpenAI API access with your ChatGPT account.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"openai",
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
"test:live": "LIVE_CODEX_E2E=1 vitest run test/live.e2e.test.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@openai-oauth/ai-sdk": "2.0.0-beta.
|
|
42
|
-
"@openai-oauth/core": "2.0.0-beta.
|
|
43
|
-
"@openai-oauth/local": "2.0.0-beta.
|
|
41
|
+
"@openai-oauth/ai-sdk": "2.0.0-beta.2",
|
|
42
|
+
"@openai-oauth/core": "2.0.0-beta.2",
|
|
43
|
+
"@openai-oauth/local": "2.0.0-beta.2",
|
|
44
44
|
"ai": "6.0.116",
|
|
45
45
|
"yargs": "^17.7.2"
|
|
46
46
|
},
|