From dd593f77e929836a818bb94437d7fab990511a36 Mon Sep 17 00:00:00 2001 From: Simon <10131203+gaomeng1900@users.noreply.github.com> Date: Wed, 28 Jan 2026 13:36:46 +0800 Subject: [PATCH] chore(ext): refine `MultiPageAgent` api and clean up --- .../extension/src/agent/MultiPageAgent.ts | 3 +-- .../agent/RemotePageController.background.ts | 5 ---- .../src/agent/RemotePageController.ts | 24 ++++++++++--------- packages/extension/src/agent/constants.ts | 7 +----- packages/extension/src/agent/useAgent.ts | 2 -- 5 files changed, 15 insertions(+), 26 deletions(-) diff --git a/packages/extension/src/agent/MultiPageAgent.ts b/packages/extension/src/agent/MultiPageAgent.ts index e8bf0e9..950631a 100644 --- a/packages/extension/src/agent/MultiPageAgent.ts +++ b/packages/extension/src/agent/MultiPageAgent.ts @@ -8,8 +8,7 @@ import { createTabTools } from './tabTools' export class MultiPageAgent extends PageAgentCore { constructor(config: Omit) { const tabsController = new TabsController() - const pageController = new RemotePageController() - pageController.tabsController = tabsController + const pageController = new RemotePageController(tabsController) const customTools = createTabTools(tabsController) super({ diff --git a/packages/extension/src/agent/RemotePageController.background.ts b/packages/extension/src/agent/RemotePageController.background.ts index 73e3e57..7e8a042 100644 --- a/packages/extension/src/agent/RemotePageController.background.ts +++ b/packages/extension/src/agent/RemotePageController.background.ts @@ -3,11 +3,6 @@ * - redirect messages from RemotePageController(Agent, extension pages) to ContentScript */ -// chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { -// if (message.type !== 'PAGE_CONTROL') { -// return -// } - export function handlePageControlMessage( message: { type: 'PAGE_CONTROL'; action: string; payload: any; targetTabId: number }, sender: chrome.runtime.MessageSender, diff --git a/packages/extension/src/agent/RemotePageController.ts b/packages/extension/src/agent/RemotePageController.ts index 80d01f0..ff73185 100644 --- a/packages/extension/src/agent/RemotePageController.ts +++ b/packages/extension/src/agent/RemotePageController.ts @@ -7,9 +7,12 @@ import type { TabsController } from './TabsController' * - live in the agent env (extension page or content script) * - communicates with remote PageController via sw */ - export class RemotePageController { - tabsController!: TabsController + private tabsController: TabsController + + constructor(tabsController: TabsController) { + this.tabsController = tabsController + } get currentTabId(): number | null { return this.tabsController.currentTabId @@ -21,10 +24,6 @@ export class RemotePageController { return url || '' } - get currentTabUrl(): Promise { - return this.getCurrentUrl() - } - async getCurrentTitle(): Promise { if (!this.currentTabId) return '' const { title } = await this.tabsController.getTabInfo(this.currentTabId) @@ -127,12 +126,11 @@ export class RemotePageController { return this.remoteCallDomAction('execute_javascript', args) } - /** @note Mask visibility is managed by content script via storage polling. */ + /** @note Managed by content script via storage polling. */ async showMask(): Promise {} - /** @note Mask visibility is managed by content script via storage polling. */ + /** @note Managed by content script via storage polling. */ async hideMask(): Promise {} - - // dispose + /** @note Managed by content script via storage polling. */ dispose(): void {} private async preCheck() { @@ -160,6 +158,10 @@ export class RemotePageController { payload, }) } + + private get currentTabUrl(): Promise { + return this.getCurrentUrl() + } } interface DomActionReturn { @@ -170,7 +172,7 @@ interface DomActionReturn { /** * Check if a URL can run content scripts. */ -export function isContentScriptAllowed(url: string | undefined): boolean { +function isContentScriptAllowed(url: string | undefined): boolean { if (!url) return false const restrictedPatterns = [ diff --git a/packages/extension/src/agent/constants.ts b/packages/extension/src/agent/constants.ts index c8d6afe..ebef66a 100644 --- a/packages/extension/src/agent/constants.ts +++ b/packages/extension/src/agent/constants.ts @@ -1,9 +1,4 @@ -// Demo build (auto-init with demo LLM, for quick testing) -export const CDN_DEMO_URL = 'https://cdn.jsdelivr.net/npm/page-agent/dist/iife/page-agent.demo.js' -export const CDN_DEMO_CN_URL = - 'https://registry.npmmirror.com/page-agent/latest/files/dist/iife/page-agent.demo.js' - -// Demo LLM for website testing +// Demo LLM for testing export const DEMO_MODEL = 'PAGE-AGENT-FREE-TESTING-RANDOM' export const DEMO_BASE_URL = 'https://hwcxiuzfylggtcktqgij.supabase.co/functions/v1/llm-testing-proxy' diff --git a/packages/extension/src/agent/useAgent.ts b/packages/extension/src/agent/useAgent.ts index 9ea654e..295b52c 100644 --- a/packages/extension/src/agent/useAgent.ts +++ b/packages/extension/src/agent/useAgent.ts @@ -9,8 +9,6 @@ import { DEMO_API_KEY, DEMO_BASE_URL, DEMO_MODEL } from '@/agent/constants' import { MultiPageAgent } from './MultiPageAgent' -// import { type AgentController, type LLMConfig, getAgentController } from './old/AgentController' - export interface UseAgentResult { status: AgentStatus history: HistoricalEvent[]