mirror of
https://github.com/aljazceru/opencode.git
synced 2025-12-20 01:04:22 +01:00
40 lines
860 B
TypeScript
40 lines
860 B
TypeScript
import { createClient } from "./gen/client/client.js"
|
|
import { type Config } from "./gen/client/types.js"
|
|
import { OpencodeClient } from "./gen/sdk.gen.js"
|
|
export * from "./gen/types.gen.js"
|
|
export {
|
|
type Config,
|
|
OpencodeClient
|
|
}
|
|
import { spawn } from "child_process"
|
|
|
|
export function createOpencodeClient(config?: Config) {
|
|
const client = createClient(config)
|
|
return new OpencodeClient({ client })
|
|
}
|
|
|
|
export type ServerConfig = {
|
|
host?: string
|
|
port?: number
|
|
}
|
|
|
|
export async function createOpencodeServer(config?: ServerConfig) {
|
|
config = Object.assign(
|
|
{
|
|
host: "127.0.0.1",
|
|
port: 4096,
|
|
},
|
|
config ?? {},
|
|
)
|
|
|
|
const proc = spawn(`opencode`, [`serve`, `--host=${config.host}`, `--port=${config.port}`])
|
|
const url = `http://${config.host}:${config.port}`
|
|
|
|
return {
|
|
url,
|
|
close() {
|
|
proc.kill()
|
|
},
|
|
}
|
|
}
|