codex-multi-auth 1.2.7 → 1.3.1

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.
Files changed (160) hide show
  1. package/README.md +5 -3
  2. package/config/codex-legacy.json +85 -10
  3. package/config/codex-modern.json +35 -2
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +49 -22
  6. package/dist/index.js.map +1 -1
  7. package/dist/lib/accounts.d.ts +47 -0
  8. package/dist/lib/accounts.d.ts.map +1 -1
  9. package/dist/lib/accounts.js +277 -33
  10. package/dist/lib/accounts.js.map +1 -1
  11. package/dist/lib/auth/auth.d.ts +35 -0
  12. package/dist/lib/auth/auth.d.ts.map +1 -1
  13. package/dist/lib/auth/auth.js +140 -8
  14. package/dist/lib/auth/auth.js.map +1 -1
  15. package/dist/lib/auth/server.d.ts +1 -1
  16. package/dist/lib/auth/server.d.ts.map +1 -1
  17. package/dist/lib/auth/server.js +19 -11
  18. package/dist/lib/auth/server.js.map +1 -1
  19. package/dist/lib/capability-policy.d.ts.map +1 -1
  20. package/dist/lib/capability-policy.js +7 -2
  21. package/dist/lib/capability-policy.js.map +1 -1
  22. package/dist/lib/codex-manager/commands/status.d.ts.map +1 -1
  23. package/dist/lib/codex-manager/commands/status.js +13 -5
  24. package/dist/lib/codex-manager/commands/status.js.map +1 -1
  25. package/dist/lib/codex-manager/commands/verify.d.ts +59 -0
  26. package/dist/lib/codex-manager/commands/verify.d.ts.map +1 -0
  27. package/dist/lib/codex-manager/commands/verify.js +332 -0
  28. package/dist/lib/codex-manager/commands/verify.js.map +1 -0
  29. package/dist/lib/codex-manager/commands/why-selected.d.ts +57 -0
  30. package/dist/lib/codex-manager/commands/why-selected.d.ts.map +1 -0
  31. package/dist/lib/codex-manager/commands/why-selected.js +198 -0
  32. package/dist/lib/codex-manager/commands/why-selected.js.map +1 -0
  33. package/dist/lib/codex-manager/help.d.ts.map +1 -1
  34. package/dist/lib/codex-manager/help.js +4 -0
  35. package/dist/lib/codex-manager/help.js.map +1 -1
  36. package/dist/lib/codex-manager/settings-hub/backend.d.ts +9 -0
  37. package/dist/lib/codex-manager/settings-hub/backend.d.ts.map +1 -0
  38. package/dist/lib/codex-manager/settings-hub/backend.js +79 -0
  39. package/dist/lib/codex-manager/settings-hub/backend.js.map +1 -0
  40. package/dist/lib/codex-manager/settings-hub/dashboard.d.ts +24 -0
  41. package/dist/lib/codex-manager/settings-hub/dashboard.d.ts.map +1 -0
  42. package/dist/lib/codex-manager/settings-hub/dashboard.js +223 -0
  43. package/dist/lib/codex-manager/settings-hub/dashboard.js.map +1 -0
  44. package/dist/lib/codex-manager/settings-hub/experimental.d.ts +18 -0
  45. package/dist/lib/codex-manager/settings-hub/experimental.d.ts.map +1 -0
  46. package/dist/lib/codex-manager/settings-hub/experimental.js +78 -0
  47. package/dist/lib/codex-manager/settings-hub/experimental.js.map +1 -0
  48. package/dist/lib/codex-manager/settings-hub/index.d.ts +34 -0
  49. package/dist/lib/codex-manager/settings-hub/index.d.ts.map +1 -0
  50. package/dist/lib/codex-manager/settings-hub/index.js +81 -0
  51. package/dist/lib/codex-manager/settings-hub/index.js.map +1 -0
  52. package/dist/lib/codex-manager/settings-hub/shared.d.ts +40 -0
  53. package/dist/lib/codex-manager/settings-hub/shared.d.ts.map +1 -0
  54. package/dist/lib/codex-manager/settings-hub/shared.js +103 -0
  55. package/dist/lib/codex-manager/settings-hub/shared.js.map +1 -0
  56. package/dist/lib/codex-manager/settings-hub.d.ts +1 -64
  57. package/dist/lib/codex-manager/settings-hub.d.ts.map +1 -1
  58. package/dist/lib/codex-manager/settings-hub.js +4 -515
  59. package/dist/lib/codex-manager/settings-hub.js.map +1 -1
  60. package/dist/lib/codex-manager.d.ts.map +1 -1
  61. package/dist/lib/codex-manager.js +97 -15
  62. package/dist/lib/codex-manager.js.map +1 -1
  63. package/dist/lib/config.d.ts +14 -0
  64. package/dist/lib/config.d.ts.map +1 -1
  65. package/dist/lib/config.js +21 -9
  66. package/dist/lib/config.js.map +1 -1
  67. package/dist/lib/health.d.ts.map +1 -1
  68. package/dist/lib/health.js.map +1 -1
  69. package/dist/lib/prompts/codex.d.ts +2 -2
  70. package/dist/lib/prompts/codex.js +2 -2
  71. package/dist/lib/recovery/storage.d.ts +13 -0
  72. package/dist/lib/recovery/storage.d.ts.map +1 -1
  73. package/dist/lib/recovery/storage.js +144 -9
  74. package/dist/lib/recovery/storage.js.map +1 -1
  75. package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
  76. package/dist/lib/request/fetch-helpers.js +15 -2
  77. package/dist/lib/request/fetch-helpers.js.map +1 -1
  78. package/dist/lib/request/helpers/model-map.d.ts +3 -3
  79. package/dist/lib/request/helpers/model-map.d.ts.map +1 -1
  80. package/dist/lib/request/helpers/model-map.js +146 -70
  81. package/dist/lib/request/helpers/model-map.js.map +1 -1
  82. package/dist/lib/request/rate-limit-backoff.d.ts +14 -1
  83. package/dist/lib/request/rate-limit-backoff.d.ts.map +1 -1
  84. package/dist/lib/request/rate-limit-backoff.js +26 -5
  85. package/dist/lib/request/rate-limit-backoff.js.map +1 -1
  86. package/dist/lib/request/response-handler.d.ts.map +1 -1
  87. package/dist/lib/request/response-handler.js +82 -25
  88. package/dist/lib/request/response-handler.js.map +1 -1
  89. package/dist/lib/rotation.d.ts +55 -1
  90. package/dist/lib/rotation.d.ts.map +1 -1
  91. package/dist/lib/rotation.js +161 -23
  92. package/dist/lib/rotation.js.map +1 -1
  93. package/dist/lib/routing-mutex.d.ts +107 -0
  94. package/dist/lib/routing-mutex.d.ts.map +1 -0
  95. package/dist/lib/routing-mutex.js +104 -0
  96. package/dist/lib/routing-mutex.js.map +1 -0
  97. package/dist/lib/runtime/storage-scope.d.ts.map +1 -1
  98. package/dist/lib/runtime/storage-scope.js +17 -1
  99. package/dist/lib/runtime/storage-scope.js.map +1 -1
  100. package/dist/lib/schemas.d.ts +125 -0
  101. package/dist/lib/schemas.d.ts.map +1 -1
  102. package/dist/lib/schemas.js +139 -5
  103. package/dist/lib/schemas.js.map +1 -1
  104. package/dist/lib/shutdown.d.ts.map +1 -1
  105. package/dist/lib/shutdown.js +19 -10
  106. package/dist/lib/shutdown.js.map +1 -1
  107. package/dist/lib/storage/account-clear.d.ts.map +1 -1
  108. package/dist/lib/storage/account-clear.js +7 -1
  109. package/dist/lib/storage/account-clear.js.map +1 -1
  110. package/dist/lib/storage/flagged-storage-file.d.ts.map +1 -1
  111. package/dist/lib/storage/flagged-storage-file.js +17 -1
  112. package/dist/lib/storage/flagged-storage-file.js.map +1 -1
  113. package/dist/lib/storage/flagged-storage-io.d.ts.map +1 -1
  114. package/dist/lib/storage/flagged-storage-io.js +24 -10
  115. package/dist/lib/storage/flagged-storage-io.js.map +1 -1
  116. package/dist/lib/storage/import-export.d.ts.map +1 -1
  117. package/dist/lib/storage/import-export.js +31 -5
  118. package/dist/lib/storage/import-export.js.map +1 -1
  119. package/dist/lib/storage/paths.d.ts.map +1 -1
  120. package/dist/lib/storage/paths.js +62 -7
  121. package/dist/lib/storage/paths.js.map +1 -1
  122. package/dist/lib/storage/snapshot-inspectors.d.ts.map +1 -1
  123. package/dist/lib/storage/snapshot-inspectors.js +23 -16
  124. package/dist/lib/storage/snapshot-inspectors.js.map +1 -1
  125. package/dist/lib/storage/storage-parser.d.ts +17 -0
  126. package/dist/lib/storage/storage-parser.d.ts.map +1 -1
  127. package/dist/lib/storage/storage-parser.js +30 -1
  128. package/dist/lib/storage/storage-parser.js.map +1 -1
  129. package/dist/lib/storage.d.ts +1 -1
  130. package/dist/lib/storage.d.ts.map +1 -1
  131. package/dist/lib/storage.js +45 -26
  132. package/dist/lib/storage.js.map +1 -1
  133. package/dist/lib/ui/copy.d.ts +1 -1
  134. package/dist/lib/ui/copy.d.ts.map +1 -1
  135. package/dist/lib/ui/copy.js +2 -1
  136. package/dist/lib/ui/copy.js.map +1 -1
  137. package/dist/lib/ui/select.d.ts.map +1 -1
  138. package/dist/lib/ui/select.js +5 -1
  139. package/dist/lib/ui/select.js.map +1 -1
  140. package/dist/lib/unified-settings.d.ts.map +1 -1
  141. package/dist/lib/unified-settings.js +69 -14
  142. package/dist/lib/unified-settings.js.map +1 -1
  143. package/package.json +5 -5
  144. package/scripts/codex.js +330 -65
  145. package/dist/lib/codex-manager/auth-commands.d.ts +0 -72
  146. package/dist/lib/codex-manager/auth-commands.d.ts.map +0 -1
  147. package/dist/lib/codex-manager/auth-commands.js +0 -643
  148. package/dist/lib/codex-manager/auth-commands.js.map +0 -1
  149. package/dist/lib/codex-manager/commands/doctor.d.ts +0 -85
  150. package/dist/lib/codex-manager/commands/doctor.d.ts.map +0 -1
  151. package/dist/lib/codex-manager/commands/doctor.js +0 -424
  152. package/dist/lib/codex-manager/commands/doctor.js.map +0 -1
  153. package/dist/lib/codex-manager/commands/fix.d.ts +0 -92
  154. package/dist/lib/codex-manager/commands/fix.d.ts.map +0 -1
  155. package/dist/lib/codex-manager/commands/fix.js +0 -347
  156. package/dist/lib/codex-manager/commands/fix.js.map +0 -1
  157. package/dist/lib/codex-manager/commands/verify-flagged.d.ts +0 -69
  158. package/dist/lib/codex-manager/commands/verify-flagged.d.ts.map +0 -1
  159. package/dist/lib/codex-manager/commands/verify-flagged.js +0 -251
  160. package/dist/lib/codex-manager/commands/verify-flagged.js.map +0 -1
