refactor(message-log-api): split MessageStore into read-only and mutable interfaces
ci / JVM build + tests (push) Successful in 6m14s
ci / JVM build + tests (push) Successful in 6m14s
- Introduced `MutableMessageStore` for producers with an `append` operation, separate from read-only `MessageStore`. - Updated all consumers and implementations to use the appropriate interface (`read-only` for observers, `mutable` for producers). - Improves modularity and ensures compile-time guarantees against unintended write operations in the audit log.
This commit is contained in:
+2
-2
@@ -2,7 +2,7 @@ package pw.binom.agentik.storage.sqlite
|
||||
|
||||
import kotlinx.serialization.json.Json
|
||||
import pw.binom.agentik.messageLog.MessageRecord
|
||||
import pw.binom.agentik.messageLog.MessageStore
|
||||
import pw.binom.agentik.messageLog.MutableMessageStore
|
||||
import pw.binom.agentik.messageLog.TokenStats
|
||||
import pw.binom.agentik.messageLog.decodeBodyPayload
|
||||
import pw.binom.agentik.messageLog.encodeBodyPayload
|
||||
@@ -19,7 +19,7 @@ import kotlin.time.Instant
|
||||
* SQLDelight сохраняет snake_case в сгенерированной data class (`Message`),
|
||||
* поэтому обращаемся через `conversation_id`, `payload_json`, `created_at`.
|
||||
*/
|
||||
class SqliteMessageStore(private val db: AgentikDatabase) : MessageStore {
|
||||
class SqliteMessageStore(private val db: AgentikDatabase) : MutableMessageStore {
|
||||
|
||||
private val q get() = db.messageQueries
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import app.cash.sqldelight.db.QueryResult
|
||||
import app.cash.sqldelight.db.SqlDriver
|
||||
import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver
|
||||
import pw.binom.agentik.messageStore.ConversationStore
|
||||
import pw.binom.agentik.messageLog.MessageStore
|
||||
import pw.binom.agentik.messageLog.MutableMessageStore
|
||||
import pw.binom.agentik.messageStore.ReflectionStore
|
||||
import pw.binom.agentik.storage.sqlite.SqliteReflectionStore
|
||||
import pw.binom.agentik.workingMemory.WorkingMemoryStore
|
||||
@@ -15,7 +15,7 @@ import pw.binom.agentik.workingMemory.WorkingMemoryStore
|
||||
class SqliteStores private constructor(
|
||||
val driver: SqlDriver,
|
||||
val conversations: ConversationStore,
|
||||
val messages: MessageStore,
|
||||
val messages: MutableMessageStore,
|
||||
val workingMemory: WorkingMemoryStore,
|
||||
val reflections: ReflectionStore,
|
||||
) : AutoCloseable {
|
||||
|
||||
Reference in New Issue
Block a user