@vurb/core 3.6.9 → 3.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +83 -0
  2. package/dist/cli/args.d.ts +2 -1
  3. package/dist/cli/args.d.ts.map +1 -1
  4. package/dist/cli/args.js +5 -0
  5. package/dist/cli/args.js.map +1 -1
  6. package/dist/cli/commands/create.d.ts.map +1 -1
  7. package/dist/cli/commands/create.js +46 -7
  8. package/dist/cli/commands/create.js.map +1 -1
  9. package/dist/cli/commands/deploy.d.ts.map +1 -1
  10. package/dist/cli/commands/deploy.js +130 -12
  11. package/dist/cli/commands/deploy.js.map +1 -1
  12. package/dist/cli/constants.d.ts +1 -0
  13. package/dist/cli/constants.d.ts.map +1 -1
  14. package/dist/cli/constants.js +2 -0
  15. package/dist/cli/constants.js.map +1 -1
  16. package/dist/cli/scaffold.d.ts.map +1 -1
  17. package/dist/cli/scaffold.js +69 -1
  18. package/dist/cli/scaffold.js.map +1 -1
  19. package/dist/cli/templates/cloudflare.d.ts +30 -0
  20. package/dist/cli/templates/cloudflare.d.ts.map +1 -0
  21. package/dist/cli/templates/cloudflare.js +344 -0
  22. package/dist/cli/templates/cloudflare.js.map +1 -0
  23. package/dist/cli/templates/constants.d.ts +2 -0
  24. package/dist/cli/templates/constants.d.ts.map +1 -1
  25. package/dist/cli/templates/constants.js +2 -0
  26. package/dist/cli/templates/constants.js.map +1 -1
  27. package/dist/cli/templates/index.d.ts +2 -0
  28. package/dist/cli/templates/index.d.ts.map +1 -1
  29. package/dist/cli/templates/index.js +4 -0
  30. package/dist/cli/templates/index.js.map +1 -1
  31. package/dist/cli/templates/vercel.d.ts +30 -0
  32. package/dist/cli/templates/vercel.d.ts.map +1 -0
  33. package/dist/cli/templates/vercel.js +311 -0
  34. package/dist/cli/templates/vercel.js.map +1 -0
  35. package/dist/cli/types.d.ts +4 -0
  36. package/dist/cli/types.d.ts.map +1 -1
  37. package/dist/server/startServer.d.ts +32 -0
  38. package/dist/server/startServer.d.ts.map +1 -1
  39. package/dist/server/startServer.js +34 -1
  40. package/dist/server/startServer.js.map +1 -1
  41. package/package.json +1 -1
@@ -19,7 +19,11 @@ import * as tpl from './templates/index.js';
19
19
  * @returns Array of relative file paths written
20
20
  */
