create-better-fullstack 1.6.3 → 1.7.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.
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import "./bts-config-B_rZ4_sj.mjs";
2
+ import "./bts-config-bOXo9tbL.mjs";
3
3
  import { t as startMcpServer } from "./mcp-entry.mjs";
4
4
 
5
5
  export { startMcpServer };
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import { i as getLatestCLIVersion, r as writeBtsConfig, t as readBtsConfig } from "./bts-config-B_rZ4_sj.mjs";
2
+ import { i as getLatestCLIVersion, r as writeBtsConfig, t as readBtsConfig } from "./bts-config-bOXo9tbL.mjs";
3
3
  import z from "zod";
4
- import { AISchema, APISchema, AddonsSchema, AnalyticsSchema, AnimationSchema, AstroIntegrationSchema, AuthSchema, BackendSchema, CMSSchema, CSSFrameworkSchema, CachingSchema, DatabaseSchema, DatabaseSetupSchema, EcosystemSchema, EffectSchema, EmailSchema, ExamplesSchema, FeatureFlagsSchema, FileStorageSchema, FileUploadSchema, FormsSchema, FrontendSchema, GoApiSchema, GoAuthSchema, GoCliSchema, GoLoggingSchema, GoOrmSchema, GoWebFrameworkSchema, I18nSchema, JavaAuthSchema, JavaBuildToolSchema, JavaLibrariesSchema, JavaOrmSchema, JavaTestingLibrariesSchema, JavaWebFrameworkSchema, JobQueueSchema, LoggingSchema, OPTION_CATEGORY_METADATA, ORMSchema, ObservabilitySchema, PackageManagerSchema, PaymentsSchema, PythonAiSchema, PythonAuthSchema, PythonGraphqlSchema, PythonOrmSchema, PythonQualitySchema, PythonTaskQueueSchema, PythonValidationSchema, PythonWebFrameworkSchema, RealtimeSchema, RuntimeSchema, RustApiSchema, RustAuthSchema, RustCachingSchema, RustCliSchema, RustErrorHandlingSchema, RustFrontendSchema, RustLibrariesSchema, RustLoggingSchema, RustOrmSchema, RustWebFrameworkSchema, SearchSchema, ServerDeploySchema, StateManagementSchema, TestingSchema, UILibrarySchema, ValidationSchema, WebDeploySchema, analyzeStackCompatibility } from "@better-fullstack/types";
4
+ import { AISchema, APISchema, AddonsSchema, AnalyticsSchema, AnimationSchema, AstroIntegrationSchema, AuthSchema, BackendSchema, CMSSchema, CSSFrameworkSchema, CachingSchema, DatabaseSchema, DatabaseSetupSchema, EcosystemSchema, EffectSchema, EmailSchema, ExamplesSchema, FeatureFlagsSchema, FileStorageSchema, FileUploadSchema, FormsSchema, FrontendSchema, GoApiSchema, GoAuthSchema, GoCliSchema, GoLoggingSchema, GoOrmSchema, GoWebFrameworkSchema, I18nSchema, JavaAuthSchema, JavaBuildToolSchema, JavaLibrariesSchema, JavaOrmSchema, JavaTestingLibrariesSchema, JavaWebFrameworkSchema, JobQueueSchema, LoggingSchema, OPTION_CATEGORY_METADATA, ORMSchema, ObservabilitySchema, PackageManagerSchema, PaymentsSchema, PythonAiSchema, PythonApiSchema, PythonAuthSchema, PythonGraphqlSchema, PythonOrmSchema, PythonQualitySchema, PythonTaskQueueSchema, PythonValidationSchema, PythonWebFrameworkSchema, RealtimeSchema, RuntimeSchema, RustApiSchema, RustAuthSchema, RustCachingSchema, RustCliSchema, RustErrorHandlingSchema, RustFrontendSchema, RustLibrariesSchema, RustLoggingSchema, RustOrmSchema, RustWebFrameworkSchema, SearchSchema, ServerDeploySchema, StateManagementSchema, TestingSchema, UILibrarySchema, ValidationSchema, WebDeploySchema, analyzeStackCompatibility } from "@better-fullstack/types";
5
5
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
6
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
7
7
 
