Skip to content

Commit 345e09c

Browse files
OzTamirOrKoN
authored andcommitted
docs: generate docs + code formatting
1 parent 04d9bfa commit 345e09c

File tree

6 files changed

+70
-53
lines changed

6 files changed

+70
-53
lines changed

docs/tool-reference.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@
266266

267267
- **pageIdx** (integer) _(optional)_: Page number to return (0-based). When omitted, returns the first page.
268268
- **pageSize** (integer) _(optional)_: Maximum number of requests to return. When omitted, returns all requests.
269+
- **resourceType** (array) _(optional)_: Filter requests by resource type. When omitted, returns all requests.
269270

270271
---
271272

src/McpResponse.ts

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,18 @@ import type {
77
ImageContent,
88
TextContent,
99
} from '@modelcontextprotocol/sdk/types.js';
10-
import type { ResourceType } from 'puppeteer-core';
10+
import type {ResourceType} from 'puppeteer-core';
1111

12-
import { formatConsoleEvent } from './formatters/consoleFormatter.js';
12+
import {formatConsoleEvent} from './formatters/consoleFormatter.js';
1313
import {
1414
getFormattedHeaderValue,
1515
getShortDescriptionForRequest,
1616
getStatusFromRequest,
1717
} from './formatters/networkFormatter.js';
18-
import { formatA11ySnapshot } from './formatters/snapshotFormatter.js';
19-
import type { McpContext } from './McpContext.js';
20-
import type { ImageContentData, Response } from './tools/ToolDefinition.js';
21-
import { paginate, type PaginationOptions } from './utils/pagination.js';
18+
import {formatA11ySnapshot} from './formatters/snapshotFormatter.js';
19+
import type {McpContext} from './McpContext.js';
20+
import type {ImageContentData, Response} from './tools/ToolDefinition.js';
21+
import {paginate, type PaginationOptions} from './utils/pagination.js';
2222

