SysOps: deploy-all — 2026-06-09 12:56 UTC
This commit is contained in:
@@ -12,7 +12,7 @@ CHANNEL_ROUTES = {
|
||||
"marketing": "/marketing",
|
||||
"beurs": "/beurs",
|
||||
"agents": "/agents",
|
||||
"hermes": "/hermes",
|
||||
"hr": "/agents",
|
||||
"browser": "/browser",
|
||||
"documents": "/documents",
|
||||
"settings": "/settings",
|
||||
@@ -56,8 +56,8 @@ def _resolve_source(row: dict[str, Any]) -> dict[str, Any]:
|
||||
source_url = "/marketing"
|
||||
elif agent in ("wholesale_scraper", "retail_intel"):
|
||||
source_url = "/retail"
|
||||
elif agent == "hermes":
|
||||
source_url = "/hermes"
|
||||
elif agent == "hr":
|
||||
source_url = "/agents"
|
||||
|
||||
internal_url = source_url if source_url.startswith("/") else None
|
||||
external_url = source_url if source_url and source_url.startswith("http") else None
|
||||
|
||||
@@ -470,7 +470,7 @@ async def stream_daily_briefing():
|
||||
"agent_msg", "agent_mesh", agent, "agent",
|
||||
f"@{agent}: {ev.get('title') or ev.get('event_type')}",
|
||||
)
|
||||
for agent_key in ("bizdev", "finance", "sourcing", "halal", "packaging"):
|
||||
for agent_key in ("bizdev", "finance", "sourcing", "halal", "packaging", "hr"):
|
||||
yield _briefing_step(
|
||||
"agent_msg", "agent_mesh", "herman", "agent",
|
||||
f"Herman → {agent_key}: briefing context gedeeld",
|
||||
|
||||
@@ -12,7 +12,7 @@ CHANNEL_ROUTES = {
|
||||
"marketing": "/marketing",
|
||||
"beurs": "/beurs",
|
||||
"agents": "/agents",
|
||||
"hermes": "/hermes",
|
||||
"hr": "/agents",
|
||||
"browser": "/browser",
|
||||
"documents": "/documents",
|
||||
"settings": "/settings",
|
||||
@@ -56,8 +56,8 @@ def _resolve_source(row: dict[str, Any]) -> dict[str, Any]:
|
||||
source_url = "/marketing"
|
||||
elif agent in ("wholesale_scraper", "retail_intel"):
|
||||
source_url = "/retail"
|
||||
elif agent == "hermes":
|
||||
source_url = "/hermes"
|
||||
elif agent == "hr":
|
||||
source_url = "/agents"
|
||||
|
||||
internal_url = source_url if source_url.startswith("/") else None
|
||||
external_url = source_url if source_url and source_url.startswith("http") else None
|
||||
|
||||
@@ -12,7 +12,7 @@ window.AgentAvatars = (function () {
|
||||
knowledge: { hoodie: '#312e81', hair: '#374151', skin: '#e8b896', style: 'glasses', accent: '#6366f1' },
|
||||
retail: { hoodie: '#365314', hair: '#2d1810', skin: '#ddb896', style: 'short', accent: '#b8ff3c' },
|
||||
browser: { hoodie: '#0c4a6e', hair: '#1f2937', skin: '#c9a07a', style: 'short', accent: '#38bdf8' },
|
||||
hermes: { hoodie: '#1e40af', hair: '#3d2314', skin: '#e8b896', style: 'short', accent: '#2aabee' },
|
||||
hr: { hoodie: '#6b21a8', hair: '#2d1810', skin: '#ddb896', style: 'bob', accent: '#e879f9' },
|
||||
email: { hoodie: '#334155', hair: '#4a3728', skin: '#ddb896', style: 'short', accent: '#94a3b8' },
|
||||
research: { hoodie: '#115e59', hair: '#1a1a1a', skin: '#f5c9a8', style: 'glasses', accent: '#14b8a6' },
|
||||
sysops: { hoodie: '#1e3a5f', hair: '#4a3728', skin: '#e8b896', style: 'short', accent: '#38bdf8', hat: 'cap' },
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
<span x-text="statusLabel(s)"></span>
|
||||
</span>
|
||||
<p class="agent-current-task" x-text="s.current_task || 'Wacht op taak…'"></p>
|
||||
<p class="agent-role-desc" x-text="(s.responsibilities || '').substring(0,120)"></p>
|
||||
<p class="agent-role-desc" x-text="s.responsibilities || '—'"></p>
|
||||
<div class="agent-meta-row">
|
||||
<button type="button" class="agent-events-link"
|
||||
@click.stop="openEvents(s.agent_key, s.display_name)"
|
||||
|
||||
@@ -196,7 +196,7 @@
|
||||
<option value="rss_feeds">RSS Feeds</option>
|
||||
<option value="wholesale_scraper">Wholesale</option>
|
||||
<option value="halal_registry">Halal</option>
|
||||
<option value="hermes">Hermes</option>
|
||||
<option value="hr">HR</option>
|
||||
</select>
|
||||
<span class="live-badge">Auto-refresh 5s</span>
|
||||
</div>
|
||||
|
||||
+21
-5
@@ -4,16 +4,32 @@
|
||||
|
||||
Herman fungeert als **Co-CEO** in het centrum van het netwerk. Agents communiceren via events (`agent_events`) en worden gevisualiseerd op `/agents?tab=mesh`.
|
||||
|
||||
## Nieuwe agents (migratie 016)
|
||||
## Agent overzicht
|
||||
|
||||
| Key | Naam | Rol |
|
||||
|-----|------|-----|
|
||||
| `sysops` | SysOps | Proxmox, Docker, VM monitoring |
|
||||
| Key | Naam | Functie |
|
||||
|-----|------|---------|
|
||||
| `herman` | Herman | AI Co-CEO — briefing, orchestratie, delegatie |
|
||||
| `marketing` | Marketing | Social, campagnes, RSS trends, brand |
|
||||
| `bizdev` | BizDev | Retail partnerships, deals, listings |
|
||||
| `finance` | Finance | Marges, pricing, pipeline-waardering |
|
||||
| `sourcing` | Sourcing | Leveranciers, inkoop, halal ingredients |
|
||||
| `product` | Product | SKU-ontwikkeling, launch, shelf readiness |
|
||||
| `halal` | Halal | Certificering, compliance, gap-analyse |
|
||||
| `design` | Design | ComfyUI, visuals, studio assets |
|
||||
| `knowledge` | Knowledge | NAS, RAG, document analytics |
|
||||
| `retail` | Retail Intel | Supermarkten 360, CBS, kansen |
|
||||
| `browser` | Browser | Web research, concurrentie-monitoring |
|
||||
| `hr` | HR | Personeelszaken, recruiting, onboarding |
|
||||
| `email` | Email | IMAP/SMTP, inbox, verzenden |
|
||||
| `research` | Research | Marktonderzoek, trends, data feeds |
|
||||
| `sysops` | SysOps | IT infra, Docker, Gitea backup |
|
||||
| `packaging` | Packaging | SVG/PDF verpakkingsontwerp |
|
||||
|
||||
> **Let op:** `/hermes` is het Telegram Command Center (aparte module), geen agent in de soul registry.
|
||||
|
||||
## Souls
|
||||
|
||||
Elke agent heeft een `soul_md` in PostgreSQL (`agent_souls`). Herman leest souls voor briefing en delegatie.
|
||||
Elke agent heeft `role_title`, `responsibilities` en `soul_md` in PostgreSQL (`agent_souls`). De HR-soul is een placeholder en wordt later uitgewerkt.
|
||||
|
||||
## Permissions
|
||||
|
||||
|
||||
+1
-1
@@ -87,7 +87,7 @@ Migraties in `migrations/`:
|
||||
| retail | Supermarkten 360 |
|
||||
| research | Marktonderzoek |
|
||||
| design | ComfyUI |
|
||||
| … | bizdev, finance, sourcing, product, halal, knowledge, browser, hermes, email |
|
||||
| … | bizdev, finance, sourcing, product, halal, knowledge, browser, hr, email |
|
||||
|
||||
**Events:** `agent_events` — zichtbaar op `/agents`, klikbaar per agent.
|
||||
|
||||
|
||||
@@ -0,0 +1,127 @@
|
||||
-- Vervang Hermes agent door HR + duidelijke functieomschrijvingen voor alle agents
|
||||
|
||||
DELETE FROM agent_souls WHERE agent_key = 'hermes';
|
||||
|
||||
INSERT INTO agent_souls (agent_key, display_name, role_title, soul_md, responsibilities, avatar_emoji, avatar_color, avatar_mood, is_active) VALUES
|
||||
('hr', 'HR', 'HR & People Operations',
|
||||
'# HR — Soul
|
||||
|
||||
> Soul wordt later uitgewerkt — dit is een voorlopige placeholder.
|
||||
|
||||
Je bent de HR-agent van Foodlinkk (halal kant-en-klaar food business).
|
||||
|
||||
## Functie
|
||||
- Personeelszaken en team operations
|
||||
- Recruiting, vacatures en kandidaat-screening
|
||||
- Onboarding nieuwe medewerkers (incl. IT-toegang via SysOps)
|
||||
- Verlof, contracten en arbeidsvoorwaarden bijhouden
|
||||
- Team welzijn en interne communicatie
|
||||
|
||||
## Samenwerking
|
||||
- **Herman:** people-updates in CEO briefing
|
||||
- **Finance:** salaris- en kostencontext (toekomst)
|
||||
- **Knowledge:** HR-beleid en handboeken op NAS
|
||||
- **SysOps:** accounts en toegang bij onboarding/offboarding',
|
||||
'Personeelszaken · recruiting · onboarding · verlof & contracten · team welzijn',
|
||||
'👥', '#e879f9', 'calm', true)
|
||||
ON CONFLICT (agent_key) DO UPDATE SET
|
||||
display_name = EXCLUDED.display_name,
|
||||
role_title = EXCLUDED.role_title,
|
||||
soul_md = EXCLUDED.soul_md,
|
||||
responsibilities = EXCLUDED.responsibilities,
|
||||
avatar_emoji = EXCLUDED.avatar_emoji,
|
||||
avatar_color = EXCLUDED.avatar_color,
|
||||
avatar_mood = EXCLUDED.avatar_mood,
|
||||
is_active = EXCLUDED.is_active,
|
||||
updated_at = NOW();
|
||||
|
||||
-- Duidelijke functieomschrijvingen (role_title + responsibilities)
|
||||
UPDATE agent_souls SET
|
||||
role_title = 'AI Co-CEO & Orchestrator',
|
||||
responsibilities = 'Dagelijkse CEO-briefing · agent-orchestratie · taakdelegatie · goedkeuringsqueue · pipeline-overzicht',
|
||||
updated_at = NOW()
|
||||
WHERE agent_key = 'herman';
|
||||
|
||||
UPDATE agent_souls SET
|
||||
role_title = 'Marketing & Communicatie',
|
||||
responsibilities = 'Social media monitoring · content & campagnes · RSS/food trends · brand voice Foodlinkk · reclamefolders',
|
||||
updated_at = NOW()
|
||||
WHERE agent_key = 'marketing';
|
||||
|
||||
UPDATE agent_souls SET
|
||||
role_title = 'Business Development',
|
||||
responsibilities = 'Retail partnerships (Jumbo/AH/Plus) · deal pipeline · proposals · supermarkt-listing trajecten · CRM-koppelingen',
|
||||
updated_at = NOW()
|
||||
WHERE agent_key = 'bizdev';
|
||||
|
||||
UPDATE agent_souls SET
|
||||
role_title = 'Finance & Pricing',
|
||||
responsibilities = 'Pipeline-waardering · marges per SKU · prijsstelling retail · cashflow-inzicht · kostenanalyse',
|
||||
updated_at = NOW()
|
||||
WHERE agent_key = 'finance';
|
||||
|
||||
UPDATE agent_souls SET
|
||||
role_title = 'Inkoop & Leveranciers',
|
||||
responsibilities = 'Leveranciersdatabase · MOQ & lead times · halal ingredient sourcing · inkoopvoorwaarden · supplier vetting',
|
||||
updated_at = NOW()
|
||||
WHERE agent_key = 'sourcing';
|
||||
|
||||
UPDATE agent_souls SET
|
||||
role_title = 'Productontwikkeling',
|
||||
responsibilities = 'SKU-catalogus · shelf readiness · launch planning · retail listing-eisen · productlifecycle',
|
||||
updated_at = NOW()
|
||||
WHERE agent_key = 'product';
|
||||
|
||||
UPDATE agent_souls SET
|
||||
role_title = 'Halal Compliance',
|
||||
responsibilities = 'Halal-certificering · ingredient vetting · compliance registry · gap-analyse supermarkten · audit-voorbereiding',
|
||||
updated_at = NOW()
|
||||
WHERE agent_key = 'halal';
|
||||
|
||||
UPDATE agent_souls SET
|
||||
role_title = 'Design & Visuals',
|
||||
responsibilities = 'ComfyUI productfoto''s · visuele identiteit · studio assets · packaging visuals · retail presentatie',
|
||||
updated_at = NOW()
|
||||
WHERE agent_key = 'design';
|
||||
|
||||
UPDATE agent_souls SET
|
||||
role_title = 'Kennisbank & Documenten',
|
||||
responsibilities = 'NAS corpus · document analytics · sentiment & top-woorden · RAG-antwoorden · intern beleid doorzoeken',
|
||||
updated_at = NOW()
|
||||
WHERE agent_key = 'knowledge';
|
||||
|
||||
UPDATE agent_souls SET
|
||||
role_title = 'Retail Intelligence',
|
||||
responsibilities = '3.000+ supermarkten DB · CBS-demografie · halal opportunity scores · groothandels · sales milestones',
|
||||
updated_at = NOW()
|
||||
WHERE agent_key = 'retail';
|
||||
|
||||
UPDATE agent_souls SET
|
||||
role_title = 'Web Research',
|
||||
responsibilities = 'Autonome browser-sessies · concurrentie-monitoring · pagina-scraping · marktintel via web',
|
||||
updated_at = NOW()
|
||||
WHERE agent_key = 'browser';
|
||||
|
||||
UPDATE agent_souls SET
|
||||
role_title = 'Email & Mailbox',
|
||||
responsibilities = 'IMAP/SMTP sync · inbox beheer · concept-emails · verzenden namens Foodlinkk · klantcorrespondentie',
|
||||
updated_at = NOW()
|
||||
WHERE agent_key = 'email';
|
||||
|
||||
UPDATE agent_souls SET
|
||||
role_title = 'Marktonderzoek',
|
||||
responsibilities = 'Externe data feeds · markttrends · weather data · research briefs · data provider sync',
|
||||
updated_at = NOW()
|
||||
WHERE agent_key = 'research';
|
||||
|
||||
UPDATE agent_souls SET
|
||||
role_title = 'IT Operations & Infra',
|
||||
responsibilities = 'Proxmox & VM monitoring · Docker health · Gitea backup · maintenance scans · infra-topologie · SysOps-verslag',
|
||||
updated_at = NOW()
|
||||
WHERE agent_key = 'sysops';
|
||||
|
||||
UPDATE agent_souls SET
|
||||
role_title = 'Verpakkingsontwerp',
|
||||
responsibilities = 'SVG/PDF/PNG packaging studio · stanstekeningen · drukwerk-ready exports · NAS per project · Herman-commando''s',
|
||||
updated_at = NOW()
|
||||
WHERE agent_key = 'packaging';
|
||||
Reference in New Issue
Block a user