@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,234 @@
1
+ import { createCipheriv, createDecipheriv, createPublicKey, diffieHellman, generateKeyPairSync, hkdfSync, randomBytes } from "node:crypto";
2
+ import { CodexServiceError } from "./errors.js";
3
+ import { CodexV3FullCredentialBundleSchema } from "./protocol.js";
4
+ const ALGORITHM = "X25519-HKDF-SHA256-AES-256-GCM";
5
+ const ENROLLMENT_KDF = "active-code-inbox/codex-enrollment-candidate/key/v1\0";
6
+ const DELIVERY_KDF = "active-code-inbox/codex-short-lived-delivery/key/v1\0";
7
+ const BASE64URL = /^[A-Za-z0-9_-]+$/u;
8
+ const MAX_TOKEN_BYTES = 65_536;
9
+ export function codexV3EnrollmentAad(input) {
10
+ return Buffer.from(JSON.stringify({
11
+ schemaVersion: 3,
12
+ purpose: "ENROLLMENT",
13
+ tenant: required(input.tenantId, "tenantId"),
14
+ subject: required(input.subject, "subject"),
15
+ clientRequestId: required(input.clientRequestId, "clientRequestId"),
16
+ idempotencyKey: required(input.idempotencyKey, "idempotencyKey"),
17
+ keyId: required(input.keyId, "keyId")
18
+ }), "utf8");
19
+ }
20
+ export function codexV3GenerationReportAad(input) {
21
+ return Buffer.from(JSON.stringify({
22
+ schemaVersion: 3,
23
+ purpose: "GENERATION_REPORT",
24
+ tenant: required(input.tenantId, "tenantId"),
25
+ subject: required(input.subject, "subject"),
26
+ lineageId: required(input.lineageId, "lineageId"),
27
+ clientRequestId: required(input.clientRequestId, "clientRequestId"),
28
+ idempotencyKey: required(input.idempotencyKey, "idempotencyKey"),
29
+ expectedGenerationVersion: positive(input.expectedGenerationVersion, "expectedGenerationVersion"),
30
+ rotationMode: input.rotationMode,
31
+ keyId: required(input.keyId, "keyId")
32
+ }), "utf8");
33
+ }
34
+ export function sealCodexV3Enrollment(input) {
35
+ return sealToServer({
36
+ ingress: input.ingress,
37
+ aad: codexV3EnrollmentAad({ ...input, keyId: input.ingress.keyId }),
38
+ plaintext: {
39
+ schemaVersion: 3,
40
+ refreshToken: secret(input.credentials.refreshToken, "refreshToken"),
41
+ accessToken: secret(input.credentials.accessToken, "accessToken"),
42
+ idToken: secret(input.credentials.idToken, "idToken"),
43
+ providerAccountId: required(input.credentials.providerAccountId, "providerAccountId"),
44
+ expiresAt: instant(input.credentials.expiresAt, "expiresAt")
45
+ },
46
+ request: (envelope) => ({ clientRequestId: input.clientRequestId, envelope })
47
+ });
48
+ }
49
+ export function sealCodexV3GenerationReport(input) {
50
+ return sealToServer({
51
+ ingress: input.ingress,
52
+ aad: codexV3GenerationReportAad({ ...input, keyId: input.ingress.keyId }),
53
+ plaintext: {
54
+ schemaVersion: 3,
55
+ refreshToken: secret(input.credentials.refreshToken, "refreshToken"),
56
+ accessToken: secret(input.credentials.accessToken, "accessToken"),
57
+ idToken: secret(input.credentials.idToken, "idToken"),
58
+ providerAccountId: required(input.credentials.providerAccountId, "providerAccountId"),
59
+ expiresAt: instant(input.credentials.expiresAt, "expiresAt")
60
+ },
61
+ request: (envelope) => ({
62
+ clientRequestId: input.clientRequestId,
63
+ expectedGenerationVersion: input.expectedGenerationVersion,
64
+ rotationMode: input.rotationMode,
65
+ envelope
66
+ })
67
+ });
68
+ }
69
+ function sealToServer(input) {
70
+ if (input.ingress.envelopeVersion !== 1 || input.ingress.algorithm !== ALGORITHM) {
71
+ throw invalidEnvelope("The account service advertised an unsupported v3 credential envelope.");
72
+ }
73
+ let plaintext;
74
+ let sharedSecret;
75
+ let key;
76
+ try {
77
+ decodeBase64url(input.ingress.publicKey, 32, "Invalid v3 ingress public key.");
78
+ plaintext = Buffer.from(JSON.stringify(input.plaintext), "utf8");
79
+ if (plaintext.length > input.ingress.maxCiphertextBytes) {
80
+ throw invalidEnvelope("The v3 credential bundle exceeds the service limit.");
81
+ }
82
+ const { publicKey, privateKey } = generateKeyPairSync("x25519");
83
+ const exported = publicKey.export({ format: "jwk" });
84
+ if (exported.kty !== "OKP" || exported.crv !== "X25519" || typeof exported.x !== "string") {
85
+ throw invalidEnvelope("Unable to create a v3 credential encryption key.");
86
+ }
87
+ const salt = randomBytes(32);
88
+ const nonce = randomBytes(12);
89
+ const remote = createPublicKey({
90
+ key: { kty: "OKP", crv: "X25519", x: input.ingress.publicKey },
91
+ format: "jwk"
92
+ });
93
+ sharedSecret = diffieHellman({ privateKey, publicKey: remote });
94
+ key = Buffer.from(hkdfSync("sha256", sharedSecret, salt, Buffer.from(`${ENROLLMENT_KDF}${input.ingress.keyId}`, "utf8"), 32));
95
+ const cipher = createCipheriv("aes-256-gcm", key, nonce, { authTagLength: 16 });
96
+ cipher.setAAD(input.aad);
97
+ const ciphertext = Buffer.concat([cipher.update(plaintext), cipher.final()]);
98
+ const envelope = {
99
+ version: 1,
100
+ algorithm: ALGORITHM,
101
+ keyId: input.ingress.keyId,
102
+ ephemeralPublicKey: exported.x,
103
+ salt: salt.toString("base64url"),
104
+ nonce: nonce.toString("base64url"),
105
+ ciphertext: ciphertext.toString("base64url"),
106
+ authenticationTag: cipher.getAuthTag().toString("base64url")
107
+ };
108
+ if (Buffer.byteLength(JSON.stringify(input.request(envelope)), "utf8") > input.ingress.maxRequestBytes) {
109
+ throw invalidEnvelope("The v3 credential request exceeds the service limit.");
110
+ }
111
+ return envelope;
112
+ }
113
+ catch (error) {
114
+ if (error instanceof CodexServiceError)
115
+ throw error;
116
+ throw invalidEnvelope("Unable to create the authenticated v3 credential envelope.");
117
+ }
118
+ finally {
119
+ input.aad.fill(0);
120
+ plaintext?.fill(0);
121
+ sharedSecret?.fill(0);
122
+ key?.fill(0);
123
+ }
124
+ }
125
+ export function createCodexV3DeliveryKeyPair() {
126
+ const { publicKey, privateKey } = generateKeyPairSync("x25519");
127
+ const exported = publicKey.export({ format: "jwk" });
128
+ if (exported.kty !== "OKP" || exported.crv !== "X25519" || typeof exported.x !== "string") {
129
+ throw invalidEnvelope("Unable to create a v3 delivery key.");
130
+ }
131
+ decodeBase64url(exported.x, 32, "Unable to create a v3 delivery key.");
132
+ return { clientKey: { version: 1, algorithm: ALGORITHM, publicKey: exported.x }, privateKey };
133
+ }
134
+ export function codexV3FullDeliveryAad(input) {
135
+ const delivery = input.delivery;
136
+ return Buffer.from(JSON.stringify({
137
+ schemaVersion: 3,
138
+ tenant: required(input.tenantId, "tenantId"),
139
+ subject: required(delivery.subject, "subject"),
140
+ assignmentId: required(delivery.assignmentId, "assignmentId"),
141
+ managedAccountId: required(delivery.managedAccountId, "managedAccountId"),
142
+ providerAccountId: required(delivery.providerAccountId, "providerAccountId"),
143
+ lineageId: required(delivery.lineageId, "lineageId"),
144
+ generationVersion: positive(delivery.generationVersion, "generationVersion"),
145
+ deliveryId: required(delivery.id, "deliveryId"),
146
+ clientRequestId: required(delivery.clientRequestId, "clientRequestId"),
147
+ issuedAt: instant(delivery.issuedAt, "issuedAt"),
148
+ credentialExpiresAt: instant(delivery.credentialExpiresAt, "credentialExpiresAt"),
149
+ ackExpiresAt: instant(delivery.ackExpiresAt, "ackExpiresAt")
150
+ }), "utf8");
151
+ }
152
+ export function openCodexV3FullCredentialDelivery(input) {
153
+ const delivery = input.response.delivery;
154
+ if (input.privateKey.asymmetricKeyType !== "x25519" || delivery.envelope.version !== 1
155
+ || delivery.envelope.algorithm !== ALGORITHM) {
156
+ throw invalidEnvelope("The account service returned an unsupported v3 delivery envelope.");
157
+ }
158
+ const ephemeral = decodeBase64url(delivery.envelope.ephemeralPublicKey, 32, "Invalid v3 delivery public key.");
159
+ const salt = decodeBase64url(delivery.envelope.salt, 32, "Invalid v3 delivery salt.");
160
+ const nonce = decodeBase64url(delivery.envelope.nonce, 12, "Invalid v3 delivery nonce.");
161
+ const tag = decodeBase64url(delivery.envelope.authenticationTag, 16, "Invalid v3 delivery tag.");
162
+ const ciphertext = decodeBase64url(delivery.envelope.ciphertext, undefined, "Invalid v3 delivery ciphertext.");
163
+ const remote = createPublicKey({ key: { kty: "OKP", crv: "X25519", x: ephemeral.toString("base64url") }, format: "jwk" });
164
+ const sharedSecret = diffieHellman({ privateKey: input.privateKey, publicKey: remote });
165
+ const key = Buffer.from(hkdfSync("sha256", sharedSecret, salt, Buffer.from(`${DELIVERY_KDF}${delivery.id}`, "utf8"), 32));
166
+ let plaintext;
167
+ const aad = codexV3FullDeliveryAad({ tenantId: input.tenantId, delivery });
168
+ try {
169
+ const decipher = createDecipheriv("aes-256-gcm", key, nonce, { authTagLength: 16 });
170
+ decipher.setAAD(aad);
171
+ decipher.setAuthTag(tag);
172
+ plaintext = Buffer.concat([decipher.update(ciphertext), decipher.final()]);
173
+ const parsed = CodexV3FullCredentialBundleSchema.safeParse(JSON.parse(plaintext.toString("utf8")));
174
+ if (!parsed.success)
175
+ throw invalidEnvelope("The account service returned an invalid v3 credential bundle.");
176
+ const bundle = parsed.data;
177
+ if (bundle.deliveryId !== delivery.id || bundle.managedAccountId !== delivery.managedAccountId
178
+ || bundle.providerAccountId !== delivery.providerAccountId || bundle.lineageId !== delivery.lineageId
179
+ || bundle.generationVersion !== delivery.generationVersion || bundle.expiresAt !== delivery.credentialExpiresAt) {
180
+ throw invalidEnvelope("The v3 credential bundle does not match its delivery metadata.");
181
+ }
182
+ if (Date.parse(bundle.expiresAt) <= (input.now ?? Date.now())
183
+ || Date.parse(delivery.ackExpiresAt) <= (input.now ?? Date.now())) {
184
+ throw new CodexServiceError("The v3 credential delivery has expired.", "full_credential_delivery_expired");
185
+ }
186
+ return bundle;
187
+ }
188
+ catch (error) {
189
+ if (error instanceof CodexServiceError)
190
+ throw error;
191
+ throw invalidEnvelope("Unable to authenticate the v3 credential delivery.");
192
+ }
193
+ finally {
194
+ aad.fill(0);
195
+ plaintext?.fill(0);
196
+ sharedSecret.fill(0);
197
+ key.fill(0);
198
+ }
199
+ }
200
+ function decodeBase64url(value, length, message) {
201
+ if (!value || !BASE64URL.test(value))
202
+ throw invalidEnvelope(message);
203
+ const decoded = Buffer.from(value, "base64url");
204
+ if ((length !== undefined && decoded.length !== length) || decoded.toString("base64url") !== value) {
205
+ throw invalidEnvelope(message);
206
+ }
207
+ return decoded;
208
+ }
209
+ function required(value, name) {
210
+ if (value !== value.trim() || value.length < 1 || value.length > 512) {
211
+ throw invalidEnvelope(`${name} is invalid.`);
212
+ }
213
+ return value;
214
+ }
215
+ function secret(value, name) {
216
+ if (!value || Buffer.byteLength(value, "utf8") > MAX_TOKEN_BYTES) {
217
+ throw invalidEnvelope(`${name} is invalid.`);
218
+ }
219
+ return value;
220
+ }
221
+ function positive(value, name) {
222
+ if (!Number.isInteger(value) || value <= 0)
223
+ throw invalidEnvelope(`${name} is invalid.`);
224
+ return value;
225
+ }
226
+ function instant(value, name) {
227
+ if (value !== value.trim() || !Number.isFinite(Date.parse(value)))
228
+ throw invalidEnvelope(`${name} is invalid.`);
229
+ return value;
230
+ }
231
+ function invalidEnvelope(message) {
232
+ return new CodexServiceError(message, "invalid_managed_codex_v3_envelope");
233
+ }
234
+ //# sourceMappingURL=managed-credential-v3-envelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-credential-v3-envelope.js","sourceRoot":"","sources":["../src/managed-credential-v3-envelope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { CodexServiceClient } from "./client.js";
2
+ type V3Client = Pick<CodexServiceClient, "getCurrentActorSubject" | "getV3EnrollmentConfiguration" | "createV3Enrollment" | "resolveV3Enrollment" | "createV3FullCredentialDelivery" | "resolveV3FullCredentialDelivery" | "acknowledgeV3FullCredentialDelivery" | "listV3CredentialAssignments" | "reportV3Generation" | "resolveV3GenerationReport">;
3
+ export interface ManagedCodexV3EnrollmentResult {
4
+ enrollmentId: string;
5
+ assignmentId: string;
6
+ managedAccountId: string;
7
+ providerAccountId: string;
8
+ lineageId: string;
9
+ generationVersion: number;
10
+ authorityMode: "CLIENT_MANAGED";
11
+ authorityEpoch: number;
12
+ credentialExpiresAt: string;
13
+ enrollmentReplayed: boolean;
14
+ deliveryReplayed: boolean;
15
+ ackReplayed: boolean;
16
+ }
17
+ export declare function executeManagedCodexV3Login(input: {
18
+ client: V3Client;
19
+ tenantId: string;
20
+ env?: NodeJS.ProcessEnv;
21
+ deviceAuth?: boolean;
22
+ newId?: () => string;
23
+ now?: () => number;
24
+ wait?: (milliseconds: number) => Promise<void>;
25
+ }): Promise<ManagedCodexV3EnrollmentResult>;
26
+ export declare function executeManagedCodexV3Upload(input: {
27
+ client: V3Client;
28
+ tenantId: string;
29
+ env?: NodeJS.ProcessEnv;
30
+ newId?: () => string;
31
+ now?: () => number;
32
+ wait?: (milliseconds: number) => Promise<void>;
33
+ }): Promise<ManagedCodexV3EnrollmentResult>;
34
+ export declare function reportManagedCodexV3Credentials(input: {
35
+ client: V3Client;
36
+ tenantId: string;
37
+ env?: NodeJS.ProcessEnv;
38
+ newId?: () => string;
39
+ now?: () => number;
40
+ }): Promise<{
41
+ reported: boolean;
42
+ generationVersion?: number;
43
+ warningCode?: string;
44
+ }>;
45
+ export {};