docs: per-module README + root navigation hub + CI/release workflows
ci / JVM build + tests (push) Failing after 1m57s

- 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 как бинарные ассеты.
This commit is contained in:
2026-09-16 16:24:03 +03:00
parent e68db11aaa
commit 0fdc12695e
18 changed files with 1279 additions and 364 deletions
+42
View File
@@ -0,0 +1,42 @@
# :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`.