1package soy.iko.opencode.data.model
3import androidx.compose.runtime.Immutable
4import kotlinx.serialization.SerialName
5import kotlinx.serialization.Serializable
8 * A message part — a discriminated union on `type` (the global class discriminator).
9 * Unknown types decode to [UnknownPart] via the registered polymorphic default,
10 * so the stream survives server additions.
12 * Every part carries [id] plus its parent [messageID]/[sessionID], which the reducer
13 * uses to attach streamed parts to the right message.
16sealed interface Part {
18 val messageID: String?
19 val sessionID: String?
26 override val id: String = "",
27 override val messageID: String? = null,
28 override val sessionID: String? = null,
29 val text: String = "",
30 val synthetic: Boolean = false,
31 val ignored: Boolean = false,
32 val time: TimeInfo? = null,
37@SerialName("reasoning")
38data class ReasoningPart(
39 override val id: String = "",
40 override val messageID: String? = null,
41 override val sessionID: String? = null,
42 val text: String = "",
43 val time: TimeInfo? = null,
50 override val id: String = "",
51 override val messageID: String? = null,
52 override val sessionID: String? = null,
53 val callID: String = "",
54 val tool: String = "",
55 val state: ToolState = ToolPending,
62 override val id: String = "",
63 override val messageID: String? = null,
64 override val sessionID: String? = null,
65 val mime: String? = null,
66 val filename: String? = null,
67 val url: String? = null,
68 val source: String? = null,
73@SerialName("step-start")
74data class StepStartPart(
75 override val id: String = "",
76 override val messageID: String? = null,
77 override val sessionID: String? = null,
82@SerialName("step-finish")
83data class StepFinishPart(
84 override val id: String = "",
85 override val messageID: String? = null,
86 override val sessionID: String? = null,
87 val cost: Double? = null,
88 val tokens: Tokens? = null,
91/** Fallback for an unrecognized `type`. */
94@SerialName("__unknown")
95data class UnknownPart(
96 override val id: String = "",
97 override val messageID: String? = null,
98 override val sessionID: String? = null,
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list