@nimblebrain/synapse 0.1.0 → 0.1.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.
@@ -1,54 +1,54 @@
1
1
  #!/usr/bin/env node
2
2
  'use strict';
3
3
 
4
- var chunkAW3YIXLE_cjs = require('../chunk-AW3YIXLE.cjs');
5
4
  var fs = require('fs');
6
5
  var path = require('path');
7
6
 
8
- function writeOutput(content, outputPath) {
9
- fs.mkdirSync(path.dirname(outputPath), { recursive: true });
10
- fs.writeFileSync(outputPath, content, "utf-8");
7
+ var args = process.argv.slice(2);
8
+ var command = args[0];
9
+ if (command === "codegen") {
10
+ runCodegen(args.slice(1));
11
+ } else if (command === "preview") {
12
+ runPreview(args.slice(1));
13
+ } else {
14
+ console.log("Usage:");
15
+ console.log(" synapse codegen Generate TypeScript types from tool schemas");
16
+ console.log(" synapse preview Run a standalone preview of an MCP app with UI");
17
+ process.exit(command === "--help" || command === "-h" ? 0 : 1);
11
18
  }
12
-
13
- // src/codegen/cli.ts
14
- async function main() {
15
- const args = process.argv.slice(2);
16
- if (args[0] === "codegen") args.shift();
17
- const flags = parseFlags(args);
18
- if (!flags.fromManifest && !flags.fromServer && !flags.fromSchema) {
19
- console.error("Error: Specify a source with --from-manifest, --from-server, or --from-schema");
20
- console.error("");
19
+ async function runCodegen(args2) {
20
+ const { readFromManifest, readFromSchemaDir, readFromServer } = await import('../schema-reader-B6LTGBMJ.cjs');
21
+ const { generateTypes } = await import('../type-generator-UA3L4OIA.cjs');
22
+ const { writeOutput } = await import('../writer-NDK4U6C5.cjs');
23
+ const flags = parseFlags(args2, ["from-manifest", "from-server", "from-schema", "out", "app"]);
24
+ if (!flags["from-manifest"] && !flags["from-server"] && !flags["from-schema"]) {
21
25
  console.error("Usage:");
22
26
  console.error(
23
- " synapse codegen --from-manifest ./manifest.json [--out ./types.ts] [--app my-app]"
24
- );
25
- console.error(
26
- " synapse codegen --from-server http://localhost:3000/mcp [--out ./types.ts] [--app my-app]"
27
+ " synapse codegen --from-manifest ./manifest.json [--out ./types.ts] [--app name]"
27
28
  );
28
- console.error(" synapse codegen --from-schema ./schemas/ [--out ./types.ts] [--app my-app]");
29
+ console.error(" synapse codegen --from-server http://localhost:3000/mcp [--out ./types.ts]");
30
+ console.error(" synapse codegen --from-schema ./schemas/ [--out ./types.ts]");
29
31
  process.exit(1);
30
32
  }
31
33
  try {
32
34
  let tools;
33
35
  let appName = flags.app;
34
- if (flags.fromManifest) {
35
- const manifestPath = path.resolve(flags.fromManifest);
36
- tools = chunkAW3YIXLE_cjs.readFromManifest(manifestPath);
36
+ if (flags["from-manifest"]) {
37
+ const manifestPath = path.resolve(flags["from-manifest"]);
38
+ tools = readFromManifest(manifestPath);
37
39
  if (!appName) {
38
40
  const raw = JSON.parse(fs.readFileSync(manifestPath, "utf-8"));
39
41
  appName = raw.name ?? "app";
40
42
  }
41
- } else if (flags.fromServer) {
42
- tools = await chunkAW3YIXLE_cjs.readFromServer(flags.fromServer);
43
+ } else if (flags["from-server"]) {
44
+ tools = await readFromServer(flags["from-server"]);
43
45
  appName = appName ?? "app";
44
46
  } else {
45
- tools = chunkAW3YIXLE_cjs.readFromSchemaDir(path.resolve(flags.fromSchema));
47
+ tools = readFromSchemaDir(path.resolve(flags["from-schema"]));
46
48
  appName = appName ?? "app";
47
49
  }
48
- if (tools.length === 0) {
49
- console.error("Warning: No tools found in source");
50
- }
51
- const output = chunkAW3YIXLE_cjs.generateTypes(tools, appName ?? "app");
50
+ if (tools.length === 0) console.error("Warning: No tools found");
51
+ const output = generateTypes(tools, appName ?? "app");
52
52
  const outPath = path.resolve(flags.out ?? "src/generated/types.ts");
53
53
  writeOutput(output, outPath);
54
54
  console.log(`Generated ${tools.length} tool types -> ${outPath}`);
@@ -57,29 +57,40 @@ async function main() {
57
57
  process.exit(1);
58
58
  }
59
59
  }
60
- function parseFlags(args) {
60
+ async function runPreview(args2) {
61
+ const { startPreview } = await import('../server-SEI7XI3B.cjs');
62
+ const flags = parseFlags(args2, ["server", "ui", "server-port", "ui-port", "port"]);
63
+ if (!flags.server || !flags.ui) {
64
+ console.error("Usage:");
65
+ console.error(
66
+ ' synapse preview --server "uv run uvicorn mcp_hello.server:app --port 8001" --ui ./ui'
67
+ );
68
+ console.error("");
69
+ console.error("Options:");
70
+ console.error(" --server <cmd> Shell command to start the MCP server (HTTP mode)");
71
+ console.error(" --ui <path> Path to UI directory (must have package.json)");
72
+ console.error(" --server-port <port> MCP server port (default: 8001)");
73
+ console.error(" --ui-port <port> Vite dev server port (default: 5173)");
74
+ console.error(" --port <port> Preview harness port (default: 5180)");
75
+ process.exit(1);
76
+ }
77
+ await startPreview({
78
+ serverCmd: flags.server,
79
+ uiDir: flags.ui,
80
+ serverPort: Number(flags["server-port"] ?? 8001),
81
+ uiPort: Number(flags["ui-port"] ?? 5173),
82
+ previewPort: Number(flags.port ?? 5180)
83
+ });
84
+ }
85
+ function parseFlags(args2, known) {
61
86
  const flags = {};
62
- for (let i = 0; i < args.length; i++) {
63
- switch (args[i]) {
64
- case "--from-manifest":
65
- flags.fromManifest = args[++i];
66
- break;
67
- case "--from-server":
68
- flags.fromServer = args[++i];
69
- break;
70
- case "--from-schema":
71
- flags.fromSchema = args[++i];
72
- break;
73
- case "--out":
74
- flags.out = args[++i];
75
- break;
76
- case "--app":
77
- flags.app = args[++i];
78
- break;
87
+ for (let i = 0; i < args2.length; i++) {
88
+ const key = args2[i].replace(/^--/, "");
89
+ if (known.includes(key) && i + 1 < args2.length) {
90
+ flags[key] = args2[++i];
79
91
  }
80
92
  }
81
93
  return flags;
82
94
  }
83
- main();
84
95
  //# sourceMappingURL=cli.cjs.map
85
96
  //# sourceMappingURL=cli.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/codegen/writer.ts","../../src/codegen/cli.ts"],"names":["mkdirSync","dirname","writeFileSync","resolve","readFromManifest","readFileSync","readFromServer","readFromSchemaDir","generateTypes"],"mappings":"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","file":"cli.cjs","sourcesContent":["import { mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname } from \"node:path\";\n\n/**\n * Write generated TypeScript to a file, creating parent directories as needed.\n */\nexport function writeOutput(content: string, outputPath: string): void {\n mkdirSync(dirname(outputPath), { recursive: true });\n writeFileSync(outputPath, content, \"utf-8\");\n}\n","#!/usr/bin/env node\n\nimport { readFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport type { ToolDefinition } from \"../types.js\";\nimport { readFromManifest, readFromSchemaDir, readFromServer } from \"./schema-reader.js\";\nimport { generateTypes } from \"./type-generator.js\";\nimport { writeOutput } from \"./writer.js\";\n\nasync function main(): Promise<void> {\n const args = process.argv.slice(2);\n\n // Strip \"codegen\" subcommand if present\n if (args[0] === \"codegen\") args.shift();\n\n const flags = parseFlags(args);\n\n if (!flags.fromManifest && !flags.fromServer && !flags.fromSchema) {\n console.error(\"Error: Specify a source with --from-manifest, --from-server, or --from-schema\");\n console.error(\"\");\n console.error(\"Usage:\");\n console.error(\n \" synapse codegen --from-manifest ./manifest.json [--out ./types.ts] [--app my-app]\",\n );\n console.error(\n \" synapse codegen --from-server http://localhost:3000/mcp [--out ./types.ts] [--app my-app]\",\n );\n console.error(\" synapse codegen --from-schema ./schemas/ [--out ./types.ts] [--app my-app]\");\n process.exit(1);\n }\n\n try {\n let tools: ToolDefinition[];\n let appName = flags.app;\n\n if (flags.fromManifest) {\n const manifestPath = resolve(flags.fromManifest);\n tools = readFromManifest(manifestPath);\n if (!appName) {\n const raw = JSON.parse(readFileSync(manifestPath, \"utf-8\"));\n appName = raw.name ?? \"app\";\n }\n } else if (flags.fromServer) {\n tools = await readFromServer(flags.fromServer);\n appName = appName ?? \"app\";\n } else {\n tools = readFromSchemaDir(resolve(flags.fromSchema as string));\n appName = appName ?? \"app\";\n }\n\n if (tools.length === 0) {\n console.error(\"Warning: No tools found in source\");\n }\n\n const output = generateTypes(tools, appName ?? \"app\");\n const outPath = resolve(flags.out ?? \"src/generated/types.ts\");\n writeOutput(output, outPath);\n\n console.log(`Generated ${tools.length} tool types -> ${outPath}`);\n } catch (err) {\n console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);\n process.exit(1);\n }\n}\n\ninterface Flags {\n fromManifest?: string;\n fromServer?: string;\n fromSchema?: string;\n out?: string;\n app?: string;\n}\n\nfunction parseFlags(args: string[]): Flags {\n const flags: Flags = {};\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--from-manifest\":\n flags.fromManifest = args[++i];\n break;\n case \"--from-server\":\n flags.fromServer = args[++i];\n break;\n case \"--from-schema\":\n flags.fromSchema = args[++i];\n break;\n case \"--out\":\n flags.out = args[++i];\n break;\n case \"--app\":\n flags.app = args[++i];\n break;\n }\n }\n return flags;\n}\n\nmain();\n"]}
1
+ {"version":3,"sources":["../../src/codegen/cli.ts"],"names":["args","resolve","readFileSync"],"mappings":"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","file":"cli.cjs","sourcesContent":["#!/usr/bin/env node\n\nimport { readFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport type { ToolDefinition } from \"../types.js\";\n\nconst args = process.argv.slice(2);\nconst command = args[0];\n\nif (command === \"codegen\") {\n runCodegen(args.slice(1));\n} else if (command === \"preview\") {\n runPreview(args.slice(1));\n} else {\n console.log(\"Usage:\");\n console.log(\" synapse codegen Generate TypeScript types from tool schemas\");\n console.log(\" synapse preview Run a standalone preview of an MCP app with UI\");\n process.exit(command === \"--help\" || command === \"-h\" ? 0 : 1);\n}\n\n// ---------------------------------------------------------------------------\n// codegen\n// ---------------------------------------------------------------------------\n\nasync function runCodegen(args: string[]): Promise<void> {\n const { readFromManifest, readFromSchemaDir, readFromServer } = await import(\n \"./schema-reader.js\"\n );\n const { generateTypes } = await import(\"./type-generator.js\");\n const { writeOutput } = await import(\"./writer.js\");\n\n const flags = parseFlags(args, [\"from-manifest\", \"from-server\", \"from-schema\", \"out\", \"app\"]);\n\n if (!flags[\"from-manifest\"] && !flags[\"from-server\"] && !flags[\"from-schema\"]) {\n console.error(\"Usage:\");\n console.error(\n \" synapse codegen --from-manifest ./manifest.json [--out ./types.ts] [--app name]\",\n );\n console.error(\" synapse codegen --from-server http://localhost:3000/mcp [--out ./types.ts]\");\n console.error(\" synapse codegen --from-schema ./schemas/ [--out ./types.ts]\");\n process.exit(1);\n }\n\n try {\n let tools: ToolDefinition[];\n let appName = flags.app;\n\n if (flags[\"from-manifest\"]) {\n const manifestPath = resolve(flags[\"from-manifest\"]);\n tools = readFromManifest(manifestPath);\n if (!appName) {\n const raw = JSON.parse(readFileSync(manifestPath, \"utf-8\"));\n appName = raw.name ?? \"app\";\n }\n } else if (flags[\"from-server\"]) {\n tools = await readFromServer(flags[\"from-server\"]);\n appName = appName ?? \"app\";\n } else {\n tools = readFromSchemaDir(resolve(flags[\"from-schema\"] as string));\n appName = appName ?? \"app\";\n }\n\n if (tools.length === 0) console.error(\"Warning: No tools found\");\n\n const output = generateTypes(tools, appName ?? \"app\");\n const outPath = resolve(flags.out ?? \"src/generated/types.ts\");\n writeOutput(output, outPath);\n console.log(`Generated ${tools.length} tool types -> ${outPath}`);\n } catch (err) {\n console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);\n process.exit(1);\n }\n}\n\n// ---------------------------------------------------------------------------\n// preview\n// ---------------------------------------------------------------------------\n\nasync function runPreview(args: string[]): Promise<void> {\n const { startPreview } = await import(\"../preview/server.js\");\n\n const flags = parseFlags(args, [\"server\", \"ui\", \"server-port\", \"ui-port\", \"port\"]);\n\n if (!flags.server || !flags.ui) {\n console.error(\"Usage:\");\n console.error(\n ' synapse preview --server \"uv run uvicorn mcp_hello.server:app --port 8001\" --ui ./ui',\n );\n console.error(\"\");\n console.error(\"Options:\");\n console.error(\" --server <cmd> Shell command to start the MCP server (HTTP mode)\");\n console.error(\" --ui <path> Path to UI directory (must have package.json)\");\n console.error(\" --server-port <port> MCP server port (default: 8001)\");\n console.error(\" --ui-port <port> Vite dev server port (default: 5173)\");\n console.error(\" --port <port> Preview harness port (default: 5180)\");\n process.exit(1);\n }\n\n await startPreview({\n serverCmd: flags.server,\n uiDir: flags.ui,\n serverPort: Number(flags[\"server-port\"] ?? 8001),\n uiPort: Number(flags[\"ui-port\"] ?? 5173),\n previewPort: Number(flags.port ?? 5180),\n });\n}\n\n// ---------------------------------------------------------------------------\n// helpers\n// ---------------------------------------------------------------------------\n\nfunction parseFlags(args: string[], known: string[]): Record<string, string> {\n const flags: Record<string, string> = {};\n for (let i = 0; i < args.length; i++) {\n const key = args[i].replace(/^--/, \"\");\n if (known.includes(key) && i + 1 < args.length) {\n flags[key] = args[++i];\n }\n }\n return flags;\n}\n"]}
@@ -1,51 +1,51 @@
1
1
  #!/usr/bin/env node
2
- import { readFromManifest, readFromServer, readFromSchemaDir, generateTypes } from '../chunk-M4I222LB.js';
3
- import { readFileSync, mkdirSync, writeFileSync } from 'fs';
4
- import { resolve, dirname } from 'path';
2
+ import { readFileSync } from 'fs';
3
+ import { resolve } from 'path';
5
4
 
6
- function writeOutput(content, outputPath) {
7
- mkdirSync(dirname(outputPath), { recursive: true });
8
- writeFileSync(outputPath, content, "utf-8");
5
+ var args = process.argv.slice(2);
6
+ var command = args[0];
7
+ if (command === "codegen") {
8
+ runCodegen(args.slice(1));
9
+ } else if (command === "preview") {
10
+ runPreview(args.slice(1));
11
+ } else {
12
+ console.log("Usage:");
13
+ console.log(" synapse codegen Generate TypeScript types from tool schemas");
14
+ console.log(" synapse preview Run a standalone preview of an MCP app with UI");
15
+ process.exit(command === "--help" || command === "-h" ? 0 : 1);
9
16
  }
10
-
11
- // src/codegen/cli.ts
12
- async function main() {
13
- const args = process.argv.slice(2);
14
- if (args[0] === "codegen") args.shift();
15
- const flags = parseFlags(args);
16
- if (!flags.fromManifest && !flags.fromServer && !flags.fromSchema) {
17
- console.error("Error: Specify a source with --from-manifest, --from-server, or --from-schema");
18
- console.error("");
17
+ async function runCodegen(args2) {
18
+ const { readFromManifest, readFromSchemaDir, readFromServer } = await import('../schema-reader-776246MJ.js');
19
+ const { generateTypes } = await import('../type-generator-MZ4X4DE5.js');
20
+ const { writeOutput } = await import('../writer-ZNBXYUYC.js');
21
+ const flags = parseFlags(args2, ["from-manifest", "from-server", "from-schema", "out", "app"]);
22
+ if (!flags["from-manifest"] && !flags["from-server"] && !flags["from-schema"]) {
19
23
  console.error("Usage:");
20
24
  console.error(
21
- " synapse codegen --from-manifest ./manifest.json [--out ./types.ts] [--app my-app]"
22
- );
23
- console.error(
24
- " synapse codegen --from-server http://localhost:3000/mcp [--out ./types.ts] [--app my-app]"
25
+ " synapse codegen --from-manifest ./manifest.json [--out ./types.ts] [--app name]"
25
26
  );
26
- console.error(" synapse codegen --from-schema ./schemas/ [--out ./types.ts] [--app my-app]");
27
+ console.error(" synapse codegen --from-server http://localhost:3000/mcp [--out ./types.ts]");
28
+ console.error(" synapse codegen --from-schema ./schemas/ [--out ./types.ts]");
27
29
  process.exit(1);
28
30
  }
29
31
  try {
30
32
  let tools;
31
33
  let appName = flags.app;
32
- if (flags.fromManifest) {
33
- const manifestPath = resolve(flags.fromManifest);
34
+ if (flags["from-manifest"]) {
35
+ const manifestPath = resolve(flags["from-manifest"]);
34
36
  tools = readFromManifest(manifestPath);
35
37
  if (!appName) {
36
38
  const raw = JSON.parse(readFileSync(manifestPath, "utf-8"));
37
39
  appName = raw.name ?? "app";
38
40
  }
39
- } else if (flags.fromServer) {
40
- tools = await readFromServer(flags.fromServer);
41
+ } else if (flags["from-server"]) {
42
+ tools = await readFromServer(flags["from-server"]);
41
43
  appName = appName ?? "app";
42
44
  } else {
43
- tools = readFromSchemaDir(resolve(flags.fromSchema));
45
+ tools = readFromSchemaDir(resolve(flags["from-schema"]));
44
46
  appName = appName ?? "app";
45
47
  }
46
- if (tools.length === 0) {
47
- console.error("Warning: No tools found in source");
48
- }
48
+ if (tools.length === 0) console.error("Warning: No tools found");
49
49
  const output = generateTypes(tools, appName ?? "app");
50
50
  const outPath = resolve(flags.out ?? "src/generated/types.ts");
51
51
  writeOutput(output, outPath);
@@ -55,29 +55,40 @@ async function main() {
55
55
  process.exit(1);
56
56
  }
57
57
  }
58
- function parseFlags(args) {
58
+ async function runPreview(args2) {
59
+ const { startPreview } = await import('../server-RUCX2TIB.js');
60
+ const flags = parseFlags(args2, ["server", "ui", "server-port", "ui-port", "port"]);
61
+ if (!flags.server || !flags.ui) {
62
+ console.error("Usage:");
63
+ console.error(
64
+ ' synapse preview --server "uv run uvicorn mcp_hello.server:app --port 8001" --ui ./ui'
65
+ );
66
+ console.error("");
67
+ console.error("Options:");
68
+ console.error(" --server <cmd> Shell command to start the MCP server (HTTP mode)");
69
+ console.error(" --ui <path> Path to UI directory (must have package.json)");
70
+ console.error(" --server-port <port> MCP server port (default: 8001)");
71
+ console.error(" --ui-port <port> Vite dev server port (default: 5173)");
72
+ console.error(" --port <port> Preview harness port (default: 5180)");
73
+ process.exit(1);
74
+ }
75
+ await startPreview({
76
+ serverCmd: flags.server,
77
+ uiDir: flags.ui,
78
+ serverPort: Number(flags["server-port"] ?? 8001),
79
+ uiPort: Number(flags["ui-port"] ?? 5173),
80
+ previewPort: Number(flags.port ?? 5180)
81
+ });
82
+ }
83
+ function parseFlags(args2, known) {
59
84
  const flags = {};
60
- for (let i = 0; i < args.length; i++) {
61
- switch (args[i]) {
62
- case "--from-manifest":
63
- flags.fromManifest = args[++i];
64
- break;
65
- case "--from-server":
66
- flags.fromServer = args[++i];
67
- break;
68
- case "--from-schema":
69
- flags.fromSchema = args[++i];
70
- break;
71
- case "--out":
72
- flags.out = args[++i];
73
- break;
74
- case "--app":
75
- flags.app = args[++i];
76
- break;
85
+ for (let i = 0; i < args2.length; i++) {
86
+ const key = args2[i].replace(/^--/, "");
87
+ if (known.includes(key) && i + 1 < args2.length) {
88
+ flags[key] = args2[++i];
77
89
  }
78
90
  }
79
91
  return flags;
80
92
  }
81
- main();
82
93
  //# sourceMappingURL=cli.js.map
83
94
  //# sourceMappingURL=cli.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/codegen/writer.ts","../../src/codegen/cli.ts"],"names":[],"mappings":"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","file":"cli.js","sourcesContent":["import { mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname } from \"node:path\";\n\n/**\n * Write generated TypeScript to a file, creating parent directories as needed.\n */\nexport function writeOutput(content: string, outputPath: string): void {\n mkdirSync(dirname(outputPath), { recursive: true });\n writeFileSync(outputPath, content, \"utf-8\");\n}\n","#!/usr/bin/env node\n\nimport { readFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport type { ToolDefinition } from \"../types.js\";\nimport { readFromManifest, readFromSchemaDir, readFromServer } from \"./schema-reader.js\";\nimport { generateTypes } from \"./type-generator.js\";\nimport { writeOutput } from \"./writer.js\";\n\nasync function main(): Promise<void> {\n const args = process.argv.slice(2);\n\n // Strip \"codegen\" subcommand if present\n if (args[0] === \"codegen\") args.shift();\n\n const flags = parseFlags(args);\n\n if (!flags.fromManifest && !flags.fromServer && !flags.fromSchema) {\n console.error(\"Error: Specify a source with --from-manifest, --from-server, or --from-schema\");\n console.error(\"\");\n console.error(\"Usage:\");\n console.error(\n \" synapse codegen --from-manifest ./manifest.json [--out ./types.ts] [--app my-app]\",\n );\n console.error(\n \" synapse codegen --from-server http://localhost:3000/mcp [--out ./types.ts] [--app my-app]\",\n );\n console.error(\" synapse codegen --from-schema ./schemas/ [--out ./types.ts] [--app my-app]\");\n process.exit(1);\n }\n\n try {\n let tools: ToolDefinition[];\n let appName = flags.app;\n\n if (flags.fromManifest) {\n const manifestPath = resolve(flags.fromManifest);\n tools = readFromManifest(manifestPath);\n if (!appName) {\n const raw = JSON.parse(readFileSync(manifestPath, \"utf-8\"));\n appName = raw.name ?? \"app\";\n }\n } else if (flags.fromServer) {\n tools = await readFromServer(flags.fromServer);\n appName = appName ?? \"app\";\n } else {\n tools = readFromSchemaDir(resolve(flags.fromSchema as string));\n appName = appName ?? \"app\";\n }\n\n if (tools.length === 0) {\n console.error(\"Warning: No tools found in source\");\n }\n\n const output = generateTypes(tools, appName ?? \"app\");\n const outPath = resolve(flags.out ?? \"src/generated/types.ts\");\n writeOutput(output, outPath);\n\n console.log(`Generated ${tools.length} tool types -> ${outPath}`);\n } catch (err) {\n console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);\n process.exit(1);\n }\n}\n\ninterface Flags {\n fromManifest?: string;\n fromServer?: string;\n fromSchema?: string;\n out?: string;\n app?: string;\n}\n\nfunction parseFlags(args: string[]): Flags {\n const flags: Flags = {};\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--from-manifest\":\n flags.fromManifest = args[++i];\n break;\n case \"--from-server\":\n flags.fromServer = args[++i];\n break;\n case \"--from-schema\":\n flags.fromSchema = args[++i];\n break;\n case \"--out\":\n flags.out = args[++i];\n break;\n case \"--app\":\n flags.app = args[++i];\n break;\n }\n }\n return flags;\n}\n\nmain();\n"]}
1
+ {"version":3,"sources":["../../src/codegen/cli.ts"],"names":["args"],"mappings":"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","file":"cli.js","sourcesContent":["#!/usr/bin/env node\n\nimport { readFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport type { ToolDefinition } from \"../types.js\";\n\nconst args = process.argv.slice(2);\nconst command = args[0];\n\nif (command === \"codegen\") {\n runCodegen(args.slice(1));\n} else if (command === \"preview\") {\n runPreview(args.slice(1));\n} else {\n console.log(\"Usage:\");\n console.log(\" synapse codegen Generate TypeScript types from tool schemas\");\n console.log(\" synapse preview Run a standalone preview of an MCP app with UI\");\n process.exit(command === \"--help\" || command === \"-h\" ? 0 : 1);\n}\n\n// ---------------------------------------------------------------------------\n// codegen\n// ---------------------------------------------------------------------------\n\nasync function runCodegen(args: string[]): Promise<void> {\n const { readFromManifest, readFromSchemaDir, readFromServer } = await import(\n \"./schema-reader.js\"\n );\n const { generateTypes } = await import(\"./type-generator.js\");\n const { writeOutput } = await import(\"./writer.js\");\n\n const flags = parseFlags(args, [\"from-manifest\", \"from-server\", \"from-schema\", \"out\", \"app\"]);\n\n if (!flags[\"from-manifest\"] && !flags[\"from-server\"] && !flags[\"from-schema\"]) {\n console.error(\"Usage:\");\n console.error(\n \" synapse codegen --from-manifest ./manifest.json [--out ./types.ts] [--app name]\",\n );\n console.error(\" synapse codegen --from-server http://localhost:3000/mcp [--out ./types.ts]\");\n console.error(\" synapse codegen --from-schema ./schemas/ [--out ./types.ts]\");\n process.exit(1);\n }\n\n try {\n let tools: ToolDefinition[];\n let appName = flags.app;\n\n if (flags[\"from-manifest\"]) {\n const manifestPath = resolve(flags[\"from-manifest\"]);\n tools = readFromManifest(manifestPath);\n if (!appName) {\n const raw = JSON.parse(readFileSync(manifestPath, \"utf-8\"));\n appName = raw.name ?? \"app\";\n }\n } else if (flags[\"from-server\"]) {\n tools = await readFromServer(flags[\"from-server\"]);\n appName = appName ?? \"app\";\n } else {\n tools = readFromSchemaDir(resolve(flags[\"from-schema\"] as string));\n appName = appName ?? \"app\";\n }\n\n if (tools.length === 0) console.error(\"Warning: No tools found\");\n\n const output = generateTypes(tools, appName ?? \"app\");\n const outPath = resolve(flags.out ?? \"src/generated/types.ts\");\n writeOutput(output, outPath);\n console.log(`Generated ${tools.length} tool types -> ${outPath}`);\n } catch (err) {\n console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);\n process.exit(1);\n }\n}\n\n// ---------------------------------------------------------------------------\n// preview\n// ---------------------------------------------------------------------------\n\nasync function runPreview(args: string[]): Promise<void> {\n const { startPreview } = await import(\"../preview/server.js\");\n\n const flags = parseFlags(args, [\"server\", \"ui\", \"server-port\", \"ui-port\", \"port\"]);\n\n if (!flags.server || !flags.ui) {\n console.error(\"Usage:\");\n console.error(\n ' synapse preview --server \"uv run uvicorn mcp_hello.server:app --port 8001\" --ui ./ui',\n );\n console.error(\"\");\n console.error(\"Options:\");\n console.error(\" --server <cmd> Shell command to start the MCP server (HTTP mode)\");\n console.error(\" --ui <path> Path to UI directory (must have package.json)\");\n console.error(\" --server-port <port> MCP server port (default: 8001)\");\n console.error(\" --ui-port <port> Vite dev server port (default: 5173)\");\n console.error(\" --port <port> Preview harness port (default: 5180)\");\n process.exit(1);\n }\n\n await startPreview({\n serverCmd: flags.server,\n uiDir: flags.ui,\n serverPort: Number(flags[\"server-port\"] ?? 8001),\n uiPort: Number(flags[\"ui-port\"] ?? 5173),\n previewPort: Number(flags.port ?? 5180),\n });\n}\n\n// ---------------------------------------------------------------------------\n// helpers\n// ---------------------------------------------------------------------------\n\nfunction parseFlags(args: string[], known: string[]): Record<string, string> {\n const flags: Record<string, string> = {};\n for (let i = 0; i < args.length; i++) {\n const key = args[i].replace(/^--/, \"\");\n if (known.includes(key) && i + 1 < args.length) {\n flags[key] = args[++i];\n }\n }\n return flags;\n}\n"]}
@@ -1,24 +1,25 @@
1
1
  'use strict';
2
2
 
3
- var chunkAW3YIXLE_cjs = require('../chunk-AW3YIXLE.cjs');
3
+ var chunk42N5BB5O_cjs = require('../chunk-42N5BB5O.cjs');
4
+ var chunkHLT5UBJF_cjs = require('../chunk-HLT5UBJF.cjs');
4
5
 
5
6
 
6
7
 
7
- Object.defineProperty(exports, "generateTypes", {
8
- enumerable: true,
9
- get: function () { return chunkAW3YIXLE_cjs.generateTypes; }
10
- });
11
8
  Object.defineProperty(exports, "readFromManifest", {
12
9
  enumerable: true,
13
- get: function () { return chunkAW3YIXLE_cjs.readFromManifest; }
10
+ get: function () { return chunk42N5BB5O_cjs.readFromManifest; }
14
11
  });
15
12
  Object.defineProperty(exports, "readFromSchemaDir", {
16
13
  enumerable: true,
17
- get: function () { return chunkAW3YIXLE_cjs.readFromSchemaDir; }
14
+ get: function () { return chunk42N5BB5O_cjs.readFromSchemaDir; }
18
15
  });
19
16
  Object.defineProperty(exports, "readFromServer", {
20
17
  enumerable: true,
21
- get: function () { return chunkAW3YIXLE_cjs.readFromServer; }
18
+ get: function () { return chunk42N5BB5O_cjs.readFromServer; }
19
+ });
20
+ Object.defineProperty(exports, "generateTypes", {
21
+ enumerable: true,
22
+ get: function () { return chunkHLT5UBJF_cjs.generateTypes; }
22
23
  });
23
24
  //# sourceMappingURL=index.cjs.map
24
25
  //# sourceMappingURL=index.cjs.map
@@ -1,3 +1,4 @@
1
- export { generateTypes, readFromManifest, readFromSchemaDir, readFromServer } from '../chunk-M4I222LB.js';
1
+ export { readFromManifest, readFromSchemaDir, readFromServer } from '../chunk-YWX3D24J.js';
2
+ export { generateTypes } from '../chunk-JKHGWDZI.js';
2
3
  //# sourceMappingURL=index.js.map
3
4
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,3 @@
1
+ export { readFromManifest, readFromSchemaDir, readFromServer } from './chunk-YWX3D24J.js';
2
+ //# sourceMappingURL=schema-reader-776246MJ.js.map
3
+ //# sourceMappingURL=schema-reader-776246MJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"schema-reader-776246MJ.js"}
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ var chunk42N5BB5O_cjs = require('./chunk-42N5BB5O.cjs');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "readFromManifest", {
8
+ enumerable: true,
9
+ get: function () { return chunk42N5BB5O_cjs.readFromManifest; }
10
+ });
11
+ Object.defineProperty(exports, "readFromSchemaDir", {
12
+ enumerable: true,
13
+ get: function () { return chunk42N5BB5O_cjs.readFromSchemaDir; }
14
+ });
15
+ Object.defineProperty(exports, "readFromServer", {
16
+ enumerable: true,
17
+ get: function () { return chunk42N5BB5O_cjs.readFromServer; }
18
+ });
19
+ //# sourceMappingURL=schema-reader-B6LTGBMJ.cjs.map
20
+ //# sourceMappingURL=schema-reader-B6LTGBMJ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"schema-reader-B6LTGBMJ.cjs"}