@@ -50,7 +50,10 @@ function getGuidance() {
50
50
  arrayFields: "Use arrays for frontend, addons, examples, aiDocs, rustLibraries, pythonAi, javaLibraries, and javaTestingLibraries. Use [] for \"none\" on multi-select fields.",
51
51
  backend: "String. \"self\" means fullstack mode (Next.js/TanStack Start/Nuxt/Astro API routes). \"none\" for frontend-only.",
52
52
  runtime: "\"bun\" or \"node\". Must be \"none\" when backend is \"self\" or \"convex\".",
53
- addons: "ARRAY of strings. Monorepo tools, code quality, desktop (tauri), browser extensions (wxt), etc."
53
+ addons: "ARRAY of strings. Monorepo tools, code quality, desktop (tauri), browser extensions (wxt), etc.",
54
+ email: "String. TypeScript supports multiple providers; Rust, Python, Go, and Java currently support resend or none.",
55
+ observability: "String. TypeScript supports multiple providers; Rust, Python, Go, and Java currently support sentry or none.",
56
+ search: "String. TypeScript supports multiple providers; Rust, Python, Go, and Java currently support meilisearch or none."
54
57
  },
55
58
  ambiguityRules: [
56
59
  "If the user request leaves major stack choices unspecified, ASK the user before proceeding. Do not guess.",
@@ -68,7 +71,12 @@ function getGuidance() {
68
71
  "backend='self' only works with: next, tanstack-start, astro, nuxt, svelte, solid-start.",
69
72
  "backend='convex' overrides: runtime=none, database=none, orm=none, api=none.",
70
73
  "TypeORM + better-auth: unsupported (no adapter). Use auth='none' or orm='drizzle'.",
71
- "Sequelize + better-auth: unsupported (no adapter). Use auth='none' or orm='drizzle'."
74
+ "Sequelize + better-auth: unsupported (no adapter). Use auth='none' or orm='drizzle'.",
75
+ "Non-TypeScript ecosystems only support email='resend' or email='none'.",
76
+ "Non-TypeScript ecosystems only support observability='sentry' or observability='none'.",
77
+ "Non-TypeScript ecosystems only support search='meilisearch' or search='none'.",
78
+ "Java email='resend' and observability='sentry' require javaBuildTool='maven' or javaBuildTool='gradle'.",
79
+ "Java search='meilisearch' requires javaBuildTool='maven' or javaBuildTool='gradle'."
72
80
  ]
73
81
  };
74
82
  }
