Commit graph

12 commits

Author SHA1 Message Date
cfec20f024 Implementer synops-search CLI-verktøy (oppgave 21.11)
Fulltekstsøk i noder via PostgreSQL tsvector/tsquery med norsk
tekstkonfigurasjon. Bruker eksisterende GIN-indeks fra migrasjon 011.
Støtter --kind-filter og --limit. Output: markdown med relevans-score
og utdrag (ts_headline med «»-markering).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 10:08:51 +00:00
b0faa6cf60 Implementer synops-context CLI-verktøy (oppgave 21.10)
Nytt verktøy som samler kontekst for en kommunikasjonsnode i
markdown-format — deltakere, spesifikasjon (discusses-edge),
meldingshistorikk og relaterte noder. Brukes av synops-respond
og andre verktøy som trenger samtalekontekst.

Input: --communication-id <uuid> [--max-messages N]
Output: markdown til stdout

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 10:03:56 +00:00
45efeb080a Implementer synops-prune CLI-verktøy (oppgave 21.9)
Erstatter maskinrommet/src/pruning.rs med selvstendig CLI-verktøy
som følger unix-filosofien. Tre-fase pruning:

- Fase 1 (disk ≥85%): Slett regenererbart innhold (TTS, thumbnails)
- Fase 2 (alltid): TTL-basert pruning per modalitet (lyd 30d, bilde 30d, video 14d)
- Fase 3 (disk ≥95%): Kritisk — alt uten publishing-edge slettes

Dry-run er default (krever --write for faktisk sletting).
JSON-output til stdout, logging til stderr.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 09:58:03 +00:00
b6cd2b4571 Implementer synops-respond CLI-verktøy (oppgave 21.8)
Bryter ut prosesseringslogikken fra maskinrommet/src/agent.rs til
et selvstendig CLI-verktøy: synops-respond. Følger unix-filosofien
der maskinrommet orkestrerer og CLI-verktøy gjør jobben.

Ansvarsdeling:
- maskinrommet beholder: kill switch, rate limiting, loop-prevensjon,
  STDB-skriving (sanntidsvisning for frontend)
- synops-respond håndterer: kontekst-henting fra PG, prompt-bygging,
  claude CLI-kall med retry, PG-skriving (node, edges, logging)

agent.rs er nå en tynn dispatcher (~140 linjer, ned fra ~305) som
validerer sikkerhet og spawner synops-respond, likt mønsteret fra
summarize.rs sin delegering til synops-summarize.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 09:51:50 +00:00
9032ab0225 Implementer synops-suggest-edges CLI-verktøy (oppgave 21.7)
Erstatter maskinrommet/src/ai_edges.rs med et selvstendig CLI-verktøy
som følger unix-filosofien: maskinrommet orkestrerer, verktøy gjør jobben.

Verktøyet analyserer en nodes innhold via LiteLLM og foreslår
topics og mentions (entiteter) som edges. I lesemodus (default)
returneres kun forslag som JSON med confidence-score. Med --write
opprettes topic-noder og mentions-edges i PG.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 09:43:03 +00:00
08ff14028b Implementer synops-summarize CLI-verktøy (oppgave 21.6)
Ekstraherer AI-oppsummeringslogikk fra maskinrommet til standalone
CLI-verktøy, i tråd med unix_filosofi.md-prinsippet om at maskinrommet
orkestrerer og CLI-verktøy gjør jobben.

synops-summarize:
- Henter meldinger og deltakere fra kommunikasjonsnode i PG
- Sender samtalelogg til LiteLLM for oppsummering
- Med --write: oppretter sammendrag-node, belongs_to/summary-edges,
  logger AI-ressursforbruk
- Uten --write: dry-run som skriver JSON til stdout

