spawnpack 0.1.12 → 0.1.14

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/dist/spawnpack.js CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env bun
2
+ // @bun
2
3
  var __create = Object.create;
3
4
  var __getProtoOf = Object.getPrototypeOf;
4
5
  var __defProp = Object.defineProperty;
@@ -159,6 +160,76 @@ var require_picocolors = __commonJS((exports, module) => {
159
160
  module.exports.createColors = createColors;
160
161
  });
161
162
 
163
+ // node_modules/picocolors/picocolors.js
164
+ var require_picocolors2 = __commonJS((exports, module) => {
165
+ var p2 = process || {};
166
+ var argv = p2.argv || [];
167
+ var env = p2.env || {};
168
+ var isColorSupported = !(!!env.NO_COLOR || argv.includes("--no-color")) && (!!env.FORCE_COLOR || argv.includes("--color") || p2.platform === "win32" || (p2.stdout || {}).isTTY && env.TERM !== "dumb" || !!env.CI);
169
+ var formatter = (open, close, replace = open) => (input) => {
170
+ let string = "" + input, index = string.indexOf(close, open.length);
171
+ return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close;
172
+ };
173
+ var replaceClose = (string, close, replace, index) => {
174
+ let result = "", cursor = 0;
175
+ do {
176
+ result += string.substring(cursor, index) + replace;
177
+ cursor = index + close.length;
178
+ index = string.indexOf(close, cursor);
179
+ } while (~index);
180
+ return result + string.substring(cursor);
181
+ };
182
+ var createColors = (enabled = isColorSupported) => {
183
+ let f = enabled ? formatter : () => String;
184
+ return {
185
+ isColorSupported: enabled,
186
+ reset: f("\x1B[0m", "\x1B[0m"),
187
+ bold: f("\x1B[1m", "\x1B[22m", "\x1B[22m\x1B[1m"),
188
+ dim: f("\x1B[2m", "\x1B[22m", "\x1B[22m\x1B[2m"),
189
+ italic: f("\x1B[3m", "\x1B[23m"),
190
+ underline: f("\x1B[4m", "\x1B[24m"),
191
+ inverse: f("\x1B[7m", "\x1B[27m"),
192
+ hidden: f("\x1B[8m", "\x1B[28m"),
193
+ strikethrough: f("\x1B[9m", "\x1B[29m"),
194
+ black: f("\x1B[30m", "\x1B[39m"),
195
+ red: f("\x1B[31m", "\x1B[39m"),
196
+ green: f("\x1B[32m", "\x1B[39m"),
197
+ yellow: f("\x1B[33m", "\x1B[39m"),
198
+ blue: f("\x1B[34m", "\x1B[39m"),
199
+ magenta: f("\x1B[35m", "\x1B[39m"),
200
+ cyan: f("\x1B[36m", "\x1B[39m"),
201
+ white: f("\x1B[37m", "\x1B[39m"),
202
+ gray: f("\x1B[90m", "\x1B[39m"),
203
+ bgBlack: f("\x1B[40m", "\x1B[49m"),
204
+ bgRed: f("\x1B[41m", "\x1B[49m"),
205
+ bgGreen: f("\x1B[42m", "\x1B[49m"),
206
+ bgYellow: f("\x1B[43m", "\x1B[49m"),
207
+ bgBlue: f("\x1B[44m", "\x1B[49m"),
208
+ bgMagenta: f("\x1B[45m", "\x1B[49m"),
209
+ bgCyan: f("\x1B[46m", "\x1B[49m"),
210
+ bgWhite: f("\x1B[47m", "\x1B[49m"),
211
+ blackBright: f("\x1B[90m", "\x1B[39m"),
212
+ redBright: f("\x1B[91m", "\x1B[39m"),
213
+ greenBright: f("\x1B[92m", "\x1B[39m"),
214
+ yellowBright: f("\x1B[93m", "\x1B[39m"),
215
+ blueBright: f("\x1B[94m", "\x1B[39m"),
216
+ magentaBright: f("\x1B[95m", "\x1B[39m"),
217
+ cyanBright: f("\x1B[96m", "\x1B[39m"),
218
+ whiteBright: f("\x1B[97m", "\x1B[39m"),
219
+ bgBlackBright: f("\x1B[100m", "\x1B[49m"),
220
+ bgRedBright: f("\x1B[101m", "\x1B[49m"),
221
+ bgGreenBright: f("\x1B[102m", "\x1B[49m"),
222
+ bgYellowBright: f("\x1B[103m", "\x1B[49m"),
223
+ bgBlueBright: f("\x1B[104m", "\x1B[49m"),
224
+ bgMagentaBright: f("\x1B[105m", "\x1B[49m"),
225
+ bgCyanBright: f("\x1B[106m", "\x1B[49m"),
226
+ bgWhiteBright: f("\x1B[107m", "\x1B[49m")
227
+ };
228
+ };
229
+ module.exports = createColors();
230
+ module.exports.createColors = createColors;
231
+ });
232
+
162
233
  // node_modules/@clack/core/dist/index.mjs
163
234
  import { styleText as y } from "node:util";
164
235
  import { stdout as S, stdin as $ } from "node:process";
@@ -1203,133 +1274,6 @@ var he = w2("●", "•");
1203
1274
  var pe = w2("◆", "*");
1204
1275
  var me = w2("▲", "!");
1205
1276
  var ge = w2("■", "x");
1206
- var V2 = (e) => {
1207
- switch (e) {
1208
- case "initial":
1209
- case "active":
1210
- return t("cyan", _e);
1211
- case "cancel":
1212
- return t("red", oe);
1213
- case "error":
1214
- return t("yellow", ue);
1215
- case "submit":
1216
- return t("green", F2);
1217
- }
1218
- };
1219
- var ye = (e) => {
1220
- switch (e) {
1221
- case "initial":
1222
- case "active":
1223
- return t("cyan", d2);
1224
- case "cancel":
1225
- return t("red", d2);
1226
- case "error":
1227
- return t("yellow", d2);
1228
- case "submit":
1229
- return t("green", d2);
1230
- }
1231
- };
1232
- var et2 = (e, i, s, r, u2) => {
1233
- let n = i, o = 0;
1234
- for (let c2 = s;c2 < r; c2++) {
1235
- const a = e[c2];
1236
- if (n = n - a.length, o++, n <= u2)
1237
- break;
1238
- }
1239
- return { lineCount: n, removals: o };
1240
- };
1241
- var Y2 = ({ cursor: e, options: i, style: s, output: r = process.stdout, maxItems: u2 = Number.POSITIVE_INFINITY, columnPadding: n = 0, rowPadding: o = 4 }) => {
1242
- const c2 = O(r) - n, a = A(r), l = t("dim", "..."), $2 = Math.max(a - o, 0), y2 = Math.max(Math.min(u2, $2), 5);
1243
- let p2 = 0;
1244
- e >= y2 - 3 && (p2 = Math.max(Math.min(e - y2 + 3, i.length - y2), 0));
1245
- let m = y2 < i.length && p2 > 0, g = y2 < i.length && p2 + y2 < i.length;
1246
- const S2 = Math.min(p2 + y2, i.length), h = [];
1247
- let f = 0;
1248
- m && f++, g && f++;
1249
- const v = p2 + (m ? 1 : 0), T2 = S2 - (g ? 1 : 0);
1250
- for (let b = v;b < T2; b++) {
1251
- const x = wrapAnsi(s(i[b], b === e), c2, { hard: true, trim: false }).split(`
1252
- `);
1253
- h.push(x), f += x.length;
1254
- }
1255
- if (f > $2) {
1256
- let b = 0, x = 0, G2 = f;
1257
- const M2 = e - v, R2 = (j2, D2) => et2(h, G2, j2, D2, $2);
1258
- m ? ({ lineCount: G2, removals: b } = R2(0, M2), G2 > $2 && ({ lineCount: G2, removals: x } = R2(M2 + 1, h.length))) : ({ lineCount: G2, removals: x } = R2(M2 + 1, h.length), G2 > $2 && ({ lineCount: G2, removals: b } = R2(0, M2))), b > 0 && (m = true, h.splice(0, b)), x > 0 && (g = true, h.splice(h.length - x, x));
1259
- }
1260
- const C2 = [];
1261
- m && C2.push(l);
1262
- for (const b of h)
1263
- for (const x of b)
1264
- C2.push(x);
1265
- return g && C2.push(l), C2;
1266
- };
1267
- var ot2 = (e) => {
1268
- const i = e.active ?? "Yes", s = e.inactive ?? "No";
1269
- return new Q({ active: i, inactive: s, signal: e.signal, input: e.input, output: e.output, initialValue: e.initialValue ?? true, render() {
1270
- const r = e.withGuide ?? u.withGuide, u2 = `${V2(this.state)} `, n = r ? `${t("gray", d2)} ` : "", o = R(e.output, e.message, n, u2), c2 = `${r ? `${t("gray", d2)}
1271
- ` : ""}${o}
1272
- `, a = this.value ? i : s;
1273
- switch (this.state) {
1274
- case "submit": {
1275
- const l = r ? `${t("gray", d2)} ` : "";
1276
- return `${c2}${l}${t("dim", a)}`;
1277
- }
1278
- case "cancel": {
1279
- const l = r ? `${t("gray", d2)} ` : "";
1280
- return `${c2}${l}${t(["strikethrough", "dim"], a)}${r ? `
1281
- ${t("gray", d2)}` : ""}`;
1282
- }
1283
- default: {
1284
- const l = r ? `${t("cyan", d2)} ` : "", $2 = r ? t("cyan", E2) : "";
1285
- return `${c2}${l}${this.value ? `${t("green", z2)} ${i}` : `${t("dim", H2)} ${t("dim", i)}`}${e.vertical ? r ? `
1286
- ${t("cyan", d2)} ` : `
1287
- ` : ` ${t("dim", "/")} `}${this.value ? `${t("dim", H2)} ${t("dim", s)}` : `${t("green", z2)} ${s}`}
1288
- ${$2}
1289
- `;
1290
- }
1291
- }
1292
- } }).prompt();
1293
- };
1294
- var O2 = { message: (e = [], { symbol: i = t("gray", d2), secondarySymbol: s = t("gray", d2), output: r = process.stdout, spacing: u2 = 1, withGuide: n } = {}) => {
1295
- const o = [], c2 = n ?? u.withGuide, a = c2 ? s : "", l = c2 ? `${i} ` : "", $2 = c2 ? `${s} ` : "";
1296
- for (let p2 = 0;p2 < u2; p2++)
1297
- o.push(a);
1298
- const y2 = Array.isArray(e) ? e : e.split(`
1299
- `);
1300
- if (y2.length > 0) {
1301
- const [p2, ...m] = y2;
1302
- p2.length > 0 ? o.push(`${l}${p2}`) : o.push(c2 ? i : "");
1303
- for (const g of m)
1304
- g.length > 0 ? o.push(`${$2}${g}`) : o.push(c2 ? s : "");
1305
- }
1306
- r.write(`${o.join(`
1307
- `)}
1308
- `);
1309
- }, info: (e, i) => {
1310
- O2.message(e, { ...i, symbol: t("blue", he) });
1311
- }, success: (e, i) => {
1312
- O2.message(e, { ...i, symbol: t("green", pe) });
1313
- }, step: (e, i) => {
1314
- O2.message(e, { ...i, symbol: t("green", F2) });
1315
- }, warn: (e, i) => {
1316
- O2.message(e, { ...i, symbol: t("yellow", me) });
1317
- }, warning: (e, i) => {
1318
- O2.warn(e, i);
1319
- }, error: (e, i) => {
1320
- O2.message(e, { ...i, symbol: t("red", ge) });
1321
- } };
1322
- var pt = (e = "", i) => {
1323
- const s = i?.output ?? process.stdout, r = i?.withGuide ?? u.withGuide ? `${t("gray", E2)} ` : "";
1324
- s.write(`${r}${t("red", e)}
1325
-
1326
- `);
1327
- };
1328
- var mt = (e = "", i) => {
1329
- const s = i?.output ?? process.stdout, r = i?.withGuide ?? u.withGuide ? `${t("gray", le)} ` : "";
1330
- s.write(`${r}${e}
1331
- `);
1332
- };
1333
1277
  var gt = (e = "", i) => {
1334
1278
  const s = i?.output ?? process.stdout, r = i?.withGuide ?? u.withGuide ? `${t("gray", d2)}
1335
1279
  ${t("gray", E2)} ` : "";
@@ -1337,62 +1281,6 @@ ${t("gray", E2)} ` : "";
1337
1281
 
1338
1282
  `);
