@boltapp/bolt-local-dashboard 0.1.4 → 0.1.6

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.
@@ -132,12 +132,7 @@ var API_BASE_URL = "/api/bolt";
132
132
  import BetterSqlite3 from "better-sqlite3";
133
133
  import { betterAuth } from "better-auth";
134
134
  import { drizzleAdapter } from "better-auth/adapters/drizzle";
135
- import { exec } from "child_process";
136
135
  import { drizzle } from "drizzle-orm/better-sqlite3";
137
- import fs from "fs";
138
- import path from "path";
139
- import { fileURLToPath } from "url";
140
- import { promisify } from "util";
141
136
 
142
137
  // src/server/auth-schema.ts
143
138
  import { index, integer, sqliteTable, text, uniqueIndex } from "drizzle-orm/sqlite-core";
@@ -216,20 +211,8 @@ var clientSchema = {
216
211
  };
217
212
 
218
213
  // src/server/auth.ts
219
- var execAsync = promisify(exec);
220
214
  async function ensureLocalDashboardSchema(dbPath) {
221
- const { schemaPath, dbPackageDir } = resolveDbSchemaPath();
222
- if (schemaPath && dbPackageDir) {
223
- try {
224
- await execAsync(
225
- `npx drizzle-kit push --dialect=sqlite --schema="${schemaPath}" --url="${dbPath}"`,
226
- { cwd: dbPackageDir }
227
- );
228
- return;
229
- } catch {
230
- }
231
- }
232
- ensureAuthTablesWithSql(dbPath);
215
+ verifyLocalDashboardSchema(dbPath);
233
216
  }
