@vinkius-core/mcp-fusion 3.1.4 → 3.1.6

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 (72) hide show
  1. package/dist/cli/args.d.ts +26 -0
  2. package/dist/cli/args.d.ts.map +1 -0
  3. package/dist/cli/args.js +100 -0
  4. package/dist/cli/args.js.map +1 -0
  5. package/dist/cli/commands/create.d.ts +11 -0
  6. package/dist/cli/commands/create.d.ts.map +1 -0
  7. package/dist/cli/commands/create.js +121 -0
  8. package/dist/cli/commands/create.js.map +1 -0
  9. package/dist/cli/commands/deploy.d.ts +3 -0
  10. package/dist/cli/commands/deploy.d.ts.map +1 -0
  11. package/dist/cli/commands/deploy.js +234 -0
  12. package/dist/cli/commands/deploy.js.map +1 -0
  13. package/dist/cli/commands/dev.d.ts +9 -0
  14. package/dist/cli/commands/dev.d.ts.map +1 -0
  15. package/dist/cli/commands/dev.js +54 -0
  16. package/dist/cli/commands/dev.js.map +1 -0
  17. package/dist/cli/commands/lock.d.ts +5 -0
  18. package/dist/cli/commands/lock.d.ts.map +1 -0
  19. package/dist/cli/commands/lock.js +94 -0
  20. package/dist/cli/commands/lock.js.map +1 -0
  21. package/dist/cli/commands/remote.d.ts +3 -0
  22. package/dist/cli/commands/remote.d.ts.map +1 -0
  23. package/dist/cli/commands/remote.js +37 -0
  24. package/dist/cli/commands/remote.js.map +1 -0
  25. package/dist/cli/constants.d.ts +19 -0
  26. package/dist/cli/constants.d.ts.map +1 -0
  27. package/dist/cli/constants.js +86 -0
  28. package/dist/cli/constants.js.map +1 -0
  29. package/dist/cli/fusion.d.ts +13 -131
  30. package/dist/cli/fusion.d.ts.map +1 -1
  31. package/dist/cli/fusion.js +27 -642
  32. package/dist/cli/fusion.js.map +1 -1
  33. package/dist/cli/progress.d.ts +34 -0
  34. package/dist/cli/progress.d.ts.map +1 -0
  35. package/dist/cli/progress.js +102 -0
  36. package/dist/cli/progress.js.map +1 -0
  37. package/dist/cli/rc.d.ts +11 -0
  38. package/dist/cli/rc.d.ts.map +1 -0
  39. package/dist/cli/rc.js +66 -0
  40. package/dist/cli/rc.js.map +1 -0
  41. package/dist/cli/registry.d.ts +25 -0
  42. package/dist/cli/registry.d.ts.map +1 -0
  43. package/dist/cli/registry.js +86 -0
  44. package/dist/cli/registry.js.map +1 -0
  45. package/dist/cli/types.d.ts +7 -0
  46. package/dist/cli/types.d.ts.map +1 -1
  47. package/dist/cli/utils.d.ts +26 -0
  48. package/dist/cli/utils.d.ts.map +1 -0
  49. package/dist/cli/utils.js +63 -0
  50. package/dist/cli/utils.js.map +1 -0
  51. package/dist/core/createGroup.d.ts.map +1 -1
  52. package/dist/core/createGroup.js +17 -5
  53. package/dist/core/createGroup.js.map +1 -1
  54. package/dist/edge-stub.d.ts +73 -0
  55. package/dist/edge-stub.d.ts.map +1 -0
  56. package/dist/edge-stub.js +81 -0
  57. package/dist/edge-stub.js.map +1 -0
  58. package/dist/fsm/StateMachineGate.d.ts +20 -0
  59. package/dist/fsm/StateMachineGate.d.ts.map +1 -1
  60. package/dist/fsm/StateMachineGate.js +45 -1
  61. package/dist/fsm/StateMachineGate.js.map +1 -1
  62. package/dist/server/DevServer.d.ts.map +1 -1
  63. package/dist/server/DevServer.js +8 -2
  64. package/dist/server/DevServer.js.map +1 -1
  65. package/dist/server/ServerAttachment.d.ts.map +1 -1
  66. package/dist/server/ServerAttachment.js +27 -17
  67. package/dist/server/ServerAttachment.js.map +1 -1
  68. package/dist/server/startServer.d.ts +3 -0
  69. package/dist/server/startServer.d.ts.map +1 -1
  70. package/dist/server/startServer.js +49 -5
  71. package/dist/server/startServer.js.map +1 -1
  72. package/package.json +6 -2