1339
1283
  };
1340
- var Q2 = (e, i) => e.split(`
1341
- `).map((s) => i(s)).join(`
1342
- `);
1343
- var yt = (e) => {
1344
- const i = (r, u2) => {
1345
- const n = r.label ?? String(r.value);
1346
- return u2 === "disabled" ? `${t("gray", J2)} ${Q2(n, (o) => t(["strikethrough", "gray"], o))}${r.hint ? ` ${t("dim", `(${r.hint ?? "disabled"})`)}` : ""}` : u2 === "active" ? `${t("cyan", te)} ${n}${r.hint ? ` ${t("dim", `(${r.hint})`)}` : ""}` : u2 === "selected" ? `${t("green", U)} ${Q2(n, (o) => t("dim", o))}${r.hint ? ` ${t("dim", `(${r.hint})`)}` : ""}` : u2 === "cancelled" ? `${Q2(n, (o) => t(["strikethrough", "dim"], o))}` : u2 === "active-selected" ? `${t("green", U)} ${n}${r.hint ? ` ${t("dim", `(${r.hint})`)}` : ""}` : u2 === "submitted" ? `${Q2(n, (o) => t("dim", o))}` : `${t("dim", J2)} ${Q2(n, (o) => t("dim", o))}`;
1347
- }, s = e.required ?? true;
1348
- return new it({ options: e.options, signal: e.signal, input: e.input, output: e.output, initialValues: e.initialValues, required: s, cursorAt: e.cursorAt, validate(r) {
1349
- if (s && (r === undefined || r.length === 0))
1350
- return `Please select at least one option.
1351
- ${t("reset", t("dim", `Press ${t(["gray", "bgWhite", "inverse"], " space ")} to select, ${t("gray", t("bgWhite", t("inverse", " enter ")))} to submit`))}`;
1352
- }, render() {
1353
- const r = e.withGuide ?? u.withGuide, u2 = R(e.output, e.message, r ? `${ye(this.state)} ` : "", `${V2(this.state)} `), n = `${r ? `${t("gray", d2)}
1354
- ` : ""}${u2}
1355
- `, o = this.value ?? [], c2 = (a, l) => {
1356
- if (a.disabled)
1357
- return i(a, "disabled");
1358
- const $2 = o.includes(a.value);
1359
- return l && $2 ? i(a, "active-selected") : $2 ? i(a, "selected") : i(a, l ? "active" : "inactive");
1360
- };
1361
- switch (this.state) {
1362
- case "submit": {
1363
- const a = this.options.filter(({ value: $2 }) => o.includes($2)).map(($2) => i($2, "submitted")).join(t("dim", ", ")) || t("dim", "none"), l = R(e.output, a, r ? `${t("gray", d2)} ` : "");
1364
- return `${n}${l}`;
1365
- }
1366
- case "cancel": {
1367
- const a = this.options.filter(({ value: $2 }) => o.includes($2)).map(($2) => i($2, "cancelled")).join(t("dim", ", "));
1368
- if (a.trim() === "")
1369
- return `${n}${t("gray", d2)}`;
1370
- const l = R(e.output, a, r ? `${t("gray", d2)} ` : "");
1371
- return `${n}${l}${r ? `
1372
- ${t("gray", d2)}` : ""}`;
1373
- }
1374
- case "error": {
1375
- const a = r ? `${t("yellow", d2)} ` : "", l = this.error.split(`
1376
- `).map((p2, m) => m === 0 ? `${r ? `${t("yellow", E2)} ` : ""}${t("yellow", p2)}` : ` ${p2}`).join(`
1377
- `), $2 = n.split(`
1378
- `).length, y2 = l.split(`
1379
- `).length + 1;
1380
- return `${n}${a}${Y2({ output: e.output, options: this.options, cursor: this.cursor, maxItems: e.maxItems, columnPadding: a.length, rowPadding: $2 + y2, style: c2 }).join(`
1381
- ${a}`)}
1382
- ${l}
1383
- `;
1384
- }
1385
- default: {
1386
- const a = r ? `${t("cyan", d2)} ` : "", l = n.split(`
1387
- `).length, $2 = r ? 2 : 1;
1388
- return `${n}${a}${Y2({ output: e.output, options: this.options, cursor: this.cursor, maxItems: e.maxItems, columnPadding: a.length, rowPadding: l + $2, style: c2 }).join(`
1389
- ${a}`)}
1390
- ${r ? t("cyan", E2) : ""}
1391
- `;
1392
- }
1393
- }
1394
- } }).prompt();
1395
- };
1396
1284
  var Ct = (e) => t("magenta", e);
1397
1285
  var fe = ({ indicator: e = "dots", onCancel: i, output: s = process.stdout, cancelMessage: r, errorMessage: u2, frames: n = ee ? ["◒", "◐", "◓", "◑"] : ["•", "o", "O", "0"], delay: o = ee ? 80 : 120, signal: c2, ...a } = {}) => {
1398
1286
  const l = ae();
@@ -1452,84 +1340,10 @@ var fe = ({ indicator: e = "dots", onCancel: i, output: s = process.stdout, canc
1452
1340
  } };
1453
1341
  };
1454
1342
  var Ve = { light: w2("─", "-"), heavy: w2("━", "="), block: w2("█", "#") };
1455
- var re = (e, i) => e.includes(`
1456
- `) ? e.split(`
1457
- `).map((s) => i(s)).join(`
1458
- `) : i(e);
1459
- var _t = (e) => {
1460
- const i = (s, r) => {
1461
- const u2 = s.label ?? String(s.value);
1462
- switch (r) {
1463
- case "disabled":
1464
- return `${t("gray", H2)} ${re(u2, (n) => t("gray", n))}${s.hint ? ` ${t("dim", `(${s.hint ?? "disabled"})`)}` : ""}`;
1465
- case "selected":
1466
- return `${re(u2, (n) => t("dim", n))}`;
1467
- case "active":
1468
- return `${t("green", z2)} ${u2}${s.hint ? ` ${t("dim", `(${s.hint})`)}` : ""}`;
1469
- case "cancelled":
1470
- return `${re(u2, (n) => t(["strikethrough", "dim"], n))}`;
1471
- default:
1472
- return `${t("dim", H2)} ${re(u2, (n) => t("dim", n))}`;
1473
- }
1474
- };
1475
- return new nt({ options: e.options, signal: e.signal, input: e.input, output: e.output, initialValue: e.initialValue, render() {
1476
- const s = e.withGuide ?? u.withGuide, r = `${V2(this.state)} `, u2 = `${ye(this.state)} `, n = R(e.output, e.message, u2, r), o = `${s ? `${t("gray", d2)}
1477
- ` : ""}${n}
1478
- `;
1479
- switch (this.state) {
1480
- case "submit": {
1481
- const c2 = s ? `${t("gray", d2)} ` : "", a = R(e.output, i(this.options[this.cursor], "selected"), c2);
1482
- return `${o}${a}`;
1483
- }
1484
- case "cancel": {
1485
- const c2 = s ? `${t("gray", d2)} ` : "", a = R(e.output, i(this.options[this.cursor], "cancelled"), c2);
1486
- return `${o}${a}${s ? `
1487
- ${t("gray", d2)}` : ""}`;
1488
- }
1489
- default: {
1490
- const c2 = s ? `${t("cyan", d2)} ` : "", a = s ? t("cyan", E2) : "", l = o.split(`
1491
- `).length, $2 = s ? 2 : 1;
1492
- return `${o}${c2}${Y2({ output: e.output, cursor: this.cursor, options: this.options, maxItems: e.maxItems, columnPadding: c2.length, rowPadding: l + $2, style: (y2, p2) => i(y2, y2.disabled ? "disabled" : p2 ? "active" : "inactive") }).join(`
1493
- ${c2}`)}
1494
- ${a}
1495
- `;
1496
- }
1497
- }
1498
- } }).prompt();
1499
- };
1500
1343
  var je = `${t("gray", d2)} `;
