@webmcp-bridge/playwright 0.4.3 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EACV,8BAA8B,EAE9B,iBAAiB,EAElB,MAAM,YAAY,CAAC;AA6GpB,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,8BAA8B,GACvC,OAAO,CAAC,iBAAiB,CAAC,CAkJ5B;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAOtE"}
1
+ {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EACV,8BAA8B,EAE9B,iBAAiB,EAGlB,MAAM,YAAY,CAAC;AAsKpB,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,8BAA8B,GACvC,OAAO,CAAC,iBAAiB,CAAC,CA+M5B;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAOtE"}
package/dist/gateway.js CHANGED
@@ -28,12 +28,26 @@ const INJECT_SCRIPT = String.raw `
28
28
  }
29
29
  return await navAny.modelContext.callTool(String(name || ""), input || {});
30
30
  },
31
+ listResources: async () => {
32
+ if (typeof navAny.modelContext.listResources === "function") {
33
+ const nativeResources = await navAny.modelContext.listResources();
34
+ return Array.isArray(nativeResources) ? nativeResources : [];
35
+ }
36
+ return [];
37
+ },
38
+ readResource: async (uri) => {
39
+ if (typeof navAny.modelContext.readResource !== "function") {
40
+ throw new Error("native modelContext readResource is not available");
41
+ }
42
+ return await navAny.modelContext.readResource(String(uri || ""));
43
+ },
31
44
  };
32
45
  globalAny.__WEBMCP_BRIDGE_MODE__ = "native";
33
46
  return;
34
47
  }
35
48
 
36
49
  const tools = new Map();
50
+ const resources = new Map();
37
51
  const contexts = [];
38
52
 
39
53
  const modelContext = {
@@ -43,6 +57,7 @@ const INJECT_SCRIPT = String.raw `
43
57
  clearContext: async () => {
44
58
  contexts.splice(0, contexts.length);
45
59
  tools.clear();
60
+ resources.clear();
46
61
  },
47
62
  registerTool: async (tool) => {
48
63
  const name = tool && typeof tool.name === "string" ? tool.name : "";
@@ -57,6 +72,16 @@ const INJECT_SCRIPT = String.raw `
57
72
  unregisterTool: async (name) => {
58
73
  tools.delete(String(name || ""));
59
74
  },
75
+ registerResource: async (resource) => {
76
+ const uri = resource && typeof resource.uri === "string" ? resource.uri : "";
77
+ if (!uri) {
78
+ throw new Error("resource.uri is required");
79
+ }
80
+ resources.set(uri, resource);
81
+ },
82
+ unregisterResource: async (uri) => {
83
+ resources.delete(String(uri || ""));
84
+ },
60
85
  listTools: async () =>
61
86
  Array.from(tools.values()).map((tool) => {
62
87
  const output = {
@@ -69,6 +94,22 @@ const INJECT_SCRIPT = String.raw `
69
94
  }
70
95
  return output;
71
96
  }),
