@ai-coders/installer 0.3.0 → 0.5.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 (58) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +42 -6
  3. package/dist/artifact-client.d.ts +44 -0
  4. package/dist/artifact-client.js +213 -0
  5. package/dist/artifact-client.js.map +1 -0
  6. package/dist/clerk-auth.d.ts +7 -1
  7. package/dist/clerk-auth.js +16 -2
  8. package/dist/clerk-auth.js.map +1 -1
  9. package/dist/cli-command.d.ts +18 -3
  10. package/dist/cli-command.js +48 -2
  11. package/dist/cli-command.js.map +1 -1
  12. package/dist/cli.js +54 -6
  13. package/dist/cli.js.map +1 -1
  14. package/dist/empty-directory.d.ts +2 -0
  15. package/dist/empty-directory.js +22 -0
  16. package/dist/empty-directory.js.map +1 -0
  17. package/dist/i18n.d.ts +18 -0
  18. package/dist/i18n.js +52 -8
  19. package/dist/i18n.js.map +1 -1
  20. package/dist/product-manifest.js +4 -2
  21. package/dist/product-manifest.js.map +1 -1
  22. package/dist/products/second-brain/apply.d.ts +1 -0
  23. package/dist/products/second-brain/apply.js +4 -2
  24. package/dist/products/second-brain/apply.js.map +1 -1
  25. package/dist/products/second-brain/bootstrap.d.ts +1 -1
  26. package/dist/products/second-brain/bootstrap.js +1 -1
  27. package/dist/products/second-brain/bootstrap.js.map +1 -1
  28. package/dist/products/second-brain/envfile.d.ts +2 -0
  29. package/dist/products/second-brain/envfile.js +15 -0
  30. package/dist/products/second-brain/envfile.js.map +1 -1
  31. package/dist/products/second-brain/main.d.ts +1 -0
  32. package/dist/products/second-brain/main.js +3 -0
  33. package/dist/products/second-brain/main.js.map +1 -1
  34. package/dist/products/second-brain/service.d.ts +1 -0
  35. package/dist/products/second-brain/service.js +14 -0
  36. package/dist/products/second-brain/service.js.map +1 -1
  37. package/dist/products/second-brain/source-archive.d.ts +1 -0
  38. package/dist/products/second-brain/source-archive.js +86 -0
  39. package/dist/products/second-brain/source-archive.js.map +1 -0
  40. package/dist/products/severino/main.d.ts +1 -0
  41. package/dist/products/severino/main.js +3 -0
  42. package/dist/products/severino/main.js.map +1 -1
  43. package/dist/products/severino/service.d.ts +1 -0
  44. package/dist/products/severino/service.js +14 -0
  45. package/dist/products/severino/service.js.map +1 -1
  46. package/dist/products/severino/source-archive.d.ts +1 -0
  47. package/dist/products/severino/source-archive.js +86 -0
  48. package/dist/products/severino/source-archive.js.map +1 -0
  49. package/dist/project-bootstrap.d.ts +22 -0
  50. package/dist/project-bootstrap.js +171 -0
  51. package/dist/project-bootstrap.js.map +1 -0
  52. package/dist/safe-archive.d.ts +1 -0
  53. package/dist/safe-archive.js +201 -0
  54. package/dist/safe-archive.js.map +1 -0
  55. package/dist/terminal-input.d.ts +1 -0
  56. package/dist/terminal-input.js +15 -0
  57. package/dist/terminal-input.js.map +1 -0
  58. package/package.json +2 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # @ai-coders/installer
2
2
 
