MoonBit SDKs for OpenCode CLI execution and managed Server lifecycle
Dependencies
flowchart LR
Client[OpenCode client] --> Thread[start or resume Thread]
Thread --> Run[opencode run --format json]
Run --> Core[agent-core-sdk/cli]
Core --> Events[typed OpenCode JSONL events]
Server[opencode-sdk/server] --> Serve[opencode serve lifecycle]///|
async fn example {
let client = @opencode.Client::Client()
let thread = client.start_thread(
options=@opencode.ThreadOptions::ThreadOptions(
model="opencode-go/deepseek-v4-flash",
),
)
let turn = thread.run(
@opencode.Input::Prompt("Explain this repository in one paragraph."),
)
println(turn.final_response)
}import {
"totto2727/opencode-sdk@0.4.0",
}import {
"totto2727/opencode-sdk/cli" @opencode,
}///|
async fn stream_example {
let thread = @opencode.Client::Client().start_thread()
thread.run_streamed(
@opencode.Input::Prompt("Summarize the current changes."),
async fn(event) {
match event {
@opencode.Text(text) => println(text.text)
_ => ()
}
@async.pause()
},
)
}flowchart TD
A[shared setup action] --> B[ci devShell]
B --> C[official OpenCode package]
B --> D[target-unspecified validation]
D --> E[preferred Wasm target]
E --> F[CLI package]
G[managed Server] --> H[native-only and unchanged]import {
"totto2727/opencode-sdk/server" @opencode_server,
}
async fn server_example {
@async.with_task_group() group => {
let server = @opencode_server.create_opencode_server(group)
println(server.url())
server.close()
}
}MoonBit SDKs for OpenCode CLI execution and managed Server lifecycle
Dependencies