# T14: Dashboard — konzola za komunikaciju sa agentom **Kreirao:** planer **Datum:** 2026-02-20 **Agent:** coder **Model:** Sonnet **Zavisi od:** T12 --- ## Opis Terminal/konzola unutar dashboarda. Operater šalje komande mastermindu, vidi output. Kao chat sa Claude Code-om ali iz browsera. ## Kako radi 1. Tab "Konzola" na dashboardu 2. Dva panela — mogućnost pokretanja 2 paralelne sesije 3. Svaka sesija = zaseban Claude Code proces (`claude` CLI) 4. Operater šalje komandu → ENTER 5. Server pokrene Claude Code sa tom komandom 6. Output se prikazuje u realnom vremenu (SSE stream) 7. Kad završi — prompt se vraća ## Izgled ``` ┌──────────────────────────┬──────────────────────────┐ │ 🔧 Sesija 1 │ 🔧 Sesija 2 │ ├──────────────────────────┼──────────────────────────┤ │ > radi T13 │ > radi T14 │ │ ✅ T13 pokrenut... │ ✅ T14 pokrenut... │ │ [streaming output] │ [streaming output] │ │ ... │ ... │ │ │ │ │ ┌────────────────────┐ │ ┌────────────────────┐ │ │ │ Komanda... [⏎] │ │ │ Komanda... [⏎] │ │ │ └────────────────────┘ │ └────────────────────┘ │ └──────────────────────────┴──────────────────────────┘ ``` Operater može koristiti 1 ili 2 panela. Drugi panel se otvara dugmetom [+]. ## Endpointi ``` POST /console/exec → pokreni komandu (body: {"cmd": "...", "session": 1|2}) GET /console/stream/{id} → SSE stream outputa GET /console/history/{session} → istorija komandi za sesiju POST /console/kill/{session} → prekini proces u sesiji GET /console/sessions → status obe sesije (idle/running) ``` ## Podržane komande Konzola poziva kaos-supervisor CLI: | Komanda | Šta radi | |---------|----------| | `status` | Prikaži status svih taskova | | `next` | Šta je sledeće za rad | | `verify` | Pokreni verifikaciju | | `history` | Prikaži izvršene taskove | | `radi [TASK_ID]` | Pokreni task | Nepoznata komanda → prosleđuje se Claude Code-u kao free-form prompt. ## SSE streaming ```javascript const source = new EventSource('/console/stream/' + execId); source.onmessage = function(e) { document.getElementById('console-output').innerHTML += e.data + '\n'; }; source.addEventListener('done', function(e) { source.close(); // vrati prompt }); ``` ## Pravila - Max 2 paralelne sesije (svaka = zaseban `claude` proces) - Sesije ne smeju raditi na istom tasku - Server proverava: ako je task već active/ u drugoj sesiji → odbij - Timeout: KAOS_TIMEOUT iz .env (po sesiji) - Output se čuva u memoriji (poslednje 50 komandi po sesiji) - Scroll to bottom na novi output - Ctrl+C → prekini trenutnu komandu (POST /console/kill/{session}) - Istorija komandi: ↑/↓ strelice (po sesiji) - Claude Code se pokreće: `claude --dangerously-skip-permissions` ## Testovi - POST /console/exec {"cmd": "status", "session": 1} → 200 + exec ID - GET /console/stream/{id} → SSE stream - Dve sesije paralelno → obe rade - Isti task u obe sesije → druga odbijena - POST /console/kill/1 → prekine sesiju 1 - GET /console/sessions → status obe sesije - GET /console/history/1 → lista komandi sesije 1 --- ## Pitanja --- ## Odgovori