fix(browser): publish plugin under opencode scope

This commit is contained in:
Dax Raad
2026-09-07 16:27:53 -04:00
parent 72433f2ed8
commit e15fb426ec
21 changed files with 29 additions and 29 deletions
+6 -6
View File
@@ -63,11 +63,11 @@
"@ibm/plex": "6.4.1",
"@kobalte/core": "catalog:",
"@opencode-ai/client": "workspace:*",
"@opencode-ai/plugin-browser": "workspace:*",
"@opencode-ai/schema": "workspace:*",
"@opencode-ai/session-ui": "workspace:*",
"@opencode-ai/ui": "workspace:*",
"@opencode-ai/util": "workspace:*",
"@opencode/plugin-browser": "workspace:*",
"@pierre/trees": "1.0.0-beta.4",
"@sentry/solid": "catalog:",
"@solid-primitives/event-bus": "1.1.2",
@@ -358,10 +358,10 @@
"@opencode-ai/ai": "workspace:*",
"@opencode-ai/codemode": "workspace:*",
"@opencode-ai/plugin": "workspace:*",
"@opencode-ai/plugin-browser": "workspace:*",
"@opencode-ai/pty": "0.1.13",
"@opencode-ai/schema": "workspace:*",
"@opencode-ai/util": "workspace:*",
"@opencode/plugin-browser": "workspace:*",
"@parcel/watcher": "2.5.1",
"@silvia-odwyer/photon-node": "0.3.4",
"@standard-schema/spec": "catalog:",
@@ -425,9 +425,9 @@
"@lydell/node-pty": "catalog:",
"@opencode-ai/app": "workspace:*",
"@opencode-ai/client": "workspace:*",
"@opencode-ai/plugin-browser": "workspace:*",
"@opencode-ai/schema": "workspace:*",
"@opencode-ai/ui": "workspace:*",
"@opencode/plugin-browser": "workspace:*",
"@sentry/solid": "catalog:",
"@sentry/vite-plugin": "catalog:",
"@solid-primitives/storage": "catalog:",
@@ -613,7 +613,7 @@
],
},
"packages/plugin-browser": {
"name": "@opencode-ai/plugin-browser",
"name": "@opencode/plugin-browser",
"version": "0.0.0",
"dependencies": {
"@opencode-ai/plugin": "workspace:*",
@@ -2176,8 +2176,6 @@
"@opencode-ai/plugin": ["@opencode-ai/plugin@workspace:packages/plugin"],
"@opencode-ai/plugin-browser": ["@opencode-ai/plugin-browser@workspace:packages/plugin-browser"],
"@opencode-ai/posts": ["@opencode-ai/posts@workspace:packages/posts"],
"@opencode-ai/protocol": ["@opencode-ai/protocol@workspace:packages/protocol"],
@@ -2230,6 +2228,8 @@
"@opencode-ai/www": ["@opencode-ai/www@workspace:packages/www"],
"@opencode/plugin-browser": ["@opencode/plugin-browser@workspace:packages/plugin-browser"],
"@openrouter/ai-sdk-provider": ["@openrouter/ai-sdk-provider@2.10.0", "", { "peerDependencies": { "ai": "^6.0.0", "zod": "^3.25.0 || ^4.0.0" } }, "sha512-FMsAEjLUt5pWuRE2LDC/LCvVrFjLlrEzUITH5+5SZtfq7KZ2wrOHjQVxzz92sju8S9ltpzW87CLW8/b0oBXVCw=="],
"@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="],
+1 -1
View File
@@ -65,7 +65,7 @@
"@kobalte/core": "catalog:",
"@opencode-ai/client": "workspace:*",
"@opencode-ai/schema": "workspace:*",
"@opencode-ai/plugin-browser": "workspace:*",
"@opencode/plugin-browser": "workspace:*",
"@opencode-ai/session-ui": "workspace:*",
"@opencode-ai/ui": "workspace:*",
"@opencode-ai/util": "workspace:*",
@@ -1,4 +1,4 @@
import type { Browser } from "@opencode-ai/plugin-browser/rpc"
import type { Browser } from "@opencode/plugin-browser/rpc"
export type BrowserPaneEndpoint = Readonly<{ url: string; username?: string; password?: string }>
export type BrowserPaneTarget = Readonly<{ sessionID: string; endpoint: BrowserPaneEndpoint }>
@@ -1,7 +1,7 @@
import { batch, createEffect, createMemo, getOwner, onCleanup, runWithOwner } from "solid-js"
import { createStore, reconcile } from "solid-js/store"
import { createSimpleContext } from "@opencode-ai/ui/context"
import type { Browser } from "@opencode-ai/plugin-browser/rpc"
import type { Browser } from "@opencode/plugin-browser/rpc"
import { useLanguage } from "@/runtime/i18n/language"
import type { BrowserPaneCommand, BrowserPaneRegistration, BrowserPaneState } from "@/runtime/platform/browser-pane"
import { usePlatform } from "@/runtime/platform/platform"
+1 -1
View File
@@ -1,5 +1,5 @@
import { batch, createEffect, createMemo, on, onCleanup } from "solid-js"
import type { Browser } from "@opencode-ai/plugin-browser/rpc"
import type { Browser } from "@opencode/plugin-browser/rpc"
import { createStore } from "solid-js/store"
import { useLanguage } from "@/runtime/i18n/language"
import type { BrowserPaneCommand } from "@/runtime/platform/browser-pane"
+1 -1
View File
@@ -120,7 +120,7 @@
"@opencode-ai/pty": "0.1.13",
"@opencode-ai/schema": "workspace:*",
"@opencode-ai/plugin": "workspace:*",
"@opencode-ai/plugin-browser": "workspace:*",
"@opencode/plugin-browser": "workspace:*",
"@opencode-ai/util": "workspace:*",
"@standard-schema/spec": "catalog:",
"@parcel/watcher": "2.5.1",
+1 -1
View File
@@ -79,7 +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 "@opencode-ai/plugin-browser"
import BrowserPlugin from "@opencode/plugin-browser"
import { CommandPlugin } from "./command.js"
import { PlanPlugin } from "./plan.js"
import { ModelsDevPlugin } from "./models-dev.js"
+1 -1
View File
@@ -39,7 +39,7 @@
"@opencode-ai/app": "workspace:*",
"@opencode-ai/client": "workspace:*",
"@opencode-ai/schema": "workspace:*",
"@opencode-ai/plugin-browser": "workspace:*",
"@opencode/plugin-browser": "workspace:*",
"@opencode-ai/ui": "workspace:*",
"@sentry/solid": "catalog:",
"@sentry/vite-plugin": "catalog:",
@@ -1,4 +1,4 @@
import { Browser } from "@opencode-ai/plugin-browser/rpc"
import { Browser } from "@opencode/plugin-browser/rpc"
import electron, { type BrowserWindow, type WebContents } from "electron"
import type { Protocol } from "devtools-protocol"
import { Schema } from "effect"
+1 -1
View File
@@ -1,6 +1,6 @@
import type { BrowserPaneCommand, BrowserPaneLayout, BrowserPaneTarget } from "@opencode-ai/app/desktop"
import { NodeHttpClient } from "@effect/platform-node"
import { Browser } from "@opencode-ai/plugin-browser/rpc"
import { Browser } from "@opencode/plugin-browser/rpc"
import { OpenCode } from "@opencode-ai/client/effect"
import { SessionID } from "@opencode-ai/schema/session-id"
import type { BrowserWindow } from "electron"
@@ -1,4 +1,4 @@
import { Browser } from "@opencode-ai/plugin-browser/rpc"
import { Browser } from "@opencode/plugin-browser/rpc"
import type { Protocol } from "devtools-protocol"
import type { Cdp } from "./cdp"
+1 -1
View File
@@ -1,4 +1,4 @@
import type { Browser } from "@opencode-ai/plugin-browser/rpc"
import type { Browser } from "@opencode/plugin-browser/rpc"
export function protocolError(method: string, error: unknown) {
const detail = message(error)
+1 -1
View File
@@ -1,4 +1,4 @@
import { Browser } from "@opencode-ai/plugin-browser/rpc"
import { Browser } from "@opencode/plugin-browser/rpc"
import { mkdir, readFile, stat, writeFile, rm } from "node:fs/promises"
import { mkdirSync } from "node:fs"
import { tmpdir } from "node:os"
+2 -2
View File
@@ -1,8 +1,8 @@
import { session, type WebContents } from "electron"
import type { RpcClient } from "@opencode-ai/client/effect/api"
import type { Session } from "@opencode-ai/schema/session"
import { Browser } from "@opencode-ai/plugin-browser/rpc"
import { BrowserProxy } from "@opencode-ai/plugin-browser/proxy"
import { Browser } from "@opencode/plugin-browser/rpc"
import { BrowserProxy } from "@opencode/plugin-browser/proxy"
import { Effect, Encoding } from "effect"
export type BrowserNetwork = Effect.Success<ReturnType<typeof createBrowserNetwork>>
@@ -1,5 +1,5 @@
import type { WebContents } from "electron"
import { Browser } from "@opencode-ai/plugin-browser/rpc"
import { Browser } from "@opencode/plugin-browser/rpc"
import { gzipSync, gunzipSync } from "node:zlib"
import { Schema } from "effect"
import type { Cdp } from "./cdp"
@@ -1,4 +1,4 @@
import { Browser } from "@opencode-ai/plugin-browser/rpc"
import { Browser } from "@opencode/plugin-browser/rpc"
import { Schema } from "effect"
import { Rpc } from "effect/unstable/rpc"
+1 -1
View File
@@ -1,7 +1,7 @@
import { expect, test } from "bun:test"
import { rm } from "node:fs/promises"
import path from "node:path"
import { Browser } from "@opencode-ai/plugin-browser/rpc"
import { Browser } from "@opencode/plugin-browser/rpc"
import { browserFailure, protocolError } from "../src/main/browser/errors"
import { createBrowserFiles } from "../src/main/browser/files"
import { analyzeCpu, analyzeTrace, parseHeap } from "../src/main/browser/analysis"
+1 -1
View File
@@ -4,7 +4,7 @@ import { once } from "node:events"
import { createHash } from "node:crypto"
import path from "node:path"
import { app, BrowserWindow, nativeImage } from "electron"
import { Browser } from "@opencode-ai/plugin-browser/rpc"
import { Browser } from "@opencode/plugin-browser/rpc"
import { OpenCode } from "@opencode-ai/client"
import { Effect, Fiber, Schema, Stream } from "effect"
import { createBrowserPane } from "../../src/main/browser-pane"
+1 -1
View File
@@ -1,6 +1,6 @@
import assert from "node:assert/strict"
import type { BrowserWindow } from "electron"
import { Browser } from "@opencode-ai/plugin-browser/rpc"
import { Browser } from "@opencode/plugin-browser/rpc"
import { Schema } from "effect"
import { createBrowserPage } from "../../src/main/browser-chromium"
import { createCornerImages } from "../../src/main/browser/corners"
+3 -3
View File
@@ -1,6 +1,6 @@
# Browser plugin
`@opencode-ai/plugin-browser` exposes the desktop browser through Code Mode.
`@opencode/plugin-browser` exposes the desktop browser through Code Mode.
The server owns tools, invocation scope, and permissions; the desktop owns tabs,
CDP, captured traffic, evaluations, and capture files. Core only registers the
plugin. Neither endpoint imports the other's implementation.
@@ -28,7 +28,7 @@ Screenshots require a focused, visible tab; call `browser.tabs.focus` first.
- Audits: `lighthouse` (accessibility, SEO, best practices).
The source of truth for inputs, descriptions, and outputs is
`Browser.Operations` in `@opencode-ai/plugin-browser/rpc`.
`Browser.Operations` in `@opencode/plugin-browser/rpc`.
The plugin entrypoint only composes its two owners: `connection.ts` manages
desktop attachments and pending RPC requests; `tools.ts` runs the tool workflow.
@@ -43,7 +43,7 @@ Native browser coverage lives with the desktop implementation
## RPC
The plugin-owned contract is `@opencode-ai/plugin-browser/rpc`. This entrypoint
The plugin-owned contract is `@opencode/plugin-browser/rpc`. This entrypoint
contains only schemas and descriptions; it does not load the server plugin or
filesystem code. The desktop subscribes
to control events before starting `attach` with `version: 4`. The attachment call
+1 -1
View File
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@opencode-ai/plugin-browser",
"name": "@opencode/plugin-browser",
"version": "0.0.0",
"description": "OpenCode's desktop browser plugin",
"type": "module",