0fdc12695e
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 как бинарные ассеты.
107 lines
5.2 KiB
Markdown
107 lines
5.2 KiB
Markdown
# :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
|
||
```
|