codex-multi-auth 0.1.7 → 0.1.9
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/LICENSE +21 -1
- package/README.md +16 -3
- package/assets/readme-hero.svg +31 -31
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -65
- package/dist/index.js.map +1 -1
- package/dist/lib/accounts.d.ts.map +1 -1
- package/dist/lib/accounts.js +29 -10
- package/dist/lib/accounts.js.map +1 -1
- package/dist/lib/codex-cli/sync.d.ts +9 -16
- package/dist/lib/codex-cli/sync.d.ts.map +1 -1
- package/dist/lib/codex-cli/sync.js +51 -284
- package/dist/lib/codex-cli/sync.js.map +1 -1
- package/dist/lib/codex-manager/settings-hub.d.ts +44 -2
- package/dist/lib/codex-manager/settings-hub.d.ts.map +1 -1
- package/dist/lib/codex-manager/settings-hub.js +746 -117
- package/dist/lib/codex-manager/settings-hub.js.map +1 -1
- package/dist/lib/codex-manager.d.ts.map +1 -1
- package/dist/lib/codex-manager.js +240 -216
- package/dist/lib/codex-manager.js.map +1 -1
- package/dist/lib/context-overflow.js +10 -10
- package/dist/lib/entitlement-cache.d.ts +8 -5
- package/dist/lib/entitlement-cache.d.ts.map +1 -1
- package/dist/lib/entitlement-cache.js +24 -9
- package/dist/lib/entitlement-cache.js.map +1 -1
- package/dist/lib/named-backup-export.d.ts +69 -0
- package/dist/lib/named-backup-export.d.ts.map +1 -0
- package/dist/lib/named-backup-export.js +207 -0
- package/dist/lib/named-backup-export.js.map +1 -0
- package/dist/lib/oc-chatgpt-import-adapter.d.ts +64 -0
- package/dist/lib/oc-chatgpt-import-adapter.d.ts.map +1 -0
- package/dist/lib/oc-chatgpt-import-adapter.js +522 -0
- package/dist/lib/oc-chatgpt-import-adapter.js.map +1 -0
- package/dist/lib/oc-chatgpt-orchestrator.d.ts +80 -0
- package/dist/lib/oc-chatgpt-orchestrator.d.ts.map +1 -0
- package/dist/lib/oc-chatgpt-orchestrator.js +130 -0
- package/dist/lib/oc-chatgpt-orchestrator.js.map +1 -0
- package/dist/lib/oc-chatgpt-target-detection.d.ts +59 -0
- package/dist/lib/oc-chatgpt-target-detection.d.ts.map +1 -0
- package/dist/lib/oc-chatgpt-target-detection.js +327 -0
- package/dist/lib/oc-chatgpt-target-detection.js.map +1 -0
- package/dist/lib/prompts/codex.js +2 -2
- package/dist/lib/runtime-paths.d.ts.map +1 -1
- package/dist/lib/runtime-paths.js +21 -1
- package/dist/lib/runtime-paths.js.map +1 -1
- package/dist/lib/storage.d.ts +67 -16
- package/dist/lib/storage.d.ts.map +1 -1
- package/dist/lib/storage.js +797 -169
- package/dist/lib/storage.js.map +1 -1
- package/dist/lib/ui/copy.d.ts +15 -1
- package/dist/lib/ui/copy.d.ts.map +1 -1
- package/dist/lib/ui/copy.js +15 -1
- package/dist/lib/ui/copy.js.map +1 -1
- package/package.json +130 -131
- package/scripts/bench-format/hashline-v2.mjs +642 -642
- package/scripts/bench-format/render.mjs +496 -496
- package/scripts/bench-format/stats.mjs +54 -54
- package/scripts/bench-format/tasks.mjs +151 -151
- package/scripts/benchmark-render-dashboard.mjs +49 -49
- package/scripts/install-codex-auth.js +9 -9
- package/scripts/test-all-models.sh +7 -7
- package/scripts/test-model-matrix.js +138 -46
- package/scripts/validate-model-map.sh +7 -7
package/dist/lib/storage.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
export type { CooldownReason, RateLimitStateV3, AccountMetadataV1, AccountStorageV1, AccountMetadataV3, AccountStorageV3 };
|
|
1
|
+
import { type AccountMetadataV1, type AccountMetadataV3, type AccountStorageV1, type AccountStorageV3, type CooldownReason, type RateLimitStateV3 } from "./storage/migrations.js";
|
|
2
|
+
export type { CooldownReason, RateLimitStateV3, AccountMetadataV1, AccountStorageV1, AccountMetadataV3, AccountStorageV3, };
|
|
3
3
|
export interface FlaggedAccountMetadataV1 extends AccountMetadataV3 {
|
|
4
4
|
flaggedAt: number;
|
|
5
5
|
flaggedReason?: string;
|
|
@@ -9,6 +9,39 @@ export interface FlaggedAccountStorageV1 {
|
|
|
9
9
|
version: 1;
|
|
10
10
|
accounts: FlaggedAccountMetadataV1[];
|
|
11
11
|
}
|
|
12
|
+
type RestoreReason = "empty-storage" | "intentional-reset" | "missing-storage";
|
|
13
|
+
type BackupSnapshotKind = "accounts-primary" | "accounts-wal" | "accounts-backup" | "accounts-backup-history" | "accounts-discovered-backup" | "flagged-primary" | "flagged-backup" | "flagged-backup-history" | "flagged-discovered-backup";
|
|
14
|
+
type BackupSnapshotMetadata = {
|
|
15
|
+
kind: BackupSnapshotKind;
|
|
16
|
+
path: string;
|
|
17
|
+
index?: number;
|
|
18
|
+
exists: boolean;
|
|
19
|
+
valid: boolean;
|
|
20
|
+
bytes?: number;
|
|
21
|
+
mtimeMs?: number;
|
|
22
|
+
version?: number;
|
|
23
|
+
accountCount?: number;
|
|
24
|
+
flaggedCount?: number;
|
|
25
|
+
schemaErrors?: string[];
|
|
26
|
+
};
|
|
27
|
+
type BackupMetadataSection = {
|
|
28
|
+
storagePath: string;
|
|
29
|
+
latestValidPath?: string;
|
|
30
|
+
snapshotCount: number;
|
|
31
|
+
validSnapshotCount: number;
|
|
32
|
+
snapshots: BackupSnapshotMetadata[];
|
|
33
|
+
};
|
|
34
|
+
export type BackupMetadata = {
|
|
35
|
+
accounts: BackupMetadataSection;
|
|
36
|
+
flaggedAccounts: BackupMetadataSection;
|
|
37
|
+
};
|
|
38
|
+
export type RestoreAssessment = {
|
|
39
|
+
storagePath: string;
|
|
40
|
+
restoreEligible: boolean;
|
|
41
|
+
restoreReason?: RestoreReason;
|
|
42
|
+
latestSnapshot?: BackupSnapshotMetadata;
|
|
43
|
+
backupMetadata: BackupMetadata;
|
|
44
|
+
};
|
|
12
45
|
/**
|
|
13
46
|
* Custom error class for storage operations with platform-aware hints.
|
|
14
47
|
*/
|
|
@@ -22,6 +55,13 @@ export declare class StorageError extends Error {
|
|
|
22
55
|
* Generate platform-aware troubleshooting hint based on error code.
|
|
23
56
|
*/
|
|
24
57
|
export declare function formatStorageErrorHint(error: unknown, path: string): string;
|
|
58
|
+
type AccountLike = {
|
|
59
|
+
accountId?: string;
|
|
60
|
+
email?: string;
|
|
61
|
+
refreshToken?: string;
|
|
62
|
+
addedAt?: number;
|
|
63
|
+
lastUsed?: number;
|
|
64
|
+
};
|
|
25
65
|
export declare function setStorageBackupEnabled(enabled: boolean): void;
|
|
26
66
|
export declare function getLastAccountsSaveTimestamp(): number;
|
|
27
67
|
export declare function setStoragePath(projectPath: string | null): void;
|
|
@@ -31,28 +71,36 @@ export declare function setStoragePathDirect(path: string | null): void;
|
|
|
31
71
|
* @returns Absolute path to the accounts.json file
|
|
32
72
|
*/
|
|
33
73
|
export declare function getStoragePath(): string;
|
|
74
|
+
export declare function buildNamedBackupPath(name: string): string;
|
|
75
|
+
export declare function exportNamedBackup(name: string, options?: {
|
|
76
|
+
force?: boolean;
|
|
77
|
+
}): Promise<string>;
|
|
34
78
|
export declare function getFlaggedAccountsPath(): string;
|
|
35
79
|
/**
|
|
36
|
-
*
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
80
|
+
* Normalize email keys for case-insensitive account identity matching.
|
|
81
|
+
*/
|
|
82
|
+
export declare function normalizeEmailKey(email: string | undefined): string | undefined;
|
|
83
|
+
type AccountMatchOptions = {
|
|
84
|
+
allowUniqueAccountIdFallbackWithoutEmail?: boolean;
|
|
85
|
+
};
|
|
86
|
+
export declare function getAccountIdentityKey(account: Pick<AccountLike, "accountId" | "email" | "refreshToken">): string | undefined;
|
|
87
|
+
export declare function findMatchingAccountIndex<T extends Pick<AccountLike, "accountId" | "email" | "refreshToken">>(accounts: readonly T[], candidate: Pick<AccountLike, "accountId" | "email" | "refreshToken">, options?: AccountMatchOptions): number | undefined;
|
|
88
|
+
export declare function resolveAccountSelectionIndex<T extends Pick<AccountLike, "accountId" | "email" | "refreshToken">>(accounts: readonly T[], candidate: Pick<AccountLike, "accountId" | "email" | "refreshToken">, fallbackIndex?: number): number;
|
|
89
|
+
/**
|
|
90
|
+
* Removes duplicate accounts, keeping the most recently used entry for each
|
|
91
|
+
* safely matched identity.
|
|
40
92
|
*/
|
|
41
93
|
export declare function deduplicateAccounts<T extends {
|
|
42
94
|
accountId?: string;
|
|
43
|
-
|
|
95
|
+
email?: string;
|
|
96
|
+
refreshToken?: string;
|
|
44
97
|
lastUsed?: number;
|
|
45
98
|
addedAt?: number;
|
|
46
99
|
}>(accounts: T[]): T[];
|
|
47
|
-
/**
|
|
48
|
-
* Removes duplicate accounts by email, keeping the most recently used entry.
|
|
49
|
-
* Accounts without email are always preserved.
|
|
50
|
-
* @param accounts - Array of accounts to deduplicate
|
|
51
|
-
* @returns New array with email duplicates removed
|
|
52
|
-
*/
|
|
53
|
-
export declare function normalizeEmailKey(email: string | undefined): string | undefined;
|
|
54
100
|
export declare function deduplicateAccountsByEmail<T extends {
|
|
101
|
+
accountId?: string;
|
|
55
102
|
email?: string;
|
|
103
|
+
refreshToken?: string;
|
|
56
104
|
lastUsed?: number;
|
|
57
105
|
addedAt?: number;
|
|
58
106
|
}>(accounts: T[]): T[];
|
|
@@ -69,7 +117,10 @@ export declare function normalizeAccountStorage(data: unknown): AccountStorageV3
|
|
|
69
117
|
* @returns AccountStorageV3 if file exists and is valid, null otherwise
|
|
70
118
|
*/
|
|
71
119
|
export declare function loadAccounts(): Promise<AccountStorageV3 | null>;
|
|
120
|
+
export declare function getBackupMetadata(): Promise<BackupMetadata>;
|
|
121
|
+
export declare function getRestoreAssessment(): Promise<RestoreAssessment>;
|
|
72
122
|
export declare function withAccountStorageTransaction<T>(handler: (current: AccountStorageV3 | null, persist: (storage: AccountStorageV3) => Promise<void>) => Promise<T>): Promise<T>;
|
|
123
|
+
export declare function withAccountAndFlaggedStorageTransaction<T>(handler: (current: AccountStorageV3 | null, persist: (accountStorage: AccountStorageV3, flaggedStorage: FlaggedAccountStorageV1) => Promise<void>) => Promise<T>): Promise<T>;
|
|
73
124
|
/**
|
|
74
125
|
* Persists account storage to disk using atomic write (temp file + rename).
|
|
75
126
|
* Creates the Codex multi-auth storage directory if it doesn't exist.
|
|
@@ -92,10 +143,10 @@ export declare function clearFlaggedAccounts(): Promise<void>;
|
|
|
92
143
|
* @param force - If true, overwrite existing file (default: true)
|
|
93
144
|
* @throws Error if file exists and force is false, or if no accounts to export
|
|
94
145
|
*/
|
|
95
|
-
export declare function exportAccounts(filePath: string, force?: boolean): Promise<void>;
|
|
146
|
+
export declare function exportAccounts(filePath: string, force?: boolean, beforeCommit?: (resolvedPath: string) => Promise<void> | void): Promise<void>;
|
|
96
147
|
/**
|
|
97
148
|
* Imports accounts from a JSON file, merging with existing accounts.
|
|
98
|
-
* Deduplicates by
|
|
149
|
+
* Deduplicates by safe account identity, preserving most recently used entries.
|
|
99
150
|
* @param filePath - Source file path
|
|
100
151
|
* @throws Error if file is invalid or would exceed MAX_ACCOUNTS
|
|
101
152
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../lib/storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../lib/storage.ts"],"names":[],"mappings":"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"}
|