From ea7926555ca1d7359747f49ee9b6a53cc1bf01cd Mon Sep 17 00:00:00 2001 From: vegard Date: Thu, 19 Mar 2026 17:55:00 +0000 Subject: [PATCH] To hovedoppdrag: komplett synops-agent + komplett admin-panel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit synops-agent: 8 faser fra robustgjøring til daemon/vaktmester. Admin-panel: nøkkelhåndtering, AI-ruting, oppgaver, agent-oversikt, brukeradmin. Bygger på eksisterende sider + alt vi har diskutert. Co-Authored-By: Claude Opus 4.6 (1M context) --- docs/oppdrag/README.md | 9 +++ docs/oppdrag/admin-komplett.md | 111 ++++++++++++++++++++++++++ docs/oppdrag/synops-agent-komplett.md | 81 +++++++++++++++++++ 3 files changed, 201 insertions(+) create mode 100644 docs/oppdrag/README.md create mode 100644 docs/oppdrag/admin-komplett.md create mode 100644 docs/oppdrag/synops-agent-komplett.md diff --git a/docs/oppdrag/README.md b/docs/oppdrag/README.md new file mode 100644 index 0000000..b594e0a --- /dev/null +++ b/docs/oppdrag/README.md @@ -0,0 +1,9 @@ +# Aktive oppdrag + +Oppdrag som er godkjent for implementering. Når oppgave-noder +er implementert i PG flyttes disse dit. Inntil da lever de her. + +## Pågående + +1. [synops-agent-komplett.md](synops-agent-komplett.md) — Fullstendig agent-harness +2. [admin-komplett.md](admin-komplett.md) — Komplett admin-panel diff --git a/docs/oppdrag/admin-komplett.md b/docs/oppdrag/admin-komplett.md new file mode 100644 index 0000000..7c9afd9 --- /dev/null +++ b/docs/oppdrag/admin-komplett.md @@ -0,0 +1,111 @@ +# Oppdrag: Komplett admin-panel + +Samle all administrasjon i et helhetlig admin-panel som dekker +alt vi har diskutert: nøkler, AI-ruting, oppgaver, overvåking. + +## Eksisterende admin-sider + +Disse finnes allerede under /admin/*: +- `/admin` — oversikt +- `/admin/ai` — AI Gateway-konfigurasjon +- `/admin/health` — serverhelse +- `/admin/jobs` — jobbkø +- `/admin/podcast-import` — podcast-import +- `/admin/podcast-stats` — nedlastingsstatistikk +- `/admin/usage` — ressursforbruk +- `/admin/webhooks` — webhook-admin + +## Nye admin-sider + +### API-nøkler (`/admin/keys`) + +Ref: `docs/infra/nøkkelhåndtering.md` + +- [ ] Nøkkelliste med provider, label, status, sist brukt +- [ ] Legg til nøkkel (med test-tilkobling) +- [ ] Deaktiver/slett nøkkel +- [ ] Hint-visning (aldri full nøkkel etter lagring) +- [ ] Backend: api_keys-tabell i PG, AES-256-GCM kryptering + +### AI-ruting (`/admin/ai` — utvid eksisterende) + +- [ ] Rediger ai_job_routing direkte i UI (ikke bare visning) +- [ ] Fire nivåer: synops/low, synops/medium, synops/high, synops/extreme +- [ ] Per-nivå: velg modell + provider fra dropdown +- [ ] Fallback-kjeder: "hvis denne feiler, prøv denne" +- [ ] Test-knapp per nivå ("send test-prompt") +- [ ] Kostnadsestimat per nivå (basert på token-pris) + +### Oppgaver (`/admin/tasks`) + +Ref: `docs/infra/oppgaver.md` + +- [ ] Tre faner: Proposals | Oppdrag | Tasks +- [ ] Opprett ny proposal/oppdrag/task +- [ ] Drag-and-drop for prioritetsendring +- [ ] Status-endring (pause, gjenoppta, blokker) +- [ ] Klikk → detaljer + tilknyttet chat +- [ ] "Godkjenn proposal" → opprett oppdrag +- [ ] Vis hvem/hva som jobber på en oppgave +- [ ] Krasj-deteksjon: vis stale tasks + +### Agent-oversikt (`/admin/agents`) + +- [ ] Liste over aktive synops-agent-instanser +- [ ] Per agent: modell, oppgave, token-forbruk, varighet +- [ ] Stopp/restart agent +- [ ] Historikk: siste kjøringer med resultat +- [ ] Claude Code-sesjoner (aktive, nylige) + +### Brukeradministrasjon (`/admin/users`) + +- [ ] Liste over brukere (person-noder) +- [ ] Roller per samling +- [ ] AI-budsjett per bruker +- [ ] Siste aktivitet +- [ ] Deaktiver/aktiver bruker + +### Systemvarsler (`/admin/announcements` — eksisterer delvis) + +- [ ] Opprett systemvarsel (info/warning/critical) +- [ ] Planlagt vedlikehold med nedtelling +- [ ] Aktive varsler i frontend-banner + +## Forbedringer av eksisterende sider + +### Serverhelse (`/admin/health`) + +- [ ] Legg til synops-agent status +- [ ] Vis disk-bruk for CAS +- [ ] Vis aktive WebSocket-tilkoblinger +- [ ] Vis LiteLLM-status (så lenge den lever) + +### Ressursforbruk (`/admin/usage`) + +- [ ] Legg til per-modell forbruk (fra agent token-regnskap) +- [ ] Trend-graf over tid +- [ ] Kostnadsestimat per modell +- [ ] Eksporter til CSV + +### Jobbkø (`/admin/jobs`) + +- [ ] Vis synops-agent-jobber i tillegg til maskinrommet-jobber +- [ ] Vis token-forbruk per jobb +- [ ] Koble jobb til oppgave-node + +## Design-prinsipper + +- Alle admin-sider bruker samme mørke tema som resten av appen +- Admin-ruter krever owner/admin-rolle +- Responsivt (mobil-brukbart for enkel overvåking) +- Sanntidsoppdatering via WebSocket der det gir mening +- Konsistent med resten av ContextHeader-opplevelsen + +## Implementeringsrekkefølge + +1. API-nøkler (fjerner .env-avhengighet, fundamentalt) +2. AI-ruting (utvid eksisterende, forhåndsvisning) +3. Oppgaver (grunnlag for synops-agent automatisering) +4. Agent-oversikt (overvåking når agent kjører) +5. Brukeradministrasjon +6. Forbedringer av eksisterende sider diff --git a/docs/oppdrag/synops-agent-komplett.md b/docs/oppdrag/synops-agent-komplett.md new file mode 100644 index 0000000..59ecbd1 --- /dev/null +++ b/docs/oppdrag/synops-agent-komplett.md @@ -0,0 +1,81 @@ +# Oppdrag: Komplett synops-agent + +Gjør synops-agent til en fullverdig erstatning for Claude Code +og vaktmester for Synops-plattformen. + +Ref: `docs/proposals/agent_harness.md` + +## Fase 1: Robustgjøring av kjernen (har grunnlag) + +- [ ] Kontekstkomprimering (ACC) — oppsummer eldre meldinger + når kontekstvinduet nærmer seg grensen +- [ ] Retry med exponential backoff ved API-feil +- [ ] Token-budsjett — stopp ved konfigurerbar grense +- [ ] Bedre feilhåndtering (timeout, parse-feil, nettverksfeil) +- [ ] max_tokens konfigurerbar per provider (ikke hardkodet 4096) + +## Fase 2: Interaktiv modus + +- [ ] REPL-modus: `synops-agent --interactive` + Bruker skriver → agent svarer → loop +- [ ] Meldingshistorikk med opp/ned-pil +- [ ] Ctrl+C avbryter pågående tool-kall, ikke hele agenten +- [ ] Vis token-teller live i prompt + +## Fase 3: Planmodus og selvkritikk + +- [ ] Extended ReAct Loop: tenke-fase → selvkritikk → handling +- [ ] Planmodus: agent analyserer oppgaven, lager plan, venter + på godkjenning før den utfører +- [ ] Automatisk planmodus for store oppgaver (>3 filer berørt) + +## Fase 4: Git-integrasjon + +- [ ] Auto-commit etter fullført oppgave +- [ ] Diff-visning før commit +- [ ] Branch-per-oppgave (valgfritt) +- [ ] Push etter commit (konfigurerbart) +- [ ] Les git log/blame for kontekst + +## Fase 5: Grafintegrasjon + +- [ ] Koble til PG via synops-common +- [ ] Les/skriv noder og edges +- [ ] Plukk oppgaver (task-noder) fra PG +- [ ] Oppdater oppgavestatus (open → active → done) +- [ ] Skriv tilbakemelding i oppdragets chat-node +- [ ] Krasj-deteksjon: frigjør tasks som har stått >60 min + +## Fase 6: Vaktmester-modus + +- [ ] Daemon: `synops-agent daemon` +- [ ] Motta meldinger fra kommunikasjonsnode (vaktmester-chat) +- [ ] Prefix-kommandoer: /proposal, /task, /bug, /claude, /gjør +- [ ] Eksplisitt modellvalg: /claude, /grok, /gemini (kun admin) +- [ ] Spawn Claude Code for tunge oppgaver (--claude) +- [ ] Epost-integrasjon: motta via synops-mail, svar tilbake +- [ ] Heartbeat-fil for overvåking + +## Fase 7: Sub-agenter og eskalering + +- [ ] Spawn sub-agent med valgfri modell per deloppgave +- [ ] Utfør billig → verifiser smart-mønster +- [ ] Automatisk eskalering ved gjentatt feil +- [ ] Worktree-isolasjon for kode-oppgaver +- [ ] Parallell utføring av uavhengige tasks + +## Fase 8: Checkpoint og recovery + +- [ ] Lagre mellomtilstand (meldingshistorikk, pågående oppgave) +- [ ] Gjenoppta etter krasj +- [ ] Kostnadslogging til ai_usage_log i PG +- [ ] Sesjonsrapport ved avslutning + +## Akseptkriterier + +- Kan lese docs, implementere kode, committe og pushe — uten tilsyn +- Kan plukke oppgaver fra PG og rapportere tilbake i chat +- Kan spawne Claude Code for tunge oppgaver +- Kan kjøre som daemon og motta meldinger +- Token-regnskap per modell, per sesjon, per oppgave +- Krasj-safe: gjenopptar der den slapp