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
+76
View File
@@ -0,0 +1,76 @@
# :agentik-cli — JVM CLI клиент к /agentik
REPL-клиент к запущенному `:standalone`-серверу на базе `:client`. **JVM-only**
(JLine требует termios + `java.io.File`); для desktop-альтернативы — `:agentik-tui`.
## Сборка
```bash
./gradlew :agentik-cli:shadowJar
# Результат: agentik-cli/build/libs/agentik-cli-all.jar (~8 MB)
```
Также доступен через Maven Central Nexus (`caffeine` репо) — см. релизы:
`https://git.binom.pw/subochev/agentik/releases`. После публикации нового
тега jar появляется как `pw.binom.agentik:agentik-cli:VERSION` (artifact + classifier `all`).
## Запуск
```bash
# По умолчанию — http://localhost:8080/agentik
java -jar agentik-cli-all.jar
# К другому серверу
java -jar agentik-cli-all.jar --server http://192.168.76.166:8080/agentik
# Без восстановления последней беседы
java -jar agentik-cli-all.jar --no-history
# В конкретной беседе
java -jar agentik-cli-all.jar --id <conversation-uuid>
```
Альтернативно: `AGENTIK_SERVER` env-переменная с тем же эффектом, что и `--server`.
## Slash-команды внутри REPL
| Команда | Алиасы | Действие |
|---|---|---|
| `/help` | `/?` | список команд + клавиш |
| `/new <title?>` | `/n` | создать новый диалог |
| `/list` | `/ls` | показать все диалоги |
| `/switch <id>` | `/sw <id>` | переключиться на диалог |
| `/rename <title>` | `/mv <title>` | переименовать текущий |
| `/delete <id?>` | `/rm <id?>` | удалить (без id — текущий) |
| `/interrupt` | `/stop`, `/cancel` | прервать активный ход |
| `/history` | `/h`, `/hist` | backfill истории через `getMessages` |
| `/pwd` | `/where` | показать текущий conversation id |
| `/exit` | `/quit` | выйти (Ctrl-D / Ctrl-C — то же) |
Свободный текст = сообщение текущему диалогу; SSE-события (start_reasoning /
start_response / append_text / end / interrupted / error) стримятся в stdout
в реальном времени.
## Переменные окружения
| Переменная | Дефолт | Назначение |
|---|---|---|
| `AGENTIK_SERVER` | `http://localhost:8080/agentik` | URL HTTP-фасада `:server` |
История сессий (id + last event timestamp) сохраняется в
`~/.agentik/cli-state.json` (атомарно через `tmp → rename`).
## Особенности
- **Arrow keys, history (↑/↓), Ctrl-D/Ctrl-C** — через JLine 3.30, история
readline в `~/.agentik/.inputrc`-стиле (через JLine `DefaultHistory`).
- **Reconnect-safe SSE** — если сервер рестартовал, клиент подхватывает с
`lastEventAt` через `events(after)`.
- **Snapshot-режим** — если подключились к диалогу впервые, `/history`
подгружает старые сообщения через `getMessages(after)` (offline-бэкфилл).
## Тесты
```bash
./gradlew :agentik-cli:jvmTest
```