@tokensrc/codex 1.14.16 → 1.14.18
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.
- package/README.md +73 -71
- package/dist/client.d.ts +21 -16
- package/dist/client.js +198 -116
- package/dist/client.js.map +1 -1
- package/dist/command-directory.js +3 -2
- package/dist/command-directory.js.map +1 -1
- package/dist/commands.d.ts +0 -1
- package/dist/commands.js +479 -273
- package/dist/commands.js.map +1 -1
- package/dist/credentials.d.ts +3 -75
- package/dist/credentials.js +2 -338
- package/dist/credentials.js.map +1 -1
- package/dist/index.d.ts +2 -8
- package/dist/index.js +2 -8
- package/dist/index.js.map +1 -1
- package/dist/managed-credential-v3-envelope.d.ts +38 -14
- package/dist/managed-credential-v3-envelope.js +116 -25
- package/dist/managed-credential-v3-envelope.js.map +1 -1
- package/dist/managed-credential-v3-flow.d.ts +0 -17
- package/dist/managed-credential-v3-flow.js +107 -110
- package/dist/managed-credential-v3-flow.js.map +1 -1
- package/dist/managed-credential-v3.d.ts +0 -8
- package/dist/managed-credential-v3.js +0 -23
- package/dist/managed-credential-v3.js.map +1 -1
- package/dist/profile.d.ts +2 -6
- package/dist/profile.js +26 -23
- package/dist/profile.js.map +1 -1
- package/dist/protocol.d.ts +1284 -799
- package/dist/protocol.js +494 -277
- package/dist/protocol.js.map +1 -1
- package/dist/request-bound-device-v6-flow.d.ts +42 -0
- package/dist/request-bound-device-v6-flow.js +403 -0
- package/dist/request-bound-device-v6-flow.js.map +1 -0
- package/dist/request-bound-device-v6-state.d.ts +397 -0
- package/dist/request-bound-device-v6-state.js +221 -0
- package/dist/request-bound-device-v6-state.js.map +1 -0
- package/dist/selection.d.ts +5 -0
- package/dist/selection.js +20 -2
- package/dist/selection.js.map +1 -1
- package/dist/token-pool-v4-upload-flow.js +5 -1
- package/dist/token-pool-v4-upload-flow.js.map +1 -1
- package/package.json +2 -2
- package/dist/credential-supervisor.d.ts +0 -17
- package/dist/credential-supervisor.js +0 -84
- package/dist/credential-supervisor.js.map +0 -1
- package/dist/enrollment-envelope.d.ts +0 -18
- package/dist/enrollment-envelope.js +0 -112
- package/dist/enrollment-envelope.js.map +0 -1
- package/dist/enrollment-flow.d.ts +0 -27
- package/dist/enrollment-flow.js +0 -224
- package/dist/enrollment-flow.js.map +0 -1
- package/dist/migration-login-batch.d.ts +0 -66
- package/dist/migration-login-batch.js +0 -202
- package/dist/migration-login-batch.js.map +0 -1
- package/dist/retirement-flow.d.ts +0 -38
- package/dist/retirement-flow.js +0 -78
- package/dist/retirement-flow.js.map +0 -1
- package/dist/short-lived-delivery-flow.d.ts +0 -41
- package/dist/short-lived-delivery-flow.js +0 -141
- package/dist/short-lived-delivery-flow.js.map +0 -1
- package/dist/short-lived-delivery-journal.d.ts +0 -34
- package/dist/short-lived-delivery-journal.js +0 -137
- package/dist/short-lived-delivery-journal.js.map +0 -1
- package/dist/short-lived-delivery.d.ts +0 -26
- package/dist/short-lived-delivery.js +0 -139
- package/dist/short-lived-delivery.js.map +0 -1
package/dist/selection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selection.js","sourceRoot":"","sources":["../src/selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEvE,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC5B,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"selection.js","sourceRoot":"","sources":["../src/selection.ts"],"names":[],"mappings":"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"}
|
|
@@ -92,7 +92,11 @@ async function completeCodexTokenPoolV4Upload(input) {
|
|
|
92
92
|
}
|
|
93
93
|
if (response.upload.status !== "POOLED" && response.upload.status !== "RESERVED") {
|
|
94
94
|
await clearCodexTokenPoolV4UploadJournal(input.journal, input.env);
|
|
95
|
-
|
|
95
|
+
const staleHealthyLineage = response.upload.safeErrorCode
|
|
96
|
+
=== "codex_token_pool_healthy_lineage_exists";
|
|
97
|
+
throw new CodexServiceError(staleHealthyLineage
|
|
98
|
+
? "The Server still classifies the target lineage as healthy and rejected its replacement. Reconcile that lineage to NEEDS_REAUTH before starting another login."
|
|
99
|
+
: `Token-pool upload did not succeed (${response.upload.status}).`, response.upload.safeErrorCode ?? "codex_token_pool_v4_upload_failed", 409);
|
|
96
100
|
}
|
|
97
101
|
const upload = response.upload;
|
|
98
102
|
if (upload.providerAccountId !== input.journal.providerAccountId
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-pool-v4-upload-flow.js","sourceRoot":"","sources":["../src/token-pool-v4-upload-flow.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"token-pool-v4-upload-flow.js","sourceRoot":"","sources":["../src/token-pool-v4-upload-flow.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tokensrc/codex",
|
|
3
|
-
"version": "1.14.
|
|
3
|
+
"version": "1.14.18",
|
|
4
4
|
"description": "Standalone Codex account selection, authentication and launcher module.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
},
|
|
76
76
|
"dependencies": {
|
|
77
77
|
"@clack/prompts": "^1.7.0",
|
|
78
|
-
"@numa-tech/cli-auth": "1.14.
|
|
78
|
+
"@numa-tech/cli-auth": "1.14.18",
|
|
79
79
|
"@openai/codex": "^0.146.0",
|
|
80
80
|
"codex-multi-auth": "^2.8.0",
|
|
81
81
|
"commander": "^14.0.3",
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export interface CodexCredentialSupervisorResult {
|
|
2
|
-
expiresAt: number;
|
|
3
|
-
}
|
|
4
|
-
export interface CodexCredentialSupervisorOptions {
|
|
5
|
-
initialExpiresAt?: number;
|
|
6
|
-
launch(signal: AbortSignal): Promise<number>;
|
|
7
|
-
renew(): Promise<CodexCredentialSupervisorResult>;
|
|
8
|
-
refreshBeforeMs?: number;
|
|
9
|
-
now?: () => number;
|
|
10
|
-
wait?: (delayMs: number, signal: AbortSignal) => Promise<void>;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Keeps Server-managed short-lived credentials current for exactly the lifetime
|
|
14
|
-
* of one official Codex process. A renewal failure terminates the process and is
|
|
15
|
-
* surfaced to the caller instead of leaving Codex running on stale credentials.
|
|
16
|
-
*/
|
|
17
|
-
export declare function superviseCodexShortLivedCredentials(options: CodexCredentialSupervisorOptions): Promise<number>;
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
const DEFAULT_REFRESH_BEFORE_MS = 60_000;
|
|
2
|
-
const MAX_SLEEP_MS = 60_000;
|
|
3
|
-
function abortError() {
|
|
4
|
-
return Object.assign(new Error("The credential supervisor stopped."), { name: "AbortError" });
|
|
5
|
-
}
|
|
6
|
-
async function defaultWait(delayMs, signal) {
|
|
7
|
-
if (signal.aborted)
|
|
8
|
-
throw abortError();
|
|
9
|
-
await new Promise((resolve, reject) => {
|
|
10
|
-
const timer = setTimeout(finish, Math.max(0, delayMs));
|
|
11
|
-
timer.unref?.();
|
|
12
|
-
signal.addEventListener("abort", stop, { once: true });
|
|
13
|
-
function cleanup() {
|
|
14
|
-
clearTimeout(timer);
|
|
15
|
-
signal.removeEventListener("abort", stop);
|
|
16
|
-
}
|
|
17
|
-
function finish() {
|
|
18
|
-
cleanup();
|
|
19
|
-
resolve();
|
|
20
|
-
}
|
|
21
|
-
function stop() {
|
|
22
|
-
cleanup();
|
|
23
|
-
reject(abortError());
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
function validExpiry(value) {
|
|
28
|
-
return value !== undefined && Number.isFinite(value) && value > 0;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Keeps Server-managed short-lived credentials current for exactly the lifetime
|
|
32
|
-
* of one official Codex process. A renewal failure terminates the process and is
|
|
33
|
-
* surfaced to the caller instead of leaving Codex running on stale credentials.
|
|
34
|
-
*/
|
|
35
|
-
export async function superviseCodexShortLivedCredentials(options) {
|
|
36
|
-
const controller = new AbortController();
|
|
37
|
-
const now = options.now ?? Date.now;
|
|
38
|
-
const wait = options.wait ?? defaultWait;
|
|
39
|
-
const refreshBeforeMs = options.refreshBeforeMs ?? DEFAULT_REFRESH_BEFORE_MS;
|
|
40
|
-
if (!Number.isFinite(refreshBeforeMs) || refreshBeforeMs <= 0) {
|
|
41
|
-
throw new Error("The short-lived credential refresh window must be positive.");
|
|
42
|
-
}
|
|
43
|
-
const childOutcome = Promise.resolve()
|
|
44
|
-
.then(() => options.launch(controller.signal))
|
|
45
|
-
.then((code) => ({ kind: "child", code }), (error) => ({ kind: "child-error", error }));
|
|
46
|
-
const renewalOutcome = (async () => {
|
|
47
|
-
let expiresAt = options.initialExpiresAt;
|
|
48
|
-
while (!controller.signal.aborted) {
|
|
49
|
-
const delay = validExpiry(expiresAt)
|
|
50
|
-
? Math.max(0, expiresAt - now() - refreshBeforeMs)
|
|
51
|
-
: 0;
|
|
52
|
-
if (delay > 0) {
|
|
53
|
-
await wait(Math.min(delay, MAX_SLEEP_MS), controller.signal);
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
const renewed = await options.renew();
|
|
57
|
-
if (!validExpiry(renewed.expiresAt) || renewed.expiresAt <= now() + refreshBeforeMs) {
|
|
58
|
-
throw Object.assign(new Error("The Server returned a short-lived Codex credential inside its safety window."), { code: "short_lived_credential_expired" });
|
|
59
|
-
}
|
|
60
|
-
expiresAt = renewed.expiresAt;
|
|
61
|
-
}
|
|
62
|
-
})().then(() => ({ kind: "renewal-stopped" }), (error) => controller.signal.aborted
|
|
63
|
-
? ({ kind: "renewal-stopped" })
|
|
64
|
-
: ({ kind: "renewal-error", error }));
|
|
65
|
-
const outcome = await Promise.race([childOutcome, renewalOutcome]);
|
|
66
|
-
if (outcome.kind === "child" || outcome.kind === "child-error") {
|
|
67
|
-
controller.abort();
|
|
68
|
-
await renewalOutcome;
|
|
69
|
-
if (outcome.kind === "child-error")
|
|
70
|
-
throw outcome.error;
|
|
71
|
-
return outcome.code;
|
|
72
|
-
}
|
|
73
|
-
if (outcome.kind === "renewal-error") {
|
|
74
|
-
controller.abort();
|
|
75
|
-
await childOutcome;
|
|
76
|
-
throw outcome.error;
|
|
77
|
-
}
|
|
78
|
-
controller.abort();
|
|
79
|
-
const child = await childOutcome;
|
|
80
|
-
if (child.kind === "child-error")
|
|
81
|
-
throw child.error;
|
|
82
|
-
return child.code;
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=credential-supervisor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"credential-supervisor.js","sourceRoot":"","sources":["../src/credential-supervisor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
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;
|
|
@@ -1,112 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"enrollment-envelope.js","sourceRoot":"","sources":["../src/enrollment-envelope.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +0,0 @@
|
|
|
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 {};
|
package/dist/enrollment-flow.js
DELETED
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from "node:crypto";
|
|
2
|
-
import { sealCodexEnrollmentCandidate } from "./enrollment-envelope.js";
|
|
3
|
-
import { withOneShotCodexLogin } from "./enrollment-login.js";
|
|
4
|
-
import { CodexServiceError } from "./errors.js";
|
|
5
|
-
/**
|
|
6
|
-
* Claims one server-created intent, runs an isolated official login, and sends
|
|
7
|
-
* only an authenticated encrypted refresh-token envelope to that exact intent.
|
|
8
|
-
*/
|
|
9
|
-
export async function executeCodexEnrollmentLogin(input) {
|
|
10
|
-
const randomId = input.randomId ?? randomUUID;
|
|
11
|
-
const oneShotLogin = input.oneShotLogin ?? withOneShotCodexLogin;
|
|
12
|
-
let current = await input.client.getEnrollmentIntent(input.intentId);
|
|
13
|
-
const ingress = current.capabilities.candidateIngress;
|
|
14
|
-
if (!current.capabilities.candidateUpload || !ingress) {
|
|
15
|
-
throw new CodexServiceError("服务端尚未启用加密候选上传;为避免生成无法安全接收的 RT,本次不会启动 OpenAI 登录。", "capability_not_enabled", 409);
|
|
16
|
-
}
|
|
17
|
-
const resumableClaim = input.resumeClaimedIntent === true
|
|
18
|
-
&& ["CLAIMED", "LOGIN_IN_PROGRESS"].includes(current.intent.status)
|
|
19
|
-
&& current.intent.allowedActions.includes("HEARTBEAT");
|
|
20
|
-
if (input.requireInitialAwaitingCli
|
|
21
|
-
&& !resumableClaim
|
|
22
|
-
&& (current.intent.status !== "AWAITING_CLI" || !current.intent.allowedActions.includes("CLAIM"))) {
|
|
23
|
-
throw stateConflict(current);
|
|
24
|
-
}
|
|
25
|
-
if (current.intent.allowedActions.includes("CLAIM") || resumableClaim) {
|
|
26
|
-
current = await input.client.claimEnrollmentIntent(input.intentId, {
|
|
27
|
-
idempotencyKey: randomId(),
|
|
28
|
-
revision: current.intent.revision
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
if (!["CLAIMED", "LOGIN_IN_PROGRESS"].includes(current.intent.status)
|
|
32
|
-
|| !current.intent.allowedActions.includes("HEARTBEAT")) {
|
|
33
|
-
throw stateConflict(current);
|
|
34
|
-
}
|
|
35
|
-
current = await input.client.heartbeatEnrollmentIntent(input.intentId, {
|
|
36
|
-
idempotencyKey: randomId(),
|
|
37
|
-
revision: current.intent.revision,
|
|
38
|
-
phase: "LOGIN_IN_PROGRESS"
|
|
39
|
-
});
|
|
40
|
-
const keepalive = createLoginKeepalive({
|
|
41
|
-
client: input.client,
|
|
42
|
-
intentId: input.intentId,
|
|
43
|
-
current,
|
|
44
|
-
randomId,
|
|
45
|
-
intervalMs: input.heartbeatIntervalMs ?? 30_000
|
|
46
|
-
});
|
|
47
|
-
try {
|
|
48
|
-
return await oneShotLogin({
|
|
49
|
-
...input.loginOptions,
|
|
50
|
-
mode: input.deviceAuth ? "device" : "browser"
|
|
51
|
-
}, async (credentials) => {
|
|
52
|
-
try {
|
|
53
|
-
current = await keepalive.stop();
|
|
54
|
-
const candidateRetryDelays = input.candidateRetryDelaysMs ?? [1_000, 3_000];
|
|
55
|
-
const transportRetryDelays = input.candidateTransportRetryDelaysMs ?? [250, 1_000];
|
|
56
|
-
const wait = input.wait ?? defaultWait;
|
|
57
|
-
for (let candidateAttempt = 0;; candidateAttempt += 1) {
|
|
58
|
-
current = await input.client.heartbeatEnrollmentIntent(input.intentId, {
|
|
59
|
-
idempotencyKey: randomId(),
|
|
60
|
-
revision: current.intent.revision,
|
|
61
|
-
phase: "UPLOADING"
|
|
62
|
-
});
|
|
63
|
-
const revision = current.intent.revision;
|
|
64
|
-
const idempotencyKey = randomId();
|
|
65
|
-
const candidate = {
|
|
66
|
-
schemaVersion: 2,
|
|
67
|
-
revision,
|
|
68
|
-
envelope: sealCodexEnrollmentCandidate({
|
|
69
|
-
tenantId: input.tenantId,
|
|
70
|
-
intentId: input.intentId,
|
|
71
|
-
revision,
|
|
72
|
-
idempotencyKey,
|
|
73
|
-
refreshToken: credentials.refreshToken,
|
|
74
|
-
ingress
|
|
75
|
-
})
|
|
76
|
-
};
|
|
77
|
-
const result = await uploadCandidateWithRetry({
|
|
78
|
-
client: input.client,
|
|
79
|
-
intentId: input.intentId,
|
|
80
|
-
candidate,
|
|
81
|
-
idempotencyKey,
|
|
82
|
-
retryDelays: transportRetryDelays,
|
|
83
|
-
wait
|
|
84
|
-
});
|
|
85
|
-
if (result.result.outcome !== "TEMPORARILY_UNAVAILABLE")
|
|
86
|
-
return result;
|
|
87
|
-
const delay = candidateRetryDelays[candidateAttempt];
|
|
88
|
-
if (delay === undefined)
|
|
89
|
-
return result;
|
|
90
|
-
current = result;
|
|
91
|
-
await wait(delay);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
finally {
|
|
95
|
-
credentials.refreshToken = "";
|
|
96
|
-
credentials.accessToken = "";
|
|
97
|
-
credentials.idToken = "";
|
|
98
|
-
delete credentials.providerAccountId;
|
|
99
|
-
delete credentials.lastRefresh;
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
finally {
|
|
104
|
-
await keepalive.stop();
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
async function uploadCandidateWithRetry(input) {
|
|
108
|
-
let priorAttemptWasUncertain = false;
|
|
109
|
-
for (let attempt = 0;; attempt += 1) {
|
|
110
|
-
try {
|
|
111
|
-
return await input.client.uploadEnrollmentCandidate(input.intentId, input.candidate, input.idempotencyKey);
|
|
112
|
-
}
|
|
113
|
-
catch (error) {
|
|
114
|
-
if (!isUncertainCandidateUpload(error)) {
|
|
115
|
-
if (priorAttemptWasUncertain) {
|
|
116
|
-
return reconcileCandidateUpload(input.client, input.intentId);
|
|
117
|
-
}
|
|
118
|
-
throw error;
|
|
119
|
-
}
|
|
120
|
-
priorAttemptWasUncertain = true;
|
|
121
|
-
const delay = input.retryDelays[attempt];
|
|
122
|
-
if (!isRetryableCandidateUpload(error) || delay === undefined) {
|
|
123
|
-
return reconcileCandidateUpload(input.client, input.intentId);
|
|
124
|
-
}
|
|
125
|
-
await input.wait(delay);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
function createLoginKeepalive(input) {
|
|
130
|
-
let current = input.current;
|
|
131
|
-
let stopped = false;
|
|
132
|
-
let timer;
|
|
133
|
-
let pending = Promise.resolve();
|
|
134
|
-
let failure;
|
|
135
|
-
const schedule = () => {
|
|
136
|
-
if (stopped || input.intervalMs <= 0)
|
|
137
|
-
return;
|
|
138
|
-
timer = setTimeout(() => {
|
|
139
|
-
pending = input.client.heartbeatEnrollmentIntent(input.intentId, {
|
|
140
|
-
idempotencyKey: input.randomId(),
|
|
141
|
-
revision: current.intent.revision,
|
|
142
|
-
phase: "LOGIN_IN_PROGRESS"
|
|
143
|
-
}).then((response) => {
|
|
144
|
-
current = response;
|
|
145
|
-
schedule();
|
|
146
|
-
}).catch((error) => {
|
|
147
|
-
failure = error;
|
|
148
|
-
});
|
|
149
|
-
}, input.intervalMs);
|
|
150
|
-
timer.unref();
|
|
151
|
-
};
|
|
152
|
-
schedule();
|
|
153
|
-
return {
|
|
154
|
-
async stop() {
|
|
155
|
-
stopped = true;
|
|
156
|
-
if (timer)
|
|
157
|
-
clearTimeout(timer);
|
|
158
|
-
await pending;
|
|
159
|
-
if (failure)
|
|
160
|
-
throw failure;
|
|
161
|
-
return current;
|
|
162
|
-
}
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
function stateConflict(current) {
|
|
166
|
-
if (current.intent.status === "TEMPORARILY_UNAVAILABLE") {
|
|
167
|
-
return new CodexServiceError("This intent retains a prior undispatched candidate that a new login cannot reproduce. Cancel it and create a new enrollment intent.", "enrollment_intent_state_conflict", 409);
|
|
168
|
-
}
|
|
169
|
-
return new CodexServiceError(`Enrollment intent cannot start a new official login from status ${current.intent.status}. Check status before retrying.`, "enrollment_intent_state_conflict", 409);
|
|
170
|
-
}
|
|
171
|
-
function isRetryableCandidateUpload(error) {
|
|
172
|
-
const value = error;
|
|
173
|
-
return value?.code === "codex_service_unavailable"
|
|
174
|
-
|| typeof value?.status === "number" && value.status >= 500 && value.status <= 599
|
|
175
|
-
|| value?.name === "AbortError"
|
|
176
|
-
|| value?.name === "TimeoutError"
|
|
177
|
-
|| error instanceof TypeError;
|
|
178
|
-
}
|
|
179
|
-
function isUncertainCandidateUpload(error) {
|
|
180
|
-
const code = error?.code;
|
|
181
|
-
return isRetryableCandidateUpload(error) || code === "invalid_codex_service_response";
|
|
182
|
-
}
|
|
183
|
-
async function reconcileCandidateUpload(client, intentId) {
|
|
184
|
-
let observed;
|
|
185
|
-
try {
|
|
186
|
-
observed = await client.getEnrollmentIntent(intentId);
|
|
187
|
-
}
|
|
188
|
-
catch {
|
|
189
|
-
throw ambiguousCandidateUpload();
|
|
190
|
-
}
|
|
191
|
-
const outcome = candidateOutcomeForStatus(observed.intent.status);
|
|
192
|
-
if (outcome) {
|
|
193
|
-
return {
|
|
194
|
-
...observed,
|
|
195
|
-
result: {
|
|
196
|
-
outcome,
|
|
197
|
-
managedAccountId: observed.intent.resultManagedAccountId,
|
|
198
|
-
lineageId: observed.intent.resultLineageId,
|
|
199
|
-
generationVersion: observed.intent.currentGenerationVersion,
|
|
200
|
-
replayed: true
|
|
201
|
-
}
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
if (["EXPIRED", "CANCELLED"].includes(observed.intent.status)) {
|
|
205
|
-
throw new CodexServiceError(`Enrollment candidate ended in terminal status ${observed.intent.status}; do not reuse its login or upload key.`, `enrollment_candidate_${observed.intent.status.toLowerCase()}`, 409);
|
|
206
|
-
}
|
|
207
|
-
throw ambiguousCandidateUpload();
|
|
208
|
-
}
|
|
209
|
-
function candidateOutcomeForStatus(status) {
|
|
210
|
-
return [
|
|
211
|
-
"READY",
|
|
212
|
-
"ACCOUNT_MISMATCH",
|
|
213
|
-
"IDENTITY_UNVERIFIABLE",
|
|
214
|
-
"TEMPORARILY_UNAVAILABLE",
|
|
215
|
-
"OUTCOME_AMBIGUOUS"
|
|
216
|
-
].includes(status) ? status : undefined;
|
|
217
|
-
}
|
|
218
|
-
function ambiguousCandidateUpload() {
|
|
219
|
-
return new CodexServiceError("The enrollment candidate upload result is not safely known. Do not start another login or submit a new key; inspect this same intent and resume only from a terminal Server result.", "enrollment_candidate_upload_ambiguous", 409);
|
|
220
|
-
}
|
|
221
|
-
function defaultWait(milliseconds) {
|
|
222
|
-
return new Promise((resolve) => setTimeout(resolve, milliseconds));
|
|
223
|
-
}
|
|
224
|
-
//# sourceMappingURL=enrollment-flow.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"enrollment-flow.js","sourceRoot":"","sources":["../src/enrollment-flow.ts"],"names":[],"mappings":"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"}
|