From a7d8cbe7139f56969d88706f3a5228a88b049bb7 Mon Sep 17 00:00:00 2001 From: subochev Date: Tue, 15 Sep 2026 14:51:58 +0300 Subject: [PATCH] =?UTF-8?q?storage-sqlite:=20=D0=B2=D1=8B=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B8=D1=82=D1=8C=20SQLDelight=20+=20SQLite-=D0=B8=D0=BC?= =?UTF-8?q?=D0=BF=D0=BB=20=D0=B2=20=D0=BE=D1=82=D0=B4=D0=B5=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D1=8B=D0=B9=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Перенесён SQLDelight (4 .sq файла, конфигурация databases { AgentikDatabase }) и 5 SQLite-импл классов (SqliteStores, SqliteConversationStore, SqliteMessageStore, SqliteWorkingMemoryStore, SqliteReflectionStore) из :standalone в новый JVM-only модуль :storage-sqlite под пакетом pw.binom.agentik.storage.sqlite. Изменения: - Новый :storage-sqlite модуль с sqldelight-плагином + sqlite JDBC driver - Все .sq файлы и Kotlin-классы переехали с переименованием пакета - ReflectionStore.kt в :standalone (только SQLite-импл) удалён — функционал живёт в :storage-sqlite/SqliteReflectionStore.kt - :standalone/build.gradle.kts: убран sqldelight-плагин и конфигурация, добавлена зависимость :storage-sqlite - Все импорты в :standalone (8 main + 7 test) перенаправлены на новый пакет - ReflectionStoreTest.kt переехал в :storage-sqlite/jvmTest (тестирует internal fun encode/decodeStringArray в :storage-sqlite) Совместимость: - SqliteStores доступен по новому пути pw.binom.agentik.storage.sqlite.SqliteStores - Старые импорты в тестах обновлены (минимум diff — 1 строка на файл) - В commit 6 ChatAgent переключится на StorageBundle API; SqliteStores станет деталью реализации :standalone Тесты: 299/299 green. Fatjar standalone-all.jar 240 MB. Преимущества: - :standalone больше не зависит от SQLDelight плагина (легче поддерживать) - :storage-sqlite может быть заменён/расширен (например, :storage-android) - Тесты storage-слоя сгруппированы по модулю реализации --- settings.gradle.kts | 6 +++ standalone/build.gradle.kts | 23 ++-------- .../binom/agentik/standalone/DebugRoutes.kt | 2 +- .../pw/binom/agentik/standalone/Main.kt | 2 +- .../agentik/standalone/agent/ChatAgent.kt | 2 +- .../standalone/agent/ChatConversation.kt | 2 +- .../agentik/standalone/agent/ChatAgentTest.kt | 2 +- .../standalone/agent/CompactionTest.kt | 2 +- .../standalone/agent/MemoryWiringTest.kt | 2 +- .../standalone/persistence/TokenStatsTest.kt | 2 +- .../binom/agentik/storage/PersistenceTest.kt | 2 +- .../storage/SqliteStoresMigrationTest.kt | 2 +- storage-sqlite/build.gradle.kts | 44 +++++++++++++++++++ .../sqlite/SqliteConversationStore.kt | 2 +- .../storage}/sqlite/SqliteMessageStore.kt | 2 +- .../storage/sqlite/SqliteReflectionStore.kt | 8 ++-- .../agentik/storage}/sqlite/SqliteStores.kt | 4 +- .../sqlite/SqliteWorkingMemoryStore.kt | 2 +- .../agentik/storage}/sqlite/Conversation.sq | 0 .../binom/agentik/storage}/sqlite/Message.sq | 0 .../agentik/storage}/sqlite/Reflection.sq | 0 .../agentik/storage}/sqlite/WorkingMemory.sq | 0 .../storage/sqlite}/ReflectionStoreTest.kt | 7 ++- 23 files changed, 76 insertions(+), 42 deletions(-) create mode 100644 storage-sqlite/build.gradle.kts rename {standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/persistence => storage-sqlite/src/jvmMain/kotlin/pw/binom/agentik/storage}/sqlite/SqliteConversationStore.kt (98%) rename {standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/persistence => storage-sqlite/src/jvmMain/kotlin/pw/binom/agentik/storage}/sqlite/SqliteMessageStore.kt (99%) rename standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/persistence/ReflectionStore.kt => storage-sqlite/src/jvmMain/kotlin/pw/binom/agentik/storage/sqlite/SqliteReflectionStore.kt (95%) rename {standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/persistence => storage-sqlite/src/jvmMain/kotlin/pw/binom/agentik/storage}/sqlite/SqliteStores.kt (97%) rename {standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/persistence => storage-sqlite/src/jvmMain/kotlin/pw/binom/agentik/storage}/sqlite/SqliteWorkingMemoryStore.kt (98%) rename {standalone/src/jvmMain/sqldelight/pw/binom/agentik/standalone/persistence => storage-sqlite/src/jvmMain/sqldelight/pw/binom/agentik/storage}/sqlite/Conversation.sq (100%) rename {standalone/src/jvmMain/sqldelight/pw/binom/agentik/standalone/persistence => storage-sqlite/src/jvmMain/sqldelight/pw/binom/agentik/storage}/sqlite/Message.sq (100%) rename {standalone/src/jvmMain/sqldelight/pw/binom/agentik/standalone/persistence => storage-sqlite/src/jvmMain/sqldelight/pw/binom/agentik/storage}/sqlite/Reflection.sq (100%) rename {standalone/src/jvmMain/sqldelight/pw/binom/agentik/standalone/persistence => storage-sqlite/src/jvmMain/sqldelight/pw/binom/agentik/storage}/sqlite/WorkingMemory.sq (100%) rename {standalone/src/jvmTest/kotlin/pw/binom/agentik/storage => storage-sqlite/src/jvmTest/kotlin/pw/binom/agentik/storage/sqlite}/ReflectionStoreTest.kt (95%) diff --git a/settings.gradle.kts b/settings.gradle.kts index ccfd2b2..fbdff1e 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -52,3 +52,9 @@ include(":storage-core") // IO-зависимостей. Используется в тестах (быстрый setup, без JDBC) и будет // использоваться в Android-сборке (JVector/SQLite не подходят для ART out-of-box). include(":storage-inmemory") +// SQLDelight-реализация всех 4 store'ов из :storage-core. JVM-only (SQLDelight +// native драйверов для KMP вне JVM пока не публикует). Содержит 4 .sq-файла + +// 5 классов: SqliteStores, SqliteConversationStore, SqliteMessageStore, +// SqliteWorkingMemoryStore, SqliteReflectionStore. Бэкенд для прод-запуска +// :standalone (путь к .db файлу в AGENTIK_DB). +include(":storage-sqlite") diff --git a/standalone/build.gradle.kts b/standalone/build.gradle.kts index 3260029..500ee5a 100644 --- a/standalone/build.gradle.kts +++ b/standalone/build.gradle.kts @@ -9,7 +9,6 @@ import org.gradle.api.artifacts.ConfigurationContainer plugins { alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.kotlin.serialization) - alias(libs.plugins.sqldelight) alias(libs.plugins.shadow) } @@ -36,29 +35,24 @@ kotlin { // litert-kmp: контракт (commonMain) api(libs.litert.api) - // SQLDelight runtime (commonMain) - api(libs.sqldelight.runtime) - api(libs.sqldelight.coroutines) + // litert-openai: JVM-реализация + implementation(libs.litert.openai) } jvmMain.dependencies { // Парсер и загрузчик скилов (YAML frontmatter + markdown body). implementation(project(":skills")) - // Долговременная память (Hermes-style MD-бэкенд). + // Долговременная память (Hermes-style MD-бэкенд) + хранилище истории. implementation(project(":memory-api")) implementation(project(":memory-md")) implementation(project(":memory-vector")) implementation(project(":storage-core")) + implementation(project(":storage-sqlite")) - // litert-openai: JVM-реализация - implementation(libs.litert.openai) // litert-google: встроенный LiteRT-LM движок, нужен только на runtime runtimeOnly(libs.litert.google) - // SQLDelight JDBC driver (JVM) - implementation(libs.sqldelight.sqlite.driver) - // Ktor server (для :server facade + a2aServer) // Используем CIO вместо Netty — он KMP (jvm + linuxX64/ios/...), нам нужен // для будущей native-сборки; на JVM работает идентично для нашего сценария. @@ -100,15 +94,6 @@ kotlin { } } -sqldelight { - databases { - create("AgentikDatabase") { - packageName.set("pw.binom.agentik.standalone.persistence.sqlite") - srcDirs.setFrom("src/jvmMain/sqldelight") - } - } -} - // --- Fatjar (uberjar) --- // // :standalone — KMP jvm-only бэкенд. Стандартный KMP `jvmJar` содержит только diff --git a/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/DebugRoutes.kt b/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/DebugRoutes.kt index 08d80b4..723c2a7 100644 --- a/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/DebugRoutes.kt +++ b/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/DebugRoutes.kt @@ -14,7 +14,7 @@ import pw.binom.agentik.standalone.agent.ChatConversation import pw.binom.agentik.standalone.agent.LlmReflector import pw.binom.agentik.standalone.agent.SkillMiner import pw.binom.agentik.standalone.agent.memory.Curator -import pw.binom.agentik.standalone.persistence.sqlite.SqliteStores +import pw.binom.agentik.storage.sqlite.SqliteStores import pw.binom.agentik.skills.SkillStore /** diff --git a/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/Main.kt b/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/Main.kt index edc5937..319c5a2 100644 --- a/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/Main.kt +++ b/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/Main.kt @@ -27,7 +27,7 @@ import pw.binom.agentik.standalone.config.AgentikConfig import pw.binom.agentik.standalone.config.AgentikConfig.MemoryBackend import pw.binom.agentik.standalone.llm.LlmBackend import pw.binom.agentik.standalone.mcp.McpRegistry -import pw.binom.agentik.standalone.persistence.sqlite.SqliteStores +import pw.binom.agentik.storage.sqlite.SqliteStores import java.io.File /** * standalone-контейнер agentik: diff --git a/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/agent/ChatAgent.kt b/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/agent/ChatAgent.kt index f3a4c1d..2ab5e9f 100644 --- a/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/agent/ChatAgent.kt +++ b/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/agent/ChatAgent.kt @@ -19,7 +19,7 @@ import pw.binom.agentik.standalone.llm.LlmConfig import pw.binom.agentik.storage.ConversationRecord import pw.binom.agentik.storage.Reflection import pw.binom.agentik.storage.WorkingMemoryEntry -import pw.binom.agentik.standalone.persistence.sqlite.SqliteStores +import pw.binom.agentik.storage.sqlite.SqliteStores import pw.binom.litert.LiteLlm import kotlin.time.Instant diff --git a/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/agent/ChatConversation.kt b/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/agent/ChatConversation.kt index 16aa46b..d71133c 100644 --- a/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/agent/ChatConversation.kt +++ b/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/agent/ChatConversation.kt @@ -38,7 +38,7 @@ import pw.binom.agentik.storage.MessageStore import pw.binom.agentik.storage.WorkingMemoryEntry import pw.binom.agentik.storage.WorkingMemoryRow import pw.binom.agentik.storage.WorkingMemoryStore -import pw.binom.agentik.standalone.persistence.sqlite.SqliteStores +import pw.binom.agentik.storage.sqlite.SqliteStores import pw.binom.litert.LiteContentPart import pw.binom.litert.LiteConversation import pw.binom.litert.LiteConversationConfig diff --git a/standalone/src/jvmTest/kotlin/pw/binom/agentik/standalone/agent/ChatAgentTest.kt b/standalone/src/jvmTest/kotlin/pw/binom/agentik/standalone/agent/ChatAgentTest.kt index de3d061..0f16ec7 100644 --- a/standalone/src/jvmTest/kotlin/pw/binom/agentik/standalone/agent/ChatAgentTest.kt +++ b/standalone/src/jvmTest/kotlin/pw/binom/agentik/standalone/agent/ChatAgentTest.kt @@ -14,7 +14,7 @@ import pw.binom.agentik.skills.SkillCatalog import pw.binom.agentik.skills.SkillFile import pw.binom.agentik.standalone.llm.LlmBackend import pw.binom.agentik.standalone.llm.LlmConfig -import pw.binom.agentik.standalone.persistence.sqlite.SqliteStores +import pw.binom.agentik.storage.sqlite.SqliteStores import pw.binom.litert.LiteContentPart import pw.binom.litert.LiteConversation import pw.binom.litert.LiteConversationConfig diff --git a/standalone/src/jvmTest/kotlin/pw/binom/agentik/standalone/agent/CompactionTest.kt b/standalone/src/jvmTest/kotlin/pw/binom/agentik/standalone/agent/CompactionTest.kt index 640d8ee..efd3338 100644 --- a/standalone/src/jvmTest/kotlin/pw/binom/agentik/standalone/agent/CompactionTest.kt +++ b/standalone/src/jvmTest/kotlin/pw/binom/agentik/standalone/agent/CompactionTest.kt @@ -12,7 +12,7 @@ import pw.binom.agentik.standalone.config.AgentikConfig import pw.binom.agentik.standalone.llm.LlmBackend import pw.binom.agentik.standalone.llm.LlmConfig import pw.binom.agentik.standalone.llm.OpenAiConfig -import pw.binom.agentik.standalone.persistence.sqlite.SqliteStores +import pw.binom.agentik.storage.sqlite.SqliteStores import pw.binom.agentik.proto.Content as ProtoContent import pw.binom.litert.LiteConversation import pw.binom.litert.LiteConversationConfig diff --git a/standalone/src/jvmTest/kotlin/pw/binom/agentik/standalone/agent/MemoryWiringTest.kt b/standalone/src/jvmTest/kotlin/pw/binom/agentik/standalone/agent/MemoryWiringTest.kt index f5f6e6e..44fe56a 100644 --- a/standalone/src/jvmTest/kotlin/pw/binom/agentik/standalone/agent/MemoryWiringTest.kt +++ b/standalone/src/jvmTest/kotlin/pw/binom/agentik/standalone/agent/MemoryWiringTest.kt @@ -30,7 +30,7 @@ import pw.binom.agentik.standalone.llm.LlmBackend import pw.binom.agentik.standalone.llm.LlmConfig import pw.binom.agentik.standalone.llm.OpenAiConfig import pw.binom.agentik.storage.WorkingMemoryEntry -import pw.binom.agentik.standalone.persistence.sqlite.SqliteStores +import pw.binom.agentik.storage.sqlite.SqliteStores import kotlin.test.AfterTest import kotlin.test.BeforeTest import kotlin.test.Test diff --git a/standalone/src/jvmTest/kotlin/pw/binom/agentik/standalone/persistence/TokenStatsTest.kt b/standalone/src/jvmTest/kotlin/pw/binom/agentik/standalone/persistence/TokenStatsTest.kt index 83f1966..cb7def5 100644 --- a/standalone/src/jvmTest/kotlin/pw/binom/agentik/standalone/persistence/TokenStatsTest.kt +++ b/standalone/src/jvmTest/kotlin/pw/binom/agentik/standalone/persistence/TokenStatsTest.kt @@ -4,7 +4,7 @@ import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertNull import kotlin.time.Instant -import pw.binom.agentik.standalone.persistence.sqlite.SqliteStores +import pw.binom.agentik.storage.sqlite.SqliteStores class TokenStatsTest { diff --git a/standalone/src/jvmTest/kotlin/pw/binom/agentik/storage/PersistenceTest.kt b/standalone/src/jvmTest/kotlin/pw/binom/agentik/storage/PersistenceTest.kt index 56942e1..42a37f9 100644 --- a/standalone/src/jvmTest/kotlin/pw/binom/agentik/storage/PersistenceTest.kt +++ b/standalone/src/jvmTest/kotlin/pw/binom/agentik/storage/PersistenceTest.kt @@ -1,7 +1,7 @@ package pw.binom.agentik.storage import kotlinx.coroutines.test.runTest -import pw.binom.agentik.standalone.persistence.sqlite.SqliteStores +import pw.binom.agentik.storage.sqlite.SqliteStores import kotlin.test.AfterTest import kotlin.test.BeforeTest import kotlin.test.Test diff --git a/standalone/src/jvmTest/kotlin/pw/binom/agentik/storage/SqliteStoresMigrationTest.kt b/standalone/src/jvmTest/kotlin/pw/binom/agentik/storage/SqliteStoresMigrationTest.kt index 964ff1c..6ff6060 100644 --- a/standalone/src/jvmTest/kotlin/pw/binom/agentik/storage/SqliteStoresMigrationTest.kt +++ b/standalone/src/jvmTest/kotlin/pw/binom/agentik/storage/SqliteStoresMigrationTest.kt @@ -4,7 +4,7 @@ import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertNotNull import kotlin.test.assertTrue -import pw.binom.agentik.standalone.persistence.sqlite.SqliteStores +import pw.binom.agentik.storage.sqlite.SqliteStores class SqliteStoresMigrationTest { diff --git a/storage-sqlite/build.gradle.kts b/storage-sqlite/build.gradle.kts new file mode 100644 index 0000000..1867078 --- /dev/null +++ b/storage-sqlite/build.gradle.kts @@ -0,0 +1,44 @@ +plugins { + alias(libs.plugins.kotlin.multiplatform) + alias(libs.plugins.kotlin.serialization) + alias(libs.plugins.sqldelight) +} + +kotlin { + jvmToolchain(21) + + // JVM-only: SQLDelight сейчас не имеет KMP-таргетов за пределами JVM/Android. + // Если в будущем понадобится Native (iOS/macOS), придётся либо подключать + // platform-native SQLDelight driver (https://github.com/cashapp/sqldelight + // multiplatform module), либо использовать :storage-inmemory там. + jvm() + + sourceSets { + commonMain.dependencies { + api(project(":storage-core")) + api(libs.sqldelight.runtime) + api(libs.sqldelight.coroutines) + } + jvmMain.dependencies { + implementation(libs.sqldelight.sqlite.driver) + implementation(libs.kotlin.logging) + } + commonTest.dependencies { + implementation(kotlin("test")) + implementation(libs.kotlinx.coroutines.test) + } + jvmTest.dependencies { + // SQLDelight JDBC driver — для тестов, которые поднимают in-memory DB + implementation(libs.sqldelight.sqlite.driver) + } + } +} + +sqldelight { + databases { + create("AgentikDatabase") { + packageName.set("pw.binom.agentik.storage.sqlite") + srcDirs.setFrom("src/jvmMain/sqldelight") + } + } +} diff --git a/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/persistence/sqlite/SqliteConversationStore.kt b/storage-sqlite/src/jvmMain/kotlin/pw/binom/agentik/storage/sqlite/SqliteConversationStore.kt similarity index 98% rename from standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/persistence/sqlite/SqliteConversationStore.kt rename to storage-sqlite/src/jvmMain/kotlin/pw/binom/agentik/storage/sqlite/SqliteConversationStore.kt index a3b015a..45862b4 100644 --- a/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/persistence/sqlite/SqliteConversationStore.kt +++ b/storage-sqlite/src/jvmMain/kotlin/pw/binom/agentik/storage/sqlite/SqliteConversationStore.kt @@ -1,4 +1,4 @@ -package pw.binom.agentik.standalone.persistence.sqlite +package pw.binom.agentik.storage.sqlite import kotlin.time.Instant import pw.binom.agentik.storage.ConversationRecord diff --git a/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/persistence/sqlite/SqliteMessageStore.kt b/storage-sqlite/src/jvmMain/kotlin/pw/binom/agentik/storage/sqlite/SqliteMessageStore.kt similarity index 99% rename from standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/persistence/sqlite/SqliteMessageStore.kt rename to storage-sqlite/src/jvmMain/kotlin/pw/binom/agentik/storage/sqlite/SqliteMessageStore.kt index 5fe5c24..a856c36 100644 --- a/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/persistence/sqlite/SqliteMessageStore.kt +++ b/storage-sqlite/src/jvmMain/kotlin/pw/binom/agentik/storage/sqlite/SqliteMessageStore.kt @@ -1,4 +1,4 @@ -package pw.binom.agentik.standalone.persistence.sqlite +package pw.binom.agentik.storage.sqlite import kotlinx.serialization.json.Json import pw.binom.agentik.storage.MessageRecord diff --git a/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/persistence/ReflectionStore.kt b/storage-sqlite/src/jvmMain/kotlin/pw/binom/agentik/storage/sqlite/SqliteReflectionStore.kt similarity index 95% rename from standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/persistence/ReflectionStore.kt rename to storage-sqlite/src/jvmMain/kotlin/pw/binom/agentik/storage/sqlite/SqliteReflectionStore.kt index 4fa4138..404b322 100644 --- a/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/persistence/ReflectionStore.kt +++ b/storage-sqlite/src/jvmMain/kotlin/pw/binom/agentik/storage/sqlite/SqliteReflectionStore.kt @@ -1,4 +1,4 @@ -package pw.binom.agentik.standalone.persistence +package pw.binom.agentik.storage.sqlite import kotlin.time.Clock import kotlin.time.Instant @@ -9,9 +9,9 @@ import mu.KotlinLogging import pw.binom.agentik.storage.Reflection import pw.binom.agentik.storage.ReflectionEvent import pw.binom.agentik.storage.ReflectionStore -import pw.binom.agentik.standalone.persistence.sqlite.AgentikDatabase -import pw.binom.agentik.standalone.persistence.sqlite.Reflection as DbReflection -import pw.binom.agentik.standalone.persistence.sqlite.ReflectionQueries +import pw.binom.agentik.storage.sqlite.AgentikDatabase +import pw.binom.agentik.storage.sqlite.Reflection as DbReflection +import pw.binom.agentik.storage.sqlite.ReflectionQueries private val log = KotlinLogging.logger {} diff --git a/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/persistence/sqlite/SqliteStores.kt b/storage-sqlite/src/jvmMain/kotlin/pw/binom/agentik/storage/sqlite/SqliteStores.kt similarity index 97% rename from standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/persistence/sqlite/SqliteStores.kt rename to storage-sqlite/src/jvmMain/kotlin/pw/binom/agentik/storage/sqlite/SqliteStores.kt index 6b7a4f7..0b6e36c 100644 --- a/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/persistence/sqlite/SqliteStores.kt +++ b/storage-sqlite/src/jvmMain/kotlin/pw/binom/agentik/storage/sqlite/SqliteStores.kt @@ -1,4 +1,4 @@ -package pw.binom.agentik.standalone.persistence.sqlite +package pw.binom.agentik.storage.sqlite import app.cash.sqldelight.db.QueryResult import app.cash.sqldelight.db.SqlDriver @@ -6,7 +6,7 @@ import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver import pw.binom.agentik.storage.ConversationStore import pw.binom.agentik.storage.MessageStore import pw.binom.agentik.storage.ReflectionStore -import pw.binom.agentik.standalone.persistence.SqliteReflectionStore +import pw.binom.agentik.storage.sqlite.SqliteReflectionStore import pw.binom.agentik.storage.WorkingMemoryStore /** diff --git a/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/persistence/sqlite/SqliteWorkingMemoryStore.kt b/storage-sqlite/src/jvmMain/kotlin/pw/binom/agentik/storage/sqlite/SqliteWorkingMemoryStore.kt similarity index 98% rename from standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/persistence/sqlite/SqliteWorkingMemoryStore.kt rename to storage-sqlite/src/jvmMain/kotlin/pw/binom/agentik/storage/sqlite/SqliteWorkingMemoryStore.kt index 429a18a..e2afdc8 100644 --- a/standalone/src/jvmMain/kotlin/pw/binom/agentik/standalone/persistence/sqlite/SqliteWorkingMemoryStore.kt +++ b/storage-sqlite/src/jvmMain/kotlin/pw/binom/agentik/storage/sqlite/SqliteWorkingMemoryStore.kt @@ -1,4 +1,4 @@ -package pw.binom.agentik.standalone.persistence.sqlite +package pw.binom.agentik.storage.sqlite import kotlinx.serialization.json.Json import pw.binom.agentik.storage.WorkingMemoryEntry diff --git a/standalone/src/jvmMain/sqldelight/pw/binom/agentik/standalone/persistence/sqlite/Conversation.sq b/storage-sqlite/src/jvmMain/sqldelight/pw/binom/agentik/storage/sqlite/Conversation.sq similarity index 100% rename from standalone/src/jvmMain/sqldelight/pw/binom/agentik/standalone/persistence/sqlite/Conversation.sq rename to storage-sqlite/src/jvmMain/sqldelight/pw/binom/agentik/storage/sqlite/Conversation.sq diff --git a/standalone/src/jvmMain/sqldelight/pw/binom/agentik/standalone/persistence/sqlite/Message.sq b/storage-sqlite/src/jvmMain/sqldelight/pw/binom/agentik/storage/sqlite/Message.sq similarity index 100% rename from standalone/src/jvmMain/sqldelight/pw/binom/agentik/standalone/persistence/sqlite/Message.sq rename to storage-sqlite/src/jvmMain/sqldelight/pw/binom/agentik/storage/sqlite/Message.sq diff --git a/standalone/src/jvmMain/sqldelight/pw/binom/agentik/standalone/persistence/sqlite/Reflection.sq b/storage-sqlite/src/jvmMain/sqldelight/pw/binom/agentik/storage/sqlite/Reflection.sq similarity index 100% rename from standalone/src/jvmMain/sqldelight/pw/binom/agentik/standalone/persistence/sqlite/Reflection.sq rename to storage-sqlite/src/jvmMain/sqldelight/pw/binom/agentik/storage/sqlite/Reflection.sq diff --git a/standalone/src/jvmMain/sqldelight/pw/binom/agentik/standalone/persistence/sqlite/WorkingMemory.sq b/storage-sqlite/src/jvmMain/sqldelight/pw/binom/agentik/storage/sqlite/WorkingMemory.sq similarity index 100% rename from standalone/src/jvmMain/sqldelight/pw/binom/agentik/standalone/persistence/sqlite/WorkingMemory.sq rename to storage-sqlite/src/jvmMain/sqldelight/pw/binom/agentik/storage/sqlite/WorkingMemory.sq diff --git a/standalone/src/jvmTest/kotlin/pw/binom/agentik/storage/ReflectionStoreTest.kt b/storage-sqlite/src/jvmTest/kotlin/pw/binom/agentik/storage/sqlite/ReflectionStoreTest.kt similarity index 95% rename from standalone/src/jvmTest/kotlin/pw/binom/agentik/storage/ReflectionStoreTest.kt rename to storage-sqlite/src/jvmTest/kotlin/pw/binom/agentik/storage/sqlite/ReflectionStoreTest.kt index 79a7a26..f628f70 100644 --- a/standalone/src/jvmTest/kotlin/pw/binom/agentik/storage/ReflectionStoreTest.kt +++ b/storage-sqlite/src/jvmTest/kotlin/pw/binom/agentik/storage/sqlite/ReflectionStoreTest.kt @@ -1,13 +1,12 @@ -package pw.binom.agentik.storage +package pw.binom.agentik.storage.sqlite import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertNull import kotlin.test.assertNotNull import kotlin.time.Instant -import pw.binom.agentik.standalone.persistence.decodeStringArray -import pw.binom.agentik.standalone.persistence.encodeStringArray -import pw.binom.agentik.standalone.persistence.sqlite.SqliteStores +import pw.binom.agentik.storage.Reflection +import pw.binom.agentik.storage.ReflectionEvent class ReflectionStoreTest {