codex-multi-auth 2.0.0 → 2.0.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 +13 -10
- package/config/README.md +4 -4
- package/config/codex-legacy.json +45 -120
- package/config/codex-modern.json +36 -52
- package/config/minimal-codex.json +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +85 -14
- package/dist/index.js.map +1 -1
- package/dist/lib/auth/device-auth.d.ts +46 -0
- package/dist/lib/auth/device-auth.d.ts.map +1 -0
- package/dist/lib/auth/device-auth.js +325 -0
- package/dist/lib/auth/device-auth.js.map +1 -0
- package/dist/lib/auth/index.d.ts +2 -0
- package/dist/lib/auth/index.d.ts.map +1 -1
- package/dist/lib/auth/index.js +1 -0
- package/dist/lib/auth/index.js.map +1 -1
- package/dist/lib/auto-update-checker.d.ts +23 -1
- package/dist/lib/auto-update-checker.d.ts.map +1 -1
- package/dist/lib/auto-update-checker.js +481 -8
- package/dist/lib/auto-update-checker.js.map +1 -1
- package/dist/lib/cli.d.ts +5 -0
- package/dist/lib/cli.d.ts.map +1 -1
- package/dist/lib/cli.js.map +1 -1
- package/dist/lib/codex-manager/commands/best.js +1 -1
- package/dist/lib/codex-manager/commands/best.js.map +1 -1
- package/dist/lib/codex-manager/commands/forecast.js +3 -3
- package/dist/lib/codex-manager/commands/forecast.js.map +1 -1
- package/dist/lib/codex-manager/commands/report.js +3 -3
- package/dist/lib/codex-manager/commands/report.js.map +1 -1
- package/dist/lib/codex-manager/commands/rotation.d.ts +4 -0
- package/dist/lib/codex-manager/commands/rotation.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/rotation.js +37 -11
- package/dist/lib/codex-manager/commands/rotation.js.map +1 -1
- package/dist/lib/codex-manager/commands/status.d.ts +6 -0
- package/dist/lib/codex-manager/commands/status.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/status.js +26 -3
- package/dist/lib/codex-manager/commands/status.js.map +1 -1
- package/dist/lib/codex-manager/forecast-report-commands.js +4 -4
- package/dist/lib/codex-manager/forecast-report-commands.js.map +1 -1
- package/dist/lib/codex-manager/help.d.ts +1 -0
- package/dist/lib/codex-manager/help.d.ts.map +1 -1
- package/dist/lib/codex-manager/help.js +20 -3
- package/dist/lib/codex-manager/help.js.map +1 -1
- package/dist/lib/codex-manager/rate-limit-markers.d.ts +2 -0
- package/dist/lib/codex-manager/rate-limit-markers.d.ts.map +1 -0
- package/dist/lib/codex-manager/rate-limit-markers.js +4 -0
- package/dist/lib/codex-manager/rate-limit-markers.js.map +1 -0
- package/dist/lib/codex-manager/repair-commands.js +3 -3
- package/dist/lib/codex-manager/repair-commands.js.map +1 -1
- package/dist/lib/codex-manager.d.ts.map +1 -1
- package/dist/lib/codex-manager.js +78 -91
- package/dist/lib/codex-manager.js.map +1 -1
- package/dist/lib/config.js +2 -2
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/prompts/codex.d.ts +1 -1
- package/dist/lib/prompts/codex.d.ts.map +1 -1
- package/dist/lib/prompts/codex.js +3 -3
- package/dist/lib/prompts/codex.js.map +1 -1
- package/dist/lib/quota-probe.js +1 -1
- package/dist/lib/quota-probe.js.map +1 -1
- package/dist/lib/quota-readiness.d.ts +16 -0
- package/dist/lib/quota-readiness.d.ts.map +1 -0
- package/dist/lib/quota-readiness.js +82 -0
- package/dist/lib/quota-readiness.js.map +1 -0
- package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
- package/dist/lib/request/fetch-helpers.js +19 -8
- package/dist/lib/request/fetch-helpers.js.map +1 -1
- package/dist/lib/request/helpers/model-map.d.ts +2 -1
- package/dist/lib/request/helpers/model-map.d.ts.map +1 -1
- package/dist/lib/request/helpers/model-map.js +52 -60
- package/dist/lib/request/helpers/model-map.js.map +1 -1
- package/dist/lib/request/request-transformer.d.ts +2 -2
- package/dist/lib/request/request-transformer.js +4 -3
- package/dist/lib/request/request-transformer.js.map +1 -1
- package/dist/lib/runtime/login-menu-accounts.d.ts +5 -0
- package/dist/lib/runtime/login-menu-accounts.d.ts.map +1 -1
- package/dist/lib/runtime/login-menu-accounts.js +7 -2
- package/dist/lib/runtime/login-menu-accounts.js.map +1 -1
- package/dist/lib/runtime/quota-probe.js +1 -1
- package/dist/lib/runtime/quota-probe.js.map +1 -1
- package/dist/lib/runtime/runtime-current-account.d.ts +52 -0
- package/dist/lib/runtime/runtime-current-account.d.ts.map +1 -0
- package/dist/lib/runtime/runtime-current-account.js +252 -0
- package/dist/lib/runtime/runtime-current-account.js.map +1 -0
- package/dist/lib/runtime-rotation-proxy.js +1 -1
- package/dist/lib/runtime-rotation-proxy.js.map +1 -1
- package/dist/lib/schemas.d.ts +3 -0
- package/dist/lib/schemas.d.ts.map +1 -1
- package/dist/lib/schemas.js +1 -0
- package/dist/lib/schemas.js.map +1 -1
- package/dist/lib/ui/auth-menu.d.ts +6 -1
- package/dist/lib/ui/auth-menu.d.ts.map +1 -1
- package/dist/lib/ui/auth-menu.js +22 -2
- package/dist/lib/ui/auth-menu.js.map +1 -1
- package/package.json +1 -1
- package/scripts/bench-format/codex-host.mjs +142 -142
- package/scripts/bench-format/models.mjs +20 -22
- package/scripts/benchmark-edit-formats.mjs +9 -9
- package/scripts/codex-app-router.js +121 -121
- package/scripts/codex.js +3636 -3473
- package/scripts/postinstall.js +120 -14
package/scripts/postinstall.js
CHANGED
|
@@ -145,6 +145,25 @@ export function shouldAutoBindCodexAppOnInstall(options) {
|
|
|
145
145
|
);
|
|
146
146
|
}
|
|
147
147
|
|
|
148
|
+
/**
|
|
149
|
+
* @param {{
|
|
150
|
+
* env?: NodeJS.ProcessEnv,
|
|
151
|
+
* rotationEnabled: boolean,
|
|
152
|
+
* }} options
|
|
153
|
+
*/
|
|
154
|
+
export function shouldAutoInstallCodexAppLauncherOnInstall(options) {
|
|
155
|
+
const env = options.env ?? process.env;
|
|
156
|
+
if (isCiEnvironment(env)) return false;
|
|
157
|
+
|
|
158
|
+
const installOverride = readOptionalBoolean(
|
|
159
|
+
env.CODEX_MULTI_AUTH_APP_LAUNCHER_INSTALL,
|
|
160
|
+
);
|
|
161
|
+
if (installOverride !== null) return installOverride;
|
|
162
|
+
|
|
163
|
+
if (!isGlobalNpmInstall(env)) return false;
|
|
164
|
+
return options.rotationEnabled;
|
|
165
|
+
}
|
|
166
|
+
|
|
148
167
|
async function loadConfigModule() {
|
|
149
168
|
try {
|
|
150
169
|
return await import("../dist/lib/config.js");
|
|
@@ -177,9 +196,13 @@ async function loadAppBindModule() {
|
|
|
177
196
|
}
|
|
178
197
|
}
|
|
179
198
|
|
|
180
|
-
|
|
199
|
+
/**
|
|
200
|
+
* @param {unknown} configModule
|
|
201
|
+
* @param {NodeJS.ProcessEnv} [env]
|
|
202
|
+
*/
|
|
203
|
+
export function resolveRotationEnabled(configModule, env = process.env) {
|
|
181
204
|
const envOverride = readOptionalBoolean(
|
|
182
|
-
|
|
205
|
+
env.CODEX_MULTI_AUTH_RUNTIME_ROTATION_PROXY,
|
|
183
206
|
);
|
|
184
207
|
if (envOverride !== null) return envOverride;
|
|
185
208
|
if (
|
|
@@ -187,7 +210,7 @@ function resolveRotationEnabled(configModule) {
|
|
|
187
210
|
typeof configModule.loadPluginConfig !== "function" ||
|
|
188
211
|
typeof configModule.getCodexRuntimeRotationProxy !== "function"
|
|
189
212
|
) {
|
|
190
|
-
return
|
|
213
|
+
return true;
|
|
191
214
|
}
|
|
192
215
|
return (
|
|
193
216
|
configModule.getCodexRuntimeRotationProxy(configModule.loadPluginConfig()) ===
|
|
@@ -195,30 +218,109 @@ function resolveRotationEnabled(configModule) {
|
|
|
195
218
|
);
|
|
196
219
|
}
|
|
197
220
|
|
|
198
|
-
|
|
221
|
+
function defaultPostinstallLog(message) {
|
|
222
|
+
console.error(`codex-multi-auth: ${message}`);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* @param {boolean} rotationEnabled
|
|
227
|
+
*/
|
|
228
|
+
async function maybeBindCodexAppOnInstall(rotationEnabled) {
|
|
199
229
|
const appBindModule = await loadAppBindModule();
|
|
200
230
|
if (!appBindModule || typeof appBindModule.bindCodexAppRuntimeRotation !== "function") {
|
|
201
|
-
return
|
|
231
|
+
return;
|
|
202
232
|
}
|
|
203
233
|
|
|
204
|
-
const configModule = await loadConfigModule();
|
|
205
|
-
const rotationEnabled = resolveRotationEnabled(configModule);
|
|
206
234
|
const currentStatus =
|
|
207
235
|
typeof appBindModule.getAppBindStatus === "function"
|
|
208
236
|
? await appBindModule.getAppBindStatus().catch(() => null)
|
|
209
237
|
: null;
|
|
210
238
|
const appDetected = hasCodexDesktopApp() || currentStatus?.bound === true;
|
|
211
239
|
if (!shouldAutoBindCodexAppOnInstall({ rotationEnabled, appDetected })) {
|
|
212
|
-
return
|
|
240
|
+
return;
|
|
213
241
|
}
|
|
214
242
|
|
|
215
243
|
const result = await appBindModule.bindCodexAppRuntimeRotation();
|
|
216
244
|
if (result?.message) {
|
|
217
245
|
console.error(`codex-multi-auth: ${result.message}`);
|
|
218
246
|
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* @param {boolean} rotationEnabled
|
|
251
|
+
* @param {(message: string) => void} [log]
|
|
252
|
+
*/
|
|
253
|
+
export async function maybeInstallCodexAppLauncherOnInstall(
|
|
254
|
+
rotationEnabled,
|
|
255
|
+
log = defaultPostinstallLog,
|
|
256
|
+
) {
|
|
257
|
+
if (!shouldAutoInstallCodexAppLauncherOnInstall({ rotationEnabled })) {
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
try {
|
|
262
|
+
const launcherModule = await import("./codex-app-launcher.js");
|
|
263
|
+
if (typeof launcherModule.installCodexAppLauncher !== "function") {
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
await launcherModule.installCodexAppLauncher({
|
|
267
|
+
log,
|
|
268
|
+
});
|
|
269
|
+
} catch (error) {
|
|
270
|
+
log(
|
|
271
|
+
`app launcher postinstall skipped: ${error instanceof Error ? error.message : String(error)}`,
|
|
272
|
+
);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* @param {{
|
|
278
|
+
* loadConfigModule?: () => Promise<unknown>,
|
|
279
|
+
* bindCodexApp?: (rotationEnabled: boolean) => Promise<void>,
|
|
280
|
+
* installLauncher?: (rotationEnabled: boolean) => Promise<void>,
|
|
281
|
+
* log?: (message: string) => void,
|
|
282
|
+
* env?: NodeJS.ProcessEnv,
|
|
283
|
+
* }} [deps]
|
|
284
|
+
*/
|
|
285
|
+
export async function runPostinstallSelfHeal(deps = {}) {
|
|
286
|
+
const loadConfig = deps.loadConfigModule ?? loadConfigModule;
|
|
287
|
+
const bindCodexApp = deps.bindCodexApp ?? maybeBindCodexAppOnInstall;
|
|
288
|
+
const log = deps.log ?? defaultPostinstallLog;
|
|
289
|
+
const installLauncher =
|
|
290
|
+
deps.installLauncher ??
|
|
291
|
+
((rotationEnabled) =>
|
|
292
|
+
maybeInstallCodexAppLauncherOnInstall(rotationEnabled, log));
|
|
293
|
+
const configModule = await loadConfig();
|
|
294
|
+
const rotationEnabled = resolveRotationEnabled(configModule, deps.env);
|
|
295
|
+
|
|
296
|
+
try {
|
|
297
|
+
await bindCodexApp(rotationEnabled);
|
|
298
|
+
} catch (error) {
|
|
299
|
+
log(
|
|
300
|
+
`app bind postinstall skipped: ${error instanceof Error ? error.message : String(error)}`,
|
|
301
|
+
);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
try {
|
|
305
|
+
await installLauncher(rotationEnabled);
|
|
306
|
+
} catch (error) {
|
|
307
|
+
log(
|
|
308
|
+
`app launcher postinstall skipped: ${error instanceof Error ? error.message : String(error)}`,
|
|
309
|
+
);
|
|
310
|
+
}
|
|
219
311
|
return 0;
|
|
220
312
|
}
|
|
221
313
|
|
|
314
|
+
async function main() {
|
|
315
|
+
return runPostinstallSelfHeal();
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
function normalizePostinstallExitCode(exitCode) {
|
|
319
|
+
return Number.isInteger(exitCode) && exitCode >= 0 && exitCode <= 255
|
|
320
|
+
? exitCode
|
|
321
|
+
: 0;
|
|
322
|
+
}
|
|
323
|
+
|
|
222
324
|
const isDirectRun = (() => {
|
|
223
325
|
try {
|
|
224
326
|
return resolve(process.argv[1] ?? "") === fileURLToPath(import.meta.url);
|
|
@@ -228,10 +330,14 @@ const isDirectRun = (() => {
|
|
|
228
330
|
})();
|
|
229
331
|
|
|
230
332
|
if (isDirectRun) {
|
|
231
|
-
main()
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
)
|
|
235
|
-
|
|
236
|
-
|
|
333
|
+
main()
|
|
334
|
+
.then((exitCode) => {
|
|
335
|
+
process.exitCode = normalizePostinstallExitCode(exitCode);
|
|
336
|
+
})
|
|
337
|
+
.catch((error) => {
|
|
338
|
+
defaultPostinstallLog(
|
|
339
|
+
`postinstall self-heal skipped: ${error instanceof Error ? error.message : String(error)}`,
|
|
340
|
+
);
|
|
341
|
+
process.exitCode = 0;
|
|
342
|
+
});
|
|
237
343
|
}
|