@@ -2,6 +2,7 @@ package soy.iko.opencode.data.network
3import soy.iko.opencode.data.model.Agent
3import soy.iko.opencode.data.model.Agent
4import soy.iko.opencode.data.model.Command
4import soy.iko.opencode.data.model.Command
5+import soy.iko.opencode.data.model.CommandRequest
5import soy.iko.opencode.data.model.CreateSessionRequest
6import soy.iko.opencode.data.model.CreateSessionRequest
6import soy.iko.opencode.data.model.FileContent
7import soy.iko.opencode.data.model.FileContent
7import soy.iko.opencode.data.model.FileNode
8import soy.iko.opencode.data.model.FileNode
@@ -34,7 +35,7 @@ class OpencodeApiClient(private val client: HttpClient) {
35 /** Lightweight connectivity check used by the connect screen. */
36 /** Lightweight connectivity check used by the connect screen. */
36 suspend fun ping(): Boolean {
37 suspend fun ping(): Boolean {
37− client.get("app")
38+ client.get("global/health")
38 return true
39 return true
@@ -81,6 +82,18 @@ class OpencodeApiClient(private val client: HttpClient) {
81 client.post("session/$sessionId/abort")
82 client.post("session/$sessionId/abort")
85+ /** Invoke a slash-command by name via `POST /session/:id/command`. */
86+ suspend fun runCommand(
89+ arguments: String = "",
90+ agent: String? = null,
91+ ): MessageWithParts =
92+ client.post("session/$sessionId/command") {
93+ contentType(ContentType.Application.Json)
94+ setBody(CommandRequest(command = command, arguments = arguments, agent = agent))
84 suspend fun providers(): ProvidersResponse =
97 suspend fun providers(): ProvidersResponse =
85 client.get("config/providers").body()
98 client.get("config/providers").body()