@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/README.md +120 -6
- package/dist/browser-cli.d.ts +4 -0
- package/dist/browser-cli.d.ts.map +1 -0
- package/dist/browser-cli.js +1473 -0
- package/dist/browser-cli.js.map +1 -0
- package/dist/browser-main.d.ts +3 -0
- package/dist/browser-main.d.ts.map +1 -0
- package/dist/browser-main.js +10 -0
- package/dist/browser-main.js.map +1 -0
- package/dist/cli.d.ts +0 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +129 -11
- package/dist/cli.js.map +1 -1
- package/dist/connection.d.ts +1 -0
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +19 -4
- package/dist/connection.js.map +1 -1
- package/dist/ollama.d.ts +21 -0
- package/dist/ollama.d.ts.map +1 -0
- package/dist/ollama.js +248 -0
- package/dist/ollama.js.map +1 -0
- package/dist/relay.d.ts +8 -4
- package/dist/relay.d.ts.map +1 -1
- package/dist/relay.js +46 -19
- package/dist/relay.js.map +1 -1
- package/dist/server.d.ts +52 -11
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +303 -64
- package/dist/server.js.map +1 -1
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +15 -0
- package/dist/version.js.map +1 -0
- package/docs/chrome-devtools-relay.md +351 -0
- package/docs/eval.md +209 -0
- package/docs/openclaw-local-browser.md +173 -0
- package/openclaw/vibe-local-browser/SKILL.md +132 -0
- package/package.json +8 -2
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
|
|
13
|
-
export declare const AGENT_PORT
|
|
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
|
|
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
|
|
67
|
+
private replayPendingRequests;
|
|
64
68
|
/**
|
|
65
69
|
* Keep requesting tools until extension responds with tools_list.
|
|
66
70
|
*/
|
package/dist/relay.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
268
|
-
if (
|
|
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.
|
|
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
|
|
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
|
|
14
|
-
private
|
|
15
|
-
private
|
|
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
|
-
*
|
|
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
|
-
|
|
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
|
-
*
|
|
42
|
+
* Create a configured MCP server instance.
|
|
27
43
|
*/
|
|
28
|
-
|
|
44
|
+
private createProtocolServer;
|
|
29
45
|
/**
|
|
30
|
-
*
|
|
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
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
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"}
|