oc-codex-multi-auth 6.8.0 → 6.8.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.
Files changed (77) hide show
  1. package/dist/index.d.ts.map +1 -1
  2. package/dist/index.js +13 -2
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/accounts/persistence.d.ts +10 -0
  5. package/dist/lib/accounts/persistence.d.ts.map +1 -1
  6. package/dist/lib/accounts/persistence.js +69 -2
  7. package/dist/lib/accounts/persistence.js.map +1 -1
  8. package/dist/lib/accounts/state.d.ts +2 -0
  9. package/dist/lib/accounts/state.d.ts.map +1 -1
  10. package/dist/lib/accounts/state.js +10 -0
  11. package/dist/lib/accounts/state.js.map +1 -1
  12. package/dist/lib/auth/login-runner.d.ts +1 -0
  13. package/dist/lib/auth/login-runner.d.ts.map +1 -1
  14. package/dist/lib/auth/login-runner.js +8 -0
  15. package/dist/lib/auth/login-runner.js.map +1 -1
  16. package/dist/lib/codex-reset.d.ts +12 -2
  17. package/dist/lib/codex-reset.d.ts.map +1 -1
  18. package/dist/lib/codex-reset.js +21 -4
  19. package/dist/lib/codex-reset.js.map +1 -1
  20. package/dist/lib/proactive-refresh.d.ts.map +1 -1
  21. package/dist/lib/proactive-refresh.js +6 -4
  22. package/dist/lib/proactive-refresh.js.map +1 -1
  23. package/dist/lib/refresh-queue.d.ts +9 -0
  24. package/dist/lib/refresh-queue.d.ts.map +1 -1
  25. package/dist/lib/refresh-queue.js +29 -0
  26. package/dist/lib/refresh-queue.js.map +1 -1
  27. package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
  28. package/dist/lib/request/fetch-helpers.js +41 -3
  29. package/dist/lib/request/fetch-helpers.js.map +1 -1
  30. package/dist/lib/request/helpers/user-agent.d.ts +9 -0
  31. package/dist/lib/request/helpers/user-agent.d.ts.map +1 -0
  32. package/dist/lib/request/helpers/user-agent.js +40 -0
  33. package/dist/lib/request/helpers/user-agent.js.map +1 -0
  34. package/dist/lib/request/request-transformer.d.ts +10 -0
  35. package/dist/lib/request/request-transformer.d.ts.map +1 -1
  36. package/dist/lib/request/request-transformer.js +20 -0
  37. package/dist/lib/request/request-transformer.js.map +1 -1
  38. package/dist/lib/request/response-handler.d.ts.map +1 -1
  39. package/dist/lib/request/response-handler.js +28 -5
  40. package/dist/lib/request/response-handler.js.map +1 -1
  41. package/dist/lib/schemas.d.ts +3 -0
  42. package/dist/lib/schemas.d.ts.map +1 -1
  43. package/dist/lib/schemas.js +1 -0
  44. package/dist/lib/schemas.js.map +1 -1
  45. package/dist/lib/storage/migrations.d.ts +7 -0
  46. package/dist/lib/storage/migrations.d.ts.map +1 -1
  47. package/dist/lib/storage/migrations.js.map +1 -1
  48. package/dist/lib/storage.d.ts +1 -1
  49. package/dist/lib/storage.d.ts.map +1 -1
  50. package/dist/lib/storage.js +10 -1
  51. package/dist/lib/storage.js.map +1 -1
  52. package/dist/lib/tools/codex-keychain.d.ts.map +1 -1
  53. package/dist/lib/tools/codex-keychain.js +153 -77
  54. package/dist/lib/tools/codex-keychain.js.map +1 -1
  55. package/dist/lib/tools/codex-label.d.ts.map +1 -1
  56. package/dist/lib/tools/codex-label.js +60 -34
  57. package/dist/lib/tools/codex-label.js.map +1 -1
  58. package/dist/lib/tools/codex-refresh.d.ts.map +1 -1
  59. package/dist/lib/tools/codex-refresh.js +80 -5
  60. package/dist/lib/tools/codex-refresh.js.map +1 -1
  61. package/dist/lib/tools/codex-remove.d.ts.map +1 -1
  62. package/dist/lib/tools/codex-remove.js +85 -56
  63. package/dist/lib/tools/codex-remove.js.map +1 -1
  64. package/dist/lib/tools/codex-reset.d.ts.map +1 -1
  65. package/dist/lib/tools/codex-reset.js +34 -5
  66. package/dist/lib/tools/codex-reset.js.map +1 -1
  67. package/dist/lib/tools/codex-switch.d.ts.map +1 -1
  68. package/dist/lib/tools/codex-switch.js +57 -35
  69. package/dist/lib/tools/codex-switch.js.map +1 -1
  70. package/dist/lib/tui-quota-cache.d.ts +8 -0
  71. package/dist/lib/tui-quota-cache.d.ts.map +1 -1
  72. package/dist/lib/tui-quota-cache.js +13 -0
  73. package/dist/lib/tui-quota-cache.js.map +1 -1
  74. package/dist/tui.d.ts.map +1 -1
  75. package/dist/tui.js +17 -5
  76. package/dist/tui.js.map +1 -1
  77. package/package.json +153 -153
