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:
@@ -0,0 +1,106 @@
|
||||
# :agentik-tui — Compose-for-Mosaic TUI клиент к /agentik
|
||||
|
||||
Compose-style TUI-клиент (KMP desktop, без iOS), рендерится в ANSI-терминал
|
||||
через библиотеку [Mosaic](https://github.com/JakeWharton/mosaic) 0.18. Полная
|
||||
клавиатурная навигация — никаких `:`-префиксов (как в vim).
|
||||
|
||||
## Сборка
|
||||
|
||||
```bash
|
||||
./gradlew :agentik-tui:shadowJar
|
||||
# Результат: agentik-tui/build/libs/agentik-tui-all.jar (~10 MB)
|
||||
```
|
||||
|
||||
Также доступен через Nexus (`caffeine` репо) — `pw.binom.agentik:agentik-tui:VERSION`.
|
||||
|
||||
## Запуск
|
||||
|
||||
```bash
|
||||
# По умолчанию — http://localhost:8080/agentik
|
||||
java --enable-native-access=ALL-UNNAMED \
|
||||
-jar agentik-tui-all.jar
|
||||
|
||||
# К другому серверу
|
||||
java --enable-native-access=ALL-UNNAMED \
|
||||
-jar agentik-tui-all.jar --server http://192.168.76.166:8080/agentik
|
||||
|
||||
# Без восстановления последней беседы
|
||||
java --enable-native-access=ALL-UNNAMED \
|
||||
-jar agentik-tui-all.jar --no-history
|
||||
|
||||
# Конкретная беседа
|
||||
java --enable-native-access=ALL-UNNAMED \
|
||||
-jar agentik-tui-all.jar --id <conversation-uuid>
|
||||
```
|
||||
|
||||
Альтернативно: `AGENTIK_SERVER` env-переменная.
|
||||
|
||||
> **`--enable-native-access=ALL-UNNAMED`** обязателен: Mosaic использует
|
||||
> нативные API терминала (`stdin`/`stdout` raw mode), что требует
|
||||
> `--enable-native-access`.
|
||||
|
||||
## Клавиши
|
||||
|
||||
| Клавиша | Действие |
|
||||
|---|---|
|
||||
| **Tab** / **Shift-Tab** | переключение фокуса: input → history → sidebar → … |
|
||||
| **Enter** | отправить набранное сообщение |
|
||||
| **Backspace** / **Delete** | удалить символ |
|
||||
| **←/→** / **Home/End** | курсор в input |
|
||||
| **↑/↓** | scrollback (в фокусе на history) / input history (в фокусе на input) |
|
||||
| **Esc** | очистить input |
|
||||
| **F1** | показать/скрыть help overlay |
|
||||
| **Ctrl-D** / **Ctrl-C** | прервать активный ход (повторное нажатие — выход) |
|
||||
|
||||
`:`-префикс команд **отключён намеренно** — для отправки команд используются
|
||||
клавиши. Если нужно сделать что-то нестандартное — переключитесь на `:agentik-cli`
|
||||
(REPL с slash-командами).
|
||||
|
||||
## Переменные окружения
|
||||
|
||||
| Переменная | Дефолт | Назначение |
|
||||
|---|---|---|
|
||||
| `AGENTIK_SERVER` | `http://localhost:8080/agentik` | URL HTTP-фасада `:server` |
|
||||
|
||||
История сессий: `~/.agentik/tui-state.json`.
|
||||
|
||||
## Layout
|
||||
|
||||
```
|
||||
┌────────────────────────────────────────────────────────────────┐
|
||||
│ agentik · agent-id · <conv-uuid> · focus=input │ ← header
|
||||
├────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ [User 14:32] │
|
||||
│ привет │
|
||||
│ │
|
||||
│ [Bot 14:32] │
|
||||
│ привет! чем помочь? │ ← history (scroll)
|
||||
│ ▍ │
|
||||
│ │
|
||||
├────────────────────────────────────────────────────────────────┤
|
||||
│ > | | │ ← input (cursor)
|
||||
├────────────────────────────────────────────────────────────────┤
|
||||
│ Tab focus ↑↓ scroll Enter send Esc clear F1 help ⌃D exit │ ← footer
|
||||
└────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## Что пока работает и что нет
|
||||
|
||||
✅ header + history + input + footer
|
||||
✅ focus cycling (Tab / Shift-Tab)
|
||||
✅ input editing (chars, BS, Del, ←/→, Home/End, Enter)
|
||||
✅ история input'а через ↑/↓ (в фокусе на input)
|
||||
✅ scrollback history (в фокусе на history)
|
||||
✅ F1 help overlay
|
||||
✅ Ctrl-D / Ctrl-C interrupt
|
||||
|
||||
⌛ mouse support (термиос SGR-mouse parsing) — для v3+.
|
||||
⌛ split-pane (history left / input right) — пока input внизу, full-width.
|
||||
⌛ `:agentik-cli`-slash-команды внутри TUI (history backfill / list / switch).
|
||||
|
||||
## Тесты
|
||||
|
||||
```bash
|
||||
./gradlew :agentik-tui:jvmTest
|
||||
```
|
||||
Reference in New Issue
Block a user