@vurb/core 3.2.2 → 3.3.0

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.
@@ -2,7 +2,7 @@
2
2
  * Template Constants — Version pins for generated package.json
3
3
  * @module
4
4
  */
5
- export declare const CORE_VERSION = "^2.12.0";
5
+ export declare const CORE_VERSION = "^3.2.0";
6
6
  export declare const TESTING_VERSION = "^1.0.0";
7
7
  export declare const MCP_SDK_VERSION = "^1.12.1";
8
8
  export declare const ZOD_VERSION = "^3.25.1";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,YAAY,YAAY,CAAC;AACtC,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,WAAW,YAAY,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,YAAY,WAAW,CAAC;AACrC,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,WAAW,YAAY,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * Template Constants — Version pins for generated package.json
3
3
  * @module
4
4
  */
5
- export const CORE_VERSION = '^2.12.0';
5
+ export const CORE_VERSION = '^3.2.0';
6
6
  export const TESTING_VERSION = '^1.0.0';
7
7
  export const MCP_SDK_VERSION = '^1.12.1';
8
8
  export const ZOD_VERSION = '^3.25.1';
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/cli/templates/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC;AACtC,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACxC,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AACzC,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/cli/templates/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;AACrC,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACxC,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AACzC,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,2DAA2D;AAC3D,wBAAgB,MAAM,IAAI,MAAM,CAa/B;AAED,qEAAqE;AACrE,wBAAgB,SAAS,IAAI,MAAM,CA8BlC;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAyItD"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,2DAA2D;AAC3D,wBAAgB,MAAM,IAAI,MAAM,CAa/B;AAED,qEAAqE;AACrE,wBAAgB,SAAS,IAAI,MAAM,CA8BlC;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAgEtD"}
@@ -78,7 +78,7 @@ await startServer({
78
78
  });
79
79
  `;
80
80
  }
81
- // Streamable HTTP transport — manual setup required (startServer is stdio-only)
81
+ // Streamable HTTP transport — startServer handles all HTTP plumbing
82
82
  return `/**
83
83
  * Server Bootstrap — Vurb with Streamable HTTP Transport
84
84
  *
@@ -86,10 +86,7 @@ await startServer({
86
86
  * Drop a file, it becomes a tool.
87
87
  */
88
88
  import { fileURLToPath } from 'node:url';
89
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
90
- import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
91
- import { createServer } from 'node:http';
92
- import { autoDiscover, PromptRegistry } from '@vurb/core';
89
+ import { autoDiscover, PromptRegistry, startServer } from '@vurb/core';
93
90
  import { createContext } from './context.js';
94
91
  import { f } from './vurb.js';
95
92
  import { GreetPrompt } from './prompts/greet.js';
@@ -102,84 +99,14 @@ const prompts = new PromptRegistry();
102
99
  await autoDiscover(registry, fileURLToPath(new URL('./tools', import.meta.url)));
103
100
  prompts.register(GreetPrompt);
104
101
 
