T22: Zamena --dangerously-skip-permissions sa --permission-mode bypassPermissions

Stari flag ne radi kad je proces pokrenut kao root. Zamenjeno u
console.go, submit.go i CLAUDE.md.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
djuka 2026-02-20 15:00:28 +00:00
parent 695bd24d1d
commit 7efc92feac
3 changed files with 109 additions and 124 deletions

229
CLAUDE.md
View File

@ -1,71 +1,81 @@
# KAOS — Mastermind # KAOS — Mastermind
**Verzija:** 0.3.0 **Verzija:** 0.6.0
**Poslednje ažuriranje:** 2026-02-20 **Ažurirano:** 2026-02-20
---
## Učesnici
| Uloga | Ko | Šta radi |
|-------|----|----------|
| Klijent | Korisnik | Prijavi problem/zahtev kroz dashboard formu |
| Planer | Claude u chatu | Piše taskove, odgovara na pitanja agenata |
| Operater | Nenad | Odobrava, pregleda, kontroliše. Šef. |
| Agent | Claude Code na serveru | Izvršava taskove (čist kontekst po tasku) |
Komunikacija: kroz fajlove u TASKS/ (sync Windows ↔ Server).
Planer i Agent nikad direktno. → detalji: `TASKS/Workflow-Spec.md`
---
## Dashboard (http://10.0.0.1:8080)
| Tab | Funkcija |
|-----|----------|
| Kanban | Board sa kolonama, drag & drop, workflow dugmad |
| Dokumenti | Pregled svih .md fajlova (goldmark renderovanje) |
| Konzola | Terminal — 2 paralelne claude sesije |
| Prijava | Klijent mod (forma) + Operater mod (chat sa claude CLI) |
### Workflow dugmad na karticama
| Stanje | Dugme |
|--------|-------|
| backlog, zavisnosti ❌ | 🔒 Blokiran |
| backlog, zavisnosti ✅ | 👁 Pregledaj → ✅ Odobri |
| ready | ▶ Pusti (pokreni agenta) |
| active | ⚙️ Radi |
| review, pitanje | 💬 Odgovori → ▶ Nastavi |
| review, završen | 👁 Pregledaj → ✅ Odobri / ↩ Vrati |
| done | 📊 Izveštaj |
### Pokretanje agenta
"Pusti ▶" pokrene NOV `claude` proces sa čistim kontekstom:
```bash
claude --permission-mode bypassPermissions -p "Pročitaj CLAUDE.md i radi task TASKS/ready/T{XX}.md"
```
Svaki task = zasebna sesija. Nema istorije iz prethodnih taskova.
--- ---
## Kad te pokrenu ## Kad te pokrenu
Ti razgovaraš sa operaterom. Operater je tvoj šef — on odlučuje šta se radi. 1. Pogledaj `TASKS/ready/` i `TASKS/review/`
2. Pokaži operateru šta ćeš da radiš — **čekaj odobrenje**
3. Izvršavaj po pravilima agenta (`agents/*/CLAUDE.md`)
### Tok rada ### Kad završiš task
1. Operater kaže "radi" ili "T01" ili "nastavi" - Build/test/vet moraju proći
2. Pogledaj `TASKS/ready/` — ima li task spreman za rad - Commit: `T{XX}: Opis na srpskom`
3. Pogledaj `TASKS/review/` — ima li task sa dopunjenim odgovorima - Push + tag (semver) + push tags
4. Pokaži operateru šta ćeš da radiš — **čekaj odobrenje** - Izveštaj u `TASKS/reports/T{XX}-report.md`
5. Kad dobiješ ok — izvršavaj - Premesti task u `review/`
### Kad izvršavaš task
1. Premesti fajl iz `ready/` u `active/`
2. Pročitaj `agents/coder/CLAUDE.md` — pravila kodiranja
3. Kod piši u `code/` folderu
4. Ako imaš pitanje:
- Zapiši pitanje u task fajl pod `## Pitanja`
- Premesti fajl iz `active/` u `review/`
- Reci operateru "imam pitanje, čekam odgovor u fajlu"
- **STANI — ne radi dalje dok operater ne kaže "nastavi"**
5. Kad nastaviš:
- Pročitaj odgovor u task fajlu
- Premesti fajl iz `review/` u `active/`
- Nastavi rad
6. Kad završiš:
- Svi testovi moraju proći
- Build mora proći
- Commituj: `T{XX}: Opis na srpskom`
- Push: `git push origin main`
- Tag: `git tag v0.1.{PATCH}` (patch = redni broj završenog taska)
- Push tag: `git push origin --tags`
- Napiši izveštaj u `TASKS/reports/T{XX}-report.md`
- Premesti task fajl iz `active/` u `review/`
- Reci operateru "gotovo, čeka pregled"
### NIKAD ### NIKAD
- Ne radi bez odobrenja operatera - Ne radi bez odobrenja operatera
- Ne pretpostavljaj šta operater želi
- Ne preskoči "čekaj odobrenje" - Ne preskoči "čekaj odobrenje"
- Ne radi na tasku koji nije u `ready/` ili `review/` - Ne radi na tasku koji nije u `ready/` ili `review/`
--- ---
## Task folderi ## Ko šta sme da premesti
``` | Iz → U | Operater | Agent |
TASKS/ |---------|----------|-------|
├── backlog/ ← novi taskovi (piše planer, čeka odobrenje operatera)
├── ready/ ← odobreni za rad (operater premesti iz backlog/)
├── active/ ← u izradi (agent premesti iz ready/)
├── review/ ← čeka pregled (agent ima pitanje ili završio)
├── done/ ← završeno i odobreno (operater premesti iz review/)
└── reports/ ← izveštaji izvršenih taskova
```
### Ko šta sme da premesti
| Iz → U | Operater (dashboard) | Agent (CLI) |
|---------|---------------------|-------------|
| backlog → ready | ✅ | ❌ | | backlog → ready | ✅ | ❌ |
| ready → backlog | ✅ | ❌ | | ready → backlog | ✅ | ❌ |
| ready → active | ❌ | ✅ | | ready → active | ❌ | ✅ |
@ -74,93 +84,68 @@ TASKS/
| review → ready | ✅ | ❌ | | review → ready | ✅ | ❌ |
| done → bilo gde | ❌ | ❌ | | done → bilo gde | ❌ | ❌ |
Server validira. Nedozvoljen potez → 403.
Deployer jedini KREIRA taskove u backlog/ (greške iz logova).
--- ---
## Struktura projekta ## Struktura
``` ```
/root/projects/KAOS/ /opt/kaos/
├── CLAUDE.md ← OVO
├── CLAUDE.md ← OVO — mastermind (v0.3.0) ├── agents/*/CLAUDE.md ← pravila po agentu
├── README.md ├── TASKS/ ← backlog/ready/active/review/done/reports/
├── code/ ← Go + HTMX (jedan binary, nema npm)
├── agents/ ← specijalizovani agenti ├── logs/ ← persistent logovi (planirano)
│ ├── triage/CLAUDE.md ├── documentation/ ← eksterna dokumentacija
│ ├── task-manager/CLAUDE.md └── templates/new-project/ ← template za nove projekte
│ ├── coder/CLAUDE.md
│ ├── frontend/CLAUDE.md
│ ├── checker/CLAUDE.md
│ ├── reporter/CLAUDE.md
│ ├── docs/CLAUDE.md
│ └── deployer/CLAUDE.md
├── documentation/ ← eksterna dokumentacija (tuđe)
├── TASKS/ ← taskovi po stanju
│ ├── backlog/
│ ├── ready/
│ ├── active/
│ ├── review/
│ ├── done/
│ ├── reports/
│ ├── MASTER-STATUS.md
│ └── Implementation-Tasks.md
└── code/ ← Go kod
``` ```
--- ---
## Stack
Go 1.22+ · Gin · HTMX + Sortable.js (nema npm) · goldmark (markdown) · Gitea (localhost:3000) · Hetzner (10.0.0.1) · Claude Code CLI (Pro licenca)
Projekat: `/opt/kaos/` (vlasnik: kaos korisnik)
Server radi kao root, agenti se pokreću kao `kaos` korisnik.
Operater mod u Prijavi koristi `claude` CLI (Pro licenca), ne API.
API ključ (ANTHROPIC_API_KEY) se čuva za budući direktni API mod.
---
## Agent registar ## Agent registar
| Agent | Folder | Model | Verzija | | Agent | Model | Verzija | Detalji |
|-------|--------|-------|---------| |-------|-------|---------|---------|
| Triage | agents/triage/ | Haiku | 0.1.0 | | Triage | Haiku | 0.1.0 | `agents/triage/CLAUDE.md` |
| Task Manager | agents/task-manager/ | Sonnet/Haiku | 0.1.0 | | Task Manager | Sonnet/Haiku | 0.1.0 | `agents/task-manager/CLAUDE.md` |
| Coder | agents/coder/ | Sonnet/Opus | 0.2.0 | | Coder | Sonnet/Opus | 0.2.0 | `agents/coder/CLAUDE.md` |
| Frontend | agents/frontend/ | Sonnet | 0.2.0 | | Frontend | Sonnet | 0.2.0 | `agents/frontend/CLAUDE.md` |
| Checker | agents/checker/ | Haiku/Opus | 0.1.0 | | Checker | Haiku/Opus | 0.1.0 | `agents/checker/CLAUDE.md` |
| Reporter | agents/reporter/ | Haiku | 0.1.0 | | Reporter | Haiku | 0.1.0 | `agents/reporter/CLAUDE.md` |
| Docs | agents/docs/ | Haiku | 0.1.0 | | Docs | Haiku | 0.1.0 | `agents/docs/CLAUDE.md` |
| Deployer | agents/deployer/ | Haiku | 0.1.0 | | Deployer | Haiku/Sonnet | 0.2.0 | `agents/deployer/CLAUDE.md` |
Pravilo: najjeftiniji model koji može da uradi posao.
--- ---
## Model selekcija ## Verzionisanje
Pravilo: uvek najjeftiniji model koji može da uradi posao. Semver. Patch = task, Minor = milestone, Major = breaking change.
Git: commit → push → tag → push tags. Format: `T{XX}: Opis`
| Zadatak | Agent | Model | Cena/M tokena | Timeout: 30 min default (KAOS_TIMEOUT u .env).
|---------|-------|-------|---------------|
| Klasifikacija prijave | triage | Haiku | $0.25/$1.25 |
| Generisanje taska | task-manager | Sonnet | $3/$15 |
| Kodiranje | coder | Sonnet | $3/$15 |
| Kompleksno kodiranje | coder | Opus | $15/$75 |
| Frontend | frontend | Sonnet | $3/$15 |
| Build + Test | checker | Haiku | $0.25/$1.25 |
| Code review | checker | Opus | $15/$75 |
| Izveštaj | reporter | Haiku | $0.25/$1.25 |
| Dokumentacija | docs | Haiku | $0.25/$1.25 |
| Deploy | deployer | Haiku | $0.25/$1.25 |
--- ---
## Pristup ## Reference
| Folder | Čita | Piše | | Šta | Gde |
|--------|------|------| |-----|-----|
| agents/ | ✅ | ❌ | | Status svih taskova + bugovi | `TASKS/MASTER-STATUS.md` |
| TASKS/ | ✅ | ✅ (status, premesti fajlove) | | Kompletan workflow | `TASKS/Workflow-Spec.md` |
| documentation/ | ✅ | ❌ | | Multi-agent arhitektura | `TASKS/Multi-Agent-Spec.md` |
| code/ | ✅ | ✅ (kad izvršava task) | | Format izveštaja | `TASKS/reports/T01-report.md` (primer) |
| Template za novi projekat | `templates/new-project/` |
---
## Verzionisanje CLAUDE.md fajlova
Format: `Major.Minor.Patch`
- Patch (0.1.1) — sitne ispravke
- Minor (0.2.0) — nova pravila, novi korak
- Major (1.0.0) — fundamentalna promena
Kad se promeni CLAUDE.md → podigne verzija → ažurira Agent registar.

View File

@ -157,7 +157,7 @@ func cleanEnv() []string {
// runCommand executes a command and streams output to listeners. // runCommand executes a command and streams output to listeners.
func (s *Server) runCommand(session *sessionState, command, execID string) { func (s *Server) runCommand(session *sessionState, command, execID string) {
// Build the claude command // Build the claude command
cmd := exec.Command("claude", "--dangerously-skip-permissions", "-p", command) cmd := exec.Command("claude", "--permission-mode", "bypassPermissions", "-p", command)
cmd.Dir = s.projectRoot() cmd.Dir = s.projectRoot()
cmd.Env = cleanEnv() cmd.Env = cleanEnv()

View File

@ -156,7 +156,7 @@ func (s *Server) handleChatSubmit(c *gin.Context) {
// runChatCommand executes claude CLI and streams output to chat listeners. // runChatCommand executes claude CLI and streams output to chat listeners.
func (s *Server) runChatCommand(chat *chatState, prompt string) { func (s *Server) runChatCommand(chat *chatState, prompt string) {
cmd := exec.Command("claude", "--dangerously-skip-permissions", "-p", prompt) cmd := exec.Command("claude", "--permission-mode", "bypassPermissions", "-p", prompt)
cmd.Dir = s.projectRoot() cmd.Dir = s.projectRoot()
cmd.Env = cleanEnv() cmd.Env = cleanEnv()