diff --git a/packages/opencode/src/plugin/index.ts b/packages/opencode/src/plugin/index.ts index b492c7179e..79f6094944 100644 --- a/packages/opencode/src/plugin/index.ts +++ b/packages/opencode/src/plugin/index.ts @@ -24,6 +24,7 @@ export namespace Plugin { project: Instance.project, worktree: Instance.worktree, directory: Instance.directory, + serverUrl: Server.url(), $: Bun.$, } const plugins = [...(config.plugin ?? [])] diff --git a/packages/opencode/src/server/server.ts b/packages/opencode/src/server/server.ts index e25d9ded47..2306a46785 100644 --- a/packages/opencode/src/server/server.ts +++ b/packages/opencode/src/server/server.ts @@ -57,6 +57,12 @@ globalThis.AI_SDK_LOG_WARNINGS = false export namespace Server { const log = Log.create({ service: "server" }) + let _url: URL | undefined + + export function url(): URL { + return _url ?? new URL("http://localhost:4096") + } + export const Event = { Connected: BusEvent.define("server.connected", z.object({})), Disposed: BusEvent.define("global.disposed", z.object({})), @@ -2666,6 +2672,8 @@ export namespace Server { const server = opts.port === 0 ? (tryServe(4096) ?? tryServe(0)) : tryServe(opts.port) if (!server) throw new Error(`Failed to start server on port ${opts.port}`) + _url = server.url + const shouldPublishMDNS = opts.mdns && server.port && diff --git a/packages/plugin/src/index.ts b/packages/plugin/src/index.ts index fbc0e710c8..5653f19d91 100644 --- a/packages/plugin/src/index.ts +++ b/packages/plugin/src/index.ts @@ -28,6 +28,7 @@ export type PluginInput = { project: Project directory: string worktree: string + serverUrl: URL $: BunShell }