3
+ ## [0.5.0](https://github.com/vinilana/ai-coders-installers/compare/v0.4.0...v0.5.0) (2026-08-25)
4
+
5
+
6
+ ### Features
7
+
8
+ * treat OS metadata files as empty directory markers ([121e532](https://github.com/vinilana/ai-coders-installers/commit/121e5321c3d7de34df8996a76a254e5454143e28))
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **cli:** bootstrap when the directory holds only OS metadata files ([0c5b6e0](https://github.com/vinilana/ai-coders-installers/commit/0c5b6e049cbd84e453d38411b99ca5353342d38a))
14
+ * **second-brain:** support monorepo deployment layout ([fcba13a](https://github.com/vinilana/ai-coders-installers/commit/fcba13ad934cabd772619b0a22c8e8793edef85e))
15
+ * **second-brain:** support the monorepo deployment layout ([a3f32f1](https://github.com/vinilana/ai-coders-installers/commit/a3f32f15fbe10e966565b7621cc8410b89153c81))
16
+
17
+ ## [0.4.0](https://github.com/vinilana/ai-coders-installers/compare/v0.3.0...v0.4.0) (2026-08-23)
18
+
19
+
20
+ ### Features
21
+
22
+ * add zero-checkout product bootstrap ([7687bb5](https://github.com/vinilana/ai-coders-installers/commit/7687bb5ecf49261e63ddadff70476375128fc2e6))
23
+ * add zero-checkout product bootstrap ([da8ced2](https://github.com/vinilana/ai-coders-installers/commit/da8ced24fd633c5efb1ea779110dfb34ea4f6788))
24
+
25
+
26
+ ### Bug Fixes
27
+
28
+ * enforce paid installer access and secure rollback ([f43b082](https://github.com/vinilana/ai-coders-installers/commit/f43b0829f588dbe08005f9f14b5de6b5bf92b800))
29
+ * make partial rollback test cross-platform ([501a2a5](https://github.com/vinilana/ai-coders-installers/commit/501a2a5f471bae1e8be9bd806b14d10940ee84e7))
30
+ * reject credential paths in product artifacts ([f09dc22](https://github.com/vinilana/ai-coders-installers/commit/f09dc225ad6cfedaaa1b0928a4565ad5888d7bc7))
31
+
3
32
  ## [0.3.0](https://github.com/vinilana/ai-coders-installers/compare/v0.2.0...v0.3.0) (2026-08-19)
4
33
 
5
34
 
package/README.md CHANGED
@@ -11,23 +11,59 @@ modification, or redistribution rights. See [LICENSE](LICENSE).
11
11
 
12
12
  ## Use
13
13
 
14
+ Create an empty directory and run the installer for the product you want to
15
+ install:
16
+
17
+ ```sh
18
+ mkdir my-second-brain
19
+ cd my-second-brain
20
+ npx --yes @ai-coders/installer@latest second-brain
21
+ ```
22
+
23
+ The same zero-checkout flow works for Severino:
24
+
25
+ ```sh
26
+ mkdir my-severino
27
+ cd my-severino
28
+ npx --yes @ai-coders/installer@latest severino
29
+ ```
30
+
31
+ The installer opens Clerk in the browser, verifies product entitlement through
32
+ the AI Coders API, downloads the authorized immutable release artifact,
33
+ verifies its SHA-256 checksum, validates its fixed product contract, and copies
34
+ it into the empty current directory before starting the existing wizard.
35
+
36
+ Installation requires an active paid subscription plan or standalone product
37
+ access. A free member can authenticate, but the CLI will not download the
38
+ product or start the wizard; it opens the AI Coders upgrade page in the browser
39
+ instead.
40
+
41
+ ## Existing product checkout
42
+
14
43
  Run the installer from the root of a supported product repository:
15
44
 
16
45
  ```sh
17
- npx @ai-coders/installer second-brain
18
- npx @ai-coders/installer severino
46
+ npx --yes @ai-coders/installer@latest second-brain
47
+ npx --yes @ai-coders/installer@latest severino
19
48
  ```
20
49
 
21
50
  The command always reads the product's contract from fixed files in the
22
51
  current directory — `./invokta.mcp.json` for Second Brain, `./package.json`
23
52
  for Severino — and does not accept a repository path or an alternate manifest
24
53
  file. The requested product must match the contract before any product
25
- installer starts. The installer then opens Clerk in the browser and starts the
26
- product only after a successful AI Coders sign-in.
54
+ installer starts.
55
+
56
+ Bootstrap only runs when the current directory is exactly empty. A non-empty
57
+ directory without a valid contract stops before authentication and is never
58
+ modified.
59
+ An existing checkout is also authorization-gated: the CLI verifies paid plan or
60
+ standalone access after validating the contract and before starting the
61
+ product wizard.
27
62
 
28
63
  The public OAuth client configuration is bundled with the package, so members
29
- do not need to provide Clerk settings. Tokens and user credentials remain in
30
- memory for the current command and are never persisted. See
64
+ do not need to provide Clerk settings. Tokens, signed download URLs, and user
65
+ credentials remain in memory for the current command and are never logged or
66
+ persisted. See
31
67
  [Installer authentication](docs/authentication.md) for the one-time Clerk
32
68
  application setup and security contract.
33
69
 
@@ -0,0 +1,44 @@
1
+ import { z } from "zod";
2
+ import type { InstallerProduct } from "./product-manifest.js";
3
+ export declare const installerApiBaseUrl = "https://api.aicoders.academy";
4
+ export declare const maximumArtifactBytes: number;
5
+ type FetchImplementation = (input: string | URL, init?: RequestInit) => Promise<Response>;
6
+ declare const artifactDescriptorSchema: z.ZodObject<{
7
+ product: z.ZodEnum<{
8
+ "second-brain": "second-brain";
9
+ severino: "severino";
10
+ }>;
11
+ version: z.ZodString;
12
+ commitSha: z.ZodString;
13
+ sha256: z.ZodString;
14
+ byteSize: z.ZodNumber;
15
+ downloadUrl: z.ZodString;
16
+ expiresAt: z.ZodString;
17
+ }, z.core.$strict>;
18
+ export type ProductArtifactDescriptor = z.infer<typeof artifactDescriptorSchema>;
19
+ export interface InstallerPaywall {
20
+ readonly product: InstallerProduct;
21
+ readonly reason: string;
22
+ readonly requiredAction: "upgrade" | "buy";
23
+ readonly paywallUrl: string;
24
+ }
25
+ export declare class InstallerPaywallRequiredError extends Error implements InstallerPaywall {
26
+ readonly product: InstallerProduct;
27
+ readonly reason: string;
28
+ readonly requiredAction: "upgrade" | "buy";
29
+ readonly paywallUrl: string;
30
+ constructor(paywall: InstallerPaywall);
31
+ }
32
+ export declare function isInstallerPaywallRequiredError(value: unknown): value is InstallerPaywallRequiredError;
33
+ export declare function requestProductArtifact(options: {
34
+ readonly product: InstallerProduct;
35
+ readonly accessToken: string;
36
+ readonly writeOutput: (value: string) => void;
37
+ readonly fetch?: FetchImplementation;
38
+ }): Promise<ProductArtifactDescriptor>;
39
+ export declare function downloadProductArtifact(options: {
40
+ readonly descriptor: ProductArtifactDescriptor;
41
+ readonly writeOutput: (value: string) => void;
42
+ readonly fetch?: FetchImplementation;
43
+ }): Promise<Buffer>;
44
+ export {};
@@ -0,0 +1,213 @@
1
+ import { createHash, timingSafeEqual } from "node:crypto";
2
+ import { z } from "zod";
3
+ import { cliMessages } from "./i18n.js";
4
+ export const installerApiBaseUrl = "https://api.aicoders.academy";
5
+ export const maximumArtifactBytes = 512 * 1024 * 1024;
6
+ const requestTimeoutMs = 30_000;
7
+ const downloadTimeoutMs = 300_000;
8
+ const productSchema = z.enum(["second-brain", "severino"]);
9
+ const artifactDescriptorSchema = z
10
+ .object({
11
+ product: productSchema,
12
+ version: z
13
+ .string()
14
+ .regex(/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/),
15
+ commitSha: z.string().regex(/^[0-9a-f]{40}$/),
16
+ sha256: z.string().regex(/^[0-9a-f]{64}$/),
17
+ byteSize: z.number().int().min(1).max(maximumArtifactBytes),
18
+ downloadUrl: z.string().url(),
19
+ expiresAt: z.string().datetime(),
20
+ })
21
+ .strict();
22
+ export class InstallerPaywallRequiredError extends Error {
23
+ product;
24
+ reason;
25
+ requiredAction;
26
+ paywallUrl;
27
+ constructor(paywall) {
28
+ super(paywall.requiredAction === "buy"
29
+ ? cliMessages.installerPurchaseRequired(paywall.product)
30
+ : cliMessages.installerUpgradeRequired(paywall.product));
31
+ this.name = "InstallerPaywallRequiredError";
32
+ this.product = paywall.product;
33
+ this.reason = paywall.reason;
34
+ this.requiredAction = paywall.requiredAction;
35
+ this.paywallUrl = paywall.paywallUrl;
36
+ }
37
+ }
38
+ export function isInstallerPaywallRequiredError(value) {
39
+ return value instanceof InstallerPaywallRequiredError;
40
+ }
41
+ function parseDescriptor(value) {
42
+ const parsed = artifactDescriptorSchema.safeParse(value);
43
+ if (!parsed.success) {
44
+ throw new Error(cliMessages.artifactDescriptorInvalid);
45
+ }
46
+ const descriptor = parsed.data;
47
+ if (Date.parse(descriptor.expiresAt) <= Date.now()) {
48
+ throw new Error(cliMessages.artifactDescriptorInvalid);
49
+ }
50
+ let downloadUrl;
51
+ try {
52
+ downloadUrl = new URL(descriptor.downloadUrl);
53
+ }
54
+ catch {
55
+ throw new Error(cliMessages.artifactDescriptorInvalid);
56
+ }
57
+ if (downloadUrl.protocol !== "https:" ||
58
+ downloadUrl.username !== "" ||
59
+ downloadUrl.password !== "" ||
60
+ downloadUrl.hash !== "") {
61
+ throw new Error(cliMessages.artifactDescriptorInvalid);
62
+ }
63
+ return descriptor;
64
+ }
65
+ function paywallFromResponse(value, requestedProduct) {
66
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
67
+ throw new Error(cliMessages.artifactAccessDenied(403));
68
+ }
69
+ const response = value;
70
+ if (response.code !== "INSTALLER_UPGRADE_REQUIRED") {
71
+ throw new Error(cliMessages.artifactAccessDenied(403));
72
+ }
73
+ const details = response.details;
74
+ if (typeof details !== "object" ||
75
+ details === null ||
76
+ Array.isArray(details)) {
77
+ throw new Error(cliMessages.artifactAccessDenied(403));
78
+ }
79
+ const paywall = details;
80
+ if (paywall.product !== requestedProduct ||
81
+ typeof paywall.reason !== "string" ||
82
+ (paywall.requiredAction !== "upgrade" &&
83
+ paywall.requiredAction !== "buy") ||
84
+ typeof paywall.paywallUrl !== "string") {
85
+ throw new Error(cliMessages.artifactAccessDenied(403));
86
+ }
87
+ let url;
88
+ try {
89
+ url = new URL(paywall.paywallUrl);
90
+ }
91
+ catch {
92
+ throw new Error(cliMessages.artifactAccessDenied(403));
93
+ }
94
+ if (url.protocol !== "https:" ||
95
+ url.hostname !== "membros.aicoders.academy" ||
96
+ url.username !== "" ||
97
+ url.password !== "" ||
98
+ url.hash !== "") {
99
+ throw new Error(cliMessages.artifactAccessDenied(403));
100
+ }
101
+ return new InstallerPaywallRequiredError({
102
+ product: requestedProduct,
103
+ reason: paywall.reason,
104
+ requiredAction: paywall.requiredAction,
105
+ paywallUrl: url.toString(),
106
+ });
107
+ }
108
+ export async function requestProductArtifact(options) {
109
+ const url = new URL(`/api/installer/products/${encodeURIComponent(options.product)}/bootstrap`, installerApiBaseUrl);
110
+ let response;
111
+ try {
112
+ response = await (options.fetch ?? globalThis.fetch)(url, {
113
+ method: "POST",
114
+ headers: {
115
+ Accept: "application/json",
116
+ Authorization: `Bearer ${options.accessToken}`,
117
+ "Content-Type": "application/json",
118
+ },
119
+ body: "{}",
120
+ signal: AbortSignal.timeout(requestTimeoutMs),
121
+ });
122
+ }
123
+ catch {
124
+ throw new Error(cliMessages.artifactDownloadFailed);
125
+ }
126
+ if (response.status === 401 || response.status === 403) {
127
+ if (response.status === 401) {
128
+ throw new Error(cliMessages.artifactAuthenticationRejected(401));
129
+ }
130
+ try {
131
+ throw paywallFromResponse(await response.json(), options.product);
132
+ }
133
+ catch (error) {
134
+ if (isInstallerPaywallRequiredError(error))
135
+ throw error;
136
+ throw new Error(cliMessages.artifactAccessDenied(403));
137
+ }
138
+ }
139
+ if (!response.ok) {
140
+ throw new Error(cliMessages.artifactDownloadFailed);
141
+ }
142
+ let value;
143
+ try {
144
+ value = await response.json();
145
+ }
146
+ catch {
147
+ throw new Error(cliMessages.artifactDescriptorInvalid);
148
+ }
149
+ const descriptor = parseDescriptor(value);
150
+ if (descriptor.product !== options.product) {
151
+ throw new Error(cliMessages.artifactDescriptorInvalid);
152
+ }
153
+ return descriptor;
154
+ }
155
+ function checksumMatches(archive, expected) {
156
+ const received = createHash("sha256").update(archive).digest("hex");
157
+ const receivedBuffer = Buffer.from(received, "utf8");
158
+ const expectedBuffer = Buffer.from(expected, "utf8");
159
+ return (receivedBuffer.length === expectedBuffer.length &&
160
+ timingSafeEqual(receivedBuffer, expectedBuffer));
161
+ }
162
+ export async function downloadProductArtifact(options) {
163
+ const descriptor = parseDescriptor(options.descriptor);
164
+ let response;
165
+ try {
166
+ response = await (options.fetch ?? globalThis.fetch)(descriptor.downloadUrl, {
167
+ signal: AbortSignal.timeout(downloadTimeoutMs),
168
+ });
169
+ }
170
+ catch {
171
+ throw new Error(cliMessages.artifactDownloadFailed);
172
+ }
173
+ if (!response.ok || response.body === null) {
174
+ throw new Error(cliMessages.artifactDownloadFailed);
175
+ }
176
+ const contentLength = response.headers.get("content-length");
177
+ if (contentLength !== null &&
178
+ (Number.isNaN(Number(contentLength)) ||
179
+ Number(contentLength) !== descriptor.byteSize)) {
180
+ throw new Error(cliMessages.artifactDownloadFailed);
181
+ }
182
+ const chunks = [];
183
+ let receivedBytes = 0;
184
+ try {
185
+ const reader = response.body.getReader();
186
+ for (;;) {
187
+ const { done, value } = await reader.read();
188
+ if (done === true)
189
+ break;
190
+ if (value === undefined)
191
+ continue;
192
+ const chunk = Buffer.from(value);
193
+ receivedBytes += chunk.byteLength;
194
+ if (receivedBytes > descriptor.byteSize) {
195
+ await reader.cancel();
196
+ throw new Error(cliMessages.artifactDownloadFailed);
197
+ }
198
+ chunks.push(chunk);
199
+ }
200
+ }
201
+ catch {
202
+ throw new Error(cliMessages.artifactDownloadFailed);
203
+ }
204
+ if (receivedBytes !== descriptor.byteSize) {
205
+ throw new Error(cliMessages.artifactDownloadFailed);
206
+ }
207
+ const archive = Buffer.concat(chunks);
208
+ if (!checksumMatches(archive, descriptor.sha256)) {
209
+ throw new Error(cliMessages.artifactChecksumMismatch);
210
+ }
211
+ return archive;
212
+ }
213
+ //# sourceMappingURL=artifact-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-client.js","sourceRoot":"","sources":["../src/artifact-client.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,11 @@ export interface AuthenticatedClerkUser {
6
6
  readonly email?: string;
7
7
  readonly name?: string;
8
8
  }
9
+ export interface AuthenticatedClerkSession {
10
+ readonly user: AuthenticatedClerkUser;
11
+ withAccessToken<T>(operation: (token: string) => T | Promise<T>): Promise<T>;
12
+ dispose(): void;
13
+ }
9
14
  export interface AuthenticateWithClerkOptions {
10
15
  readonly issuer: string;
11
16
  readonly clientId: string;
@@ -14,5 +19,6 @@ export interface AuthenticateWithClerkOptions {
14
19
  readonly openBrowser?: (url: string) => Promise<void>;
15
20
  readonly callbackTimeoutMs?: number;
16
21
  }
17
- export declare function authenticateWithClerk(options: AuthenticateWithClerkOptions): Promise<AuthenticatedClerkUser>;
22
+ export declare function openBrowserBestEffort(url: string): Promise<void>;
23
+ export declare function authenticateWithClerk(options: AuthenticateWithClerkOptions): Promise<AuthenticatedClerkSession>;
18
24
  export {};
@@ -154,7 +154,7 @@ function buildAuthorizationUrl(options) {
154
154
  url.searchParams.set("code_challenge_method", "S256");
155
155
  return url;
156
156
  }
157
- async function openBrowserBestEffort(url) {
157
+ export async function openBrowserBestEffort(url) {
158
158
  const command = process.platform === "darwin"
159
159
  ? { file: "open", args: [url] }
160
160
  : process.platform === "win32"
@@ -287,7 +287,21 @@ export async function authenticateWithClerk(options) {
287
287
  accessToken,
288
288
  });
289
289
  options.writeOutput(cliMessages.authenticatedAs(user.email ?? user.name ?? user.id));
290
- return user;
290
+ let sessionToken = accessToken;
291
+ let discarded = false;
292
+ return {
293
+ user,
294
+ async withAccessToken(operation) {
295
+ if (discarded || sessionToken === "") {
296
+ throw new Error(cliMessages.authenticatedSessionDiscarded);
297
+ }
298
+ return Promise.resolve(operation(sessionToken));
299
+ },
300
+ dispose() {
301
+ discarded = true;
302
+ sessionToken = "";
303
+ },
304
+ };
291
305
  }
292
306
  finally {
293
307
  callbackServer.close();
@@ -1 +1 @@
1
- {"version":3,"file":"clerk-auth.js","sourceRoot":"","sources":["../src/clerk-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,YAAY,EAAuB,MAAM,WAAW,CAAC;AAG9D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,CAAC,MAAM,gBAAgB,GAAG,gCAAgC,CAAC;AACjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;AAErD,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAU,CAAC;AACjE,MAAM,wBAAwB,GAAG,OAAO,CAAC;AACzC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAsCrC,MAAM,WAAW,GAAG,WAAW,CAAC,0BAA0B,CAAC;AAC3D,MAAM,WAAW,GAAG,WAAW,CAAC,wBAAwB,CAAC;AAEzD,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpD,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;IACrD,CAAC;IACD,IACE,GAAG,CAAC,QAAQ,KAAK,QAAQ;QACzB,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,CAAC,EAC3D,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;IACxD,CAAC;IACD,IACE,GAAG,CAAC,QAAQ,KAAK,EAAE;QACnB,GAAG,CAAC,QAAQ,KAAK,EAAE;QACnB,GAAG,CAAC,QAAQ,KAAK,GAAG;QACpB,GAAG,CAAC,MAAM,KAAK,EAAE;QACjB,GAAG,CAAC,IAAI,KAAK,EAAE,EACf,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB,EAAE,QAAgB;IACrD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,OAAO,CACL,cAAc,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM;QAC/C,eAAe,CAAC,cAAc,EAAE,cAAc,CAAC,CAChD,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,WAAmB;IAC1C,OAAO;QACL,eAAe,EAAE,UAAU;QAC3B,UAAU,EAAE,OAAO;QACnB,yBAAyB,EAAE,+CAA+C;QAC1E,cAAc,EAAE,WAAW;QAC3B,wBAAwB,EAAE,SAAS;KACpC,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CACd,QAAwB,EACxB,MAAc,EACd,IAAY,EACZ,aAAyB;IAEzB,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,eAAe,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACxE,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AACpC,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,OAGvC;IACC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,OAAmC,CAAC;IACxC,IAAI,WAAoC,CAAC;IACzC,IAAI,UAAmC,CAAC;IACxC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1D,WAAW,GAAG,OAAO,CAAC;QACtB,UAAU,GAAG,MAAM,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;QAChD,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC1D,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,eAAe,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACtE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;QACrD,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;YACjC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,eAAe,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACtE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YAC3C,OAAO;QACT,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,eAAe,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACtE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,CACb,MAAc,EACd,IAAY,EACZ,aAAyB,EACnB,EAAE;YACR,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,OAAO,KAAK,SAAS;gBAAE,YAAY,CAAC,OAAO,CAAC,CAAC;YACjD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE;gBACnC,aAAa,EAAE,CAAC;gBAChB,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE;gBAC5B,MAAM,aAAa,GAAG,SAAS;qBAC5B,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;qBAC7B,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAChB,UAAU,CACR,IAAI,KAAK,CAAC,WAAW,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,CAChE,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YACjE,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE;gBAC5B,UAAU,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE;gBAC5B,UAAU,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE;YAC5B,WAAW,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,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,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAiB,CAAC;IAChD,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;QACxB,IAAI,OAAO;YAAE,OAAO;QACpB,OAAO,GAAG,IAAI,CAAC;QACf,UAAU,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAEtB,OAAO;QACL,WAAW,EAAE,oBAAoB,OAAO,CAAC,IAAI,WAAW;QACxD,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW;QAC9B,KAAK;YACH,IAAI,OAAO,KAAK,SAAS;gBAAE,YAAY,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,CAAC,OAAO;gBAAE,OAAO,GAAG,IAAI,CAAC;YAC7B,IAAI,MAAM,CAAC,SAAS;gBAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACvC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,OAM9B;IACC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,kBAAkB,CAAC,CAAC;IACzD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC9C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,GAAW;IAC9C,MAAM,OAAO,GACX,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAC3B,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE;QAC/B,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC5B,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE;YACvC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;YAC9C,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC5B,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,+DAA+D;IACjE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,OAOxC;IACC,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC;QAC/B,UAAU,EAAE,oBAAoB;QAChC,SAAS,EAAE,OAAO,CAAC,QAAQ;QAC3B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,aAAa,EAAE,OAAO,CAAC,YAAY;QACnC,YAAY,EAAE,OAAO,CAAC,WAAW;KAClC,CAAC,CAAC;IACH,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,cAAc,EAAE;YAC9D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,MAAM,EAAE,kBAAkB;gBAC1B,cAAc,EAAE,mCAAmC;aACpD;YACD,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;YACrB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC;SACnD,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,yBAAyB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,KAAyB,CAAC;IAC9B,IAAI,CAAC;QACH,KAAK,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,IAAI,KAAK,CAAC,YAAY,KAAK,EAAE,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,KAAK,CAAC,YAAY,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,OAI7B;IACC,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,iBAAiB,EAAE;YACjE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,WAAW,EAAE,EAAE;YAC3D,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC;SACnD,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,4BAA4B,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,KAA4B,CAAC;IACjC,IAAI,CAAC;QACH,KAAK,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA0B,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,GAAG;QACb,GAAG,CAAC,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,EAAE;YACvD,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE;YACxB,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE;YACrD,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;YACtB,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAqC;IAErC,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzC,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,YAAY,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC;SACvC,MAAM,CAAC,YAAY,CAAC;SACpB,MAAM,CAAC,WAAW,CAAC,CAAC;IACvB,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,MAAM,wBAAwB,CAAC;QACpD,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,iBAAiB,IAAI,wBAAwB;KACjE,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,qBAAqB,CAAC;YACzC,MAAM;YACN,QAAQ;YACR,WAAW,EAAE,cAAc,CAAC,WAAW;YACvC,KAAK;YACL,aAAa;SACd,CAAC,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC/B,cAAc,CAAC,WAAW,EAAE;YAC5B,CAAC,OAAO,CAAC,WAAW,IAAI,qBAAqB,CAAC,CAAC,YAAY,CAAC;SAC7D,CAAC,CAAC;QACH,MAAM,mBAAmB,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;QAC9D,MAAM,WAAW,GAAG,MAAM,yBAAyB,CAAC;YAClD,KAAK,EAAE,mBAAmB;YAC1B,MAAM;YACN,QAAQ;YACR,IAAI;YACJ,YAAY;YACZ,WAAW,EAAE,cAAc,CAAC,WAAW;SACxC,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC;YAChC,KAAK,EAAE,mBAAmB;YAC1B,MAAM;YACN,WAAW;SACZ,CAAC,CAAC;QACH,OAAO,CAAC,WAAW,CACjB,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,CAChE,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,cAAc,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"clerk-auth.js","sourceRoot":"","sources":["../src/clerk-auth.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,25 @@
1
- import { loadInstallerProject } from "./product-manifest.js";
1
+ import type { AuthenticatedClerkSession } from "./clerk-auth.js";
2
+ import { type InstallerPaywallRequiredError } from "./artifact-client.js";
3
+ import { loadInstallerProject, type InstallerProduct } from "./product-manifest.js";
4
+ import type { AcquiredProductArtifact } from "./project-bootstrap.js";
2
5
  export type LoadedInstallerProject = Awaited<ReturnType<typeof loadInstallerProject>>;
3
6
  export declare function runInstallerCli(options: {
4
7
  readonly args: readonly string[];
5
8
  readonly cwd: string;
6
9
  readonly version: string;
7
10
  readonly writeOutput: (value: string) => void;
8
- readonly authenticate: () => Promise<void>;
9
- readonly startProduct: (project: LoadedInstallerProject) => Promise<void>;
11
+ readonly authenticate: () => Promise<AuthenticatedClerkSession>;
12
+ readonly bootstrap: (options: {
13
+ readonly product: InstallerProduct;
14
+ readonly cwd: string;
15
+ readonly session: AuthenticatedClerkSession;
16
+ }) => Promise<AcquiredProductArtifact | null>;
17
+ readonly authorizeProduct?: (options: {
18
+ readonly product: InstallerProduct;
19
+ readonly session: AuthenticatedClerkSession;
20
+ }) => Promise<void>;
21
+ readonly showPaywall?: (paywall: InstallerPaywallRequiredError) => Promise<void> | void;
22
+ readonly startProduct: (project: LoadedInstallerProject, acquisition?: {
23
+ readonly sourceArchive?: Buffer;
24
+ }) => Promise<void>;
10
25
  }): Promise<void>;
@@ -1,5 +1,7 @@
1
- import { installerUsage, loadInstallerProject, parseInstallerCommand, } from "./product-manifest.js";
1
+ import { isDirectoryEffectivelyEmpty } from "./empty-directory.js";
2
+ import { isInstallerPaywallRequiredError, } from "./artifact-client.js";
2
3
  import { cliMessages } from "./i18n.js";
4
+ import { installerUsage, loadInstallerProject, parseInstallerCommand, } from "./product-manifest.js";
3
5
  export async function runInstallerCli(options) {
4
6
  const command = parseInstallerCommand(options.args);
5
7
  if (command.kind === "help") {
@@ -10,8 +12,52 @@ export async function runInstallerCli(options) {
10
12
  options.writeOutput(cliMessages.installerVersion(options.version));
11
13
  return;
12
14
  }
15
+ if (await isDirectoryEffectivelyEmpty(options.cwd)) {
16
+ const session = await options.authenticate();
17
+ let acquisition;
18
+ try {
19
+ acquisition = await options.bootstrap({
20
+ product: command.product,
21
+ cwd: options.cwd,
22
+ session,
23
+ });
24
+ }
25
+ catch (error) {
26
+ if (isInstallerPaywallRequiredError(error)) {
27
+ await options.showPaywall?.(error);
28
+ return;
29
+ }
30
+ throw error;
31
+ }
32
+ finally {
33
+ session.dispose();
34
+ }
35
+ if (acquisition === null)
36
+ return;
37
+ const project = await loadInstallerProject(options.cwd, command.product);
38
+ await options.startProduct(project, {
39
+ sourceArchive: acquisition.sourceArchive,
40
+ });
41
+ return;
42
+ }
13
43
  const project = await loadInstallerProject(options.cwd, command.product);
14
- await options.authenticate();
44
+ const session = await options.authenticate();
45
+ try {
46
+ await options.authorizeProduct?.({
47
+ product: command.product,
48
+ session,
49
+ });
50
+ }
51
+ catch (error) {
52
+ if (isInstallerPaywallRequiredError(error)) {
53
+ await options.showPaywall?.(error);
54
+ return;
55
+ }
56
+ throw error;
57
+ }
58
+ finally {
59
+ session.dispose();
60
+ }
15
61
  await options.startProduct(project);
16
62
  }
17
63
  //# sourceMappingURL=cli-command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-command.js","sourceRoot":"","sources":["../src/cli-command.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAMxC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OASrC;IACC,MAAM,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;IAC7B,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"cli-command.js","sourceRoot":"","sources":["../src/cli-command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EACL,+BAA+B,GAEhC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,qBAAqB,GAEtB,MAAM,uBAAuB,CAAC;AAO/B,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAwBrC;IACC,MAAM,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,IAAI,MAAM,2BAA2B,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;QAC7C,IAAI,WAA2C,CAAC;QAChD,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC;gBACpC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,+BAA+B,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;gBACnC,OAAO;YACT,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,CAAC;QACD,IAAI,WAAW,KAAK,IAAI;YAAE,OAAO;QACjC,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACzE,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE;YAClC,aAAa,EAAE,WAAW,CAAC,aAAa;SACzC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;IAC7C,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,+BAA+B,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;YACnC,OAAO;QACT,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;IACD,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC"}