codex-multi-auth 2.3.0-beta.2 → 2.3.0-beta.3
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/.codex-plugin/plugin.json +2 -1
- package/README.md +1 -1
- package/dist/lib/account-policy.d.ts.map +1 -1
- package/dist/lib/account-policy.js +2 -1
- package/dist/lib/audit.d.ts +0 -9
- package/dist/lib/audit.d.ts.map +1 -1
- package/dist/lib/auth/device-auth.d.ts +1 -6
- package/dist/lib/auth/device-auth.d.ts.map +1 -1
- package/dist/lib/auth/device-auth.js +5 -5
- package/dist/lib/budget-guard.d.ts.map +1 -1
- package/dist/lib/budget-guard.js +2 -1
- package/dist/lib/codex-cli/writer.d.ts.map +1 -1
- package/dist/lib/codex-cli/writer.js +2 -1
- package/dist/lib/codex-manager/backend-settings-helpers.d.ts +0 -1
- package/dist/lib/codex-manager/backend-settings-helpers.d.ts.map +1 -1
- package/dist/lib/codex-manager/backend-settings-helpers.js +1 -1
- package/dist/lib/codex-manager/behavior-settings-panel.d.ts +0 -19
- package/dist/lib/codex-manager/behavior-settings-panel.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/report.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/report.js +2 -1
- package/dist/lib/codex-manager/commands/uninstall.d.ts +2 -2
- package/dist/lib/codex-manager/commands/uninstall.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/uninstall.js +1 -1
- package/dist/lib/codex-manager/commands/usage.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/usage.js +2 -1
- package/dist/lib/codex-manager/commands/verify.d.ts +2 -2
- package/dist/lib/codex-manager/commands/verify.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/why-selected.d.ts +1 -22
- package/dist/lib/codex-manager/commands/why-selected.d.ts.map +1 -1
- package/dist/lib/codex-manager/dashboard-display-panel.d.ts +0 -14
- package/dist/lib/codex-manager/dashboard-display-panel.d.ts.map +1 -1
- package/dist/lib/codex-manager/experimental-settings-prompt.d.ts +2 -1
- package/dist/lib/codex-manager/experimental-settings-prompt.d.ts.map +1 -1
- package/dist/lib/codex-manager/forecast-report-shared.d.ts +2 -2
- package/dist/lib/codex-manager/forecast-report-shared.d.ts.map +1 -1
- package/dist/lib/codex-manager/forecast-report-shared.js +2 -2
- package/dist/lib/codex-manager/formatters/quota-formatters.d.ts +0 -2
- package/dist/lib/codex-manager/formatters/quota-formatters.d.ts.map +1 -1
- package/dist/lib/codex-manager/formatters/quota-formatters.js +2 -2
- package/dist/lib/codex-manager/help.d.ts +2 -1
- package/dist/lib/codex-manager/help.d.ts.map +1 -1
- package/dist/lib/codex-manager/repair-commands.d.ts +0 -15
- package/dist/lib/codex-manager/repair-commands.d.ts.map +1 -1
- package/dist/lib/codex-manager/repair-commands.js +5 -5
- package/dist/lib/codex-manager/settings-hub/backend.d.ts +0 -5
- package/dist/lib/codex-manager/settings-hub/backend.d.ts.map +1 -1
- package/dist/lib/codex-manager/settings-hub/backend.js +1 -1
- package/dist/lib/codex-manager/settings-hub/dashboard.d.ts +1 -14
- package/dist/lib/codex-manager/settings-hub/dashboard.d.ts.map +1 -1
- package/dist/lib/codex-manager/settings-hub/dashboard.js +8 -8
- package/dist/lib/codex-manager/settings-write-queue.d.ts +0 -10
- package/dist/lib/codex-manager/settings-write-queue.d.ts.map +1 -1
- package/dist/lib/codex-manager/settings-write-queue.js +10 -10
- package/dist/lib/codex-manager/statusline-settings-panel.d.ts +2 -17
- package/dist/lib/codex-manager/statusline-settings-panel.d.ts.map +1 -1
- package/dist/lib/codex-manager/theme-settings-panel.d.ts +0 -13
- package/dist/lib/codex-manager/theme-settings-panel.d.ts.map +1 -1
- package/dist/lib/config.d.ts +0 -13
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +22 -19
- package/dist/lib/dashboard-settings.d.ts +3 -3
- package/dist/lib/dashboard-settings.d.ts.map +1 -1
- package/dist/lib/dashboard-settings.js +0 -1
- package/dist/lib/errors.d.ts +0 -1
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/forecast.d.ts +4 -3
- package/dist/lib/forecast.d.ts.map +1 -1
- package/dist/lib/fs-retry.d.ts +0 -3
- package/dist/lib/fs-retry.d.ts.map +1 -1
- package/dist/lib/fs-retry.js +3 -3
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +1 -0
- package/dist/lib/local-client-tokens.d.ts.map +1 -1
- package/dist/lib/local-client-tokens.js +2 -1
- package/dist/lib/oc-chatgpt-import-adapter.d.ts +1 -1
- package/dist/lib/oc-chatgpt-import-adapter.d.ts.map +1 -1
- package/dist/lib/oc-chatgpt-orchestrator.d.ts.map +1 -1
- package/dist/lib/oc-chatgpt-orchestrator.js +2 -1
- package/dist/lib/oc-chatgpt-target-detection.d.ts +1 -1
- package/dist/lib/oc-chatgpt-target-detection.d.ts.map +1 -1
- package/dist/lib/prompts/codex-host-bridge.d.ts +0 -8
- package/dist/lib/prompts/codex-host-bridge.d.ts.map +1 -1
- package/dist/lib/prompts/codex-host-bridge.js +0 -20
- package/dist/lib/prompts/codex.d.ts.map +1 -1
- package/dist/lib/prompts/codex.js +2 -1
- package/dist/lib/prompts/fetch-utils.d.ts +0 -2
- package/dist/lib/prompts/fetch-utils.d.ts.map +1 -1
- package/dist/lib/prompts/fetch-utils.js +2 -2
- package/dist/lib/prompts/host-codex-prompt.d.ts.map +1 -1
- package/dist/lib/prompts/host-codex-prompt.js +2 -1
- package/dist/lib/quota-cache.d.ts.map +1 -1
- package/dist/lib/quota-cache.js +2 -1
- package/dist/lib/recovery/storage.d.ts.map +1 -1
- package/dist/lib/recovery/storage.js +5 -3
- package/dist/lib/recovery/types.d.ts +4 -12
- package/dist/lib/recovery/types.d.ts.map +1 -1
- package/dist/lib/recovery.d.ts +2 -2
- package/dist/lib/recovery.d.ts.map +1 -1
- package/dist/lib/request/response-compaction.d.ts +2 -1
- package/dist/lib/request/response-compaction.d.ts.map +1 -1
- package/dist/lib/request/stream-failover-runtime.d.ts.map +1 -1
- package/dist/lib/request/stream-failover-runtime.js +23 -1
- package/dist/lib/rotation.d.ts +1 -3
- package/dist/lib/rotation.d.ts.map +1 -1
- package/dist/lib/rotation.js +1 -2
- package/dist/lib/routing-profiles.d.ts.map +1 -1
- package/dist/lib/routing-profiles.js +2 -1
- package/dist/lib/runtime/config-toml.d.ts +0 -6
- package/dist/lib/runtime/config-toml.d.ts.map +1 -1
- package/dist/lib/runtime/config-toml.js +6 -6
- package/dist/lib/runtime/event-handler.d.ts +0 -31
- package/dist/lib/runtime/event-handler.d.ts.map +1 -1
- package/dist/lib/runtime/event-handler.js +0 -22
- package/dist/lib/runtime/first-run.d.ts +3 -5
- package/dist/lib/runtime/first-run.d.ts.map +1 -1
- package/dist/lib/runtime/first-run.js +2 -2
- package/dist/lib/runtime/quota-headers.d.ts +1 -6
- package/dist/lib/runtime/quota-headers.d.ts.map +1 -1
- package/dist/lib/runtime/quota-headers.js +5 -5
- package/dist/lib/runtime/runtime-current-account.d.ts +3 -3
- package/dist/lib/runtime/runtime-current-account.d.ts.map +1 -1
- package/dist/lib/runtime/runtime-current-account.js +1 -1
- package/dist/lib/runtime/runtime-observability.d.ts +2 -2
- package/dist/lib/runtime/runtime-observability.d.ts.map +1 -1
- package/dist/lib/runtime/runtime-observability.js +0 -4
- package/dist/lib/runtime-rotation-proxy.d.ts.map +1 -1
- package/dist/lib/runtime-rotation-proxy.js +4 -3
- package/dist/lib/schemas.d.ts +3 -91
- package/dist/lib/schemas.d.ts.map +1 -1
- package/dist/lib/schemas.js +8 -8
- package/dist/lib/storage/file-paths.d.ts +2 -2
- package/dist/lib/storage/file-paths.d.ts.map +1 -1
- package/dist/lib/storage/file-paths.js +2 -2
- package/dist/lib/storage/flagged-storage-io.d.ts.map +1 -1
- package/dist/lib/storage/flagged-storage-io.js +2 -2
- package/dist/lib/storage/import-export.d.ts.map +1 -1
- package/dist/lib/storage/import-export.js +2 -2
- package/dist/lib/storage/migrations.d.ts +2 -1
- package/dist/lib/storage/migrations.d.ts.map +1 -1
- package/dist/lib/storage.d.ts.map +1 -1
- package/dist/lib/storage.js +30 -23
- package/dist/lib/temp-path.d.ts +26 -0
- package/dist/lib/temp-path.d.ts.map +1 -0
- package/dist/lib/temp-path.js +30 -0
- package/dist/lib/ui/theme.d.ts +3 -2
- package/dist/lib/ui/theme.d.ts.map +1 -1
- package/dist/lib/unified-settings.d.ts.map +1 -1
- package/dist/lib/unified-settings.js +2 -1
- package/dist/lib/update-notice.d.ts.map +1 -1
- package/dist/lib/update-notice.js +2 -1
- package/package.json +1 -2
|
@@ -4,6 +4,7 @@ import { logWarn } from "./logger.js";
|
|
|
4
4
|
import { getCodexMultiAuthDir } from "./runtime-paths.js";
|
|
5
5
|
import { findProjectRoot, getProjectStorageKey, resolveProjectStorageIdentityRoot, } from "./storage/paths.js";
|
|
6
6
|
import { isRecord, sleep } from "./utils.js";
|
|
7
|
+
import { tempPathFor } from "./temp-path.js";
|
|
7
8
|
const ROUTING_PROFILES_FILE_NAME = "routing-profiles.json";
|
|
8
9
|
const RETRYABLE_FS_CODES = new Set(["EBUSY", "EPERM"]);
|
|
9
10
|
let writeQueue = Promise.resolve();
|
|
@@ -116,7 +117,7 @@ export async function saveRoutingProfileStore(store) {
|
|
|
116
117
|
const payload = normalizeStore(store);
|
|
117
118
|
const task = async () => {
|
|
118
119
|
await fs.mkdir(getCodexMultiAuthDir(), { recursive: true, mode: 0o700 });
|
|
119
|
-
const tempPath =
|
|
120
|
+
const tempPath = tempPathFor(path);
|
|
120
121
|
let moved = false;
|
|
121
122
|
try {
|
|
122
123
|
await fs.writeFile(tempPath, `${JSON.stringify(payload, null, 2)}\n`, {
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
export declare function tomlStringLiteral(value: string): string;
|
|
2
|
-
export declare function readTomlTableName(line: string): string | null;
|
|
3
|
-
export declare function removeRuntimeRotationProviderBlock(rawConfig: string): string;
|
|
4
|
-
export declare function rewriteTopLevelModelProvider(rawConfig: string): string;
|
|
5
|
-
export declare function enableTopLevelResponseStorage(rawConfig: string): string;
|
|
6
2
|
export declare function restoreTopLevelModelProvider(currentConfig: string, originalConfig: string): string;
|
|
7
3
|
export declare function restoreTopLevelResponseStorage(currentConfig: string, originalConfig: string): string;
|
|
8
|
-
export declare function ensureTomlTrailingNewline(value: string): string;
|
|
9
|
-
export declare function createRuntimeRotationProviderBlock(baseUrl: string, clientApiKey?: string): string[];
|
|
10
4
|
export declare function rewriteConfigTomlForRuntimeRotationProvider(rawConfig: string, baseUrl: string, clientApiKey?: string): string;
|
|
11
5
|
export declare function restoreConfigTomlFromRuntimeRotationProvider(currentConfig: string, originalConfig: string): string;
|
|
12
6
|
//# sourceMappingURL=config-toml.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-toml.d.ts","sourceRoot":"","sources":["../../../lib/runtime/config-toml.ts"],"names":[],"mappings":"AAEA,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAqBvD;
|
|
1
|
+
{"version":3,"file":"config-toml.d.ts","sourceRoot":"","sources":["../../../lib/runtime/config-toml.ts"],"names":[],"mappings":"AAEA,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAqBvD;AA4FD,wBAAgB,4BAA4B,CAC3C,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GACpB,MAAM,CAiCR;AAED,wBAAgB,8BAA8B,CAC7C,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GACpB,MAAM,CAkDR;AA2BD,wBAAgB,2CAA2C,CAC1D,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,YAAY,SAAK,GACf,MAAM,CAkBR;AAED,wBAAgB,4CAA4C,CAC3D,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GACpB,MAAM,CAYR"}
|
|
@@ -21,11 +21,11 @@ export function tomlStringLiteral(value) {
|
|
|
21
21
|
}
|
|
22
22
|
})}"`;
|
|
23
23
|
}
|
|
24
|
-
|
|
24
|
+
function readTomlTableName(line) {
|
|
25
25
|
const match = /^\s*\[{1,2}\s*([^\]]+?)\s*\]{1,2}\s*$/.exec(line);
|
|
26
26
|
return match?.[1]?.trim() ?? null;
|
|
27
27
|
}
|
|
28
|
-
|
|
28
|
+
function removeRuntimeRotationProviderBlock(rawConfig) {
|
|
29
29
|
const lines = rawConfig.split(/\r?\n/);
|
|
30
30
|
const output = [];
|
|
31
31
|
let skipping = false;
|
|
@@ -47,7 +47,7 @@ export function removeRuntimeRotationProviderBlock(rawConfig) {
|
|
|
47
47
|
}
|
|
48
48
|
return output.join(rawConfig.includes("\r\n") ? "\r\n" : "\n");
|
|
49
49
|
}
|
|
50
|
-
|
|
50
|
+
function rewriteTopLevelModelProvider(rawConfig) {
|
|
51
51
|
const lineEnding = rawConfig.includes("\r\n") ? "\r\n" : "\n";
|
|
52
52
|
const lines = rawConfig.length > 0 ? rawConfig.split(/\r?\n/) : [];
|
|
53
53
|
const rewrittenLine = `model_provider = ${tomlStringLiteral(RUNTIME_ROTATION_PROXY_PROVIDER_ID)}`;
|
|
@@ -70,7 +70,7 @@ export function rewriteTopLevelModelProvider(rawConfig) {
|
|
|
70
70
|
output.push(rewrittenLine);
|
|
71
71
|
return output.join(lineEnding);
|
|
72
72
|
}
|
|
73
|
-
|
|
73
|
+
function enableTopLevelResponseStorage(rawConfig) {
|
|
74
74
|
const lineEnding = rawConfig.includes("\r\n") ? "\r\n" : "\n";
|
|
75
75
|
const lines = rawConfig.length > 0 ? rawConfig.split(/\r?\n/) : [];
|
|
76
76
|
const output = [];
|
|
@@ -175,10 +175,10 @@ export function restoreTopLevelResponseStorage(currentConfig, originalConfig) {
|
|
|
175
175
|
}
|
|
176
176
|
return output.join(lineEnding);
|
|
177
177
|
}
|
|
178
|
-
|
|
178
|
+
function ensureTomlTrailingNewline(value) {
|
|
179
179
|
return value.replace(/[\r\n]*$/, "\n");
|
|
180
180
|
}
|
|
181
|
-
|
|
181
|
+
function createRuntimeRotationProviderBlock(baseUrl, clientApiKey = "") {
|
|
182
182
|
const lines = [
|
|
183
183
|
`[model_providers.${RUNTIME_ROTATION_PROXY_PROVIDER_ID}]`,
|
|
184
184
|
'name = "codex-multi-auth"',
|
|
@@ -1,36 +1,5 @@
|
|
|
1
1
|
import type { ModelFamily } from "../prompts/codex.js";
|
|
2
2
|
import type { AccountStorageV3 } from "../storage.js";
|
|
3
|
-
export declare function createRuntimeEventHandler<TLoadedStorage, TSavedStorage, TModelFamily extends string, TManager>(deps: {
|
|
4
|
-
handleAccountSelectEvent: (input: {
|
|
5
|
-
event: {
|
|
6
|
-
type: string;
|
|
7
|
-
properties?: unknown;
|
|
8
|
-
};
|
|
9
|
-
providerId: string;
|
|
10
|
-
loadAccounts: () => Promise<TLoadedStorage>;
|
|
11
|
-
saveAccounts: (storage: TSavedStorage) => Promise<void>;
|
|
12
|
-
modelFamilies: readonly TModelFamily[];
|
|
13
|
-
cachedAccountManager: TManager;
|
|
14
|
-
reloadAccountManagerFromDisk: () => Promise<void>;
|
|
15
|
-
setLastCodexCliActiveSyncIndex: (index: number) => void;
|
|
16
|
-
showToast: (message: string, variant?: "info" | "success" | "warning" | "error") => Promise<void>;
|
|
17
|
-
}) => Promise<boolean>;
|
|
18
|
-
providerId: string;
|
|
19
|
-
loadAccounts: () => Promise<TLoadedStorage>;
|
|
20
|
-
saveAccounts: (storage: TSavedStorage) => Promise<void>;
|
|
21
|
-
modelFamilies: readonly TModelFamily[];
|
|
22
|
-
getCachedAccountManager: () => TManager;
|
|
23
|
-
reloadAccountManagerFromDisk: () => Promise<void>;
|
|
24
|
-
setLastCodexCliActiveSyncIndex: (index: number) => void;
|
|
25
|
-
showToast: (message: string, variant?: "info" | "success" | "warning" | "error") => Promise<void>;
|
|
26
|
-
logDebug: (message: string) => void;
|
|
27
|
-
pluginName: string;
|
|
28
|
-
}): (input: {
|
|
29
|
-
event: {
|
|
30
|
-
type: string;
|
|
31
|
-
properties?: unknown;
|
|
32
|
-
};
|
|
33
|
-
}) => Promise<void>;
|
|
34
3
|
export declare function handleRuntimeEvent(params: {
|
|
35
4
|
input: {
|
|
36
5
|
event: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-handler.d.ts","sourceRoot":"","sources":["../../../lib/runtime/event-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGtD,
|
|
1
|
+
{"version":3,"file":"event-handler.d.ts","sourceRoot":"","sources":["../../../lib/runtime/event-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGtD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAChD,KAAK,EAAE;QAAE,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,OAAO,CAAA;SAAE,CAAA;KAAE,CAAC;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,SAAS,WAAW,EAAE,CAAC;IACtC,YAAY,EAAE,MAAM,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IACrD,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,uBAAuB,EAAE,MAAM,OAAO,CAAC;IACvC,mCAAmC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,8BAA8B,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,4BAA4B,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,SAAS,EAAE,CACV,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,KAC9C,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBhB"}
|
|
@@ -1,26 +1,4 @@
|
|
|
1
1
|
import { handleAccountSelectEvent } from "./account-select-event.js";
|
|
2
|
-
export function createRuntimeEventHandler(deps) {
|
|
3
|
-
return async (input) => {
|
|
4
|
-
try {
|
|
5
|
-
const handled = await deps.handleAccountSelectEvent({
|
|
6
|
-
event: input.event,
|
|
7
|
-
providerId: deps.providerId,
|
|
8
|
-
loadAccounts: deps.loadAccounts,
|
|
9
|
-
saveAccounts: deps.saveAccounts,
|
|
10
|
-
modelFamilies: deps.modelFamilies,
|
|
11
|
-
cachedAccountManager: deps.getCachedAccountManager(),
|
|
12
|
-
reloadAccountManagerFromDisk: deps.reloadAccountManagerFromDisk,
|
|
13
|
-
setLastCodexCliActiveSyncIndex: deps.setLastCodexCliActiveSyncIndex,
|
|
14
|
-
showToast: deps.showToast,
|
|
15
|
-
});
|
|
16
|
-
if (handled)
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
catch (error) {
|
|
20
|
-
deps.logDebug(`[${deps.pluginName}] Event handler error: ${error instanceof Error ? error.message : String(error)}`);
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
2
|
export async function handleRuntimeEvent(params) {
|
|
25
3
|
try {
|
|
26
4
|
await handleAccountSelectEvent({
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export declare const FIRST_RUN_MARKER_VERSION = 1;
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
type FirstRunStepStatus = "completed" | "skipped" | "failed";
|
|
3
|
+
interface FirstRunSetupOutcome {
|
|
4
4
|
appBind: FirstRunStepStatus;
|
|
5
5
|
launcher: FirstRunStepStatus;
|
|
6
6
|
}
|
|
7
|
-
|
|
7
|
+
type FirstRunSkipReason = "ci" | "not-installed" | "already-done" | "claim-race" | "error";
|
|
8
8
|
export type FirstRunResult = {
|
|
9
9
|
ran: false;
|
|
10
10
|
reason: FirstRunSkipReason;
|
|
@@ -22,7 +22,6 @@ export interface FirstRunSetupDeps {
|
|
|
22
22
|
notify?: (message: string) => void;
|
|
23
23
|
now?: () => number;
|
|
24
24
|
}
|
|
25
|
-
export declare function readOptionalBoolean(value: string | undefined): boolean | null;
|
|
26
25
|
export declare function isCiEnvironment(env?: NodeJS.ProcessEnv): boolean;
|
|
27
26
|
export interface DesktopAppDetectionOptions {
|
|
28
27
|
env?: NodeJS.ProcessEnv;
|
|
@@ -57,7 +56,6 @@ export declare function shouldInstallCodexAppLauncherOnFirstRun(options: FirstRu
|
|
|
57
56
|
* machine-level install either
|
|
58
57
|
*/
|
|
59
58
|
export declare function isInstalledPackageContext(modulePath?: string, cwd?: string): boolean;
|
|
60
|
-
export declare function getFirstRunMarkerPath(): string;
|
|
61
59
|
type LauncherInstallFn = (options: {
|
|
62
60
|
log: (message: string) => void;
|
|
63
61
|
}) => Promise<unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"first-run.d.ts","sourceRoot":"","sources":["../../../lib/runtime/first-run.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAkB1C,
|
|
1
|
+
{"version":3,"file":"first-run.d.ts","sourceRoot":"","sources":["../../../lib/runtime/first-run.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAkB1C,KAAK,kBAAkB,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE7D,UAAU,oBAAoB;IAC7B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,QAAQ,EAAE,kBAAkB,CAAC;CAC7B;AAED,KAAK,kBAAkB,GACpB,IAAI,GACJ,eAAe,GACf,cAAc,GACd,YAAY,GACZ,OAAO,CAAC;AAEX,MAAM,MAAM,cAAc,GACvB;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GAC1C,CAAC;IAAE,GAAG,EAAE,IAAI,CAAA;CAAE,GAAG,oBAAoB,CAAC,CAAC;AAE1C,MAAM,WAAW,iBAAiB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACjD,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACnB;AAgBD,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAG7E;AAeD,MAAM,WAAW,0BAA0B;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,kBAAkB,CACjC,OAAO,GAAE,0BAA+B,GACtC,OAAO,CA8BT;AAED,wBAAgB,sBAAsB,CACrC,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,kBAAkB,GAAE,MAAM,OACgC,GACxD,OAAO,CAWT;AAED,MAAM,WAAW,uBAAuB;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,4BAA4B,CAC3C,OAAO,EAAE,uBAAuB,GAC9B,OAAO,CAcT;AAED,MAAM,WAAW,2BAA2B;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,uCAAuC,CACtD,OAAO,EAAE,2BAA2B,GAClC,OAAO,CAUT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CACxC,UAAU,GAAE,MAAuC,EACnD,GAAG,GAAE,MAAsB,GACzB,OAAO,CAST;AAkGD,KAAK,iBAAiB,GAAG,CAAC,OAAO,EAAE;IAClC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAEvB;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACxC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,GACnC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAenC;AAkCD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACxC,IAAI,GAAE,iBAAsB,GAC1B,OAAO,CAAC,cAAc,CAAC,CAoDzB"}
|
|
@@ -38,7 +38,7 @@ const CI_ENV_KEYS = [
|
|
|
38
38
|
"APPVEYOR",
|
|
39
39
|
"BITBUCKET_BUILD_NUMBER",
|
|
40
40
|
];
|
|
41
|
-
|
|
41
|
+
function readOptionalBoolean(value) {
|
|
42
42
|
if (value === undefined || value.trim().length === 0)
|
|
43
43
|
return null;
|
|
44
44
|
const normalized = value.trim().toLowerCase();
|
|
@@ -144,7 +144,7 @@ export function isInstalledPackageContext(modulePath = fileURLToPath(import.meta
|
|
|
144
144
|
}
|
|
145
145
|
return true;
|
|
146
146
|
}
|
|
147
|
-
|
|
147
|
+
function getFirstRunMarkerPath() {
|
|
148
148
|
return join(getCodexMultiAuthDir(), FIRST_RUN_MARKER_FILE);
|
|
149
149
|
}
|
|
150
150
|
function errorMessage(error) {
|
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
import type { CodexQuotaSnapshot } from "../quota-probe.js";
|
|
2
|
-
export type { CodexQuotaSnapshot
|
|
2
|
+
export type { CodexQuotaSnapshot } from "../quota-probe.js";
|
|
3
3
|
export type ParsedCodexQuotaSnapshot = Omit<CodexQuotaSnapshot, "model">;
|
|
4
|
-
export declare function parseFiniteNumberHeader(headers: Headers, name: string): number | undefined;
|
|
5
|
-
export declare function parseFiniteIntHeader(headers: Headers, name: string): number | undefined;
|
|
6
4
|
export declare function parseResetAtMs(headers: Headers, prefix: string): number | undefined;
|
|
7
|
-
export declare function hasCodexQuotaHeaders(headers: Headers): boolean;
|
|
8
5
|
export declare function parseCodexQuotaSnapshot(headers: Headers, status: number): ParsedCodexQuotaSnapshot | null;
|
|
9
|
-
export declare function formatQuotaWindowLabel(windowMinutes: number | undefined): string;
|
|
10
|
-
export declare function formatResetAt(resetAtMs: number | undefined): string | undefined;
|
|
11
6
|
export declare function formatCodexQuotaLine(snapshot: Pick<CodexQuotaSnapshot, "status" | "planType" | "activeLimit" | "primary" | "secondary">): string;
|
|
12
7
|
//# sourceMappingURL=quota-headers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota-headers.d.ts","sourceRoot":"","sources":["../../../lib/runtime/quota-headers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAoB,MAAM,mBAAmB,CAAC;AAE9E,YAAY,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"quota-headers.d.ts","sourceRoot":"","sources":["../../../lib/runtime/quota-headers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAoB,MAAM,mBAAmB,CAAC;AAE9E,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;AAsBzE,wBAAgB,cAAc,CAC7B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,GACZ,MAAM,GAAG,SAAS,CA0BpB;AAgBD,wBAAgB,uBAAuB,CACtC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,GACZ,wBAAwB,GAAG,IAAI,CAkCjC;AAyCD,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,IAAI,CACb,kBAAkB,EAClB,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,GAAG,WAAW,CAC/D,GACC,MAAM,CAkCR"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
function parseFiniteNumberHeader(headers, name) {
|
|
2
2
|
const raw = headers.get(name);
|
|
3
3
|
if (!raw)
|
|
4
4
|
return undefined;
|
|
5
5
|
const parsed = Number(raw);
|
|
6
6
|
return Number.isFinite(parsed) ? parsed : undefined;
|
|
7
7
|
}
|
|
8
|
-
|
|
8
|
+
function parseFiniteIntHeader(headers, name) {
|
|
9
9
|
const raw = headers.get(name);
|
|
10
10
|
if (!raw)
|
|
11
11
|
return undefined;
|
|
@@ -32,7 +32,7 @@ export function parseResetAtMs(headers, prefix) {
|
|
|
32
32
|
const parsedDate = Date.parse(trimmed);
|
|
33
33
|
return Number.isFinite(parsedDate) ? parsedDate : undefined;
|
|
34
34
|
}
|
|
35
|
-
|
|
35
|
+
function hasCodexQuotaHeaders(headers) {
|
|
36
36
|
const keys = [
|
|
37
37
|
"x-codex-primary-used-percent",
|
|
38
38
|
"x-codex-primary-window-minutes",
|
|
@@ -65,7 +65,7 @@ export function parseCodexQuotaSnapshot(headers, status) {
|
|
|
65
65
|
const activeLimit = parseFiniteIntHeader(headers, "x-codex-active-limit");
|
|
66
66
|
return { status, planType, activeLimit, primary, secondary };
|
|
67
67
|
}
|
|
68
|
-
|
|
68
|
+
function formatQuotaWindowLabel(windowMinutes) {
|
|
69
69
|
if (!windowMinutes || !Number.isFinite(windowMinutes) || windowMinutes <= 0) {
|
|
70
70
|
return "quota";
|
|
71
71
|
}
|
|
@@ -75,7 +75,7 @@ export function formatQuotaWindowLabel(windowMinutes) {
|
|
|
75
75
|
return `${windowMinutes / 60}h`;
|
|
76
76
|
return `${windowMinutes}m`;
|
|
77
77
|
}
|
|
78
|
-
|
|
78
|
+
function formatResetAt(resetAtMs) {
|
|
79
79
|
if (!resetAtMs || !Number.isFinite(resetAtMs) || resetAtMs <= 0)
|
|
80
80
|
return undefined;
|
|
81
81
|
const date = new Date(resetAtMs);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { RuntimeObservabilitySnapshot } from "./runtime-observability.js";
|
|
2
2
|
import type { AppBindRouterStatus } from "./app-bind.js";
|
|
3
3
|
import type { AccountStorageV3 } from "../storage.js";
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
type RuntimeCurrentAccountSource = "runtime-observability" | "app-bind" | "app-helper";
|
|
5
|
+
type RuntimeCurrentAccountMatch = "account-id" | "email" | "index";
|
|
6
6
|
export type AccountCurrentMarker = "current" | "in-use" | "selected";
|
|
7
7
|
export interface RuntimeAccountSignal {
|
|
8
8
|
source: RuntimeCurrentAccountSource;
|
|
@@ -31,7 +31,6 @@ export interface RuntimeCurrentAccountSources {
|
|
|
31
31
|
appBindStatus?: AppBindRouterStatus | null;
|
|
32
32
|
appHelperStatus?: RuntimeAccountSignal | null;
|
|
33
33
|
}
|
|
34
|
-
export declare const RUNTIME_CURRENT_ACCOUNT_MAX_AGE_MS: number;
|
|
35
34
|
export interface AppRuntimeHelperAccountStatus {
|
|
36
35
|
kind: string | null;
|
|
37
36
|
state: string | null;
|
|
@@ -49,4 +48,5 @@ export declare function readAppRuntimeHelperAccountSignal(): RuntimeAccountSigna
|
|
|
49
48
|
export declare function resolveRuntimeCurrentAccount(storage: AccountStorageV3, sources: RuntimeCurrentAccountSources, options?: RuntimeCurrentAccountOptions): RuntimeCurrentAccountSelection | null;
|
|
50
49
|
export declare function resolveAccountCurrentMarkers(index: number, storedCurrentIndex: number, runtimeCurrent: RuntimeCurrentAccountSelection | null): AccountCurrentMarker[];
|
|
51
50
|
export declare function isDisplayCurrentAccount(index: number, storedCurrentIndex: number, runtimeCurrent: RuntimeCurrentAccountSelection | null): boolean;
|
|
51
|
+
export {};
|
|
52
52
|
//# sourceMappingURL=runtime-current-account.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-current-account.d.ts","sourceRoot":"","sources":["../../../lib/runtime/runtime-current-account.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGtD,
|
|
1
|
+
{"version":3,"file":"runtime-current-account.d.ts","sourceRoot":"","sources":["../../../lib/runtime/runtime-current-account.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGtD,KAAK,2BAA2B,GAC7B,uBAAuB,GACvB,UAAU,GACV,YAAY,CAAC;AAEhB,KAAK,0BAA0B,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC;AAEnE,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AAErE,MAAM,WAAW,oBAAoB;IACpC,MAAM,EAAE,2BAA2B,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,8BAA8B;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,2BAA2B,CAAC;IACpC,SAAS,EAAE,0BAA0B,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,4BAA4B;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,4BAA4B;IAC5C,eAAe,CAAC,EAAE,4BAA4B,GAAG,IAAI,CAAC;IACtD,aAAa,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC3C,eAAe,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAC9C;AAMD,MAAM,WAAW,6BAA6B;IAC7C,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AA8DD,wBAAgB,0BAA0B,IAAI,6BAA6B,GAAG,IAAI,CA0BjF;AAED,wBAAgB,8BAA8B,CAC7C,MAAM,EAAE,6BAA6B,GAAG,IAAI,GAC1C,oBAAoB,GAAG,IAAI,CAc7B;AAED,wBAAgB,iCAAiC,IAAI,oBAAoB,GAAG,IAAI,CAE/E;AA+FD,wBAAgB,4BAA4B,CAC3C,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,4BAA4B,EACrC,OAAO,GAAE,4BAAiC,GACxC,8BAA8B,GAAG,IAAI,CAgDvC;AAED,wBAAgB,4BAA4B,CAC3C,KAAK,EAAE,MAAM,EACb,kBAAkB,EAAE,MAAM,EAC1B,cAAc,EAAE,8BAA8B,GAAG,IAAI,GACnD,oBAAoB,EAAE,CAWxB;AAED,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,MAAM,EACb,kBAAkB,EAAE,MAAM,EAC1B,cAAc,EAAE,8BAA8B,GAAG,IAAI,GACnD,OAAO,CAET"}
|
|
@@ -4,7 +4,7 @@ import process from "node:process";
|
|
|
4
4
|
import { APP_RUNTIME_HELPER_STATUS_FILE } from "../runtime-constants.js";
|
|
5
5
|
import { getCodexMultiAuthDir } from "../runtime-paths.js";
|
|
6
6
|
import { isRecord } from "../utils.js";
|
|
7
|
-
|
|
7
|
+
const RUNTIME_CURRENT_ACCOUNT_MAX_AGE_MS = 24 * 60 * 60 * 1000;
|
|
8
8
|
const APP_RUNTIME_HELPER_KIND = "codex-app-runtime-rotation-helper";
|
|
9
9
|
const MAX_STATUS_FILE_BYTES = 1024 * 1024; // 1 MB sanity cap
|
|
10
10
|
function normalizeString(value) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
interface RuntimeMetricsSnapshot {
|
|
2
2
|
startedAt: number;
|
|
3
3
|
totalRequests: number;
|
|
4
4
|
successfulRequests: number;
|
|
@@ -73,5 +73,5 @@ export declare function recordRuntimeReset(reason: string): void;
|
|
|
73
73
|
*/
|
|
74
74
|
export declare function recordRuntimeAccountRecovery(index: number): void;
|
|
75
75
|
export declare function loadPersistedRuntimeObservabilitySnapshot(): Promise<RuntimeObservabilitySnapshot | null>;
|
|
76
|
-
export
|
|
76
|
+
export {};
|
|
77
77
|
//# sourceMappingURL=runtime-observability.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-observability.d.ts","sourceRoot":"","sources":["../../../lib/runtime/runtime-observability.ts"],"names":[],"mappings":"AAIA,
|
|
1
|
+
{"version":3,"file":"runtime-observability.d.ts","sourceRoot":"","sources":["../../../lib/runtime/runtime-observability.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-rotation-proxy.d.ts","sourceRoot":"","sources":["../../lib/runtime-rotation-proxy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime-rotation-proxy.d.ts","sourceRoot":"","sources":["../../lib/runtime-rotation-proxy.ts"],"names":[],"mappings":"AAwEA,OAAO,KAAK,EAKX,2BAA2B,EAC3B,0BAA0B,EAE1B,MAAM,oCAAoC,CAAC;AAe5C,YAAY,EACX,2BAA2B,EAC3B,0BAA0B,EAC1B,0BAA0B,GAC1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACN,+BAA+B,EAC/B,0BAA0B,GAC1B,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,EACN,+BAA+B,EAC/B,8BAA8B,EAC9B,uBAAuB,EACvB,uBAAuB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,YAAY,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AA6etE,wBAAsB,yBAAyB,CAC9C,OAAO,EAAE,2BAA2B,GAClC,OAAO,CAAC,0BAA0B,CAAC,CA+IrC"}
|
|
@@ -10,6 +10,7 @@ import { mutateRuntimeObservabilitySnapshot, recordRuntimeAccountRecovery, recor
|
|
|
10
10
|
import { createRuntimeUsageRecorder, evaluateRuntimePolicy, loadRuntimePolicyState, } from "./policy/runtime-policy.js";
|
|
11
11
|
import { isWorkspaceDisabledError } from "./request/fetch-helpers.js";
|
|
12
12
|
import { createLogger, maskString, runWithCorrelationId } from "./logger.js";
|
|
13
|
+
import { CodexValidationError } from "./errors.js";
|
|
13
14
|
import { buildPinnedUnavailableErrorBody, buildTokenInvalidationBody, extractErrorCodeFromBody, getQuotaNearExhaustionWaitMs, isTokenInvalidationError, normalizeExhaustionStatus, parseRetryAfterBodyMs, parseRetryAfterHeaderMs, } from "./request/rate-limit-decision.js";
|
|
14
15
|
import { forwardStreamingResponse, HOP_BY_HOP_HEADERS, readErrorBody, responseHeadersForClient, withTimeout, } from "./request/stream-failover-runtime.js";
|
|
15
16
|
import { chooseAccount } from "./runtime/rotation-account-selection.js";
|
|
@@ -435,8 +436,8 @@ export async function startRuntimeRotationProxy(options) {
|
|
|
435
436
|
// binding a non-loopback host would expose every managed account to the
|
|
436
437
|
// network, so it is refused unconditionally.
|
|
437
438
|
if (!isLoopbackHost(host)) {
|
|
438
|
-
throw new
|
|
439
|
-
"It forwards managed OAuth tokens and is loopback-only.");
|
|
439
|
+
throw new CodexValidationError(`Runtime rotation proxy refuses to bind non-loopback host "${host}". ` +
|
|
440
|
+
"It forwards managed OAuth tokens and is loopback-only.", { field: "host", expected: "a loopback host", context: { host } });
|
|
440
441
|
}
|
|
441
442
|
// Normalize the validated host into its two representations exactly once so the
|
|
442
443
|
// listen() bind and the emitted baseUrl can never disagree under concurrent
|
|
@@ -451,7 +452,7 @@ export async function startRuntimeRotationProxy(options) {
|
|
|
451
452
|
? options.clientApiKey.trim()
|
|
452
453
|
: null;
|
|
453
454
|
if (!clientApiKey) {
|
|
454
|
-
throw new
|
|
455
|
+
throw new CodexValidationError("Runtime rotation proxy requires a clientApiKey.", { field: "clientApiKey", expected: "a non-empty string" });
|
|
455
456
|
}
|
|
456
457
|
const now = options.now ?? Date.now;
|
|
457
458
|
const tokenRefreshSkewMs = getTokenRefreshSkewMs(pluginConfig);
|
package/dist/lib/schemas.d.ts
CHANGED
|
@@ -84,35 +84,13 @@ export type PluginConfigFromSchema = z.infer<typeof PluginConfigSchema>;
|
|
|
84
84
|
/**
|
|
85
85
|
* Source of the accountId used for ChatGPT requests.
|
|
86
86
|
*/
|
|
87
|
-
|
|
87
|
+
declare const AccountIdSourceSchema: z.ZodEnum<{
|
|
88
88
|
token: "token";
|
|
89
89
|
id_token: "id_token";
|
|
90
90
|
org: "org";
|
|
91
91
|
manual: "manual";
|
|
92
92
|
}>;
|
|
93
93
|
export type AccountIdSourceFromSchema = z.infer<typeof AccountIdSourceSchema>;
|
|
94
|
-
/**
|
|
95
|
-
* Cooldown reason for temporary account suspension.
|
|
96
|
-
*/
|
|
97
|
-
export declare const CooldownReasonSchema: z.ZodEnum<{
|
|
98
|
-
"auth-failure": "auth-failure";
|
|
99
|
-
"network-error": "network-error";
|
|
100
|
-
"server-error": "server-error";
|
|
101
|
-
"rate-limit": "rate-limit";
|
|
102
|
-
}>;
|
|
103
|
-
export type CooldownReasonFromSchema = z.infer<typeof CooldownReasonSchema>;
|
|
104
|
-
/**
|
|
105
|
-
* Last switch reason for account rotation tracking.
|
|
106
|
-
*/
|
|
107
|
-
export declare const SwitchReasonSchema: z.ZodEnum<{
|
|
108
|
-
manual: "manual";
|
|
109
|
-
"rate-limit": "rate-limit";
|
|
110
|
-
initial: "initial";
|
|
111
|
-
rotation: "rotation";
|
|
112
|
-
best: "best";
|
|
113
|
-
restore: "restore";
|
|
114
|
-
}>;
|
|
115
|
-
export type SwitchReasonFromSchema = z.infer<typeof SwitchReasonSchema>;
|
|
116
94
|
/**
|
|
117
95
|
* Switch reasons that callers may pass to `persistAndSyncSelectedAccount`.
|
|
118
96
|
* Excludes the runtime-internal reasons (`rate-limit`, `initial`) which are
|
|
@@ -125,25 +103,6 @@ export declare const PersistedSwitchReasonSchema: z.ZodEnum<{
|
|
|
125
103
|
restore: "restore";
|
|
126
104
|
}>;
|
|
127
105
|
export type PersistedSwitchReason = z.infer<typeof PersistedSwitchReasonSchema>;
|
|
128
|
-
/**
|
|
129
|
-
* Rate limit state - maps model family to reset timestamp.
|
|
130
|
-
*/
|
|
131
|
-
export declare const RateLimitStateV3Schema: z.ZodRecord<z.ZodString, z.ZodOptional<z.ZodNumber>>;
|
|
132
|
-
export type RateLimitStateV3FromSchema = z.infer<typeof RateLimitStateV3Schema>;
|
|
133
|
-
/**
|
|
134
|
-
* Workspace entry within an account. Supports a single OpenAI/Google account
|
|
135
|
-
* that belongs to multiple ChatGPT workspaces (e.g. personal Plus + a
|
|
136
|
-
* business/team workspace), each a distinct quota pool keyed by its org_id
|
|
137
|
-
* (`id`). Mirrors the `Workspace` TS interface in `lib/accounts.ts`. See #491.
|
|
138
|
-
*/
|
|
139
|
-
export declare const WorkspaceSchema: z.ZodObject<{
|
|
140
|
-
id: z.ZodString;
|
|
141
|
-
name: z.ZodOptional<z.ZodString>;
|
|
142
|
-
enabled: z.ZodBoolean;
|
|
143
|
-
disabledAt: z.ZodOptional<z.ZodNumber>;
|
|
144
|
-
isDefault: z.ZodOptional<z.ZodBoolean>;
|
|
145
|
-
}, z.core.$strip>;
|
|
146
|
-
export type WorkspaceFromSchema = z.infer<typeof WorkspaceSchema>;
|
|
147
106
|
/**
|
|
148
107
|
* Account metadata V3 - current storage format.
|
|
149
108
|
*/
|
|
@@ -188,15 +147,6 @@ export declare const AccountMetadataV3Schema: z.ZodObject<{
|
|
|
188
147
|
}, z.core.$strip>>>;
|
|
189
148
|
currentWorkspaceIndex: z.ZodOptional<z.ZodNumber>;
|
|
190
149
|
}, z.core.$strip>;
|
|
191
|
-
export type AccountMetadataV3FromSchema = z.infer<typeof AccountMetadataV3Schema>;
|
|
192
|
-
export declare const ActiveIndexByFamilySchema: z.ZodObject<{
|
|
193
|
-
"gpt-5-codex": z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
|
|
194
|
-
"codex-max": z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
|
|
195
|
-
codex: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
|
|
196
|
-
"gpt-5.2": z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
|
|
197
|
-
"gpt-5.1": z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
|
|
198
|
-
}, z.core.$strip>;
|
|
199
|
-
export type ActiveIndexByFamilyFromSchema = z.infer<typeof ActiveIndexByFamilySchema>;
|
|
200
150
|
/**
|
|
201
151
|
* Account storage V3 - current storage format with per-family active indices.
|
|
202
152
|
*/
|
|
@@ -255,43 +205,6 @@ export declare const AccountStorageV3Schema: z.ZodObject<{
|
|
|
255
205
|
affinityGeneration: z.ZodOptional<z.ZodNumber>;
|
|
256
206
|
}, z.core.$strip>;
|
|
257
207
|
export type AccountStorageV3FromSchema = z.infer<typeof AccountStorageV3Schema>;
|
|
258
|
-
/**
|
|
259
|
-
* Legacy V1 account metadata for migration support.
|
|
260
|
-
*/
|
|
261
|
-
export declare const AccountMetadataV1Schema: z.ZodObject<{
|
|
262
|
-
accountId: z.ZodOptional<z.ZodString>;
|
|
263
|
-
accountIdSource: z.ZodOptional<z.ZodEnum<{
|
|
264
|
-
token: "token";
|
|
265
|
-
id_token: "id_token";
|
|
266
|
-
org: "org";
|
|
267
|
-
manual: "manual";
|
|
268
|
-
}>>;
|
|
269
|
-
accountLabel: z.ZodOptional<z.ZodString>;
|
|
270
|
-
email: z.ZodOptional<z.ZodString>;
|
|
271
|
-
refreshToken: z.ZodString;
|
|
272
|
-
accessToken: z.ZodOptional<z.ZodString>;
|
|
273
|
-
expiresAt: z.ZodOptional<z.ZodNumber>;
|
|
274
|
-
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
275
|
-
addedAt: z.ZodNumber;
|
|
276
|
-
lastUsed: z.ZodNumber;
|
|
277
|
-
lastSwitchReason: z.ZodOptional<z.ZodEnum<{
|
|
278
|
-
manual: "manual";
|
|
279
|
-
"rate-limit": "rate-limit";
|
|
280
|
-
initial: "initial";
|
|
281
|
-
rotation: "rotation";
|
|
282
|
-
best: "best";
|
|
283
|
-
restore: "restore";
|
|
284
|
-
}>>;
|
|
285
|
-
rateLimitResetTime: z.ZodOptional<z.ZodNumber>;
|
|
286
|
-
coolingDownUntil: z.ZodOptional<z.ZodNumber>;
|
|
287
|
-
cooldownReason: z.ZodOptional<z.ZodEnum<{
|
|
288
|
-
"auth-failure": "auth-failure";
|
|
289
|
-
"network-error": "network-error";
|
|
290
|
-
"server-error": "server-error";
|
|
291
|
-
"rate-limit": "rate-limit";
|
|
292
|
-
}>>;
|
|
293
|
-
}, z.core.$strip>;
|
|
294
|
-
export type AccountMetadataV1FromSchema = z.infer<typeof AccountMetadataV1Schema>;
|
|
295
208
|
/**
|
|
296
209
|
* Legacy V1 storage format for migration support.
|
|
297
210
|
*/
|
|
@@ -332,7 +245,6 @@ export declare const AccountStorageV1Schema: z.ZodObject<{
|
|
|
332
245
|
}, z.core.$strip>>;
|
|
333
246
|
activeIndex: z.ZodNumber;
|
|
334
247
|
}, z.core.$strip>;
|
|
335
|
-
export type AccountStorageV1FromSchema = z.infer<typeof AccountStorageV1Schema>;
|
|
336
248
|
/**
|
|
337
249
|
* Union of V1 and V3 storage formats for migration detection.
|
|
338
250
|
*/
|
|
@@ -476,7 +388,6 @@ export declare const FlaggedAccountMetadataV1Schema: z.ZodObject<{
|
|
|
476
388
|
flaggedReason: z.ZodOptional<z.ZodString>;
|
|
477
389
|
lastError: z.ZodOptional<z.ZodString>;
|
|
478
390
|
}, z.core.$loose>;
|
|
479
|
-
export type FlaggedAccountMetadataV1FromSchema = z.infer<typeof FlaggedAccountMetadataV1Schema>;
|
|
480
391
|
/**
|
|
481
392
|
* Flagged account storage V1 format (version: 1, accounts: []).
|
|
482
393
|
*/
|
|
@@ -544,7 +455,7 @@ export type AccountsJournalEntryFromSchema = z.infer<typeof AccountsJournalEntry
|
|
|
544
455
|
/**
|
|
545
456
|
* Token failure reason codes.
|
|
546
457
|
*/
|
|
547
|
-
|
|
458
|
+
declare const TokenFailureReasonSchema: z.ZodEnum<{
|
|
548
459
|
unknown: "unknown";
|
|
549
460
|
http_error: "http_error";
|
|
550
461
|
invalid_response: "invalid_response";
|
|
@@ -673,4 +584,5 @@ export declare function safeParseJson<T>(raw: unknown, schema: z.ZodType<T>, con
|
|
|
673
584
|
* Useful for logging and error messages.
|
|
674
585
|
*/
|
|
675
586
|
export declare function getValidationErrors(schema: z.ZodType, data: unknown): string[];
|
|
587
|
+
export {};
|
|
676
588
|
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../lib/schemas.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmBxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyD7B,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAMxE;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../lib/schemas.ts"],"names":[],"mappings":"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"}
|