oc-codex-multi-auth 6.15.0 → 6.17.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.
- package/README.md +15 -11
- package/config/README.md +36 -13
- package/config/opencode-legacy.json +150 -0
- package/config/opencode-modern.json +48 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +145 -55
- package/dist/index.js.map +1 -1
- package/dist/lib/accounts/persistence.d.ts +53 -3
- package/dist/lib/accounts/persistence.d.ts.map +1 -1
- package/dist/lib/accounts/persistence.js +110 -4
- package/dist/lib/accounts/persistence.js.map +1 -1
- package/dist/lib/accounts/state.d.ts +1 -0
- package/dist/lib/accounts/state.d.ts.map +1 -1
- package/dist/lib/accounts/state.js +11 -0
- package/dist/lib/accounts/state.js.map +1 -1
- package/dist/lib/accounts.d.ts +1 -1
- package/dist/lib/accounts.d.ts.map +1 -1
- package/dist/lib/accounts.js +1 -1
- package/dist/lib/accounts.js.map +1 -1
- package/dist/lib/auth/login-runner.d.ts +2 -0
- package/dist/lib/auth/login-runner.d.ts.map +1 -1
- package/dist/lib/auth/login-runner.js +44 -12
- package/dist/lib/auth/login-runner.js.map +1 -1
- package/dist/lib/auth/loopback-flow.d.ts +124 -0
- package/dist/lib/auth/loopback-flow.d.ts.map +1 -0
- package/dist/lib/auth/loopback-flow.js +112 -0
- package/dist/lib/auth/loopback-flow.js.map +1 -0
- package/dist/lib/auth/plan-tier.d.ts +21 -0
- package/dist/lib/auth/plan-tier.d.ts.map +1 -0
- package/dist/lib/auth/plan-tier.js +92 -0
- package/dist/lib/auth/plan-tier.js.map +1 -0
- package/dist/lib/auth/token-utils.d.ts +8 -10
- package/dist/lib/auth/token-utils.d.ts.map +1 -1
- package/dist/lib/auth/token-utils.js +27 -18
- package/dist/lib/auth/token-utils.js.map +1 -1
- package/dist/lib/constants.d.ts +5 -2
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +5 -2
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/prompts/codex.d.ts +1 -1
- package/dist/lib/prompts/codex.d.ts.map +1 -1
- package/dist/lib/prompts/codex.js +51 -4
- package/dist/lib/prompts/codex.js.map +1 -1
- package/dist/lib/quota-notifications.d.ts +15 -0
- package/dist/lib/quota-notifications.d.ts.map +1 -1
- package/dist/lib/quota-notifications.js +42 -12
- package/dist/lib/quota-notifications.js.map +1 -1
- package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
- package/dist/lib/request/fetch-helpers.js +88 -9
- package/dist/lib/request/fetch-helpers.js.map +1 -1
- package/dist/lib/request/helpers/client-identity.d.ts.map +1 -1
- package/dist/lib/request/helpers/client-identity.js +9 -2
- package/dist/lib/request/helpers/client-identity.js.map +1 -1
- package/dist/lib/request/helpers/model-map.d.ts +23 -0
- package/dist/lib/request/helpers/model-map.d.ts.map +1 -1
- package/dist/lib/request/helpers/model-map.js +92 -2
- package/dist/lib/request/helpers/model-map.js.map +1 -1
- package/dist/lib/request/helpers/responses-lite.d.ts.map +1 -1
- package/dist/lib/request/helpers/responses-lite.js +34 -1
- package/dist/lib/request/helpers/responses-lite.js.map +1 -1
- package/dist/lib/request/request-transformer.d.ts.map +1 -1
- package/dist/lib/request/request-transformer.js +78 -13
- package/dist/lib/request/request-transformer.js.map +1 -1
- package/dist/lib/schemas.d.ts +15 -0
- package/dist/lib/schemas.d.ts.map +1 -1
- package/dist/lib/schemas.js +1 -0
- package/dist/lib/schemas.js.map +1 -1
- package/dist/lib/storage/flagged.d.ts.map +1 -1
- package/dist/lib/storage/flagged.js +5 -0
- package/dist/lib/storage/flagged.js.map +1 -1
- package/dist/lib/storage/migrations.d.ts +2 -0
- package/dist/lib/storage/migrations.d.ts.map +1 -1
- package/dist/lib/storage/migrations.js.map +1 -1
- package/dist/lib/tools/codex-limits.d.ts.map +1 -1
- package/dist/lib/tools/codex-limits.js +7 -4
- package/dist/lib/tools/codex-limits.js.map +1 -1
- package/dist/lib/tools/codex-list.d.ts.map +1 -1
- package/dist/lib/tools/codex-list.js +13 -1
- package/dist/lib/tools/codex-list.js.map +1 -1
- package/dist/lib/tools/codex-status.d.ts.map +1 -1
- package/dist/lib/tools/codex-status.js +8 -0
- package/dist/lib/tools/codex-status.js.map +1 -1
- package/dist/lib/tui-status.d.ts.map +1 -1
- package/dist/lib/tui-status.js +6 -2
- package/dist/lib/tui-status.js.map +1 -1
- package/dist/lib/types.d.ts +1 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/scripts/install-oc-codex-multi-auth-core.js +5 -5
|
@@ -3,7 +3,8 @@ import { extractAccountEmail, extractAccountId, getAccountIdCandidates, sanitize
|
|
|
3
3
|
// barrel: it is a pure formatter with no reason to be stubbed, and routing it
|
|
4
4
|
// through the barrel would force every suite that mocks accounts.js to
|
|
5
5
|
// re-export it.
|
|
6
|
-
import { extractAccountUserId,
|
|
6
|
+
import { extractAccountUserId, isGeneratedAccountLabel, } from "./token-utils.js";
|
|
7
|
+
import { extractPlanType } from "./plan-tier.js";
|
|
7
8
|
import { logInfo } from "../logger.js";
|
|
8
9
|
import { normalizeScope } from "./scopes.js";
|
|
9
10
|
import { MODEL_FAMILIES } from "../prompts/codex.js";
|
|
@@ -79,6 +80,8 @@ export function mergeStoredAccountPair(target, source) {
|
|
|
79
80
|
accessToken: newer.accessToken ?? older.accessToken,
|
|
80
81
|
expiresAt: newer.expiresAt ?? older.expiresAt,
|
|
81
82
|
oauthScope: newer.oauthScope ?? older.oauthScope,
|
|
83
|
+
// Follows the access token it was read from, so an upgrade is not pinned stale.
|
|
84
|
+
planType: newer.planType ?? older.planType,
|
|
82
85
|
// Follows the token fields: the rotation stamp must describe the
|
|
83
86
|
// refreshToken that actually survived the merge. No fallback to the
|
|
84
87
|
// older stamp when the newer token wins — attaching an old timestamp
|
|
@@ -103,8 +106,10 @@ const createSelectionVariant = (tokens, candidate) => ({
|
|
|
103
106
|
organizationIdOverride: candidate.organizationId,
|
|
104
107
|
accountIdSource: candidate.source,
|
|
105
108
|
accountLabel: candidate.label,
|
|
109
|
+
planType: candidate.planType,
|
|
106
110
|
});
|
|
107
111
|
export function resolveAccountSelection(tokens) {
|
|
112
|
+
const planType = extractPlanType(tokens.access);
|
|
108
113
|
const override = (process.env.CODEX_AUTH_ACCOUNT_ID ?? "").trim();
|
|
109
114
|
if (override) {
|
|
110
115
|
const suffix = override.length > 6 ? override.slice(-6) : override;
|
|
@@ -114,6 +119,7 @@ export function resolveAccountSelection(tokens) {
|
|
|
114
119
|
accountIdOverride: override,
|
|
115
120
|
accountIdSource: "manual",
|
|
116
121
|
accountLabel: `Override [id:${suffix}]`,
|
|
122
|
+
planType,
|
|
117
123
|
};
|
|
118
124
|
return {
|
|
119
125
|
primary,
|
|
@@ -122,16 +128,18 @@ export function resolveAccountSelection(tokens) {
|
|
|
122
128
|
}
|
|
123
129
|
const candidates = getAccountIdCandidates(tokens.access, tokens.idToken);
|
|
124
130
|
if (candidates.length === 0) {
|
|
131
|
+
const primary = { ...tokens, planType };
|
|
125
132
|
return {
|
|
126
|
-
primary
|
|
127
|
-
variantsForPersistence: [
|
|
133
|
+
primary,
|
|
134
|
+
variantsForPersistence: [primary],
|
|
128
135
|
};
|
|
129
136
|
}
|
|
130
137
|
const choice = selectBestAccountCandidate(candidates);
|
|
131
138
|
if (!choice) {
|
|
139
|
+
const primary = { ...tokens, planType };
|
|
132
140
|
return {
|
|
133
|
-
primary
|
|
134
|
-
variantsForPersistence: [
|
|
141
|
+
primary,
|
|
142
|
+
variantsForPersistence: [primary],
|
|
135
143
|
};
|
|
136
144
|
}
|
|
137
145
|
// One login yields exactly one persisted account.
|
|
@@ -148,9 +156,25 @@ export function resolveAccountSelection(tokens) {
|
|
|
148
156
|
// `chatgpt_account_id` claim, so per-entry tokens are what give per-entry
|
|
149
157
|
// quotas: bind to the token-scoped id and let a second `auth login` under
|
|
150
158
|
// the other workspace append a separate account carrying its own token.
|
|
151
|
-
// The chosen workspace's
|
|
159
|
+
// The chosen workspace's organization id rides along as metadata -
|
|
152
160
|
// `organizationId` is display/dedupe-only and is not sent as a header unless
|
|
153
161
|
// CODEX_AUTH_SEND_ORGANIZATION_HEADER=1 (see lib/request/fetch-helpers.ts).
|
|
162
|
+
//
|
|
163
|
+
// The candidate's *name* is deliberately not used as the label. With
|
|
164
|
+
// `id_token_add_organizations=true` those candidates enumerate the user's
|
|
165
|
+
// API-platform organizations, not their ChatGPT workspaces, so naming an
|
|
166
|
+
// account after one reported an unrelated org ("<api org> (role:owner)")
|
|
167
|
+
// for a personal ChatGPT subscription.
|
|
168
|
+
//
|
|
169
|
+
// No label is generated in its place either. A ChatGPT credential carries
|
|
170
|
+
// no workspace name at all, only `chatgpt_account_id` and the account
|
|
171
|
+
// email — and every display surface already renders both, the email
|
|
172
|
+
// through `resolveDisplayEmail` so `maskEmail` applies. Restating them in
|
|
173
|
+
// the label would print each identity twice and, because the label is
|
|
174
|
+
// rendered verbatim, would put the unmasked address back on screen. The
|
|
175
|
+
// login clears the stale org-derived label instead (see
|
|
176
|
+
// `persistAccountPool`) and the account identifies itself as
|
|
177
|
+
// "<email>, id:<suffix>".
|
|
154
178
|
const routingCandidate = candidates.find((candidate) => candidate.source === "token") ??
|
|
155
179
|
candidates.find((candidate) => candidate.source === "id_token") ??
|
|
156
180
|
choice;
|
|
@@ -158,9 +182,7 @@ export function resolveAccountSelection(tokens) {
|
|
|
158
182
|
accountId: routingCandidate.accountId,
|
|
159
183
|
organizationId: choice.organizationId,
|
|
160
184
|
source: routingCandidate.source ?? "token",
|
|
161
|
-
|
|
162
|
-
? choice.label
|
|
163
|
-
: relabelCandidateForAccountId(choice.label, routingCandidate.accountId),
|
|
185
|
+
planType,
|
|
164
186
|
});
|
|
165
187
|
return {
|
|
166
188
|
primary,
|
|
@@ -503,6 +525,7 @@ export async function persistAccountPool(results, replaceAll = false) {
|
|
|
503
525
|
(result.accountIdOverride ? "manual" : "token")
|
|
504
526
|
: undefined;
|
|
505
527
|
const accountLabel = result.accountLabel;
|
|
528
|
+
const planType = result.planType ?? extractPlanType(result.access);
|
|
506
529
|
const accountEmail = sanitizeEmail(extractAccountEmail(result.access, result.idToken));
|
|
507
530
|
// A blank scope must never reach storage: it is indistinguishable from
|
|
508
531
|
// "granted nothing" at load time, and `?? existing.oauthScope` below
|
|
@@ -572,6 +595,7 @@ export async function persistAccountPool(results, replaceAll = false) {
|
|
|
572
595
|
organizationId,
|
|
573
596
|
accountIdSource,
|
|
574
597
|
accountLabel,
|
|
598
|
+
planType,
|
|
575
599
|
email: accountEmail,
|
|
576
600
|
refreshToken: result.refresh,
|
|
577
601
|
accessToken: result.access,
|
|
@@ -600,9 +624,16 @@ export async function persistAccountPool(results, replaceAll = false) {
|
|
|
600
624
|
: normalizedAccountId
|
|
601
625
|
? accountIdSource ?? existing.accountIdSource
|
|
602
626
|
: existing.accountIdSource;
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
627
|
+
// A label someone chose is theirs to keep. Only a generated one is
|
|
628
|
+
// replaced, so re-logging in drops a stale label that named an API
|
|
629
|
+
// organization without overwriting a name a user typed.
|
|
630
|
+
//
|
|
631
|
+
// No `?? existing.accountLabel` fallback: the ChatGPT path now
|
|
632
|
+
// produces no label at all, and falling back would pin exactly the
|
|
633
|
+
// wrong org-derived label this is meant to clear.
|
|
634
|
+
const nextAccountLabel = isGeneratedAccountLabel(existing.accountLabel)
|
|
635
|
+
? accountLabel
|
|
636
|
+
: existing.accountLabel;
|
|
606
637
|
accounts[existingIndex] = {
|
|
607
638
|
...existing,
|
|
608
639
|
accountId: nextAccountId,
|
|
@@ -610,6 +641,7 @@ export async function persistAccountPool(results, replaceAll = false) {
|
|
|
610
641
|
organizationId: nextOrganizationId,
|
|
611
642
|
accountIdSource: nextAccountIdSource,
|
|
612
643
|
accountLabel: nextAccountLabel,
|
|
644
|
+
planType: planType ?? existing.planType,
|
|
613
645
|
email: nextEmail,
|
|
614
646
|
refreshToken: result.refresh,
|
|
615
647
|
accessToken: result.access,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login-runner.js","sourceRoot":"","sources":["../../../lib/auth/login-runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"login-runner.js","sourceRoot":"","sources":["../../../lib/auth/login-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loopback OAuth session primitive.
|
|
3
|
+
*
|
|
4
|
+
* One typed session shared by the automatic-browser and manual-browser
|
|
5
|
+
* choices: the listener is bound BEFORE any browser is opened, so the browser
|
|
6
|
+
* choice cannot land on a redirect_uri nobody is listening on. Manual mode
|
|
7
|
+
* (`openBrowser=false`) never opens a browser. If the listener cannot bind —
|
|
8
|
+
* whether it reports itself unready or `startLocalOAuthServer` throws — the
|
|
9
|
+
* browser is never opened and a typed `unavailable` lifecycle marker is
|
|
10
|
+
* returned; the caller maps that marker to user-facing guidance (label names,
|
|
11
|
+
* fallback instructions) because those belong at the auth-method boundary in
|
|
12
|
+
* index.ts, not inside this primitive.
|
|
13
|
+
*
|
|
14
|
+
* A browser that will not launch is NOT a terminal condition. The listener is
|
|
15
|
+
* already bound and its deadline already running, so the session comes back
|
|
16
|
+
* ready with `browserOpened: false` and the caller prints the URL for the user
|
|
17
|
+
* to open. Ending the session there would strand every host with no opener on
|
|
18
|
+
* PATH, which is the ordinary case on Linux and WSL.
|
|
19
|
+
*
|
|
20
|
+
* A ready session starts its callback observation IMMEDIATELY, so the
|
|
21
|
+
* listener's existing five-minute deadline runs from session creation rather
|
|
22
|
+
* than from the host's callback. An authorization the host abandons after
|
|
23
|
+
* taking the URL therefore still releases port 1455 instead of pinning it for
|
|
24
|
+
* the lifetime of the process. That observation is normalized so it can never
|
|
25
|
+
* reject: an unobserved rejecting promise would be an unhandled rejection in
|
|
26
|
+
* the window before `waitAndExchange()` awaits it.
|
|
27
|
+
*
|
|
28
|
+
* `waitAndExchange()` remains the lazy token-exchange boundary - the host
|
|
29
|
+
* stores the authorization and calls back separately - and awaits that shared
|
|
30
|
+
* outcome before exchanging the code with the flow's own PKCE verifier and
|
|
31
|
+
* `REDIRECT_URI`. Every terminal path (callback, timeout, external close,
|
|
32
|
+
* opener failure, throwing wait, throwing exchange) runs through one
|
|
33
|
+
* `closeOnce` gate, so `server.close()` happens exactly once. A null callback
|
|
34
|
+
* surfaces as a typed `cancelled` lifecycle result, and a callback arriving
|
|
35
|
+
* after expiry observes that already-settled cancellation.
|
|
36
|
+
*
|
|
37
|
+
* This module holds NO labels, persistence, or OpenCode method shapes. It
|
|
38
|
+
* does not duplicate the URL parser, PKCE generator, callback server, or
|
|
39
|
+
* token exchange - it composes the primitives that already own them.
|
|
40
|
+
*/
|
|
41
|
+
import type { OAuthServerInfo, AuthorizationFlow, TokenResult } from "../types.js";
|
|
42
|
+
export interface LoopbackFlowDeps {
|
|
43
|
+
createAuthorizationFlow: (opts?: {
|
|
44
|
+
forceNewLogin?: boolean;
|
|
45
|
+
}) => Promise<AuthorizationFlow>;
|
|
46
|
+
startLocalOAuthServer: (opts: {
|
|
47
|
+
state: string;
|
|
48
|
+
}) => Promise<OAuthServerInfo>;
|
|
49
|
+
openBrowserUrl: (url: string) => boolean;
|
|
50
|
+
exchangeAuthorizationCode: (code: string, verifier: string, redirectUri?: string) => Promise<TokenResult>;
|
|
51
|
+
}
|
|
52
|
+
export interface LoopbackFlowOptions {
|
|
53
|
+
/**
|
|
54
|
+
* `true` opens the user's default browser AFTER the listener is ready.
|
|
55
|
+
* `false` (manual mode) never calls `openBrowserUrl`; the caller is
|
|
56
|
+
* expected to hand `url` back to the user directly.
|
|
57
|
+
*/
|
|
58
|
+
openBrowser: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Forwarded verbatim to `createAuthorizationFlow`. When true, the
|
|
61
|
+
* authorize URL gets `prompt=login` so a cached browser session cannot
|
|
62
|
+
* silently reuse the previous account.
|
|
63
|
+
*/
|
|
64
|
+
forceNewLogin?: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Test seam. Individual overrides merge onto the production defaults;
|
|
67
|
+
* production callers pass nothing.
|
|
68
|
+
*/
|
|
69
|
+
deps?: Partial<LoopbackFlowDeps>;
|
|
70
|
+
}
|
|
71
|
+
export interface LoopbackFlowReady {
|
|
72
|
+
type: "ready";
|
|
73
|
+
/**
|
|
74
|
+
* Authorize URL to hand to the user (manual mode) or that the primitive
|
|
75
|
+
* has already opened (automatic mode).
|
|
76
|
+
*/
|
|
77
|
+
url: string;
|
|
78
|
+
/**
|
|
79
|
+
* `false` when `openBrowser` was asked for and the launch failed — no
|
|
80
|
+
* `xdg-open` on PATH, an opener that threw. The session stays live: the
|
|
81
|
+
* listener is bound and the deadline is running, so printing `url` is all
|
|
82
|
+
* the user needs to finish the login in a browser they open themselves.
|
|
83
|
+
* Always `true` in manual mode, where no browser was ever going to open.
|
|
84
|
+
*/
|
|
85
|
+
browserOpened: boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Idempotent listener close. Safe to call more than once; safe to call
|
|
88
|
+
* before `waitAndExchange()` starts, which then completes without a
|
|
89
|
+
* second close.
|
|
90
|
+
*/
|
|
91
|
+
close: () => void;
|
|
92
|
+
/**
|
|
93
|
+
* Awaits the callback, exchanges the code with the same PKCE verifier
|
|
94
|
+
* and `REDIRECT_URI` used to construct the authorize URL, and closes
|
|
95
|
+
* the listener exactly once (whether the callback succeeded, timed
|
|
96
|
+
* out, or the wait/exchange threw). A null callback surfaces as a
|
|
97
|
+
* typed `cancelled` lifecycle marker rather than a `TokenResult`.
|
|
98
|
+
*/
|
|
99
|
+
waitAndExchange: () => Promise<LoopbackFlowWaitResult>;
|
|
100
|
+
}
|
|
101
|
+
export interface LoopbackFlowUnavailable {
|
|
102
|
+
type: "unavailable";
|
|
103
|
+
/**
|
|
104
|
+
* `listener_unavailable`: the callback port could not be bound, so no
|
|
105
|
+
* browser was opened and there is no URL worth handing back.
|
|
106
|
+
*
|
|
107
|
+
* A browser that will not launch is deliberately NOT one of these. The
|
|
108
|
+
* session is still usable then, and closing it would strand a user who was
|
|
109
|
+
* one paste away from finishing — see {@link LoopbackFlowReady.browserOpened}.
|
|
110
|
+
*/
|
|
111
|
+
lifecycle: "listener_unavailable";
|
|
112
|
+
}
|
|
113
|
+
export interface LoopbackFlowCancelled {
|
|
114
|
+
type: "cancelled";
|
|
115
|
+
lifecycle: "callback_timeout_or_cancelled";
|
|
116
|
+
}
|
|
117
|
+
export type LoopbackFlowSession = LoopbackFlowReady | LoopbackFlowUnavailable;
|
|
118
|
+
export type LoopbackFlowWaitResult = TokenResult | LoopbackFlowCancelled;
|
|
119
|
+
/**
|
|
120
|
+
* Start one loopback OAuth session for either the automatic or manual browser
|
|
121
|
+
* choice. See the module docstring for the full lifecycle contract.
|
|
122
|
+
*/
|
|
123
|
+
export declare function startLoopbackFlow(options: LoopbackFlowOptions): Promise<LoopbackFlowSession>;
|
|
124
|
+
//# sourceMappingURL=loopback-flow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loopback-flow.d.ts","sourceRoot":"","sources":["../../../lib/auth/loopback-flow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,KAAK,EACX,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,MAAM,aAAa,CAAC;AASrB,MAAM,WAAW,gBAAgB;IAChC,uBAAuB,EAAE,CACxB,IAAI,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,KAC9B,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAChC,qBAAqB,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAC7E,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,yBAAyB,EAAE,CAC1B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,KAChB,OAAO,CAAC,WAAW,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IACnC;;;;OAIG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;OAMG;IACH,aAAa,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB;;;;;;OAMG;IACH,eAAe,EAAE,MAAM,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,uBAAuB;IACvC,IAAI,EAAE,aAAa,CAAC;IACpB;;;;;;;OAOG;IACH,SAAS,EAAE,sBAAsB,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,+BAA+B,CAAC;CAC3C;AAED,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,GAAG,uBAAuB,CAAC;AAC9E,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG,qBAAqB,CAAC;AAczE;;;GAGG;AACH,wBAAsB,iBAAiB,CACtC,OAAO,EAAE,mBAAmB,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CAsG9B"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { createAuthorizationFlow as defaultCreateAuthorizationFlow, exchangeAuthorizationCode as defaultExchangeAuthorizationCode, REDIRECT_URI, } from "./auth.js";
|
|
2
|
+
import { startLocalOAuthServer as defaultStartLocalOAuthServer } from "./server.js";
|
|
3
|
+
import { openBrowserUrl as defaultOpenBrowserUrl } from "./browser.js";
|
|
4
|
+
const DEFAULT_DEPS = {
|
|
5
|
+
createAuthorizationFlow: defaultCreateAuthorizationFlow,
|
|
6
|
+
startLocalOAuthServer: defaultStartLocalOAuthServer,
|
|
7
|
+
openBrowserUrl: defaultOpenBrowserUrl,
|
|
8
|
+
exchangeAuthorizationCode: defaultExchangeAuthorizationCode,
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Start one loopback OAuth session for either the automatic or manual browser
|
|
12
|
+
* choice. See the module docstring for the full lifecycle contract.
|
|
13
|
+
*/
|
|
14
|
+
export async function startLoopbackFlow(options) {
|
|
15
|
+
const deps = {
|
|
16
|
+
...DEFAULT_DEPS,
|
|
17
|
+
...(options.deps ?? {}),
|
|
18
|
+
};
|
|
19
|
+
const flow = await deps.createAuthorizationFlow(options.forceNewLogin ? { forceNewLogin: true } : undefined);
|
|
20
|
+
// A throw is the same outcome as a listener that never bound, and this
|
|
21
|
+
// module's contract is a typed marker rather than an exception: without the
|
|
22
|
+
// catch, an `http.createServer` failure escapes the OpenCode auth method as
|
|
23
|
+
// an unhandled rejection instead of the "retry with Device Code / Manual URL
|
|
24
|
+
// Paste" guidance the caller maps `listener_unavailable` to.
|
|
25
|
+
let server = null;
|
|
26
|
+
try {
|
|
27
|
+
server = await deps.startLocalOAuthServer({ state: flow.state });
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
server = null;
|
|
31
|
+
}
|
|
32
|
+
if (!server?.ready) {
|
|
33
|
+
try {
|
|
34
|
+
server?.close();
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// listener never bound: close is best-effort and non-fatal
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
type: "unavailable",
|
|
41
|
+
lifecycle: "listener_unavailable",
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
const readyServer = server;
|
|
45
|
+
let closed = false;
|
|
46
|
+
const closeOnce = () => {
|
|
47
|
+
if (closed)
|
|
48
|
+
return;
|
|
49
|
+
closed = true;
|
|
50
|
+
try {
|
|
51
|
+
readyServer.close();
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// a listener that will not close must not mask the outcome the
|
|
55
|
+
// caller is waiting on; the close contract is best-effort
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const callbackOutcome = (async () => {
|
|
59
|
+
try {
|
|
60
|
+
const callback = await readyServer.waitForCode(flow.state);
|
|
61
|
+
return callback
|
|
62
|
+
? { type: "code", code: callback.code }
|
|
63
|
+
: { type: "cancelled" };
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
return { type: "wait_failed", error };
|
|
67
|
+
}
|
|
68
|
+
finally {
|
|
69
|
+
closeOnce();
|
|
70
|
+
}
|
|
71
|
+
})();
|
|
72
|
+
// A failed launch does not end the session. The listener is bound and its
|
|
73
|
+
// deadline is already running, so the user can still finish by opening the
|
|
74
|
+
// URL themselves — which is exactly what happens on a Linux/WSL box with no
|
|
75
|
+
// `xdg-open` on PATH, where `openBrowserUrl` returns false for every login.
|
|
76
|
+
// Closing here would take that away and leave nothing to retry with.
|
|
77
|
+
let browserOpened = true;
|
|
78
|
+
if (options.openBrowser) {
|
|
79
|
+
try {
|
|
80
|
+
browserOpened = deps.openBrowserUrl(flow.url);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
browserOpened = false;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const waitAndExchange = async () => {
|
|
87
|
+
const outcome = await callbackOutcome;
|
|
88
|
+
if (outcome.type === "cancelled") {
|
|
89
|
+
return {
|
|
90
|
+
type: "cancelled",
|
|
91
|
+
lifecycle: "callback_timeout_or_cancelled",
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
if (outcome.type === "wait_failed") {
|
|
95
|
+
throw outcome.error;
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
return await deps.exchangeAuthorizationCode(outcome.code, flow.pkce.verifier, REDIRECT_URI);
|
|
99
|
+
}
|
|
100
|
+
finally {
|
|
101
|
+
closeOnce();
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
return {
|
|
105
|
+
type: "ready",
|
|
106
|
+
url: flow.url,
|
|
107
|
+
browserOpened,
|
|
108
|
+
close: closeOnce,
|
|
109
|
+
waitAndExchange,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=loopback-flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loopback-flow.js","sourceRoot":"","sources":["../../../lib/auth/loopback-flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChatGPT subscription tier, read from the OAuth access token.
|
|
3
|
+
*
|
|
4
|
+
* The `chatgpt_plan_type` claim is the only plan signal the credential itself
|
|
5
|
+
* carries. It agrees with the `plan_type` field the Codex `/wham/usage`
|
|
6
|
+
* endpoint returns for the same account, so the tier is available without a
|
|
7
|
+
* network round trip and stays correct while offline.
|
|
8
|
+
*/
|
|
9
|
+
export declare function extractPlanType(accessToken?: string): string | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* An unrecognized slug is returned verbatim: a plan we cannot name is still
|
|
12
|
+
* worth showing, and inventing a name for it would misreport the subscription.
|
|
13
|
+
* "Verbatim" means not renamed, not un-sanitized — see {@link sanitizePlanLabel}.
|
|
14
|
+
*
|
|
15
|
+
* Accepts `null` so the live `/wham/usage` and `x-codex-plan-type` readings —
|
|
16
|
+
* which type their absent plan as `null`, not `undefined` — go through the same
|
|
17
|
+
* naming as the copy stored at login. Without that, one seat printed "Business"
|
|
18
|
+
* in `codex-list` and `team` in `codex-limits` and the TUI.
|
|
19
|
+
*/
|
|
20
|
+
export declare function formatPlanType(planType: string | null | undefined): string | undefined;
|
|
21
|
+
//# sourceMappingURL=plan-tier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-tier.d.ts","sourceRoot":"","sources":["../../../lib/auth/plan-tier.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsBH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMxE;AAsCD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAOtF"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChatGPT subscription tier, read from the OAuth access token.
|
|
3
|
+
*
|
|
4
|
+
* The `chatgpt_plan_type` claim is the only plan signal the credential itself
|
|
5
|
+
* carries. It agrees with the `plan_type` field the Codex `/wham/usage`
|
|
6
|
+
* endpoint returns for the same account, so the tier is available without a
|
|
7
|
+
* network round trip and stays correct while offline.
|
|
8
|
+
*/
|
|
9
|
+
import { decodeJWT } from "./auth.js";
|
|
10
|
+
import { JWT_CLAIM_PATH } from "../constants.js";
|
|
11
|
+
/**
|
|
12
|
+
* `chatgpt_plan_type` slug to the subscription name OpenAI shows for it.
|
|
13
|
+
*
|
|
14
|
+
* `team` is the slug still emitted for what OpenAI now calls Business, and
|
|
15
|
+
* `self_serve_business_prolite` is the premium Business seat - neither name is
|
|
16
|
+
* derivable from its slug, so both are pinned here rather than reformatted.
|
|
17
|
+
*/
|
|
18
|
+
const PLAN_TYPE_LABELS = new Map([
|
|
19
|
+
["free", "Free"],
|
|
20
|
+
["plus", "Plus"],
|
|
21
|
+
["pro", "Pro"],
|
|
22
|
+
["team", "Business"],
|
|
23
|
+
["business", "Business"],
|
|
24
|
+
["self_serve_business_prolite", "Business Premium"],
|
|
25
|
+
["enterprise", "Enterprise"],
|
|
26
|
+
]);
|
|
27
|
+
export function extractPlanType(accessToken) {
|
|
28
|
+
if (!accessToken)
|
|
29
|
+
return undefined;
|
|
30
|
+
const planType = decodeJWT(accessToken)?.[JWT_CLAIM_PATH]?.chatgpt_plan_type;
|
|
31
|
+
if (typeof planType !== "string")
|
|
32
|
+
return undefined;
|
|
33
|
+
const normalized = planType.trim().toLowerCase();
|
|
34
|
+
return normalized ? normalized : undefined;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Longest name this maps to is "Business Premium" (16) and the longest slug it
|
|
38
|
+
* knows is `self_serve_business_prolite` (27), so this bounds an unrecognized
|
|
39
|
+
* slug without truncating anything real.
|
|
40
|
+
*/
|
|
41
|
+
const MAX_PLAN_LABEL_LENGTH = 32;
|
|
42
|
+
/**
|
|
43
|
+
* Make a slug safe to interpolate into a rendered line.
|
|
44
|
+
*
|
|
45
|
+
* `plan_type` is read straight off `/wham/usage`, which `fetchCodexUsage` casts
|
|
46
|
+
* without validating and which `OPENAI_BASE_URL` lets a user put an arbitrary
|
|
47
|
+
* gateway in front of; `x-codex-plan-type` is a response header from the same
|
|
48
|
+
* place. Every renderer interpolates the result into a line, and two of them
|
|
49
|
+
* (`codex-limits`, the TUI quota pane) have no width bound at all, so a control
|
|
50
|
+
* character travels straight through: `pro\nPlan: Enterprise` splits a
|
|
51
|
+
* `codex-list` row in two and the second half reads as output the tool emitted.
|
|
52
|
+
*
|
|
53
|
+
* Control characters are dropped rather than escaped, and the result is bounded.
|
|
54
|
+
* Neither changes how a real plan reads.
|
|
55
|
+
*/
|
|
56
|
+
function sanitizePlanLabel(value) {
|
|
57
|
+
let cleaned = "";
|
|
58
|
+
for (const char of value) {
|
|
59
|
+
const code = char.codePointAt(0) ?? 0;
|
|
60
|
+
// C0, DEL, and C1: covers CR/LF/TAB and the ESC that starts an ANSI
|
|
61
|
+
// sequence. Replaced with a space so two words do not fuse into one.
|
|
62
|
+
cleaned += (code < 0x20 || code === 0x7f || (code >= 0x80 && code <= 0x9f)) ? " " : char;
|
|
63
|
+
}
|
|
64
|
+
const collapsed = cleaned.replace(/\s+/g, " ").trim();
|
|
65
|
+
if (!collapsed)
|
|
66
|
+
return undefined;
|
|
67
|
+
return collapsed.length > MAX_PLAN_LABEL_LENGTH
|
|
68
|
+
? `${collapsed.slice(0, MAX_PLAN_LABEL_LENGTH - 1)}…`
|
|
69
|
+
: collapsed;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* An unrecognized slug is returned verbatim: a plan we cannot name is still
|
|
73
|
+
* worth showing, and inventing a name for it would misreport the subscription.
|
|
74
|
+
* "Verbatim" means not renamed, not un-sanitized — see {@link sanitizePlanLabel}.
|
|
75
|
+
*
|
|
76
|
+
* Accepts `null` so the live `/wham/usage` and `x-codex-plan-type` readings —
|
|
77
|
+
* which type their absent plan as `null`, not `undefined` — go through the same
|
|
78
|
+
* naming as the copy stored at login. Without that, one seat printed "Business"
|
|
79
|
+
* in `codex-list` and `team` in `codex-limits` and the TUI.
|
|
80
|
+
*/
|
|
81
|
+
export function formatPlanType(planType) {
|
|
82
|
+
if (!planType)
|
|
83
|
+
return undefined;
|
|
84
|
+
const normalized = planType.trim().toLowerCase();
|
|
85
|
+
if (!normalized)
|
|
86
|
+
return undefined;
|
|
87
|
+
const known = PLAN_TYPE_LABELS.get(normalized);
|
|
88
|
+
if (known)
|
|
89
|
+
return known;
|
|
90
|
+
return sanitizePlanLabel(planType);
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=plan-tier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-tier.js","sourceRoot":"","sources":["../../../lib/auth/plan-tier.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAgC,IAAI,GAAG,CAAC;IAC7D,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,KAAK,EAAE,KAAK,CAAC;IACd,CAAC,MAAM,EAAE,UAAU,CAAC;IACpB,CAAC,UAAU,EAAE,UAAU,CAAC;IACxB,CAAC,6BAA6B,EAAE,kBAAkB,CAAC;IACnD,CAAC,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC,CAAC;AAEH,MAAM,UAAU,eAAe,CAAC,WAAoB;IACnD,IAAI,CAAC,WAAW;QAAE,OAAO,SAAS,CAAC;IACnC,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,iBAAiB,CAAC;IAC7E,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACjD,OAAO,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAEjC;;;;;;;;;;;;;GAaG;AACH,SAAS,iBAAiB,CAAC,KAAa;IACvC,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtC,oEAAoE;QACpE,qEAAqE;QACrE,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1F,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACtD,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,OAAO,SAAS,CAAC,MAAM,GAAG,qBAAqB;QAC9C,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,GAAG,CAAC,CAAC,GAAG;QACrD,CAAC,CAAC,SAAS,CAAC;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,QAAmC;IACjE,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACjD,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC"}
|