- Ny checkpoint-modul: lagrer sesjonsstatus (meldinger, tokens, oppgave) til JSON
- --resume flagg for å gjenoppta etter krasj (sesjons-ID eller "latest")
- --checkpoint-interval for å styre hvor ofte mellomtilstand lagres
- Kostnadslogging til ai_usage_log i PG ved sesjonsslutt
- Sesjonsrapport: modell, varighet, tokens, kostnad, filer endret
- Integrert i agent-loop (periodisk checkpoint), batch-modus og daemon
- Automatisk opprydding av gamle checkpoints (beholder siste 20)
Ny modul graph.rs med:
- pick_task: plukk høyest-prioritet open task atomisk (FOR UPDATE SKIP LOCKED)
- update_task_status: oppdater status (open → active → done/failed)
- write_task_message: skriv melding i oppdragets chat-node
- release_stale_tasks: frigjør tasks stuck >60 min (krasj-deteksjon)
- query_nodes/query_edges/get_node: generiske graf-spørringer
Nytt verktøy synops_query for LLM:
- action: nodes (list med kind/status-filter)
- action: edges (for en node, med retning/type-filter)
- action: get (les enkeltnode med metadata)
PG-tilkobling er valgfri — degraderer gracefully uten DATABASE_URL.
Krasj-deteksjon kjøres ved oppstart.
- Ny modul git.rs: status, log, diff, blame, commit, push, branch
- Nytt git-verktøy for LLM (8 subkommandoer)
- Auto-inkluder git-kontekst i system prompt (branch, status, siste commits)
- CLI-args: --commit-msg, --no-commit, --push/--no-push, --branch
- Auto-commit og push etter fullført batch-oppgave
- Diff-visning i output etter oppgave
- 4 nye tester for git-modulen (alle bestått)
- --interactive / -i starter REPL med readline (rustyline)
- Token-teller og kostnad i prompt: [12.3kT $0.042] claude-sonnet-4 >
- Ctrl+C avbryter pågående tool-kall, ikke hele agenten
- Meldingshistorikk bevares mellom turns
- Multi-line input med \ på slutten av linjen
- Innebygde kommandoer: /stats, /clear, /help, exit
- Historikk lagres i ~/.synops/agent_history.txt
- Refaktorert agent-loop til AgentSession struct for gjenbruk
- --task er nå valgfri (påkrevd kun i batch-modus)
- Retry med exponential backoff for retryable API-feil (429, 500, 502, 503)
med konfigurerbar --max-retries (default: 3) og Retry-After-støtte
- --max-cost flagg for token-budsjett (USD), stopper og rapporterer
gjenstående arbeid ved budsjettgrense (exit code 2)
- Konfigurerbar --max-tokens per provider (erstatter hardkodet 4096/8192)
- Sanntids kostnadsregnskap per modell med cost_per_million_tokens-tabell
- Detaljert token/kostnad-rapport ved avslutning
Ref: docs/proposals/agent_harness.md §3 (selvovervåking)
Automatisk kontekstkomprimering når meldingshistorikken nærmer seg
kontekstvinduets grense. Bruker prompt_tokens fra API-respons som
kalibreringsanker.
- Ny context.rs-modul med to kompaksjonsnivåer:
- Moderat (>70%): trunkerer gamle tool-resultater
- Aggressiv (>85%): kollapser eldre historikk til oppsummering
- Siste 5 meldinger bevares alltid urørt
- context_window() på LlmProvider-trait med automatisk estimering
- 5 enhetstester for kompaksjonslogikk
Plukker fra tasks/*.md, flytter til active/, done/ ved fullføring.
Støtter --loop (kjør kontinuerlig), --dry (forhåndsvis), --status.
Krasj-deteksjon: stale oppgaver i active/ >60 min frigjøres.
30 min timeout per oppgave.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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) <noreply@anthropic.com>
Erstatter .env-filer for API-nøkler. AES-256-GCM kryptert i PG,
administrert via admin-UI, injisert av maskinrommet som env ved
verktøy-spawning. Audit trail, test-tilkobling, flere nøkler per
provider, deaktivering uten sletting. Ingen endring i verktøykode.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Testet med ekte API-kall. Fungerer: tool-loop, fil-lesing, glob,
token-regnskap. Gemini Flash via OpenRouter svarer på ~3 sekunder.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Modell-agnostisk agent-runtime i Rust. Egen provider-kode (ingen Rig-dep).
Støtter: OpenRouter, Anthropic, Gemini, xAI, OpenAI, Ollama.
Tool-loop: prompt → tool_calls → execute → loop.
Innebygde verktøy: read_file, write_file, edit_file, bash, grep, glob.
Token-regnskap per modell. --claude for å spawne Claude Code.
Kompilerer og kjører. Trenger API-nøkkel for å faktisk gjøre noe.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Fjernet fil-basert oppgaveliste (tasks.md, tasks-arkiv.md, tasks/).
Oppgaver er nå noder (node_kind: 'task') med prioritet, status,
agent-tildeling og krasj-deteksjon via PG. Atomisk plukking med
FOR UPDATE SKIP LOCKED. Dokumentert i docs/infra/oppgaver.md.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Ingen mellomtjeneste — synops-agent snakker direkte med Anthropic,
Google, OpenRouter etc. via Rig sine provider-traits. Fjerner
LiteLLM Docker-container (Python-stack). Lavere latens, enklere
feilsøking, alt i Rust-kode vi eier.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
/claude, /grok etc. er admin-kommandoer. Vanlige brukere bruker
@bot med modell konfigurert av admin via ai_job_routing.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Vaktmester-daemon: mottar meldinger via chat og epost
- Prefix-kommandoer: /proposal, /task, /bug, /gjør
- Eksplisitt modellvalg: /claude, /grok, /gemini, /lokal, /billig
- Bruker bestemmer alltid — ingen automatisk modellgjetting
- Claude Code spawnes for tunge oppgaver (allerede-betalt abo)
- Svar tilbake via chat og/eller epost
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
tasks.md har kun åpne oppgaver. Fullførte flyttes til tasks-arkiv.md
med dato. Prinsipp dokumentert i CLAUDE.md: listen skal alltid være
ren. Fase 1-30 og dagens UI-arbeid arkivert med timestamp.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
SpacetimeDB er fjernet (mars 2026). Oppdatert til å bruke
eksisterende WebSocket/portvokter med ephemeral cursor_move-
meldinger (ikke persistert i PG). In-memory HashMap i Rust.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Flyttet til docs/proposals/arkiv/:
- komponerbare_sider.md (erstattet av arbeidsflaten)
- personlig_workspace.md (erstattet av noder-er-sentrum)
- tekst_primitiv.md (realisert i node-arkitekturen)
- artikkel_publisering.md (implementert i fase 14)
- web_clipper.md (implementert i fase 25)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Samme kommunikasjonsnode vises som chat (kronologisk) eller forum
(trådet). Bytt fritt mellom visninger. Lest/ulest er én last_seen
timestamp per bruker per samtale — transitiv mellom alle visninger.
Forum-egenskaper (tråd, kategori, pinning) er metadata på noder.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Rollebasert arv: edge-roller styrer trait-synlighet per bruker
(deltaker ser mikser, lytter ser bare chat)
- Mine ting: oversiktspanel i Hjem, dra node inn i verktøy for
å koble dem (erstatter mottak som panel)
- Chat-merging: dra chat oppå chat → live flettet visning eller
snapshot med AI-beriking og brukerprompt
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Én knapp, to trykk: fade ut (0.2s) → pause → bygg om → trykk igjen
→ fade inn (0.2s). Kort default for praktisk bruk, konfigurerbar.
Master opacity slider er separat for kreativ/manuell kontroll.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Vert kan slå på ramme, navneskilt eller andre visuelle effekter
per element inne i skjermen. Fleksibelt, ikke påtvunget.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Noder som dras inn i skjermen rendres uten grensesnittelementer —
ingen BlockShell-header, border, resize-handles. Bare rent innhold.
Skjermen er output, ikke utviklerverktøy. Vert redigerer layout
via skjermens egen editor-modus.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Skjerm-panel som live kompositor: dra inn videostrømmer, bilder,
tekst og noder. Multi-skjerm med program/preview og live switching.
Sceneskifte med fade-to-black + auto-pause for jukseredigering.
Videoramme per deltaker, delt arbeidsflate som møterom/studio.
Bygger på eksisterende primitiver (BlockShell, Canvas, LiveKit,
drag-and-drop, CAS, PG NOTIFY).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dokumentert hvorfor Claude Code ikke egner seg som tjeneste (treg
oppstart, høyt minne, ingen API, låst til Anthropic). synops-agent
som tre bruksmåter: lib (embed i maskinrommet), CLI (erstatter
Claude Code), API (HTTP-endepunkt for appen). Konkret brukstabell
for chat, orkestrering, bakgrunnsjobber og bruker-chat.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Tydeliggjort ambisjon: synops-agent er et fullverdig alternativ til
Claude Code, ikke en delegerings-mekanisme. Egen orkestrator med
multi-modell sub-agenter, eskalering og verifikasjon. Claude Code
brukes til å utvikle og teste den, ikke til å styre den.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Harnessen akkumulerer input/output tokens per modell gjennom hele
kjøringen. Brukes til budsjettovervåking, eskalering, effektivitets-
måling og orkestrator-input. HashMap<String, TokenUsage> i minne,
persisteres til ai_usage_log ved checkpoint/slutt.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Kjørbar fra Claude Code via Bash (delegering til billige modeller)
- Tre nivåer: orkestrator (smart), implementering (middels), grunt (billig)
- «Utfør billig, verifiser smart»-strategi: ~90% på billigste modell
- Automatisk modellvalg basert på oppgavetype og eskalering ved feil
- Eksperimentering: logger modell/kostnad/resultat for optimalisering
- Claude Code som super-orkestrator over multi-modell agent-pool
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Oppdatert med research fra mars 2026:
- Rig.rs som provider-abstraksjon (24% CPU, <1.1GB vs Python >4.7GB)
- OpenCode Extended ReAct Loop (tenke + selvkritikk + handling)
- Adaptive Context Compaction (ACC) for kontekstvindu
- Harness-mønsteret (kontrollplan mellom LLM og verktøy)
- Worktree-isolasjon for sub-agenter
- MCP-støtte som industristandard
Supersett av Claude Code: daemon-modus, innebygd oppgavestyring,
selvovervåking, sub-agenter med valgfri modell per agent.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Idé for fremtidig implementering: Claude Code-lignende agent-loop
som kan bruke Grok, Gemini, OpenRouter eller lokale modeller.
Rust CLI med Read/Edit/Bash/Grep/Glob-verktøy og LiteLLM-integrasjon.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>