refactor(message-log-api): reorganize classes into separate files for clarity
ci / JVM build + tests (push) Has been cancelled

- Extracted `TurnTokens`, `MessageOrigin`, and `MessageEvent` into standalone files.
- Simplified `MessageContext` by externalizing `MessageOrigin`.
- Improves modularity and code maintainability for append-only audit logs.
This commit is contained in:
2026-09-20 21:02:50 +03:00
parent 3f260f3ac8
commit 8f8f7f1020
6 changed files with 44 additions and 36 deletions
@@ -1,25 +1,8 @@
package pw.binom.agentik.messageLog package pw.binom.agentik.messageLog
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonElement
/**
* Контекст инициации хода (кто/что и почему). Дубликат типа из `:proto` —
* живёт здесь чтобы не тащить `:proto` в слой хранения данных.
*/
@Serializable
enum class MessageOrigin {
@SerialName("user")
USER,
@SerialName("system")
SYSTEM,
@SerialName("event")
EVENT,
}
@Serializable @Serializable
data class MessageContext( data class MessageContext(
val origin: MessageOrigin, val origin: MessageOrigin,
@@ -0,0 +1,6 @@
package pw.binom.agentik.messageLog
sealed interface MessageEvent {
val conversationId: String
data class Appended(override val conversationId: String, val record: MessageRecord) : MessageEvent
}
@@ -0,0 +1,20 @@
package pw.binom.agentik.messageLog
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
/**
* Контекст инициации хода (кто/что и почему). Дубликат типа из `:proto` —
* живёт здесь чтобы не тащить `:proto` в слой хранения данных.
*/
@Serializable
enum class MessageOrigin {
@SerialName("user")
USER,
@SerialName("system")
SYSTEM,
@SerialName("event")
EVENT,
}
@@ -4,21 +4,6 @@ import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlin.time.Instant import kotlin.time.Instant
/**
* Token usage одного assistant turn'а.
*/
@Serializable
data class TurnTokens(
val input: Int,
val output: Int,
) {
val total: Int get() = input + output
init {
require(input >= 0) { "input tokens must be non-negative, got $input" }
require(output >= 0) { "output tokens must be non-negative, got $output" }
}
}
/** /**
* Запись в таблице `message` (append-only audit). * Запись в таблице `message` (append-only audit).
*/ */
@@ -30,7 +30,3 @@ interface MessageStore : AutoCloseable {
suspend fun tokenStats(conversationId: String): TokenStats suspend fun tokenStats(conversationId: String): TokenStats
} }
sealed interface MessageEvent {
val conversationId: String
data class Appended(override val conversationId: String, val record: MessageRecord) : MessageEvent
}
@@ -0,0 +1,18 @@
package pw.binom.agentik.messageLog
import kotlinx.serialization.Serializable
/**
* Token usage одного assistant turn'а.
*/
@Serializable
data class TurnTokens(
val input: Int,
val output: Int,
) {
val total: Int get() = input + output
init {
require(input >= 0) { "input tokens must be non-negative, got $input" }
require(output >= 0) { "output tokens must be non-negative, got $output" }
}
}