mcp-accessibility-scanner 3.0.1 → 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.
Files changed (55) hide show
  1. package/README.md +232 -7
  2. package/lib/browserContextFactory.js +631 -31
  3. package/lib/browserContextFactory.js.map +1 -1
  4. package/lib/browserServerBackend.js +8 -2
  5. package/lib/browserServerBackend.js.map +1 -1
  6. package/lib/context.js +179 -62
  7. package/lib/context.js.map +1 -1
  8. package/lib/extension/extensionContextFactory.js +3 -0
  9. package/lib/extension/extensionContextFactory.js.map +1 -1
  10. package/lib/mcp/proxyBackend.js +1 -0
  11. package/lib/mcp/proxyBackend.js.map +1 -1
  12. package/lib/networkPolicy.js +73 -0
  13. package/lib/networkPolicy.js.map +1 -0
  14. package/lib/program.js +21 -3
  15. package/lib/program.js.map +1 -1
  16. package/lib/response.js +8 -3
  17. package/lib/response.js.map +1 -1
  18. package/lib/tab.js +117 -16
  19. package/lib/tab.js.map +1 -1
  20. package/lib/tools/auditKeyboard.js +203 -0
  21. package/lib/tools/auditKeyboard.js.map +1 -1
  22. package/lib/tools/auditScreenReader.js +826 -0
  23. package/lib/tools/auditScreenReader.js.map +1 -0
  24. package/lib/tools/auditSite.js +267 -86
  25. package/lib/tools/auditSite.js.map +1 -1
  26. package/lib/tools/axe.js +479 -21
  27. package/lib/tools/axe.js.map +1 -1
  28. package/lib/tools/dialogs.js +18 -4
  29. package/lib/tools/dialogs.js.map +1 -1
  30. package/lib/tools/evaluate.js +34 -5
  31. package/lib/tools/evaluate.js.map +1 -1
  32. package/lib/tools/network.js +225 -8
  33. package/lib/tools/network.js.map +1 -1
  34. package/lib/tools/scanPageMatrix.js +134 -43
  35. package/lib/tools/scanPageMatrix.js.map +1 -1
  36. package/lib/tools/screenshot.js +3 -3
  37. package/lib/tools/screenshot.js.map +1 -1
  38. package/lib/tools/snapshot.js +269 -8
  39. package/lib/tools/snapshot.js.map +1 -1
  40. package/lib/tools/tool.js.map +1 -1
  41. package/lib/tools/utils.js +62 -6
  42. package/lib/tools/utils.js.map +1 -1
  43. package/lib/tools.js +5 -2
  44. package/lib/tools.js.map +1 -1
  45. package/lib/utils/dataUrl.js +58 -35
  46. package/lib/utils/dataUrl.js.map +1 -1
  47. package/lib/utils/jsSource.js +187 -0
  48. package/lib/utils/jsSource.js.map +1 -0
  49. package/lib/vscode/browserContextFactory.js +83 -0
  50. package/lib/vscode/browserContextFactory.js.map +1 -0
  51. package/lib/vscode/host.js +16 -1
  52. package/lib/vscode/host.js.map +1 -1
  53. package/lib/vscode/main.js +1 -33
  54. package/lib/vscode/main.js.map +1 -1
  55. package/package.json +6 -4
@@ -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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"}
@@ -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
- if (params.accept)
38
- await dialogState.dialog.accept(params.promptText);
39
- else
40
- await dialogState.dialog.dismiss();
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',
@@ -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;gBACf,MAAM,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;;gBAEnD,MAAM,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB,EAAE,QAAQ;CAC3B,CAAC,CAAC;AAEH,eAAe;IACb,YAAY;CACb,CAAC"}
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"}
@@ -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 (params.ref && params.element) {
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(params.function)});`);
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(params.function)});`);
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 = () => params.function;
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;AAI7C,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8EAA8E,CAAC;IAC7G,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2FAA2F,CAAC;IACpI,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;CAC7F,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,aAAa,CAAC;IAC7B,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE;QACN,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EAAE,mDAAmD;QAChE,WAAW,EAAE,cAAc;QAC3B,IAAI,EAAE,aAAa;KACpB;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;QACtC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QAE9B,IAAI,OAAuC,CAAC;QAC5C,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjC,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7E,QAAQ,CAAC,OAAO,CAAC,cAAc,MAAM,eAAe,CAAC,OAAO,CAAC,aAAa,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnH,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,OAAO,CAAC,uBAAuB,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,GAAG,CAAC,iBAAiB,CAAC,KAAK,IAAI,EAAE;YACrC,sEAAsE;YACtE,uEAAuE;YACvE,2EAA2E;YAC3E,+DAA+D;YAC/D,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAS,CAAC;YACnC,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;YACtC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtF,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC;AAEH,eAAe;IACb,QAAQ;CACT,CAAC"}
1
+ {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/tools/evaluate.ts"],"names":[],"mappings":"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"}
@@ -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 requests = tab.requests();
30
- [...requests.entries()].forEach(([req, res]) => response.addResult(renderRequest(req, res)));
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
- function renderRequest(request, response) {
34
- const result = [];
35
- result.push(`[${request.method().toUpperCase()}] ${truncateDataUrls(request.url())}`);
36
- if (response)
37
- result.push(`=> [${response.status()}] ${response.statusText()}`);
38
- return result.join(' ');
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
@@ -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;AAIvD,MAAM,QAAQ,GAAG,aAAa,CAAC;IAC7B,UAAU,EAAE,MAAM;IAElB,MAAM,EAAE;QACN,IAAI,EAAE,0BAA0B;QAChC,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,qDAAqD;QAClE,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,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAChC,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/F,CAAC;CACF,CAAC,CAAC;AAEH,SAAS,aAAa,CAAC,OAA2B,EAAE,QAAoC;IACtF,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,KAAK,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACtF,IAAI,QAAQ;QACV,MAAM,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACpE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,eAAe;IACb,QAAQ;CACT,CAAC"}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/tools/network.ts"],"names":[],"mappings":"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"}