@vinkius-core/mcp-fusion 2.8.1 → 2.11.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 (142) hide show
  1. package/dist/cli/fusion.d.ts +29 -0
  2. package/dist/cli/fusion.d.ts.map +1 -1
  3. package/dist/cli/fusion.js +213 -28
  4. package/dist/cli/fusion.js.map +1 -1
  5. package/dist/cli/scaffold.d.ts +10 -0
  6. package/dist/cli/scaffold.d.ts.map +1 -0
  7. package/dist/cli/scaffold.js +92 -0
  8. package/dist/cli/scaffold.js.map +1 -0
  9. package/dist/cli/templates/config.d.ts +14 -0
  10. package/dist/cli/templates/config.d.ts.map +1 -0
  11. package/dist/cli/templates/config.js +133 -0
  12. package/dist/cli/templates/config.js.map +1 -0
  13. package/dist/cli/templates/constants.d.ts +9 -0
  14. package/dist/cli/templates/constants.d.ts.map +1 -0
  15. package/dist/cli/templates/constants.js +9 -0
  16. package/dist/cli/templates/constants.js.map +1 -0
  17. package/dist/cli/templates/core.d.ts +14 -0
  18. package/dist/cli/templates/core.d.ts.map +1 -0
  19. package/dist/cli/templates/core.js +130 -0
  20. package/dist/cli/templates/core.js.map +1 -0
  21. package/dist/cli/templates/cursor.d.ts +8 -0
  22. package/dist/cli/templates/cursor.d.ts.map +1 -0
  23. package/dist/cli/templates/cursor.js +13 -0
  24. package/dist/cli/templates/cursor.js.map +1 -0
  25. package/dist/cli/templates/index.d.ts +17 -0
  26. package/dist/cli/templates/index.d.ts.map +1 -0
  27. package/dist/cli/templates/index.js +27 -0
  28. package/dist/cli/templates/index.js.map +1 -0
  29. package/dist/cli/templates/middleware.d.ts +7 -0
  30. package/dist/cli/templates/middleware.d.ts.map +1 -0
  31. package/dist/cli/templates/middleware.js +31 -0
  32. package/dist/cli/templates/middleware.js.map +1 -0
  33. package/dist/cli/templates/presenter.d.ts +7 -0
  34. package/dist/cli/templates/presenter.d.ts.map +1 -0
  35. package/dist/cli/templates/presenter.js +46 -0
  36. package/dist/cli/templates/presenter.js.map +1 -0
  37. package/dist/cli/templates/prompt.d.ts +7 -0
  38. package/dist/cli/templates/prompt.d.ts.map +1 -0
  39. package/dist/cli/templates/prompt.js +42 -0
  40. package/dist/cli/templates/prompt.js.map +1 -0
  41. package/dist/cli/templates/readme.d.ts +8 -0
  42. package/dist/cli/templates/readme.d.ts.map +1 -0
  43. package/dist/cli/templates/readme.js +177 -0
  44. package/dist/cli/templates/readme.js.map +1 -0
  45. package/dist/cli/templates/testing.d.ts +11 -0
  46. package/dist/cli/templates/testing.d.ts.map +1 -0
  47. package/dist/cli/templates/testing.js +100 -0
  48. package/dist/cli/templates/testing.js.map +1 -0
  49. package/dist/cli/templates/tools.d.ts +9 -0
  50. package/dist/cli/templates/tools.d.ts.map +1 -0
  51. package/dist/cli/templates/tools.js +66 -0
  52. package/dist/cli/templates/tools.js.map +1 -0
  53. package/dist/cli/templates/vectors/database.d.ts +9 -0
  54. package/dist/cli/templates/vectors/database.d.ts.map +1 -0
  55. package/dist/cli/templates/vectors/database.js +87 -0
  56. package/dist/cli/templates/vectors/database.js.map +1 -0
  57. package/dist/cli/templates/vectors/index.d.ts +9 -0
  58. package/dist/cli/templates/vectors/index.d.ts.map +1 -0
  59. package/dist/cli/templates/vectors/index.js +9 -0
  60. package/dist/cli/templates/vectors/index.js.map +1 -0
  61. package/dist/cli/templates/vectors/oauth.d.ts +10 -0
  62. package/dist/cli/templates/vectors/oauth.d.ts.map +1 -0
  63. package/dist/cli/templates/vectors/oauth.js +77 -0
  64. package/dist/cli/templates/vectors/oauth.js.map +1 -0
  65. package/dist/cli/templates/vectors/openapi.d.ts +10 -0
  66. package/dist/cli/templates/vectors/openapi.d.ts.map +1 -0
  67. package/dist/cli/templates/vectors/openapi.js +106 -0
  68. package/dist/cli/templates/vectors/openapi.js.map +1 -0
  69. package/dist/cli/templates/vectors/workflow.d.ts +7 -0
  70. package/dist/cli/templates/vectors/workflow.d.ts.map +1 -0
  71. package/dist/cli/templates/vectors/workflow.js +49 -0
  72. package/dist/cli/templates/vectors/workflow.js.map +1 -0
  73. package/dist/cli/types.d.ts +29 -0
  74. package/dist/cli/types.d.ts.map +1 -0
  75. package/dist/cli/types.js +10 -0
  76. package/dist/cli/types.js.map +1 -0
  77. package/dist/core/builder/GroupedToolBuilder.d.ts +41 -0
  78. package/dist/core/builder/GroupedToolBuilder.d.ts.map +1 -1
  79. package/dist/core/builder/GroupedToolBuilder.js +54 -4
  80. package/dist/core/builder/GroupedToolBuilder.js.map +1 -1
  81. package/dist/core/builder/ToolDefinitionCompiler.d.ts +1 -0
  82. package/dist/core/builder/ToolDefinitionCompiler.d.ts.map +1 -1
  83. package/dist/core/builder/ToolDefinitionCompiler.js +1 -1
  84. package/dist/core/builder/ToolDefinitionCompiler.js.map +1 -1
  85. package/dist/core/execution/ExecutionPipeline.d.ts +8 -2
  86. package/dist/core/execution/ExecutionPipeline.d.ts.map +1 -1
  87. package/dist/core/execution/ExecutionPipeline.js +18 -9
  88. package/dist/core/execution/ExecutionPipeline.js.map +1 -1
  89. package/dist/core/registry/ToolRegistry.d.ts +1 -1
  90. package/dist/core/registry/ToolRegistry.d.ts.map +1 -1
  91. package/dist/core/registry/ToolRegistry.js +1 -1
  92. package/dist/core/registry/ToolRegistry.js.map +1 -1
  93. package/dist/core/schema/SchemaGenerator.d.ts +1 -1
  94. package/dist/core/schema/SchemaGenerator.d.ts.map +1 -1
  95. package/dist/core/schema/SchemaGenerator.js +38 -1
  96. package/dist/core/schema/SchemaGenerator.js.map +1 -1
  97. package/dist/core/types.d.ts +2 -0
  98. package/dist/core/types.d.ts.map +1 -1
  99. package/dist/exposition/ExpositionCompiler.d.ts.map +1 -1
  100. package/dist/exposition/ExpositionCompiler.js +25 -2
  101. package/dist/exposition/ExpositionCompiler.js.map +1 -1
  102. package/dist/introspection/BehaviorDigest.d.ts +2 -2
  103. package/dist/introspection/BehaviorDigest.d.ts.map +1 -1
  104. package/dist/introspection/BehaviorDigest.js +38 -36
  105. package/dist/introspection/BehaviorDigest.js.map +1 -1
  106. package/dist/introspection/CapabilityLockfile.d.ts +2 -2
  107. package/dist/introspection/CapabilityLockfile.d.ts.map +1 -1
  108. package/dist/introspection/CapabilityLockfile.js +9 -9
  109. package/dist/introspection/CapabilityLockfile.js.map +1 -1
  110. package/dist/introspection/CryptoAttestation.d.ts.map +1 -1
  111. package/dist/introspection/CryptoAttestation.js +23 -36
  112. package/dist/introspection/CryptoAttestation.js.map +1 -1
  113. package/dist/introspection/SemanticProbe.js +49 -49
  114. package/dist/introspection/ToolContract.d.ts +2 -2
  115. package/dist/introspection/ToolContract.d.ts.map +1 -1
  116. package/dist/introspection/ToolContract.js +9 -9
  117. package/dist/introspection/ToolContract.js.map +1 -1
  118. package/dist/introspection/canonicalize.d.ts +16 -1
  119. package/dist/introspection/canonicalize.d.ts.map +1 -1
  120. package/dist/introspection/canonicalize.js +18 -3
  121. package/dist/introspection/canonicalize.js.map +1 -1
  122. package/dist/presenter/PostProcessor.d.ts +3 -1
  123. package/dist/presenter/PostProcessor.d.ts.map +1 -1
  124. package/dist/presenter/PostProcessor.js +4 -3
  125. package/dist/presenter/PostProcessor.js.map +1 -1
  126. package/dist/presenter/Presenter.d.ts +18 -5
  127. package/dist/presenter/Presenter.d.ts.map +1 -1
  128. package/dist/presenter/Presenter.js +39 -15
  129. package/dist/presenter/Presenter.js.map +1 -1
  130. package/dist/presenter/SelectUtils.d.ts +78 -0
  131. package/dist/presenter/SelectUtils.d.ts.map +1 -0
  132. package/dist/presenter/SelectUtils.js +141 -0
  133. package/dist/presenter/SelectUtils.js.map +1 -0
  134. package/dist/presenter/index.d.ts +1 -0
  135. package/dist/presenter/index.d.ts.map +1 -1
  136. package/dist/presenter/index.js +2 -0
  137. package/dist/presenter/index.js.map +1 -1
  138. package/dist/server/ServerAttachment.d.ts +1 -1
  139. package/dist/server/ServerAttachment.d.ts.map +1 -1
  140. package/dist/server/ServerAttachment.js +3 -3
  141. package/dist/server/ServerAttachment.js.map +1 -1
  142. package/package.json +118 -118
