create-better-fullstack 2.0.3 → 2.1.1

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.
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env node
2
+ import { O as getPrimaryGraphPart } from "./errors-D9yiiGVq.mjs";
3
+ import { log, spinner } from "@clack/prompts";
4
+ import pc from "picocolors";
5
+ import path from "node:path";
6
+ import { $ } from "execa";
7
+
8
+ //#region src/utils/command-exists.ts
9
+ async function commandExists(command) {
10
+ try {
11
+ if (process.platform === "win32") return (await $({ reject: false })`where ${command}`).exitCode === 0;
12
+ return (await $({ reject: false })`which ${command}`).exitCode === 0;
13
+ } catch {
14
+ return false;
15
+ }
16
+ }
17
+
18
+ //#endregion
19
+ //#region src/utils/generated-checks.ts
20
+ function getGraphTarget(config) {
21
+ const backend = getPrimaryGraphPart(config, "backend");
22
+ if (!backend || backend.ecosystem === "typescript" || backend.ecosystem === "react-native" || backend.ecosystem === "universal") return null;
23
+ return {
24
+ ecosystem: backend.ecosystem,
25
+ projectDir: path.join(config.projectDir, backend.targetPath ?? "apps/server")
26
+ };
27
+ }
28
+ function getSingleEcosystemTarget(config) {
29
+ if (config.ecosystem === "typescript" || config.ecosystem === "react-native" || config.ecosystem === "java") return null;
30
+ return {
31
+ ecosystem: config.ecosystem,
32
+ projectDir: config.projectDir
33
+ };
34
+ }
35
+ async function runCommand(cwd, command, args) {
36
+ await $({
37
+ cwd,
38
+ stdout: "inherit",
39
+ stderr: "inherit"
40
+ })`${command} ${args}`;
41
+ }
42
+ async function verifyTarget(target) {
43
+ const s = spinner();
44
+ const cwd = target.projectDir;
45
+ switch (target.ecosystem) {
46
+ case "go":
47
+ s.start("Verifying generated Go server...");
48
+ await runCommand(cwd, "go", ["mod", "tidy"]);
49
+ await runCommand(cwd, "go", ["test", "./..."]);
50
+ s.stop("Generated Go server checks passed");
51
+ return;
52
+ case "rust":
53
+ s.start("Verifying generated Rust server...");
54
+ await runCommand(cwd, "cargo", ["check"]);
55
+ s.stop("Generated Rust server checks passed");
56
+ return;
57
+ case "python":
58
+ s.start("Verifying generated Python server...");
59
+ await runCommand(cwd, "uv", ["sync"]);
60
+ await runCommand(cwd, "uv", [
61
+ "run",
62
+ "ruff",
63
+ "check",
64
+ "."
65
+ ]);
66
+ s.stop("Generated Python server checks passed");
67
+ return;
68
+ case "elixir":
69
+ if (!await commandExists("mix")) {
70
+ log.warn(pc.yellow("Skipping Elixir verification because mix is not on PATH"));
71
+ return;
72
+ }
73
+ s.start("Verifying generated Elixir server...");
74
+ await runCommand(cwd, "mix", ["deps.get"]);
75
+ await runCommand(cwd, "mix", ["compile"]);
76
+ s.stop("Generated Elixir server checks passed");
77
+ return;
78
+ default: log.warn(pc.yellow(`No generated checks are configured for ${target.ecosystem}`));
79
+ }
80
+ }
81
+ async function runGeneratedChecks(config) {
82
+ const target = getGraphTarget(config) ?? getSingleEcosystemTarget(config);
83
+ if (!target) {
84
+ log.warn(pc.yellow("No generated checks are configured for this stack"));
85
+ return;
86
+ }
87
+ await verifyTarget(target);
88
+ }
89
+
90
+ //#endregion
91
+ export { commandExists as n, runGeneratedChecks as t };
package/dist/index.d.mts CHANGED
@@ -8,6 +8,21 @@ import { EMBEDDED_TEMPLATES, GeneratorOptions, GeneratorResult, TEMPLATE_COUNT,
8
8
 
9
9
  import * as import__better_fullstack_types from "@better-fullstack/types";
10
10
  //#endregion
11
+ //#region src/helpers/core/install-dependencies.d.ts
12
+ /**
13
+ * Result of a post-scaffold setup step (dependency install, native build, db setup).
14
+ * Steps still log their own errors, but no longer swallow failure silently — callers
15
+ * collect these so the CLI reports an accurate final status instead of always
16
+ * printing "Project created successfully" on top of a broken install.
17
+ */
18
+ interface SetupStepResult {
19
+ /** Human-readable step name, e.g. "Install dependencies". */
20
+ step: string;
21
+ success: boolean;
22
+ /** Present when success is false. */
23
+ errorMessage?: string;
24
+ }
25
+ //#endregion
11
26
  //#region src/helpers/core/add-handler.d.ts
12
27
  interface AddResult {
13
28
  success: boolean;
@@ -27,6 +42,8 @@ declare const router: {
27
42
  t3: "t3";
28
43
  uniwind: "uniwind";
29
44
  }>>;
45
+ fromHistory: z.ZodOptional<z.ZodNumber>;
46
+ config: z.ZodOptional<z.ZodString>;
30
47
  yes: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
31
48
  yolo: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
32
49
  part: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -217,6 +234,7 @@ declare const router: {
217
234
  strapi: "strapi";
218
235
  tinacms: "tinacms";
219
236
  directus: "directus";
237
+ keystatic: "keystatic";
220
238
  }>>;
221
239
  caching: z.ZodOptional<z.ZodEnum<{
222
240
  none: "none";
@@ -229,6 +247,7 @@ declare const router: {
229
247
  }>>;
230
248
  i18n: z.ZodOptional<z.ZodEnum<{
231
249
  none: "none";
250
+ paraglide: "paraglide";
232
251
  i18next: "i18next";
233
252
  "next-intl": "next-intl";
234
253
  }>>;
@@ -237,8 +256,16 @@ declare const router: {
237
256
  meilisearch: "meilisearch";
238
257
  typesense: "typesense";
239
258
  elasticsearch: "elasticsearch";
259
+ opensearch: "opensearch";
240
260
  algolia: "algolia";
241
261
  }>>;
262
+ vectorDb: z.ZodOptional<z.ZodEnum<{
263
+ none: "none";
264
+ pgvector: "pgvector";
265
+ qdrant: "qdrant";
266
+ chroma: "chroma";
267
+ pinecone: "pinecone";
268
+ }>>;
242
269
  fileStorage: z.ZodOptional<z.ZodEnum<{
243
270
  none: "none";
244
271
  s3: "s3";
@@ -334,7 +361,9 @@ declare const router: {
334
361
  "tanstack-db": "tanstack-db";
335
362
  "tanstack-pacer": "tanstack-pacer";
336
363
  "backend-utils": "backend-utils";
364
+ devcontainer: "devcontainer";
337
365
  "docker-compose": "docker-compose";
366
+ "github-actions": "github-actions";
338
367
  }>>>;
339
368
  examples: z.ZodOptional<z.ZodArray<z.ZodEnum<{
340
369
  none: "none";
@@ -394,6 +423,7 @@ declare const router: {
394
423
  "ts-rest": "ts-rest";
395
424
  garph: "garph";
396
425
  "graphql-yoga": "graphql-yoga";
426
+ "apollo-server": "apollo-server";
397
427
  openapi: "openapi";
398
428
  }>>;
399
429
  cssFramework: z.ZodOptional<z.ZodEnum<{
@@ -992,7 +1022,7 @@ declare const router: {
992
1022
  backend: "none" | "hono" | "express" | "fastify" | "elysia" | "fets" | "nestjs" | "adonisjs" | "nitro" | "encore" | "convex" | "self";
993
1023
  runtime: "none" | "bun" | "node" | "workers";
994
1024
  frontend: ("none" | "tanstack-router" | "react-router" | "react-vite" | "tanstack-start" | "next" | "vinext" | "nuxt" | "native-bare" | "native-uniwind" | "native-unistyles" | "svelte" | "solid" | "solid-start" | "astro" | "qwik" | "angular" | "redwood" | "fresh")[];
995
- addons: ("none" | "pwa" | "tauri" | "starlight" | "biome" | "lefthook" | "husky" | "ruler" | "mcp" | "skills" | "turborepo" | "nx" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "msw" | "storybook" | "swr" | "tanstack-query" | "tanstack-table" | "tanstack-virtual" | "tanstack-db" | "tanstack-pacer" | "backend-utils" | "docker-compose")[];
1025
+ addons: ("none" | "pwa" | "tauri" | "starlight" | "biome" | "lefthook" | "husky" | "ruler" | "mcp" | "skills" | "turborepo" | "nx" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "msw" | "storybook" | "swr" | "tanstack-query" | "tanstack-table" | "tanstack-virtual" | "tanstack-db" | "tanstack-pacer" | "backend-utils" | "devcontainer" | "docker-compose" | "github-actions")[];
996
1026
  examples: ("ai" | "none" | "chat-sdk" | "tanstack-showcase")[];
997
1027
  auth: "none" | "better-auth" | "better-auth-organizations" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0" | "workos" | "kinde";
998
1028
  payments: "none" | "polar" | "stripe" | "lemon-squeezy" | "paddle" | "dodo";
@@ -1001,7 +1031,7 @@ declare const router: {
1001
1031
  versionChannel: "stable" | "latest" | "beta";
1002
1032
  install: boolean;
1003
1033
  dbSetup: "none" | "turso" | "neon" | "prisma-postgres" | "planetscale" | "mongodb-atlas" | "supabase" | "upstash" | "d1" | "docker";
1004
- api: "none" | "trpc" | "orpc" | "ts-rest" | "garph" | "graphql-yoga" | "openapi";
1034
+ api: "none" | "trpc" | "orpc" | "ts-rest" | "garph" | "graphql-yoga" | "apollo-server" | "openapi";
1005
1035
  webDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "render" | "netlify" | "sst" | "vercel";
1006
1036
  serverDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "render" | "netlify" | "sst" | "vercel";
1007
1037
  ai: "none" | "langgraph" | "google-adk" | "langchain" | "llamaindex" | "vercel-ai" | "mastra" | "voltagent" | "openai-agents" | "modelfusion" | "tanstack-ai" | "ai-cli";
@@ -1021,11 +1051,12 @@ declare const router: {
1021
1051
  observability: "none" | "opentelemetry" | "sentry" | "grafana" | "datadog" | "axiom" | "betterstack";
1022
1052
  featureFlags: "none" | "growthbook" | "posthog" | "launchdarkly" | "flagsmith" | "unleash";
1023
1053
  analytics: "none" | "plausible" | "umami";
1024
- cms: "none" | "payload" | "sanity" | "strapi" | "tinacms" | "directus";
1054
+ cms: "none" | "payload" | "sanity" | "strapi" | "tinacms" | "directus" | "keystatic";
1025
1055
  caching: "none" | "upstash-redis";
1026
1056
  rateLimit: "none" | "arcjet" | "upstash-ratelimit";
1027
- i18n: "none" | "i18next" | "next-intl";
1028
- search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "algolia";
1057
+ i18n: "none" | "paraglide" | "i18next" | "next-intl";
1058
+ search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "opensearch" | "algolia";
1059
+ vectorDb: "none" | "pgvector" | "qdrant" | "chroma" | "pinecone";
1029
1060
  fileStorage: "none" | "s3" | "r2" | "cloudinary";
1030
1061
  mobileNavigation: "none" | "expo-router" | "react-navigation";
1031
1062
  mobileUI: "none" | "uniwind" | "tamagui" | "gluestack-ui" | "unistyles";
@@ -1039,7 +1070,7 @@ declare const router: {
1039
1070
  rustOrm: "none" | "sea-orm" | "sqlx" | "diesel";
1040
1071
  rustApi: "none" | "tonic" | "async-graphql";
1041
1072
  rustCli: "none" | "clap" | "ratatui";
1042
- rustLibraries: ("none" | "serde" | "uuid" | "chrono" | "reqwest" | "config" | "dashmap" | "parking-lot" | "secrecy" | "tokio-util" | "utoipa" | "validator" | "jsonwebtoken" | "argon2" | "tokio-test" | "mockall" | "proptest" | "insta")[];
1073
+ rustLibraries: ("config" | "none" | "serde" | "uuid" | "chrono" | "reqwest" | "dashmap" | "parking-lot" | "secrecy" | "tokio-util" | "utoipa" | "validator" | "jsonwebtoken" | "argon2" | "tokio-test" | "mockall" | "proptest" | "insta")[];
1043
1074
  rustLogging: "none" | "tracing" | "env-logger";
1044
1075
  rustErrorHandling: "none" | "anyhow-thiserror" | "eyre";
1045
1076
  rustCaching: "none" | "redis" | "moka";
@@ -1120,7 +1151,7 @@ declare const router: {
1120
1151
  shadcnRadius?: "default" | "none" | "small" | "medium" | "large" | undefined;
1121
1152
  stackParts?: {
1122
1153
  id: string;
1123
- role: "api" | "runtime" | "backend" | "database" | "orm" | "dbSetup" | "auth" | "payments" | "email" | "fileUpload" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "realtime" | "jobQueue" | "caching" | "rateLimit" | "i18n" | "search" | "fileStorage" | "animation" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "examples" | "ai" | "effect" | "frontend" | "config" | "mobile" | "deploy" | "navigation" | "ui" | "css" | "storage" | "appPlatform" | "dataFetching" | "workspaceTooling" | "buildTool" | "cli" | "errorHandling" | "httpClient" | "libraries" | "templating";
1154
+ role: "api" | "runtime" | "backend" | "database" | "orm" | "dbSetup" | "auth" | "payments" | "email" | "fileUpload" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "realtime" | "jobQueue" | "caching" | "rateLimit" | "i18n" | "search" | "vectorDb" | "fileStorage" | "animation" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "examples" | "ai" | "effect" | "config" | "frontend" | "mobile" | "deploy" | "navigation" | "ui" | "css" | "storage" | "appPlatform" | "dataFetching" | "workspaceTooling" | "buildTool" | "cli" | "errorHandling" | "httpClient" | "libraries" | "templating";
1124
1155
  toolId: string;
1125
1156
  ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir" | "dotnet" | "universal";
1126
1157
  source: "selected" | "defaulted" | "provided" | "legacy" | "adjusted";
@@ -1139,6 +1170,7 @@ declare const router: {
1139
1170
  fileCount: number;
1140
1171
  directoryCount: number;
1141
1172
  files: string[];
1173
+ setupFailures?: undefined;
1142
1174
  error?: undefined;
1143
1175
  } | {
1144
1176
  success: boolean;
@@ -1152,7 +1184,7 @@ declare const router: {
1152
1184
  backend: "none" | "hono" | "express" | "fastify" | "elysia" | "fets" | "nestjs" | "adonisjs" | "nitro" | "encore" | "convex" | "self";
1153
1185
  runtime: "none" | "bun" | "node" | "workers";
1154
1186
  frontend: ("none" | "tanstack-router" | "react-router" | "react-vite" | "tanstack-start" | "next" | "vinext" | "nuxt" | "native-bare" | "native-uniwind" | "native-unistyles" | "svelte" | "solid" | "solid-start" | "astro" | "qwik" | "angular" | "redwood" | "fresh")[];
1155
- addons: ("none" | "pwa" | "tauri" | "starlight" | "biome" | "lefthook" | "husky" | "ruler" | "mcp" | "skills" | "turborepo" | "nx" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "msw" | "storybook" | "swr" | "tanstack-query" | "tanstack-table" | "tanstack-virtual" | "tanstack-db" | "tanstack-pacer" | "backend-utils" | "docker-compose")[];
1187
+ addons: ("none" | "pwa" | "tauri" | "starlight" | "biome" | "lefthook" | "husky" | "ruler" | "mcp" | "skills" | "turborepo" | "nx" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "msw" | "storybook" | "swr" | "tanstack-query" | "tanstack-table" | "tanstack-virtual" | "tanstack-db" | "tanstack-pacer" | "backend-utils" | "devcontainer" | "docker-compose" | "github-actions")[];
1156
1188
  examples: ("ai" | "none" | "chat-sdk" | "tanstack-showcase")[];
1157
1189
  auth: "none" | "better-auth" | "better-auth-organizations" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0" | "workos" | "kinde";
1158
1190
  payments: "none" | "polar" | "stripe" | "lemon-squeezy" | "paddle" | "dodo";
@@ -1161,7 +1193,7 @@ declare const router: {
1161
1193
  versionChannel: "stable" | "latest" | "beta";
1162
1194
  install: boolean;
1163
1195
  dbSetup: "none" | "turso" | "neon" | "prisma-postgres" | "planetscale" | "mongodb-atlas" | "supabase" | "upstash" | "d1" | "docker";
1164
- api: "none" | "trpc" | "orpc" | "ts-rest" | "garph" | "graphql-yoga" | "openapi";
1196
+ api: "none" | "trpc" | "orpc" | "ts-rest" | "garph" | "graphql-yoga" | "apollo-server" | "openapi";
1165
1197
  webDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "render" | "netlify" | "sst" | "vercel";
1166
1198
  serverDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "render" | "netlify" | "sst" | "vercel";
1167
1199
  ai: "none" | "langgraph" | "google-adk" | "langchain" | "llamaindex" | "vercel-ai" | "mastra" | "voltagent" | "openai-agents" | "modelfusion" | "tanstack-ai" | "ai-cli";
@@ -1181,11 +1213,12 @@ declare const router: {
1181
1213
  observability: "none" | "opentelemetry" | "sentry" | "grafana" | "datadog" | "axiom" | "betterstack";
1182
1214
  featureFlags: "none" | "growthbook" | "posthog" | "launchdarkly" | "flagsmith" | "unleash";
1183
1215
  analytics: "none" | "plausible" | "umami";
1184
- cms: "none" | "payload" | "sanity" | "strapi" | "tinacms" | "directus";
1216
+ cms: "none" | "payload" | "sanity" | "strapi" | "tinacms" | "directus" | "keystatic";
1185
1217
  caching: "none" | "upstash-redis";
1186
1218
  rateLimit: "none" | "arcjet" | "upstash-ratelimit";
1187
- i18n: "none" | "i18next" | "next-intl";
1188
- search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "algolia";
1219
+ i18n: "none" | "paraglide" | "i18next" | "next-intl";
1220
+ search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "opensearch" | "algolia";
1221
+ vectorDb: "none" | "pgvector" | "qdrant" | "chroma" | "pinecone";
1189
1222
  fileStorage: "none" | "s3" | "r2" | "cloudinary";
1190
1223
  mobileNavigation: "none" | "expo-router" | "react-navigation";
1191
1224
  mobileUI: "none" | "uniwind" | "tamagui" | "gluestack-ui" | "unistyles";
@@ -1199,7 +1232,7 @@ declare const router: {
1199
1232
  rustOrm: "none" | "sea-orm" | "sqlx" | "diesel";
1200
1233
  rustApi: "none" | "tonic" | "async-graphql";
1201
1234
  rustCli: "none" | "clap" | "ratatui";
1202
- rustLibraries: ("none" | "serde" | "uuid" | "chrono" | "reqwest" | "config" | "dashmap" | "parking-lot" | "secrecy" | "tokio-util" | "utoipa" | "validator" | "jsonwebtoken" | "argon2" | "tokio-test" | "mockall" | "proptest" | "insta")[];
1235
+ rustLibraries: ("config" | "none" | "serde" | "uuid" | "chrono" | "reqwest" | "dashmap" | "parking-lot" | "secrecy" | "tokio-util" | "utoipa" | "validator" | "jsonwebtoken" | "argon2" | "tokio-test" | "mockall" | "proptest" | "insta")[];
1203
1236
  rustLogging: "none" | "tracing" | "env-logger";
1204
1237
  rustErrorHandling: "none" | "anyhow-thiserror" | "eyre";
1205
1238
  rustCaching: "none" | "redis" | "moka";
@@ -1280,7 +1313,7 @@ declare const router: {
1280
1313
  shadcnRadius?: "default" | "none" | "small" | "medium" | "large" | undefined;
1281
1314
  stackParts?: {
1282
1315
  id: string;
1283
- role: "api" | "runtime" | "backend" | "database" | "orm" | "dbSetup" | "auth" | "payments" | "email" | "fileUpload" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "realtime" | "jobQueue" | "caching" | "rateLimit" | "i18n" | "search" | "fileStorage" | "animation" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "examples" | "ai" | "effect" | "frontend" | "config" | "mobile" | "deploy" | "navigation" | "ui" | "css" | "storage" | "appPlatform" | "dataFetching" | "workspaceTooling" | "buildTool" | "cli" | "errorHandling" | "httpClient" | "libraries" | "templating";
1316
+ role: "api" | "runtime" | "backend" | "database" | "orm" | "dbSetup" | "auth" | "payments" | "email" | "fileUpload" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "realtime" | "jobQueue" | "caching" | "rateLimit" | "i18n" | "search" | "vectorDb" | "fileStorage" | "animation" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "examples" | "ai" | "effect" | "config" | "frontend" | "mobile" | "deploy" | "navigation" | "ui" | "css" | "storage" | "appPlatform" | "dataFetching" | "workspaceTooling" | "buildTool" | "cli" | "errorHandling" | "httpClient" | "libraries" | "templating";
1284
1317
  toolId: string;
1285
1318
  ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir" | "dotnet" | "universal";
1286
1319
  source: "selected" | "defaulted" | "provided" | "legacy" | "adjusted";
@@ -1295,6 +1328,7 @@ declare const router: {
1295
1328
  elapsedTimeMs: number;
1296
1329
  projectDirectory: string;
1297
1330
  relativePath: string;
1331
+ setupFailures: SetupStepResult[];
1298
1332
  dryRun?: undefined;
1299
1333
  fileCount?: undefined;
1300
1334
  directoryCount?: undefined;
@@ -1313,6 +1347,7 @@ declare const router: {
1313
1347
  fileCount?: undefined;
1314
1348
  directoryCount?: undefined;
1315
1349
  files?: undefined;
1350
+ setupFailures?: undefined;
1316
1351
  } | undefined, {
1317
1352
  success: boolean;
1318
1353
  projectConfig: {
@@ -1325,7 +1360,7 @@ declare const router: {
1325
1360
  backend: "none" | "hono" | "express" | "fastify" | "elysia" | "fets" | "nestjs" | "adonisjs" | "nitro" | "encore" | "convex" | "self";
1326
1361
  runtime: "none" | "bun" | "node" | "workers";
1327
1362
  frontend: ("none" | "tanstack-router" | "react-router" | "react-vite" | "tanstack-start" | "next" | "vinext" | "nuxt" | "native-bare" | "native-uniwind" | "native-unistyles" | "svelte" | "solid" | "solid-start" | "astro" | "qwik" | "angular" | "redwood" | "fresh")[];
1328
- addons: ("none" | "pwa" | "tauri" | "starlight" | "biome" | "lefthook" | "husky" | "ruler" | "mcp" | "skills" | "turborepo" | "nx" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "msw" | "storybook" | "swr" | "tanstack-query" | "tanstack-table" | "tanstack-virtual" | "tanstack-db" | "tanstack-pacer" | "backend-utils" | "docker-compose")[];
1363
+ addons: ("none" | "pwa" | "tauri" | "starlight" | "biome" | "lefthook" | "husky" | "ruler" | "mcp" | "skills" | "turborepo" | "nx" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "msw" | "storybook" | "swr" | "tanstack-query" | "tanstack-table" | "tanstack-virtual" | "tanstack-db" | "tanstack-pacer" | "backend-utils" | "devcontainer" | "docker-compose" | "github-actions")[];
1329
1364
  examples: ("ai" | "none" | "chat-sdk" | "tanstack-showcase")[];
1330
1365
  auth: "none" | "better-auth" | "better-auth-organizations" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0" | "workos" | "kinde";
1331
1366
  payments: "none" | "polar" | "stripe" | "lemon-squeezy" | "paddle" | "dodo";
@@ -1334,7 +1369,7 @@ declare const router: {
1334
1369
  versionChannel: "stable" | "latest" | "beta";
1335
1370
  install: boolean;
1336
1371
  dbSetup: "none" | "turso" | "neon" | "prisma-postgres" | "planetscale" | "mongodb-atlas" | "supabase" | "upstash" | "d1" | "docker";
1337
- api: "none" | "trpc" | "orpc" | "ts-rest" | "garph" | "graphql-yoga" | "openapi";
1372
+ api: "none" | "trpc" | "orpc" | "ts-rest" | "garph" | "graphql-yoga" | "apollo-server" | "openapi";
1338
1373
  webDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "render" | "netlify" | "sst" | "vercel";
1339
1374
  serverDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "render" | "netlify" | "sst" | "vercel";
1340
1375
  ai: "none" | "langgraph" | "google-adk" | "langchain" | "llamaindex" | "vercel-ai" | "mastra" | "voltagent" | "openai-agents" | "modelfusion" | "tanstack-ai" | "ai-cli";
@@ -1354,11 +1389,12 @@ declare const router: {
1354
1389
  observability: "none" | "opentelemetry" | "sentry" | "grafana" | "datadog" | "axiom" | "betterstack";
1355
1390
  featureFlags: "none" | "growthbook" | "posthog" | "launchdarkly" | "flagsmith" | "unleash";
1356
1391
  analytics: "none" | "plausible" | "umami";
1357
- cms: "none" | "payload" | "sanity" | "strapi" | "tinacms" | "directus";
1392
+ cms: "none" | "payload" | "sanity" | "strapi" | "tinacms" | "directus" | "keystatic";
1358
1393
  caching: "none" | "upstash-redis";
1359
1394
  rateLimit: "none" | "arcjet" | "upstash-ratelimit";
1360
- i18n: "none" | "i18next" | "next-intl";
1361
- search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "algolia";
1395
+ i18n: "none" | "paraglide" | "i18next" | "next-intl";
1396
+ search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "opensearch" | "algolia";
1397
+ vectorDb: "none" | "pgvector" | "qdrant" | "chroma" | "pinecone";
1362
1398
  fileStorage: "none" | "s3" | "r2" | "cloudinary";
1363
1399
  mobileNavigation: "none" | "expo-router" | "react-navigation";
1364
1400
  mobileUI: "none" | "uniwind" | "tamagui" | "gluestack-ui" | "unistyles";
@@ -1372,7 +1408,7 @@ declare const router: {
1372
1408
  rustOrm: "none" | "sea-orm" | "sqlx" | "diesel";
1373
1409
  rustApi: "none" | "tonic" | "async-graphql";
1374
1410
  rustCli: "none" | "clap" | "ratatui";
1375
- rustLibraries: ("none" | "serde" | "uuid" | "chrono" | "reqwest" | "config" | "dashmap" | "parking-lot" | "secrecy" | "tokio-util" | "utoipa" | "validator" | "jsonwebtoken" | "argon2" | "tokio-test" | "mockall" | "proptest" | "insta")[];
1411
+ rustLibraries: ("config" | "none" | "serde" | "uuid" | "chrono" | "reqwest" | "dashmap" | "parking-lot" | "secrecy" | "tokio-util" | "utoipa" | "validator" | "jsonwebtoken" | "argon2" | "tokio-test" | "mockall" | "proptest" | "insta")[];
1376
1412
  rustLogging: "none" | "tracing" | "env-logger";
1377
1413
  rustErrorHandling: "none" | "anyhow-thiserror" | "eyre";
1378
1414
  rustCaching: "none" | "redis" | "moka";
@@ -1453,7 +1489,7 @@ declare const router: {
1453
1489
  shadcnRadius?: "default" | "none" | "small" | "medium" | "large" | undefined;
1454
1490
  stackParts?: {
1455
1491
  id: string;
1456
- role: "api" | "runtime" | "backend" | "database" | "orm" | "dbSetup" | "auth" | "payments" | "email" | "fileUpload" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "realtime" | "jobQueue" | "caching" | "rateLimit" | "i18n" | "search" | "fileStorage" | "animation" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "examples" | "ai" | "effect" | "frontend" | "config" | "mobile" | "deploy" | "navigation" | "ui" | "css" | "storage" | "appPlatform" | "dataFetching" | "workspaceTooling" | "buildTool" | "cli" | "errorHandling" | "httpClient" | "libraries" | "templating";
1492
+ role: "api" | "runtime" | "backend" | "database" | "orm" | "dbSetup" | "auth" | "payments" | "email" | "fileUpload" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "realtime" | "jobQueue" | "caching" | "rateLimit" | "i18n" | "search" | "vectorDb" | "fileStorage" | "animation" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "examples" | "ai" | "effect" | "config" | "frontend" | "mobile" | "deploy" | "navigation" | "ui" | "css" | "storage" | "appPlatform" | "dataFetching" | "workspaceTooling" | "buildTool" | "cli" | "errorHandling" | "httpClient" | "libraries" | "templating";
1457
1493
  toolId: string;
1458
1494
  ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir" | "dotnet" | "universal";
1459
1495
  source: "selected" | "defaulted" | "provided" | "legacy" | "adjusted";
@@ -1472,6 +1508,7 @@ declare const router: {
1472
1508
  fileCount: number;
1473
1509
  directoryCount: number;
1474
1510
  files: string[];
1511
+ setupFailures?: undefined;
1475
1512
  error?: undefined;
1476
1513
  } | {
1477
1514
  success: boolean;
@@ -1485,7 +1522,7 @@ declare const router: {
1485
1522
  backend: "none" | "hono" | "express" | "fastify" | "elysia" | "fets" | "nestjs" | "adonisjs" | "nitro" | "encore" | "convex" | "self";
1486
1523
  runtime: "none" | "bun" | "node" | "workers";
1487
1524
  frontend: ("none" | "tanstack-router" | "react-router" | "react-vite" | "tanstack-start" | "next" | "vinext" | "nuxt" | "native-bare" | "native-uniwind" | "native-unistyles" | "svelte" | "solid" | "solid-start" | "astro" | "qwik" | "angular" | "redwood" | "fresh")[];
1488
- addons: ("none" | "pwa" | "tauri" | "starlight" | "biome" | "lefthook" | "husky" | "ruler" | "mcp" | "skills" | "turborepo" | "nx" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "msw" | "storybook" | "swr" | "tanstack-query" | "tanstack-table" | "tanstack-virtual" | "tanstack-db" | "tanstack-pacer" | "backend-utils" | "docker-compose")[];
1525
+ addons: ("none" | "pwa" | "tauri" | "starlight" | "biome" | "lefthook" | "husky" | "ruler" | "mcp" | "skills" | "turborepo" | "nx" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "msw" | "storybook" | "swr" | "tanstack-query" | "tanstack-table" | "tanstack-virtual" | "tanstack-db" | "tanstack-pacer" | "backend-utils" | "devcontainer" | "docker-compose" | "github-actions")[];
1489
1526
  examples: ("ai" | "none" | "chat-sdk" | "tanstack-showcase")[];
1490
1527
  auth: "none" | "better-auth" | "better-auth-organizations" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0" | "workos" | "kinde";
1491
1528
  payments: "none" | "polar" | "stripe" | "lemon-squeezy" | "paddle" | "dodo";
@@ -1494,7 +1531,7 @@ declare const router: {
1494
1531
  versionChannel: "stable" | "latest" | "beta";
1495
1532
  install: boolean;
1496
1533
  dbSetup: "none" | "turso" | "neon" | "prisma-postgres" | "planetscale" | "mongodb-atlas" | "supabase" | "upstash" | "d1" | "docker";
1497
- api: "none" | "trpc" | "orpc" | "ts-rest" | "garph" | "graphql-yoga" | "openapi";
1534
+ api: "none" | "trpc" | "orpc" | "ts-rest" | "garph" | "graphql-yoga" | "apollo-server" | "openapi";
1498
1535
  webDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "render" | "netlify" | "sst" | "vercel";
1499
1536
  serverDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "render" | "netlify" | "sst" | "vercel";
1500
1537
  ai: "none" | "langgraph" | "google-adk" | "langchain" | "llamaindex" | "vercel-ai" | "mastra" | "voltagent" | "openai-agents" | "modelfusion" | "tanstack-ai" | "ai-cli";
@@ -1514,11 +1551,12 @@ declare const router: {
1514
1551
  observability: "none" | "opentelemetry" | "sentry" | "grafana" | "datadog" | "axiom" | "betterstack";
1515
1552
  featureFlags: "none" | "growthbook" | "posthog" | "launchdarkly" | "flagsmith" | "unleash";
1516
1553
  analytics: "none" | "plausible" | "umami";
1517
- cms: "none" | "payload" | "sanity" | "strapi" | "tinacms" | "directus";
1554
+ cms: "none" | "payload" | "sanity" | "strapi" | "tinacms" | "directus" | "keystatic";
1518
1555
  caching: "none" | "upstash-redis";
1519
1556
  rateLimit: "none" | "arcjet" | "upstash-ratelimit";
1520
- i18n: "none" | "i18next" | "next-intl";
1521
- search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "algolia";
1557
+ i18n: "none" | "paraglide" | "i18next" | "next-intl";
1558
+ search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "opensearch" | "algolia";
1559
+ vectorDb: "none" | "pgvector" | "qdrant" | "chroma" | "pinecone";
1522
1560
  fileStorage: "none" | "s3" | "r2" | "cloudinary";
1523
1561
  mobileNavigation: "none" | "expo-router" | "react-navigation";
1524
1562
  mobileUI: "none" | "uniwind" | "tamagui" | "gluestack-ui" | "unistyles";
@@ -1532,7 +1570,7 @@ declare const router: {
1532
1570
  rustOrm: "none" | "sea-orm" | "sqlx" | "diesel";
1533
1571
  rustApi: "none" | "tonic" | "async-graphql";
1534
1572
  rustCli: "none" | "clap" | "ratatui";
1535
- rustLibraries: ("none" | "serde" | "uuid" | "chrono" | "reqwest" | "config" | "dashmap" | "parking-lot" | "secrecy" | "tokio-util" | "utoipa" | "validator" | "jsonwebtoken" | "argon2" | "tokio-test" | "mockall" | "proptest" | "insta")[];
1573
+ rustLibraries: ("config" | "none" | "serde" | "uuid" | "chrono" | "reqwest" | "dashmap" | "parking-lot" | "secrecy" | "tokio-util" | "utoipa" | "validator" | "jsonwebtoken" | "argon2" | "tokio-test" | "mockall" | "proptest" | "insta")[];
1536
1574
  rustLogging: "none" | "tracing" | "env-logger";
1537
1575
  rustErrorHandling: "none" | "anyhow-thiserror" | "eyre";
1538
1576
  rustCaching: "none" | "redis" | "moka";
@@ -1613,7 +1651,7 @@ declare const router: {
1613
1651
  shadcnRadius?: "default" | "none" | "small" | "medium" | "large" | undefined;
1614
1652
  stackParts?: {
1615
1653
  id: string;
1616
- role: "api" | "runtime" | "backend" | "database" | "orm" | "dbSetup" | "auth" | "payments" | "email" | "fileUpload" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "realtime" | "jobQueue" | "caching" | "rateLimit" | "i18n" | "search" | "fileStorage" | "animation" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "examples" | "ai" | "effect" | "frontend" | "config" | "mobile" | "deploy" | "navigation" | "ui" | "css" | "storage" | "appPlatform" | "dataFetching" | "workspaceTooling" | "buildTool" | "cli" | "errorHandling" | "httpClient" | "libraries" | "templating";
1654
+ role: "api" | "runtime" | "backend" | "database" | "orm" | "dbSetup" | "auth" | "payments" | "email" | "fileUpload" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "realtime" | "jobQueue" | "caching" | "rateLimit" | "i18n" | "search" | "vectorDb" | "fileStorage" | "animation" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "examples" | "ai" | "effect" | "config" | "frontend" | "mobile" | "deploy" | "navigation" | "ui" | "css" | "storage" | "appPlatform" | "dataFetching" | "workspaceTooling" | "buildTool" | "cli" | "errorHandling" | "httpClient" | "libraries" | "templating";
1617
1655
  toolId: string;
1618
1656
  ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir" | "dotnet" | "universal";
1619
1657
  source: "selected" | "defaulted" | "provided" | "legacy" | "adjusted";
@@ -1628,6 +1666,7 @@ declare const router: {
1628
1666
  elapsedTimeMs: number;
1629
1667
  projectDirectory: string;
1630
1668
  relativePath: string;
1669
+ setupFailures: SetupStepResult[];
1631
1670
  dryRun?: undefined;
1632
1671
  fileCount?: undefined;
1633
1672
  directoryCount?: undefined;
@@ -1646,6 +1685,7 @@ declare const router: {
1646
1685
  fileCount?: undefined;
1647
1686
  directoryCount?: undefined;
1648
1687
  files?: undefined;
1688
+ setupFailures?: undefined;
1649
1689
  } | undefined>, _orpc_server0.MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
1650
1690
  sponsors: _orpc_server0.Procedure<_orpc_server0.MergedInitialContext<Record<never, never>, Record<never, never>, Record<never, never>>, Record<never, never>, _orpc_server0.Schema<unknown, unknown>, _orpc_server0.Schema<void, void>, _orpc_server0.MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
1651
1691
  docs: _orpc_server0.Procedure<_orpc_server0.MergedInitialContext<Record<never, never>, Record<never, never>, Record<never, never>>, Record<never, never>, _orpc_server0.Schema<unknown, unknown>, _orpc_server0.Schema<void, void>, _orpc_server0.MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
@@ -1678,7 +1718,9 @@ declare const router: {
1678
1718
  "tanstack-db": "tanstack-db";
1679
1719
  "tanstack-pacer": "tanstack-pacer";
1680
1720
  "backend-utils": "backend-utils";
1721
+ devcontainer: "devcontainer";
1681
1722
  "docker-compose": "docker-compose";
1723
+ "github-actions": "github-actions";
1682
1724
  }>>>;
1683
1725
  webDeploy: z.ZodOptional<z.ZodEnum<{
1684
1726
  none: "none";
@@ -1716,6 +1758,13 @@ declare const router: {
1716
1758
  clear: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
1717
1759
  json: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
1718
1760
  }, z.core.$strip>, _orpc_server0.Schema<void, void>, _orpc_server0.MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
1761
+ telemetry: _orpc_server0.Procedure<_orpc_server0.MergedInitialContext<Record<never, never>, Record<never, never>, Record<never, never>>, Record<never, never>, z.ZodTuple<[z.ZodDefault<z.ZodOptional<z.ZodEnum<{
1762
+ status: "status";
1763
+ enable: "enable";
1764
+ disable: "disable";
1765
+ }>>>, z.ZodObject<{
1766
+ json: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
1767
+ }, z.core.$strip>], null>, _orpc_server0.Schema<void, void>, _orpc_server0.MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
1719
1768
  "update-deps": _orpc_server0.Procedure<_orpc_server0.MergedInitialContext<Record<never, never>, Record<never, never>, Record<never, never>>, Record<never, never>, z.ZodObject<{
1720
1769
  check: z.ZodDefault<z.ZodBoolean>;
1721
1770
  patch: z.ZodDefault<z.ZodBoolean>;
@@ -1724,6 +1773,10 @@ declare const router: {
1724
1773
  "list-ecosystems": z.ZodDefault<z.ZodBoolean>;
1725
1774
  }, z.core.$strip>, _orpc_server0.Schema<void, void>, _orpc_server0.MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
1726
1775
  mcp: _orpc_server0.Procedure<_orpc_server0.MergedInitialContext<Record<never, never>, Record<never, never>, Record<never, never>>, Record<never, never>, _orpc_server0.Schema<unknown, unknown>, _orpc_server0.Schema<void, void>, _orpc_server0.MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
1776
+ doctor: _orpc_server0.Procedure<_orpc_server0.MergedInitialContext<Record<never, never>, Record<never, never>, Record<never, never>>, Record<never, never>, z.ZodTuple<[z.ZodOptional<z.ZodString>, z.ZodObject<{
1777
+ skipChecks: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
1778
+ json: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
1779
+ }, z.core.$strip>], null>, _orpc_server0.Schema<void, void>, _orpc_server0.MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
1727
1780
  };
1728
1781
  declare function createBtsCli(): trpc_cli0.TrpcCli;
1729
1782
  /**
@@ -1757,6 +1810,9 @@ declare function history(options?: {
1757
1810
  clear?: boolean;
1758
1811
  json?: boolean;
1759
1812
  }): Promise<void>;
1813
+ declare function telemetry(action?: "status" | "enable" | "disable", options?: {
1814
+ json?: boolean;
1815
+ }): Promise<void>;
1760
1816
  //#endregion
1761
1817
  //#region src/index.d.ts
1762
1818
  /**
@@ -1857,4 +1913,4 @@ type ServerDeploy = import__better_fullstack_types.ServerDeploy;
1857
1913
  type Template = import__better_fullstack_types.Template;
1858
1914
  type UILibrary = import__better_fullstack_types.UILibrary;
1859
1915
  type WebDeploy = import__better_fullstack_types.WebDeploy;
1860
- export { type API, type AddInput, type AddResult, type Addons, type AiDocs, type Analytics, type Animation, type Auth, type Backend, type BetterTStackConfig, type CMS, type CSSFramework, type Caching, type CreateInput, type Database, type DatabaseSetup, type DirectoryConflict, EMBEDDED_TEMPLATES, type Ecosystem, type Effect, type ElixirApi, type ElixirAuth, type ElixirCaching, type ElixirDeploy, type ElixirEmail, type ElixirHttp, type ElixirJobs, type ElixirJson, type ElixirObservability, type ElixirOrm, type ElixirQuality, type ElixirRealtime, type ElixirTesting, type ElixirValidation, type ElixirWebFramework, type Examples, type Frontend, type GeneratorOptions, type GeneratorResult, type GoApi, type GoAuth, type GoCli, type GoLogging, type GoOrm, type GoWebFramework, type InitResult, type JavaAuth, type JavaBuildTool, type JavaLibraries, type JavaOrm, type JavaTestingLibraries, type JavaWebFramework, type Logging, type ORM, type PackageManager, type Payments, type PythonAi, type PythonOrm, type PythonQuality, type PythonTaskQueue, type PythonValidation, type PythonWebFramework, type Realtime, type Runtime, type RustApi, type RustCli, type RustFrontend, type RustLibraries, type RustLogging, type RustOrm, type RustWebFramework, type ServerDeploy, TEMPLATE_COUNT, type Template, type UILibrary, type VirtualDirectory, type VirtualFile, VirtualFileSystem, type VirtualFileTree, type VirtualNode, type WebDeploy, add, builder, create, createBtsCli, createVirtual, docs, generateVirtualProject, history, router, sponsors };
1916
+ export { type API, type AddInput, type AddResult, type Addons, type AiDocs, type Analytics, type Animation, type Auth, type Backend, type BetterTStackConfig, type CMS, type CSSFramework, type Caching, type CreateInput, type Database, type DatabaseSetup, type DirectoryConflict, EMBEDDED_TEMPLATES, type Ecosystem, type Effect, type ElixirApi, type ElixirAuth, type ElixirCaching, type ElixirDeploy, type ElixirEmail, type ElixirHttp, type ElixirJobs, type ElixirJson, type ElixirObservability, type ElixirOrm, type ElixirQuality, type ElixirRealtime, type ElixirTesting, type ElixirValidation, type ElixirWebFramework, type Examples, type Frontend, type GeneratorOptions, type GeneratorResult, type GoApi, type GoAuth, type GoCli, type GoLogging, type GoOrm, type GoWebFramework, type InitResult, type JavaAuth, type JavaBuildTool, type JavaLibraries, type JavaOrm, type JavaTestingLibraries, type JavaWebFramework, type Logging, type ORM, type PackageManager, type Payments, type PythonAi, type PythonOrm, type PythonQuality, type PythonTaskQueue, type PythonValidation, type PythonWebFramework, type Realtime, type Runtime, type RustApi, type RustCli, type RustFrontend, type RustLibraries, type RustLogging, type RustOrm, type RustWebFramework, type ServerDeploy, TEMPLATE_COUNT, type Template, type UILibrary, type VirtualDirectory, type VirtualFile, VirtualFileSystem, type VirtualFileTree, type VirtualNode, type WebDeploy, add, builder, create, createBtsCli, createVirtual, docs, generateVirtualProject, history, router, sponsors, telemetry };
package/dist/index.mjs CHANGED
@@ -1,8 +1,12 @@
1
1
  #!/usr/bin/env node
2
- import "./bts-config-Bg1Qea9Y.mjs";
3
- import { a as docs, c as sponsors, i as createBtsCli, n as builder, o as history, r as create, s as router, t as add } from "./run-BhcXBjxh.mjs";
4
- import "./install-dependencies-D0Z1dZEx.mjs";
5
- import "./addons-setup-HSghQS7c.mjs";
2
+ import "./errors-D9yiiGVq.mjs";
3
+ import { a as docs, c as sponsors, i as createBtsCli, l as telemetry, n as builder, o as history, r as create, s as router, t as add } from "./run-DRzP53v3.mjs";
4
+ import "./render-title-zvyKC1ej.mjs";
5
+ import "./addons-setup-C_xrNtkL.mjs";
6
+ import "./config-validation-C4glouQh.mjs";
7
+ import "./compatibility-rules-D7zYNVjC.mjs";
8
+ import "./install-dependencies-DDGF-zDG.mjs";
9
+ import "./generated-checks-DUvVXWId.mjs";
6
10
  import { EMBEDDED_TEMPLATES, TEMPLATE_COUNT, VirtualFileSystem, generateVirtualProject } from "@better-fullstack/template-generator";
7
11
 
8
12
  //#region src/index.ts
@@ -93,6 +97,7 @@ async function createVirtual(options) {
93
97
  rateLimit: options.rateLimit || "none",
94
98
  i18n: options.i18n || "none",
95
99
  search: options.search || "none",
100
+ vectorDb: options.vectorDb || "none",
96
101
  fileStorage: options.fileStorage || "none",
97
102
  rustWebFramework: options.rustWebFramework || "none",
98
103
  rustFrontend: options.rustFrontend || "none",
@@ -169,7 +174,7 @@ async function createVirtual(options) {
169
174
  elixirQuality: options.elixirQuality || (options.ecosystem === "elixir" ? "credo" : "none"),
170
175
  elixirDeploy: options.elixirDeploy || "none",
171
176
  elixirLibraries: options.elixirLibraries || [],
172
- aiDocs: options.aiDocs || ["claude-md"]
177
+ aiDocs: options.aiDocs || ["claude-md", "agents-md"]
173
178
  };
174
179
  if (options.stackParts) config.stackParts = options.stackParts;
175
180
  const { generateVirtualProject: generate, EMBEDDED_TEMPLATES: EMBEDDED_TEMPLATES$2 } = await import("@better-fullstack/template-generator");
@@ -194,4 +199,4 @@ async function createVirtual(options) {
194
199
  }
195
200
 
196
201
  //#endregion
197
- export { EMBEDDED_TEMPLATES, TEMPLATE_COUNT, VirtualFileSystem, add, builder, create, createBtsCli, createVirtual, docs, generateVirtualProject, history, router, sponsors };
202
+ export { EMBEDDED_TEMPLATES, TEMPLATE_COUNT, VirtualFileSystem, add, builder, create, createBtsCli, createVirtual, docs, generateVirtualProject, history, router, sponsors, telemetry };