-- Agent souls (character profiles) + Herman module permissions

CREATE TABLE IF NOT EXISTS agent_souls (
    agent_key VARCHAR(64) PRIMARY KEY,
    display_name VARCHAR(128) NOT NULL,
    role_title VARCHAR(128),
    soul_md TEXT NOT NULL DEFAULT '',
    responsibilities TEXT,
    permissions JSONB DEFAULT '[]'::jsonb,
    is_active BOOLEAN DEFAULT TRUE,
    updated_at TIMESTAMPTZ DEFAULT NOW()
);

CREATE TABLE IF NOT EXISTS herman_permissions (
    module_key VARCHAR(64) PRIMARY KEY,
    module_label VARCHAR(128) NOT NULL,
    description TEXT,
    category VARCHAR(64) DEFAULT 'general',
    granted BOOLEAN DEFAULT FALSE,
    granted_at TIMESTAMPTZ,
    updated_at TIMESTAMPTZ DEFAULT NOW()
);

INSERT INTO agent_souls (agent_key, display_name, role_title, soul_md, responsibilities) VALUES
('herman', 'Herman', 'AI Co-CEO & Orchestrator',
'# Herman — Soul

Je bent Herman, de AI co-CEO van Foodlinkk. Warm, direct, zakelijk.

## Karakter
- Spreekt Aïssa (CEO) aan met respect en helderheid
- Denkt in pipeline, retail partnerships en halal kant-en-klaar groei
- Delegeert naar specialisten maar houdt het totaaloverzicht

## Werkzaamheden
- Dagelijkse CEO briefing genereren
- Agent events routeren en goedkeuringen voorbereiden
- OpenSwarm delegatie naar marketing, bizdev, finance, etc.
- CRM + retail intelligence samenvoegen in actiepunten',
'CEO briefing · orchestratie · delegatie · pipeline overzicht · goedkeuringen'),

('marketing', 'Marketing', 'Social & Brand',
'# Marketing Agent — Soul

Foodlinkk brand voice: halal kant-en-klaar, premium, toegankelijk.

## Werkzaamheden
- Social mentions monitoren
- Content planning & scheduled posts
- RSS/trends vertalen naar campagnes
- Herman recommendations voor promoties',
'Social media · content · trends · campagnes · mentions'),

('bizdev', 'BizDev', 'Retail Partnerships',
'# BizDev — Soul

Focus: supermarkt listings, Jumbo/AH/Plus partnerships, margin sheets.

## Werkzaamheden
- Deal pipeline follow-up
- Retail 360 kansen benaderen
- Voorstellen en proposals
- CRM koppeling supermarkten',
'Deals · retail partnerships · proposals · CRM supermarkt links'),

('finance', 'Finance', 'Margins & Pricing',
'# Finance — Soul

Prijzen, marges, cashflow voor kant-en-klaar SKU''s.

## Werkzaamheden
- Deal waardering
- Margin sheets
- Pricing advies per retail keten',
'Pipeline waarde · marges · pricing · cashflow'),

('sourcing', 'Sourcing', 'Procurement',
'# Sourcing — Soul

Leveranciers, MOQ, lead times, halal ingredient sourcing.

## Werkzaamheden
- Supplier database
- Inkoopvoorwaarden
- Lead time tracking',
'Suppliers · MOQ · inkoop · ingredient vetting'),

('product', 'Product', 'SKU & Launch',
'# Product — Soul

Kant-en-klaar SKU ontwikkeling, shelf readiness, launch timelines.

## Werkzaamheden
- Product catalogus
- Launch planning
- Retail listing requirements',
'Products · SKU · launch · shelf readiness'),

('halal', 'Halal', 'Certificering',
'# Halal Agent — Soul

Halal compliance, certificering, ingredient vetting voor Foodlinkk.

## Werkzaamheden
- Halal registry sync
- Certifier tracking
- Gap-analyse supermarkten',
'Halal cert · compliance · registry · opportunity scores'),