105
- // ── Server ───────────────────────────────────────────────
106
- const server = new McpServer(
107
- { name: '${config.name}', version: '0.1.0' },
108
- );
109
-
110
- registry.attachToServer(server, {
111
- contextFactory: () => createContext(),
102
+ // ── Start ────────────────────────────────────────────────
103
+ await startServer({
104
+ name: '${config.name}',
105
+ registry,
112
106
  prompts,
113
- });
114
-
115
- // ── Transport ────────────────────────────────────────────
116
- const PORT = Number(process.env['PORT'] ?? 3001);
117
- const sessions = new Map<string, StreamableHTTPServerTransport>();
118
-
119
- const httpServer = createServer(async (req, res) => {
120
- try {
121
- const url = new URL(req.url ?? '/', \`http://localhost:\${PORT}\`);
122
-
123
- if (url.pathname !== '/mcp') {
124
- res.writeHead(404).end();
125
- return;
126
- }
127
-
128
- if (req.method === 'POST') {
129
- // Parse JSON body
130
- const chunks: Buffer[] = [];
131
- for await (const chunk of req) chunks.push(chunk as Buffer);
132
- const body = JSON.parse(Buffer.concat(chunks).toString());
133
-
134
- const sessionId = req.headers['mcp-session-id'] as string | undefined;
135
-
136
- // Existing session — route to its transport
137
- if (sessionId && sessions.has(sessionId)) {
138
- const transport = sessions.get(sessionId)!;
139
- await transport.handleRequest(req, res, body);
140
- return;
141
- }
142
-
143
- // New session — create transport
144
- const transport = new StreamableHTTPServerTransport({
145
- sessionIdGenerator: () => crypto.randomUUID(),
146
- onsessioninitialized: (id) => {
147
- sessions.set(id, transport);
148
- },
149
- });
150
- transport.onclose = () => {
151
- const id = [...sessions.entries()].find(([, t]) => t === transport)?.[0];
152
- if (id) sessions.delete(id);
153
- };
154
- await server.connect(transport);
155
- await transport.handleRequest(req, res, body);
156
- } else if (req.method === 'GET') {
157
- const sessionId = req.headers['mcp-session-id'] as string | undefined;
158
- if (sessionId && sessions.has(sessionId)) {
159
- const transport = sessions.get(sessionId)!;
160
- await transport.handleRequest(req, res);
161
- } else {
162
- res.writeHead(400).end('Missing or invalid session');
163
- }
164
- } else if (req.method === 'DELETE') {
165
- const sessionId = req.headers['mcp-session-id'] as string | undefined;
166
- if (sessionId && sessions.has(sessionId)) {
167
- const transport = sessions.get(sessionId)!;
168
- await transport.handleRequest(req, res);
169
- } else {
170
- res.writeHead(400).end('Missing or invalid session');
171
- }
172
- } else {
173
- res.writeHead(405).end();
174
- }
175
- } catch (err) {
176
- console.error('[Vurb] Unhandled error in HTTP handler:', err);
177
- if (!res.headersSent) res.writeHead(500).end();
178
- }
179
- });
180
-
181
- httpServer.listen(PORT, () => {
182
- console.error(\`⚡ Vurb server on http://localhost:\${PORT}/mcp\`);
107
+ contextFactory: () => createContext(),
108
+ transport: 'http',
109
+ port: Number(process.env['PORT'] ?? 3001),
183
110
  });
184
111
  `;
185
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/cli/templates/core.ts"],"names":[],"mappings":"AAQA,2DAA2D;AAC3D,MAAM,UAAU,MAAM;IAClB,OAAO;;;;;;;;;;;CAWV,CAAC;AACF,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,SAAS;IACrB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BV,CAAC;AACF,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,QAAQ,CAAC,MAAqB;IAC1C,IAAI,MAAM,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QAC/B,oDAAoD;QACpD,OAAO;;;;;;;;;;;;;;;;;;;;;;aAsBF,MAAM,CAAC,IAAI;;;;;CAKvB,CAAC;IACE,CAAC;IAED,gFAAgF;IAChF,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;eAyBI,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6EzB,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/cli/templates/core.ts"],"names":[],"mappings":"AAQA,2DAA2D;AAC3D,MAAM,UAAU,MAAM;IAClB,OAAO;;;;;;;;;;;CAWV,CAAC;AACF,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,SAAS;IACrB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BV,CAAC;AACF,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,QAAQ,CAAC,MAAqB;IAC1C,IAAI,MAAM,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QAC/B,oDAAoD;QACpD,OAAO;;;;;;;;;;;;;;;;;;;;;;aAsBF,MAAM,CAAC,IAAI;;;;;CAKvB,CAAC;IACE,CAAC;IAED,oEAAoE;IACpE,OAAO;;;;;;;;;;;;;;;;;;;;;;aAsBE,MAAM,CAAC,IAAI;;;;;;;CAOvB,CAAC;AACF,CAAC"}
@@ -8,5 +8,5 @@ export type { AutoDiscoverOptions } from './autoDiscover.js';
8
8
  export { createDevServer, cacheBustUrl } from './DevServer.js';
9
9
  export type { DevServerConfig, DevServer } from './DevServer.js';
10
10
  export { startServer } from './startServer.js';
11
- export type { StartServerOptions, StartServerResult } from './startServer.js';
11
+ export type { StartServerOptions, StartServerResult, ServerTransport } from './startServer.js';
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACH,cAAc,EACd,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,gBAAgB,GAC3D,MAAM,uBAAuB,CAAC;AAG/B,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAGlG,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG7D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC/D,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACH,cAAc,EACd,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,gBAAgB,GAC3D,MAAM,uBAAuB,CAAC;AAG/B,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAGlG,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG7D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC/D,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
@@ -6,15 +6,22 @@
6
6
  * 2. Attaches the tool registry with telemetry
7
7
  * 3. Builds the topology for Inspector TUI auto-discovery
8
8
  * 4. Starts the Telemetry Bus (IPC)
9
- * 5. Connects the stdio transport
9
+ * 5. Connects the transport (stdio or Streamable HTTP)
10
+ *
11
+ * Supports both `stdio` and `http` transports:
12
+ * - `stdio` (default): connects via stdin/stdout
13
+ * - `http`: starts an HTTP server with session management
10
14
  *
11
15
  * @module
12
16
  */
17
+ import { type Server as HttpServer } from 'node:http';
13
18
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
14
19
  import { type AttachOptions } from './ServerAttachment.js';
15
20
  import { type TelemetryBusInstance } from '../observability/TelemetryBus.js';
16
21
  import type { PromptRegistry } from '../prompt/PromptRegistry.js';
17
22
  import type { ProgressSink } from '../core/execution/ProgressHelper.js';
23
+ /** Transport layer for the server. */
24
+ export type ServerTransport = 'stdio' | 'http';
18
25
  /** Options for `startServer`. */
19
26
  export interface StartServerOptions<TContext> {
20
27
  /** Server display name (shown in MCP clients and Inspector). */
@@ -29,6 +36,18 @@ export interface StartServerOptions<TContext> {
29
36
  readonly contextFactory?: (extra: unknown) => TContext | Promise<TContext>;
30
37
  /** Enable Inspector TUI telemetry (default: true). */
31
38
  readonly telemetry?: boolean;
39
+ /**
40
+ * Transport layer: `'stdio'` (default) or `'http'` (Streamable HTTP).
41
+ *
42
+ * - `stdio` — connects via stdin/stdout (for Cursor, Claude Desktop)
43
+ * - `http` — starts an HTTP server with session management on `/mcp`
44
+ */
45
+ readonly transport?: ServerTransport;
46
+ /**
47
+ * Port for the HTTP server (only used when `transport: 'http'`).
48
+ * @default 3001
49
+ */
50
+ readonly port?: number;
32
51
  /** Extra attach options (debug, tracing, zeroTrust, etc.). */
33
52
  readonly attach?: Omit<AttachOptions<TContext>, 'contextFactory' | 'prompts' | 'telemetry'>;
34
53
  }
@@ -53,6 +72,8 @@ export interface StartServerResult {
53
72
  readonly server: InstanceType<typeof Server> | null;
54
73
  /** The Telemetry Bus (if enabled). */
55
74
  readonly bus?: TelemetryBusInstance;
75
+ /** The HTTP server instance (only present when `transport: 'http'`). */
76
+ readonly httpServer?: HttpServer;
56
77
  /** Gracefully shut down everything. */
57
78
  readonly close: () => Promise<void>;
58
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"startServer.d.ts","sourceRoot":"","sources":["../../src/server/startServer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,EAAkB,KAAK,aAAa,EAAwB,MAAM,uBAAuB,CAAC;AACjG,OAAO,EAAsB,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACjG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAMxE,iCAAiC;AACjC,MAAM,WAAW,kBAAkB,CAAC,QAAQ;IACxC,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,4CAA4C;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B,mCAAmC;IACnC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE5C,gCAAgC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE5C,6CAA6C;IAC7C,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE3E,sDAAsD;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAE7B,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,SAAS,GAAG,WAAW,CAAC,CAAC;CAC/F;AAED;;;GAGG;AACH,UAAU,cAAc,CAAC,QAAQ;IAC7B,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC;IACzC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpF,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9I;AAED,qDAAqD;AACrD,UAAU,eAAe;IACrB,OAAO,IAAI,MAAM,CAAC;IAClB,cAAc,IAAI,MAAM,EAAE,CAAC;IAC3B,mBAAmB,IAAI,OAAO,CAAC;CAClC;AAED,wCAAwC;AACxC,MAAM,WAAW,iBAAiB;IAC9B,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,MAAM,CAAC,GAAG,IAAI,CAAC;IACpD,sCAAsC;IACtC,QAAQ,CAAC,GAAG,CAAC,EAAE,oBAAoB,CAAC;IACpC,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EACtC,OAAO,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GACtC,OAAO,CAAC,iBAAiB,CAAC,CAqL5B"}
1
+ {"version":3,"file":"startServer.d.ts","sourceRoot":"","sources":["../../src/server/startServer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAoC,KAAK,MAAM,IAAI,UAAU,EAAE,MAAM,WAAW,CAAC;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAGnE,OAAO,EAAkB,KAAK,aAAa,EAAwB,MAAM,uBAAuB,CAAC;AACjG,OAAO,EAAsB,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACjG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAMxE,sCAAsC;AACtC,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,CAAC;AAE/C,iCAAiC;AACjC,MAAM,WAAW,kBAAkB,CAAC,QAAQ;IACxC,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,4CAA4C;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B,mCAAmC;IACnC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE5C,gCAAgC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE5C,6CAA6C;IAC7C,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE3E,sDAAsD;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;IAErC;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,SAAS,GAAG,WAAW,CAAC,CAAC;CAC/F;AAED;;;GAGG;AACH,UAAU,cAAc,CAAC,QAAQ;IAC7B,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC;IACzC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpF,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9I;AAED,qDAAqD;AACrD,UAAU,eAAe;IACrB,OAAO,IAAI,MAAM,CAAC;IAClB,cAAc,IAAI,MAAM,EAAE,CAAC;IAC3B,mBAAmB,IAAI,OAAO,CAAC;CAClC;AAED,wCAAwC;AACxC,MAAM,WAAW,iBAAiB;IAC9B,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,MAAM,CAAC,GAAG,IAAI,CAAC;IACpD,sCAAsC;IACtC,QAAQ,CAAC,GAAG,CAAC,EAAE,oBAAoB,CAAC;IACpC,wEAAwE;IACxE,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EACtC,OAAO,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GACtC,OAAO,CAAC,iBAAiB,CAAC,CAwQ5B"}
@@ -6,12 +6,18 @@
6
6
  * 2. Attaches the tool registry with telemetry
7
7
  * 3. Builds the topology for Inspector TUI auto-discovery
8
8
  * 4. Starts the Telemetry Bus (IPC)
9
- * 5. Connects the stdio transport
9
+ * 5. Connects the transport (stdio or Streamable HTTP)
10
+ *
11
+ * Supports both `stdio` and `http` transports:
12
+ * - `stdio` (default): connects via stdin/stdout
13
+ * - `http`: starts an HTTP server with session management
10
14
  *
11
15
  * @module
12
16
  */
17
+ import { createServer as createHttpServer } from 'node:http';
13
18
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
14
19
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
20
+ import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
15
21
  import { attachToServer, _missingContextProxy } from './ServerAttachment.js';
16
22
  import { createTelemetryBus } from '../observability/TelemetryBus.js';
17
23
  // ============================================================================
@@ -38,7 +44,7 @@ import { createTelemetryBus } from '../observability/TelemetryBus.js';
38
44
  * ```
39
45
  */
40
46
  export async function startServer(options) {
41
- const { name, version = '1.0.0', registry, prompts, contextFactory, telemetry = true, attach = {}, } = options;
47
+ const { name, version = '1.0.0', registry, prompts, contextFactory, telemetry = true, transport = 'stdio', port = 3001, attach = {}, } = options;
42
48
  // ── Vinkius Cloud Edge Detection ─────────────────────────────────────
43
49
  // When running inside a V8 Isolate, the host injects
44
50
  // __vinkius_edge_interceptor into globalThis. If present:
@@ -176,9 +182,96 @@ export async function startServer(options) {
176
182
  ...(prompts ? { prompts } : {}),
177
183
  ...(bus ? { telemetry: bus.emit } : {}),
178
184
  });
179
- // 4. Connect Stdio Transport
180
- const transport = new StdioServerTransport();
181
- await server.connect(transport);
185
+ // 4. Connect Transport
186
+ if (transport === 'http') {
187
+ // ── Streamable HTTP Transport ────────────────────────
188
+ const sessions = new Map();
189
+ const httpServer = createHttpServer(async (req, res) => {
190
+ try {
191
+ const url = new URL(req.url ?? '/', `http://localhost:${port}`);
192
+ if (url.pathname !== '/mcp') {
193
+ res.writeHead(404).end();
194
+ return;
195
+ }
196
+ if (req.method === 'POST') {
197
+ const chunks = [];
198
+ for await (const chunk of req)
199
+ chunks.push(chunk);
200
+ const body = JSON.parse(Buffer.concat(chunks).toString());
201
+ const sessionId = req.headers['mcp-session-id'];
202
+ if (sessionId && sessions.has(sessionId)) {
203
+ const t = sessions.get(sessionId);
204
+ await t.handleRequest(req, res, body);
205
+ return;
206
+ }
207
+ const t = new StreamableHTTPServerTransport({
208
+ sessionIdGenerator: () => crypto.randomUUID(),
209
+ onsessioninitialized: (id) => {
210
+ sessions.set(id, t);
211
+ },
212
+ });
213
+ t.onclose = () => {
214
+ const id = [...sessions.entries()].find(([, s]) => s === t)?.[0];
215
+ if (id)
216
+ sessions.delete(id);
217
+ };
218
+ await server.connect(t);
219
+ await t.handleRequest(req, res, body);
220
+ }
221
+ else if (req.method === 'GET') {
222
+ const sessionId = req.headers['mcp-session-id'];
223
+ if (sessionId && sessions.has(sessionId)) {
224
+ const t = sessions.get(sessionId);
225
+ await t.handleRequest(req, res);
226
+ }
227
+ else {
228
+ res.writeHead(400).end('Missing or invalid session');
229
+ }
230
+ }
231
+ else if (req.method === 'DELETE') {
232
+ const sessionId = req.headers['mcp-session-id'];
233
+ if (sessionId && sessions.has(sessionId)) {
234
+ const t = sessions.get(sessionId);
235
+ await t.handleRequest(req, res);
236
+ }
237
+ else {
238
+ res.writeHead(400).end('Missing or invalid session');
239
+ }
240
+ }
241
+ else {
242
+ res.writeHead(405).end();
243
+ }
244
+ }
245
+ catch (err) {
246
+ console.error('[Vurb] Unhandled error in HTTP handler:', err);
247
+ if (!res.headersSent)
248
+ res.writeHead(500).end();
249
+ }
250
+ });
251
+ httpServer.listen(port, () => {
252
+ process.stderr.write(`⚡ ${name} on http://localhost:${port}/mcp\n`);
253
+ });
254
+ async function close() {
255
+ if (bus)
256
+ await bus.close();
257
+ for (const t of sessions.values()) {
258
+ try {
259
+ await t.close();
260
+ }
261
+ catch { /* best effort */ }
262
+ }
263
+ sessions.clear();
264
+ await new Promise((resolve) => httpServer.close(() => resolve()));
265
+ await server.close();
266
+ }
267
+ const result = { server, httpServer, close };
268
+ if (bus)
269
+ result.bus = bus;
270
+ return result;
271
+ }
272
+ // ── Stdio Transport (default) ────────────────────────────
273
+ const stdioTransport = new StdioServerTransport();
274
+ await server.connect(stdioTransport);
182
275
  process.stderr.write(`⚡ ${name} running on stdio\n`);
183
276
  // 5. Close helper
184
277
  async function close() {
@@ -1 +1 @@
1
- {"version":3,"file":"startServer.js","sourceRoot":"","sources":["../../src/server/startServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"startServer.js","sourceRoot":"","sources":["../../src/server/startServer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vurb/core",
3
- "version": "3.2.2",
3
+ "version": "3.3.0",
4
4
  "description": "MVA (Model-View-Agent) framework for the Model Context Protocol. Structured perception packages with Presenters, cognitive guardrails, self-healing errors, action consolidation, and tRPC-style type safety — so AI agents perceive and act on your data deterministically.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",