refactor(cli): unify server endpoint handling
This commit is contained in:
parent
984cab7938
commit
be7a684791
18 changed files with 212 additions and 223 deletions
|
|
@ -1,4 +1,4 @@
|
|||
import { ServerAuth } from "@opencode-ai/server/auth"
|
||||
import { Service } from "@opencode-ai/client/effect"
|
||||
import { CrossSpawnSpawner } from "@opencode-ai/core/cross-spawn-spawner"
|
||||
import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
|
||||
import { Effect, Schema, Stream } from "effect"
|
||||
|
|
@ -34,7 +34,7 @@ function command(password: string, options: Options) {
|
|||
})
|
||||
}
|
||||
|
||||
const makeTransport = Effect.fn("cli.standalone.transport")(
|
||||
const makeEndpoint = Effect.fn("cli.standalone.endpoint")(
|
||||
function* (options: Options) {
|
||||
const password = randomBytes(32).toString("base64url")
|
||||
const spawner = yield* ChildProcessSpawner.ChildProcessSpawner
|
||||
|
|
@ -42,13 +42,17 @@ const makeTransport = Effect.fn("cli.standalone.transport")(
|
|||
const output = yield* proc.stdout.pipe(Stream.decodeText(), Stream.splitLines, Stream.take(1), Stream.mkString)
|
||||
if (!output) return yield* Effect.fail(new Error("Standalone server exited before reporting readiness"))
|
||||
const ready = yield* Effect.tryPromise(() => decodeReady(output))
|
||||
return { url: ready.url, headers: ServerAuth.headers({ password, username: "opencode" }), pid: proc.pid }
|
||||
return {
|
||||
url: ready.url,
|
||||
auth: { type: "basic" as const, username: "opencode", password },
|
||||
pid: proc.pid,
|
||||
} satisfies Service.Endpoint & { readonly pid: number }
|
||||
},
|
||||
Effect.provide(AppNodeBuilder.build(CrossSpawnSpawner.node)),
|
||||
)
|
||||
|
||||
export function transport(options: Options = {}) {
|
||||
return makeTransport(options)
|
||||
export function start(options: Options = {}) {
|
||||
return makeEndpoint(options)
|
||||
}
|
||||
|
||||
export * as Standalone from "./standalone"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue