@buildspacestudio/cli 0.2.0 → 0.3.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.
@@ -1,9 +1,12 @@
1
- import { writeFile } from "node:fs/promises";
1
+ import { spawn } from "node:child_process";
2
+ import { access, writeFile } from "node:fs/promises";
3
+ import { homedir } from "node:os";
2
4
  import { join } from "node:path";
3
5
  import { listEnvVars, resolveAppBySlug } from "../lib/api.js";
4
6
  import { hasFlag, readFlag } from "../lib/args.js";
5
7
  import { buildCloneUrl, getGitAuthorizationHeader, resolveStoredAuth } from "../lib/auth.js";
6
8
  import { runGit } from "../lib/git.js";
9
+ import { trackEvent } from "../lib/telemetry.js";
7
10
  const APP_SLUG_PATTERN = /^[a-z0-9-]+$/;
8
11
  function printUsage() {
9
12
  console.log("Usage: buildspace init --app <slug> [--dir <path>]");
@@ -15,6 +18,96 @@ function printUsage() {
15
18
  function validateSlug(slug) {
16
19
  return APP_SLUG_PATTERN.test(slug);
17
20
  }
21
+ async function runCommand(command, args, options) {
22
+ await new Promise((resolve, reject) => {
23
+ const child = spawn(command, args, {
24
+ cwd: options?.cwd,
25
+ env: {
26
+ ...process.env,
27
+ ...options?.env,
28
+ },
29
+ stdio: options?.quiet ? "ignore" : "inherit",
30
+ });
31
+ child.on("error", (error) => {
32
+ reject(error);
33
+ });
34
+ child.on("close", (code) => {
35
+ if (code === 0) {
36
+ resolve();
37
+ return;
38
+ }
39
+ reject(new Error(`Command failed with exit code ${code ?? "unknown"}`));
40
+ });
41
+ });
42
+ }
43
+ async function commandExists(command) {
44
+ try {
45
+ await runCommand(command, ["--version"], { quiet: true });
46
+ return true;
47
+ }
48
+ catch {
49
+ return false;
50
+ }
51
+ }
52
+ async function resolveBunExecutable() {
53
+ if (await commandExists("bun")) {
54
+ return "bun";
55
+ }
56
+ const bunBinary = process.platform === "win32" ? "bun.exe" : "bun";
57
+ const candidates = [
58
+ process.env.BUN_INSTALL ? join(process.env.BUN_INSTALL, "bin", bunBinary) : null,
59
+ join(homedir(), ".bun", "bin", bunBinary),
60
+ ].filter((candidate) => candidate !== null);
61
+ for (const candidate of candidates) {
62
+ try {
63
+ await access(candidate);
64
+ if (await commandExists(candidate)) {
65
+ return candidate;
66
+ }
67
+ }
68
+ catch {
69
+ // Ignore missing candidates and keep searching.
70
+ }
71
+ }
72
+ return null;
73
+ }
74
+ async function ensureBunInstalled() {
75
+ const existingBun = await resolveBunExecutable();
76
+ if (existingBun) {
77
+ return {
78
+ executable: existingBun,
79
+ installedNow: false,
80
+ needsShellRefresh: false,
81
+ };
82
+ }
83
+ console.log("Bun not found. Installing it via bun.sh...");
84
+ try {
85
+ if (process.platform === "win32") {
86
+ await runCommand("powershell", [
87
+ "-NoProfile",
88
+ "-ExecutionPolicy",
89
+ "Bypass",
90
+ "-Command",
91
+ "irm bun.sh/install.ps1|iex",
92
+ ]);
93
+ }
94
+ else {
95
+ await runCommand("sh", ["-c", "curl -fsSL https://bun.sh/install | bash"]);
96
+ }
97
+ }
98
+ catch {
99
+ throw new Error("Failed to install Bun automatically. Install Bun from https://bun.sh, then run `bun install` in the cloned app directory.");
100
+ }
101
+ const installedBun = await resolveBunExecutable();
102
+ if (!installedBun) {
103
+ throw new Error("Bun was installed but is not available in this shell yet. Open a new shell or add Bun to your PATH, then run `bun install` in the cloned app directory.");
104
+ }
105
+ return {
106
+ executable: installedBun,
107
+ installedNow: true,
108
+ needsShellRefresh: installedBun !== "bun",
109
+ };
110
+ }
18
111
  async function diagnoseGitBaseUrl(gitBaseUrl) {
19
112
  try {
20
113
  const response = await fetch(gitBaseUrl, { method: "GET", redirect: "manual" });
@@ -89,8 +182,11 @@ export async function runInitCommand(args) {
89
182
  throw new Error("Failed to clone BuildSpace app repository");
90
183
  }
91
184
  const cloneDir = directory ?? appSlug;
92
- console.log("Clone complete.");
185
+ trackEvent("cli.init.completed");
186
+ console.log("");
187
+ console.log("Setting up your app...");
93
188
  // Auto-pull dev env vars into .env.local
189
+ let pulledEnvVarCount = 0;
94
190
  try {
95
191
  const lookup = await resolveAppBySlug(appSlug, auth);
96
192
  const devEnv = lookup.environments.find((e) => e.type === "dev");
@@ -98,6 +194,7 @@ export async function runInitCommand(args) {
98
194
  const vars = await listEnvVars(lookup.app.id, devEnv.id, auth, { reveal: true });
99
195
  const pullableVars = vars.filter((v) => v.source === "system" || !v.isSecret);
100
196
  if (pullableVars.length > 0) {
197
+ pulledEnvVarCount = pullableVars.length;
101
198
  const lines = [
102
199
  `# BuildSpace env vars — dev — pulled ${new Date().toISOString()}`,
103
200
  "",
@@ -106,12 +203,43 @@ export async function runInitCommand(args) {
106
203
  ];
107
204
  const envFilePath = join(cloneDir, ".env.local");
108
205
  await writeFile(envFilePath, lines.join("\n"), "utf8");
109
- console.log(`Pulled ${pullableVars.length} dev env var(s) to ${envFilePath}`);
110
206
  }
111
207
  }
112
208
  }
113
209
  catch {
114
- console.log("Could not pull env vars automatically. Run 'buildspace env pull' manually.");
210
+ pulledEnvVarCount = -1;
211
+ }
212
+ const bunSetup = await ensureBunInstalled();
213
+ try {
214
+ await runCommand(bunSetup.executable, ["install"], { cwd: cloneDir });
215
+ }
216
+ catch {
217
+ throw new Error(`Failed to install dependencies automatically. Run \`cd ${cloneDir}\` and then \`bun install\`.`);
218
+ }
219
+ console.log("");
220
+ console.log("Done.");
221
+ console.log(`- Cloned into ${cloneDir}`);
222
+ if (pulledEnvVarCount > 0) {
223
+ console.log(`- Pulled ${pulledEnvVarCount} dev env var(s) into ${join(cloneDir, ".env.local")}`);
224
+ }
225
+ else if (pulledEnvVarCount === 0) {
226
+ console.log("- No pullable dev env vars were found");
227
+ }
228
+ else {
229
+ console.log("- Could not pull env vars automatically; run `buildspace env pull` later if needed");
230
+ }
231
+ if (bunSetup.installedNow) {
232
+ console.log("- Installed Bun");
233
+ }
234
+ else {
235
+ console.log("- Found Bun");
236
+ }
237
+ console.log("- Installed project dependencies with `bun install`");
238
+ console.log("");
239
+ console.log("Next:");
240
+ console.log(` cd ${cloneDir}`);
241
+ if (bunSetup.needsShellRefresh) {
242
+ console.log(" open a new shell if `bun` is not available on your PATH yet");
115
243
  }
116
244
  return 0;
117
245
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runTelemetryCommand(args: string[]): Promise<number> | number;
2
+ //# sourceMappingURL=telemetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/commands/telemetry.ts"],"names":[],"mappings":"AAcA,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAqB5E"}
@@ -0,0 +1,57 @@
1
+ import { readConfig, setTelemetryEnabled } from "../lib/config.js";
2
+ function printHelp() {
3
+ console.log("Usage: buildspace telemetry <subcommand>");
4
+ console.log("");
5
+ console.log("Subcommands:");
6
+ console.log(" status Show current telemetry status");
7
+ console.log(" enable Enable anonymous product telemetry");
8
+ console.log(" disable Disable anonymous product telemetry");
9
+ console.log("");
10
+ console.log("Environment:");
11
+ console.log(" Set BUILDSPACE_TELEMETRY=0 to disable telemetry globally.");
12
+ }
13
+ export function runTelemetryCommand(args) {
14
+ const sub = args[0];
15
+ switch (sub) {
16
+ case "status":
17
+ return status();
18
+ case "enable":
19
+ return enable();
20
+ case "disable":
21
+ return disable();
22
+ case "help":
23
+ case "--help":
24
+ case "-h":
25
+ case undefined:
26
+ printHelp();
27
+ return 0;
28
+ default:
29
+ console.error(`Unknown telemetry subcommand: ${sub}`);
30
+ printHelp();
31
+ return 1;
32
+ }
33
+ }
34
+ async function status() {
35
+ const config = await readConfig();
36
+ const telemetry = config.telemetry;
37
+ if (!telemetry) {
38
+ console.log("Telemetry: enabled (default)");
39
+ console.log("No anonymous ID generated yet.");
40
+ return 0;
41
+ }
42
+ console.log(`Telemetry: ${telemetry.enabled ? "enabled" : "disabled"}`);
43
+ console.log(`Anonymous ID: ${telemetry.anonymousId}`);
44
+ console.log(`Updated: ${telemetry.updatedAt}`);
45
+ return 0;
46
+ }
47
+ async function enable() {
48
+ await setTelemetryEnabled(true);
49
+ console.log("Telemetry enabled.");
50
+ return 0;
51
+ }
52
+ async function disable() {
53
+ await setTelemetryEnabled(false);
54
+ console.log("Telemetry disabled. No data will be collected.");
55
+ return 0;
56
+ }
57
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/commands/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEnE,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAc;IAChD,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAEpB,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,QAAQ;YACX,OAAO,MAAM,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,MAAM,EAAE,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,OAAO,EAAE,CAAC;QACnB,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,SAAS;YACZ,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,CAAC;QACX;YACE,OAAO,CAAC,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;YACtD,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED,KAAK,UAAU,MAAM;IACnB,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAEnC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,iBAAiB,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,MAAM;IACnB,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,OAAO;IACpB,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAC9D,OAAO,CAAC,CAAC;AACX,CAAC"}
package/dist/index.js CHANGED
@@ -1,10 +1,19 @@
1
1
  #!/usr/bin/env node
2
+ import packageJson from "../package.json";
2
3
  import { runAppCommand } from "./commands/app.js";
3
4
  import { runAuthCommand } from "./commands/auth.js";
4
5
  import { runConfigCommand } from "./commands/config.js";
5
6
  import { runDeployCommand } from "./commands/deploy.js";
6
7
  import { runEnvCommand } from "./commands/env.js";
7
8
  import { runInitCommand } from "./commands/init.js";
9
+ import { runTelemetryCommand } from "./commands/telemetry.js";
10
+ import { flushTelemetry, trackCommandEnd, trackCommandStart } from "./lib/telemetry.js";
11
+ function isVersionFlag(value) {
12
+ return value === "-v" || value === "--version" || value === "—version";
13
+ }
14
+ function printVersion() {
15
+ console.log(packageJson.version);
16
+ }
8
17
  function printHelp() {
9
18
  console.log("BuildSpace CLI");
10
19
  console.log("");
@@ -17,25 +26,58 @@ function printHelp() {
17
26
  console.log(" init Clone a BuildSpace app repository by slug");
18
27
  console.log(" deploy Deploy app, status, and logs");
19
28
  console.log(" env Manage environment variables for your app");
29
+ console.log(" telemetry Manage anonymous product telemetry");
20
30
  console.log("");
21
31
  console.log("Run `buildspace <command> --help` for command help.");
22
32
  }
23
- function main() {
33
+ function resolveSubcommand(args) {
34
+ for (const arg of args) {
35
+ if (!arg.startsWith("-")) {
36
+ return arg;
37
+ }
38
+ }
39
+ return undefined;
40
+ }
41
+ async function main() {
24
42
  const args = process.argv.slice(2);
25
43
  const command = args[0];
44
+ if (isVersionFlag(command)) {
45
+ printVersion();
46
+ return 0;
47
+ }
48
+ const commandArgs = args.slice(1);
49
+ const subcommand = resolveSubcommand(commandArgs);
50
+ let runner;
51
+ let commandName;
26
52
  switch (command) {
27
53
  case "auth":
28
- return runAuthCommand(args.slice(1));
54
+ commandName = command;
55
+ runner = () => runAuthCommand(commandArgs);
56
+ break;
29
57
  case "app":
30
- return runAppCommand(args.slice(1));
58
+ commandName = command;
59
+ runner = () => runAppCommand(commandArgs);
60
+ break;
31
61
  case "config":
32
- return runConfigCommand(args.slice(1));
62
+ commandName = command;
63
+ runner = () => runConfigCommand(commandArgs);
64
+ break;
33
65
  case "init":
34
- return runInitCommand(args.slice(1));
66
+ commandName = command;
67
+ runner = () => runInitCommand(commandArgs);
68
+ break;
35
69
  case "deploy":
36
- return runDeployCommand(args.slice(1));
70
+ commandName = command;
71
+ runner = () => runDeployCommand(commandArgs);
72
+ break;
37
73
  case "env":
38
- return runEnvCommand(args.slice(1));
74
+ commandName = command;
75
+ runner = () => runEnvCommand(commandArgs);
76
+ break;
77
+ case "telemetry":
78
+ commandName = command;
79
+ runner = () => runTelemetryCommand(commandArgs);
80
+ break;
39
81
  case undefined:
40
82
  case "help":
41
83
  case "--help":
@@ -47,12 +89,37 @@ function main() {
47
89
  printHelp();
48
90
  return 1;
49
91
  }
92
+ const tracker = trackCommandStart(commandName, subcommand);
93
+ try {
94
+ const exitCode = await runner();
95
+ await trackCommandEnd({
96
+ command: commandName,
97
+ startedAt: tracker.startedAt,
98
+ subcommand,
99
+ success: exitCode === 0,
100
+ });
101
+ return exitCode;
102
+ }
103
+ catch (error) {
104
+ const message = error instanceof Error ? error.message : "unknown";
105
+ await trackCommandEnd({
106
+ command: commandName,
107
+ errorCode: message.slice(0, 64),
108
+ startedAt: tracker.startedAt,
109
+ subcommand,
110
+ success: false,
111
+ });
112
+ throw error;
113
+ }
50
114
  }
51
115
  Promise.resolve(main())
52
- .then((exitCode) => {
116
+ .then(async (exitCode) => {
117
+ await flushTelemetry();
53
118
  process.exitCode = exitCode;
54
119
  })
55
- .catch((error) => {
120
+ .catch(async (error) => {
121
+ // biome-ignore lint/suspicious/noEmptyBlockStatements: allow for flushTelemetry to fail silently
122
+ await flushTelemetry().catch(() => { });
56
123
  const message = error instanceof Error ? error.message : "Unexpected CLI failure";
57
124
  console.error(`Error: ${message}`);
58
125
  process.exitCode = 1;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,15 @@
1
+ export interface TelemetryConfig {
2
+ anonymousId: string;
3
+ enabled: boolean;
4
+ updatedAt: string;
5
+ }
1
6
  export interface CliConfig {
2
7
  activeApp?: ActiveAppConfig;
3
8
  apiBaseUrl?: string;
4
9
  gitBaseUrl?: string;
5
10
  host?: string;
6
11
  pat?: string;
12
+ telemetry?: TelemetryConfig;
7
13
  updatedAt?: string;
8
14
  }
9
15
  export interface ActiveAppConfig {
@@ -20,4 +26,6 @@ export declare function resolveGitBaseUrl(config: CliConfig): string;
20
26
  export declare function readConfig(): Promise<CliConfig>;
21
27
  export declare function writeConfig(config: CliConfig): Promise<void>;
22
28
  export declare function maskToken(value: string): string;
29
+ export declare function getTelemetryConfig(): Promise<TelemetryConfig>;
30
+ export declare function setTelemetryEnabled(enabled: boolean): Promise<void>;
23
31
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAoBD,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAMD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAM3D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAU3D;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC,CAkBrD;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAIlE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM/C"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAoBD,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAMD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAM3D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAU3D;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC,CAkBrD;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAIlE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM/C;AAUD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC,CAcnE;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAWzE"}
@@ -1,6 +1,6 @@
1
1
  import { mkdir, readFile, writeFile } from "node:fs/promises";
2
2
  import { dirname, join } from "node:path";
3
- const DEFAULT_API_BASE_URL = "https://buildspace.studio";
3
+ const DEFAULT_API_BASE_URL = "https://creator.buildspace.studio";
4
4
  const DEFAULT_GIT_BASE_URL = "https://api.buildspace.studio";
5
5
  const TRAILING_SLASH_REGEX = /\/+$/;
6
6
  function getConfigDirectory() {
@@ -69,4 +69,34 @@ export function maskToken(value) {
69
69
  }
70
70
  return `${value.slice(0, 8)}...${value.slice(-4)}`;
71
71
  }
72
+ function generateAnonymousId() {
73
+ const bytes = new Uint8Array(16);
74
+ crypto.getRandomValues(bytes);
75
+ return Array.from(bytes)
76
+ .map((b) => b.toString(16).padStart(2, "0"))
77
+ .join("");
78
+ }
79
+ export async function getTelemetryConfig() {
80
+ const config = await readConfig();
81
+ if (config.telemetry) {
82
+ return config.telemetry;
83
+ }
84
+ const telemetry = {
85
+ anonymousId: generateAnonymousId(),
86
+ enabled: true,
87
+ updatedAt: new Date().toISOString(),
88
+ };
89
+ await writeConfig({ ...config, telemetry });
90
+ return telemetry;
91
+ }
92
+ export async function setTelemetryEnabled(enabled) {
93
+ const config = await readConfig();
94
+ const existing = config.telemetry;
95
+ config.telemetry = {
96
+ anonymousId: existing?.anonymousId ?? generateAnonymousId(),
97
+ enabled,
98
+ updatedAt: new Date().toISOString(),
99
+ };
100
+ await writeConfig(config);
101
+ }
72
102
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ type CliEventName = "cli.app.created" | "cli.app.selected" | "cli.auth.login.completed" | "cli.auth.login.started" | "cli.command.completed" | "cli.command.failed" | "cli.deploy.completed" | "cli.deploy.started" | "cli.env.pull" | "cli.env.set" | "cli.init.completed" | "cli.started";
2
+ interface TelemetryEventProperties {
3
+ authMethod?: "pat" | "pkce";
4
+ command?: string;
5
+ envTarget?: "dev" | "prod";
6
+ errorCode?: string;
7
+ latencyBucket?: string;
8
+ platform?: string;
9
+ runtime?: string;
10
+ subcommand?: string;
11
+ success?: boolean;
12
+ version?: string;
13
+ }
14
+ interface TelemetryEvent {
15
+ event: CliEventName;
16
+ occurredAt: string;
17
+ properties: TelemetryEventProperties;
18
+ }
19
+ declare function computeLatencyBucket(ms: number): string;
20
+ export declare function trackEvent(event: CliEventName, properties?: Omit<TelemetryEventProperties, "platform" | "runtime" | "version">): Promise<void>;
21
+ export declare function trackCommandStart(command: string, subcommand?: string): {
22
+ startedAt: number;
23
+ };
24
+ export declare function trackCommandEnd({ command, errorCode, startedAt, subcommand, success, }: {
25
+ command: string;
26
+ errorCode?: string;
27
+ startedAt: number;
28
+ subcommand?: string;
29
+ success: boolean;
30
+ }): Promise<void>;
31
+ export declare function flushTelemetry(): Promise<void>;
32
+ export { type CliEventName, computeLatencyBucket, type TelemetryEvent };
33
+ //# sourceMappingURL=telemetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/lib/telemetry.ts"],"names":[],"mappings":"AAMA,KAAK,YAAY,GACb,iBAAiB,GACjB,kBAAkB,GAClB,0BAA0B,GAC1B,wBAAwB,GACxB,uBAAuB,GACvB,oBAAoB,GACpB,sBAAsB,GACtB,oBAAoB,GACpB,cAAc,GACd,aAAa,GACb,oBAAoB,GACpB,aAAa,CAAC;AAElB,UAAU,wBAAwB;IAChC,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,cAAc;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,wBAAwB,CAAC;CACtC;AA6BD,iBAAS,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAiBhD;AAyCD,wBAAgB,UAAU,CACxB,KAAK,EAAE,YAAY,EACnB,UAAU,CAAC,EAAE,IAAI,CAAC,wBAAwB,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC,GAC9E,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAM7F;AAED,wBAAsB,eAAe,CAAC,EACpC,OAAO,EACP,SAAS,EACT,SAAS,EACT,UAAU,EACV,OAAO,GACR,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAWhB;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAiDpD;AAED,OAAO,EAAE,KAAK,YAAY,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,CAAC"}