豆豆友情提示:这是一个非官方 GitHub 代理镜像,主要用于网络测试或访问加速。请勿在此进行登录、注册或处理任何敏感信息。进行这些操作请务必访问官方网站 github.com。 Raw 内容也通过此代理提供。
Skip to content

Commit 71622fb

Browse files
committed
chore: self review
1 parent 3539a80 commit 71622fb

File tree

2 files changed

+18
-10
lines changed

2 files changed

+18
-10
lines changed

src/McpContext.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ export class McpContext implements Context {
109109
null;
110110

111111
#nextPageId = 1;
112-
#extensionPopupPages = new WeakMap<Target, Page>();
112+
#extensionPages = new WeakMap<Target, Page>();
113113

114114
#extensionServiceWorkerMap = new WeakMap<Target, string>();
115115
#nextExtensionServiceWorkerId = 1;
@@ -559,7 +559,7 @@ export class McpContext implements Context {
559559
async createPagesSnapshot(): Promise<Page[]> {
560560
const {pages: allPages, isolatedContextNames} = await this.#getAllPages();
561561

562-
const allTargets = await this.browser.targets();
562+
const allTargets = this.browser.targets();
563563
const extensionTargets = allTargets.filter(target => {
564564
return (
565565
target.url().startsWith('chrome-extension://') &&
@@ -570,11 +570,11 @@ export class McpContext implements Context {
570570
for (const target of extensionTargets) {
571571
let page = await target.page();
572572
if (!page) {
573-
page = this.#extensionPopupPages.get(target) ?? null;
573+
page = this.#extensionPages.get(target) ?? null;
574574
if (!page) {
575575
try {
576576
page = await target.asPage();
577-
this.#extensionPopupPages.set(target, page);
577+
this.#extensionPages.set(target, page);
578578
} catch (e) {
579579
this.logger('Failed to get page for extension target', e);
580580
}

src/McpResponse.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import {DevTools} from './third_party/index.js';
1616
import type {
1717
ConsoleMessage,
1818
ImageContent,
19+
Page,
1920
ResourceType,
2021
TextContent,
2122
} from './third_party/index.js';
@@ -568,9 +569,19 @@ Call ${handleDialog.name} to handle it before continuing.`);
568569

569570
if (this.#includePages) {
570571
const allPages = context.getPages();
571-
const regularPages = this.#includeExtensionPages
572-
? allPages.filter(p => !p.url().startsWith('chrome-extension://'))
573-
: allPages;
572+
573+
// Use reduce to separate extension pages and normal pages
574+
const {regularPages, extensionPages} = allPages.reduce(
575+
(acc: {regularPages: Page[]; extensionPages: Page[]}, page: Page) => {
576+
if (page.url().startsWith('chrome-extension://')) {
577+
acc.extensionPages.push(page);
578+
} else {
579+
acc.regularPages.push(page);
580+
}
581+
return acc;
582+
},
583+
{regularPages: [], extensionPages: []},
584+
);
574585

575586
if (regularPages.length) {
576587
const parts = [`## Pages`];
@@ -604,9 +615,6 @@ Call ${handleDialog.name} to handle it before continuing.`);
604615
}
605616

606617
if (this.#includeExtensionPages) {
607-
const extensionPages = allPages.filter(p =>
608-
p.url().startsWith('chrome-extension://'),
609-
);
610618
if (extensionPages.length) {
611619
response.push(`## Extension Pages`);
612620
for (const page of extensionPages) {

0 commit comments

Comments
 (0)