synops/tools/README.md
vegard 3b6bab5092 synops-video: CLI for video-transcode, thumbnail og varighet (oppgave 29.8)
Nytt CLI-verktøy som prosesserer video fra CAS:
- Transcode til H.264/AAC MP4 med faststart (web-optimert)
- Thumbnail-generering (JPEG, 480px bred)
- Varighet-uttrekk via ffprobe

Input: --cas-hash eller --payload-json (jobbkø-modus)
Output: JSON med transcoded_hash, thumbnail_hash, duration_ms
Med --write: oppdaterer medienodens metadata i PG

Følger samme mønster som synops-audio: CAS inn/ut, --write for
DB-persistering, --payload-json for dispatch fra maskinrommet.
2026-03-18 22:25:42 +00:00

58 lines
3.4 KiB
Markdown

# Synops CLI-verktøy
CLI-verktøy for Claude sin interaksjon med systemet. Bruker PG direkte
eller maskinrommet-API. Ligger i PATH via symlink eller direkte kall.
## Verktøy
| Verktøy | Beskrivelse | Status |
|---------|-------------|--------|
| `synops-transcribe` | Whisper-transkribering av lydfil fra CAS | Ferdig |
| `synops-audio` | FFmpeg lydprosessering med EDL (cut, normalize, EQ, m.m.) | Ferdig |
| `synops-render` | Tera HTML-rendering til CAS (artikler, forsider) | Ferdig |
| `synops-rss` | RSS/Atom-feed generering for samlinger | Ferdig |
| `synops-tts` | Tekst-til-tale via ElevenLabs, lagrer lyd i CAS | Ferdig |
| `synops-summarize` | AI-oppsummering av kommunikasjonsnode via LiteLLM | Ferdig |
| `synops-suggest-edges` | AI-foreslåtte edges (topics/mentions) for en node via LiteLLM | Ferdig |
| `synops-respond` | Claude chat-svar i kommunikasjonsnoder | Ferdig |
| `synops-prune` | Opprydding av gamle CAS-filer (TTL + disk-nødventil) | Ferdig |
| `synops-context` | Hent kontekst for en samtale (deltakere, historikk, spec, relaterte noder) | Ferdig |
| `synops-search` | Fulltekstsøk i noder (title + content, norsk tsvector) | Ferdig |
| `synops-tasks` | Parse tasks.md og vis oppgavestatus (filtrering på fase/status) | Ferdig |
| `synops-feature-status` | Sjekk feature-status: spec, oppgaver, commits, feedback | Ferdig |
| `synops-node` | Hent/vis en node med edges (UUID, --depth, --format json/md) | Ferdig |
| `synops-ai` | LLM-verktøy: `prompt` (direkte LLM-kall) + `script` (orkestreringsscript fra fritekst) | Ferdig |
| `synops-clip` | Hent og parse webartikler (Readability + Playwright-fallback, paywall-deteksjon) | Ferdig |
| `synops-mail` | Send epost via msmtp (vaktmester@synops.no) | Ferdig (venter SMTP-credentials) |
| `synops-notify` | Send varsel via epost, WebSocket-push, eller begge | Ferdig |
| `synops-validate` | Valider at en node matcher forventet skjema for sin node_kind | Ferdig |
| `synops-backup` | PG-dump + CAS-filiste + metadata-snapshot (`--full` / `--incremental`) | Ferdig |
| `synops-health` | Sjekk status for alle tjenester (PG, Caddy, Maskinrommet, LiteLLM, Whisper, LiveKit, Authentik) | Ferdig |
| `synops-feed` | Abonner på RSS/Atom-feed, opprett content-noder med deduplisering og paywall-deteksjon | Ferdig |
| `synops-video` | Video-transcode (H.264), thumbnail-generering, varighet-uttrekk fra CAS-hash | Ferdig |
## Delt bibliotek
| Crate | Beskrivelse |
|-------|-------------|
| `synops-common` | Delt lib: PG-tilkobling (`db`), CAS-helpers (`cas`), logging (`logging`), node/edge-typer (`types`) |
Alle CLI-verktøy (unntatt `synops-tasks`) bruker `synops-common` som dependency.
Se `synops-common/src/lib.rs` for API-oversikt.
## Konvensjoner
- Navnekonvensjon: `synops-<verb>` (f.eks. `synops-context`)
- Shell-scripts eller Rust binaries
- Ett verktøy per oppgave — hold det enkelt
- Output: stdout, strukturert tekst (markdown eller JSON)
- DB-tilkobling: `$DATABASE_URL` eller fra `/tmp/maskinrommet.env`
## Planlagte verktøy
Ref: `docs/infra/agent_api.md`
- ~~`synops-context`~~ — implementert (se tabell over)
- ~~`synops-search`~~ — implementert (se tabell over)
- ~~`synops-tasks [--phase N] [--status S]`~~ — implementert (se tabell over)
- ~~`synops-feature-status <key>`~~ — implementert (se tabell over)
- ~~`synops-respond`~~ — implementert (se tabell over)
- `synops-update-spec <node_id>` — oppdater spec-node (stdin)