97
+ listResources: async () =>
98
+ Array.from(resources.values()).map((resource) => {
99
+ const output = {
100
+ uri: resource.uri,
101
+ };
102
+ if (typeof resource.name === "string" && resource.name.trim()) {
103
+ output.name = resource.name;
104
+ }
105
+ if (typeof resource.description === "string" && resource.description.trim()) {
106
+ output.description = resource.description;
107
+ }
108
+ if (typeof resource.mimeType === "string" && resource.mimeType.trim()) {
109
+ output.mimeType = resource.mimeType;
110
+ }
111
+ return output;
112
+ }),
72
113
  callTool: async (name, input) => {
73
114
  const local = tools.get(String(name || ""));
74
115
  if (local && typeof local.execute === "function") {
@@ -79,6 +120,18 @@ const INJECT_SCRIPT = String.raw `
79
120
  }
80
121
  return await globalAny.__WEBMCP_BRIDGE_CALL__(String(name || ""), input || {});
81
122
  },
123
+ readResource: async (uri) => {
124
+ const local = resources.get(String(uri || ""));
125
+ if (!local || typeof local.read !== "function") {
126
+ throw new Error("resource not found");
127
+ }
128
+ return await local.read();
129
+ },
130
+ notifyResourceUpdated: async (uri) => {
131
+ if (typeof globalAny.__WEBMCP_BRIDGE_NOTIFY_RESOURCE_UPDATED__ === "function") {
132
+ await globalAny.__WEBMCP_BRIDGE_NOTIFY_RESOURCE_UPDATED__(String(uri || ""));
133
+ }
134
+ },
82
135
  };
83
136
 
84
137
  try {
@@ -97,6 +150,10 @@ const INJECT_SCRIPT = String.raw `
97
150
  invoke: async (name, input) => {
98
151
  return await modelContext.callTool(String(name || ""), input || {});
99
152
  },
153
+ listResources: async () => await modelContext.listResources(),
154
+ readResource: async (uri) => {
155
+ return await modelContext.readResource(String(uri || ""));
156
+ },
100
157
  };
101
158
 
102
159
  globalAny.__WEBMCP_BRIDGE_MODE__ = "polyfill";
@@ -113,6 +170,7 @@ export async function createWebMcpPageGateway(page, options) {
113
170
  const reinjectOnNavigate = options?.reinjectOnNavigate ?? true;
114
171
  let fallbackStarted = false;
115
172
  let fallbackStartPromise;
173
+ const resourceUpdatedListeners = new Set();
116
174
  const ensureFallbackStarted = async () => {
117
175
  if (!fallbackAdapter || fallbackStarted) {
118
176
  return;
@@ -126,6 +184,7 @@ export async function createWebMcpPageGateway(page, options) {
126
184
  await fallbackStartPromise;
127
185
  };
128
186
  const exposedName = `__WEBMCP_BRIDGE_CALL__${randomUUID().replaceAll("-", "")}`;
187
+ const resourceUpdatedName = `__WEBMCP_BRIDGE_NOTIFY_RESOURCE_UPDATED__${randomUUID().replaceAll("-", "")}`;
129
188
  await page.exposeFunction(exposedName, async (name, input) => {
130
189
  if (!fallbackAdapter) {
131
190
  return {
@@ -138,11 +197,24 @@ export async function createWebMcpPageGateway(page, options) {
138
197
  await ensureFallbackStarted();
139
198
  return await fallbackAdapter.callTool({ name, input }, { page });
140
199
  });
200
+ await page.exposeFunction(resourceUpdatedName, async (uri) => {
201
+ for (const listener of resourceUpdatedListeners) {
202
+ try {
203
+ listener(uri);
204
+ }
205
+ catch (error) {
206
+ options?.onError?.(error);
207
+ }
208
+ }
209
+ });
141
210
  const bindScript = `window.__WEBMCP_BRIDGE_CALL__ = window.${exposedName};`;
211
+ const bindResourceUpdatedScript = `window.__WEBMCP_BRIDGE_NOTIFY_RESOURCE_UPDATED__ = window.${resourceUpdatedName};`;
142
212
  await page.addInitScript(INJECT_SCRIPT);
143
213
  await page.addInitScript(bindScript);
214
+ await page.addInitScript(bindResourceUpdatedScript);
144
215
  await page.evaluate(INJECT_SCRIPT);
145
216
  await page.evaluate(bindScript);
217
+ await page.evaluate(bindResourceUpdatedScript);
146
218
  const detectedMode = await page.evaluate(() => {
147
219
  const globalAny = window;
148
220
  return globalAny.__WEBMCP_BRIDGE_MODE__ ?? "polyfill";
@@ -156,7 +228,7 @@ export async function createWebMcpPageGateway(page, options) {
156
228
  await ensureFallbackStarted();
157
229
  }
158
230
  const rebindOnNavigate = () => {
159
- void page.evaluate(bindScript).catch(() => {
231
+ void Promise.all([page.evaluate(bindScript), page.evaluate(bindResourceUpdatedScript)]).catch(() => {
160
232
  // Ignore transient navigation races; the init script will rebind on next document.
161
233
  });
162
234
  };
@@ -201,6 +273,43 @@ export async function createWebMcpPageGateway(page, options) {
201
273
  }, payload);
202
274
  return result;
203
275
  },
276
+ listResources: async () => {
277
+ if (mode === "adapter-shim") {
278
+ return [];
279
+ }
280
+ return await page.evaluate(async () => {
281
+ const globalAny = window;
282
+ const listResources = globalAny.__webmcpBridge?.listResources;
283
+ if (typeof listResources !== "function") {
284
+ return [];
285
+ }
286
+ const resources = await listResources();
287
+ return Array.isArray(resources) ? resources : [];
288
+ });
289
+ },
290
+ readResource: async (uri) => {
291
+ if (mode === "adapter-shim") {
292
+ throw new Error("resource reads are not available in adapter-shim mode");
293
+ }
294
+ const payload = {
295
+ resourceUri: uri,
296
+ };
297
+ const result = await page.evaluate(async ({ resourceUri }) => {
298
+ const globalAny = window;
299
+ const readResource = globalAny.__webmcpBridge?.readResource;
300
+ if (typeof readResource !== "function") {
301
+ throw new Error("WebMCP bridge readResource handler missing");
302
+ }
303
+ return await readResource(String(resourceUri || ""));
304
+ }, payload);
305
+ return result;
306
+ },
307
+ onResourceUpdated: (listener) => {
308
+ resourceUpdatedListeners.add(listener);
309
+ return () => {
310
+ resourceUpdatedListeners.delete(listener);
311
+ };
312
+ },
204
313
  close: async () => {
205
314
  const session = SESSIONS.get(page);
206
315
  if (!session) {
@@ -211,6 +320,7 @@ export async function createWebMcpPageGateway(page, options) {
211
320
  },
212
321
  };
213
322
  const cleanup = async () => {
323
+ resourceUpdatedListeners.clear();
214
324
  if (reinjectOnNavigate) {
215
325
  const pageEvents = page;
216
326
  if (typeof pageEvents.removeListener === "function") {
@@ -1 +1 @@
1
- {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUzC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkG/B,CAAC;AAOF,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAwB,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,IAAU,EACV,OAAwC;IAExC,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,MAAM,eAAe,GAA4B,OAAO,EAAE,eAAe,CAAC;IAC1E,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,IAAI,CAAC;IACnD,MAAM,kBAAkB,GAAG,OAAO,EAAE,kBAAkB,IAAI,IAAI,CAAC;IAC/D,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,oBAA+C,CAAC;IACpD,MAAM,qBAAqB,GAAG,KAAK,IAAmB,EAAE;QACtD,IAAI,CAAC,eAAe,IAAI,eAAe,EAAE,CAAC;YACxC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1B,oBAAoB,GAAG,CAAC,KAAK,IAAI,EAAE;gBACjC,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxC,eAAe,GAAG,IAAI,CAAC;YACzB,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;QACD,MAAM,oBAAoB,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,yBAAyB,UAAU,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;IAChF,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,KAAK,EAAE,IAAY,EAAE,KAAgB,EAAE,EAAE;QAC9E,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO;gBACL,KAAK,EAAE;oBACL,IAAI,EAAE,eAAe;oBACrB,OAAO,EAAE,oCAAoC;iBAC9C;aACkB,CAAC;QACxB,CAAC;QACD,MAAM,qBAAqB,EAAE,CAAC;QAC9B,OAAO,MAAM,eAAe,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,0CAA0C,WAAW,GAAG,CAAC;IAE5E,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACxC,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACnC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAEhC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC5C,MAAM,SAAS,GAAG,MAAuE,CAAC;QAC1F,OAAO,SAAS,CAAC,sBAAsB,IAAI,UAAU,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GACR,YAAY,IAAI,YAAY,KAAK,QAAQ;QACvC,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,eAAe;YACf,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,UAAU,CAAC;IACnB,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;QAC5B,MAAM,qBAAqB,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,gBAAgB,GAAG,GAAS,EAAE;QAClC,KAAK,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACxC,mFAAmF;QACrF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,IAAI,kBAAkB,EAAE,CAAC;QACvB,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,OAAO,GAAsB;QACjC,EAAE,EAAE,UAAU,EAAE;QAChB,IAAI;QACJ,IAAI;QACJ,SAAS,EAAE,KAAK,IAAqC,EAAE;YACrD,IAAI,IAAI,KAAK,cAAc,IAAI,eAAe,EAAE,CAAC;gBAC/C,MAAM,qBAAqB,EAAE,CAAC;gBAC9B,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/D,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACjC,GAAG,IAAI;oBACP,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACpD,CAAC,CAAC,CAAC;YACN,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;gBACpC,MAAM,SAAS,GAAG,MAEjB,CAAC;gBACF,MAAM,IAAI,GAAG,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC;gBAC5C,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC/B,OAAO,EAAE,CAAC;gBACZ,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,IAAI,EAAE,CAAC;gBAC3B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,CAAC,CAAC,CAAC;QACL,CAAC;QACD,QAAQ,EAAE,KAAK,EAAE,IAAY,EAAE,KAAgB,EAAsB,EAAE;YACrE,MAAM,OAAO,GAA6C;gBACxD,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,KAAK;aACjB,CAAC;YACF,MAAM,MAAM,GAAY,MAAM,IAAI,CAAC,QAAQ,CACzC,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;gBAChC,MAAM,SAAS,GAAG,MAIjB,CAAC;gBACF,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;gBAChD,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;oBACjC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;gBAC1D,CAAC;gBACD,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;YAC/D,CAAC,EACD,OAAO,CACR,CAAC;YACF,OAAO,MAAmB,CAAC;QAC7B,CAAC;QACD,KAAK,EAAE,KAAK,IAAmB,EAAE;YAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO;YACT,CAAC;YACD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YACxB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;KACF,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,IAAmB,EAAE;QACxC,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,IAGlB,CAAC;YACF,IAAI,OAAO,UAAU,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;gBACpD,UAAU,CAAC,cAAc,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;YAChE,CAAC;iBAAM,IAAI,OAAO,UAAU,CAAC,kBAAkB,KAAK,UAAU,EAAE,CAAC;gBAC/D,UAAU,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QACD,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC;IAEF,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAU;IACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IACD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -12,6 +12,12 @@ export type WebMcpToolDefinition = {
12
12
  readOnlyHint?: boolean;
13
13
  };
14
14
  };
15
+ export type WebMcpResourceDefinition = {
16
+ uri: string;
17
+ name?: string;
18
+ description?: string;
19
+ mimeType?: string;
20
+ };
15
21
  export type AdapterManifest = {
16
22
  id: string;
17
23
  displayName: string;
@@ -47,6 +53,7 @@ export type CreateWebMcpPageGatewayOptions = {
47
53
  fallbackAdapter?: SiteAdapter;
48
54
  preferNative?: boolean;
49
55
  reinjectOnNavigate?: boolean;
56
+ onError?: (error: unknown) => void;
50
57
  };
51
58
  export type WebMcpPageGateway = {
52
59
  id: string;
@@ -54,6 +61,9 @@ export type WebMcpPageGateway = {
54
61
  page: Page;
55
62
  listTools: () => Promise<WebMcpToolDefinition[]>;
56
63
  callTool: (name: string, input: JsonValue) => Promise<JsonValue>;
64
+ listResources: () => Promise<WebMcpResourceDefinition[]>;
65
+ readResource: (uri: string) => Promise<JsonValue>;
66
+ onResourceUpdated: (listener: (uri: string) => void) => () => void;
57
67
  close: () => Promise<void>;
58
68
  };
59
69
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE;QACZ,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,KAAK,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC7E,QAAQ,EAAE,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,EAAE,OAAO,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACvG,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,eAAe,CAAC;IAC1B,aAAa,EAAE,MAAM,WAAW,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,eAAe,CAAC,EAAE,WAAW,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,cAAc,CAAC;IAC7C,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,MAAM,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACjD,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACjE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webmcp-bridge/playwright",
3
- "version": "0.4.3",
3
+ "version": "0.5.0",
4
4
  "type": "module",
5
5
  "description": "Playwright page gateway that uses native WebMCP when available and falls back to injected adapters.",
6
6
  "main": "dist/index.js",
@@ -33,7 +33,7 @@
33
33
  ],
34
34
  "dependencies": {
35
35
  "playwright": "^1.58.2",
36
- "@webmcp-bridge/core": "0.4.3"
36
+ "@webmcp-bridge/core": "0.5.0"
37
37
  },
38
38
  "license": "MIT",
39
39
  "scripts": {