@webmcp-bridge/local-mcp 0.7.0 → 0.8.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/overlays.js CHANGED
@@ -1,13 +1,15 @@
1
1
  /**
2
- * This module persists profile-scoped overlay tool definitions and runs overlay/debug scripts in the page context.
3
- * It depends on Node filesystem APIs and Playwright page evaluation so local-mcp can evolve draft site tools without modifying shared gateway layers.
2
+ * This module persists profile-scoped overlay tool definitions, resolves override ownership, and exports draft adapters.
3
+ * It depends on filesystem APIs plus page-context evaluation so local-mcp can evolve draft tools without widening the shared gateway contract.
4
4
  */
5
5
  import { mkdir, readdir, readFile, rm, writeFile } from "node:fs/promises";
6
6
  import { dirname, join } from "node:path";
7
7
  const OVERLAY_DIR = ".webmcp-bridge/overlays";
8
+ const OVERLAY_EXPORT_DIR = ".webmcp-bridge/exports";
8
9
  const OVERLAY_FILE_SUFFIX = ".json";
9
10
  const OVERLAY_ID_PATTERN = /^[a-z0-9][a-z0-9_-]*$/;
10
11
  const TOOL_NAME_PATTERN = /^[a-zA-Z0-9][a-zA-Z0-9._-]*$/;
12
+ const OVERLAY_EXPORT_PACKAGE_VERSION = "^0.7.0";
11
13
  function isRecord(value) {
12
14
  return typeof value === "object" && value !== null && !Array.isArray(value);
13
15
  }
