codex-multi-auth 0.1.0

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 (327) hide show
  1. package/LICENSE +1 -0
  2. package/README.md +162 -0
  3. package/assets/opencode-logo-ornate-dark.svg +18 -0
  4. package/assets/readme-hero.svg +31 -0
  5. package/config/README.md +87 -0
  6. package/config/minimal-opencode.json +13 -0
  7. package/config/opencode-legacy.json +571 -0
  8. package/config/opencode-modern.json +239 -0
  9. package/dist/index.d.ts +45 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +3160 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/lib/accounts/rate-limits.d.ts +22 -0
  14. package/dist/lib/accounts/rate-limits.d.ts.map +1 -0
  15. package/dist/lib/accounts/rate-limits.js +63 -0
  16. package/dist/lib/accounts/rate-limits.js.map +1 -0
  17. package/dist/lib/accounts.d.ts +95 -0
  18. package/dist/lib/accounts.d.ts.map +1 -0
  19. package/dist/lib/accounts.js +668 -0
  20. package/dist/lib/accounts.js.map +1 -0
  21. package/dist/lib/audit.d.ts +45 -0
  22. package/dist/lib/audit.d.ts.map +1 -0
  23. package/dist/lib/audit.js +131 -0
  24. package/dist/lib/audit.js.map +1 -0
  25. package/dist/lib/auth/auth.d.ts +56 -0
  26. package/dist/lib/auth/auth.d.ts.map +1 -0
  27. package/dist/lib/auth/auth.js +214 -0
  28. package/dist/lib/auth/auth.js.map +1 -0
  29. package/dist/lib/auth/browser.d.ts +34 -0
  30. package/dist/lib/auth/browser.d.ts.map +1 -0
  31. package/dist/lib/auth/browser.js +185 -0
  32. package/dist/lib/auth/browser.js.map +1 -0
  33. package/dist/lib/auth/server.d.ts +24 -0
  34. package/dist/lib/auth/server.d.ts.map +1 -0
  35. package/dist/lib/auth/server.js +116 -0
  36. package/dist/lib/auth/server.js.map +1 -0
  37. package/dist/lib/auth/token-utils.d.ts +59 -0
  38. package/dist/lib/auth/token-utils.d.ts.map +1 -0
  39. package/dist/lib/auth/token-utils.js +331 -0
  40. package/dist/lib/auth/token-utils.js.map +1 -0
  41. package/dist/lib/auth-rate-limit.d.ts +20 -0
  42. package/dist/lib/auth-rate-limit.d.ts.map +1 -0
  43. package/dist/lib/auth-rate-limit.js +91 -0
  44. package/dist/lib/auth-rate-limit.js.map +1 -0
  45. package/dist/lib/auto-update-checker.d.ts +10 -0
  46. package/dist/lib/auto-update-checker.d.ts.map +1 -0
  47. package/dist/lib/auto-update-checker.js +216 -0
  48. package/dist/lib/auto-update-checker.js.map +1 -0
  49. package/dist/lib/capability-policy.d.ts +18 -0
  50. package/dist/lib/capability-policy.d.ts.map +1 -0
  51. package/dist/lib/capability-policy.js +150 -0
  52. package/dist/lib/capability-policy.js.map +1 -0
  53. package/dist/lib/circuit-breaker.d.ts +34 -0
  54. package/dist/lib/circuit-breaker.d.ts.map +1 -0
  55. package/dist/lib/circuit-breaker.js +124 -0
  56. package/dist/lib/circuit-breaker.js.map +1 -0
  57. package/dist/lib/cli.d.ts +64 -0
  58. package/dist/lib/cli.d.ts.map +1 -0
  59. package/dist/lib/cli.js +274 -0
  60. package/dist/lib/cli.js.map +1 -0
  61. package/dist/lib/codex-cli/observability.d.ts +22 -0
  62. package/dist/lib/codex-cli/observability.d.ts.map +1 -0
  63. package/dist/lib/codex-cli/observability.js +36 -0
  64. package/dist/lib/codex-cli/observability.js.map +1 -0
  65. package/dist/lib/codex-cli/state.d.ts +86 -0
  66. package/dist/lib/codex-cli/state.d.ts.map +1 -0
  67. package/dist/lib/codex-cli/state.js +470 -0
  68. package/dist/lib/codex-cli/state.js.map +1 -0
  69. package/dist/lib/codex-cli/sync.d.ts +27 -0
  70. package/dist/lib/codex-cli/sync.d.ts.map +1 -0
  71. package/dist/lib/codex-cli/sync.js +325 -0
  72. package/dist/lib/codex-cli/sync.js.map +1 -0
  73. package/dist/lib/codex-cli/writer.d.ts +12 -0
  74. package/dist/lib/codex-cli/writer.d.ts.map +1 -0
  75. package/dist/lib/codex-cli/writer.js +388 -0
  76. package/dist/lib/codex-cli/writer.js.map +1 -0
  77. package/dist/lib/codex-manager.d.ts +2 -0
  78. package/dist/lib/codex-manager.d.ts.map +1 -0
  79. package/dist/lib/codex-manager.js +4841 -0
  80. package/dist/lib/codex-manager.js.map +1 -0
  81. package/dist/lib/config.d.ts +269 -0
  82. package/dist/lib/config.d.ts.map +1 -0
  83. package/dist/lib/config.js +789 -0
  84. package/dist/lib/config.js.map +1 -0
  85. package/dist/lib/constants.d.ts +78 -0
  86. package/dist/lib/constants.d.ts.map +1 -0
  87. package/dist/lib/constants.js +78 -0
  88. package/dist/lib/constants.js.map +1 -0
  89. package/dist/lib/context-overflow.d.ts +27 -0
  90. package/dist/lib/context-overflow.d.ts.map +1 -0
  91. package/dist/lib/context-overflow.js +124 -0
  92. package/dist/lib/context-overflow.js.map +1 -0
  93. package/dist/lib/dashboard-settings.d.ts +90 -0
  94. package/dist/lib/dashboard-settings.d.ts.map +1 -0
  95. package/dist/lib/dashboard-settings.js +327 -0
  96. package/dist/lib/dashboard-settings.js.map +1 -0
  97. package/dist/lib/entitlement-cache.d.ts +41 -0
  98. package/dist/lib/entitlement-cache.d.ts.map +1 -0
  99. package/dist/lib/entitlement-cache.js +137 -0
  100. package/dist/lib/entitlement-cache.js.map +1 -0
  101. package/dist/lib/errors.d.ts +113 -0
  102. package/dist/lib/errors.d.ts.map +1 -0
  103. package/dist/lib/errors.js +103 -0
  104. package/dist/lib/errors.js.map +1 -0
  105. package/dist/lib/forecast.d.ts +42 -0
  106. package/dist/lib/forecast.d.ts.map +1 -0
  107. package/dist/lib/forecast.js +256 -0
  108. package/dist/lib/forecast.js.map +1 -0
  109. package/dist/lib/health.d.ts +33 -0
  110. package/dist/lib/health.d.ts.map +1 -0
  111. package/dist/lib/health.js +70 -0
  112. package/dist/lib/health.js.map +1 -0
  113. package/dist/lib/index.d.ts +32 -0
  114. package/dist/lib/index.d.ts.map +1 -0
  115. package/dist/lib/index.js +32 -0
  116. package/dist/lib/index.js.map +1 -0
  117. package/dist/lib/live-account-sync.d.ts +39 -0
  118. package/dist/lib/live-account-sync.d.ts.map +1 -0
  119. package/dist/lib/live-account-sync.js +196 -0
  120. package/dist/lib/live-account-sync.js.map +1 -0
  121. package/dist/lib/logger.d.ts +40 -0
  122. package/dist/lib/logger.d.ts.map +1 -0
  123. package/dist/lib/logger.js +364 -0
  124. package/dist/lib/logger.js.map +1 -0
  125. package/dist/lib/oauth-success.html +338 -0
  126. package/dist/lib/parallel-probe.d.ts +28 -0
  127. package/dist/lib/parallel-probe.d.ts.map +1 -0
  128. package/dist/lib/parallel-probe.js +97 -0
  129. package/dist/lib/parallel-probe.js.map +1 -0
  130. package/dist/lib/preemptive-quota-scheduler.d.ts +53 -0
  131. package/dist/lib/preemptive-quota-scheduler.d.ts.map +1 -0
  132. package/dist/lib/preemptive-quota-scheduler.js +220 -0
  133. package/dist/lib/preemptive-quota-scheduler.js.map +1 -0
  134. package/dist/lib/proactive-refresh.d.ts +66 -0
  135. package/dist/lib/proactive-refresh.d.ts.map +1 -0
  136. package/dist/lib/proactive-refresh.js +143 -0
  137. package/dist/lib/proactive-refresh.js.map +1 -0
  138. package/dist/lib/prompts/codex-opencode-bridge.d.ts +19 -0
  139. package/dist/lib/prompts/codex-opencode-bridge.d.ts.map +1 -0
  140. package/dist/lib/prompts/codex-opencode-bridge.js +169 -0
  141. package/dist/lib/prompts/codex-opencode-bridge.js.map +1 -0
  142. package/dist/lib/prompts/codex.d.ts +41 -0
  143. package/dist/lib/prompts/codex.d.ts.map +1 -0
  144. package/dist/lib/prompts/codex.js +383 -0
  145. package/dist/lib/prompts/codex.js.map +1 -0
  146. package/dist/lib/prompts/opencode-codex.d.ts +25 -0
  147. package/dist/lib/prompts/opencode-codex.d.ts.map +1 -0
  148. package/dist/lib/prompts/opencode-codex.js +270 -0
  149. package/dist/lib/prompts/opencode-codex.js.map +1 -0
  150. package/dist/lib/quota-cache.d.ts +68 -0
  151. package/dist/lib/quota-cache.d.ts.map +1 -0
  152. package/dist/lib/quota-cache.js +224 -0
  153. package/dist/lib/quota-cache.js.map +1 -0
  154. package/dist/lib/quota-probe.d.ts +49 -0
  155. package/dist/lib/quota-probe.d.ts.map +1 -0
  156. package/dist/lib/quota-probe.js +368 -0
  157. package/dist/lib/quota-probe.js.map +1 -0
  158. package/dist/lib/recovery/constants.d.ts +12 -0
  159. package/dist/lib/recovery/constants.d.ts.map +1 -0
  160. package/dist/lib/recovery/constants.js +31 -0
  161. package/dist/lib/recovery/constants.js.map +1 -0
  162. package/dist/lib/recovery/index.d.ts +12 -0
  163. package/dist/lib/recovery/index.d.ts.map +1 -0
  164. package/dist/lib/recovery/index.js +12 -0
  165. package/dist/lib/recovery/index.js.map +1 -0
  166. package/dist/lib/recovery/storage.d.ts +24 -0
  167. package/dist/lib/recovery/storage.d.ts.map +1 -0
  168. package/dist/lib/recovery/storage.js +362 -0
  169. package/dist/lib/recovery/storage.js.map +1 -0
  170. package/dist/lib/recovery/types.d.ts +116 -0
  171. package/dist/lib/recovery/types.d.ts.map +1 -0
  172. package/dist/lib/recovery/types.js +7 -0
  173. package/dist/lib/recovery/types.js.map +1 -0
  174. package/dist/lib/recovery.d.ts +31 -0
  175. package/dist/lib/recovery.d.ts.map +1 -0
  176. package/dist/lib/recovery.js +313 -0
  177. package/dist/lib/recovery.js.map +1 -0
  178. package/dist/lib/refresh-guardian.d.ts +31 -0
  179. package/dist/lib/refresh-guardian.d.ts.map +1 -0
  180. package/dist/lib/refresh-guardian.js +151 -0
  181. package/dist/lib/refresh-guardian.js.map +1 -0
  182. package/dist/lib/refresh-lease.d.ts +37 -0
  183. package/dist/lib/refresh-lease.d.ts.map +1 -0
  184. package/dist/lib/refresh-lease.js +335 -0
  185. package/dist/lib/refresh-lease.js.map +1 -0
  186. package/dist/lib/refresh-queue.d.ts +117 -0
  187. package/dist/lib/refresh-queue.d.ts.map +1 -0
  188. package/dist/lib/refresh-queue.js +297 -0
  189. package/dist/lib/refresh-queue.js.map +1 -0
  190. package/dist/lib/request/failure-policy.d.ts +42 -0
  191. package/dist/lib/request/failure-policy.d.ts.map +1 -0
  192. package/dist/lib/request/failure-policy.js +133 -0
  193. package/dist/lib/request/failure-policy.js.map +1 -0
  194. package/dist/lib/request/fetch-helpers.d.ts +152 -0
  195. package/dist/lib/request/fetch-helpers.d.ts.map +1 -0
  196. package/dist/lib/request/fetch-helpers.js +704 -0
  197. package/dist/lib/request/fetch-helpers.js.map +1 -0
  198. package/dist/lib/request/helpers/input-utils.d.ts +7 -0
  199. package/dist/lib/request/helpers/input-utils.d.ts.map +1 -0
  200. package/dist/lib/request/helpers/input-utils.js +214 -0
  201. package/dist/lib/request/helpers/input-utils.js.map +1 -0
  202. package/dist/lib/request/helpers/model-map.d.ts +28 -0
  203. package/dist/lib/request/helpers/model-map.d.ts.map +1 -0
  204. package/dist/lib/request/helpers/model-map.js +133 -0
  205. package/dist/lib/request/helpers/model-map.js.map +1 -0
  206. package/dist/lib/request/helpers/tool-utils.d.ts +29 -0
  207. package/dist/lib/request/helpers/tool-utils.d.ts.map +1 -0
  208. package/dist/lib/request/helpers/tool-utils.js +117 -0
  209. package/dist/lib/request/helpers/tool-utils.js.map +1 -0
  210. package/dist/lib/request/rate-limit-backoff.d.ts +17 -0
  211. package/dist/lib/request/rate-limit-backoff.d.ts.map +1 -0
  212. package/dist/lib/request/rate-limit-backoff.js +83 -0
  213. package/dist/lib/request/rate-limit-backoff.js.map +1 -0
  214. package/dist/lib/request/request-transformer.d.ts +107 -0
  215. package/dist/lib/request/request-transformer.d.ts.map +1 -0
  216. package/dist/lib/request/request-transformer.js +814 -0
  217. package/dist/lib/request/request-transformer.js.map +1 -0
  218. package/dist/lib/request/response-handler.d.ts +23 -0
  219. package/dist/lib/request/response-handler.d.ts.map +1 -0
  220. package/dist/lib/request/response-handler.js +155 -0
  221. package/dist/lib/request/response-handler.js.map +1 -0
  222. package/dist/lib/request/stream-failover.d.ts +21 -0
  223. package/dist/lib/request/stream-failover.d.ts.map +1 -0
  224. package/dist/lib/request/stream-failover.js +204 -0
  225. package/dist/lib/request/stream-failover.js.map +1 -0
  226. package/dist/lib/rotation.d.ts +146 -0
  227. package/dist/lib/rotation.d.ts.map +1 -0
  228. package/dist/lib/rotation.js +321 -0
  229. package/dist/lib/rotation.js.map +1 -0
  230. package/dist/lib/runtime-paths.d.ts +58 -0
  231. package/dist/lib/runtime-paths.d.ts.map +1 -0
  232. package/dist/lib/runtime-paths.js +164 -0
  233. package/dist/lib/runtime-paths.js.map +1 -0
  234. package/dist/lib/schemas.d.ts +435 -0
  235. package/dist/lib/schemas.d.ts.map +1 -0
  236. package/dist/lib/schemas.js +268 -0
  237. package/dist/lib/schemas.js.map +1 -0
  238. package/dist/lib/session-affinity.d.ts +23 -0
  239. package/dist/lib/session-affinity.d.ts.map +1 -0
  240. package/dist/lib/session-affinity.js +127 -0
  241. package/dist/lib/session-affinity.js.map +1 -0
  242. package/dist/lib/shutdown.d.ts +7 -0
  243. package/dist/lib/shutdown.d.ts.map +1 -0
  244. package/dist/lib/shutdown.js +43 -0
  245. package/dist/lib/shutdown.js.map +1 -0
  246. package/dist/lib/storage/migrations.d.ts +59 -0
  247. package/dist/lib/storage/migrations.d.ts.map +1 -0
  248. package/dist/lib/storage/migrations.js +41 -0
  249. package/dist/lib/storage/migrations.js.map +1 -0
  250. package/dist/lib/storage/paths.d.ts +51 -0
  251. package/dist/lib/storage/paths.d.ts.map +1 -0
  252. package/dist/lib/storage/paths.js +152 -0
  253. package/dist/lib/storage/paths.js.map +1 -0
  254. package/dist/lib/storage.d.ts +106 -0
  255. package/dist/lib/storage.d.ts.map +1 -0
  256. package/dist/lib/storage.js +896 -0
  257. package/dist/lib/storage.js.map +1 -0
  258. package/dist/lib/table-formatter.d.ts +32 -0
  259. package/dist/lib/table-formatter.d.ts.map +1 -0
  260. package/dist/lib/table-formatter.js +44 -0
  261. package/dist/lib/table-formatter.js.map +1 -0
  262. package/dist/lib/tools/hashline-tools.d.ts +51 -0
  263. package/dist/lib/tools/hashline-tools.d.ts.map +1 -0
  264. package/dist/lib/tools/hashline-tools.js +456 -0
  265. package/dist/lib/tools/hashline-tools.js.map +1 -0
  266. package/dist/lib/types.d.ts +130 -0
  267. package/dist/lib/types.d.ts.map +1 -0
  268. package/dist/lib/types.js +2 -0
  269. package/dist/lib/types.js.map +1 -0
  270. package/dist/lib/ui/ansi.d.ts +40 -0
  271. package/dist/lib/ui/ansi.d.ts.map +1 -0
  272. package/dist/lib/ui/ansi.js +68 -0
  273. package/dist/lib/ui/ansi.js.map +1 -0
  274. package/dist/lib/ui/auth-menu.d.ts +76 -0
  275. package/dist/lib/ui/auth-menu.d.ts.map +1 -0
  276. package/dist/lib/ui/auth-menu.js +590 -0
  277. package/dist/lib/ui/auth-menu.js.map +1 -0
  278. package/dist/lib/ui/confirm.d.ts +11 -0
  279. package/dist/lib/ui/confirm.d.ts.map +1 -0
  280. package/dist/lib/ui/confirm.js +29 -0
  281. package/dist/lib/ui/confirm.js.map +1 -0
  282. package/dist/lib/ui/copy.d.ts +123 -0
  283. package/dist/lib/ui/copy.d.ts.map +1 -0
  284. package/dist/lib/ui/copy.js +127 -0
  285. package/dist/lib/ui/copy.js.map +1 -0
  286. package/dist/lib/ui/format.d.ts +62 -0
  287. package/dist/lib/ui/format.d.ts.map +1 -0
  288. package/dist/lib/ui/format.js +205 -0
  289. package/dist/lib/ui/format.js.map +1 -0
  290. package/dist/lib/ui/runtime.d.ts +43 -0
  291. package/dist/lib/ui/runtime.d.ts.map +1 -0
  292. package/dist/lib/ui/runtime.js +69 -0
  293. package/dist/lib/ui/runtime.js.map +1 -0
  294. package/dist/lib/ui/select.d.ts +60 -0
  295. package/dist/lib/ui/select.d.ts.map +1 -0
  296. package/dist/lib/ui/select.js +467 -0
  297. package/dist/lib/ui/select.js.map +1 -0
  298. package/dist/lib/ui/theme.d.ts +56 -0
  299. package/dist/lib/ui/theme.d.ts.map +1 -0
  300. package/dist/lib/ui/theme.js +186 -0
  301. package/dist/lib/ui/theme.js.map +1 -0
  302. package/dist/lib/unified-settings.d.ts +71 -0
  303. package/dist/lib/unified-settings.d.ts.map +1 -0
  304. package/dist/lib/unified-settings.js +299 -0
  305. package/dist/lib/unified-settings.js.map +1 -0
  306. package/dist/lib/utils.d.ts +29 -0
  307. package/dist/lib/utils.d.ts.map +1 -0
  308. package/dist/lib/utils.js +54 -0
  309. package/dist/lib/utils.js.map +1 -0
  310. package/package.json +115 -0
  311. package/scripts/audit-dev-allowlist.js +128 -0
  312. package/scripts/bench-format/hashline-v2.mjs +642 -0
  313. package/scripts/bench-format/models.mjs +105 -0
  314. package/scripts/bench-format/opencode.mjs +205 -0
  315. package/scripts/bench-format/render.mjs +496 -0
  316. package/scripts/bench-format/stats.mjs +54 -0
  317. package/scripts/bench-format/tasks.mjs +151 -0
  318. package/scripts/benchmark-edit-formats.mjs +1161 -0
  319. package/scripts/benchmark-render-dashboard.mjs +49 -0
  320. package/scripts/codex-multi-auth.js +6 -0
  321. package/scripts/codex-routing.js +34 -0
  322. package/scripts/codex.js +122 -0
  323. package/scripts/copy-oauth-success.js +37 -0
  324. package/scripts/install-opencode-codex-auth.js +193 -0
  325. package/scripts/test-all-models.sh +7 -0
  326. package/scripts/test-model-matrix.js +424 -0
  327. package/scripts/validate-model-map.sh +7 -0
