@vibebrowser/mcp 0.2.3 → 0.2.5

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.
package/dist/ollama.js ADDED
@@ -0,0 +1,248 @@
1
+ /**
2
+ * Ollama integration — detect, install, pull, serve.
3
+ *
4
+ * Provides a cross-platform (macOS / Linux / Windows) one-liner experience:
5
+ * npx --yes --package @vibebrowser/mcp vibebrowser-mcp serve qwen3.5
6
+ */
7
+ import { execSync, spawn } from 'child_process';
8
+ import { platform } from 'os';
9
+ import { createInterface } from 'readline';
10
+ /* ------------------------------------------------------------------ */
11
+ /* Constants */
12
+ /* ------------------------------------------------------------------ */
13
+ const OLLAMA_API = 'http://127.0.0.1:11434';
14
+ const HEALTH_POLL_MS = 500;
15
+ const HEALTH_TIMEOUT_MS = 15_000;
16
+ /* ------------------------------------------------------------------ */
17
+ /* Helpers */
18
+ /* ------------------------------------------------------------------ */
19
+ function log(msg) {
20
+ console.error(`[vibebrowser-mcp] ${msg}`);
21
+ }
22
+ function debug(msg, opts) {
23
+ if (opts?.debug)
24
+ console.error(`[vibebrowser-mcp:debug] ${msg}`);
25
+ }
26
+ /** Run a command and return trimmed stdout, or null on failure. */
27
+ function tryExec(cmd) {
28
+ try {
29
+ return execSync(cmd, { encoding: 'utf-8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();
30
+ }
31
+ catch {
32
+ return null;
33
+ }
34
+ }
35
+ /* ------------------------------------------------------------------ */
36
+ /* 1. Detection */
37
+ /* ------------------------------------------------------------------ */
38
+ export function isOllamaInstalled() {
39
+ return tryExec('ollama --version') !== null;
40
+ }
41
+ /* ------------------------------------------------------------------ */
42
+ /* 2. Installation */
43
+ /* ------------------------------------------------------------------ */
44
+ async function promptYesNo(question) {
45
+ const rl = createInterface({ input: process.stdin, output: process.stderr });
46
+ return new Promise((resolve) => {
47
+ rl.question(`${question} [Y/n] `, (answer) => {
48
+ rl.close();
49
+ resolve(answer.trim().toLowerCase() !== 'n');
50
+ });
51
+ });
52
+ }
53
+ export async function installOllama(opts) {
54
+ const os = platform();
55
+ if (!opts?.yes) {
56
+ const ok = await promptYesNo('Ollama is not installed. Install it now?');
57
+ if (!ok) {
58
+ log('Aborted. Install Ollama manually: https://ollama.com/download');
59
+ process.exit(1);
60
+ }
61
+ }
62
+ log('Installing Ollama…');
63
+ switch (os) {
64
+ case 'darwin': {
65
+ // Prefer Homebrew, fall back to official script
66
+ const hasBrew = tryExec('brew --version') !== null;
67
+ if (hasBrew) {
68
+ execSync('brew install ollama', { stdio: 'inherit' });
69
+ }
70
+ else {
71
+ execSync('curl -fsSL https://ollama.com/install.sh | sh', { stdio: 'inherit' });
72
+ }
73
+ break;
74
+ }
75
+ case 'linux':
76
+ execSync('curl -fsSL https://ollama.com/install.sh | sh', { stdio: 'inherit' });
77
+ break;
78
+ case 'win32':
79
+ // winget is available on Windows 10 1709+ and Windows 11
80
+ try {
81
+ execSync('winget install Ollama.Ollama --silent --accept-source-agreements --accept-package-agreements', { stdio: 'inherit' });
82
+ }
83
+ catch {
84
+ log('winget install failed. Download Ollama from https://ollama.com/download');
85
+ process.exit(1);
86
+ }
87
+ break;
88
+ default:
89
+ log(`Unsupported platform: ${os}. Install Ollama manually: https://ollama.com/download`);
90
+ process.exit(1);
91
+ }
92
+ // Verify installation
93
+ if (!isOllamaInstalled()) {
94
+ log('Installation succeeded but `ollama` is not on PATH. You may need to restart your terminal.');
95
+ process.exit(1);
96
+ }
97
+ log('Ollama installed ✓');
98
+ }
99
+ /* ------------------------------------------------------------------ */
100
+ /* 3. Server lifecycle */
101
+ /* ------------------------------------------------------------------ */
102
+ async function isOllamaRunning(base = OLLAMA_API) {
103
+ try {
104
+ const res = await fetch(`${base}/api/tags`);
105
+ return res.ok;
106
+ }
107
+ catch {
108
+ return false;
109
+ }
110
+ }
111
+ async function waitForOllama(base = OLLAMA_API, timeoutMs = HEALTH_TIMEOUT_MS) {
112
+ const deadline = Date.now() + timeoutMs;
113
+ while (Date.now() < deadline) {
114
+ if (await isOllamaRunning(base))
115
+ return;
116
+ await new Promise((r) => setTimeout(r, HEALTH_POLL_MS));
117
+ }
118
+ throw new Error(`Ollama API did not become ready within ${timeoutMs / 1000}s`);
119
+ }
120
+ export async function ensureOllamaServing(opts) {
121
+ const port = opts?.port ?? 11434;
122
+ const base = `http://127.0.0.1:${port}`;
123
+ if (await isOllamaRunning(base)) {
124
+ debug('Ollama already running', opts);
125
+ return base;
126
+ }
127
+ log('Starting Ollama server…');
128
+ const env = { ...process.env };
129
+ if (port !== 11434)
130
+ env.OLLAMA_HOST = `0.0.0.0:${port}`;
131
+ const spawnOpts = {
132
+ detached: true,
133
+ stdio: 'ignore',
134
+ env,
135
+ };
136
+ const child = spawn('ollama', ['serve'], spawnOpts);
137
+ child.unref();
138
+ await waitForOllama(base);
139
+ log(`Ollama server ready on ${base}`);
140
+ return base;
141
+ }
142
+ /* ------------------------------------------------------------------ */
143
+ /* 4. Model pull */
144
+ /* ------------------------------------------------------------------ */
145
+ export async function isModelAvailable(model, base = OLLAMA_API) {
146
+ try {
147
+ const res = await fetch(`${base}/api/tags`);
148
+ if (!res.ok)
149
+ return false;
150
+ const body = (await res.json());
151
+ return body.models?.some((m) => m.name === model || m.name.startsWith(`${model}:`)) ?? false;
152
+ }
153
+ catch {
154
+ return false;
155
+ }
156
+ }
157
+ export async function pullModel(model, base = OLLAMA_API) {
158
+ log(`Pulling model "${model}"… (this may take a while on first run)`);
159
+ const res = await fetch(`${base}/api/pull`, {
160
+ method: 'POST',
161
+ headers: { 'Content-Type': 'application/json' },
162
+ body: JSON.stringify({ model, stream: true }),
163
+ });
164
+ if (!res.ok || !res.body) {
165
+ throw new Error(`Failed to pull model: HTTP ${res.status}`);
166
+ }
167
+ // Stream progress to stderr
168
+ const reader = res.body.getReader();
169
+ const decoder = new TextDecoder();
170
+ let lastPercent = -1;
171
+ let lastStatus = '';
172
+ while (true) {
173
+ const { done, value } = await reader.read();
174
+ if (done)
175
+ break;
176
+ const chunk = decoder.decode(value, { stream: true });
177
+ for (const line of chunk.split('\n').filter(Boolean)) {
178
+ try {
179
+ const msg = JSON.parse(line);
180
+ if (msg.error)
181
+ throw new Error(`Pull failed: ${msg.error}`);
182
+ if (msg.total && msg.completed) {
183
+ const pct = Math.round((msg.completed / msg.total) * 100);
184
+ if (pct !== lastPercent) {
185
+ process.stderr.write(`\r[vibebrowser-mcp] Downloading… ${pct}%`);
186
+ lastPercent = pct;
187
+ }
188
+ }
189
+ else if (msg.status && msg.status !== lastStatus) {
190
+ // Only print new status transitions (e.g. "pulling manifest" → "verifying")
191
+ // Skip repetitive "pulling <digest>" lines during download
192
+ if (!msg.status.startsWith('pulling ') || msg.status === 'pulling manifest') {
193
+ if (lastPercent >= 0)
194
+ process.stderr.write('\n');
195
+ log(msg.status);
196
+ lastPercent = -1;
197
+ }
198
+ lastStatus = msg.status;
199
+ }
200
+ }
201
+ catch (e) {
202
+ if (e instanceof SyntaxError)
203
+ continue; // partial JSON
204
+ throw e;
205
+ }
206
+ }
207
+ }
208
+ if (lastPercent >= 0)
209
+ process.stderr.write('\n');
210
+ log(`Model "${model}" ready ✓`);
211
+ }
212
+ /* ------------------------------------------------------------------ */
213
+ /* 5. Top-level orchestrator */
214
+ /* ------------------------------------------------------------------ */
215
+ export async function serve(model, opts) {
216
+ // 1. Ensure Ollama is installed
217
+ if (!isOllamaInstalled()) {
218
+ await installOllama(opts);
219
+ }
220
+ // 2. Ensure Ollama server is running
221
+ const base = await ensureOllamaServing(opts);
222
+ // 3. Pull model if not already available
223
+ if (!(await isModelAvailable(model, base))) {
224
+ await pullModel(model, base);
225
+ }
226
+ else {
227
+ log(`Model "${model}" already available ✓`);
228
+ }
229
+ // 4. Done — print connection info
230
+ const openaiBase = `${base}/v1`;
231
+ console.error('');
232
+ log('═══════════════════════════════════════════════════');
233
+ log(` Model: ${model}`);
234
+ log(` API: ${openaiBase}`);
235
+ log(` Health: ${base}/api/tags`);
236
+ log('');
237
+ log(' Use with VibeBrowser extension:');
238
+ log(` Model provider → ollama`);
239
+ log(` Model name → ${model}`);
240
+ log('');
241
+ log(' Use with vibe-cli:');
242
+ log(` npx tsx cli.ts run "your task" --model ollama:${model}`);
243
+ log('');
244
+ log(' OpenAI-compatible endpoint (for any client):');
245
+ log(` ${openaiBase}/chat/completions`);
246
+ log('═══════════════════════════════════════════════════');
247
+ }
248
+ //# sourceMappingURL=ollama.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama.js","sourceRoot":"","sources":["../src/ollama.ts"],"names":[],"mappings":"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"}
package/dist/relay.d.ts CHANGED
@@ -9,8 +9,8 @@
9
9
  * Note: Using 19888/19889 to avoid conflict with Playwriter MCP (uses 19988/19989)
10
10
  */
11
11
  import { EventEmitter } from 'events';
12
- export declare const EXTENSION_PORT = 19889;
13
- export declare const AGENT_PORT = 19888;
12
+ export declare const EXTENSION_PORT: number;
13
+ export declare const AGENT_PORT: number;
14
14
  /**
15
15
  * Vibe MCP Relay Server
16
16
  */
@@ -58,9 +58,13 @@ export declare class RelayServer extends EventEmitter {
58
58
  */
59
59
  private requestToolsFromExtension;
60
60
  /**
61
- * Replay in-flight agent requests after extension reconnects.
61
+ * Replay pending requests on a replacement extension connection.
62
+ *
63
+ * The browser-side client deduplicates repeated request IDs, so keeping the
64
+ * same relay request ID lets us survive a transient socket swap without
65
+ * dropping the original MCP call or double-running it under normal reconnects.
62
66
  */
63
- private replayPendingRequestsToExtension;
67
+ private replayPendingRequests;
64
68
  /**
65
69
  * Keep requesting tools until extension responds with tools_list.
66
70
  */
@@ -1 +1 @@
1
- {"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,eAAO,MAAM,cAAc,QAAQ,CAAC;AACpC,eAAO,MAAM,UAAU,QAAQ,CAAC;AAiDhC;;GAEG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,MAAM,CAA2C;IACzD,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,cAAc,CAA+B;gBAEzC,KAAK,GAAE,OAAe;IAKlC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB5B;;OAEG;YACW,oBAAoB;IAoBlC;;OAEG;YACW,gBAAgB;IAoB9B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA0CjC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAiD7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA2C9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoC1B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAUjC;;OAEG;IACH,OAAO,CAAC,gCAAgC;IAexC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;YACW,QAAQ;IA2CtB;;OAEG;IACH,OAAO,CAAC,GAAG;CAgBZ;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAmBxC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,GAAG,IAAI,CAY3C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,GAAE,OAAe,GAAG,IAAI,CAe7D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAM5E"}
1
+ {"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAgBtC,eAAO,MAAM,cAAc,QAAiD,CAAC;AAC7E,eAAO,MAAM,UAAU,QAA6C,CAAC;AAgDrE;;GAEG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,MAAM,CAA2C;IACzD,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,cAAc,CAA+B;gBAEzC,KAAK,GAAE,OAAe;IAKlC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB5B;;OAEG;YACW,oBAAoB;IAoBlC;;OAEG;YACW,gBAAgB;IAoB9B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAkDjC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAiD7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA8C9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoC1B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAUjC;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;YACW,QAAQ;IA2CtB;;OAEG;IACH,OAAO,CAAC,GAAG;CAgBZ;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAmBxC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,GAAG,IAAI,CAY3C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,GAAE,OAAe,GAAG,IAAI,CAgB7D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAM5E"}
package/dist/relay.js CHANGED
@@ -8,16 +8,27 @@
8
8
  *
9
9
  * Note: Using 19888/19889 to avoid conflict with Playwriter MCP (uses 19988/19989)
10
10
  */
11
- import { WebSocketServer } from 'ws';
11
+ import { WebSocketServer, WebSocket } from 'ws';
12
12
  import { writeFileSync, readFileSync, existsSync, unlinkSync, mkdirSync } from 'fs';
13
13
  import { join } from 'path';
14
14
  import { homedir } from 'os';
15
15
  import { EventEmitter } from 'events';
16
+ function parseEnvPort(name, fallback) {
17
+ const raw = process.env[name];
18
+ if (!raw) {
19
+ return fallback;
20
+ }
21
+ const port = Number.parseInt(raw, 10);
22
+ if (!Number.isFinite(port) || port < 1 || port > 65535) {
23
+ throw new Error(`Invalid ${name} value: ${raw}`);
24
+ }
25
+ return port;
26
+ }
16
27
  // Ports (19888/19889 to avoid conflict with Playwriter MCP which uses 19988/19989)
17
- export const EXTENSION_PORT = 19889;
18
- export const AGENT_PORT = 19888;
28
+ export const EXTENSION_PORT = parseEnvPort('VIBE_MCP_EXTENSION_PORT', 19889);
29
+ export const AGENT_PORT = parseEnvPort('VIBE_MCP_AGENT_PORT', 19888);
19
30
  // PID file location
20
- const VIBE_DIR = join(homedir(), '.vibe-mcp');
31
+ const VIBE_DIR = process.env.VIBE_MCP_STATE_DIR || join(homedir(), '.vibe-mcp');
21
32
  const PID_FILE = join(VIBE_DIR, 'relay.pid');
22
33
  const LOG_FILE = join(VIBE_DIR, 'relay.log');
23
34
  /**
@@ -98,13 +109,17 @@ export class RelayServer extends EventEmitter {
98
109
  * Handle extension connection
99
110
  */
100
111
  handleExtensionConnection(ws) {
101
- // Replace prior extension connection (background/sidepanel can reconnect).
102
- if (this.extensionWs) {
103
- this.extensionWs.close();
112
+ const previousWs = this.extensionWs;
113
+ const replacedConnection = previousWs !== null && previousWs !== ws;
114
+ // Replace prior extension connection (background/service worker can reconnect).
115
+ if (previousWs && previousWs !== ws) {
116
+ previousWs.close();
104
117
  }
105
118
  this.log('Extension connected');
106
119
  this.extensionWs = ws;
107
120
  ws.on('message', (data) => {
121
+ if (this.extensionWs !== ws)
122
+ return;
108
123
  try {
109
124
  const message = JSON.parse(data.toString());
110
125
  this.handleExtensionMessage(ws, message);
@@ -131,6 +146,9 @@ export class RelayServer extends EventEmitter {
131
146
  });
132
147
  // Request tools list, with retries in case the extension wasn't ready yet.
133
148
  this.startToolsSyncLoop();
149
+ if (replacedConnection) {
150
+ this.replayPendingRequests(ws);
151
+ }
134
152
  }
135
153
  /**
136
154
  * Handle agent connection
@@ -186,7 +204,10 @@ export class RelayServer extends EventEmitter {
186
204
  }
187
205
  this.log(`Extension message: ${message.type}`);
188
206
  if (message.type === 'connected') {
189
- this.replayPendingRequestsToExtension();
207
+ // Local extension clients announce their websocket handshake with a
208
+ // standalone `connected` message. That is not itself a failure signal,
209
+ // and rejecting pending requests here breaks otherwise healthy reconnects.
210
+ return;
190
211
  }
191
212
  // Handle tools list
192
213
  if (message.type === 'tools_list') {
@@ -234,17 +255,17 @@ export class RelayServer extends EventEmitter {
234
255
  }
235
256
  // Generate relay request ID
236
257
  const relayRequestId = `relay_${++this.requestIdCounter}`;
237
- // Store pending request mapping
238
258
  const forwardMessage = {
239
259
  ...message,
240
260
  requestId: relayRequestId,
241
261
  };
262
+ // Store pending request mapping so it can be replayed if the extension
263
+ // swaps sockets mid-flight.
242
264
  this.pendingRequests.set(relayRequestId, {
243
265
  agentId,
244
266
  originalRequestId: message.requestId,
245
- forwardMessage,
246
267
  lastSentAt: Date.now(),
247
- attempts: 1,
268
+ forwardMessage,
248
269
  });
249
270
  // Forward to extension with relay request ID
250
271
  this.extensionWs.send(JSON.stringify(forwardMessage));
@@ -262,20 +283,25 @@ export class RelayServer extends EventEmitter {
262
283
  }));
263
284
  }
264
285
  /**
265
- * Replay in-flight agent requests after extension reconnects.
286
+ * Replay pending requests on a replacement extension connection.
287
+ *
288
+ * The browser-side client deduplicates repeated request IDs, so keeping the
289
+ * same relay request ID lets us survive a transient socket swap without
290
+ * dropping the original MCP call or double-running it under normal reconnects.
266
291
  */
267
- replayPendingRequestsToExtension() {
268
- if (!this.extensionWs || this.pendingRequests.size === 0)
292
+ replayPendingRequests(targetWs) {
293
+ if (this.pendingRequests.size === 0)
294
+ return;
295
+ if (targetWs.readyState !== WebSocket.OPEN)
269
296
  return;
297
+ this.log(`Replaying ${this.pendingRequests.size} pending request(s) on replacement connection`);
270
298
  for (const [relayRequestId, pending] of this.pendingRequests) {
299
+ pending.lastSentAt = Date.now();
271
300
  try {
272
- pending.attempts += 1;
273
- pending.lastSentAt = Date.now();
274
- this.pendingRequests.set(relayRequestId, pending);
275
- this.extensionWs.send(JSON.stringify(pending.forwardMessage));
301
+ targetWs.send(JSON.stringify(pending.forwardMessage));
276
302
  }
277
303
  catch (error) {
278
- this.log(`Failed to replay request ${relayRequestId}: ${error}`);
304
+ this.log(`Failed to replay ${relayRequestId}: ${error}`);
279
305
  }
280
306
  }
281
307
  }
@@ -426,6 +452,7 @@ export function spawnRelayDaemon(debug = false) {
426
452
  detached: true,
427
453
  stdio: 'ignore',
428
454
  cwd: VIBE_DIR,
455
+ env: process.env,
429
456
  });
430
457
  child.unref();
431
458
  }
package/dist/relay.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"relay.js","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relay.js","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -3,38 +3,79 @@
3
3
  *
4
4
  * MCP server that bridges AI clients with the Vibe browser extension.
5
5
  */
6
- import { ServerConfig } from './types.js';
6
+ import { type ServerConfig, type ServerTransportMode } from './types.js';
7
7
  /**
8
8
  * Vibe MCP Server
9
9
  *
10
- * Exposes Vibe browser tools to MCP clients via stdio transport.
10
+ * Exposes Vibe browser tools to MCP clients via stdio or streamable HTTP transport.
11
11
  */
12
12
  export declare class VibeMcpServer {
13
- private server;
14
- private connection;
15
- private config;
13
+ private readonly connection;
14
+ private readonly config;
15
+ private readonly sessions;
16
+ private stdioServer;
17
+ private httpApp;
18
+ private httpServer;
19
+ private shutdownStarted;
16
20
  constructor(config?: Partial<ServerConfig>);
17
21
  /**
18
- * Set up MCP request handlers
22
+ * Start the MCP server
23
+ */
24
+ start(): Promise<void>;
25
+ /**
26
+ * Shutdown the server
27
+ */
28
+ stop(): Promise<void>;
29
+ /**
30
+ * Return the configured MCP endpoint URL in HTTP mode.
19
31
  */
20
- private setupHandlers;
32
+ getHttpUrl(): string | null;
33
+ /**
34
+ * Return the configured transport mode.
35
+ */
36
+ getTransportMode(): ServerTransportMode;
21
37
  /**
22
38
  * Set up extension connection events
23
39
  */
24
40
  private setupConnectionEvents;
25
41
  /**
26
- * Start the MCP server
42
+ * Create a configured MCP server instance.
27
43
  */
28
- start(): Promise<void>;
44
+ private createProtocolServer;
29
45
  /**
30
- * Shutdown the server
46
+ * Start stdio MCP transport.
47
+ */
48
+ private startStdioServer;
49
+ /**
50
+ * Start streamable HTTP MCP transport.
51
+ */
52
+ private startHttpServer;
53
+ /**
54
+ * Handle a streamable HTTP request.
55
+ */
56
+ private handleHttpRequest;
57
+ /**
58
+ * Resolve or create the HTTP session transport for a request.
59
+ */
60
+ private resolveHttpTransport;
61
+ /**
62
+ * Create a new streamable HTTP session.
31
63
  */
64
+ private createHttpSession;
65
+ /**
66
+ * Notify all connected transports that the tool list changed.
67
+ */
68
+ private notifyToolListChanged;
69
+ private sendToolListChanged;
70
+ /**
71
+ * Handle process termination.
72
+ */
73
+ private registerProcessHandlers;
32
74
  private shutdown;
33
75
  /**
34
76
  * Log message if debug is enabled
35
77
  */
36
78
  private log;
37
- private notifyToolListChanged;
38
79
  }
39
80
  /**
40
81
  * Create and start the MCP server
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,EAAyC,YAAY,EAAkB,MAAM,YAAY,CAAC;AAOjG;;;;GAIG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM;IAiC9C;;OAEG;IACH,OAAO,CAAC,aAAa;IAiDrB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAqB7B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB5B;;OAEG;YACW,QAAQ;IAatB;;OAEG;IACH,OAAO,CAAC,GAAG;IAMX,OAAO,CAAC,qBAAqB;CAS9B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAIzF"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAEzB,MAAM,YAAY,CAAC;AAgBpB;;;;GAIG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAC5D,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,OAAO,CAAuD;IACtE,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,eAAe,CAAS;gBAEpB,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM;IAqB9C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAyC3B;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,IAAI;IAY3B;;OAEG;IACH,gBAAgB,IAAI,mBAAmB;IAIvC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAqB7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA4D5B;;OAEG;YACW,gBAAgB;IAQ9B;;OAEG;YACW,eAAe;IAwC7B;;OAEG;YACW,iBAAiB;IA8B/B;;OAEG;YACW,oBAAoB;IAwBlC;;OAEG;YACW,iBAAiB;IA6B/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,mBAAmB;IAW3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;YAYjB,QAAQ;IAiBtB;;OAEG;IACH,OAAO,CAAC,GAAG;CAKZ;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAIzF"}