From 47299435ab8276fb030575db11f64075fb3cecbd Mon Sep 17 00:00:00 2001 From: vegard Date: Wed, 18 Mar 2026 17:09:53 +0000 Subject: [PATCH] =?UTF-8?q?cli=5Ftool=20alias-metadata:=20seed=2014=20verk?= =?UTF-8?q?t=C3=B8y=20med=20aliases=20og=20args=5Fhints=20(oppgave=2024.4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Alle eksisterende CLI-verktøy har nå cli_tool-noder i PG med: - aliases: norske verb for script-kompilatoren ("transkriber", "oppsummer", etc.) - args_hints: mapping fra menneskelige argumenter til CLI-flagg ("stor modell" → "--model large", "lydfilen" → "--cas-hash {event.cas_hash}") Muliggjør at script-kompilatoren (24.3) kan slå opp verktøy fra PG og kompilere menneskelig scriptspråk til faktiske CLI-kall. --- docs/retninger/unix_filosofi.md | 10 +- migrations/022_cli_tool_seeds.sql | 337 ++++++++++++++++++++++++++++++ tasks.md | 3 +- 3 files changed, 346 insertions(+), 4 deletions(-) create mode 100644 migrations/022_cli_tool_seeds.sql diff --git a/docs/retninger/unix_filosofi.md b/docs/retninger/unix_filosofi.md index d2fcaba..4ba14e9 100644 --- a/docs/retninger/unix_filosofi.md +++ b/docs/retninger/unix_filosofi.md @@ -127,9 +127,15 @@ cli_tool-node: content: "Whisper-transkribering av lydfil fra CAS" metadata: { "binary": "synops-transcribe", + "aliases": ["transkriber", "transkribering", "transkripsjoner"], + "description": "Whisper-transkribering av lydfil", + "args_hints": { + "lydfilen": "--cas-hash {event.cas_hash}", + "stor modell": "--model large", + "medium modell": "--model medium" + }, "usage": "--cas-hash --model [--initial-prompt ]", - "output": "JSON med segmenter, skriver til PG", - "replaces": "transcribe.rs" + "output": "JSON med segmenter, skriver til PG" } ``` diff --git a/migrations/022_cli_tool_seeds.sql b/migrations/022_cli_tool_seeds.sql new file mode 100644 index 0000000..dfb7340 --- /dev/null +++ b/migrations/022_cli_tool_seeds.sql @@ -0,0 +1,337 @@ +-- 022_cli_tool_seeds.sql +-- Oppgave 24.4: Seed cli_tool-noder med aliases (norske verb) og args_hints +-- (menneskelige argumenter → CLI-flagg). Brukes av script_compiler for å +-- kompilere menneskelig scriptspråk til CLI-kall. +-- Ref: docs/retninger/unix_filosofi.md, docs/concepts/orkestrering.md + +BEGIN; + +-- ============================================================================= +-- 1. synops-transcribe — Whisper-transkribering av lydfiler +-- ============================================================================= +INSERT INTO nodes (id, node_kind, title, visibility, metadata, created_by) +VALUES ( + 'f0000000-c100-4000-b000-000000000001', + 'cli_tool', + 'synops-transcribe', + 'discoverable', + '{ + "binary": "synops-transcribe", + "aliases": ["transkriber", "transkribering", "transkripsjoner"], + "description": "Whisper-transkribering av lydfil", + "args_hints": { + "lydfilen": "--cas-hash {event.cas_hash}", + "stor modell": "--model large", + "medium modell": "--model medium", + "liten modell": "--model small", + "på engelsk": "--language en", + "på norsk": "--language no", + "lagre resultat": "--write", + "for noden": "--node-id {event.node_id}" + } + }'::jsonb, + 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11' +); + +-- ============================================================================= +-- 2. synops-audio — FFmpeg lydprosessering (EDL, normalisering, EQ) +-- ============================================================================= +INSERT INTO nodes (id, node_kind, title, visibility, metadata, created_by) +VALUES ( + 'f0000000-c100-4000-b000-000000000002', + 'cli_tool', + 'synops-audio', + 'discoverable', + '{ + "binary": "synops-audio", + "aliases": ["prosesser lyd", "lydprosessering", "mikse", "miksing"], + "description": "FFmpeg lydprosessering med EDL (klipp, normalisering, EQ)", + "args_hints": { + "lydfilen": "--cas-hash {event.cas_hash}", + "klippelisten": "--edl {event.edl}", + "som wav": "--output-format wav", + "som mp3": "--output-format mp3", + "som flac": "--output-format flac", + "lagre resultat": "--write", + "for noden": "--node-id {event.node_id}" + } + }'::jsonb, + 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11' +); + +-- ============================================================================= +-- 3. synops-render — Tera HTML-rendering til CAS +-- ============================================================================= +INSERT INTO nodes (id, node_kind, title, visibility, metadata, created_by) +VALUES ( + 'f0000000-c100-4000-b000-000000000003', + 'cli_tool', + 'synops-render', + 'discoverable', + '{ + "binary": "synops-render", + "aliases": ["render", "rendering", "generer html", "publiser"], + "description": "Tera HTML-rendering av node til CAS", + "args_hints": { + "noden": "--node-id {event.node_id}", + "med tema": "--theme {arg}", + "i samlingen": "--collection-id {event.collection_id}", + "som artikkel": "--render-type article", + "som indeks": "--render-type index", + "som om-side": "--render-type about", + "lagre resultat": "--write" + } + }'::jsonb, + 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11' +); + +-- ============================================================================= +-- 4. synops-rss — RSS/Atom-feed generering +-- ============================================================================= +INSERT INTO nodes (id, node_kind, title, visibility, metadata, created_by) +VALUES ( + 'f0000000-c100-4000-b000-000000000004', + 'cli_tool', + 'synops-rss', + 'discoverable', + '{ + "binary": "synops-rss", + "aliases": ["generer feed", "rss", "rss-feed", "atom-feed"], + "description": "RSS/Atom-feed generering for samlinger", + "args_hints": { + "for samlingen": "--collection-id {event.collection_id}", + "med slug": "--slug {arg}", + "som atom": "--format atom", + "som rss": "--format rss", + "maks antall": "--max-items {arg}" + } + }'::jsonb, + 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11' +); + +-- ============================================================================= +-- 5. synops-tts — Tekst-til-tale via ElevenLabs +-- ============================================================================= +INSERT INTO nodes (id, node_kind, title, visibility, metadata, created_by) +VALUES ( + 'f0000000-c100-4000-b000-000000000005', + 'cli_tool', + 'synops-tts', + 'discoverable', + '{ + "binary": "synops-tts", + "aliases": ["les opp", "tekst til tale", "tts", "generer tale"], + "description": "Tekst-til-tale via ElevenLabs", + "args_hints": { + "teksten": "--text {event.content}", + "med stemme": "--voice {arg}", + "på engelsk": "--language en", + "på norsk": "--language no", + "fra noden": "--source-node-id {event.node_id}", + "lagre resultat": "--write" + } + }'::jsonb, + 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11' +); + +-- ============================================================================= +-- 6. synops-summarize — AI-oppsummering via LiteLLM +-- ============================================================================= +INSERT INTO nodes (id, node_kind, title, visibility, metadata, created_by) +VALUES ( + 'f0000000-c100-4000-b000-000000000006', + 'cli_tool', + 'synops-summarize', + 'discoverable', + '{ + "binary": "synops-summarize", + "aliases": ["oppsummer", "oppsummering", "sammendrag"], + "description": "AI-oppsummering av kommunikasjonsnode via LiteLLM", + "args_hints": { + "samtalen": "--communication-id {event.communication_id}", + "lagre resultat": "--write" + } + }'::jsonb, + 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11' +); + +-- ============================================================================= +-- 7. synops-suggest-edges — AI-foreslåtte edges (emner/omtaler) +-- ============================================================================= +INSERT INTO nodes (id, node_kind, title, visibility, metadata, created_by) +VALUES ( + 'f0000000-c100-4000-b000-000000000007', + 'cli_tool', + 'synops-suggest-edges', + 'discoverable', + '{ + "binary": "synops-suggest-edges", + "aliases": ["foreslå koblinger", "foreslå edges", "koble", "tagging"], + "description": "AI-foreslåtte edges (emner, omtaler) for en node", + "args_hints": { + "noden": "--node-id {event.node_id}", + "lagre resultat": "--write" + } + }'::jsonb, + 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11' +); + +-- ============================================================================= +-- 8. synops-respond — Claude chat-svar +-- ============================================================================= +INSERT INTO nodes (id, node_kind, title, visibility, metadata, created_by) +VALUES ( + 'f0000000-c100-4000-b000-000000000008', + 'cli_tool', + 'synops-respond', + 'discoverable', + '{ + "binary": "synops-respond", + "aliases": ["svar", "besvar", "claude-svar"], + "description": "Claude chat-svar i kommunikasjonsnode", + "args_hints": { + "samtalen": "--communication-id {event.communication_id}", + "meldingen": "--message-id {event.message_id}", + "agent": "--agent-node-id {event.agent_node_id}", + "avsender": "--sender-node-id {event.sender_node_id}", + "lagre resultat": "--write" + } + }'::jsonb, + 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11' +); + +-- ============================================================================= +-- 9. synops-prune — CAS-opprydding (TTL + diskplass) +-- ============================================================================= +INSERT INTO nodes (id, node_kind, title, visibility, metadata, created_by) +VALUES ( + 'f0000000-c100-4000-b000-000000000009', + 'cli_tool', + 'synops-prune', + 'discoverable', + '{ + "binary": "synops-prune", + "aliases": ["rydd", "opprydding", "slett gamle filer", "prune"], + "description": "CAS-opprydding: sletter filer etter TTL og diskplass-nød", + "args_hints": { + "tørrkjøring": "--dry-run", + "lagre resultat": "--write", + "lyd-ttl dager": "--audio-ttl {arg}", + "bilde-ttl dager": "--image-ttl {arg}", + "video-ttl dager": "--video-ttl {arg}" + } + }'::jsonb, + 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11' +); + +-- ============================================================================= +-- 10. synops-context — Hent samtalekontekst +-- ============================================================================= +INSERT INTO nodes (id, node_kind, title, visibility, metadata, created_by) +VALUES ( + 'f0000000-c100-4000-b000-000000000010', + 'cli_tool', + 'synops-context', + 'discoverable', + '{ + "binary": "synops-context", + "aliases": ["hent kontekst", "samtalekontekst", "kontekst"], + "description": "Hent samtalekontekst som markdown", + "args_hints": { + "samtalen": "--communication-id {event.communication_id}", + "maks meldinger": "--max-messages {arg}" + } + }'::jsonb, + 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11' +); + +-- ============================================================================= +-- 11. synops-search — Fulltekstsøk +-- ============================================================================= +INSERT INTO nodes (id, node_kind, title, visibility, metadata, created_by) +VALUES ( + 'f0000000-c100-4000-b000-000000000011', + 'cli_tool', + 'synops-search', + 'discoverable', + '{ + "binary": "synops-search", + "aliases": ["søk", "finn", "fulltekstsøk"], + "description": "Fulltekstsøk med norsk stemming", + "args_hints": { + "etter": "{arg}", + "bare type": "--kind {arg}", + "maks treff": "--limit {arg}" + } + }'::jsonb, + 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11' +); + +-- ============================================================================= +-- 12. synops-tasks — Parse tasks.md +-- ============================================================================= +INSERT INTO nodes (id, node_kind, title, visibility, metadata, created_by) +VALUES ( + 'f0000000-c100-4000-b000-000000000012', + 'cli_tool', + 'synops-tasks', + 'discoverable', + '{ + "binary": "synops-tasks", + "aliases": ["oppgaver", "vis oppgaver", "oppgavestatus"], + "description": "Parse og vis oppgavestatus fra tasks.md", + "args_hints": { + "fase": "--phase {arg}", + "bare ferdige": "--status done", + "bare pågående": "--status in_progress", + "bare ventende": "--status pending" + } + }'::jsonb, + 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11' +); + +-- ============================================================================= +-- 13. synops-feature-status — Sjekk feature-status +-- ============================================================================= +INSERT INTO nodes (id, node_kind, title, visibility, metadata, created_by) +VALUES ( + 'f0000000-c100-4000-b000-000000000013', + 'cli_tool', + 'synops-feature-status', + 'discoverable', + '{ + "binary": "synops-feature-status", + "aliases": ["feature-status", "sjekk feature", "funksjonsstatus"], + "description": "Sjekk status for en feature basert på spec, oppgaver og commits", + "args_hints": { + "feature": "{arg}", + "antall commits": "--commits {arg}" + } + }'::jsonb, + 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11' +); + +-- ============================================================================= +-- 14. synops-node — Hent node med edges +-- ============================================================================= +INSERT INTO nodes (id, node_kind, title, visibility, metadata, created_by) +VALUES ( + 'f0000000-c100-4000-b000-000000000014', + 'cli_tool', + 'synops-node', + 'discoverable', + '{ + "binary": "synops-node", + "aliases": ["vis node", "hent node", "nodeinfo"], + "description": "Hent og vis en node med edges", + "args_hints": { + "noden": "{event.node_id}", + "med dybde": "--depth {arg}", + "som json": "--format json", + "som markdown": "--format md" + } + }'::jsonb, + 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11' +); + +COMMIT; diff --git a/tasks.md b/tasks.md index a483fc7..71147e7 100644 --- a/tasks.md +++ b/tasks.md @@ -319,8 +319,7 @@ automatisk eskalering av intelligens ved feil, kompilering av velprøvde mønstr - [x] 24.1 Orchestration node-type: legg til `orchestration` i maskinrommets node-validering. Metadata-skjema: `trigger` (event + conditions), `executor`, `intelligence`, `effort`, `compiled`, `pipeline`. Valider trigger-events mot kjent liste. - [x] 24.2 Trigger-evaluering i portvokteren: ved node/edge-events, sjekk om noen `orchestration`-noder matcher triggeren. Effektiv lookup (indeksert på `metadata.trigger.event`). Ingen LLM-kall for trigger-matching. - [x] 24.3 Script-kompilator: parser menneskelig scriptspråk ("transkriber lydfilen (stor modell)") og kompilerer til tekniske CLI-kall. Matcher verb mot `cli_tool`-noders `aliases`, argumenter mot `args_hints`, variabler fra trigger-kontekst. Rust-stil kompileringsfeil med forslag. -- [~] 24.4 cli_tool alias-metadata: utvid alle `cli_tool`-noder med `aliases` (norske verb) og `args_hints` (menneskelige argumenter → CLI-flagg). Seed for alle eksisterende verktøy. - > Påbegynt: 2026-03-18T17:05 +- [x] 24.4 cli_tool alias-metadata: utvid alle `cli_tool`-noder med `aliases` (norske verb) og `args_hints` (menneskelige argumenter → CLI-flagg). Seed for alle eksisterende verktøy. - [ ] 24.5 Script-executor: vaktmesteren parser kompilert script og eksekverer steg sekvensielt via generisk dispatch. VED_FEIL-håndtering. Logger i `orchestration_log`. - [ ] 24.6 Orchestration UI: editor med tre visninger (Enkel/Teknisk/Kompilert) som tabber. Sanntids kompileringsfeil. Trigger-velger, "Test kjøring"-knapp, kjørehistorikk. Ref: `docs/concepts/orkestrering.md`. - [ ] 24.7 AI-assistert oppretting: `synops-ai` med auto-generert systemprompt (fra cli_tool-noder) foreslår script fra fritekst-beskrivelse. Vaktmesteren validerer. Eventually-modus: lagre som work_item for Claude Code.