@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
@@ -0,0 +1,202 @@
1
+ import { executeCodexEnrollmentLogin } from "./enrollment-flow.js";
2
+ import { CodexServiceError } from "./errors.js";
3
+ import { CODEX_MIGRATION_CAPACITY } from "./protocol.js";
4
+ /** Loads all pages and rejects a mixed-revision snapshot instead of reordering targets. */
5
+ export async function loadCodexMigrationLoginQueueSnapshot(input) {
6
+ const pageSize = input.pageSize ?? 100;
7
+ const maxAttempts = input.maxSnapshotAttempts ?? 3;
8
+ for (let attempt = 0; attempt < maxAttempts; attempt += 1) {
9
+ const first = await input.client.listMigrationLoginQueue(input.planId, { page: 1, pageSize });
10
+ if (first.plan.status !== "ACTIVE" || first.total <= first.items.length) {
11
+ return { plan: first.plan, items: uniqueQueueItems(first.items, first.total) };
12
+ }
13
+ const items = [...first.items];
14
+ let stable = true;
15
+ const pageCount = Math.ceil(first.total / pageSize);
16
+ for (let page = 2; page <= pageCount; page += 1) {
17
+ const next = await input.client.listMigrationLoginQueue(input.planId, { page, pageSize });
18
+ if (!samePlanProjection(first.plan, next.plan) || next.total !== first.total) {
19
+ stable = false;
20
+ break;
21
+ }
22
+ items.push(...next.items);
23
+ }
24
+ if (stable && items.length === first.total) {
25
+ return { plan: first.plan, items: uniqueQueueItems(items, first.total) };
26
+ }
27
+ }
28
+ throw new CodexServiceError("Migration login queue changed while it was being paged; retry from a fresh snapshot.", "migration_queue_changed", 409);
29
+ }
30
+ /**
31
+ * Executes at most one isolated official login at a time. The queue is fetched
32
+ * again after every handled target so pause/cancel/completion takes effect before
33
+ * another refresh token can be generated.
34
+ */
35
+ export async function executeCodexMigrationLoginBatch(input) {
36
+ const executeEnrollment = input.executeEnrollment ?? executeCodexEnrollmentLogin;
37
+ const handledTargets = new Set();
38
+ const items = [];
39
+ let latest = await loadCodexMigrationLoginQueueSnapshot(input);
40
+ if (input.dryRun) {
41
+ if (latest.plan.status === "ACTIVE") {
42
+ for (const target of latest.items)
43
+ items.push(dryRunItem(target));
44
+ }
45
+ return result(latest.plan, true, latest.plan.status === "ACTIVE"
46
+ ? "DRY_RUN" : planStopReason(latest.plan.status), items);
47
+ }
48
+ while (true) {
49
+ const stopped = planStopReason(latest.plan.status);
50
+ if (stopped !== "QUEUE_EXHAUSTED")
51
+ return result(latest.plan, false, stopped, items);
52
+ const target = latest.items.find((candidate) => !handledTargets.has(candidate.id));
53
+ if (!target)
54
+ return result(latest.plan, false, "QUEUE_EXHAUSTED", items);
55
+ handledTargets.add(target.id);
56
+ const resumableClaim = target.allowedAction === "VIEW_ENROLLMENT"
57
+ && target.enrollmentIntent !== null
58
+ && ["CLAIMED", "LOGIN_IN_PROGRESS"].includes(target.enrollmentIntent.status);
59
+ if (target.allowedAction !== "LOGIN" && !resumableClaim) {
60
+ items.push(skippedItem(target));
61
+ latest = await loadCodexMigrationLoginQueueSnapshot(input);
62
+ continue;
63
+ }
64
+ if (!target.enrollmentIntent || (!resumableClaim && target.enrollmentIntent.status !== "AWAITING_CLI")) {
65
+ items.push({
66
+ ...baseItem(target),
67
+ action: "LOGIN",
68
+ status: "FAILED",
69
+ safeErrorCode: "invalid_migration_login_target"
70
+ });
71
+ return result(latest.plan, false, "SERVICE_ERROR", items);
72
+ }
73
+ try {
74
+ const response = await executeEnrollment({
75
+ client: input.client,
76
+ tenantId: input.tenantId,
77
+ intentId: target.enrollmentIntent.id,
78
+ deviceAuth: input.deviceAuth,
79
+ requireInitialAwaitingCli: true,
80
+ resumeClaimedIntent: resumableClaim
81
+ });
82
+ items.push({
83
+ ...baseItem(target),
84
+ action: "LOGIN",
85
+ status: response.result.outcome === "READY" ? "COMPLETED" : "FAILED",
86
+ outcome: response.result.outcome,
87
+ intentStatus: response.intent.status,
88
+ safeErrorCode: response.intent.safeErrorCode
89
+ });
90
+ if (!["READY", "ACCOUNT_MISMATCH", "IDENTITY_UNVERIFIABLE"].includes(response.result.outcome)) {
91
+ latest = await loadCodexMigrationLoginQueueSnapshot(input);
92
+ const planStopped = planStopReason(latest.plan.status);
93
+ return result(latest.plan, false, planStopped === "QUEUE_EXHAUSTED" ? "TARGET_UNCERTAIN" : planStopped, items);
94
+ }
95
+ }
96
+ catch (error) {
97
+ latest = await safeReload(input, latest);
98
+ const refreshedTarget = latest.items.find(({ id }) => id === target.id);
99
+ if (["enrollment_intent_state_conflict", "enrollment_intent_claimed"].includes(String(error.code ?? ""))
100
+ && refreshedTarget && refreshedTarget.allowedAction !== "LOGIN") {
101
+ items.push(skippedItem(refreshedTarget));
102
+ continue;
103
+ }
104
+ const classified = classifyBatchError(error);
105
+ items.push({
106
+ ...baseItem(target),
107
+ action: "LOGIN",
108
+ status: "FAILED",
109
+ safeErrorCode: classified.safeErrorCode
110
+ });
111
+ const planStopped = planStopReason(latest.plan.status);
112
+ return result(latest.plan, false, planStopped === "QUEUE_EXHAUSTED" ? classified.stopReason : planStopped, items);
113
+ }
114
+ latest = await loadCodexMigrationLoginQueueSnapshot(input);
115
+ }
116
+ }
117
+ function samePlanProjection(left, right) {
118
+ return left.id === right.id && left.status === right.status && left.revision === right.revision
119
+ && left.accountId === right.accountId && right.sequentialRequired === true;
120
+ }
121
+ function uniqueQueueItems(items, total) {
122
+ if (items.length !== total || new Set(items.map(({ id }) => id)).size !== items.length
123
+ || new Set(items.map(({ assignmentId }) => assignmentId)).size !== items.length) {
124
+ throw new CodexServiceError("Migration login queue contains duplicate or incomplete targets.", "invalid_codex_service_response");
125
+ }
126
+ return items;
127
+ }
128
+ function baseItem(target) {
129
+ return {
130
+ targetId: target.id,
131
+ assignmentId: target.assignmentId,
132
+ intentId: target.enrollmentIntent?.id ?? null,
133
+ requestedAction: target.allowedAction
134
+ };
135
+ }
136
+ function dryRunItem(target) {
137
+ if (target.allowedAction === "LOGIN" && target.enrollmentIntent?.status === "AWAITING_CLI") {
138
+ return { ...baseItem(target), action: "LOGIN", status: "PLANNED" };
139
+ }
140
+ return { ...skippedItem(target), status: "PLANNED" };
141
+ }
142
+ function skippedItem(target) {
143
+ return {
144
+ ...baseItem(target),
145
+ action: "SKIP",
146
+ status: "SKIPPED",
147
+ intentStatus: target.enrollmentIntent?.status,
148
+ safeErrorCode: target.enrollmentIntent?.safeErrorCode,
149
+ skipReason: target.allowedAction === "VIEW_ENROLLMENT"
150
+ ? "VIEW_ENROLLMENT"
151
+ : target.distributionMode === "USER_BOUND" && target.projectedStatus === "ACTIVE"
152
+ ? "ALREADY_USER_BOUND"
153
+ : "NO_ACTION"
154
+ };
155
+ }
156
+ function planStopReason(status) {
157
+ return status === "ACTIVE" ? "QUEUE_EXHAUSTED" : status;
158
+ }
159
+ function classifyBatchError(error) {
160
+ const value = error;
161
+ const code = typeof value?.code === "string" && /^[a-z][a-z0-9_.-]{0,127}$/iu.test(value.code)
162
+ ? value.code
163
+ : "official_login_failed";
164
+ const status = typeof value?.status === "number" ? value.status : undefined;
165
+ if (["auth_error", "login_required", "http_error", "issuer_mismatch", "codex_access_denied"]
166
+ .includes(code) || status === 401 || status === 403) {
167
+ return { stopReason: "AUTHENTICATION_ERROR", safeErrorCode: code };
168
+ }
169
+ if (["codex_service_unavailable", "invalid_codex_service_response", "codex_service_error",
170
+ "migration_queue_changed"].includes(code) || status !== undefined && status >= 500) {
171
+ return { stopReason: "SERVICE_ERROR", safeErrorCode: code };
172
+ }
173
+ return { stopReason: "LOGIN_ERROR", safeErrorCode: code };
174
+ }
175
+ async function safeReload(input, fallback) {
176
+ try {
177
+ return await loadCodexMigrationLoginQueueSnapshot(input);
178
+ }
179
+ catch {
180
+ return fallback;
181
+ }
182
+ }
183
+ function result(plan, dryRun, stopReason, items) {
184
+ return {
185
+ schemaVersion: 2,
186
+ plan,
187
+ capacity: CODEX_MIGRATION_CAPACITY,
188
+ dryRun,
189
+ stopReason,
190
+ counts: {
191
+ observed: items.length,
192
+ plannedLogins: items.filter(({ action }) => action === "LOGIN").length,
193
+ attempted: items.filter(({ action, status }) => action === "LOGIN"
194
+ && status !== "PLANNED").length,
195
+ completed: items.filter(({ status }) => status === "COMPLETED").length,
196
+ failed: items.filter(({ status }) => status === "FAILED").length,
197
+ skipped: items.filter(({ action }) => action === "SKIP").length
198
+ },
199
+ items
200
+ };
201
+ }
202
+ //# sourceMappingURL=migration-login-batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-login-batch.js","sourceRoot":"","sources":["../src/migration-login-batch.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,13 @@
1
1
  export declare function writePrivateText(path: string, content: string): Promise<void>;