@@ -0,0 +1,388 @@
1
+ import { existsSync, promises as fs } from "node:fs";
2
+ import { dirname } from "node:path";
3
+ import { createLogger } from "../logger.js";
4
+ import { clearCodexCliStateCache, getCodexCliAccountsPath, getCodexCliAuthPath, isCodexCliSyncEnabled, } from "./state.js";
5
+ import { incrementCodexCliMetric, makeAccountFingerprint, } from "./observability.js";
6
+ const log = createLogger("codex-cli-writer");
7
+ let lastCodexCliSelectionWriteAt = 0;
8
+ let activeSelectionWriteQueue = Promise.resolve();
9
+ function isRecord(value) {
10
+ return !!value && typeof value === "object" && !Array.isArray(value);
11
+ }
12
+ function readTrimmedString(value) {
13
+ if (typeof value !== "string")
14
+ return undefined;
15
+ const trimmed = value.trim();
16
+ return trimmed.length > 0 ? trimmed : undefined;
17
+ }
18
+ function readNumber(value) {
19
+ if (typeof value === "number" && Number.isFinite(value))
20
+ return value;
21
+ if (typeof value === "string") {
22
+ const parsed = Number(value);
23
+ if (Number.isFinite(parsed))
24
+ return parsed;
25
+ }
26
+ return undefined;
27
+ }
28
+ function extractTokenFromRecord(record, keys) {
29
+ for (const key of keys) {
30
+ const token = readTrimmedString(record[key]);
31
+ if (token)
32
+ return token;
33
+ }
34
+ return undefined;
35
+ }
36
+ function normalizeEmail(value) {
37
+ if (typeof value !== "string")
38
+ return undefined;
39
+ const trimmed = value.trim().toLowerCase();
40
+ return trimmed.length > 0 ? trimmed : undefined;
41
+ }
42
+ function readAccountId(record) {
43
+ const keys = ["accountId", "account_id", "workspace_id", "organization_id", "id"];
44
+ for (const key of keys) {
45
+ const value = record[key];
46
+ if (typeof value !== "string")
47
+ continue;
48
+ const trimmed = value.trim();
49
+ if (trimmed.length > 0)
50
+ return trimmed;
51
+ }
52
+ return undefined;
53
+ }
54
+ function extractSelectionFromAccountRecord(record) {
55
+ const auth = isRecord(record.auth) ? record.auth : undefined;
56
+ const tokens = auth && isRecord(auth.tokens) ? auth.tokens : undefined;
57
+ const accessToken = extractTokenFromRecord(record, ["accessToken", "access_token"]) ??
58
+ (tokens ? extractTokenFromRecord(tokens, ["access_token", "accessToken"]) : undefined);
59
+ const refreshToken = extractTokenFromRecord(record, ["refreshToken", "refresh_token"]) ??
60
+ (tokens ? extractTokenFromRecord(tokens, ["refresh_token", "refreshToken"]) : undefined);
61
+ const accountId = readAccountId(record) ??
62
+ (tokens ? readTrimmedString(tokens.account_id) ?? readTrimmedString(tokens.accountId) : undefined);
63
+ const idToken = extractTokenFromRecord(record, ["idToken", "id_token"]) ??
64
+ (tokens ? extractTokenFromRecord(tokens, ["id_token", "idToken"]) : undefined);
65
+ const email = normalizeEmail(record.email) ??
66
+ normalizeEmail(record.user_email) ??
67
+ normalizeEmail(record.username);
68
+ const expiresAt = readNumber(record.expiresAt) ??
69
+ readNumber(record.expires_at) ??
70
+ (tokens ? readNumber(tokens.expires_at) : undefined);
71
+ return {
72
+ accountId,
73
+ email,
74
+ accessToken,
75
+ refreshToken,
76
+ expiresAt,
77
+ idToken,
78
+ };
79
+ }
80
+ function resolveMatchIndex(accounts, selection) {
81
+ const desiredId = selection.accountId?.trim();
82
+ const desiredEmail = normalizeEmail(selection.email);
83
+ if (desiredId) {
84
+ const byId = accounts.findIndex((entry) => {
85
+ if (!isRecord(entry))
86
+ return false;
87
+ return readAccountId(entry) === desiredId;
88
+ });
89
+ if (byId >= 0)
90
+ return byId;
91
+ }
92
+ if (desiredEmail) {
93
+ const byEmail = accounts.findIndex((entry) => {
94
+ if (!isRecord(entry))
95
+ return false;
96
+ return normalizeEmail(entry.email) === desiredEmail;
97
+ });
98
+ if (byEmail >= 0)
99
+ return byEmail;
100
+ }
101
+ return -1;
102
+ }
103
+ function toIsoTime(ms) {
104
+ if (typeof ms === "number" && Number.isFinite(ms) && ms > 0) {
105
+ return new Date(ms).toISOString();
106
+ }
107
+ return new Date().toISOString();
108
+ }
109
+ async function atomicWriteJson(path, payload) {
110
+ const tempPath = `${path}.${Date.now()}.${Math.random().toString(36).slice(2, 8)}.tmp`;
111
+ await fs.mkdir(dirname(path), { recursive: true });
112
+ try {
113
+ await fs.writeFile(tempPath, JSON.stringify(payload, null, 2), {
114
+ encoding: "utf-8",
115
+ mode: 0o600,
116
+ });
117
+ let lastRenameError = null;
118
+ for (let attempt = 0; attempt < 5; attempt += 1) {
119
+ try {
120
+ await fs.rename(tempPath, path);
121
+ return;
122
+ }
123
+ catch (error) {
124
+ const code = error.code;
125
+ if (code === "EPERM" || code === "EBUSY") {
126
+ lastRenameError = error;
127
+ await new Promise((resolve) => setTimeout(resolve, 10 * 2 ** attempt));
128
+ continue;
129
+ }
130
+ throw error;
131
+ }
132
+ }
133
+ if (lastRenameError)
134
+ throw lastRenameError;
135
+ }
136
+ finally {
137
+ try {
138
+ await fs.unlink(tempPath);
139
+ }
140
+ catch {
141
+ // Best effort temp-file cleanup.
142
+ }
143
+ }
144
+ }
145
+ async function writeCodexAuthState(path, selection) {
146
+ const raw = existsSync(path) ? await fs.readFile(path, "utf-8") : "{}";
147
+ const parsed = JSON.parse(raw);
148
+ if (!isRecord(parsed)) {
149
+ log.warn("Failed to persist Codex auth selection", {
150
+ operation: "write-active-selection",
151
+ outcome: "malformed-auth-state",
152
+ path,
153
+ });
154
+ return false;
155
+ }
156
+ const existingTokens = isRecord(parsed.tokens) ? parsed.tokens : {};
157
+ const next = { ...parsed };
158
+ const nextTokens = { ...existingTokens };
159
+ const syncVersion = Date.now();
160
+ const selectedAccessToken = readTrimmedString(selection.accessToken);
161
+ const selectedRefreshToken = readTrimmedString(selection.refreshToken);
162
+ const accessToken = selectedAccessToken ??
163
+ (typeof existingTokens.access_token === "string" ? existingTokens.access_token : undefined);
164
+ const refreshToken = selectedRefreshToken ??
165
+ (typeof existingTokens.refresh_token === "string" ? existingTokens.refresh_token : undefined);
166
+ if (!accessToken || !refreshToken) {
167
+ log.warn("Failed to persist Codex auth selection", {
168
+ operation: "write-active-selection",
169
+ outcome: "missing-token-payload",
170
+ path,
171
+ accountRef: makeAccountFingerprint({
172
+ accountId: selection.accountId,
173
+ email: selection.email,
174
+ }),
175
+ });
176
+ return false;
177
+ }
178
+ next.auth_mode = typeof parsed.auth_mode === "string" ? parsed.auth_mode : "chatgpt";
179
+ next.OPENAI_API_KEY = null;
180
+ const selectedEmail = normalizeEmail(selection.email);
181
+ if (selectedEmail) {
182
+ next.email = selectedEmail;
183
+ }
184
+ nextTokens.access_token = accessToken;
185
+ nextTokens.refresh_token = refreshToken;
186
+ const resolvedIdToken = readTrimmedString(selection.idToken) ??
187
+ (typeof existingTokens.id_token === "string" ? existingTokens.id_token : undefined);
188
+ if (resolvedIdToken) {
189
+ nextTokens.id_token = resolvedIdToken;
190
+ }
191
+ if (selection.accountId?.trim()) {
192
+ nextTokens.account_id = selection.accountId.trim();
193
+ }
194
+ next.tokens = nextTokens;
195
+ next.last_refresh = toIsoTime(selection.expiresAt);
196
+ next.codexMultiAuthSyncVersion = syncVersion;
197
+ await atomicWriteJson(path, next);
198
+ lastCodexCliSelectionWriteAt = Math.max(lastCodexCliSelectionWriteAt, syncVersion);
199
+ return true;
200
+ }
201
+ async function enqueueActiveSelectionWrite(task) {
202
+ let releaseQueue;
203
+ const queueTail = new Promise((resolve) => {
204
+ releaseQueue = resolve;
205
+ });
206
+ const previous = activeSelectionWriteQueue;
207
+ activeSelectionWriteQueue = previous
208
+ .catch(() => {
209
+ // Keep queue alive even if a previous task failed.
210
+ })
211
+ .then(() => queueTail);
212
+ await previous.catch(() => {
213
+ // Ignore previous failure, current task still runs.
214
+ });
215
+ try {
216
+ return await task();
217
+ }
218
+ finally {
219
+ releaseQueue();
220
+ }
221
+ }
222
+ export async function setCodexCliActiveSelection(selection) {
223
+ return enqueueActiveSelectionWrite(async () => {
224
+ if (!isCodexCliSyncEnabled())
225
+ return false;
226
+ incrementCodexCliMetric("writeAttempts");
227
+ const accountsPath = getCodexCliAccountsPath();
228
+ const authPath = getCodexCliAuthPath();
229
+ const hasAccountsPath = existsSync(accountsPath);
230
+ const hasAuthPath = existsSync(authPath);
231
+ if (!hasAccountsPath && !hasAuthPath) {
232
+ incrementCodexCliMetric("writeFailures");
233
+ return false;
234
+ }
235
+ try {
236
+ let resolvedSelection = { ...selection };
237
+ let wroteAccounts = false;
238
+ let wroteAuth = false;
239
+ if (hasAccountsPath) {
240
+ const raw = await fs.readFile(accountsPath, "utf-8");
241
+ const parsed = JSON.parse(raw);
242
+ if (!isRecord(parsed) || !Array.isArray(parsed.accounts)) {
243
+ log.warn("Failed to persist Codex CLI active selection", {
244
+ operation: "write-active-selection",
245
+ outcome: "malformed",
246
+ path: accountsPath,
247
+ });
248
+ }
249
+ else {
250
+ const matchIndex = resolveMatchIndex(parsed.accounts, selection);
251
+ if (matchIndex < 0) {
252
+ const hasSelectionTokens = typeof selection.accessToken === "string" &&
253
+ selection.accessToken.trim().length > 0 &&
254
+ typeof selection.refreshToken === "string" &&
255
+ selection.refreshToken.trim().length > 0;
256
+ log.warn("Failed to persist Codex CLI active selection", {
257
+ operation: "write-active-selection",
258
+ outcome: "no-match",
259
+ path: accountsPath,
260
+ accountRef: makeAccountFingerprint({
261
+ accountId: selection.accountId,
262
+ email: selection.email,
263
+ }),
264
+ });
265
+ if (!hasAuthPath || !hasSelectionTokens) {
266
+ incrementCodexCliMetric("writeFailures");
267
+ return false;
268
+ }
269
+ }
270
+ else {
271
+ const chosen = parsed.accounts[matchIndex];
272
+ if (!isRecord(chosen)) {
273
+ log.warn("Failed to persist Codex CLI active selection", {
274
+ operation: "write-active-selection",
275
+ outcome: "invalid-account-record",
276
+ path: accountsPath,
277
+ });
278
+ if (!hasAuthPath) {
279
+ incrementCodexCliMetric("writeFailures");
280
+ return false;
281
+ }
282
+ }
283
+ else {
284
+ const chosenSelection = extractSelectionFromAccountRecord(chosen);
285
+ resolvedSelection = {
286
+ ...resolvedSelection,
287
+ accountId: resolvedSelection.accountId ?? chosenSelection.accountId,
288
+ email: resolvedSelection.email ?? chosenSelection.email,
289
+ accessToken: resolvedSelection.accessToken ?? chosenSelection.accessToken,
290
+ refreshToken: resolvedSelection.refreshToken ?? chosenSelection.refreshToken,
291
+ expiresAt: resolvedSelection.expiresAt ?? chosenSelection.expiresAt,
292
+ idToken: resolvedSelection.idToken ?? chosenSelection.idToken,
293
+ };
294
+ const next = { ...parsed };
295
+ const syncVersion = Date.now();
296
+ const chosenAccountId = readAccountId(chosen) ?? selection.accountId?.trim();
297
+ const chosenEmail = normalizeEmail(chosen.email) ?? normalizeEmail(selection.email);
298
+ if (chosenAccountId) {
299
+ next.activeAccountId = chosenAccountId;
300
+ next.active_account_id = chosenAccountId;
301
+ }
302
+ if (chosenEmail) {
303
+ next.activeEmail = chosenEmail;
304
+ next.active_email = chosenEmail;
305
+ }
306
+ next.accounts = parsed.accounts.map((entry, index) => {
307
+ if (!isRecord(entry))
308
+ return entry;
309
+ const updated = { ...entry };
310
+ updated.active = index === matchIndex;
311
+ updated.isActive = index === matchIndex;
312
+ updated.is_active = index === matchIndex;
313
+ return updated;
314
+ });
315
+ next.codexMultiAuthSyncVersion = syncVersion;
316
+ await atomicWriteJson(accountsPath, next);
317
+ lastCodexCliSelectionWriteAt = Math.max(lastCodexCliSelectionWriteAt, syncVersion);
318
+ wroteAccounts = true;
319
+ log.debug("Persisted Codex CLI accounts selection", {
320
+ operation: "write-active-selection",
321
+ outcome: "success",
322
+ path: accountsPath,
323
+ accountRef: makeAccountFingerprint({
324
+ accountId: chosenAccountId,
325
+ email: chosenEmail,
326
+ }),
327
+ });
328
+ }
329
+ }
330
+ }
331
+ }
332
+ if (hasAuthPath) {
333
+ wroteAuth = await writeCodexAuthState(authPath, resolvedSelection);
334
+ if (!wroteAuth) {
335
+ if (!wroteAccounts) {
336
+ incrementCodexCliMetric("writeFailures");
337
+ return false;
338
+ }
339
+ log.warn("Codex auth state update skipped after accounts selection update", {
340
+ operation: "write-active-selection",
341
+ outcome: "accounts-updated-auth-failed",
342
+ path: authPath,
343
+ accountRef: makeAccountFingerprint({
344
+ accountId: resolvedSelection.accountId,
345
+ email: resolvedSelection.email,
346
+ }),
347
+ });
348
+ }
349
+ else {
350
+ log.debug("Persisted Codex auth active selection", {
351
+ operation: "write-active-selection",
352
+ outcome: "success",
353
+ path: authPath,
354
+ accountRef: makeAccountFingerprint({
355
+ accountId: resolvedSelection.accountId,
356
+ email: resolvedSelection.email,
357
+ }),
358
+ });
359
+ }
360
+ }
361
+ if (wroteAccounts || wroteAuth) {
362
+ clearCodexCliStateCache();
363
+ incrementCodexCliMetric("writeSuccesses");
364
+ return true;
365
+ }
366
+ incrementCodexCliMetric("writeFailures");
367
+ return false;
368
+ }
369
+ catch (error) {
370
+ incrementCodexCliMetric("writeFailures");
371
+ log.warn("Failed to persist Codex CLI active selection", {
372
+ operation: "write-active-selection",
373
+ outcome: "error",
374
+ path: hasAccountsPath ? accountsPath : authPath,
375
+ accountRef: makeAccountFingerprint({
376
+ accountId: selection.accountId,
377
+ email: selection.email,
378
+ }),
379
+ error: String(error),
380
+ });
381
+ return false;
382
+ }
383
+ });
384
+ }
385
+ export function getLastCodexCliSelectionWriteTimestamp() {
386
+ return lastCodexCliSelectionWriteAt;
387
+ }
388
+ //# sourceMappingURL=writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../../lib/codex-cli/writer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runCodexMultiAuthCli(rawArgs: string[]): Promise<number>;
2
+ //# sourceMappingURL=codex-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-manager.d.ts","sourceRoot":"","sources":["../../lib/codex-manager.ts"],"names":[],"mappings":"AAy/KA,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA6D7E"}