maskinrommet/src/summarize.rs er nå en tynn dispatcher som spawner
synops-summarize med --write, tilsvarende transcribe.rs-mønsteret.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 09:36:51 +00:00
1dcecc2a04 Implementer synops-tts CLI-verktøy (oppgave 21.5)
Nytt CLI-verktøy som erstatter maskinrommet/src/tts.rs.
Kaller ElevenLabs API, lagrer generert lyd i CAS, og returnerer
CAS-hash som JSON. Med --write opprettes media-node og has_media-edge
i PostgreSQL, inkludert ressurslogging.

Følger samme mønster som synops-transcribe: clap-args, tracing til
stderr, JSON til stdout, atomisk CAS-lagring via temp+rename.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 09:29:12 +00:00
b766f063b8 Implementer synops-rss CLI-verktøy (oppgave 21.4)
Frittstående RSS/Atom-feed generator som erstatter maskinrommet/src/rss.rs.
Følger unix-filosofien: ett verktøy per oppgave, XML til stdout.

Støtter:
- Oppslag via --collection-id (UUID) eller --slug
- RSS 2.0 og Atom 1.0 (konfigurerbart via trait-metadata eller --format)
- Podcast-enclosures via has_media-edges
- --max-items for å begrense antall elementer

Verifisert mot prod-database med Sidelinja-samlingen.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 09:24:01 +00:00
17e35b2644 Implementer synops-render CLI-verktøy (oppgave 21.3)
Nytt CLI-verktøy som rendrer artikler og forsider til HTML via
Tera-templates og lagrer resultatet i CAS. Erstatter rendering-logikken
i maskinrommet/src/publishing.rs som standalone verktøy.

Støtter to render-typer:
- article: Rendrer enkeltartikkel med SEO-metadata, presentasjonselementer,
  TipTap→HTML-konvertering, og tema-basert CSS.
- index: Rendrer forside med hero/featured/stream-artikler.

Fire innebygde temaer: avis, magasin, blogg, tidsskrift.
Templates er kopiert fra maskinrommet og innebygd via include_str!().
TipTap-modulen er duplisert inntil synops-common (21.16) samler felles kode.

Følger eksisterende CLI-mønster: --write gater DB-oppdateringer,
JSON til stdout, stderr for logging.

16 enhetstester dekker CSS-variabler, SEO, kategorisering, rendering
og TipTap-konvertering. Verifisert mot produksjons-DB.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 09:19:02 +00:00
34b086d046 Implementer synops-audio CLI-verktøy (oppgave 21.2)
Erstatter maskinrommet/src/audio.rs med frittstående CLI-verktøy
som følger unix_filosofi-mønsteret fra synops-transcribe.

Input: --cas-hash <hash> --edl <json>
Output: JSON med ny CAS-hash til stdout

Inkluderer:
- Fullstendig parametervalidering (NaN/Inf, grenseverdier)
- FFmpeg filtergraf i riktig rekkefølge (cuts→NR→EQ→comp→norm→fades)
- To-pass loudnorm for høykvalitets normalisering
- Silence detection → cut-konvertering med 200ms margin
- Atomisk CAS-lagring via temp-fil + rename
- --write flagg for DB-operasjoner (node + edge + ressurslogg)
- 21 enhetstester for validering, filtergraf og CAS-stier

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 09:09:02 +00:00
bd12bed77e Implementer synops-transcribe CLI-verktøy (oppgave 21.1)
Bryter ut Whisper-transkribering fra maskinrommet til selvstendig
CLI-verktøy i tools/synops-transcribe/, i tråd med unix-filosofien.

Verktøyet:
- Leser lydfil fra CAS, sender til faster-whisper API (SRT-format)
- Parser SRT til segmenter, skriver JSON til stdout
- Med --write: skriver segmenter til PG, oppdaterer node metadata,
  logger ressursforbruk
- Støtter --cas-hash, --model, --initial-prompt, --language, --mime,
  --node-id, --requested-by

Maskinrommet sin transcribe.rs er nå en tynn dispatcher som spawner
synops-transcribe som subprosess med riktige env-variabler.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 09:01:06 +00:00
54c8d411e8 Legg til tools/ for Claude CLI-verktøy, dokumenter i CLAUDE.md 2026-03-18 01:44:57 +00:00