@webmcp-bridge/local-mcp 0.4.3 → 0.5.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.
- package/dist/bridge.d.ts +10 -5
- package/dist/bridge.d.ts.map +1 -1
- package/dist/bridge.js +620 -70
- package/dist/bridge.js.map +1 -1
- package/dist/cli.d.ts +4 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +30 -8
- package/dist/cli.js.map +1 -1
- package/dist/mcp-types.d.ts +23 -1
- package/dist/mcp-types.d.ts.map +1 -1
- package/dist/runtime.d.ts +15 -4
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +318 -28
- package/dist/runtime.js.map +1 -1
- package/dist/server.d.ts +30 -7
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +283 -16
- package/dist/server.js.map +1 -1
- package/dist/session.d.ts +86 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +584 -0
- package/dist/session.js.map +1 -0
- package/dist/sites.d.ts +1 -1
- package/dist/sites.d.ts.map +1 -1
- package/dist/sites.js +50 -0
- package/dist/sites.js.map +1 -1
- package/package.json +8 -6
- package/dist/client.d.ts +0 -39
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -232
- package/dist/client.js.map +0 -1
- package/dist/event-buffer.d.ts +0 -22
- package/dist/event-buffer.d.ts.map +0 -1
- package/dist/event-buffer.js +0 -46
- package/dist/event-buffer.js.map +0 -1
- package/dist/protocol.d.ts +0 -11
- package/dist/protocol.d.ts.map +0 -1
- package/dist/protocol.js +0 -52
- package/dist/protocol.js.map +0 -1
package/dist/runtime.js
CHANGED
|
@@ -7,13 +7,79 @@ import { tmpdir } from "node:os";
|
|
|
7
7
|
import { join } from "node:path";
|
|
8
8
|
import { createWebMcpPageGateway, } from "@webmcp-bridge/playwright";
|
|
9
9
|
import { chromium, firefox, webkit, } from "playwright";
|
|
10
|
+
import { resolveAuthPolicy } from "./session.js";
|
|
10
11
|
const NAVIGATION_TIMEOUT_MS = 5_000;
|
|
12
|
+
const LAUNCH_RETRY_DELAY_MS = 750;
|
|
13
|
+
const MAX_LAUNCH_ATTEMPTS = 2;
|
|
11
14
|
const GATEWAY_RECOVERABLE_ERROR_SNIPPETS = [
|
|
12
15
|
"Execution context was destroyed",
|
|
13
16
|
"Cannot find context with specified id",
|
|
14
17
|
"Target page, context or browser has been closed",
|
|
15
18
|
"WebMCP bridge invoke handler missing",
|
|
16
19
|
];
|
|
20
|
+
const LAUNCH_RETRY_ERROR_SNIPPETS = [
|
|
21
|
+
"Target page, context or browser has been closed",
|
|
22
|
+
"Opening in existing browser session.",
|
|
23
|
+
"ProcessSingleton",
|
|
24
|
+
];
|
|
25
|
+
function isChromiumAutomationWorkaroundEnabled(enabledOverride) {
|
|
26
|
+
if (enabledOverride !== undefined) {
|
|
27
|
+
return enabledOverride;
|
|
28
|
+
}
|
|
29
|
+
const value = process.env.WEBMCP_CHROMIUM_LOGIN_WORKAROUND;
|
|
30
|
+
return value === "1" || value === "true";
|
|
31
|
+
}
|
|
32
|
+
function createChromiumLaunchOptions(presentationMode, browserChannel, chromiumLoginWorkaround) {
|
|
33
|
+
const launchOptions = {
|
|
34
|
+
headless: presentationMode === "headless",
|
|
35
|
+
viewport: null,
|
|
36
|
+
};
|
|
37
|
+
if (isChromiumAutomationWorkaroundEnabled(chromiumLoginWorkaround)) {
|
|
38
|
+
// Experimental: remove the most obvious automation marker for login surfaces.
|
|
39
|
+
launchOptions.ignoreDefaultArgs = ["--enable-automation"];
|
|
40
|
+
}
|
|
41
|
+
if (browserChannel) {
|
|
42
|
+
launchOptions.channel = browserChannel;
|
|
43
|
+
launchOptions.chromiumSandbox = true;
|
|
44
|
+
}
|
|
45
|
+
return launchOptions;
|
|
46
|
+
}
|
|
47
|
+
function sleep(ms) {
|
|
48
|
+
return new Promise((resolve) => {
|
|
49
|
+
setTimeout(resolve, ms);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function isRetryableLaunchError(error) {
|
|
53
|
+
const message = error instanceof Error ? error.message : String(error ?? "");
|
|
54
|
+
return LAUNCH_RETRY_ERROR_SNIPPETS.some((snippet) => message.includes(snippet));
|
|
55
|
+
}
|
|
56
|
+
async function launchPersistentContextWithRetry(browserType, userDataDir, launchOptions) {
|
|
57
|
+
let lastError;
|
|
58
|
+
for (let attempt = 1; attempt <= MAX_LAUNCH_ATTEMPTS; attempt += 1) {
|
|
59
|
+
try {
|
|
60
|
+
return await browserType.launchPersistentContext(userDataDir, launchOptions);
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
lastError = error;
|
|
64
|
+
if (attempt >= MAX_LAUNCH_ATTEMPTS || !isRetryableLaunchError(error)) {
|
|
65
|
+
throw error;
|
|
66
|
+
}
|
|
67
|
+
await sleep(LAUNCH_RETRY_DELAY_MS);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
throw lastError;
|
|
71
|
+
}
|
|
72
|
+
async function connectToExternalBrowserContext(browserUrl) {
|
|
73
|
+
const browser = await chromium.connectOverCDP(browserUrl);
|
|
74
|
+
const context = browser.contexts()[0];
|
|
75
|
+
if (context) {
|
|
76
|
+
return { browser, context };
|
|
77
|
+
}
|
|
78
|
+
await browser.close().catch(() => {
|
|
79
|
+
// Cleanup should be best-effort when attach validation fails.
|
|
80
|
+
});
|
|
81
|
+
throw new Error("SESSION_NOT_AVAILABLE: no persistent browser context found at --browser-url. Open the target Chromium profile with remote debugging enabled before starting local-mcp.");
|
|
82
|
+
}
|
|
17
83
|
function normalizeHost(value) {
|
|
18
84
|
return value.trim().toLowerCase();
|
|
19
85
|
}
|
|
@@ -64,8 +130,85 @@ export function resolveRecoveryNavigationUrl(currentUrl, targetUrl, hostPatterns
|
|
|
64
130
|
}
|
|
65
131
|
return isUrlAllowed(currentUrl, hostPatterns) ? undefined : targetUrl;
|
|
66
132
|
}
|
|
67
|
-
|
|
68
|
-
|
|
133
|
+
function readAuthState(value) {
|
|
134
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
const state = value.state;
|
|
138
|
+
if (state === "authenticated" || state === "auth_required" || state === "challenge_required") {
|
|
139
|
+
return state;
|
|
140
|
+
}
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
export function shouldDeferBridgeForAuthState(state) {
|
|
144
|
+
return state === "auth_required" || state === "challenge_required";
|
|
145
|
+
}
|
|
146
|
+
export function shouldEndOwnerSessionAfterPageClose(presentationMode, openPageCount) {
|
|
147
|
+
return presentationMode === "headed" && openPageCount === 0;
|
|
148
|
+
}
|
|
149
|
+
export function selectPreferredPage(pages, targetUrl, hostPatterns) {
|
|
150
|
+
const openPages = pages.filter((entry) => !entry.isClosed());
|
|
151
|
+
if (openPages.length === 0) {
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
const exactTargetPage = openPages.find((entry) => entry.url() === targetUrl);
|
|
155
|
+
if (exactTargetPage) {
|
|
156
|
+
return exactTargetPage;
|
|
157
|
+
}
|
|
158
|
+
let targetHost = "";
|
|
159
|
+
try {
|
|
160
|
+
targetHost = new URL(targetUrl).hostname;
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
// Ignore target URL parsing failures here; caller already validates targetUrl separately.
|
|
164
|
+
}
|
|
165
|
+
if (targetHost) {
|
|
166
|
+
const exactHostPage = openPages.find((entry) => {
|
|
167
|
+
try {
|
|
168
|
+
return new URL(entry.url()).hostname === targetHost;
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
if (exactHostPage) {
|
|
175
|
+
return exactHostPage;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
const allowedHostPage = openPages.find((entry) => isUrlAllowed(entry.url(), hostPatterns));
|
|
179
|
+
if (allowedHostPage) {
|
|
180
|
+
return allowedHostPage;
|
|
181
|
+
}
|
|
182
|
+
return openPages[0];
|
|
183
|
+
}
|
|
184
|
+
export async function detectExternalPresentationMode(context, page, fallbackMode) {
|
|
185
|
+
const chromiumContext = context;
|
|
186
|
+
if (typeof chromiumContext.newCDPSession !== "function") {
|
|
187
|
+
return fallbackMode;
|
|
188
|
+
}
|
|
189
|
+
const session = await chromiumContext.newCDPSession(page);
|
|
190
|
+
try {
|
|
191
|
+
await session.send("Browser.getWindowForTarget");
|
|
192
|
+
return "headed";
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
try {
|
|
196
|
+
const version = (await session.send("Browser.getVersion"));
|
|
197
|
+
const markers = [version.product, version.userAgent].filter((value) => typeof value === "string");
|
|
198
|
+
if (markers.some((value) => value.includes("HeadlessChrome"))) {
|
|
199
|
+
return "headless";
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
// Fall back to the requested presentation mode when browser-level detection is unavailable.
|
|
204
|
+
}
|
|
205
|
+
return fallbackMode;
|
|
206
|
+
}
|
|
207
|
+
finally {
|
|
208
|
+
await session.detach?.().catch(() => {
|
|
209
|
+
// Best-effort cleanup for capability probing.
|
|
210
|
+
});
|
|
211
|
+
}
|
|
69
212
|
}
|
|
70
213
|
function resolveBrowserType(browser) {
|
|
71
214
|
if (browser === "firefox") {
|
|
@@ -115,29 +258,47 @@ export async function startLocalMcpRuntime(options) {
|
|
|
115
258
|
const site = options.siteDefinition;
|
|
116
259
|
const browserEngine = options.browser ?? "chromium";
|
|
117
260
|
const browserChannel = options.browserChannel;
|
|
118
|
-
const
|
|
261
|
+
const browserUrl = options.browserUrl;
|
|
262
|
+
const preferredPresentationMode = options.preferredPresentationMode ?? "headed";
|
|
119
263
|
if (browserChannel && browserEngine !== "chromium") {
|
|
120
264
|
throw new Error(`CONFIG_ERROR: --browser-channel requires --browser chromium (received ${browserEngine})`);
|
|
121
265
|
}
|
|
266
|
+
if (browserUrl && browserEngine !== "chromium") {
|
|
267
|
+
throw new Error(`CONFIG_ERROR: --browser-url requires --browser chromium (received ${browserEngine})`);
|
|
268
|
+
}
|
|
269
|
+
if (browserUrl && browserChannel) {
|
|
270
|
+
throw new Error("CONFIG_ERROR: --browser-url cannot be combined with --browser-channel");
|
|
271
|
+
}
|
|
272
|
+
if (options.chromiumLoginWorkaround && browserEngine !== "chromium") {
|
|
273
|
+
throw new Error(`CONFIG_ERROR: --chromium-login-workaround requires --browser chromium (received ${browserEngine})`);
|
|
274
|
+
}
|
|
275
|
+
if (browserUrl && options.chromiumLoginWorkaround) {
|
|
276
|
+
throw new Error("CONFIG_ERROR: --browser-url cannot be combined with --chromium-login-workaround");
|
|
277
|
+
}
|
|
122
278
|
const browserType = resolveBrowserType(browserEngine);
|
|
123
279
|
const targetUrl = resolveTargetUrl(options.url, site.manifest.defaultUrl);
|
|
280
|
+
const controlMode = browserUrl ? "attach" : "launch";
|
|
124
281
|
if (!isUrlAllowed(targetUrl, site.manifest.hostPatterns)) {
|
|
125
282
|
throw new Error("URL_NOT_ALLOWED: target url host is not allowed by adapter hostPatterns");
|
|
126
283
|
}
|
|
127
284
|
let profileDirFromTemp = false;
|
|
128
|
-
const userDataDir = options.userDataDir ?? (await mkdtemp(join(tmpdir(), "webmcp-local-mcp-")));
|
|
129
|
-
if (!options.userDataDir) {
|
|
285
|
+
const userDataDir = browserUrl ? undefined : (options.userDataDir ?? (await mkdtemp(join(tmpdir(), "webmcp-local-mcp-"))));
|
|
286
|
+
if (!browserUrl && !options.userDataDir) {
|
|
130
287
|
profileDirFromTemp = true;
|
|
131
288
|
}
|
|
289
|
+
let browser;
|
|
132
290
|
let context;
|
|
133
291
|
let currentPage;
|
|
134
292
|
let currentGatewaySession;
|
|
135
293
|
let currentMode = "native";
|
|
294
|
+
let currentPresentationMode = preferredPresentationMode;
|
|
136
295
|
let gatewayStale = false;
|
|
137
296
|
let runtimeClosing = false;
|
|
138
297
|
let pageLifecycleCleanup;
|
|
298
|
+
let pageGatewayResourceCleanup;
|
|
139
299
|
let ownerSessionEndedResolved = false;
|
|
140
300
|
let resolveOwnerSessionEnded;
|
|
301
|
+
const resourceUpdatedListeners = new Set();
|
|
141
302
|
const ownerSessionEnded = new Promise((resolve) => {
|
|
142
303
|
resolveOwnerSessionEnded = resolve;
|
|
143
304
|
});
|
|
@@ -152,10 +313,23 @@ export async function startLocalMcpRuntime(options) {
|
|
|
152
313
|
await currentGatewaySession?.close().catch(() => {
|
|
153
314
|
// Cleanup should be best-effort when process is terminating.
|
|
154
315
|
});
|
|
316
|
+
if (deferredAdapterStarted && deferredAdapter && currentPage && !currentPage.isClosed()) {
|
|
317
|
+
await deferredAdapter.stop?.({ page: currentPage }).catch(() => {
|
|
318
|
+
// Cleanup should be best-effort when process is terminating.
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
pageGatewayResourceCleanup?.();
|
|
155
322
|
pageLifecycleCleanup?.();
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
323
|
+
if (browser) {
|
|
324
|
+
await browser.close().catch(() => {
|
|
325
|
+
// Cleanup should be best-effort when process is terminating.
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
await context?.close().catch(() => {
|
|
330
|
+
// Cleanup should be best-effort when process is terminating.
|
|
331
|
+
});
|
|
332
|
+
}
|
|
159
333
|
if (profileDirFromTemp) {
|
|
160
334
|
await rm(userDataDir, { recursive: true, force: true }).catch(() => {
|
|
161
335
|
// Cleanup should be best-effort when process is terminating.
|
|
@@ -169,6 +343,56 @@ export async function startLocalMcpRuntime(options) {
|
|
|
169
343
|
if (fallbackAdapterFactory) {
|
|
170
344
|
gatewayOptions.fallbackAdapter = fallbackAdapterFactory();
|
|
171
345
|
}
|
|
346
|
+
const authPolicy = resolveAuthPolicy(site.manifest);
|
|
347
|
+
const authProbeTool = authPolicy.authProbeTool;
|
|
348
|
+
const deferBridgeUntilAuthenticated = authPolicy.mode === "bootstrap_then_attach" &&
|
|
349
|
+
authPolicy.allowAnonymousTools &&
|
|
350
|
+
typeof authProbeTool === "string" &&
|
|
351
|
+
authProbeTool.length > 0 &&
|
|
352
|
+
typeof fallbackAdapterFactory === "function";
|
|
353
|
+
let deferredAdapter;
|
|
354
|
+
let deferredAdapterStarted = false;
|
|
355
|
+
const ensureDeferredAdapterStarted = async (page) => {
|
|
356
|
+
if (!deferBridgeUntilAuthenticated) {
|
|
357
|
+
return undefined;
|
|
358
|
+
}
|
|
359
|
+
if (!deferredAdapter && fallbackAdapterFactory) {
|
|
360
|
+
deferredAdapter = fallbackAdapterFactory();
|
|
361
|
+
}
|
|
362
|
+
if (!deferredAdapter) {
|
|
363
|
+
return undefined;
|
|
364
|
+
}
|
|
365
|
+
if (!deferredAdapterStarted) {
|
|
366
|
+
await deferredAdapter.start?.({ page });
|
|
367
|
+
deferredAdapterStarted = true;
|
|
368
|
+
}
|
|
369
|
+
return deferredAdapter;
|
|
370
|
+
};
|
|
371
|
+
const callDeferredAdapterTool = async (page, name, input) => {
|
|
372
|
+
const adapter = await ensureDeferredAdapterStarted(page);
|
|
373
|
+
if (!adapter) {
|
|
374
|
+
throw new Error("SESSION_NOT_AVAILABLE: fallback adapter is unavailable");
|
|
375
|
+
}
|
|
376
|
+
return await adapter.callTool({ name, input }, { page });
|
|
377
|
+
};
|
|
378
|
+
const listDeferredAdapterTools = async (page) => {
|
|
379
|
+
const adapter = await ensureDeferredAdapterStarted(page);
|
|
380
|
+
if (!adapter) {
|
|
381
|
+
return [];
|
|
382
|
+
}
|
|
383
|
+
const tools = await adapter.listTools({ page });
|
|
384
|
+
return tools.map((tool) => ({
|
|
385
|
+
...tool,
|
|
386
|
+
inputSchema: tool.inputSchema ?? { type: "object" },
|
|
387
|
+
}));
|
|
388
|
+
};
|
|
389
|
+
const shouldDeferGatewayCreation = async (page) => {
|
|
390
|
+
if (!deferBridgeUntilAuthenticated || !authProbeTool) {
|
|
391
|
+
return false;
|
|
392
|
+
}
|
|
393
|
+
const result = await callDeferredAdapterTool(page, authProbeTool, {});
|
|
394
|
+
return shouldDeferBridgeForAuthState(readAuthState(result));
|
|
395
|
+
};
|
|
172
396
|
const initializePageSession = async (navigate = true) => {
|
|
173
397
|
if (!context) {
|
|
174
398
|
throw new Error("SESSION_NOT_AVAILABLE: browser context is unavailable");
|
|
@@ -177,7 +401,7 @@ export async function startLocalMcpRuntime(options) {
|
|
|
177
401
|
// Session replacement should be best-effort.
|
|
178
402
|
});
|
|
179
403
|
currentGatewaySession = undefined;
|
|
180
|
-
const reusablePage = context.pages()
|
|
404
|
+
const reusablePage = selectPreferredPage(context.pages(), targetUrl, site.manifest.hostPatterns);
|
|
181
405
|
currentPage = reusablePage ?? (await context.newPage());
|
|
182
406
|
pageLifecycleCleanup?.();
|
|
183
407
|
const pageForEvents = currentPage;
|
|
@@ -191,7 +415,7 @@ export async function startLocalMcpRuntime(options) {
|
|
|
191
415
|
return;
|
|
192
416
|
}
|
|
193
417
|
const openPageCount = context?.pages().filter((entry) => !entry.isClosed()).length ?? 0;
|
|
194
|
-
if (shouldEndOwnerSessionAfterPageClose(
|
|
418
|
+
if (shouldEndOwnerSessionAfterPageClose(currentPresentationMode, openPageCount)) {
|
|
195
419
|
signalOwnerSessionEnded();
|
|
196
420
|
}
|
|
197
421
|
});
|
|
@@ -210,7 +434,7 @@ export async function startLocalMcpRuntime(options) {
|
|
|
210
434
|
};
|
|
211
435
|
if (navigate) {
|
|
212
436
|
try {
|
|
213
|
-
await
|
|
437
|
+
await pageForEvents.goto(targetUrl, {
|
|
214
438
|
waitUntil: "domcontentloaded",
|
|
215
439
|
timeout: NAVIGATION_TIMEOUT_MS,
|
|
216
440
|
});
|
|
@@ -219,10 +443,23 @@ export async function startLocalMcpRuntime(options) {
|
|
|
219
443
|
throw mapNavigationError(error, targetUrl, "goto");
|
|
220
444
|
}
|
|
221
445
|
}
|
|
222
|
-
|
|
446
|
+
if (await shouldDeferGatewayCreation(pageForEvents)) {
|
|
447
|
+
pageGatewayResourceCleanup?.();
|
|
448
|
+
pageGatewayResourceCleanup = undefined;
|
|
449
|
+
currentMode = deferredAdapter ? "adapter-shim" : "polyfill";
|
|
450
|
+
gatewayStale = false;
|
|
451
|
+
return;
|
|
452
|
+
}
|
|
453
|
+
currentGatewaySession = await createWebMcpPageGateway(pageForEvents, gatewayOptions);
|
|
454
|
+
pageGatewayResourceCleanup?.();
|
|
455
|
+
pageGatewayResourceCleanup = currentGatewaySession.onResourceUpdated((uri) => {
|
|
456
|
+
for (const listener of resourceUpdatedListeners) {
|
|
457
|
+
listener(uri);
|
|
458
|
+
}
|
|
459
|
+
});
|
|
223
460
|
if (navigate && currentGatewaySession.mode === "polyfill") {
|
|
224
461
|
try {
|
|
225
|
-
await
|
|
462
|
+
await pageForEvents.reload({
|
|
226
463
|
waitUntil: "domcontentloaded",
|
|
227
464
|
timeout: NAVIGATION_TIMEOUT_MS,
|
|
228
465
|
});
|
|
@@ -274,16 +511,38 @@ export async function startLocalMcpRuntime(options) {
|
|
|
274
511
|
return await operation();
|
|
275
512
|
}
|
|
276
513
|
};
|
|
514
|
+
const maybeEnsureGatewaySession = async () => {
|
|
515
|
+
if (!currentPage || currentPage.isClosed()) {
|
|
516
|
+
throw new Error("SESSION_NOT_AVAILABLE: current page is closed");
|
|
517
|
+
}
|
|
518
|
+
if (currentGatewaySession && !gatewayStale) {
|
|
519
|
+
return true;
|
|
520
|
+
}
|
|
521
|
+
await rebuildGatewaySession();
|
|
522
|
+
return Boolean(currentGatewaySession);
|
|
523
|
+
};
|
|
277
524
|
try {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
525
|
+
if (browserUrl) {
|
|
526
|
+
const attachedSession = await connectToExternalBrowserContext(browserUrl);
|
|
527
|
+
browser = attachedSession.browser;
|
|
528
|
+
context = attachedSession.context;
|
|
529
|
+
}
|
|
530
|
+
else {
|
|
531
|
+
const launchOptions = browserEngine === "chromium"
|
|
532
|
+
? createChromiumLaunchOptions(preferredPresentationMode, browserChannel, options.chromiumLoginWorkaround)
|
|
533
|
+
: {
|
|
534
|
+
headless: preferredPresentationMode === "headless",
|
|
535
|
+
viewport: null,
|
|
536
|
+
};
|
|
537
|
+
context = await launchPersistentContextWithRetry(browserType, userDataDir, launchOptions);
|
|
284
538
|
}
|
|
285
|
-
context = await browserType.launchPersistentContext(userDataDir, launchOptions);
|
|
286
539
|
await initializePageSession();
|
|
540
|
+
if (browserUrl && context && currentPage && options.browserUrlOrigin !== "managed") {
|
|
541
|
+
currentPresentationMode = await detectExternalPresentationMode(context, currentPage, preferredPresentationMode);
|
|
542
|
+
}
|
|
543
|
+
else {
|
|
544
|
+
currentPresentationMode = preferredPresentationMode;
|
|
545
|
+
}
|
|
287
546
|
let closed = false;
|
|
288
547
|
const close = async () => {
|
|
289
548
|
if (closed) {
|
|
@@ -294,8 +553,8 @@ export async function startLocalMcpRuntime(options) {
|
|
|
294
553
|
await cleanup();
|
|
295
554
|
};
|
|
296
555
|
const openWindow = async () => {
|
|
297
|
-
if (headless) {
|
|
298
|
-
throw new Error("UNSUPPORTED_IN_HEADLESS_SESSION: bridge.open requires a headed
|
|
556
|
+
if (currentPresentationMode === "headless") {
|
|
557
|
+
throw new Error("UNSUPPORTED_IN_HEADLESS_SESSION: bridge.open requires a headed browser session. For managed sessions, use bridge.session.mode.set({ mode: \"headed\" }) or start the bridge with --no-headless. For external attach sessions, connect to a headed external browser instead of a headless one.");
|
|
299
558
|
}
|
|
300
559
|
if (!currentPage || currentPage.isClosed()) {
|
|
301
560
|
await initializePageSession(true);
|
|
@@ -305,25 +564,53 @@ export async function startLocalMcpRuntime(options) {
|
|
|
305
564
|
await currentPage.bringToFront();
|
|
306
565
|
return "opened";
|
|
307
566
|
}
|
|
308
|
-
|
|
309
|
-
await rebuildGatewaySession();
|
|
310
|
-
}
|
|
567
|
+
await maybeEnsureGatewaySession();
|
|
311
568
|
await currentPage.bringToFront();
|
|
312
569
|
return "focused";
|
|
313
570
|
};
|
|
314
571
|
const gateway = {
|
|
315
572
|
listTools: async () => {
|
|
316
|
-
if (!
|
|
573
|
+
if (!currentPage || currentPage.isClosed()) {
|
|
317
574
|
throw new Error("SESSION_NOT_AVAILABLE: current page is closed");
|
|
318
575
|
}
|
|
576
|
+
if (!(await maybeEnsureGatewaySession())) {
|
|
577
|
+
return await listDeferredAdapterTools(currentPage);
|
|
578
|
+
}
|
|
319
579
|
return await withGatewayRecovery(async () => await currentGatewaySession.listTools());
|
|
320
580
|
},
|
|
321
581
|
callTool: async (name, input) => {
|
|
322
|
-
if (!
|
|
582
|
+
if (!currentPage || currentPage.isClosed()) {
|
|
323
583
|
throw new Error("SESSION_NOT_AVAILABLE: current page is closed");
|
|
324
584
|
}
|
|
585
|
+
if (!(await maybeEnsureGatewaySession())) {
|
|
586
|
+
return await callDeferredAdapterTool(currentPage, name, input);
|
|
587
|
+
}
|
|
325
588
|
return await withGatewayRecovery(async () => await currentGatewaySession.callTool(name, input));
|
|
326
589
|
},
|
|
590
|
+
listResources: async () => {
|
|
591
|
+
if (!currentPage || currentPage.isClosed()) {
|
|
592
|
+
throw new Error("SESSION_NOT_AVAILABLE: current page is closed");
|
|
593
|
+
}
|
|
594
|
+
if (!(await maybeEnsureGatewaySession())) {
|
|
595
|
+
return [];
|
|
596
|
+
}
|
|
597
|
+
return await withGatewayRecovery(async () => await currentGatewaySession.listResources());
|
|
598
|
+
},
|
|
599
|
+
readResource: async (uri) => {
|
|
600
|
+
if (!currentPage || currentPage.isClosed()) {
|
|
601
|
+
throw new Error("SESSION_NOT_AVAILABLE: current page is closed");
|
|
602
|
+
}
|
|
603
|
+
if (!(await maybeEnsureGatewaySession())) {
|
|
604
|
+
throw new Error(`RESOURCE_NOT_FOUND: ${uri}`);
|
|
605
|
+
}
|
|
606
|
+
return await withGatewayRecovery(async () => await currentGatewaySession.readResource(uri));
|
|
607
|
+
},
|
|
608
|
+
onResourceUpdated: (listener) => {
|
|
609
|
+
resourceUpdatedListeners.add(listener);
|
|
610
|
+
return () => {
|
|
611
|
+
resourceUpdatedListeners.delete(listener);
|
|
612
|
+
};
|
|
613
|
+
},
|
|
327
614
|
};
|
|
328
615
|
return {
|
|
329
616
|
get site() {
|
|
@@ -333,10 +620,13 @@ export async function startLocalMcpRuntime(options) {
|
|
|
333
620
|
get targetUrl() {
|
|
334
621
|
return targetUrl;
|
|
335
622
|
},
|
|
623
|
+
controlMode,
|
|
336
624
|
get mode() {
|
|
337
625
|
return currentMode;
|
|
338
626
|
},
|
|
339
|
-
|
|
627
|
+
get presentationMode() {
|
|
628
|
+
return currentPresentationMode;
|
|
629
|
+
},
|
|
340
630
|
get page() {
|
|
341
631
|
return currentPage;
|
|
342
632
|
},
|
package/dist/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -3,20 +3,43 @@
|
|
|
3
3
|
* It depends on the modelcontextprotocol/sdk server and stdio transport so MCP framing and lifecycle are handled by the official implementation.
|
|
4
4
|
*/
|
|
5
5
|
import type { JsonValue } from "@webmcp-bridge/core";
|
|
6
|
-
import type { WebMcpToolDefinition } from "@webmcp-bridge/playwright";
|
|
6
|
+
import type { WebMcpResourceDefinition, WebMcpToolDefinition } from "@webmcp-bridge/playwright";
|
|
7
7
|
import type { Readable, Writable } from "node:stream";
|
|
8
|
+
import type { BridgeAuthState, BridgeControlMode, BridgePresentationMode, BridgeSessionOwnership, BridgeSessionState } from "./session.js";
|
|
8
9
|
export type LocalMcpGateway = {
|
|
9
10
|
listTools: () => Promise<ReadonlyArray<WebMcpToolDefinition>>;
|
|
10
11
|
callTool: (name: string, input: Record<string, unknown>) => Promise<JsonValue>;
|
|
12
|
+
listResources: () => Promise<ReadonlyArray<WebMcpResourceDefinition>>;
|
|
13
|
+
readResource: (uri: string) => Promise<JsonValue>;
|
|
14
|
+
onResourceUpdated: (listener: (uri: string) => void) => () => void;
|
|
15
|
+
};
|
|
16
|
+
export type LocalBridgeState = {
|
|
17
|
+
site: string;
|
|
18
|
+
targetUrl: string;
|
|
19
|
+
controlMode: BridgeControlMode;
|
|
20
|
+
browserUrl?: string;
|
|
21
|
+
mode: "native" | "polyfill" | "adapter-shim" | "control-only";
|
|
22
|
+
presentationMode: BridgePresentationMode;
|
|
23
|
+
preferredPresentationMode: BridgePresentationMode;
|
|
24
|
+
authPolicyMode: "none" | "bootstrap_then_attach";
|
|
25
|
+
authState: BridgeAuthState;
|
|
26
|
+
sessionState: BridgeSessionState;
|
|
27
|
+
ownership: BridgeSessionOwnership;
|
|
28
|
+
profilePath?: string;
|
|
29
|
+
browserPid?: number;
|
|
30
|
+
lastBackupPath?: string;
|
|
31
|
+
};
|
|
32
|
+
export type LocalBridgePresentationModeSetOptions = {
|
|
33
|
+
presentationMode: BridgePresentationMode;
|
|
11
34
|
};
|
|
12
35
|
export type LocalBridgeControl = {
|
|
13
|
-
getState: () =>
|
|
14
|
-
site: string;
|
|
15
|
-
targetUrl: string;
|
|
16
|
-
mode: "native" | "polyfill" | "adapter-shim";
|
|
17
|
-
headless: boolean;
|
|
18
|
-
};
|
|
36
|
+
getState: () => LocalBridgeState;
|
|
19
37
|
openWindow: () => Promise<"focused" | "opened">;
|
|
38
|
+
bootstrapSession: () => Promise<LocalBridgeState>;
|
|
39
|
+
attachSession: (browserUrl?: string) => Promise<LocalBridgeState>;
|
|
40
|
+
getPresentationMode: () => BridgePresentationMode;
|
|
41
|
+
setPresentationMode: (options: LocalBridgePresentationModeSetOptions) => Promise<LocalBridgeState>;
|
|
42
|
+
resetProfile: () => Promise<LocalBridgeState>;
|
|
20
43
|
closeBridge: () => Promise<void>;
|
|
21
44
|
};
|
|
22
45
|
export type LocalMcpStdioServerOptions = {
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|