docs: per-module README + root navigation hub + CI/release workflows
ci / JVM build + tests (push) Failing after 1m57s
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:
@@ -1,2 +1,86 @@
|
||||
# agentik
|
||||
|
||||
Self-contained multi-module Kotlin Multiplatform агент с долговременной памятью,
|
||||
персоной, навыками и HTTP-фасадом под `/agentik`. Состоит из библиотечных модулей
|
||||
(KMP, опубликованных в Nexus `caffeine`) и трёх запускаемых артефактов.
|
||||
|
||||
## Запускаемые модули
|
||||
|
||||
| Модуль | Что делает | Артефакт | Таргеты |
|
||||
|---|---|---|---|
|
||||
| [`:standalone`](standalone/README.md) | HTTP-сервер со всеми транспортами (AG-UI / A2A / `:proto`), SQLite, памятью, скилами, SOUL, MCP | `standalone-all.jar` (≈250 MB) | JVM |
|
||||
| [`:agentik-cli`](agentik-cli/README.md) | REPL-клиент к `/agentik` со slash-командами | `agentik-cli-all.jar` (≈8 MB) | JVM |
|
||||
| [`:agentik-tui`](agentik-tui/README.md) | Compose-style TUI-клиент (Mosaic) к `/agentik` | `agentik-tui-all.jar` (≈10 MB) | JVM + macosX64/macosArm64/linuxX64/linuxArm64/mingwX64 |
|
||||
|
||||
## Библиотеки
|
||||
|
||||
Все библиотеки — **KMP (jvm + 8 native)**, опубликованы в Nexus-репо `caffeine`
|
||||
под группой `pw.binom.agentik`.
|
||||
|
||||
### Протокол и транспорт
|
||||
- [`:proto`](proto/README.md) — `Agent` / `Conversation` / `Message` / `Event`, типы без сетевой логики. **Stateful** — клиент шлёт только новый message, агент владеет историей.
|
||||
- [`:server`](server/README.md) — Ktor-фасад, экспонирующий `:proto.Agent` под `/agentik` (HTTP+JSON+SSE).
|
||||
- [`:client`](client/README.md) — Ktor-клиент, превращающий HTTP `/agentik` обратно в `Agent`/`Conversation`.
|
||||
|
||||
### Память
|
||||
- [`:memory-api`](memory-api/README.md) — контракт: `MemoryStore`, `MemoryNote`, `MemoryPrefetcher`, `MemoryReviewer`, `MemoryTools`.
|
||||
- [`:memory-md`](memory-md/README.md) — Hermes-style реализация поверх §-файлов (`user.md`/`world.md`/`preference.md`).
|
||||
- [`:memory-vector`](memory-vector/README.md) — JVector (ANN) + SQLite + эмбеддинги (HTTP/SIGLIP on-device).
|
||||
|
||||
### Хранилище
|
||||
- [`:storage-core`](storage-core/README.md) — `ConversationStore` / `MessageStore` / `WorkingMemoryStore` / `ReflectionStore`.
|
||||
- [`:storage-inmemory`](storage-inmemory/README.md) — in-memory реализация (для тестов и embedded).
|
||||
- [`:storage-sqlite`](storage-sqlite/README.md) — SQLDelight реализация (прод-бэкенд).
|
||||
|
||||
### Логика
|
||||
- [`:skills`](skills/README.md) — opencode-style `SKILL.md` / `*.yaml` парсер + рендер в system prompt.
|
||||
- [`:agent-toolsets`](agent-toolsets/README.md) — реестр тулов + `enable_toolset`/`disable_toolset` диспетчер.
|
||||
|
||||
## Где смотреть версии
|
||||
|
||||
- `gradle.properties` → `version=0.1.0` (текущая разрабатываемая)
|
||||
- Релизы: `https://git.binom.pw/subochev/agentik/releases`
|
||||
- Опубликованные артефакты: Nexus-репозиторий `caffeine`
|
||||
(`http://nexus.xx/repository/caffeine/pw/binom/agentik/`)
|
||||
|
||||
При подключении библиотек используйте одну и ту же `version` (`VERSION` в Gradle
|
||||
зависимостях). Все артефакты синхронизированы и совместимы по ABI в пределах
|
||||
одной версии.
|
||||
|
||||
## Публикация (CI/CD)
|
||||
|
||||
`.gitea/workflows/release.yml` — публикует все KMP-таргеты всех модулей в
|
||||
Nexus-репо `caffeine` при создании Gitea Release. Версия артефактов берётся из
|
||||
имени тега (`git tag v0.1.0` → `pw.binom.agentik:*:0.1.0`).
|
||||
|
||||
```bash
|
||||
# Создать релиз:
|
||||
git tag v0.1.0 && git push --tags
|
||||
# → Gitea → Releases → New Release → выбрать тег → Publish
|
||||
# → CI публикует в Nexus (нужны секреты BINOM_REPO_USER/BINOM_REPO_PASSWORD)
|
||||
```
|
||||
|
||||
## Сборка
|
||||
|
||||
```bash
|
||||
# Всё
|
||||
./gradlew build
|
||||
|
||||
# Только JVM-тесты всех модулей
|
||||
./gradlew jvmTest
|
||||
|
||||
# Только fatjar запускаемых модулей
|
||||
./gradlew :standalone:shadowJar :agentik-cli:shadowJar :agentik-tui:shadowJar
|
||||
|
||||
# Опубликовать локально в mavenLocal (~/.m2)
|
||||
./gradlew publishToMavenLocal
|
||||
|
||||
# Опубликовать в Nexus (нужны креды)
|
||||
./gradlew publish -Pversion=0.2.0 \
|
||||
-Pbinom.repo.url=http://nexus.xx/repository/caffeine/ \
|
||||
-Pbinom.repo.user=USER -Pbinom.repo.password=PASS
|
||||
```
|
||||
|
||||
## Лицензия
|
||||
|
||||
Apache-2.0 — см. [LICENSE](LICENSE) (если есть).
|
||||
|
||||
Reference in New Issue
Block a user