Revert "server: ensure frontend has correct port for PTY websocket connections (#5898)"

This reverts commit a05915ddc8.
This commit is contained in:
Adam 2025-12-22 06:05:10 -06:00
parent 240ad31edd
commit 2c16b9fa61
No known key found for this signature in database
GPG key ID: 9CB48779AF150E75
2 changed files with 13 additions and 23 deletions

View file

@ -35,7 +35,7 @@ const url =
new URLSearchParams(document.location.search).get("url") || new URLSearchParams(document.location.search).get("url") ||
(location.hostname.includes("opencode.ai") || location.hostname.includes("localhost") (location.hostname.includes("opencode.ai") || location.hostname.includes("localhost")
? `http://${host}:${port}` ? `http://${host}:${port}`
: window.location.origin) : "/")
export function App() { export function App() {
return ( return (

View file

@ -6,6 +6,7 @@ import { describeRoute, generateSpecs, validator, resolver, openAPIRouteHandler
import { Hono } from "hono" import { Hono } from "hono"
import { cors } from "hono/cors" import { cors } from "hono/cors"
import { stream, streamSSE } from "hono/streaming" import { stream, streamSSE } from "hono/streaming"
import { proxy } from "hono/proxy"
import { Session } from "../session" import { Session } from "../session"
import z from "zod" import z from "zod"
import { Provider } from "../provider/provider" import { Provider } from "../provider/provider"
@ -53,9 +54,6 @@ globalThis.AI_SDK_LOG_WARNINGS = false
export namespace Server { export namespace Server {
const log = Log.create({ service: "server" }) const log = Log.create({ service: "server" })
// Port that the server is running on, used to inject into frontend HTML
let serverPort: number = 4096
export const Event = { export const Event = {
Connected: BusEvent.define("server.connected", z.object({})), Connected: BusEvent.define("server.connected", z.object({})),
Disposed: BusEvent.define("global.disposed", z.object({})), Disposed: BusEvent.define("global.disposed", z.object({})),
@ -2580,25 +2578,12 @@ export namespace Server {
}, },
) )
.all("/*", async (c) => { .all("/*", async (c) => {
const response = await fetch(`https://desktop.opencode.ai${c.req.path}`, { return proxy(`https://desktop.opencode.ai${c.req.path}`, {
method: c.req.method, ...c.req,
headers: { headers: {
host: "desktop.opencode.ai", host: "desktop.opencode.ai",
}, },
}) })
const contentType = response.headers.get("content-type") || ""
// If this is an HTML response, inject the server port
if (contentType.includes("text/html")) {
const html = await response.text()
const portScript = `<script>window.__OPENCODE__ = window.__OPENCODE__ || {}; window.__OPENCODE__.port = ${serverPort};</script>`
// Inject the script right after the opening <head> tag
const modifiedHtml = html.replace("<head>", `<head>${portScript}`)
return c.html(modifiedHtml)
}
return response
}), }),
) )
@ -2622,9 +2607,14 @@ export namespace Server {
idleTimeout: 0, idleTimeout: 0,
fetch: App().fetch, fetch: App().fetch,
websocket: websocket, websocket: websocket,
}) } as const
// Store the actual port for injection into frontend HTML if (opts.port === 0) {
serverPort = server.port ?? opts.port try {
return server return Bun.serve({ ...args, port: 4096 })
} catch {
// port 4096 not available, fall through to use port 0
}
}
return Bun.serve({ ...args, port: opts.port })
} }
} }