Fem standard-orkestreringer opprettet som seed-data: - Podcast-pipeline (transkriber → oppsummer → RSS) - Publiseringsflyt (render → indeks → RSS) - AI-beriking (foreslå koblinger ved nytt innhold) - Planlagt publisering (render ved tidspunkt) - Podcast TTS (kaskade fra pipeline → les opp oppsummering) Podcast-pipeline → TTS demonstrerer kaskade via triggers-edge. Script-kompilatoren utvidet med flerords-verbstøtte: aliaser som "generer feed", "les opp", "foreslå koblinger" matcher nå korrekt selv om parseren splitter ved første mellomrom. Prøver verb + N første ord av objekt opptil 3 ord.
158 lines
6.4 KiB
PL/PgSQL
158 lines
6.4 KiB
PL/PgSQL
-- 025_seed_orchestrations.sql
|
|
-- Oppgave 24.9: Seed-orkestreringer for podcast-pipeline, publiseringsflyt,
|
|
-- og AI-beriking. Skrevet i menneskelig scriptspråk som kompileres av
|
|
-- script_compiler til tekniske CLI-kall.
|
|
--
|
|
-- Disse fungerer som standard-orkestreringer og som eksempler for brukere
|
|
-- som vil lage egne. De erstatter hardkodet logikk i vaktmesteren.
|
|
--
|
|
-- Ref: docs/concepts/orkestrering.md
|
|
|
|
BEGIN;
|
|
|
|
-- =============================================================================
|
|
-- 1. Podcast-pipeline: opptak → transkribering → oppsummering → RSS
|
|
-- =============================================================================
|
|
-- Erstatter hardkodet flyt: communication.ended → whisper_transcribe → summarize → rss
|
|
-- Trigger: communication.ended + samling med podcast-trait + lydfil
|
|
INSERT INTO nodes (id, node_kind, title, content, visibility, metadata, created_by)
|
|
VALUES (
|
|
'e0000000-0ac0-4000-b000-000000000001',
|
|
'orchestration',
|
|
'Podcast: opptak → publisering',
|
|
E'NÅR innspilling avsluttet\nHVIS samling har podcast\n\n1. transkriber lydfilen (stor modell)\n ved feil: transkriber lydfilen (medium modell)\n2. oppsummer samtalen\n3. generer feed for samlingen\n\nved feil: opprett oppgave "Podcast-pipeline feilet" (bug)',
|
|
'discoverable',
|
|
'{
|
|
"trigger": {
|
|
"event": "communication.ended",
|
|
"conditions": {
|
|
"has_trait": "podcast",
|
|
"has_media": "audio"
|
|
}
|
|
},
|
|
"executor": "script",
|
|
"intelligence": 2,
|
|
"effort": 3,
|
|
"compiled": false
|
|
}'::jsonb,
|
|
'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'
|
|
);
|
|
|
|
-- =============================================================================
|
|
-- 2. Publiseringsflyt: artikkel publisert → render → RSS
|
|
-- =============================================================================
|
|
-- Erstatter hardkodet flyt: render_article → render_index → rss
|
|
-- Trigger: node.published (belongs_to med slot i publiseringssamling)
|
|
INSERT INTO nodes (id, node_kind, title, content, visibility, metadata, created_by)
|
|
VALUES (
|
|
'e0000000-0ac0-4000-b000-000000000002',
|
|
'orchestration',
|
|
'Publisering: artikkel → render → RSS',
|
|
E'NÅR artikkel publisert\nHVIS samling har publishing\n\n1. render noden (som artikkel)\n ved feil: opprett oppgave "Rendering feilet" (bug)\n2. render noden (som indeks, i samlingen)\n3. generer feed for samlingen\n\nved feil: opprett oppgave "Publisering feilet" (bug)',
|
|
'discoverable',
|
|
'{
|
|
"trigger": {
|
|
"event": "node.published",
|
|
"conditions": {
|
|
"has_trait": "publishing"
|
|
}
|
|
},
|
|
"executor": "script",
|
|
"intelligence": 1,
|
|
"effort": 2,
|
|
"compiled": false
|
|
}'::jsonb,
|
|
'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'
|
|
);
|
|
|
|
-- =============================================================================
|
|
-- 3. AI-beriking: nytt innhold → foreslå koblinger
|
|
-- =============================================================================
|
|
-- Erstatter hardkodet flyt: node.created → suggest_edges
|
|
-- Trigger: node.created med node_kind content
|
|
INSERT INTO nodes (id, node_kind, title, content, visibility, metadata, created_by)
|
|
VALUES (
|
|
'e0000000-0ac0-4000-b000-000000000003',
|
|
'orchestration',
|
|
'AI-beriking: foreslå koblinger',
|
|
E'NÅR innhold opprettet\nHVIS node_kind er content\n\n1. foreslå koblinger for noden\n\nved feil: opprett oppgave "AI-beriking feilet" (bug)',
|
|
'discoverable',
|
|
'{
|
|
"trigger": {
|
|
"event": "node.created",
|
|
"conditions": {
|
|
"node_kind": "content"
|
|
}
|
|
},
|
|
"executor": "script",
|
|
"intelligence": 2,
|
|
"effort": 1,
|
|
"compiled": false
|
|
}'::jsonb,
|
|
'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'
|
|
);
|
|
|
|
-- =============================================================================
|
|
-- 4. Planlagt publisering: tidspunkt nådd → render → RSS → varsle
|
|
-- =============================================================================
|
|
-- Trigger: scheduled.due — planlagt tidspunkt nådd
|
|
INSERT INTO nodes (id, node_kind, title, content, visibility, metadata, created_by)
|
|
VALUES (
|
|
'e0000000-0ac0-4000-b000-000000000004',
|
|
'orchestration',
|
|
'Planlagt publisering: timer → render → RSS',
|
|
E'NÅR planlagt tid nådd\nHVIS samling har publishing\n\n1. render noden (som artikkel)\n2. generer feed for samlingen\n\nved feil: opprett oppgave "Planlagt publisering feilet" (bug)',
|
|
'discoverable',
|
|
'{
|
|
"trigger": {
|
|
"event": "scheduled.due",
|
|
"conditions": {
|
|
"has_trait": "publishing"
|
|
}
|
|
},
|
|
"executor": "script",
|
|
"intelligence": 1,
|
|
"effort": 2,
|
|
"compiled": false
|
|
}'::jsonb,
|
|
'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'
|
|
);
|
|
|
|
-- =============================================================================
|
|
-- 5. Podcast-oppsummering til lyd (TTS) — kaskademål for podcast-pipeline
|
|
-- =============================================================================
|
|
-- Designet som kaskademål: kobles via triggers-edge fra podcast-pipeline.
|
|
-- Demonstrerer kaskade-mønsteret fra oppgave 24.8.
|
|
INSERT INTO nodes (id, node_kind, title, content, visibility, metadata, created_by)
|
|
VALUES (
|
|
'e0000000-0ac0-4000-b000-000000000005',
|
|
'orchestration',
|
|
'Podcast: oppsummering → lyd (TTS)',
|
|
E'NÅR kaskade\n\n1. les opp teksten fra noden (på norsk)\n\nved feil: opprett oppgave "TTS-generering feilet" (bug)',
|
|
'discoverable',
|
|
'{
|
|
"trigger": {
|
|
"event": "cascade",
|
|
"conditions": {}
|
|
},
|
|
"executor": "script",
|
|
"intelligence": 1,
|
|
"effort": 2,
|
|
"compiled": false
|
|
}'::jsonb,
|
|
'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'
|
|
);
|
|
|
|
-- =============================================================================
|
|
-- Kaskade-edge: podcast-pipeline → TTS-oppsummering
|
|
-- =============================================================================
|
|
-- Når podcast-pipeline fullføres, trigger TTS-genereringen automatisk.
|
|
INSERT INTO edges (source_id, target_id, edge_type, metadata)
|
|
VALUES (
|
|
'e0000000-0ac0-4000-b000-000000000001', -- Podcast-pipeline
|
|
'e0000000-0ac0-4000-b000-000000000005', -- TTS-oppsummering
|
|
'triggers',
|
|
'{"description": "Generer lydoppsummering etter podcast-prosessering"}'::jsonb
|
|
);
|
|
|
|
COMMIT;
|