No description
- Svelte 34.9%
- Rust 32.9%
- TypeScript 29.1%
- HTML 1.1%
- CSS 0.9%
- Other 1.1%
|
|
||
|---|---|---|
| .github/workflows | ||
| docs | ||
| landing | ||
| scripts | ||
| src | ||
| src-tauri | ||
| termia-terminal | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| ARCHITECTURE.md | ||
| CLAUDE.md | ||
| CONTRIBUTING.md | ||
| index.html | ||
| INSTALL.md | ||
| LICENSE | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| RELEASE_NOTES.md | ||
| svelte.config.js | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||
| vitest.config.ts | ||
Termia — Desktop Agent
Пульт управления ИИ-агентами. Desktop-приложение на Tauri 2 + Svelte 5.
Актуальная версия: termia-2 0.4.2.
Termia 1.0.0 = termia-2 Desktop Agent — исторический релиз.
Это был основной продукт релиза Termia 1.0.0.
Статус разработки
| Этап | Статус | Коммитов | Описание |
|---|---|---|---|
| Stage 0 — PoC | ✅ | 8 | Core loop: Chat → Task Board → Approval |
| Stage 1 — MVP | ✅ | 12 | Terminal + Code Viewer + Diff + Workspace + Git + Layout |
| Stage 2 — rmux integration | ✅ | 20+ | rmux daemon backend + terminal persistence |
| Stage 2 — AI Orchestrator | ⏳ | — | AI Orchestrator + Shared Memory |
| Fan Extensions & Skills (0.4.0) | ✅ | 13 | Discovery + UI panel + per-tab routing + slash autocomplete |
Быстрый старт
# из корня репозитория
pnpm install
pnpm tauri dev # Dev режим (Vite + Rust)
pnpm tauri build # Production сборка
Подробнее:
Архитектура
Фронтенд (src/)
src/
├── App.svelte # Главный layout (CSS Grid, 4 панели)
├── lib/
│ ├── chat/ # ChatPanel.svelte — чат с агентами
│ ├── taskboard/ # TaskBoard, TaskTreeItem, ApprovalCard
│ ├── terminal/ # Terminal*.svelte — xterm.js + WebGL
│ ├── workspace/ # CodeViewer + DiffViewer (CodeMirror 6)
│ ├── files/ # FileExplorer.svelte — дерево проекта
│ ├── git/ # GitExplorer.svelte — status, commit, log
│ └── store.svelte.ts # Svelte 5 runes — глобальное состояние
└── lib/CommandPalette.svelte
Бэкенд (src-tauri/src/)
src-tauri/src/
├── lib.rs # Tauri команды, invoke_handler
├── llm_api/ # 6 LLM-провайдеров (DeepSeek, OpenAI, Anthropic, Ollama, Xiaomi, ZAI)
├── agent_bridge/ # AgentBridge trait + FanBridge + PiBridge + EventBus
│ ├── traits.rs # AgentBridge, AgentEventHandler, AgentState, event types
│ ├── bridges.rs # FanBridge (WebSocket), PiBridge (pi_agent_rust SDK)
│ ├── event_bus.rs # Мультиплексирование событий
│ ├── agent_manager.rs # Параллельные агенты
│ ├── commands.rs # Tauri команды: start_task, approve, reject, cancel
│ └── connection.rs # WebSocket клиент к FAN server
├── terminal/ # PTY spawn/read/write (portable-pty, feature-gated rmux)
├── workspace/ # SQLite workspace persistence
└── chat_history/ # SQLite история чата
Основные фичи
Stage 1 MVP (завершён)
- 4-панельный layout — CSS Grid с drag handles и collapse
- Чат с агентами — FAN + PI, streaming ответов, markdown, XSS-safe
- Task Board — дерево задач, 5 статусов, approval карточки
- Терминал — xterm.js WebGL, scrollback 10K, множественные табы
- Code Viewer — CodeMirror 6, 11 языков, fold gutter
- Diff Viewer — unified/side-by-side, accept/reject per hunk
- File Explorer — tree view, git индикаторы (M/A/D/?), контекстное меню
- Git Explorer — status, stage/unstage, commit, log, branch switch
- Workspace persistence — SQLite WAL, автосохранение 30s
- 6 LLM-провайдеров — DeepSeek, OpenAI, Anthropic, Ollama, Xiaomi, ZAI
- Agent Protocol — единый event stream для FAN и PI
Stage 2 — rmux integration (завершён)
- termia-terminal path-dependency —
PtyBackendиTerminalBridgeизtermia-terminal/ - Push-модель — Tauri Events вместо polling
- Terminal persistence —
@xterm/addon-serialize+ SQLiteterminal_tabs - RmuxBackend —
rmux-sdk 0.5через feature flagrmux-backend - Graceful shutdown —
prevent_close→save-and-close→graceful_exit
Stage 2 — AI Orchestrator (в разработке)
- FAN extensions & skills — панель установленных расширений и скиллов, интеграция с CommandPalette, запуск в активном FAN-табе через per-tab RPC (
agent_session_send_prompt).
Тестирование
- Rust-тесты: 162 unit-теста (0 failures)
- Svelte: svelte-check 0 errors
Тесты
cargo test --lib # 162 теста
cargo check # Проверка компиляции
npx svelte-check # Проверка Svelte компонентов
Зависимости
- Фронтенд: svelte 5, xterm.js, codemirror 6, marked, @tauri-apps/api
- Бэкенд: tauri 2, portable-pty, rusqlite, tokio, serde, tokio-tungstenite
- Инструменты: vite, pnpm, TypeScript, Rust 1.92+