mcp-accessibility-scanner 3.0.0 → 3.1.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.
- package/README.md +232 -7
- package/lib/browserContextFactory.js +645 -32
- package/lib/browserContextFactory.js.map +1 -1
- package/lib/browserServerBackend.js +8 -2
- package/lib/browserServerBackend.js.map +1 -1
- package/lib/context.js +179 -62
- package/lib/context.js.map +1 -1
- package/lib/extension/extensionContextFactory.js +3 -0
- package/lib/extension/extensionContextFactory.js.map +1 -1
- package/lib/mcp/proxyBackend.js +1 -0
- package/lib/mcp/proxyBackend.js.map +1 -1
- package/lib/networkPolicy.js +73 -0
- package/lib/networkPolicy.js.map +1 -0
- package/lib/program.js +21 -3
- package/lib/program.js.map +1 -1
- package/lib/response.js +8 -3
- package/lib/response.js.map +1 -1
- package/lib/tab.js +117 -16
- package/lib/tab.js.map +1 -1
- package/lib/tools/auditKeyboard.js +203 -0
- package/lib/tools/auditKeyboard.js.map +1 -1
- package/lib/tools/auditScreenReader.js +826 -0
- package/lib/tools/auditScreenReader.js.map +1 -0
- package/lib/tools/auditSite.js +267 -86
- package/lib/tools/auditSite.js.map +1 -1
- package/lib/tools/axe.js +479 -21
- package/lib/tools/axe.js.map +1 -1
- package/lib/tools/dialogs.js +18 -4
- package/lib/tools/dialogs.js.map +1 -1
- package/lib/tools/evaluate.js +34 -5
- package/lib/tools/evaluate.js.map +1 -1
- package/lib/tools/keyboard.js +1 -2
- package/lib/tools/keyboard.js.map +1 -1
- package/lib/tools/navigate.js +2 -1
- package/lib/tools/navigate.js.map +1 -1
- package/lib/tools/network.js +225 -8
- package/lib/tools/network.js.map +1 -1
- package/lib/tools/scanPageMatrix.js +134 -43
- package/lib/tools/scanPageMatrix.js.map +1 -1
- package/lib/tools/screenshot.js +3 -3
- package/lib/tools/screenshot.js.map +1 -1
- package/lib/tools/snapshot.js +269 -8
- package/lib/tools/snapshot.js.map +1 -1
- package/lib/tools/tool.js.map +1 -1
- package/lib/tools/utils.js +62 -6
- package/lib/tools/utils.js.map +1 -1
- package/lib/tools.js +5 -2
- package/lib/tools.js.map +1 -1
- package/lib/utils/dataUrl.js +58 -35
- package/lib/utils/dataUrl.js.map +1 -1
- package/lib/utils/jsSource.js +187 -0
- package/lib/utils/jsSource.js.map +1 -0
- package/lib/vscode/browserContextFactory.js +83 -0
- package/lib/vscode/browserContextFactory.js.map +1 -0
- package/lib/vscode/host.js +16 -1
- package/lib/vscode/host.js.map +1 -1
- package/lib/vscode/main.js +1 -33
- package/lib/vscode/main.js.map +1 -1
- package/package.json +6 -4
package/lib/tools/axe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axe.js","sourceRoot":"","sources":["../../src/tools/axe.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"axe.js","sourceRoot":"","sources":["../../src/tools/axe.ts"],"names":[],"mappings":"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"}
|
package/lib/tools/dialogs.js
CHANGED
|
@@ -15,6 +15,13 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { z } from 'zod';
|
|
17
17
|
import { defineTabTool } from './tool.js';
|
|
18
|
+
// A dialog closed out of band (dismissed manually in headed mode, or through a
|
|
19
|
+
// CDP side-channel) fails accept()/dismiss() with one of these messages — the
|
|
20
|
+
// protocol error on the first attempt, the client-side guard on a repeat
|
|
21
|
+
// (both verified against Playwright 1.62.0 Chromium). The pinned Playwright
|
|
22
|
+
// has no dialogclosed event to observe the close directly, so this error is
|
|
23
|
+
// the only remaining signal that the dialog is already gone.
|
|
24
|
+
const dialogAlreadyClosedError = /no dialog is showing|dialog which is already handled/i;
|
|
18
25
|
const handleDialog = defineTabTool({
|
|
19
26
|
capability: 'core',
|
|
20
27
|
schema: {
|
|
@@ -34,10 +41,17 @@ const handleDialog = defineTabTool({
|
|
|
34
41
|
throw new Error('No dialog visible');
|
|
35
42
|
tab.clearModalState(dialogState);
|
|
36
43
|
await tab.waitForCompletion(async () => {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
44
|
+
try {
|
|
45
|
+
if (params.accept)
|
|
46
|
+
await dialogState.dialog.accept(params.promptText);
|
|
47
|
+
else
|
|
48
|
+
await dialogState.dialog.dismiss();
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
if (!(error instanceof Error) || !dialogAlreadyClosedError.test(error.message))
|
|
52
|
+
throw error;
|
|
53
|
+
response.addResult('The dialog was already closed out of band; cleared its leftover state.');
|
|
54
|
+
}
|
|
41
55
|
});
|
|
42
56
|
},
|
|
43
57
|
clearsModalState: 'dialog',
|
package/lib/tools/dialogs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialogs.js","sourceRoot":"","sources":["../../src/tools/dialogs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,YAAY,GAAG,aAAa,CAAC;IACjC,UAAU,EAAE,MAAM;IAElB,MAAM,EAAE;QACN,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,iBAAiB;QAC9B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YAC7D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;SACjG,CAAC;QACF,IAAI,EAAE,aAAa;KACpB;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;QACtC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QAE9B,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAC7E,IAAI,CAAC,WAAW;YACd,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAEvC,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACjC,MAAM,GAAG,CAAC,iBAAiB,CAAC,KAAK,IAAI,EAAE;YACrC,IAAI,MAAM,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"dialogs.js","sourceRoot":"","sources":["../../src/tools/dialogs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,+EAA+E;AAC/E,8EAA8E;AAC9E,yEAAyE;AACzE,4EAA4E;AAC5E,4EAA4E;AAC5E,6DAA6D;AAC7D,MAAM,wBAAwB,GAAG,uDAAuD,CAAC;AAEzF,MAAM,YAAY,GAAG,aAAa,CAAC;IACjC,UAAU,EAAE,MAAM;IAElB,MAAM,EAAE;QACN,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,iBAAiB;QAC9B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YAC7D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;SACjG,CAAC;QACF,IAAI,EAAE,aAAa;KACpB;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;QACtC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QAE9B,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAC7E,IAAI,CAAC,WAAW;YACd,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAEvC,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACjC,MAAM,GAAG,CAAC,iBAAiB,CAAC,KAAK,IAAI,EAAE;YACrC,IAAI,CAAC;gBACH,IAAI,MAAM,CAAC,MAAM;oBACf,MAAM,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;;oBAEnD,MAAM,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACvC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC5E,MAAM,KAAK,CAAC;gBACd,QAAQ,CAAC,SAAS,CAAC,wEAAwE,CAAC,CAAC;YAC/F,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB,EAAE,QAAQ;CAC3B,CAAC,CAAC;AAEH,eAAe;IACb,YAAY;CACb,CAAC"}
|
package/lib/tools/evaluate.js
CHANGED
|
@@ -17,10 +17,16 @@ import { z } from 'zod';
|
|
|
17
17
|
import { defineTabTool } from './tool.js';
|
|
18
18
|
import * as javascript from '../utils/codegen.js';
|
|
19
19
|
import { generateLocator } from './utils.js';
|
|
20
|
+
import { isFunctionSource } from '../utils/jsSource.js';
|
|
20
21
|
const evaluateSchema = z.object({
|
|
21
|
-
function: z.string().describe('() => { /* code */ } or (element) => { /* code */ } when element is provided'),
|
|
22
|
+
function: z.string().describe('() => { /* code */ } or (element) => { /* code */ } when element is provided. A bare expression such as document.title, or element.textContent when element is provided, is also accepted.'),
|
|
22
23
|
element: z.string().optional().describe('Human-readable element description used to obtain permission to interact with the element'),
|
|
23
24
|
ref: z.string().optional().describe('Exact target element reference from the page snapshot'),
|
|
25
|
+
}).refine(data => {
|
|
26
|
+
return !!data.element === !!data.ref;
|
|
27
|
+
}, {
|
|
28
|
+
message: 'Both element and ref must be provided or neither.',
|
|
29
|
+
path: ['ref', 'element'],
|
|
24
30
|
});
|
|
25
31
|
const evaluate = defineTabTool({
|
|
26
32
|
capability: 'core',
|
|
@@ -33,13 +39,16 @@ const evaluate = defineTabTool({
|
|
|
33
39
|
},
|
|
34
40
|
handle: async (tab, params, response) => {
|
|
35
41
|
response.setIncludeSnapshot();
|
|
42
|
+
// The schema pairs them, so one implies the other.
|
|
43
|
+
const onElement = !!params.ref;
|
|
44
|
+
const source = toFunctionSource(params.function, onElement);
|
|
36
45
|
let locator;
|
|
37
|
-
if (
|
|
46
|
+
if (onElement) {
|
|
38
47
|
locator = await tab.refLocator({ ref: params.ref, element: params.element });
|
|
39
|
-
response.addCode(`await page.${await generateLocator(locator)}.evaluate(${javascript.quote(
|
|
48
|
+
response.addCode(`await page.${await generateLocator(locator)}.evaluate(${javascript.quote(source)});`);
|
|
40
49
|
}
|
|
41
50
|
else {
|
|
42
|
-
response.addCode(`await page.evaluate(${javascript.quote(
|
|
51
|
+
response.addCode(`await page.evaluate(${javascript.quote(source)});`);
|
|
43
52
|
}
|
|
44
53
|
await tab.waitForCompletion(async () => {
|
|
45
54
|
// playwright-core 1.59 removed the private `_evaluateFunction` helper
|
|
@@ -47,12 +56,32 @@ const evaluate = defineTabTool({
|
|
|
47
56
|
// argument via `Function.prototype.toString`, so hand it an empty function
|
|
48
57
|
// whose `toString()` returns the user-supplied source instead.
|
|
49
58
|
const func = new Function();
|
|
50
|
-
func.toString = () =>
|
|
59
|
+
func.toString = () => source;
|
|
51
60
|
const result = locator ? await locator.evaluate(func) : await tab.page.evaluate(func);
|
|
52
61
|
response.addResult(JSON.stringify(result, null, 2) || 'undefined');
|
|
53
62
|
});
|
|
54
63
|
},
|
|
55
64
|
});
|
|
65
|
+
/**
|
|
66
|
+
* `evaluate()` needs a function, but callers routinely pass a bare expression
|
|
67
|
+
* such as `document.title`. Wrap anything that is not already a function form.
|
|
68
|
+
*
|
|
69
|
+
* The decision is made from the source form and never from the runtime type of
|
|
70
|
+
* the result: `window.open` is an expression that happens to evaluate to a
|
|
71
|
+
* function, and it must be returned rather than called.
|
|
72
|
+
*/
|
|
73
|
+
export function toFunctionSource(source, onElement) {
|
|
74
|
+
if (isFunctionSource(source))
|
|
75
|
+
return source;
|
|
76
|
+
// A trailing `;` would turn the expression into a statement.
|
|
77
|
+
const expression = source.replace(/[\s;]+$/, '');
|
|
78
|
+
if (!expression.trim())
|
|
79
|
+
throw new Error('The "function" argument is empty. Pass a function such as `() => document.title`, or an expression such as `document.title`.');
|
|
80
|
+
// The parentheses keep an object literal such as `{ a: 1 }` from parsing as a
|
|
81
|
+
// block and a comma expression from splitting into two arguments; the
|
|
82
|
+
// newlines keep a trailing `// comment` from swallowing the closing paren.
|
|
83
|
+
return onElement ? `(element) => (\n${expression}\n)` : `() => (\n${expression}\n)`;
|
|
84
|
+
}
|
|
56
85
|
export default [
|
|
57
86
|
evaluate,
|
|
58
87
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/tools/evaluate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/tools/evaluate.ts"],"names":[],"mappings":"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"}
|
package/lib/tools/keyboard.js
CHANGED
|
@@ -31,8 +31,7 @@ const pressKey = defineTabTool({
|
|
|
31
31
|
},
|
|
32
32
|
handle: async (tab, params, response) => {
|
|
33
33
|
response.setIncludeSnapshot();
|
|
34
|
-
response.addCode(
|
|
35
|
-
response.addCode(`await page.keyboard.press('${params.key}');`);
|
|
34
|
+
response.addCode(`await page.keyboard.press(${javascript.quote(params.key)});`);
|
|
36
35
|
await tab.waitForCompletion(async () => {
|
|
37
36
|
await tab.page.keyboard.press(params.key);
|
|
38
37
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../../src/tools/keyboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAElD,MAAM,QAAQ,GAAG,aAAa,CAAC;IAC7B,UAAU,EAAE,MAAM;IAElB,MAAM,EAAE;QACN,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,6BAA6B;QAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iFAAiF,CAAC;SAC5G,CAAC;QACF,IAAI,EAAE,aAAa;KACpB;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;QACtC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QAC9B,QAAQ,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../../src/tools/keyboard.ts"],"names":[],"mappings":"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"}
|
package/lib/tools/navigate.js
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { z } from 'zod';
|
|
17
17
|
import { defineTool, defineTabTool } from './tool.js';
|
|
18
|
+
import * as javascript from '../utils/codegen.js';
|
|
18
19
|
const navigate = defineTool({
|
|
19
20
|
capability: 'core',
|
|
20
21
|
schema: {
|
|
@@ -30,7 +31,7 @@ const navigate = defineTool({
|
|
|
30
31
|
const tab = await context.ensureTab();
|
|
31
32
|
await tab.navigate(params.url);
|
|
32
33
|
response.setIncludeSnapshot();
|
|
33
|
-
response.addCode(`await page.goto(
|
|
34
|
+
response.addCode(`await page.goto(${javascript.quote(params.url)});`);
|
|
34
35
|
},
|
|
35
36
|
});
|
|
36
37
|
const goBack = defineTabTool({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigate.js","sourceRoot":"","sources":["../../src/tools/navigate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"navigate.js","sourceRoot":"","sources":["../../src/tools/navigate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAElD,MAAM,QAAQ,GAAG,UAAU,CAAC;IAC1B,UAAU,EAAE,MAAM;IAElB,MAAM,EAAE;QACN,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;SACnD,CAAC;QACF,IAAI,EAAE,aAAa;KACpB;IAED,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;QAC1C,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE/B,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QAC9B,QAAQ,CAAC,OAAO,CAAC,mBAAmB,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,aAAa,CAAC;IAC3B,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE;QACN,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,8BAA8B;QAC3C,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,IAAI,EAAE,UAAU;KACjB;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;QACtC,4EAA4E;QAC5E,2EAA2E;QAC3E,qEAAqE;QACrE,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1C,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QAC9B,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC3C,CAAC;CACF,CAAC,CAAC;AAEH,eAAe;IACb,QAAQ;IACR,MAAM;CACP,CAAC"}
|
package/lib/tools/network.js
CHANGED
|
@@ -16,6 +16,9 @@
|
|
|
16
16
|
import { z } from 'zod';
|
|
17
17
|
import { defineTabTool } from './tool.js';
|
|
18
18
|
import { truncateDataUrls } from '../utils/dataUrl.js';
|
|
19
|
+
// Bodies land in the model's context verbatim, so cap what a single detail call
|
|
20
|
+
// can contribute. Anything longer is reported as truncated rather than dropped.
|
|
21
|
+
export const maxBodyLength = 20000;
|
|
19
22
|
const requests = defineTabTool({
|
|
20
23
|
capability: 'core',
|
|
21
24
|
schema: {
|
|
@@ -26,18 +29,232 @@ const requests = defineTabTool({
|
|
|
26
29
|
type: 'readOnly',
|
|
27
30
|
},
|
|
28
31
|
handle: async (tab, params, response) => {
|
|
29
|
-
const
|
|
30
|
-
|
|
32
|
+
const entries = [...tab.requests().entries()];
|
|
33
|
+
entries.forEach(([req, res], index) => response.addResult(renderRequest(index + 1, req, res)));
|
|
34
|
+
if (entries.length)
|
|
35
|
+
response.addResult('\nCall browser_network_request with one of the indexes above to see the headers and response body of that request.');
|
|
31
36
|
},
|
|
32
37
|
});
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
const requestDetails = defineTabTool({
|
|
39
|
+
capability: 'core',
|
|
40
|
+
schema: {
|
|
41
|
+
name: 'browser_network_request',
|
|
42
|
+
title: 'Get network request details',
|
|
43
|
+
description: 'Returns the request headers, response headers and response body of a single network request listed by browser_network_requests',
|
|
44
|
+
inputSchema: z.object({
|
|
45
|
+
index: z.number().int().min(1).describe('Index of the request in the browser_network_requests listing, starting at 1'),
|
|
46
|
+
}),
|
|
47
|
+
type: 'readOnly',
|
|
48
|
+
},
|
|
49
|
+
handle: async (tab, params, response) => {
|
|
50
|
+
const entries = [...tab.requests().entries()];
|
|
51
|
+
const entry = entries[params.index - 1];
|
|
52
|
+
if (!entry) {
|
|
53
|
+
response.addError(entries.length
|
|
54
|
+
? `Error: No network request with index ${params.index}. The current list is numbered 1 to ${entries.length}; run browser_network_requests for the up-to-date list.`
|
|
55
|
+
: 'Error: No network requests have been recorded since the page was loaded.');
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// Every read that can block lives here, bounded by the tab's page-state
|
|
59
|
+
// timeout; the rendering below is pure so it can be tested with plain data.
|
|
60
|
+
const [request, res] = entry;
|
|
61
|
+
const details = {
|
|
62
|
+
index: params.index,
|
|
63
|
+
request,
|
|
64
|
+
requestHeaders: await read(tab, () => request.allHeaders(), 'reading the request headers'),
|
|
65
|
+
response: res,
|
|
66
|
+
responseHeaders: res ? await read(tab, () => res.allHeaders(), 'reading the response headers') : undefined,
|
|
67
|
+
responseBody: res ? await read(tab, () => res.body(), 'reading the response body') : undefined,
|
|
68
|
+
};
|
|
69
|
+
for (const line of renderRequestDetails(details))
|
|
70
|
+
response.addResult(line);
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
function requestLine(index, request) {
|
|
74
|
+
return `[${index}] [${request.method().toUpperCase()}] ${truncateDataUrls(request.url())}`;
|
|
75
|
+
}
|
|
76
|
+
function renderRequest(index, request, response) {
|
|
77
|
+
const line = requestLine(index, request);
|
|
78
|
+
return response ? `${line} => [${response.status()}] ${response.statusText()}` : line;
|
|
79
|
+
}
|
|
80
|
+
function section(title, lines) {
|
|
81
|
+
return ['', `#### ${title}`, ...lines];
|
|
82
|
+
}
|
|
83
|
+
function renderRequestDetails(details) {
|
|
84
|
+
const { index, request, response } = details;
|
|
85
|
+
const requestHeaders = headersOf(details.requestHeaders);
|
|
86
|
+
const result = [
|
|
87
|
+
`### ${requestLine(index, request)}`,
|
|
88
|
+
...section('Request headers', renderHeaderSection(details.requestHeaders)),
|
|
89
|
+
];
|
|
90
|
+
// `postData()` decodes as UTF-8, which mangles file uploads and protobuf
|
|
91
|
+
// payloads, so go through the buffer and let the same binary check decide.
|
|
92
|
+
const postData = request.postDataBuffer();
|
|
93
|
+
if (postData?.length)
|
|
94
|
+
result.push(...section('Request body', renderBody(postData, contentTypeOf(requestHeaders))));
|
|
95
|
+
// Playwright records a failure on the request even when a response already
|
|
96
|
+
// arrived — a connection reset mid-body is a 200 that never completed.
|
|
97
|
+
const failure = request.failure();
|
|
98
|
+
if (!response)
|
|
99
|
+
return [...result, ...section('Response', [failure ? `The request failed: ${failure.errorText}` : 'The request has not completed yet.'])];
|
|
100
|
+
const responseHeaders = headersOf(details.responseHeaders);
|
|
101
|
+
result.push(...section('Response', [
|
|
102
|
+
`[${response.status()}] ${response.statusText()}`,
|
|
103
|
+
...(failure ? [`The transfer then failed: ${failure.errorText}`] : []),
|
|
104
|
+
]), ...section('Response headers', renderHeaderSection(details.responseHeaders)), ...section('Response body', renderResponseBody(details.responseBody, contentTypeOf(responseHeaders))));
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
107
|
+
// A failed read must not discard what the rest of the report already has.
|
|
108
|
+
async function read(tab, fetch, description) {
|
|
109
|
+
try {
|
|
110
|
+
return { value: await tab.withPageStateTimeout(fetch(), description) };
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
return { error: error instanceof Error ? error.message : String(error) };
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
function headersOf(read) {
|
|
117
|
+
return read && 'value' in read ? read.value : {};
|
|
118
|
+
}
|
|
119
|
+
function renderHeaderSection(read) {
|
|
120
|
+
if (!read)
|
|
121
|
+
return ['<none>'];
|
|
122
|
+
return 'error' in read ? [`<headers unavailable: ${read.error}>`] : renderHeaders(read.value);
|
|
123
|
+
}
|
|
124
|
+
// Credentials must never reach the model's context: this tool is the first one
|
|
125
|
+
// here to surface raw headers, and a session cookie copied into a transcript is
|
|
126
|
+
// as good as leaked. The length keeps the header's presence debuggable.
|
|
127
|
+
const newlines = /\r?\n/g;
|
|
128
|
+
const sensitiveHeaderNames = new Set([
|
|
129
|
+
'authorization',
|
|
130
|
+
'cookie',
|
|
131
|
+
'proxy-authorization',
|
|
132
|
+
'set-cookie',
|
|
133
|
+
'x-api-key',
|
|
134
|
+
'x-auth-token',
|
|
135
|
+
]);
|
|
136
|
+
function renderHeaders(headers) {
|
|
137
|
+
const names = Object.keys(headers).sort();
|
|
138
|
+
if (!names.length)
|
|
139
|
+
return ['<none>'];
|
|
140
|
+
return names.map(name => {
|
|
141
|
+
const value = headers[name];
|
|
142
|
+
if (sensitiveHeaderNames.has(name.toLowerCase()))
|
|
143
|
+
return `${name}: <redacted, ${value.length} characters>`;
|
|
144
|
+
// `allHeaders()` joins repeated headers (`set-cookie` especially) with a
|
|
145
|
+
// newline; keep one line per header so `name: value` stays parseable.
|
|
146
|
+
return `${name}: ${truncateDataUrls(value).replace(newlines, '\\n')}`;
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
function contentTypeOf(headers) {
|
|
150
|
+
// `allHeaders()` joins a repeated header with a comma, so only the first
|
|
151
|
+
// media type and its parameters describe the payload.
|
|
152
|
+
const first = (headers['content-type'] ?? '').split(',')[0];
|
|
153
|
+
return {
|
|
154
|
+
mimeType: first.split(';')[0].trim().toLowerCase(),
|
|
155
|
+
charset: /;\s*charset\s*=\s*"?([^";]*)/i.exec(first)?.[1].trim() ?? '',
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
function renderResponseBody(read, contentType) {
|
|
159
|
+
if (!read)
|
|
160
|
+
return ['<empty>'];
|
|
161
|
+
// Redirects, responses whose body the browser never retained, and bodies
|
|
162
|
+
// still streaming all fail the read; the rest of the report is worth showing.
|
|
163
|
+
return 'error' in read ? [`<body unavailable: ${read.error}>`] : renderBody(read.value, contentType);
|
|
164
|
+
}
|
|
165
|
+
// A body large enough to matter is decoded only up to the cap: a 100MB response
|
|
166
|
+
// must not become a 200MB string, and `toString` throws outright past ~512MB.
|
|
167
|
+
const maxBodyBytes = maxBodyLength * 4;
|
|
168
|
+
function renderBody(body, contentType) {
|
|
169
|
+
if (!body.length)
|
|
170
|
+
return ['<empty>'];
|
|
171
|
+
if (!isTextualMimeType(contentType.mimeType, body))
|
|
172
|
+
return [`<binary data, ${body.length} bytes${contentType.mimeType ? `, ${contentType.mimeType}` : ''}>`];
|
|
173
|
+
// Collapse data: URLs before measuring — doing it after would let the
|
|
174
|
+
// replacement text push the rendered body back over the cap.
|
|
175
|
+
const text = truncateDataUrls(decodeText(body.subarray(0, maxBodyBytes), contentType.charset));
|
|
176
|
+
if (body.length <= maxBodyBytes && text.length <= maxBodyLength)
|
|
177
|
+
return fence(text);
|
|
178
|
+
const shown = sliceWholeCharacters(text, maxBodyLength);
|
|
179
|
+
return [...fence(shown), `<truncated, showing the first ${shown.length} characters of a ${body.length}-byte body>`];
|
|
180
|
+
}
|
|
181
|
+
function decodeText(body, charset) {
|
|
182
|
+
if (!charset || /^utf-?8$/i.test(charset))
|
|
183
|
+
return body.toString('utf8');
|
|
184
|
+
try {
|
|
185
|
+
// Legacy pages really do serve windows-1252 and shift_jis; decoding those
|
|
186
|
+
// as UTF-8 turns the body into replacement characters.
|
|
187
|
+
return new TextDecoder(charset).decode(body);
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
return body.toString('utf8');
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// The body is page-controlled. Fencing it stops a response from forging the
|
|
194
|
+
// `####` sections around it, and the fence is grown past any run of backticks
|
|
195
|
+
// inside so the block still terminates where it should.
|
|
196
|
+
function fence(text) {
|
|
197
|
+
const delimiter = '`'.repeat(Math.max(3, ...[...text.matchAll(/`+/g)].map(match => match[0].length + 1)));
|
|
198
|
+
return [delimiter, text, delimiter];
|
|
199
|
+
}
|
|
200
|
+
// Never cut between the halves of a surrogate pair -- a lone half renders as a
|
|
201
|
+
// replacement character and can corrupt the JSON the response is packed into.
|
|
202
|
+
function sliceWholeCharacters(text, length) {
|
|
203
|
+
const last = text.charCodeAt(length - 1);
|
|
204
|
+
const isHighSurrogate = last >= 0xd800 && last <= 0xdbff;
|
|
205
|
+
return text.slice(0, isHighSurrogate ? length - 1 : length);
|
|
206
|
+
}
|
|
207
|
+
const textualMimeTypes = new Set([
|
|
208
|
+
'application/csv',
|
|
209
|
+
'application/ecmascript',
|
|
210
|
+
'application/graphql',
|
|
211
|
+
'application/javascript',
|
|
212
|
+
'application/json',
|
|
213
|
+
'application/ndjson',
|
|
214
|
+
'application/sql',
|
|
215
|
+
'application/x-ecmascript',
|
|
216
|
+
'application/x-javascript',
|
|
217
|
+
'application/x-ndjson',
|
|
218
|
+
'application/x-sh',
|
|
219
|
+
'application/x-www-form-urlencoded',
|
|
220
|
+
'application/x-yaml',
|
|
221
|
+
'application/xml',
|
|
222
|
+
'application/yaml',
|
|
223
|
+
]);
|
|
224
|
+
const binaryMimePrefixes = ['audio/', 'font/', 'image/', 'model/', 'video/'];
|
|
225
|
+
const binaryMimeTypes = new Set([
|
|
226
|
+
'application/grpc',
|
|
227
|
+
'application/gzip',
|
|
228
|
+
'application/octet-stream',
|
|
229
|
+
'application/pdf',
|
|
230
|
+
'application/protobuf',
|
|
231
|
+
'application/wasm',
|
|
232
|
+
'application/x-gzip',
|
|
233
|
+
'application/x-protobuf',
|
|
234
|
+
'application/x-tar',
|
|
235
|
+
'application/zip',
|
|
236
|
+
]);
|
|
237
|
+
function isTextualMimeType(mimeType, body) {
|
|
238
|
+
if (mimeType.startsWith('text/'))
|
|
239
|
+
return true;
|
|
240
|
+
// Structured syntax suffixes: `image/svg+xml`, `application/ld+json`, ...
|
|
241
|
+
if (mimeType.endsWith('+json') || mimeType.endsWith('+xml') || mimeType.endsWith('+text'))
|
|
242
|
+
return true;
|
|
243
|
+
if (textualMimeTypes.has(mimeType))
|
|
244
|
+
return true;
|
|
245
|
+
if (binaryMimeTypes.has(mimeType) || binaryMimePrefixes.some(prefix => mimeType.startsWith(prefix)))
|
|
246
|
+
return false;
|
|
247
|
+
// Absent or unrecognised type -- `multipart/form-data` posts are the common
|
|
248
|
+
// case, and those are text until a file part makes them otherwise.
|
|
249
|
+
return !looksBinary(body);
|
|
250
|
+
}
|
|
251
|
+
function looksBinary(body) {
|
|
252
|
+
// A NUL byte is the cheapest reliable signal that a payload is not text --
|
|
253
|
+
// UTF-8 encoded text never contains one outside of a deliberate \0.
|
|
254
|
+
return body.subarray(0, 1024).includes(0);
|
|
39
255
|
}
|
|
40
256
|
export default [
|
|
41
257
|
requests,
|
|
258
|
+
requestDetails,
|
|
42
259
|
];
|
|
43
260
|
//# sourceMappingURL=network.js.map
|
package/lib/tools/network.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/tools/network.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/tools/network.ts"],"names":[],"mappings":"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"}
|