From 25400f48df6e1693f5d9d76f56bc2e471857dd5c Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sat, 16 May 2026 00:48:00 -0400 Subject: [PATCH] serve: keep resolved listen options together --- packages/opencode/src/server/server.ts | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/packages/opencode/src/server/server.ts b/packages/opencode/src/server/server.ts index f7b1a68fe0..2505c92f19 100644 --- a/packages/opencode/src/server/server.ts +++ b/packages/opencode/src/server/server.ts @@ -137,14 +137,14 @@ const listenEffect: (opts: ListenOptions) => Effect.Effect startListener(opts, 0))) + return startListener({ ...opts, port: 4096 }).pipe(Effect.catch(() => startListener(opts))) } -function startListener(opts: ListenOptions, port: number) { +function startListener(opts: ListenOptions) { const scope = Scope.makeUnsafe() - return Layer.buildWithMemoMap(listenerLayer(opts, port), Layer.makeMemoMapUnsafe(), scope).pipe( + return Layer.buildWithMemoMap(listenerLayer(opts), Layer.makeMemoMapUnsafe(), scope).pipe( Effect.provide(HttpApiApp.context), Effect.onError(() => Scope.close(scope, Exit.void).pipe(Effect.ignore)), Effect.map( @@ -240,7 +239,7 @@ function forceClose(state: ListenerState) { return Effect.all([state.http.closeAll, state.websockets.closeAll], { concurrency: "unbounded", discard: true }) } -function serverLayer(opts: ListenOptions, port: number) { +function serverLayer(opts: ListenOptions) { const server = createServer() const serverRef = { closeStarted: false, forceStop: false } const close = server.close.bind(server) @@ -255,7 +254,7 @@ function serverLayer(opts: ListenOptions, port: number) { }) as typeof server.close return Layer.mergeAll( - NodeHttpServer.layer(() => server, nodeListenOptions(opts, port)), + NodeHttpServer.layer(() => server, nodeListenOptions(opts)), Layer.succeed(ListenerServerService)( ListenerServerService.of({ closeAll: Effect.sync(() => { @@ -267,9 +266,9 @@ function serverLayer(opts: ListenOptions, port: number) { ) } -function nodeListenOptions(opts: ListenOptions, port: number) { +function nodeListenOptions(opts: ListenOptions) { if (opts.type === "socket") return { path: opts.socket, gracefulShutdownTimeout: "1 second" as const } - return { port, host: opts.hostname, gracefulShutdownTimeout: "1 second" as const } + return { port: opts.port, host: opts.hostname, gracefulShutdownTimeout: "1 second" as const } } export * as Server from "./server"