@base44-preview/cli 0.0.17-pr.111.518a0e3 → 0.0.17-pr.19.1b258d9

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/bin/dev.cmd ADDED
@@ -0,0 +1,2 @@
1
+ @echo off
2
+ npx tsx "%~dp0\dev.js" %*
package/bin/run.cmd ADDED
@@ -0,0 +1,2 @@
1
+ @echo off
2
+ node "%~dp0\run.js" %*
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ import { EventEmitter, addAbortListener, on, once, setMaxListeners } from "node:
3
3
  import childProcess, { ChildProcess, execFile, spawn, spawnSync } from "node:child_process";
4
4
  import path, { basename, dirname, join, posix, resolve, win32 } from "node:path";
5
5
  import fs, { appendFileSync, createReadStream, createWriteStream, readFileSync, statSync, writeFileSync } from "node:fs";
6
- import process$1, { execArgv, execPath, hrtime, platform, stdin, stdout } from "node:process";
6
+ import y, { execArgv, execPath, hrtime, platform, stdin, stdout } from "node:process";
7
7
  import { aborted, callbackify, debuglog, inspect, promisify, stripVTControlCharacters } from "node:util";
8
8
  import * as g from "node:readline";
9
9
  import O from "node:readline";
@@ -893,7 +893,7 @@ var require_command = /* @__PURE__ */ __commonJSMin(((exports) => {
893
893
  const childProcess$1 = __require("node:child_process");
894
894
  const path$15 = __require("node:path");
895
895
  const fs$10 = __require("node:fs");
896
- const process$4 = __require("node:process");
896
+ const process$3 = __require("node:process");
897
897
  const { Argument, humanReadableArgName } = require_argument();
898
898
  const { CommanderError } = require_error$1();
899
899
  const { Help } = require_help();
@@ -944,10 +944,10 @@ var require_command = /* @__PURE__ */ __commonJSMin(((exports) => {
944
944
  this._showHelpAfterError = false;
945
945
  this._showSuggestionAfterError = true;
946
946
  this._outputConfiguration = {
947
- writeOut: (str) => process$4.stdout.write(str),
948
- writeErr: (str) => process$4.stderr.write(str),
949
- getOutHelpWidth: () => process$4.stdout.isTTY ? process$4.stdout.columns : void 0,
950
- getErrHelpWidth: () => process$4.stderr.isTTY ? process$4.stderr.columns : void 0,
947
+ writeOut: (str) => process$3.stdout.write(str),
948
+ writeErr: (str) => process$3.stderr.write(str),
949
+ getOutHelpWidth: () => process$3.stdout.isTTY ? process$3.stdout.columns : void 0,
950
+ getErrHelpWidth: () => process$3.stderr.isTTY ? process$3.stderr.columns : void 0,
951
951
  outputError: (str, write) => write(str)
952
952
  };
953
953
  this._hidden = false;
@@ -1301,7 +1301,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
1301
1301
  */
1302
1302
  _exit(exitCode, code$1, message) {
1303
1303
  if (this._exitCallback) this._exitCallback(new CommanderError(exitCode, code$1, message));
1304
- process$4.exit(exitCode);
1304
+ process$3.exit(exitCode);
1305
1305
  }
1306
1306
  /**
1307
1307
  * Register callback `fn` for the command.
@@ -1640,11 +1640,11 @@ Expecting one of '${allowedValues.join("', '")}'`);
1640
1640
  if (argv !== void 0 && !Array.isArray(argv)) throw new Error("first parameter to parse must be array or undefined");
1641
1641
  parseOptions = parseOptions || {};
1642
1642
  if (argv === void 0 && parseOptions.from === void 0) {
1643
- if (process$4.versions?.electron) parseOptions.from = "electron";
1644
- const execArgv$1 = process$4.execArgv ?? [];
1643
+ if (process$3.versions?.electron) parseOptions.from = "electron";
1644
+ const execArgv$1 = process$3.execArgv ?? [];
1645
1645
  if (execArgv$1.includes("-e") || execArgv$1.includes("--eval") || execArgv$1.includes("-p") || execArgv$1.includes("--print")) parseOptions.from = "eval";
1646
1646
  }
1647
- if (argv === void 0) argv = process$4.argv;
1647
+ if (argv === void 0) argv = process$3.argv;
1648
1648
  this.rawArgs = argv.slice();
1649
1649
  let userArgs;
1650
1650
  switch (parseOptions.from) {
@@ -1654,7 +1654,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
1654
1654
  userArgs = argv.slice(2);
1655
1655
  break;
1656
1656
  case "electron":
1657
- if (process$4.defaultApp) {
1657
+ if (process$3.defaultApp) {
1658
1658
  this._scriptPath = argv[1];
1659
1659
  userArgs = argv.slice(2);
1660
1660
  } else userArgs = argv.slice(1);
@@ -1768,15 +1768,15 @@ Expecting one of '${allowedValues.join("', '")}'`);
1768
1768
  }
1769
1769
  launchWithNode = sourceExt.includes(path$15.extname(executableFile));
1770
1770
  let proc$1;
1771
- if (process$4.platform !== "win32") if (launchWithNode) {
1771
+ if (process$3.platform !== "win32") if (launchWithNode) {
1772
1772
  args.unshift(executableFile);
1773
- args = incrementNodeInspectorPort(process$4.execArgv).concat(args);
1774
- proc$1 = childProcess$1.spawn(process$4.argv[0], args, { stdio: "inherit" });
1773
+ args = incrementNodeInspectorPort(process$3.execArgv).concat(args);
1774
+ proc$1 = childProcess$1.spawn(process$3.argv[0], args, { stdio: "inherit" });
1775
1775
  } else proc$1 = childProcess$1.spawn(executableFile, args, { stdio: "inherit" });
1776
1776
  else {
1777
1777
  args.unshift(executableFile);
1778
- args = incrementNodeInspectorPort(process$4.execArgv).concat(args);
1779
- proc$1 = childProcess$1.spawn(process$4.execPath, args, { stdio: "inherit" });
1778
+ args = incrementNodeInspectorPort(process$3.execArgv).concat(args);
1779
+ proc$1 = childProcess$1.spawn(process$3.execPath, args, { stdio: "inherit" });
1780
1780
  }
1781
1781
  if (!proc$1.killed) [
1782
1782
  "SIGUSR1",
@@ -1785,14 +1785,14 @@ Expecting one of '${allowedValues.join("', '")}'`);
1785
1785
  "SIGINT",
1786
1786
  "SIGHUP"
1787
1787
  ].forEach((signal) => {
1788
- process$4.on(signal, () => {
1788
+ process$3.on(signal, () => {
1789
1789
  if (proc$1.killed === false && proc$1.exitCode === null) proc$1.kill(signal);
1790
1790
  });
1791
1791
  });
1792
1792
  const exitCallback = this._exitCallback;
1793
1793
  proc$1.on("close", (code$1) => {
1794
1794
  code$1 = code$1 ?? 1;
1795
- if (!exitCallback) process$4.exit(code$1);
1795
+ if (!exitCallback) process$3.exit(code$1);
1796
1796
  else exitCallback(new CommanderError(code$1, "commander.executeSubCommandAsync", "(close)"));
1797
1797
  });
1798
1798
  proc$1.on("error", (err) => {
@@ -1804,7 +1804,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
1804
1804
  - ${executableDirMessage}`;
1805
1805
  throw new Error(executableMissing);
1806
1806
  } else if (err.code === "EACCES") throw new Error(`'${executableFile}' not executable`);
1807
- if (!exitCallback) process$4.exit(1);
1807
+ if (!exitCallback) process$3.exit(1);
1808
1808
  else {
1809
1809
  const wrappedError = new CommanderError(1, "commander.executeSubCommandAsync", "(error)");
1810
1810
  wrappedError.nestedError = err;
@@ -2210,13 +2210,13 @@ Expecting one of '${allowedValues.join("', '")}'`);
2210
2210
  */
2211
2211
  _parseOptionsEnv() {
2212
2212
  this.options.forEach((option) => {
2213
- if (option.envVar && option.envVar in process$4.env) {
2213
+ if (option.envVar && option.envVar in process$3.env) {
2214
2214
  const optionKey = option.attributeName();
2215
2215
  if (this.getOptionValue(optionKey) === void 0 || [
2216
2216
  "default",
2217
2217
  "config",
2218
2218
  "env"
2219
- ].includes(this.getOptionValueSource(optionKey))) if (option.required || option.optional) this.emit(`optionEnv:${option.name()}`, process$4.env[option.envVar]);
2219
+ ].includes(this.getOptionValueSource(optionKey))) if (option.required || option.optional) this.emit(`optionEnv:${option.name()}`, process$3.env[option.envVar]);
2220
2220
  else this.emit(`optionEnv:${option.name()}`);
2221
2221
  }
2222
2222
  });
@@ -2595,7 +2595,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
2595
2595
  */
2596
2596
  help(contextOptions) {
2597
2597
  this.outputHelp(contextOptions);
2598
- let exitCode = process$4.exitCode || 0;
2598
+ let exitCode = process$3.exitCode || 0;
2599
2599
  if (exitCode === 0 && contextOptions && typeof contextOptions !== "function" && contextOptions.error) exitCode = 1;
2600
2600
  this._exit(exitCode, "commander.help", "(outputHelp)");
2601
2601
  }
@@ -2711,16 +2711,16 @@ var require_src = /* @__PURE__ */ __commonJSMin(((exports, module) => {
2711
2711
  const CSI = `${ESC}[`;
2712
2712
  const beep = "\x07";
2713
2713
  const cursor = {
2714
- to(x$2, y$1) {
2715
- if (!y$1) return `${CSI}${x$2 + 1}G`;
2716
- return `${CSI}${y$1 + 1};${x$2 + 1}H`;
2714
+ to(x$2, y$2) {
2715
+ if (!y$2) return `${CSI}${x$2 + 1}G`;
2716
+ return `${CSI}${y$2 + 1};${x$2 + 1}H`;
2717
2717
  },
2718
- move(x$2, y$1) {
2718
+ move(x$2, y$2) {
2719
2719
  let ret = "";
2720
2720
  if (x$2 < 0) ret += `${CSI}${-x$2}D`;
2721
2721
  else if (x$2 > 0) ret += `${CSI}${x$2}C`;
2722
- if (y$1 < 0) ret += `${CSI}${-y$1}A`;
2723
- else if (y$1 > 0) ret += `${CSI}${y$1}B`;
2722
+ if (y$2 < 0) ret += `${CSI}${-y$2}A`;
2723
+ else if (y$2 > 0) ret += `${CSI}${y$2}B`;
2724
2724
  return ret;
2725
2725
  },
2726
2726
  up: (count$1 = 1) => `${CSI}${count$1}A`,
@@ -3030,13 +3030,13 @@ function rD() {
3030
3030
  }
3031
3031
  }), r;
3032
3032
  }
3033
- const ED = rD(), d$1 = new Set(["\x1B", "›"]), oD = 39, y = "\x07", V$1 = "[", nD = "]", G$1 = "m", _$1 = `${nD}8;;`, z = (e$1) => `${d$1.values().next().value}${V$1}${e$1}${G$1}`, K$1 = (e$1) => `${d$1.values().next().value}${_$1}${e$1}${y}`, aD = (e$1) => e$1.split(" ").map((u$2) => p(u$2)), k$1 = (e$1, u$2, t) => {
3033
+ const ED = rD(), d$1 = new Set(["\x1B", "›"]), oD = 39, y$1 = "\x07", V$1 = "[", nD = "]", G$1 = "m", _$1 = `${nD}8;;`, z = (e$1) => `${d$1.values().next().value}${V$1}${e$1}${G$1}`, K$1 = (e$1) => `${d$1.values().next().value}${_$1}${e$1}${y$1}`, aD = (e$1) => e$1.split(" ").map((u$2) => p(u$2)), k$1 = (e$1, u$2, t) => {
3034
3034
  const F$1 = [...u$2];
3035
3035
  let s = !1, i$1 = !1, D$1 = p(P$1(e$1[e$1.length - 1]));
3036
3036
  for (const [C$1, n$1] of F$1.entries()) {
3037
3037
  const E = p(n$1);
3038
3038
  if (D$1 + E <= t ? e$1[e$1.length - 1] += n$1 : (e$1.push(n$1), D$1 = 0), d$1.has(n$1) && (s = !0, i$1 = F$1.slice(C$1 + 1).join("").startsWith(_$1)), s) {
3039
- i$1 ? n$1 === y && (s = !1, i$1 = !1) : n$1 === G$1 && (s = !1);
3039
+ i$1 ? n$1 === y$1 && (s = !1, i$1 = !1) : n$1 === G$1 && (s = !1);
3040
3040
  continue;
3041
3041
  }
3042
3042
  D$1 += E, D$1 === t && C$1 < F$1.length - 1 && (e$1.push(""), D$1 = 0);
@@ -3078,7 +3078,7 @@ const ED = rD(), d$1 = new Set(["\x1B", "›"]), oD = 39, y = "\x07", V$1 = "[",
3078
3078
  `)];
3079
3079
  for (const [E, a$1] of n$1.entries()) {
3080
3080
  if (F$1 += a$1, d$1.has(a$1)) {
3081
- const { groups: c$1 } = (/* @__PURE__ */ new RegExp(`(?:\\${V$1}(?<code>\\d+)m|\\${_$1}(?<uri>.*)${y})`)).exec(n$1.slice(E).join("")) || { groups: {} };
3081
+ const { groups: c$1 } = (/* @__PURE__ */ new RegExp(`(?:\\${V$1}(?<code>\\d+)m|\\${_$1}(?<uri>.*)${y$1})`)).exec(n$1.slice(E).join("")) || { groups: {} };
3082
3082
  if (c$1.code !== void 0) {
3083
3083
  const f = Number.parseFloat(c$1.code);
3084
3084
  s = f === oD ? void 0 : f;
@@ -3479,7 +3479,7 @@ var RD = class extends x$1 {
3479
3479
  //#endregion
3480
3480
  //#region node_modules/@clack/prompts/dist/index.mjs
3481
3481
  function ce() {
3482
- return process$1.platform !== "win32" ? process$1.env.TERM !== "linux" : !!process$1.env.CI || !!process$1.env.WT_SESSION || !!process$1.env.TERMINUS_SUBLIME || process$1.env.ConEmuTask === "{cmd::Cmder}" || process$1.env.TERM_PROGRAM === "Terminus-Sublime" || process$1.env.TERM_PROGRAM === "vscode" || process$1.env.TERM === "xterm-256color" || process$1.env.TERM === "alacritty" || process$1.env.TERMINAL_EMULATOR === "JetBrains-JediTerm";
3482
+ return y.platform !== "win32" ? y.env.TERM !== "linux" : !!y.env.CI || !!y.env.WT_SESSION || !!y.env.TERMINUS_SUBLIME || y.env.ConEmuTask === "{cmd::Cmder}" || y.env.TERM_PROGRAM === "Terminus-Sublime" || y.env.TERM_PROGRAM === "vscode" || y.env.TERM === "xterm-256color" || y.env.TERM === "alacritty" || y.env.TERMINAL_EMULATOR === "JetBrains-JediTerm";
3483
3483
  }
3484
3484
  const V = ce(), u$1 = (t, n$1) => V ? t : n$1, le = u$1("◆", "*"), L = u$1("■", "x"), W = u$1("▲", "x"), C = u$1("◇", "o"), ue = u$1("┌", "T"), o$1 = u$1("│", "|"), d = u$1("└", "—"), k = u$1("●", ">"), P = u$1("○", " "), A = u$1("◻", "[•]"), T = u$1("◼", "[+]"), F = u$1("◻", "[ ]"), $e = u$1("▪", "•"), _ = u$1("─", "-"), me = u$1("╮", "+"), de = u$1("├", "+"), pe = u$1("╯", "+"), q = u$1("●", "•"), D = u$1("◆", "*"), U = u$1("▲", "!"), K = u$1("■", "x"), b = (t) => {
3485
3485
  switch (t) {
@@ -6653,7 +6653,7 @@ function initializeContext(params) {
6653
6653
  external: params?.external ?? void 0
6654
6654
  };
6655
6655
  }
6656
- function process$3(schema, ctx, _params = {
6656
+ function process$2(schema, ctx, _params = {
6657
6657
  path: [],
6658
6658
  schemaPath: []
6659
6659
  }) {
@@ -6690,7 +6690,7 @@ function process$3(schema, ctx, _params = {
6690
6690
  const parent = schema._zod.parent;
6691
6691
  if (parent) {
6692
6692
  if (!result.ref) result.ref = parent;
6693
- process$3(parent, ctx, params);
6693
+ process$2(parent, ctx, params);
6694
6694
  ctx.seen.get(parent).isParent = true;
6695
6695
  }
6696
6696
  }
@@ -6902,7 +6902,7 @@ const createToJSONSchemaMethod = (schema, processors = {}) => (params) => {
6902
6902
  ...params,
6903
6903
  processors
6904
6904
  });
6905
- process$3(schema, ctx);
6905
+ process$2(schema, ctx);
6906
6906
  extractDefs(ctx, schema);
6907
6907
  return finalize(ctx, schema);
6908
6908
  };
@@ -6914,7 +6914,7 @@ const createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params)
6914
6914
  io,
6915
6915
  processors
6916
6916
  });
6917
- process$3(schema, ctx);
6917
+ process$2(schema, ctx);
6918
6918
  extractDefs(ctx, schema);
6919
6919
  return finalize(ctx, schema);
6920
6920
  };
@@ -7001,7 +7001,7 @@ const arrayProcessor = (schema, ctx, _json, params) => {
7001
7001
  if (typeof minimum === "number") json.minItems = minimum;
7002
7002
  if (typeof maximum === "number") json.maxItems = maximum;
7003
7003
  json.type = "array";
7004
- json.items = process$3(def.element, ctx, {
7004
+ json.items = process$2(def.element, ctx, {
7005
7005
  ...params,
7006
7006
  path: [...params.path, "items"]
7007
7007
  });
@@ -7012,7 +7012,7 @@ const objectProcessor = (schema, ctx, _json, params) => {
7012
7012
  json.type = "object";
7013
7013
  json.properties = {};
7014
7014
  const shape = def.shape;
7015
- for (const key in shape) json.properties[key] = process$3(shape[key], ctx, {
7015
+ for (const key in shape) json.properties[key] = process$2(shape[key], ctx, {
7016
7016
  ...params,
7017
7017
  path: [
7018
7018
  ...params.path,
@@ -7030,7 +7030,7 @@ const objectProcessor = (schema, ctx, _json, params) => {
7030
7030
  if (def.catchall?._zod.def.type === "never") json.additionalProperties = false;
7031
7031
  else if (!def.catchall) {
7032
7032
  if (ctx.io === "output") json.additionalProperties = false;
7033
- } else if (def.catchall) json.additionalProperties = process$3(def.catchall, ctx, {
7033
+ } else if (def.catchall) json.additionalProperties = process$2(def.catchall, ctx, {
7034
7034
  ...params,
7035
7035
  path: [...params.path, "additionalProperties"]
7036
7036
  });
@@ -7038,7 +7038,7 @@ const objectProcessor = (schema, ctx, _json, params) => {
7038
7038
  const unionProcessor = (schema, ctx, json, params) => {
7039
7039
  const def = schema._zod.def;
7040
7040
  const isExclusive = def.inclusive === false;
7041
- const options = def.options.map((x$2, i$1) => process$3(x$2, ctx, {
7041
+ const options = def.options.map((x$2, i$1) => process$2(x$2, ctx, {
7042
7042
  ...params,
7043
7043
  path: [
7044
7044
  ...params.path,
@@ -7051,7 +7051,7 @@ const unionProcessor = (schema, ctx, json, params) => {
7051
7051
  };
7052
7052
  const intersectionProcessor = (schema, ctx, json, params) => {
7053
7053
  const def = schema._zod.def;
7054
- const a$1 = process$3(def.left, ctx, {
7054
+ const a$1 = process$2(def.left, ctx, {
7055
7055
  ...params,
7056
7056
  path: [
7057
7057
  ...params.path,
@@ -7059,7 +7059,7 @@ const intersectionProcessor = (schema, ctx, json, params) => {
7059
7059
  0
7060
7060
  ]
7061
7061
  });
7062
- const b$2 = process$3(def.right, ctx, {
7062
+ const b$2 = process$2(def.right, ctx, {
7063
7063
  ...params,
7064
7064
  path: [
7065
7065
  ...params.path,
@@ -7076,7 +7076,7 @@ const tupleProcessor = (schema, ctx, _json, params) => {
7076
7076
  json.type = "array";
7077
7077
  const prefixPath$1 = ctx.target === "draft-2020-12" ? "prefixItems" : "items";
7078
7078
  const restPath = ctx.target === "draft-2020-12" ? "items" : ctx.target === "openapi-3.0" ? "items" : "additionalItems";
7079
- const prefixItems = def.items.map((x$2, i$1) => process$3(x$2, ctx, {
7079
+ const prefixItems = def.items.map((x$2, i$1) => process$2(x$2, ctx, {
7080
7080
  ...params,
7081
7081
  path: [
7082
7082
  ...params.path,
@@ -7084,7 +7084,7 @@ const tupleProcessor = (schema, ctx, _json, params) => {
7084
7084
  i$1
7085
7085
  ]
7086
7086
  }));
7087
- const rest = def.rest ? process$3(def.rest, ctx, {
7087
+ const rest = def.rest ? process$2(def.rest, ctx, {
7088
7088
  ...params,
7089
7089
  path: [
7090
7090
  ...params.path,
@@ -7110,7 +7110,7 @@ const tupleProcessor = (schema, ctx, _json, params) => {
7110
7110
  };
7111
7111
  const nullableProcessor = (schema, ctx, json, params) => {
7112
7112
  const def = schema._zod.def;
7113
- const inner = process$3(def.innerType, ctx, params);
7113
+ const inner = process$2(def.innerType, ctx, params);
7114
7114
  const seen = ctx.seen.get(schema);
7115
7115
  if (ctx.target === "openapi-3.0") {
7116
7116
  seen.ref = def.innerType;
@@ -7119,27 +7119,27 @@ const nullableProcessor = (schema, ctx, json, params) => {
7119
7119
  };
7120
7120
  const nonoptionalProcessor = (schema, ctx, _json, params) => {
7121
7121
  const def = schema._zod.def;
7122
- process$3(def.innerType, ctx, params);
7122
+ process$2(def.innerType, ctx, params);
7123
7123
  const seen = ctx.seen.get(schema);
7124
7124
  seen.ref = def.innerType;
7125
7125
  };
7126
7126
  const defaultProcessor = (schema, ctx, json, params) => {
7127
7127
  const def = schema._zod.def;
7128
- process$3(def.innerType, ctx, params);
7128
+ process$2(def.innerType, ctx, params);
7129
7129
  const seen = ctx.seen.get(schema);
7130
7130
  seen.ref = def.innerType;
7131
7131
  json.default = JSON.parse(JSON.stringify(def.defaultValue));
7132
7132
  };
7133
7133
  const prefaultProcessor = (schema, ctx, json, params) => {
7134
7134
  const def = schema._zod.def;
7135
- process$3(def.innerType, ctx, params);
7135
+ process$2(def.innerType, ctx, params);
7136
7136
  const seen = ctx.seen.get(schema);
7137
7137
  seen.ref = def.innerType;
7138
7138
  if (ctx.io === "input") json._prefault = JSON.parse(JSON.stringify(def.defaultValue));
7139
7139
  };
7140
7140
  const catchProcessor = (schema, ctx, json, params) => {
7141
7141
  const def = schema._zod.def;
7142
- process$3(def.innerType, ctx, params);
7142
+ process$2(def.innerType, ctx, params);
7143
7143
  const seen = ctx.seen.get(schema);
7144
7144
  seen.ref = def.innerType;
7145
7145
  let catchValue;
@@ -7153,20 +7153,20 @@ const catchProcessor = (schema, ctx, json, params) => {
7153
7153
  const pipeProcessor = (schema, ctx, _json, params) => {
7154
7154
  const def = schema._zod.def;
7155
7155
  const innerType = ctx.io === "input" ? def.in._zod.def.type === "transform" ? def.out : def.in : def.out;
7156
- process$3(innerType, ctx, params);
7156
+ process$2(innerType, ctx, params);
7157
7157
  const seen = ctx.seen.get(schema);
7158
7158
  seen.ref = innerType;
7159
7159
  };
7160
7160
  const readonlyProcessor = (schema, ctx, json, params) => {
7161
7161
  const def = schema._zod.def;
7162
- process$3(def.innerType, ctx, params);
7162
+ process$2(def.innerType, ctx, params);
7163
7163
  const seen = ctx.seen.get(schema);
7164
7164
  seen.ref = def.innerType;
7165
7165
  json.readOnly = true;
7166
7166
  };
7167
7167
  const optionalProcessor = (schema, ctx, _json, params) => {
7168
7168
  const def = schema._zod.def;
7169
- process$3(def.innerType, ctx, params);
7169
+ process$2(def.innerType, ctx, params);
7170
7170
  const seen = ctx.seen.get(schema);
7171
7171
  seen.ref = def.innerType;
7172
7172
  };
@@ -16192,7 +16192,7 @@ const createIgnorePredicate = (patterns, cwd, baseDir) => {
16192
16192
  };
16193
16193
  const normalizeOptions$2 = (options = {}) => {
16194
16194
  const ignoreOption = options.ignore ? Array.isArray(options.ignore) ? options.ignore : [options.ignore] : [];
16195
- const cwd = toPath$1(options.cwd) ?? process$1.cwd();
16195
+ const cwd = toPath$1(options.cwd) ?? y.cwd();
16196
16196
  const deep = typeof options.deep === "number" ? Math.max(0, options.deep) + 1 : Number.POSITIVE_INFINITY;
16197
16197
  return {
16198
16198
  cwd,
@@ -16289,7 +16289,7 @@ const getDirectoryGlob = ({ directoryPath, files, extensions }) => {
16289
16289
  const extensionGlob = extensions?.length > 0 ? `.${extensions.length > 1 ? `{${extensions.join(",")}}` : extensions[0]}` : "";
16290
16290
  return files ? files.map((file) => path.posix.join(directoryPath, `**/${path.extname(file) ? file : `${file}${extensionGlob}`}`)) : [path.posix.join(directoryPath, `**${extensionGlob ? `/*${extensionGlob}` : ""}`)];
16291
16291
  };
16292
- const directoryToGlob = async (directoryPaths, { cwd = process$1.cwd(), files, extensions, fs: fsImplementation } = {}) => {
16292
+ const directoryToGlob = async (directoryPaths, { cwd = y.cwd(), files, extensions, fs: fsImplementation } = {}) => {
16293
16293
  return (await Promise.all(directoryPaths.map(async (directoryPath) => {
16294
16294
  if (shouldExpandGlobstarDirectory(isNegativePattern(directoryPath) ? directoryPath.slice(1) : directoryPath)) return getDirectoryGlob({
16295
16295
  directoryPath,
@@ -16303,7 +16303,7 @@ const directoryToGlob = async (directoryPaths, { cwd = process$1.cwd(), files, e
16303
16303
  }) : directoryPath;
16304
16304
  }))).flat();
16305
16305
  };
16306
- const directoryToGlobSync = (directoryPaths, { cwd = process$1.cwd(), files, extensions, fs: fsImplementation } = {}) => directoryPaths.flatMap((directoryPath) => {
16306
+ const directoryToGlobSync = (directoryPaths, { cwd = y.cwd(), files, extensions, fs: fsImplementation } = {}) => directoryPaths.flatMap((directoryPath) => {
16307
16307
  if (shouldExpandGlobstarDirectory(isNegativePattern(directoryPath) ? directoryPath.slice(1) : directoryPath)) return getDirectoryGlob({
16308
16308
  directoryPath,
16309
16309
  files,
@@ -16399,7 +16399,7 @@ const applyIgnoreFilesAndGetFilterSync = (options) => {
16399
16399
  };
16400
16400
  const createFilterFunction = (isIgnored, cwd) => {
16401
16401
  const seen = /* @__PURE__ */ new Set();
16402
- const basePath = cwd || process$1.cwd();
16402
+ const basePath = cwd || y.cwd();
16403
16403
  const pathCache = /* @__PURE__ */ new Map();
16404
16404
  return (fastGlobResult) => {
16405
16405
  const pathKey$1 = path.normalize(fastGlobResult.path ?? fastGlobResult);
@@ -30402,11 +30402,31 @@ async function deployAll(projectData) {
30402
30402
  //#region src/core/project/app-config.ts
30403
30403
  let cache = null;
30404
30404
  /**
30405
+ * Load app config from BASE44_CLI_TEST_OVERRIDES env var.
30406
+ * @returns true if override was applied, false otherwise
30407
+ */
30408
+ function loadFromTestOverrides() {
30409
+ const overrides = process.env.BASE44_CLI_TEST_OVERRIDES;
30410
+ if (!overrides) return false;
30411
+ try {
30412
+ const data = JSON.parse(overrides);
30413
+ if (data.appConfig?.id && data.appConfig?.projectRoot) {
30414
+ cache = {
30415
+ id: data.appConfig.id,
30416
+ projectRoot: data.appConfig.projectRoot
30417
+ };
30418
+ return true;
30419
+ }
30420
+ } catch {}
30421
+ return false;
30422
+ }
30423
+ /**
30405
30424
  * Initialize app config by reading from .app.jsonc.
30406
30425
  * Must be called before using getAppConfig().
30407
30426
  * @throws Error if no project found or .app.jsonc missing
30408
30427
  */
30409
30428
  async function initAppConfig() {
30429
+ if (loadFromTestOverrides()) return;
30410
30430
  if (cache) return;
30411
30431
  const projectRoot = await findProjectRoot();
30412
30432
  if (!projectRoot) throw new Error("No Base44 project found. Run this command from a project directory with a config.jsonc file.");
@@ -30768,13 +30788,13 @@ var ansi_styles_default = ansiStyles;
30768
30788
 
30769
30789
  //#endregion
30770
30790
  //#region node_modules/chalk/source/vendor/supports-color/index.js
30771
- function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process$1.argv) {
30791
+ function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : y.argv) {
30772
30792
  const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
30773
30793
  const position = argv.indexOf(prefix + flag);
30774
30794
  const terminatorPosition = argv.indexOf("--");
30775
30795
  return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
30776
30796
  }
30777
- const { env } = process$1;
30797
+ const { env } = y;
30778
30798
  let flagForceColor;
30779
30799
  if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) flagForceColor = 0;
30780
30800
  else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) flagForceColor = 1;
@@ -30807,7 +30827,7 @@ function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
30807
30827
  if (haveStream && !streamIsTTY && forceColor === void 0) return 0;
30808
30828
  const min = forceColor || 0;
30809
30829
  if (env.TERM === "dumb") return min;
30810
- if (process$1.platform === "win32") {
30830
+ if (y.platform === "win32") {
30811
30831
  const osRelease = os.release().split(".");
30812
30832
  if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) return Number(osRelease[2]) >= 14931 ? 3 : 2;
30813
30833
  return 1;
@@ -31336,7 +31356,8 @@ const logoutCommand = new Command("logout").description("Logout from current dev
31336
31356
  async function pushEntitiesAction() {
31337
31357
  const { entities } = await readProjectConfig();
31338
31358
  if (entities.length === 0) return { outroMessage: "No entities found in project" };
31339
- M.info(`Found ${entities.length} entities to push`);
31359
+ const entityNames = entities.map((e$1) => e$1.name).join(", ");
31360
+ M.info(`Found ${entities.length} entities to push: ${entityNames}`);
31340
31361
  const result = await runTask("Pushing entities to Base44", async () => {
31341
31362
  return await pushEntities(entities);
31342
31363
  }, {
@@ -31546,9 +31567,9 @@ const getSubprocessResult = ({ stdout: stdout$1 }) => {
31546
31567
  //#region node_modules/execa/lib/utils/standard-stream.js
31547
31568
  const isStandardStream = (stream) => STANDARD_STREAMS.includes(stream);
31548
31569
  const STANDARD_STREAMS = [
31549
- process$1.stdin,
31550
- process$1.stdout,
31551
- process$1.stderr
31570
+ y.stdin,
31571
+ y.stdout,
31572
+ y.stderr
31552
31573
  ];
31553
31574
  const STANDARD_STREAMS_ALIASES = [
31554
31575
  "stdin",
@@ -31673,9 +31694,9 @@ const NO_ESCAPE_REGEXP = /^[\w./-]+$/;
31673
31694
  //#endregion
31674
31695
  //#region node_modules/is-unicode-supported/index.js
31675
31696
  function isUnicodeSupported() {
31676
- const { env: env$1 } = process$1;
31697
+ const { env: env$1 } = y;
31677
31698
  const { TERM, TERM_PROGRAM } = env$1;
31678
- if (process$1.platform !== "win32") return TERM !== "linux";
31699
+ if (y.platform !== "win32") return TERM !== "linux";
31679
31700
  return Boolean(env$1.WT_SESSION) || Boolean(env$1.TERMINUS_SUBLIME) || env$1.ConEmuTask === "{cmd::Cmder}" || TERM_PROGRAM === "Terminus-Sublime" || TERM_PROGRAM === "vscode" || TERM === "xterm-256color" || TERM === "alacritty" || TERM === "rxvt-unicode" || TERM === "rxvt-unicode-256color" || env$1.TERMINAL_EMULATOR === "JetBrains-JediTerm";
31680
31701
  }
31681
31702
 
@@ -32602,7 +32623,7 @@ const TEN_MEGABYTES_IN_BYTES = 10 * 1024 * 1024;
32602
32623
 
32603
32624
  //#endregion
32604
32625
  //#region node_modules/npm-run-path/index.js
32605
- const npmRunPath = ({ cwd = process$1.cwd(), path: pathOption = process$1.env[pathKey()], preferLocal = true, execPath: execPath$1 = process$1.execPath, addExecPath = true } = {}) => {
32626
+ const npmRunPath = ({ cwd = y.cwd(), path: pathOption = y.env[pathKey()], preferLocal = true, execPath: execPath$1 = y.execPath, addExecPath = true } = {}) => {
32606
32627
  const cwdPath = path.resolve(toPath(cwd));
32607
32628
  const result = [];
32608
32629
  const pathParts = pathOption.split(path.delimiter);
@@ -32620,7 +32641,7 @@ const applyExecPath = (result, pathParts, execPath$1, cwdPath) => {
32620
32641
  const pathPart = path.resolve(cwdPath, toPath(execPath$1), "..");
32621
32642
  if (!pathParts.includes(pathPart)) result.push(pathPart);
32622
32643
  };
32623
- const npmRunPathEnv = ({ env: env$1 = process$1.env, ...options } = {}) => {
32644
+ const npmRunPathEnv = ({ env: env$1 = y.env, ...options } = {}) => {
32624
32645
  env$1 = { ...env$1 };
32625
32646
  const pathName = pathKey({ env: env$1 });
32626
32647
  options.path = env$1[pathName];
@@ -33755,7 +33776,7 @@ const normalizeCwd = (cwd = getDefaultCwd()) => {
33755
33776
  };
33756
33777
  const getDefaultCwd = () => {
33757
33778
  try {
33758
- return process$1.cwd();
33779
+ return y.cwd();
33759
33780
  } catch (error) {
33760
33781
  error.message = `The current directory does not exist.\n${error.message}`;
33761
33782
  throw error;
@@ -33790,7 +33811,7 @@ const normalizeOptions = (filePath, rawArguments, rawOptions) => {
33790
33811
  options.killSignal = normalizeKillSignal(options.killSignal);
33791
33812
  options.forceKillAfterDelay = normalizeForceKillAfterDelay(options.forceKillAfterDelay);
33792
33813
  options.lines = options.lines.map((lines, fdNumber) => lines && !BINARY_ENCODINGS.has(options.encoding) && options.buffer[fdNumber]);
33793
- if (process$1.platform === "win32" && path.basename(file, ".exe") === "cmd") commandArguments.unshift("/q");
33814
+ if (y.platform === "win32" && path.basename(file, ".exe") === "cmd") commandArguments.unshift("/q");
33794
33815
  return {
33795
33816
  file,
33796
33817
  commandArguments,
@@ -33817,7 +33838,7 @@ const addDefaultOptions = ({ extendEnv = true, preferLocal = false, cwd, localDi
33817
33838
  });
33818
33839
  const getEnv = ({ env: envOption, extendEnv, preferLocal, node, localDirectory, nodePath }) => {
33819
33840
  const env$1 = extendEnv ? {
33820
- ...process$1.env,
33841
+ ...y.env,
33821
33842
  ...envOption
33822
33843
  } : envOption;
33823
33844
  if (preferLocal || node) return npmRunPathEnv({
@@ -34817,12 +34838,12 @@ const guessStreamDirection = {
34817
34838
  }
34818
34839
  };
34819
34840
  const getStandardStreamDirection = (value) => {
34820
- if ([0, process$1.stdin].includes(value)) return "input";
34841
+ if ([0, y.stdin].includes(value)) return "input";
34821
34842
  if ([
34822
34843
  1,
34823
34844
  2,
34824
- process$1.stdout,
34825
- process$1.stderr
34845
+ y.stdout,
34846
+ y.stderr
34826
34847
  ].includes(value)) return "output";
34827
34848
  };
34828
34849
  const DEFAULT_DIRECTION = "output";
@@ -35886,9 +35907,9 @@ const addIpcMethods = (subprocess, { ipc }) => {
35886
35907
  Object.assign(subprocess, getIpcMethods(subprocess, false, ipc));
35887
35908
  };
35888
35909
  const getIpcExport = () => {
35889
- const anyProcess = process$1;
35910
+ const anyProcess = y;
35890
35911
  const isSubprocess = true;
35891
- const ipc = process$1.channel !== void 0;
35912
+ const ipc = y.channel !== void 0;
35892
35913
  return {
35893
35914
  ...getIpcMethods(anyProcess, isSubprocess, ipc),
35894
35915
  getCancelSignal: getCancelSignal$1.bind(void 0, {
@@ -36130,7 +36151,7 @@ if (process.platform === "linux") signals.push("SIGIO", "SIGPOLL", "SIGPWR", "SI
36130
36151
 
36131
36152
  //#endregion
36132
36153
  //#region node_modules/signal-exit/dist/mjs/index.js
36133
- const processOk = (process$5) => !!process$5 && typeof process$5 === "object" && typeof process$5.removeListener === "function" && typeof process$5.emit === "function" && typeof process$5.reallyExit === "function" && typeof process$5.listeners === "function" && typeof process$5.kill === "function" && typeof process$5.pid === "number" && typeof process$5.on === "function";
36154
+ const processOk = (process$4) => !!process$4 && typeof process$4 === "object" && typeof process$4.removeListener === "function" && typeof process$4.emit === "function" && typeof process$4.reallyExit === "function" && typeof process$4.listeners === "function" && typeof process$4.kill === "function" && typeof process$4.pid === "number" && typeof process$4.on === "function";
36134
36155
  const kExitEmitter = Symbol.for("signal-exit emitter");
36135
36156
  const global$1 = globalThis;
36136
36157
  const ObjectDefineProperty = Object.defineProperty.bind(Object);
@@ -36198,7 +36219,7 @@ var SignalExitFallback = class extends SignalExitBase {
36198
36219
  };
36199
36220
  var SignalExit = class extends SignalExitBase {
36200
36221
  /* c8 ignore start */
36201
- #hupSig = process$2.platform === "win32" ? "SIGINT" : "SIGHUP";
36222
+ #hupSig = process$1.platform === "win32" ? "SIGINT" : "SIGHUP";
36202
36223
  /* c8 ignore stop */
36203
36224
  #emitter = new Emitter();
36204
36225
  #process;
@@ -36206,15 +36227,15 @@ var SignalExit = class extends SignalExitBase {
36206
36227
  #originalProcessReallyExit;
36207
36228
  #sigListeners = {};
36208
36229
  #loaded = false;
36209
- constructor(process$5) {
36230
+ constructor(process$4) {
36210
36231
  super();
36211
- this.#process = process$5;
36232
+ this.#process = process$4;
36212
36233
  this.#sigListeners = {};
36213
36234
  for (const sig of signals) this.#sigListeners[sig] = () => {
36214
36235
  const listeners = this.#process.listeners(sig);
36215
36236
  let { count: count$1 } = this.#emitter;
36216
36237
  /* c8 ignore start */
36217
- const p$1 = process$5;
36238
+ const p$1 = process$4;
36218
36239
  if (typeof p$1.__signal_exit_emitter__ === "object" && typeof p$1.__signal_exit_emitter__.count === "number") count$1 += p$1.__signal_exit_emitter__.count;
36219
36240
  /* c8 ignore stop */
36220
36241
  if (listeners.length === count$1) {
@@ -36222,11 +36243,11 @@ var SignalExit = class extends SignalExitBase {
36222
36243
  const ret = this.#emitter.emit("exit", null, sig);
36223
36244
  /* c8 ignore start */
36224
36245
  const s = sig === "SIGHUP" ? this.#hupSig : sig;
36225
- if (!ret) process$5.kill(process$5.pid, s);
36246
+ if (!ret) process$4.kill(process$4.pid, s);
36226
36247
  }
36227
36248
  };
36228
- this.#originalProcessReallyExit = process$5.reallyExit;
36229
- this.#originalProcessEmit = process$5.emit;
36249
+ this.#originalProcessReallyExit = process$4.reallyExit;
36250
+ this.#originalProcessEmit = process$4.emit;
36230
36251
  }
36231
36252
  onExit(cb, opts) {
36232
36253
  /* c8 ignore start */
@@ -36293,8 +36314,8 @@ var SignalExit = class extends SignalExitBase {
36293
36314
  } else return og.call(this.#process, ev, ...args);
36294
36315
  }
36295
36316
  };
36296
- const process$2 = globalThis.process;
36297
- const { onExit, load, unload } = signalExitWrap(processOk(process$2) ? new SignalExit(process$2) : new SignalExitFallback());
36317
+ const process$1 = globalThis.process;
36318
+ const { onExit, load, unload } = signalExitWrap(processOk(process$1) ? new SignalExit(process$1) : new SignalExitFallback());
36298
36319
 
36299
36320
  //#endregion
36300
36321
  //#region node_modules/execa/lib/terminate/cleanup.js
@@ -38045,7 +38066,13 @@ var require_lodash = /* @__PURE__ */ __commonJSMin(((exports, module) => {
38045
38066
  //#region src/cli/commands/project/create.ts
38046
38067
  var import_lodash = /* @__PURE__ */ __toESM(require_lodash(), 1);
38047
38068
  const DEFAULT_TEMPLATE_ID = "backend-only";
38048
- const SUPPORTED_AGENTS = ["cursor", "claude-code"];
38069
+ const SUPPORTED_AGENTS = [{
38070
+ value: "cursor",
38071
+ label: "Cursor"
38072
+ }, {
38073
+ value: "claude-code",
38074
+ label: "Claude Code"
38075
+ }];
38049
38076
  async function getTemplateById(templateId) {
38050
38077
  const templates = await listTemplates();
38051
38078
  const template = templates.find((t) => t.id === templateId);
@@ -38183,15 +38210,20 @@ async function executeCreate({ template, name: rawName, description, projectPath
38183
38210
  finalAppUrl = appUrl;
38184
38211
  }
38185
38212
  }
38186
- let shouldAddSkills = false;
38213
+ let selectedAgents = [];
38187
38214
  if (isInteractive) {
38188
- const result = await ye({ message: "Add AI agent skills?" });
38189
- shouldAddSkills = !pD(result) && result;
38190
- } else shouldAddSkills = !!skills;
38191
- if (shouldAddSkills) {
38192
- const agentArgs = SUPPORTED_AGENTS.flatMap((agent) => ["-a", agent]);
38193
- M.step(`Installing skills for: ${SUPPORTED_AGENTS.join(", ")}`);
38194
- await runTask(`Installing skills for: ${SUPPORTED_AGENTS.join(", ")}`, async () => {
38215
+ const result = await fe({
38216
+ message: "Add AI agent skills? (Select agents to configure)",
38217
+ options: SUPPORTED_AGENTS,
38218
+ initialValues: SUPPORTED_AGENTS.map((agent) => agent.value),
38219
+ required: false
38220
+ });
38221
+ if (!pD(result)) selectedAgents = result;
38222
+ } else if (skills) selectedAgents = SUPPORTED_AGENTS.map((agent) => agent.value);
38223
+ if (selectedAgents.length > 0) {
38224
+ const agentArgs = selectedAgents.flatMap((agent) => ["-a", agent]);
38225
+ M.step(`Installing skills for: ${selectedAgents.join(", ")}`);
38226
+ await runTask(`Installing skills for: ${selectedAgents.join(", ")}`, async () => {
38195
38227
  await execa("npx", [
38196
38228
  "-y",
38197
38229
  "add-skill",
@@ -38216,7 +38248,7 @@ async function executeCreate({ template, name: rawName, description, projectPath
38216
38248
  if (finalAppUrl) M.message(`${theme.styles.header("Site")}: ${theme.colors.links(finalAppUrl)}`);
38217
38249
  return { outroMessage: "Your project is set up and ready to use" };
38218
38250
  }
38219
- const createCommand = new Command("create").description("Create a new Base44 project").option("-n, --name <name>", "Project name").option("-d, --description <description>", "Project description").option("-p, --path <path>", "Path where to create the project").option("-t, --template <id>", "Template ID (e.g., backend-only, backend-and-client)").option("--deploy", "Build and deploy the site").option("--skills", "Add AI agent skills").hook("preAction", validateNonInteractiveFlags$1).action(async (options) => {
38251
+ const createCommand = new Command("create").description("Create a new Base44 project").option("-n, --name <name>", "Project name").option("-d, --description <description>", "Project description").option("-p, --path <path>", "Path where to create the project").option("-t, --template <id>", "Template ID (e.g., backend-only, backend-and-client)").option("--deploy", "Build and deploy the site").option("--skills", "Add AI agent skills (Cursor, Claude Code)").hook("preAction", validateNonInteractiveFlags$1).action(async (options) => {
38220
38252
  await chooseCreate(options);
38221
38253
  });
38222
38254
 
@@ -38262,7 +38294,7 @@ function isInsideContainer() {
38262
38294
  //#endregion
38263
38295
  //#region node_modules/is-wsl/index.js
38264
38296
  const isWsl = () => {
38265
- if (process$1.platform !== "linux") return false;
38297
+ if (y.platform !== "linux") return false;
38266
38298
  if (os.release().toLowerCase().includes("microsoft")) {
38267
38299
  if (isInsideContainer()) return false;
38268
38300
  return true;
@@ -38273,12 +38305,12 @@ const isWsl = () => {
38273
38305
  return false;
38274
38306
  }
38275
38307
  };
38276
- var is_wsl_default = process$1.env.__IS_WSL_TEST__ ? isWsl : isWsl();
38308
+ var is_wsl_default = y.env.__IS_WSL_TEST__ ? isWsl : isWsl();
38277
38309
 
38278
38310
  //#endregion
38279
38311
  //#region node_modules/powershell-utils/index.js
38280
38312
  const execFile$2 = promisify(childProcess.execFile);
38281
- const powerShellPath$1 = () => `${process$1.env.SYSTEMROOT || process$1.env.windir || String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`;
38313
+ const powerShellPath$1 = () => `${y.env.SYSTEMROOT || y.env.windir || String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`;
38282
38314
  const executePowerShell = async (command, options = {}) => {
38283
38315
  const { powerShellPath: psPath, ...execFileOptions } = options;
38284
38316
  const encodedCommand = executePowerShell.encodeCommand(command);
@@ -38389,7 +38421,7 @@ function defineLazyProperty(object$1, propertyName, valueGetter) {
38389
38421
  //#region node_modules/default-browser-id/index.js
38390
38422
  const execFileAsync$3 = promisify(execFile);
38391
38423
  async function defaultBrowserId() {
38392
- if (process$1.platform !== "darwin") throw new Error("macOS only");
38424
+ if (y.platform !== "darwin") throw new Error("macOS only");
38393
38425
  const { stdout: stdout$1 } = await execFileAsync$3("defaults", [
38394
38426
  "read",
38395
38427
  "com.apple.LaunchServices/com.apple.launchservices.secure",
@@ -38404,7 +38436,7 @@ async function defaultBrowserId() {
38404
38436
  //#region node_modules/run-applescript/index.js
38405
38437
  const execFileAsync$2 = promisify(execFile);
38406
38438
  async function runAppleScript(script, { humanReadableOutput = true, signal } = {}) {
38407
- if (process$1.platform !== "darwin") throw new Error("macOS only");
38439
+ if (y.platform !== "darwin") throw new Error("macOS only");
38408
38440
  const outputArguments = humanReadableOutput ? [] : ["-ss"];
38409
38441
  const execOptions = {};
38410
38442
  if (signal) execOptions.signal = signal;
@@ -38513,14 +38545,14 @@ async function defaultBrowser$1(_execFileAsync = execFileAsync$1) {
38513
38545
  const execFileAsync = promisify(execFile);
38514
38546
  const titleize = (string$2) => string$2.toLowerCase().replaceAll(/(?:^|\s|-)\S/g, (x$2) => x$2.toUpperCase());
38515
38547
  async function defaultBrowser() {
38516
- if (process$1.platform === "darwin") {
38548
+ if (y.platform === "darwin") {
38517
38549
  const id = await defaultBrowserId();
38518
38550
  return {
38519
38551
  name: await bundleName(id),
38520
38552
  id
38521
38553
  };
38522
38554
  }
38523
- if (process$1.platform === "linux") {
38555
+ if (y.platform === "linux") {
38524
38556
  const { stdout: stdout$1 } = await execFileAsync("xdg-mime", [
38525
38557
  "query",
38526
38558
  "default",
@@ -38532,13 +38564,13 @@ async function defaultBrowser() {
38532
38564
  id
38533
38565
  };
38534
38566
  }
38535
- if (process$1.platform === "win32") return defaultBrowser$1();
38567
+ if (y.platform === "win32") return defaultBrowser$1();
38536
38568
  throw new Error("Only macOS, Linux, and Windows are supported");
38537
38569
  }
38538
38570
 
38539
38571
  //#endregion
38540
38572
  //#region node_modules/is-in-ssh/index.js
38541
- const isInSsh = Boolean(process$1.env.SSH_CONNECTION || process$1.env.SSH_CLIENT || process$1.env.SSH_TTY);
38573
+ const isInSsh = Boolean(y.env.SSH_CONNECTION || y.env.SSH_CLIENT || y.env.SSH_TTY);
38542
38574
  var is_in_ssh_default = isInSsh;
38543
38575
 
38544
38576
  //#endregion
@@ -38546,7 +38578,7 @@ var is_in_ssh_default = isInSsh;
38546
38578
  const fallbackAttemptSymbol = Symbol("fallbackAttempt");
38547
38579
  const __dirname = import.meta.url ? path.dirname(fileURLToPath(import.meta.url)) : "";
38548
38580
  const localXdgOpenPath = path.join(__dirname, "xdg-open");
38549
- const { platform: platform$1, arch } = process$1;
38581
+ const { platform: platform$1, arch } = y;
38550
38582
  const tryEachApp = async (apps$1, opener) => {
38551
38583
  if (apps$1.length === 0) return;
38552
38584
  const errors = [];
@@ -38659,7 +38691,7 @@ const baseOpen = async (options) => {
38659
38691
  await fs$1.access(localXdgOpenPath, constants$1.X_OK);
38660
38692
  exeLocalXdgOpen = true;
38661
38693
  } catch {}
38662
- command = process$1.versions.electron ?? (platform$1 === "android" || isBundled || !exeLocalXdgOpen) ? "xdg-open" : localXdgOpenPath;
38694
+ command = y.versions.electron ?? (platform$1 === "android" || isBundled || !exeLocalXdgOpen) ? "xdg-open" : localXdgOpenPath;
38663
38695
  }
38664
38696
  if (appArguments.length > 0) cliArguments.push(...appArguments);
38665
38697
  if (!options.wait) {
@@ -38763,7 +38795,7 @@ var open_default = open;
38763
38795
  //#region src/cli/commands/project/dashboard.ts
38764
38796
  async function openDashboard() {
38765
38797
  const dashboardUrl = getDashboardUrl();
38766
- await open_default(dashboardUrl);
38798
+ if (!process.env.CI) await open_default(dashboardUrl);
38767
38799
  return { outroMessage: `Dashboard opened at ${dashboardUrl}` };
38768
38800
  }
38769
38801
  const dashboardCommand = new Command("dashboard").description("Open the app dashboard in your browser").action(async () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@base44-preview/cli",
3
- "version": "0.0.17-pr.111.518a0e3",
3
+ "version": "0.0.17-pr.19.1b258d9",
4
4
  "description": "Base44 CLI - Unified interface for managing Base44 applications",
5
5
  "type": "module",
6
6
  "bin": {
@@ -16,7 +16,7 @@
16
16
  "dev": "./bin/dev.js",
17
17
  "start": "./bin/run.js",
18
18
  "clean": "rm -rf dist",
19
- "lint": "eslint src",
19
+ "lint": "eslint src tests",
20
20
  "test": "vitest run",
21
21
  "test:watch": "vitest"
22
22
  },
@@ -52,9 +52,12 @@
52
52
  "json5": "^2.2.3",
53
53
  "ky": "^1.14.2",
54
54
  "lodash.kebabcase": "^4.1.1",
55
+ "msw": "^2.12.7",
55
56
  "open": "^11.0.0",
56
57
  "p-wait-for": "^6.0.0",
58
+ "strip-ansi": "^7.1.2",
57
59
  "tar": "^7.5.4",
60
+ "tmp-promise": "^3.0.3",
58
61
  "tsdown": "^0.12.4",
59
62
  "tsx": "^4.19.2",
60
63
  "typescript": "^5.7.2",