From 5f277d1e620aad64bc8a2e2823f1704a8bfcbbe2 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Tue, 10 Mar 2026 12:30:46 -0400 Subject: [PATCH] core: return structured server info with stop method from workspace server - Enables graceful server shutdown for workspace management - Removes unsupported serverUrl getter that threw errors in plugin context --- .../src/control-plane/workspace-server/server.ts | 16 +++++++++++++++- packages/opencode/src/plugin/index.ts | 4 ---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/opencode/src/control-plane/workspace-server/server.ts b/packages/opencode/src/control-plane/workspace-server/server.ts index b3f3ddb616..19df2ecf76 100644 --- a/packages/opencode/src/control-plane/workspace-server/server.ts +++ b/packages/opencode/src/control-plane/workspace-server/server.ts @@ -60,6 +60,20 @@ export namespace WorkspaceServer { fetch: App().fetch, }) server.listen(opts.port, opts.hostname) - return server + return { + hostname: opts.hostname, + port: opts.port, + stop() { + return new Promise((resolve, reject) => { + server.close((err) => { + if (err) { + reject(err) + return + } + resolve() + }) + }) + }, + } } } diff --git a/packages/opencode/src/plugin/index.ts b/packages/opencode/src/plugin/index.ts index 6d3edf9ef8..fd4a826052 100644 --- a/packages/opencode/src/plugin/index.ts +++ b/packages/opencode/src/plugin/index.ts @@ -34,10 +34,6 @@ export namespace Plugin { project: Instance.project, worktree: Instance.worktree, directory: Instance.directory, - get serverUrl(): URL { - throw new Error("Server URL is no longer supported in plugins") - }, - $: () => {}, } for (const plugin of INTERNAL_PLUGINS) {