cli_tool alias-metadata: seed 14 verktøy med aliases og args_hints (oppgave 24.4)

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.
This commit is contained in:
vegard 2026-03-18 17:09:53 +00:00
parent b328ebfb3a
commit 47299435ab
3 changed files with 346 additions and 4 deletions

View file

@ -127,9 +127,15 @@ cli_tool-node:
content: "Whisper-transkribering av lydfil fra CAS" content: "Whisper-transkribering av lydfil fra CAS"
metadata: { metadata: {
"binary": "synops-transcribe", "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 <hash> --model <model> [--initial-prompt <tekst>]", "usage": "--cas-hash <hash> --model <model> [--initial-prompt <tekst>]",
"output": "JSON med segmenter, skriver til PG", "output": "JSON med segmenter, skriver til PG"
"replaces": "transcribe.rs"
} }
``` ```

View file

@ -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;

View file

@ -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.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.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. - [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. - [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.
> Påbegynt: 2026-03-18T17:05
- [ ] 24.5 Script-executor: vaktmesteren parser kompilert script og eksekverer steg sekvensielt via generisk dispatch. VED_FEIL-håndtering. Logger i `orchestration_log`. - [ ] 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.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. - [ ] 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.