Files
agentik/storage-inmemory/README.md
T
subochev 0fdc12695e
ci / JVM build + tests (push) Failing after 1m57s
docs: per-module README + root navigation hub + CI/release workflows
- README.md в каждом подмодуле: для библиотек — описание проблемы,
  подключение через maven-central/caffeine, версии в gradle/libs.versions.toml.
  Для запускаемых модулей — команды запуска + переменные среды с дефолтами.
- Корневой README.md переписан как навигационный хаб: что это, где клиенты,
  где серверы, как собрать, как опубликовать.
- build.gradle.kts: per-module POM-description через единую карту в rootProject.extra
  (порядок важен — нужно ДО apply плагина KMP, поэтому beforeEvaluate в subprojects).
- .gitea/workflows/ci.yml (новый): build + jvmTest + shadowJar на PR/push main.
- .gitea/workflows/release.yml (обновлён): публикует библиотеки в caffeine
  Nexus + собирает 3 fatjar'а и крепит их к release как бинарные ассеты.
2026-09-16 16:24:03 +03:00

43 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# :storage-inmemory — `pw.binom.agentik.storage.inmemory`
**In-memory реализация всех 4 сторов из `:storage-core`.**
Без платформенного IO, KMP-таргеты полностью. Тред-безопасна через `Mutex`.
## Какую проблему решает
- **Тесты** — мгновенный setup/teardown, нет файловой системы, нет JDBC,
детерминированное состояние.
- **Embedded-сценарии** (Android ART, iOS) где SQLDelight native-драйвер пока
недоступен или избыточен.
- **Отладка** — можно в рантайме дампить `MessageStore.listByConversation()` и
смотреть что попало в working memory без sqlite3 CLI.
Семантика **полностью совпадает** с `:storage-sqlite`: один и тот же контракт
`:storage-core`, одинаковые `AutoCloseable`, одинаковая тред-безопасность.
## Подключение
```kotlin
commonMain {
implementation("pw.binom.agentik:storage-inmemory:$version")
}
// Использование
val bundle = InMemoryStorageBundle(clock = Clock.System)
val conv = bundle.conversations.upsert(Conversation(id = "test", title = "demo", createdAt = now))
bundle.messages.append(message = UserMessage("hi"), conversationId = conv.id, workingMemoryIndex = 0)
```
## Где смотреть версии
- `version` из `gradle.properties` (`version=0.1.0`)
- релизы: `https://git.binom.pw/subochev/agentik/releases`
## Сборка
```bash
./gradlew :storage-inmemory:build
```
KMP-таргеты — полный набор. Зависимости — только `:storage-core`.