111 lines
3.8 KiB
Markdown
111 lines
3.8 KiB
Markdown
# 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
|