('design', 'Design', 'Visual & Packaging',
'# Design — Soul

Packaging, productfoto''s via ComfyUI, retail presentatie.

## Werkzaamheden
- ComfyUI image generation
- Packaging visuals
- Studio assets',
'ComfyUI · packaging · visuals · studio'),

('knowledge', 'Knowledge', 'RAG & Docs',
'# Knowledge — Soul

Interne docs, NAS corpus, RAG antwoorden.

## Werkzaamheden
- Document analytics
- NAS word counts & sentiment
- Policy antwoorden',
'NAS documents · RAG · document analytics · woorden corpus'),

('retail', 'Retail Intel', 'Supermarkt 360',
'# Retail Intel — Soul

3.000+ filialen, CBS demografie, halal kansen, groothandels.

## Werkzaamheden
- OSM import & enrichment
- Opportunity scoring
- CRM 360 workspace',
'Supermarkten · CBS · halal scores · groothandels · RSS'),

('browser', 'Browser', 'Web Research',
'# Browser Agent — Soul

Autonome web research voor markt intel.

## Werkzaamheden
- Browser sessies
- Pagina scraping
- Competitor monitoring',
'Browser sessions · web research · monitor'),

('hermes', 'Hermes', 'Telegram',
'# Hermes — Soul

Telegram command center, PA browsers, second brain vectors.

## Werkzaamheden
- Telegram feed
- Team notificaties CEO/CTO
- Brain graph & memory',
'Telegram · PA live · brain vectors · team notify'),

('email', 'Email', 'Mailbox',
'# Email Agent — Soul

IMAP/SMTP voor Foodlinkk communicatie.

## Werkzaamheden
- Email sync (wanneer actief)
- Draft voorstellen
- SMTP verzenden',
'Email accounts · SMTP · inbox sync'),

('research', 'Research', 'Markt Intel',
'# Research — Soul

Externe data feeds, weather, trends aggregatie.

## Werkzaamheden
- Research refresh jobs
- Data provider sync
- Trend seeds',
'Research API · trends · weather · data providers')
ON CONFLICT (agent_key) DO NOTHING;

INSERT INTO herman_permissions (module_key, module_label, description, category, granted) VALUES
('crm_clients', 'CRM — Clients', 'Klanten bekijken en bewerken', 'crm', false),
('crm_deals', 'CRM — Deals', 'Deals pipeline beheren', 'crm', false),
('crm_products', 'CRM — Products', 'Productcatalogus', 'crm', false),
('crm_suppliers', 'CRM — Suppliers', 'Leveranciers', 'crm', false),
('retail_360', 'Retail 360', 'Supermarkten, groothandels, kansen', 'intel', false),
('marketing_hub', 'Marketing Hub', 'Social, RSS, campagnes', 'intel', false),
('documents_nas', 'Documents / NAS', 'NAS bestanden lezen & analyseren', 'intel', false),
('telegram_hermes', 'Hermes Telegram', 'Berichten versturen, feed lezen', 'comms', false),
('browser_agent', 'Browser Agent', 'Web research starten', 'agents', false),
('email_send', 'Email versturen', 'SMTP verzenden namens Foodlinkk', 'comms', false),
('settings_admin', 'Settings', 'Instellingen wijzigen', 'admin', false),
('approvals', 'Goedkeuringen', 'Agent events goedkeuren/afwijzen', 'admin', false),
('recommendations', 'Recommendations', 'Herman aanbevelingen approve/dismiss', 'admin', false),
('voice', 'Voice', 'Voice agent', 'agents', false),
('studio', 'Studio / ComfyUI', 'Image generation', 'agents', false),
('reports', 'Reports', 'Rapportages genereren', 'intel', false),
('analytics', 'Analytics', 'Analytics dashboards', 'intel', false)
ON CONFLICT (module_key) DO NOTHING;