1501
- var Ot = (e) => new at({ validate: e.validate, placeholder: e.placeholder, defaultValue: e.defaultValue, initialValue: e.initialValue, output: e.output, signal: e.signal, input: e.input, render() {
1502
- const i = e?.withGuide ?? u.withGuide, s = `${`${i ? `${t("gray", d2)}
1503
- ` : ""}${V2(this.state)} `}${e.message}
1504
- `, r = e.placeholder ? t("inverse", e.placeholder[0]) + t("dim", e.placeholder.slice(1)) : t(["inverse", "hidden"], "_"), u2 = this.userInput ? this.userInputWithCursor : r, n = this.value ?? "";
1505
- switch (this.state) {
1506
- case "error": {
1507
- const o = this.error ? ` ${t("yellow", this.error)}` : "", c2 = i ? `${t("yellow", d2)} ` : "", a = i ? t("yellow", E2) : "";
1508
- return `${s.trim()}
1509
- ${c2}${u2}
1510
- ${a}${o}
1511
- `;
1512
- }
1513
- case "submit": {
1514
- const o = n ? ` ${t("dim", n)}` : "", c2 = i ? t("gray", d2) : "";
1515
- return `${s}${c2}${o}`;
1516
- }
1517
- case "cancel": {
1518
- const o = n ? ` ${t(["strikethrough", "dim"], n)}` : "", c2 = i ? t("gray", d2) : "";
1519
- return `${s}${c2}${o}${n.trim() ? `
1520
- ${c2}` : ""}`;
1521
- }
1522
- default: {
1523
- const o = i ? `${t("cyan", d2)} ` : "", c2 = i ? t("cyan", E2) : "";
1524
- return `${s}${o}${u2}
1525
- ${c2}
1526
- `;
1527
- }
1528
- }
1529
- } }).prompt();
1530
1344
 
1531
1345
  // src/index.ts
1532
- var import_picocolors3 = __toESM(require_picocolors(), 1);
1346
+ var import_picocolors4 = __toESM(require_picocolors(), 1);
1533
1347
 
1534
1348
  // src/engine/generator.ts
1535
1349
  import { mkdir, writeFile } from "node:fs/promises";
@@ -2453,9 +2267,354 @@ async function runProvisioning(config) {
2453
2267
  return results;
2454
2268
  }
2455
2269
 