@@ -23,6 +25,9 @@ function overlayDirectory(profilePath) {
23
25
  function overlayFilePath(profilePath, overlayId) {
24
26
  return join(overlayDirectory(profilePath), `${overlayId}${OVERLAY_FILE_SUFFIX}`);
25
27
  }
28
+ function overlayExportDirectory(profilePath, overlayId) {
29
+ return join(profilePath, OVERLAY_EXPORT_DIR, overlayId);
30
+ }
26
31
  function assertOverlayId(id) {
27
32
  if (!OVERLAY_ID_PATTERN.test(id)) {
28
33
  throw new Error("INVALID_ARGUMENT: overlay id must match ^[a-z0-9][a-z0-9_-]*$ so it can be stored and exposed as overlay.<id>.*");
@@ -33,6 +38,15 @@ function assertToolName(name) {
33
38
  throw new Error("INVALID_ARGUMENT: overlay tool name must be a non-empty MCP-style name and must not start with bridge. or overlay.");
34
39
  }
35
40
  }
41
+ function normalizeActivation(value) {
42
+ if (value === undefined) {
43
+ return "namespaced";
44
+ }
45
+ if (value === "namespaced" || value === "override") {
46
+ return value;
47
+ }
48
+ throw new Error("OVERLAY_CONTRACT_ERROR: overlay activation must be namespaced or override");
49
+ }
36
50
  function normalizeToolRecord(tool) {
37
51
  if (!isRecord(tool)) {
38
52
  throw new Error("OVERLAY_CONTRACT_ERROR: overlay tool entries must be objects");
@@ -98,6 +112,7 @@ function normalizeOverlayRecord(value, siteId) {
98
112
  id: value.id,
99
113
  siteId: rawSiteId,
100
114
  enabled: typeof value.enabled === "boolean" ? value.enabled : true,
115
+ activation: normalizeActivation(value.activation),
101
116
  tools: normalizedTools,
102
117
  createdAt,
103
118
  updatedAt,
@@ -159,7 +174,7 @@ export async function evaluateOverlayTool(page, overlay, tool, input) {
159
174
  throw new Error(`OVERLAY_TOOL_FAILED: overlay ${overlay.id} tool ${tool.name} failed: ${message}`);
160
175
  }
161
176
  }
162
- export function toOverlayToolDefinitions(overlays) {
177
+ function toAliasToolDefinitions(overlays) {
163
178
  return overlays.flatMap((overlay) => overlay.enabled
164
179
  ? overlay.tools.map((tool) => ({
165
180
  name: `overlay.${overlay.id}.${tool.name}`,
@@ -169,6 +184,128 @@ export function toOverlayToolDefinitions(overlays) {
169
184
  }))
170
185
  : []);
171
186
  }
187
+ function overlayAliasPrefix(overlayId) {
188
+ return `overlay.${overlayId}`;
189
+ }
190
+ function toCanonicalToolDefinition(tool) {
191
+ return {
192
+ name: tool.name,
193
+ ...(tool.description !== undefined ? { description: tool.description } : {}),
194
+ ...(tool.inputSchema !== undefined ? { inputSchema: tool.inputSchema } : { inputSchema: { type: "object" } }),
195
+ ...(tool.annotations !== undefined ? { annotations: tool.annotations } : {}),
196
+ };
197
+ }
198
+ function toExportSafeIdentifier(value) {
199
+ return value.replace(/[^a-zA-Z0-9]+/g, "_").replace(/^_+|_+$/g, "") || "draft";
200
+ }
201
+ function toPackageName(siteId, overlayId) {
202
+ return `webmcp-overlay-${toExportSafeIdentifier(siteId).toLowerCase()}-${toExportSafeIdentifier(overlayId).toLowerCase()}-draft`;
203
+ }
204
+ function toDisplayName(siteDisplayName, overlayId) {
205
+ return `${siteDisplayName} ${overlayId} Draft`;
206
+ }
207
+ function buildAdapterDraftSource(overlay, targetUrl, siteDisplayName, hostPatterns) {
208
+ const toolDefinitions = overlay.tools.map((tool) => ({
209
+ name: tool.name,
210
+ ...(tool.description !== undefined ? { description: tool.description } : {}),
211
+ ...(tool.inputSchema !== undefined ? { inputSchema: tool.inputSchema } : { inputSchema: { type: "object" } }),
212
+ ...(tool.annotations !== undefined ? { annotations: tool.annotations } : {}),
213
+ }));
214
+ const toolScripts = Object.fromEntries(overlay.tools.map((tool) => [tool.name, tool.script]));
215
+ const toolNames = overlay.tools.map((tool) => tool.name);
216
+ return `/**
217
+ * This module provides an exported adapter draft generated from a persisted local-mcp overlay.
218
+ * It depends on the playwright adapter contract so the draft can be reviewed locally and promoted into a formal adapter package.
219
+ */
220
+
221
+ import type { JsonValue } from "@webmcp-bridge/core";
222
+ import type { AdapterManifest, SiteAdapter, WebMcpToolDefinition } from "@webmcp-bridge/playwright";
223
+
224
+ const TOOL_DEFINITIONS: WebMcpToolDefinition[] = ${JSON.stringify(toolDefinitions, null, 2)} as WebMcpToolDefinition[];
225
+ const TOOL_SCRIPTS: Record<string, string> = ${JSON.stringify(toolScripts, null, 2)};
226
+
227
+ function errorResult(code: string, message: string): JsonValue {
228
+ return {
229
+ error: {
230
+ code,
231
+ message,
232
+ },
233
+ };
234
+ }
235
+
236
+ async function executePageFunction(
237
+ page: { evaluate: (fn: (payload: { scriptSource: string; scriptArgs: JsonValue }) => Promise<string>, payload: { scriptSource: string; scriptArgs: JsonValue }) => Promise<string> },
238
+ scriptSource: string,
239
+ scriptArgs: JsonValue,
240
+ ): Promise<JsonValue> {
241
+ const serialized = await page.evaluate(
242
+ async ({ scriptSource, scriptArgs }) => {
243
+ const evaluator = globalThis.eval as (source: string) => unknown;
244
+ const candidate = evaluator(\`(\${scriptSource})\`);
245
+ if (typeof candidate !== "function") {
246
+ throw new Error("script must evaluate to a function");
247
+ }
248
+ const value = await candidate(scriptArgs);
249
+ const json = JSON.stringify(value);
250
+ if (json === undefined) {
251
+ throw new Error("script result must be JSON-serializable");
252
+ }
253
+ return json;
254
+ },
255
+ { scriptSource, scriptArgs },
256
+ );
257
+ return JSON.parse(serialized) as JsonValue;
258
+ }
259
+
260
+ export const manifest: AdapterManifest = {
261
+ id: ${JSON.stringify(overlay.siteId)},
262
+ displayName: ${JSON.stringify(toDisplayName(siteDisplayName, overlay.id))},
263
+ version: "0.1.0",
264
+ bridgeApiVersion: "1.0.0",
265
+ defaultUrl: ${JSON.stringify(targetUrl)},
266
+ hostPatterns: ${JSON.stringify(hostPatterns)},
267
+ };
268
+
269
+ export function createAdapter(): SiteAdapter {
270
+ return {
271
+ name: ${JSON.stringify(`overlay-${overlay.id}-draft`)},
272
+ listTools: async () => TOOL_DEFINITIONS,
273
+ callTool: async ({ name, input }, context) => {
274
+ if (!${JSON.stringify(toolNames)}.includes(name)) {
275
+ return errorResult("TOOL_NOT_FOUND", \`unknown tool: \${name}\`);
276
+ }
277
+ const script = TOOL_SCRIPTS[name];
278
+ try {
279
+ return await executePageFunction(context.page, script, input);
280
+ } catch (error) {
281
+ const message = error instanceof Error ? error.message : String(error);
282
+ return errorResult("OVERLAY_DRAFT_TOOL_FAILED", \`overlay draft tool \${name} failed: \${message}\`);
283
+ }
284
+ },
285
+ };
286
+ }
287
+ `;
288
+ }
289
+ function buildAdapterDraftReadme(overlay, outputDir) {
290
+ return `# ${overlay.id} adapter draft
291
+
292
+ This directory was generated from the persisted overlay \`${overlay.id}\`.
293
+
294
+ ## What it contains
295
+
296
+ - \`src/index.ts\`: adapter draft source
297
+ - \`package.json\`: minimal package metadata
298
+ - \`tsconfig.json\`: local build config
299
+
300
+ ## Notes
301
+
302
+ - This is a local draft artifact, not a published adapter package.
303
+ - The source keeps the current overlay tool schemas and page-context scripts.
304
+ - Review and refine the generated draft before promoting it into a formal adapter.
305
+
306
+ Generated output directory: \`${outputDir}\`
307
+ `;
308
+ }
172
309
  export class OverlayStore {
173
310
  siteId;
174
311
  profilePath;
@@ -177,9 +314,43 @@ export class OverlayStore {
177
314
  this.siteId = siteId;
178
315
  this.profilePath = profilePath;
179
316
  }
317
+ validateOverrideConflicts(overlays) {
318
+ const owners = new Map();
319
+ for (const overlay of overlays) {
320
+ if (!overlay.enabled || overlay.activation !== "override") {
321
+ continue;
322
+ }
323
+ for (const tool of overlay.tools) {
324
+ const owner = owners.get(tool.name);
325
+ if (owner && owner !== overlay.id) {
326
+ throw new Error(`OVERLAY_OVERRIDE_CONFLICT: tool ${tool.name} is already overridden by overlay ${owner}`);
327
+ }
328
+ owners.set(tool.name, overlay.id);
329
+ }
330
+ }
331
+ }
332
+ snapshot(overrides) {
333
+ return Array.from((overrides ?? this.overlays).values()).sort((a, b) => a.id.localeCompare(b.id));
334
+ }
335
+ commit(overlays) {
336
+ this.validateOverrideConflicts(this.snapshot(overlays));
337
+ this.overlays = overlays;
338
+ }
339
+ summarizeOverlays(baseToolNames) {
340
+ const baseToolSet = new Set(baseToolNames);
341
+ return this.snapshot().map((overlay) => ({
342
+ ...cloneJsonValue(overlay),
343
+ aliasPrefix: overlayAliasPrefix(overlay.id),
344
+ toolNames: overlay.tools.map((tool) => tool.name),
345
+ shadowedTools: overlay.enabled && overlay.activation === "override"
346
+ ? overlay.tools.map((tool) => tool.name).filter((name) => baseToolSet.has(name))
347
+ : [],
348
+ }));
349
+ }
180
350
  async load() {
181
- this.overlays.clear();
351
+ const nextOverlays = new Map();
182
352
  if (!this.profilePath) {
353
+ this.commit(nextOverlays);
183
354
  return;
184
355
  }
185
356
  const dirPath = overlayDirectory(this.profilePath);
@@ -190,6 +361,7 @@ export class OverlayStore {
190
361
  catch (error) {
191
362
  const message = error instanceof Error ? error.message : String(error);
192
363
  if (message.includes("ENOENT")) {
364
+ this.commit(nextOverlays);
193
365
  return;
194
366
  }
195
367
  throw error;
@@ -198,11 +370,12 @@ export class OverlayStore {
198
370
  for (const entry of fileNames) {
199
371
  const raw = await readFile(join(dirPath, entry), "utf8");
200
372
  const overlay = normalizeOverlayRecord(JSON.parse(raw), this.siteId);
201
- this.overlays.set(overlay.id, overlay);
373
+ nextOverlays.set(overlay.id, overlay);
202
374
  }
375
+ this.commit(nextOverlays);
203
376
  }
204
- list() {
205
- const overlays = Array.from(this.overlays.values()).sort((a, b) => a.id.localeCompare(b.id));
377
+ list(baseToolNames = []) {
378
+ const overlays = this.summarizeOverlays(baseToolNames);
206
379
  if (!this.profilePath) {
207
380
  return {
208
381
  overlays,
@@ -220,8 +393,20 @@ export class OverlayStore {
220
393
  },
221
394
  };
222
395
  }
223
- listEnabledToolDefinitions() {
224
- return toOverlayToolDefinitions(Array.from(this.overlays.values()));
396
+ listEnabledAliasToolDefinitions() {
397
+ return toAliasToolDefinitions(this.snapshot());
398
+ }
399
+ applyOverrideToolDefinitions(baseTools) {
400
+ const tools = new Map(baseTools.map((tool) => [tool.name, tool]));
401
+ for (const overlay of this.snapshot()) {
402
+ if (!overlay.enabled || overlay.activation !== "override") {
403
+ continue;
404
+ }
405
+ for (const tool of overlay.tools) {
406
+ tools.set(tool.name, toCanonicalToolDefinition(tool));
407
+ }
408
+ }
409
+ return Array.from(tools.values());
225
410
  }
226
411
  getOverlayTool(name) {
227
412
  if (!name.startsWith("overlay.")) {
@@ -244,6 +429,18 @@ export class OverlayStore {
244
429
  }
245
430
  return { overlay, tool };
246
431
  }
432
+ getOverrideTool(name) {
433
+ for (const overlay of this.snapshot()) {
434
+ if (!overlay.enabled || overlay.activation !== "override") {
435
+ continue;
436
+ }
437
+ const tool = overlay.tools.find((entry) => entry.name === name);
438
+ if (tool) {
439
+ return { overlay, tool };
440
+ }
441
+ }
442
+ return undefined;
443
+ }
247
444
  assertPersistentStore() {
248
445
  if (!this.profilePath) {
249
446
  throw new Error("CONFIG_ERROR: overlays require a managed profile session");
@@ -263,14 +460,18 @@ export class OverlayStore {
263
460
  id,
264
461
  siteId: this.siteId,
265
462
  enabled: options.enabled ?? true,
463
+ activation: options.activation ?? "namespaced",
266
464
  ...(options.description?.trim() ? { description: options.description.trim() } : {}),
267
465
  tools: options.tools.map((tool) => normalizeToolRecord(tool)),
268
466
  createdAt: timestamp(),
269
467
  updatedAt: timestamp(),
270
468
  };
271
469
  const profilePath = this.assertPersistentStore();
470
+ const nextOverlays = new Map(this.overlays);
471
+ nextOverlays.set(overlay.id, overlay);
472
+ this.validateOverrideConflicts(this.snapshot(nextOverlays));
272
473
  await persistOverlay(profilePath, overlay);
273
- this.overlays.set(overlay.id, overlay);
474
+ this.commit(nextOverlays);
274
475
  return cloneJsonValue(overlay);
275
476
  }
276
477
  async update(options) {
@@ -286,6 +487,7 @@ export class OverlayStore {
286
487
  : {}
287
488
  : {}),
288
489
  ...(options.enabled !== undefined ? { enabled: options.enabled } : {}),
490
+ ...(options.activation !== undefined ? { activation: options.activation } : {}),
289
491
  ...(options.tools !== undefined ? { tools: options.tools.map((tool) => normalizeToolRecord(tool)) } : {}),
290
492
  updatedAt: timestamp(),
291
493
  };
@@ -293,8 +495,11 @@ export class OverlayStore {
293
495
  delete updated.description;
294
496
  }
295
497
  const profilePath = this.assertPersistentStore();
498
+ const nextOverlays = new Map(this.overlays);
499
+ nextOverlays.set(updated.id, updated);
500
+ this.validateOverrideConflicts(this.snapshot(nextOverlays));
296
501
  await persistOverlay(profilePath, updated);
297
- this.overlays.set(updated.id, updated);
502
+ this.commit(nextOverlays);
298
503
  return cloneJsonValue(updated);
299
504
  }
300
505
  async enable(id) {
@@ -309,7 +514,59 @@ export class OverlayStore {
309
514
  }
310
515
  const profilePath = this.assertPersistentStore();
311
516
  await rm(overlayFilePath(profilePath, id), { force: true });
312
- this.overlays.delete(id);
517
+ const nextOverlays = new Map(this.overlays);
518
+ nextOverlays.delete(id);
519
+ this.commit(nextOverlays);
520
+ }
521
+ async exportAdapterDraft(options) {
522
+ const profilePath = this.assertPersistentStore();
523
+ const overlay = this.overlays.get(options.id);
524
+ if (!overlay) {
525
+ throw new Error(`OVERLAY_NOT_FOUND: overlay ${options.id} does not exist`);
526
+ }
527
+ const outputDir = overlayExportDirectory(profilePath, overlay.id);
528
+ const srcDir = join(outputDir, "src");
529
+ await rm(outputDir, { recursive: true, force: true });
530
+ await mkdir(srcDir, { recursive: true });
531
+ const packageName = toPackageName(this.siteId, overlay.id);
532
+ const files = ["README.md", "package.json", "src/index.ts", "tsconfig.json"];
533
+ const entryFile = join(outputDir, "src", "index.ts");
534
+ await writeFile(entryFile, buildAdapterDraftSource(overlay, options.targetUrl, options.siteDisplayName, options.hostPatterns), "utf8");
535
+ await writeFile(join(outputDir, "package.json"), `${JSON.stringify({
536
+ name: packageName,
537
+ private: true,
538
+ version: "0.1.0",
539
+ type: "module",
540
+ scripts: {
541
+ build: "tsc -p tsconfig.json",
542
+ typecheck: "tsc --noEmit -p tsconfig.json",
543
+ },
544
+ dependencies: {
545
+ "@webmcp-bridge/core": OVERLAY_EXPORT_PACKAGE_VERSION,
546
+ "@webmcp-bridge/playwright": OVERLAY_EXPORT_PACKAGE_VERSION,
547
+ },
548
+ }, null, 2)}\n`, "utf8");
549
+ await writeFile(join(outputDir, "tsconfig.json"), `${JSON.stringify({
550
+ compilerOptions: {
551
+ outDir: "dist",
552
+ rootDir: "src",
553
+ module: "NodeNext",
554
+ moduleResolution: "NodeNext",
555
+ target: "ES2022",
556
+ strict: true,
557
+ declaration: true,
558
+ sourceMap: true,
559
+ },
560
+ include: ["src/**/*.ts"],
561
+ }, null, 2)}\n`, "utf8");
562
+ await writeFile(join(outputDir, "README.md"), buildAdapterDraftReadme(overlay, outputDir), "utf8");
563
+ return {
564
+ overlay: cloneJsonValue(overlay),
565
+ format: "adapter-draft",
566
+ outputDir,
567
+ entryFile,
568
+ files: files.map((file) => join(outputDir, file)),
569
+ };
313
570
  }
314
571
  }
315
572
  export async function readOverlayFile(profilePath, overlayId, siteId) {
@@ -1 +1 @@
1
- {"version":3,"file":"overlays.js","sourceRoot":"","sources":["../src/overlays.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"overlays.js","sourceRoot":"","sources":["../src/overlays.ts"],"names":[],"mappings":"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"}
package/dist/runtime.d.ts CHANGED
@@ -19,6 +19,7 @@ export type LocalMcpRuntimeOptions = {
19
19
  preferredPresentationMode?: BridgePresentationMode;
20
20
  userDataDir?: string;
21
21
  preferNative?: boolean;
22
+ navigationTimeoutMs?: number;
22
23
  };
23
24
  export type LocalMcpRuntime = {
24
25
  site: string;
@@ -46,7 +47,8 @@ export declare function selectPreferredPage<T extends PageLike>(pages: ReadonlyA
46
47
  export declare function detectExternalPresentationMode(context: BrowserContext, page: Page, fallbackMode: BridgePresentationMode): Promise<BridgePresentationMode>;
47
48
  export declare function isRecoverableGatewayError(error: unknown): boolean;
48
49
  export declare function resolveBridgeRuntimeMode(gatewayMode: "native" | "polyfill" | "adapter-shim", toolCount: number, hasFallbackAdapter: boolean): "native" | "polyfill" | "adapter-shim" | "overlay-bootstrap";
49
- export declare function mapNavigationError(error: unknown, targetUrl: string, phase: "goto" | "reload"): Error;
50
+ export declare function mapNavigationError(error: unknown, targetUrl: string, phase: "goto" | "reload", timeoutMs?: number): Error;
51
+ export declare function resolveNavigationTimeoutMs(targetUrl: string): number;
50
52
  export declare function startLocalMcpRuntime(options: LocalMcpRuntimeOptions): Promise<LocalMcpRuntime>;
51
53
  export {};
52
54
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,OAAO,EAKL,KAAK,cAAc,EAGnB,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAqB,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAiBjD,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC9D,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,aAAa,GACb,YAAY,GACZ,eAAe,GACf,QAAQ,GACR,aAAa,GACb,YAAY,GACZ,eAAe,CAAC;AAEpB,MAAM,MAAM,sBAAsB,GAAG;IACnC,cAAc,EAAE,cAAc,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC1C,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,yBAAyB,CAAC,EAAE,sBAAsB,CAAC;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACjC,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,mBAAmB,CAAC;IACnE,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,eAAe,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,UAAU,EAAE,MAAM,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC;IAChD,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC;AAEF,KAAK,SAAS,GAAG,eAAe,GAAG,eAAe,GAAG,oBAAoB,CAAC;AAsG1E,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAiBpE;AAUD,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,MAAM,CAAC,CAqCjB;AAyBD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAczE;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAMxG;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EAAE,GACrB,MAAM,GAAG,SAAS,CAKpB;AAaD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAEnF;AAED,wBAAgB,mCAAmC,CACjD,gBAAgB,EAAE,sBAAsB,EACxC,aAAa,EAAE,MAAM,GACpB,OAAO,CAET;AAED,KAAK,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC;AAE/C,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,QAAQ,EACpD,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EAAE,GACrB,CAAC,GAAG,SAAS,CAgCf;AAED,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,sBAAsB,GACnC,OAAO,CAAC,sBAAsB,CAAC,CAoCjC;AAmBD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGjE;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,QAAQ,GAAG,UAAU,GAAG,cAAc,EACnD,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,OAAO,GAC1B,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,mBAAmB,CAK9D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAgBrG;AAiBD,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CA+bpG"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,OAAO,EAKL,KAAK,cAAc,EAGnB,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAqB,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAkBjD,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC9D,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,aAAa,GACb,YAAY,GACZ,eAAe,GACf,QAAQ,GACR,aAAa,GACb,YAAY,GACZ,eAAe,CAAC;AAEpB,MAAM,MAAM,sBAAsB,GAAG;IACnC,cAAc,EAAE,cAAc,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC1C,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,yBAAyB,CAAC,EAAE,sBAAsB,CAAC;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACjC,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,mBAAmB,CAAC;IACnE,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,eAAe,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,UAAU,EAAE,MAAM,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC;IAChD,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC;AAEF,KAAK,SAAS,GAAG,eAAe,GAAG,eAAe,GAAG,oBAAoB,CAAC;AAsG1E,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAiBpE;AAUD,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,MAAM,CAAC,CAqCjB;AAyBD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAczE;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAMxG;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EAAE,GACrB,MAAM,GAAG,SAAS,CAKpB;AAaD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAEnF;AAED,wBAAgB,mCAAmC,CACjD,gBAAgB,EAAE,sBAAsB,EACxC,aAAa,EAAE,MAAM,GACpB,OAAO,CAET;AAED,KAAK,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC;AAE/C,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,QAAQ,EACpD,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EAAE,GACrB,CAAC,GAAG,SAAS,CAgCf;AAED,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,sBAAsB,GACnC,OAAO,CAAC,sBAAsB,CAAC,CAoCjC;AAmBD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGjE;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,QAAQ,GAAG,UAAU,GAAG,cAAc,EACnD,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,OAAO,GAC1B,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,mBAAmB,CAK9D;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GAAG,QAAQ,EACxB,SAAS,CAAC,EAAE,MAAM,GACjB,KAAK,CAsBP;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAkBpE;AAiBD,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CAicpG"}
package/dist/runtime.js CHANGED
@@ -8,7 +8,8 @@ import { join } from "node:path";
8
8
  import { createWebMcpPageGateway, } from "@webmcp-bridge/playwright";
9
9
  import { chromium, firefox, webkit, } from "playwright";
10
10
  import { resolveAuthPolicy } from "./session.js";
11
- const NAVIGATION_TIMEOUT_MS = 5_000;
11
+ const LOCAL_NAVIGATION_TIMEOUT_MS = 5_000;
12
+ const REMOTE_NAVIGATION_TIMEOUT_MS = 30_000;
12
13
  const LAUNCH_RETRY_DELAY_MS = 750;
13
14
  const MAX_LAUNCH_ATTEMPTS = 2;
14
15
  const GATEWAY_RECOVERABLE_ERROR_SNIPPETS = [
@@ -299,7 +300,7 @@ export function resolveBridgeRuntimeMode(gatewayMode, toolCount, hasFallbackAdap
299
300
  }
300
301
  return gatewayMode;
301
302
  }
302
- export function mapNavigationError(error, targetUrl, phase) {
303
+ export function mapNavigationError(error, targetUrl, phase, timeoutMs) {
303
304
  const message = extractErrorMessage(error);
304
305
  const normalizedPhase = phase === "goto" ? "open" : "reload";
305
306
  if (message.includes("ERR_CONNECTION_REFUSED") ||
@@ -310,10 +311,31 @@ export function mapNavigationError(error, targetUrl, phase) {
310
311
  return new Error(`TARGET_UNREACHABLE: failed to ${normalizedPhase} ${targetUrl}: ${message}`);
311
312
  }
312
313
  if (message.toLowerCase().includes("timeout")) {
313
- return new Error(`NAVIGATION_TIMEOUT: timed out trying to ${normalizedPhase} ${targetUrl}: ${message}`);
314
+ const timeoutHint = timeoutMs !== undefined
315
+ ? ` current timeout=${timeoutMs}ms; increase it with --navigation-timeout-ms or WEBMCP_NAVIGATION_TIMEOUT_MS.`
316
+ : " increase it with --navigation-timeout-ms or WEBMCP_NAVIGATION_TIMEOUT_MS.";
317
+ return new Error(`NAVIGATION_TIMEOUT: timed out trying to ${normalizedPhase} ${targetUrl}:${timeoutHint} ${message}`);
314
318
  }
315
319
  return new Error(`NAVIGATION_FAILED: failed to ${normalizedPhase} ${targetUrl}: ${message}`);
316
320
  }
321
+ export function resolveNavigationTimeoutMs(targetUrl) {
322
+ try {
323
+ const parsed = new URL(targetUrl);
324
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
325
+ return LOCAL_NAVIGATION_TIMEOUT_MS;
326
+ }
327
+ if (parsed.hostname === "localhost" ||
328
+ parsed.hostname === "127.0.0.1" ||
329
+ parsed.hostname === "::1") {
330
+ return LOCAL_NAVIGATION_TIMEOUT_MS;
331
+ }
332
+ }
333
+ catch {
334
+ // Non-HTTP targets should use the conservative local timeout.
335
+ return LOCAL_NAVIGATION_TIMEOUT_MS;
336
+ }
337
+ return REMOTE_NAVIGATION_TIMEOUT_MS;
338
+ }
317
339
  async function waitForPolyfillTools(pageGateway, timeoutMs = 5000, intervalMs = 200) {
318
340
  const deadline = Date.now() + timeoutMs;
319
341
  while (Date.now() < deadline) {
@@ -347,6 +369,7 @@ export async function startLocalMcpRuntime(options) {
347
369
  }
348
370
  const browserType = resolveBrowserType(browserEngine);
349
371
  const targetUrl = resolveTargetUrl(options.url, site.manifest.defaultUrl);
372
+ const navigationTimeoutMs = options.navigationTimeoutMs ?? resolveNavigationTimeoutMs(targetUrl);
350
373
  const controlMode = browserUrl ? "attach" : "launch";
351
374
  if (!isUrlAllowed(targetUrl, site.manifest.hostPatterns)) {
352
375
  throw new Error("URL_NOT_ALLOWED: target url host is not allowed by adapter hostPatterns");
@@ -507,11 +530,11 @@ export async function startLocalMcpRuntime(options) {
507
530
  try {
508
531
  await pageForEvents.goto(targetUrl, {
509
532
  waitUntil: "domcontentloaded",
510
- timeout: NAVIGATION_TIMEOUT_MS,
533
+ timeout: navigationTimeoutMs,
511
534
  });
512
535
  }
513
536
  catch (error) {
514
- throw mapNavigationError(error, targetUrl, "goto");
537
+ throw mapNavigationError(error, targetUrl, "goto", navigationTimeoutMs);
515
538
  }
516
539
  }
517
540
  if (await shouldDeferGatewayCreation(pageForEvents)) {
@@ -533,11 +556,11 @@ export async function startLocalMcpRuntime(options) {
533
556
  try {
534
557
  await pageForEvents.reload({
535
558
  waitUntil: "domcontentloaded",
536
- timeout: NAVIGATION_TIMEOUT_MS,
559
+ timeout: navigationTimeoutMs,
537
560
  });
538
561
  }
539
562
  catch (error) {
540
- throw mapNavigationError(error, targetUrl, "reload");
563
+ throw mapNavigationError(error, targetUrl, "reload", navigationTimeoutMs);
541
564
  }
542
565
  if (shouldWaitForPolyfillVisibility) {
543
566
  await waitForPolyfillTools(currentGatewaySession).catch(() => {
@@ -564,14 +587,15 @@ export async function startLocalMcpRuntime(options) {
564
587
  }
565
588
  const recoveryNavigationUrl = resolveRecoveryNavigationUrl(currentPage.url(), targetUrl, site.manifest.hostPatterns);
566
589
  if (recoveryNavigationUrl) {
590
+ const recoveryTimeoutMs = options.navigationTimeoutMs ?? resolveNavigationTimeoutMs(recoveryNavigationUrl);
567
591
  try {
568
592
  await currentPage.goto(recoveryNavigationUrl, {
569
593
  waitUntil: "domcontentloaded",
570
- timeout: NAVIGATION_TIMEOUT_MS,
594
+ timeout: recoveryTimeoutMs,
571
595
  });
572
596
  }
573
597
  catch (error) {
574
- throw mapNavigationError(error, recoveryNavigationUrl, "goto");
598
+ throw mapNavigationError(error, recoveryNavigationUrl, "goto", recoveryTimeoutMs);
575
599
  }
576
600
  }
577
601
  await initializePageSession(false);