@@ -1,5 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import { type PromptBuilderLike } from '../introspection/CapabilityLockfile.js';
3
+ import type { ProjectConfig, IngestionVector, TransportLayer } from './types.js';
4
+ /** @internal exported for testing */
5
+ export declare const ansi: {
6
+ readonly cyan: (s: string) => string;
7
+ readonly green: (s: string) => string;
8
+ readonly dim: (s: string) => string;
9
+ readonly bold: (s: string) => string;
10
+ readonly red: (s: string) => string;
11
+ readonly reset: "\u001B[0m";
12
+ };
3
13
  /**
4
14
  * Step status for CLI progress reporting.
5
15
  * @internal
@@ -61,6 +71,11 @@ export interface CliArgs {
61
71
  name: string | undefined;
62
72
  cwd: string;
63
73
  help: boolean;
74
+ projectName: string | undefined;
75
+ transport: TransportLayer | undefined;
76
+ vector: IngestionVector | undefined;
77
+ testing: boolean | undefined;
78
+ yes: boolean;
64
79
  }
65
80
  /** @internal exported for testing */
66
81
  export declare function parseArgs(argv: string[]): CliArgs;
@@ -98,4 +113,18 @@ export declare function resolveRegistry(serverPath: string): Promise<{
98
113
  }>;
