create-better-fullstack 1.7.0 → 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.
- package/dist/addons-setup-BdKQJ1h6.mjs +5 -0
- package/dist/{addons-setup-DQa6TRrx.mjs → addons-setup-CGhYT2qC.mjs} +1 -1
- package/dist/{bts-config-B_rZ4_sj.mjs → bts-config-bOXo9tbL.mjs} +3 -0
- package/dist/cli.mjs +1 -1
- package/dist/index.d.mts +99 -52
- package/dist/index.mjs +488 -104
- package/dist/{mcp-CuEEG8e5.mjs → mcp-BxEilSGM.mjs} +1 -1
- package/dist/mcp-entry.mjs +116 -15
- package/package.json +8 -8
- package/dist/addons-setup-CBK1Htlc.mjs +0 -5
package/dist/mcp-entry.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { i as getLatestCLIVersion, r as writeBtsConfig, t as readBtsConfig } from "./bts-config-
|
|
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":
|
|
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(
|
|
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-
|
|
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.7.
|
|
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.7.
|
|
131
|
-
"@better-fullstack/types": "^1.7.
|
|
130
|
+
"@better-fullstack/template-generator": "^1.7.1",
|
|
131
|
+
"@better-fullstack/types": "^1.7.1",
|
|
132
132
|
"@clack/core": "^0.5.0",
|
|
133
133
|
"@clack/prompts": "^1.3.0",
|
|
134
|
-
"@orpc/server": "^1.14.
|
|
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.
|
|
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.
|
|
148
|
+
"yaml": "^2.9.0",
|
|
149
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.
|
|
155
|
-
"publint": "^0.3.
|
|
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
|
}
|