# :storage-sqlite — `pw.binom.agentik.storage.sqlite` **SQLDelight-реализация всех 4 сторов из `:storage-core` поверх SQLite.** JVM-only (SQLDelight пока не публикует KMP-драйверы за пределами JVM/Android). ## Какую проблему решает Прод-запуск `:standalone` должен переживать рестарт. In-memory не подходит — нужна **реальная БД**. SQLite выбран потому что: - **Один файл** (`AGENTIK_DB_PATH`) — легко бэкапить, переносить, инспектить. - **WAL** — запись не блокирует чтение; диалоги не фризят при compaction. - **Без отдельного сервиса** — в отличие от PostgreSQL/MySQL не нужно ничего поднимать рядом. ## Схема SQLDelight `.sq`-файлы в `src/main/sqldelight/`: - `Conversation.sq` — `conversations` (id, title, created_at, updated_at, is_temporal) - `Message.sq` — `messages` (id, conversation_id, role, content, working_memory_index, date) - `WorkingMemory.sq` — `working_memory` (id, conversation_id, entry_kind, payload_json, index, instant) - `Reflection.sq` — `reflection` (id, conversation_id, score, weak_points_json, created_at) `SqliteStores` (фасад) собирает все 4 стора в `StorageBundle` поверх общего SQLite-driver. Каждый store — отдельный класс, с тред-безопасностью через `Mutex` на запись. ## Подключение ```kotlin plugins { kotlin("jvm") alias(libs.plugins.sqldelight) } dependencies { implementation("pw.binom.agentik:storage-sqlite:$version") // Транзитивно: :storage-core + sqldelight-runtime/coroutines + sqlite-driver } // Использование val driver = JdbcSqliteDriver("jdbc:sqlite:agentik.db") SqliteStores.Schema.migrate(driver) // CREATE TABLE IF NOT EXISTS + ALTER val bundle = SqliteStores.fromDriver(driver, clock = Clock.System) ``` `:standalone` инициализирует бэкенд автоматически по `AGENTIK_DB_PATH`. ## Где смотреть версии - `version` из `gradle.properties` (`version=0.1.0`) - релизы: `https://git.binom.pw/subochev/agentik/releases` ## Сборка ```bash ./gradlew :storage-sqlite:build ``` JVM-only. Тянет `:storage-core` + `app.cash.sqldelight:runtime` + `app.cash.sqldelight:coroutines-extensions` + `app.cash.sqldelight:sqlite-driver`.