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.
Files changed (89) hide show
  1. package/README.md +15 -11
  2. package/config/README.md +36 -13
  3. package/config/opencode-legacy.json +150 -0
  4. package/config/opencode-modern.json +48 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +145 -55
  7. package/dist/index.js.map +1 -1
  8. package/dist/lib/accounts/persistence.d.ts +53 -3
  9. package/dist/lib/accounts/persistence.d.ts.map +1 -1
  10. package/dist/lib/accounts/persistence.js +110 -4
  11. package/dist/lib/accounts/persistence.js.map +1 -1
  12. package/dist/lib/accounts/state.d.ts +1 -0
  13. package/dist/lib/accounts/state.d.ts.map +1 -1
  14. package/dist/lib/accounts/state.js +11 -0
  15. package/dist/lib/accounts/state.js.map +1 -1
  16. package/dist/lib/accounts.d.ts +1 -1
  17. package/dist/lib/accounts.d.ts.map +1 -1
  18. package/dist/lib/accounts.js +1 -1
  19. package/dist/lib/accounts.js.map +1 -1
  20. package/dist/lib/auth/login-runner.d.ts +2 -0
  21. package/dist/lib/auth/login-runner.d.ts.map +1 -1
  22. package/dist/lib/auth/login-runner.js +44 -12
  23. package/dist/lib/auth/login-runner.js.map +1 -1
  24. package/dist/lib/auth/loopback-flow.d.ts +124 -0
  25. package/dist/lib/auth/loopback-flow.d.ts.map +1 -0
  26. package/dist/lib/auth/loopback-flow.js +112 -0
  27. package/dist/lib/auth/loopback-flow.js.map +1 -0
  28. package/dist/lib/auth/plan-tier.d.ts +21 -0
  29. package/dist/lib/auth/plan-tier.d.ts.map +1 -0
  30. package/dist/lib/auth/plan-tier.js +92 -0
  31. package/dist/lib/auth/plan-tier.js.map +1 -0
  32. package/dist/lib/auth/token-utils.d.ts +8 -10
  33. package/dist/lib/auth/token-utils.d.ts.map +1 -1
  34. package/dist/lib/auth/token-utils.js +27 -18
  35. package/dist/lib/auth/token-utils.js.map +1 -1
  36. package/dist/lib/constants.d.ts +5 -2
  37. package/dist/lib/constants.d.ts.map +1 -1
  38. package/dist/lib/constants.js +5 -2
  39. package/dist/lib/constants.js.map +1 -1
  40. package/dist/lib/prompts/codex.d.ts +1 -1
  41. package/dist/lib/prompts/codex.d.ts.map +1 -1
  42. package/dist/lib/prompts/codex.js +51 -4
  43. package/dist/lib/prompts/codex.js.map +1 -1
  44. package/dist/lib/quota-notifications.d.ts +15 -0
  45. package/dist/lib/quota-notifications.d.ts.map +1 -1
  46. package/dist/lib/quota-notifications.js +42 -12
  47. package/dist/lib/quota-notifications.js.map +1 -1
  48. package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
  49. package/dist/lib/request/fetch-helpers.js +88 -9
  50. package/dist/lib/request/fetch-helpers.js.map +1 -1
  51. package/dist/lib/request/helpers/client-identity.d.ts.map +1 -1
  52. package/dist/lib/request/helpers/client-identity.js +9 -2
  53. package/dist/lib/request/helpers/client-identity.js.map +1 -1
  54. package/dist/lib/request/helpers/model-map.d.ts +23 -0
  55. package/dist/lib/request/helpers/model-map.d.ts.map +1 -1
  56. package/dist/lib/request/helpers/model-map.js +92 -2
  57. package/dist/lib/request/helpers/model-map.js.map +1 -1
  58. package/dist/lib/request/helpers/responses-lite.d.ts.map +1 -1
  59. package/dist/lib/request/helpers/responses-lite.js +34 -1
  60. package/dist/lib/request/helpers/responses-lite.js.map +1 -1
  61. package/dist/lib/request/request-transformer.d.ts.map +1 -1
  62. package/dist/lib/request/request-transformer.js +78 -13
  63. package/dist/lib/request/request-transformer.js.map +1 -1
  64. package/dist/lib/schemas.d.ts +15 -0
  65. package/dist/lib/schemas.d.ts.map +1 -1
  66. package/dist/lib/schemas.js +1 -0
  67. package/dist/lib/schemas.js.map +1 -1
  68. package/dist/lib/storage/flagged.d.ts.map +1 -1
  69. package/dist/lib/storage/flagged.js +5 -0
  70. package/dist/lib/storage/flagged.js.map +1 -1
  71. package/dist/lib/storage/migrations.d.ts +2 -0
  72. package/dist/lib/storage/migrations.d.ts.map +1 -1
  73. package/dist/lib/storage/migrations.js.map +1 -1
  74. package/dist/lib/tools/codex-limits.d.ts.map +1 -1
  75. package/dist/lib/tools/codex-limits.js +7 -4
  76. package/dist/lib/tools/codex-limits.js.map +1 -1
  77. package/dist/lib/tools/codex-list.d.ts.map +1 -1
  78. package/dist/lib/tools/codex-list.js +13 -1
  79. package/dist/lib/tools/codex-list.js.map +1 -1
  80. package/dist/lib/tools/codex-status.d.ts.map +1 -1
  81. package/dist/lib/tools/codex-status.js +8 -0
  82. package/dist/lib/tools/codex-status.js.map +1 -1
  83. package/dist/lib/tui-status.d.ts.map +1 -1
  84. package/dist/lib/tui-status.js +6 -2
  85. package/dist/lib/tui-status.js.map +1 -1
  86. package/dist/lib/types.d.ts +1 -0
  87. package/dist/lib/types.d.ts.map +1 -1
  88. package/package.json +1 -1
  89. 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, relabelCandidateForAccountId, } from "./token-utils.js";
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: tokens,
127
- variantsForPersistence: [tokens],
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: tokens,
134
- variantsForPersistence: [tokens],
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 name and organization id ride along as metadata -
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
- label: routingCandidate === choice
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
- const nextAccountLabel = preserveOrgIdentity
604
- ? existing.accountLabel ?? accountLabel
605
- : accountLabel ?? existing.accountLabel;
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"}