@tokensrc/codex 1.13.4 → 1.14.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 (76) hide show
  1. package/README.md +79 -3
  2. package/dist/client.d.ts +29 -1
  3. package/dist/client.js +221 -2
  4. package/dist/client.js.map +1 -1
  5. package/dist/command-directory.d.ts +1 -0
  6. package/dist/command-directory.js +3 -2
  7. package/dist/command-directory.js.map +1 -1
  8. package/dist/commands.d.ts +8 -2
  9. package/dist/commands.js +567 -40
  10. package/dist/commands.js.map +1 -1
  11. package/dist/console-status.js +1 -1
  12. package/dist/console-status.js.map +1 -1
  13. package/dist/credential-supervisor.d.ts +17 -0
  14. package/dist/credential-supervisor.js +84 -0
  15. package/dist/credential-supervisor.js.map +1 -0
  16. package/dist/credentials.d.ts +75 -3
  17. package/dist/credentials.js +357 -12
  18. package/dist/credentials.js.map +1 -1
  19. package/dist/enrollment-envelope.d.ts +18 -0
  20. package/dist/enrollment-envelope.js +112 -0
  21. package/dist/enrollment-envelope.js.map +1 -0
  22. package/dist/enrollment-flow.d.ts +27 -0
  23. package/dist/enrollment-flow.js +224 -0
  24. package/dist/enrollment-flow.js.map +1 -0
  25. package/dist/enrollment-login.d.ts +26 -0
  26. package/dist/enrollment-login.js +104 -0
  27. package/dist/enrollment-login.js.map +1 -0
  28. package/dist/index.d.ts +13 -0
  29. package/dist/index.js +17 -3
  30. package/dist/index.js.map +1 -1
  31. package/dist/managed-credential-v3-envelope.d.ts +60 -0
  32. package/dist/managed-credential-v3-envelope.js +234 -0
  33. package/dist/managed-credential-v3-envelope.js.map +1 -0
  34. package/dist/managed-credential-v3-flow.d.ts +45 -0
  35. package/dist/managed-credential-v3-flow.js +499 -0
  36. package/dist/managed-credential-v3-flow.js.map +1 -0
  37. package/dist/managed-credential-v3-journal.d.ts +192 -0
  38. package/dist/managed-credential-v3-journal.js +153 -0
  39. package/dist/managed-credential-v3-journal.js.map +1 -0
  40. package/dist/managed-credential-v3.d.ts +117 -0
  41. package/dist/managed-credential-v3.js +423 -0
  42. package/dist/managed-credential-v3.js.map +1 -0
  43. package/dist/migration-login-batch.d.ts +66 -0
  44. package/dist/migration-login-batch.js +202 -0
  45. package/dist/migration-login-batch.js.map +1 -0
  46. package/dist/private-file.d.ts +10 -0
  47. package/dist/private-file.js +77 -2
  48. package/dist/private-file.js.map +1 -1
  49. package/dist/profile.d.ts +10 -0
  50. package/dist/profile.js +55 -2
  51. package/dist/profile.js.map +1 -1
  52. package/dist/protocol.d.ts +1070 -0
  53. package/dist/protocol.js +560 -0
  54. package/dist/protocol.js.map +1 -1
  55. package/dist/retirement-flow.d.ts +38 -0
  56. package/dist/retirement-flow.js +78 -0
  57. package/dist/retirement-flow.js.map +1 -0
  58. package/dist/runtime.d.ts +4 -1
  59. package/dist/runtime.js +29 -4
  60. package/dist/runtime.js.map +1 -1
  61. package/dist/selection.d.ts +10 -1
  62. package/dist/selection.js +38 -2
  63. package/dist/selection.js.map +1 -1
  64. package/dist/short-lived-delivery-flow.d.ts +41 -0
  65. package/dist/short-lived-delivery-flow.js +141 -0
  66. package/dist/short-lived-delivery-flow.js.map +1 -0
  67. package/dist/short-lived-delivery-journal.d.ts +34 -0
  68. package/dist/short-lived-delivery-journal.js +137 -0
  69. package/dist/short-lived-delivery-journal.js.map +1 -0
  70. package/dist/short-lived-delivery.d.ts +26 -0
  71. package/dist/short-lived-delivery.js +139 -0
  72. package/dist/short-lived-delivery.js.map +1 -0
  73. package/dist/tui.js +23 -0
  74. package/dist/tui.js.map +1 -1
  75. package/dist/types.d.ts +6 -2
  76. package/package.json +2 -2
