fix: preserve runtime option defaults (#38118)

This commit is contained in:
Dax 2026-07-21 10:30:18 -04:00 committed by GitHub
commit 7243bd9e12
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 27 additions and 5 deletions

View file

@ -7,7 +7,7 @@ export const ServerOptions = Schema.Struct({
client: Schema.optional(Schema.String),
hostname: Schema.optional(Schema.String),
port: Schema.optional(
Schema.Int.check(Schema.isGreaterThanOrEqualTo(1), Schema.isLessThanOrEqualTo(65_535)),
Schema.Int.check(Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(65_535)),
),
password: Schema.optional(Schema.String),
simulation: Schema.optional(Schema.Boolean),

View file

@ -30,7 +30,7 @@ import { SdkPlugins } from "@opencode-ai/core/plugin/sdk"
import { ToolOutputStore } from "@opencode-ai/core/tool-output-store"
import { WellKnown } from "@opencode-ai/core/wellknown"
import { Watcher } from "@opencode-ai/core/filesystem/watcher"
import { HttpRouter, HttpServer } from "effect/unstable/http"
import { HttpRouter } from "effect/unstable/http"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { Context, Effect, Layer, Option } from "effect"
import { Api } from "./api"
@ -143,5 +143,3 @@ function makeRoutes<AuthError, AuthServices>(
}),
)
}
export const webHandler = () => HttpRouter.toWebHandler(createRoutes().pipe(Layer.provide(HttpServer.layerServices)))

View file

@ -0,0 +1,14 @@
import { expect, test } from "bun:test"
import { ServerOptions } from "@opencode-ai/server/options"
import { Option, Schema } from "effect"
const decode = Schema.decodeUnknownOption(ServerOptions)
test("accepts ephemeral port zero", () => {
expect(Option.isSome(decode({ port: 0 }))).toBe(true)
})
test("rejects ports outside the valid range", () => {
expect(Option.isNone(decode({ port: -1 }))).toBe(true)
expect(Option.isNone(decode({ port: 65_536 }))).toBe(true)
})