@@ -27,7 +27,7 @@
27
27
  import { promises as fs } from "node:fs";
28
28
  import { basename, dirname, join } from "node:path";
29
29
  import { tool } from "@opencode-ai/plugin/tool";
30
- import { clearAccounts, loadAccounts, saveAccounts, } from "../storage.js";
30
+ import { withAccountStorageTransaction, withStorageLock } from "../storage.js";
31
31
  import { deleteFromKeychain, isKeychainOptInEnabled, keychainIsAvailable, readFromKeychain, } from "../storage/keychain.js";
32
32
  import { getCurrentProjectStorageKey, getStoragePath } from "../storage/state.js";
33
33
  import { normalizeAccountStorage } from "../storage/normalize.js";
@@ -166,21 +166,28 @@ export function createCodexKeychainTool(ctx) {
166
166
  if (!optIn) {
167
167
  return "codex-keychain migrate: refusing to migrate because CODEX_KEYCHAIN is not set to 1. Enable the opt-in first, then re-run this command.";
168
168
  }
169
- const storage = await loadAccounts();
170
- if (!storage) {
171
- return "codex-keychain migrate: no accounts found to migrate. Nothing to do.";
172
- }
173
- // Re-saving under the opt-in path triggers the same keychain
174
- // write + JSON-backup flow used by every rotation save, so we
175
- // avoid duplicating the migration logic here.
176
- await saveAccounts(storage);
177
- return [
178
- ...formatUiHeader(ui, "Codex keychain migrate"),
179
- "",
180
- formatUiItem(ui, `Migrated ${storage.accounts.length} account(s) to the OS keychain.`),
181
- formatUiKeyValue(ui, "Project scope", projectKey ?? "global"),
182
- formatUiItem(ui, "On-disk JSON (if any) was renamed with a .migrated-to-keychain.<timestamp> suffix. Use `codex-keychain rollback` to restore it."),
183
- ].join("\n");
169
+ // Read and re-save under a single storage-lock transaction so a
170
+ // concurrent rotation save landing between the read and the
171
+ // write cannot be clobbered by a stale snapshot (the docstring
172
+ // above claims this already ran under the same lock as
173
+ // saveAccounts/loadAccounts; loadAccounts()+saveAccounts() as
174
+ // two independent calls did not actually guarantee that).
175
+ return withAccountStorageTransaction(async (current, persist) => {
176
+ if (!current) {
177
+ return "codex-keychain migrate: no accounts found to migrate. Nothing to do.";
178
+ }
179
+ // Re-saving under the opt-in path triggers the same keychain
180
+ // write + JSON-backup flow used by every rotation save, so we
181
+ // avoid duplicating the migration logic here.
182
+ await persist(current);
183
+ return [
184
+ ...formatUiHeader(ui, "Codex keychain migrate"),
185
+ "",
186
+ formatUiItem(ui, `Migrated ${current.accounts.length} account(s) to the OS keychain.`),
187
+ formatUiKeyValue(ui, "Project scope", projectKey ?? "global"),
188
+ formatUiItem(ui, "On-disk JSON (if any) was renamed with a .migrated-to-keychain.<timestamp> suffix. Use `codex-keychain rollback` to restore it."),
189
+ ].join("\n");
190
+ });
184
191
  }