2270
+ // node_modules/@clack/prompts/dist/index.mjs
2271
+ import { styleText as t2, stripVTControlCharacters as ne2 } from "node:util";
2272
+ import P3 from "node:process";
2273
+ var import_sisteransi3 = __toESM(require_src(), 1);
2274
+ function Ze2() {
2275
+ return P3.platform !== "win32" ? P3.env.TERM !== "linux" : !!P3.env.CI || !!P3.env.WT_SESSION || !!P3.env.TERMINUS_SUBLIME || P3.env.ConEmuTask === "{cmd::Cmder}" || P3.env.TERM_PROGRAM === "Terminus-Sublime" || P3.env.TERM_PROGRAM === "vscode" || P3.env.TERM === "xterm-256color" || P3.env.TERM === "alacritty" || P3.env.TERMINAL_EMULATOR === "JetBrains-JediTerm";
2276
+ }
2277
+ var ee2 = Ze2();
2278
+ var w3 = (e, i) => ee2 ? e : i;
2279
+ var _e2 = w3("◆", "*");
2280
+ var oe2 = w3("■", "x");
2281
+ var ue2 = w3("▲", "x");
2282
+ var F3 = w3("◇", "o");
2283
+ var le2 = w3("┌", "T");
2284
+ var d3 = w3("│", "|");
2285
+ var E3 = w3("└", "—");
2286
+ var Ie2 = w3("┐", "T");
2287
+ var Ee2 = w3("┘", "—");
2288
+ var z3 = w3("●", ">");
2289
+ var H3 = w3("○", " ");
2290
+ var te2 = w3("◻", "[•]");
2291
+ var U2 = w3("◼", "[+]");
2292
+ var J3 = w3("◻", "[ ]");
2293
+ var xe2 = w3("▪", "•");
2294
+ var se2 = w3("─", "-");
2295
+ var ce2 = w3("╮", "+");
2296
+ var Ge2 = w3("├", "+");
2297
+ var $e2 = w3("╯", "+");
2298
+ var de2 = w3("╰", "+");
2299
+ var Oe2 = w3("╭", "+");
2300
+ var he2 = w3("●", "•");
2301
+ var pe2 = w3("◆", "*");
2302
+ var me2 = w3("▲", "!");
2303
+ var ge2 = w3("■", "x");
2304
+ var V2 = (e) => {
2305
+ switch (e) {
2306
+ case "initial":
2307
+ case "active":
2308
+ return t2("cyan", _e2);
2309
+ case "cancel":
2310
+ return t2("red", oe2);
2311
+ case "error":
2312
+ return t2("yellow", ue2);
2313
+ case "submit":
2314
+ return t2("green", F3);
2315
+ }
2316
+ };
2317
+ var ye = (e) => {
2318
+ switch (e) {
2319
+ case "initial":
2320
+ case "active":
2321
+ return t2("cyan", d3);
2322
+ case "cancel":
2323
+ return t2("red", d3);
2324
+ case "error":
2325
+ return t2("yellow", d3);
2326
+ case "submit":
2327
+ return t2("green", d3);
2328
+ }
2329
+ };
2330
+ var et2 = (e, i, s, r, u2) => {
2331
+ let n = i, o = 0;
2332
+ for (let c2 = s;c2 < r; c2++) {
2333
+ const a = e[c2];
2334
+ if (n = n - a.length, o++, n <= u2)
2335
+ break;
2336
+ }
2337
+ return { lineCount: n, removals: o };
2338
+ };
2339
+ var Y2 = ({ cursor: e, options: i, style: s, output: r = process.stdout, maxItems: u2 = Number.POSITIVE_INFINITY, columnPadding: n = 0, rowPadding: o = 4 }) => {
2340
+ const c2 = O(r) - n, a = A(r), l = t2("dim", "..."), $2 = Math.max(a - o, 0), y2 = Math.max(Math.min(u2, $2), 5);
2341
+ let p2 = 0;
2342
+ e >= y2 - 3 && (p2 = Math.max(Math.min(e - y2 + 3, i.length - y2), 0));
2343
+ let m = y2 < i.length && p2 > 0, g = y2 < i.length && p2 + y2 < i.length;
2344
+ const S2 = Math.min(p2 + y2, i.length), h = [];
2345
+ let f = 0;
2346
+ m && f++, g && f++;
2347
+ const v = p2 + (m ? 1 : 0), T2 = S2 - (g ? 1 : 0);
2348
+ for (let b = v;b < T2; b++) {
2349
+ const x = wrapAnsi(s(i[b], b === e), c2, { hard: true, trim: false }).split(`
2350
+ `);
2351
+ h.push(x), f += x.length;
2352
+ }
2353
+ if (f > $2) {
2354
+ let b = 0, x = 0, G2 = f;
2355
+ const M2 = e - v, R2 = (j2, D2) => et2(h, G2, j2, D2, $2);
2356
+ m ? ({ lineCount: G2, removals: b } = R2(0, M2), G2 > $2 && ({ lineCount: G2, removals: x } = R2(M2 + 1, h.length))) : ({ lineCount: G2, removals: x } = R2(M2 + 1, h.length), G2 > $2 && ({ lineCount: G2, removals: b } = R2(0, M2))), b > 0 && (m = true, h.splice(0, b)), x > 0 && (g = true, h.splice(h.length - x, x));
2357
+ }
2358
+ const C2 = [];
2359
+ m && C2.push(l);
2360
+ for (const b of h)
2361
+ for (const x of b)
2362
+ C2.push(x);
2363
+ return g && C2.push(l), C2;
2364
+ };
2365
+ var ot2 = (e) => {
2366
+ const i = e.active ?? "Yes", s = e.inactive ?? "No";
2367
+ return new Q({ active: i, inactive: s, signal: e.signal, input: e.input, output: e.output, initialValue: e.initialValue ?? true, render() {
2368
+ const r = e.withGuide ?? u.withGuide, u2 = `${V2(this.state)} `, n = r ? `${t2("gray", d3)} ` : "", o = R(e.output, e.message, n, u2), c2 = `${r ? `${t2("gray", d3)}
2369
+ ` : ""}${o}
2370
+ `, a = this.value ? i : s;
2371
+ switch (this.state) {
2372
+ case "submit": {
2373
+ const l = r ? `${t2("gray", d3)} ` : "";
2374
+ return `${c2}${l}${t2("dim", a)}`;
2375
+ }
2376
+ case "cancel": {
2377
+ const l = r ? `${t2("gray", d3)} ` : "";
2378
+ return `${c2}${l}${t2(["strikethrough", "dim"], a)}${r ? `
2379
+ ${t2("gray", d3)}` : ""}`;
2380
+ }
2381
+ default: {
2382
+ const l = r ? `${t2("cyan", d3)} ` : "", $2 = r ? t2("cyan", E3) : "";
2383
+ return `${c2}${l}${this.value ? `${t2("green", z3)} ${i}` : `${t2("dim", H3)} ${t2("dim", i)}`}${e.vertical ? r ? `
2384
+ ${t2("cyan", d3)} ` : `
2385
+ ` : ` ${t2("dim", "/")} `}${this.value ? `${t2("dim", H3)} ${t2("dim", s)}` : `${t2("green", z3)} ${s}`}
2386
+ ${$2}
2387
+ `;
2388
+ }
2389
+ }
2390
+ } }).prompt();
2391
+ };
2392
+ var O2 = { message: (e = [], { symbol: i = t2("gray", d3), secondarySymbol: s = t2("gray", d3), output: r = process.stdout, spacing: u2 = 1, withGuide: n } = {}) => {
2393
+ const o = [], c2 = n ?? u.withGuide, a = c2 ? s : "", l = c2 ? `${i} ` : "", $2 = c2 ? `${s} ` : "";
2394
+ for (let p2 = 0;p2 < u2; p2++)
2395
+ o.push(a);
2396
+ const y2 = Array.isArray(e) ? e : e.split(`
2397
+ `);
2398
+ if (y2.length > 0) {
2399
+ const [p2, ...m] = y2;
2400
+ p2.length > 0 ? o.push(`${l}${p2}`) : o.push(c2 ? i : "");
2401
+ for (const g of m)
2402
+ g.length > 0 ? o.push(`${$2}${g}`) : o.push(c2 ? s : "");
2403
+ }
2404
+ r.write(`${o.join(`
2405
+ `)}
2406
+ `);
2407
+ }, info: (e, i) => {
2408
+ O2.message(e, { ...i, symbol: t2("blue", he2) });
2409
+ }, success: (e, i) => {
2410
+ O2.message(e, { ...i, symbol: t2("green", pe2) });
2411
+ }, step: (e, i) => {
2412
+ O2.message(e, { ...i, symbol: t2("green", F3) });
2413
+ }, warn: (e, i) => {
2414
+ O2.message(e, { ...i, symbol: t2("yellow", me2) });
2415
+ }, warning: (e, i) => {
2416
+ O2.warn(e, i);
2417
+ }, error: (e, i) => {
2418
+ O2.message(e, { ...i, symbol: t2("red", ge2) });
2419
+ } };
2420
+ var pt = (e = "", i) => {
2421
+ const s = i?.output ?? process.stdout, r = i?.withGuide ?? u.withGuide ? `${t2("gray", E3)} ` : "";
2422
+ s.write(`${r}${t2("red", e)}
2423
+
2424
+ `);
2425
+ };
2426
+ var mt = (e = "", i) => {
2427
+ const s = i?.output ?? process.stdout, r = i?.withGuide ?? u.withGuide ? `${t2("gray", le2)} ` : "";
2428
+ s.write(`${r}${e}
2429
+ `);
2430
+ };
2431
+ var Q2 = (e, i) => e.split(`
2432
+ `).map((s) => i(s)).join(`
2433
+ `);
2434
+ var yt = (e) => {
2435
+ const i = (r, u2) => {
2436
+ const n = r.label ?? String(r.value);
2437
+ return u2 === "disabled" ? `${t2("gray", J3)} ${Q2(n, (o) => t2(["strikethrough", "gray"], o))}${r.hint ? ` ${t2("dim", `(${r.hint ?? "disabled"})`)}` : ""}` : u2 === "active" ? `${t2("cyan", te2)} ${n}${r.hint ? ` ${t2("dim", `(${r.hint})`)}` : ""}` : u2 === "selected" ? `${t2("green", U2)} ${Q2(n, (o) => t2("dim", o))}${r.hint ? ` ${t2("dim", `(${r.hint})`)}` : ""}` : u2 === "cancelled" ? `${Q2(n, (o) => t2(["strikethrough", "dim"], o))}` : u2 === "active-selected" ? `${t2("green", U2)} ${n}${r.hint ? ` ${t2("dim", `(${r.hint})`)}` : ""}` : u2 === "submitted" ? `${Q2(n, (o) => t2("dim", o))}` : `${t2("dim", J3)} ${Q2(n, (o) => t2("dim", o))}`;
2438
+ }, s = e.required ?? true;
2439
+ return new it({ options: e.options, signal: e.signal, input: e.input, output: e.output, initialValues: e.initialValues, required: s, cursorAt: e.cursorAt, validate(r) {
2440
+ if (s && (r === undefined || r.length === 0))
2441
+ return `Please select at least one option.
2442
+ ${t2("reset", t2("dim", `Press ${t2(["gray", "bgWhite", "inverse"], " space ")} to select, ${t2("gray", t2("bgWhite", t2("inverse", " enter ")))} to submit`))}`;
2443
+ }, render() {
2444
+ const r = e.withGuide ?? u.withGuide, u2 = R(e.output, e.message, r ? `${ye(this.state)} ` : "", `${V2(this.state)} `), n = `${r ? `${t2("gray", d3)}
2445
+ ` : ""}${u2}
2446
+ `, o = this.value ?? [], c2 = (a, l) => {
2447
+ if (a.disabled)
2448
+ return i(a, "disabled");
2449
+ const $2 = o.includes(a.value);
2450
+ return l && $2 ? i(a, "active-selected") : $2 ? i(a, "selected") : i(a, l ? "active" : "inactive");
2451
+ };
2452
+ switch (this.state) {
2453
+ case "submit": {
2454
+ const a = this.options.filter(({ value: $2 }) => o.includes($2)).map(($2) => i($2, "submitted")).join(t2("dim", ", ")) || t2("dim", "none"), l = R(e.output, a, r ? `${t2("gray", d3)} ` : "");
2455
+ return `${n}${l}`;
2456
+ }
2457
+ case "cancel": {
2458
+ const a = this.options.filter(({ value: $2 }) => o.includes($2)).map(($2) => i($2, "cancelled")).join(t2("dim", ", "));
2459
+ if (a.trim() === "")
2460
+ return `${n}${t2("gray", d3)}`;
2461
+ const l = R(e.output, a, r ? `${t2("gray", d3)} ` : "");
2462
+ return `${n}${l}${r ? `
2463
+ ${t2("gray", d3)}` : ""}`;
2464
+ }
2465
+ case "error": {
2466
+ const a = r ? `${t2("yellow", d3)} ` : "", l = this.error.split(`
2467
+ `).map((p2, m) => m === 0 ? `${r ? `${t2("yellow", E3)} ` : ""}${t2("yellow", p2)}` : ` ${p2}`).join(`
2468
+ `), $2 = n.split(`
2469
+ `).length, y2 = l.split(`
2470
+ `).length + 1;
2471
+ return `${n}${a}${Y2({ output: e.output, options: this.options, cursor: this.cursor, maxItems: e.maxItems, columnPadding: a.length, rowPadding: $2 + y2, style: c2 }).join(`
2472
+ ${a}`)}
2473
+ ${l}
2474
+ `;
2475
+ }
2476
+ default: {
2477
+ const a = r ? `${t2("cyan", d3)} ` : "", l = n.split(`
2478
+ `).length, $2 = r ? 2 : 1;
2479
+ return `${n}${a}${Y2({ output: e.output, options: this.options, cursor: this.cursor, maxItems: e.maxItems, columnPadding: a.length, rowPadding: l + $2, style: c2 }).join(`
2480
+ ${a}`)}
2481
+ ${r ? t2("cyan", E3) : ""}
2482
+ `;
2483
+ }
2484
+ }
2485
+ } }).prompt();
2486
+ };
2487
+ var Ve2 = { light: w3("─", "-"), heavy: w3("━", "="), block: w3("█", "#") };
2488
+ var re = (e, i) => e.includes(`
2489
+ `) ? e.split(`
2490
+ `).map((s) => i(s)).join(`
2491
+ `) : i(e);
2492
+ var _t = (e) => {
2493
+ const i = (s, r) => {
2494
+ const u2 = s.label ?? String(s.value);
2495
+ switch (r) {
2496
+ case "disabled":
2497
+ return `${t2("gray", H3)} ${re(u2, (n) => t2("gray", n))}${s.hint ? ` ${t2("dim", `(${s.hint ?? "disabled"})`)}` : ""}`;
2498
+ case "selected":
2499
+ return `${re(u2, (n) => t2("dim", n))}`;
2500
+ case "active":
2501
+ return `${t2("green", z3)} ${u2}${s.hint ? ` ${t2("dim", `(${s.hint})`)}` : ""}`;
2502
+ case "cancelled":
2503
+ return `${re(u2, (n) => t2(["strikethrough", "dim"], n))}`;
2504
+ default:
2505
+ return `${t2("dim", H3)} ${re(u2, (n) => t2("dim", n))}`;
2506
+ }
2507
+ };
2508
+ return new nt({ options: e.options, signal: e.signal, input: e.input, output: e.output, initialValue: e.initialValue, render() {
2509
+ const s = e.withGuide ?? u.withGuide, r = `${V2(this.state)} `, u2 = `${ye(this.state)} `, n = R(e.output, e.message, u2, r), o = `${s ? `${t2("gray", d3)}
2510
+ ` : ""}${n}
2511
+ `;
2512
+ switch (this.state) {
2513
+ case "submit": {
2514
+ const c2 = s ? `${t2("gray", d3)} ` : "", a = R(e.output, i(this.options[this.cursor], "selected"), c2);
2515
+ return `${o}${a}`;
2516
+ }
2517
+ case "cancel": {
2518
+ const c2 = s ? `${t2("gray", d3)} ` : "", a = R(e.output, i(this.options[this.cursor], "cancelled"), c2);
2519
+ return `${o}${a}${s ? `
2520
+ ${t2("gray", d3)}` : ""}`;
2521
+ }
2522
+ default: {
2523
+ const c2 = s ? `${t2("cyan", d3)} ` : "", a = s ? t2("cyan", E3) : "", l = o.split(`
2524
+ `).length, $2 = s ? 2 : 1;
2525
+ return `${o}${c2}${Y2({ output: e.output, cursor: this.cursor, options: this.options, maxItems: e.maxItems, columnPadding: c2.length, rowPadding: l + $2, style: (y2, p2) => i(y2, y2.disabled ? "disabled" : p2 ? "active" : "inactive") }).join(`
2526
+ ${c2}`)}
2527
+ ${a}
2528
+ `;
2529
+ }
2530
+ }
2531
+ } }).prompt();
2532
+ };
2533
+ var je2 = `${t2("gray", d3)} `;
2534
+ var Ot = (e) => new at({ validate: e.validate, placeholder: e.placeholder, defaultValue: e.defaultValue, initialValue: e.initialValue, output: e.output, signal: e.signal, input: e.input, render() {
2535
+ const i = e?.withGuide ?? u.withGuide, s = `${`${i ? `${t2("gray", d3)}
2536
+ ` : ""}${V2(this.state)} `}${e.message}
2537
+ `, r = e.placeholder ? t2("inverse", e.placeholder[0]) + t2("dim", e.placeholder.slice(1)) : t2(["inverse", "hidden"], "_"), u2 = this.userInput ? this.userInputWithCursor : r, n = this.value ?? "";
2538
+ switch (this.state) {
2539
+ case "error": {
2540
+ const o = this.error ? ` ${t2("yellow", this.error)}` : "", c2 = i ? `${t2("yellow", d3)} ` : "", a = i ? t2("yellow", E3) : "";
2541
+ return `${s.trim()}
2542
+ ${c2}${u2}
2543
+ ${a}${o}
2544
+ `;
2545
+ }
2546
+ case "submit": {
2547
+ const o = n ? ` ${t2("dim", n)}` : "", c2 = i ? t2("gray", d3) : "";
2548
+ return `${s}${c2}${o}`;
2549
+ }
2550
+ case "cancel": {
2551
+ const o = n ? ` ${t2(["strikethrough", "dim"], n)}` : "", c2 = i ? t2("gray", d3) : "";
2552
+ return `${s}${c2}${o}${n.trim() ? `
2553
+ ${c2}` : ""}`;
2554
+ }
2555
+ default: {
2556
+ const o = i ? `${t2("cyan", d3)} ` : "", c2 = i ? t2("cyan", E3) : "";
2557
+ return `${s}${o}${u2}
2558
+ ${c2}
2559
+ `;
2560
+ }
2561
+ }
2562
+ } }).prompt();
2563
+
2456
2564
  // src/tui/display.ts
