@amaretto-software-labs/borealis-cli 0.1.1 → 0.1.2

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 CHANGED
@@ -18,6 +18,15 @@ borealis auth login
18
18
 
19
19
  Interactive login uses OAuth authorization code flow with S256 PKCE and refresh tokens:
20
20
 
21
+ If browser sign-in fails or you cancel consent, keep the CLI running. The branded
22
+ recovery page offers **Try again** and **Use another account** (which signs out of
23
+ the web app before returning to sign-in). You can also press **Enter** in an
24
+ interactive terminal to start a fresh attempt, or open the recovery URL printed
25
+ by the CLI if you closed the browser. Each attempt uses new OAuth state and PKCE
26
+ values. Attempts time out after five minutes; the retry page remains available
27
+ for another ten minutes. **Ctrl+C** stops login and closes the local listener.
28
+ The success page is shown only after credentials are validated and securely saved.
29
+
21
30
  ```bash
22
31
  borealis auth login
23
32
  borealis auth whoami
package/dist/auth.d.ts CHANGED
@@ -1,16 +1,15 @@
1
+ import { type OAuthPageKind } from "./oauth-session.js";
1
2
  import type { GlobalOptions, Session } from "./types.js";
2
3
  export declare const oauthCallbackResponseHeaders: Readonly<{
3
4
  "content-type": "text/html; charset=utf-8";
4
5
  "cache-control": "no-store";
5
6
  "referrer-policy": "no-referrer";
6
7
  "x-content-type-options": "nosniff";
7
- "content-security-policy": `default-src 'none'; style-src 'sha256-${string}'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'`;
8
+ "content-security-policy": `default-src 'none'; style-src 'sha256-${string}'; base-uri 'none'; form-action 'self'; frame-ancestors 'none'`;
8
9
  }>;
9
- type OAuthCallbackPageKind = "success" | "invalid" | "failed";
10
- export declare function renderOAuthCallbackPage(kind: OAuthCallbackPageKind): string;
10
+ export declare function renderOAuthCallbackPage(kind: OAuthPageKind, retryPath?: string): string;
11
11
  export declare function login(options: GlobalOptions, loginHint?: string, scope?: string, signal?: AbortSignal): Promise<Session>;
12
12
  export declare function resolveAccessToken(options: GlobalOptions, signal?: AbortSignal): Promise<{
13
13
  token: string;
14
14
  session?: Session;
15
15
  }>;
16
- export {};
package/dist/auth.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { createHash, randomBytes } from "node:crypto";
2
- import { createServer } from "node:http";
2
+ import { runOAuthSession } from "./oauth-session.js";
3
3
  import { execFile } from "node:child_process";
4
4
  import { promisify } from "node:util";
5
5
  import { z } from "zod";
