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