@@ -2,6 +2,7 @@ package soy.iko.opencode.data.network
22
33import soy.iko.opencode.data.model.Agent
44import soy.iko.opencode.data.model.Command
5+import soy.iko.opencode.data.model.CommandRequest
56import soy.iko.opencode.data.model.CreateSessionRequest
67import soy.iko.opencode.data.model.FileContent
78import soy.iko.opencode.data.model.FileNode
@@ -34,7 +35,7 @@ class OpencodeApiClient(private val client: HttpClient) {
3435
3536 /** Lightweight connectivity check used by the connect screen. */
3637 suspend fun ping(): Boolean {
37− client.get("app")
38+ client.get("global/health")
3839 return true
3940 }
4041
@@ -81,6 +82,18 @@ class OpencodeApiClient(private val client: HttpClient) {
8182 client.post("session/$sessionId/abort")
8283 }
8384
85+ /** Invoke a slash-command by name via `POST /session/:id/command`. */
86+ suspend fun runCommand(
87+ sessionId: String,
88+ command: String,
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))
95+ }.body()
96+
8497 suspend fun providers(): ProvidersResponse =
8598 client.get("config/providers").body()
8699