@@ -126,6 +134,7 @@ const SCHEMA_MAP = {
126
134
  pythonValidation: PythonValidationSchema,
127
135
  pythonAi: PythonAiSchema,
128
136
  pythonAuth: PythonAuthSchema,
137
+ pythonApi: PythonApiSchema,
129
138
  pythonTaskQueue: PythonTaskQueueSchema,
130
139
  pythonGraphql: PythonGraphqlSchema,
131
140
  pythonQuality: PythonQualitySchema,
@@ -186,7 +195,11 @@ const ECOSYSTEM_CATEGORIES = {
186
195
  "rustLogging",
187
196
  "rustErrorHandling",
188
197
  "rustCaching",
189
- "rustAuth"
198
+ "rustAuth",
199
+ "email",
200
+ "observability",
201
+ "caching",
202
+ "search"
190
203
  ],
191
204
  python: [
192
205
  "pythonWebFramework",
@@ -194,9 +207,14 @@ const ECOSYSTEM_CATEGORIES = {
194
207
  "pythonValidation",
195
208
  "pythonAi",
196
209
  "pythonAuth",
210
+ "pythonApi",
197
211
  "pythonTaskQueue",
198
212
  "pythonGraphql",
199
- "pythonQuality"
213
+ "pythonQuality",
214
+ "email",
215
+ "observability",
216
+ "caching",
217
+ "search"
200
218
  ],
201
219
  go: [
202
220
  "goWebFramework",
@@ -204,7 +222,12 @@ const ECOSYSTEM_CATEGORIES = {
204
222
  "goApi",
205
223
  "goCli",
206
224
  "goLogging",
207
- "goAuth"
225
+ "goAuth",
226
+ "auth",
227
+ "email",
228
+ "observability",
229
+ "caching",
230
+ "search"
208
231
  ],
209
232
  java: [
210
233
  "javaWebFramework",
@@ -212,7 +235,11 @@ const ECOSYSTEM_CATEGORIES = {
212
235
  "javaOrm",
213
236
  "javaAuth",
214
237
  "javaLibraries",
215
- "javaTestingLibraries"
238
+ "javaTestingLibraries",
239
+ "email",
240
+ "observability",
241
+ "caching",
242
+ "search"
216
243
  ],
217
244
  shared: [
218
245
  "ecosystem",
@@ -245,12 +272,14 @@ function getSchemaOptions(category, ecosystem) {
245
272
  }
246
273
  return result;
247
274
  }
248
- function getInstallCommand(ecosystem, projectName, packageManager, javaBuildTool) {
275
+ function getInstallCommand(ecosystem, projectName, packageManager, javaBuildTool, javaWebFramework) {
249
276
  switch (ecosystem) {
250
277
  case "rust": return `cd ${projectName} && cargo build`;
251
278
  case "python": return `cd ${projectName} && uv sync`;
252
279
  case "go": return `cd ${projectName} && go mod tidy`;
253
- case "java": return javaBuildTool === "gradle" ? `cd ${projectName} && ./gradlew test && ./gradlew bootRun` : `cd ${projectName} && ./mvnw test && ./mvnw spring-boot:run`;
280
+ case "java":
281
+ if (javaWebFramework === "quarkus") return javaBuildTool === "gradle" ? `cd ${projectName} && ./gradlew test && ./gradlew quarkusDev` : `cd ${projectName} && ./mvnw test && ./mvnw quarkus:dev`;
282
+ return javaBuildTool === "gradle" ? `cd ${projectName} && ./gradlew test && ./gradlew bootRun` : `cd ${projectName} && ./mvnw test && ./mvnw spring-boot:run`;
254
283
  default: return `cd ${projectName} && ${packageManager ?? "bun"} install`;
255
284
  }
256
285
  }
@@ -312,7 +341,7 @@ function buildProjectConfig(input, overrides) {
312
341
  animation: input.animation ?? "none",
313
342
  logging: input.logging ?? "none",
314
343
  observability: input.observability ?? "none",
315
- featureFlags: "none",
344
+ featureFlags: input.featureFlags ?? "none",
316
345
  analytics: "none",
317
346
  cms: input.cms ?? "none",
318
347
  caching: input.caching ?? "none",
@@ -345,6 +374,7 @@ function buildProjectConfig(input, overrides) {
345
374
  pythonValidation: input.pythonValidation ?? "none",
346
375
  pythonAi: input.pythonAi ?? [],
347
376
  pythonAuth: input.pythonAuth ?? "none",
377
+ pythonApi: input.pythonApi ?? "none",
348
378
  pythonTaskQueue: input.pythonTaskQueue ?? "none",
349
379
  pythonGraphql: input.pythonGraphql ?? "none",
350
380
  pythonQuality: input.pythonQuality ?? "none",
@@ -454,6 +484,7 @@ function buildCompatibilityInput(input) {
454
484
  pythonValidation: input.pythonValidation ?? "none",
455
485
  pythonAi: input.pythonAi ?? [],
456
486
  pythonAuth: input.pythonAuth ?? "none",
487
+ pythonApi: input.pythonApi ?? "none",
457
488
  pythonTaskQueue: input.pythonTaskQueue ?? "none",
458
489
  pythonGraphql: input.pythonGraphql ?? "none",
459
490
  pythonQuality: input.pythonQuality ?? "none",
@@ -519,6 +550,14 @@ const COMPATIBILITY_RULES_MD = `# Better-Fullstack Compatibility Rules
519
550
  ## Payments
520
551
  - Polar requires better-auth and a web frontend.
521
552
 
553
+ ## Email
554
+ - Rust, Python, Go, and Java currently support only Resend for email (\`email=resend\`) or no email (\`email=none\`).
555
+ - Java Resend requires Maven or Gradle so the generated project can manage the SDK dependency.
556
+
557
+ ## Observability
558
+ - Rust, Python, Go, and Java currently support only Sentry for observability (\`observability=sentry\`) or no observability (\`observability=none\`).
559
+ - Java Sentry requires Maven or Gradle so the generated project can manage the SDK dependency.
560
+
522
561
  ## Ecosystem Isolation
523
562
  - Rust, Python, Go, and Java ecosystems are independent — TypeScript fields are ignored.
524
563
  - Each ecosystem generates a standalone project with its own build system.
@@ -542,6 +581,8 @@ const GETTING_STARTED_MD = `# Getting Started with Better-Fullstack MCP
542
581
  - ecosystem: "rust"
543
582
  - rustWebFramework: "axum"
544
583
  - rustOrm: "sqlx"
584
+ - email: "resend" (optional)
585
+ - observability: "sentry" (optional)
545
586
  2. Tell the user to run: cd my-rust-app && cargo build
546
587
 
547
588
  ## Quick Start — Python Project
@@ -550,6 +591,8 @@ const GETTING_STARTED_MD = `# Getting Started with Better-Fullstack MCP
550
591
  - ecosystem: "python"
551
592
  - pythonWebFramework: "fastapi"
552
593
  - pythonOrm: "sqlalchemy"
594
+ - email: "resend" (optional)
595
+ - observability: "sentry" (optional)
553
596
  2. Tell the user to run: cd my-python-app && uv sync
554
597
 
555
598
  ## Quick Start — Go Project
@@ -558,6 +601,8 @@ const GETTING_STARTED_MD = `# Getting Started with Better-Fullstack MCP
558
601
  - ecosystem: "go"
559
602
  - goWebFramework: "gin"
560
603
  - goOrm: "gorm"
604
+ - email: "resend" (optional)
605
+ - observability: "sentry" (optional)
561
606
  2. Tell the user to run: cd my-go-app && go mod tidy && go run cmd/server/main.go
562
607
 
563
608
  ## Quick Start — Java Project
@@ -566,11 +611,14 @@ const GETTING_STARTED_MD = `# Getting Started with Better-Fullstack MCP
566
611
  - ecosystem: "java"
567
612
  - javaWebFramework: "spring-boot"
568
613
  - javaBuildTool: "maven"
614
+ - email: "resend" (optional)
615
+ - observability: "sentry" (optional)
569
616
  2. Tell the user to run: cd my-java-app && ./mvnw test && ./mvnw spring-boot:run
570
617
 
571
618
  ## Adding Features to Existing Projects
572
619
  1. Call bfs_add_feature with projectDir pointing to the project root.
573
620
  2. Provide addons array with features to add (e.g., ["biome", "turborepo"]).
621
+ 3. Service categories such as email and observability are scaffold-time options. To add those to an existing app, inspect the generated templates from bfs_plan_project and apply the equivalent dependency, env var, and initialization changes manually.
574
622
  `;
575
623
  async function startMcpServer() {
576
624
  const server = new McpServer({
@@ -607,9 +655,59 @@ async function startMcpServer() {
607
655
  api: z.string().optional().describe("API layer"),
608
656
  auth: z.string().optional().describe("Auth provider"),
609
657
  payments: z.string().optional().describe("Payments provider"),
658
+ email: EmailSchema.optional().describe("Email provider"),
659
+ fileUpload: FileUploadSchema.optional().describe("File upload provider"),
660
+ ai: AISchema.optional().describe("AI SDK"),
661
+ stateManagement: StateManagementSchema.optional().describe("State management"),
662
+ forms: FormsSchema.optional().describe("Forms library"),
663
+ validation: ValidationSchema.optional().describe("Validation library"),
664
+ testing: TestingSchema.optional().describe("Testing framework"),
665
+ realtime: RealtimeSchema.optional().describe("Realtime library"),
666
+ jobQueue: JobQueueSchema.optional().describe("Job queue"),
667
+ animation: AnimationSchema.optional().describe("Animation library"),
668
+ logging: LoggingSchema.optional().describe("Logging library"),
669
+ observability: ObservabilitySchema.optional().describe("Observability provider"),
670
+ featureFlags: FeatureFlagsSchema.optional().describe("Feature flags provider"),
671
+ analytics: AnalyticsSchema.optional().describe("Analytics provider"),
672
+ cms: CMSSchema.optional().describe("CMS"),
673
+ caching: CachingSchema.optional().describe("Caching solution"),
674
+ i18n: I18nSchema.optional().describe("Internationalization library"),
675
+ search: SearchSchema.optional().describe("Search engine"),
676
+ fileStorage: FileStorageSchema.optional().describe("File storage"),
677
+ dbSetup: DatabaseSetupSchema.optional().describe("Database hosting provider"),
678
+ webDeploy: WebDeploySchema.optional().describe("Web deployment target"),
679
+ serverDeploy: ServerDeploySchema.optional().describe("Server deployment target"),
680
+ astroIntegration: AstroIntegrationSchema.optional().describe("Astro UI framework integration"),
610
681
  uiLibrary: z.string().optional().describe("UI component library"),
611
682
  cssFramework: z.string().optional().describe("CSS framework"),
612
- addons: z.array(z.string()).optional().describe("Addon list"),
683
+ addons: z.array(AddonsSchema).optional().describe("Addon list"),
684
+ examples: z.array(ExamplesSchema).optional().describe("Example templates"),
685
+ packageManager: PackageManagerSchema.optional().describe("Package manager"),
686
+ rustWebFramework: RustWebFrameworkSchema.optional().describe("Rust web framework"),
687
+ rustFrontend: RustFrontendSchema.optional().describe("Rust frontend (WASM)"),
688
+ rustOrm: RustOrmSchema.optional().describe("Rust ORM"),
689
+ rustApi: RustApiSchema.optional().describe("Rust API layer"),
690
+ rustCli: RustCliSchema.optional().describe("Rust CLI framework"),
691
+ rustLibraries: z.array(RustLibrariesSchema).optional().describe("Rust libraries"),
692
+ rustLogging: RustLoggingSchema.optional().describe("Rust logging library"),
693
+ rustErrorHandling: RustErrorHandlingSchema.optional().describe("Rust error handling library"),
694
+ rustCaching: RustCachingSchema.optional().describe("Rust caching library"),
695
+ rustAuth: RustAuthSchema.optional().describe("Rust authentication library"),
696
+ pythonWebFramework: PythonWebFrameworkSchema.optional().describe("Python web framework"),
697
+ pythonOrm: PythonOrmSchema.optional().describe("Python ORM"),
698
+ pythonValidation: PythonValidationSchema.optional().describe("Python validation"),
699
+ pythonAi: z.array(PythonAiSchema).optional().describe("Python AI libraries"),
700
+ pythonAuth: PythonAuthSchema.optional().describe("Python auth library"),
701
+ pythonApi: PythonApiSchema.optional().describe("Python API framework"),
702
+ pythonTaskQueue: PythonTaskQueueSchema.optional().describe("Python task queue"),
703
+ pythonGraphql: PythonGraphqlSchema.optional().describe("Python GraphQL framework"),
704
+ pythonQuality: PythonQualitySchema.optional().describe("Python code quality"),
705
+ goWebFramework: GoWebFrameworkSchema.optional().describe("Go web framework"),
706
+ goOrm: GoOrmSchema.optional().describe("Go ORM"),
707
+ goApi: GoApiSchema.optional().describe("Go API layer"),
708
+ goCli: GoCliSchema.optional().describe("Go CLI framework"),
709
+ goLogging: GoLoggingSchema.optional().describe("Go logging library"),
710
+ goAuth: GoAuthSchema.optional().describe("Go authentication library"),
613
711
  javaWebFramework: JavaWebFrameworkSchema.optional().describe("Java web framework"),
614
712
  javaBuildTool: JavaBuildToolSchema.optional().describe("Java build tool"),
615
713
  javaOrm: JavaOrmSchema.optional().describe("Java ORM"),
@@ -660,6 +758,7 @@ async function startMcpServer() {
660
758
  animation: AnimationSchema.optional().describe("Animation library"),
661
759
  logging: LoggingSchema.optional().describe("Logging library"),
662
760
  observability: ObservabilitySchema.optional().describe("Observability"),
761
+ featureFlags: FeatureFlagsSchema.optional().describe("Feature flag provider"),
663
762
  search: SearchSchema.optional().describe("Search engine"),
664
763
  caching: CachingSchema.optional().describe("Caching solution"),
665
764
  i18n: I18nSchema.optional().describe("Internationalization (i18n) library"),
@@ -684,7 +783,9 @@ async function startMcpServer() {
684
783
  pythonValidation: PythonValidationSchema.optional().describe("Python validation"),
685
784
  pythonAi: z.array(PythonAiSchema).optional().describe("Python AI libraries"),
686
785
  pythonAuth: PythonAuthSchema.optional().describe("Python auth library"),
786
+ pythonApi: PythonApiSchema.optional().describe("Python API framework"),
687
787
  pythonTaskQueue: PythonTaskQueueSchema.optional().describe("Python task queue"),
788
+ pythonGraphql: PythonGraphqlSchema.optional().describe("Python GraphQL framework"),
688
789
  pythonQuality: PythonQualitySchema.optional().describe("Python code quality"),
689
790
  goWebFramework: GoWebFrameworkSchema.optional().describe("Go web framework"),
690
791
  goOrm: GoOrmSchema.optional().describe("Go ORM"),
@@ -766,10 +867,10 @@ async function startMcpServer() {
766
867
  await writeBtsConfig(config);
767
868
  let addonWarnings = [];
768
869
  if (config.addons.length > 0 && config.addons[0] !== "none") {
769
- const { setupAddons } = await import("./addons-setup-CBK1Htlc.mjs");
870
+ const { setupAddons } = await import("./addons-setup-BdKQJ1h6.mjs");
770
871
  addonWarnings = await setupAddons(config);
771
872
  }
772
- const installCmd = getInstallCommand(input.ecosystem ?? "typescript", projectName, input.packageManager, input.javaBuildTool);
873
+ const installCmd = getInstallCommand(input.ecosystem ?? "typescript", projectName, input.packageManager, input.javaBuildTool, input.javaWebFramework);
773
874
  return { content: [{
774
875
  type: "text",
775
876
  text: JSON.stringify({
@@ -868,7 +969,7 @@ async function startMcpServer() {
868
969
  });
869
970
  if (result?.success) {
870
971
  const existingConfig = await readBtsConfig(safePath);
871
- const installCmd = getInstallCommand(existingConfig?.ecosystem ?? "typescript", safePath.split("/").pop() ?? "project", input.packageManager, existingConfig?.javaBuildTool);
972
+ const installCmd = getInstallCommand(existingConfig?.ecosystem ?? "typescript", safePath.split("/").pop() ?? "project", input.packageManager, existingConfig?.javaBuildTool, existingConfig?.javaWebFramework);
872
973
  return { content: [{
873
974
  type: "text",
874
975
  text: JSON.stringify({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-better-fullstack",
3
- "version": "1.6.3",
3
+ "version": "1.7.1",
4
4
  "description": "Scaffold production-ready fullstack apps in seconds. Pick your stack from 425 options — the CLI wires everything together.",
5
5
  "keywords": [
6
6
  "algolia",
@@ -127,15 +127,15 @@
127
127
  "prepublishOnly": "npm run build"
128
128
  },
129
129
  "dependencies": {
130
- "@better-fullstack/template-generator": "^1.6.3",
131
- "@better-fullstack/types": "^1.6.3",
130
+ "@better-fullstack/template-generator": "^1.7.1",
131
+ "@better-fullstack/types": "^1.7.1",
132
132
  "@clack/core": "^0.5.0",
133
- "@clack/prompts": "^1.2.0",
134
- "@orpc/server": "^1.14.0",
133
+ "@clack/prompts": "^1.3.0",
134
+ "@orpc/server": "^1.14.2",
135
135
  "consola": "^3.4.2",
136
136
  "env-paths": "^4.0.0",
137
137
  "execa": "^9.6.1",
138
- "fs-extra": "^11.3.4",
138
+ "fs-extra": "^11.3.5",
139
139
  "gradient-string": "^3.0.0",
140
140
  "handlebars": "^4.7.9",
141
141
  "jsonc-parser": "^3.3.1",
@@ -145,14 +145,14 @@
145
145
  "@modelcontextprotocol/sdk": "^1.29.0",
146
146
  "trpc-cli": "^0.12.1",
147
147
  "ts-morph": "^27.0.2",
148
- "yaml": "^2.8.3",
149
- "zod": "^4.3.6"
148
+ "yaml": "^2.9.0",
149
+ "zod": "4.3.6"
150
150
  },
151
151
  "devDependencies": {
152
152
  "@types/bun": "^1.3.13",
153
153
  "@types/fs-extra": "^11.0.4",
154
- "@types/node": "^25.6.0",
155
- "publint": "^0.3.18",
154
+ "@types/node": "^25.6.2",
155
+ "publint": "^0.3.20",
156
156
  "tsdown": "^0.18.2",
157
157
  "typescript": "^5.9.3"
158
158
  }
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env node
2
- import "./bts-config-B_rZ4_sj.mjs";
3
- import { i as setupLefthook, n as setupBiome, r as setupHusky, t as setupAddons } from "./addons-setup-DQa6TRrx.mjs";
4
-
5
- export { setupAddons };