234
217
  function createDashboardAuth(sqlite, trustedOrigins) {
235
218
  const db = drizzle(sqlite, { schema: clientSchema });
@@ -274,81 +257,14 @@ async function isSignUpBlocked(sqlite, requestPath) {
274
257
  if (!isSignUpAttempt) return false;
275
258
  return countUsers(sqlite) > 0;
276
259
  }
277
- function resolveDbSchemaPath() {
278
- const __filename = fileURLToPath(import.meta.url);
279
- const __dirname2 = path.dirname(__filename);
280
- const dashboardPackageDir = path.resolve(__dirname2, "..", "..");
281
- const schemaPath = path.join(dashboardPackageDir, "src", "server", "auth-schema.ts");
282
- if (fs.existsSync(schemaPath)) {
283
- return { schemaPath, dbPackageDir: dashboardPackageDir };
284
- }
285
- return { schemaPath: null, dbPackageDir: null };
286
- }
287
- function ensureAuthTablesWithSql(dbPath) {
260
+ function verifyLocalDashboardSchema(dbPath) {
288
261
  const sqlite = new BetterSqlite3(dbPath);
289
262
  try {
290
263
  sqlite.pragma("foreign_keys = ON");
291
- sqlite.exec(`
292
- CREATE TABLE IF NOT EXISTS "users" (
293
- "id" TEXT PRIMARY KEY NOT NULL,
294
- "first_name" TEXT NOT NULL,
295
- "last_name" TEXT NOT NULL,
296
- "name" TEXT,
297
- "email" TEXT NOT NULL,
298
- "emailVerified" INTEGER NOT NULL DEFAULT 0,
299
- "image" TEXT,
300
- "createdAt" INTEGER,
301
- "updatedAt" INTEGER
302
- );
303
-
304
- CREATE UNIQUE INDEX IF NOT EXISTS "users_email_unique_idx" ON "users" ("email");
305
-
306
- CREATE TABLE IF NOT EXISTS "sessions" (
307
- "id" TEXT PRIMARY KEY NOT NULL,
308
- "expiresAt" INTEGER NOT NULL,
309
- "token" TEXT NOT NULL,
310
- "ipAddress" TEXT,
311
- "userAgent" TEXT,
312
- "userId" TEXT NOT NULL,
313
- "createdAt" INTEGER,
314
- "updatedAt" INTEGER,
315
- FOREIGN KEY ("userId") REFERENCES "users" ("id") ON DELETE CASCADE
316
- );
317
-
318
- CREATE UNIQUE INDEX IF NOT EXISTS "sessions_token_unique_idx" ON "sessions" ("token");
319
- CREATE INDEX IF NOT EXISTS "sessions_user_id_idx" ON "sessions" ("userId");
320
-
321
- CREATE TABLE IF NOT EXISTS "accounts" (
322
- "id" TEXT PRIMARY KEY NOT NULL,
323
- "accountId" TEXT NOT NULL,
324
- "providerId" TEXT NOT NULL,
325
- "userId" TEXT NOT NULL,
326
- "accessToken" TEXT,
327
- "refreshToken" TEXT,
328
- "idToken" TEXT,
329
- "accessTokenExpiresAt" INTEGER,
330
- "refreshTokenExpiresAt" INTEGER,
331
- "scope" TEXT,
332
- "password" TEXT,
333
- "createdAt" INTEGER,
334
- "updatedAt" INTEGER,
335
- FOREIGN KEY ("userId") REFERENCES "users" ("id") ON DELETE CASCADE
336
- );
337
-
338
- CREATE INDEX IF NOT EXISTS "accounts_user_id_idx" ON "accounts" ("userId");
339
- CREATE UNIQUE INDEX IF NOT EXISTS "accounts_provider_account_unique_idx" ON "accounts" ("providerId", "accountId");
340
-
341
- CREATE TABLE IF NOT EXISTS "verifications" (
342
- "id" TEXT PRIMARY KEY NOT NULL,
343
- "identifier" TEXT NOT NULL,
344
- "value" TEXT NOT NULL,
345
- "expiresAt" INTEGER NOT NULL,
346
- "createdAt" INTEGER,
347
- "updatedAt" INTEGER
348
- );
349
-
350
- CREATE INDEX IF NOT EXISTS "verifications_identifier_idx" ON "verifications" ("identifier");
351
- `);
264
+ ensureRequiredTable(sqlite, "users");
265
+ ensureRequiredTable(sqlite, "sessions");
266
+ ensureRequiredTable(sqlite, "accounts");
267
+ ensureRequiredTable(sqlite, "verifications");
352
268
  ensureRequiredUserNameColumns(sqlite);
353
269
  } finally {
354
270
  sqlite.close();
@@ -357,19 +273,32 @@ function ensureAuthTablesWithSql(dbPath) {
357
273
  function ensureRequiredUserNameColumns(sqlite) {
358
274
  const tableInfo = sqlite.prepare(`PRAGMA table_info("users")`).all();
359
275
  const columns = new Set(tableInfo.map((column) => column.name));
360
- if (!columns.has("first_name")) {
361
- sqlite.exec(`ALTER TABLE "users" ADD COLUMN "first_name" TEXT NOT NULL DEFAULT ''`);
276
+ if (!columns.has("first_name") || !columns.has("last_name")) {
277
+ throwMissingSchemaError(
278
+ `Missing required columns in users table: ${[
279
+ ...!columns.has("first_name") ? ["first_name"] : [],
280
+ ...!columns.has("last_name") ? ["last_name"] : []
281
+ ].join(", ")}`
282
+ );
362
283
  }
363
- if (!columns.has("last_name")) {
364
- sqlite.exec(`ALTER TABLE "users" ADD COLUMN "last_name" TEXT NOT NULL DEFAULT ''`);
284
+ }
285
+ function ensureRequiredTable(sqlite, tableName) {
286
+ const table = sqlite.prepare(`SELECT name FROM sqlite_master WHERE type = 'table' AND name = ? LIMIT 1`).get(tableName);
287
+ if (!table?.name) {
288
+ throwMissingSchemaError(`Missing required auth table: ${tableName}`);
365
289
  }
366
290
  }
291
+ function throwMissingSchemaError(reason) {
292
+ throw new Error(
293
+ `${reason}. Local dashboard auth schema is not initialized. Run \`bolt init\` in your app directory to provision the required tables before starting the dashboard.`
294
+ );
295
+ }
367
296
  function countUsers(sqlite) {
368
297
  const row = sqlite.prepare(`SELECT COUNT(*) as value FROM "users"`).get();
369
298
  return row?.value ?? 0;
370
299
  }
371
300
 
372
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/collection/summarize-items.js
301
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/collection/summarize-items.js
373
302
  function summarizeItems(data, key, itemsToShow) {
374
303
  if (!data.length) {
375
304
  return "No items";
@@ -380,13 +309,13 @@ function summarizeItems(data, key, itemsToShow) {
380
309
  return remainingItemCount > 0 ? `${itemsList} + ${remainingItemCount} other item${remainingItemCount > 1 ? "s" : ""}` : itemsList;
381
310
  }
382
311
 
383
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/date/date-to-string.js
312
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/date/date-to-string.js
384
313
  function dateToString(date5) {
385
314
  const dateString = date5 ? date5.toISOString().split("T")[0] : "";
386
315
  return dateString ?? false;
387
316
  }
388
317
 
389
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/date/format-date.js
318
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/date/format-date.js
390
319
  var templateOptions = {
391
320
  common: ["dd", "monthName", "yyyy"],
392
321
  commonWithTime: ["dd", "monthName", "yyyy", "h", "m", "s"]
@@ -409,19 +338,19 @@ function formatDate(date5, format2, join) {
409
338
  return format2.map((f2) => options[f2] || "").join(join ?? " ");
410
339
  }
411
340
 
412
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/date/string-to-date.js
341
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/date/string-to-date.js
413
342
  function stringToDate(dateString = "") {
414
343
  return new Date(dateString);
415
344
  }
416
345
 
417
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/date/subtract-days.js
346
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/date/subtract-days.js
418
347
  function subtractDays(date5, days) {
419
348
  const result = new Date(date5);
420
349
  result.setDate(result.getDate() - days);
421
350
  return result;
422
351
  }
423
352
 
424
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/format/format-number.js
353
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/format/format-number.js
425
354
  function formatNumber(amount, currency, options) {
426
355
  const { locale = "en-US", style = "currency", minimumFractionDigits = 0 } = options || {};
427
356
  const formatter = new Intl.NumberFormat(locale, {
@@ -432,7 +361,7 @@ function formatNumber(amount, currency, options) {
432
361
  return formatter.format(amount / 100);
433
362
  }
434
363
 
435
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/format/to-kebab-case.js
364
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/format/to-kebab-case.js
436
365
  function toKebabCase(input) {
437
366
  if (!input) {
438
367
  return "";
@@ -440,34 +369,34 @@ function toKebabCase(input) {
440
369
  return input.trim().toLowerCase().replace(/\s+/g, "-").replace(/[^a-z0-9-]/g, "");
441
370
  }
442
371
 
443
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/generation/generate-excerpt.js
372
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/generation/generate-excerpt.js
444
373
  function generateExcerpt(content) {
445
374
  const plainText = content.replace(/<\/?[^>]+(>|$)/g, "");
446
375
  const normalizedText = plainText.replace(/\s+/g, " ").trim();
447
376
  return normalizedText.slice(0, 200);
448
377
  }
449
378
 
450
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/generation/generate-random-email.js
379
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/generation/generate-random-email.js
451
380
  function generateRandomEmail(length = 10) {
452
381
  const chars = "abcdefghijklmnopqrstuvwxyz0123456789";
453
- let randomString4 = "";
382
+ let randomString3 = "";
454
383
  for (let i2 = 0; i2 < length; i2++) {
455
- randomString4 += chars[Math.floor(Math.random() * chars.length)];
384
+ randomString3 += chars[Math.floor(Math.random() * chars.length)];
456
385
  }
457
- return `${randomString4}@test.com`;
386
+ return `${randomString3}@test.com`;
458
387
  }
459
388
 
460
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/generation/generate-sequence.js
389
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/generation/generate-sequence.js
461
390
  function generateSequence(length) {
462
391
  return Array.from({ length }, (_, i2) => i2 + 1);
463
392
  }
464
393
 
465
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/generation/generate-slug.js
394
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/generation/generate-slug.js
466
395
  function generateSlug(text11) {
467
396
  return text11.toLowerCase().trim().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
468
397
  }
469
398
 
470
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/generation/random-string.js
399
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/generation/random-string.js
471
400
  function randomString(size) {
472
401
  if (size % 2 !== 0)
473
402
  throw new Error("size must be even");
@@ -477,23 +406,23 @@ function randomString(size) {
477
406
  return Array.from(bytes).reduce(r2, "").slice(0, size);
478
407
  }
479
408
 
480
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/is-current-path.js
481
- function normalize(path6) {
482
- const basePath = path6.split("?")[0]?.split("#")[0] ?? "";
409
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/is-current-path.js
410
+ function normalize(path5) {
411
+ const basePath = path5.split("?")[0]?.split("#")[0] ?? "";
483
412
  return basePath.replace(/\/+$/, "") || "/";
484
413
  }
485
- function isCurrentPath(path6, url2) {
486
- return normalize(path6) === normalize(url2);
414
+ function isCurrentPath(path5, url2) {
415
+ return normalize(path5) === normalize(url2);
487
416
  }
488
- function isPartOfCurrentPath(path6, url2) {
489
- const p2 = normalize(path6);
417
+ function isPartOfCurrentPath(path5, url2) {
418
+ const p2 = normalize(path5);
490
419
  const u2 = normalize(url2);
491
420
  if (u2 === "/")
492
421
  return p2 === "/";
493
422
  return p2 === u2 || p2.startsWith(`${u2}/`);
494
423
  }
495
424
 
496
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/pretty/pretty-currency.js
425
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/pretty/pretty-currency.js
497
426
  function prettyCurrency(props) {
498
427
  const { value, currency, locale, fromCents, decimalPlaces = "2", round = false } = props;
499
428
  let safeValue = (value ?? 0) / (fromCents ? 100 : 1);
@@ -619,11 +548,11 @@ function getTimezoneOffsetInMilliseconds(date5) {
619
548
 
620
549
  // ../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/normalizeDates.js
621
550
  function normalizeDates(context, ...dates) {
622
- const normalize3 = constructFrom.bind(
551
+ const normalize2 = constructFrom.bind(
623
552
  null,
624
553
  context || dates.find((date5) => typeof date5 === "object")
625
554
  );
626
- return dates.map(normalize3);
555
+ return dates.map(normalize2);
627
556
  }
628
557
 
629
558
  // ../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfDay.js
@@ -2174,7 +2103,7 @@ function isToday(date5, options) {
2174
2103
  );
2175
2104
  }
2176
2105
 
2177
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/pretty/pretty-date.js
2106
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/pretty/pretty-date.js
2178
2107
  function prettyDate(date5, withHour = false) {
2179
2108
  const parsed = typeof date5 === "string" ? new Date(date5) : date5;
2180
2109
  if (!(parsed instanceof Date) || Number.isNaN(parsed.getTime())) {
@@ -2200,7 +2129,7 @@ function prettyDate(date5, withHour = false) {
2200
2129
  return `${format(parsed, `PP`)} ${hour}`.trim();
2201
2130
  }
2202
2131
 
2203
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/pretty/pretty-file-size.js
2132
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/pretty/pretty-file-size.js
2204
2133
  function prettyFileSize(bytes) {
2205
2134
  const KB = 1024;
2206
2135
  const MB = KB * 1024;
@@ -2216,13 +2145,13 @@ function prettyFileSize(bytes) {
2216
2145
  }
2217
2146
  }
2218
2147
 
2219
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/pretty/pretty-number.js
2148
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/pretty/pretty-number.js
2220
2149
  function prettyNumber(props) {
2221
2150
  const { value, locale } = props;
2222
2151
  return new Intl.NumberFormat(locale).format(value ?? 0);
2223
2152
  }
2224
2153
 
2225
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/pretty/pretty-text.js
2154
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/pretty/pretty-text.js
2226
2155
  function prettyText(input) {
2227
2156
  if (!input)
2228
2157
  return "";
@@ -2231,7 +2160,7 @@ function prettyText(input) {
2231
2160
  return capitalizedString;
2232
2161
  }
2233
2162
 
2234
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/pretty/pretty-timestamp.js
2163
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/pretty/pretty-timestamp.js
2235
2164
  function prettyTimeStamp() {
2236
2165
  const now = /* @__PURE__ */ new Date();
2237
2166
  const day = now.toLocaleDateString("en-US", { weekday: "short" }).toLowerCase();
@@ -2246,7 +2175,7 @@ function prettyTimeStamp() {
2246
2175
  return `${day}-${date5}-${month}-${year}-${formattedHour}-${minutes}${ampm}`;
2247
2176
  }
2248
2177
 
2249
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/pretty/pretty-unit.js
2178
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/pretty/pretty-unit.js
2250
2179
  function prettyUnit(props) {
2251
2180
  const { value, unit, locale } = props;
2252
2181
  return new Intl.NumberFormat(locale, {
@@ -2255,7 +2184,7 @@ function prettyUnit(props) {
2255
2184
  }).format(value ?? 0);
2256
2185
  }
2257
2186
 
2258
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/text/capitalize-first-letter.js
2187
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/text/capitalize-first-letter.js
2259
2188
  function capitalizeFirstLetter(input) {
2260
2189
  if (!input.length) {
2261
2190
  return input;
@@ -2263,7 +2192,7 @@ function capitalizeFirstLetter(input) {
2263
2192
  return input.charAt(0).toUpperCase() + input.slice(1);
2264
2193
  }
2265
2194
 
2266
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/text/change-format.js
2195
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/text/change-format.js
2267
2196
  function changeFormat(value) {
2268
2197
  if (!value?.length) {
2269
2198
  return "";
@@ -2271,7 +2200,7 @@ function changeFormat(value) {
2271
2200
  return `${value.charAt(0).toUpperCase()}${value.slice(1).replace(/_|-/g, " ")}`;
2272
2201
  }
2273
2202
 
2274
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/text/get-two-first-letters-from-string.js
2203
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/text/get-two-first-letters-from-string.js
2275
2204
  function getTwoFirstLettersFromString(input) {
2276
2205
  if (!input) {
2277
2206
  return "";
@@ -2292,7 +2221,7 @@ function getTwoFirstLettersFromString(input) {
2292
2221
  return words[0].charAt(0) + words[1].charAt(0);
2293
2222
  }
2294
2223
 
2295
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/text/truncate.js
2224
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/text/truncate.js
2296
2225
  function truncate(str, length) {
2297
2226
  if (typeof str === "string" && str.length > length) {
2298
2227
  return `${str.slice(0, length)}...`;
@@ -2300,7 +2229,7 @@ function truncate(str, length) {
2300
2229
  return str;
2301
2230
  }
2302
2231
 
2303
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/transform/convert-to-csv.js
2232
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/transform/convert-to-csv.js
2304
2233
  function convertToCsv({ data, schema, headers, options }) {
2305
2234
  const escapeCsv = (value) => {
2306
2235
  let str = value instanceof Date ? value.toISOString() : value == null ? "" : String(value);
@@ -2328,12 +2257,12 @@ function convertToCsv({ data, schema, headers, options }) {
2328
2257
  return lines.join("\n");
2329
2258
  }
2330
2259
 
2331
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/url/decode-url-text.js
2260
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/url/decode-url-text.js
2332
2261
  function decodeUrlText(encodedText) {
2333
2262
  return decodeURIComponent(encodedText);
2334
2263
  }
2335
2264
 
2336
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.7/node_modules/@boltapp/bolt-helpers/dist/index.js
2265
+ // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.9/node_modules/@boltapp/bolt-helpers/dist/index.js
2337
2266
  var Helpers = {
2338
2267
  isCurrentPath,
2339
2268
  isPartOfCurrentPath,
@@ -2364,7 +2293,7 @@ var Helpers = {
2364
2293
  dateToString
2365
2294
  };
2366
2295
 
2367
- // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.6_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite3_f13d8938db1a5f59618ae6657194ac02/node_modules/@boltapp/bolt-app-db/dist/client/schema/index.js
2296
+ // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.15_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite_0cec5eedc627d18299ac4dc34763c418/node_modules/@boltapp/bolt-app-db/dist/client/schema/index.js
2368
2297
  var schema_exports = {};
2369
2298
  __export(schema_exports, {
2370
2299
  boltAppVersions: () => boltAppVersions,
@@ -2384,12 +2313,12 @@ __export(schema_exports, {
2384
2313
  boltTablesRelations: () => boltTablesRelations
2385
2314
  });
2386
2315
 
2387
- // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.6_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite3_f13d8938db1a5f59618ae6657194ac02/node_modules/@boltapp/bolt-app-db/dist/client/schema/app-schema.js
2316
+ // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.15_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite_0cec5eedc627d18299ac4dc34763c418/node_modules/@boltapp/bolt-app-db/dist/client/schema/app-schema.js
2388
2317
  import { relations } from "drizzle-orm";
2389
2318
  import { index as index2, integer as integer3, sqliteTable as sqliteTable3, text as text3, uniqueIndex as uniqueIndex3 } from "drizzle-orm/sqlite-core";
2390
2319
  import { nanoid as nanoid3 } from "nanoid";
2391
2320
 
2392
- // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.6_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite3_f13d8938db1a5f59618ae6657194ac02/node_modules/@boltapp/bolt-app-db/dist/client/schema/project-schema.js
2321
+ // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.15_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite_0cec5eedc627d18299ac4dc34763c418/node_modules/@boltapp/bolt-app-db/dist/client/schema/project-schema.js
2393
2322
  import { integer as integer2, sqliteTable as sqliteTable2, text as text2, uniqueIndex as uniqueIndex2 } from "drizzle-orm/sqlite-core";
2394
2323
  import { nanoid as nanoid2 } from "nanoid";
2395
2324
  var boltProjects = sqliteTable2("bolt_projects", {
@@ -2406,7 +2335,7 @@ var boltProjects = sqliteTable2("bolt_projects", {
2406
2335
  uniqueIndex2("bolt_projects_slug_unique_idx").on(table.slug)
2407
2336
  ]);
2408
2337
 
2409
- // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.6_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite3_f13d8938db1a5f59618ae6657194ac02/node_modules/@boltapp/bolt-app-db/dist/client/schema/app-schema.js
2338
+ // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.15_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite_0cec5eedc627d18299ac4dc34763c418/node_modules/@boltapp/bolt-app-db/dist/client/schema/app-schema.js
2410
2339
  var boltApps = sqliteTable3("bolt_apps", {
2411
2340
  id: text3().primaryKey().$defaultFn(() => nanoid3()),
2412
2341
  name: text3().notNull(),
@@ -2453,7 +2382,7 @@ var boltAppVersionsRelations = relations(boltAppVersions, ({ one }) => ({
2453
2382
  })
2454
2383
  }));
2455
2384
 
2456
- // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.6_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite3_f13d8938db1a5f59618ae6657194ac02/node_modules/@boltapp/bolt-app-db/dist/client/schema/data-store-schema.js
2385
+ // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.15_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite_0cec5eedc627d18299ac4dc34763c418/node_modules/@boltapp/bolt-app-db/dist/client/schema/data-store-schema.js
2457
2386
  import { relations as relations2 } from "drizzle-orm";
2458
2387
  import { index as index3, integer as integer4, sqliteTable as sqliteTable4, text as text4, uniqueIndex as uniqueIndex4 } from "drizzle-orm/sqlite-core";
2459
2388
  import { nanoid as nanoid4 } from "nanoid";
@@ -2481,7 +2410,7 @@ var boltDataStoresRelations = relations2(boltDataStores, ({ one }) => ({
2481
2410
  })
2482
2411
  }));
2483
2412
 
2484
- // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.6_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite3_f13d8938db1a5f59618ae6657194ac02/node_modules/@boltapp/bolt-app-db/dist/client/schema/file-schema.js
2413
+ // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.15_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite_0cec5eedc627d18299ac4dc34763c418/node_modules/@boltapp/bolt-app-db/dist/client/schema/file-schema.js
2485
2414
  import { relations as relations3 } from "drizzle-orm";
2486
2415
  import { index as index4, integer as integer5, sqliteTable as sqliteTable5, text as text5 } from "drizzle-orm/sqlite-core";
2487
2416
  import { nanoid as nanoid5 } from "nanoid";
@@ -3278,10 +3207,10 @@ function mergeDefs(...defs) {
3278
3207
  function cloneDef(schema) {
3279
3208
  return mergeDefs(schema._zod.def);
3280
3209
  }
3281
- function getElementAtPath(obj, path6) {
3282
- if (!path6)
3210
+ function getElementAtPath(obj, path5) {
3211
+ if (!path5)
3283
3212
  return obj;
3284
- return path6.reduce((acc, key) => acc?.[key], obj);
3213
+ return path5.reduce((acc, key) => acc?.[key], obj);
3285
3214
  }
3286
3215
  function promiseAllObject(promisesObj) {
3287
3216
  const keys = Object.keys(promisesObj);
@@ -3664,11 +3593,11 @@ function aborted(x2, startIndex = 0) {
3664
3593
  }
3665
3594
  return false;
3666
3595
  }
3667
- function prefixIssues(path6, issues) {
3596
+ function prefixIssues(path5, issues) {
3668
3597
  return issues.map((iss) => {
3669
3598
  var _a2;
3670
3599
  (_a2 = iss).path ?? (_a2.path = []);
3671
- iss.path.unshift(path6);
3600
+ iss.path.unshift(path5);
3672
3601
  return iss;
3673
3602
  });
3674
3603
  }
@@ -3851,7 +3780,7 @@ function formatError(error48, mapper = (issue2) => issue2.message) {
3851
3780
  }
3852
3781
  function treeifyError(error48, mapper = (issue2) => issue2.message) {
3853
3782
  const result = { errors: [] };
3854
- const processError = (error49, path6 = []) => {
3783
+ const processError = (error49, path5 = []) => {
3855
3784
  var _a2, _b;
3856
3785
  for (const issue2 of error49.issues) {
3857
3786
  if (issue2.code === "invalid_union" && issue2.errors.length) {
@@ -3861,7 +3790,7 @@ function treeifyError(error48, mapper = (issue2) => issue2.message) {
3861
3790
  } else if (issue2.code === "invalid_element") {
3862
3791
  processError({ issues: issue2.issues }, issue2.path);
3863
3792
  } else {
3864
- const fullpath = [...path6, ...issue2.path];
3793
+ const fullpath = [...path5, ...issue2.path];
3865
3794
  if (fullpath.length === 0) {
3866
3795
  result.errors.push(mapper(issue2));
3867
3796
  continue;
@@ -3893,8 +3822,8 @@ function treeifyError(error48, mapper = (issue2) => issue2.message) {
3893
3822
  }
3894
3823
  function toDotPath(_path) {
3895
3824
  const segs = [];
3896
- const path6 = _path.map((seg) => typeof seg === "object" ? seg.key : seg);
3897
- for (const seg of path6) {
3825
+ const path5 = _path.map((seg) => typeof seg === "object" ? seg.key : seg);
3826
+ for (const seg of path5) {
3898
3827
  if (typeof seg === "number")
3899
3828
  segs.push(`[${seg}]`);
3900
3829
  else if (typeof seg === "symbol")
@@ -15871,13 +15800,13 @@ function resolveRef(ref, ctx) {
15871
15800
  if (!ref.startsWith("#")) {
15872
15801
  throw new Error("External $ref is not supported, only local refs (#/...) are allowed");
15873
15802
  }
15874
- const path6 = ref.slice(1).split("/").filter(Boolean);
15875
- if (path6.length === 0) {
15803
+ const path5 = ref.slice(1).split("/").filter(Boolean);
15804
+ if (path5.length === 0) {
15876
15805
  return ctx.rootSchema;
15877
15806
  }
15878
15807
  const defsKey = ctx.version === "draft-2020-12" ? "$defs" : "definitions";
15879
- if (path6[0] === defsKey) {
15880
- const key = path6[1];
15808
+ if (path5[0] === defsKey) {
15809
+ const key = path5[1];
15881
15810
  if (!key || !ctx.defs[key]) {
15882
15811
  throw new Error(`Reference not found: ${ref}`);
15883
15812
  }
@@ -16282,11 +16211,11 @@ config(en_default());
16282
16211
  // ../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/index.js
16283
16212
  var zod_default = external_exports;
16284
16213
 
16285
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.3/node_modules/@boltapp/bolt-core/dist/data-table/schemas/views/display.js
16214
+ // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.14/node_modules/@boltapp/bolt-core/dist/data-table/schemas/views/display.js
16286
16215
  var TABLE_VIEW_DISPLAY_TYPES = ["table", "fileSystem", "cards"];
16287
16216
  var boltTableView = zod_default.enum(TABLE_VIEW_DISPLAY_TYPES);
16288
16217
 
16289
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.3/node_modules/@boltapp/bolt-core/dist/data-table/schemas/views/file-system-node.js
16218
+ // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.14/node_modules/@boltapp/bolt-core/dist/data-table/schemas/views/file-system-node.js
16290
16219
  var boltFileSystemNodeSchema = zod_default.lazy(() => zod_default.discriminatedUnion("type", [
16291
16220
  zod_default.object({
16292
16221
  id: zod_default.string(),
@@ -16301,7 +16230,7 @@ var boltFileSystemNodeSchema = zod_default.lazy(() => zod_default.discriminatedU
16301
16230
  })
16302
16231
  ]));
16303
16232
 
16304
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.3/node_modules/@boltapp/bolt-core/dist/data-table/schemas/views/display-config.js
16233
+ // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.14/node_modules/@boltapp/bolt-core/dist/data-table/schemas/views/display-config.js
16305
16234
  var boltTableColumnConfigSchema = zod_default.record(zod_default.string(), zod_default.object({
16306
16235
  // Column sizing
16307
16236
  size: zod_default.number().optional(),
@@ -16336,7 +16265,7 @@ var boltTableViewDisplayConfigSchema = zod_default.discriminatedUnion("type", [
16336
16265
  })
16337
16266
  ]);
16338
16267
 
16339
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.3/node_modules/@boltapp/bolt-core/dist/data-table/table-action-schemas.js
16268
+ // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.14/node_modules/@boltapp/bolt-core/dist/data-table/table-action-schemas.js
16340
16269
  var ACTION_TYPES = [
16341
16270
  "UPDATE_CELL",
16342
16271
  "ADD_ROW",
@@ -16589,7 +16518,7 @@ var BatchResponseSchema = zod_default.object({
16589
16518
  timestamp: zod_default.date()
16590
16519
  });
16591
16520
 
16592
- // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.6_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite3_f13d8938db1a5f59618ae6657194ac02/node_modules/@boltapp/bolt-app-db/dist/client/schema/table-schema.js
16521
+ // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.15_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite_0cec5eedc627d18299ac4dc34763c418/node_modules/@boltapp/bolt-app-db/dist/client/schema/table-schema.js
16593
16522
  import { relations as relations4 } from "drizzle-orm";
16594
16523
  import { index as index5, integer as integer7, sqliteTable as sqliteTable6, text as text6, uniqueIndex as uniqueIndex5 } from "drizzle-orm/sqlite-core";
16595
16524
  import { nanoid as nanoid8 } from "nanoid";
@@ -16863,19 +16792,19 @@ function createClientDataStoreAdapter(db, appId) {
16863
16792
  }
16864
16793
 
16865
16794
  // ../bolt-actions/dist/shared/file-storage.js
16866
- import fs2 from "fs/promises";
16867
- import path2 from "path";
16795
+ import fs from "fs/promises";
16796
+ import path from "path";
16868
16797
  import { customAlphabet } from "nanoid";
16869
16798
  var DEFAULT_BOLT_FILES_DIR = ".bolt/files";
16870
16799
  var shortId = customAlphabet("abcdefghijklmnopqrstuvwxyz0123456789", 8);
16871
16800
  function resolveBoltFilesRoot(customRoot) {
16872
- return path2.resolve(process.cwd(), customRoot ?? DEFAULT_BOLT_FILES_DIR);
16801
+ return path.resolve(process.cwd(), customRoot ?? DEFAULT_BOLT_FILES_DIR);
16873
16802
  }
16874
16803
  function createStoragePath(fileId, extension) {
16875
16804
  const shardA = fileId.slice(0, 2) || "00";
16876
16805
  const shardB = fileId.slice(2, 4) || "00";
16877
16806
  const ext = extension ? `.${extension.replace(/^\./, "")}` : "";
16878
- return path2.join("blobs", shardA, shardB, `${fileId}${ext}`);
16807
+ return path.join("blobs", shardA, shardB, `${fileId}${ext}`);
16879
16808
  }
16880
16809
  function createReadableFileId(fileName) {
16881
16810
  const baseName = fileName.replace(/\.[^.]+$/, "").trim();
@@ -16884,27 +16813,27 @@ function createReadableFileId(fileName) {
16884
16813
  return `${safeBase}-${shortId()}`;
16885
16814
  }
16886
16815
  async function writeStorageBytes(filesRoot, storagePath, bytes) {
16887
- const absolutePath = path2.join(filesRoot, storagePath);
16888
- await fs2.mkdir(path2.dirname(absolutePath), { recursive: true });
16889
- await fs2.writeFile(absolutePath, bytes);
16816
+ const absolutePath = path.join(filesRoot, storagePath);
16817
+ await fs.mkdir(path.dirname(absolutePath), { recursive: true });
16818
+ await fs.writeFile(absolutePath, bytes);
16890
16819
  }
16891
16820
  async function readStorageBytes(filesRoot, storagePath) {
16892
16821
  try {
16893
- const absolutePath = path2.join(filesRoot, storagePath);
16894
- return await fs2.readFile(absolutePath);
16822
+ const absolutePath = path.join(filesRoot, storagePath);
16823
+ return await fs.readFile(absolutePath);
16895
16824
  } catch {
16896
16825
  return null;
16897
16826
  }
16898
16827
  }
16899
16828
  async function removeStorageBytes(filesRoot, storagePath) {
16900
- const absolutePath = path2.join(filesRoot, storagePath);
16901
- await fs2.rm(absolutePath, { force: true });
16902
- const blobsRoot = path2.resolve(filesRoot, "blobs");
16903
- let currentDir = path2.dirname(absolutePath);
16829
+ const absolutePath = path.join(filesRoot, storagePath);
16830
+ await fs.rm(absolutePath, { force: true });
16831
+ const blobsRoot = path.resolve(filesRoot, "blobs");
16832
+ let currentDir = path.dirname(absolutePath);
16904
16833
  while (currentDir.startsWith(blobsRoot) && currentDir !== blobsRoot) {
16905
16834
  let entries = [];
16906
16835
  try {
16907
- entries = await fs2.readdir(currentDir);
16836
+ entries = await fs.readdir(currentDir);
16908
16837
  } catch {
16909
16838
  return;
16910
16839
  }
@@ -16912,11 +16841,11 @@ async function removeStorageBytes(filesRoot, storagePath) {
16912
16841
  return;
16913
16842
  }
16914
16843
  try {
16915
- await fs2.rmdir(currentDir);
16844
+ await fs.rmdir(currentDir);
16916
16845
  } catch {
16917
16846
  return;
16918
16847
  }
16919
- currentDir = path2.dirname(currentDir);
16848
+ currentDir = path.dirname(currentDir);
16920
16849
  }
16921
16850
  }
16922
16851
 
@@ -27467,13 +27396,13 @@ function createFileService(adapter) {
27467
27396
  };
27468
27397
  }
27469
27398
 
27470
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.5/node_modules/@boltapp/bolt-core/dist/data-table/constants.js
27399
+ // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.14/node_modules/@boltapp/bolt-core/dist/data-table/constants.js
27471
27400
  var DATA_TABLE_CONSTANTS = {
27472
27401
  /** Default column width in pixels */
27473
27402
  DEFAULT_COLUMN_WIDTH: 150
27474
27403
  };
27475
27404
 
27476
- // ../../node_modules/.pnpm/@boltapp+bolt-constants@0.0.2/node_modules/@boltapp/bolt-constants/dist/date-formats.js
27405
+ // ../../node_modules/.pnpm/@boltapp+bolt-constants@0.0.5/node_modules/@boltapp/bolt-constants/dist/date-formats.js
27477
27406
  var DATE_FORMATS = [
27478
27407
  { key: "m_d_yyyy", format: "M/d/yyyy", label: "1/31/2025", description: "Numeric US date" },
27479
27408
  { key: "m_d_yy", format: "M/d/yy", label: "1/31/25", description: "Numeric US date, short year" },
@@ -27575,7 +27504,7 @@ var DATE_FORMATS = [
27575
27504
  { key: "weekday_short", format: "EEE", label: "Fri", description: "Short weekday name" }
27576
27505
  ];
27577
27506
 
27578
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.5/node_modules/@boltapp/bolt-core/dist/inputs/input-format-registry.js
27507
+ // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.14/node_modules/@boltapp/bolt-core/dist/inputs/input-format-registry.js
27579
27508
  var dateFormatOptions = [
27580
27509
  { value: "auto", label: "Auto (relative)", description: "Today, Yesterday, Jan 31, etc." },
27581
27510
  ...DATE_FORMATS.map((f2) => ({
@@ -27585,7 +27514,7 @@ var dateFormatOptions = [
27585
27514
  }))
27586
27515
  ];
27587
27516
 
27588
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.5/node_modules/@boltapp/bolt-core/dist/files/schemas.js
27517
+ // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.14/node_modules/@boltapp/bolt-core/dist/files/schemas.js
27589
27518
  var fileRefSchema = external_exports.object({
27590
27519
  id: external_exports.string(),
27591
27520
  url: external_exports.string(),
@@ -27608,7 +27537,7 @@ var createFilePickerValueSchema = (meta3) => {
27608
27537
  return schema;
27609
27538
  };
27610
27539
 
27611
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.5/node_modules/@boltapp/bolt-core/dist/inputs/input-registry.js
27540
+ // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.14/node_modules/@boltapp/bolt-core/dist/inputs/input-registry.js
27612
27541
  var DATE_FORMAT_KEYS = DATE_FORMATS.map((f2) => f2.key);
27613
27542
  var boltInputMetaBaseSchema = zod_default.object({
27614
27543
  label: zod_default.string().optional(),
@@ -28536,355 +28465,7 @@ var validationRuleSchema = zod_default.union([
28536
28465
  })
28537
28466
  ]);
28538
28467
 
28539
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/collection/summarize-items.js
28540
- function summarizeItems2(data, key, itemsToShow) {
28541
- if (!data.length) {
28542
- return "No items";
28543
- }
28544
- const effectiveItemsToShow = itemsToShow && itemsToShow < data.length ? itemsToShow : data.length;
28545
- const itemsList = data.slice(0, effectiveItemsToShow).map((item) => item[key]).join(", ");
28546
- const remainingItemCount = data.length - effectiveItemsToShow;
28547
- return remainingItemCount > 0 ? `${itemsList} + ${remainingItemCount} other item${remainingItemCount > 1 ? "s" : ""}` : itemsList;
28548
- }
28549
-
28550
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/date/date-to-string.js
28551
- function dateToString2(date5) {
28552
- const dateString = date5 ? date5.toISOString().split("T")[0] : "";
28553
- return dateString ?? false;
28554
- }
28555
-
28556
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/date/format-date.js
28557
- var templateOptions2 = {
28558
- common: ["dd", "monthName", "yyyy"],
28559
- commonWithTime: ["dd", "monthName", "yyyy", "h", "m", "s"]
28560
- };
28561
- function formatDate2(date5, format2, join) {
28562
- const options = {
28563
- dd: date5.getDate().toString().padStart(2, "0"),
28564
- mm: (date5.getMonth() + 1).toString().padStart(2, "0"),
28565
- yy: date5.getFullYear().toString().slice(-2),
28566
- yyyy: date5.getFullYear().toString(),
28567
- dayName: date5.toLocaleString("en-US", { weekday: "long" }),
28568
- monthName: date5.toLocaleString("en-US", { month: "long" }),
28569
- h: date5.getHours().toString().padStart(2, "0"),
28570
- m: date5.getMinutes().toString().padStart(2, "0"),
28571
- s: date5.getSeconds().toString().padStart(2, "0")
28572
- };
28573
- if (typeof format2 === "string") {
28574
- return templateOptions2[format2].map((f2) => options[f2] || "").join(join ?? " ");
28575
- }
28576
- return format2.map((f2) => options[f2] || "").join(join ?? " ");
28577
- }
28578
-
28579
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/date/string-to-date.js
28580
- function stringToDate2(dateString = "") {
28581
- return new Date(dateString);
28582
- }
28583
-
28584
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/date/subtract-days.js
28585
- function subtractDays2(date5, days) {
28586
- const result = new Date(date5);
28587
- result.setDate(result.getDate() - days);
28588
- return result;
28589
- }
28590
-
28591
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/format/format-number.js
28592
- function formatNumber2(amount, currency, options) {
28593
- const { locale = "en-US", style = "currency", minimumFractionDigits = 0 } = options || {};
28594
- const formatter = new Intl.NumberFormat(locale, {
28595
- style,
28596
- currency: style === "currency" ? currency.toUpperCase() : void 0,
28597
- minimumFractionDigits
28598
- });
28599
- return formatter.format(amount / 100);
28600
- }
28601
-
28602
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/format/to-kebab-case.js
28603
- function toKebabCase2(input) {
28604
- if (!input) {
28605
- return "";
28606
- }
28607
- return input.trim().toLowerCase().replace(/\s+/g, "-").replace(/[^a-z0-9-]/g, "");
28608
- }
28609
-
28610
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/generation/generate-excerpt.js
28611
- function generateExcerpt2(content) {
28612
- const plainText = content.replace(/<\/?[^>]+(>|$)/g, "");
28613
- const normalizedText = plainText.replace(/\s+/g, " ").trim();
28614
- return normalizedText.slice(0, 200);
28615
- }
28616
-
28617
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/generation/generate-random-email.js
28618
- function generateRandomEmail2(length = 10) {
28619
- const chars = "abcdefghijklmnopqrstuvwxyz0123456789";
28620
- let randomString4 = "";
28621
- for (let i2 = 0; i2 < length; i2++) {
28622
- randomString4 += chars[Math.floor(Math.random() * chars.length)];
28623
- }
28624
- return `${randomString4}@test.com`;
28625
- }
28626
-
28627
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/generation/generate-sequence.js
28628
- function generateSequence2(length) {
28629
- return Array.from({ length }, (_, i2) => i2 + 1);
28630
- }
28631
-
28632
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/generation/generate-slug.js
28633
- function generateSlug2(text11) {
28634
- return text11.toLowerCase().trim().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
28635
- }
28636
-
28637
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/generation/random-string.js
28638
- function randomString3(size) {
28639
- if (size % 2 !== 0)
28640
- throw new Error("size must be even");
28641
- const i2hex = (i2) => ("0" + i2.toString(16)).slice(-2);
28642
- const r2 = (a2, i2) => a2 + i2hex(i2);
28643
- const bytes = crypto.getRandomValues(new Uint8Array(Math.ceil(size / 2)));
28644
- return Array.from(bytes).reduce(r2, "").slice(0, size);
28645
- }
28646
-
28647
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/is-current-path.js
28648
- function normalize2(path6) {
28649
- const basePath = path6.split("?")[0]?.split("#")[0] ?? "";
28650
- return basePath.replace(/\/+$/, "") || "/";
28651
- }
28652
- function isCurrentPath2(path6, url2) {
28653
- return normalize2(path6) === normalize2(url2);
28654
- }
28655
- function isPartOfCurrentPath2(path6, url2) {
28656
- const p2 = normalize2(path6);
28657
- const u2 = normalize2(url2);
28658
- if (u2 === "/")
28659
- return p2 === "/";
28660
- return p2 === u2 || p2.startsWith(`${u2}/`);
28661
- }
28662
-
28663
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/pretty/pretty-currency.js
28664
- function prettyCurrency2(props) {
28665
- const { value, currency, locale, fromCents, decimalPlaces = "2", round = false } = props;
28666
- let safeValue = (value ?? 0) / (fromCents ? 100 : 1);
28667
- if (round && decimalPlaces !== "all" && decimalPlaces !== "none") {
28668
- const places = Number(decimalPlaces);
28669
- safeValue = Number(safeValue.toFixed(places));
28670
- }
28671
- if (round && decimalPlaces === "none") {
28672
- safeValue = Math.round(safeValue);
28673
- }
28674
- let minimumFractionDigits;
28675
- let maximumFractionDigits;
28676
- switch (decimalPlaces) {
28677
- case "all":
28678
- break;
28679
- case "none":
28680
- minimumFractionDigits = 0;
28681
- maximumFractionDigits = 0;
28682
- break;
28683
- default:
28684
- const places = Number(decimalPlaces);
28685
- minimumFractionDigits = places;
28686
- maximumFractionDigits = places;
28687
- break;
28688
- }
28689
- return new Intl.NumberFormat(locale, {
28690
- style: "currency",
28691
- currency,
28692
- minimumFractionDigits,
28693
- maximumFractionDigits
28694
- }).format(safeValue);
28695
- }
28696
-
28697
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/pretty/pretty-date.js
28698
- function prettyDate2(date5, withHour = false) {
28699
- const parsed = typeof date5 === "string" ? new Date(date5) : date5;
28700
- if (!(parsed instanceof Date) || Number.isNaN(parsed.getTime())) {
28701
- return "Invalid date";
28702
- }
28703
- const hour = withHour ? format(parsed, "h:mm a") : "";
28704
- const now = /* @__PURE__ */ new Date();
28705
- const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
28706
- const target = new Date(parsed.getFullYear(), parsed.getMonth(), parsed.getDate());
28707
- const diffDays = Math.round((today.getTime() - target.getTime()) / 864e5);
28708
- if (isToday(parsed) || diffDays === 0)
28709
- return `Today ${hour}`.trim();
28710
- if (diffDays === 1)
28711
- return `Yesterday ${hour}`.trim();
28712
- if (diffDays === -1)
28713
- return `Tomorrow ${hour}`.trim();
28714
- if (isThisWeek(parsed))
28715
- return `${format(parsed, `EEEE`)} ${hour}`.trim();
28716
- if (isThisMonth(parsed))
28717
- return `${format(parsed, `MMM do`)} ${hour}`.trim();
28718
- if (isThisYear(parsed))
28719
- return `${format(parsed, `MMM do`)} ${hour}`.trim();
28720
- return `${format(parsed, `PP`)} ${hour}`.trim();
28721
- }
28722
-
28723
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/pretty/pretty-file-size.js
28724
- function prettyFileSize2(bytes) {
28725
- const KB = 1024;
28726
- const MB = KB * 1024;
28727
- const GB = MB * 1024;
28728
- if (bytes >= GB) {
28729
- return `${(bytes / GB).toFixed(2)} GB`;
28730
- } else if (bytes >= MB) {
28731
- return `${(bytes / MB).toFixed(2)} MB`;
28732
- } else if (bytes >= KB) {
28733
- return `${(bytes / KB).toFixed(2)} KB`;
28734
- } else {
28735
- return `${bytes} bytes`;
28736
- }
28737
- }
28738
-
28739
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/pretty/pretty-number.js
28740
- function prettyNumber2(props) {
28741
- const { value, locale } = props;
28742
- return new Intl.NumberFormat(locale).format(value ?? 0);
28743
- }
28744
-
28745
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/pretty/pretty-text.js
28746
- function prettyText2(input) {
28747
- if (!input)
28748
- return "";
28749
- const replacedString = input.replace(/_/g, " ");
28750
- const capitalizedString = replacedString.charAt(0).toUpperCase() + replacedString.slice(1);
28751
- return capitalizedString;
28752
- }
28753
-
28754
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/pretty/pretty-timestamp.js
28755
- function prettyTimeStamp2() {
28756
- const now = /* @__PURE__ */ new Date();
28757
- const day = now.toLocaleDateString("en-US", { weekday: "short" }).toLowerCase();
28758
- const date5 = now.getDate().toString().padStart(2, "0");
28759
- const month = now.toLocaleDateString("en-US", { month: "short" }).toLowerCase();
28760
- const year = now.getFullYear();
28761
- let hours = now.getHours();
28762
- const minutes = now.getMinutes().toString().padStart(2, "0");
28763
- const ampm = hours >= 12 ? "PM" : "AM";
28764
- hours = hours % 12 || 12;
28765
- const formattedHour = hours.toString().padStart(2, "0");
28766
- return `${day}-${date5}-${month}-${year}-${formattedHour}-${minutes}${ampm}`;
28767
- }
28768
-
28769
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/pretty/pretty-unit.js
28770
- function prettyUnit2(props) {
28771
- const { value, unit, locale } = props;
28772
- return new Intl.NumberFormat(locale, {
28773
- style: "unit",
28774
- unit
28775
- }).format(value ?? 0);
28776
- }
28777
-
28778
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/text/capitalize-first-letter.js
28779
- function capitalizeFirstLetter2(input) {
28780
- if (!input.length) {
28781
- return input;
28782
- }
28783
- return input.charAt(0).toUpperCase() + input.slice(1);
28784
- }
28785
-
28786
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/text/change-format.js
28787
- function changeFormat2(value) {
28788
- if (!value?.length) {
28789
- return "";
28790
- }
28791
- return `${value.charAt(0).toUpperCase()}${value.slice(1).replace(/_|-/g, " ")}`;
28792
- }
28793
-
28794
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/text/get-two-first-letters-from-string.js
28795
- function getTwoFirstLettersFromString2(input) {
28796
- if (!input) {
28797
- return "";
28798
- }
28799
- const words = input.trim().split(/\s+/);
28800
- if (!words.length) {
28801
- return "";
28802
- }
28803
- if (words.length === 1) {
28804
- if (!words[0]) {
28805
- return false;
28806
- }
28807
- return words[0].charAt(0);
28808
- }
28809
- if (!words[0] || !words[1]) {
28810
- return false;
28811
- }
28812
- return words[0].charAt(0) + words[1].charAt(0);
28813
- }
28814
-
28815
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/text/truncate.js
28816
- function truncate2(str, length) {
28817
- if (typeof str === "string" && str.length > length) {
28818
- return `${str.slice(0, length)}...`;
28819
- }
28820
- return str;
28821
- }
28822
-
28823
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/transform/convert-to-csv.js
28824
- function convertToCsv2({ data, schema, headers, options }) {
28825
- const escapeCsv = (value) => {
28826
- let str = value instanceof Date ? value.toISOString() : value == null ? "" : String(value);
28827
- return /[",\n]/.test(str) ? `"${str.replace(/"/g, '""')}"` : str;
28828
- };
28829
- if (data.length === 0)
28830
- return "";
28831
- const firstMapped = schema(data[0], 0);
28832
- const headerList = headers ? [...headers] : Object.keys(firstMapped);
28833
- const keySet = new Set(headerList);
28834
- const ensureSameKeys = (row, idx) => {
28835
- const rowKeys = Object.keys(row);
28836
- if (rowKeys.length !== headerList.length || rowKeys.some((k2) => !keySet.has(k2))) {
28837
- throw new Error(`Row ${idx} schema keys differ from headers. Expected [${headerList.join(", ")}], got [${rowKeys.join(", ")}].`);
28838
- }
28839
- };
28840
- const lines = [];
28841
- lines.push(headerList.join(","));
28842
- const limit = options?.maxRows ? Math.min(data.length, options.maxRows) : data.length;
28843
- for (let i2 = 0; i2 < limit; i2++) {
28844
- const mapped = schema(data[i2], i2);
28845
- ensureSameKeys(mapped, i2);
28846
- lines.push(headerList.map((h2) => escapeCsv(mapped[h2])).join(","));
28847
- }
28848
- return lines.join("\n");
28849
- }
28850
-
28851
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/url/decode-url-text.js
28852
- function decodeUrlText2(encodedText) {
28853
- return decodeURIComponent(encodedText);
28854
- }
28855
-
28856
- // ../../node_modules/.pnpm/@boltapp+bolt-helpers@0.0.6/node_modules/@boltapp/bolt-helpers/dist/index.js
28857
- var Helpers2 = {
28858
- isCurrentPath: isCurrentPath2,
28859
- isPartOfCurrentPath: isPartOfCurrentPath2,
28860
- capitalizeFirstLetter: capitalizeFirstLetter2,
28861
- generateExcerpt: generateExcerpt2,
28862
- prettyText: prettyText2,
28863
- prettyTimeStamp: prettyTimeStamp2,
28864
- prettyDate: prettyDate2,
28865
- prettyFileSize: prettyFileSize2,
28866
- prettyNumber: prettyNumber2,
28867
- prettyCurrency: prettyCurrency2,
28868
- prettyUnit: prettyUnit2,
28869
- formatDate: formatDate2,
28870
- toKebabCase: toKebabCase2,
28871
- formatNumber: formatNumber2,
28872
- randomString: randomString3,
28873
- generateSlug: generateSlug2,
28874
- generateRandomEmail: generateRandomEmail2,
28875
- generateSequence: generateSequence2,
28876
- convertToCsv: convertToCsv2,
28877
- changeFormat: changeFormat2,
28878
- truncate: truncate2,
28879
- getTwoFirstLettersFromString: getTwoFirstLettersFromString2,
28880
- summarizeItems: summarizeItems2,
28881
- decodeUrlText: decodeUrlText2,
28882
- subtractDays: subtractDays2,
28883
- stringToDate: stringToDate2,
28884
- dateToString: dateToString2
28885
- };
28886
-
28887
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.5/node_modules/@boltapp/bolt-core/dist/inputs/input-type-formatter.js
28468
+ // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.14/node_modules/@boltapp/bolt-core/dist/inputs/input-type-formatter.js
28888
28469
  var getInputTypeFormatter = {
28889
28470
  text: (value, _formatConfig) => {
28890
28471
  if (value == null)
@@ -28941,7 +28522,7 @@ var getInputTypeFormatter = {
28941
28522
  return String(value);
28942
28523
  if (formatConfig?.dateFormat) {
28943
28524
  if (formatConfig.dateFormat === "auto") {
28944
- return Helpers2.prettyDate(date5);
28525
+ return Helpers.prettyDate(date5);
28945
28526
  }
28946
28527
  const dateFormatObj = DATE_FORMATS.find((f2) => f2.key === formatConfig.dateFormat);
28947
28528
  if (dateFormatObj?.format) {
@@ -28968,7 +28549,7 @@ var getInputTypeFormatter = {
28968
28549
  return "";
28969
28550
  if (formatConfig?.dateFormat) {
28970
28551
  if (formatConfig.dateFormat === "auto") {
28971
- return Helpers2.prettyDate(d2);
28552
+ return Helpers.prettyDate(d2);
28972
28553
  }
28973
28554
  const dateFormatObj = DATE_FORMATS.find((f2) => f2.key === formatConfig.dateFormat);
28974
28555
  if (dateFormatObj?.format) {
@@ -29231,7 +28812,7 @@ var getInputTypeFormatter = {
29231
28812
  }
29232
28813
  };
29233
28814
 
29234
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.5/node_modules/@boltapp/bolt-core/dist/data-types/data-type-registry.js
28815
+ // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.14/node_modules/@boltapp/bolt-core/dist/data-types/data-type-registry.js
29235
28816
  var boltDataTypes = ["string", "number", "boolean", "enum", "array", "object"];
29236
28817
  var boltDataTypesSchema = external_exports.enum(boltDataTypes);
29237
28818
  var TRUTHY_STRING_VALUES = ["true", "yes", "1", "y", "on"];
@@ -29597,7 +29178,7 @@ var boltDataTypeRegistry = {
29597
29178
  }
29598
29179
  };
29599
29180
 
29600
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.5/node_modules/@boltapp/bolt-core/dist/inputs/input-type-handler.js
29181
+ // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.14/node_modules/@boltapp/bolt-core/dist/inputs/input-type-handler.js
29601
29182
  var inputTypeHandlerCache = /* @__PURE__ */ new Map();
29602
29183
  function getInputTypeHandler(inputType) {
29603
29184
  const cached2 = inputTypeHandlerCache.get(inputType);
@@ -29677,7 +29258,7 @@ function getInputTypeHandler(inputType) {
29677
29258
  return handler;
29678
29259
  }
29679
29260
 
29680
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.5/node_modules/@boltapp/bolt-core/dist/data-table/table-actions.js
29261
+ // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.14/node_modules/@boltapp/bolt-core/dist/data-table/table-actions.js
29681
29262
  import { nanoid as nanoid10 } from "nanoid";
29682
29263
  function createCellValue(rawInput, column, options) {
29683
29264
  const handler = getInputTypeHandler(column.schema.input.inputType);
@@ -31155,7 +30736,7 @@ function createClientBoltInstance(options) {
31155
30736
  };
31156
30737
  }
31157
30738
 
31158
- // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.6_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite3_f13d8938db1a5f59618ae6657194ac02/node_modules/@boltapp/bolt-app-db/dist/cloud-app/schema/index.js
30739
+ // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.15_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite_0cec5eedc627d18299ac4dc34763c418/node_modules/@boltapp/bolt-app-db/dist/cloud-app/schema/index.js
31159
30740
  var schema_exports2 = {};
31160
30741
  __export(schema_exports2, {
31161
30742
  appStatusEnum: () => appStatusEnum,
@@ -31178,12 +30759,12 @@ __export(schema_exports2, {
31178
30759
  projectsRelations: () => projectsRelations
31179
30760
  });
31180
30761
 
31181
- // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.6_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite3_f13d8938db1a5f59618ae6657194ac02/node_modules/@boltapp/bolt-app-db/dist/cloud-app/schema/data-store-schemas.js
30762
+ // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.15_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite_0cec5eedc627d18299ac4dc34763c418/node_modules/@boltapp/bolt-app-db/dist/cloud-app/schema/data-store-schemas.js
31182
30763
  import { relations as relations6 } from "drizzle-orm";
31183
30764
  import { index as index7, jsonb, pgTable as pgTable2, text as text8, timestamp as timestamp2, uniqueIndex as uniqueIndex7 } from "drizzle-orm/pg-core";
31184
30765
  import { nanoid as nanoid13 } from "nanoid";
31185
30766
 
31186
- // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.6_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite3_f13d8938db1a5f59618ae6657194ac02/node_modules/@boltapp/bolt-app-db/dist/cloud-app/schema/schema.js
30767
+ // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.15_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite_0cec5eedc627d18299ac4dc34763c418/node_modules/@boltapp/bolt-app-db/dist/cloud-app/schema/schema.js
31187
30768
  import { relations as relations5 } from "drizzle-orm";
31188
30769
  import { index as index6, pgEnum, pgTable, text as text7, timestamp, uniqueIndex as uniqueIndex6 } from "drizzle-orm/pg-core";
31189
30770
  import { nanoid as nanoid12 } from "nanoid";
@@ -31227,7 +30808,7 @@ var appsRelations = relations5(apps, ({ one }) => ({
31227
30808
  })
31228
30809
  }));
31229
30810
 
31230
- // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.6_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite3_f13d8938db1a5f59618ae6657194ac02/node_modules/@boltapp/bolt-app-db/dist/cloud-app/schema/data-store-schemas.js
30811
+ // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.15_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite_0cec5eedc627d18299ac4dc34763c418/node_modules/@boltapp/bolt-app-db/dist/cloud-app/schema/data-store-schemas.js
31231
30812
  var boltDataStores3 = pgTable2("bolt_data_stores", {
31232
30813
  id: text8("id").primaryKey().$defaultFn(() => nanoid13()),
31233
30814
  name: text8("name").notNull(),
@@ -31253,7 +30834,7 @@ var boltDataStoresRelations2 = relations6(boltDataStores3, ({ one }) => ({
31253
30834
  })
31254
30835
  }));
31255
30836
 
31256
- // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.6_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite3_f13d8938db1a5f59618ae6657194ac02/node_modules/@boltapp/bolt-app-db/dist/cloud-app/schema/data-table-schemas.js
30837
+ // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.15_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite_0cec5eedc627d18299ac4dc34763c418/node_modules/@boltapp/bolt-app-db/dist/cloud-app/schema/data-table-schemas.js
31257
30838
  import { relations as relations7 } from "drizzle-orm";
31258
30839
  import { boolean as boolean4, index as index8, integer as integer8, jsonb as jsonb2, pgEnum as pgEnum2, pgTable as pgTable3, serial, text as text9, timestamp as timestamp3, uniqueIndex as uniqueIndex8 } from "drizzle-orm/pg-core";
31259
30840
  import { nanoid as nanoid14 } from "nanoid";
@@ -31343,7 +30924,7 @@ var boltTableOpsRelations2 = relations7(boltTableOps3, ({ one }) => ({
31343
30924
  })
31344
30925
  }));
31345
30926
 
31346
- // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.6_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite3_f13d8938db1a5f59618ae6657194ac02/node_modules/@boltapp/bolt-app-db/dist/cloud-app/schema/file-schemas.js
30927
+ // ../../node_modules/.pnpm/@boltapp+bolt-app-db@0.0.15_@types+better-sqlite3@7.6.13_@types+pg@8.16.0_better-sqlite_0cec5eedc627d18299ac4dc34763c418/node_modules/@boltapp/bolt-app-db/dist/cloud-app/schema/file-schemas.js
31347
30928
  import { relations as relations8 } from "drizzle-orm";
31348
30929
  import { index as index9, integer as integer9, pgTable as pgTable4, text as text10, timestamp as timestamp4 } from "drizzle-orm/pg-core";
31349
30930
  import { nanoid as nanoid15 } from "nanoid";
@@ -31398,8 +30979,8 @@ import { eq as eq11 } from "drizzle-orm";
31398
30979
 
31399
30980
  // ../bolt-actions/dist/cloud/http-request.js
31400
30981
  var BoltPublicApiUnreachableError = class extends Error {
31401
- constructor(baseUrl, path6, cause) {
31402
- super(`Bolt Public API is unreachable at ${normalizeBaseUrl(baseUrl)} (request path: ${path6}). Start the public-api server or set BOLT_PUBLIC_API_URL to a reachable API host.`);
30982
+ constructor(baseUrl, path5, cause) {
30983
+ super(`Bolt Public API is unreachable at ${normalizeBaseUrl(baseUrl)} (request path: ${path5}). Start the public-api server or set BOLT_PUBLIC_API_URL to a reachable API host.`);
31403
30984
  this.name = "BoltPublicApiUnreachableError";
31404
30985
  this.cause = cause;
31405
30986
  }
@@ -31408,11 +30989,11 @@ var CloudHttpRequestError = class extends Error {
31408
30989
  status;
31409
30990
  path;
31410
30991
  responseText;
31411
- constructor(path6, status, responseText, message2) {
31412
- super(`Cloud HTTP request failed (${path6}): ${message2}`);
30992
+ constructor(path5, status, responseText, message2) {
30993
+ super(`Cloud HTTP request failed (${path5}): ${message2}`);
31413
30994
  this.name = "CloudHttpRequestError";
31414
30995
  this.status = status;
31415
- this.path = path6;
30996
+ this.path = path5;
31416
30997
  this.responseText = responseText;
31417
30998
  }
31418
30999
  };
@@ -31456,10 +31037,10 @@ function isNetworkUnreachableError(error48) {
31456
31037
  const codes = collectErrorCodes(error48);
31457
31038
  return networkLikeNames.has(error48.name) || codes.some((code) => networkLikeCodes.has(code));
31458
31039
  }
31459
- async function requestJson(context, path6, options = {}) {
31040
+ async function requestJson(context, path5, options = {}) {
31460
31041
  let response;
31461
31042
  try {
31462
- response = await fetch(`${normalizeBaseUrl(context.baseUrl)}${path6}`, {
31043
+ response = await fetch(`${normalizeBaseUrl(context.baseUrl)}${path5}`, {
31463
31044
  ...options,
31464
31045
  headers: buildCloudHeaders(context, {
31465
31046
  "Content-Type": "application/json",
@@ -31468,33 +31049,33 @@ async function requestJson(context, path6, options = {}) {
31468
31049
  });
31469
31050
  } catch (error48) {
31470
31051
  if (isNetworkUnreachableError(error48)) {
31471
- throw new BoltPublicApiUnreachableError(context.baseUrl, path6, error48);
31052
+ throw new BoltPublicApiUnreachableError(context.baseUrl, path5, error48);
31472
31053
  }
31473
31054
  throw error48;
31474
31055
  }
31475
31056
  if (!response.ok) {
31476
31057
  const text11 = await response.text();
31477
31058
  const message2 = parseHttpErrorMessage(response.status, text11);
31478
- throw new CloudHttpRequestError(path6, response.status, text11, message2);
31059
+ throw new CloudHttpRequestError(path5, response.status, text11, message2);
31479
31060
  }
31480
31061
  return await response.json();
31481
31062
  }
31482
- async function requestBlob(context, path6) {
31063
+ async function requestBlob(context, path5) {
31483
31064
  let response;
31484
31065
  try {
31485
- response = await fetch(`${normalizeBaseUrl(context.baseUrl)}${path6}`, {
31066
+ response = await fetch(`${normalizeBaseUrl(context.baseUrl)}${path5}`, {
31486
31067
  headers: buildCloudHeaders(context)
31487
31068
  });
31488
31069
  } catch (error48) {
31489
31070
  if (isNetworkUnreachableError(error48)) {
31490
- throw new BoltPublicApiUnreachableError(context.baseUrl, path6, error48);
31071
+ throw new BoltPublicApiUnreachableError(context.baseUrl, path5, error48);
31491
31072
  }
31492
31073
  throw error48;
31493
31074
  }
31494
31075
  if (!response.ok) {
31495
31076
  const text11 = await response.text();
31496
31077
  const message2 = parseHttpErrorMessage(response.status, text11);
31497
- throw new CloudHttpRequestError(path6, response.status, text11, message2);
31078
+ throw new CloudHttpRequestError(path5, response.status, text11, message2);
31498
31079
  }
31499
31080
  return response.blob();
31500
31081
  }
@@ -32131,15 +31712,15 @@ import { nanoid as nanoid18 } from "nanoid";
32131
31712
  var { boltTables: boltTables5, boltTableViews: boltTableViews5, boltTableOps: boltTableOps5 } = schema_exports2;
32132
31713
 
32133
31714
  // ../bolt-actions/dist/config.js
32134
- import fs3 from "fs";
32135
- import path3 from "path";
31715
+ import fs2 from "fs";
31716
+ import path2 from "path";
32136
31717
 
32137
31718
  // ../bolt-actions/dist/utils/get-schema-sql.js
32138
- import { exec as exec2 } from "child_process";
32139
- import { promisify as promisify2 } from "util";
32140
- var execAsync2 = promisify2(exec2);
31719
+ import { exec } from "child_process";
31720
+ import { promisify } from "util";
31721
+ var execAsync = promisify(exec);
32141
31722
 
32142
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.5/node_modules/@boltapp/bolt-core/dist/data-stores/data-store-actions.js
31723
+ // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.14/node_modules/@boltapp/bolt-core/dist/data-stores/data-store-actions.js
32143
31724
  var TEMPLATE_APP_CONFIG = {
32144
31725
  name: "app_config",
32145
31726
  label: "App Config",
@@ -32187,7 +31768,7 @@ var TEMPLATE_APP_CONFIG = {
32187
31768
  // },
32188
31769
  };
32189
31770
 
32190
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.5/node_modules/@boltapp/bolt-core/dist/data-stores/schemas.js
31771
+ // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.14/node_modules/@boltapp/bolt-core/dist/data-stores/schemas.js
32191
31772
  var dataStoreSchemaItemSchema = external_exports.object({
32192
31773
  id: external_exports.string(),
32193
31774
  label: external_exports.string(),
@@ -32233,67 +31814,13 @@ var createDataStoreInputSchema = external_exports.object({
32233
31814
  }).optional()
32234
31815
  });
32235
31816
 
32236
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.5/node_modules/@boltapp/bolt-core/dist/data-table/schemas/primitives/sorting.js
31817
+ // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.14/node_modules/@boltapp/bolt-core/dist/data-table/schemas/primitives/sorting.js
32237
31818
  var boltTableViewSortingSchema = zod_default.object({
32238
31819
  columnId: zod_default.string(),
32239
31820
  direction: zod_default.enum(["asc", "desc"])
32240
31821
  });
32241
31822
 
32242
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.5/node_modules/@boltapp/bolt-core/dist/data-table/schemas/views/display.js
32243
- var TABLE_VIEW_DISPLAY_TYPES2 = ["table", "fileSystem", "cards"];
32244
- var boltTableView2 = zod_default.enum(TABLE_VIEW_DISPLAY_TYPES2);
32245
-
32246
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.5/node_modules/@boltapp/bolt-core/dist/data-table/schemas/views/file-system-node.js
32247
- var boltFileSystemNodeSchema2 = zod_default.lazy(() => zod_default.discriminatedUnion("type", [
32248
- zod_default.object({
32249
- id: zod_default.string(),
32250
- type: zod_default.literal("folder"),
32251
- label: zod_default.string(),
32252
- items: zod_default.array(boltFileSystemNodeSchema2).optional()
32253
- }),
32254
- zod_default.object({
32255
- id: zod_default.string(),
32256
- type: zod_default.literal("rowRef"),
32257
- rowId: zod_default.string()
32258
- })
32259
- ]));
32260
-
32261
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.5/node_modules/@boltapp/bolt-core/dist/data-table/schemas/views/display-config.js
32262
- var boltTableColumnConfigSchema2 = zod_default.record(zod_default.string(), zod_default.object({
32263
- // Column sizing
32264
- size: zod_default.number().optional(),
32265
- minSize: zod_default.number().optional(),
32266
- maxSize: zod_default.number().optional(),
32267
- enableResizing: zod_default.boolean().optional(),
32268
- wrap: zod_default.boolean().optional(),
32269
- // Column-specific filters/formatting
32270
- customLabel: zod_default.string().optional()
32271
- // Override default label in this view
32272
- }));
32273
- var boltTableViewDisplayConfigSchema2 = zod_default.discriminatedUnion("type", [
32274
- zod_default.object({
32275
- type: zod_default.literal("table"),
32276
- view: zod_default.object({
32277
- config: boltTableColumnConfigSchema2
32278
- })
32279
- }),
32280
- zod_default.object({
32281
- type: zod_default.literal("cards"),
32282
- view: zod_default.object({})
32283
- }),
32284
- zod_default.object({
32285
- type: zod_default.literal("fileSystem"),
32286
- view: zod_default.object({
32287
- config: zod_default.object({
32288
- /** Column IDs to display for each row, in order */
32289
- visibleColumnIds: zod_default.array(zod_default.string())
32290
- }),
32291
- roots: zod_default.array(boltFileSystemNodeSchema2)
32292
- })
32293
- })
32294
- ]);
32295
-
32296
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.5/node_modules/@boltapp/bolt-core/dist/data-table/schemas/views/view.js
31823
+ // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.14/node_modules/@boltapp/bolt-core/dist/data-table/schemas/views/view.js
32297
31824
  var boltTableViewSchema = zod_default.object({
32298
31825
  /** The id is auto generated. It should not be used in the sdk, or queries that devs can use. */
32299
31826
  id: zod_default.string(),
@@ -32302,7 +31829,7 @@ var boltTableViewSchema = zod_default.object({
32302
31829
  label: zod_default.string(),
32303
31830
  tableId: zod_default.string(),
32304
31831
  description: zod_default.string().nullable().optional(),
32305
- display: boltTableView2,
31832
+ display: boltTableView,
32306
31833
  /** Column visibility and ordering */
32307
31834
  visibleColumnIds: zod_default.array(zod_default.string()),
32308
31835
  /** Sorting */
@@ -32319,13 +31846,13 @@ var boltTableViewSchema = zod_default.object({
32319
31846
  createdAt: zod_default.date().nullable(),
32320
31847
  updatedAt: zod_default.date().nullable(),
32321
31848
  /** Display-specific configuration (table grid, file system, etc.) */
32322
- displayConfig: boltTableViewDisplayConfigSchema2
31849
+ displayConfig: boltTableViewDisplayConfigSchema
32323
31850
  }).refine((v2) => v2.display === v2.displayConfig.type, {
32324
31851
  message: "display and displayConfig.type must match",
32325
31852
  path: ["displayConfig", "type"]
32326
31853
  });
32327
31854
 
32328
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.5/node_modules/@boltapp/bolt-core/dist/data-table/schemas/table/cell.js
31855
+ // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.14/node_modules/@boltapp/bolt-core/dist/data-table/schemas/table/cell.js
32329
31856
  var boltCellValueSchema = zod_default.object({
32330
31857
  /** Whatever was last written (Untrusted) */
32331
31858
  raw: zod_default.any(),
@@ -32335,7 +31862,7 @@ var boltCellValueSchema = zod_default.object({
32335
31862
  schemaVersion: zod_default.number()
32336
31863
  });
32337
31864
 
32338
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.5/node_modules/@boltapp/bolt-core/dist/data-table/schemas/table/column.js
31865
+ // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.14/node_modules/@boltapp/bolt-core/dist/data-table/schemas/table/column.js
32339
31866
  var boltColumnInputSchema = zod_default.discriminatedUnion("inputType", boltInputTypes.map((t8) => boltInputRegistry[t8].schema));
32340
31867
  var boltColumnFormatConfigSchema = zod_default.discriminatedUnion("inputType", boltInputTypes.map((t8) => boltInputRegistry[t8].formatConfigSchema.extend({ inputType: zod_default.literal(t8) }).loose()));
32341
31868
  var boltTableColumnSchema = zod_default.object({
@@ -32368,7 +31895,7 @@ var boltTableColumnSchema = zod_default.object({
32368
31895
  })
32369
31896
  });
32370
31897
 
32371
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.5/node_modules/@boltapp/bolt-core/dist/data-table/schemas/table/row.js
31898
+ // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.14/node_modules/@boltapp/bolt-core/dist/data-table/schemas/table/row.js
32372
31899
  var boltTableRowSchema = zod_default.object({
32373
31900
  id: zod_default.string(),
32374
31901
  index: zod_default.number(),
@@ -32386,7 +31913,7 @@ var boltTableRowSchema = zod_default.object({
32386
31913
  data: zod_default.record(zod_default.string(), boltCellValueSchema)
32387
31914
  });
32388
31915
 
32389
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.5/node_modules/@boltapp/bolt-core/dist/data-table/schemas/table/contracts.js
31916
+ // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.14/node_modules/@boltapp/bolt-core/dist/data-table/schemas/table/contracts.js
32390
31917
  var tablePropertiesSchema = zod_default.object({
32391
31918
  userId: zod_default.string().optional(),
32392
31919
  organizationId: zod_default.string().optional(),
@@ -32424,13 +31951,13 @@ var createViewInputSchema = zod_default.object({
32424
31951
  name: zod_default.string(),
32425
31952
  label: zod_default.string(),
32426
31953
  description: zod_default.string().optional(),
32427
- display: boltTableView2.optional(),
31954
+ display: boltTableView.optional(),
32428
31955
  visibleColumnIds: zod_default.array(zod_default.string()).optional(),
32429
31956
  sorting: zod_default.array(zod_default.object({ columnId: zod_default.string(), direction: zod_default.enum(["asc", "desc"]) })).nullable().optional(),
32430
31957
  showRowNumbers: zod_default.boolean().optional(),
32431
31958
  rowHeight: zod_default.number().nullable().optional(),
32432
31959
  createdBy: zod_default.string().optional(),
32433
- displayConfig: boltTableViewDisplayConfigSchema2.optional()
31960
+ displayConfig: boltTableViewDisplayConfigSchema.optional()
32434
31961
  });
32435
31962
  var updateViewInputSchema = zod_default.object({
32436
31963
  viewId: zod_default.string(),
@@ -32443,11 +31970,11 @@ var updateViewInputSchema = zod_default.object({
32443
31970
  density: zod_default.enum(["compact", "normal", "comfortable"]).optional(),
32444
31971
  showRowNumbers: zod_default.boolean().optional(),
32445
31972
  rowHeight: zod_default.number().optional(),
32446
- displayConfig: boltTableViewDisplayConfigSchema2.optional()
31973
+ displayConfig: boltTableViewDisplayConfigSchema.optional()
32447
31974
  })
32448
31975
  });
32449
31976
 
32450
- // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.5/node_modules/@boltapp/bolt-core/dist/data-table/schemas/table/table.js
31977
+ // ../../node_modules/.pnpm/@boltapp+bolt-core@0.0.14/node_modules/@boltapp/bolt-core/dist/data-table/schemas/table/table.js
32451
31978
  var boltTableSchema = zod_default.object({
32452
31979
  id: zod_default.string(),
32453
31980
  name: zod_default.string(),
@@ -33111,8 +32638,8 @@ var dataStoreRoutePatterns = {
33111
32638
 
33112
32639
  // ../bolt-api/dist/apis/app-public/routes.js
33113
32640
  var APP_DATA_STORES_BASE = "/app/data-stores";
33114
- function withBase(base, path6) {
33115
- return `${base}${path6}`;
32641
+ function withBase(base, path5) {
32642
+ return `${base}${path5}`;
33116
32643
  }
33117
32644
  var appPublicRoutePatterns = {
33118
32645
  app: {
@@ -33717,12 +33244,12 @@ function createDataTableRestHandler(api) {
33717
33244
  name: external_exports.string(),
33718
33245
  label: external_exports.string(),
33719
33246
  description: external_exports.string().optional(),
33720
- display: boltTableView2,
33247
+ display: boltTableView,
33721
33248
  visibleColumnIds: external_exports.array(external_exports.string()).optional(),
33722
33249
  sorting: external_exports.array(external_exports.object({ columnId: external_exports.string(), direction: external_exports.enum(["asc", "desc"]) })).nullable().optional(),
33723
33250
  showRowNumbers: external_exports.boolean().optional(),
33724
33251
  rowHeight: external_exports.number().nullable().optional(),
33725
- displayConfig: boltTableViewDisplayConfigSchema2
33252
+ displayConfig: boltTableViewDisplayConfigSchema
33726
33253
  })), async (c2) => {
33727
33254
  const { tableId } = c2.req.valid("param");
33728
33255
  const body = c2.req.valid("json");
@@ -33747,7 +33274,7 @@ function createDataTableRestHandler(api) {
33747
33274
  sorting: external_exports.array(external_exports.object({ columnId: external_exports.string(), direction: external_exports.enum(["asc", "desc"]) })).nullable().optional(),
33748
33275
  showRowNumbers: external_exports.boolean().optional(),
33749
33276
  rowHeight: external_exports.number().nullable().optional(),
33750
- displayConfig: boltTableViewDisplayConfigSchema2.optional()
33277
+ displayConfig: boltTableViewDisplayConfigSchema.optional()
33751
33278
  })), async (c2) => {
33752
33279
  const { viewId } = c2.req.valid("param");
33753
33280
  const updates = c2.req.valid("json");
@@ -33806,20 +33333,20 @@ var BOLT_CONFIG_FILE2 = "bolt.config.json";
33806
33333
  var BOLT_DB_FILE2 = "bolt.db";
33807
33334
 
33808
33335
  // ../bolt-core/dist/config/paths.js
33809
- import path4 from "path";
33336
+ import path3 from "path";
33810
33337
  function getConfigPath2(cwd = process.cwd()) {
33811
- return path4.join(cwd, BOLT_DIR2, BOLT_CONFIG_FILE2);
33338
+ return path3.join(cwd, BOLT_DIR2, BOLT_CONFIG_FILE2);
33812
33339
  }
33813
33340
  function getDbPath2(cwd = process.cwd()) {
33814
- return path4.join(cwd, BOLT_DIR2, BOLT_DB_FILE2);
33341
+ return path3.join(cwd, BOLT_DIR2, BOLT_DB_FILE2);
33815
33342
  }
33816
33343
 
33817
33344
  // ../bolt-core/dist/config/loader.js
33818
- import fs4 from "fs/promises";
33345
+ import fs3 from "fs/promises";
33819
33346
  async function loadBoltConfig(projectPath) {
33820
33347
  const configPath = getConfigPath2(projectPath);
33821
33348
  try {
33822
- const content = await fs4.readFile(configPath, "utf-8");
33349
+ const content = await fs3.readFile(configPath, "utf-8");
33823
33350
  const config2 = JSON.parse(content);
33824
33351
  if (!config2.appId || !config2.type) {
33825
33352
  throw new Error("Invalid bolt.config.json: missing appId or type");
@@ -33847,15 +33374,15 @@ import { serve } from "@hono/node-server";
33847
33374
  import { serveStatic } from "@hono/node-server/serve-static";
33848
33375
  import Database from "better-sqlite3";
33849
33376
  import { config as loadEnv } from "dotenv";
33850
- import fs5 from "fs";
33377
+ import fs4 from "fs";
33851
33378
  import { Hono as Hono4 } from "hono";
33852
33379
  import { cors } from "hono/cors";
33853
- import path5 from "path";
33854
- import { fileURLToPath as fileURLToPath2 } from "url";
33380
+ import path4 from "path";
33381
+ import { fileURLToPath } from "url";
33855
33382
  async function createDashboardServer(options) {
33856
33383
  const { projectPath, port, host = "127.0.0.1", uiPath } = options;
33857
- loadEnv({ path: path5.join(projectPath, ".env") });
33858
- loadEnv({ path: path5.join(projectPath, ".env.local") });
33384
+ loadEnv({ path: path4.join(projectPath, ".env") });
33385
+ loadEnv({ path: path4.join(projectPath, ".env.local") });
33859
33386
  const config2 = await loadBoltConfig(projectPath);
33860
33387
  let bolt;
33861
33388
  let sqlite = null;
@@ -34045,11 +33572,11 @@ function isDashboardAuthBypassEnabled() {
34045
33572
  return process.env.BOLT_DASHBOARD_AUTH_BYPASS?.trim().toLowerCase() === "true";
34046
33573
  }
34047
33574
  function resolveDefaultUiPath() {
34048
- const __filename = fileURLToPath2(import.meta.url);
34049
- const __dirname2 = path5.dirname(__filename);
34050
- const distUiFromDistServer = path5.resolve(__dirname2, "..", "ui");
34051
- const distUiFromSrcServer = path5.resolve(__dirname2, "..", "..", "dist", "ui");
34052
- if (fs5.existsSync(distUiFromDistServer)) return distUiFromDistServer;
33575
+ const __filename = fileURLToPath(import.meta.url);
33576
+ const __dirname2 = path4.dirname(__filename);
33577
+ const distUiFromDistServer = path4.resolve(__dirname2, "..", "ui");
33578
+ const distUiFromSrcServer = path4.resolve(__dirname2, "..", "..", "dist", "ui");
33579
+ if (fs4.existsSync(distUiFromDistServer)) return distUiFromDistServer;
34053
33580
  return distUiFromSrcServer;
34054
33581
  }
34055
33582
  function buildTrustedOriginsFromEnv() {