Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
5ed8a04
feat(browser): add public RPC browser plugin
Hona Sep 1, 2026
3d5652a
refactor(browser): colocate the public API plugin
Hona Sep 1, 2026
5f73df3
refactor(browser): defer permission enforcement
Hona Sep 1, 2026
416f6d1
refactor(browser): use canonical public schemas
Hona Sep 1, 2026
06d2f69
fix(browser): let a newer attachment replace a stale one
Hona Sep 2, 2026
95dba45
refactor(browser): extract the plugin into its own package
Hona Sep 2, 2026
e538592
fix(plugin-browser): keep release helpers out of the package
Hona Sep 2, 2026
d740ca9
fix(sdk): resolve packaged worker paths on Windows
Hona Sep 2, 2026
b3b3171
feat(browser): expose the browser through Code Mode
Hona Sep 3, 2026
6d8f495
feat(browser): define tab-targeted tools and RPC file transfers
Hona Sep 3, 2026
eed9e9c
fix(browser): tighten wire contracts and file handling
Hona Sep 3, 2026
122507c
fix(browser): preserve transferred file names
Hona Sep 3, 2026
8b2dd9e
docs(browser): clarify capture and remote deployment limits
Hona Sep 3, 2026
078283f
refactor(browser): keep contracts inside the plugin package
Hona Sep 3, 2026
b9585d1
docs(browser): specify screenshot visibility requirements
Hona Sep 3, 2026
18f70c0
fix(browser): explain recovery from tool and transfer failures
Hona Sep 3, 2026
f73b7ed
fix(browser): return malformed capture errors as tool failures
Hona Sep 3, 2026
1b9cb1f
refactor(browser): separate connection and tool ownership
Hona Sep 3, 2026
31ef921
fix(browser): expose target inspection and attachment replacement
Hona Sep 3, 2026
e8a565a
fix(browser): retain upload arguments during inspection
Hona Sep 3, 2026
ed888ea
test(browser): remove SDK-host integration tests
Hona Sep 4, 2026
4a33193
feat(browser): relay network traffic through plugin RPC
Hona Sep 4, 2026
64b34b2
fix(browser): reject path-like and oversized URLs before dispatch
Hona Sep 7, 2026
8800914
docs(browser): document state ordering and tunnel reach
Hona Sep 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
refactor(browser): colocate the public API plugin
  • Loading branch information
Hona committed Sep 7, 2026
commit 3d5652a816b3b669c9cae76ac033098ef09ef994
16 changes: 0 additions & 16 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

27 changes: 0 additions & 27 deletions packages/browser/package.json

This file was deleted.

264 changes: 0 additions & 264 deletions packages/browser/test/plugin.test.ts

This file was deleted.

10 changes: 0 additions & 10 deletions packages/browser/tsconfig.json

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
# Experimental Browser Plugin

The server-side browser tool is a standalone Effect plugin. It uses only the public
plugin API and keeps its RPC contract in `@opencode-ai/browser/rpc`.
The server-side browser tool lives alongside the other built-in plugins. Its
implementation uses only the public plugin API, public schemas, and Effect. The
shared RPC contract is `@opencode-ai/schema/browser`; desktop clients do not import Core.

Load the workspace package with normal plugin configuration:
Disable it through normal plugin configuration:

```jsonc
{
"plugins": ["./packages/browser"],
"plugins": ["-opencode.browser"],
}
```

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Plugin, Session, Tool } from "@opencode-ai/plugin/effect"
import type { RpcRegistration } from "@opencode-ai/plugin/effect/rpc"
import { Deferred, Effect, Encoding, Stream } from "effect"
import { Browser } from "./rpc.js"
import { Browser } from "@opencode-ai/schema/browser"

type Attachment = {
connectionID: string
Expand Down
2 changes: 2 additions & 0 deletions packages/core/src/plugin/internal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ import { WebSearchTool } from "../tool/plugin/websearch.js"
import { WellKnown } from "../wellknown.js"
import { WriteTool } from "../tool/plugin/write.js"
import { AgentPlugin } from "./agent.js"
import BrowserPlugin from "./browser/index.js"
import { CommandPlugin } from "./command.js"
import { PlanPlugin } from "./plan.js"
import { ModelsDevPlugin } from "./models-dev.js"
Expand Down Expand Up @@ -192,6 +193,7 @@ export const requirements = LayerNode.group([
export type InternalPlugin = Plugin<Requirements | Scope.Scope>

const pre = [
BrowserPlugin,
ConfigMcpPlugin.Plugin,
McpCodeModeExclusionPlugin.Plugin,
WellKnownPlugin.Plugin,
Expand Down
Loading