- Gin HTTP server sa dashboard i API endpointima - JSON API: GET /api/tasks, GET /api/task/:id, POST /api/task/:id/move - HTML dashboard sa Kanban prikazom (5 kolona) - HTMX za interaktivnost (klik na task → detalj panel) - Embedded static fajlovi (htmx.min.js, sortable.min.js) - Config: dodat KAOS_PORT - 10 server testova, 77 ukupno — svi prolaze - Očišćeni duplikati taskova iz v0.1 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
105 lines
2.4 KiB
Markdown
105 lines
2.4 KiB
Markdown
# T07: Integracija — sve zajedno
|
|
|
|
**Kreirao:** planer
|
|
**Datum:** 2026-02-20
|
|
**Agent:** coder
|
|
**Model:** Sonnet
|
|
**Zavisi od:** T06
|
|
|
|
---
|
|
|
|
## Opis
|
|
|
|
End-to-end tok: CLI pozove run → učita task → pokrene agenta →
|
|
verifikuje → napiše izveštaj → premesti task. Sve komponente
|
|
povezane u jedan flow.
|
|
|
|
## Fajlovi za izmenu
|
|
|
|
```
|
|
code/internal/supervisor/
|
|
├── supervisor.go ← Supervisor struct, Run() metoda
|
|
└── supervisor_test.go ← end-to-end testovi
|
|
```
|
|
|
|
## Supervisor struct
|
|
|
|
```go
|
|
type Supervisor struct {
|
|
Config *config.Config
|
|
TasksDir string
|
|
CodeDir string
|
|
ReportsDir string
|
|
}
|
|
|
|
func NewSupervisor(cfg *config.Config) *Supervisor
|
|
func (s *Supervisor) Run(taskID string) error
|
|
func (s *Supervisor) RunNext() error
|
|
```
|
|
|
|
## Run() tok
|
|
|
|
```go
|
|
func (s *Supervisor) Run(taskID string) error {
|
|
// 1. ScanTasks(s.TasksDir)
|
|
// 2. FindTask(taskID) — proveri da je u ready/
|
|
// 3. MoveTask → active/
|
|
// 4. RunTask(task, s.CodeDir, s.Config.Timeout)
|
|
// 5. Verify(s.CodeDir)
|
|
// 6. WriteReport(task, runResult, verifyResult, s.ReportsDir)
|
|
// 7. Ako AllPassed → MoveTask → review/
|
|
// 8. Ako !AllPassed → MoveTask → review/ (sa statusom failed u izveštaju)
|
|
// 9. Prikaži rezime
|
|
}
|
|
```
|
|
|
|
## RunNext() tok
|
|
|
|
```go
|
|
func (s *Supervisor) RunNext() error {
|
|
// 1. ScanTasks
|
|
// 2. NextTask — prvi iz ready/ sa ispunjenim zavisnostima
|
|
// 3. Ako nema → vrati poruku "nema taskova"
|
|
// 4. Run(task.ID)
|
|
}
|
|
```
|
|
|
|
## Integracija sa CLI
|
|
|
|
main.go poziva:
|
|
- `run T01` → supervisor.Run("T01")
|
|
- `run` (bez ID) → supervisor.RunNext()
|
|
- `status` → ScanTasks + ispis
|
|
- `next` → NextTask + ispis
|
|
- `verify` → Verify + ispis
|
|
- `history` → čitaj reports/ + ispis
|
|
|
|
## Testovi
|
|
|
|
- End-to-end: napravi temp TASKS/ strukturu, stavi task u ready/,
|
|
pokreni Run() sa mock komandom → proveri da je task u review/,
|
|
izveštaj napisan, output tačan
|
|
- RunNext: dva taska u ready/, jedan sa neispunjenom zavisnošću →
|
|
pokrene pravi
|
|
- Nema taskova u ready/ → graceful poruka
|
|
- Task koji je već active/ → greška
|
|
- Failed verifikacija → task u review/ sa failed statusom u izveštaju
|
|
- Config greška → graceful poruka
|
|
|
|
## Očekivani izlaz
|
|
|
|
`kaos-supervisor run T01` prolazi ceo tok od učitavanja do izveštaja
|
|
(sa mock agentom). `go test ./... -v` — svi testovi zeleni.
|
|
|
|
---
|
|
|
|
## Pitanja
|
|
|
|
*(agent piše pitanja ovde, planer odgovara)*
|
|
|
|
---
|
|
|
|
## Odgovori
|
|
|
|
*(planer piše odgovore ovde)*
|