create-kubojs 0.1.1 → 0.2.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/README.md CHANGED
@@ -2,8 +2,6 @@
2
2
 
3
3
  A modern CLI tool for scaffolding end-to-end type-safe TypeScript projects with best practices and customizable configurations
4
4
 
5
- ![demo](https://cdn.jsdelivr.net/gh/amanvarshney01/kubojs@master/demo.gif)
6
-
7
5
  ## Quick Start
8
6
 
9
7
  Run without installing globally:
@@ -23,21 +21,22 @@ Follow the prompts to configure your project or use the `--yes` flag for default
23
21
 
24
22
  ## Features
25
23
 
26
- | Category | Options |
27
- | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
28
- | **TypeScript** | End-to-end type safety across all parts of your application |
29
- | **Frontend** | • React with TanStack Router<br>• React with React Router<br>• React with TanStack Start (SSR)<br>• Next.js<br>• SvelteKit<br>• Nuxt (Vue)<br>• SolidJS<br>• Astro<br>• React Native bare Expo<br>• React Native with NativeWind (via Expo)<br>• React Native with Unistyles (via Expo)<br>• None |
30
- | **Backend** | • Hono<br>• Express<br>• Elysia<br>• Fastify<br>• Self (fullstack inside the web app)<br>• Convex<br>• None |
31
- | **API Layer** | • tRPC (type-safe APIs)<br>• oRPC (OpenAPI-compatible type-safe APIs)<br>• None |
32
- | **Runtime** | • Bun<br>• Node.js<br>• Cloudflare Workers<br>• None |
33
- | **Database** | • SQLite<br>• PostgreSQL<br>• MySQL<br>• MongoDB<br>• None |
34
- | **ORM** | • Drizzle (TypeScript-first)<br>• Prisma (feature-rich)<br>• Mongoose (for MongoDB)<br>• None |
35
- | **Database Setup** | • Turso (SQLite)<br>• Cloudflare D1 (SQLite)<br>• Neon (PostgreSQL)<br>• Supabase (PostgreSQL)<br>• Prisma Postgres<br>• MongoDB Atlas<br>• None (manual setup) |
36
- | **Authentication** | • Better Auth<br>• Clerk |
37
- | **Styling** | Tailwind CSS with a shared shadcn/ui package for React web apps |
38
- | **Addons** | • PWA support<br>• Tauri (desktop applications)<br>• Electrobun (lightweight desktop shell)<br>• Starlight and Fumadocs (documentation sites)<br>• Biome, Oxlint, Ultracite, or Vite+ (linting and formatting)<br>• Lefthook, Husky (Git hooks)<br>• evlog (request logging for server/fullstack backends)<br>• MCP, Skills (agent tooling)<br>• OpenTUI, WXT (platform extensions)<br>• Turborepo, Nx, or Vite+ (monorepo orchestration) |
39
- | **Examples** | • Todo app<br>• AI Chat interface (using Vercel AI SDK) |
40
- | **Developer Experience** | • Automatic Git initialization<br>• Package manager choice (npm, pnpm, bun)<br>• Automatic dependency installation |
24
+ | Category | Options |
25
+ | ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
26
+ | **TypeScript** | End-to-end type safety across all parts of your application |
27
+ | **Frontend** | • React with TanStack Router<br>• React with React Router<br>• React with TanStack Start (SSR)<br>• Next.js<br>• SvelteKit<br>• Nuxt (Vue)<br>• SolidJS<br>• Astro<br>• React Native bare Expo<br>• React Native with NativeWind (via Expo)<br>• React Native with Unistyles (via Expo)<br>• None |
28
+ | **Backend** | • Hono<br>• Express<br>• Elysia<br>• Fastify<br>• Self (fullstack inside the web app)<br>• Convex<br>• None |
29
+ | **API Layer** | • tRPC (type-safe APIs)<br>• oRPC (OpenAPI-compatible type-safe APIs)<br>• Orval (OpenAPI REST APIs with generated Hono handlers)<br>• None |
30
+ | **Runtime** | • Bun<br>• Node.js<br>• Cloudflare Workers<br>• None |
31
+ | **Database** | • SQLite<br>• PostgreSQL<br>• MySQL<br>• MongoDB<br>• None |
32
+ | **ORM** | • Drizzle (TypeScript-first)<br>• Prisma (feature-rich)<br>• Mongoose (for MongoDB)<br>• None |
33
+ | **Database Setup** | • Turso (SQLite)<br>• Cloudflare D1 (SQLite)<br>• Neon (PostgreSQL)<br>• Supabase (PostgreSQL)<br>• Prisma Postgres<br>• MongoDB Atlas<br>• None (manual setup) |
34
+ | **Authentication** | • Better Auth<br>• Clerk |
35
+ | **Styling** | Tailwind CSS with a shared shadcn/ui package for React web apps |
36
+ | **Addons** | • PWA support<br>• Tauri (desktop applications)<br>• Electrobun (lightweight desktop shell)<br>• Biome or Oxlint (linting and formatting)<br>• Lefthook, Husky (Git hooks)<br>• S3-compatible Storage (AWS S3, Cloudflare R2, MinIO, Backblaze)<br>• MCP, Skills (agent tooling)<br>• OpenTUI (terminal interfaces)<br>• Turborepo or Vite+ (monorepo orchestration) |
37
+ | **Testing** | • Vitest (unit tests)<br>• Playwright (end-to-end tests, requires a web frontend) |
38
+ | **Examples** | • Todo app<br>• AI Chat interface (using Vercel AI SDK) |
39
+ | **Developer Experience** | • Automatic Git initialization<br>• Package manager choice (npm, pnpm, bun)<br>• Automatic dependency installation |
41
40
 
42
41
  ## Usage
43
42
 
@@ -54,8 +53,9 @@ Options:
54
53
  --auth <provider> Authentication (better-auth, clerk, none)
55
54
  --payments <provider> Payments provider (none)
56
55
  --frontend <types...> Frontend types (tanstack-router, react-router, tanstack-start, next, nuxt, svelte, solid, astro, native-bare, native-uniwind, native-unistyles, none)
57
- --addons <types...> Additional addons (pwa, tauri, electrobun, starlight, biome, lefthook, husky, mcp, turborepo, nx, vite-plus, fumadocs, ultracite, oxlint, opentui, wxt, skills, evlog, none)
56
+ --addons <types...> Additional addons (pwa, tauri, electrobun, biome, lefthook, husky, mcp, turborepo, vite-plus, oxlint, opentui, skills, s3-storage, none)
58
57
  --examples <types...> Examples to include (todo, ai, none)
58
+ --testing <types...> Testing tools (vitest, playwright, none)
59
59
  --git Initialize git repository
60
60
  --no-git Skip git initialization
61
61
  --package-manager <pm> Package manager (npm, pnpm, bun)
@@ -66,7 +66,7 @@ Options:
66
66
  --server-deploy <setup> Server deployment (cloudflare, docker, vercel, none)
67
67
  --backend <framework> Backend framework (hono, express, fastify, elysia, convex, self, none)
68
68
  --runtime <runtime> Runtime (bun, node, workers, none)
69
- --api <type> API type (trpc, orpc, none)
69
+ --api <type> API type (trpc, orpc, orval, none)
70
70
  --directory-conflict <strategy> Directory strategy (merge, overwrite, increment, error)
71
71
  --manual-db Skip automatic database setup prompts
72
72
  -h, --help Display help
@@ -184,7 +184,7 @@ npx kubojs --backend convex --frontend tanstack-router
184
184
  Create a project with documentation site:
185
185
 
186
186
  ```bash
187
- npx kubojs --addons starlight
187
+ npx kubojs --addons s3-storage
188
188
  ```
189
189
 
190
190
  Create a minimal TypeScript project with no backend:
@@ -234,15 +234,18 @@ npx kubojs --frontend none --backend hono --api trpc --database none --addons no
234
234
  - **Convex backend**: Requires `database`, `orm`, `api`, `runtime`, and `server-deploy` to be `none`; auth can be `better-auth`, `clerk`, or `none` depending frontend compatibility
235
235
  - **Backend 'none'**: If selected, this option will force related options like API, ORM, database, authentication, and runtime to 'none'. Examples will also be disabled (set to none/empty).
236
236
  - **Frontend 'none'**: Creates a backend-only project. When selected, PWA, Tauri, Electrobun, and certain examples may be disabled.
237
- - **API 'none'**: Disables tRPC/oRPC setup. Can be used with backend frameworks for REST APIs or custom API implementations.
237
+ - **API 'none'**: Disables tRPC/oRPC/Orval setup. Can be used with backend frameworks for REST APIs or custom API implementations.
238
+ - **API 'orval'**: Generates a local OpenAPI contract, Hono REST handlers, and a Fetch client. Orval currently requires `--backend hono`; run `bun run api:generate` after changing `apps/api/openapi.yaml`.
239
+ The generated `todo` example is not supported by Orval yet.
238
240
  - **Database 'none'**: Disables database setup and requires ORM to be `none`.
239
241
  - **ORM 'none'**: Can be used when you want to handle database operations manually or use a different ORM.
240
242
  - **Runtime 'none'**: Only available with Convex backend, backend `none`, or backend `self`.
241
243
  - **Cloudflare Workers runtime**: Only compatible with Hono backend. If a database is used, MongoDB is not supported.
242
244
  - **Cloudflare D1 setup**: Requires `sqlite` and either `--runtime workers --server-deploy cloudflare` or `--backend self --web-deploy cloudflare`. For `backend self`, D1 is supported on `next`, `tanstack-start`, `nuxt`, `svelte`, and `astro`.
243
245
  - **Addons 'none'**: Skips all addons.
246
+ - **Testing 'none'**: Skips all testing tools. Playwright requires a web frontend.
244
247
  - **Examples 'none'**: Skips all example implementations (todo, AI chat).
245
- - **Nuxt, Svelte, SolidJS, and Astro** frontends are only compatible with oRPC API layer
248
+ - **Nuxt, Svelte, SolidJS, and Astro** frontends are not compatible with tRPC; use oRPC, Orval with Hono, or no API layer.
246
249
  - **PWA support** requires TanStack Router, React Router, Next.js, or SolidJS
247
250
  - **Tauri desktop app** requires TanStack Router, React Router, TanStack Start, Next.js, Nuxt, SvelteKit, SolidJS, or Astro
248
251
  - **Electrobun desktop app** requires TanStack Router, React Router, TanStack Start, Next.js, Nuxt, SvelteKit, SolidJS, or Astro. Desktop packaging uses static web assets, so SSR-first frontends need a static/export build before desktop builds will work.
package/dist/cli.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { _ as types_exports, i as SchemaNameSchema, l as create, m as getSchemaResult, s as add, u as createBtsCli, v as getLatestCLIVersion } from "./src-BAYXN3Za.mjs";
2
+ import { _ as getLatestCLIVersion, g as types_exports, i as SchemaNameSchema, l as create, m as getSchemaResult, s as add, u as createBtsCli } from "./src-CvkZZND8.mjs";
3
3
  import z from "zod";
4
4
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
5
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
@@ -19,9 +19,12 @@ const McpCreateProjectInputSchema = types_exports.CreateInputSchema.safeExtend({
19
19
  orm: types_exports.ORMSchema.describe("Explicit ORM choice"),
20
20
  api: types_exports.APISchema.describe("Explicit API layer"),
21
21
  auth: types_exports.AuthSchema.describe("Explicit authentication provider"),
22
- payments: types_exports.PaymentsSchema.describe("Explicit payments provider"),
22
+ payments: types_exports.PaymentsSchema.describe("Explicit payment providers; use [] for none"),
23
+ observability: types_exports.ObservabilitySchema.describe("Explicit observability providers; use [] for none"),
24
+ communication: types_exports.CommunicationSchema.describe("Explicit communication provider"),
23
25
  addons: z.array(types_exports.AddonsSchema).describe("Explicit addon list. Use [] when no addons are needed."),
24
26
  examples: z.array(types_exports.ExamplesSchema).describe("Explicit example list. Use [] when no examples are needed."),
27
+ testing: z.array(types_exports.TestingSchema).describe("Explicit testing tools list. Use [] when no testing tools are needed."),
25
28
  git: z.boolean().describe("Whether to initialize a git repository"),
26
29
  packageManager: types_exports.PackageManagerSchema.describe("Explicit package manager"),
27
30
  install: z.boolean().describe("Whether to install dependencies"),
@@ -31,7 +34,7 @@ const McpCreateProjectInputSchema = types_exports.CreateInputSchema.safeExtend({
31
34
  addonOptions: types_exports.AddonOptionsSchema.optional(),
32
35
  dbSetupOptions: types_exports.DbSetupOptionsSchema.optional(),
33
36
  directoryConflict: types_exports.DirectoryConflictSchema.optional()
34
- }).describe("Explicit I dont know project configuration for MCP use. Provide the full stack config instead of relying on inferred defaults.");
37
+ }).describe("Explicit kubojs project configuration for MCP use. Provide the full stack config instead of relying on inferred defaults.");
35
38
  function formatToolSuccess(data) {
36
39
  return {
37
40
  content: [{
@@ -94,6 +97,7 @@ function getStackGuidance() {
94
97
  "payments",
95
98
  "addons",
96
99
  "examples",
100
+ "testing",
97
101
  "git",
98
102
  "packageManager",
99
103
  "install",
@@ -112,6 +116,7 @@ function getStackGuidance() {
112
116
  frontend: "frontend is for app surfaces only. Choose explicit app targets such as next, react-router, tanstack-router, native-bare, native-uniwind, or native-unistyles.",
113
117
  addons: "addons must be an explicit array. Use [] when no addons are requested.",
114
118
  examples: "examples must be an explicit array. Use [] when no examples are requested.",
119
+ testing: "testing must be an explicit array. Use [] when no testing tools are requested.",
115
120
  dbSetup: "dbSetup is always required. Use 'none' when no managed database provisioning is requested.",
116
121
  webDeploy: "webDeploy is always required. Use 'none' when no web deployment target is requested.",
117
122
  serverDeploy: "serverDeploy is always required. Use 'none' when no server deployment target is requested.",
@@ -133,11 +138,11 @@ function createBtsMcpServer() {
133
138
  version: getLatestCLIVersion()
134
139
  }, { capabilities: { logging: {} } });
135
140
  server.registerTool("bts_get_stack_guidance", {
136
- title: "Get I dont know MCP Guidance",
137
- description: "Read MCP-specific guidance for choosing valid I dont know configurations. Use this before planning when user intent is ambiguous. This explains the full explicit config required by MCP project creation, plus important field semantics and ambiguity rules.",
141
+ title: "Get kubojs MCP Guidance",
142
+ description: "Read MCP-specific guidance for choosing valid kubojs configurations. Use this before planning when user intent is ambiguous. This explains the full explicit config required by MCP project creation, plus important field semantics and ambiguity rules.",
138
143
  outputSchema: ToolResponseSchema,
139
144
  annotations: {
140
- title: "Get I dont know MCP Guidance",
145
+ title: "Get kubojs MCP Guidance",
141
146
  readOnlyHint: true,
142
147
  destructiveHint: false,
143
148
  idempotentHint: true,
@@ -151,12 +156,12 @@ function createBtsMcpServer() {
151
156
  }
152
157
  });
153
158
  server.registerTool("bts_get_schema", {
154
- title: "Get I dont know Schemas",
155
- description: "Inspect I dont know CLI and input schemas so agents can plan valid create/add requests. Use this together with bts_get_stack_guidance before creating a project if any part of the request is ambiguous.",
159
+ title: "Get kubojs Schemas",
160
+ description: "Inspect kubojs CLI and input schemas so agents can plan valid create/add requests. Use this together with bts_get_stack_guidance before creating a project if any part of the request is ambiguous.",
156
161
  inputSchema: SchemaToolInputSchema,
157
162
  outputSchema: ToolResponseSchema,
158
163
  annotations: {
159
- title: "Get I dont know Schemas",
164
+ title: "Get kubojs Schemas",
160
165
  readOnlyHint: true,
161
166
  destructiveHint: false,
162
167
  idempotentHint: true,
@@ -170,12 +175,12 @@ function createBtsMcpServer() {
170
175
  }
171
176
  });
172
177
  server.registerTool("bts_plan_project", {
173
- title: "Plan I dont know Project",
174
- description: "Validate and preview an I dont know project creation without writing files or provisioning resources. Always use this before bts_create_project. This tool requires an explicit full stack config rather than a partial payload with inferred defaults.",
178
+ title: "Plan kubojs Project",
179
+ description: "Validate and preview a kubojs project creation without writing files or provisioning resources. Always use this before bts_create_project. This tool requires an explicit full stack config rather than a partial payload with inferred defaults.",
175
180
  inputSchema: McpCreateProjectInputSchema,
176
181
  outputSchema: ToolResponseSchema,
177
182
  annotations: {
178
- title: "Plan I dont know Project",
183
+ title: "Plan kubojs Project",
179
184
  readOnlyHint: true,
180
185
  destructiveHint: false,
181
186
  idempotentHint: true,
@@ -202,12 +207,12 @@ function createBtsMcpServer() {
202
207
  }
203
208
  });
204
209
  server.registerTool("bts_create_project", {
205
- title: "Create I dont know Project",
206
- description: "Create an I dont know project on disk using the same silent programmatic flow as the CLI JSON API. Call this only after bts_plan_project succeeds and the plan clearly matches the user's intent. This tool requires an explicit full stack config.",
210
+ title: "Create kubojs Project",
211
+ description: "Create a kubojs project on disk using the same silent programmatic flow as the CLI JSON API. Call this only after bts_plan_project succeeds and the plan clearly matches the user's intent. This tool requires an explicit full stack config.",
207
212
  inputSchema: McpCreateProjectInputSchema,
208
213
  outputSchema: ToolResponseSchema,
209
214
  annotations: {
210
- title: "Create I dont know Project",
215
+ title: "Create kubojs Project",
211
216
  ...getProjectToolAnnotations()
212
217
  }
213
218
  }, async (input) => {
@@ -224,12 +229,12 @@ function createBtsMcpServer() {
224
229
  }
225
230
  });
226
231
  server.registerTool("bts_plan_addons", {
227
- title: "Plan I dont know Addons",
228
- description: "Validate and preview addon installation for an existing I dont know project without writing files. Always use this before bts_add_addons when the addon set or nested options are uncertain.",
232
+ title: "Plan kubojs Addons",
233
+ description: "Validate and preview addon installation for an existing kubojs project without writing files. Always use this before bts_add_addons when the addon set or nested options are uncertain.",
229
234
  inputSchema: types_exports.AddInputSchema,
230
235
  outputSchema: ToolResponseSchema,
231
236
  annotations: {
232
- title: "Plan I dont know Addons",
237
+ title: "Plan kubojs Addons",
233
238
  readOnlyHint: true,
234
239
  destructiveHint: false,
235
240
  idempotentHint: true,
@@ -248,12 +253,12 @@ function createBtsMcpServer() {
248
253
  }
249
254
  });
250
255
  server.registerTool("bts_add_addons", {
251
- title: "Add I dont know Addons",
252
- description: "Install addons into an existing I dont know project using the same silent flow as add-json. Call this only after bts_plan_addons succeeds and the planned changes match the user's intent.",
256
+ title: "Add kubojs Addons",
257
+ description: "Install addons into an existing kubojs project using the same silent flow as add-json. Call this only after bts_plan_addons succeeds and the planned changes match the user's intent.",
253
258
  inputSchema: types_exports.AddInputSchema,
254
259
  outputSchema: ToolResponseSchema,
255
260
  annotations: {
256
- title: "Add I dont know Addons",
261
+ title: "Add kubojs Addons",
257
262
  destructiveHint: true,
258
263
  idempotentHint: false,
259
264
  openWorldHint: true
@@ -281,7 +286,7 @@ if (command === "mcp") {
281
286
  if (args.includes("--help") || args.includes("-h")) {
282
287
  console.log(`Usage: kubojs mcp
283
288
 
284
- Start the I dont know MCP server over stdio.
289
+ Start the kubojs MCP server over stdio.
285
290
 
286
291
  This command is intended to be launched by an MCP client, for example:
287
292
  kubojs mcp`);
package/dist/index.d.mts CHANGED
@@ -137,12 +137,14 @@ declare const SchemaNameSchema: z.ZodDefault<z.ZodEnum<{
137
137
  frontend: "frontend";
138
138
  addons: "addons";
139
139
  examples: "examples";
140
+ testing: "testing";
140
141
  packageManager: "packageManager";
141
142
  databaseSetup: "databaseSetup";
142
143
  api: "api";
143
144
  auth: "auth";
144
145
  payments: "payments";
145
146
  observability: "observability";
147
+ communication: "communication";
146
148
  webDeploy: "webDeploy";
147
149
  serverDeploy: "serverDeploy";
148
150
  directoryConflict: "directoryConflict";
@@ -152,8 +154,8 @@ declare const SchemaNameSchema: z.ZodDefault<z.ZodEnum<{
152
154
  createInput: "createInput";
153
155
  addInput: "addInput";
154
156
  projectConfig: "projectConfig";
155
- betterTStackConfig: "betterTStackConfig";
156
- betterTStackConfigFile: "betterTStackConfigFile";
157
+ kubojsConfig: "kubojsConfig";
158
+ kubojsConfigFile: "kubojsConfigFile";
157
159
  initResult: "initResult";
158
160
  }>>;
159
161
  type SchemaName = z.infer<typeof SchemaNameSchema>;
@@ -174,18 +176,21 @@ declare const router: _$_trpc_server0.TRPCBuiltRouter<{
174
176
  database?: "none" | "sqlite" | "postgres" | "mysql" | "mongodb" | undefined;
175
177
  orm?: "none" | "drizzle" | "prisma" | "mongoose" | undefined;
176
178
  auth?: "none" | "better-auth" | "clerk" | undefined;
177
- payments?: "none" | "abacatepay" | undefined;
178
- observability?: "none" | "getmonitor" | undefined;
179
+ payments?: unknown;
180
+ observability?: unknown;
181
+ disableObservability?: boolean | undefined;
182
+ communication?: "none" | "resend" | "notifique" | "arara" | undefined;
179
183
  frontend?: ("none" | "tanstack-router" | "react-router" | "tanstack-start" | "next" | "nuxt" | "native-bare" | "native-uniwind" | "native-unistyles" | "svelte" | "solid" | "astro")[] | undefined;
180
- addons?: ("none" | "pwa" | "tauri" | "electrobun" | "starlight" | "biome" | "lefthook" | "husky" | "mcp" | "turborepo" | "nx" | "vite-plus" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "skills" | "evlog")[] | undefined;
184
+ addons?: ("none" | "pwa" | "tauri" | "electrobun" | "biome" | "lefthook" | "husky" | "mcp" | "turborepo" | "vite-plus" | "oxlint" | "opentui" | "skills" | "s3-storage")[] | undefined;
181
185
  examples?: ("none" | "todo" | "ai")[] | undefined;
186
+ testing?: ("none" | "vitest" | "playwright")[] | undefined;
182
187
  git?: boolean | undefined;
183
188
  packageManager?: "bun" | "npm" | "pnpm" | undefined;
184
189
  install?: boolean | undefined;
185
190
  dbSetup?: "none" | "turso" | "neon" | "prisma-postgres" | "planetscale" | "mongodb-atlas" | "supabase" | "d1" | "docker" | undefined;
186
191
  backend?: "none" | "hono" | "express" | "fastify" | "elysia" | "convex" | "self" | undefined;
187
192
  runtime?: "none" | "bun" | "node" | "workers" | undefined;
188
- api?: "none" | "trpc" | "orpc" | undefined;
193
+ api?: "none" | "trpc" | "orpc" | "orval" | undefined;
189
194
  webDeploy?: "none" | "docker" | "cloudflare" | "vercel" | "guaracloud" | undefined;
190
195
  serverDeploy?: "none" | "docker" | "cloudflare" | "vercel" | "guaracloud" | undefined;
191
196
  directoryConflict?: "merge" | "overwrite" | "increment" | "error" | undefined;
@@ -221,23 +226,12 @@ declare const router: _$_trpc_server0.TRPCBuiltRouter<{
221
226
  dryRun?: boolean | undefined;
222
227
  verbose?: boolean | undefined;
223
228
  addonOptions?: {
224
- wxt?: {
225
- template: "svelte" | "solid" | "vanilla" | "vue" | "react";
226
- devPort?: number | undefined;
227
- } | undefined;
228
- fumadocs?: {
229
- template: "react-router" | "tanstack-start" | "next-mdx" | "next-mdx-static" | "waku" | "react-router-spa" | "tanstack-start-spa";
230
- devPort?: number | undefined;
231
- search?: "orama" | "orama-cloud" | undefined;
232
- ogImage?: "next-og" | "takumi" | undefined;
233
- aiChat?: "openrouter" | "llmgateway" | "inkeep" | undefined;
234
- } | undefined;
235
229
  opentui?: {
236
- template: "solid" | "react" | "core";
230
+ template: "solid" | "core" | "react";
237
231
  } | undefined;
238
232
  mcp?: {
239
233
  scope?: "project" | "global" | undefined;
240
- servers?: ("nx" | "better-auth" | "clerk" | "neon" | "planetscale" | "supabase" | "convex" | "kubojs" | "context7" | "cloudflare-docs" | "shadcn" | "next-devtools" | "nuxt-docs" | "nuxt-ui-docs" | "svelte-docs" | "astro-docs" | "expo" | "polar")[] | undefined;
234
+ servers?: ("better-auth" | "clerk" | "neon" | "planetscale" | "supabase" | "convex" | "kubojs" | "context7" | "nx" | "cloudflare-docs" | "shadcn" | "next-devtools" | "nuxt-docs" | "nuxt-ui-docs" | "svelte-docs" | "astro-docs" | "expo" | "polar")[] | undefined;
241
235
  agents?: ("antigravity" | "cline" | "cline-cli" | "cursor" | "claude-code" | "codex" | "opencode" | "gemini-cli" | "github-copilot-cli" | "mcporter" | "vscode" | "zed" | "claude-desktop" | "goose")[] | undefined;
242
236
  } | undefined;
243
237
  skills?: {
@@ -248,12 +242,6 @@ declare const router: _$_trpc_server0.TRPCBuiltRouter<{
248
242
  skills: string[];
249
243
  }[] | undefined;
250
244
  } | undefined;
251
- ultracite?: {
252
- linter?: "biome" | "oxlint" | undefined;
253
- editors?: ("void" | "antigravity" | "cursor" | "vscode" | "zed" | "windsurf" | "trae" | "codebuddy" | "bob" | "kiro")[] | undefined;
254
- agents?: ("vercel" | "cline" | "codex" | "opencode" | "goose" | "amp" | "pi" | "qoder" | "droid" | "zencoder" | "mcpjam" | "bob" | "universal" | "claude" | "jules" | "replit" | "devin" | "lovable" | "ona" | "openclaw" | "continue" | "snowflake-cortex" | "deepagents" | "kimi-cli" | "mux" | "adal" | "copilot" | "aider" | "firebase-studio" | "open-hands" | "gemini" | "junie" | "augmentcode" | "kilo-code" | "roo-code" | "warp" | "crush" | "qwen" | "amazon-q-cli" | "firebender" | "cursor-cli" | "mistral-vibe")[] | undefined;
255
- hooks?: ("cursor" | "windsurf" | "codebuddy" | "claude" | "copilot")[] | undefined;
256
- } | undefined;
257
245
  } | undefined;
258
246
  dbSetupOptions?: {
259
247
  mode?: "manual" | "auto" | undefined;
@@ -274,18 +262,21 @@ declare const router: _$_trpc_server0.TRPCBuiltRouter<{
274
262
  database?: "none" | "sqlite" | "postgres" | "mysql" | "mongodb" | undefined;
275
263
  orm?: "none" | "drizzle" | "prisma" | "mongoose" | undefined;
276
264
  auth?: "none" | "better-auth" | "clerk" | undefined;
277
- payments?: "none" | "abacatepay" | undefined;
278
- observability?: "none" | "getmonitor" | undefined;
265
+ payments?: unknown;
266
+ observability?: unknown;
267
+ disableObservability?: boolean | undefined;
268
+ communication?: "none" | "resend" | "notifique" | "arara" | undefined;
279
269
  frontend?: ("none" | "tanstack-router" | "react-router" | "tanstack-start" | "next" | "nuxt" | "native-bare" | "native-uniwind" | "native-unistyles" | "svelte" | "solid" | "astro")[] | undefined;
280
- addons?: ("none" | "pwa" | "tauri" | "electrobun" | "starlight" | "biome" | "lefthook" | "husky" | "mcp" | "turborepo" | "nx" | "vite-plus" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "skills" | "evlog")[] | undefined;
270
+ addons?: ("none" | "pwa" | "tauri" | "electrobun" | "biome" | "lefthook" | "husky" | "mcp" | "turborepo" | "vite-plus" | "oxlint" | "opentui" | "skills" | "s3-storage")[] | undefined;
281
271
  examples?: ("none" | "todo" | "ai")[] | undefined;
272
+ testing?: ("none" | "vitest" | "playwright")[] | undefined;
282
273
  git?: boolean | undefined;
283
274
  packageManager?: "bun" | "npm" | "pnpm" | undefined;
284
275
  install?: boolean | undefined;
285
276
  dbSetup?: "none" | "turso" | "neon" | "prisma-postgres" | "planetscale" | "mongodb-atlas" | "supabase" | "d1" | "docker" | undefined;
286
277
  backend?: "none" | "hono" | "express" | "fastify" | "elysia" | "convex" | "self" | undefined;
287
278
  runtime?: "none" | "bun" | "node" | "workers" | undefined;
288
- api?: "none" | "trpc" | "orpc" | undefined;
279
+ api?: "none" | "trpc" | "orpc" | "orval" | undefined;
289
280
  webDeploy?: "none" | "docker" | "cloudflare" | "vercel" | "guaracloud" | undefined;
290
281
  serverDeploy?: "none" | "docker" | "cloudflare" | "vercel" | "guaracloud" | undefined;
291
282
  directoryConflict?: "merge" | "overwrite" | "increment" | "error" | undefined;
@@ -298,16 +289,11 @@ declare const router: _$_trpc_server0.TRPCBuiltRouter<{
298
289
  }>;
299
290
  schema: _$_trpc_server0.TRPCQueryProcedure<{
300
291
  input: {
301
- name?: "all" | "cli" | "database" | "orm" | "backend" | "runtime" | "frontend" | "addons" | "examples" | "packageManager" | "databaseSetup" | "api" | "auth" | "payments" | "observability" | "webDeploy" | "serverDeploy" | "directoryConflict" | "template" | "addonOptions" | "dbSetupOptions" | "createInput" | "addInput" | "projectConfig" | "betterTStackConfig" | "betterTStackConfigFile" | "initResult" | undefined;
292
+ name?: "all" | "cli" | "database" | "orm" | "backend" | "runtime" | "frontend" | "addons" | "examples" | "testing" | "packageManager" | "databaseSetup" | "api" | "auth" | "payments" | "observability" | "communication" | "webDeploy" | "serverDeploy" | "directoryConflict" | "template" | "addonOptions" | "dbSetupOptions" | "createInput" | "addInput" | "projectConfig" | "kubojsConfig" | "kubojsConfigFile" | "initResult" | undefined;
302
293
  };
303
294
  output: unknown;
304
295
  meta: TrpcCliMeta;
305
296
  }>;
306
- sponsors: _$_trpc_server0.TRPCMutationProcedure<{
307
- input: void;
308
- output: void;
309
- meta: TrpcCliMeta;
310
- }>;
311
297
  docs: _$_trpc_server0.TRPCMutationProcedure<{
312
298
  input: void;
313
299
  output: void;
@@ -320,7 +306,8 @@ declare const router: _$_trpc_server0.TRPCBuiltRouter<{
320
306
  }>;
321
307
  add: _$_trpc_server0.TRPCMutationProcedure<{
322
308
  input: {
323
- addons?: ("none" | "pwa" | "tauri" | "electrobun" | "starlight" | "biome" | "lefthook" | "husky" | "mcp" | "turborepo" | "nx" | "vite-plus" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "skills" | "evlog")[] | undefined;
309
+ addons?: ("none" | "pwa" | "tauri" | "electrobun" | "biome" | "lefthook" | "husky" | "mcp" | "turborepo" | "vite-plus" | "oxlint" | "opentui" | "skills" | "s3-storage")[] | undefined;
310
+ testing?: ("none" | "vitest" | "playwright")[] | undefined;
324
311
  install?: boolean | undefined;
325
312
  packageManager?: "bun" | "npm" | "pnpm" | undefined;
326
313
  projectDir?: string | undefined;
@@ -330,25 +317,15 @@ declare const router: _$_trpc_server0.TRPCBuiltRouter<{
330
317
  }>;
331
318
  addJson: _$_trpc_server0.TRPCMutationProcedure<{
332
319
  input: {
333
- addons?: ("none" | "pwa" | "tauri" | "electrobun" | "starlight" | "biome" | "lefthook" | "husky" | "mcp" | "turborepo" | "nx" | "vite-plus" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "skills" | "evlog")[] | undefined;
320
+ addons?: ("none" | "pwa" | "tauri" | "electrobun" | "biome" | "lefthook" | "husky" | "mcp" | "turborepo" | "vite-plus" | "oxlint" | "opentui" | "skills" | "s3-storage")[] | undefined;
321
+ testing?: ("none" | "vitest" | "playwright")[] | undefined;
334
322
  addonOptions?: {
335
- wxt?: {
336
- template: "svelte" | "solid" | "vanilla" | "vue" | "react";
337
- devPort?: number | undefined;
338
- } | undefined;
339
- fumadocs?: {
340
- template: "react-router" | "tanstack-start" | "next-mdx" | "next-mdx-static" | "waku" | "react-router-spa" | "tanstack-start-spa";
341
- devPort?: number | undefined;
342
- search?: "orama" | "orama-cloud" | undefined;
343
- ogImage?: "next-og" | "takumi" | undefined;
344
- aiChat?: "openrouter" | "llmgateway" | "inkeep" | undefined;
345
- } | undefined;
346
323
  opentui?: {
347
- template: "solid" | "react" | "core";
324
+ template: "solid" | "core" | "react";
348
325
  } | undefined;
349
326
  mcp?: {
350
327
  scope?: "project" | "global" | undefined;
351
- servers?: ("nx" | "better-auth" | "clerk" | "neon" | "planetscale" | "supabase" | "convex" | "kubojs" | "context7" | "cloudflare-docs" | "shadcn" | "next-devtools" | "nuxt-docs" | "nuxt-ui-docs" | "svelte-docs" | "astro-docs" | "expo" | "polar")[] | undefined;
328
+ servers?: ("better-auth" | "clerk" | "neon" | "planetscale" | "supabase" | "convex" | "kubojs" | "context7" | "nx" | "cloudflare-docs" | "shadcn" | "next-devtools" | "nuxt-docs" | "nuxt-ui-docs" | "svelte-docs" | "astro-docs" | "expo" | "polar")[] | undefined;
352
329
  agents?: ("antigravity" | "cline" | "cline-cli" | "cursor" | "claude-code" | "codex" | "opencode" | "gemini-cli" | "github-copilot-cli" | "mcporter" | "vscode" | "zed" | "claude-desktop" | "goose")[] | undefined;
353
330
  } | undefined;
354
331
  skills?: {
@@ -359,12 +336,6 @@ declare const router: _$_trpc_server0.TRPCBuiltRouter<{
359
336
  skills: string[];
360
337
  }[] | undefined;
361
338
  } | undefined;
362
- ultracite?: {
363
- linter?: "biome" | "oxlint" | undefined;
364
- editors?: ("void" | "antigravity" | "cursor" | "vscode" | "zed" | "windsurf" | "trae" | "codebuddy" | "bob" | "kiro")[] | undefined;
365
- agents?: ("vercel" | "cline" | "codex" | "opencode" | "goose" | "amp" | "pi" | "qoder" | "droid" | "zencoder" | "mcpjam" | "bob" | "universal" | "claude" | "jules" | "replit" | "devin" | "lovable" | "ona" | "openclaw" | "continue" | "snowflake-cortex" | "deepagents" | "kimi-cli" | "mux" | "adal" | "copilot" | "aider" | "firebase-studio" | "open-hands" | "gemini" | "junie" | "augmentcode" | "kilo-code" | "roo-code" | "warp" | "crush" | "qwen" | "amazon-q-cli" | "firebender" | "cursor-cli" | "mistral-vibe")[] | undefined;
366
- hooks?: ("cursor" | "windsurf" | "codebuddy" | "claude" | "copilot")[] | undefined;
367
- } | undefined;
368
339
  } | undefined;
369
340
  webDeploy?: "none" | "docker" | "cloudflare" | "vercel" | "guaracloud" | undefined;
370
341
  serverDeploy?: "none" | "docker" | "cloudflare" | "vercel" | "guaracloud" | undefined;
@@ -392,7 +363,7 @@ declare function createBtsCli(): ReturnType<typeof createCli>;
392
363
  */
393
364
  type CreateError = UserCancelledError | CLIError | ProjectCreationError;
394
365
  /**
395
- * Programmatic API to create a new I dont know project.
366
+ * Programmatic API to create a new kubojs project.
396
367
  * Returns a Result type - no console output, no interactive prompts.
397
368
  *
398
369
  * @example
@@ -417,7 +388,6 @@ type CreateError = UserCancelledError | CLIError | ProjectCreationError;
417
388
  * ```
418
389
  */
419
390
  declare function create(projectName?: string, options?: Partial<types_d_exports.CreateInput>): Promise<Result$1<types_d_exports.InitResult, CreateError>>;
420
- declare function sponsors(): Promise<void>;
421
391
  declare function docs(): Promise<void>;
422
392
  declare function builder(): Promise<void>;
423
393
  /**
@@ -443,9 +413,9 @@ declare function builder(): Promise<void>;
443
413
  * });
444
414
  * ```
445
415
  */
446
- declare function createVirtual(options: Partial<Omit<types_d_exports.ProjectConfig, "projectDir" | "relativePath">>): Promise<Result$1<VirtualFileTree$1, GeneratorError$1>>;
416
+ declare function createVirtual(options: Partial<Omit<types_d_exports.ProjectConfig, "projectDir" | "relativePath">> & Pick<types_d_exports.CLIInput, "disableObservability">): Promise<Result$1<VirtualFileTree$1, GeneratorError$1>>;
447
417
  /**
448
- * Programmatic API to add addons to an existing I dont know project.
418
+ * Programmatic API to add addons to an existing kubojs project.
449
419
  *
450
420
  * @example
451
421
  * ```typescript
@@ -474,7 +444,7 @@ type AddonOptions = import__kubojs_types.AddonOptions;
474
444
  type Addons = import__kubojs_types.Addons;
475
445
  type Auth = import__kubojs_types.Auth;
476
446
  type Backend = import__kubojs_types.Backend;
477
- type BetterTStackConfig = import__kubojs_types.BetterTStackConfig;
447
+ type Communication = import__kubojs_types.Communication;
478
448
  type CreateInput = import__kubojs_types.CreateInput;
479
449
  type Database = import__kubojs_types.Database;
480
450
  type DatabaseSetup = import__kubojs_types.DatabaseSetup;
@@ -483,6 +453,7 @@ type DirectoryConflict = import__kubojs_types.DirectoryConflict;
483
453
  type Examples = import__kubojs_types.Examples;
484
454
  type Frontend = import__kubojs_types.Frontend;
485
455
  type InitResult = import__kubojs_types.InitResult;
456
+ type KubojsConfig = import__kubojs_types.KubojsConfig;
486
457
  type ORM = import__kubojs_types.ORM;
487
458
  type Observability = import__kubojs_types.Observability;
488
459
  type PackageManager = import__kubojs_types.PackageManager;
@@ -491,4 +462,4 @@ type Runtime = import__kubojs_types.Runtime;
491
462
  type ServerDeploy = import__kubojs_types.ServerDeploy;
492
463
  type Template = import__kubojs_types.Template;
493
464
  type WebDeploy = import__kubojs_types.WebDeploy;
494
- export { type API, type AddResult, type AddonOptions, type Addons, type Auth, type Backend, type BetterTStackConfig, CLIError, CompatibilityError, CreateError, type CreateInput, type Database, type DatabaseSetup, DatabaseSetupError, type DbSetupOptions, type DirectoryConflict, DirectoryConflictError, EMBEDDED_TEMPLATES, type Examples, type Frontend, GeneratorError, type GeneratorOptions, type InitResult, type ORM, type Observability, type PackageManager, type Payments, ProjectCreationError, Result, type Runtime, SchemaName, SchemaNameSchema, type ServerDeploy, TEMPLATE_COUNT, type Template, UserCancelledError, ValidationError, type VirtualDirectory, type VirtualFile, VirtualFileSystem, type VirtualFileTree, type VirtualNode, type WebDeploy, add, builder, create, createBtsCli, createVirtual, docs, generate, getSchemaResult, router, sponsors };
465
+ export { type API, type AddResult, type AddonOptions, type Addons, type Auth, type Backend, CLIError, type Communication, CompatibilityError, CreateError, type CreateInput, type Database, type DatabaseSetup, DatabaseSetupError, type DbSetupOptions, type DirectoryConflict, DirectoryConflictError, EMBEDDED_TEMPLATES, type Examples, type Frontend, GeneratorError, type GeneratorOptions, type InitResult, type KubojsConfig, type ORM, type Observability, type PackageManager, type Payments, ProjectCreationError, Result, type Runtime, SchemaName, SchemaNameSchema, type ServerDeploy, TEMPLATE_COUNT, type Template, UserCancelledError, ValidationError, type VirtualDirectory, type VirtualFile, VirtualFileSystem, type VirtualFileTree, type VirtualNode, type WebDeploy, add, builder, create, createBtsCli, createVirtual, docs, generate, getSchemaResult, router };
package/dist/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- import { C as ProjectCreationError, S as DirectoryConflictError, T as ValidationError, a as TEMPLATE_COUNT, b as CompatibilityError, c as builder, d as createVirtual, f as docs, g as sponsors, h as router, i as SchemaNameSchema, l as create, m as getSchemaResult, n as GeneratorError, o as VirtualFileSystem, p as generate, r as Result, s as add, t as EMBEDDED_TEMPLATES, u as createBtsCli, w as UserCancelledError, x as DatabaseSetupError, y as CLIError } from "./src-BAYXN3Za.mjs";
3
- export { CLIError, CompatibilityError, DatabaseSetupError, DirectoryConflictError, EMBEDDED_TEMPLATES, GeneratorError, ProjectCreationError, Result, SchemaNameSchema, TEMPLATE_COUNT, UserCancelledError, ValidationError, VirtualFileSystem, add, builder, create, createBtsCli, createVirtual, docs, generate, getSchemaResult, router, sponsors };
2
+ import { C as UserCancelledError, S as ProjectCreationError, a as TEMPLATE_COUNT, b as DatabaseSetupError, c as builder, d as createVirtual, f as docs, h as router, i as SchemaNameSchema, l as create, m as getSchemaResult, n as GeneratorError, o as VirtualFileSystem, p as generate, r as Result, s as add, t as EMBEDDED_TEMPLATES, u as createBtsCli, v as CLIError, w as ValidationError, x as DirectoryConflictError, y as CompatibilityError } from "./src-CvkZZND8.mjs";
3
+ export { CLIError, CompatibilityError, DatabaseSetupError, DirectoryConflictError, EMBEDDED_TEMPLATES, GeneratorError, ProjectCreationError, Result, SchemaNameSchema, TEMPLATE_COUNT, UserCancelledError, ValidationError, VirtualFileSystem, add, builder, create, createBtsCli, createVirtual, docs, generate, getSchemaResult, router };