@@ -101,6 +101,7 @@ body {
101
101
 
102
102
  .status-icon svg { width: 22px; height: 22px; }
103
103
  .success { --status-color: var(--color-success); }
104
+ .waiting { --status-color: var(--color-accent); }
104
105
  .error { --status-color: var(--color-error); }
105
106
 
106
107
  .eyebrow {
@@ -157,6 +158,19 @@ h1 {
157
158
  font-size: 12px;
158
159
  }
159
160
 
161
+ .actions { display: grid; gap: 10px; margin-top: 24px; }
162
+ .actions form { margin: 0; }
163
+ .actions button {
164
+ width: 100%; min-height: 44px; padding: 10px 16px;
165
+ border: 1px solid var(--color-accent); border-radius: 4px;
166
+ background: var(--color-accent); color: var(--color-bg);
167
+ font: inherit; font-weight: 600; cursor: pointer;
168
+ }
169
+ .actions button:hover { filter: brightness(1.1); }
170
+ .actions .secondary { color: var(--color-text-bright); background: transparent; border-color: var(--color-border); }
171
+ .actions .secondary:hover { background: var(--color-input); }
172
+ .actions button:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 3px; }
173
+
160
174
  @media (prefers-color-scheme: light) {
161
175
  :root {
162
176
  color-scheme: light;
@@ -198,9 +212,9 @@ export const oauthCallbackResponseHeaders = Object.freeze({
198
212
  "cache-control": "no-store",
199
213
  "referrer-policy": "no-referrer",
200
214
  "x-content-type-options": "nosniff",
201
- "content-security-policy": `default-src 'none'; style-src 'sha256-${callbackPageStyleHash}'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'`,
215
+ "content-security-policy": `default-src 'none'; style-src 'sha256-${callbackPageStyleHash}'; base-uri 'none'; form-action 'self'; frame-ancestors 'none'`,
202
216
  });
203
- export function renderOAuthCallbackPage(kind) {
217
+ export function renderOAuthCallbackPage(kind, retryPath) {
204
218
  const success = kind === "success";
205
219
  const content = success
206
220
  ? {
@@ -209,24 +223,57 @@ export function renderOAuthCallbackPage(kind) {
209
223
  status: "CLI session authorized",
210
224
  hint: "This page does not need to remain open.",
211
225
  }
212
- : kind === "invalid"
226
+ : kind === "cancelled"
213
227
  ? {
214
- title: "Invalid authorization response",
215
- description: "Borealis could not verify this callback. Return to your terminal and start the sign-in flow again.",
228
+ title: "Sign-in cancelled",
229
+ description: "You cancelled authorization. No access was granted to the CLI. Try again, or sign in with a different account.",
216
230
  status: "CLI session not authorized",
217
- hint: "Run borealis auth login to retry.",
231
+ hint: "Keep the CLI open. You can retry without restarting it.",
218
232
  }
219
- : {
220
- title: "Authorization incomplete",
221
- description: "Borealis did not receive an authorization code. Return to your terminal and start the sign-in flow again.",
222
- status: "CLI session not authorized",
223
- hint: "Run borealis auth login to retry.",
224
- };
233
+ : kind === "waiting"
234
+ ? {
235
+ title: "Finish signing in",
236
+ description: retryPath
237
+ ? "Complete authorization in your browser. If you closed the page or chose the wrong account, you can restart below."
238
+ : "Finishing sign-in and saving your credentials securely. Please wait, or press Ctrl+C in your terminal to stop.",
239
+ status: "CLI waiting for authorization",
240
+ hint: retryPath
241
+ ? "Press Enter in your terminal to retry, or Ctrl+C to stop."
242
+ : "Keep the CLI open while sign-in finishes.",
243
+ }
244
+ : kind === "timeout"
245
+ ? {
246
+ title: "Sign-in timed out",
247
+ description: "This sign-in attempt expired. Your CLI is still running and ready for a fresh attempt.",
248
+ status: "CLI session not authorized",
249
+ hint: "Try again below without restarting the CLI.",
250
+ }
251
+ : kind === "invalid"
252
+ ? {
253
+ title: "Invalid authorization response",
254
+ description: "This response does not match the active sign-in attempt. Your CLI is still waiting. Start a fresh attempt below.",
255
+ status: "CLI session not authorized",
256
+ hint: retryPath
257
+ ? "Keep the CLI open. You can retry without restarting it."
258
+ : "Run borealis auth login to retry.",
259
+ }
260
+ : {
261
+ title: "Authorization incomplete",
262
+ description: "We couldn't finish signing you in. No new credentials were saved. Try again without restarting the CLI.",
263
+ status: "CLI session not authorized",
264
+ hint: retryPath
265
+ ? "Keep the CLI open. You can retry without restarting it."
266
+ : "Run borealis auth login to retry.",
267
+ };
225
268
  const icon = success
226
269
  ? '<path d="m5 12 4 4L19 6" />'
227
270
  : '<path d="M6 6l12 12M18 6 6 18" />';
228
- const statusClass = success ? "success" : "error";
229
- const liveRole = success ? "status" : "alert";
271
+ const statusClass = success
272
+ ? "success"
273
+ : kind === "waiting"
274
+ ? "waiting"
275
+ : "error";
276
+ const liveRole = success || kind === "waiting" ? "status" : "alert";
230
277
  return `<!doctype html>
231
278
  <html lang="en">
232
279
  <head>
@@ -254,6 +301,12 @@ export function renderOAuthCallbackPage(kind) {
254
301
  <p class="eyebrow">CLI authorization</p>
255
302
  <h1 id="callback-title">${content.title}</h1>
256
303
  <p class="description">${content.description}</p>
304
+ ${!success && retryPath
305
+ ? `<div class="actions">
306
+ <form action="${retryPath.replaceAll("&", "&amp;").replaceAll('"', "&quot;").replaceAll("<", "&lt;")}" method="post"><button type="submit">Try again</button></form>
307
+ <form action="${retryPath.replaceAll("&", "&amp;").replaceAll('"', "&quot;").replaceAll("<", "&lt;")}?account=change" method="post"><button class="secondary" type="submit">Use another account</button></form>
308
+ </div><p class="hint">Using another account signs you out of Borealis in this browser. Keep the CLI open; press Enter there to retry, or Ctrl+C to stop.</p>`
309
+ : ""}
257
310
  <div class="cli-status">
258
311
  <span class="status-dot" aria-hidden="true"></span>
259
312
  <span>${content.status}</span>
@@ -301,137 +354,94 @@ export async function login(options, loginHint, scope = defaults.scope, signal)
301
354
  const app = validateOrigin(options.app, "Application URL");
302
355
  const api = validateOrigin(options.api, "API URL");
303
356
  scope = validateLoginScope(scope);
304
- const verifier = base64Url(randomBytes(32));
305
- const challenge = base64Url(createHash("sha256").update(verifier, "ascii").digest());
306
- const state = base64Url(randomBytes(24));
307
- const port = 17_890;
308
- const redirectUri = defaults.redirectUri;
309
- const server = createServer();
310
- const callback = new Promise((resolve, reject) => {
311
- server.on("request", (request, response) => {
312
- const url = new URL(request.url ?? "/", redirectUri);
313
- if (url.pathname !== "/callback/" ||
314
- url.searchParams.get("state") !== state) {
315
- response
316
- .writeHead(400, oauthCallbackResponseHeaders)
317
- .end(renderOAuthCallbackPage("invalid"));
318
- return;
319
- }
320
- const code = url.searchParams.get("code");
321
- if (!code) {
322
- response
323
- .writeHead(400, oauthCallbackResponseHeaders)
324
- .end(renderOAuthCallbackPage("failed"));
325
- reject(new Error("Authorization callback did not contain a code."));
326
- }
327
- else {
328
- response
329
- .writeHead(200, oauthCallbackResponseHeaders)
330
- .end(renderOAuthCallbackPage("success"));
331
- resolve(code);
332
- }
333
- });
334
- server.on("error", reject);
335
- server.listen(port, "127.0.0.1");
357
+ return await runOAuthSession({
358
+ port: Number(new URL(defaults.redirectUri).port),
359
+ signal,
360
+ headers: oauthCallbackResponseHeaders,
361
+ renderPage: renderOAuthCallbackPage,
362
+ openBrowser,
363
+ createAttempt(redirectUri, _retry, switchAccount) {
364
+ const verifier = base64Url(randomBytes(32));
365
+ const challenge = base64Url(createHash("sha256").update(verifier, "ascii").digest());
366
+ const state = base64Url(randomBytes(24));
367
+ const authorize = new URL("/auth/client/start", app);
368
+ for (const [key, value] of Object.entries({
369
+ client_type: "cli",
370
+ client_id: defaults.clientId,
371
+ redirect_uri: redirectUri,
372
+ scope,
373
+ state,
374
+ code_challenge: challenge,
375
+ code_challenge_method: "S256",
376
+ }))
377
+ authorize.searchParams.set(key, value);
378
+ if (loginHint && !switchAccount)
379
+ authorize.searchParams.set("login_hint", loginHint);
380
+ const entry = switchAccount ? new URL("/auth/logout", app) : authorize;
381
+ if (switchAccount)
382
+ entry.searchParams.set("returnUrl", authorize.pathname + authorize.search);
383
+ return {
384
+ state,
385
+ authorizationUrl: entry.toString(),
386
+ async complete(code, signal) {
387
+ const token = await requestToken(identity, new URLSearchParams({
388
+ grant_type: "authorization_code",
389
+ code,
390
+ client_id: defaults.clientId,
391
+ redirect_uri: redirectUri,
392
+ code_verifier: verifier,
393
+ }), signal);
394
+ if (!token.refresh_token)
395
+ throw new Error("The authorization server did not return a refresh token.");
396
+ const contextDeadline = createRequestDeadline(signal, 30_000);
397
+ let contextResponse;
398
+ let contextText;
399
+ try {
400
+ contextResponse = await fetch(`${api}/api/v1/context`, {
401
+ headers: {
402
+ authorization: `Bearer ${token.access_token}`,
403
+ accept: "application/json",
404
+ ...(options.organization
405
+ ? { "x-organization-id": options.organization }
406
+ : {}),
407
+ },
408
+ redirect: "error",
409
+ signal: contextDeadline.signal,
410
+ });
411
+ contextText = await readBoundedResponse(contextResponse, 1024 * 1024, contextDeadline.signal);
412
+ }
413
+ finally {
414
+ contextDeadline.dispose();
415
+ }
416
+ if (!contextResponse.ok)
417
+ throw new Error(`Borealis context validation failed (${contextResponse.status}).`);
418
+ const context = z
419
+ .object({
420
+ selectedOrganizationId: z.string().min(1).nullable().optional(),
421
+ organizations: z.array(z.object({ organizationId: z.string().min(1) })),
422
+ })
423
+ .parse(JSON.parse(contextText));
424
+ if (options.organization &&
425
+ !context.organizations.some((membership) => membership.organizationId === options.organization))
426
+ throw new Error(`The authenticated user is not a member of organization '${options.organization}'.`);
427
+ const organization = options.organization ?? context.selectedOrganizationId ?? undefined;
428
+ const session = {
429
+ accessToken: token.access_token,
430
+ refreshToken: token.refresh_token,
431
+ expiresAt: new Date(Date.now() + token.expires_in * 1000).toISOString(),
432
+ scope: token.scope,
433
+ clientId: defaults.clientId,
434
+ api,
435
+ identity,
436
+ app,
437
+ ...(organization ? { organization } : {}),
438
+ };
439
+ await saveSession(options.profile, session, signal);
440
+ return session;
441
+ },
442
+ };
443
+ },
336
444
  });
337
- const authorize = new URL("/auth/client/start", app);
338
- for (const [key, value] of Object.entries({
339
- client_type: "cli",
340
- client_id: defaults.clientId,
341
- redirect_uri: redirectUri,
342
- scope,
343
- state,
344
- code_challenge: challenge,
345
- code_challenge_method: "S256",
346
- }))
347
- authorize.searchParams.set(key, value);
348
- if (loginHint)
349
- authorize.searchParams.set("login_hint", loginHint);
350
- process.stderr.write(`Opening ${authorize.origin} for authentication…\n`);
351
- let code;
352
- let callbackTimeout;
353
- let rejectForAbort;
354
- try {
355
- if (!server.listening) {
356
- await new Promise((resolve, reject) => {
357
- server.once("listening", resolve);
358
- server.once("error", reject);
359
- });
360
- }
361
- await openBrowser(authorize.toString());
362
- code = await Promise.race([
363
- callback,
364
- new Promise((_, reject) => {
365
- rejectForAbort = () => reject(signal?.reason ?? new DOMException("Aborted", "AbortError"));
366
- signal?.addEventListener("abort", rejectForAbort, { once: true });
367
- }),
368
- new Promise((_, reject) => {
369
- callbackTimeout = setTimeout(() => reject(new Error("OAuth callback timed out after five minutes.")), 5 * 60 * 1000);
370
- callbackTimeout.unref();
371
- }),
372
- ]);
373
- }
374
- finally {
375
- if (callbackTimeout)
376
- clearTimeout(callbackTimeout);
377
- if (rejectForAbort)
378
- signal?.removeEventListener("abort", rejectForAbort);
379
- server.close();
380
- }
381
- const token = await requestToken(identity, new URLSearchParams({
382
- grant_type: "authorization_code",
383
- code,
384
- client_id: defaults.clientId,
385
- redirect_uri: redirectUri,
386
- code_verifier: verifier,
387
- }), signal);
388
- if (!token.refresh_token)
389
- throw new Error("The authorization server did not return a refresh token.");
390
- const contextDeadline = createRequestDeadline(signal, 30_000);
391
- let contextResponse;
392
- let contextText;
393
- try {
394
- contextResponse = await fetch(`${api}/api/v1/context`, {
395
- headers: {
396
- authorization: `Bearer ${token.access_token}`,
397
- accept: "application/json",
398
- ...(options.organization
399
- ? { "x-organization-id": options.organization }
400
- : {}),
401
- },
402
- redirect: "error",
403
- signal: contextDeadline.signal,
404
- });
405
- contextText = await readBoundedResponse(contextResponse, 1024 * 1024, contextDeadline.signal);
406
- }
407
- finally {
408
- contextDeadline.dispose();
409
- }
410
- if (!contextResponse.ok)
411
- throw new Error(`Borealis context validation failed (${contextResponse.status}).`);
412
- const context = z
413
- .object({
414
- selectedOrganizationId: z.string().min(1).nullable().optional(),
415
- organizations: z.array(z.object({ organizationId: z.string().min(1) })),
416
- })
417
- .parse(JSON.parse(contextText));
418
- if (options.organization &&
419
- !context.organizations.some((membership) => membership.organizationId === options.organization))
420
- throw new Error(`The authenticated user is not a member of organization '${options.organization}'.`);
421
- const organization = options.organization ?? context.selectedOrganizationId ?? undefined;
422
- const session = {
423
- accessToken: token.access_token,
424
- refreshToken: token.refresh_token,
425
- expiresAt: new Date(Date.now() + token.expires_in * 1000).toISOString(),
426
- scope: token.scope,
427
- clientId: defaults.clientId,
428
- api,
429
- identity,
430
- app,
431
- ...(organization ? { organization } : {}),
432
- };
433
- await saveSession(options.profile, session, signal);
434
- return session;
435
445
  }
436
446
  async function readBoundedResponse(response, limit, signal) {
437
447
  const reader = response.body?.getReader();
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { Readable } from "node:stream";
2
+ export type OAuthPageKind = "waiting" | "success" | "cancelled" | "failed" | "invalid" | "timeout";
3
+ type Attempt<T> = {
4
+ state: string;
5
+ authorizationUrl: string;
6
+ complete(code: string, signal: AbortSignal): Promise<T>;
7
+ };
8
+ type Options<T> = {
9
+ input?: Readable & {
10
+ isTTY?: boolean;
11
+ };
12
+ port?: number;
13
+ signal?: AbortSignal | undefined;
14
+ createAttempt(redirectUri: string, retry: boolean, switchAccount: boolean): Attempt<T>;
15
+ renderPage(kind: OAuthPageKind, retryPath?: string): string;
16
+ headers: Readonly<Record<string, string>>;
17
+ openBrowser?: ((url: string) => Promise<void>) | undefined;
18
+ attemptTimeoutMs?: number;
19
+ retryTimeoutMs?: number;
20
+ };
21
+ /** A bounded login session, not a single callback: failed attempts remain retryable.
22
+ * Each retry replaces the entire state/PKCE attempt. No credentials enter the page.
23
+ */
24
+ export declare function runOAuthSession<T>(options: Options<T>): Promise<T>;
25
+ export {};
@@ -0,0 +1,210 @@
1
+ import { randomBytes, timingSafeEqual } from "node:crypto";
2
+ import { createServer } from "node:http";
3
+ import { createInterface } from "node:readline";
4
+ /** A bounded login session, not a single callback: failed attempts remain retryable.
5
+ * Each retry replaces the entire state/PKCE attempt. No credentials enter the page.
6
+ */
7
+ export async function runOAuthSession(options) {
8
+ options.signal?.throwIfAborted();
9
+ const server = createServer();
10
+ const input = options.input ?? process.stdin;
11
+ const controller = new AbortController();
12
+ const recoveryPath = `/auth/${randomBytes(32).toString("base64url")}`;
13
+ let timer;
14
+ let terminal;
15
+ const wasFlowing = input.readableFlowing === true;
16
+ let ended = false;
17
+ let succeeded = false;
18
+ let removeAbort;
19
+ let phase = "waiting";
20
+ let kind = "waiting";
21
+ let attempt;
22
+ let retryPath;
23
+ let pageHeaders = options.headers;
24
+ try {
25
+ await new Promise((resolve, reject) => {
26
+ server.once("error", reject);
27
+ server.listen(options.port ?? 0, "127.0.0.1", () => {
28
+ server.off("error", reject);
29
+ resolve();
30
+ });
31
+ });
32
+ const address = server.address();
33
+ if (!address || typeof address === "string")
34
+ throw new Error("Could not reserve an OAuth callback port.");
35
+ const origin = `http://127.0.0.1:${address.port}`;
36
+ const redirectUri = `${origin}/callback/`;
37
+ return await new Promise((resolve, reject) => {
38
+ const stop = (error) => {
39
+ if (ended)
40
+ return;
41
+ ended = true;
42
+ controller.abort(error);
43
+ reject(error);
44
+ };
45
+ const onAbort = () => stop(new Error("OAuth login was interrupted."));
46
+ const writePage = (response, page, status = 200) => {
47
+ response.writeHead(status, pageHeaders);
48
+ response.end(options.renderPage(page, phase === "exchanging" ? undefined : retryPath));
49
+ };
50
+ const failed = (page) => {
51
+ phase = "failed";
52
+ kind = page;
53
+ clearTimeout(timer);
54
+ timer = setTimeout(() => stop(new Error("OAuth login expired while waiting for a retry.")), options.retryTimeoutMs ?? 600_000);
55
+ process.stderr.write(`Sign-in ${page === "cancelled" ? "was cancelled" : page === "timeout" ? "timed out" : "failed"}. No new credentials were saved.\nRetry in your browser: ${origin}${recoveryPath}\n`);
56
+ if (terminal)
57
+ process.stderr.write("Press Enter to try again, or Ctrl+C to stop.\n");
58
+ };
59
+ const begin = (retry, switchAccount = false) => {
60
+ attempt = options.createAttempt(redirectUri, retry, switchAccount);
61
+ // Browsers enforce form-action across redirects as well as the local POST.
62
+ // Only allow the configured application origin, never a callback parameter.
63
+ pageHeaders = {
64
+ ...options.headers,
65
+ "content-security-policy": options.headers["content-security-policy"].replace("form-action 'self'", `form-action 'self' ${new URL(attempt.authorizationUrl).origin}`),
66
+ };
67
+ retryPath = `/retry/${randomBytes(32).toString("base64url")}`;
68
+ phase = "waiting";
69
+ kind = "waiting";
70
+ clearTimeout(timer);
71
+ timer = setTimeout(() => failed("timeout"), options.attemptTimeoutMs ?? 300_000);
72
+ return attempt.authorizationUrl;
73
+ };
74
+ const launch = (url) => {
75
+ // Always provide a copyable URL, including when the browser launcher fails.
76
+ process.stderr.write(`${url}\n`);
77
+ if (options.openBrowser) {
78
+ void options.openBrowser(url).catch(() => {
79
+ if (!ended)
80
+ process.stderr.write("Could not open the browser. Open the sign-in URL above manually.\n");
81
+ });
82
+ }
83
+ };
84
+ server.on("error", stop);
85
+ server.on("request", (request, response) => {
86
+ request.resume();
87
+ if (request.headers.host !== new URL(origin).host) {
88
+ response
89
+ .writeHead(403, pageHeaders)
90
+ .end(options.renderPage("invalid"));
91
+ return;
92
+ }
93
+ const url = new URL(request.url ?? "/", origin);
94
+ if (ended) {
95
+ response
96
+ .writeHead(410, pageHeaders)
97
+ .end(options.renderPage("timeout"));
98
+ return;
99
+ }
100
+ if (url.pathname === recoveryPath && request.method === "GET") {
101
+ writePage(response, kind);
102
+ return;
103
+ }
104
+ if (url.pathname === retryPath && request.method === "POST") {
105
+ if ((request.headers.origin &&
106
+ request.headers.origin !== origin &&
107
+ // Referrer-Policy: no-referrer gives navigational POSTs an opaque Origin.
108
+ !(request.headers.origin === "null" &&
109
+ request.headers["sec-fetch-site"] === "same-origin")) ||
110
+ request.headers["sec-fetch-site"] === "cross-site") {
111
+ response
112
+ .writeHead(403, pageHeaders)
113
+ .end(options.renderPage("invalid"));
114
+ return;
115
+ }
116
+ if (phase === "exchanging") {
117
+ writePage(response, "waiting", 409);
118
+ return;
119
+ }
120
+ const next = begin(true, url.searchParams.get("account") === "change");
121
+ // Redirect only to a URL constructed by the CLI, never a request parameter.
122
+ response.writeHead(303, { ...pageHeaders, location: next }).end();
123
+ process.stderr.write("Starting a fresh sign-in attempt in your browser.\n");
124
+ return;
125
+ }
126
+ if (url.pathname !== "/callback/" || request.method !== "GET") {
127
+ response
128
+ .writeHead(404, pageHeaders)
129
+ .end(options.renderPage("invalid"));
130
+ return;
131
+ }
132
+ const state = Buffer.from(url.searchParams.get("state") ?? "");
133
+ const expectedState = Buffer.from(attempt.state);
134
+ if (url.searchParams.getAll("state").length !== 1 ||
135
+ state.length !== expectedState.length ||
136
+ !timingSafeEqual(state, expectedState)) {
137
+ // Unrelated and stale callbacks cannot kill or consume the active attempt.
138
+ writePage(response, "invalid", 400);
139
+ return;
140
+ }
141
+ if (phase !== "waiting") {
142
+ writePage(response, kind, 409);
143
+ return;
144
+ }
145
+ const code = url.searchParams.get("code");
146
+ const error = url.searchParams.get("error");
147
+ if (error || !code || url.searchParams.getAll("code").length !== 1) {
148
+ failed(error === "access_denied" ? "cancelled" : "failed");
149
+ writePage(response, kind, 400);
150
+ return;
151
+ }
152
+ phase = "exchanging";
153
+ clearTimeout(timer);
154
+ // Keep the browser request open until tokens, identity/context, and storage
155
+ // are all verified. Never show a success page for a failed token exchange.
156
+ void attempt.complete(code, controller.signal).then((value) => {
157
+ if (ended)
158
+ return;
159
+ ended = true;
160
+ succeeded = true;
161
+ response.writeHead(200, pageHeaders);
162
+ response.end(options.renderPage("success"));
163
+ resolve(value);
164
+ }, () => {
165
+ if (ended)
166
+ return;
167
+ failed("failed");
168
+ writePage(response, kind, 400);
169
+ });
170
+ });
171
+ options.signal?.addEventListener("abort", onAbort, { once: true });
172
+ // The foreground listener must be removed on every terminal outcome.
173
+ removeAbort = () => options.signal?.removeEventListener("abort", onAbort);
174
+ if (input.isTTY) {
175
+ terminal = createInterface({ input });
176
+ terminal.on("line", () => {
177
+ if (ended)
178
+ return;
179
+ if (phase === "exchanging") {
180
+ process.stderr.write("Finishing sign-in. Please wait, or press Ctrl+C to stop.\n");
181
+ return;
182
+ }
183
+ launch(begin(true));
184
+ });
185
+ terminal.on("SIGINT", onAbort);
186
+ process.stderr.write("Press Enter to restart sign-in, or Ctrl+C to stop.\n");
187
+ }
188
+ const initial = begin(false);
189
+ process.stderr.write(`If sign-in is cancelled or the browser gets stuck, retry here: ${origin}${recoveryPath}\n`);
190
+ if (options.signal?.aborted)
191
+ onAbort();
192
+ else
193
+ launch(initial);
194
+ });
195
+ }
196
+ finally {
197
+ ended = true;
198
+ clearTimeout(timer);
199
+ removeAbort?.();
200
+ controller.abort();
201
+ terminal?.close();
202
+ if (terminal && wasFlowing)
203
+ input.resume();
204
+ server.close();
205
+ server.closeIdleConnections();
206
+ if (!succeeded)
207
+ server.closeAllConnections();
208
+ }
209
+ }
210
+ //# sourceMappingURL=oauth-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-session.js","sourceRoot":"","sources":["../src/oauth-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAuB,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AA4BhD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAI,OAAmB;IAC1D,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,YAAY,GAAG,SAAS,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;IACtE,IAAI,KAAiC,CAAC;IACtC,IAAI,QAAwD,CAAC;IAC7D,MAAM,UAAU,GAAG,KAAK,CAAC,eAAe,KAAK,IAAI,CAAC;IAClD,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,WAAqC,CAAC;IAC1C,IAAI,KAAK,GAAwC,SAAS,CAAC;IAC3D,IAAI,IAAI,GAAkB,SAAS,CAAC;IACpC,IAAI,OAAmB,CAAC;IACxB,IAAI,SAAiB,CAAC;IACtB,IAAI,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE;gBACjD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC5B,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;YACzC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC;QAClD,MAAM,WAAW,GAAG,GAAG,MAAM,YAAY,CAAC;QAE1C,OAAO,MAAM,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9C,MAAM,IAAI,GAAG,CAAC,KAAY,EAAE,EAAE;gBAC5B,IAAI,KAAK;oBAAE,OAAO;gBAClB,KAAK,GAAG,IAAI,CAAC;gBACb,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACxB,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC;YACF,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;YACtE,MAAM,SAAS,GAAG,CAChB,QAAwB,EACxB,IAAmB,EACnB,MAAM,GAAG,GAAG,EACZ,EAAE;gBACF,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBACxC,QAAQ,CAAC,GAAG,CACV,OAAO,CAAC,UAAU,CAChB,IAAI,EACJ,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAC/C,CACF,CAAC;YACJ,CAAC,CAAC;YACF,MAAM,MAAM,GAAG,CAAC,IAAmB,EAAE,EAAE;gBACrC,KAAK,GAAG,QAAQ,CAAC;gBACjB,IAAI,GAAG,IAAI,CAAC;gBACZ,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,KAAK,GAAG,UAAU,CAChB,GAAG,EAAE,CACH,IAAI,CAAC,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC,EACnE,OAAO,CAAC,cAAc,IAAI,OAAO,CAClC,CAAC;gBACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,WAAW,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,4DAA4D,MAAM,GAAG,YAAY,IAAI,CACrL,CAAC;gBACF,IAAI,QAAQ;oBACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,gDAAgD,CACjD,CAAC;YACN,CAAC,CAAC;YACF,MAAM,KAAK,GAAG,CAAC,KAAc,EAAE,aAAa,GAAG,KAAK,EAAE,EAAE;gBACtD,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;gBACnE,2EAA2E;gBAC3E,4EAA4E;gBAC5E,WAAW,GAAG;oBACZ,GAAG,OAAO,CAAC,OAAO;oBAClB,yBAAyB,EAAE,OAAO,CAAC,OAAO,CACxC,yBAAyB,CACzB,CAAC,OAAO,CACR,oBAAoB,EACpB,sBAAsB,IAAI,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE,CACjE;iBACF,CAAC;gBACF,SAAS,GAAG,UAAU,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC9D,KAAK,GAAG,SAAS,CAAC;gBAClB,IAAI,GAAG,SAAS,CAAC;gBACjB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,KAAK,GAAG,UAAU,CAChB,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EACvB,OAAO,CAAC,gBAAgB,IAAI,OAAO,CACpC,CAAC;gBACF,OAAO,OAAO,CAAC,gBAAgB,CAAC;YAClC,CAAC,CAAC;YACF,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE;gBAC7B,4EAA4E;gBAC5E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;gBACjC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;oBACxB,KAAK,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;wBACvC,IAAI,CAAC,KAAK;4BACR,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,oEAAoE,CACrE,CAAC;oBACN,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC;YACF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACzB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;gBACzC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;oBAClD,QAAQ;yBACL,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC;yBAC3B,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACtC,OAAO;gBACT,CAAC;gBACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,MAAM,CAAC,CAAC;gBAChD,IAAI,KAAK,EAAE,CAAC;oBACV,QAAQ;yBACL,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC;yBAC3B,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACtC,OAAO;gBACT,CAAC;gBACD,IAAI,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;oBAC9D,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;oBAC1B,OAAO;gBACT,CAAC;gBACD,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBAC5D,IACE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;wBACrB,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM;wBACjC,0EAA0E;wBAC1E,CAAC,CACC,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM;4BACjC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,aAAa,CACpD,CAAC;wBACJ,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,YAAY,EAClD,CAAC;wBACD,QAAQ;6BACL,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC;6BAC3B,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;wBACtC,OAAO;oBACT,CAAC;oBACD,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;wBAC3B,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;wBACpC,OAAO;oBACT,CAAC;oBACD,MAAM,IAAI,GAAG,KAAK,CAChB,IAAI,EACJ,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,QAAQ,CAC7C,CAAC;oBACF,4EAA4E;oBAC5E,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qDAAqD,CACtD,CAAC;oBACF,OAAO;gBACT,CAAC;gBACD,IAAI,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;oBAC9D,QAAQ;yBACL,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC;yBAC3B,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACtC,OAAO;gBACT,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC/D,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjD,IACE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC;oBAC7C,KAAK,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM;oBACrC,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,EACtC,CAAC;oBACD,2EAA2E;oBAC3E,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;oBACpC,OAAO;gBACT,CAAC;gBACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;oBAC/B,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5C,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACnE,MAAM,CAAC,KAAK,KAAK,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAC3D,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;oBAC/B,OAAO;gBACT,CAAC;gBACD,KAAK,GAAG,YAAY,CAAC;gBACrB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,4EAA4E;gBAC5E,2EAA2E;gBAC3E,KAAK,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CACjD,CAAC,KAAK,EAAE,EAAE;oBACR,IAAI,KAAK;wBAAE,OAAO;oBAClB,KAAK,GAAG,IAAI,CAAC;oBACb,SAAS,GAAG,IAAI,CAAC;oBACjB,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;oBACrC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBAC5C,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjB,CAAC,EACD,GAAG,EAAE;oBACH,IAAI,KAAK;wBAAE,OAAO;oBAClB,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACjB,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;gBACjC,CAAC,CACF,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACnE,qEAAqE;YACrE,WAAW,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC1E,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,QAAQ,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBACtC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;oBACvB,IAAI,KAAK;wBAAE,OAAO;oBAClB,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;wBAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4DAA4D,CAC7D,CAAC;wBACF,OAAO;oBACT,CAAC;oBACD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtB,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sDAAsD,CACvD,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kEAAkE,MAAM,GAAG,YAAY,IAAI,CAC5F,CAAC;YACF,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;gBAAE,OAAO,EAAE,CAAC;;gBAClC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,KAAK,GAAG,IAAI,CAAC;QACb,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,WAAW,EAAE,EAAE,CAAC;QAChB,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,QAAQ,EAAE,KAAK,EAAE,CAAC;QAClB,IAAI,QAAQ,IAAI,UAAU;YAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QAC3C,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAC9B,IAAI,CAAC,SAAS;YAAE,MAAM,CAAC,mBAAmB,EAAE,CAAC;IAC/C,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amaretto-software-labs/borealis-cli",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Official command-line interface for the Borealis public API",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",