185
192
  // rollback
186
193
  const backups = await findMigrationBackups(storagePath);
@@ -203,75 +210,141 @@ export function createCodexKeychainTool(ctx) {
203
210
  catch (err) {
204
211
  return `codex-keychain rollback: failed to read backup at ${mostRecent}: ${err.message}`;
205
212
  }
206
- // Wipe the keychain entry + any current on-disk file, then rename
207
- // the backup back to the canonical storage path so the next load
208
- // reads from disk again. clearAccounts handles both sides.
209
- await clearAccounts();
210
- // Silent-clobber guard (F1 post-merge MEDIUM finding). On POSIX,
211
- // `fs.rename(backup, storagePath)` silently overwrites an
212
- // existing destination. If `clearAccounts` failed to unlink the
213
- // current JSON (EACCES/EBUSY) or a race write landed a new file
214
- // between clearAccounts and rename, the user's current accounts
215
- // would be silently discarded with no way to recover them.
216
- // Require explicit `confirm=true` before overwriting; without
217
- // it, refuse and surface the offending path.
218
- let currentExists = false;
219
- try {
220
- await fs.access(storagePath);
221
- currentExists = true;
222
- }
223
- catch {
224
- /* canonical path is clear; safe to rename */
225
- }
226
- let preRollbackArchive = null;
227
- if (currentExists) {
228
- if (!confirm) {
229
- return [
230
- `codex-keychain rollback: refusing to overwrite existing accounts file at ${storagePath}.`,
231
- `Backup at ${mostRecent} was not restored.`,
232
- "Pass confirm=true to archive the current file as .pre-rollback.<timestamp> and proceed, or move the current file aside and re-run.",
233
- ].join("\n");
234
- }
235
- const archiveSuffix = new Date()
236
- .toISOString()
237
- .replace(/[:.]/g, "-");
238
- preRollbackArchive = `${storagePath}.pre-rollback.${archiveSuffix}`;
213
+ // Everything below mutates the canonical storage path (JSON file +
214
+ // keychain entry) and must run as one critical section under the
215
+ // same mutex loadAccounts/saveAccounts use, so a concurrent
216
+ // rotation save cannot land between the existence check and the
217
+ // final rename below (the TOCTOU this file's docstring claimed was
218
+ // already impossible). withStorageLock is NOT re-entrant, so this
219
+ // callback uses raw fs operations + the already-unlocked
220
+ // deleteFromKeychain instead of the locked clearAccounts/
221
+ // loadAccounts/saveAccounts wrappers -- calling any of those in
222
+ // here would deadlock against this very lock acquisition.
223
+ //
224
+ // Silent-clobber guard (F1 post-merge MEDIUM finding) is folded
225
+ // into the same critical section: on POSIX, `fs.rename(backup,
226
+ // storagePath)` silently overwrites an existing destination, so a
227
+ // current file is archived (with explicit confirm=true) or refused
228
+ // rather than deleted outright before the backup takes its place.
229
+ const rollbackResult = await withStorageLock(async () => {
230
+ const warnings = [];
231
+ let currentExists = false;
239
232
  try {
240
- await fs.rename(storagePath, preRollbackArchive);
233
+ await fs.access(storagePath);
234
+ currentExists = true;
241
235
  }
242
236
  catch (err) {
243
- return `codex-keychain rollback: failed to archive current accounts file at ${storagePath} -> ${preRollbackArchive}: ${err.message}. Backup at ${mostRecent} was not restored.`;
237
+ const code = err.code;
238
+ if (code !== "ENOENT") {
239
+ // Only ENOENT means "nothing at this path". Any other
240
+ // failure (EACCES, a transient FS error, ...) means we
241
+ // genuinely don't know whether a current file exists, so
242
+ // proceeding past the confirm guard could silently
243
+ // clobber live credentials. Abort instead of guessing.
244
+ return {
245
+ ok: false,
246
+ message: `codex-keychain rollback: failed to check for an existing accounts file at ${storagePath}: ${err.message}. Aborted.`,
247
+ };
248
+ }
249
+ /* ENOENT: canonical path is clear; safe to rename */
250
+ }
251
+ let preRollbackArchive = null;
252
+ if (currentExists) {
253
+ if (!confirm) {
254
+ return {
255
+ ok: false,
256
+ message: [
257
+ `codex-keychain rollback: refusing to overwrite existing accounts file at ${storagePath}.`,
258
+ `Backup at ${mostRecent} was not restored.`,
259
+ "Pass confirm=true to archive the current file as .pre-rollback.<timestamp> and proceed, or move the current file aside and re-run.",
260
+ ].join("\n"),
261
+ };
262
+ }
263
+ const archiveSuffix = new Date()
264
+ .toISOString()
265
+ .replace(/[:.]/g, "-");
266
+ preRollbackArchive = `${storagePath}.pre-rollback.${archiveSuffix}`;
267
+ try {
268
+ await fs.rename(storagePath, preRollbackArchive);
269
+ }
270
+ catch (err) {
271
+ return {
272
+ ok: false,
273
+ message: `codex-keychain rollback: failed to archive current accounts file at ${storagePath} -> ${preRollbackArchive}: ${err.message}. Backup at ${mostRecent} was not restored.`,
274
+ };
275
+ }
276
+ }
277
+ // Apply 0o600 to the BACKUP file BEFORE promoting it, so the
278
+ // active file can never briefly (or permanently, if the
279
+ // process dies between rename and chmod) end up group/world
280
+ // readable. rename() preserves the source file's mode, so
281
+ // chmodding the backup here has the same effect on the
282
+ // eventual `storagePath` as chmodding it after the rename
283
+ // would have -- without the intermediate window. Windows
284
+ // ignores POSIX mode bits, so skip there. A chmod failure is
285
+ // a hardening nicety, not a reason to abort a recovery tool
286
+ // on a permission-quirky mount -- but it must not be
287
+ // silently swallowed either.
288
+ if (process.platform !== "win32") {
289
+ try {
290
+ await fs.chmod(mostRecent, 0o600);
291
+ }
292
+ catch (err) {
293
+ warnings.push(`codex-keychain rollback: could not set restrictive permissions on the backup before restoring it (${err.message}). The restored file's permissions were not hardened; verify them manually.`);
294
+ }
244
295
  }
245
- }
246
- try {
247
- await fs.rename(mostRecent, storagePath);
248
- }
249
- catch (err) {
250
- return `codex-keychain rollback: failed to rename ${mostRecent} -> ${storagePath}: ${err.message}`;
251
- }
252
- // Re-apply 0o600 after rollback rename (F1 post-merge LOW
253
- // finding). Mirror the chmod applied on the backup-write path
254
- // so a restored file can never end up group/world-readable even
255
- // if the backup's mode drifted between migration and rollback.
256
- // Windows ignores POSIX mode bits, so skip there.
257
- if (process.platform !== "win32") {
258
296
  try {
259
- await fs.chmod(storagePath, 0o600);
297
+ await fs.rename(mostRecent, storagePath);
260
298
  }
261
- catch {
262
- /* non-fatal: file is restored, mode drift is a hardening
263
- * nicety. Swallow to avoid failing the rollback on a
264
- * permission-sensitive mount. */
299
+ catch (err) {
300
+ const renameError = err.message;
301
+ if (preRollbackArchive) {
302
+ // The current file was already archived; try to put it
303
+ // back so this failure doesn't leave the canonical path
304
+ // empty.
305
+ try {
306
+ await fs.rename(preRollbackArchive, storagePath);
307
+ return {
308
+ ok: false,
309
+ message: `codex-keychain rollback: failed to promote backup ${mostRecent} -> ${storagePath}: ${renameError}. Recovered by restoring the previously archived file from ${preRollbackArchive}.`,
310
+ };
311
+ }
312
+ catch (recoveryErr) {
313
+ return {
314
+ ok: false,
315
+ message: `codex-keychain rollback: failed to promote backup ${mostRecent} -> ${storagePath}: ${renameError}. Recovery also failed: could not restore the archived file from ${preRollbackArchive} back to ${storagePath}: ${recoveryErr.message}. Manual intervention required -- check both ${preRollbackArchive} and ${mostRecent}.`,
316
+ };
317
+ }
318
+ }
319
+ return {
320
+ ok: false,
321
+ message: `codex-keychain rollback: failed to rename ${mostRecent} -> ${storagePath}: ${renameError}`,
322
+ };
265
323
  }
324
+ // Best-effort keychain delete now that the backup is active;
325
+ // rollback means "stop trusting the keychain copy", so this
326
+ // runs whenever opt-in is (still) on, mirroring clearAccounts'
327
+ // own opt-in-gated delete. A false/failed delete does not fail
328
+ // the rollback (the JSON file is already authoritative again),
329
+ // but the operator needs to know a stale keychain copy might
330
+ // still be preferred on the next load.
331
+ if (optIn) {
332
+ try {
333
+ const deleted = await deleteFromKeychain(projectKey);
334
+ if (!deleted) {
335
+ warnings.push("codex-keychain rollback: could not confirm the OS-keychain entry was deleted. The keychain copy may still exist and would be preferred over this restored file on the next load -- delete it manually or disable CODEX_KEYCHAIN.");
336
+ }
337
+ }
338
+ catch (err) {
339
+ warnings.push(`codex-keychain rollback: failed to delete the OS-keychain entry: ${err.message}. The keychain copy may still exist and would be preferred over this restored file on the next load -- delete it manually or disable CODEX_KEYCHAIN.`);
340
+ }
341
+ }
342
+ return { ok: true, preRollbackArchive, warnings };
343
+ });
344
+ if (!rollbackResult.ok) {
345
+ return rollbackResult.message;
266
346
  }
267
- // Best-effort keychain delete in case opt-in is still on; the
268
- // storage layer will honour that on subsequent saves.
269
- try {
270
- await deleteFromKeychain(projectKey);
271
- }
272
- catch {
273
- /* already deleted by clearAccounts */
274
- }
347
+ const preRollbackArchive = rollbackResult.preRollbackArchive;
275
348
  const lines = [
276
349
  ...formatUiHeader(ui, "Codex keychain rollback"),
277
350
  "",
@@ -281,6 +354,9 @@ export function createCodexKeychainTool(ctx) {
281
354
  if (preRollbackArchive) {
282
355
  lines.push(formatUiKeyValue(ui, "Previous file archived at", preRollbackArchive));
283
356
  }
357
+ for (const warning of rollbackResult.warnings) {
358
+ lines.push(formatUiItem(ui, warning, "warning"));
359
+ }
284
360
  lines.push(formatUiItem(ui, "To stop using the keychain backend, unset CODEX_KEYCHAIN (or set it to any value other than \"1\") before the next save."));
285
361
  return lines.join("\n");
286
362
  },
@@ -1 +1 @@
1
- {"version":3,"file":"codex-keychain.js","sourceRoot":"","sources":["../../../lib/tools/codex-keychain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-keychain.js","sourceRoot":"","sources":["../../../lib/tools/codex-keychain.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"codex-label.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-label.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AASrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CA+LrE"}
1
+ {"version":3,"file":"codex-label.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-label.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AASrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CAyOrE"}
@@ -3,7 +3,7 @@
3
3
  * Extracted from `index.ts` per RC-1 Phase 2.
4
4
  */
5
5
  import { tool } from "@opencode-ai/plugin/tool";
6
- import { loadAccounts, saveAccounts } from "../storage.js";
6
+ import { loadAccounts, withAccountStorageTransaction } from "../storage.js";
7
7
  import { AccountManager } from "../accounts.js";
8
8
  import { logWarn } from "../logger.js";
9
9
  import { formatUiHeader, formatUiItem, formatUiKeyValue, } from "../ui/format.js";
@@ -23,8 +23,12 @@ export function createCodexLabelTool(ctx) {
23
23
  async execute({ index, label }) {
24
24
  const ui = resolveUiRuntime();
25
25
  const maskEmail = resolveMaskEmail();
26
- const storage = await loadAccounts();
27
- if (!storage || storage.accounts.length === 0) {
26
+ // Read-only snapshot for the "no accounts" / interactive-picker UX.
27
+ // The actual mutate+save runs inside withAccountStorageTransaction
28
+ // below against a freshly re-read snapshot so a concurrent save
29
+ // between this read and the eventual persist can't be clobbered.
30
+ const initialStorage = await loadAccounts();
31
+ if (!initialStorage || initialStorage.accounts.length === 0) {
28
32
  if (ui.v2Enabled) {
29
33
  return [
30
34
  ...formatUiHeader(ui, "Set account label"),
@@ -37,7 +41,7 @@ export function createCodexLabelTool(ctx) {
37
41
  }
38
42
  let resolvedIndex = index;
39
43
  if (resolvedIndex === undefined) {
40
- const selectedIndex = await promptAccountIndexSelection(ui, storage, "Set account label");
44
+ const selectedIndex = await promptAccountIndexSelection(ui, initialStorage, "Set account label");
41
45
  if (selectedIndex === null) {
42
46
  if (supportsInteractiveMenus()) {
43
47
  if (ui.v2Enabled) {
@@ -62,64 +66,86 @@ export function createCodexLabelTool(ctx) {
62
66
  }
63
67
  resolvedIndex = selectedIndex + 1;
64
68
  }
65
- const targetIndex = Math.floor((resolvedIndex ?? 0) - 1);
66
- if (!Number.isFinite(targetIndex) ||
67
- targetIndex < 0 ||
68
- targetIndex >= storage.accounts.length) {
69
+ const normalizedLabel = (label ?? "").trim().replace(/\s+/g, " ");
70
+ if (normalizedLabel.length > 60) {
69
71
  if (ui.v2Enabled) {
70
72
  return [
71
73
  ...formatUiHeader(ui, "Set account label"),
72
74
  "",
73
- formatUiItem(ui, `Invalid account number: ${resolvedIndex}`, "danger"),
74
- formatUiKeyValue(ui, "Valid range", `1-${storage.accounts.length}`, "muted"),
75
+ formatUiItem(ui, "Label is too long (max 60 characters).", "danger"),
75
76
  ].join("\n");
76
77
  }
77
- return `Invalid account number: ${resolvedIndex}\n\nValid range: 1-${storage.accounts.length}`;
78
+ return "Label is too long (max 60 characters).";
78
79
  }
79
- const normalizedLabel = (label ?? "").trim().replace(/\s+/g, " ");
80
- if (normalizedLabel.length > 60) {
80
+ const outcome = await withAccountStorageTransaction(async (current, persist) => {
81
+ const storage = current;
82
+ const accounts = storage?.accounts ?? [];
83
+ const targetIndex = (resolvedIndex ?? 0) - 1;
84
+ if (!Number.isInteger(targetIndex) ||
85
+ targetIndex < 0 ||
86
+ targetIndex >= accounts.length) {
87
+ return { kind: "invalid", accountCount: accounts.length };
88
+ }
89
+ const account = accounts[targetIndex];
90
+ if (!account || !storage) {
91
+ return { kind: "not-found" };
92
+ }
93
+ const previousLabel = account.accountLabel?.trim() ?? "";
94
+ if (normalizedLabel.length === 0) {
95
+ delete account.accountLabel;
96
+ }
97
+ else {
98
+ account.accountLabel = normalizedLabel;
99
+ }
100
+ try {
101
+ await persist(storage);
102
+ }
103
+ catch (saveError) {
104
+ logWarn("Failed to save account label update", {
105
+ error: String(saveError),
106
+ });
107
+ return { kind: "save-failed" };
108
+ }
109
+ const accountLabel = formatCommandAccountLabel(account, targetIndex, {
110
+ maskEmail,
111
+ });
112
+ return { kind: "ok", accountLabel, previousLabel };
113
+ });
114
+ if (outcome.kind === "invalid") {
81
115
  if (ui.v2Enabled) {
82
116
  return [
83
117
  ...formatUiHeader(ui, "Set account label"),
84
118
  "",
85
- formatUiItem(ui, "Label is too long (max 60 characters).", "danger"),
119
+ formatUiItem(ui, `Invalid account number: ${resolvedIndex}`, "danger"),
120
+ formatUiKeyValue(ui, "Valid range", `1-${outcome.accountCount}`, "muted"),
86
121
  ].join("\n");
87
122
  }
88
- return "Label is too long (max 60 characters).";
123
+ return `Invalid account number: ${resolvedIndex}\n\nValid range: 1-${outcome.accountCount}`;
89
124
  }
90
- const account = storage.accounts[targetIndex];
91
- if (!account) {
125
+ if (outcome.kind === "not-found") {
92
126
  return `Account ${resolvedIndex} not found.`;
93
127
  }
94
- const previousLabel = account.accountLabel?.trim() ?? "";
95
- if (normalizedLabel.length === 0) {
96
- delete account.accountLabel;
97
- }
98
- else {
99
- account.accountLabel = normalizedLabel;
100
- }
101
- try {
102
- await saveAccounts(storage);
103
- }
104
- catch (saveError) {
105
- logWarn("Failed to save account label update", {
106
- error: String(saveError),
107
- });
128
+ if (outcome.kind === "save-failed") {
129
+ // The transaction only mutated its in-memory snapshot; the
130
+ // persist() call that would have made the label change durable
131
+ // threw, so the label was never actually updated. Wording must
132
+ // not imply it was (matches the codex-switch/-remove fix for
133
+ // the same pattern).
108
134
  if (ui.v2Enabled) {
109
135
  return [
110
136
  ...formatUiHeader(ui, "Set account label"),
111
137
  "",
112
- formatUiItem(ui, "Label updated in memory but failed to persist.", "danger"),
138
+ formatUiItem(ui, `Failed to set label for account ${resolvedIndex}: account storage could not be updated.`, "danger"),
113
139
  ].join("\n");
114
140
  }
115
- return "Label updated in memory but failed to persist. Changes may be lost on restart.";
141
+ return `Failed to set label for account ${resolvedIndex}: account storage could not be updated.`;
116
142
  }
117
143
  if (cachedAccountManagerRef.current) {
118
144
  const reloadedManager = await AccountManager.loadFromDisk();
119
145
  cachedAccountManagerRef.current = reloadedManager;
120
146
  accountManagerPromiseRef.current = Promise.resolve(reloadedManager);
121
147
  }
122
- const accountLabel = formatCommandAccountLabel(account, targetIndex, { maskEmail });
148
+ const { accountLabel, previousLabel } = outcome;
123
149
  if (ui.v2Enabled) {
124
150
  const statusText = normalizedLabel.length === 0
125
151
  ? `Cleared label for ${accountLabel}`
@@ -1 +1 @@
1
- {"version":3,"file":"codex-label.js","sourceRoot":"","sources":["../../../lib/tools/codex-label.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-label.js","sourceRoot":"","sources":["../../../lib/tools/codex-label.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"codex-refresh.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-refresh.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAKrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CAqFvE"}
1
+ {"version":3,"file":"codex-refresh.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-refresh.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAKrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAoE9C,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CAoIvE"}