@@ -0,0 +1,26 @@
1
+ /**
2
+ * CLI argument parser.
3
+ * @module
4
+ */
5
+ import type { IngestionVector, TransportLayer } from './types.js';
6
+ /** @internal exported for testing */
7
+ export interface CliArgs {
8
+ command: string;
9
+ check: boolean;
10
+ server: string | undefined;
11
+ name: string | undefined;
12
+ cwd: string;
13
+ help: boolean;
14
+ projectName: string | undefined;
15
+ transport: TransportLayer | undefined;
16
+ vector: IngestionVector | undefined;
17
+ testing: boolean | undefined;
18
+ yes: boolean;
19
+ dir: string | undefined;
20
+ token: string | undefined;
21
+ serverId: string | undefined;
22
+ remoteUrl: string | undefined;
23
+ }
24
+ /** @internal exported for testing */
25
+ export declare function parseArgs(argv: string[]): CliArgs;
26
+ //# sourceMappingURL=args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIlE,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;IAEd,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,EAAE,cAAc,GAAG,SAAS,CAAC;IACtC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IACpC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,GAAG,EAAE,OAAO,CAAC;IAEb,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IAExB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAID,qCAAqC;AACrC,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAiGjD"}
@@ -0,0 +1,100 @@
1
+ // ─── Parser ──────────────────────────────────────────────────────
2
+ /** @internal exported for testing */
3
+ export function parseArgs(argv) {
4
+ const args = argv.slice(2);
5
+ const result = {
6
+ command: '',
7
+ check: false,
8
+ server: undefined,
9
+ name: undefined,
10
+ cwd: process.cwd(),
11
+ help: false,
12
+ projectName: undefined,
13
+ transport: undefined,
14
+ vector: undefined,
15
+ testing: undefined,
16
+ yes: false,
17
+ dir: undefined,
18
+ token: undefined,
19
+ serverId: undefined,
20
+ remoteUrl: undefined,
21
+ };
22
+ let seenCommand = false;
23
+ let seenProjectName = false;
24
+ for (let i = 0; i < args.length; i++) {
25
+ const arg = args[i];
26
+ switch (arg) {
27
+ case 'lock':
28
+ case 'create':
29
+ case 'dev':
30
+ case 'deploy':
31
+ case 'remote':
32
+ case 'inspect':
33
+ case 'insp':
34
+ case 'debug':
35
+ case 'dbg':
36
+ result.command = arg;
37
+ seenCommand = true;
38
+ break;
39
+ case '--check':
40
+ result.check = true;
41
+ break;
42
+ case '-s':
43
+ case '--server':
44
+ result.server = args[++i];
45
+ break;
46
+ case '-n':
47
+ case '--name':
48
+ result.name = args[++i];
49
+ break;
50
+ case '--cwd':
51
+ result.cwd = args[++i] ?? process.cwd();
52
+ break;
53
+ case '-h':
54
+ case '--help':
55
+ result.help = true;
56
+ break;
57
+ case '--transport':
58
+ result.transport = args[++i];
59
+ break;
60
+ case '--vector':
61
+ result.vector = args[++i];
62
+ break;
63
+ case '--testing':
64
+ result.testing = true;
65
+ break;
66
+ case '--no-testing':
67
+ result.testing = false;
68
+ break;
69
+ case '-d':
70
+ case '--dir':
71
+ result.dir = args[++i];
72
+ break;
73
+ case '-y':
74
+ case '--yes':
75
+ result.yes = true;
76
+ break;
77
+ case '--token':
78
+ result.token = args[++i];
79
+ break;
80
+ case '--server-id':
81
+ result.serverId = args[++i];
82
+ break;
83
+ default:
84
+ if (!seenCommand) {
85
+ result.command = arg;
86
+ seenCommand = true;
87
+ }
88
+ else if (result.command === 'create' && !seenProjectName && !arg.startsWith('-')) {
89
+ result.projectName = arg;
90
+ seenProjectName = true;
91
+ }
92
+ else if (result.command === 'remote' && !arg.startsWith('-')) {
93
+ result.remoteUrl = arg;
94
+ }
95
+ break;
96
+ }
97
+ }
98
+ return result;
99
+ }
100
+ //# sourceMappingURL=args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { CliArgs } from '../args.js';
2
+ import type { ProgressReporter } from '../progress.js';
3
+ import type { ProjectConfig } from '../types.js';
4
+ /**
5
+ * Collect project config — either from flags or interactive prompts.
6
+ * @internal exported for testing
7
+ */
8
+ export declare function collectConfig(args: CliArgs): Promise<ProjectConfig | null>;
9
+ /** @internal exported for testing */
10
+ export declare function commandCreate(args: CliArgs, reporter?: ProgressReporter): Promise<void>;
11
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAKvD,OAAO,KAAK,EAAE,aAAa,EAAmC,MAAM,aAAa,CAAC;AAsBlF;;;GAGG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA+ChF;AAID,qCAAqC;AACrC,wBAAsB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8C7F"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * `fusion create` — interactive project scaffolding wizard.
3
+ * @module
4
+ */
5
+ import { resolve } from 'node:path';
6
+ import { existsSync } from 'node:fs';
7
+ import { execSync } from 'node:child_process';
8
+ import { createInterface } from 'node:readline';
9
+ import { ProgressTracker } from '../progress.js';
10
+ import { ansi, VALID_TRANSPORTS, VALID_VECTORS } from '../constants.js';
11
+ import { ask } from '../utils.js';
12
+ import { scaffold } from '../scaffold.js';
13
+ // ─── Validation ──────────────────────────────────────────────────
14
+ /** @internal */
15
+ function validateTransport(raw) {
16
+ if (!raw)
17
+ return 'stdio';
18
+ if (VALID_TRANSPORTS.includes(raw))
19
+ return raw;
20
+ process.stderr.write(` ${ansi.red('⚠')} Unknown transport "${raw}" — using ${ansi.bold('stdio')}. Valid: ${VALID_TRANSPORTS.join(', ')}\n`);
21
+ return 'stdio';
22
+ }
23
+ /** @internal */
24
+ function validateVector(raw) {
25
+ if (!raw)
26
+ return 'vanilla';
27
+ if (VALID_VECTORS.includes(raw))
28
+ return raw;
29
+ process.stderr.write(` ${ansi.red('⚠')} Unknown vector "${raw}" — using ${ansi.bold('vanilla')}. Valid: ${VALID_VECTORS.join(', ')}\n`);
30
+ return 'vanilla';
31
+ }
32
+ // ─── Config Collection ───────────────────────────────────────────
33
+ /**
34
+ * Collect project config — either from flags or interactive prompts.
35
+ * @internal exported for testing
36
+ */
37
+ export async function collectConfig(args) {
38
+ // ── Fast-path: --yes skips all prompts
39
+ if (args.yes) {
40
+ const name = args.projectName ?? 'my-mcp-server';
41
+ if (!/^[a-z][a-z0-9-]*[a-z0-9]$/.test(name) && !/^[a-z0-9]$/.test(name)) {
42
+ 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`);
43
+ return null;
44
+ }
45
+ const transport = validateTransport(args.transport);
46
+ const vector = validateVector(args.vector);
47
+ return {
48
+ name,
49
+ transport,
50
+ vector,
51
+ testing: args.testing ?? true,
52
+ };
53
+ }
54
+ // ── Interactive wizard
55
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
56
+ try {
57
+ process.stderr.write(`\n ${ansi.bold('MCP Fusion')} ${ansi.dim('— Create a new MCP server')}\n\n`);
58
+ const name = args.projectName ?? await ask(rl, 'Project name?', 'my-mcp-server');
59
+ if (!/^[a-z][a-z0-9-]*[a-z0-9]$/.test(name) && !/^[a-z0-9]$/.test(name)) {
60
+ 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`);
61
+ return null;
62
+ }
63
+ const transportRaw = args.transport ?? await ask(rl, 'Transport? [stdio, sse]', 'stdio');
64
+ const transport = validateTransport(transportRaw);
65
+ const vectorRaw = args.vector ?? await ask(rl, 'Vector? [vanilla, prisma, n8n, openapi, oauth]', 'vanilla');
66
+ const vector = validateVector(vectorRaw);
67
+ const testingRaw = args.testing ?? (await ask(rl, 'Include testing?', 'yes')).toLowerCase();
68
+ const testing = typeof testingRaw === 'boolean' ? testingRaw : testingRaw !== 'no';
69
+ process.stderr.write('\n');
70
+ return { name, transport, vector, testing };
71
+ }
72
+ finally {
73
+ rl.close();
74
+ }
75
+ }
76
+ // ─── Command ─────────────────────────────────────────────────────
77
+ /** @internal exported for testing */
78
+ export async function commandCreate(args, reporter) {
79
+ const progress = new ProgressTracker(reporter);
80
+ const config = await collectConfig(args);
81
+ if (!config) {
82
+ process.exit(1);
83
+ }
84
+ const targetDir = resolve(args.cwd, config.name);
85
+ if (existsSync(targetDir)) {
86
+ process.stderr.write(` ${ansi.red('✗')} Directory "${config.name}" already exists.\n`);
87
+ process.exit(1);
88
+ }
89
+ progress.start('scaffold', 'Scaffolding project');
90
+ const files = scaffold(targetDir, config);
91
+ progress.done('scaffold', 'Scaffolding project', `${files.length} files`);
92
+ progress.start('install', 'Installing dependencies');
93
+ try {
94
+ execSync('npm install', {
95
+ cwd: targetDir,
96
+ stdio: 'ignore',
97
+ timeout: 120_000,
98
+ });
99
+ progress.done('install', 'Installing dependencies');
100
+ }
101
+ catch {
102
+ progress.fail('install', 'Installing dependencies', 'run npm install manually');
103
+ }
104
+ const steps = [`cd ${config.name}`];
105
+ if (config.transport === 'sse') {
106
+ steps.push('fusion dev', '# then connect Cursor or Claude to http://localhost:3001/sse');
107
+ }
108
+ else {
109
+ steps.push('fusion dev');
110
+ }
111
+ if (config.testing)
112
+ steps.push('npm test');
113
+ process.stderr.write(`\n ${ansi.green('✓')} ${ansi.bold(config.name)} is ready!\n\n`);
114
+ process.stderr.write(` ${ansi.dim('Next steps:')}\n`);
115
+ for (const step of steps) {
116
+ process.stderr.write(` ${ansi.cyan('$')} ${step}\n`);
117
+ }
118
+ process.stderr.write(`\n ${ansi.dim('Cursor:')} .cursor/mcp.json is pre-configured — open in Cursor and go.\n`);
119
+ process.stderr.write(` ${ansi.dim('Docs:')} ${ansi.cyan('https://mcp-fusion.vinkius.com/')}\n\n`);
120
+ }
121
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CliArgs } from '../args.js';
2
+ export declare function commandDeploy(args: CliArgs): Promise<void>;
3
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/deploy.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AA0B1C,wBAAsB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAgNhE"}
@@ -0,0 +1,234 @@
1
+ /**
2
+ * `fusion deploy` — bundle, compress & upload to Edge.
3
+ *
4
+ * Produces a Fat Bundle (IIFE, platform: browser) that is fully
5
+ * self-contained for execution in a V8 Isolate. All dependencies
6
+ * (zod, mcp-fusion, MCP SDK) are bundled inside. Node.js built-in
7
+ * modules are aliased to edge-stub.ts (AST-compatible stubs).
8
+ *
9
+ * @module
10
+ */
11
+ import { resolve, dirname } from 'node:path';
12
+ import { existsSync } from 'node:fs';
13
+ import { createHash } from 'node:crypto';
14
+ import { gzipSync } from 'node:zlib';
15
+ import { createRequire } from 'node:module';
16
+ import { ProgressTracker } from '../progress.js';
17
+ import { ansi, VINKIUS_CLOUD_URL } from '../constants.js';
18
+ import { inferServerEntry } from '../utils.js';
19
+ import { loadEnv, readFusionRc } from '../rc.js';
20
+ // ── Edge Stub Aliases ────────────────────────────────────────────────────────
21
+ // Maps node:* to edge-stub.ts (internal, NOT in package.json exports).
22
+ // These stubs satisfy esbuild AST so the MCP SDK compiles without errors.
23
+ // The stubs are NEVER called at runtime — startServer() intercepts before
24
+ // any transport is created.
25
+ function edgeStubAliases() {
26
+ const require = createRequire(import.meta.url);
27
+ const pkgDir = dirname(require.resolve('@vinkius-core/mcp-fusion'));
28
+ const stubPath = resolve(pkgDir, 'edge-stub.js');
29
+ const stubs = {};
30
+ for (const mod of [
31
+ 'child_process', 'fs', 'net', 'events', 'stream',
32
+ 'http', 'https', 'tls', 'os', 'path', 'url', 'crypto', 'buffer',
33
+ ]) {
34
+ stubs[`node:${mod}`] = stubPath;
35
+ stubs[mod] = stubPath; // bare specifiers used by some libs
36
+ }
37
+ return stubs;
38
+ }
39
+ export async function commandDeploy(args) {
40
+ const progress = new ProgressTracker();
41
+ const cwd = args.cwd;
42
+ const deployStart = Date.now();
43
+ // ── Step 1: read-config ──
44
+ progress.start('read-config', 'Reading configuration');
45
+ loadEnv(cwd);
46
+ const rc = readFusionRc(cwd);
47
+ const remote = rc.remote ?? VINKIUS_CLOUD_URL;
48
+ const serverId = rc.serverId;
49
+ const token = args.token ?? process.env['FUSION_DEPLOY_TOKEN'];
50
+ if (!serverId) {
51
+ progress.fail('read-config', 'Reading configuration', 'run: fusion remote --server-id <uuid>');
52
+ process.exit(1);
53
+ }
54
+ if (!token) {
55
+ progress.fail('read-config', 'Reading configuration', 'set FUSION_DEPLOY_TOKEN=<connection-token> in .env');
56
+ process.exit(1);
57
+ }
58
+ progress.done('read-config', 'Reading configuration');
59
+ // ── Step 2: resolve entrypoint ──
60
+ progress.start('resolve', 'Resolving entrypoint');
61
+ const entrypoint = args.server ?? inferServerEntry(cwd);
62
+ if (!entrypoint) {
63
+ progress.fail('resolve', 'Resolving entrypoint', 'use --server <path>');
64
+ process.exit(1);
65
+ }
66
+ const absEntry = resolve(cwd, entrypoint);
67
+ if (!existsSync(absEntry)) {
68
+ progress.fail('resolve', 'Resolving entrypoint', `file not found: ${absEntry}`);
69
+ process.exit(1);
70
+ }
71
+ progress.done('resolve', `Resolving entrypoint (${entrypoint})`);
72
+ // ── Step 3: bundle (esbuild) ──
73
+ progress.start('bundle', 'Bundling with esbuild');
74
+ let esbuild;
75
+ try {
76
+ esbuild = await import('esbuild');
77
+ }
78
+ catch {
79
+ // Auto-install esbuild — zero friction
80
+ progress.done('bundle', 'Bundling with esbuild');
81
+ progress.start('bundle', 'Installing esbuild');
82
+ try {
83
+ const { execSync } = await import('node:child_process');
84
+ execSync('npm install -D esbuild', { cwd, stdio: 'ignore' });
85
+ esbuild = await import('esbuild');
86
+ }
87
+ catch {
88
+ progress.fail('bundle', 'Installing esbuild', 'failed to install — run: npm install -D esbuild');
89
+ process.exit(1);
90
+ }
91
+ progress.done('bundle', 'Installing esbuild');
92
+ progress.start('bundle', 'Bundling with esbuild');
93
+ }
94
+ let buildResult;
95
+ try {
96
+ buildResult = await esbuild.build({
97
+ entryPoints: [absEntry],
98
+ bundle: true,
99
+ format: 'iife',
100
+ platform: 'browser',
101
+ target: 'es2022',
102
+ treeShaking: true,
103
+ minify: true,
104
+ write: false,
105
+ logLevel: 'silent',
106
+ external: [],
107
+ alias: edgeStubAliases(),
108
+ });
109
+ }
110
+ catch (err) {
111
+ const buildErr = err;
112
+ if (buildErr.errors?.length) {
113
+ const first = buildErr.errors[0];
114
+ const loc = first.location
115
+ ? ` (${first.location.file}:${first.location.line}:${first.location.column})`
116
+ : '';
117
+ progress.fail('bundle', 'Bundling', `${first.text}${loc}`);
118
+ for (const e of buildErr.errors.slice(1, 4)) {
119
+ const eLoc = e.location ? ` (${e.location.file}:${e.location.line})` : '';
120
+ process.stderr.write(` error: ${e.text}${eLoc}\n`);
121
+ }
122
+ if (buildErr.errors.length > 4) {
123
+ process.stderr.write(` ${ansi.dim(`... and ${buildErr.errors.length - 4} more errors`)}\n`);
124
+ }
125
+ }
126
+ else {
127
+ progress.fail('bundle', 'Bundling', String(err));
128
+ }
129
+ process.exit(1);
130
+ }
131
+ const outFile = buildResult.outputFiles?.[0];
132
+ if (!outFile) {
133
+ progress.fail('bundle', 'Bundling', 'esbuild produced no output');
134
+ process.exit(1);
135
+ }
136
+ const rawCode = new TextDecoder().decode(outFile.contents);
137
+ progress.done('bundle', 'Bundling with esbuild');
138
+ // ── Step 4: size-check ──
139
+ const rawSizeBytes = Buffer.byteLength(rawCode, 'utf-8');
140
+ const MAX_BUNDLE_SIZE = 512_000; // 500KB (fat bundle includes all deps)
141
+ if (rawSizeBytes > MAX_BUNDLE_SIZE) {
142
+ const sizeKB = (rawSizeBytes / 1024).toFixed(1);
143
+ process.stderr.write(`\nfatal: bundle too large: ${sizeKB}KB (max 500KB)\n` +
144
+ `hint: remove unused imports — the fat bundle includes all dependencies\n\n`);
145
+ process.exit(1);
146
+ }
147
+ // ── Step 5: hash + compress ──
148
+ progress.start('compress', 'Compressing');
149
+ const hash = createHash('sha256').update(rawCode).digest('hex');
150
+ const compressed = gzipSync(Buffer.from(rawCode, 'utf-8'));
151
+ const payload = compressed.toString('base64');
152
+ const compressedKB = (compressed.length / 1024).toFixed(1);
153
+ const rawKB = (rawSizeBytes / 1024).toFixed(1);
154
+ const ratio = rawSizeBytes > 0
155
+ ? Math.round((1 - compressed.length / rawSizeBytes) * 100)
156
+ : 0;
157
+ progress.done('compress', `Compressing (${rawKB}KB -> ${compressedKB}KB gzip, ${ratio}% smaller)`);
158
+ // ── Step 6: upload ──
159
+ progress.start('upload', 'Deploying to Edge');
160
+ const url = `${remote.replace(/\/+$/, '')}/servers/${serverId}/deploy`;
161
+ let res;
162
+ try {
163
+ res = await fetch(url, {
164
+ method: 'POST',
165
+ headers: {
166
+ 'Content-Type': 'application/json',
167
+ 'Authorization': `Bearer ${token}`,
168
+ 'Accept': 'application/json',
169
+ },
170
+ body: JSON.stringify({
171
+ bundle: payload,
172
+ hash,
173
+ raw_size: rawSizeBytes,
174
+ }),
175
+ });
176
+ }
177
+ catch (netErr) {
178
+ const msg = netErr instanceof Error ? netErr.message : String(netErr);
179
+ if (msg.includes('ENOTFOUND') || msg.includes('getaddrinfo')) {
180
+ progress.fail('upload', 'Deploying to Edge', 'DNS resolution failed — check your remote URL');
181
+ }
182
+ else if (msg.includes('ECONNREFUSED')) {
183
+ progress.fail('upload', 'Deploying to Edge', 'connection refused — is the API running?');
184
+ }
185
+ else if (msg.includes('ETIMEDOUT') || msg.includes('timeout')) {
186
+ progress.fail('upload', 'Deploying to Edge', 'request timed out — check your network');
187
+ }
188
+ else {
189
+ progress.fail('upload', 'Deploying to Edge', `network error: ${msg}`);
190
+ }
191
+ process.exit(1);
192
+ }
193
+ if (!res.ok) {
194
+ const errBody = await res.text();
195
+ let message = `HTTP ${res.status}`;
196
+ try {
197
+ const parsed = JSON.parse(errBody);
198
+ message = parsed.message ?? message;
199
+ }
200
+ catch { /* use status code */ }
201
+ if (res.status === 401) {
202
+ message = 'connection token revoked or invalid — check your dashboard';
203
+ }
204
+ else if (res.status === 403) {
205
+ message = 'connection token does not belong to this server';
206
+ }
207
+ else if (res.status === 404) {
208
+ message = 'server not found — check your server ID';
209
+ }
210
+ else if (res.status === 422 && message.startsWith('HTTP')) {
211
+ message = 'invalid payload — check your entrypoint';
212
+ }
213
+ progress.fail('upload', 'Deploying to Edge', message);
214
+ process.exit(1);
215
+ }
216
+ const data = await res.json();
217
+ progress.done('upload', 'Deploying to Edge');
218
+ // ── Step 7: done ──
219
+ const elapsed = ((Date.now() - deployStart) / 1000).toFixed(1);
220
+ process.stderr.write('\n');
221
+ if (data.status === 'restored') {
222
+ process.stderr.write(` ${ansi.bold(data.server_name)} — unchanged (rollback match)\n`);
223
+ }
224
+ else {
225
+ process.stderr.write(` ${ansi.bold(data.server_name)} — deployed to edge\n`);
226
+ }
227
+ process.stderr.write(` ${ansi.dim('id:')} ${data.deployment_id}\n`);
228
+ process.stderr.write(` ${ansi.dim('entry:')} ${entrypoint}\n`);
229
+ process.stderr.write(` ${ansi.dim('size:')} ${rawKB}KB -> ${compressedKB}KB gzip (${ratio}% smaller)\n`);
230
+ process.stderr.write(` ${ansi.dim('url:')} ${ansi.cyan(data.url)}\n`);
231
+ process.stderr.write(` ${ansi.dim('time:')} ${elapsed}s\n`);
232
+ process.stderr.write(`\n ${ansi.dim('MCP Fusion')} ${ansi.dim('->')} ${ansi.cyan('Vinkius Edge')}\n\n`);
233
+ }
234
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/cli/commands/deploy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEjD,gFAAgF;AAChF,uEAAuE;AACvE,0EAA0E;AAC1E,0EAA0E;AAC1E,4BAA4B;AAC5B,SAAS,eAAe;IACpB,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACjD,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI;QACd,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ;QAChD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ;KAClE,EAAE,CAAC;QACA,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC;QAChC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,oCAAoC;IAC/D,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAa;IAC7C,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACrB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE/B,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,CAAC;IAEb,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,IAAI,iBAAiB,CAAC;IAC9C,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAE/D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,uBAAuB,EAAE,uCAAuC,CAAC,CAAC;QAC/F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,uBAAuB,EAAE,oDAAoD,CAAC,CAAC;QAC5G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC;IAEtD,mCAAmC;IACnC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,EAAE,qBAAqB,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC1C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,EAAE,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,UAAU,GAAG,CAAC,CAAC;IAEjE,iCAAiC;IACjC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;IAClD,IAAI,OAAiC,CAAC;IACtC,IAAI,CAAC;QACD,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACL,uCAAuC;QACvC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;QACjD,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QAC/C,IAAI,CAAC;YACD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACxD,QAAQ,CAAC,wBAAwB,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7D,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACL,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,EAAE,iDAAiD,CAAC,CAAC;YACjG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QAC9C,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,WAAsD,CAAC;IAC3D,IAAI,CAAC;QACD,WAAW,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC;YAC9B,WAAW,EAAE,CAAC,QAAQ,CAAC;YACvB,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,eAAe,EAAE;SAC3B,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,GAAsG,CAAC;QACxH,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC;YAClC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ;gBACtB,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG;gBAC7E,CAAC,CAAC,EAAE,CAAC;YACT,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC;YAC3D,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACjG,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,4BAA4B,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;IAEjD,2BAA2B;IAC3B,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,OAAO,CAAC,CAAC,uCAAuC;IACxE,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,MAAM,CAAC,KAAK,CAChB,8BAA8B,MAAM,kBAAkB;YACtD,4EAA4E,CAC/E,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,gCAAgC;IAChC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,YAAY,GAAG,CAAC;QAC1B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC;QAC1D,CAAC,CAAC,CAAC,CAAC;IACR,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,KAAK,SAAS,YAAY,YAAY,KAAK,YAAY,CAAC,CAAC;IAEnG,uBAAuB;IACvB,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,QAAQ,SAAS,CAAC;IAEvE,IAAI,GAAa,CAAC;IAClB,IAAI,CAAC;QACD,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YACnB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,KAAK,EAAE;gBAClC,QAAQ,EAAE,kBAAkB;aAC/B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACjB,MAAM,EAAE,OAAO;gBACf,IAAI;gBACJ,QAAQ,EAAE,YAAY;aACzB,CAAC;SACL,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,MAAe,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtE,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3D,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,EAAE,+CAA+C,CAAC,CAAC;QAClG,CAAC;aAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACtC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,EAAE,0CAA0C,CAAC,CAAC;QAC7F,CAAC;aAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9D,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,EAAE,wCAAwC,CAAC,CAAC;QAC3F,CAAC;aAAM,CAAC;YACJ,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,EAAE,kBAAkB,GAAG,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACV,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,OAAO,GAAG,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;QACnC,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC;QAEjC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACrB,OAAO,GAAG,4DAA4D,CAAC;QAC3E,CAAC;aAAM,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO,GAAG,iDAAiD,CAAC;QAChE,CAAC;aAAM,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO,GAAG,yCAAyC,CAAC;QACxD,CAAC;aAAM,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1D,OAAO,GAAG,yCAAyC,CAAC;QACxD,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAO1B,CAAC;IAEF,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAE7C,qBAAqB;IACrB,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAE/D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC;IAC5F,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;IAC1E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,UAAU,IAAI,CAAC,CAAC;IAClE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,YAAY,YAAY,KAAK,cAAc,CAAC,CAAC;IAC7G,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,OAAO,KAAK,CAAC,CAAC;IAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC7G,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * `fusion dev` — HMR development server.
3
+ * @module
4
+ */
5
+ import type { CliArgs } from '../args.js';
6
+ import type { ProgressReporter } from '../progress.js';
7
+ /** @internal exported for testing */
8
+ export declare function commandDev(args: CliArgs, reporter?: ProgressReporter): Promise<void>;
9
+ //# sourceMappingURL=dev.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAOvD,qCAAqC;AACrC,wBAAsB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsD1F"}
@@ -0,0 +1,54 @@
1
+ import { ProgressTracker } from '../progress.js';
2
+ import { ansi } from '../constants.js';
3
+ import { resolveRegistry } from '../registry.js';
4
+ import { inferServerEntry, inferWatchDir } from '../utils.js';
5
+ import { createDevServer } from '../../server/DevServer.js';
6
+ /** @internal exported for testing */
7
+ export async function commandDev(args, reporter) {
8
+ const progress = new ProgressTracker(reporter);
9
+ if (!args.server) {
10
+ const detected = inferServerEntry(args.cwd);
11
+ if (!detected) {
12
+ console.error('Error: Could not auto-detect server entrypoint.\n');
13
+ console.error('Usage: fusion dev --server ./src/server.ts');
14
+ process.exit(1);
15
+ }
16
+ args.server = detected;
17
+ }
18
+ const serverEntry = args.server;
19
+ process.stderr.write(`\n ${ansi.bold('fusion dev')} ${ansi.dim('— HMR Development Server')}\n\n`);
20
+ // Step 1: Resolve registry
21
+ progress.start('resolve', 'Resolving server entrypoint');
22
+ const { registry, name } = await resolveRegistry(serverEntry);
23
+ progress.done('resolve', 'Resolving server entrypoint', name);
24
+ // Step 2: Determine watch directory
25
+ const watchDir = args.dir ?? inferWatchDir(serverEntry);
26
+ progress.start('watch', `Watching ${watchDir}`);
27
+ progress.done('watch', `Watching ${watchDir}`);
28
+ // Step 3: Create and start dev server
29
+ const devServer = createDevServer({
30
+ dir: watchDir,
31
+ setup: async (reg) => {
32
+ if ('clear' in reg && typeof reg.clear === 'function') {
33
+ reg.clear();
34
+ }
35
+ try {
36
+ const resolved = await resolveRegistry(serverEntry);
37
+ for (const builder of resolved.registry.getBuilders()) {
38
+ reg.register(builder);
39
+ }
40
+ }
41
+ catch (err) {
42
+ const message = err instanceof Error ? err.message : String(err);
43
+ throw new Error(`Failed to reload: ${message}`);
44
+ }
45
+ },
46
+ });
47
+ process.on('SIGINT', () => {
48
+ process.stderr.write(`\n ${ansi.dim('Shutting down...')}\n\n`);
49
+ devServer.stop();
50
+ process.exit(0);
51
+ });
52
+ await devServer.start();
53
+ }
54
+ //# sourceMappingURL=dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { CliArgs } from '../args.js';
2
+ import type { ProgressReporter } from '../progress.js';
3
+ /** @internal exported for testing */
4
+ export declare function commandLock(args: CliArgs, reporter?: ProgressReporter): Promise<void>;
5
+ //# sourceMappingURL=lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/lock.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAMvD,qCAAqC;AACrC,wBAAsB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgF3F"}