feat: add createOpencodeTui() function to SDK for programmatic TUI launching (#2410)

This commit is contained in:
Zack Jackson
2025-09-04 14:49:44 +08:00
committed by GitHub
parent a97612287f
commit e001af2709

View File

@@ -9,6 +9,15 @@ export type ServerOptions = {
config?: Config
}
export type TuiOptions = {
project?: string
model?: string
session?: string
agent?: string
signal?: AbortSignal
config?: Config
}
export async function createOpencodeServer(options?: ServerOptions) {
options = Object.assign(
{
@@ -77,3 +86,35 @@ export async function createOpencodeServer(options?: ServerOptions) {
},
}
}
export function createOpencodeTui(options?: TuiOptions) {
const args = []
if (options?.project) {
args.push(`--project=${options.project}`)
}
if (options?.model) {
args.push(`--model=${options.model}`)
}
if (options?.session) {
args.push(`--session=${options.session}`)
}
if (options?.agent) {
args.push(`--agent=${options.agent}`)
}
const proc = spawn(`opencode`, args, {
signal: options?.signal,
stdio: 'inherit',
env: {
...process.env,
OPENCODE_CONFIG_CONTENT: JSON.stringify(options?.config ?? {}),
},
})
return {
close() {
proc.kill()
},
}
}