2
2
  export declare function writePrivateJson(path: string, value: unknown): Promise<void>;
3
+ export declare function removePrivateFileDurably(path: string): Promise<void>;
3
4
  export declare function readJsonIfExists(path: string): Promise<unknown | undefined>;
5
+ /**
6
+ * Serializes writers for a private credential file. A stale lock is recoverable
7
+ * after a bounded interval so a crashed Numa process cannot permanently block
8
+ * credential repair.
9
+ */
10
+ export declare function withPrivateFileLock<T>(targetPath: string, operation: () => Promise<T>, options?: {
11
+ timeoutMs?: number;
12
+ staleAfterMs?: number;
13
+ }): Promise<T>;
@@ -1,22 +1,51 @@
1
1
  import { randomBytes } from "node:crypto";
2
- import { chmod, mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
2
+ import { chmod, mkdir, open, readFile, rename, rm, stat } from "node:fs/promises";
3
3
  import { dirname } from "node:path";
4
4
  export async function writePrivateText(path, content) {
5
5
  await mkdir(dirname(path), { recursive: true, mode: 0o700 });
6
6
  const temporaryPath = `${path}.${process.pid}.${randomBytes(8).toString("hex")}.tmp`;
7
+ let handle;
7
8
  try {
8
- await writeFile(temporaryPath, content, { encoding: "utf8", mode: 0o600 });
9
+ handle = await open(temporaryPath, "wx", 0o600);
10
+ await handle.writeFile(content, { encoding: "utf8" });
11
+ await handle.sync();
12
+ await handle.close();
13
+ handle = undefined;
9
14
  await rename(temporaryPath, path);
10
15
  if (process.platform !== "win32")
11
16
  await chmod(path, 0o600);
17
+ if (process.platform !== "win32") {
18
+ const directory = await open(dirname(path), "r");
19
+ try {
20
+ await directory.sync();
21
+ }
22
+ finally {
23
+ await directory.close();
24
+ }
25
+ }
12
26
  }
13
27
  finally {
28
+ await handle?.close().catch(() => undefined);
14
29
  await rm(temporaryPath, { force: true }).catch(() => undefined);
15
30
  }
16
31
  }
17
32
  export async function writePrivateJson(path, value) {
18
33
  await writePrivateText(path, `${JSON.stringify(value, null, 2)}\n`);
19
34
  }
35
+ export async function removePrivateFileDurably(path) {
36
+ const directoryPath = dirname(path);
37
+ await mkdir(directoryPath, { recursive: true, mode: 0o700 });
38
+ await rm(path, { force: true });
39
+ if (process.platform !== "win32") {
40
+ const directory = await open(directoryPath, "r");
41
+ try {
42
+ await directory.sync();
43
+ }
44
+ finally {
45
+ await directory.close();
46
+ }
47
+ }
48
+ }
20
49
  export async function readJsonIfExists(path) {
21
50
  try {
22
51
  return JSON.parse(await readFile(path, "utf8"));
@@ -27,4 +56,50 @@ export async function readJsonIfExists(path) {
27
56
  throw error;
28
57
  }
29
58
  }
59
+ /**
60
+ * Serializes writers for a private credential file. A stale lock is recoverable
61
+ * after a bounded interval so a crashed Numa process cannot permanently block
62
+ * credential repair.
63
+ */
64
+ export async function withPrivateFileLock(targetPath, operation, options = {}) {
65
+ const lockPath = `${targetPath}.numa-lock`;
66
+ const timeoutMs = options.timeoutMs ?? 5_000;
67
+ const staleAfterMs = options.staleAfterMs ?? 120_000;
68
+ const startedAt = Date.now();
69
+ await mkdir(dirname(targetPath), { recursive: true, mode: 0o700 });
70
+ while (true) {
71
+ try {
72
+ const handle = await open(lockPath, "wx", 0o600);
73
+ try {
74
+ await handle.writeFile(`${process.pid}\n`, "utf8");
75
+ await handle.sync();
76
+ }
77
+ finally {
78
+ await handle.close();
79
+ }
80
+ break;
81
+ }
82
+ catch (error) {
83
+ if (error.code !== "EEXIST")
84
+ throw error;
85
+ const lockStat = await stat(lockPath).catch(() => undefined);
86
+ if (lockStat && Date.now() - lockStat.mtimeMs > staleAfterMs) {
87
+ await rm(lockPath, { force: true });
88
+ continue;
89
+ }
90
+ if (Date.now() - startedAt >= timeoutMs) {
91
+ throw Object.assign(new Error("Timed out waiting for the Codex credential file lock."), {
92
+ code: "codex_credential_lock_timeout"
93
+ });
94
+ }
95
+ await new Promise((resolve) => setTimeout(resolve, 25));
96
+ }
97
+ }
98
+ try {
99
+ return await operation();
100
+ }
101
+ finally {
102
+ await rm(lockPath, { force: true });
103
+ }
104
+ }
30
105
  //# sourceMappingURL=private-file.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"private-file.js","sourceRoot":"","sources":["../src/private-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,OAAe;IAClE,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;IACrF,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3E,MAAM,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;YAAE,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,KAAc;IACjE,MAAM,gBAAgB,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY;IACjD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAY,CAAC;IAC7D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACzE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"private-file.js","sourceRoot":"","sources":["../src/private-file.ts"],"names":[],"mappings":"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"}
package/dist/profile.d.ts CHANGED
@@ -15,6 +15,15 @@ export interface ResolvedCodexProfile {
15
15
  clientId: string;
16
16
  scope: string;
17
17
  };
18
+ userBoundRefreshTokens?: {
19
+ enrollmentIntents: boolean;
20
+ candidateUpload: boolean;
21
+ delivery: boolean;
22
+ retirement?: boolean;
23
+ migrationPlans?: boolean;
24
+ rotationSync: boolean;
25
+ managedCredentialsV3?: boolean;
26
+ };
18
27
  stale: boolean;
19
28
  }
20
29
  export interface ResolveCodexProfileOptions {
@@ -27,3 +36,4 @@ export interface ResolveCodexProfileOptions {
27
36
  onWarning?: (message: string) => void;
28
37
  }
29
38
  export declare function resolveCodexProfile(options: ResolveCodexProfileOptions): Promise<ResolvedCodexProfile>;
39
+ export declare function profileManagedCredentialsV3Enabled(value: unknown): boolean;
package/dist/profile.js CHANGED
@@ -17,7 +17,18 @@ const ServiceSchema = z.object({
17
17
  authority: z.string().min(1),
18
18
  audience: z.string().min(1),
19
19
  roleClientId: z.string().min(1),
20
- apiVersion: z.string().min(1)
20
+ apiVersion: z.string().min(1),
21
+ capabilities: z.object({
22
+ userBoundRefreshTokens: z.object({
23
+ enrollmentIntents: z.boolean(),
24
+ candidateUpload: z.boolean(),
25
+ delivery: z.boolean(),
26
+ retirement: z.boolean().optional(),
27
+ migrationPlans: z.boolean().optional(),
28
+ rotationSync: z.boolean(),
29
+ managedCredentialsV3: z.boolean().optional()
30
+ }).passthrough().optional()
31
+ }).passthrough().optional()
21
32
  });
22
33
  const ProfileSchema = z.object({
23
34
  schemaVersion: z.literal(1),
@@ -90,6 +101,10 @@ export async function resolveCodexProfile(options) {
90
101
  let stale = false;
91
102
  let pendingCache;
92
103
  const cachedProfile = cached ? ProfileSchema.safeParse(cached.profile) : undefined;
104
+ const deliveryRequired = cached?.observedDelivery === true
105
+ || cachedProfile?.success === true && profileDeliveryEnabled(cachedProfile.data);
106
+ const managedCredentialsV3Required = cached?.observedManagedCredentialsV3 === true
107
+ || cachedProfile?.success === true && profileManagedCredentialsV3Enabled(cachedProfile.data);
93
108
  const cacheMaxAgeMs = cachedProfile?.success
94
109
  ? (cachedProfile.data.cache?.maxAgeSeconds ?? 300) * 1_000
95
110
  : 0;
@@ -127,6 +142,12 @@ export async function resolveCodexProfile(options) {
127
142
  if (!next.success) {
128
143
  throw new CodexError("Client configuration does not match schema v1.", "invalid_profile");
129
144
  }
145
+ if (deliveryRequired && !profileDeliveryEnabled(next.data)) {
146
+ throw new CodexError("Client configuration attempted to disable previously observed schema-v2 delivery.", "profile_capability_downgrade");
147
+ }
148
+ if (managedCredentialsV3Required && !profileManagedCredentialsV3Enabled(next.data)) {
149
+ throw new CodexError("Client configuration attempted to disable previously observed schema-v3 managed credentials.", "profile_capability_downgrade");
150
+ }
130
151
  const previous = cached ? ProfileSchema.safeParse(cached.profile) : undefined;
131
152
  if (previous?.success && next.data.profileId === previous.data.profileId
132
153
  && next.data.revision < previous.data.revision) {
@@ -134,7 +155,15 @@ export async function resolveCodexProfile(options) {
134
155
  }
135
156
  }
136
157
  pendingCache = {
137
- schemaVersion: 1, sourceUrl: resolvedProfileUrl, fetchedAt: now, ...(etag ? { etag } : {}), profile: raw
158
+ schemaVersion: 1,
159
+ sourceUrl: resolvedProfileUrl,
160
+ fetchedAt: now,
161
+ ...(etag ? { etag } : {}),
162
+ ...((deliveryRequired || profileDeliveryEnabled(raw)) ? { observedDelivery: true } : {}),
163
+ ...((managedCredentialsV3Required || profileManagedCredentialsV3Enabled(raw))
164
+ ? { observedManagedCredentialsV3: true }
165
+ : {}),
166
+ profile: raw
138
167
  };
139
168
  }
140
169
  }
@@ -151,6 +180,12 @@ export async function resolveCodexProfile(options) {
151
180
  const profile = ProfileSchema.safeParse(raw);
152
181
  if (!profile.success)
153
182
  throw new CodexError("Client configuration does not match schema v1.", "invalid_profile");
183
+ if (deliveryRequired && !profileDeliveryEnabled(profile.data)) {
184
+ throw new CodexError("A cached profile cannot disable previously observed schema-v2 delivery.", "profile_capability_downgrade");
185
+ }
186
+ if (managedCredentialsV3Required && !profileManagedCredentialsV3Enabled(profile.data)) {
187
+ throw new CodexError("A cached profile cannot disable previously observed schema-v3 managed credentials.", "profile_capability_downgrade");
188
+ }
154
189
  const minimumVersion = profile.data.minimumClientVersions?.tokensrcCodex;
155
190
  if (minimumVersion && compareVersions(PACKAGE_VERSION, minimumVersion) < 0) {
156
191
  throw new CodexError(`@tokensrc/codex ${minimumVersion} or newer is required by this profile.`, "client_upgrade_required");
@@ -195,9 +230,27 @@ export async function resolveCodexProfile(options) {
195
230
  clientId: authority.clientId,
196
231
  scope: authority.scopes.join(" ")
197
232
  },
233
+ ...(codex.capabilities?.userBoundRefreshTokens
234
+ ? { userBoundRefreshTokens: codex.capabilities.userBoundRefreshTokens }
235
+ : {}),
198
236
  stale
199
237
  };
200
238
  }
239
+ function profileDeliveryEnabled(value) {
240
+ const parsed = ProfileSchema.safeParse(value);
241
+ return parsed.success
242
+ && parsed.data.services.codex?.capabilities?.userBoundRefreshTokens?.delivery === true;
243
+ }
244
+ export function profileManagedCredentialsV3Enabled(value) {
245
+ if (value && typeof value === "object"
246
+ && value
247
+ .userBoundRefreshTokens?.managedCredentialsV3 === true) {
248
+ return true;
249
+ }
250
+ const parsed = ProfileSchema.safeParse(value);
251
+ return parsed.success
252
+ && parsed.data.services.codex?.capabilities?.userBoundRefreshTokens?.managedCredentialsV3 === true;
253
+ }
201
254
  function defaultProfileDirectory() {
202
255
  const configured = process.env.TOKENSRC_CODEX_CONFIG_DIR?.trim();
203
256
  if (configured)
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"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"}