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:
parent
b328ebfb3a
commit
47299435ab
3 changed files with 346 additions and 4 deletions
|
|
@ -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"
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
337
migrations/022_cli_tool_seeds.sql
Normal file
337
migrations/022_cli_tool_seeds.sql
Normal 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;
|
||||||
3
tasks.md
3
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.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.
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue