From b1448ea08c294ca7ef7d151f14906334ae90ff5a Mon Sep 17 00:00:00 2001 From: LukeParkerDev <10430890+Hona@users.noreply.github.com> Date: Thu, 3 Sep 2026 18:31:57 +1000 Subject: [PATCH] refactor(desktop): consume plugin-owned browser contracts --- bun.lock | 2 ++ packages/app/package.json | 1 + packages/app/src/runtime/platform/browser-pane.ts | 2 +- packages/app/src/session/browser/model.ts | 2 +- packages/desktop/package.json | 1 + packages/desktop/src/main/browser-chromium.ts | 2 +- packages/desktop/src/main/browser-pane.ts | 2 +- packages/desktop/src/main/browser/diagnostics.ts | 2 +- packages/desktop/src/main/browser/files.ts | 2 +- packages/desktop/src/main/browser/profiling.ts | 2 +- packages/desktop/src/shared/ipc-rpc/browser.ts | 2 +- packages/desktop/test/browser/native.ts | 2 +- 12 files changed, 13 insertions(+), 9 deletions(-) diff --git a/bun.lock b/bun.lock index 6dab9fb07ca..9819e7980fc 100644 --- a/bun.lock +++ b/bun.lock @@ -63,6 +63,7 @@ "@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:*", @@ -425,6 +426,7 @@ "@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:*", "@sentry/solid": "catalog:", diff --git a/packages/app/package.json b/packages/app/package.json index 1f729ea50eb..0963ec879aa 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -65,6 +65,7 @@ "@kobalte/core": "catalog:", "@opencode-ai/client": "workspace:*", "@opencode-ai/schema": "workspace:*", + "@opencode-ai/plugin-browser": "workspace:*", "@opencode-ai/session-ui": "workspace:*", "@opencode-ai/ui": "workspace:*", "@opencode-ai/util": "workspace:*", diff --git a/packages/app/src/runtime/platform/browser-pane.ts b/packages/app/src/runtime/platform/browser-pane.ts index 0106fb9003f..0ee31213b84 100644 --- a/packages/app/src/runtime/platform/browser-pane.ts +++ b/packages/app/src/runtime/platform/browser-pane.ts @@ -1,4 +1,4 @@ -import type { Browser } from "@opencode-ai/schema/browser" +import type { Browser } from "@opencode-ai/plugin-browser/rpc" export type BrowserPaneEndpoint = Readonly<{ url: string; username?: string; password?: string }> export type BrowserPaneTarget = Readonly<{ sessionID: string; endpoint: BrowserPaneEndpoint }> diff --git a/packages/app/src/session/browser/model.ts b/packages/app/src/session/browser/model.ts index 5794a9742a6..506309f8954 100644 --- a/packages/app/src/session/browser/model.ts +++ b/packages/app/src/session/browser/model.ts @@ -1,5 +1,5 @@ import { batch, createEffect, createMemo, on, onCleanup } from "solid-js" -import type { Browser } from "@opencode-ai/schema/browser" +import type { Browser } from "@opencode-ai/plugin-browser/rpc" import { createStore, reconcile } from "solid-js/store" import { useLanguage } from "@/runtime/i18n/language" import type { BrowserPaneCommand, BrowserPaneRegistration, BrowserPaneState } from "@/runtime/platform/browser-pane" diff --git a/packages/desktop/package.json b/packages/desktop/package.json index cb50ac74326..d55801a6c03 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -39,6 +39,7 @@ "@opencode-ai/app": "workspace:*", "@opencode-ai/client": "workspace:*", "@opencode-ai/schema": "workspace:*", + "@opencode-ai/plugin-browser": "workspace:*", "@opencode-ai/ui": "workspace:*", "@sentry/solid": "catalog:", "@sentry/vite-plugin": "catalog:", diff --git a/packages/desktop/src/main/browser-chromium.ts b/packages/desktop/src/main/browser-chromium.ts index d0535518736..3e307832185 100644 --- a/packages/desktop/src/main/browser-chromium.ts +++ b/packages/desktop/src/main/browser-chromium.ts @@ -1,4 +1,4 @@ -import { Browser } from "@opencode-ai/schema/browser" +import { Browser } from "@opencode-ai/plugin-browser/rpc" import electron, { type BrowserWindow, type WebContents } from "electron" import type { Protocol } from "devtools-protocol" import { Schema } from "effect" diff --git a/packages/desktop/src/main/browser-pane.ts b/packages/desktop/src/main/browser-pane.ts index ccdcb60e24b..d9b8df14e31 100644 --- a/packages/desktop/src/main/browser-pane.ts +++ b/packages/desktop/src/main/browser-pane.ts @@ -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/schema/browser" +import { Browser } from "@opencode-ai/plugin-browser/rpc" import { OpenCode } from "@opencode-ai/client/effect" import { SessionID } from "@opencode-ai/schema/session-id" import type { BrowserWindow } from "electron" diff --git a/packages/desktop/src/main/browser/diagnostics.ts b/packages/desktop/src/main/browser/diagnostics.ts index d559ec83a30..31160d6d7d5 100644 --- a/packages/desktop/src/main/browser/diagnostics.ts +++ b/packages/desktop/src/main/browser/diagnostics.ts @@ -1,4 +1,4 @@ -import { Browser } from "@opencode-ai/schema/browser" +import { Browser } from "@opencode-ai/plugin-browser/rpc" import type { Protocol } from "devtools-protocol" import type { Cdp } from "./cdp" diff --git a/packages/desktop/src/main/browser/files.ts b/packages/desktop/src/main/browser/files.ts index 792c3988746..06a1988b749 100644 --- a/packages/desktop/src/main/browser/files.ts +++ b/packages/desktop/src/main/browser/files.ts @@ -1,4 +1,4 @@ -import { Browser } from "@opencode-ai/schema/browser" +import { Browser } from "@opencode-ai/plugin-browser/rpc" import { mkdir, readFile, stat, writeFile, rm } from "node:fs/promises" import { mkdirSync } from "node:fs" import { tmpdir } from "node:os" diff --git a/packages/desktop/src/main/browser/profiling.ts b/packages/desktop/src/main/browser/profiling.ts index 54e47c07e8b..869e7ccaa1b 100644 --- a/packages/desktop/src/main/browser/profiling.ts +++ b/packages/desktop/src/main/browser/profiling.ts @@ -1,5 +1,5 @@ import type { WebContents } from "electron" -import { Browser } from "@opencode-ai/schema/browser" +import { Browser } from "@opencode-ai/plugin-browser/rpc" import { gzipSync, gunzipSync } from "node:zlib" import { readFile } from "node:fs/promises" import { Schema } from "effect" diff --git a/packages/desktop/src/shared/ipc-rpc/browser.ts b/packages/desktop/src/shared/ipc-rpc/browser.ts index 2546447cfb1..93f9240238b 100644 --- a/packages/desktop/src/shared/ipc-rpc/browser.ts +++ b/packages/desktop/src/shared/ipc-rpc/browser.ts @@ -1,4 +1,4 @@ -import { Browser } from "@opencode-ai/schema/browser" +import { Browser } from "@opencode-ai/plugin-browser/rpc" import { Schema } from "effect" import { Rpc } from "effect/unstable/rpc" diff --git a/packages/desktop/test/browser/native.ts b/packages/desktop/test/browser/native.ts index f79ca9844fd..d82b6364fc3 100644 --- a/packages/desktop/test/browser/native.ts +++ b/packages/desktop/test/browser/native.ts @@ -3,7 +3,7 @@ import { createServer } from "node:http" import { once } from "node:events" import path from "node:path" import { app, BrowserWindow, nativeImage } from "electron" -import { Browser } from "@opencode-ai/schema/browser" +import { Browser } from "@opencode-ai/plugin-browser/rpc" import { OpenCode } from "@opencode-ai/client" import { Effect, Fiber, Schema, Stream } from "effect" import { createBrowserPane } from "../../src/main/browser-pane"