2323
export class McpResponse implements Response {
2424
#includePages = false;
@@ -44,7 +44,11 @@ export class McpResponse implements Response {
4444

4545
setIncludeNetworkRequests(
4646
value: boolean,
47-
options?: { pageSize?: number; pageIdx?: number; resourceTypes?: ResourceType[] },
47+
options?: {
48+
pageSize?: number;
49+
pageIdx?: number;
50+
resourceTypes?: ResourceType[];
51+
},
4852
): void {
4953
if (!value) {
5054
this.#networkRequestsOptions = undefined;
@@ -53,10 +57,13 @@ export class McpResponse implements Response {
5357

5458
this.#networkRequestsOptions = {
5559
include: value,
56-
pagination: options?.pageSize || options?.pageIdx ? {
57-
pageSize: options.pageSize,
58-
pageIdx: options.pageIdx,
59-
} : undefined,
60+
pagination:
61+
options?.pageSize || options?.pageIdx
62+
? {
63+
pageSize: options.pageSize,
64+
pageIdx: options.pageIdx,
65+
}
66+
: undefined,
6067
resourceTypes: options?.resourceTypes,
6168
};
6269
}
@@ -191,7 +198,9 @@ Call browser_handle_dialog to handle it before continuing.`);
191198

192199
// Apply resource type filtering if specified
193200
if (this.#networkRequestsOptions.resourceTypes) {
194-
const normalizedTypes = new Set(this.#networkRequestsOptions.resourceTypes);
201+
const normalizedTypes = new Set(
202+
this.#networkRequestsOptions.resourceTypes,
203+
);
195204
requests = requests.filter(request => {
196205
const type = request.resourceType();
197206
return normalizedTypes.has(type);
@@ -208,7 +217,7 @@ Call browser_handle_dialog to handle it before continuing.`);
208217
response.push('Invalid page number provided. Showing first page.');
209218
}
210219

211-
const { startIndex, endIndex, currentPage, totalPages } =
220+
const {startIndex, endIndex, currentPage, totalPages} =
212221
paginationResult;
213222
response.push(
214223
`Showing ${startIndex + 1}-${endIndex} of ${requests.length} (Page ${currentPage + 1} of ${totalPages}).`,

src/tools/ToolDefinition.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
* SPDX-License-Identifier: Apache-2.0
55
*/
66

7-
import type { Dialog, ElementHandle, Page } from 'puppeteer-core';
7+
import type {Dialog, ElementHandle, Page} from 'puppeteer-core';
88
import type z from 'zod';
99

10-
import type { TraceResult } from '../trace-processing/parse.js';
10+
import type {TraceResult} from '../trace-processing/parse.js';
1111

12-
import type { ToolCategories } from './categories.js';
12+
import type {ToolCategories} from './categories.js';
1313

1414
export interface ToolDefinition<Schema extends z.ZodRawShape = z.ZodRawShape> {
1515
name: string;
@@ -44,7 +44,7 @@ export interface Response {
4444
setIncludePages(value: boolean): void;
4545
setIncludeNetworkRequests(
4646
value: boolean,
47-
options?: { pageSize?: number; pageIdx?: number; resourceTypes?: string[] },
47+
options?: {pageSize?: number; pageIdx?: number; resourceTypes?: string[]},
4848
): void;
4949
setIncludeConsoleData(value: boolean): void;
5050
setIncludeSnapshot(value: boolean): void;
@@ -73,7 +73,7 @@ export type Context = Readonly<{
7373
saveTemporaryFile(
7474
data: Uint8Array<ArrayBufferLike>,
7575
mimeType: 'image/png' | 'image/jpeg',
76-
): Promise<{ filename: string }>;
76+
): Promise<{filename: string}>;
7777
waitForEventsAfterAction(action: () => Promise<unknown>): Promise<void>;
7878
}>;
7979

src/tools/network.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
* SPDX-License-Identifier: Apache-2.0
55
*/
66

7-
import type { ResourceType } from 'puppeteer-core';
7+
import type {ResourceType} from 'puppeteer-core';
88
import z from 'zod';
99

10-
import { ToolCategories } from './categories.js';
11-
import { defineTool } from './ToolDefinition.js';
10+
import {ToolCategories} from './categories.js';
11+
import {defineTool} from './ToolDefinition.js';
1212

1313
const FILTERABLE_RESOURCE_TYPES = [
1414
'document',
@@ -57,7 +57,14 @@ export const listNetworkRequests = defineTool({
5757
'Page number to return (0-based). When omitted, returns the first page.',
5858
),
5959
resourceType: z
60-
.array(z.enum(FILTERABLE_RESOURCE_TYPES as any))
60+
.array(
61+
z.enum(
62+
FILTERABLE_RESOURCE_TYPES as unknown as [
63+
ResourceType,
64+
...ResourceType[],
65+
],
66+
),
67+
)
6168
.optional()
6269
.describe(
6370
'Filter requests by resource type. When omitted, returns all requests.',

tests/McpResponse.test.ts

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
* SPDX-License-Identifier: Apache-2.0
55
*/
66
import assert from 'node:assert';
7-
import { describe, it } from 'node:test';
7+
import {describe, it} from 'node:test';
88

9-
import { getMockRequest, html, withBrowser } from './utils.js';
9+
import {getMockRequest, html, withBrowser} from './utils.js';
1010

1111
describe('McpResponse', () => {
1212
it('list pages', async () => {
@@ -120,7 +120,7 @@ Navigation timeout set to 100000 ms`,
120120
});
121121
it('adds image when image is attached', async () => {
122122
await withBrowser(async (response, context) => {
123-
response.attachImage({ data: 'imageBase64', mimeType: 'image/png' });
123+
response.attachImage({data: 'imageBase64', mimeType: 'image/png'});
124124
const result = await response.handle('test', context);
125125
assert.strictEqual(result[0].text, `# test response`);
126126
assert.equal(result[1].type, 'image');
@@ -273,10 +273,10 @@ describe('McpResponse network request filtering', () => {
273273
});
274274
context.getNetworkRequests = () => {
275275
return [
276-
getMockRequest({ resourceType: 'script' }),
277-
getMockRequest({ resourceType: 'image' }),
278-
getMockRequest({ resourceType: 'stylesheet' }),
279-
getMockRequest({ resourceType: 'document' }),
276+
getMockRequest({resourceType: 'script'}),
277+
getMockRequest({resourceType: 'image'}),
278+
getMockRequest({resourceType: 'stylesheet'}),
279+
getMockRequest({resourceType: 'document'}),
280280
];
281281
};
282282
const result = await response.handle('test', context);
@@ -298,9 +298,9 @@ http://example.com GET [pending]`,
298298
});
299299
context.getNetworkRequests = () => {
300300
return [
301-
getMockRequest({ resourceType: 'script' }),
302-
getMockRequest({ resourceType: 'image' }),
303-
getMockRequest({ resourceType: 'stylesheet' }),
301+
getMockRequest({resourceType: 'script'}),
302+
getMockRequest({resourceType: 'image'}),
303+
getMockRequest({resourceType: 'stylesheet'}),
304304
];
305305
};
306306
const result = await response.handle('test', context);
@@ -321,9 +321,9 @@ http://example.com GET [pending]`,
321321
});
322322
context.getNetworkRequests = () => {
323323
return [
324-
getMockRequest({ resourceType: 'script' }),
325-
getMockRequest({ resourceType: 'image' }),
326-
getMockRequest({ resourceType: 'stylesheet' }),
324+
getMockRequest({resourceType: 'script'}),
325+
getMockRequest({resourceType: 'image'}),
326+
getMockRequest({resourceType: 'stylesheet'}),
327327
];
328328
};
329329
const result = await response.handle('test', context);
@@ -341,11 +341,11 @@ No requests found.`,
341341
response.setIncludeNetworkRequests(true);
342342
context.getNetworkRequests = () => {
343343
return [
344-
getMockRequest({ resourceType: 'script' }),
345-
getMockRequest({ resourceType: 'image' }),
346-
getMockRequest({ resourceType: 'stylesheet' }),
347-
getMockRequest({ resourceType: 'document' }),
348-
getMockRequest({ resourceType: 'font' }),
344+
getMockRequest({resourceType: 'script'}),
345+
getMockRequest({resourceType: 'image'}),
346+
getMockRequest({resourceType: 'stylesheet'}),
347+
getMockRequest({resourceType: 'document'}),
348+
getMockRequest({resourceType: 'font'}),
349349
];
350350
};
351351
const result = await response.handle('test', context);
@@ -367,7 +367,7 @@ http://example.com GET [pending]`,
367367
describe('McpResponse network pagination', () => {
368368
it('returns all requests when pagination is not provided', async () => {
369369
await withBrowser(async (response, context) => {
370-
const requests = Array.from({ length: 5 }, () => getMockRequest());
370+
const requests = Array.from({length: 5}, () => getMockRequest());
371371
context.getNetworkRequests = () => requests;
372372
response.setIncludeNetworkRequests(true);
373373
const result = await response.handle('test', context);
@@ -380,13 +380,13 @@ describe('McpResponse network pagination', () => {
380380

381381
it('returns first page by default', async () => {
382382
await withBrowser(async (response, context) => {
383-
const requests = Array.from({ length: 30 }, (_, idx) =>
384-
getMockRequest({ method: `GET-${idx}` }),
383+
const requests = Array.from({length: 30}, (_, idx) =>
384+
getMockRequest({method: `GET-${idx}`}),
385385
);
386386
context.getNetworkRequests = () => {
387387
return requests;
388388
};
389-
response.setIncludeNetworkRequests(true, { pageSize: 10 });
389+
response.setIncludeNetworkRequests(true, {pageSize: 10});
390390
const result = await response.handle('test', context);
391391
const text = (result[0].text as string).toString();
392392
assert.ok(text.includes('Showing 1-10 of 30 (Page 1 of 3).'));
@@ -397,8 +397,8 @@ describe('McpResponse network pagination', () => {
397397

398398
it('returns subsequent page when pageIdx provided', async () => {
399399
await withBrowser(async (response, context) => {
400-
const requests = Array.from({ length: 25 }, (_, idx) =>
401-
getMockRequest({ method: `GET-${idx}` }),
400+
const requests = Array.from({length: 25}, (_, idx) =>
401+
getMockRequest({method: `GET-${idx}`}),
402402
);
403403
context.getNetworkRequests = () => requests;
404404
response.setIncludeNetworkRequests(true, {
@@ -415,7 +415,7 @@ describe('McpResponse network pagination', () => {
415415

416416
it('handles invalid page number by showing first page', async () => {
417417
await withBrowser(async (response, context) => {
418-
const requests = Array.from({ length: 5 }, () => getMockRequest());
418+
const requests = Array.from({length: 5}, () => getMockRequest());
419419
context.getNetworkRequests = () => requests;
420420
response.setIncludeNetworkRequests(true, {
421421
pageSize: 2,

tests/utils.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,20 @@
55
*/
66

77
import logger from 'debug';
8-
import type { Browser } from 'puppeteer';
8+
import type {Browser} from 'puppeteer';
99
import puppeteer from 'puppeteer';
10-
import type { HTTPRequest, HTTPResponse } from 'puppeteer-core';
10+
import type {HTTPRequest, HTTPResponse} from 'puppeteer-core';
1111

12-
import { McpContext } from '../src/McpContext.js';
13-
import { McpResponse } from '../src/McpResponse.js';
12+
import {McpContext} from '../src/McpContext.js';
13+
import {McpResponse} from '../src/McpResponse.js';
1414

1515
let browser: Browser | undefined;
1616

1717
export async function withBrowser(
1818
cb: (response: McpResponse, context: McpContext) => Promise<void>,
19-
options: { debug?: boolean } = {},
19+
options: {debug?: boolean} = {},
2020
) {
21-
const { debug = false } = options;
21+
const {debug = false} = options;
2222
if (!browser) {
2323
browser = await puppeteer.launch({
2424
executablePath: process.env.PUPPETEER_EXECUTABLE_PATH,

0 commit comments

Comments
 (0)