2457
- var import_picocolors = __toESM(require_picocolors(), 1);
2565
+ var import_picocolors = __toESM(require_picocolors2(), 1);
2458
2566
  var teal = (value) => `\x1B[38;2;47;208;181m${value}\x1B[39m`;
2567
+ function formatValue(value) {
2568
+ return import_picocolors.default.bold(import_picocolors.default.white(value));
2569
+ }
2570
+ function showPostGeneration(config) {
2571
+ const nextSteps = [teal(import_picocolors.default.bold("Next steps"))];
2572
+ if (config.destination !== "." && config.destination !== "./") {
2573
+ nextSteps.push(` ${import_picocolors.default.cyan("cd")} ${formatValue(config.destination)}`);
2574
+ }
2575
+ if (config.scripting !== "none") {
2576
+ nextSteps.push(` ${import_picocolors.default.cyan("bun install")} ${import_picocolors.default.dim("or")} ${import_picocolors.default.cyan("npm install")} ${import_picocolors.default.dim("Install project dependencies")}`);
2577
+ }
2578
+ if (config.useRgl) {
2579
+ nextSteps.push(` ${import_picocolors.default.cyan("rgl watch")} ${import_picocolors.default.dim("Watch files and rebuild/export while you work")}`);
2580
+ }
2581
+ const usefulCommands = [teal(import_picocolors.default.bold("Useful commands"))];
2582
+ if (config.useRgl) {
2583
+ usefulCommands.push(` ${import_picocolors.default.cyan("rgl run")} ${import_picocolors.default.dim("Build for development")}`);
2584
+ usefulCommands.push(` ${import_picocolors.default.cyan("rgl run build")} ${import_picocolors.default.dim("Build for distribution")}`);
2585
+ }
2586
+ if (config.scripting === "typescript") {
2587
+ usefulCommands.push(` ${import_picocolors.default.cyan("bun run typecheck")} ${import_picocolors.default.dim("or")} ${import_picocolors.default.cyan("npm run typecheck")} ${import_picocolors.default.dim("Check TypeScript types")}`);
2588
+ }
2589
+ if (config.scripting === "none" && !config.useRgl) {
2590
+ usefulCommands.push(` ${import_picocolors.default.dim("No extra build commands needed for this scaffold")}`);
2591
+ }
2592
+ if (config.aiSetup !== "none") {
2593
+ usefulCommands.push("");
2594
+ usefulCommands.push(`${teal(import_picocolors.default.bold("Note"))} ${import_picocolors.default.dim(".mcp.json is ready to use — the configured MCP servers need no API keys.")}`);
2595
+ }
2596
+ if (config.installPonytail) {
2597
+ usefulCommands.push("");
2598
+ if (config.aiSetup === "claude") {
2599
+ usefulCommands.push(`${teal(import_picocolors.default.bold("Ponytail"))} ${import_picocolors.default.dim("Run inside Claude Code:")}`);
2600
+ usefulCommands.push(` ${import_picocolors.default.cyan("/plugin marketplace add DietrichGebert/ponytail")}`);
2601
+ usefulCommands.push(` ${import_picocolors.default.cyan("/plugin install ponytail@ponytail")}`);
2602
+ } else {
2603
+ usefulCommands.push(`${teal(import_picocolors.default.bold("Ponytail"))} ${import_picocolors.default.dim("Added to opencode.json — installs on next opencode run.")}`);
2604
+ }
2605
+ }
2606
+ O2.message([...nextSteps, "", ...usefulCommands].join(`
2607
+ `), {
2608
+ symbol: teal("▲")
2609
+ });
2610
+ }
2611
+
2612
+ // src/tui/wizard.ts
2613
+ var import_picocolors3 = __toESM(require_picocolors2(), 1);
2614
+
2615
+ // src/tui/display.ts
2616
+ var import_picocolors2 = __toESM(require_picocolors2(), 1);
2617
+ var teal2 = (value) => `\x1B[38;2;47;208;181m${value}\x1B[39m`;
2459
2618
  function bgTeal(value) {
2460
2619
  return `\x1B[48;2;47;208;181m${value}\x1B[49m`;
2461
2620
  }
@@ -2496,11 +2655,11 @@ function getSelectedPackages(scriptPackages) {
2496
2655
  }
2497
2656
  return packages;
2498
2657
  }
