diff --git a/packages/opencode/src/cli/cmd/serve.ts b/packages/opencode/src/cli/cmd/serve.ts index f662fa1ff0f..b4c7c0a8336 100644 --- a/packages/opencode/src/cli/cmd/serve.ts +++ b/packages/opencode/src/cli/cmd/serve.ts @@ -1,6 +1,6 @@ import { Effect } from "effect" import { Server } from "../../server/server" -import { effectCmd, fail } from "../effect-cmd" +import { effectCmd } from "../effect-cmd" import { withNetworkOptions, resolveNetworkOptions } from "../network" import { Flag } from "@opencode-ai/core/flag/flag" @@ -13,27 +13,21 @@ export const ServeCommand = effectCmd({ describe: "Unix socket path or Windows named pipe name/path to listen on", }), describe: "starts a headless opencode server", - // Server loads instances per-request via x-opencode-directory header — no - // need for an ambient project InstanceContext at startup. instance: false, handler: Effect.fn("Cli.serve")(function* (args) { if (!Flag.OPENCODE_SERVER_PASSWORD) { console.log("Warning: OPENCODE_SERVER_PASSWORD is not set; server is unsecured.") } if (args.socket) { - const conflicts = explicitNetworkConflicts() - if (conflicts.length) yield* fail(`--socket cannot be used with ${conflicts.join(", ")}`) - } - const opts = yield* resolveNetworkOptions(args) - const server = args.socket - ? yield* Effect.promise(() => - Server.listen({ type: "socket", socket: resolveSocketPath(args.socket), cors: opts.cors }), - ) - : yield* Effect.promise(() => Server.listen(opts)) - if (server.type === "socket") { + const server = yield* Effect.promise(() => + Server.listen({ type: "socket", socket: resolveSocketPath(args.socket) }), + ) console.log(`opencode server listening on socket ${server.socket}`) yield* Effect.never } + + const opts = yield* resolveNetworkOptions(args) + const server = yield* Effect.promise(() => Server.listen(opts)) console.log(`opencode server listening on http://${server.hostname}:${server.port}`) yield* Effect.never @@ -51,8 +45,4 @@ function resolveSocketPath(input: string) { return `\\\\.\\pipe\\${name || "opencode"}` } -function explicitNetworkConflicts() { - return ["--port", "--hostname", "--mdns", "--mdns-domain"].filter((flag) => - process.argv.some((arg) => arg === flag || arg.startsWith(`${flag}=`)), - ) -} +