MISSION CONTROL// Quest & Heartbeat Agent System — MVP

🖥️ Lokaler Simulations-Modus

🤖 Agenten-Crew

💓 Live Heartbeat Feed

// Warte auf Quest-Aktivität — klick "▶ Quest simulieren" bei einem Agenten oben.

📜 Quest-Protokoll

💰 Kosten-Ersparnis-Rechner (Wake-Cycle vs. 24/7)

🔌 Integration Contract — für echte Agenten

Damit ein echter Agent-Prozess (Cron-Job auf Replit/Server) sich an dieses Dashboard andockt, müsste er diese Endpunkte gegen ein noch zu bauendes Backend ansprechen. Diese Seite simuliert genau diesen Vertrag clientseitig — das Backend dazu existiert noch nicht, ist aber durch dieses Schema klar spezifiziert.

POST/api/agents/:id/wake
Vom Scheduler (Cron/apscheduler) aufgerufen, wenn die Wake-Zeit erreicht ist. Liefert den Quest-Payload zurück.
// Response
{ "questId": "q_...", "agentId": "...", "quest": "Scan Vulgata...", "params": {...} }
POST/api/agents/:id/heartbeat
Vom Agent während der Quest alle N Sekunden gesendet ("Ich lebe noch"-Puls).
// Request Body
{ "questId": "q_...", "status": "processing_batch", "progress": 65 }
POST/api/agents/:id/quest-complete
Quest Clear — Agent meldet Ergebnis, Dashboard loggt + Agent geht "schlafen".
// Request Body
{ "questId": "q_...", "status": "success", "summary": "...", "durationSec": 142 }
GET/api/agents
Liste aller Agenten + aktueller Status, für dieses Dashboard zum Polling/Rendern.

Dead-Man-Switch serverseitig: Backend merkt sich lastHeartbeatAt pro Quest. Läuft ein Watchdog-Timer (z.B. alle 10s) und now - lastHeartbeatAt > deadManTimeoutSec, killt er den Prozess (z.B. via Replit-Process-API oder PID-Kill) und triggert /wake erneut für denselben Agenten.