@better-fullstack/types 2.4.0 → 2.5.0

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.
Files changed (40) hide show
  1. package/dist/{defaults-DdEGPWbd.d.mts → defaults-CbLlpynl.d.mts} +2 -2
  2. package/dist/defaults-CbLlpynl.d.mts.map +1 -0
  3. package/dist/defaults.d.mts +3 -3
  4. package/dist/index.d.mts +6 -6
  5. package/dist/index.d.mts.map +1 -1
  6. package/dist/index.mjs +50 -4
  7. package/dist/index.mjs.map +1 -1
  8. package/dist/json-schema.d.mts +670 -348
  9. package/dist/json-schema.d.mts.map +1 -1
  10. package/dist/json-schema.mjs +1 -1
  11. package/dist/{schemas-BMTIauzB.d.mts → schemas-BRAokgPa.d.mts} +964 -639
  12. package/dist/schemas-BRAokgPa.d.mts.map +1 -0
  13. package/dist/{schemas-CNrFm0ld.mjs → schemas-CtieNRfz.mjs} +55 -3
  14. package/dist/schemas-CtieNRfz.mjs.map +1 -0
  15. package/dist/schemas.d.mts +2 -2
  16. package/dist/schemas.mjs +2 -2
  17. package/dist/{stack-graph-DWpdF4s0.d.mts → stack-graph-BPw9KsNm.d.mts} +3 -3
  18. package/dist/stack-graph-BPw9KsNm.d.mts.map +1 -0
  19. package/dist/{stack-graph-BqmxkJKS.mjs → stack-graph-CXTiPofQ.mjs} +97 -20
  20. package/dist/stack-graph-CXTiPofQ.mjs.map +1 -0
  21. package/dist/stack-graph.d.mts +3 -3
  22. package/dist/stack-graph.mjs +2 -2
  23. package/dist/{stack-translation-CIt0ziI4.mjs → stack-translation-B-zArJLM.mjs} +202 -23
  24. package/dist/stack-translation-B-zArJLM.mjs.map +1 -0
  25. package/dist/{stack-translation-DyfJJgeD.d.mts → stack-translation-D7KkQm8W.d.mts} +16 -6
  26. package/dist/stack-translation-D7KkQm8W.d.mts.map +1 -0
  27. package/dist/stack-translation.d.mts +4 -4
  28. package/dist/stack-translation.mjs +3 -3
  29. package/dist/{types-BUQyhJDc.d.mts → types-Br0NsnBr.d.mts} +8 -3
  30. package/dist/types-Br0NsnBr.d.mts.map +1 -0
  31. package/dist/types.d.mts +3 -3
  32. package/package.json +1 -1
  33. package/dist/defaults-DdEGPWbd.d.mts.map +0 -1
  34. package/dist/schemas-BMTIauzB.d.mts.map +0 -1
  35. package/dist/schemas-CNrFm0ld.mjs.map +0 -1
  36. package/dist/stack-graph-BqmxkJKS.mjs.map +0 -1
  37. package/dist/stack-graph-DWpdF4s0.d.mts.map +0 -1
  38. package/dist/stack-translation-CIt0ziI4.mjs.map +0 -1
  39. package/dist/stack-translation-DyfJJgeD.d.mts.map +0 -1
  40. package/dist/types-BUQyhJDc.d.mts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["CLI_FLAG_GROUP_DEFINITIONS: readonly CliFlagGroupDefinition[]"],"sources":["../src/cli-flags.ts","../src/local-dev.ts","../src/registry.ts"],"sourcesContent":["import { createCliDefaultProjectConfigBase } from \"./defaults\";\nimport {\n getCategoryCliValues,\n type OptionCategory,\n type OptionCategoryEcosystem,\n} from \"./option-metadata\";\nimport { DIRECTORY_CONFLICT_VALUES, ECOSYSTEM_VALUES, TEMPLATE_VALUES } from \"./schemas\";\n\ntype CliDefaultConfig = ReturnType<typeof createCliDefaultProjectConfigBase>;\ntype CliConfigKey = keyof CliDefaultConfig;\n\n/**\n * How a CLI flag's accepted values are derived. Every source resolves against\n * the shared option metadata / schema value lists in this package so the CLI\n * reference table never drifts from the real generator surface.\n */\nexport type CliFlagValueSource =\n | { readonly kind: \"category\"; readonly category: OptionCategory }\n | { readonly kind: \"categories\"; readonly categories: readonly OptionCategory[] }\n | { readonly kind: \"literal\"; readonly values: readonly string[] }\n | { readonly kind: \"boolean\" }\n | { readonly kind: \"freeform\"; readonly hint: string };\n\nexport type CliFlagDefinition = {\n /** Canonical flag name without the leading dashes, e.g. `frontend`. */\n readonly flag: string;\n readonly summary: string;\n readonly source: CliFlagValueSource;\n /** Project-config field the default value is read from, when applicable. */\n readonly configKey?: CliConfigKey;\n /** Overrides the config-derived default when the config default is ecosystem-dependent. */\n readonly defaultLiteral?: string;\n /** Whether the flag accepts multiple space-separated values. */\n readonly multiple?: boolean;\n};\n\nexport type CliFlagGroupDefinition = {\n readonly id: string;\n readonly title: string;\n readonly description: string;\n readonly ecosystem?: OptionCategoryEcosystem;\n readonly flags: readonly CliFlagDefinition[];\n};\n\nexport type ResolvedCliFlag = {\n /** Flag rendered with the leading dashes, e.g. `--frontend`. */\n readonly flag: string;\n readonly summary: string;\n readonly values: readonly string[];\n readonly valueHint: string | null;\n readonly defaultValue: string | null;\n readonly multiple: boolean;\n};\n\nexport type ResolvedCliFlagGroup = {\n readonly id: string;\n readonly title: string;\n readonly description: string;\n readonly ecosystem?: OptionCategoryEcosystem;\n readonly flags: readonly ResolvedCliFlag[];\n};\n\nexport const CLI_FLAG_GROUP_DEFINITIONS: readonly CliFlagGroupDefinition[] = [\n {\n id: \"common\",\n title: \"Common flags\",\n description: \"Flags that apply to every ecosystem and control workflow behavior.\",\n flags: [\n {\n flag: \"ecosystem\",\n summary: \"Language/runtime ecosystem to scaffold.\",\n source: { kind: \"literal\", values: ECOSYSTEM_VALUES },\n configKey: \"ecosystem\",\n },\n {\n flag: \"template\",\n summary: \"Start from a curated stack preset instead of individual flags.\",\n source: { kind: \"literal\", values: TEMPLATE_VALUES },\n },\n {\n flag: \"part\",\n summary: \"Add a multi-ecosystem stack part. Repeat once per part.\",\n source: { kind: \"freeform\", hint: \"role:ecosystem:tool (e.g. frontend:typescript:next)\" },\n },\n {\n flag: \"addons\",\n summary: \"Repo tooling and platform addons.\",\n source: {\n kind: \"categories\",\n categories: [\"appShells\", \"appPlatforms\", \"codeQuality\", \"documentation\"],\n },\n configKey: \"addons\",\n multiple: true,\n },\n {\n flag: \"examples\",\n summary: \"Optional example features to include.\",\n source: { kind: \"category\", category: \"examples\" },\n configKey: \"examples\",\n multiple: true,\n },\n {\n flag: \"ai-docs\",\n summary: \"Agent instruction files to generate.\",\n source: { kind: \"category\", category: \"aiDocs\" },\n configKey: \"aiDocs\",\n multiple: true,\n },\n {\n flag: \"package-manager\",\n summary: \"Package manager for the generated workspace.\",\n source: { kind: \"category\", category: \"packageManager\" },\n configKey: \"packageManager\",\n },\n {\n flag: \"workspace-shape\",\n summary: \"Monorepo or single-app workspace layout.\",\n source: { kind: \"category\", category: \"workspaceShape\" },\n configKey: \"workspaceShape\",\n },\n {\n flag: \"version-channel\",\n summary: \"Dependency version channel.\",\n source: { kind: \"category\", category: \"versionChannel\" },\n configKey: \"versionChannel\",\n },\n {\n flag: \"web-deploy\",\n summary: \"Deployment target config for the web app.\",\n source: { kind: \"category\", category: \"webDeploy\" },\n configKey: \"webDeploy\",\n },\n {\n flag: \"server-deploy\",\n summary: \"Deployment target config for the server.\",\n source: { kind: \"category\", category: \"serverDeploy\" },\n configKey: \"serverDeploy\",\n },\n {\n flag: \"directory-conflict\",\n summary: \"Strategy when the target directory already exists.\",\n source: { kind: \"literal\", values: DIRECTORY_CONFLICT_VALUES },\n },\n {\n flag: \"install\",\n summary: \"Install dependencies after scaffolding.\",\n source: { kind: \"boolean\" },\n configKey: \"install\",\n },\n {\n flag: \"git\",\n summary: \"Initialize a Git repository.\",\n source: { kind: \"boolean\" },\n configKey: \"git\",\n },\n {\n flag: \"dry-run\",\n summary: \"Preview generated files without writing them.\",\n source: { kind: \"freeform\", hint: \"boolean flag\" },\n },\n {\n flag: \"verify\",\n summary: \"Run generated checks after scaffolding where supported.\",\n source: { kind: \"freeform\", hint: \"boolean flag\" },\n },\n {\n flag: \"yes\",\n summary: \"Accept defaults. Conflicts with core stack flags.\",\n source: { kind: \"freeform\", hint: \"boolean flag\" },\n },\n {\n flag: \"yolo\",\n summary: \"Skip safety confirmations where supported.\",\n source: { kind: \"freeform\", hint: \"boolean flag\" },\n },\n {\n flag: \"verbose\",\n summary: \"Print detailed scaffold output.\",\n source: { kind: \"freeform\", hint: \"boolean flag\" },\n },\n {\n flag: \"disable-analytics\",\n summary: \"Opt out of anonymous CLI analytics.\",\n source: { kind: \"freeform\", hint: \"boolean flag\" },\n },\n ],\n },\n {\n id: \"typescript-stack\",\n title: \"TypeScript stack\",\n description: \"Core stack flags for `--ecosystem typescript`.\",\n ecosystem: \"typescript\",\n flags: [\n {\n flag: \"frontend\",\n summary: \"Web frontend framework(s).\",\n source: { kind: \"category\", category: \"webFrontend\" },\n configKey: \"frontend\",\n multiple: true,\n },\n {\n flag: \"backend\",\n summary: \"Backend framework. `self` pairs with fullstack frontends.\",\n source: { kind: \"category\", category: \"backend\" },\n configKey: \"backend\",\n },\n {\n flag: \"runtime\",\n summary: \"Server runtime.\",\n source: { kind: \"category\", category: \"runtime\" },\n configKey: \"runtime\",\n },\n {\n flag: \"database\",\n summary: \"Database engine.\",\n source: { kind: \"category\", category: \"database\" },\n configKey: \"database\",\n },\n {\n flag: \"orm\",\n summary: \"ORM / query layer.\",\n source: { kind: \"category\", category: \"orm\" },\n configKey: \"orm\",\n },\n {\n flag: \"db-setup\",\n summary: \"Hosted database provider setup.\",\n source: { kind: \"category\", category: \"dbSetup\" },\n configKey: \"dbSetup\",\n },\n {\n flag: \"auth\",\n summary: \"Authentication provider.\",\n source: { kind: \"category\", category: \"auth\" },\n configKey: \"auth\",\n },\n {\n flag: \"api\",\n summary: \"API layer. tRPC is React-oriented.\",\n source: { kind: \"category\", category: \"api\" },\n configKey: \"api\",\n },\n {\n flag: \"astro-integration\",\n summary: \"Astro UI framework integration (Astro frontends).\",\n source: { kind: \"category\", category: \"astroIntegration\" },\n configKey: \"astroIntegration\",\n },\n {\n flag: \"manual-db\",\n summary: \"Skip provider-specific database setup prompts.\",\n source: { kind: \"freeform\", hint: \"boolean flag\" },\n },\n ],\n },\n {\n id: \"typescript-services\",\n title: \"TypeScript services\",\n description: \"Optional service integrations for TypeScript stacks.\",\n ecosystem: \"typescript\",\n flags: [\n {\n flag: \"ai\",\n summary: \"AI SDK / agent framework.\",\n source: { kind: \"category\", category: \"ai\" },\n configKey: \"ai\",\n },\n {\n flag: \"payments\",\n summary: \"Payments provider.\",\n source: { kind: \"category\", category: \"payments\" },\n configKey: \"payments\",\n },\n {\n flag: \"email\",\n summary: \"Email provider.\",\n source: { kind: \"category\", category: \"email\" },\n configKey: \"email\",\n },\n {\n flag: \"realtime\",\n summary: \"Realtime transport.\",\n source: { kind: \"category\", category: \"realtime\" },\n configKey: \"realtime\",\n },\n {\n flag: \"job-queue\",\n summary: \"Background job / queue system.\",\n source: { kind: \"category\", category: \"jobQueue\" },\n configKey: \"jobQueue\",\n },\n {\n flag: \"cms\",\n summary: \"Content management system.\",\n source: { kind: \"category\", category: \"cms\" },\n configKey: \"cms\",\n },\n {\n flag: \"caching\",\n summary: \"Cache layer.\",\n source: { kind: \"category\", category: \"caching\" },\n configKey: \"caching\",\n },\n {\n flag: \"search\",\n summary: \"Search engine.\",\n source: { kind: \"category\", category: \"search\" },\n configKey: \"search\",\n },\n {\n flag: \"file-storage\",\n summary: \"Object storage provider.\",\n source: { kind: \"category\", category: \"fileStorage\" },\n configKey: \"fileStorage\",\n },\n {\n flag: \"file-upload\",\n summary: \"File upload helper.\",\n source: { kind: \"category\", category: \"fileUpload\" },\n configKey: \"fileUpload\",\n },\n {\n flag: \"analytics\",\n summary: \"Web analytics provider.\",\n source: { kind: \"category\", category: \"analytics\" },\n configKey: \"analytics\",\n },\n {\n flag: \"feature-flags\",\n summary: \"Feature flag platform.\",\n source: { kind: \"category\", category: \"featureFlags\" },\n configKey: \"featureFlags\",\n },\n {\n flag: \"integrations\",\n summary: \"Third-party integrations SDK.\",\n source: { kind: \"category\", category: \"integrations\" },\n configKey: \"integrations\",\n },\n {\n flag: \"ecommerce\",\n summary: \"E-commerce platform SDK.\",\n source: { kind: \"category\", category: \"ecommerce\" },\n configKey: \"ecommerce\",\n },\n {\n flag: \"vector-db\",\n summary: \"Vector database.\",\n source: { kind: \"category\", category: \"vectorDb\" },\n configKey: \"vectorDb\",\n },\n {\n flag: \"rate-limit\",\n summary: \"Rate limiting helper.\",\n source: { kind: \"category\", category: \"rateLimit\" },\n configKey: \"rateLimit\",\n },\n {\n flag: \"i18n\",\n summary: \"Internationalization library.\",\n source: { kind: \"category\", category: \"i18n\" },\n configKey: \"i18n\",\n },\n {\n flag: \"effect\",\n summary: \"Effect capability level.\",\n source: { kind: \"category\", category: \"effect\" },\n configKey: \"effect\",\n },\n {\n flag: \"logging\",\n summary: \"Logging library.\",\n source: { kind: \"category\", category: \"logging\" },\n configKey: \"logging\",\n },\n {\n flag: \"observability\",\n summary: \"Observability provider.\",\n source: { kind: \"category\", category: \"observability\" },\n configKey: \"observability\",\n },\n ],\n },\n {\n id: \"typescript-ui\",\n title: \"TypeScript UI and app behavior\",\n description: \"Frontend styling, state, forms, validation, and testing flags.\",\n ecosystem: \"typescript\",\n flags: [\n {\n flag: \"css-framework\",\n summary: \"CSS framework.\",\n source: { kind: \"category\", category: \"cssFramework\" },\n configKey: \"cssFramework\",\n },\n {\n flag: \"ui-library\",\n summary: \"Component library.\",\n source: { kind: \"category\", category: \"uiLibrary\" },\n configKey: \"uiLibrary\",\n },\n {\n flag: \"state-management\",\n summary: \"Client state manager.\",\n source: { kind: \"category\", category: \"stateManagement\" },\n configKey: \"stateManagement\",\n },\n {\n flag: \"forms\",\n summary: \"Form library.\",\n source: { kind: \"category\", category: \"forms\" },\n configKey: \"forms\",\n },\n {\n flag: \"validation\",\n summary: \"Schema validation library.\",\n source: { kind: \"category\", category: \"validation\" },\n configKey: \"validation\",\n },\n {\n flag: \"testing\",\n summary: \"Testing setup.\",\n source: { kind: \"category\", category: \"testing\" },\n configKey: \"testing\",\n },\n {\n flag: \"animation\",\n summary: \"Animation library.\",\n source: { kind: \"category\", category: \"animation\" },\n configKey: \"animation\",\n },\n ],\n },\n {\n id: \"shadcn\",\n title: \"shadcn/ui flags\",\n description: \"Only apply when `--ui-library shadcn-ui` is selected.\",\n ecosystem: \"typescript\",\n flags: [\n {\n flag: \"shadcn-base\",\n summary: \"shadcn primitive base.\",\n source: { kind: \"category\", category: \"shadcnBase\" },\n configKey: \"shadcnBase\",\n },\n {\n flag: \"shadcn-style\",\n summary: \"shadcn style preset.\",\n source: { kind: \"category\", category: \"shadcnStyle\" },\n configKey: \"shadcnStyle\",\n },\n {\n flag: \"shadcn-icon-library\",\n summary: \"Icon library.\",\n source: { kind: \"category\", category: \"shadcnIconLibrary\" },\n configKey: \"shadcnIconLibrary\",\n },\n {\n flag: \"shadcn-color-theme\",\n summary: \"Color theme.\",\n source: { kind: \"category\", category: \"shadcnColorTheme\" },\n configKey: \"shadcnColorTheme\",\n },\n {\n flag: \"shadcn-base-color\",\n summary: \"Base neutral color.\",\n source: { kind: \"category\", category: \"shadcnBaseColor\" },\n configKey: \"shadcnBaseColor\",\n },\n {\n flag: \"shadcn-font\",\n summary: \"Default font.\",\n source: { kind: \"category\", category: \"shadcnFont\" },\n configKey: \"shadcnFont\",\n },\n {\n flag: \"shadcn-radius\",\n summary: \"Corner radius scale.\",\n source: { kind: \"category\", category: \"shadcnRadius\" },\n configKey: \"shadcnRadius\",\n },\n ],\n },\n {\n id: \"react-native\",\n title: \"React Native flags\",\n description: \"Flags for `--ecosystem react-native`.\",\n ecosystem: \"react-native\",\n flags: [\n {\n flag: \"frontend\",\n summary: \"Expo native frontend styling.\",\n source: { kind: \"category\", category: \"nativeFrontend\" },\n defaultLiteral: \"native-bare\",\n multiple: true,\n },\n {\n flag: \"mobile-navigation\",\n summary: \"Navigation library.\",\n source: { kind: \"category\", category: \"mobileNavigation\" },\n configKey: \"mobileNavigation\",\n },\n {\n flag: \"mobile-ui\",\n summary: \"Mobile UI kit.\",\n source: { kind: \"category\", category: \"mobileUI\" },\n configKey: \"mobileUI\",\n },\n {\n flag: \"mobile-storage\",\n summary: \"On-device storage.\",\n source: { kind: \"category\", category: \"mobileStorage\" },\n configKey: \"mobileStorage\",\n },\n {\n flag: \"mobile-testing\",\n summary: \"Mobile testing setup.\",\n source: { kind: \"category\", category: \"mobileTesting\" },\n configKey: \"mobileTesting\",\n },\n {\n flag: \"mobile-push\",\n summary: \"Push notifications.\",\n source: { kind: \"category\", category: \"mobilePush\" },\n configKey: \"mobilePush\",\n },\n {\n flag: \"mobile-ota\",\n summary: \"Over-the-air updates.\",\n source: { kind: \"category\", category: \"mobileOTA\" },\n configKey: \"mobileOTA\",\n },\n {\n flag: \"mobile-deep-linking\",\n summary: \"Deep linking.\",\n source: { kind: \"category\", category: \"mobileDeepLinking\" },\n configKey: \"mobileDeepLinking\",\n },\n {\n flag: \"mobile-libraries\",\n summary: \"Optional Expo modules.\",\n source: { kind: \"category\", category: \"mobileLibraries\" },\n configKey: \"mobileLibraries\",\n multiple: true,\n },\n ],\n },\n {\n id: \"rust\",\n title: \"Rust flags\",\n description: \"Flags for `--ecosystem rust`.\",\n ecosystem: \"rust\",\n flags: [\n {\n flag: \"rust-web-framework\",\n summary: \"Rust web framework.\",\n source: { kind: \"category\", category: \"rustWebFramework\" },\n configKey: \"rustWebFramework\",\n },\n {\n flag: \"rust-frontend\",\n summary: \"WASM frontend.\",\n source: { kind: \"category\", category: \"rustFrontend\" },\n configKey: \"rustFrontend\",\n },\n {\n flag: \"rust-orm\",\n summary: \"Rust ORM / database.\",\n source: { kind: \"category\", category: \"rustOrm\" },\n configKey: \"rustOrm\",\n },\n {\n flag: \"rust-api\",\n summary: \"Rust API layer.\",\n source: { kind: \"category\", category: \"rustApi\" },\n configKey: \"rustApi\",\n },\n {\n flag: \"rust-cli\",\n summary: \"Rust CLI tooling.\",\n source: { kind: \"category\", category: \"rustCli\" },\n configKey: \"rustCli\",\n },\n {\n flag: \"rust-libraries\",\n summary: \"Rust core libraries.\",\n source: { kind: \"category\", category: \"rustLibraries\" },\n configKey: \"rustLibraries\",\n multiple: true,\n },\n {\n flag: \"rust-logging\",\n summary: \"Rust logging.\",\n source: { kind: \"category\", category: \"rustLogging\" },\n configKey: \"rustLogging\",\n },\n {\n flag: \"rust-error-handling\",\n summary: \"Rust error handling.\",\n source: { kind: \"category\", category: \"rustErrorHandling\" },\n configKey: \"rustErrorHandling\",\n },\n {\n flag: \"rust-caching\",\n summary: \"Rust caching.\",\n source: { kind: \"category\", category: \"rustCaching\" },\n configKey: \"rustCaching\",\n },\n {\n flag: \"rust-auth\",\n summary: \"Rust auth.\",\n source: { kind: \"category\", category: \"rustAuth\" },\n configKey: \"rustAuth\",\n },\n {\n flag: \"rust-realtime\",\n summary: \"Rust realtime.\",\n source: { kind: \"category\", category: \"rustRealtime\" },\n configKey: \"rustRealtime\",\n },\n {\n flag: \"rust-message-queue\",\n summary: \"Rust message queue.\",\n source: { kind: \"category\", category: \"rustMessageQueue\" },\n configKey: \"rustMessageQueue\",\n },\n {\n flag: \"rust-observability\",\n summary: \"Rust observability.\",\n source: { kind: \"category\", category: \"rustObservability\" },\n configKey: \"rustObservability\",\n },\n {\n flag: \"rust-templating\",\n summary: \"Rust templating.\",\n source: { kind: \"category\", category: \"rustTemplating\" },\n configKey: \"rustTemplating\",\n },\n ],\n },\n {\n id: \"python\",\n title: \"Python flags\",\n description: \"Flags for `--ecosystem python`.\",\n ecosystem: \"python\",\n flags: [\n {\n flag: \"python-web-framework\",\n summary: \"Python web framework.\",\n source: { kind: \"category\", category: \"pythonWebFramework\" },\n configKey: \"pythonWebFramework\",\n },\n {\n flag: \"python-orm\",\n summary: \"Python ORM / database.\",\n source: { kind: \"category\", category: \"pythonOrm\" },\n configKey: \"pythonOrm\",\n },\n {\n flag: \"python-validation\",\n summary: \"Validation library.\",\n source: { kind: \"category\", category: \"pythonValidation\" },\n configKey: \"pythonValidation\",\n },\n {\n flag: \"python-ai\",\n summary: \"Python AI / ML libraries.\",\n source: { kind: \"category\", category: \"pythonAi\" },\n configKey: \"pythonAi\",\n multiple: true,\n },\n {\n flag: \"python-auth\",\n summary: \"Python auth.\",\n source: { kind: \"category\", category: \"pythonAuth\" },\n configKey: \"pythonAuth\",\n },\n {\n flag: \"python-api\",\n summary: \"Python API framework.\",\n source: { kind: \"category\", category: \"pythonApi\" },\n configKey: \"pythonApi\",\n },\n {\n flag: \"python-task-queue\",\n summary: \"Python task queue.\",\n source: { kind: \"category\", category: \"pythonTaskQueue\" },\n configKey: \"pythonTaskQueue\",\n },\n {\n flag: \"python-graphql\",\n summary: \"Python GraphQL.\",\n source: { kind: \"category\", category: \"pythonGraphql\" },\n configKey: \"pythonGraphql\",\n },\n {\n flag: \"python-quality\",\n summary: \"Python code quality tool.\",\n source: { kind: \"category\", category: \"pythonQuality\" },\n configKey: \"pythonQuality\",\n },\n {\n flag: \"python-testing\",\n summary: \"Python testing libraries.\",\n source: { kind: \"category\", category: \"pythonTesting\" },\n configKey: \"pythonTesting\",\n multiple: true,\n },\n {\n flag: \"python-caching\",\n summary: \"Python caching.\",\n source: { kind: \"category\", category: \"pythonCaching\" },\n configKey: \"pythonCaching\",\n },\n {\n flag: \"python-realtime\",\n summary: \"Python realtime.\",\n source: { kind: \"category\", category: \"pythonRealtime\" },\n configKey: \"pythonRealtime\",\n },\n {\n flag: \"python-observability\",\n summary: \"Python observability.\",\n source: { kind: \"category\", category: \"pythonObservability\" },\n configKey: \"pythonObservability\",\n },\n {\n flag: \"python-cli\",\n summary: \"Python CLI tooling.\",\n source: { kind: \"category\", category: \"pythonCli\" },\n configKey: \"pythonCli\",\n multiple: true,\n },\n {\n flag: \"python-cloud-sdk\",\n summary: \"Python cloud SDK.\",\n source: { kind: \"category\", category: \"pythonCloudSdk\" },\n configKey: \"pythonCloudSdk\",\n },\n {\n flag: \"python-http-client\",\n summary: \"Python HTTP client.\",\n source: { kind: \"category\", category: \"pythonHttpClient\" },\n configKey: \"pythonHttpClient\",\n },\n {\n flag: \"python-data\",\n summary: \"Python data and scientific libraries.\",\n source: { kind: \"category\", category: \"pythonData\" },\n configKey: \"pythonData\",\n multiple: true,\n },\n {\n flag: \"python-media\",\n summary: \"Python media library.\",\n source: { kind: \"category\", category: \"pythonMedia\" },\n configKey: \"pythonMedia\",\n },\n {\n flag: \"python-server\",\n summary: \"Python production server.\",\n source: { kind: \"category\", category: \"pythonServer\" },\n configKey: \"pythonServer\",\n },\n {\n flag: \"python-package-manager\",\n summary: \"Python package manager.\",\n source: { kind: \"category\", category: \"pythonPackageManager\" },\n configKey: \"pythonPackageManager\",\n },\n {\n flag: \"python-message-queue\",\n summary: \"Python message queue client.\",\n source: { kind: \"category\", category: \"pythonMessageQueue\" },\n configKey: \"pythonMessageQueue\",\n },\n ],\n },\n {\n id: \"go\",\n title: \"Go flags\",\n description: \"Flags for `--ecosystem go`. Global `--auth` also applies.\",\n ecosystem: \"go\",\n flags: [\n {\n flag: \"go-web-framework\",\n summary: \"Go web framework.\",\n source: { kind: \"category\", category: \"goWebFramework\" },\n configKey: \"goWebFramework\",\n },\n {\n flag: \"go-orm\",\n summary: \"Go ORM / database.\",\n source: { kind: \"category\", category: \"goOrm\" },\n configKey: \"goOrm\",\n },\n {\n flag: \"go-api\",\n summary: \"Go API layer.\",\n source: { kind: \"category\", category: \"goApi\" },\n configKey: \"goApi\",\n },\n {\n flag: \"go-cli\",\n summary: \"Go CLI tooling.\",\n source: { kind: \"category\", category: \"goCli\" },\n configKey: \"goCli\",\n },\n {\n flag: \"go-logging\",\n summary: \"Go logging.\",\n source: { kind: \"category\", category: \"goLogging\" },\n configKey: \"goLogging\",\n },\n {\n flag: \"go-auth\",\n summary: \"Go-native auth helpers.\",\n source: { kind: \"category\", category: \"goAuth\" },\n configKey: \"goAuth\",\n },\n {\n flag: \"go-testing\",\n summary: \"Go testing libraries.\",\n source: { kind: \"category\", category: \"goTesting\" },\n configKey: \"goTesting\",\n multiple: true,\n },\n {\n flag: \"go-realtime\",\n summary: \"Go realtime.\",\n source: { kind: \"category\", category: \"goRealtime\" },\n configKey: \"goRealtime\",\n },\n {\n flag: \"go-message-queue\",\n summary: \"Go message queue.\",\n source: { kind: \"category\", category: \"goMessageQueue\" },\n configKey: \"goMessageQueue\",\n },\n {\n flag: \"go-caching\",\n summary: \"Go caching.\",\n source: { kind: \"category\", category: \"goCaching\" },\n configKey: \"goCaching\",\n },\n {\n flag: \"go-config\",\n summary: \"Go config loader.\",\n source: { kind: \"category\", category: \"goConfig\" },\n configKey: \"goConfig\",\n },\n {\n flag: \"go-observability\",\n summary: \"Go observability.\",\n source: { kind: \"category\", category: \"goObservability\" },\n configKey: \"goObservability\",\n },\n {\n flag: \"go-validation\",\n summary: \"Go validation.\",\n source: { kind: \"category\", category: \"goValidation\" },\n configKey: \"goValidation\",\n },\n {\n flag: \"go-quality\",\n summary: \"Go code quality.\",\n source: { kind: \"category\", category: \"goQuality\" },\n configKey: \"goQuality\",\n },\n {\n flag: \"go-migrations\",\n summary: \"Go database migrations.\",\n source: { kind: \"category\", category: \"goMigrations\" },\n configKey: \"goMigrations\",\n },\n {\n flag: \"go-templating\",\n summary: \"Go templating.\",\n source: { kind: \"category\", category: \"goTemplating\" },\n configKey: \"goTemplating\",\n },\n {\n flag: \"go-proto-tooling\",\n summary: \"Go protobuf tooling.\",\n source: { kind: \"category\", category: \"goProtoTooling\" },\n configKey: \"goProtoTooling\",\n },\n {\n flag: \"go-di\",\n summary: \"Go dependency injection.\",\n source: { kind: \"category\", category: \"goDI\" },\n configKey: \"goDI\",\n },\n ],\n },\n {\n id: \"java\",\n title: \"Java flags\",\n description: \"Flags for `--ecosystem java`.\",\n ecosystem: \"java\",\n flags: [\n {\n flag: \"java-web-framework\",\n summary: \"Java web framework.\",\n source: { kind: \"category\", category: \"javaWebFramework\" },\n configKey: \"javaWebFramework\",\n },\n {\n flag: \"java-language\",\n summary: \"JVM language (java or kotlin).\",\n source: { kind: \"category\", category: \"javaLanguage\" },\n configKey: \"javaLanguage\",\n },\n {\n flag: \"java-build-tool\",\n summary: \"Build tool.\",\n source: { kind: \"category\", category: \"javaBuildTool\" },\n configKey: \"javaBuildTool\",\n },\n {\n flag: \"java-orm\",\n summary: \"Java ORM / database.\",\n source: { kind: \"category\", category: \"javaOrm\" },\n configKey: \"javaOrm\",\n },\n {\n flag: \"java-auth\",\n summary: \"Java auth.\",\n source: { kind: \"category\", category: \"javaAuth\" },\n configKey: \"javaAuth\",\n },\n {\n flag: \"java-api\",\n summary: \"Java API layer.\",\n source: { kind: \"category\", category: \"javaApi\" },\n configKey: \"javaApi\",\n },\n {\n flag: \"java-logging\",\n summary: \"Java logging.\",\n source: { kind: \"category\", category: \"javaLogging\" },\n configKey: \"javaLogging\",\n },\n {\n flag: \"java-libraries\",\n summary: \"Java libraries.\",\n source: { kind: \"category\", category: \"javaLibraries\" },\n configKey: \"javaLibraries\",\n multiple: true,\n },\n {\n flag: \"java-testing-libraries\",\n summary: \"Java testing libraries.\",\n source: { kind: \"category\", category: \"javaTestingLibraries\" },\n configKey: \"javaTestingLibraries\",\n multiple: true,\n },\n ],\n },\n {\n id: \"dotnet\",\n title: \".NET flags\",\n description: \"Flags for `--ecosystem dotnet`.\",\n ecosystem: \"dotnet\",\n flags: [\n {\n flag: \"dotnet-web-framework\",\n summary: \".NET web framework.\",\n source: { kind: \"category\", category: \"dotnetWebFramework\" },\n configKey: \"dotnetWebFramework\",\n },\n {\n flag: \"dotnet-orm\",\n summary: \".NET data access.\",\n source: { kind: \"category\", category: \"dotnetOrm\" },\n configKey: \"dotnetOrm\",\n },\n {\n flag: \"dotnet-auth\",\n summary: \".NET auth.\",\n source: { kind: \"category\", category: \"dotnetAuth\" },\n configKey: \"dotnetAuth\",\n },\n {\n flag: \"dotnet-api\",\n summary: \".NET API style.\",\n source: { kind: \"category\", category: \"dotnetApi\" },\n configKey: \"dotnetApi\",\n },\n {\n flag: \"dotnet-testing\",\n summary: \".NET testing libraries.\",\n source: { kind: \"category\", category: \"dotnetTesting\" },\n configKey: \"dotnetTesting\",\n multiple: true,\n },\n {\n flag: \"dotnet-job-queue\",\n summary: \".NET background jobs.\",\n source: { kind: \"category\", category: \"dotnetJobQueue\" },\n configKey: \"dotnetJobQueue\",\n },\n {\n flag: \"dotnet-realtime\",\n summary: \".NET realtime.\",\n source: { kind: \"category\", category: \"dotnetRealtime\" },\n configKey: \"dotnetRealtime\",\n },\n {\n flag: \"dotnet-observability\",\n summary: \".NET observability.\",\n source: { kind: \"category\", category: \"dotnetObservability\" },\n configKey: \"dotnetObservability\",\n multiple: true,\n },\n {\n flag: \"dotnet-validation\",\n summary: \".NET validation.\",\n source: { kind: \"category\", category: \"dotnetValidation\" },\n configKey: \"dotnetValidation\",\n },\n {\n flag: \"dotnet-caching\",\n summary: \".NET caching.\",\n source: { kind: \"category\", category: \"dotnetCaching\" },\n configKey: \"dotnetCaching\",\n },\n {\n flag: \"dotnet-deploy\",\n summary: \".NET deploy target.\",\n source: { kind: \"category\", category: \"dotnetDeploy\" },\n configKey: \"dotnetDeploy\",\n },\n {\n flag: \"dotnet-libraries\",\n summary: \"Optional .NET libraries.\",\n source: { kind: \"category\", category: \"dotnetLibraries\" },\n configKey: \"dotnetLibraries\",\n multiple: true,\n },\n ],\n },\n {\n id: \"elixir\",\n title: \"Elixir flags\",\n description: \"Flags for `--ecosystem elixir`.\",\n ecosystem: \"elixir\",\n flags: [\n {\n flag: \"elixir-web-framework\",\n summary: \"Elixir web framework.\",\n source: { kind: \"category\", category: \"elixirWebFramework\" },\n configKey: \"elixirWebFramework\",\n },\n {\n flag: \"elixir-orm\",\n summary: \"Elixir ORM / database.\",\n source: { kind: \"category\", category: \"elixirOrm\" },\n configKey: \"elixirOrm\",\n },\n {\n flag: \"elixir-auth\",\n summary: \"Elixir auth.\",\n source: { kind: \"category\", category: \"elixirAuth\" },\n configKey: \"elixirAuth\",\n },\n {\n flag: \"elixir-api\",\n summary: \"Elixir API layer.\",\n source: { kind: \"category\", category: \"elixirApi\" },\n configKey: \"elixirApi\",\n },\n {\n flag: \"elixir-realtime\",\n summary: \"Elixir realtime.\",\n source: { kind: \"category\", category: \"elixirRealtime\" },\n configKey: \"elixirRealtime\",\n },\n {\n flag: \"elixir-jobs\",\n summary: \"Elixir jobs.\",\n source: { kind: \"category\", category: \"elixirJobs\" },\n configKey: \"elixirJobs\",\n },\n {\n flag: \"elixir-validation\",\n summary: \"Elixir validation.\",\n source: { kind: \"category\", category: \"elixirValidation\" },\n configKey: \"elixirValidation\",\n },\n {\n flag: \"elixir-http\",\n summary: \"Elixir HTTP client.\",\n source: { kind: \"category\", category: \"elixirHttp\" },\n configKey: \"elixirHttp\",\n },\n {\n flag: \"elixir-json\",\n summary: \"Elixir JSON library.\",\n source: { kind: \"category\", category: \"elixirJson\" },\n configKey: \"elixirJson\",\n },\n {\n flag: \"elixir-email\",\n summary: \"Elixir email.\",\n source: { kind: \"category\", category: \"elixirEmail\" },\n configKey: \"elixirEmail\",\n },\n {\n flag: \"elixir-caching\",\n summary: \"Elixir caching.\",\n source: { kind: \"category\", category: \"elixirCaching\" },\n configKey: \"elixirCaching\",\n },\n {\n flag: \"elixir-observability\",\n summary: \"Elixir observability.\",\n source: { kind: \"category\", category: \"elixirObservability\" },\n configKey: \"elixirObservability\",\n },\n {\n flag: \"elixir-testing\",\n summary: \"Elixir testing.\",\n source: { kind: \"category\", category: \"elixirTesting\" },\n configKey: \"elixirTesting\",\n },\n {\n flag: \"elixir-quality\",\n summary: \"Elixir code quality.\",\n source: { kind: \"category\", category: \"elixirQuality\" },\n configKey: \"elixirQuality\",\n },\n {\n flag: \"elixir-i18n\",\n summary: \"Elixir internationalization.\",\n source: { kind: \"category\", category: \"elixirI18n\" },\n configKey: \"elixirI18n\",\n },\n {\n flag: \"elixir-http-server\",\n summary: \"Elixir HTTP server.\",\n source: { kind: \"category\", category: \"elixirHttpServer\" },\n configKey: \"elixirHttpServer\",\n },\n {\n flag: \"elixir-application-framework\",\n summary: \"Elixir application framework.\",\n source: { kind: \"category\", category: \"elixirApplicationFramework\" },\n configKey: \"elixirApplicationFramework\",\n },\n {\n flag: \"elixir-documentation\",\n summary: \"Elixir documentation.\",\n source: { kind: \"category\", category: \"elixirDocumentation\" },\n configKey: \"elixirDocumentation\",\n },\n {\n flag: \"elixir-clustering\",\n summary: \"Elixir clustering.\",\n source: { kind: \"category\", category: \"elixirClustering\" },\n configKey: \"elixirClustering\",\n },\n {\n flag: \"elixir-deploy\",\n summary: \"Elixir deploy target.\",\n source: { kind: \"category\", category: \"elixirDeploy\" },\n configKey: \"elixirDeploy\",\n },\n {\n flag: \"elixir-libraries\",\n summary: \"Elixir libraries.\",\n source: { kind: \"category\", category: \"elixirLibraries\" },\n configKey: \"elixirLibraries\",\n multiple: true,\n },\n ],\n },\n];\n\nfunction resolveValues(def: CliFlagDefinition): { values: string[]; valueHint: string | null } {\n const source = def.source;\n switch (source.kind) {\n case \"boolean\":\n return { values: [], valueHint: `--${def.flag} / --no-${def.flag}` };\n case \"freeform\":\n return { values: [], valueHint: source.hint };\n case \"literal\":\n return { values: [...source.values], valueHint: null };\n case \"category\":\n case \"categories\": {\n const categories = source.kind === \"category\" ? [source.category] : source.categories;\n let values = [...new Set(categories.flatMap((category) => getCategoryCliValues(category)))];\n if (def.multiple && !values.includes(\"none\")) values = [...values, \"none\"];\n return { values, valueHint: null };\n }\n }\n}\n\nfunction formatDefault(def: CliFlagDefinition): string | null {\n if (def.defaultLiteral !== undefined) return def.defaultLiteral;\n if (!def.configKey) return null;\n\n const value = createCliDefaultProjectConfigBase()[def.configKey];\n if (Array.isArray(value)) return value.length > 0 ? value.join(\" \") : \"none\";\n if (typeof value === \"boolean\") return value ? `--${def.flag}` : `--no-${def.flag}`;\n if (value === undefined || value === null) return null;\n return String(value);\n}\n\n/**\n * Resolve the declarative flag registry into fully-populated rows (accepted\n * values + defaults) sourced from the shared option metadata and CLI defaults.\n * The docs CLI-flag data module and any tooling should call this rather than\n * hand-maintaining flag tables.\n */\nexport function getCliFlagReference(): ResolvedCliFlagGroup[] {\n return CLI_FLAG_GROUP_DEFINITIONS.map((group) => ({\n id: group.id,\n title: group.title,\n description: group.description,\n ecosystem: group.ecosystem,\n flags: group.flags.map((def) => {\n const { values, valueHint } = resolveValues(def);\n return {\n flag: `--${def.flag}`,\n summary: def.summary,\n values,\n valueHint,\n defaultValue: formatDefault(def),\n multiple: def.multiple ?? false,\n } satisfies ResolvedCliFlag;\n }),\n }));\n}\n","const VITE_WEB_FRONTENDS = new Set([\n \"react-router\",\n \"react-vite\",\n \"tanstack-router\",\n \"vanilla-vite\",\n \"vue\",\n \"svelte\",\n \"solid\",\n \"fresh\",\n]);\nconst ASTRO_WEB_FRONTENDS = new Set([\"astro\"]);\n\nexport function getLocalWebDevPort(frontend: readonly string[]): 3001 | 4321 | 5173 | 8910 {\n // Redwood's web dev server port is fixed in redwood.toml.\n if (frontend.includes(\"redwood\")) {\n return 8910;\n }\n\n if (frontend.some((entry) => VITE_WEB_FRONTENDS.has(entry))) {\n return 5173;\n }\n\n if (frontend.some((entry) => ASTRO_WEB_FRONTENDS.has(entry))) {\n return 4321;\n }\n\n return 3001;\n}\n","import { z } from \"zod\";\n\n/**\n * Capability-pack registry schemas.\n *\n * A capability pack is a self-contained bundle a community author (or a private\n * team) can drop into an existing Better Fullstack project: a `registry.json`\n * manifest that declares the files to write, the dependencies to merge, the env\n * vars to append, and some advisory metadata. The MVP installer resolves packs\n * from a local path or a `file://` URL only; the `https` source kind is\n * reserved but not yet wired.\n */\n\n/** Where a pack was resolved from. MVP wires `local`/`file` only. */\nexport const CapabilityPackSourceKindSchema = z\n .enum([\"local\", \"file\", \"https\"])\n .describe(\"Pack source kind: local path, file:// URL, or (reserved) https URL\");\nexport type CapabilityPackSourceKind = z.infer<typeof CapabilityPackSourceKindSchema>;\n\n/**\n * A single file contributed by a pack. `content` is written verbatim unless\n * `template` is true, in which case it is rendered through the Better Fullstack\n * Handlebars pipeline against the target project's config first.\n */\nexport const CapabilityPackFileSchema = z\n .object({\n path: z\n .string()\n .min(1)\n .describe(\"Project-relative destination path, e.g. apps/server/src/lib/rate-limit.ts\"),\n content: z.string().describe(\"File contents (rendered as a template when template=true)\"),\n template: z\n .boolean()\n .optional()\n .default(false)\n .describe(\"Render `content` through the template pipeline before writing\"),\n overwrite: z\n .boolean()\n .optional()\n .default(false)\n .describe(\"Overwrite an existing file at `path` instead of skipping it\"),\n })\n .describe(\"A file a capability pack writes into the project\");\nexport type CapabilityPackFile = z.infer<typeof CapabilityPackFileSchema>;\n\n/** An environment variable a pack appends to the project's .env.example. */\nexport const CapabilityPackEnvSchema = z\n .object({\n key: z\n .string()\n .min(1)\n .regex(/^[A-Za-z_][A-Za-z0-9_]*$/, \"Env keys must be valid shell identifiers\")\n .describe(\"Environment variable name, e.g. RATE_LIMIT_REDIS_URL\"),\n value: z\n .string()\n .optional()\n .describe(\"Default value written to .env.example (defaults to empty)\"),\n description: z\n .string()\n .optional()\n .describe(\"Human-readable comment written above the variable\"),\n })\n .describe(\"An environment variable declared by a capability pack\");\nexport type CapabilityPackEnv = z.infer<typeof CapabilityPackEnvSchema>;\n\n/**\n * Dependencies keyed by workspace-relative package.json directory (\".\" for the\n * repo root, \"apps/server\", \"packages/api\", ...) each mapping a dependency name\n * to a literal version string.\n */\nexport const CapabilityPackDependencyMapSchema = z\n .record(z.string(), z.record(z.string(), z.string()))\n .describe('Workspace dir -> { \"dep-name\": \"version\" }');\nexport type CapabilityPackDependencyMap = z.infer<typeof CapabilityPackDependencyMapSchema>;\n\n/** Advisory compatibility metadata (not enforced by the MVP installer). */\nexport const CapabilityPackCompatibilitySchema = z\n .object({\n ecosystems: z\n .array(z.string())\n .optional()\n .describe(\"Ecosystems this pack is intended for (advisory)\"),\n requires: z\n .array(z.string())\n .optional()\n .describe(\"Capability ids the pack expects to already be present (advisory)\"),\n conflicts: z\n .array(z.string())\n .optional()\n .describe(\"Capability ids the pack is known to conflict with (advisory)\"),\n })\n .describe(\"Advisory compatibility metadata for a capability pack\");\nexport type CapabilityPackCompatibility = z.infer<typeof CapabilityPackCompatibilitySchema>;\n\n/** The full `registry.json` manifest for a capability pack. */\nexport const CapabilityPackManifestSchema = z\n .object({\n name: z\n .string()\n .min(1)\n .regex(/^@?[a-z0-9][a-z0-9._@/-]*$/i, \"Pack names must be url/npm-safe\")\n .describe(\"Unique pack identifier, e.g. @acme/rate-limit\"),\n version: z.string().min(1).describe(\"Pack version (semver recommended)\"),\n description: z.string().optional().describe(\"Short human-readable summary\"),\n source: CapabilityPackSourceKindSchema.optional().describe(\"Origin kind (informational)\"),\n files: z\n .array(CapabilityPackFileSchema)\n .default([])\n .describe(\"Files the pack writes into the project\"),\n dependencies: CapabilityPackDependencyMapSchema.optional(),\n devDependencies: CapabilityPackDependencyMapSchema.optional(),\n env: z\n .array(CapabilityPackEnvSchema)\n .default([])\n .describe(\"Env vars appended to the project's .env.example\"),\n addons: z\n .array(z.string())\n .optional()\n .describe(\"Addon ids recorded as metadata (not wired into the addons enum)\"),\n compatibility: CapabilityPackCompatibilitySchema.optional(),\n })\n .describe(\"A community/private capability pack manifest (registry.json)\");\nexport type CapabilityPackManifest = z.infer<typeof CapabilityPackManifestSchema>;\n\n/** A record of one installed pack, persisted in the per-project lockfile. */\nexport const InstalledPackSchema = z\n .object({\n name: z.string().describe(\"Pack identifier\"),\n version: z.string().describe(\"Installed pack version\"),\n source: z.string().describe(\"Resolved source string (local path or file:// URL)\"),\n files: z.array(z.string()).default([]).describe(\"Project-relative paths written by the pack\"),\n installedAt: z.string().describe(\"ISO timestamp of the install\"),\n })\n .describe(\"A capability pack recorded as installed in the project lockfile\");\nexport type InstalledPack = z.infer<typeof InstalledPackSchema>;\n\n/** Current schema version of the per-project registry lockfile. */\nexport const REGISTRY_LOCK_VERSION = 1;\n\n/** The per-project lockfile persisted at `.better-fullstack/registry.json`. */\nexport const RegistryLockSchema = z\n .object({\n version: z.number().int().default(REGISTRY_LOCK_VERSION).describe(\"Lockfile schema version\"),\n packs: z.array(InstalledPackSchema).default([]).describe(\"Installed capability packs\"),\n })\n .describe(\"Per-project registry lockfile (.better-fullstack/registry.json)\");\nexport type RegistryLock = z.infer<typeof RegistryLockSchema>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["CLI_FLAG_GROUP_DEFINITIONS: readonly CliFlagGroupDefinition[]"],"sources":["../src/cli-flags.ts","../src/local-dev.ts","../src/registry.ts"],"sourcesContent":["import { createCliDefaultProjectConfigBase } from \"./defaults\";\nimport {\n getCategoryCliValues,\n type OptionCategory,\n type OptionCategoryEcosystem,\n} from \"./option-metadata\";\nimport { DIRECTORY_CONFLICT_VALUES, ECOSYSTEM_VALUES, TEMPLATE_VALUES } from \"./schemas\";\n\ntype CliDefaultConfig = ReturnType<typeof createCliDefaultProjectConfigBase>;\ntype CliConfigKey = keyof CliDefaultConfig;\n\n/**\n * How a CLI flag's accepted values are derived. Every source resolves against\n * the shared option metadata / schema value lists in this package so the CLI\n * reference table never drifts from the real generator surface.\n */\nexport type CliFlagValueSource =\n | { readonly kind: \"category\"; readonly category: OptionCategory }\n | { readonly kind: \"categories\"; readonly categories: readonly OptionCategory[] }\n | { readonly kind: \"literal\"; readonly values: readonly string[] }\n | { readonly kind: \"boolean\" }\n | { readonly kind: \"freeform\"; readonly hint: string };\n\nexport type CliFlagDefinition = {\n /** Canonical flag name without the leading dashes, e.g. `frontend`. */\n readonly flag: string;\n readonly summary: string;\n readonly source: CliFlagValueSource;\n /** Project-config field the default value is read from, when applicable. */\n readonly configKey?: CliConfigKey;\n /** Overrides the config-derived default when the config default is ecosystem-dependent. */\n readonly defaultLiteral?: string;\n /** Whether the flag accepts multiple space-separated values. */\n readonly multiple?: boolean;\n};\n\nexport type CliFlagGroupDefinition = {\n readonly id: string;\n readonly title: string;\n readonly description: string;\n readonly ecosystem?: OptionCategoryEcosystem;\n readonly flags: readonly CliFlagDefinition[];\n};\n\nexport type ResolvedCliFlag = {\n /** Flag rendered with the leading dashes, e.g. `--frontend`. */\n readonly flag: string;\n readonly summary: string;\n readonly values: readonly string[];\n readonly valueHint: string | null;\n readonly defaultValue: string | null;\n readonly multiple: boolean;\n};\n\nexport type ResolvedCliFlagGroup = {\n readonly id: string;\n readonly title: string;\n readonly description: string;\n readonly ecosystem?: OptionCategoryEcosystem;\n readonly flags: readonly ResolvedCliFlag[];\n};\n\nexport const CLI_FLAG_GROUP_DEFINITIONS: readonly CliFlagGroupDefinition[] = [\n {\n id: \"common\",\n title: \"Common flags\",\n description: \"Flags that apply to every ecosystem and control workflow behavior.\",\n flags: [\n {\n flag: \"ecosystem\",\n summary: \"Language/runtime ecosystem to scaffold.\",\n source: { kind: \"literal\", values: ECOSYSTEM_VALUES },\n configKey: \"ecosystem\",\n },\n {\n flag: \"template\",\n summary: \"Start from a curated stack preset instead of individual flags.\",\n source: { kind: \"literal\", values: TEMPLATE_VALUES },\n },\n {\n flag: \"part\",\n summary: \"Add a multi-ecosystem stack part. Repeat once per part.\",\n source: { kind: \"freeform\", hint: \"role:ecosystem:tool (e.g. frontend:typescript:next)\" },\n },\n {\n flag: \"addons\",\n summary: \"Repo tooling and platform addons.\",\n source: {\n kind: \"categories\",\n categories: [\"appShells\", \"appPlatforms\", \"codeQuality\", \"documentation\"],\n },\n configKey: \"addons\",\n multiple: true,\n },\n {\n flag: \"examples\",\n summary: \"Optional example features to include.\",\n source: { kind: \"category\", category: \"examples\" },\n configKey: \"examples\",\n multiple: true,\n },\n {\n flag: \"ai-docs\",\n summary: \"Agent instruction files to generate.\",\n source: { kind: \"category\", category: \"aiDocs\" },\n configKey: \"aiDocs\",\n multiple: true,\n },\n {\n flag: \"package-manager\",\n summary: \"Package manager for the generated workspace.\",\n source: { kind: \"category\", category: \"packageManager\" },\n configKey: \"packageManager\",\n },\n {\n flag: \"workspace-shape\",\n summary: \"Monorepo or single-app workspace layout.\",\n source: { kind: \"category\", category: \"workspaceShape\" },\n configKey: \"workspaceShape\",\n },\n {\n flag: \"version-channel\",\n summary: \"Dependency version channel.\",\n source: { kind: \"category\", category: \"versionChannel\" },\n configKey: \"versionChannel\",\n },\n {\n flag: \"web-deploy\",\n summary: \"Deployment target config for the web app.\",\n source: { kind: \"category\", category: \"webDeploy\" },\n configKey: \"webDeploy\",\n },\n {\n flag: \"server-deploy\",\n summary: \"Deployment target config for the server.\",\n source: { kind: \"category\", category: \"serverDeploy\" },\n configKey: \"serverDeploy\",\n },\n {\n flag: \"directory-conflict\",\n summary: \"Strategy when the target directory already exists.\",\n source: { kind: \"literal\", values: DIRECTORY_CONFLICT_VALUES },\n },\n {\n flag: \"install\",\n summary: \"Install dependencies after scaffolding.\",\n source: { kind: \"boolean\" },\n configKey: \"install\",\n },\n {\n flag: \"git\",\n summary: \"Initialize a Git repository.\",\n source: { kind: \"boolean\" },\n configKey: \"git\",\n },\n {\n flag: \"dry-run\",\n summary: \"Preview generated files without writing them.\",\n source: { kind: \"freeform\", hint: \"boolean flag\" },\n },\n {\n flag: \"verify\",\n summary: \"Run generated checks after scaffolding where supported.\",\n source: { kind: \"freeform\", hint: \"boolean flag\" },\n },\n {\n flag: \"yes\",\n summary: \"Accept defaults. Conflicts with core stack flags.\",\n source: { kind: \"freeform\", hint: \"boolean flag\" },\n },\n {\n flag: \"yolo\",\n summary: \"Skip safety confirmations where supported.\",\n source: { kind: \"freeform\", hint: \"boolean flag\" },\n },\n {\n flag: \"verbose\",\n summary: \"Print detailed scaffold output.\",\n source: { kind: \"freeform\", hint: \"boolean flag\" },\n },\n {\n flag: \"disable-analytics\",\n summary: \"Opt out of anonymous CLI analytics.\",\n source: { kind: \"freeform\", hint: \"boolean flag\" },\n },\n ],\n },\n {\n id: \"typescript-stack\",\n title: \"TypeScript stack\",\n description: \"Core stack flags for `--ecosystem typescript`.\",\n ecosystem: \"typescript\",\n flags: [\n {\n flag: \"frontend\",\n summary: \"Web frontend framework(s).\",\n source: { kind: \"category\", category: \"webFrontend\" },\n configKey: \"frontend\",\n multiple: true,\n },\n {\n flag: \"backend\",\n summary: \"Backend framework. `self` pairs with fullstack frontends.\",\n source: { kind: \"category\", category: \"backend\" },\n configKey: \"backend\",\n },\n {\n flag: \"runtime\",\n summary: \"Server runtime.\",\n source: { kind: \"category\", category: \"runtime\" },\n configKey: \"runtime\",\n },\n {\n flag: \"database\",\n summary: \"Database engine.\",\n source: { kind: \"category\", category: \"database\" },\n configKey: \"database\",\n },\n {\n flag: \"orm\",\n summary: \"ORM / query layer.\",\n source: { kind: \"category\", category: \"orm\" },\n configKey: \"orm\",\n },\n {\n flag: \"db-setup\",\n summary: \"Hosted database provider setup.\",\n source: { kind: \"category\", category: \"dbSetup\" },\n configKey: \"dbSetup\",\n },\n {\n flag: \"auth\",\n summary: \"Authentication provider.\",\n source: { kind: \"category\", category: \"auth\" },\n configKey: \"auth\",\n },\n {\n flag: \"api\",\n summary: \"API layer. tRPC is React-oriented.\",\n source: { kind: \"category\", category: \"api\" },\n configKey: \"api\",\n },\n {\n flag: \"astro-integration\",\n summary: \"Astro UI framework integration (Astro frontends).\",\n source: { kind: \"category\", category: \"astroIntegration\" },\n configKey: \"astroIntegration\",\n },\n {\n flag: \"manual-db\",\n summary: \"Skip provider-specific database setup prompts.\",\n source: { kind: \"freeform\", hint: \"boolean flag\" },\n },\n ],\n },\n {\n id: \"typescript-services\",\n title: \"TypeScript services\",\n description: \"Optional service integrations for TypeScript stacks.\",\n ecosystem: \"typescript\",\n flags: [\n {\n flag: \"ai\",\n summary: \"AI SDK / agent framework.\",\n source: { kind: \"category\", category: \"ai\" },\n configKey: \"ai\",\n },\n {\n flag: \"payments\",\n summary: \"Payments provider.\",\n source: { kind: \"category\", category: \"payments\" },\n configKey: \"payments\",\n },\n {\n flag: \"email\",\n summary: \"Email provider.\",\n source: { kind: \"category\", category: \"email\" },\n configKey: \"email\",\n },\n {\n flag: \"realtime\",\n summary: \"Realtime transport.\",\n source: { kind: \"category\", category: \"realtime\" },\n configKey: \"realtime\",\n },\n {\n flag: \"job-queue\",\n summary: \"Background job / queue system.\",\n source: { kind: \"category\", category: \"jobQueue\" },\n configKey: \"jobQueue\",\n },\n {\n flag: \"cms\",\n summary: \"Content management system.\",\n source: { kind: \"category\", category: \"cms\" },\n configKey: \"cms\",\n },\n {\n flag: \"caching\",\n summary: \"Cache layer.\",\n source: { kind: \"category\", category: \"caching\" },\n configKey: \"caching\",\n },\n {\n flag: \"search\",\n summary: \"Search engine.\",\n source: { kind: \"category\", category: \"search\" },\n configKey: \"search\",\n },\n {\n flag: \"file-storage\",\n summary: \"Object storage provider.\",\n source: { kind: \"category\", category: \"fileStorage\" },\n configKey: \"fileStorage\",\n },\n {\n flag: \"file-upload\",\n summary: \"File upload helper.\",\n source: { kind: \"category\", category: \"fileUpload\" },\n configKey: \"fileUpload\",\n },\n {\n flag: \"analytics\",\n summary: \"Web analytics provider.\",\n source: { kind: \"category\", category: \"analytics\" },\n configKey: \"analytics\",\n },\n {\n flag: \"feature-flags\",\n summary: \"Feature flag platform.\",\n source: { kind: \"category\", category: \"featureFlags\" },\n configKey: \"featureFlags\",\n },\n {\n flag: \"integrations\",\n summary: \"Third-party integrations SDK.\",\n source: { kind: \"category\", category: \"integrations\" },\n configKey: \"integrations\",\n },\n {\n flag: \"ecommerce\",\n summary: \"E-commerce platform SDK.\",\n source: { kind: \"category\", category: \"ecommerce\" },\n configKey: \"ecommerce\",\n },\n {\n flag: \"vector-db\",\n summary: \"Vector database.\",\n source: { kind: \"category\", category: \"vectorDb\" },\n configKey: \"vectorDb\",\n },\n {\n flag: \"rate-limit\",\n summary: \"Rate limiting helper.\",\n source: { kind: \"category\", category: \"rateLimit\" },\n configKey: \"rateLimit\",\n },\n {\n flag: \"i18n\",\n summary: \"Internationalization library.\",\n source: { kind: \"category\", category: \"i18n\" },\n configKey: \"i18n\",\n },\n {\n flag: \"effect\",\n summary: \"Effect capability level.\",\n source: { kind: \"category\", category: \"effect\" },\n configKey: \"effect\",\n },\n {\n flag: \"logging\",\n summary: \"Logging library.\",\n source: { kind: \"category\", category: \"logging\" },\n configKey: \"logging\",\n },\n {\n flag: \"observability\",\n summary: \"Observability provider.\",\n source: { kind: \"category\", category: \"observability\" },\n configKey: \"observability\",\n },\n ],\n },\n {\n id: \"typescript-ui\",\n title: \"TypeScript UI and app behavior\",\n description: \"Frontend styling, state, forms, validation, and testing flags.\",\n ecosystem: \"typescript\",\n flags: [\n {\n flag: \"css-framework\",\n summary: \"CSS framework.\",\n source: { kind: \"category\", category: \"cssFramework\" },\n configKey: \"cssFramework\",\n },\n {\n flag: \"ui-library\",\n summary: \"Component library.\",\n source: { kind: \"category\", category: \"uiLibrary\" },\n configKey: \"uiLibrary\",\n },\n {\n flag: \"state-management\",\n summary: \"Client state manager.\",\n source: { kind: \"category\", category: \"stateManagement\" },\n configKey: \"stateManagement\",\n },\n {\n flag: \"forms\",\n summary: \"Form library.\",\n source: { kind: \"category\", category: \"forms\" },\n configKey: \"forms\",\n },\n {\n flag: \"validation\",\n summary: \"Schema validation library.\",\n source: { kind: \"category\", category: \"validation\" },\n configKey: \"validation\",\n },\n {\n flag: \"testing\",\n summary: \"Testing setup.\",\n source: { kind: \"category\", category: \"testing\" },\n configKey: \"testing\",\n },\n {\n flag: \"animation\",\n summary: \"Animation library.\",\n source: { kind: \"category\", category: \"animation\" },\n configKey: \"animation\",\n },\n ],\n },\n {\n id: \"shadcn\",\n title: \"shadcn/ui flags\",\n description: \"Only apply when `--ui-library shadcn-ui` is selected.\",\n ecosystem: \"typescript\",\n flags: [\n {\n flag: \"shadcn-base\",\n summary: \"shadcn primitive base.\",\n source: { kind: \"category\", category: \"shadcnBase\" },\n configKey: \"shadcnBase\",\n },\n {\n flag: \"shadcn-style\",\n summary: \"shadcn style preset.\",\n source: { kind: \"category\", category: \"shadcnStyle\" },\n configKey: \"shadcnStyle\",\n },\n {\n flag: \"shadcn-icon-library\",\n summary: \"Icon library.\",\n source: { kind: \"category\", category: \"shadcnIconLibrary\" },\n configKey: \"shadcnIconLibrary\",\n },\n {\n flag: \"shadcn-color-theme\",\n summary: \"Color theme.\",\n source: { kind: \"category\", category: \"shadcnColorTheme\" },\n configKey: \"shadcnColorTheme\",\n },\n {\n flag: \"shadcn-base-color\",\n summary: \"Base neutral color.\",\n source: { kind: \"category\", category: \"shadcnBaseColor\" },\n configKey: \"shadcnBaseColor\",\n },\n {\n flag: \"shadcn-font\",\n summary: \"Default font.\",\n source: { kind: \"category\", category: \"shadcnFont\" },\n configKey: \"shadcnFont\",\n },\n {\n flag: \"shadcn-radius\",\n summary: \"Corner radius scale.\",\n source: { kind: \"category\", category: \"shadcnRadius\" },\n configKey: \"shadcnRadius\",\n },\n ],\n },\n {\n id: \"react-native\",\n title: \"React Native flags\",\n description: \"Flags for `--ecosystem react-native`.\",\n ecosystem: \"react-native\",\n flags: [\n {\n flag: \"frontend\",\n summary: \"Expo native frontend styling.\",\n source: { kind: \"category\", category: \"nativeFrontend\" },\n defaultLiteral: \"native-bare\",\n multiple: true,\n },\n {\n flag: \"mobile-navigation\",\n summary: \"Navigation library.\",\n source: { kind: \"category\", category: \"mobileNavigation\" },\n configKey: \"mobileNavigation\",\n },\n {\n flag: \"mobile-ui\",\n summary: \"Mobile UI kit.\",\n source: { kind: \"category\", category: \"mobileUI\" },\n configKey: \"mobileUI\",\n },\n {\n flag: \"mobile-storage\",\n summary: \"On-device storage.\",\n source: { kind: \"category\", category: \"mobileStorage\" },\n configKey: \"mobileStorage\",\n },\n {\n flag: \"mobile-testing\",\n summary: \"Mobile testing setup.\",\n source: { kind: \"category\", category: \"mobileTesting\" },\n configKey: \"mobileTesting\",\n },\n {\n flag: \"mobile-push\",\n summary: \"Push notifications.\",\n source: { kind: \"category\", category: \"mobilePush\" },\n configKey: \"mobilePush\",\n },\n {\n flag: \"mobile-ota\",\n summary: \"Over-the-air updates.\",\n source: { kind: \"category\", category: \"mobileOTA\" },\n configKey: \"mobileOTA\",\n },\n {\n flag: \"mobile-deep-linking\",\n summary: \"Deep linking.\",\n source: { kind: \"category\", category: \"mobileDeepLinking\" },\n configKey: \"mobileDeepLinking\",\n },\n {\n flag: \"mobile-libraries\",\n summary: \"Optional Expo modules.\",\n source: { kind: \"category\", category: \"mobileLibraries\" },\n configKey: \"mobileLibraries\",\n multiple: true,\n },\n {\n flag: \"kotlin-mobile\",\n summary: \"Kotlin mobile app.\",\n source: { kind: \"category\", category: \"kotlinMobile\" },\n configKey: \"kotlinMobile\",\n },\n {\n flag: \"kotlin-mobile-libraries\",\n summary: \"Optional Kotlin mobile libraries.\",\n source: { kind: \"category\", category: \"kotlinMobileLibraries\" },\n configKey: \"kotlinMobileLibraries\",\n multiple: true,\n },\n {\n flag: \"swift-mobile\",\n summary: \"Swift mobile app.\",\n source: { kind: \"category\", category: \"swiftMobile\" },\n configKey: \"swiftMobile\",\n },\n {\n flag: \"dart-mobile\",\n summary: \"Flutter / Dart mobile app.\",\n source: { kind: \"category\", category: \"dartMobile\" },\n configKey: \"dartMobile\",\n },\n ],\n },\n {\n id: \"rust\",\n title: \"Rust flags\",\n description: \"Flags for `--ecosystem rust`.\",\n ecosystem: \"rust\",\n flags: [\n {\n flag: \"rust-web-framework\",\n summary: \"Rust web framework.\",\n source: { kind: \"category\", category: \"rustWebFramework\" },\n configKey: \"rustWebFramework\",\n },\n {\n flag: \"rust-frontend\",\n summary: \"WASM frontend.\",\n source: { kind: \"category\", category: \"rustFrontend\" },\n configKey: \"rustFrontend\",\n },\n {\n flag: \"rust-orm\",\n summary: \"Rust ORM / database.\",\n source: { kind: \"category\", category: \"rustOrm\" },\n configKey: \"rustOrm\",\n },\n {\n flag: \"rust-api\",\n summary: \"Rust API layer.\",\n source: { kind: \"category\", category: \"rustApi\" },\n configKey: \"rustApi\",\n },\n {\n flag: \"rust-cli\",\n summary: \"Rust CLI tooling.\",\n source: { kind: \"category\", category: \"rustCli\" },\n configKey: \"rustCli\",\n },\n {\n flag: \"rust-libraries\",\n summary: \"Rust core libraries.\",\n source: { kind: \"category\", category: \"rustLibraries\" },\n configKey: \"rustLibraries\",\n multiple: true,\n },\n {\n flag: \"rust-logging\",\n summary: \"Rust logging.\",\n source: { kind: \"category\", category: \"rustLogging\" },\n configKey: \"rustLogging\",\n },\n {\n flag: \"rust-error-handling\",\n summary: \"Rust error handling.\",\n source: { kind: \"category\", category: \"rustErrorHandling\" },\n configKey: \"rustErrorHandling\",\n },\n {\n flag: \"rust-caching\",\n summary: \"Rust caching.\",\n source: { kind: \"category\", category: \"rustCaching\" },\n configKey: \"rustCaching\",\n },\n {\n flag: \"rust-auth\",\n summary: \"Rust auth.\",\n source: { kind: \"category\", category: \"rustAuth\" },\n configKey: \"rustAuth\",\n },\n {\n flag: \"rust-realtime\",\n summary: \"Rust realtime.\",\n source: { kind: \"category\", category: \"rustRealtime\" },\n configKey: \"rustRealtime\",\n },\n {\n flag: \"rust-message-queue\",\n summary: \"Rust message queue.\",\n source: { kind: \"category\", category: \"rustMessageQueue\" },\n configKey: \"rustMessageQueue\",\n },\n {\n flag: \"rust-observability\",\n summary: \"Rust observability.\",\n source: { kind: \"category\", category: \"rustObservability\" },\n configKey: \"rustObservability\",\n },\n {\n flag: \"rust-templating\",\n summary: \"Rust templating.\",\n source: { kind: \"category\", category: \"rustTemplating\" },\n configKey: \"rustTemplating\",\n },\n ],\n },\n {\n id: \"python\",\n title: \"Python flags\",\n description: \"Flags for `--ecosystem python`.\",\n ecosystem: \"python\",\n flags: [\n {\n flag: \"python-web-framework\",\n summary: \"Python web framework.\",\n source: { kind: \"category\", category: \"pythonWebFramework\" },\n configKey: \"pythonWebFramework\",\n },\n {\n flag: \"python-orm\",\n summary: \"Python ORM / database.\",\n source: { kind: \"category\", category: \"pythonOrm\" },\n configKey: \"pythonOrm\",\n },\n {\n flag: \"python-validation\",\n summary: \"Validation library.\",\n source: { kind: \"category\", category: \"pythonValidation\" },\n configKey: \"pythonValidation\",\n },\n {\n flag: \"python-ai\",\n summary: \"Python AI / ML libraries.\",\n source: { kind: \"category\", category: \"pythonAi\" },\n configKey: \"pythonAi\",\n multiple: true,\n },\n {\n flag: \"python-auth\",\n summary: \"Python auth.\",\n source: { kind: \"category\", category: \"pythonAuth\" },\n configKey: \"pythonAuth\",\n },\n {\n flag: \"python-api\",\n summary: \"Python API framework.\",\n source: { kind: \"category\", category: \"pythonApi\" },\n configKey: \"pythonApi\",\n },\n {\n flag: \"python-task-queue\",\n summary: \"Python task queue.\",\n source: { kind: \"category\", category: \"pythonTaskQueue\" },\n configKey: \"pythonTaskQueue\",\n },\n {\n flag: \"python-graphql\",\n summary: \"Python GraphQL.\",\n source: { kind: \"category\", category: \"pythonGraphql\" },\n configKey: \"pythonGraphql\",\n },\n {\n flag: \"python-quality\",\n summary: \"Python code quality tool.\",\n source: { kind: \"category\", category: \"pythonQuality\" },\n configKey: \"pythonQuality\",\n },\n {\n flag: \"python-testing\",\n summary: \"Python testing libraries.\",\n source: { kind: \"category\", category: \"pythonTesting\" },\n configKey: \"pythonTesting\",\n multiple: true,\n },\n {\n flag: \"python-caching\",\n summary: \"Python caching.\",\n source: { kind: \"category\", category: \"pythonCaching\" },\n configKey: \"pythonCaching\",\n },\n {\n flag: \"python-realtime\",\n summary: \"Python realtime.\",\n source: { kind: \"category\", category: \"pythonRealtime\" },\n configKey: \"pythonRealtime\",\n },\n {\n flag: \"python-observability\",\n summary: \"Python observability.\",\n source: { kind: \"category\", category: \"pythonObservability\" },\n configKey: \"pythonObservability\",\n },\n {\n flag: \"python-cli\",\n summary: \"Python CLI tooling.\",\n source: { kind: \"category\", category: \"pythonCli\" },\n configKey: \"pythonCli\",\n multiple: true,\n },\n {\n flag: \"python-cloud-sdk\",\n summary: \"Python cloud SDK.\",\n source: { kind: \"category\", category: \"pythonCloudSdk\" },\n configKey: \"pythonCloudSdk\",\n },\n {\n flag: \"python-http-client\",\n summary: \"Python HTTP client.\",\n source: { kind: \"category\", category: \"pythonHttpClient\" },\n configKey: \"pythonHttpClient\",\n },\n {\n flag: \"python-data\",\n summary: \"Python data and scientific libraries.\",\n source: { kind: \"category\", category: \"pythonData\" },\n configKey: \"pythonData\",\n multiple: true,\n },\n {\n flag: \"python-media\",\n summary: \"Python media library.\",\n source: { kind: \"category\", category: \"pythonMedia\" },\n configKey: \"pythonMedia\",\n },\n {\n flag: \"python-server\",\n summary: \"Python production server.\",\n source: { kind: \"category\", category: \"pythonServer\" },\n configKey: \"pythonServer\",\n },\n {\n flag: \"python-package-manager\",\n summary: \"Python package manager.\",\n source: { kind: \"category\", category: \"pythonPackageManager\" },\n configKey: \"pythonPackageManager\",\n },\n {\n flag: \"python-message-queue\",\n summary: \"Python message queue client.\",\n source: { kind: \"category\", category: \"pythonMessageQueue\" },\n configKey: \"pythonMessageQueue\",\n },\n ],\n },\n {\n id: \"go\",\n title: \"Go flags\",\n description: \"Flags for `--ecosystem go`. Global `--auth` also applies.\",\n ecosystem: \"go\",\n flags: [\n {\n flag: \"go-web-framework\",\n summary: \"Go web framework.\",\n source: { kind: \"category\", category: \"goWebFramework\" },\n configKey: \"goWebFramework\",\n },\n {\n flag: \"go-orm\",\n summary: \"Go ORM / database.\",\n source: { kind: \"category\", category: \"goOrm\" },\n configKey: \"goOrm\",\n },\n {\n flag: \"go-api\",\n summary: \"Go API layer.\",\n source: { kind: \"category\", category: \"goApi\" },\n configKey: \"goApi\",\n },\n {\n flag: \"go-cli\",\n summary: \"Go CLI tooling.\",\n source: { kind: \"category\", category: \"goCli\" },\n configKey: \"goCli\",\n },\n {\n flag: \"go-logging\",\n summary: \"Go logging.\",\n source: { kind: \"category\", category: \"goLogging\" },\n configKey: \"goLogging\",\n },\n {\n flag: \"go-auth\",\n summary: \"Go-native auth helpers.\",\n source: { kind: \"category\", category: \"goAuth\" },\n configKey: \"goAuth\",\n },\n {\n flag: \"go-testing\",\n summary: \"Go testing libraries.\",\n source: { kind: \"category\", category: \"goTesting\" },\n configKey: \"goTesting\",\n multiple: true,\n },\n {\n flag: \"go-realtime\",\n summary: \"Go realtime.\",\n source: { kind: \"category\", category: \"goRealtime\" },\n configKey: \"goRealtime\",\n },\n {\n flag: \"go-message-queue\",\n summary: \"Go message queue.\",\n source: { kind: \"category\", category: \"goMessageQueue\" },\n configKey: \"goMessageQueue\",\n },\n {\n flag: \"go-caching\",\n summary: \"Go caching.\",\n source: { kind: \"category\", category: \"goCaching\" },\n configKey: \"goCaching\",\n },\n {\n flag: \"go-config\",\n summary: \"Go config loader.\",\n source: { kind: \"category\", category: \"goConfig\" },\n configKey: \"goConfig\",\n },\n {\n flag: \"go-observability\",\n summary: \"Go observability.\",\n source: { kind: \"category\", category: \"goObservability\" },\n configKey: \"goObservability\",\n },\n {\n flag: \"go-validation\",\n summary: \"Go validation.\",\n source: { kind: \"category\", category: \"goValidation\" },\n configKey: \"goValidation\",\n },\n {\n flag: \"go-quality\",\n summary: \"Go code quality.\",\n source: { kind: \"category\", category: \"goQuality\" },\n configKey: \"goQuality\",\n },\n {\n flag: \"go-migrations\",\n summary: \"Go database migrations.\",\n source: { kind: \"category\", category: \"goMigrations\" },\n configKey: \"goMigrations\",\n },\n {\n flag: \"go-templating\",\n summary: \"Go templating.\",\n source: { kind: \"category\", category: \"goTemplating\" },\n configKey: \"goTemplating\",\n },\n {\n flag: \"go-proto-tooling\",\n summary: \"Go protobuf tooling.\",\n source: { kind: \"category\", category: \"goProtoTooling\" },\n configKey: \"goProtoTooling\",\n },\n {\n flag: \"go-di\",\n summary: \"Go dependency injection.\",\n source: { kind: \"category\", category: \"goDI\" },\n configKey: \"goDI\",\n },\n ],\n },\n {\n id: \"java\",\n title: \"Java flags\",\n description: \"Flags for `--ecosystem java`.\",\n ecosystem: \"java\",\n flags: [\n {\n flag: \"java-web-framework\",\n summary: \"Java web framework.\",\n source: { kind: \"category\", category: \"javaWebFramework\" },\n configKey: \"javaWebFramework\",\n },\n {\n flag: \"java-language\",\n summary: \"JVM language (java or kotlin).\",\n source: { kind: \"category\", category: \"javaLanguage\" },\n configKey: \"javaLanguage\",\n },\n {\n flag: \"java-build-tool\",\n summary: \"Build tool.\",\n source: { kind: \"category\", category: \"javaBuildTool\" },\n configKey: \"javaBuildTool\",\n },\n {\n flag: \"java-orm\",\n summary: \"Java ORM / database.\",\n source: { kind: \"category\", category: \"javaOrm\" },\n configKey: \"javaOrm\",\n },\n {\n flag: \"java-auth\",\n summary: \"Java auth.\",\n source: { kind: \"category\", category: \"javaAuth\" },\n configKey: \"javaAuth\",\n },\n {\n flag: \"java-api\",\n summary: \"Java API layer.\",\n source: { kind: \"category\", category: \"javaApi\" },\n configKey: \"javaApi\",\n },\n {\n flag: \"java-logging\",\n summary: \"Java logging.\",\n source: { kind: \"category\", category: \"javaLogging\" },\n configKey: \"javaLogging\",\n },\n {\n flag: \"java-libraries\",\n summary: \"Java libraries.\",\n source: { kind: \"category\", category: \"javaLibraries\" },\n configKey: \"javaLibraries\",\n multiple: true,\n },\n {\n flag: \"java-testing-libraries\",\n summary: \"Java testing libraries.\",\n source: { kind: \"category\", category: \"javaTestingLibraries\" },\n configKey: \"javaTestingLibraries\",\n multiple: true,\n },\n ],\n },\n {\n id: \"dotnet\",\n title: \".NET flags\",\n description: \"Flags for `--ecosystem dotnet`.\",\n ecosystem: \"dotnet\",\n flags: [\n {\n flag: \"dotnet-frontend\",\n summary: \".NET frontend.\",\n source: { kind: \"category\", category: \"dotnetFrontend\" },\n configKey: \"dotnetFrontend\",\n },\n {\n flag: \"dotnet-web-framework\",\n summary: \".NET web framework.\",\n source: { kind: \"category\", category: \"dotnetWebFramework\" },\n configKey: \"dotnetWebFramework\",\n },\n {\n flag: \"dotnet-orm\",\n summary: \".NET data access.\",\n source: { kind: \"category\", category: \"dotnetOrm\" },\n configKey: \"dotnetOrm\",\n },\n {\n flag: \"dotnet-auth\",\n summary: \".NET auth.\",\n source: { kind: \"category\", category: \"dotnetAuth\" },\n configKey: \"dotnetAuth\",\n },\n {\n flag: \"dotnet-api\",\n summary: \".NET API style.\",\n source: { kind: \"category\", category: \"dotnetApi\" },\n configKey: \"dotnetApi\",\n },\n {\n flag: \"dotnet-testing\",\n summary: \".NET testing libraries.\",\n source: { kind: \"category\", category: \"dotnetTesting\" },\n configKey: \"dotnetTesting\",\n multiple: true,\n },\n {\n flag: \"dotnet-job-queue\",\n summary: \".NET background jobs.\",\n source: { kind: \"category\", category: \"dotnetJobQueue\" },\n configKey: \"dotnetJobQueue\",\n },\n {\n flag: \"dotnet-realtime\",\n summary: \".NET realtime.\",\n source: { kind: \"category\", category: \"dotnetRealtime\" },\n configKey: \"dotnetRealtime\",\n },\n {\n flag: \"dotnet-observability\",\n summary: \".NET observability.\",\n source: { kind: \"category\", category: \"dotnetObservability\" },\n configKey: \"dotnetObservability\",\n multiple: true,\n },\n {\n flag: \"dotnet-validation\",\n summary: \".NET validation.\",\n source: { kind: \"category\", category: \"dotnetValidation\" },\n configKey: \"dotnetValidation\",\n },\n {\n flag: \"dotnet-caching\",\n summary: \".NET caching.\",\n source: { kind: \"category\", category: \"dotnetCaching\" },\n configKey: \"dotnetCaching\",\n },\n {\n flag: \"dotnet-deploy\",\n summary: \".NET deploy target.\",\n source: { kind: \"category\", category: \"dotnetDeploy\" },\n configKey: \"dotnetDeploy\",\n },\n {\n flag: \"dotnet-libraries\",\n summary: \"Optional .NET libraries.\",\n source: { kind: \"category\", category: \"dotnetLibraries\" },\n configKey: \"dotnetLibraries\",\n multiple: true,\n },\n ],\n },\n {\n id: \"elixir\",\n title: \"Elixir flags\",\n description: \"Flags for `--ecosystem elixir`.\",\n ecosystem: \"elixir\",\n flags: [\n {\n flag: \"elixir-web-framework\",\n summary: \"Elixir web framework.\",\n source: { kind: \"category\", category: \"elixirWebFramework\" },\n configKey: \"elixirWebFramework\",\n },\n {\n flag: \"elixir-orm\",\n summary: \"Elixir ORM / database.\",\n source: { kind: \"category\", category: \"elixirOrm\" },\n configKey: \"elixirOrm\",\n },\n {\n flag: \"elixir-auth\",\n summary: \"Elixir auth.\",\n source: { kind: \"category\", category: \"elixirAuth\" },\n configKey: \"elixirAuth\",\n },\n {\n flag: \"elixir-api\",\n summary: \"Elixir API layer.\",\n source: { kind: \"category\", category: \"elixirApi\" },\n configKey: \"elixirApi\",\n },\n {\n flag: \"elixir-realtime\",\n summary: \"Elixir realtime.\",\n source: { kind: \"category\", category: \"elixirRealtime\" },\n configKey: \"elixirRealtime\",\n },\n {\n flag: \"elixir-jobs\",\n summary: \"Elixir jobs.\",\n source: { kind: \"category\", category: \"elixirJobs\" },\n configKey: \"elixirJobs\",\n },\n {\n flag: \"elixir-validation\",\n summary: \"Elixir validation.\",\n source: { kind: \"category\", category: \"elixirValidation\" },\n configKey: \"elixirValidation\",\n },\n {\n flag: \"elixir-http\",\n summary: \"Elixir HTTP client.\",\n source: { kind: \"category\", category: \"elixirHttp\" },\n configKey: \"elixirHttp\",\n },\n {\n flag: \"elixir-json\",\n summary: \"Elixir JSON library.\",\n source: { kind: \"category\", category: \"elixirJson\" },\n configKey: \"elixirJson\",\n },\n {\n flag: \"elixir-email\",\n summary: \"Elixir email.\",\n source: { kind: \"category\", category: \"elixirEmail\" },\n configKey: \"elixirEmail\",\n },\n {\n flag: \"elixir-caching\",\n summary: \"Elixir caching.\",\n source: { kind: \"category\", category: \"elixirCaching\" },\n configKey: \"elixirCaching\",\n },\n {\n flag: \"elixir-observability\",\n summary: \"Elixir observability.\",\n source: { kind: \"category\", category: \"elixirObservability\" },\n configKey: \"elixirObservability\",\n },\n {\n flag: \"elixir-testing\",\n summary: \"Elixir testing.\",\n source: { kind: \"category\", category: \"elixirTesting\" },\n configKey: \"elixirTesting\",\n },\n {\n flag: \"elixir-quality\",\n summary: \"Elixir code quality.\",\n source: { kind: \"category\", category: \"elixirQuality\" },\n configKey: \"elixirQuality\",\n },\n {\n flag: \"elixir-i18n\",\n summary: \"Elixir internationalization.\",\n source: { kind: \"category\", category: \"elixirI18n\" },\n configKey: \"elixirI18n\",\n },\n {\n flag: \"elixir-http-server\",\n summary: \"Elixir HTTP server.\",\n source: { kind: \"category\", category: \"elixirHttpServer\" },\n configKey: \"elixirHttpServer\",\n },\n {\n flag: \"elixir-application-framework\",\n summary: \"Elixir application framework.\",\n source: { kind: \"category\", category: \"elixirApplicationFramework\" },\n configKey: \"elixirApplicationFramework\",\n },\n {\n flag: \"elixir-documentation\",\n summary: \"Elixir documentation.\",\n source: { kind: \"category\", category: \"elixirDocumentation\" },\n configKey: \"elixirDocumentation\",\n },\n {\n flag: \"elixir-clustering\",\n summary: \"Elixir clustering.\",\n source: { kind: \"category\", category: \"elixirClustering\" },\n configKey: \"elixirClustering\",\n },\n {\n flag: \"elixir-deploy\",\n summary: \"Elixir deploy target.\",\n source: { kind: \"category\", category: \"elixirDeploy\" },\n configKey: \"elixirDeploy\",\n },\n {\n flag: \"elixir-libraries\",\n summary: \"Elixir libraries.\",\n source: { kind: \"category\", category: \"elixirLibraries\" },\n configKey: \"elixirLibraries\",\n multiple: true,\n },\n ],\n },\n];\n\nfunction resolveValues(def: CliFlagDefinition): { values: string[]; valueHint: string | null } {\n const source = def.source;\n switch (source.kind) {\n case \"boolean\":\n return { values: [], valueHint: `--${def.flag} / --no-${def.flag}` };\n case \"freeform\":\n return { values: [], valueHint: source.hint };\n case \"literal\":\n return { values: [...source.values], valueHint: null };\n case \"category\":\n case \"categories\": {\n const categories = source.kind === \"category\" ? [source.category] : source.categories;\n let values = [...new Set(categories.flatMap((category) => getCategoryCliValues(category)))];\n if (def.multiple && !values.includes(\"none\")) values = [...values, \"none\"];\n return { values, valueHint: null };\n }\n }\n}\n\nfunction formatDefault(def: CliFlagDefinition): string | null {\n if (def.defaultLiteral !== undefined) return def.defaultLiteral;\n if (!def.configKey) return null;\n\n const value = createCliDefaultProjectConfigBase()[def.configKey];\n if (Array.isArray(value)) return value.length > 0 ? value.join(\" \") : \"none\";\n if (typeof value === \"boolean\") return value ? `--${def.flag}` : `--no-${def.flag}`;\n if (value === undefined || value === null) return null;\n return String(value);\n}\n\n/**\n * Resolve the declarative flag registry into fully-populated rows (accepted\n * values + defaults) sourced from the shared option metadata and CLI defaults.\n * The docs CLI-flag data module and any tooling should call this rather than\n * hand-maintaining flag tables.\n */\nexport function getCliFlagReference(): ResolvedCliFlagGroup[] {\n return CLI_FLAG_GROUP_DEFINITIONS.map((group) => ({\n id: group.id,\n title: group.title,\n description: group.description,\n ecosystem: group.ecosystem,\n flags: group.flags.map((def) => {\n const { values, valueHint } = resolveValues(def);\n return {\n flag: `--${def.flag}`,\n summary: def.summary,\n values,\n valueHint,\n defaultValue: formatDefault(def),\n multiple: def.multiple ?? false,\n } satisfies ResolvedCliFlag;\n }),\n }));\n}\n","const VITE_WEB_FRONTENDS = new Set([\n \"react-router\",\n \"react-vite\",\n \"tanstack-router\",\n \"vanilla-vite\",\n \"vue\",\n \"svelte\",\n \"solid\",\n \"fresh\",\n]);\nconst ASTRO_WEB_FRONTENDS = new Set([\"astro\"]);\n\nexport function getLocalWebDevPort(frontend: readonly string[]): 3001 | 4321 | 5173 | 8910 {\n // Redwood's web dev server port is fixed in redwood.toml.\n if (frontend.includes(\"redwood\")) {\n return 8910;\n }\n\n if (frontend.some((entry) => VITE_WEB_FRONTENDS.has(entry))) {\n return 5173;\n }\n\n if (frontend.some((entry) => ASTRO_WEB_FRONTENDS.has(entry))) {\n return 4321;\n }\n\n return 3001;\n}\n","import { z } from \"zod\";\n\n/**\n * Capability-pack registry schemas.\n *\n * A capability pack is a self-contained bundle a community author (or a private\n * team) can drop into an existing Better Fullstack project: a `registry.json`\n * manifest that declares the files to write, the dependencies to merge, the env\n * vars to append, and some advisory metadata. The MVP installer resolves packs\n * from a local path or a `file://` URL only; the `https` source kind is\n * reserved but not yet wired.\n */\n\n/** Where a pack was resolved from. MVP wires `local`/`file` only. */\nexport const CapabilityPackSourceKindSchema = z\n .enum([\"local\", \"file\", \"https\"])\n .describe(\"Pack source kind: local path, file:// URL, or (reserved) https URL\");\nexport type CapabilityPackSourceKind = z.infer<typeof CapabilityPackSourceKindSchema>;\n\n/**\n * A single file contributed by a pack. `content` is written verbatim unless\n * `template` is true, in which case it is rendered through the Better Fullstack\n * Handlebars pipeline against the target project's config first.\n */\nexport const CapabilityPackFileSchema = z\n .object({\n path: z\n .string()\n .min(1)\n .describe(\"Project-relative destination path, e.g. apps/server/src/lib/rate-limit.ts\"),\n content: z.string().describe(\"File contents (rendered as a template when template=true)\"),\n template: z\n .boolean()\n .optional()\n .default(false)\n .describe(\"Render `content` through the template pipeline before writing\"),\n overwrite: z\n .boolean()\n .optional()\n .default(false)\n .describe(\"Overwrite an existing file at `path` instead of skipping it\"),\n })\n .describe(\"A file a capability pack writes into the project\");\nexport type CapabilityPackFile = z.infer<typeof CapabilityPackFileSchema>;\n\n/** An environment variable a pack appends to the project's .env.example. */\nexport const CapabilityPackEnvSchema = z\n .object({\n key: z\n .string()\n .min(1)\n .regex(/^[A-Za-z_][A-Za-z0-9_]*$/, \"Env keys must be valid shell identifiers\")\n .describe(\"Environment variable name, e.g. RATE_LIMIT_REDIS_URL\"),\n value: z\n .string()\n .optional()\n .describe(\"Default value written to .env.example (defaults to empty)\"),\n description: z\n .string()\n .optional()\n .describe(\"Human-readable comment written above the variable\"),\n })\n .describe(\"An environment variable declared by a capability pack\");\nexport type CapabilityPackEnv = z.infer<typeof CapabilityPackEnvSchema>;\n\n/**\n * Dependencies keyed by workspace-relative package.json directory (\".\" for the\n * repo root, \"apps/server\", \"packages/api\", ...) each mapping a dependency name\n * to a literal version string.\n */\nexport const CapabilityPackDependencyMapSchema = z\n .record(z.string(), z.record(z.string(), z.string()))\n .describe('Workspace dir -> { \"dep-name\": \"version\" }');\nexport type CapabilityPackDependencyMap = z.infer<typeof CapabilityPackDependencyMapSchema>;\n\n/** Advisory compatibility metadata (not enforced by the MVP installer). */\nexport const CapabilityPackCompatibilitySchema = z\n .object({\n ecosystems: z\n .array(z.string())\n .optional()\n .describe(\"Ecosystems this pack is intended for (advisory)\"),\n requires: z\n .array(z.string())\n .optional()\n .describe(\"Capability ids the pack expects to already be present (advisory)\"),\n conflicts: z\n .array(z.string())\n .optional()\n .describe(\"Capability ids the pack is known to conflict with (advisory)\"),\n })\n .describe(\"Advisory compatibility metadata for a capability pack\");\nexport type CapabilityPackCompatibility = z.infer<typeof CapabilityPackCompatibilitySchema>;\n\n/** The full `registry.json` manifest for a capability pack. */\nexport const CapabilityPackManifestSchema = z\n .object({\n name: z\n .string()\n .min(1)\n .regex(/^@?[a-z0-9][a-z0-9._@/-]*$/i, \"Pack names must be url/npm-safe\")\n .describe(\"Unique pack identifier, e.g. @acme/rate-limit\"),\n version: z.string().min(1).describe(\"Pack version (semver recommended)\"),\n description: z.string().optional().describe(\"Short human-readable summary\"),\n source: CapabilityPackSourceKindSchema.optional().describe(\"Origin kind (informational)\"),\n files: z\n .array(CapabilityPackFileSchema)\n .default([])\n .describe(\"Files the pack writes into the project\"),\n dependencies: CapabilityPackDependencyMapSchema.optional(),\n devDependencies: CapabilityPackDependencyMapSchema.optional(),\n env: z\n .array(CapabilityPackEnvSchema)\n .default([])\n .describe(\"Env vars appended to the project's .env.example\"),\n addons: z\n .array(z.string())\n .optional()\n .describe(\"Addon ids recorded as metadata (not wired into the addons enum)\"),\n compatibility: CapabilityPackCompatibilitySchema.optional(),\n })\n .describe(\"A community/private capability pack manifest (registry.json)\");\nexport type CapabilityPackManifest = z.infer<typeof CapabilityPackManifestSchema>;\n\n/** A record of one installed pack, persisted in the per-project lockfile. */\nexport const InstalledPackSchema = z\n .object({\n name: z.string().describe(\"Pack identifier\"),\n version: z.string().describe(\"Installed pack version\"),\n source: z.string().describe(\"Resolved source string (local path or file:// URL)\"),\n files: z.array(z.string()).default([]).describe(\"Project-relative paths written by the pack\"),\n installedAt: z.string().describe(\"ISO timestamp of the install\"),\n })\n .describe(\"A capability pack recorded as installed in the project lockfile\");\nexport type InstalledPack = z.infer<typeof InstalledPackSchema>;\n\n/** Current schema version of the per-project registry lockfile. */\nexport const REGISTRY_LOCK_VERSION = 1;\n\n/** The per-project lockfile persisted at `.better-fullstack/registry.json`. */\nexport const RegistryLockSchema = z\n .object({\n version: z.number().int().default(REGISTRY_LOCK_VERSION).describe(\"Lockfile schema version\"),\n packs: z.array(InstalledPackSchema).default([]).describe(\"Installed capability packs\"),\n })\n .describe(\"Per-project registry lockfile (.better-fullstack/registry.json)\");\nexport type RegistryLock = z.infer<typeof RegistryLockSchema>;\n"],"mappings":"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"}