git.iko.soy/opencode-android
on d643c13 help sign in
49 lines 1.2 kB history raw
1package soy.iko.opencode.data.model
3import kotlinx.serialization.SerialName
4import kotlinx.serialization.Serializable
5import kotlinx.serialization.json.JsonElement
6import kotlinx.serialization.json.JsonClassDiscriminator
8/**
9 * The state machine of a tool call, discriminated on `status`.
10 * pending -> running -> completed | error
11 */
12@OptIn(kotlinx.serialization.ExperimentalSerializationApi::class)
13@Serializable
14@JsonClassDiscriminator("status")
15sealed interface ToolState
17@Serializable
18@SerialName("pending")
19data object ToolPending : ToolState
21@Serializable
22@SerialName("running")
23data class ToolRunning(
24 val input: JsonElement? = null,
25 val title: String? = null,
26 val time: TimeInfo? = null,
27) : ToolState
29@Serializable
30@SerialName("completed")
31data class ToolCompleted(
32 val input: JsonElement? = null,
33 val output: String? = null,
34 val title: String? = null,
35 val time: TimeInfo? = null,
36) : ToolState
38@Serializable
39@SerialName("error")
40data class ToolError(
41 val input: JsonElement? = null,
42 val error: String? = null,
43 val time: TimeInfo? = null,
44) : ToolState
46/** Fallback for an unrecognized `status`. */
47@Serializable
48@SerialName("__unknown")
49data object ToolUnknown : ToolState