1package soy.iko.opencode.data.model
3import kotlinx.serialization.SerialName
4import kotlinx.serialization.Serializable
7 * A message part — a discriminated union on `type` (the global class discriminator).
8 * Unknown types decode to [UnknownPart] via the registered polymorphic default,
9 * so the stream survives server additions.
11 * Every part carries [id] plus its parent [messageID]/[sessionID], which the reducer
12 * uses to attach streamed parts to the right message.
15sealed interface Part {
17 val messageID: String?
18 val sessionID: String?
24 override val id: String = "",
25 override val messageID: String? = null,
26 override val sessionID: String? = null,
27 val text: String = "",
28 val synthetic: Boolean = false,
29 val ignored: Boolean = false,
30 val time: TimeInfo? = null,
34@SerialName("reasoning")
35data class ReasoningPart(
36 override val id: String = "",
37 override val messageID: String? = null,
38 override val sessionID: String? = null,
39 val text: String = "",
40 val time: TimeInfo? = null,
46 override val id: String = "",
47 override val messageID: String? = null,
48 override val sessionID: String? = null,
49 val callID: String = "",
50 val tool: String = "",
51 val state: ToolState = ToolPending,
57 override val id: String = "",
58 override val messageID: String? = null,
59 override val sessionID: String? = null,
60 val mime: String? = null,
61 val filename: String? = null,
62 val url: String? = null,
63 val source: String? = null,
67@SerialName("step-start")
68data class StepStartPart(
69 override val id: String = "",
70 override val messageID: String? = null,
71 override val sessionID: String? = null,
75@SerialName("step-finish")
76data class StepFinishPart(
77 override val id: String = "",
78 override val messageID: String? = null,
79 override val sessionID: String? = null,
80 val cost: Double? = null,
81 val tokens: Tokens? = null,
84/** Fallback for an unrecognized `type`. */
86@SerialName("__unknown")
87data class UnknownPart(
88 override val id: String = "",
89 override val messageID: String? = null,
90 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