@poe-platform/safe-bash 0.1.680 → 0.1.682
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 +1 -1
- package/dist/safe-bash/commands/playwright/index.d.ts.map +1 -1
- package/dist/safe-bash/commands/playwright/index.js +77 -4
- package/dist/safe-bash/commands/playwright/index.js.map +1 -1
- package/dist/safe-bash/playwright/abilities.d.ts +24 -5
- package/dist/safe-bash/playwright/abilities.d.ts.map +1 -1
- package/dist/safe-bash/playwright/abilities.js +9 -4
- package/dist/safe-bash/playwright/abilities.js.map +1 -1
- package/dist/safe-bash/playwright/ability-execution.d.ts +6 -1
- package/dist/safe-bash/playwright/ability-execution.d.ts.map +1 -1
- package/dist/safe-bash/playwright/ability-execution.js +77 -5
- package/dist/safe-bash/playwright/ability-execution.js.map +1 -1
- package/dist/safe-bash/playwright/adapter.d.ts +467 -11
- package/dist/safe-bash/playwright/adapter.d.ts.map +1 -1
- package/dist/safe-bash/playwright/adapter.js +213 -4
- package/dist/safe-bash/playwright/adapter.js.map +1 -1
- package/dist/safe-bash/playwright/builtins.d.ts +45 -5
- package/dist/safe-bash/playwright/builtins.d.ts.map +1 -1
- package/dist/safe-bash/playwright/builtins.js +15 -10
- package/dist/safe-bash/playwright/builtins.js.map +1 -1
- package/dist/safe-bash/playwright/canonical-locator-parser.d.ts +5 -0
- package/dist/safe-bash/playwright/canonical-locator-parser.d.ts.map +1 -0
- package/dist/safe-bash/playwright/canonical-locator-parser.js +146 -0
- package/dist/safe-bash/playwright/canonical-locator-parser.js.map +1 -0
- package/dist/safe-bash/playwright/capability-events.d.ts +15 -0
- package/dist/safe-bash/playwright/capability-events.d.ts.map +1 -0
- package/dist/safe-bash/playwright/capability-events.js +265 -0
- package/dist/safe-bash/playwright/capability-events.js.map +1 -0
- package/dist/safe-bash/playwright/capability-result.d.ts +33 -0
- package/dist/safe-bash/playwright/capability-result.d.ts.map +1 -0
- package/dist/safe-bash/playwright/capability-result.js +72 -0
- package/dist/safe-bash/playwright/capability-result.js.map +1 -0
- package/dist/safe-bash/playwright/config-ini.d.ts +3 -0
- package/dist/safe-bash/playwright/config-ini.d.ts.map +1 -0
- package/dist/safe-bash/playwright/config-ini.js +161 -0
- package/dist/safe-bash/playwright/config-ini.js.map +1 -0
- package/dist/safe-bash/playwright/controller.d.ts +39 -1
- package/dist/safe-bash/playwright/controller.d.ts.map +1 -1
- package/dist/safe-bash/playwright/controller.js +913 -77
- package/dist/safe-bash/playwright/controller.js.map +1 -1
- package/dist/safe-bash/playwright/devices.d.ts +229 -0
- package/dist/safe-bash/playwright/devices.d.ts.map +1 -0
- package/dist/safe-bash/playwright/devices.js +2740 -0
- package/dist/safe-bash/playwright/devices.js.map +1 -0
- package/dist/safe-bash/playwright/download-capabilities.d.ts +15 -0
- package/dist/safe-bash/playwright/download-capabilities.d.ts.map +1 -0
- package/dist/safe-bash/playwright/download-capabilities.js +161 -0
- package/dist/safe-bash/playwright/download-capabilities.js.map +1 -0
- package/dist/safe-bash/playwright/drop-capability.d.ts +3 -0
- package/dist/safe-bash/playwright/drop-capability.d.ts.map +1 -0
- package/dist/safe-bash/playwright/drop-capability.js +50 -0
- package/dist/safe-bash/playwright/drop-capability.js.map +1 -0
- package/dist/safe-bash/playwright/find.d.ts +8 -0
- package/dist/safe-bash/playwright/find.d.ts.map +1 -0
- package/dist/safe-bash/playwright/find.js +68 -0
- package/dist/safe-bash/playwright/find.js.map +1 -0
- package/dist/safe-bash/playwright/generated-locator.d.ts +4 -0
- package/dist/safe-bash/playwright/generated-locator.d.ts.map +1 -0
- package/dist/safe-bash/playwright/generated-locator.js +22 -0
- package/dist/safe-bash/playwright/generated-locator.js.map +1 -0
- package/dist/safe-bash/playwright/help.d.ts +4 -3
- package/dist/safe-bash/playwright/help.d.ts.map +1 -1
- package/dist/safe-bash/playwright/help.js +7 -52
- package/dist/safe-bash/playwright/help.js.map +1 -1
- package/dist/safe-bash/playwright/highlight.d.ts +8 -0
- package/dist/safe-bash/playwright/highlight.d.ts.map +1 -0
- package/dist/safe-bash/playwright/highlight.js +82 -0
- package/dist/safe-bash/playwright/highlight.js.map +1 -0
- package/dist/safe-bash/playwright/index.d.ts +5 -0
- package/dist/safe-bash/playwright/index.d.ts.map +1 -1
- package/dist/safe-bash/playwright/index.js +4 -0
- package/dist/safe-bash/playwright/index.js.map +1 -1
- package/dist/safe-bash/playwright/invocation.d.ts +24 -0
- package/dist/safe-bash/playwright/invocation.d.ts.map +1 -1
- package/dist/safe-bash/playwright/invocation.js +43 -14
- package/dist/safe-bash/playwright/invocation.js.map +1 -1
- package/dist/safe-bash/playwright/locator-selector.d.ts +5 -0
- package/dist/safe-bash/playwright/locator-selector.d.ts.map +1 -0
- package/dist/safe-bash/playwright/locator-selector.js +70 -0
- package/dist/safe-bash/playwright/locator-selector.js.map +1 -0
- package/dist/safe-bash/playwright/modal-capabilities.d.ts +20 -0
- package/dist/safe-bash/playwright/modal-capabilities.d.ts.map +1 -0
- package/dist/safe-bash/playwright/modal-capabilities.js +137 -0
- package/dist/safe-bash/playwright/modal-capabilities.js.map +1 -0
- package/dist/safe-bash/playwright/native-json-snapshot.d.ts +17 -0
- package/dist/safe-bash/playwright/native-json-snapshot.d.ts.map +1 -0
- package/dist/safe-bash/playwright/native-json-snapshot.js +94 -0
- package/dist/safe-bash/playwright/native-json-snapshot.js.map +1 -0
- package/dist/safe-bash/playwright/native-snapshot.d.ts +17 -0
- package/dist/safe-bash/playwright/native-snapshot.d.ts.map +1 -0
- package/dist/safe-bash/playwright/native-snapshot.js +164 -0
- package/dist/safe-bash/playwright/native-snapshot.js.map +1 -0
- package/dist/safe-bash/playwright/network-policy.d.ts +2 -0
- package/dist/safe-bash/playwright/network-policy.d.ts.map +1 -1
- package/dist/safe-bash/playwright/network-policy.js +1 -1
- package/dist/safe-bash/playwright/network-policy.js.map +1 -1
- package/dist/safe-bash/playwright/open-options.d.ts +14 -0
- package/dist/safe-bash/playwright/open-options.d.ts.map +1 -0
- package/dist/safe-bash/playwright/open-options.js +279 -0
- package/dist/safe-bash/playwright/open-options.js.map +1 -0
- package/dist/safe-bash/playwright/recording-capabilities.d.ts +6 -0
- package/dist/safe-bash/playwright/recording-capabilities.d.ts.map +1 -0
- package/dist/safe-bash/playwright/recording-capabilities.js +83 -0
- package/dist/safe-bash/playwright/recording-capabilities.js.map +1 -0
- package/dist/safe-bash/playwright/resource-limit.d.ts +6 -0
- package/dist/safe-bash/playwright/resource-limit.d.ts.map +1 -0
- package/dist/safe-bash/playwright/resource-limit.js +8 -0
- package/dist/safe-bash/playwright/resource-limit.js.map +1 -0
- package/dist/safe-bash/playwright/response.d.ts +22 -0
- package/dist/safe-bash/playwright/response.d.ts.map +1 -0
- package/dist/safe-bash/playwright/response.js +43 -0
- package/dist/safe-bash/playwright/response.js.map +1 -0
- package/dist/safe-bash/playwright/route-capabilities.d.ts +25 -0
- package/dist/safe-bash/playwright/route-capabilities.d.ts.map +1 -0
- package/dist/safe-bash/playwright/route-capabilities.js +138 -0
- package/dist/safe-bash/playwright/route-capabilities.js.map +1 -0
- package/dist/safe-bash/playwright/screenshot.d.ts +3 -1
- package/dist/safe-bash/playwright/screenshot.d.ts.map +1 -1
- package/dist/safe-bash/playwright/screenshot.js +15 -12
- package/dist/safe-bash/playwright/screenshot.js.map +1 -1
- package/dist/safe-bash/playwright/session-configuration.d.ts +35 -0
- package/dist/safe-bash/playwright/session-configuration.d.ts.map +1 -0
- package/dist/safe-bash/playwright/session-configuration.js +50 -0
- package/dist/safe-bash/playwright/session-configuration.js.map +1 -0
- package/dist/safe-bash/playwright/session-runtime.d.ts +8 -0
- package/dist/safe-bash/playwright/session-runtime.d.ts.map +1 -0
- package/dist/safe-bash/playwright/session-runtime.js +96 -0
- package/dist/safe-bash/playwright/session-runtime.js.map +1 -0
- package/dist/safe-bash/playwright/snapshot.d.ts +15 -2
- package/dist/safe-bash/playwright/snapshot.d.ts.map +1 -1
- package/dist/safe-bash/playwright/snapshot.js +88 -9
- package/dist/safe-bash/playwright/snapshot.js.map +1 -1
- package/dist/safe-bash/playwright/standard-capabilities.d.ts +4 -0
- package/dist/safe-bash/playwright/standard-capabilities.d.ts.map +1 -0
- package/dist/safe-bash/playwright/standard-capabilities.js +248 -0
- package/dist/safe-bash/playwright/standard-capabilities.js.map +1 -0
- package/dist/safe-bash/playwright/storage-capabilities.d.ts +4 -0
- package/dist/safe-bash/playwright/storage-capabilities.d.ts.map +1 -0
- package/dist/safe-bash/playwright/storage-capabilities.js +120 -0
- package/dist/safe-bash/playwright/storage-capabilities.js.map +1 -0
- package/dist/safe-bash/playwright/storage-state.d.ts +8 -0
- package/dist/safe-bash/playwright/storage-state.d.ts.map +1 -0
- package/dist/safe-bash/playwright/storage-state.js +122 -0
- package/dist/safe-bash/playwright/storage-state.js.map +1 -0
- package/dist/safe-bash/playwright/target-screenshot.d.ts +9 -0
- package/dist/safe-bash/playwright/target-screenshot.d.ts.map +1 -0
- package/dist/safe-bash/playwright/target-screenshot.js +28 -0
- package/dist/safe-bash/playwright/target-screenshot.js.map +1 -0
- package/dist/safe-bash/playwright/targets.d.ts +12 -0
- package/dist/safe-bash/playwright/targets.d.ts.map +1 -0
- package/dist/safe-bash/playwright/targets.js +36 -0
- package/dist/safe-bash/playwright/targets.js.map +1 -0
- package/dist/safe-bash/playwright/tracing-capabilities.d.ts +12 -0
- package/dist/safe-bash/playwright/tracing-capabilities.d.ts.map +1 -0
- package/dist/safe-bash/playwright/tracing-capabilities.js +100 -0
- package/dist/safe-bash/playwright/tracing-capabilities.js.map +1 -0
- package/dist/safe-bash/playwright/webmcp-capabilities.d.ts +6 -0
- package/dist/safe-bash/playwright/webmcp-capabilities.d.ts.map +1 -0
- package/dist/safe-bash/playwright/webmcp-capabilities.js +122 -0
- package/dist/safe-bash/playwright/webmcp-capabilities.js.map +1 -0
- package/dist/safe-bash/playwright/workspace-assets.d.ts +5 -0
- package/dist/safe-bash/playwright/workspace-assets.d.ts.map +1 -0
- package/dist/safe-bash/playwright/workspace-assets.js +17 -0
- package/dist/safe-bash/playwright/workspace-assets.js.map +1 -0
- package/dist/safe-bash/playwright/workspace.d.ts +3 -0
- package/dist/safe-bash/playwright/workspace.d.ts.map +1 -0
- package/dist/safe-bash/playwright/workspace.js +48 -0
- package/dist/safe-bash/playwright/workspace.js.map +1 -0
- package/package.json +4 -3
- package/third-party/playwright/LICENSE +208 -0
- package/third-party/playwright/NOTICE +14 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-capabilities.js","sourceRoot":"","sources":["../../src/playwright/storage-capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PlaywrightStorageState } from './adapter.js';
|
|
2
|
+
/** Validate the portable native storage-state format before handing it to a browser. */
|
|
3
|
+
export declare function parsePlaywrightStorageState(value: unknown, options?: {
|
|
4
|
+
maxBytes?: number;
|
|
5
|
+
maxNodes?: number;
|
|
6
|
+
maxDepth?: number;
|
|
7
|
+
}): PlaywrightStorageState;
|
|
8
|
+
//# sourceMappingURL=storage-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-state.d.ts","sourceRoot":"","sources":["../../src/playwright/storage-state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE3D,wFAAwF;AACxF,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,sBAAsB,CAiF7J"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { PlaywrightResourceLimitError } from './resource-limit.js';
|
|
2
|
+
/** Validate the portable native storage-state format before handing it to a browser. */
|
|
3
|
+
export function parsePlaywrightStorageState(value, options = {}) {
|
|
4
|
+
const maxBytes = options.maxBytes ?? 8 * 1024 * 1024;
|
|
5
|
+
const maxNodes = options.maxNodes ?? 100000;
|
|
6
|
+
const maxDepth = options.maxDepth ?? 64;
|
|
7
|
+
if (![maxBytes, maxNodes, maxDepth].every(limit => Number.isSafeInteger(limit) && limit > 0))
|
|
8
|
+
throw new TypeError('Invalid storage state limits');
|
|
9
|
+
let nodes = 0, bytes = 0;
|
|
10
|
+
const ancestors = new Set();
|
|
11
|
+
const json = (input, depth) => {
|
|
12
|
+
if (++nodes > maxNodes || depth > maxDepth)
|
|
13
|
+
throw new PlaywrightResourceLimitError('Browser storage state structure limit exceeded');
|
|
14
|
+
let output = input;
|
|
15
|
+
if (typeof input === 'string')
|
|
16
|
+
bytes += new TextEncoder().encode(input).length;
|
|
17
|
+
else if (input === null || typeof input === 'boolean' || typeof input === 'number' && Number.isFinite(input))
|
|
18
|
+
bytes += 8;
|
|
19
|
+
else if (typeof input === 'object' && input !== null) {
|
|
20
|
+
if (ancestors.has(input))
|
|
21
|
+
throw new Error('Invalid cyclic browser storage state');
|
|
22
|
+
ancestors.add(input);
|
|
23
|
+
const descriptors = Object.getOwnPropertyDescriptors(input);
|
|
24
|
+
if (Reflect.ownKeys(descriptors).some(key => typeof key !== 'string'))
|
|
25
|
+
throw new Error('Invalid browser storage state key');
|
|
26
|
+
const isArray = Array.isArray(input);
|
|
27
|
+
output = isArray ? [] : {};
|
|
28
|
+
let index = 0;
|
|
29
|
+
for (const [key, descriptor] of Object.entries(descriptors)) {
|
|
30
|
+
if (isArray && key === 'length')
|
|
31
|
+
continue;
|
|
32
|
+
if (!('value' in descriptor))
|
|
33
|
+
throw new Error('Invalid browser storage state accessor');
|
|
34
|
+
if (!descriptor.enumerable || isArray && key !== String(index++))
|
|
35
|
+
throw new Error('Invalid browser storage state property');
|
|
36
|
+
bytes += new TextEncoder().encode(key).length + 4;
|
|
37
|
+
Object.defineProperty(output, key, { value: json(descriptor.value, depth + 1), enumerable: true, writable: true, configurable: true });
|
|
38
|
+
}
|
|
39
|
+
if (isArray && index !== descriptors.length.value)
|
|
40
|
+
throw new Error('Invalid browser storage state array');
|
|
41
|
+
ancestors.delete(input);
|
|
42
|
+
}
|
|
43
|
+
else
|
|
44
|
+
throw new Error('Invalid browser storage state value');
|
|
45
|
+
if (bytes > maxBytes)
|
|
46
|
+
throw new PlaywrightResourceLimitError('Browser storage state byte limit exceeded');
|
|
47
|
+
return output;
|
|
48
|
+
};
|
|
49
|
+
// Validate the same owned data that will reach the native provider. Inherited
|
|
50
|
+
// properties and later caller mutations must not escape the traversal bounds.
|
|
51
|
+
const normalized = json(value, 0);
|
|
52
|
+
const record = (input, keys) => {
|
|
53
|
+
if (!input || typeof input !== 'object' || Array.isArray(input) || Object.keys(input).some(key => !keys.includes(key)))
|
|
54
|
+
throw new Error('Invalid browser storage state object');
|
|
55
|
+
return input;
|
|
56
|
+
};
|
|
57
|
+
const string = (input) => { if (typeof input !== 'string')
|
|
58
|
+
throw new Error('Invalid browser storage state string'); };
|
|
59
|
+
const boolean = (input) => { if (typeof input !== 'boolean')
|
|
60
|
+
throw new Error('Invalid browser storage state boolean'); };
|
|
61
|
+
const array = (input) => { if (!Array.isArray(input))
|
|
62
|
+
throw new Error('Invalid browser storage state array'); return input; };
|
|
63
|
+
const root = record(normalized, ['cookies', 'origins']);
|
|
64
|
+
for (const input of array(root.cookies)) {
|
|
65
|
+
const cookie = record(input, ['name', 'value', 'domain', 'path', 'expires', 'httpOnly', 'secure', 'sameSite', 'partitionKey', '_crHasCrossSiteAncestor']);
|
|
66
|
+
for (const key of ['name', 'value', 'domain', 'path'])
|
|
67
|
+
string(cookie[key]);
|
|
68
|
+
if (typeof cookie.expires !== 'number' || !Number.isFinite(cookie.expires))
|
|
69
|
+
throw new Error('Invalid browser storage cookie expiry');
|
|
70
|
+
boolean(cookie.httpOnly);
|
|
71
|
+
boolean(cookie.secure);
|
|
72
|
+
if (!['Strict', 'Lax', 'None'].includes(cookie.sameSite))
|
|
73
|
+
throw new Error('Invalid browser storage cookie sameSite');
|
|
74
|
+
if (cookie.partitionKey !== undefined)
|
|
75
|
+
string(cookie.partitionKey);
|
|
76
|
+
if (cookie._crHasCrossSiteAncestor !== undefined)
|
|
77
|
+
boolean(cookie._crHasCrossSiteAncestor);
|
|
78
|
+
}
|
|
79
|
+
const keyPath = (item) => {
|
|
80
|
+
if (item.keyPath !== undefined)
|
|
81
|
+
string(item.keyPath);
|
|
82
|
+
if (item.keyPathArray !== undefined)
|
|
83
|
+
for (const key of array(item.keyPathArray))
|
|
84
|
+
string(key);
|
|
85
|
+
};
|
|
86
|
+
for (const input of array(root.origins)) {
|
|
87
|
+
const origin = record(input, ['origin', 'localStorage', 'indexedDB']);
|
|
88
|
+
string(origin.origin);
|
|
89
|
+
const url = new URL(origin.origin);
|
|
90
|
+
if (!['http:', 'https:'].includes(url.protocol) || url.origin !== origin.origin)
|
|
91
|
+
throw new Error('Invalid browser storage origin');
|
|
92
|
+
for (const input of array(origin.localStorage)) {
|
|
93
|
+
const item = record(input, ['name', 'value']);
|
|
94
|
+
string(item.name);
|
|
95
|
+
string(item.value);
|
|
96
|
+
}
|
|
97
|
+
if (origin.indexedDB !== undefined)
|
|
98
|
+
for (const input of array(origin.indexedDB)) {
|
|
99
|
+
const database = record(input, ['name', 'version', 'stores']);
|
|
100
|
+
string(database.name);
|
|
101
|
+
if (!Number.isSafeInteger(database.version) || database.version < 1)
|
|
102
|
+
throw new Error('Invalid browser IndexedDB version');
|
|
103
|
+
for (const input of array(database.stores)) {
|
|
104
|
+
const store = record(input, ['name', 'autoIncrement', 'keyPath', 'keyPathArray', 'records', 'indexes']);
|
|
105
|
+
string(store.name);
|
|
106
|
+
boolean(store.autoIncrement);
|
|
107
|
+
keyPath(store);
|
|
108
|
+
for (const input of array(store.records))
|
|
109
|
+
record(input, ['key', 'keyEncoded', 'value', 'valueEncoded']);
|
|
110
|
+
for (const input of array(store.indexes)) {
|
|
111
|
+
const index = record(input, ['name', 'keyPath', 'keyPathArray', 'multiEntry', 'unique']);
|
|
112
|
+
string(index.name);
|
|
113
|
+
keyPath(index);
|
|
114
|
+
boolean(index.multiEntry);
|
|
115
|
+
boolean(index.unique);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return normalized;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=storage-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-state.js","sourceRoot":"","sources":["../../src/playwright/storage-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PlaywrightElementHandle } from './adapter.js';
|
|
2
|
+
export declare function capturePlaywrightTargetScreenshot(target: PlaywrightElementHandle, options: {
|
|
3
|
+
readonly type: 'png' | 'jpeg';
|
|
4
|
+
readonly scale: 'css' | 'device';
|
|
5
|
+
readonly timeout: number;
|
|
6
|
+
readonly maxArtifactBytes: number;
|
|
7
|
+
readonly signal: AbortSignal;
|
|
8
|
+
}): Promise<Uint8Array>;
|
|
9
|
+
//# sourceMappingURL=target-screenshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-screenshot.d.ts","sourceRoot":"","sources":["../../src/playwright/target-screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE5D,wBAAsB,iCAAiC,CAAC,MAAM,EAAE,uBAAuB,EAAE,OAAO,EAAE;IAChG,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B,GAAG,OAAO,CAAC,UAAU,CAAC,CAoBtB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export async function capturePlaywrightTargetScreenshot(target, options) {
|
|
2
|
+
options.signal.throwIfAborted();
|
|
3
|
+
if (!target.screenshot || !target.boundingBox)
|
|
4
|
+
throw new Error('Element screenshots are unavailable in this browser');
|
|
5
|
+
const box = await target.boundingBox();
|
|
6
|
+
options.signal.throwIfAborted();
|
|
7
|
+
const ratio = options.scale === 'device' ? await target.evaluate(node => {
|
|
8
|
+
const view = node.ownerDocument?.defaultView;
|
|
9
|
+
return view?.devicePixelRatio ?? 1;
|
|
10
|
+
}) : 1;
|
|
11
|
+
if (!box || !Number.isFinite(ratio) || ratio <= 0 || !Number.isFinite(box.width) || !Number.isFinite(box.height) || box.width <= 0 || box.height <= 0)
|
|
12
|
+
throw new Error('Invalid screenshot dimensions');
|
|
13
|
+
const block = options.type === 'jpeg' ? 8 : 1;
|
|
14
|
+
const width = Math.ceil(box.width * ratio / block) * block;
|
|
15
|
+
const height = Math.ceil(box.height * ratio / block) * block;
|
|
16
|
+
const maxPixels = Math.min(Math.floor(options.maxArtifactBytes / 4), options.type === 'jpeg' ? 1_000_000 : 4_000_000);
|
|
17
|
+
if (!Number.isSafeInteger(width) || !Number.isSafeInteger(height) || width > Math.floor(maxPixels / height))
|
|
18
|
+
throw new PlaywrightResourceLimitError('Screenshot pixel limit exceeded');
|
|
19
|
+
const bytes = await target.screenshot({ type: options.type, ...(options.type === 'jpeg' ? { quality: 90 } : {}), scale: options.scale, timeout: options.timeout });
|
|
20
|
+
options.signal.throwIfAborted();
|
|
21
|
+
if (!(bytes instanceof Uint8Array))
|
|
22
|
+
throw new TypeError('Screenshot must return bytes');
|
|
23
|
+
if (bytes.byteLength > options.maxArtifactBytes)
|
|
24
|
+
throw new PlaywrightResourceLimitError('Artifact byte limit exceeded');
|
|
25
|
+
return new Uint8Array(bytes);
|
|
26
|
+
}
|
|
27
|
+
import { PlaywrightResourceLimitError } from './resource-limit.js';
|
|
28
|
+
//# sourceMappingURL=target-screenshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-screenshot.js","sourceRoot":"","sources":["../../src/playwright/target-screenshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { PlaywrightElementHandle, PlaywrightPage } from './adapter.js';
|
|
2
|
+
export declare function isPlaywrightSnapshotRef(target: string): boolean;
|
|
3
|
+
/** Native locator resolution retains Playwright strictness; refs never fall back to selectors. */
|
|
4
|
+
export declare function resolvePlaywrightTarget(options: {
|
|
5
|
+
readonly target: string;
|
|
6
|
+
readonly page: PlaywrightPage;
|
|
7
|
+
readonly timeout: number;
|
|
8
|
+
readonly signal: AbortSignal;
|
|
9
|
+
resolveRef(ref: string): Promise<PlaywrightElementHandle>;
|
|
10
|
+
own(handle: PlaywrightElementHandle): void;
|
|
11
|
+
}): Promise<PlaywrightElementHandle>;
|
|
12
|
+
//# sourceMappingURL=targets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../../src/playwright/targets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG5E,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAU/D;AAED,kGAAkG;AAClG,wBAAsB,uBAAuB,CAAC,OAAO,EAAE;IACrD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC1D,GAAG,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAAC;CAC5C,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAanC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { playwrightLocatorSelector } from './locator-selector.js';
|
|
2
|
+
export function isPlaywrightSnapshotRef(target) {
|
|
3
|
+
let index = 0;
|
|
4
|
+
if (target[index] === 'f') {
|
|
5
|
+
index++;
|
|
6
|
+
const start = index;
|
|
7
|
+
while (index < target.length && '0123456789'.includes(target[index]))
|
|
8
|
+
index++;
|
|
9
|
+
if (index === start)
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
if (target[index++] !== 'e' || index === target.length)
|
|
13
|
+
return false;
|
|
14
|
+
return [...target.slice(index)].every(character => '0123456789'.includes(character));
|
|
15
|
+
}
|
|
16
|
+
/** Native locator resolution retains Playwright strictness; refs never fall back to selectors. */
|
|
17
|
+
export async function resolvePlaywrightTarget(options) {
|
|
18
|
+
options.signal.throwIfAborted();
|
|
19
|
+
if (isPlaywrightSnapshotRef(options.target))
|
|
20
|
+
return options.resolveRef(options.target);
|
|
21
|
+
if (options.target.split('>>').some(part => part.slice(0, part.indexOf('=')).trim() === 'aria-ref'))
|
|
22
|
+
throw new Error('Use an issued snapshot reference instead of a native aria-ref selector');
|
|
23
|
+
const selector = playwrightLocatorSelector(options.page, options.target);
|
|
24
|
+
if (selector.split('>>').some(part => part.slice(0, part.indexOf('=')).trim() === 'aria-ref'))
|
|
25
|
+
throw new Error('Use an issued snapshot reference instead of a native aria-ref selector');
|
|
26
|
+
const locator = options.page.locator(selector);
|
|
27
|
+
if (!locator.elementHandle)
|
|
28
|
+
throw new Error('Selector resolution is unavailable in this browser');
|
|
29
|
+
const handle = await locator.elementHandle({ timeout: options.timeout });
|
|
30
|
+
if (!handle)
|
|
31
|
+
throw new Error(`"${options.target}" does not match any elements.`);
|
|
32
|
+
options.own(handle);
|
|
33
|
+
options.signal.throwIfAborted();
|
|
34
|
+
return handle;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=targets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"targets.js","sourceRoot":"","sources":["../../src/playwright/targets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,MAAM,UAAU,uBAAuB,CAAC,MAAc;IACpD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QAC1B,KAAK,EAAE,CAAC;QACR,MAAM,KAAK,GAAG,KAAK,CAAC;QACpB,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC;YAAE,KAAK,EAAE,CAAC;QAC/E,IAAI,KAAK,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;IACpC,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,GAAG,IAAI,KAAK,KAAK,MAAM,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACrE,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,kGAAkG;AAClG,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAO7C;IACC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IAChC,IAAI,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvF,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,UAAU,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC/L,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzE,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,UAAU,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IACzL,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,CAAC,OAAO,CAAC,aAAa;QAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAClG,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACzE,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,gCAAgC,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IAChC,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { PlaywrightAbility } from './abilities.js';
|
|
2
|
+
import type { PlaywrightContext, PlaywrightTraceCapture } from './adapter.js';
|
|
3
|
+
export declare function preparePlaywrightTraceRelease(context: PlaywrightContext): Promise<void>;
|
|
4
|
+
export declare function flushPlaywrightTrace(context: PlaywrightContext, capture: PlaywrightTraceCapture | undefined, options: {
|
|
5
|
+
signal: AbortSignal;
|
|
6
|
+
maxBytes: number;
|
|
7
|
+
writeArtifact(bytes: Uint8Array, filename?: string): Promise<void>;
|
|
8
|
+
mkdir?(path: string): Promise<void>;
|
|
9
|
+
}): Promise<string[]>;
|
|
10
|
+
export declare const playwrightTracingStart: PlaywrightAbility;
|
|
11
|
+
export declare const playwrightTracingStop: PlaywrightAbility;
|
|
12
|
+
//# sourceMappingURL=tracing-capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracing-capabilities.d.ts","sourceRoot":"","sources":["../../src/playwright/tracing-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAiB9E,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOvF;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,sBAAsB,GAAG,SAAS,EAChH,OAAO,EAAE;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA4BhL;AAED,eAAO,MAAM,sBAAsB,EAAE,iBAYlC,CAAC;AAEJ,eAAO,MAAM,qBAAqB,EAAE,iBAcjC,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { capabilityArtifact, capabilityOutputPath, capabilityResult, requireSession, unsupported } from './capability-result.js';
|
|
2
|
+
import { PlaywrightResourceLimitError } from './resource-limit.js';
|
|
3
|
+
const recordings = new WeakMap();
|
|
4
|
+
let sequence = 0;
|
|
5
|
+
function stopTrace(context, recording, path) {
|
|
6
|
+
recording.stopping ??= recording.started.catch(() => { }).then(async () => {
|
|
7
|
+
if (!recording.active)
|
|
8
|
+
return;
|
|
9
|
+
recording.active = false;
|
|
10
|
+
await context.tracing.stop(path === undefined ? undefined : { path });
|
|
11
|
+
});
|
|
12
|
+
return recording.stopping;
|
|
13
|
+
}
|
|
14
|
+
export function preparePlaywrightTraceRelease(context) {
|
|
15
|
+
const recording = recordings.get(context);
|
|
16
|
+
if (!recording)
|
|
17
|
+
return Promise.resolve();
|
|
18
|
+
recording.releasing ??= stopTrace(context, recording).finally(() => {
|
|
19
|
+
if (recordings.get(context) === recording)
|
|
20
|
+
recordings.delete(context);
|
|
21
|
+
});
|
|
22
|
+
return recording.releasing;
|
|
23
|
+
}
|
|
24
|
+
export async function flushPlaywrightTrace(context, capture, options) {
|
|
25
|
+
const recording = recordings.get(context);
|
|
26
|
+
if (!recording?.name || !capture)
|
|
27
|
+
return [];
|
|
28
|
+
const result = await capture(context, { signal: options.signal, maxBytes: options.maxBytes });
|
|
29
|
+
if (!Array.isArray(result.files) || result.files.length > 1024)
|
|
30
|
+
throw new PlaywrightResourceLimitError('Playwright trace file count limit exceeded');
|
|
31
|
+
let total = 0;
|
|
32
|
+
const paths = new Set();
|
|
33
|
+
for (const file of result.files) {
|
|
34
|
+
if (typeof file.path !== 'string' || file.path.length > 256 || paths.has(file.path))
|
|
35
|
+
throw new Error('Invalid native trace path');
|
|
36
|
+
const resource = file.path.startsWith('resources/') ? file.path.slice('resources/'.length) : undefined;
|
|
37
|
+
if (resource !== undefined ? !resource || resource === '.' || resource === '..' || [...resource].some(char => !'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789._-@'.includes(char))
|
|
38
|
+
: ![`${recording.name}.trace`, `${recording.name}.network`].includes(file.path))
|
|
39
|
+
throw new Error('Invalid native trace path');
|
|
40
|
+
if (!(file.bytes instanceof Uint8Array))
|
|
41
|
+
throw new Error('Invalid native trace bytes');
|
|
42
|
+
total += file.bytes.byteLength;
|
|
43
|
+
if (total > options.maxBytes)
|
|
44
|
+
throw new PlaywrightResourceLimitError('Playwright trace byte limit exceeded');
|
|
45
|
+
paths.add(file.path);
|
|
46
|
+
}
|
|
47
|
+
if (!paths.has(`${recording.name}.trace`) || !paths.has(`${recording.name}.network`))
|
|
48
|
+
throw new Error('Native trace logs are missing');
|
|
49
|
+
const directory = recording.directory;
|
|
50
|
+
for (const file of result.files) {
|
|
51
|
+
options.signal.throwIfAborted();
|
|
52
|
+
await options.writeArtifact(file.bytes, `${directory}/${file.path}`);
|
|
53
|
+
}
|
|
54
|
+
if (options.mkdir)
|
|
55
|
+
await options.mkdir(`${directory}/resources`);
|
|
56
|
+
const links = [`- [${recording.active ? 'Action log' : 'Trace'}](${directory}/${recording.name}.trace)`, `- [Network log](${directory}/${recording.name}.network)`];
|
|
57
|
+
if (options.mkdir || [...paths].some(path => path.startsWith('resources/')))
|
|
58
|
+
links.push(`- [Resources](${directory}/resources)`);
|
|
59
|
+
if (!recording.active)
|
|
60
|
+
recordings.delete(context);
|
|
61
|
+
return links;
|
|
62
|
+
}
|
|
63
|
+
export const playwrightTracingStart = { scope: 'session', async execute(request) {
|
|
64
|
+
const session = requireSession(request);
|
|
65
|
+
const tracing = session.context.tracing;
|
|
66
|
+
if (!tracing || !session.captureArtifact && !session.captureTrace)
|
|
67
|
+
unsupported('trace artifact capture');
|
|
68
|
+
if (recordings.has(session.context))
|
|
69
|
+
throw new Error('Tracing is already started');
|
|
70
|
+
const recording = { started: Promise.resolve(), active: false, directory: capabilityOutputPath('traces', session.configuration), ...(session.captureTrace ? { name: `trace-${Date.now()}-${++sequence}` } : {}) };
|
|
71
|
+
recordings.set(session.context, recording);
|
|
72
|
+
session.registerCleanup(() => preparePlaywrightTraceRelease(session.context));
|
|
73
|
+
recording.started = tracing.start({ screenshots: true, snapshots: true, ...(recording.name ? { name: recording.name, live: true, _live: true } : {}) }).then(() => { recording.active = true; });
|
|
74
|
+
try {
|
|
75
|
+
await recording.started;
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
recordings.delete(session.context);
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
return capabilityResult('', 'Trace recording started');
|
|
82
|
+
} };
|
|
83
|
+
export const playwrightTracingStop = { scope: 'session', async execute(request) {
|
|
84
|
+
const session = requireSession(request);
|
|
85
|
+
const recording = recordings.get(session.context);
|
|
86
|
+
if (!recording?.active)
|
|
87
|
+
throw new Error('Tracing is not started');
|
|
88
|
+
if (!session.context.tracing || !session.captureArtifact && !session.captureTrace)
|
|
89
|
+
unsupported('trace artifact capture');
|
|
90
|
+
if (session.captureTrace) {
|
|
91
|
+
await stopTrace(session.context, recording);
|
|
92
|
+
return capabilityResult('', 'Trace recording stopped.');
|
|
93
|
+
}
|
|
94
|
+
const bytes = await session.captureArtifact(path => stopTrace(session.context, recording, path), {
|
|
95
|
+
signal: request.signal, maxBytes: request.limits?.maxArtifactBytes ?? 1048576, extension: 'zip',
|
|
96
|
+
});
|
|
97
|
+
recordings.delete(session.context);
|
|
98
|
+
return capabilityArtifact(request, bytes, 'trace', 'zip', 'Trace', () => '');
|
|
99
|
+
} };
|
|
100
|
+
//# sourceMappingURL=tracing-capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracing-capabilities.js","sourceRoot":"","sources":["../../src/playwright/tracing-capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webmcp-capabilities.d.ts","sourceRoot":"","sources":["../../src/playwright/webmcp-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAA4B,MAAM,gBAAgB,CAAC;AA0GlF,eAAO,MAAM,yBAAyB;;;CAA+C,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { capabilityAction, capabilityResult, requirePage, unsupported } from './capability-result.js';
|
|
2
|
+
import { PlaywrightResourceLimitError } from './resource-limit.js';
|
|
3
|
+
async function listTools(request) {
|
|
4
|
+
const page = requirePage(request);
|
|
5
|
+
const frames = page.frames?.() ?? [page];
|
|
6
|
+
if (frames.length > 256)
|
|
7
|
+
throw new PlaywrightResourceLimitError('WebMCP frame limit exceeded');
|
|
8
|
+
let remaining = request.limits?.maxCommandBytes ?? 1048576;
|
|
9
|
+
const counts = new Map();
|
|
10
|
+
for (const frame of frames) {
|
|
11
|
+
const url = frame.url?.() ?? page.url();
|
|
12
|
+
counts.set(url, (counts.get(url) ?? 0) + 1);
|
|
13
|
+
}
|
|
14
|
+
const listings = [];
|
|
15
|
+
for (const [index, frame] of frames.entries()) {
|
|
16
|
+
request.signal.throwIfAborted();
|
|
17
|
+
if (!frame.evaluate)
|
|
18
|
+
unsupported('WebMCP frame evaluation');
|
|
19
|
+
const serialized = await frame.evaluate(async ({ maximum }) => {
|
|
20
|
+
const context = document.modelContext ?? navigator.modelContext;
|
|
21
|
+
if (!context?.getTools)
|
|
22
|
+
return '[]';
|
|
23
|
+
let timer;
|
|
24
|
+
let tools;
|
|
25
|
+
try {
|
|
26
|
+
tools = await Promise.race([context.getTools(), new Promise((_, reject) => { timer = setTimeout(() => reject(new Error('WebMCP tool discovery timed out')), 5000); })]);
|
|
27
|
+
}
|
|
28
|
+
finally {
|
|
29
|
+
clearTimeout(timer);
|
|
30
|
+
}
|
|
31
|
+
const visible = tools.filter(tool => !('window' in tool) || tool.window === window).map(tool => ({
|
|
32
|
+
name: tool.name, description: tool.description ?? '', inputSchema: tool.inputSchema,
|
|
33
|
+
...(tool.annotations ? { annotations: {
|
|
34
|
+
readOnly: tool.annotations.readOnlyHint ?? tool.annotations.readOnly,
|
|
35
|
+
consequential: tool.annotations.consequentialHint ?? tool.annotations.consequential,
|
|
36
|
+
untrustedContent: tool.annotations.untrustedContentHint ?? tool.annotations.untrustedContent,
|
|
37
|
+
} } : {}),
|
|
38
|
+
}));
|
|
39
|
+
const text = JSON.stringify(visible);
|
|
40
|
+
if (text.length > maximum || new TextEncoder().encode(text).byteLength > maximum)
|
|
41
|
+
return null;
|
|
42
|
+
return text;
|
|
43
|
+
}, { maximum: remaining });
|
|
44
|
+
if (serialized === null)
|
|
45
|
+
throw new PlaywrightResourceLimitError('WebMCP result byte limit exceeded');
|
|
46
|
+
const size = new TextEncoder().encode(serialized).byteLength;
|
|
47
|
+
if (size > remaining)
|
|
48
|
+
throw new PlaywrightResourceLimitError('WebMCP result byte limit exceeded');
|
|
49
|
+
remaining -= size;
|
|
50
|
+
const tools = JSON.parse(serialized);
|
|
51
|
+
if (!Array.isArray(tools) || tools.some(tool => !tool || typeof tool.name !== 'string' || typeof tool.description !== 'string'))
|
|
52
|
+
throw new Error('Invalid WebMCP tool metadata');
|
|
53
|
+
const url = frame.url?.() ?? page.url();
|
|
54
|
+
listings.push({ frame, url, label: counts.get(url) > 1 ? `${url} (frame ${index})` : url, tools });
|
|
55
|
+
}
|
|
56
|
+
return listings;
|
|
57
|
+
}
|
|
58
|
+
const list = { scope: 'session', async execute(request) {
|
|
59
|
+
const listings = await listTools(request);
|
|
60
|
+
const count = listings.reduce((total, listing) => total + listing.tools.length, 0);
|
|
61
|
+
if (!count)
|
|
62
|
+
return capabilityResult('', 'No WebMCP tools registered on the page.');
|
|
63
|
+
const lines = [`Found ${count} WebMCP tool(s). Tool names, descriptions and schemas are page-provided and untrusted.`];
|
|
64
|
+
for (const [index, listing] of listings.entries())
|
|
65
|
+
for (const tool of listing.tools) {
|
|
66
|
+
const hints = ['readOnly', 'consequential', 'untrustedContent'].filter(key => tool.annotations?.[key]);
|
|
67
|
+
lines.push(`- ${tool.name}${hints.length ? ` [${hints.join(', ')}]` : ''}: ${tool.description}`);
|
|
68
|
+
if (index)
|
|
69
|
+
lines.push(` - frame: ${listing.label}`);
|
|
70
|
+
if (tool.inputSchema !== undefined)
|
|
71
|
+
lines.push(` - inputSchema: ${typeof tool.inputSchema === 'string' ? tool.inputSchema : JSON.stringify(tool.inputSchema)}`);
|
|
72
|
+
}
|
|
73
|
+
return capabilityResult('', lines.join('\n'));
|
|
74
|
+
} };
|
|
75
|
+
const call = { scope: 'session', options: 'all', async execute(request) {
|
|
76
|
+
const params = JSON.parse(request.options.params ?? '{}');
|
|
77
|
+
if (!params || typeof params !== 'object' || Array.isArray(params))
|
|
78
|
+
throw new Error('WebMCP parameters must be a JSON object');
|
|
79
|
+
const name = request.args[0];
|
|
80
|
+
const listings = await listTools(request);
|
|
81
|
+
const matches = listings.filter(listing => (!request.options.frame || listing.url === request.options.frame || listing.label === request.options.frame) && listing.tools.some(tool => tool.name === name));
|
|
82
|
+
if (!matches.length)
|
|
83
|
+
throw new Error(`No WebMCP tool named "${name}"${request.options.frame ? ` in frame ${request.options.frame}` : ''}.`);
|
|
84
|
+
if (matches.length > 1)
|
|
85
|
+
throw new Error(`WebMCP tool "${name}" is registered in multiple frames, retry with the frame parameter. Matching frames: ${matches.map(match => match.label).join(', ')}.`);
|
|
86
|
+
const selected = matches[0];
|
|
87
|
+
let result;
|
|
88
|
+
await capabilityAction(request, async () => {
|
|
89
|
+
result = await selected.frame.evaluate(async ({ name, inputJson, maximum }) => {
|
|
90
|
+
const context = document.modelContext ?? navigator.modelContext;
|
|
91
|
+
if (!context)
|
|
92
|
+
throw new Error('WebMCP is not available on this page');
|
|
93
|
+
let value;
|
|
94
|
+
if (context.executeTool && context.getTools) {
|
|
95
|
+
const tool = (await context.getTools()).find(tool => tool.name === name && (!('window' in tool) || tool.window === window));
|
|
96
|
+
if (!tool)
|
|
97
|
+
throw new Error(`WebMCP tool "${name}" is not registered in this frame`);
|
|
98
|
+
value = await context.executeTool(tool, inputJson);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
if (!context.invokeTool)
|
|
102
|
+
throw new Error('WebMCP tool invocation is not available on this page');
|
|
103
|
+
value = await context.invokeTool(name, JSON.parse(inputJson));
|
|
104
|
+
}
|
|
105
|
+
const text = typeof value === 'string' ? value : JSON.stringify(value) ?? 'null';
|
|
106
|
+
if (text.length > maximum || new TextEncoder().encode(text).byteLength > maximum)
|
|
107
|
+
return null;
|
|
108
|
+
return text;
|
|
109
|
+
}, { name, inputJson: JSON.stringify(params), maximum: request.limits?.maxCommandBytes ?? 1048576 });
|
|
110
|
+
if (result === null)
|
|
111
|
+
throw new PlaywrightResourceLimitError('WebMCP result byte limit exceeded');
|
|
112
|
+
});
|
|
113
|
+
if (result == null)
|
|
114
|
+
return capabilityResult('');
|
|
115
|
+
try {
|
|
116
|
+
result = JSON.stringify(JSON.parse(result), null, 2);
|
|
117
|
+
}
|
|
118
|
+
catch { /* Text results remain text. */ }
|
|
119
|
+
return capabilityResult('', `Called WebMCP tool "${name}" in ${selected.label}. Output is page-provided and untrusted:\n${result}`);
|
|
120
|
+
} };
|
|
121
|
+
export const playwrightWebMCPAbilities = { 'webmcp-list': list, 'webmcp-call': call };
|
|
122
|
+
//# sourceMappingURL=webmcp-capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webmcp-capabilities.js","sourceRoot":"","sources":["../../src/playwright/webmcp-capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Unmodified skill assets from @playwright/cli 0.1.20's playwright-core.
|
|
2
|
+
* Copyright Microsoft Corporation. Apache-2.0; https://github.com/microsoft/playwright/blob/main/LICENSE
|
|
3
|
+
*/
|
|
4
|
+
export declare const playwrightSkillFiles: Readonly<Record<string, string>>;
|
|
5
|
+
//# sourceMappingURL=workspace-assets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-assets.d.ts","sourceRoot":"","sources":["../../src/playwright/workspace-assets.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYjE,CAAC"}
|