zelari-code 1.37.0 → 1.38.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.
- package/dist/cli/chatgptOAuth.js +142 -43
- package/dist/cli/chatgptOAuth.js.map +1 -1
- package/dist/cli/main.bundled.js +134 -46
- package/dist/cli/main.bundled.js.map +3 -3
- package/package.json +2 -2
package/dist/cli/chatgptOAuth.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* chatgptOAuth — ChatGPT subscription login (Codex public OAuth client).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* POST /api/accounts/deviceauth/usercode
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Device flow (preferred, matches official Codex CLI — NOT RFC 8628):
|
|
5
|
+
* POST JSON /api/accounts/deviceauth/usercode { client_id }
|
|
6
|
+
* → device_auth_id + user_code + interval
|
|
7
|
+
* User opens https://auth.openai.com/codex/device and enters user_code
|
|
8
|
+
* poll JSON /api/accounts/deviceauth/token { device_auth_id, user_code }
|
|
9
|
+
* → authorization_code + server-issued PKCE (code_verifier)
|
|
10
|
+
* POST form /oauth/token (authorization_code) → access + refresh
|
|
8
11
|
*
|
|
9
12
|
* Optional browser PKCE (localhost:1455) via CHATGPT_OAUTH_FLOW=browser.
|
|
10
13
|
*/
|
|
@@ -16,6 +19,8 @@ export const CHATGPT_TOKEN_URL = 'https://auth.openai.com/oauth/token';
|
|
|
16
19
|
export const CHATGPT_DEVICE_CODE_URL = 'https://auth.openai.com/api/accounts/deviceauth/usercode';
|
|
17
20
|
export const CHATGPT_DEVICE_TOKEN_URL = 'https://auth.openai.com/api/accounts/deviceauth/token';
|
|
18
21
|
export const CHATGPT_DEVICE_REDIRECT_URI = 'https://auth.openai.com/deviceauth/callback';
|
|
22
|
+
/** Codex constructs this; the usercode response does not include verification_uri. */
|
|
23
|
+
export const CHATGPT_DEVICE_VERIFY_URL = 'https://auth.openai.com/codex/device';
|
|
19
24
|
export const CHATGPT_SCOPE = 'openid profile email offline_access';
|
|
20
25
|
export const CHATGPT_AUTH_CLAIMS = 'https://api.openai.com/auth';
|
|
21
26
|
export class ChatgptOAuthError extends Error {
|
|
@@ -72,6 +77,35 @@ function parseTokenPayload(obj, fallbackRefresh) {
|
|
|
72
77
|
}
|
|
73
78
|
return result;
|
|
74
79
|
}
|
|
80
|
+
function errorSnippet(body) {
|
|
81
|
+
const err = body.error;
|
|
82
|
+
if (typeof err === 'string' && err.trim())
|
|
83
|
+
return err.trim().slice(0, 160);
|
|
84
|
+
if (err && typeof err === 'object') {
|
|
85
|
+
const msg = err.message;
|
|
86
|
+
if (typeof msg === 'string' && msg.trim())
|
|
87
|
+
return msg.trim().slice(0, 160);
|
|
88
|
+
}
|
|
89
|
+
const msg = body.message;
|
|
90
|
+
if (typeof msg === 'string' && msg.trim())
|
|
91
|
+
return msg.trim().slice(0, 160);
|
|
92
|
+
return '';
|
|
93
|
+
}
|
|
94
|
+
function formatHttpError(prefix, status, body) {
|
|
95
|
+
const detail = errorSnippet(body);
|
|
96
|
+
return detail ? `${prefix} HTTP ${status}: ${detail}` : `${prefix} HTTP ${status}`;
|
|
97
|
+
}
|
|
98
|
+
async function readJsonBody(response) {
|
|
99
|
+
try {
|
|
100
|
+
const parsed = await response.json();
|
|
101
|
+
if (parsed && typeof parsed === 'object')
|
|
102
|
+
return parsed;
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
/* empty */
|
|
106
|
+
}
|
|
107
|
+
return {};
|
|
108
|
+
}
|
|
75
109
|
async function postForm(url, data, fetchImpl) {
|
|
76
110
|
let response;
|
|
77
111
|
try {
|
|
@@ -87,16 +121,35 @@ async function postForm(url, data, fetchImpl) {
|
|
|
87
121
|
catch (err) {
|
|
88
122
|
throw new ChatgptOAuthError(`ChatGPT OAuth network error: ${err instanceof Error ? err.message : String(err)}`, 'network_error');
|
|
89
123
|
}
|
|
90
|
-
|
|
124
|
+
return { status: response.status, body: await readJsonBody(response) };
|
|
125
|
+
}
|
|
126
|
+
/** Codex device-auth endpoints expect JSON, not RFC 8628 form bodies. */
|
|
127
|
+
async function postJson(url, data, fetchImpl) {
|
|
128
|
+
let response;
|
|
91
129
|
try {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
130
|
+
response = await fetchImpl(url, {
|
|
131
|
+
method: 'POST',
|
|
132
|
+
headers: {
|
|
133
|
+
'Content-Type': 'application/json',
|
|
134
|
+
Accept: 'application/json',
|
|
135
|
+
},
|
|
136
|
+
body: JSON.stringify(data),
|
|
137
|
+
});
|
|
95
138
|
}
|
|
96
|
-
catch {
|
|
97
|
-
|
|
139
|
+
catch (err) {
|
|
140
|
+
throw new ChatgptOAuthError(`ChatGPT OAuth network error: ${err instanceof Error ? err.message : String(err)}`, 'network_error');
|
|
98
141
|
}
|
|
99
|
-
return { status: response.status, body };
|
|
142
|
+
return { status: response.status, body: await readJsonBody(response) };
|
|
143
|
+
}
|
|
144
|
+
function parsePollInterval(raw, fallback = 5) {
|
|
145
|
+
if (typeof raw === 'number' && Number.isFinite(raw) && raw > 0)
|
|
146
|
+
return raw;
|
|
147
|
+
if (typeof raw === 'string') {
|
|
148
|
+
const n = Number.parseInt(raw, 10);
|
|
149
|
+
if (Number.isFinite(n) && n > 0)
|
|
150
|
+
return n;
|
|
151
|
+
}
|
|
152
|
+
return fallback;
|
|
100
153
|
}
|
|
101
154
|
export async function refreshChatgptToken(options) {
|
|
102
155
|
if (!options.refreshToken.trim()) {
|
|
@@ -111,80 +164,90 @@ export async function refreshChatgptToken(options) {
|
|
|
111
164
|
}, fetchImpl);
|
|
112
165
|
if (status >= 400) {
|
|
113
166
|
const code = status === 400 || status === 401 ? 'invalid_grant' : `http_${status}`;
|
|
114
|
-
throw new ChatgptOAuthError(
|
|
167
|
+
throw new ChatgptOAuthError(formatHttpError('ChatGPT token refresh', status, body), code);
|
|
115
168
|
}
|
|
116
169
|
return parseTokenPayload(body, options.refreshToken);
|
|
117
170
|
}
|
|
118
|
-
export async function
|
|
171
|
+
export async function startChatgptDeviceAuth(options = {}) {
|
|
119
172
|
const clientId = options.clientId || process.env.CHATGPT_OAUTH_CLIENT_ID || DEFAULT_CHATGPT_CLIENT_ID;
|
|
120
173
|
const fetchImpl = options.fetchImpl ?? fetch;
|
|
121
|
-
|
|
122
|
-
const
|
|
123
|
-
const start = await postForm(CHATGPT_DEVICE_CODE_URL, {
|
|
124
|
-
client_id: clientId,
|
|
125
|
-
scope: CHATGPT_SCOPE,
|
|
126
|
-
code_challenge: challenge,
|
|
127
|
-
code_challenge_method: 'S256',
|
|
128
|
-
}, fetchImpl);
|
|
174
|
+
// Official Codex: JSON { client_id } only. Extra RFC 8628 / PKCE fields → HTTP 400.
|
|
175
|
+
const start = await postJson(CHATGPT_DEVICE_CODE_URL, { client_id: clientId }, fetchImpl);
|
|
129
176
|
if (start.status >= 400) {
|
|
130
|
-
throw new ChatgptOAuthError(
|
|
177
|
+
throw new ChatgptOAuthError(formatHttpError('ChatGPT device-code', start.status, start.body), `device_http_${start.status}`);
|
|
131
178
|
}
|
|
132
|
-
const
|
|
133
|
-
|
|
179
|
+
const deviceAuthId = (typeof start.body.device_auth_id === 'string' && start.body.device_auth_id) ||
|
|
180
|
+
(typeof start.body.device_code === 'string' && start.body.device_code) ||
|
|
181
|
+
'';
|
|
182
|
+
const userCode = (typeof start.body.user_code === 'string' && start.body.user_code) ||
|
|
183
|
+
(typeof start.body.usercode === 'string' && start.body.usercode) ||
|
|
184
|
+
'';
|
|
134
185
|
const verificationUri = (typeof start.body.verification_uri === 'string' && start.body.verification_uri) ||
|
|
135
|
-
(typeof start.body.
|
|
136
|
-
|
|
137
|
-
if (
|
|
138
|
-
typeof userCode !== 'string' ||
|
|
139
|
-
typeof verificationUri !== 'string') {
|
|
186
|
+
(typeof start.body.verification_url === 'string' && start.body.verification_url) ||
|
|
187
|
+
`${CHATGPT_DEVICE_VERIFY_URL}?user_code=${encodeURIComponent(userCode)}`;
|
|
188
|
+
if (!deviceAuthId || !userCode) {
|
|
140
189
|
throw new ChatgptOAuthError('Device-code response missing fields', 'no_device_code');
|
|
141
190
|
}
|
|
142
|
-
|
|
191
|
+
return {
|
|
192
|
+
deviceAuthId,
|
|
143
193
|
userCode,
|
|
144
194
|
verificationUri,
|
|
195
|
+
interval: parsePollInterval(start.body.interval, 5),
|
|
145
196
|
...(typeof start.body.verification_uri_complete === 'string'
|
|
146
197
|
? { verificationUriComplete: start.body.verification_uri_complete }
|
|
147
198
|
: {}),
|
|
148
199
|
};
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
catch {
|
|
155
|
-
/* user can open the URL manually */
|
|
156
|
-
}
|
|
200
|
+
}
|
|
201
|
+
export async function pollChatgptDeviceAuth(options) {
|
|
202
|
+
const clientId = options.clientId || process.env.CHATGPT_OAUTH_CLIENT_ID || DEFAULT_CHATGPT_CLIENT_ID;
|
|
203
|
+
const fetchImpl = options.fetchImpl ?? fetch;
|
|
204
|
+
const sleep = options.sleepImpl ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
157
205
|
const timeoutMs = options.timeoutMs ?? 300_000;
|
|
158
206
|
const deadline = Date.now() + timeoutMs;
|
|
159
|
-
let interval = 5;
|
|
207
|
+
let interval = options.interval ?? 5;
|
|
160
208
|
let authorizationCode;
|
|
209
|
+
let codeVerifier;
|
|
161
210
|
while (Date.now() < deadline) {
|
|
162
|
-
const poll = await
|
|
211
|
+
const poll = await postJson(CHATGPT_DEVICE_TOKEN_URL, { device_auth_id: options.deviceAuthId, user_code: options.userCode }, fetchImpl);
|
|
163
212
|
const authCode = poll.body.authorization_code;
|
|
164
213
|
if (typeof authCode === 'string' && authCode.length > 0) {
|
|
165
214
|
authorizationCode = authCode;
|
|
215
|
+
if (typeof poll.body.code_verifier === 'string' && poll.body.code_verifier) {
|
|
216
|
+
codeVerifier = poll.body.code_verifier;
|
|
217
|
+
}
|
|
166
218
|
break;
|
|
167
219
|
}
|
|
220
|
+
// Codex treats 403/404 as "not authorized yet".
|
|
221
|
+
if (poll.status === 403 || poll.status === 404) {
|
|
222
|
+
await sleep(interval * 1000);
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
168
225
|
const err = typeof poll.body.error === 'string' ? poll.body.error : '';
|
|
169
226
|
if (err === 'slow_down')
|
|
170
227
|
interval += 5;
|
|
171
228
|
else if (err && err !== 'authorization_pending') {
|
|
172
229
|
throw new ChatgptOAuthError(`Device authorization failed: ${err}`, err);
|
|
173
230
|
}
|
|
231
|
+
else if (poll.status >= 400) {
|
|
232
|
+
throw new ChatgptOAuthError(formatHttpError('ChatGPT device poll', poll.status, poll.body), `poll_http_${poll.status}`);
|
|
233
|
+
}
|
|
174
234
|
await sleep(interval * 1000);
|
|
175
235
|
}
|
|
176
236
|
if (!authorizationCode) {
|
|
177
237
|
throw new ChatgptOAuthError('Timed out waiting for ChatGPT device authorization', 'timeout');
|
|
178
238
|
}
|
|
239
|
+
if (!codeVerifier) {
|
|
240
|
+
throw new ChatgptOAuthError('Device token response missing code_verifier (server-issued PKCE)', 'no_code_verifier');
|
|
241
|
+
}
|
|
179
242
|
const token = await postForm(CHATGPT_TOKEN_URL, {
|
|
180
243
|
grant_type: 'authorization_code',
|
|
181
244
|
code: authorizationCode,
|
|
182
245
|
redirect_uri: CHATGPT_DEVICE_REDIRECT_URI,
|
|
183
246
|
client_id: clientId,
|
|
184
|
-
code_verifier:
|
|
247
|
+
code_verifier: codeVerifier,
|
|
185
248
|
}, fetchImpl);
|
|
186
249
|
if (token.status >= 400) {
|
|
187
|
-
throw new ChatgptOAuthError(
|
|
250
|
+
throw new ChatgptOAuthError(formatHttpError('ChatGPT token exchange', token.status, token.body), `token_http_${token.status}`);
|
|
188
251
|
}
|
|
189
252
|
return parseTokenPayload(token.body);
|
|
190
253
|
}
|
|
@@ -231,10 +294,46 @@ export async function runChatgptBrowserFlow(options) {
|
|
|
231
294
|
code_verifier: verifier,
|
|
232
295
|
}, fetchImpl);
|
|
233
296
|
if (token.status >= 400) {
|
|
234
|
-
throw new ChatgptOAuthError(
|
|
297
|
+
throw new ChatgptOAuthError(formatHttpError('ChatGPT token exchange', token.status, token.body), `token_http_${token.status}`);
|
|
235
298
|
}
|
|
236
299
|
return parseTokenPayload(token.body);
|
|
237
300
|
}
|
|
301
|
+
export async function runChatgptDeviceFlow(options = {}) {
|
|
302
|
+
const session = await startChatgptDeviceAuth({
|
|
303
|
+
clientId: options.clientId,
|
|
304
|
+
fetchImpl: options.fetchImpl,
|
|
305
|
+
});
|
|
306
|
+
const info = {
|
|
307
|
+
userCode: session.userCode,
|
|
308
|
+
verificationUri: session.verificationUri,
|
|
309
|
+
...(session.verificationUriComplete
|
|
310
|
+
? { verificationUriComplete: session.verificationUriComplete }
|
|
311
|
+
: {}),
|
|
312
|
+
};
|
|
313
|
+
if (options.onUserCode) {
|
|
314
|
+
await options.onUserCode(info);
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
// Desktop / --login-oauth has no TUI callback: print the Codex device page + code.
|
|
318
|
+
// stderr: Desktop --login-oauth parses stdout as JSON.
|
|
319
|
+
process.stderr.write(`[chatgpt oauth] Open ${info.verificationUri} and enter:\n ${info.userCode}\n`);
|
|
320
|
+
}
|
|
321
|
+
try {
|
|
322
|
+
await (options.openBrowserImpl ?? openBrowser)(info.verificationUriComplete ?? info.verificationUri);
|
|
323
|
+
}
|
|
324
|
+
catch {
|
|
325
|
+
/* user can open the URL manually */
|
|
326
|
+
}
|
|
327
|
+
return pollChatgptDeviceAuth({
|
|
328
|
+
deviceAuthId: session.deviceAuthId,
|
|
329
|
+
userCode: session.userCode,
|
|
330
|
+
clientId: options.clientId,
|
|
331
|
+
interval: session.interval,
|
|
332
|
+
fetchImpl: options.fetchImpl,
|
|
333
|
+
sleepImpl: options.sleepImpl,
|
|
334
|
+
timeoutMs: options.timeoutMs,
|
|
335
|
+
});
|
|
336
|
+
}
|
|
238
337
|
export async function runChatgptOAuthFlow(options = {}) {
|
|
239
338
|
const flow = (process.env.CHATGPT_OAUTH_FLOW ?? 'device').toLowerCase();
|
|
240
339
|
if (flow === 'browser') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatgptOAuth.js","sourceRoot":"","sources":["../../src/cli/chatgptOAuth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,CAAC,MAAM,yBAAyB,GAAG,8BAA8B,CAAC;AACxE,MAAM,CAAC,MAAM,qBAAqB,GAAG,yCAAyC,CAAC;AAC/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,qCAAqC,CAAC;AACvE,MAAM,CAAC,MAAM,uBAAuB,GAAG,0DAA0D,CAAC;AAClG,MAAM,CAAC,MAAM,wBAAwB,GAAG,uDAAuD,CAAC;AAChG,MAAM,CAAC,MAAM,2BAA2B,GAAG,6CAA6C,CAAC;AACzF,MAAM,CAAC,MAAM,aAAa,GAAG,qCAAqC,CAAC;AACnE,MAAM,CAAC,MAAM,mBAAmB,GAAG,6BAA6B,CAAC;AAgBjE,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAGxB;IAFlB,YACE,OAAe,EACC,IAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,SAAI,GAAJ,IAAI,CAAS;QAG7B,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;QAC3C,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAE,MAAkC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACzC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,EAAE,GAAI,IAAgC,CAAC,kBAAkB,CAAC;QAChE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;IACzD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB,CACxB,GAA4B,EAC5B,eAAwB;IAExB,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC;IACrC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,iBAAiB,CAAC,qCAAqC,EAAE,iBAAiB,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,MAAM,OAAO,GACX,CAAC,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,IAAI,GAAG,CAAC,aAAa,CAAC,IAAI,eAAe,CAAC;IAClF,MAAM,MAAM,GAAuB,EAAE,WAAW,EAAE,CAAC;IACnD,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1E,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;IACxD,CAAC;IACD,IAAI,OAAO;QAAE,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC;IAC3C,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,MAAM,SAAS,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,SAAS;YAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IAC9C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,GAAW,EACX,IAA4B,EAC5B,SAAuB;IAEvB,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;YAC9B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,mCAAmC;gBACnD,MAAM,EAAE,kBAAkB;aAC3B;YACD,IAAI,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;SAC3C,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,iBAAiB,CACzB,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAClF,eAAe,CAChB,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,GAA4B,EAAE,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,IAAI,GAAG,MAAiC,CAAC;IACrF,CAAC;IAAC,MAAM,CAAC;QACP,WAAW;IACb,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAIzC;IACC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;QACjC,MAAM,IAAI,iBAAiB,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,yBAAyB,CAAC;IACvF,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAC7C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CACrC,iBAAiB,EACjB;QACE,UAAU,EAAE,eAAe;QAC3B,aAAa,EAAE,OAAO,CAAC,YAAY;QACnC,SAAS,EAAE,QAAQ;KACpB,EACD,SAAS,CACV,CAAC;IACF,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC;QACnF,MAAM,IAAI,iBAAiB,CACzB,8BAA8B,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EACjF,IAAI,CACL,CAAC;IACJ,CAAC;IACD,OAAO,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAO1C;IACC,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,yBAAyB,CAAC;IACvF,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3F,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAEnD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAC1B,uBAAuB,EACvB;QACE,SAAS,EAAE,QAAQ;QACnB,KAAK,EAAE,aAAa;QACpB,cAAc,EAAE,SAAS;QACzB,qBAAqB,EAAE,MAAM;KAC9B,EACD,SAAS,CACV,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QACxB,MAAM,IAAI,iBAAiB,CACzB,4BAA4B,KAAK,CAAC,MAAM,EAAE,EAC1C,eAAe,KAAK,CAAC,MAAM,EAAE,CAC9B,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;IAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;IACtC,MAAM,eAAe,GACnB,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAChF,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,yBAAyB,KAAK,QAAQ;YACvD,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC1C,IACE,OAAO,UAAU,KAAK,QAAQ;QAC9B,OAAO,QAAQ,KAAK,QAAQ;QAC5B,OAAO,eAAe,KAAK,QAAQ,EACnC,CAAC;QACD,MAAM,IAAI,iBAAiB,CAAC,qCAAqC,EAAE,gBAAgB,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,IAAI,GAAsB;QAC9B,QAAQ;QACR,eAAe;QACf,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,yBAAyB,KAAK,QAAQ;YAC1D,CAAC,CAAC,EAAE,uBAAuB,EAAE,KAAK,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACnE,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACF,IAAI,OAAO,CAAC,UAAU;QAAE,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,eAAe,IAAI,WAAW,CAAC,CAC5C,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,eAAe,CACrD,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,oCAAoC;IACtC,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,iBAAqC,CAAC;IAC1C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,QAAQ,CACzB,wBAAwB,EACxB,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,EAChD,SAAS,CACV,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAC9C,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,iBAAiB,GAAG,QAAQ,CAAC;YAC7B,MAAM;QACR,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,IAAI,GAAG,KAAK,WAAW;YAAE,QAAQ,IAAI,CAAC,CAAC;aAClC,IAAI,GAAG,IAAI,GAAG,KAAK,uBAAuB,EAAE,CAAC;YAChD,MAAM,IAAI,iBAAiB,CAAC,gCAAgC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,IAAI,iBAAiB,CAAC,oDAAoD,EAAE,SAAS,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,QAAQ,CAC1B,iBAAiB,EACjB;QACE,UAAU,EAAE,oBAAoB;QAChC,IAAI,EAAE,iBAAiB;QACvB,YAAY,EAAE,2BAA2B;QACzC,SAAS,EAAE,QAAQ;QACnB,aAAa,EAAE,QAAQ;KACxB,EACD,SAAS,CACV,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QACxB,MAAM,IAAI,iBAAiB,CACzB,+BAA+B,KAAK,CAAC,MAAM,EAAE,EAC7C,cAAc,KAAK,CAAC,MAAM,EAAE,CAC7B,CAAC;IACJ,CAAC;IACD,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAM3C;IACC,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,yBAAyB,CAAC;IACvF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;IAClC,MAAM,WAAW,GAAG,oBAAoB,IAAI,gBAAgB,CAAC;IAC7D,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IACnC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,SAAS,EAAE,QAAQ;QACnB,aAAa,EAAE,MAAM;QACrB,YAAY,EAAE,WAAW;QACzB,KAAK,EAAE,aAAa;QACpB,cAAc,EAAE,SAAS;QACzB,qBAAqB,EAAE,MAAM;QAC7B,KAAK;KACN,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,GAAG,qBAAqB,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;IACrE,IAAI,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,eAAe,IAAI,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,uBAAuB;IACzB,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,uBAAuB,CAAC;QACvC,IAAI;QACJ,IAAI,EAAE,gBAAgB;QACtB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,OAAO;KACxC,CAAC,CAAC;IACH,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,iBAAiB,CACzB,wBAAwB,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,gBAAgB,IAAI,EAAE,EAAE,EAC/D,EAAE,CAAC,KAAK,CACT,CAAC;IACJ,CAAC;IACD,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK;QAAE,MAAM,IAAI,iBAAiB,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,CAAC;IAC9F,IAAI,CAAC,EAAE,CAAC,IAAI;QAAE,MAAM,IAAI,iBAAiB,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;IAE9E,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAC7C,MAAM,KAAK,GAAG,MAAM,QAAQ,CAC1B,iBAAiB,EACjB;QACE,UAAU,EAAE,oBAAoB;QAChC,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,YAAY,EAAE,WAAW;QACzB,SAAS,EAAE,QAAQ;QACnB,aAAa,EAAE,QAAQ;KACxB,EACD,SAAS,CACV,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QACxB,MAAM,IAAI,iBAAiB,CACzB,+BAA+B,KAAK,CAAC,MAAM,EAAE,EAC7C,cAAc,KAAK,CAAC,MAAM,EAAE,CAC7B,CAAC;IACJ,CAAC;IACD,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,UAMtC,EAAE;IACJ,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACxE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC"}
|
|
1
|
+
{"version":3,"file":"chatgptOAuth.js","sourceRoot":"","sources":["../../src/cli/chatgptOAuth.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/main.bundled.js
CHANGED
|
@@ -794,16 +794,19 @@ __export(chatgptOAuth_exports, {
|
|
|
794
794
|
CHATGPT_DEVICE_CODE_URL: () => CHATGPT_DEVICE_CODE_URL,
|
|
795
795
|
CHATGPT_DEVICE_REDIRECT_URI: () => CHATGPT_DEVICE_REDIRECT_URI,
|
|
796
796
|
CHATGPT_DEVICE_TOKEN_URL: () => CHATGPT_DEVICE_TOKEN_URL,
|
|
797
|
+
CHATGPT_DEVICE_VERIFY_URL: () => CHATGPT_DEVICE_VERIFY_URL,
|
|
797
798
|
CHATGPT_SCOPE: () => CHATGPT_SCOPE,
|
|
798
799
|
CHATGPT_TOKEN_URL: () => CHATGPT_TOKEN_URL,
|
|
799
800
|
ChatgptOAuthError: () => ChatgptOAuthError,
|
|
800
801
|
DEFAULT_CHATGPT_CLIENT_ID: () => DEFAULT_CHATGPT_CLIENT_ID,
|
|
801
802
|
decodeJwtClaims: () => decodeJwtClaims,
|
|
802
803
|
extractChatgptAccountId: () => extractChatgptAccountId,
|
|
804
|
+
pollChatgptDeviceAuth: () => pollChatgptDeviceAuth,
|
|
803
805
|
refreshChatgptToken: () => refreshChatgptToken,
|
|
804
806
|
runChatgptBrowserFlow: () => runChatgptBrowserFlow,
|
|
805
807
|
runChatgptDeviceFlow: () => runChatgptDeviceFlow,
|
|
806
|
-
runChatgptOAuthFlow: () => runChatgptOAuthFlow
|
|
808
|
+
runChatgptOAuthFlow: () => runChatgptOAuthFlow,
|
|
809
|
+
startChatgptDeviceAuth: () => startChatgptDeviceAuth
|
|
807
810
|
});
|
|
808
811
|
function decodeJwtClaims(token) {
|
|
809
812
|
const parts = token.split(".");
|
|
@@ -845,6 +848,29 @@ function parseTokenPayload(obj, fallbackRefresh) {
|
|
|
845
848
|
}
|
|
846
849
|
return result;
|
|
847
850
|
}
|
|
851
|
+
function errorSnippet(body) {
|
|
852
|
+
const err = body.error;
|
|
853
|
+
if (typeof err === "string" && err.trim()) return err.trim().slice(0, 160);
|
|
854
|
+
if (err && typeof err === "object") {
|
|
855
|
+
const msg2 = err.message;
|
|
856
|
+
if (typeof msg2 === "string" && msg2.trim()) return msg2.trim().slice(0, 160);
|
|
857
|
+
}
|
|
858
|
+
const msg = body.message;
|
|
859
|
+
if (typeof msg === "string" && msg.trim()) return msg.trim().slice(0, 160);
|
|
860
|
+
return "";
|
|
861
|
+
}
|
|
862
|
+
function formatHttpError(prefix, status, body) {
|
|
863
|
+
const detail = errorSnippet(body);
|
|
864
|
+
return detail ? `${prefix} HTTP ${status}: ${detail}` : `${prefix} HTTP ${status}`;
|
|
865
|
+
}
|
|
866
|
+
async function readJsonBody(response) {
|
|
867
|
+
try {
|
|
868
|
+
const parsed = await response.json();
|
|
869
|
+
if (parsed && typeof parsed === "object") return parsed;
|
|
870
|
+
} catch {
|
|
871
|
+
}
|
|
872
|
+
return {};
|
|
873
|
+
}
|
|
848
874
|
async function postForm(url2, data, fetchImpl) {
|
|
849
875
|
let response;
|
|
850
876
|
try {
|
|
@@ -862,13 +888,34 @@ async function postForm(url2, data, fetchImpl) {
|
|
|
862
888
|
"network_error"
|
|
863
889
|
);
|
|
864
890
|
}
|
|
865
|
-
|
|
891
|
+
return { status: response.status, body: await readJsonBody(response) };
|
|
892
|
+
}
|
|
893
|
+
async function postJson(url2, data, fetchImpl) {
|
|
894
|
+
let response;
|
|
866
895
|
try {
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
896
|
+
response = await fetchImpl(url2, {
|
|
897
|
+
method: "POST",
|
|
898
|
+
headers: {
|
|
899
|
+
"Content-Type": "application/json",
|
|
900
|
+
Accept: "application/json"
|
|
901
|
+
},
|
|
902
|
+
body: JSON.stringify(data)
|
|
903
|
+
});
|
|
904
|
+
} catch (err) {
|
|
905
|
+
throw new ChatgptOAuthError(
|
|
906
|
+
`ChatGPT OAuth network error: ${err instanceof Error ? err.message : String(err)}`,
|
|
907
|
+
"network_error"
|
|
908
|
+
);
|
|
870
909
|
}
|
|
871
|
-
return { status: response.status, body };
|
|
910
|
+
return { status: response.status, body: await readJsonBody(response) };
|
|
911
|
+
}
|
|
912
|
+
function parsePollInterval(raw, fallback = 5) {
|
|
913
|
+
if (typeof raw === "number" && Number.isFinite(raw) && raw > 0) return raw;
|
|
914
|
+
if (typeof raw === "string") {
|
|
915
|
+
const n = Number.parseInt(raw, 10);
|
|
916
|
+
if (Number.isFinite(n) && n > 0) return n;
|
|
917
|
+
}
|
|
918
|
+
return fallback;
|
|
872
919
|
}
|
|
873
920
|
async function refreshChatgptToken(options) {
|
|
874
921
|
if (!options.refreshToken.trim()) {
|
|
@@ -887,77 +934,82 @@ async function refreshChatgptToken(options) {
|
|
|
887
934
|
);
|
|
888
935
|
if (status >= 400) {
|
|
889
936
|
const code = status === 400 || status === 401 ? "invalid_grant" : `http_${status}`;
|
|
890
|
-
throw new ChatgptOAuthError(
|
|
891
|
-
`ChatGPT token refresh HTTP ${status}: ${String(body.error ?? "").slice(0, 160)}`,
|
|
892
|
-
code
|
|
893
|
-
);
|
|
937
|
+
throw new ChatgptOAuthError(formatHttpError("ChatGPT token refresh", status, body), code);
|
|
894
938
|
}
|
|
895
939
|
return parseTokenPayload(body, options.refreshToken);
|
|
896
940
|
}
|
|
897
|
-
async function
|
|
941
|
+
async function startChatgptDeviceAuth(options = {}) {
|
|
898
942
|
const clientId2 = options.clientId || process.env.CHATGPT_OAUTH_CLIENT_ID || DEFAULT_CHATGPT_CLIENT_ID;
|
|
899
943
|
const fetchImpl = options.fetchImpl ?? fetch;
|
|
900
|
-
const
|
|
901
|
-
const { verifier, challenge } = generatePkcePair();
|
|
902
|
-
const start = await postForm(
|
|
903
|
-
CHATGPT_DEVICE_CODE_URL,
|
|
904
|
-
{
|
|
905
|
-
client_id: clientId2,
|
|
906
|
-
scope: CHATGPT_SCOPE,
|
|
907
|
-
code_challenge: challenge,
|
|
908
|
-
code_challenge_method: "S256"
|
|
909
|
-
},
|
|
910
|
-
fetchImpl
|
|
911
|
-
);
|
|
944
|
+
const start = await postJson(CHATGPT_DEVICE_CODE_URL, { client_id: clientId2 }, fetchImpl);
|
|
912
945
|
if (start.status >= 400) {
|
|
913
946
|
throw new ChatgptOAuthError(
|
|
914
|
-
|
|
947
|
+
formatHttpError("ChatGPT device-code", start.status, start.body),
|
|
915
948
|
`device_http_${start.status}`
|
|
916
949
|
);
|
|
917
950
|
}
|
|
918
|
-
const
|
|
919
|
-
const userCode = start.body.user_code;
|
|
920
|
-
const verificationUri = typeof start.body.verification_uri === "string" && start.body.verification_uri || typeof start.body.
|
|
921
|
-
if (
|
|
951
|
+
const deviceAuthId = typeof start.body.device_auth_id === "string" && start.body.device_auth_id || typeof start.body.device_code === "string" && start.body.device_code || "";
|
|
952
|
+
const userCode = typeof start.body.user_code === "string" && start.body.user_code || typeof start.body.usercode === "string" && start.body.usercode || "";
|
|
953
|
+
const verificationUri = typeof start.body.verification_uri === "string" && start.body.verification_uri || typeof start.body.verification_url === "string" && start.body.verification_url || `${CHATGPT_DEVICE_VERIFY_URL}?user_code=${encodeURIComponent(userCode)}`;
|
|
954
|
+
if (!deviceAuthId || !userCode) {
|
|
922
955
|
throw new ChatgptOAuthError("Device-code response missing fields", "no_device_code");
|
|
923
956
|
}
|
|
924
|
-
|
|
957
|
+
return {
|
|
958
|
+
deviceAuthId,
|
|
925
959
|
userCode,
|
|
926
960
|
verificationUri,
|
|
961
|
+
interval: parsePollInterval(start.body.interval, 5),
|
|
927
962
|
...typeof start.body.verification_uri_complete === "string" ? { verificationUriComplete: start.body.verification_uri_complete } : {}
|
|
928
963
|
};
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
} catch {
|
|
935
|
-
}
|
|
964
|
+
}
|
|
965
|
+
async function pollChatgptDeviceAuth(options) {
|
|
966
|
+
const clientId2 = options.clientId || process.env.CHATGPT_OAUTH_CLIENT_ID || DEFAULT_CHATGPT_CLIENT_ID;
|
|
967
|
+
const fetchImpl = options.fetchImpl ?? fetch;
|
|
968
|
+
const sleep = options.sleepImpl ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
936
969
|
const timeoutMs = options.timeoutMs ?? 3e5;
|
|
937
970
|
const deadline = Date.now() + timeoutMs;
|
|
938
|
-
let interval = 5;
|
|
971
|
+
let interval = options.interval ?? 5;
|
|
939
972
|
let authorizationCode;
|
|
973
|
+
let codeVerifier;
|
|
940
974
|
while (Date.now() < deadline) {
|
|
941
|
-
const poll = await
|
|
975
|
+
const poll = await postJson(
|
|
942
976
|
CHATGPT_DEVICE_TOKEN_URL,
|
|
943
|
-
{
|
|
977
|
+
{ device_auth_id: options.deviceAuthId, user_code: options.userCode },
|
|
944
978
|
fetchImpl
|
|
945
979
|
);
|
|
946
980
|
const authCode = poll.body.authorization_code;
|
|
947
981
|
if (typeof authCode === "string" && authCode.length > 0) {
|
|
948
982
|
authorizationCode = authCode;
|
|
983
|
+
if (typeof poll.body.code_verifier === "string" && poll.body.code_verifier) {
|
|
984
|
+
codeVerifier = poll.body.code_verifier;
|
|
985
|
+
}
|
|
949
986
|
break;
|
|
950
987
|
}
|
|
988
|
+
if (poll.status === 403 || poll.status === 404) {
|
|
989
|
+
await sleep(interval * 1e3);
|
|
990
|
+
continue;
|
|
991
|
+
}
|
|
951
992
|
const err = typeof poll.body.error === "string" ? poll.body.error : "";
|
|
952
993
|
if (err === "slow_down") interval += 5;
|
|
953
994
|
else if (err && err !== "authorization_pending") {
|
|
954
995
|
throw new ChatgptOAuthError(`Device authorization failed: ${err}`, err);
|
|
996
|
+
} else if (poll.status >= 400) {
|
|
997
|
+
throw new ChatgptOAuthError(
|
|
998
|
+
formatHttpError("ChatGPT device poll", poll.status, poll.body),
|
|
999
|
+
`poll_http_${poll.status}`
|
|
1000
|
+
);
|
|
955
1001
|
}
|
|
956
1002
|
await sleep(interval * 1e3);
|
|
957
1003
|
}
|
|
958
1004
|
if (!authorizationCode) {
|
|
959
1005
|
throw new ChatgptOAuthError("Timed out waiting for ChatGPT device authorization", "timeout");
|
|
960
1006
|
}
|
|
1007
|
+
if (!codeVerifier) {
|
|
1008
|
+
throw new ChatgptOAuthError(
|
|
1009
|
+
"Device token response missing code_verifier (server-issued PKCE)",
|
|
1010
|
+
"no_code_verifier"
|
|
1011
|
+
);
|
|
1012
|
+
}
|
|
961
1013
|
const token = await postForm(
|
|
962
1014
|
CHATGPT_TOKEN_URL,
|
|
963
1015
|
{
|
|
@@ -965,13 +1017,13 @@ async function runChatgptDeviceFlow(options) {
|
|
|
965
1017
|
code: authorizationCode,
|
|
966
1018
|
redirect_uri: CHATGPT_DEVICE_REDIRECT_URI,
|
|
967
1019
|
client_id: clientId2,
|
|
968
|
-
code_verifier:
|
|
1020
|
+
code_verifier: codeVerifier
|
|
969
1021
|
},
|
|
970
1022
|
fetchImpl
|
|
971
1023
|
);
|
|
972
1024
|
if (token.status >= 400) {
|
|
973
1025
|
throw new ChatgptOAuthError(
|
|
974
|
-
|
|
1026
|
+
formatHttpError("ChatGPT token exchange", token.status, token.body),
|
|
975
1027
|
`token_http_${token.status}`
|
|
976
1028
|
);
|
|
977
1029
|
}
|
|
@@ -1024,12 +1076,47 @@ async function runChatgptBrowserFlow(options) {
|
|
|
1024
1076
|
);
|
|
1025
1077
|
if (token.status >= 400) {
|
|
1026
1078
|
throw new ChatgptOAuthError(
|
|
1027
|
-
|
|
1079
|
+
formatHttpError("ChatGPT token exchange", token.status, token.body),
|
|
1028
1080
|
`token_http_${token.status}`
|
|
1029
1081
|
);
|
|
1030
1082
|
}
|
|
1031
1083
|
return parseTokenPayload(token.body);
|
|
1032
1084
|
}
|
|
1085
|
+
async function runChatgptDeviceFlow(options = {}) {
|
|
1086
|
+
const session = await startChatgptDeviceAuth({
|
|
1087
|
+
clientId: options.clientId,
|
|
1088
|
+
fetchImpl: options.fetchImpl
|
|
1089
|
+
});
|
|
1090
|
+
const info = {
|
|
1091
|
+
userCode: session.userCode,
|
|
1092
|
+
verificationUri: session.verificationUri,
|
|
1093
|
+
...session.verificationUriComplete ? { verificationUriComplete: session.verificationUriComplete } : {}
|
|
1094
|
+
};
|
|
1095
|
+
if (options.onUserCode) {
|
|
1096
|
+
await options.onUserCode(info);
|
|
1097
|
+
} else {
|
|
1098
|
+
process.stderr.write(
|
|
1099
|
+
`[chatgpt oauth] Open ${info.verificationUri} and enter:
|
|
1100
|
+
${info.userCode}
|
|
1101
|
+
`
|
|
1102
|
+
);
|
|
1103
|
+
}
|
|
1104
|
+
try {
|
|
1105
|
+
await (options.openBrowserImpl ?? openBrowser)(
|
|
1106
|
+
info.verificationUriComplete ?? info.verificationUri
|
|
1107
|
+
);
|
|
1108
|
+
} catch {
|
|
1109
|
+
}
|
|
1110
|
+
return pollChatgptDeviceAuth({
|
|
1111
|
+
deviceAuthId: session.deviceAuthId,
|
|
1112
|
+
userCode: session.userCode,
|
|
1113
|
+
clientId: options.clientId,
|
|
1114
|
+
interval: session.interval,
|
|
1115
|
+
fetchImpl: options.fetchImpl,
|
|
1116
|
+
sleepImpl: options.sleepImpl,
|
|
1117
|
+
timeoutMs: options.timeoutMs
|
|
1118
|
+
});
|
|
1119
|
+
}
|
|
1033
1120
|
async function runChatgptOAuthFlow(options = {}) {
|
|
1034
1121
|
const flow = (process.env.CHATGPT_OAUTH_FLOW ?? "device").toLowerCase();
|
|
1035
1122
|
if (flow === "browser") {
|
|
@@ -1037,7 +1124,7 @@ async function runChatgptOAuthFlow(options = {}) {
|
|
|
1037
1124
|
}
|
|
1038
1125
|
return runChatgptDeviceFlow(options);
|
|
1039
1126
|
}
|
|
1040
|
-
var DEFAULT_CHATGPT_CLIENT_ID, CHATGPT_AUTHORIZE_URL, CHATGPT_TOKEN_URL, CHATGPT_DEVICE_CODE_URL, CHATGPT_DEVICE_TOKEN_URL, CHATGPT_DEVICE_REDIRECT_URI, CHATGPT_SCOPE, CHATGPT_AUTH_CLAIMS, ChatgptOAuthError;
|
|
1127
|
+
var DEFAULT_CHATGPT_CLIENT_ID, CHATGPT_AUTHORIZE_URL, CHATGPT_TOKEN_URL, CHATGPT_DEVICE_CODE_URL, CHATGPT_DEVICE_TOKEN_URL, CHATGPT_DEVICE_REDIRECT_URI, CHATGPT_DEVICE_VERIFY_URL, CHATGPT_SCOPE, CHATGPT_AUTH_CLAIMS, ChatgptOAuthError;
|
|
1041
1128
|
var init_chatgptOAuth = __esm({
|
|
1042
1129
|
"src/cli/chatgptOAuth.ts"() {
|
|
1043
1130
|
"use strict";
|
|
@@ -1049,6 +1136,7 @@ var init_chatgptOAuth = __esm({
|
|
|
1049
1136
|
CHATGPT_DEVICE_CODE_URL = "https://auth.openai.com/api/accounts/deviceauth/usercode";
|
|
1050
1137
|
CHATGPT_DEVICE_TOKEN_URL = "https://auth.openai.com/api/accounts/deviceauth/token";
|
|
1051
1138
|
CHATGPT_DEVICE_REDIRECT_URI = "https://auth.openai.com/deviceauth/callback";
|
|
1139
|
+
CHATGPT_DEVICE_VERIFY_URL = "https://auth.openai.com/codex/device";
|
|
1052
1140
|
CHATGPT_SCOPE = "openid profile email offline_access";
|
|
1053
1141
|
CHATGPT_AUTH_CLAIMS = "https://api.openai.com/auth";
|
|
1054
1142
|
ChatgptOAuthError = class extends Error {
|
|
@@ -1152,7 +1240,7 @@ async function startAnthropicOAuth(options = {}) {
|
|
|
1152
1240
|
}
|
|
1153
1241
|
return { authorizeUrl, state: state3 };
|
|
1154
1242
|
}
|
|
1155
|
-
async function
|
|
1243
|
+
async function postJson2(url2, payload, fetchImpl) {
|
|
1156
1244
|
let response;
|
|
1157
1245
|
try {
|
|
1158
1246
|
response = await fetchImpl(url2, {
|
|
@@ -1212,7 +1300,7 @@ async function completeAnthropicOAuth(options) {
|
|
|
1212
1300
|
redirect_uri: ANTHROPIC_REDIRECT_URI,
|
|
1213
1301
|
state: parsed.state ?? pending.state
|
|
1214
1302
|
};
|
|
1215
|
-
const { status, body } = await
|
|
1303
|
+
const { status, body } = await postJson2(ANTHROPIC_TOKEN_URL, payload, fetchImpl);
|
|
1216
1304
|
if (status >= 400) {
|
|
1217
1305
|
const code = status === 400 || status === 401 ? "invalid_grant" : `http_${status}`;
|
|
1218
1306
|
throw new AnthropicOAuthError(
|
|
@@ -1227,7 +1315,7 @@ async function refreshAnthropicToken(options) {
|
|
|
1227
1315
|
throw new AnthropicOAuthError("Missing refreshToken", "no_refresh_token");
|
|
1228
1316
|
}
|
|
1229
1317
|
const fetchImpl = options.fetchImpl ?? fetch;
|
|
1230
|
-
const { status, body } = await
|
|
1318
|
+
const { status, body } = await postJson2(
|
|
1231
1319
|
ANTHROPIC_TOKEN_URL,
|
|
1232
1320
|
{
|
|
1233
1321
|
grant_type: "refresh_token",
|