Commit graph

17 commits

Author SHA1 Message Date
e2a853ffde feat: Add live streaming to Chat page
- Replace blocking execute_agent_task() with live subprocess streaming
- Use Popen() to read opencode output line-by-line in real-time
- Send 'chunk' events to frontend as agent thinks
- Frontend appends chunks incrementally for live response
- Matches Orchestrator's streaming UX
- No more waiting for complete response before seeing output
2026-02-21 17:32:37 +01:00
2a9941f35f feat: Material Icons, customizable app name & dark/light mode toggle
- Add Google Material Icons integration with smart_toy robot icon
- Implement app_settings database table for persistent configuration
- Add App Name customization in Settings (changes navigation & title)
- Add Dark/Light Mode theme switcher
  - Dark Mode: Lightened black (#0f0f0f) with blue accents (#0a84ff)
  - Light Mode: Clean white/gray with red accents (#ef4444)
- Create context_processor for global app_settings injection
- Redesign Settings page with new App Design section
- Optimize CSS: 724 additions, reduced complexity
- Remove outdated agent reminders (70 lines cleanup)
2026-02-21 16:59:18 +01:00
d48537b1fd fix: Handle orchestrated tasks without sub_tasks
Problem:
- Task #1 was stuck in 'in_progress' status
- TaskBeat expects 'sub_tasks' array for orchestrated tasks
- Tasks created via old API didn't have sub_tasks defined
- TaskBeat only processes 'pending' tasks, so in_progress tasks stay stuck

Solution:
- Added validation: if orchestrated task has no sub_tasks, mark as completed with error message
- Prevents infinite loop with stuck tasks
- Manually completed Task #1 in database

Note: This handles legacy tasks from deprecated /api/orchestrate endpoint.
2026-02-21 15:44:00 +01:00
50c1a0315b feat: UX Cleanup & Critical TaskBeat Fix
UX Improvements:
- Tasks page: Remove 'Create new task' form (orchestrator handles all)
- Orchestrator: Simplified to single 'Prompt' section, removed 'Tasks verteilen'
- Orchestrator: Removed 'Klassisch senden' button (live-only responses)
- Orchestrator: Removed 'Aktive Agenten' display (redundant with dashboard)

Critical Fix:
- TaskBeat now reads pending tasks from DATABASE instead of in-memory array
- All status updates (pending→in_progress→completed) now persist to DB
- Fixes issue where tasks created via API/UI were not being processed
- Agent_key updates also synced to DB

This fixes the bug where Task #1 was stuck in pending status.
2026-02-21 15:04:22 +01:00
1970abf487 fix: Correct url_for endpoint for file deletion routes
Changed all 'files_page' to 'files' in redirect calls:
- delete_agent_file() - 4 occurrences
- delete_project_file() - 4 occurrences

Fixes Internal Server Error (500) when deleting files.
Error was: BuildError: Could not build url for endpoint 'files_page'
2026-02-21 14:38:01 +01:00
57a6ffc046 fix: Update init_default_team_members() to match correct DB data
Corrected team member roles and responsibilities:
- Eric Fischer: Programmer → Funktionserweiterung
- Georg Tschare: CEO → Personalmanagement, Kundenkommunikation, Kommunikation mit Behörden
- Piotr Dyderski: Tech, 3D Art, RnD → Technische Infrastruktur, AI-Agenten, Automatisierung, 3D Avatare, Research and Development

DB data is the source of truth, code now matches.
2026-02-21 14:27:20 +01:00
4ca5132391 feat: Add edit functionality for team members
- Edit modal with Bootstrap for inline editing
- Update name, email, role, responsibilities, telegram_id
- Form validation and error handling
- Success/error flash messages
- Team member data passed to frontend via JSON
2026-02-21 14:22:38 +01:00
0e02611c87 feat: Add Team-Members management page
- New /team route to view all team members
- Add/activate/deactivate team members via UI
- Display name, role, email, responsibilities, telegram_id
- Integrated into main navigation
- Self-learning system info displayed
2026-02-21 14:20:07 +01:00
320a1d4d87 feat: Complete DB migration - Command parsing & task persistence
- Add command parsing for @SEND_EMAIL, @SEND_TELEGRAM, @UPDATE_TEAM_MEMBER, @ADD_TEAM_MEMBER
- Migrate all tasks.append() calls (13 occurrences) to use create_task() for DB persistence
- Update task routes to read from database instead of in-memory array
- Orchestrator beat now executes parsed commands (email/telegram notifications)
- Maintain legacy task_queue compatibility for email processing
- All tasks now persist across app restarts
2026-02-21 14:13:24 +01:00
632a6c253a feat: Team-Member Lernsystem & Automatische Vorstellung
Team-Member Updates:
- Korrigierte Rollen und Verantwortlichkeiten:
  * Eric Fischer: Lead Programming & Tech
  * Georg Tschare: CEO & Kundenkommunikation
  * Piotr Dyderski: SysAdmin, TechLead, 3D Artist & R&D

Neue Funktionen:
- update_team_member() - Aktualisiert Team-Member-Daten per Email/Name
- is_known_team_member() - Prüft ob Email in Team-DB existiert
- @UPDATE_TEAM_MEMBER Kommando für Orchestrator
- @ADD_TEAM_MEMBER Kommando für Orchestrator

Intelligentes Lernsystem:
- Erkennt neue Email-Absender automatisch
- Leitet unbekannte Absender automatisch an Orchestrator
- Orchestrator bittet um Vorstellung (Name, Rolle, Aufgaben)
- Informationen werden in Team-DB gespeichert
- Verbessert zukünftige Koordination

Email-Workflow für neue Absender:
1. Email von unbekanntem @diversityball.at kommt an
2. System erkennt: "Nicht in Team-DB"
3. Orchestrator übernimmt automatisch
4. Fragt freundlich nach Vorstellung
5. Beantwortet auch die eigentliche Anfrage
6. Speichert Infos mit @ADD_TEAM_MEMBER

Vorteile:
✓ Orchestrator baut automatisch Wissensdatenbank auf
✓ Bessere Koordination durch bekannte Verantwortlichkeiten
✓ Keine manuellen Team-Member Einträge nötig
✓ Freundlicher, professioneller Erstkontakt
✓ Lernfähiges System das besser wird

Context-Weiterleitung:
- extra_context aus Tasks wird jetzt durchgereicht
- Kombiniert Email-Kontext + Team-Member-Status
- Agents haben volle Informationen über Absender
2026-02-21 14:01:41 +01:00
5b0cf6e640 feat: Task-Persistierung, Team-Members & Orchestrator Beat
Database:
- Tasks-Tabelle für persistente Task-Speicherung
- Team-Members-Tabelle für reale Mitarbeiter
- Auto-Cleanup: Löscht completed Tasks älter als 7 Tage
- Helper-Funktionen: get_tasks(), create_task(), update_task_db(), delete_task()

Team-Management:
- Standard Team-Members (Eric, Georg, Piotr) beim Start initialisiert
- get_team_members() - Lädt aktive Team-Members
- add_team_member() - Fügt Team-Member hinzu
- get_team_member_summary() - Zusammenfassung für Orchestrator

Orchestrator Beat:
- Läuft alle 30 Minuten automatisch
- Prüft Tasks ohne Fortschritt (>2h pending)
- Prüft blockierte Tasks (>4h in_progress)
- Fragt Orchestrator bei Problemen
- Orchestrator kann Team-Members kontaktieren

Neue Kommandos für Orchestrator:
- @SEND_EMAIL - Email an Team-Member senden
- @SEND_TELEGRAM - Telegram-Nachricht an Team-Member

Integration:
- Team-Member-Info wird in Orchestrator-Systemprompt eingefügt
- Orchestrator kennt jetzt reale Verantwortlichkeiten
- Kann bei Bedarf echte Menschen kontaktieren

Background Threads:
- EmailPoller (alle 2 Min)
- TaskWorker (on-demand)
- TaskBeat (alle 10 Sek)
- OrchestratorBeat (alle 30 Min)  NEU
- TelegramBot (wenn konfiguriert)

TODO:
- Tasks-UI auf DB umstellen
- Delete-Button für Tasks
- Team-Members Verwaltungs-UI
2026-02-21 13:53:51 +01:00
11352d2ca5 feat: Files-Seite verbessert - View, Download & Delete für alle Dateitypen
UI Improvements:
- Agent Work Files: View-, Download- und Delete-Buttons hinzugefügt
- Projektdokumente: Download- und Delete-Buttons hinzugefügt
- Konsistentes UI über alle Datei-Kategorien
- View-Modal für Agent-Dateien (wie Projektdokumente)

Backend:
- /files/agent/<agent_key>/view/<filename> - Agent-Datei anzeigen
- /files/agent/<agent_key>/delete/<filename> - Agent-Datei löschen
- /files/agent/<agent_key>/<filename>?download=1 - Force Download
- /files/project/<filename>?download=1 - Projektdatei Download
- /files/project/delete/<filename> - Projektdatei löschen

Security:
- Path traversal protection für alle Routes
- Whitelist-basierte Dateityp-Validierung
- Agent-Zugriff nur auf eigene work-Verzeichnisse

Features:
- 👁 View: Datei im Modal anzeigen (Markdown, TXT)
- ↓ Download: Force download statt Browser-Ansicht
- ✕ Delete: Datei löschen mit Bestätigung
2026-02-21 13:25:37 +01:00
73c36785e2 feat: Telegram Bot Integration mit QR-Code
Features:
- Telegram Bot mit python-telegram-bot Library
- Bidirektionale Kommunikation (Anfragen → Tasks → Antworten)
- QR-Code auf Settings-Seite für einfache Bot-Verbindung
- User-ID Whitelist für Sicherheit
- Automatische Task-Erstellung aus Telegram-Nachrichten
- Agent-Antworten werden zurück zu Telegram gesendet

Implementation:
- Neue Telegram-Handler in app.py (start, message)
- QR-Code Generator mit qrcode Library
- Settings-Seite erweitert mit Telegram-Konfiguration
- .env.example mit Telegram-Setup-Anleitung
- Background Thread für Telegram Polling
- Integration mit bestehendem Task-System

Configuration:
- TELEGRAM_BOT_TOKEN: Bot Token von @BotFather
- TELEGRAM_BOT_USERNAME: Bot Username für QR-Code
- TELEGRAM_ALLOWED_USERS: Komma-getrennte User-IDs

Usage:
1. Bot via @BotFather erstellen
2. Token + User-IDs in .env eintragen
3. App starten
4. QR-Code auf /settings scannen
5. /start im Bot senden
2026-02-21 13:17:04 +01:00
ca820d20db fix: Code-Quality und Security-Verbesserungen
Security Fixes:
- Fix XSS vulnerability in orchestrator.html (escapeHtml für user input)
- Verbesserte Error-Handling: 4 bare except clauses mit spezifischen Exception-Typen

Code Quality:
- Logging für alle Exception-Handler hinzugefügt
- Timeout für Agent-Tasks von 300s auf 600s erhöht (10 Min)
- Bessere Kommentare für Exception-Handling

Performance:
- Wissensdatenbank aus Systemprompt entfernt
- Agents nutzen @READ_KNOWLEDGE für on-demand Zugriff
- Reduziert Prompt-Größe um ~15KB pro Task

UI Improvements (aus vorherigem Work):
- Tasks: Auto-Refresh Info statt Toggle
- Tasks: Status-Anzeigen statt manuelle Buttons
- Konsistentes Auto-Refresh (15s) wenn Tasks aktiv
2026-02-21 12:36:24 +01:00
93eb8c6d47 feat: Dynamische KI-Modelle, verbessertes Memory-System und Chat-Überarbeitung
🎯 KI-Modellverwaltung
- Dynamisches Laden verfügbarer Modelle via opencode models
- 29 Modelle verfügbar (opencode, anthropic, ollama)
- Gruppierung nach Anbieter in UI
- Cache-Mechanismus (1h TTL) für Performance
- API-Endpoint /api/models für Modellabfrage

🧠 Memory-System komplett überarbeitet
- JSON-basierte strukturierte Erinnerungen statt Markdown-Chaos
- Separate Memory-Typen: tasks.json, notes.json, research.json
- Automatische Memory-Zusammenfassung im Systemprompt
- Limitierung auf letzte 100 Einträge pro Typ
- Vollständige Task-Ergebnisse statt abgeschnittener Texte

📁 Agenten-Ordnerstruktur
- work/ Verzeichnis für Agent-Dateien
- memory/ Verzeichnis für strukturierte Erinnerungen
- Agenten arbeiten nur in eigenem work-Verzeichnis
- Absolute Pfade werden übergeben
- Dateien-UI zeigt Agent-Work-Folders

💬 Chat-System überarbeitet
- Echte Agent-Ausführung statt Mock-Responses
- Server-Sent Events für Live-Streaming
- Session-basierte Chat-History
- Loading-Spinner und Status-Anzeigen
- Automatisches Speichern in Session

🎭 Personality Integration
- personality.md wird jetzt geladen
- Persönlichkeit vor Systemprompt eingefügt
- Gilt für alle: Chat, Tasks, Orchestrator, Email-Poller

 Weitere Verbesserungen
- Alle Agenten nutzen execute_agent_task() zentral
- Memory-Speicherung nach jedem Task
- Work-Files in Datei-Verwaltung sichtbar
- System-Dateien ausgeblendet
- API-Route für Agent-Work-Dateien
2026-02-21 11:44:06 +01:00
84b2fe3dd7 Add agent reminders, model selection, task distribution and delete functionality 2026-02-20 22:37:58 +01:00
Pjot
56d9bc2c76 feat: initial commit – Frankenbot Multi-Agent Orchestration System
- Flask Web-App mit Dashboard, Chat, Orchestrator, Tasks, Dateien, Emails, Agenten, Settings
- Email-Poller (IMAP) mit SQLite-Journal als Failsafe (kein Emailverlust bei Absturz)
- Failsafe-Fenster und Poll-Intervall zur Laufzeit via /settings konfigurierbar
- TaskWorker: IMAP Seen-Flag erst nach erfolgreichem Task-Abschluss
- Whitelist-Filter: eric.fischer, p.dyderski, georg.tschare (gmail + signtime.media), *@diversityball.at
- 9 Agenten: researcher, tax_advisor, document_editor, location_manager, program_manager,
  catering_manager, musik_rechte_advisor, zusammenfasser, orchestration_ui
- Diversity Ball Wien 2026 – Wissensdatenbank, Sponsoringverträge, Email-Vorlagen
2026-02-20 17:31:16 +01:00