99
114
  /** @internal exported for testing */
100
115
  export declare function commandLock(args: CliArgs, reporter?: ProgressReporter): Promise<void>;
116
+ /**
117
+ * Ask a question via readline with styled ANSI output.
118
+ * @internal exported for testing
119
+ */
120
+ export declare function ask(rl: {
121
+ question: (q: string, cb: (a: string) => void) => void;
122
+ }, prompt: string, fallback: string): Promise<string>;
123
+ /**
124
+ * Collect project config — either from flags or interactive prompts.
125
+ * @internal exported for testing
126
+ */
127
+ export declare function collectConfig(args: CliArgs): Promise<ProjectConfig | null>;
128
+ /** @internal exported for testing */
129
+ export declare function commandCreate(args: CliArgs, reporter?: ProgressReporter): Promise<void>;
101
130
  //# sourceMappingURL=fusion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fusion.d.ts","sourceRoot":"","sources":["../../src/cli/fusion.ts"],"names":[],"mappings":";AAuBA,OAAO,EAOH,KAAK,iBAAiB,EACzB,MAAM,wCAAwC,CAAC;AAMhD;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEnE;;;GAGG;AACH,MAAM,WAAW,YAAY;IACzB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,qBAAqB;IACrB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,mDAAmD;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;AAU5D;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,gBAAgB,CAOxD;AAED;;;GAGG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,UAAU,CAA6B;gBAEnC,QAAQ,CAAC,EAAE,gBAAgB;IAIvC,6BAA6B;IAC7B,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKtC,+BAA+B;IAC/B,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAStD,4BAA4B;IAC5B,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAStD,OAAO,CAAC,OAAO;CAMlB;AAMD,qCAAqC;AACrC,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C,qCAAqC;AACrC,eAAO,MAAM,IAAI,QAiBT,CAAC;AAMT,qCAAqC;AACrC,MAAM,WAAW,OAAO;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;CACjB;AAED,qCAAqC;AACrC,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CA0CjD;AAMD;;;GAGG;AACH,qCAAqC;AACrC,MAAM,WAAW,YAAY;IACzB,WAAW,IAAI,QAAQ,CAAC,OAAO,kBAAkB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;CAC5E;AAED;;;GAGG;AACH,qCAAqC;AACrC,MAAM,WAAW,kBAAkB;IAC/B,WAAW,CAAC,IAAI,QAAQ,CAAC,iBAAiB,CAAC,CAAC;CAC/C;AAED;;;;;;;;;GASG;AACH,qCAAqC;AACrC,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,kBAAkB,CAAA;CAAE,CAAC,CA+DhJ;AAMD,qCAAqC;AACrC,wBAAsB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgF3F"}
