@@ -1,5 +1,6 @@
11package soy.iko.opencode.data.model
22
3+import androidx.compose.runtime.Immutable
34import kotlinx.serialization.SerialName
45import kotlinx.serialization.Serializable
56
@@ -18,6 +19,7 @@ sealed interface Part {
1819 val sessionID: String?
1920}
2021
22+@Immutable
2123@Serializable
2224@SerialName("text")
2325data class TextPart(
@@ -30,6 +32,7 @@ data class TextPart(
3032 val time: TimeInfo? = null,
3133) : Part
3234
35+@Immutable
3336@Serializable
3437@SerialName("reasoning")
3538data class ReasoningPart(
@@ -40,6 +43,7 @@ data class ReasoningPart(
4043 val time: TimeInfo? = null,
4144) : Part
4245
46+@Immutable
4347@Serializable
4448@SerialName("tool")
4549data class ToolPart(
@@ -51,6 +55,7 @@ data class ToolPart(
5155 val state: ToolState = ToolPending,
5256) : Part
5357
58+@Immutable
5459@Serializable
5560@SerialName("file")
5661data class FilePart(
@@ -63,6 +68,7 @@ data class FilePart(
6368 val source: String? = null,
6469) : Part
6570
71+@Immutable
6672@Serializable
6773@SerialName("step-start")
6874data class StepStartPart(
@@ -71,6 +77,7 @@ data class StepStartPart(
7177 override val sessionID: String? = null,
7278) : Part
7379
80+@Immutable
7481@Serializable
7582@SerialName("step-finish")
7683data class StepFinishPart(
@@ -82,6 +89,7 @@ data class StepFinishPart(
8289) : Part
8390
8491/** Fallback for an unrecognized `type`. */
92+@Immutable
8593@Serializable
8694@SerialName("__unknown")
8795data class UnknownPart(