@@ -3,7 +3,8 @@ import { readFile, rm } from "node:fs/promises";
3
3
  import { homedir } from "node:os";
4
4
  import { join } from "node:path";
5
5
  import * as codexMultiAuthCli from "codex-multi-auth/cli";
6
- import { writePrivateJson, writePrivateText } from "./private-file.js";
6
+ import { CodexServiceError } from "./errors.js";
7
+ import { readJsonIfExists, removePrivateFileDurably, withPrivateFileLock, writePrivateJson, writePrivateText } from "./private-file.js";
7
8
  const externalApi = codexMultiAuthCli;
8
9
  function paths(env = process.env) {
9
10
  const codexHome = env.CODEX_HOME?.trim() || join(homedir(), ".codex");
@@ -13,6 +14,14 @@ function paths(env = process.env) {
13
14
  configPath: join(codexHome, "config.toml")
14
15
  };
15
16
  }
17
+ function managedLineageStatePath(env = process.env) {
18
+ const codexHome = env.CODEX_HOME?.trim() || join(homedir(), ".codex");
19
+ return join(codexHome, ".numa-managed-lineage.json");
20
+ }
21
+ function managedRetirementTombstonePath(env = process.env) {
22
+ const codexHome = env.CODEX_HOME?.trim() || join(homedir(), ".codex");
23
+ return join(codexHome, ".numa-retirement-tombstone.json");
24
+ }
16
25
  async function optionalText(path) {
17
26
  try {
18
27
  return await readFile(path, "utf8");
@@ -41,6 +50,10 @@ export async function restoreCodexFileCredentials(env = process.env) {
41
50
  await writePrivateText(value.authPath, backup);
42
51
  return { action: "restored", ...value };
43
52
  }
53
+ /** Removes the legacy full-auth backup before entering or leaving schema-v2 managed mode. */
54
+ export async function discardCodexFileCredentialBackup(env = process.env) {
55
+ await removePrivateFileDurably(paths(env).backupPath);
56
+ }
44
57
  export async function inspectLocalCodexCredentialStatus(expectedAccountId, env = process.env) {
45
58
  const authPath = paths(env).authPath;
46
59
  if (externalApi.inspectCodexCredentialStatus) {
@@ -88,6 +101,321 @@ function validJwt(token) {
88
101
  return false;
89
102
  }
90
103
  }
104
+ function requiredValue(value, name) {
105
+ const normalized = value.trim();
106
+ if (!normalized)
107
+ throw new CodexServiceError(`${name} is required.`, "invalid_managed_codex_credentials");
108
+ return normalized;
109
+ }
110
+ function parseManagedLineageState(value) {
111
+ if (!value || typeof value !== "object")
112
+ return undefined;
113
+ const state = value;
114
+ if (state.schemaVersion !== 2
115
+ || (state.tenantId !== undefined && typeof state.tenantId !== "string")
116
+ || typeof state.assignmentId !== "string"
117
+ || typeof state.managedAccountId !== "string"
118
+ || typeof state.lineageId !== "string"
119
+ || typeof state.generationVersion !== "number"
120
+ || !Number.isInteger(state.generationVersion)
121
+ || state.generationVersion <= 0
122
+ || typeof state.providerAccountId !== "string"
123
+ || typeof state.deliveryId !== "string"
124
+ || typeof state.credentialExpiresAt !== "string"
125
+ || !Number.isFinite(Date.parse(state.credentialExpiresAt))
126
+ || typeof state.ackExpiresAt !== "string"
127
+ || !Number.isFinite(Date.parse(state.ackExpiresAt))
128
+ || (state.ackedAt !== null && typeof state.ackedAt !== "string")
129
+ || (state.ackedAt !== null && !Number.isFinite(Date.parse(state.ackedAt)))
130
+ || (state.phase !== "INSTALLING" && state.phase !== "INSTALLED_PENDING_ACK"
131
+ && state.phase !== "INSTALLED")
132
+ || typeof state.updatedAt !== "string")
133
+ return undefined;
134
+ if (state.previous !== null && state.previous !== undefined) {
135
+ const previous = state.previous;
136
+ if (!previous || typeof previous.assignmentId !== "string"
137
+ || typeof previous.lineageId !== "string"
138
+ || !Number.isInteger(previous.generationVersion)
139
+ || previous.generationVersion <= 0)
140
+ return undefined;
141
+ }
142
+ return {
143
+ schemaVersion: 2,
144
+ tenantId: state.tenantId?.trim() || null,
145
+ assignmentId: state.assignmentId,
146
+ managedAccountId: state.managedAccountId,
147
+ lineageId: state.lineageId,
148
+ generationVersion: state.generationVersion,
149
+ providerAccountId: state.providerAccountId,
150
+ deliveryId: state.deliveryId,
151
+ credentialExpiresAt: state.credentialExpiresAt,
152
+ ackExpiresAt: state.ackExpiresAt,
153
+ ackedAt: state.ackedAt ?? null,
154
+ phase: state.phase,
155
+ updatedAt: state.updatedAt,
156
+ previous: state.previous ?? null
157
+ };
158
+ }
159
+ function parseRetirementTombstone(value) {
160
+ if (!value || typeof value !== "object")
161
+ return undefined;
162
+ const tombstone = value;
163
+ if (tombstone.schemaVersion !== 2
164
+ || typeof tombstone.retirementId !== "string"
165
+ || typeof tombstone.expectedRevision !== "number"
166
+ || !Number.isInteger(tombstone.expectedRevision)
167
+ || tombstone.expectedRevision <= 0
168
+ || typeof tombstone.idempotencyKey !== "string"
169
+ || typeof tombstone.assignmentId !== "string"
170
+ || typeof tombstone.lineageId !== "string"
171
+ || typeof tombstone.generationVersion !== "number"
172
+ || !Number.isInteger(tombstone.generationVersion)
173
+ || tombstone.generationVersion <= 0
174
+ || typeof tombstone.deletedAt !== "string"
175
+ || !Number.isFinite(Date.parse(tombstone.deletedAt))
176
+ || (tombstone.acknowledgedAt !== null && typeof tombstone.acknowledgedAt !== "string")
177
+ || (typeof tombstone.acknowledgedAt === "string"
178
+ && !Number.isFinite(Date.parse(tombstone.acknowledgedAt))))
179
+ return undefined;
180
+ return {
181
+ schemaVersion: 2,
182
+ retirementId: tombstone.retirementId,
183
+ expectedRevision: tombstone.expectedRevision,
184
+ idempotencyKey: tombstone.idempotencyKey,
185
+ assignmentId: tombstone.assignmentId,
186
+ lineageId: tombstone.lineageId,
187
+ generationVersion: tombstone.generationVersion,
188
+ deletedAt: tombstone.deletedAt,
189
+ acknowledgedAt: tombstone.acknowledgedAt ?? null
190
+ };
191
+ }
192
+ async function installedAuthMatches(input, env) {
193
+ const raw = await optionalText(paths(env).authPath);
194
+ if (!raw)
195
+ return false;
196
+ try {
197
+ const auth = JSON.parse(raw);
198
+ return auth.auth_mode === "chatgpt"
199
+ && auth.tokens?.id_token === input.idToken
200
+ && auth.tokens?.access_token === input.accessToken
201
+ && auth.tokens?.account_id === input.providerAccountId;
202
+ }
203
+ catch {
204
+ return false;
205
+ }
206
+ }
207
+ export async function readManagedCodexLineageState(env = process.env) {
208
+ return parseManagedLineageState(await readJsonIfExists(managedLineageStatePath(env)));
209
+ }
210
+ export async function readManagedCodexRetirementTombstone(env = process.env) {
211
+ return parseRetirementTombstone(await readJsonIfExists(managedRetirementTombstonePath(env)));
212
+ }
213
+ /**
214
+ * Removes only the exact managed lineage currently installed in auth.json.
215
+ * The Secret-free tombstone is committed first so a process crash can retry
216
+ * the Server ACK without restoring or redisclosing credentials.
217
+ */
218
+ export async function prepareManagedCodexLineageRetirement(input, now = Date.now(), env = process.env) {
219
+ const retirementId = requiredValue(input.retirementId, "retirementId");
220
+ const idempotencyKey = requiredValue(input.idempotencyKey, "idempotencyKey");
221
+ if (!Number.isInteger(input.expectedRevision) || input.expectedRevision <= 0) {
222
+ throw new CodexServiceError("expectedRevision must be a positive integer.", "invalid_assignment_retirement_request");
223
+ }
224
+ const value = paths(env);
225
+ return withPrivateFileLock(value.authPath, async () => {
226
+ // A full auth.json backup can contain a real refresh token. Schema-v2 is
227
+ // Server-owned, so neither enrollment nor retirement may retain it.
228
+ await removePrivateFileDurably(value.backupPath);
229
+ const existing = await readManagedCodexRetirementTombstone(env);
230
+ if (existing?.retirementId === retirementId) {
231
+ if (existing.expectedRevision === input.expectedRevision)
232
+ return existing;
233
+ const retried = { ...existing, expectedRevision: input.expectedRevision, idempotencyKey };
234
+ await writePrivateJson(managedRetirementTombstonePath(env), retried);
235
+ return retried;
236
+ }
237
+ if (existing && existing.acknowledgedAt === null) {
238
+ throw new CodexServiceError("Another local retirement acknowledgement is still pending.", "assignment_retirement_local_state_conflict");
239
+ }
240
+ const state = await readManagedCodexLineageState(env);
241
+ if (!state || state.phase === "INSTALLING") {
242
+ throw new CodexServiceError("No completely installed managed lineage is available for local retirement.", "assignment_retirement_local_state_not_found");
243
+ }
244
+ const timestamp = new Date(now).toISOString();
245
+ const tombstone = {
246
+ schemaVersion: 2,
247
+ retirementId,
248
+ expectedRevision: input.expectedRevision,
249
+ idempotencyKey,
250
+ assignmentId: state.assignmentId,
251
+ lineageId: state.lineageId,
252
+ generationVersion: state.generationVersion,
253
+ deletedAt: timestamp,
254
+ acknowledgedAt: null
255
+ };
256
+ await writePrivateJson(managedRetirementTombstonePath(env), tombstone);
257
+ const local = await inspectLocalCodexCredentialStatus(undefined, env);
258
+ if (local.accountId === undefined || local.accountId === state.providerAccountId) {
259
+ await removePrivateFileDurably(value.authPath);
260
+ }
261
+ await removePrivateFileDurably(managedLineageStatePath(env));
262
+ return tombstone;
263
+ });
264
+ }
265
+ export async function markManagedCodexRetirementAcknowledged(retirementId, acknowledgedAt, env = process.env) {
266
+ const normalizedRetirementId = requiredValue(retirementId, "retirementId");
267
+ const normalizedAcknowledgedAt = requiredInstant(acknowledgedAt, "acknowledgedAt");
268
+ const authPath = paths(env).authPath;
269
+ return withPrivateFileLock(authPath, async () => {
270
+ const current = await readManagedCodexRetirementTombstone(env);
271
+ if (!current || current.retirementId !== normalizedRetirementId) {
272
+ throw new CodexServiceError("The retirement ACK does not match the local deletion tombstone.", "assignment_retirement_local_state_conflict");
273
+ }
274
+ if (current.acknowledgedAt)
275
+ return current;
276
+ const acknowledged = { ...current, acknowledgedAt: normalizedAcknowledgedAt };
277
+ await writePrivateJson(managedRetirementTombstonePath(env), acknowledged);
278
+ return acknowledged;
279
+ });
280
+ }
281
+ /** Installs a Server-delivered user-bound lineage without writing an account pool. */
282
+ export async function installManagedCodexLineageCredentials(rawInput, now = Date.now(), env = process.env, hooks = {}) {
283
+ const input = {
284
+ tenantId: requiredValue(rawInput.tenantId, "tenantId"),
285
+ deliveryId: requiredValue(rawInput.deliveryId, "deliveryId"),
286
+ assignmentId: requiredValue(rawInput.assignmentId, "assignmentId"),
287
+ managedAccountId: requiredValue(rawInput.managedAccountId, "managedAccountId"),
288
+ lineageId: requiredValue(rawInput.lineageId, "lineageId"),
289
+ generationVersion: rawInput.generationVersion,
290
+ providerAccountId: requiredValue(rawInput.providerAccountId, "providerAccountId"),
291
+ accessToken: requiredValue(rawInput.accessToken, "accessToken"),
292
+ idToken: requiredValue(rawInput.idToken, "idToken"),
293
+ credentialExpiresAt: requiredInstant(rawInput.credentialExpiresAt, "credentialExpiresAt"),
294
+ ackExpiresAt: requiredInstant(rawInput.ackExpiresAt, "ackExpiresAt"),
295
+ ...(rawInput.lastRefresh ? { lastRefresh: rawInput.lastRefresh } : {})
296
+ };
297
+ if (!Number.isInteger(input.generationVersion) || input.generationVersion <= 0) {
298
+ throw new CodexServiceError("generationVersion must be a positive integer.", "invalid_managed_codex_credentials");
299
+ }
300
+ if (!validJwt(input.idToken)) {
301
+ throw new CodexServiceError("The account service returned an invalid id_token.", "invalid_managed_codex_credentials");
302
+ }
303
+ const value = paths(env);
304
+ const statePath = managedLineageStatePath(env);
305
+ return withPrivateFileLock(value.authPath, async () => {
306
+ await removePrivateFileDurably(value.backupPath);
307
+ const current = await readManagedCodexLineageState(env);
308
+ const sameTenant = current?.tenantId === input.tenantId
309
+ || current?.tenantId === null && current.assignmentId === input.assignmentId;
310
+ const sameLineage = sameTenant && current?.assignmentId === input.assignmentId
311
+ && current.lineageId === input.lineageId;
312
+ if (sameLineage && current.generationVersion > input.generationVersion) {
313
+ throw new CodexServiceError("Refusing to install a stale lineage generation.", "lineage_version_conflict");
314
+ }
315
+ if (sameLineage && current.generationVersion === input.generationVersion
316
+ && current.deliveryId === input.deliveryId) {
317
+ if (current.phase === "INSTALLED" || current.phase === "INSTALLED_PENDING_ACK") {
318
+ if (!(await installedAuthMatches(input, env))) {
319
+ throw new CodexServiceError("The same lineage generation has different local credentials.", "lineage_version_conflict");
320
+ }
321
+ return {
322
+ action: "UNCHANGED",
323
+ authPath: value.authPath,
324
+ statePath,
325
+ state: current
326
+ };
327
+ }
328
+ }
329
+ if (sameLineage && current.generationVersion === input.generationVersion
330
+ && current.deliveryId !== input.deliveryId
331
+ && Date.parse(input.credentialExpiresAt) <= Date.parse(current.credentialExpiresAt)
332
+ && !(current.phase !== "INSTALLED" && Date.parse(current.ackExpiresAt) <= now)) {
333
+ throw new CodexServiceError("Refusing to install an older short-lived delivery for the current lineage generation.", "lineage_version_conflict");
334
+ }
335
+ const timestamp = new Date(now).toISOString();
336
+ const previous = current ? {
337
+ assignmentId: current.assignmentId,
338
+ lineageId: current.lineageId,
339
+ generationVersion: current.generationVersion
340
+ } : null;
341
+ const installing = {
342
+ schemaVersion: 2,
343
+ tenantId: input.tenantId,
344
+ assignmentId: input.assignmentId,
345
+ managedAccountId: input.managedAccountId,
346
+ lineageId: input.lineageId,
347
+ generationVersion: input.generationVersion,
348
+ providerAccountId: input.providerAccountId,
349
+ deliveryId: input.deliveryId,
350
+ credentialExpiresAt: input.credentialExpiresAt,
351
+ ackExpiresAt: input.ackExpiresAt,
352
+ ackedAt: null,
353
+ phase: "INSTALLING",
354
+ updatedAt: timestamp,
355
+ previous
356
+ };
357
+ const recovering = sameLineage
358
+ && current?.generationVersion === input.generationVersion
359
+ && current.deliveryId === input.deliveryId
360
+ && current.phase === "INSTALLING";
361
+ await writePrivateJson(statePath, installing);
362
+ await hooks.afterInstallingState?.();
363
+ await externalApi.ensureCodexCliFileAuthStore?.(value.configPath);
364
+ await writePrivateJson(value.authPath, {
365
+ auth_mode: "chatgpt",
366
+ OPENAI_API_KEY: null,
367
+ tokens: {
368
+ id_token: input.idToken,
369
+ access_token: input.accessToken,
370
+ // The real refresh token is Server-owned. This local, random placeholder
371
+ // preserves the official auth.json shape but is never usable upstream.
372
+ refresh_token: randomBytes(48).toString("base64url"),
373
+ account_id: input.providerAccountId
374
+ },
375
+ last_refresh: input.lastRefresh ?? timestamp
376
+ });
377
+ await hooks.afterAuthWrite?.();
378
+ const installed = { ...installing, phase: "INSTALLED_PENDING_ACK" };
379
+ await writePrivateJson(statePath, installed);
380
+ return {
381
+ action: recovering ? "RECOVERED" : "INSTALLED",
382
+ authPath: value.authPath,
383
+ statePath,
384
+ state: installed
385
+ };
386
+ });
387
+ }
388
+ export async function markManagedCodexLineageDeliveryAcknowledged(deliveryId, ackedAt, env = process.env) {
389
+ const normalizedDeliveryId = requiredValue(deliveryId, "deliveryId");
390
+ const normalizedAckedAt = requiredInstant(ackedAt, "ackedAt");
391
+ const authPath = paths(env).authPath;
392
+ return withPrivateFileLock(authPath, async () => {
393
+ const current = await readManagedCodexLineageState(env);
394
+ if (!current || current.deliveryId !== normalizedDeliveryId) {
395
+ throw new CodexServiceError("The delivery ACK does not match the locally installed credentials.", "short_lived_delivery_state_conflict");
396
+ }
397
+ if (current.phase === "INSTALLING") {
398
+ throw new CodexServiceError("The short-lived credentials have not finished installing.", "short_lived_delivery_state_conflict");
399
+ }
400
+ if (current.phase === "INSTALLED" && current.ackedAt)
401
+ return current;
402
+ const acknowledged = {
403
+ ...current,
404
+ phase: "INSTALLED",
405
+ ackedAt: normalizedAckedAt,
406
+ updatedAt: normalizedAckedAt
407
+ };
408
+ await writePrivateJson(managedLineageStatePath(env), acknowledged);
409
+ return acknowledged;
410
+ });
411
+ }
412
+ function requiredInstant(value, name) {
413
+ const normalized = requiredValue(value, name);
414
+ if (!Number.isFinite(Date.parse(normalized))) {
415
+ throw new CodexServiceError(`${name} must be an ISO-8601 instant.`, "invalid_managed_codex_credentials");
416
+ }
417
+ return normalized;
418
+ }
91
419
  export async function writeCodexChatgptFileCredentials(credentials, now = Date.now(), env = process.env) {
92
420
  if (!validJwt(credentials.idToken))
93
421
  throw new Error("The account service returned an invalid id_token.");
@@ -115,16 +443,33 @@ export async function writeCodexChatgptFileCredentials(credentials, now = Date.n
115
443
  }
116
444
  export async function resetManagedCodexFileCredentials(accountId, env = process.env) {
117
445
  const value = paths(env);
118
- const backup = await optionalText(value.backupPath);
119
- if (backup !== undefined) {
120
- await writePrivateText(value.authPath, backup);
121
- return { action: "restored", ...value };
122
- }
123
- const status = await inspectLocalCodexCredentialStatus(accountId, env);
124
- if (accountId && status.accountId === accountId) {
125
- await rm(value.authPath, { force: true });
126
- return { action: "removed", ...value };
127
- }
128
- return { action: "unchanged", ...value };
446
+ return withPrivateFileLock(value.authPath, async () => {
447
+ const managedState = await readManagedCodexLineageState(env);
448
+ if (managedState) {
449
+ await removePrivateFileDurably(value.backupPath);
450
+ const status = await inspectLocalCodexCredentialStatus(accountId ?? managedState.providerAccountId, env);
451
+ if (status.accountId === managedState.providerAccountId) {
452
+ await removePrivateFileDurably(value.authPath);
453
+ await removePrivateFileDurably(managedLineageStatePath(env));
454
+ return { action: "removed", ...value };
455
+ }
456
+ await removePrivateFileDurably(managedLineageStatePath(env));
457
+ return { action: "unchanged", ...value };
458
+ }
459
+ const backup = await optionalText(value.backupPath);
460
+ if (backup !== undefined) {
461
+ await writePrivateText(value.authPath, backup);
462
+ await rm(managedLineageStatePath(env), { force: true });
463
+ return { action: "restored", ...value };
464
+ }
465
+ const status = await inspectLocalCodexCredentialStatus(accountId, env);
466
+ if (accountId && status.accountId === accountId) {
467
+ await rm(value.authPath, { force: true });
468
+ await rm(managedLineageStatePath(env), { force: true });
469
+ return { action: "removed", ...value };
470
+ }
471
+ await rm(managedLineageStatePath(env), { force: true });
472
+ return { action: "unchanged", ...value };
473
+ });
129
474
  }
130
475
  //# sourceMappingURL=credentials.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { CodexEnrollmentCandidateEnvelope, CodexEnrollmentCandidateIngress } from "./protocol.js";
2
+ export interface SealCodexEnrollmentCandidateInput {
3
+ tenantId: string;
4
+ intentId: string;
5
+ revision: number;
6
+ idempotencyKey: string;
7
+ refreshToken: string;
8
+ ingress: CodexEnrollmentCandidateIngress;
9
+ }
10
+ export declare function codexEnrollmentCandidateAad(input: {
11
+ tenantId: string;
12
+ intentId: string;
13
+ revision: number;
14
+ idempotencyKey: string;
15
+ keyId: string;
16
+ }): Buffer;
17
+ /** Encrypts the one-shot refresh credential without accepting provider identity input. */
18
+ export declare function sealCodexEnrollmentCandidate(input: SealCodexEnrollmentCandidateInput): CodexEnrollmentCandidateEnvelope;
@@ -0,0 +1,112 @@
1
+ import { createCipheriv, createPublicKey, diffieHellman, generateKeyPairSync, hkdfSync, randomBytes } from "node:crypto";
2
+ import { CodexServiceError } from "./errors.js";
3
+ const ALGORITHM = "X25519-HKDF-SHA256-AES-256-GCM";
4
+ const HKDF_INFO_PREFIX = "active-code-inbox/codex-enrollment-candidate/key/v1\0";
5
+ const BASE64URL = /^[A-Za-z0-9_-]+$/u;
6
+ const MAX_REFRESH_TOKEN_BYTES = 8_192;
7
+ export function codexEnrollmentCandidateAad(input) {
8
+ return Buffer.from(JSON.stringify({
9
+ schemaVersion: 2,
10
+ tenant: required(input.tenantId, "tenantId"),
11
+ intentId: required(input.intentId, "intentId"),
12
+ revision: nonnegativeInteger(input.revision, "revision"),
13
+ idempotencyKey: required(input.idempotencyKey, "idempotencyKey"),
14
+ keyId: required(input.keyId, "keyId")
15
+ }), "utf8");
16
+ }
17
+ /** Encrypts the one-shot refresh credential without accepting provider identity input. */
18
+ export function sealCodexEnrollmentCandidate(input) {
19
+ if (input.ingress.envelopeVersion !== 1 || input.ingress.algorithm !== ALGORITHM) {
20
+ throw invalidEnvelope("The account service advertised an unsupported enrollment envelope.");
21
+ }
22
+ const refreshToken = required(input.refreshToken, "refreshToken");
23
+ if (Buffer.byteLength(refreshToken, "utf8") > MAX_REFRESH_TOKEN_BYTES) {
24
+ throw invalidEnvelope("The official Codex refresh credential exceeds the supported size.");
25
+ }
26
+ let plaintext;
27
+ let sharedSecret;
28
+ let key;
29
+ try {
30
+ decodeCanonicalBase64url(input.ingress.publicKey, 32, "The account service advertised an invalid enrollment public key.");
31
+ const salt = randomBytes(32);
32
+ const nonce = randomBytes(12);
33
+ plaintext = Buffer.from(JSON.stringify({ schemaVersion: 2, refreshToken }), "utf8");
34
+ if (plaintext.length > input.ingress.maxCiphertextBytes) {
35
+ throw invalidEnvelope("The encrypted enrollment candidate exceeds the service limit.");
36
+ }
37
+ const { publicKey, privateKey } = generateKeyPairSync("x25519");
38
+ const exported = publicKey.export({ format: "jwk" });
39
+ if (exported.kty !== "OKP" || exported.crv !== "X25519" || typeof exported.x !== "string") {
40
+ throw invalidEnvelope("Unable to create an enrollment encryption key.");
41
+ }
42
+ const ephemeralPublicKey = decodeCanonicalBase64url(exported.x, 32, "Unable to create an enrollment encryption key.");
43
+ const serverKey = createPublicKey({
44
+ key: { kty: "OKP", crv: "X25519", x: input.ingress.publicKey },
45
+ format: "jwk"
46
+ });
47
+ sharedSecret = diffieHellman({ privateKey, publicKey: serverKey });
48
+ key = Buffer.from(hkdfSync("sha256", sharedSecret, salt, Buffer.from(`${HKDF_INFO_PREFIX}${input.ingress.keyId}`, "utf8"), 32));
49
+ const aad = codexEnrollmentCandidateAad({
50
+ tenantId: input.tenantId,
51
+ intentId: input.intentId,
52
+ revision: input.revision,
53
+ idempotencyKey: input.idempotencyKey,
54
+ keyId: input.ingress.keyId
55
+ });
56
+ const cipher = createCipheriv("aes-256-gcm", key, nonce, { authTagLength: 16 });
57
+ cipher.setAAD(aad);
58
+ const ciphertext = Buffer.concat([cipher.update(plaintext), cipher.final()]);
59
+ const authenticationTag = cipher.getAuthTag();
60
+ if (ciphertext.length > input.ingress.maxCiphertextBytes) {
61
+ throw invalidEnvelope("The encrypted enrollment candidate exceeds the service limit.");
62
+ }
63
+ const envelope = {
64
+ version: 1,
65
+ algorithm: ALGORITHM,
66
+ keyId: input.ingress.keyId,
67
+ ephemeralPublicKey: ephemeralPublicKey.toString("base64url"),
68
+ salt: salt.toString("base64url"),
69
+ nonce: nonce.toString("base64url"),
70
+ ciphertext: ciphertext.toString("base64url"),
71
+ authenticationTag: authenticationTag.toString("base64url")
72
+ };
73
+ const requestBytes = Buffer.byteLength(JSON.stringify({
74
+ schemaVersion: 2,
75
+ revision: input.revision,
76
+ envelope
77
+ }), "utf8");
78
+ if (requestBytes > input.ingress.maxRequestBytes) {
79
+ throw invalidEnvelope("The encrypted enrollment request exceeds the service limit.");
80
+ }
81
+ return envelope;
82
+ }
83
+ finally {
84
+ plaintext?.fill(0);
85
+ sharedSecret?.fill(0);
86
+ key?.fill(0);
87
+ }
88
+ }
89
+ function decodeCanonicalBase64url(value, length, message) {
90
+ if (!BASE64URL.test(value))
91
+ throw invalidEnvelope(message);
92
+ const decoded = Buffer.from(value, "base64url");
93
+ if (decoded.length !== length || decoded.toString("base64url") !== value) {
94
+ throw invalidEnvelope(message);
95
+ }
96
+ return decoded;
97
+ }
98
+ function required(value, name) {
99
+ const normalized = value.trim();
100
+ if (!normalized)
101
+ throw invalidEnvelope(`${name} is required.`);
102
+ return normalized;
103
+ }
104
+ function nonnegativeInteger(value, name) {
105
+ if (!Number.isInteger(value) || value < 0)
106
+ throw invalidEnvelope(`${name} is invalid.`);
107
+ return value;
108
+ }
109
+ function invalidEnvelope(message) {
110
+ return new CodexServiceError(message, "invalid_enrollment_envelope");
111
+ }
112
+ //# sourceMappingURL=enrollment-envelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrollment-envelope.js","sourceRoot":"","sources":["../src/enrollment-envelope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { CodexServiceClient } from "./client.js";
2
+ import { withOneShotCodexLogin, type OneShotCodexLoginOptions } from "./enrollment-login.js";
3
+ import type { CodexEnrollmentCandidateResponse } from "./protocol.js";
4
+ type EnrollmentClient = Pick<CodexServiceClient, "getEnrollmentIntent" | "claimEnrollmentIntent" | "heartbeatEnrollmentIntent" | "uploadEnrollmentCandidate">;
5
+ type OneShotLogin = typeof withOneShotCodexLogin;
6
+ export interface ExecuteCodexEnrollmentLoginInput {
7
+ client: EnrollmentClient;
8
+ tenantId: string;
9
+ intentId: string;
10
+ deviceAuth?: boolean;
11
+ loginOptions?: Omit<OneShotCodexLoginOptions, "mode">;
12
+ heartbeatIntervalMs?: number;
13
+ candidateTransportRetryDelaysMs?: readonly number[];
14
+ candidateRetryDelaysMs?: readonly number[];
15
+ wait?: (milliseconds: number) => Promise<void>;
16
+ randomId?: () => string;
17
+ oneShotLogin?: OneShotLogin;
18
+ requireInitialAwaitingCli?: boolean;
19
+ /** Re-proves the current Bearer is the existing claimant before restarting login. */
20
+ resumeClaimedIntent?: boolean;
21
+ }
22
+ /**
23
+ * Claims one server-created intent, runs an isolated official login, and sends
24
+ * only an authenticated encrypted refresh-token envelope to that exact intent.
25
+ */
26
+ export declare function executeCodexEnrollmentLogin(input: ExecuteCodexEnrollmentLoginInput): Promise<CodexEnrollmentCandidateResponse>;
27
+ export {};