1
+ {"version":3,"file":"fusion.d.ts","sourceRoot":"","sources":["../../src/cli/fusion.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,9 @@
4
4
  *
5
5
  * Commands:
6
6
  *
7
+ * fusion create <name> [--transport stdio|sse] [--vector blank|database|workflow|openapi] [--testing] [--yes|-y]
8
+ * Scaffold a new MCP Fusion server project.
9
+ *
7
10
  * fusion lock [--server <entrypoint>] [--name <serverName>]
8
11
  * Generate or update `mcp-fusion.lock`.
9
12
  *
@@ -11,17 +14,28 @@
11
14
  * Verify the lockfile matches the current server.
12
15
  * Exits 0 if up-to-date, 1 if stale (CI gate).
13
16
  *
14
- * The lockfile captures the complete behavioral surface of your
15
- * MCP Fusion server — tool contracts, cognitive guardrails,
16
- * entitlements, and token economics — in a deterministic,
17
- * git-diffable format.
18
- *
19
17
  * @module
20
18
  */
21
19
  import { resolve } from 'node:path';
22
20
  import { pathToFileURL } from 'node:url';
21
+ import { existsSync } from 'node:fs';
22
+ import { createInterface } from 'node:readline';
23
+ import { execSync } from 'node:child_process';
23
24
  import { compileContracts } from '../introspection/ToolContract.js';
24
25
  import { generateLockfile, writeLockfile, readLockfile, checkLockfile, serializeLockfile, LOCKFILE_NAME, } from '../introspection/CapabilityLockfile.js';
26
+ import { scaffold } from './scaffold.js';
27
+ // ============================================================================
28
+ // ANSI Styling (zero dependencies)
29
+ // ============================================================================
30
+ /** @internal exported for testing */
31
+ export const ansi = {
32
+ cyan: (s) => `\x1b[36m${s}\x1b[0m`,
33
+ green: (s) => `\x1b[32m${s}\x1b[0m`,
34
+ dim: (s) => `\x1b[2m${s}\x1b[0m`,
35
+ bold: (s) => `\x1b[1m${s}\x1b[0m`,
36
+ red: (s) => `\x1b[31m${s}\x1b[0m`,
37
+ reset: '\x1b[0m',
38
+ };
25
39
  /** Icon map for each step status */
26
40
  const STATUS_ICONS = {
27
41
  pending: '○',
@@ -89,23 +103,34 @@ export class ProgressTracker {
89
103
  /** @internal exported for testing */
90
104
  export const MCP_FUSION_VERSION = '1.1.0';
91
105
  /** @internal exported for testing */
92
- export const HELP = `
93
- fusion — MCP Fusion Capability Lockfile CLI
94
-
95
- USAGE
96
- fusion lock Generate or update ${LOCKFILE_NAME}
97
- fusion lock --check Verify lockfile is up to date (CI gate)
98
-
99
- OPTIONS
100
- --server, -s <path> Path to server entrypoint (default: auto-discover)
101
- --name, -n <name> Server name for lockfile header
102
- --cwd <dir> Project root directory (default: process.cwd())
103
- --help, -h Show this help message
104
-
105
- EXAMPLES
106
- fusion lock
107
- fusion lock --check
108
- fusion lock --server ./src/server.ts --name my-server
106
+ export const HELP = `
107
+ fusion — MCP Fusion CLI
108
+
109
+ USAGE
110
+ fusion create <name> Scaffold a new MCP Fusion server
111
+ fusion lock Generate or update ${LOCKFILE_NAME}
112
+ fusion lock --check Verify lockfile is up to date (CI gate)
113
+
114
+ CREATE OPTIONS
115
+ --transport <stdio|sse> Transport layer (default: stdio)
116
+ --vector <type> Ingestion vector: vanilla, prisma, n8n, openapi, oauth
117
+ --testing Include test suite (default: true)
118
+ --no-testing Skip test suite
119
+ --yes, -y Skip prompts, use defaults
120
+
121
+ LOCK OPTIONS
122
+ --server, -s <path> Path to server entrypoint
123
+ --name, -n <name> Server name for lockfile header
124
+ --cwd <dir> Project root directory
125
+
126
+ GLOBAL
127
+ --help, -h Show this help message
128
+
129
+ EXAMPLES
130
+ fusion create my-server
131
+ fusion create my-server -y
132
+ fusion create my-server --vector prisma --transport sse
133
+ fusion lock --server ./src/server.ts
109
134
  `.trim();
110
135
  /** @internal exported for testing */
111
136
  export function parseArgs(argv) {
@@ -117,12 +142,21 @@ export function parseArgs(argv) {
117
142
  name: undefined,
118
143
  cwd: process.cwd(),
119
144
  help: false,
145
+ projectName: undefined,
146
+ transport: undefined,
147
+ vector: undefined,
148
+ testing: undefined,
149
+ yes: false,
120
150
  };
151
+ let seenCommand = false;
152
+ let seenProjectName = false;
121
153
  for (let i = 0; i < args.length; i++) {
122
154
  const arg = args[i];
123
155
  switch (arg) {
124
156
  case 'lock':
125
- result.command = 'lock';
157
+ case 'create':
158
+ result.command = arg;
159
+ seenCommand = true;
126
160
  break;
127
161
  case '--check':
128
162
  result.check = true;
@@ -142,9 +176,31 @@ export function parseArgs(argv) {
142
176
  case '--help':
143
177
  result.help = true;
144
178
  break;
179
+ case '--transport':
180
+ result.transport = args[++i];
181
+ break;
182
+ case '--vector':
183
+ result.vector = args[++i];
184
+ break;
185
+ case '--testing':
186
+ result.testing = true;
187
+ break;
188
+ case '--no-testing':
189
+ result.testing = false;
190
+ break;
191
+ case '-y':
192
+ case '--yes':
193
+ result.yes = true;
194
+ break;
145
195
  default:
146
- if (!result.command)
196
+ if (!seenCommand) {
147
197
  result.command = arg;
198
+ seenCommand = true;
199
+ }
200
+ else if (result.command === 'create' && !seenProjectName && !arg.startsWith('-')) {
201
+ result.projectName = arg;
202
+ seenProjectName = true;
203
+ }
148
204
  break;
149
205
  }
150
206
  }
@@ -238,7 +294,7 @@ export async function commandLock(args, reporter) {
238
294
  // Step 2: Compile tool contracts
239
295
  progress.start('compile', 'Compiling tool contracts');
240
296
  const builders = [...registry.getBuilders()];
241
- const contracts = compileContracts(builders);
297
+ const contracts = await compileContracts(builders);
242
298
  const toolCount = Object.keys(contracts).length;
243
299
  progress.done('compile', 'Compiling tool contracts', `${toolCount} tool${toolCount !== 1 ? 's' : ''}`);
244
300
  // Step 3: Discover prompts
@@ -261,7 +317,7 @@ export async function commandLock(args, reporter) {
261
317
  }
262
318
  progress.done('read', 'Reading existing lockfile');
263
319
  progress.start('verify', 'Verifying integrity');
264
- const result = checkLockfile(existing, contracts, options);
320
+ const result = await checkLockfile(existing, contracts, options);
265
321
  if (result.ok) {
266
322
  progress.done('verify', 'Verifying integrity', 'up to date');
267
323
  console.log(`\n✓ ${LOCKFILE_NAME} is up to date.`);
@@ -288,7 +344,7 @@ export async function commandLock(args, reporter) {
288
344
  else {
289
345
  // ── Generate Mode ──
290
346
  progress.start('generate', 'Computing behavioral digests');
291
- const lockfile = generateLockfile(serverName, contracts, MCP_FUSION_VERSION, options);
347
+ const lockfile = await generateLockfile(serverName, contracts, MCP_FUSION_VERSION, options);
292
348
  progress.done('generate', 'Computing behavioral digests');
293
349
  progress.start('write', `Writing ${LOCKFILE_NAME}`);
294
350
  await writeLockfile(lockfile, args.cwd);
@@ -303,6 +359,132 @@ export async function commandLock(args, reporter) {
303
359
  }
304
360
  }
305
361
  // ============================================================================
362
+ // Create Command — Interactive Wizard + Fast-Path
363
+ // ============================================================================
364
+ const VALID_TRANSPORTS = ['stdio', 'sse'];
365
+ const VALID_VECTORS = ['vanilla', 'prisma', 'n8n', 'openapi', 'oauth'];
366
+ /**
367
+ * Ask a question via readline with styled ANSI output.
368
+ * @internal exported for testing
369
+ */
370
+ export function ask(rl, prompt, fallback) {
371
+ return new Promise((resolve) => {
372
+ rl.question(` ${ansi.cyan('◇')} ${prompt} ${ansi.dim(`(${fallback})`)} `, (answer) => {
373
+ resolve(answer.trim() || fallback);
374
+ });
375
+ });
376
+ }
377
+ /**
378
+ * Collect project config — either from flags or interactive prompts.
379
+ * @internal exported for testing
380
+ */
381
+ export async function collectConfig(args) {
382
+ // ── Fast-path: --yes skips all prompts ────────────────
383
+ if (args.yes) {
384
+ const name = args.projectName ?? 'my-mcp-server';
385
+ if (!/^[a-z][a-z0-9-]*[a-z0-9]$/.test(name) && !/^[a-z0-9]$/.test(name)) {
386
+ process.stderr.write(` ${ansi.red('✗')} Invalid name: must start with a letter/number, end with a letter/number, and contain only lowercase letters, numbers, and hyphens.\n`);
387
+ return null;
388
+ }
389
+ const transport = validateTransport(args.transport);
390
+ const vector = validateVector(args.vector);
391
+ return {
392
+ name,
393
+ transport,
394
+ vector,
395
+ testing: args.testing ?? true,
396
+ };
397
+ }
398
+ // ── Interactive wizard ────────────────────────────────
399
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
400
+ try {
401
+ process.stderr.write(`\n ${ansi.bold('⚡ MCP Fusion')} ${ansi.dim('— Create a new MCP server')}\n\n`);
402
+ const name = args.projectName ?? await ask(rl, 'Project name?', 'my-mcp-server');
403
+ if (!/^[a-z][a-z0-9-]*[a-z0-9]$/.test(name) && !/^[a-z0-9]$/.test(name)) {
404
+ process.stderr.write(` ${ansi.red('✗')} Invalid name: must start with a letter/number, end with a letter/number, and contain only lowercase letters, numbers, and hyphens.\n`);
405
+ return null;
406
+ }
407
+ const transportRaw = args.transport ?? await ask(rl, 'Transport? [stdio, sse]', 'stdio');
408
+ const transport = validateTransport(transportRaw);
409
+ const vectorRaw = args.vector ?? await ask(rl, 'Vector? [vanilla, prisma, n8n, openapi, oauth]', 'vanilla');
410
+ const vector = validateVector(vectorRaw);
411
+ const testingRaw = args.testing ?? (await ask(rl, 'Include testing?', 'yes')).toLowerCase();
412
+ const testing = typeof testingRaw === 'boolean' ? testingRaw : testingRaw !== 'no';
413
+ process.stderr.write('\n');
414
+ return { name, transport, vector, testing };
415
+ }
416
+ finally {
417
+ rl.close();
418
+ }
419
+ }
420
+ /** @internal Validate and warn on invalid transport */
421
+ function validateTransport(raw) {
422
+ if (!raw)
423
+ return 'stdio';
424
+ if (VALID_TRANSPORTS.includes(raw))
425
+ return raw;
426
+ process.stderr.write(` ${ansi.red('⚠')} Unknown transport "${raw}" — using ${ansi.bold('stdio')}. Valid: ${VALID_TRANSPORTS.join(', ')}\n`);
427
+ return 'stdio';
428
+ }
429
+ /** @internal Validate and warn on invalid vector */
430
+ function validateVector(raw) {
431
+ if (!raw)
432
+ return 'vanilla';
433
+ if (VALID_VECTORS.includes(raw))
434
+ return raw;
435
+ process.stderr.write(` ${ansi.red('⚠')} Unknown vector "${raw}" — using ${ansi.bold('vanilla')}. Valid: ${VALID_VECTORS.join(', ')}\n`);
436
+ return 'vanilla';
437
+ }
438
+ /** @internal exported for testing */
439
+ export async function commandCreate(args, reporter) {
440
+ const progress = new ProgressTracker(reporter);
441
+ // ── Collect config ───────────────────────────────────
442
+ const config = await collectConfig(args);
443
+ if (!config) {
444
+ process.exit(1);
445
+ }
446
+ const targetDir = resolve(args.cwd, config.name);
447
+ // ── Guard: directory exists ──────────────────────────
448
+ if (existsSync(targetDir)) {
449
+ process.stderr.write(` ${ansi.red('✗')} Directory "${config.name}" already exists.\n`);
450
+ process.exit(1);
451
+ }
452
+ // ── Scaffold ─────────────────────────────────────────
453
+ progress.start('scaffold', 'Scaffolding project');
454
+ const files = scaffold(targetDir, config);
455
+ progress.done('scaffold', 'Scaffolding project', `${files.length} files`);
456
+ // ── Install dependencies ─────────────────────────────
457
+ progress.start('install', 'Installing dependencies');
458
+ try {
459
+ execSync('npm install', {
460
+ cwd: targetDir,
461
+ stdio: 'ignore',
462
+ timeout: 120_000,
463
+ });
464
+ progress.done('install', 'Installing dependencies');
465
+ }
466
+ catch {
467
+ progress.fail('install', 'Installing dependencies', 'run npm install manually');
468
+ }
469
+ // ── Done ─────────────────────────────────────────────
470
+ const steps = [`cd ${config.name}`];
471
+ if (config.transport === 'sse') {
472
+ steps.push('npm start', '# then connect Cursor or Claude to http://localhost:3001/sse');
473
+ }
474
+ else {
475
+ steps.push('npm run dev');
476
+ }
477
+ if (config.testing)
478
+ steps.push('npm test');
479
+ process.stderr.write(`\n ${ansi.green('✓')} ${ansi.bold(config.name)} is ready!\n\n`);
480
+ process.stderr.write(` ${ansi.dim('Next steps:')}\n`);
481
+ for (const step of steps) {
482
+ process.stderr.write(` ${ansi.cyan('$')} ${step}\n`);
483
+ }
484
+ process.stderr.write(`\n ${ansi.dim('Cursor:')} .cursor/mcp.json is pre-configured — open in Cursor and go.\n`);
485
+ process.stderr.write(` ${ansi.dim('Docs:')} ${ansi.cyan('https://mcp-fusion.vinkius.com/')}\n\n`);
486
+ }
487
+ // ============================================================================
306
488
  // Entry Point
307
489
  // ============================================================================
308
490
  async function main() {
@@ -312,6 +494,9 @@ async function main() {
312
494
  process.exit(args.help ? 0 : 1);
313
495
  }
314
496
  switch (args.command) {
497
+ case 'create':
498
+ await commandCreate(args);
499
+ break;
315
500
  case 'lock':
316
501
  await commandLock(args);
317
502
  break;
@@ -323,7 +508,7 @@ async function main() {
323
508
  }
324
509
  /* c8 ignore next 6 — CLI entry-point guard */
325
510
  const isCLI = typeof process !== 'undefined' &&
326
- process.argv[1]?.endsWith('fusion') || process.argv[1]?.endsWith('fusion.js');
511
+ (process.argv[1]?.endsWith('fusion') || process.argv[1]?.endsWith('fusion.js'));
327
512
  if (isCLI) {
328
513
  main().catch((err) => {
329
514
  console.error(`Error: ${err.message}`);
@@ -1 +1 @@
1
- {"version":3,"file":"fusion.js","sourceRoot":"","sources":["../../src/cli/fusion.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EACH,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,aAAa,GAEhB,MAAM,wCAAwC,CAAC;AAoChD,oCAAoC;AACpC,MAAM,YAAY,GAA+B;IAC7C,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,GAAG;CACd,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACjC,OAAO,CAAC,IAAkB,EAAQ,EAAE;QAChC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC;IACxE,CAAC,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,eAAe;IACP,QAAQ,CAAmB;IACpC,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE/C,YAAY,QAA2B;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,qBAAqB,EAAE,CAAC;IACxD,CAAC;IAED,6BAA6B;IAC7B,KAAK,CAAC,EAAU,EAAE,KAAa;QAC3B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,+BAA+B;IAC/B,IAAI,CAAC,EAAU,EAAE,KAAa,EAAE,MAAe;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC;YACV,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;YACzB,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,CAAC,CAAC;IACP,CAAC;IAED,4BAA4B;IAC5B,IAAI,CAAC,EAAU,EAAE,KAAa,EAAE,MAAe;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC;YACV,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ;YAC3B,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,CAAC,CAAC;IACP,CAAC;IAEO,OAAO,CAAC,EAAU;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAC9B,CAAC;CACJ;AAED,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,qCAAqC;AACrC,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAE1C,qCAAqC;AACrC,MAAM,CAAC,MAAM,IAAI,GAAG;;;;2DAIuC,aAAa;;;;;;;;;;;;;CAavE,CAAC,IAAI,EAAE,CAAC;AAgBT,qCAAqC;AACrC,MAAM,UAAU,SAAS,CAAC,IAAc;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAY;QACpB,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,IAAI,EAAE,KAAK;KACd,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACrB,QAAQ,GAAG,EAAE,CAAC;YACV,KAAK,MAAM;gBACP,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;gBACxB,MAAM;YACV,KAAK,SAAS;gBACV,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;gBACpB,MAAM;YACV,KAAK,IAAI,CAAC;YACV,KAAK,UAAU;gBACX,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1B,MAAM;YACV,KAAK,IAAI,CAAC;YACV,KAAK,QAAQ;gBACT,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxB,MAAM;YACV,KAAK,OAAO;gBACR,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;gBACxC,MAAM;YACV,KAAK,IAAI,CAAC;YACV,KAAK,QAAQ;gBACT,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;gBACnB,MAAM;YACV;gBACI,IAAI,CAAC,MAAM,CAAC,OAAO;oBAAE,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;gBAC1C,MAAM;QACd,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAwBD;;;;;;;;;GASG;AACH,qCAAqC;AACrC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,UAAkB;IACpD,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;IAEjD,mEAAmE;IACnE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;IAElC,wDAAwD;IACxD,SAAS,cAAc,CAAC,GAA4B;QAChD,uDAAuD;QACvD,KAAK,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,CAAC,EAAE,CAAC;YACjE,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;gBACnE,OAAO,SAA+B,CAAC;YAC3C,CAAC;QACL,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,6DAA6D;IAC7D,IAAI,GAAG,CAAC,QAAQ,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;QACjE,MAAM,EAAE,GAAG,cAAc,CAAC,GAA8B,CAAC,CAAC;QAC1D,OAAO;YACH,QAAQ,EAAE,GAAG,CAAC,QAAwB;YACtC,IAAI,EAAE,GAAG,CAAC,UAAU,IAAI,mBAAmB;YAC3C,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxC,CAAC;IACN,CAAC;IAED,yDAAyD;IACzD,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;QAC7F,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,MAAiC,CAAC,CAAC;QACjE,OAAO;YACH,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAwB;YAC7C,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,mBAAmB;YAC5C,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxC,CAAC;IACN,CAAC;IAED,2CAA2C;IAC3C,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QACd,+GAA+G;QAC/G,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;QACxB,IAAI,GAAG,CAAC,QAAQ,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;YACjE,MAAM,EAAE,GAAG,cAAc,CAAC,GAA8B,CAAC,CAAC;YAC1D,OAAO;gBACH,QAAQ,EAAE,GAAG,CAAC,QAAwB;gBACtC,IAAI,EAAG,GAAG,CAAC,UAAqB,IAAI,mBAAmB;gBACvD,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxC,CAAC;QACN,CAAC;QACD,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;YACxC,OAAO,EAAE,QAAQ,EAAE,GAAmB,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;QACxE,CAAC;IACL,CAAC;IAED,MAAM,IAAI,KAAK,CACX,0CAA0C,UAAU,MAAM;QAC1D,oBAAoB;QACpB,wFAAwF;QACxF,mFAAmF;QACnF,iFAAiF,CACpF,CAAC;AACN,CAAC;AAED,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E,qCAAqC;AACrC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAa,EAAE,QAA2B;IACxE,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;IAE/C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACvD,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;IACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,aAAa,MAAM,CAAC,CAAC;IAEvE,2BAA2B;IAC3B,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC;IACzD,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;IACrC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,6BAA6B,EAAE,UAAU,CAAC,CAAC;IAEpE,iCAAiC;IACjC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;IAChD,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,0BAA0B,EAAE,GAAG,SAAS,QAAQ,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEvG,2BAA2B;IAC3B,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;IACjD,MAAM,cAAc,GAAwB,EAAE,CAAC;IAC/C,IAAI,cAAc,IAAI,OAAO,cAAc,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;QACrE,cAAc,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACpF,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;IAC1C,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,EAAE,GAAG,WAAW,UAAU,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAExG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,mBAAmB;QACnB,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,2BAA2B,EAAE,WAAW,CAAC,CAAC;YAChE,OAAO,CAAC,KAAK,CAAC,UAAU,aAAa,0CAA0C,CAAC,CAAC;YACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;QAEnD,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC3D,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,EAAE,YAAY,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,OAAO,aAAa,iBAAiB,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;aAAM,CAAC;YACJ,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAC;YACxD,OAAO,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YACvC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,KAAK,CAAC,oBAAoB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1F,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,KAAK,CAAC,sBAAsB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChG,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,KAAK,CAAC,sBAAsB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChG,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,KAAK,CAAC,sBAAsB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1G,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChH,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,sBAAsB;QACtB,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,8BAA8B,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;QACtF,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,8BAA8B,CAAC,CAAC;QAE1D,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,aAAa,EAAE,CAAC,CAAC;QACpD,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,aAAa,EAAE,CAAC,CAAC;QAEnD,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QAC3D,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACnE,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI,EAAE,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,OAAO,aAAa,eAAe,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;IAC5D,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,KAAK,UAAU,IAAI;IACf,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,KAAK,MAAM;YACP,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM;QACV;YACI,OAAO,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;AACL,CAAC;AAED,8CAA8C;AAC9C,MAAM,KAAK,GACP,OAAO,OAAO,KAAK,WAAW;IAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;AAClF,IAAI,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;QACxB,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"fusion.js","sourceRoot":"","sources":["../../src/cli/fusion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { ProjectConfig } from './types.js';
2
+ /**
3
+ * Write all project files to the target directory.
4
+ *
5
+ * @param targetDir - Absolute path to the project directory
6
+ * @param config - Wizard configuration
7
+ * @returns Array of relative file paths written
8
+ */
9
+ export declare function scaffold(targetDir: string, config: ProjectConfig): string[];
10
+ //# sourceMappingURL=scaffold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/cli/scaffold.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAYhD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAW3E"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Scaffold Engine — Project Directory Builder
3
+ *
4
+ * Receives a `ProjectConfig` from the CLI wizard, builds the
5
+ * complete file list (including vector-specific files), and
6
+ * writes everything to disk in one pass.
7
+ *
8
+ * @module
9
+ */
10
+ import { mkdirSync, writeFileSync } from 'node:fs';
11
+ import { join, dirname } from 'node:path';
12
+ import * as tpl from './templates/index.js';
13
+ // ── Public API ───────────────────────────────────────────
14
+ /**
15
+ * Write all project files to the target directory.
16
+ *
17
+ * @param targetDir - Absolute path to the project directory
18
+ * @param config - Wizard configuration
19
+ * @returns Array of relative file paths written
20
+ */
21
+ export function scaffold(targetDir, config) {
22
+ const files = buildFileList(config);
23
+ for (const file of files) {
24
+ const fullPath = join(targetDir, file.path);
25
+ const dir = dirname(fullPath);
26
+ mkdirSync(dir, { recursive: true });
27
+ writeFileSync(fullPath, file.content, 'utf-8');
28
+ }
29
+ return files.map(f => f.path);
30
+ }
31
+ // ── File List Builder ────────────────────────────────────
32
+ function buildFileList(config) {
33
+ const files = [];
34
+ // ── Root config ──────────────────────────────────────
35
+ files.push({ path: 'package.json', content: tpl.packageJson(config) });
36
+ files.push({ path: 'tsconfig.json', content: tpl.tsconfig() });
37
+ files.push({ path: '.gitignore', content: tpl.gitignore() });
38
+ files.push({ path: '.env.example', content: tpl.envExample(config) });
39
+ files.push({ path: 'README.md', content: tpl.readme(config) });
40
+ // ── Zero-click Cursor integration ────────────────────
41
+ files.push({ path: '.cursor/mcp.json', content: tpl.cursorMcpJson(config) });
42
+ // ── Testing config ───────────────────────────────────
43
+ if (config.testing) {
44
+ files.push({ path: 'vitest.config.ts', content: tpl.vitestConfig() });
45
+ }
46
+ // ── Core source ──────────────────────────────────────
47
+ files.push({ path: 'src/fusion.ts', content: tpl.fusionTs() });
48
+ files.push({ path: 'src/context.ts', content: tpl.contextTs() });
49
+ files.push({ path: 'src/server.ts', content: tpl.serverTs(config) });
50
+ // ── Tools ────────────────────────────────────────────
51
+ files.push({ path: 'src/tools/system/health.ts', content: tpl.healthToolTs() });
52
+ files.push({ path: 'src/tools/system/echo.ts', content: tpl.echoToolTs() });
53
+ // ── Presenter ────────────────────────────────────────
54
+ files.push({ path: 'src/presenters/SystemPresenter.ts', content: tpl.systemPresenterTs() });
55
+ // ── Prompts ──────────────────────────────────────────
56
+ files.push({ path: 'src/prompts/greet.ts', content: tpl.greetPromptTs() });
57
+ // ── Middleware ────────────────────────────────────────
58
+ files.push({ path: 'src/middleware/auth.ts', content: tpl.authMiddlewareTs() });
59
+ // ── Testing ──────────────────────────────────────────
60
+ if (config.testing) {
61
+ files.push({ path: 'tests/setup.ts', content: tpl.testSetupTs() });
62
+ files.push({ path: 'tests/system.test.ts', content: tpl.systemTestTs() });
63
+ }
64
+ // ── Vector-specific files ────────────────────────────
65
+ addVectorFiles(files, config);
66
+ return files;
67
+ }
68
+ // ── Vector-Specific Files ────────────────────────────────
69
+ function addVectorFiles(files, config) {
70
+ switch (config.vector) {
71
+ case 'prisma':
72
+ files.push({ path: 'prisma/schema.prisma', content: tpl.prismaSchema() });
73
+ files.push({ path: 'src/tools/db/users.ts', content: tpl.dbUsersToolTs() });
74
+ break;
75
+ case 'n8n':
76
+ files.push({ path: 'src/n8n.ts', content: tpl.n8nConnectorTs() });
77
+ break;
78
+ case 'openapi':
79
+ files.push({ path: 'openapi.yaml', content: tpl.openapiYaml(config) });
80
+ files.push({ path: 'SETUP.md', content: tpl.openapiSetupMd() });
81
+ break;
82
+ case 'oauth':
83
+ files.push({ path: 'src/auth.ts', content: tpl.oauthSetupTs(config) });
84
+ files.push({ path: 'src/middleware/auth.ts', content: tpl.oauthMiddlewareTs() });
85
+ break;
86
+ case 'vanilla':
87
+ default:
88
+ // No extra files for vanilla (autoDiscover handles everything)
89
+ break;
90
+ }
91
+ }
92
+ //# sourceMappingURL=scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/cli/scaffold.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Config Templates — Root config files (package.json, tsconfig, etc.)
3
+ * @module
4
+ */
5
+ import type { ProjectConfig } from '../types.js';
6
+ /** Generate `package.json` with vector-specific deps */
7
+ export declare function packageJson(config: ProjectConfig): string;
8
+ /** Generate `tsconfig.json` */
9
+ export declare function tsconfig(): string;
10
+ /** Generate `.gitignore` */
11
+ export declare function gitignore(): string;
12
+ /** Generate `.env.example` with vector-specific vars */
13
+ export declare function envExample(config: ProjectConfig): string;
14
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,wDAAwD;AACxD,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CA+DzD;AAED,+BAA+B;AAC/B,wBAAgB,QAAQ,IAAI,MAAM,CAwBjC;AAED,4BAA4B;AAC5B,wBAAgB,SAAS,IAAI,MAAM,CAQlC;AAED,wDAAwD;AACxD,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAqCxD"}