21
21
  export function scaffold(targetDir, config) {
22
- const files = buildFileList(config);
22
+ const files = config.target === 'vercel'
23
+ ? buildVercelFileList(config)
24
+ : config.target === 'cloudflare'
25
+ ? buildCloudflareFileList(config)
26
+ : buildFileList(config);
23
27
  try {
24
28
  for (const file of files) {
25
29
  const fullPath = join(targetDir, file.path);
@@ -104,4 +108,68 @@ function addVectorFiles(files, config) {
104
108
  break;
105
109
  }
106
110
  }
111
+ // ── Vercel File List Builder ────────────────────────────
112
+ function buildVercelFileList(config) {
113
+ const files = [];
114
+ // ── Root config ──
115
+ files.push({ path: 'package.json', content: tpl.vercelPackageJson(config) });
116
+ files.push({ path: 'tsconfig.json', content: tpl.vercelTsconfig() });
117
+ files.push({ path: 'next.config.ts', content: tpl.vercelNextConfig() });
118
+ files.push({ path: '.gitignore', content: tpl.vercelGitignore() });
119
+ files.push({ path: '.env.example', content: tpl.vercelEnvExample(config) });
120
+ files.push({ path: 'README.md', content: tpl.vercelReadme(config) });
121
+ // ── Next.js route handler ──
122
+ files.push({ path: 'app/api/mcp/route.ts', content: tpl.vercelRouteTs(config) });
123
+ // ── MCP source (under src/mcp/) ──
124
+ files.push({ path: 'src/mcp/vurb.ts', content: tpl.vercelVurbTs() });
125
+ files.push({ path: 'src/mcp/context.ts', content: tpl.vercelContextTs() });
126
+ files.push({ path: 'src/mcp/registry.ts', content: tpl.vercelRegistryTs() });
127
+ // ── Tools ──
128
+ files.push({ path: 'src/mcp/tools/system/health.ts', content: tpl.healthToolTs() });
129
+ files.push({ path: 'src/mcp/tools/system/echo.ts', content: tpl.echoToolTs() });
130
+ // ── Model + Presenter ──
131
+ files.push({ path: 'src/mcp/models/SystemModel.ts', content: tpl.systemModelTs() });
132
+ files.push({ path: 'src/mcp/presenters/SystemPresenter.ts', content: tpl.systemPresenterTs() });
133
+ // ── Testing ──
134
+ if (config.testing) {
135
+ files.push({ path: 'vitest.config.ts', content: tpl.vitestConfig() });
136
+ files.push({ path: 'tests/setup.ts', content: tpl.testSetupTs() });
137
+ files.push({ path: 'tests/system.test.ts', content: tpl.systemTestTs() });
138
+ }
139
+ // ── Vector-specific ──
140
+ addVectorFiles(files, config);
141
+ return files;
142
+ }
143
+ // ── Cloudflare File List Builder ─────────────────────────
144
+ function buildCloudflareFileList(config) {
145
+ const files = [];
146
+ // ── Root config ──
147
+ files.push({ path: 'package.json', content: tpl.cloudflarePackageJson(config) });
148
+ files.push({ path: 'tsconfig.json', content: tpl.cloudflareTsconfig() });
149
+ files.push({ path: 'wrangler.toml', content: tpl.cloudflareWranglerToml(config) });
150
+ files.push({ path: '.gitignore', content: tpl.cloudflareGitignore() });
151
+ files.push({ path: '.env.example', content: tpl.cloudflareEnvExample(config) });
152
+ files.push({ path: 'README.md', content: tpl.cloudflareReadme(config) });
153
+ // ── Worker entry point ──
154
+ files.push({ path: 'src/worker.ts', content: tpl.cloudflareWorkerTs(config) });
155
+ // ── MCP source ──
156
+ files.push({ path: 'src/vurb.ts', content: tpl.cloudflareVurbTs() });
157
+ files.push({ path: 'src/context.ts', content: tpl.cloudflareContextTs() });
158
+ files.push({ path: 'src/registry.ts', content: tpl.cloudflareRegistryTs() });
159
+ // ── Tools ──
160
+ files.push({ path: 'src/tools/system/health.ts', content: tpl.healthToolTs() });
161
+ files.push({ path: 'src/tools/system/echo.ts', content: tpl.echoToolTs() });
162
+ // ── Model + Presenter ──
163
+ files.push({ path: 'src/models/SystemModel.ts', content: tpl.systemModelTs() });
164
+ files.push({ path: 'src/presenters/SystemPresenter.ts', content: tpl.systemPresenterTs() });
165
+ // ── Testing ──
166
+ if (config.testing) {
167
+ files.push({ path: 'vitest.config.ts', content: tpl.vitestConfig() });
168
+ files.push({ path: 'tests/setup.ts', content: tpl.testSetupTs() });
169
+ files.push({ path: 'tests/system.test.ts', content: tpl.systemTestTs() });
170
+ }
171
+ // ── Vector-specific ──
172
+ addVectorFiles(files, config);
173
+ return files;
174
+ }
107
175
  //# sourceMappingURL=scaffold.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/cli/scaffold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/cli/scaffold.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Cloudflare Templates — Workers scaffold for @vurb/cloudflare
3
+ *
4
+ * Generates a complete Cloudflare Worker project that exposes an MCP
5
+ * server via `cloudflareWorkersAdapter()`. Deploy with `wrangler deploy`.
6
+ *
7
+ * @module
8
+ */
9
+ import type { ProjectConfig } from '../types.js';
10
+ /** Generate `package.json` for Cloudflare Workers project */
11
+ export declare function cloudflarePackageJson(config: ProjectConfig): string;
12
+ /** Generate `tsconfig.json` for Cloudflare Workers */
13
+ export declare function cloudflareTsconfig(): string;
14
+ /** Generate `wrangler.toml` */
15
+ export declare function cloudflareWranglerToml(config: ProjectConfig): string;
16
+ /** Generate `src/worker.ts` — The Worker entry point */
17
+ export declare function cloudflareWorkerTs(config: ProjectConfig): string;
18
+ /** Generate `src/registry.ts` — Tool registry (cold-start) */
19
+ export declare function cloudflareRegistryTs(): string;
20
+ /** Generate `src/vurb.ts` — initVurb instance */
21
+ export declare function cloudflareVurbTs(): string;
22
+ /** Generate `src/context.ts` — Application context */
23
+ export declare function cloudflareContextTs(): string;
24
+ /** Generate `.env.example` for Cloudflare */
25
+ export declare function cloudflareEnvExample(config: ProjectConfig): string;
26
+ /** Generate `.gitignore` for Cloudflare Workers */
27
+ export declare function cloudflareGitignore(): string;
28
+ /** Generate `README.md` for Cloudflare project */
29
+ export declare function cloudflareReadme(config: ProjectConfig): string;
30
+ //# sourceMappingURL=cloudflare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/cloudflare.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,6DAA6D;AAC7D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CA2DnE;AAED,sDAAsD;AACtD,wBAAgB,kBAAkB,IAAI,MAAM,CAyB3C;AAED,+BAA+B;AAC/B,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAyBpE;AAED,wDAAwD;AACxD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAwBhE;AAED,8DAA8D;AAC9D,wBAAgB,oBAAoB,IAAI,MAAM,CAe7C;AAED,iDAAiD;AACjD,wBAAgB,gBAAgB,IAAI,MAAM,CAYzC;AAED,sDAAsD;AACtD,wBAAgB,mBAAmB,IAAI,MAAM,CA6B5C;AAED,6CAA6C;AAC7C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAgBlE;AAED,mDAAmD;AACnD,wBAAgB,mBAAmB,IAAI,MAAM,CAS5C;AAED,kDAAkD;AAClD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAqH9D"}
@@ -0,0 +1,344 @@
1
+ import { CORE_VERSION, MCP_SDK_VERSION, CLOUDFLARE_ADAPTER_VERSION, ZOD_VERSION, TESTING_VERSION } from './constants.js';
2
+ /** Generate `package.json` for Cloudflare Workers project */
3
+ export function cloudflarePackageJson(config) {
4
+ const deps = {
5
+ '@modelcontextprotocol/sdk': MCP_SDK_VERSION,
6
+ '@vurb/core': CORE_VERSION,
7
+ '@vurb/cloudflare': CLOUDFLARE_ADAPTER_VERSION,
8
+ 'zod': ZOD_VERSION,
9
+ };
10
+ if (config.vector === 'prisma') {
11
+ deps['@prisma/client'] = '^6.0.0';
12
+ deps['@vurb/prisma-gen'] = '^1.0.0';
13
+ }
14
+ if (config.vector === 'oauth') {
15
+ deps['@vurb/oauth'] = '^1.0.0';
16
+ }
17
+ const devDeps = {
18
+ 'typescript': '^5.7.3',
19
+ '@types/node': '^22.0.0',
20
+ '@cloudflare/workers-types': '^4.0.0',
21
+ 'wrangler': '^3.0.0',
22
+ };
23
+ if (config.vector === 'prisma') {
24
+ devDeps['prisma'] = '^6.0.0';
25
+ }
26
+ if (config.testing) {
27
+ devDeps['vitest'] = '^3.0.5';
28
+ devDeps['@vurb/testing'] = TESTING_VERSION;
29
+ }
30
+ const scripts = {
31
+ 'dev': 'wrangler dev',
32
+ 'deploy': 'wrangler deploy',
33
+ 'build': 'tsc',
34
+ 'typecheck': 'tsc --noEmit',
35
+ };
36
+ if (config.testing) {
37
+ scripts['test'] = 'vitest run';
38
+ scripts['test:watch'] = 'vitest';
39
+ }
40
+ if (config.vector === 'prisma') {
41
+ scripts['db:generate'] = 'prisma generate';
42
+ scripts['db:push'] = 'prisma db push';
43
+ }
44
+ const pkg = {
45
+ name: config.name,
46
+ version: '0.1.0',
47
+ private: true,
48
+ type: 'module',
49
+ scripts,
50
+ dependencies: deps,
51
+ devDependencies: devDeps,
52
+ engines: { node: '>=18.0.0' },
53
+ };
54
+ return JSON.stringify(pkg, null, 4) + '\n';
55
+ }
56
+ /** Generate `tsconfig.json` for Cloudflare Workers */
57
+ export function cloudflareTsconfig() {
58
+ return JSON.stringify({
59
+ compilerOptions: {
60
+ target: 'es2022',
61
+ module: 'es2022',
62
+ moduleResolution: 'bundler',
63
+ declaration: true,
64
+ sourceMap: true,
65
+ strict: true,
66
+ noUncheckedIndexedAccess: true,
67
+ noFallthroughCasesInSwitch: true,
68
+ exactOptionalPropertyTypes: true,
69
+ noImplicitOverride: true,
70
+ noPropertyAccessFromIndexSignature: true,
71
+ forceConsistentCasingInFileNames: true,
72
+ resolveJsonModule: true,
73
+ skipLibCheck: true,
74
+ lib: ['es2022'],
75
+ types: ['@cloudflare/workers-types'],
76
+ rootDir: './src',
77
+ outDir: './dist',
78
+ },
79
+ include: ['src/**/*'],
80
+ exclude: ['node_modules', 'dist', 'tests'],
81
+ }, null, 4) + '\n';
82
+ }
83
+ /** Generate `wrangler.toml` */
84
+ export function cloudflareWranglerToml(config) {
85
+ return `name = "${config.name}"
86
+ main = "src/worker.ts"
87
+ compatibility_date = "2024-12-01"
88
+ compatibility_flags = ["nodejs_compat"]
89
+
90
+ # ── Bindings ────────────────────────────────────────
91
+ # Uncomment to enable Cloudflare services:
92
+
93
+ # [vars]
94
+ # MY_SECRET = "value"
95
+
96
+ # [[d1_databases]]
97
+ # binding = "DB"
98
+ # database_name = "${config.name}-db"
99
+ # database_id = "<your-database-id>"
100
+
101
+ # [[kv_namespaces]]
102
+ # binding = "KV"
103
+ # id = "<your-kv-namespace-id>"
104
+
105
+ # [[r2_buckets]]
106
+ # binding = "BUCKET"
107
+ # bucket_name = "${config.name}-bucket"
108
+ `;
109
+ }
110
+ /** Generate `src/worker.ts` — The Worker entry point */
111
+ export function cloudflareWorkerTs(config) {
112
+ return `/**
113
+ * Cloudflare Worker — MCP Server
114
+ *
115
+ * Exposes your Vurb tools as a stateless MCP endpoint.
116
+ * Connect any MCP client to: POST https://your-worker.workers.dev/
117
+ */
118
+ import { cloudflareWorkersAdapter } from '@vurb/cloudflare';
119
+ import { registry } from './registry.js';
120
+ import { createContext } from './context.js';
121
+
122
+ export interface Env {
123
+ // Add your Cloudflare bindings here:
124
+ // DB: D1Database;
125
+ // KV: KVNamespace;
126
+ // BUCKET: R2Bucket;
127
+ }
128
+
129
+ export default cloudflareWorkersAdapter<Env, ReturnType<typeof createContext>>({
130
+ registry,
131
+ serverName: '${config.name}',
132
+ contextFactory: async (req, env) => createContext(),
133
+ });
134
+ `;
135
+ }
136
+ /** Generate `src/registry.ts` — Tool registry (cold-start) */
137
+ export function cloudflareRegistryTs() {
138
+ return `/**
139
+ * Tool Registry — Cold Start Initialization
140
+ *
141
+ * Registered tools are compiled once during cold start.
142
+ * Warm requests only instantiate McpServer + Transport.
143
+ */
144
+ import { f } from './vurb.js';
145
+ import healthTool from './tools/system/health.js';
146
+ import echoTool from './tools/system/echo.js';
147
+
148
+ export const registry = f.registry();
149
+ registry.register(healthTool);
150
+ registry.register(echoTool);
151
+ `;
152
+ }
153
+ /** Generate `src/vurb.ts` — initVurb instance */
154
+ export function cloudflareVurbTs() {
155
+ return `/**
156
+ * Vurb Instance — Context Initialization
157
+ *
158
+ * Define your context type ONCE. Every f.query(), f.mutation(),
159
+ * and f.presenter() call inherits AppContext.
160
+ */
161
+ import { initVurb } from '@vurb/core';
162
+ import type { AppContext } from './context.js';
163
+
164
+ export const f = initVurb<AppContext>();
165
+ `;
166
+ }
167
+ /** Generate `src/context.ts` — Application context */
168
+ export function cloudflareContextTs() {
169
+ return `/**
170
+ * Application Context — Shared State for Every Tool Handler
171
+ *
172
+ * Every f.query() / f.mutation() handler receives (input, ctx)
173
+ * where ctx is this AppContext.
174
+ */
175
+
176
+ export interface AppContext {
177
+ /** Current user role for RBAC checks */
178
+ role: 'ADMIN' | 'USER' | 'GUEST';
179
+
180
+ /** Tenant identifier (multi-tenancy) */
181
+ tenantId: string;
182
+ }
183
+
184
+ /**
185
+ * Create the application context for each tool invocation.
186
+ *
187
+ * In production, hydrate from Cloudflare env bindings,
188
+ * request headers, or secrets.
189
+ */
190
+ export function createContext(): AppContext {
191
+ return {
192
+ role: 'ADMIN',
193
+ tenantId: 'default',
194
+ };
195
+ }
196
+ `;
197
+ }
198
+ /** Generate `.env.example` for Cloudflare */
199
+ export function cloudflareEnvExample(config) {
200
+ let env = `# ── Vurb + Cloudflare Workers Environment ─────
201
+ # Secrets are managed via wrangler:
202
+ # wrangler secret put MY_SECRET
203
+
204
+ NODE_ENV=development
205
+ `;
206
+ if (config.vector === 'prisma') {
207
+ env += `
208
+ # Database (Prisma — Hyperdrive or external)
209
+ DATABASE_URL="postgresql://user:password@localhost:5432/mydb?schema=public"
210
+ `;
211
+ }
212
+ return env;
213
+ }
214
+ /** Generate `.gitignore` for Cloudflare Workers */
215
+ export function cloudflareGitignore() {
216
+ return `node_modules/
217
+ dist/
218
+ .wrangler/
219
+ *.tsbuildinfo
220
+ .env
221
+ .dev.vars
222
+ coverage/
223
+ `;
224
+ }
225
+ /** Generate `README.md` for Cloudflare project */
226
+ export function cloudflareReadme(config) {
227
+ return `# ${config.name}
228
+
229
+ MCP Server built with [Vurb](https://vurb.vinkius.com/) — deployed to Cloudflare Workers.
230
+
231
+ ## Quick Start
232
+
233
+ \`\`\`bash
234
+ npm install
235
+ npm run dev
236
+ \`\`\`
237
+
238
+ The MCP endpoint is available at \`POST http://localhost:8787/\`.
239
+
240
+ ## Deploy to Cloudflare
241
+
242
+ \`\`\`bash
243
+ npm run deploy
244
+ \`\`\`
245
+
246
+ Or directly:
247
+
248
+ \`\`\`bash
249
+ npx wrangler deploy
250
+ \`\`\`
251
+
252
+ ## Client Configuration
253
+
254
+ ### Cursor / VS Code
255
+
256
+ \`\`\`json
257
+ {
258
+ "mcpServers": {
259
+ "${config.name}": {
260
+ "url": "https://${config.name}.your-subdomain.workers.dev/"
261
+ }
262
+ }
263
+ }
264
+ \`\`\`
265
+
266
+ ### Claude Desktop
267
+
268
+ Add to your \`claude_desktop_config.json\`:
269
+
270
+ \`\`\`json
271
+ {
272
+ "mcpServers": {
273
+ "${config.name}": {
274
+ "url": "https://${config.name}.your-subdomain.workers.dev/"
275
+ }
276
+ }
277
+ }
278
+ \`\`\`
279
+
280
+ ## Project Structure
281
+
282
+ \`\`\`
283
+ src/
284
+ ├── worker.ts # Worker entry → cloudflareWorkersAdapter()
285
+ ├── vurb.ts # initVurb<AppContext>()
286
+ ├── context.ts # AppContext type + factory
287
+ ├── registry.ts # Tool registry (cold-start)
288
+ └── tools/
289
+ └── system/
290
+ ├── health.ts # Health check
291
+ └── echo.ts # Echo tool
292
+ wrangler.toml # Cloudflare configuration
293
+ \`\`\`
294
+
295
+ ## Cloudflare Bindings
296
+
297
+ Uncomment bindings in \`wrangler.toml\` and update \`Env\` in \`worker.ts\`:
298
+
299
+ \`\`\`typescript
300
+ // worker.ts
301
+ export interface Env {
302
+ DB: D1Database;
303
+ KV: KVNamespace;
304
+ }
305
+
306
+ export default cloudflareWorkersAdapter<Env, MyContext>({
307
+ registry,
308
+ contextFactory: async (req, env) => ({
309
+ db: env.DB,
310
+ tenantId: req.headers.get('x-tenant-id') || 'public',
311
+ }),
312
+ });
313
+ \`\`\`
314
+
315
+ ## Adding New Tools
316
+
317
+ 1. Create a tool in \`src/tools/\`:
318
+
319
+ \`\`\`typescript
320
+ import { f } from '../../vurb.js';
321
+
322
+ export default f.query('my_tool')
323
+ .describe('What this tool does')
324
+ .withString('query', 'Search query')
325
+ .handle(async (input, ctx) => {
326
+ return { result: input.query };
327
+ });
328
+ \`\`\`
329
+
330
+ 2. Register it in \`src/registry.ts\`:
331
+
332
+ \`\`\`typescript
333
+ import myTool from './tools/my-domain/my-tool.js';
334
+ registry.register(myTool);
335
+ \`\`\`
336
+
337
+ ## Documentation
338
+
339
+ - [Vurb Docs](https://vurb.vinkius.com/)
340
+ - [Cloudflare Adapter](https://vurb.vinkius.com/cloudflare-adapter)
341
+ - [Presenter — Egress Firewall](https://vurb.vinkius.com/presenter)
342
+ `;
343
+ }
344
+ //# sourceMappingURL=cloudflare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../../../src/cli/templates/cloudflare.ts"],"names":[],"mappings":"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"}
@@ -6,4 +6,6 @@ export declare const CORE_VERSION = "^3.2.0";
6
6
  export declare const TESTING_VERSION = "^3.2.0";
7
7
  export declare const MCP_SDK_VERSION = "^1.12.1";
8
8
  export declare const ZOD_VERSION = "^3.25.1";
9
+ export declare const VERCEL_ADAPTER_VERSION = "^3.2.0";
10
+ export declare const CLOUDFLARE_ADAPTER_VERSION = "^3.2.0";
9
11
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,YAAY,WAAW,CAAC;AACrC,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,WAAW,YAAY,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,YAAY,WAAW,CAAC;AACrC,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,WAAW,YAAY,CAAC;AACrC,eAAO,MAAM,sBAAsB,WAAW,CAAC;AAC/C,eAAO,MAAM,0BAA0B,WAAW,CAAC"}
@@ -6,4 +6,6 @@ export const CORE_VERSION = '^3.2.0';
6
6
  export const TESTING_VERSION = '^3.2.0';
7
7
  export const MCP_SDK_VERSION = '^1.12.1';
8
8
  export const ZOD_VERSION = '^3.25.1';
9
+ export const VERCEL_ADAPTER_VERSION = '^3.2.0';
10
+ export const CLOUDFLARE_ADAPTER_VERSION = '^3.2.0';
9
11
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/cli/templates/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;AACrC,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACxC,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AACzC,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/cli/templates/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;AACrC,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACxC,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AACzC,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC;AACrC,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAQ,CAAC;AAC/C,MAAM,CAAC,MAAM,0BAA0B,GAAG,QAAQ,CAAC"}
@@ -15,4 +15,6 @@ export { vitestConfig, testSetupTs, systemTestTs } from './testing.js';
15
15
  export { readme } from './readme.js';
16
16
  export { cursorMcpJson } from './cursor.js';
17
17
  export { prismaSchema, dbUsersToolTs, n8nConnectorTs, openapiYaml, openapiSetupMd, oauthSetupTs, oauthMiddlewareTs } from './vectors/index.js';
18
+ export { vercelPackageJson, vercelTsconfig, vercelNextConfig, vercelRouteTs, vercelRegistryTs, vercelVurbTs, vercelContextTs, vercelEnvExample, vercelGitignore, vercelReadme, } from './vercel.js';
19
+ export { cloudflarePackageJson, cloudflareTsconfig, cloudflareWranglerToml, cloudflareWorkerTs, cloudflareRegistryTs, cloudflareVurbTs, cloudflareContextTs, cloudflareEnvExample, cloudflareGitignore, cloudflareReadme, } from './cloudflare.js';
18
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG3E,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGxD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGtD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGvE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG3E,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGxD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGtD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGvE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG/I,OAAO,EACH,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAClE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EACjE,eAAe,EAAE,YAAY,GAChC,MAAM,aAAa,CAAC;AAGrB,OAAO,EACH,qBAAqB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,kBAAkB,EACrF,oBAAoB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,oBAAoB,EACjF,mBAAmB,EAAE,gBAAgB,GACxC,MAAM,iBAAiB,CAAC"}
@@ -26,4 +26,8 @@ export { readme } from './readme.js';
26
26
  export { cursorMcpJson } from './cursor.js';
27
27
  // Vector-specific
28
28
  export { prismaSchema, dbUsersToolTs, n8nConnectorTs, openapiYaml, openapiSetupMd, oauthSetupTs, oauthMiddlewareTs } from './vectors/index.js';
29
+ // Target: Vercel
30
+ export { vercelPackageJson, vercelTsconfig, vercelNextConfig, vercelRouteTs, vercelRegistryTs, vercelVurbTs, vercelContextTs, vercelEnvExample, vercelGitignore, vercelReadme, } from './vercel.js';
31
+ // Target: Cloudflare
32
+ export { cloudflarePackageJson, cloudflareTsconfig, cloudflareWranglerToml, cloudflareWorkerTs, cloudflareRegistryTs, cloudflareVurbTs, cloudflareContextTs, cloudflareEnvExample, cloudflareGitignore, cloudflareReadme, } from './cloudflare.js';
29
33
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wCAAwC;AACxC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3E,+CAA+C;AAC/C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAExD,QAAQ;AACR,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtD,QAAQ;AACR,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,YAAY;AACZ,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,SAAS;AACT,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,aAAa;AACb,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,UAAU;AACV,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEvE,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,qBAAqB;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,kBAAkB;AAClB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wCAAwC;AACxC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3E,+CAA+C;AAC/C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAExD,QAAQ;AACR,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtD,QAAQ;AACR,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,YAAY;AACZ,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,SAAS;AACT,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,aAAa;AACb,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,UAAU;AACV,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEvE,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,qBAAqB;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,kBAAkB;AAClB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE/I,iBAAiB;AACjB,OAAO,EACH,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAClE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EACjE,eAAe,EAAE,YAAY,GAChC,MAAM,aAAa,CAAC;AAErB,qBAAqB;AACrB,OAAO,EACH,qBAAqB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,kBAAkB,EACrF,oBAAoB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,oBAAoB,EACjF,mBAAmB,EAAE,gBAAgB,GACxC,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Vercel Templates — Next.js App Router scaffold for @vurb/vercel
3
+ *
4
+ * Generates a complete Next.js project that exposes an MCP server
5
+ * via `vercelAdapter()`. Deploy with `vercel deploy`.
6
+ *
7
+ * @module
8
+ */
9
+ import type { ProjectConfig } from '../types.js';
10
+ /** Generate `package.json` for Vercel/Next.js project */
11
+ export declare function vercelPackageJson(config: ProjectConfig): string;
12
+ /** Generate `tsconfig.json` for Next.js */
13
+ export declare function vercelTsconfig(): string;
14
+ /** Generate `next.config.ts` */
15
+ export declare function vercelNextConfig(): string;
16
+ /** Generate `app/api/mcp/route.ts` — The MCP endpoint */
17
+ export declare function vercelRouteTs(config: ProjectConfig): string;
18
+ /** Generate `src/mcp/registry.ts` — Tool registry (cold-start) */
19
+ export declare function vercelRegistryTs(): string;
20
+ /** Generate `src/mcp/vurb.ts` — initVurb instance */
21
+ export declare function vercelVurbTs(): string;
22
+ /** Generate `src/mcp/context.ts` — Application context */
23
+ export declare function vercelContextTs(): string;
24
+ /** Generate `.env.example` for Vercel */
25
+ export declare function vercelEnvExample(config: ProjectConfig): string;
26
+ /** Generate `.gitignore` for Next.js */
27
+ export declare function vercelGitignore(): string;
28
+ /** Generate `README.md` for Vercel project */
29
+ export declare function vercelReadme(config: ProjectConfig): string;
30
+ //# sourceMappingURL=vercel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/vercel.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,yDAAyD;AACzD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CA6D/D;AAED,2CAA2C;AAC3C,wBAAgB,cAAc,IAAI,MAAM,CAsBvC;AAED,gCAAgC;AAChC,wBAAgB,gBAAgB,IAAI,MAAM,CAOzC;AAED,yDAAyD;AACzD,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAiB3D;AAED,kEAAkE;AAClE,wBAAgB,gBAAgB,IAAI,MAAM,CAezC;AAED,qDAAqD;AACrD,wBAAgB,YAAY,IAAI,MAAM,CAYrC;AAED,0DAA0D;AAC1D,wBAAgB,eAAe,IAAI,MAAM,CA6BxC;AAED,yCAAyC;AACzC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAuB9D;AAED,wCAAwC;AACxC,wBAAgB,eAAe,IAAI,MAAM,CAUxC;AAED,8CAA8C;AAC9C,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAsG1D"}