2499
- function formatValue(value) {
2500
- return import_picocolors.default.bold(import_picocolors.default.white(value));
2658
+ function formatValue2(value) {
2659
+ return import_picocolors2.default.bold(import_picocolors2.default.white(value));
2501
2660
  }
2502
2661
  function formatToggle(enabled) {
2503
- return enabled ? import_picocolors.default.green("Yes") : import_picocolors.default.dim("No");
2662
+ return enabled ? import_picocolors2.default.green("Yes") : import_picocolors2.default.dim("No");
2504
2663
  }
2505
2664
  function padLabel(label) {
2506
2665
  return label.padEnd(22, " ");
@@ -2513,15 +2672,15 @@ function getTreeRoot(config) {
2513
2672
  return destination.replace(/[\\/]+$/, "");
2514
2673
  }
2515
2674
  function pushScopedFolder(lines, folderPrefix, scopePrefix, folder, config) {
2516
- lines.push(import_picocolors.default.dim(`${folderPrefix}${folder}/`));
2675
+ lines.push(import_picocolors2.default.dim(`${folderPrefix}${folder}/`));
2517
2676
  if (config.useMarketplaceStructure) {
2518
- lines.push(import_picocolors.default.dim(`${scopePrefix}${getMarketplaceScopeLabel(config)}/`));
2677
+ lines.push(import_picocolors2.default.dim(`${scopePrefix}${getMarketplaceScopeLabel(config)}/`));
2519
2678
  }
2520
2679
  }
2521
2680
  function showFolderTree(config) {
2522
- const lines = [import_picocolors.default.bold(import_picocolors.default.white(getTreeRoot(config)))];
2523
- lines.push(import_picocolors.default.dim("├─ packs/"));
2524
- lines.push(import_picocolors.default.dim("│ ├─ BP/"));
2681
+ const lines = [import_picocolors2.default.bold(import_picocolors2.default.white(getTreeRoot(config)))];
2682
+ lines.push(import_picocolors2.default.dim("├─ packs/"));
2683
+ lines.push(import_picocolors2.default.dim("│ ├─ BP/"));
2525
2684
  pushScopedFolder(lines, "│ │ ├─ ", "│ │ │ └─ ", "animation_controllers", config);
2526
2685
  pushScopedFolder(lines, "│ │ ├─ ", "│ │ │ └─ ", "animations", config);
2527
2686
  pushScopedFolder(lines, "│ │ ├─ ", "│ │ │ └─ ", "blocks", config);
@@ -2531,164 +2690,122 @@ function showFolderTree(config) {
2531
2690
  pushScopedFolder(lines, "│ │ ├─ ", "│ │ │ └─ ", "recipes", config);
2532
2691
  pushScopedFolder(lines, "│ │ ├─ ", "│ │ │ └─ ", "spawn_rules", config);
2533
2692
  pushScopedFolder(lines, "│ │ ├─ ", "│ │ │ └─ ", "structures", config);
2534
- lines.push(import_picocolors.default.dim("│ │ ├─ texts/"));
2693
+ lines.push(import_picocolors2.default.dim("│ │ ├─ texts/"));
2535
2694
  pushScopedFolder(lines, "│ │ ├─ ", "│ │ │ └─ ", "trading", config);
2536
2695
  if (config.scripting === "javascript" || config.scripting === "typescript" && !config.useRgl) {
2537
- lines.push(import_picocolors.default.dim(`│ │ ├─ scripts/${config.identifier}/${config.projectId}/`));
2696
+ lines.push(import_picocolors2.default.dim(`│ │ ├─ scripts/${config.identifier}/${config.projectId}/`));
2538
2697
  }
2539
- lines.push(import_picocolors.default.dim("│ │ └─ manifest.json"));
2540
- lines.push(import_picocolors.default.dim("│ └─ RP/"));
2698
+ lines.push(import_picocolors2.default.dim("│ │ └─ manifest.json"));
2699
+ lines.push(import_picocolors2.default.dim("│ └─ RP/"));
2541
2700
  pushScopedFolder(lines, "│ ├─ ", "│ │ └─ ", "animation_controllers", config);
2542
2701
  pushScopedFolder(lines, "│ ├─ ", "│ │ └─ ", "animations", config);
2543
2702
  pushScopedFolder(lines, "│ ├─ ", "│ │ └─ ", "attachables", config);
2544
2703
  pushScopedFolder(lines, "│ ├─ ", "│ │ └─ ", "entity", config);
2545
2704
  pushScopedFolder(lines, "│ ├─ ", "│ │ └─ ", "fogs", config);
2546
- lines.push(import_picocolors.default.dim("│ ├─ models/entity/"));
2705
+ lines.push(import_picocolors2.default.dim("│ ├─ models/entity/"));
2547
2706
  if (config.useMarketplaceStructure) {
2548
- lines.push(import_picocolors.default.dim(`│ │ └─ ${getMarketplaceScopeLabel(config)}/`));
2707
+ lines.push(import_picocolors2.default.dim(`│ │ └─ ${getMarketplaceScopeLabel(config)}/`));
2549
2708
  }
2550
2709
  pushScopedFolder(lines, "│ ├─ ", "│ │ └─ ", "particles", config);
2551
2710
  pushScopedFolder(lines, "│ ├─ ", "│ │ └─ ", "render_controllers", config);
2552
2711
  pushScopedFolder(lines, "│ ├─ ", "│ │ └─ ", "sounds", config);
2553
- lines.push(import_picocolors.default.dim("│ ├─ texts/"));
2554
- lines.push(import_picocolors.default.dim("│ ├─ textures/blocks/"));
2712
+ lines.push(import_picocolors2.default.dim("│ ├─ texts/"));
2713
+ lines.push(import_picocolors2.default.dim("│ ├─ textures/blocks/"));
2555
2714
  if (config.useMarketplaceStructure) {
2556
- lines.push(import_picocolors.default.dim(`│ │ └─ ${getMarketplaceScopeLabel(config)}/`));
2715
+ lines.push(import_picocolors2.default.dim(`│ │ └─ ${getMarketplaceScopeLabel(config)}/`));
2557
2716
  }
2558
- lines.push(import_picocolors.default.dim("│ ├─ textures/entity/"));
2717
+ lines.push(import_picocolors2.default.dim("│ ├─ textures/entity/"));
2559
2718
  if (config.useMarketplaceStructure) {
2560
- lines.push(import_picocolors.default.dim(`│ │ └─ ${getMarketplaceScopeLabel(config)}/`));
2719
+ lines.push(import_picocolors2.default.dim(`│ │ └─ ${getMarketplaceScopeLabel(config)}/`));
2561
2720
  }
2562
- lines.push(import_picocolors.default.dim("│ ├─ textures/items/"));
2721
+ lines.push(import_picocolors2.default.dim("│ ├─ textures/items/"));
2563
2722
  if (config.useMarketplaceStructure) {
2564
- lines.push(import_picocolors.default.dim(`│ │ └─ ${getMarketplaceScopeLabel(config)}/`));
2723
+ lines.push(import_picocolors2.default.dim(`│ │ └─ ${getMarketplaceScopeLabel(config)}/`));
2565
2724
  }
2566
2725
  pushScopedFolder(lines, "│ ├─ ", "│ │ └─ ", "ui", config);
2567
- lines.push(import_picocolors.default.dim("│ ├─ blocks.json"));
2568
- lines.push(import_picocolors.default.dim("│ ├─ sounds.json"));
2569
- lines.push(import_picocolors.default.dim("│ ├─ sound_definitions.json"));
2570
- lines.push(import_picocolors.default.dim("│ ├─ item_texture.json"));
2571
- lines.push(import_picocolors.default.dim("│ ├─ terrain_texture.json"));
2572
- lines.push(import_picocolors.default.dim("│ ├─ flipbook_textures.json"));
2573
- lines.push(import_picocolors.default.dim("│ └─ manifest.json"));
2726
+ lines.push(import_picocolors2.default.dim("│ ├─ blocks.json"));
2727
+ lines.push(import_picocolors2.default.dim("│ ├─ sounds.json"));
2728
+ lines.push(import_picocolors2.default.dim("│ ├─ sound_definitions.json"));
2729
+ lines.push(import_picocolors2.default.dim("│ ├─ item_texture.json"));
2730
+ lines.push(import_picocolors2.default.dim("│ ├─ terrain_texture.json"));
2731
+ lines.push(import_picocolors2.default.dim("│ ├─ flipbook_textures.json"));
2732
+ lines.push(import_picocolors2.default.dim("│ └─ manifest.json"));
2574
2733
  if (config.scripting === "typescript") {
2575
- lines.push(import_picocolors.default.dim("├─ data/scripts/"));
2734
+ lines.push(import_picocolors2.default.dim("├─ data/scripts/"));
2576
2735
  if (config.useRgl) {
2577
- lines.push(import_picocolors.default.dim("│ ├─ main.ts"));
2578
- lines.push(import_picocolors.default.dim("│ └─ tsconfig.json"));
2579
- lines.push(import_picocolors.default.dim("├─ filters/"));
2580
- lines.push(import_picocolors.default.dim("│ ├─ rolldown/"));
2581
- lines.push(import_picocolors.default.dim("│ │ ├─ main.js"));
2582
- lines.push(import_picocolors.default.dim("│ │ └─ package.json"));
2583
- lines.push(import_picocolors.default.dim("│ └─ typegen/"));
2584
- lines.push(import_picocolors.default.dim("│ ├─ main.js"));
2585
- lines.push(import_picocolors.default.dim("│ └─ package.json"));
2736
+ lines.push(import_picocolors2.default.dim("│ ├─ main.ts"));
2737
+ lines.push(import_picocolors2.default.dim("│ └─ tsconfig.json"));
2738
+ lines.push(import_picocolors2.default.dim("├─ filters/"));
2739
+ lines.push(import_picocolors2.default.dim("│ ├─ rolldown/"));
2740
+ lines.push(import_picocolors2.default.dim("│ │ ├─ main.js"));
2741
+ lines.push(import_picocolors2.default.dim("│ │ └─ package.json"));
2742
+ lines.push(import_picocolors2.default.dim("│ └─ typegen/"));
2743
+ lines.push(import_picocolors2.default.dim("│ ├─ main.js"));
2744
+ lines.push(import_picocolors2.default.dim("│ └─ package.json"));
2586
2745
  } else {
2587
- lines.push(import_picocolors.default.dim("│ └─ main.ts"));
2588
- lines.push(import_picocolors.default.dim("├─ tsconfig.json"));
2746
+ lines.push(import_picocolors2.default.dim("│ └─ main.ts"));
2747
+ lines.push(import_picocolors2.default.dim("├─ tsconfig.json"));
2589
2748
  }
2590
- lines.push(import_picocolors.default.dim("├─ dprint.json"));
2749
+ lines.push(import_picocolors2.default.dim("├─ dprint.json"));
2591
2750
  }
2592
2751
  if (config.scripting === "javascript") {
2593
- lines.push(import_picocolors.default.dim(`├─ packs/BP/scripts/${config.identifier}/${config.projectId}/main.js`));
2752
+ lines.push(import_picocolors2.default.dim(`├─ packs/BP/scripts/${config.identifier}/${config.projectId}/main.js`));
2594
2753
  }
2595
2754
  if (config.scripting !== "none") {
2596
- lines.push(import_picocolors.default.dim("├─ package.json"));
2755
+ lines.push(import_picocolors2.default.dim("├─ package.json"));
2597
2756
  }
2598
2757
  if (config.useRgl) {
2599
- lines.push(import_picocolors.default.dim("├─ config.json"));
2758
+ lines.push(import_picocolors2.default.dim("├─ config.json"));
2600
2759
  }
2601
2760
  const aiDocFilename = getAiDocFilename(config.aiSetup);
2602
2761
  if (aiDocFilename !== null) {
2603
- lines.push(import_picocolors.default.dim(`├─ ${aiDocFilename}`));
2604
- lines.push(import_picocolors.default.dim("├─ .mcp.json"));
2762
+ lines.push(import_picocolors2.default.dim(`├─ ${aiDocFilename}`));
2763
+ lines.push(import_picocolors2.default.dim("├─ .mcp.json"));
2605
2764
  if (config.installPonytail && config.aiSetup === "other") {
2606
- lines.push(import_picocolors.default.dim("├─ opencode.json"));
2765
+ lines.push(import_picocolors2.default.dim("├─ opencode.json"));
2607
2766
  }
2608
2767
  }
2609
- lines.push(import_picocolors.default.dim("├─ .gitignore"));
2610
- lines.push(import_picocolors.default.dim("└─ README.md"));
2768
+ lines.push(import_picocolors2.default.dim("├─ .gitignore"));
2769
+ lines.push(import_picocolors2.default.dim("└─ README.md"));
2611
2770
  return lines.join(`
2612
2771
  `);
2613
2772
  }
2614
2773
  function showReview(config) {
2615
- const border = teal("│");
2616
- const packages = config.scripting === "none" ? import_picocolors.default.dim("None") : getSelectedPackages(config.scriptPackages).length > 0 ? formatValue(getSelectedPackages(config.scriptPackages).join(", ")) : import_picocolors.default.dim("None");
2774
+ const border = teal2("│");
2775
+ const packages = config.scripting === "none" ? import_picocolors2.default.dim("None") : getSelectedPackages(config.scriptPackages).length > 0 ? formatValue2(getSelectedPackages(config.scriptPackages).join(", ")) : import_picocolors2.default.dim("None");
2617
2776
  const lines = [
2618
- `${whiteOnTeal(" Spawnpack ")} ${import_picocolors.default.dim("Review your Bedrock addon scaffold")}`,
2777
+ `${whiteOnTeal(" Spawnpack ")} ${import_picocolors2.default.dim("Review your Bedrock addon scaffold")}`,
2619
2778
  "",
2620
- `${border} ${import_picocolors.default.dim(padLabel("Project:"))} ${formatValue(config.projectName)}`,
2621
- `${border} ${import_picocolors.default.dim(padLabel("Author:"))} ${config.author ? formatValue(config.author) : import_picocolors.default.dim("—")}`,
2779
+ `${border} ${import_picocolors2.default.dim(padLabel("Project:"))} ${formatValue2(config.projectName)}`,
2780
+ `${border} ${import_picocolors2.default.dim(padLabel("Author:"))} ${config.author ? formatValue2(config.author) : import_picocolors2.default.dim("—")}`,
2622
2781
  ...config.useMarketplaceStructure ? [
2623
- `${border} ${import_picocolors.default.dim(padLabel("Publisher ID:"))} ${formatValue(config.identifier)}`,
2624
- `${border} ${import_picocolors.default.dim(padLabel("Project ID:"))} ${formatValue(config.projectId)}`,
2625
- `${border} ${import_picocolors.default.dim(padLabel("Marketplace structure:"))} ${formatValue(getMarketplaceScopeLabel(config))}`
2782
+ `${border} ${import_picocolors2.default.dim(padLabel("Publisher ID:"))} ${formatValue2(config.identifier)}`,
2783
+ `${border} ${import_picocolors2.default.dim(padLabel("Project ID:"))} ${formatValue2(config.projectId)}`,
2784
+ `${border} ${import_picocolors2.default.dim(padLabel("Marketplace structure:"))} ${formatValue2(getMarketplaceScopeLabel(config))}`
2626
2785
  ] : [
2627
- `${border} ${import_picocolors.default.dim(padLabel("Marketplace structure:"))} ${import_picocolors.default.dim("Disabled")}`
2786
+ `${border} ${import_picocolors2.default.dim(padLabel("Marketplace structure:"))} ${import_picocolors2.default.dim("Disabled")}`
2628
2787
  ],
2629
- `${border} ${import_picocolors.default.dim(padLabel("Destination:"))} ${formatValue(config.destination)}`,
2630
- `${border} ${import_picocolors.default.dim(padLabel("Scripting:"))} ${formatValue(getScriptingLabel(config.scripting))}`,
2631
- `${border} ${import_picocolors.default.dim(padLabel("Packages:"))} ${packages}`,
2632
- `${border} ${import_picocolors.default.dim(padLabel("rgl:"))} ${formatToggle(config.useRgl)}`,
2633
- `${border} ${import_picocolors.default.dim(padLabel("Rockide:"))} ${formatToggle(config.installRockide)}`,
2634
- `${border} ${import_picocolors.default.dim(padLabel("AI Setup:"))} ${formatValue(getAiSetupLabel(config.aiSetup))}`,
2635
- ...config.aiSetup !== "none" ? [`${border} ${import_picocolors.default.dim(padLabel("Ponytail:"))} ${formatToggle(config.installPonytail)}`] : [],
2788
+ `${border} ${import_picocolors2.default.dim(padLabel("Destination:"))} ${formatValue2(config.destination)}`,
2789
+ `${border} ${import_picocolors2.default.dim(padLabel("Scripting:"))} ${formatValue2(getScriptingLabel(config.scripting))}`,
2790
+ `${border} ${import_picocolors2.default.dim(padLabel("Packages:"))} ${packages}`,
2791
+ `${border} ${import_picocolors2.default.dim(padLabel("rgl:"))} ${formatToggle(config.useRgl)}`,
2792
+ `${border} ${import_picocolors2.default.dim(padLabel("Rockide:"))} ${formatToggle(config.installRockide)}`,
2793
+ `${border} ${import_picocolors2.default.dim(padLabel("AI Setup:"))} ${formatValue2(getAiSetupLabel(config.aiSetup))}`,
2794
+ ...config.aiSetup !== "none" ? [`${border} ${import_picocolors2.default.dim(padLabel("Ponytail:"))} ${formatToggle(config.installPonytail)}`] : [],
2636
2795
  "",
2637
- `${border} ${teal(import_picocolors.default.bold("Planned structure"))}`,
2796
+ `${border} ${teal2(import_picocolors2.default.bold("Planned structure"))}`,
2638
2797
  ...showFolderTree(config).split(`
2639
2798
  `).map((line) => `${border} ${line}`)
2640
2799
  ];
2641
2800
  O2.message(lines.join(`
2642
- `), { symbol: teal("◆") });
2643
- }
2644
- function showPostGeneration(config) {
2645
- const nextSteps = [teal(import_picocolors.default.bold("Next steps"))];
2646
- if (config.destination !== "." && config.destination !== "./") {
2647
- nextSteps.push(` ${import_picocolors.default.cyan("cd")} ${formatValue(config.destination)}`);
2648
- }
2649
- if (config.scripting !== "none") {
2650
- nextSteps.push(` ${import_picocolors.default.cyan("bun install")} ${import_picocolors.default.dim("or")} ${import_picocolors.default.cyan("npm install")} ${import_picocolors.default.dim("Install project dependencies")}`);
2651
- }
2652
- if (config.useRgl) {
2653
- nextSteps.push(` ${import_picocolors.default.cyan("rgl watch")} ${import_picocolors.default.dim("Watch files and rebuild/export while you work")}`);
2654
- }
2655
- const usefulCommands = [teal(import_picocolors.default.bold("Useful commands"))];
2656
- if (config.useRgl) {
2657
- usefulCommands.push(` ${import_picocolors.default.cyan("rgl run")} ${import_picocolors.default.dim("Build for development")}`);
2658
- usefulCommands.push(` ${import_picocolors.default.cyan("rgl run build")} ${import_picocolors.default.dim("Build for distribution")}`);
2659
- }
2660
- if (config.scripting === "typescript") {
2661
- usefulCommands.push(` ${import_picocolors.default.cyan("bun run typecheck")} ${import_picocolors.default.dim("or")} ${import_picocolors.default.cyan("npm run typecheck")} ${import_picocolors.default.dim("Check TypeScript types")}`);
2662
- }
2663
- if (config.scripting === "none" && !config.useRgl) {
2664
- usefulCommands.push(` ${import_picocolors.default.dim("No extra build commands needed for this scaffold")}`);
2665
- }
2666
- if (config.aiSetup !== "none") {
2667
- usefulCommands.push("");
2668
- usefulCommands.push(`${teal(import_picocolors.default.bold("Note"))} ${import_picocolors.default.dim(".mcp.json is ready to use — the configured MCP servers need no API keys.")}`);
2669
- }
2670
- if (config.installPonytail) {
2671
- usefulCommands.push("");
2672
- if (config.aiSetup === "claude") {
2673
- usefulCommands.push(`${teal(import_picocolors.default.bold("Ponytail"))} ${import_picocolors.default.dim("Run inside Claude Code:")}`);
2674
- usefulCommands.push(` ${import_picocolors.default.cyan("/plugin marketplace add DietrichGebert/ponytail")}`);
2675
- usefulCommands.push(` ${import_picocolors.default.cyan("/plugin install ponytail@ponytail")}`);
2676
- } else {
2677
- usefulCommands.push(`${teal(import_picocolors.default.bold("Ponytail"))} ${import_picocolors.default.dim("Added to opencode.json — installs on next opencode run.")}`);
2678
- }
2679
- }
2680
- O2.message([...nextSteps, "", ...usefulCommands].join(`
2681
- `), {
2682
- symbol: teal("▲")
2683
- });
2801
+ `), { symbol: teal2("◆") });
2684
2802
  }
2685
2803
 
2686
2804
  // src/tui/wizard.ts
2687
- var import_picocolors2 = __toESM(require_picocolors(), 1);
2688
- var teal2 = (value) => `\x1B[38;2;47;208;181m${value}\x1B[39m`;
2805
+ var teal3 = (value) => `\x1B[38;2;47;208;181m${value}\x1B[39m`;
2689
2806
  var bgTeal2 = (value) => `\x1B[48;2;47;208;181m${value}\x1B[49m`;
2690
2807
  function abortWizard() {
2691
- pt(import_picocolors2.default.red("Spawnpack cancelled."));
2808
+ pt(import_picocolors3.default.red("Spawnpack cancelled."));
2692
2809
  return null;
2693
2810
  }
2694
2811
  function toScriptPackages(selected) {
@@ -2700,9 +2817,9 @@ function toScriptPackages(selected) {
2700
2817
  };
2701
2818
  }
2702
2819
  async function runWizard() {
2703
- mt(`${bgTeal2(import_picocolors2.default.bold(import_picocolors2.default.white(" Spawnpack ")))} ${teal2("Initialize your Minecraft Bedrock addon")}`);
2820
+ mt(`${bgTeal2(import_picocolors3.default.bold(import_picocolors3.default.white(" Spawnpack ")))} ${teal3("Initialize your Minecraft Bedrock addon")}`);
2704
2821
  const projectName = await Ot({
2705
- message: import_picocolors2.default.bold("Project name"),
2822
+ message: import_picocolors3.default.bold("Project name"),
2706
2823
  placeholder: "My Cool Addon",
2707
2824
  validate(value) {
2708
2825
  const trimmed = (value ?? "").trim();
@@ -2724,14 +2841,14 @@ async function runWizard() {
2724
2841
  const trimmedProjectName = projectName.trim();
2725
2842
  const suggestedProjectId = generateProjectId(trimmedProjectName);
2726
2843
  const author = await Ot({
2727
- message: `${import_picocolors2.default.bold("Author")} ${import_picocolors2.default.dim("optional")}`,
2844
+ message: `${import_picocolors3.default.bold("Author")} ${import_picocolors3.default.dim("optional")}`,
2728
2845
  placeholder: "Your Name or Studio"
2729
2846
  });
2730
2847
  if (q(author)) {
2731
2848
  return abortWizard();
2732
2849
  }
2733
2850
  const useMarketplaceStructure = await ot2({
2734
- message: `${import_picocolors2.default.bold("Marketplace Add-On structure?")} ${import_picocolors2.default.dim("Nest BP/RP content under publisher_id/project_id for better coexistence")}`,
2851
+ message: `${import_picocolors3.default.bold("Marketplace Add-On structure?")} ${import_picocolors3.default.dim("Nest BP/RP content under publisher_id/project_id for better coexistence")}`,
2735
2852
  initialValue: false
2736
2853
  });
2737
2854
  if (q(useMarketplaceStructure)) {
@@ -2741,7 +2858,7 @@ async function runWizard() {
2741
2858
  let identifierValue = defaultPublisherId;
2742
2859
  let projectIdValue = suggestedProjectId;
2743
2860
  const destination = await Ot({
2744
- message: import_picocolors2.default.bold("Destination folder"),
2861
+ message: import_picocolors3.default.bold("Destination folder"),
2745
2862
  placeholder: ".",
2746
2863
  initialValue: ".",
2747
2864
  validate(value) {
@@ -2762,7 +2879,7 @@ async function runWizard() {
2762
2879
  return abortWizard();
2763
2880
  }
2764
2881
  const scripting = await _t({
2765
- message: import_picocolors2.default.bold("Scripting API"),
2882
+ message: import_picocolors3.default.bold("Scripting API"),
2766
2883
  initialValue: "typescript",
2767
2884
  options: [
2768
2885
  { value: "none", label: "None", hint: "manifest-only addon scaffold" },
@@ -2776,7 +2893,7 @@ async function runWizard() {
2776
2893
  if (useMarketplaceStructure || scripting !== "none") {
2777
2894
  const publisherHint = useMarketplaceStructure ? "used for scoped folders like publisher_id/project_id" : "used for script folders and package naming";
2778
2895
  const publisherId = await Ot({
2779
- message: `${import_picocolors2.default.bold("Publisher ID")} ${import_picocolors2.default.dim(publisherHint)}`,
2896
+ message: `${import_picocolors3.default.bold("Publisher ID")} ${import_picocolors3.default.dim(publisherHint)}`,
2780
2897
  placeholder: defaultPublisherId,
2781
2898
  initialValue: defaultPublisherId,
2782
2899
  validate(value) {
@@ -2795,7 +2912,7 @@ async function runWizard() {
2795
2912
  }
2796
2913
  identifierValue = publisherId.trim();
2797
2914
  const projectId = await Ot({
2798
- message: `${import_picocolors2.default.bold("Project ID")} ${import_picocolors2.default.dim("1-10 lowercase letters, numbers, or underscores")}`,
2915
+ message: `${import_picocolors3.default.bold("Project ID")} ${import_picocolors3.default.dim("1-10 lowercase letters, numbers, or underscores")}`,
2799
2916
  placeholder: suggestedProjectId,
2800
2917
  initialValue: suggestedProjectId,
2801
2918
  validate(value) {
@@ -2815,7 +2932,7 @@ async function runWizard() {
2815
2932
  let useRgl = false;
2816
2933
  if (scripting !== "none") {
2817
2934
  const selectedPackages = await yt({
2818
- message: import_picocolors2.default.bold("Script packages"),
2935
+ message: import_picocolors3.default.bold("Script packages"),
2819
2936
  required: false,
2820
2937
  initialValues: Object.entries(DEFAULT_SCRIPT_PACKAGES).filter(([, enabled]) => enabled).map(([key]) => key),
2821
2938
  options: [
@@ -2830,7 +2947,7 @@ async function runWizard() {
2830
2947
  }
2831
2948
  scriptPackages = toScriptPackages(Array.from(new Set(["server", ...selectedPackages])));
2832
2949
  const rglChoice = await ot2({
2833
- message: `${import_picocolors2.default.bold("Use rgl?")} ${import_picocolors2.default.dim("fast Bedrock addon compiler, 16x faster than Regolith")}`,
2950
+ message: `${import_picocolors3.default.bold("Use rgl?")} ${import_picocolors3.default.dim("fast Bedrock addon compiler, 16x faster than Regolith")}`,
2834
2951
  initialValue: true
2835
2952
  });
2836
2953
  if (q(rglChoice)) {
@@ -2839,14 +2956,14 @@ async function runWizard() {
2839
2956
  useRgl = rglChoice;
2840
2957
  }
2841
2958
  const installRockide2 = await ot2({
2842
- message: `${import_picocolors2.default.bold("Install Rockide?")} ${import_picocolors2.default.dim("VSCode extension for Bedrock JSON autocompletion")}`,
2959
+ message: `${import_picocolors3.default.bold("Install Rockide?")} ${import_picocolors3.default.dim("VSCode extension for Bedrock JSON autocompletion")}`,
2843
2960
  initialValue: true
2844
2961
  });
2845
2962
  if (q(installRockide2)) {
2846
2963
  return abortWizard();
2847
2964
  }
2848
2965
  const aiSetup = await _t({
2849
- message: import_picocolors2.default.bold("AI setup"),
2966
+ message: import_picocolors3.default.bold("AI setup"),
2850
2967
  initialValue: "none",
2851
2968
  options: [
2852
2969
  { value: "none", label: "None", hint: "No AI configuration setup" },
@@ -2860,7 +2977,7 @@ async function runWizard() {
2860
2977
  let installPonytail = false;
2861
2978
  if (aiSetup !== "none") {
2862
2979
  const ponytailChoice = await ot2({
2863
- message: `${import_picocolors2.default.bold("Install ponytail plugin?")} ${import_picocolors2.default.dim("Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote. https://github.com/DietrichGebert/ponytail")}`,
2980
+ message: `${import_picocolors3.default.bold("Install ponytail plugin?")} ${import_picocolors3.default.dim("Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote. https://github.com/DietrichGebert/ponytail")}`,
2864
2981
  initialValue: true
2865
2982
  });
2866
2983
  if (q(ponytailChoice)) {
@@ -2884,7 +3001,7 @@ async function runWizard() {
2884
3001
  };
2885
3002
  showReview(config);
2886
3003
  const shouldGenerate = await ot2({
2887
- message: `${import_picocolors2.default.bold("Generate addon scaffold?")} ${import_picocolors2.default.dim("create the project files now")}`,
3004
+ message: `${import_picocolors3.default.bold("Generate addon scaffold?")} ${import_picocolors3.default.dim("create the project files now")}`,
2888
3005
  initialValue: true
2889
3006
  });
2890
3007
  if (q(shouldGenerate) || !shouldGenerate) {
@@ -2894,7 +3011,7 @@ async function runWizard() {
2894
3011
  }
2895
3012
 
2896
3013
  // src/index.ts
2897
- var teal3 = (value) => `\x1B[38;2;47;208;181m${value}\x1B[39m`;
3014
+ var teal4 = (value) => `\x1B[38;2;47;208;181m${value}\x1B[39m`;
2898
3015
  var args = new Set(process.argv.slice(2));
2899
3016
  if (args.has("-v") || args.has("--version")) {
2900
3017
  const packageJson = await Bun.file(new URL("../package.json", import.meta.url)).json();
@@ -2906,12 +3023,12 @@ if (config === null) {
2906
3023
  process.exit(0);
2907
3024
  }
2908
3025
  var generation = fe();
2909
- generation.start(teal3("Generating your Bedrock addon scaffold..."));
3026
+ generation.start(teal4("Generating your Bedrock addon scaffold..."));
2910
3027
  await generateProject(config);
2911
3028
  if (config.aiSetup !== "none") {
2912
3029
  await setupAi(config.destination, config.aiSetup, config.installPonytail);
2913
3030
  }
2914
3031
  await runProvisioning(config);
2915
- generation.stop(import_picocolors3.default.green("Spawnpack scaffold generated."));
3032
+ generation.stop(import_picocolors4.default.green("Spawnpack scaffold generated."));
2916
3033
  showPostGeneration(config);
2917
- gt(teal3("Your addon is ready."));
3034
+ gt(teal4("Your addon is ready."));