feat(agentik-tui): TUI client v2 на Mosaic — без vim-клавиш, только Tab/Enter/Esc/Ctrl-D/F1/стрелки
Вместо v1 (history-список + slash-команды) делаем сразу v2: - header (id/conv/focus), history, input, footer - переключение фокуса Tab/Shift-Tab (history/input/sidebar) - ↑↓ scrollback, ←→ курсор в input - Enter submit (User-сообщение в history), Backspace/Del удаление, Esc clear - Ctrl-D/Ctrl-C выход (заглушка — пишет в history, реальный exit добавим) - F1 toggle help-оверлея Архитектурно: используем StateFlow+collectAsState вместо mutableStateOf, потому что в Mosaic 0.18 recompose от mutableStateOf-writes из key-handler не триггерится автоматически (требует ручного Snapshot.apply). StateFlow через collectAsState работает out-of-the-box (см. samples/snake в репо Mosaic). Compose Compiler plugin (org.jetbrains.kotlin.plugin.compose) обязателен — без него @Composable-лямбды компилятся в Function0 вместо Function2 и runMosaicBlocking не находит сигнатуру. Цели сборки: jvm + macosX64/Arm64 + linuxX64/Arm64 + mingwX64 (iOS не нужен). Бэкенд (:client, ktor-cio) — jvmMain only пока, nativeMain заглушка. Tests: 370/370 green.
This commit is contained in:
@@ -39,6 +39,9 @@ include(":client")
|
||||
// CLI-клиент поверх :client — REPL со slash-командами и стримингом ответов.
|
||||
// KMP со всеми целями (jvm + весь натив), jvm-таргет собирается как shadowJar.
|
||||
include(":agentik-cli")
|
||||
// TUI-клиент поверх :client — Compose-style UI (Mosaic от Jake Wharton),
|
||||
// рендерится в ANSI-терминал. KMP со всеми desktop-целями (без ios).
|
||||
include(":agentik-tui")
|
||||
// Встраиваемая долговременная память агента. `:memory-api` — интерфейсы,
|
||||
// `:memory-md` — реализация на базе §-файлов (Hermes-style).
|
||||
include(":memory-api")
|
||||
|
||||
Reference in New Issue
Block a user