Skip to content

Browser: preparation for tools - #296657

Merged
Kyle Cutler (kycutler) merged 5 commits into
mainfrom
kycutler/tools-prep
Feb 23, 2026
Merged

Kyle Cutler (kycutler) merged 5 commits into
mainfrom
kycutler/tools-prep

Conversation

@kycutler

Copy link
Copy Markdown
Collaborator

No description provided.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR prepares the integrated browser for “tools” by introducing a shared-process Playwright automation service, wiring browser views into page tracking (“shared with agent”), and tightening CDP/session cleanup.

Changes:

  • Expanded IPlaywrightService from a TODO stub into a concrete automation + page-tracking API (summary, screenshots, dialog/file chooser handling, arbitrary function invocation).
  • Added “tracked/shared with agent” state to BrowserViewModel, backed by Playwright page tracking and an update event.
  • Improved lifecycle handling in CDP/browser-view group code (session disposal on target removal; context bookkeeping on view removal), and updated Playwright dependency.

Reviewed changes

Copilot reviewed 7 out of 8 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
src/vs/workbench/contrib/browserView/common/browserView.ts Adds sharedWithAgent state + event, and routes share/unshare via IPlaywrightService.
src/vs/platform/browserView/node/playwrightTab.ts New Playwright page wrapper for summaries, logs, and dialog/file chooser state.
src/vs/platform/browserView/node/playwrightService.ts Implements shared-process Playwright service, tracking, lazy init, page manager, screenshots, summaries, and function invocation.
src/vs/platform/browserView/electron-main/browserViewGroup.ts Updates context bookkeeping when views are removed from a group.
src/vs/platform/browserView/common/playwrightService.ts Defines the new IPlaywrightService API contract (tracking + automation).
src/vs/platform/browserView/common/cdp/proxy.ts Disposes sessions when a target is unregistered to avoid stale sessions.
package.json Pins playwright-core to an alpha build.
package-lock.json Lockfile updates to reflect the Playwright dependency change.

Comment thread src/vs/platform/browserView/node/playwrightService.ts
Comment thread src/vs/platform/browserView/node/playwrightService.ts
Comment thread src/vs/platform/browserView/node/playwrightService.ts Outdated
Comment thread package.json
Comment thread src/vs/platform/browserView/node/playwrightService.ts
Comment thread src/vs/platform/browserView/node/playwrightTab.ts
Comment thread src/vs/workbench/contrib/browserView/common/browserView.ts
Comment thread src/vs/platform/browserView/node/playwrightTab.ts Outdated
Comment thread src/vs/platform/browserView/node/playwrightTab.ts Outdated
Comment thread src/vs/platform/browserView/node/playwrightTab.ts Outdated
Comment thread src/vs/platform/browserView/node/playwrightTab.ts Outdated
Comment thread src/vs/platform/browserView/common/playwrightService.ts
Comment thread src/vs/platform/browserView/node/playwrightService.ts
Comment thread src/vs/platform/browserView/node/playwrightTab.ts
Comment thread src/vs/platform/browserView/node/playwrightService.ts
Comment thread src/vs/platform/browserView/node/playwrightService.ts
@jruales

Joaquín Ruales (jruales) commented Feb 22, 2026 •

Copy link
Copy Markdown
Contributor

Overview of changes in the first commit (828c530) of this PR

graph TD
    subgraph Workbench
        BVM["BrowserViewModel<br/>sharedWithAgent toggle"]
    end

    subgraph Shared Process
        PS["PlaywrightService<br/>lazy init + API facade"]
        PM["PlaywrightPageManager<br/>tracking + FIFO matching"]
        PT["PlaywrightTab<br/>dialog/log/summary per page"]
        PW["Playwright-core<br/>(browser automation)"]
    end

    subgraph Electron Main
        BVG["BrowserViewGroup<br/>context bookkeeping fix"]
        CDP["CDPBrowserProxy<br/>session cleanup fix"]
    end

    subgraph Browser
        Pages["Browser Pages"]
    end

    BVM -->|"start/stopTrackingPage"| PS
    PS -->|"delegates tracking"| PM
    PS -->|"lazy init: createGroup + connectOverCDP"| BVG
    PM -->|"FIFO pairs viewId ↔ Playwright page"| PW
    PW -->|"controls"| Pages
    PM -->|"wraps each page"| PT
    BVG -->|"CDP WebSocket"| CDP
    CDP -->|"session lifecycle"| Pages
    PS -.->|"onDidChangeTrackedPages"| BVM
Loading

@kycutler
Kyle Cutler (kycutler) enabled auto-merge (squash) February 23, 2026 00:33
@kycutler
Kyle Cutler (kycutler) merged commit 0dcfca3 into main Feb 23, 2026
29 of 30 checks passed
@kycutler
Kyle Cutler (kycutler) deleted the kycutler/tools-prep branch February 23, 2026 00:36
@vs-code-engineering vs-code-engineering Bot locked and limited conversation to collaborators Apr 9, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants