From 0dc014f4ab619703655f293130732b7ef40b2a0a Mon Sep 17 00:00:00 2001 From: vegard Date: Wed, 18 Mar 2026 16:27:04 +0000 Subject: [PATCH] Legg til fase 28: synops-ai med admin-rutingskontroll + manglende CLI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 7 oppgaver: - synops-ai: lettvekts LLM-kall via LiteLLM (ikke claude -p) - AI-rutingskontroll i admin: modell per kontekst, endres uten redeploy - Kostnadstak per bruker/samling med budsjett-sjekk - synops-notify, synops-validate, synops-backup, synops-health Nøkkelprinsipp: admin styrer hvilken modell som brukes til hva. synops-ai uten --model bruker ai_job_routing-tabellen. Co-Authored-By: Claude Opus 4.6 (1M context) --- scripts/run-next-task.sh | 1 + tasks.md | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/scripts/run-next-task.sh b/scripts/run-next-task.sh index 6c722b6..9696ae0 100755 --- a/scripts/run-next-task.sh +++ b/scripts/run-next-task.sh @@ -45,6 +45,7 @@ declare -A PHASE_DEPS=( [25]="24" [26]="25" [27]="26" + [28]="27" ) # --- Finn blokkerte faser --- diff --git a/tasks.md b/tasks.md index 94a78e5..fe66277 100644 --- a/tasks.md +++ b/tasks.md @@ -48,6 +48,7 @@ Fase 23 → Fase 24 (orkestrering) Fase 24 → Fase 25 (web clipper) Fase 25 → Fase 26 (epost) Fase 26 → Fase 27 (tankekart) +Fase 27 → Fase 28 (manglende CLI + AI-ruting) ``` Hvis en oppgave er `[?]` eller `[!]`, hoppes den over — og alle @@ -359,3 +360,21 @@ visning av eksisterende grafdata. - [ ] 27.1 MindMap Svelte-komponent: radial/tree-layout av noder rundt en rotnode. Hent relaterte noder (1-2 hopp) via WebSocket. d3-hierarchy eller trigonometri for layout. Pan/zoom via canvas-primitiv. Klikk node = ny rot, dobbeltklikk = åpne i editor. - [ ] 27.2 BlockShell-panel: MindMap som BlockShell-panel i arbeidsflaten med fullskjerm, resize, drag-handle. Rotnode fra kontekst-header. Responsivt. - [ ] 27.3 MindMap-trait: `mindmap`-trait for samlingsnoder. Vises i trait-velger ved opprettelse. Konfigurasjon: default dybde (1-3 hopp), layout-stil (radial/tree). + +## Fase 28: Manglende CLI-verktøy + AI-rutingskontroll + +Verktøy som mangler i verktøykassen, pluss admin-styring av hvilken +modell som brukes til hva. + +### synops-ai: lettvekts LLM-kall + +- [ ] 28.1 `synops-ai` CLI: direkte LLM-kall via LiteLLM. Input: `--prompt [--model ] [--system ]`. Output: tekst til stdout. Ingen fillesing, ingen verktøy, bare prompt inn/ut. Bruker `ai_job_routing`-tabellen for å bestemme modell hvis `--model` ikke er satt. Logger i `ai_usage_log`. +- [ ] 28.2 AI-rutingskontroll i admin: utvid admin-UI (fase 15.4) med konfigurasjon av hvilken modell som brukes per kontekst. Tabellen `ai_job_routing` mapper `(job_type, context)` → `model_alias`. Kontekster: `orchestration_script`, `orchestration_dream`, `bot_chat`, `bot_triage`, `summarize`, `suggest_edges`, `classify`. Admin kan endre uten redeploy. +- [ ] 28.3 Kostnadstak per bruker/samling: `ai_budget`-felt i metadata for brukere og samlinger. `synops-ai` sjekker budsjett mot `ai_usage_log` aggregat før kall. Ved overskridelse: returner feilmelding, opprett work_item. + +### Øvrige manglende verktøy + +- [ ] 28.4 `synops-notify`: send varsel via epost (synops-mail), WebSocket-push, eller begge. Input: `--to --message [--channel email|ws|both]`. Brukes av orkestreringer og vaktmesteren. +- [ ] 28.5 `synops-validate`: sjekk at en node matcher forventet skjema for sin node_kind. Input: `--node-id `. Output: liste av avvik. Brukes av valideringsfasen og som pre-commit sjekk. +- [ ] 28.6 `synops-backup`: PG-dump + CAS-filiste + metadata-snapshot. Input: `[--full | --incremental]`. Output: backup-sti. Erstatter cron-scriptet fra 12.2. +- [ ] 28.7 `synops-health`: sjekk status for alle tjenester (PG, Caddy, vaktmesteren, LiteLLM, Whisper, LiveKit). Output: JSON med status per tjeneste. Brukes av admin-dashboard og overvåking.