@@ -1,251 +0,0 @@
1
- export async function runVerifyFlaggedCommand(args, deps) {
2
- const logInfo = deps.logInfo ?? console.log;
3
- const logError = deps.logError ?? console.error;
4
- if (args.includes("--help") || args.includes("-h")) {
5
- deps.printVerifyFlaggedUsage();
6
- return 0;
7
- }
8
- const parsedArgs = deps.parseVerifyFlaggedArgs(args);
9
- if (!parsedArgs.ok) {
10
- logError(parsedArgs.message);
11
- deps.printVerifyFlaggedUsage();
12
- return 1;
13
- }
14
- const options = parsedArgs.options;
15
- deps.setStoragePath(null);
16
- const flaggedStorage = await deps.loadFlaggedAccounts();
17
- if (flaggedStorage.accounts.length === 0) {
18
- if (options.json) {
19
- logInfo(JSON.stringify({
20
- command: "verify-flagged",
21
- total: 0,
22
- restored: 0,
23
- healthyFlagged: 0,
24
- stillFlagged: 0,
25
- changed: false,
26
- dryRun: options.dryRun,
27
- restore: options.restore,
28
- reports: [],
29
- }, null, 2));
30
- return 0;
31
- }
32
- logInfo("No flagged accounts to check.");
33
- return 0;
34
- }
35
- let storageChanged = false;
36
- let flaggedChanged = false;
37
- const reports = [];
38
- const nextFlaggedAccounts = [];
39
- const now = deps.getNow?.() ?? Date.now();
40
- const refreshChecks = [];
41
- for (let i = 0; i < flaggedStorage.accounts.length; i += 1) {
42
- const flagged = flaggedStorage.accounts[i];
43
- if (!flagged)
44
- continue;
45
- const label = deps.formatAccountLabel(flagged, i);
46
- refreshChecks.push({
47
- index: i,
48
- flagged,
49
- label,
50
- result: await deps.queuedRefresh(flagged.refreshToken),
51
- });
52
- }
53
- const applyRefreshChecks = (storage) => {
54
- let nextStorageChanged = false;
55
- let nextFlaggedChanged = false;
56
- const nextReports = [];
57
- const pendingFlaggedAccounts = [];
58
- for (const check of refreshChecks) {
59
- const { index: i, flagged, label, result } = check;
60
- if (result.type === "success") {
61
- if (!options.restore) {
62
- const tokenAccountId = deps.extractAccountId(result.access);
63
- const nextIdentity = deps.resolveStoredAccountIdentity(flagged.accountId, flagged.accountIdSource, tokenAccountId);
64
- const nextFlagged = {
65
- ...flagged,
66
- refreshToken: result.refresh,
67
- accessToken: result.access,
68
- expiresAt: result.expires,
69
- accountId: nextIdentity.accountId,
70
- accountIdSource: nextIdentity.accountIdSource,
71
- email: deps.sanitizeEmail(deps.extractAccountEmail(result.access, result.idToken)) ?? flagged.email,
72
- lastUsed: now,
73
- lastError: undefined,
74
- };
75
- pendingFlaggedAccounts.push(nextFlagged);
76
- if (JSON.stringify(nextFlagged) !== JSON.stringify(flagged))
77
- nextFlaggedChanged = true;
78
- nextReports.push({
79
- index: i,
80
- label,
81
- outcome: "healthy-flagged",
82
- message: "session is healthy (left in flagged list due to --no-restore)",
83
- });
84
- continue;
85
- }
86
- const upsertResult = deps.upsertRecoveredFlaggedAccount(storage, flagged, result, now);
87
- if (upsertResult.restored) {
88
- nextStorageChanged = nextStorageChanged || upsertResult.changed;
89
- nextFlaggedChanged = true;
90
- nextReports.push({
91
- index: i,
92
- label,
93
- outcome: "restored",
94
- message: upsertResult.message,
95
- });
96
- continue;
97
- }
98
- const tokenAccountId = deps.extractAccountId(result.access);
99
- const nextIdentity = deps.resolveStoredAccountIdentity(flagged.accountId, flagged.accountIdSource, tokenAccountId);
100
- const updatedFlagged = {
101
- ...flagged,
102
- refreshToken: result.refresh,
103
- accessToken: result.access,
104
- expiresAt: result.expires,
105
- accountId: nextIdentity.accountId,
106
- accountIdSource: nextIdentity.accountIdSource,
107
- email: deps.sanitizeEmail(deps.extractAccountEmail(result.access, result.idToken)) ?? flagged.email,
108
- lastUsed: now,
109
- lastError: upsertResult.message,
110
- };
111
- pendingFlaggedAccounts.push(updatedFlagged);
112
- if (JSON.stringify(updatedFlagged) !== JSON.stringify(flagged))
113
- nextFlaggedChanged = true;
114
- nextReports.push({
115
- index: i,
116
- label,
117
- outcome: "restore-skipped",
118
- message: upsertResult.message,
119
- });
120
- continue;
121
- }
122
- const detail = deps.normalizeFailureDetail(result.message, result.reason);
123
- const failedFlagged = {
124
- ...flagged,
125
- lastError: detail,
126
- };
127
- pendingFlaggedAccounts.push(failedFlagged);
128
- if ((flagged.lastError ?? "") !== detail)
129
- nextFlaggedChanged = true;
130
- nextReports.push({
131
- index: i,
132
- label,
133
- outcome: "still-flagged",
134
- message: detail,
135
- });
136
- }
137
- return {
138
- storageChanged: nextStorageChanged,
139
- flaggedChanged: nextFlaggedChanged,
140
- reports: nextReports,
141
- nextFlaggedAccounts: pendingFlaggedAccounts,
142
- };
143
- };
144
- const assignRefreshCheckResult = (result) => {
145
- storageChanged = result.storageChanged;
146
- flaggedChanged = result.flaggedChanged;
147
- reports.length = 0;
148
- reports.push(...result.reports);
149
- nextFlaggedAccounts.length = 0;
150
- nextFlaggedAccounts.push(...result.nextFlaggedAccounts);
151
- };
152
- if (options.restore) {
153
- if (options.dryRun) {
154
- assignRefreshCheckResult(applyRefreshChecks((await deps.loadAccounts()) ?? deps.createEmptyAccountStorage()));
155
- }
156
- else {
157
- let transactionResult;
158
- await deps.withAccountAndFlaggedStorageTransaction(async (loadedStorage, persist) => {
159
- const nextStorage = loadedStorage
160
- ? structuredClone(loadedStorage)
161
- : deps.createEmptyAccountStorage();
162
- const attemptResult = applyRefreshChecks(nextStorage);
163
- if (!attemptResult.storageChanged) {
164
- transactionResult = attemptResult;
165
- return;
166
- }
167
- deps.normalizeDoctorIndexes(nextStorage);
168
- await persist(nextStorage, {
169
- version: 1,
170
- accounts: attemptResult.nextFlaggedAccounts,
171
- });
172
- transactionResult = attemptResult;
173
- });
174
- if (!transactionResult) {
175
- logError("verify-flagged: transaction completed without a result; storage may be unchanged");
176
- return 1;
177
- }
178
- assignRefreshCheckResult(transactionResult);
179
- }
180
- }
181
- else {
182
- assignRefreshCheckResult(applyRefreshChecks(deps.createEmptyAccountStorage()));
183
- }
184
- const remainingFlagged = nextFlaggedAccounts.length;
185
- const restored = reports.filter((report) => report.outcome === "restored").length;
186
- const healthyFlagged = reports.filter((report) => report.outcome === "healthy-flagged").length;
187
- const stillFlagged = reports.filter((report) => report.outcome === "still-flagged").length;
188
- const changed = storageChanged || flaggedChanged;
189
- if (!options.dryRun &&
190
- flaggedChanged &&
191
- (!options.restore || !storageChanged)) {
192
- await deps.saveFlaggedAccounts({
193
- version: 1,
194
- accounts: nextFlaggedAccounts,
195
- });
196
- }
197
- if (options.json) {
198
- logInfo(JSON.stringify({
199
- command: "verify-flagged",
200
- total: flaggedStorage.accounts.length,
201
- restored,
202
- healthyFlagged,
203
- stillFlagged,
204
- remainingFlagged,
205
- changed,
206
- dryRun: options.dryRun,
207
- restore: options.restore,
208
- reports,
209
- }, null, 2));
210
- return 0;
211
- }
212
- logInfo(deps.stylePromptText(`Checking ${flaggedStorage.accounts.length} flagged account(s)...`, "accent"));
213
- for (const report of reports) {
214
- const tone = report.outcome === "restored"
215
- ? "success"
216
- : report.outcome === "healthy-flagged" ||
217
- report.outcome === "restore-skipped"
218
- ? "warning"
219
- : "danger";
220
- const marker = report.outcome === "restored"
221
- ? "✓"
222
- : report.outcome === "healthy-flagged" ||
223
- report.outcome === "restore-skipped"
224
- ? "!"
225
- : "✗";
226
- logInfo(`${deps.stylePromptText(marker, tone)} ${deps.stylePromptText(`${report.index + 1}. ${report.label}`, "accent")} ${deps.stylePromptText("|", "muted")} ${deps.styleAccountDetailText(report.message, tone)}`);
227
- }
228
- logInfo("");
229
- logInfo(deps.formatResultSummary([
230
- {
231
- text: `${restored} restored`,
232
- tone: restored > 0 ? "success" : "muted",
233
- },
234
- {
235
- text: `${healthyFlagged} healthy (kept flagged)`,
236
- tone: healthyFlagged > 0 ? "warning" : "muted",
237
- },
238
- {
239
- text: `${stillFlagged} still flagged`,
240
- tone: stillFlagged > 0 ? "danger" : "muted",
241
- },
242
- ]));
243
- if (options.dryRun) {
244
- logInfo(deps.stylePromptText("Preview only: no changes were saved.", "warning"));
245
- }
246
- else if (!changed) {
247
- logInfo(deps.stylePromptText("No storage changes were needed.", "muted"));
248
- }
249
- return 0;
250
- }
251
- //# sourceMappingURL=verify-flagged.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verify-flagged.js","sourceRoot":"","sources":["../../../../lib/codex-manager/commands/verify-flagged.ts"],"names":[],"mappings":"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"}