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

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
@@ -54,7 +63,7 @@ borealis template create --set displayName=Node --set image=node:22
54
63
  borealis template create --body '{"displayName":"Node","defaults":{"name":"Node","image":"node:22"}}'
55
64
  ```
56
65
 
57
- All commands support `--json`. JSON output preserves the public response. Human output is a presentation of the same response.
66
+ All commands support `--json`. JSON output preserves the public response. Human output is a presentation of the same response. A workspace import that reaches `failed` exits with code 3, including when `--wait` is used; its JSON result is still written to stdout.
58
67
 
59
68
  ### Safety
60
69
 
package/dist/app.js CHANGED
@@ -312,6 +312,14 @@ async function runInternal(argv, signal) {
312
312
  }
313
313
  }
314
314
  writeResult(result, options.json);
315
+ if (resolved.operation.operationId === "sandbox.workspace.import" &&
316
+ result &&
317
+ typeof result === "object" &&
318
+ result.status === "failed") {
319
+ const code = result.importErrorCode;
320
+ process.stderr.write(`Workspace import failed${typeof code === "string" && code ? `: ${code}` : "."}\n`);
321
+ return 3;
322
+ }
315
323
  return 0;
316
324
  }
317
325
  export async function run(argv, signal) {
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
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":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,eAAe,EAAsB,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC1C,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC;IAC1E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACvC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC9B,CAAC,CAAC;AAEH,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyLzB,CAAC;AAEH,MAAM,qBAAqB,GAAG,UAAU,CAAC,QAAQ,CAAC;KAC/C,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC;KAClC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAEpB,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC,MAAM,CAAC;IACxD,cAAc,EAAE,0BAA0B;IAC1C,eAAe,EAAE,UAAU;IAC3B,iBAAiB,EAAE,aAAa;IAChC,wBAAwB,EAAE,SAAS;IACnC,yBAAyB,EAAE,yCAAyC,qBAAqB,gEAAgE;CAC1J,CAAC,CAAC;AAEH,MAAM,UAAU,uBAAuB,CACrC,IAAmB,EACnB,SAAkB;IAElB,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,CAAC;IACnC,MAAM,OAAO,GAAG,OAAO;QACrB,CAAC,CAAC;YACE,KAAK,EAAE,wBAAwB;YAC/B,WAAW,EACT,mFAAmF;YACrF,MAAM,EAAE,wBAAwB;YAChC,IAAI,EAAE,yCAAyC;SAChD;QACH,CAAC,CAAC,IAAI,KAAK,WAAW;YACpB,CAAC,CAAC;gBACE,KAAK,EAAE,mBAAmB;gBAC1B,WAAW,EACT,gHAAgH;gBAClH,MAAM,EAAE,4BAA4B;gBACpC,IAAI,EAAE,yDAAyD;aAChE;YACH,CAAC,CAAC,IAAI,KAAK,SAAS;gBAClB,CAAC,CAAC;oBACE,KAAK,EAAE,mBAAmB;oBAC1B,WAAW,EAAE,SAAS;wBACpB,CAAC,CAAC,mHAAmH;wBACrH,CAAC,CAAC,gHAAgH;oBACpH,MAAM,EAAE,+BAA+B;oBACvC,IAAI,EAAE,SAAS;wBACb,CAAC,CAAC,2DAA2D;wBAC7D,CAAC,CAAC,2CAA2C;iBAChD;gBACH,CAAC,CAAC,IAAI,KAAK,SAAS;oBAClB,CAAC,CAAC;wBACE,KAAK,EAAE,mBAAmB;wBAC1B,WAAW,EACT,wFAAwF;wBAC1F,MAAM,EAAE,4BAA4B;wBACpC,IAAI,EAAE,6CAA6C;qBACpD;oBACH,CAAC,CAAC,IAAI,KAAK,SAAS;wBAClB,CAAC,CAAC;4BACE,KAAK,EAAE,gCAAgC;4BACvC,WAAW,EACT,kHAAkH;4BACpH,MAAM,EAAE,4BAA4B;4BACpC,IAAI,EAAE,SAAS;gCACb,CAAC,CAAC,yDAAyD;gCAC3D,CAAC,CAAC,mCAAmC;yBACxC;wBACH,CAAC,CAAC;4BACE,KAAK,EAAE,0BAA0B;4BACjC,WAAW,EACT,yGAAyG;4BAC3G,MAAM,EAAE,4BAA4B;4BACpC,IAAI,EAAE,SAAS;gCACb,CAAC,CAAC,yDAAyD;gCAC3D,CAAC,CAAC,mCAAmC;yBACxC,CAAC;IACd,MAAM,IAAI,GAAG,OAAO;QAClB,CAAC,CAAC,6BAA6B;QAC/B,CAAC,CAAC,mCAAmC,CAAC;IACxC,MAAM,WAAW,GAAG,OAAO;QACzB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI,KAAK,SAAS;YAClB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,OAAO,CAAC;IACd,MAAM,QAAQ,GAAG,OAAO,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IAEpE,OAAO;;;;;;WAME,OAAO,CAAC,KAAK;WACb,kBAAkB;;;;2BAIF,WAAW,4CAA4C,QAAQ;;;;;;;;;;;qIAW2C,IAAI;;;gCAGzG,OAAO,CAAC,KAAK;+BACd,OAAO,CAAC,WAAW;EAEhD,CAAC,OAAO,IAAI,SAAS;QACnB,CAAC,CAAC;wBACkB,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;wBACpF,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;mKACuD;QAC/J,CAAC,CAAC,EACN;;;gBAGgB,OAAO,CAAC,MAAM;;wBAEN,OAAO,CAAC,IAAI;;;;QAI5B,CAAC;AACT,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAW;IACpC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,GACtB,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAC3B,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC5B,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,MAAM,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,QAAgB,EAChB,IAAqB,EACrB,MAAoB;IAEpB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,gBAAgB,EAAE;YACxD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;YAChE,IAAI;YACJ,QAAQ,EAAE,OAAO;YACjB,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1E,IAAI,CAAC,QAAQ,CAAC,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,IACE,CAAC,SAAS;YACV,CAAC,SAAS,KAAK,kBAAkB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAElE,MAAM,IAAI,KAAK,CACb,qDAAqD,SAAS,IAAI,WAAW,IAAI,CAClF,CAAC;QACJ,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,OAAsB,EACtB,SAAkB,EAClB,QAAgB,QAAQ,CAAC,KAAK,EAC9B,MAAoB;IAEpB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAClE,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACnD,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,MAAM,eAAe,CAAC;QAC3B,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;QAChD,MAAM;QACN,OAAO,EAAE,4BAA4B;QACrC,UAAU,EAAE,uBAAuB;QACnC,WAAW;QACX,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa;YAC9C,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5C,MAAM,SAAS,GAAG,SAAS,CACzB,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CACxD,CAAC;YACF,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;YACrD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC;gBACxC,WAAW,EAAE,KAAK;gBAClB,SAAS,EAAE,QAAQ,CAAC,QAAQ;gBAC5B,YAAY,EAAE,WAAW;gBACzB,KAAK;gBACL,KAAK;gBACL,cAAc,EAAE,SAAS;gBACzB,qBAAqB,EAAE,MAAM;aAC9B,CAAC;gBACA,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACzC,IAAI,SAAS,IAAI,CAAC,aAAa;gBAC7B,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YACtD,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACvE,IAAI,aAAa;gBACf,KAAK,CAAC,YAAY,CAAC,GAAG,CACpB,WAAW,EACX,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM,CACtC,CAAC;YACJ,OAAO;gBACL,KAAK;gBACL,gBAAgB,EAAE,KAAK,CAAC,QAAQ,EAAE;gBAClC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM;oBACzB,MAAM,KAAK,GAAG,MAAM,YAAY,CAC9B,QAAQ,EACR,IAAI,eAAe,CAAC;wBAClB,UAAU,EAAE,oBAAoB;wBAChC,IAAI;wBACJ,SAAS,EAAE,QAAQ,CAAC,QAAQ;wBAC5B,YAAY,EAAE,WAAW;wBACzB,aAAa,EAAE,QAAQ;qBACxB,CAAC,EACF,MAAM,CACP,CAAC;oBACF,IAAI,CAAC,KAAK,CAAC,aAAa;wBACtB,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAC;oBACJ,MAAM,eAAe,GAAG,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;oBAC9D,IAAI,eAAyB,CAAC;oBAC9B,IAAI,WAAmB,CAAC;oBACxB,IAAI,CAAC;wBACH,eAAe,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,iBAAiB,EAAE;4BACrD,OAAO,EAAE;gCACP,aAAa,EAAE,UAAU,KAAK,CAAC,YAAY,EAAE;gCAC7C,MAAM,EAAE,kBAAkB;gCAC1B,GAAG,CAAC,OAAO,CAAC,YAAY;oCACtB,CAAC,CAAC,EAAE,mBAAmB,EAAE,OAAO,CAAC,YAAY,EAAE;oCAC/C,CAAC,CAAC,EAAE,CAAC;6BACR;4BACD,QAAQ,EAAE,OAAO;4BACjB,MAAM,EAAE,eAAe,CAAC,MAAM;yBAC/B,CAAC,CAAC;wBACH,WAAW,GAAG,MAAM,mBAAmB,CACrC,eAAe,EACf,IAAI,GAAG,IAAI,EACX,eAAe,CAAC,MAAM,CACvB,CAAC;oBACJ,CAAC;4BAAS,CAAC;wBACT,eAAe,CAAC,OAAO,EAAE,CAAC;oBAC5B,CAAC;oBACD,IAAI,CAAC,eAAe,CAAC,EAAE;wBACrB,MAAM,IAAI,KAAK,CACb,uCAAuC,eAAe,CAAC,MAAM,IAAI,CAClE,CAAC;oBACJ,MAAM,OAAO,GAAG,CAAC;yBACd,MAAM,CAAC;wBACN,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;wBAC/D,aAAa,EAAE,CAAC,CAAC,KAAK,CACpB,CAAC,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAChD;qBACF,CAAC;yBACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;oBAClC,IACE,OAAO,CAAC,YAAY;wBACpB,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CACzB,CAAC,UAAU,EAAE,EAAE,CACb,UAAU,CAAC,cAAc,KAAK,OAAO,CAAC,YAAY,CACrD;wBAED,MAAM,IAAI,KAAK,CACb,2DAA2D,OAAO,CAAC,YAAY,IAAI,CACpF,CAAC;oBACJ,MAAM,YAAY,GAChB,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,sBAAsB,IAAI,SAAS,CAAC;oBACtE,MAAM,OAAO,GAAY;wBACvB,WAAW,EAAE,KAAK,CAAC,YAAY;wBAC/B,YAAY,EAAE,KAAK,CAAC,aAAa;wBACjC,SAAS,EAAE,IAAI,IAAI,CACjB,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,UAAU,GAAG,IAAI,CACrC,CAAC,WAAW,EAAE;wBACf,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;wBAC3B,GAAG;wBACH,QAAQ;wBACR,GAAG;wBACH,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC1C,CAAC;oBACF,MAAM,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBACpD,OAAO,OAAO,CAAC;gBACjB,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,QAAkB,EAClB,KAAa,EACb,MAAoB;IAEpB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;IAC1C,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACtE,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM;YAC5B,CAAC,CAAC,MAAM,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;YACtC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,IAAI;YAAE,MAAM;QAChB,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC;QAC1B,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;YAClB,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,SAAS,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,MAA+C,EAC/C,MAAmB;IAEnB,MAAM,CAAC,cAAc,EAAE,CAAC;IACxB,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,cAAc,GAAG,GAAS,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAChB,CAAC,MAAM,EAAE,EAAE;YACT,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YACpD,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,EACD,CAAC,KAAc,EAAE,EAAE;YACjB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YACpD,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAsB,EACtB,MAAoB;IAEpB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IACtD,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CACrE,OAAO,CACR,CAAC;IACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAC;IACJ,IAAI,OAAO,CAAC,KAAK;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,gIAAgI,CACjI,CAAC;IACJ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;IACrE,CAAC;IACD,IAAI,WAAW,IAAI,OAAO,CAAC,KAAK;QAC9B,OAAO,EAAE,KAAK,EAAE,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,CAAE,EAAE,CAAC;IACpD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3D,IAAI,CAAC,OAAO;QACV,MAAM,IAAI,KAAK,CACb,wCAAwC,OAAO,CAAC,OAAO,+BAA+B,CACvF,CAAC;IACJ,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM;QACrD,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;IACjD,IAAI,CAAC,OAAO,CAAC,YAAY;QACvB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,MAAM,YAAY,CAClC,OAAO,CAAC,QAAQ,EAChB,IAAI,eAAe,CAAC;QAClB,UAAU,EAAE,eAAe;QAC3B,aAAa,EAAE,OAAO,CAAC,YAAY;QACnC,SAAS,EAAE,OAAO,CAAC,QAAQ;KAC5B,CAAC,EACF,MAAM,CACP,CAAC;IACF,MAAM,OAAO,GAAY;QACvB,GAAG,OAAO;QACV,WAAW,EAAE,SAAS,CAAC,YAAY;QACnC,YAAY,EAAE,SAAS,CAAC,aAAa,IAAI,OAAO,CAAC,YAAY;QAC7D,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;QAC3E,KAAK,EAAE,SAAS,CAAC,KAAK;KACvB,CAAC;IACF,MAAM,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACpD,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC1D,CAAC"}
@@ -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.3",
4
4
  "description": "Official command-line interface for the Borealis public API",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",