# Portabilität: UNIVERSAL
# Version: 1.0.0
# Zuletzt validiert: 2026-02-10
# Nächste Prüfung: 2026-08-10

WATCHER - Mistral Always-On Daemon
====================================

BESCHREIBUNG
------------
Der Watcher-Daemon macht BACH "always-on" - inspiriert von OpenClaw/molt.bot.
Mistral (lokal via Ollama, kostenlos) läuft dauerhaft im Hintergrund und
klassifiziert eingehende Events. Bei Bedarf startet er Claude Code Sessions.

ARCHITEKTUR
-----------
                    Watcher Daemon (always-on)
                    |
    +---------------+---------------+
    |               |               |
  Connector     FileSystem      TaskQueue
  (Telegram,    (Inbox,         (Neue/dringende
   Discord)     Downloads)       BACH Tasks)
    |               |               |
    +-------+-------+-------+------+
            |
            v
     MistralClassifier
     (OllamaClient -> Mistral:latest)
            |
  +---------+---------+----------+
  |         |         |          |
RESPOND   ESCALATE  LOG_ONLY  IGNORE
DIRECT    CLAUDE
  |         |         |
  v         v         v
Antwort   Claude    Event-
via       Session   Log
Connector  starten

BEFEHLE
-------
  bach watcher start              Daemon im Hintergrund starten
  bach watcher stop               Daemon stoppen
  bach watcher status             Status, Events, Statistiken
  bach watcher classify "text"    Text manuell klassifizieren (Test)
  bach watcher logs [N]           Letzte N Log-Zeilen
  bach watcher events [N]         Letzte N klassifizierte Events

KLASSIFIKATION
--------------
Mistral klassifiziert jeden Event in eine von 4 Aktionen:

  Aktion           Beschreibung                          Beispiel
  ---------------  -----------------------------------   -------------------------
  RESPOND_DIRECT   Mistral antwortet selbst              "Wie gehts?" -> "Gut!"
  ESCALATE_CLAUDE  Claude-Session wird gestartet          "Refactore den Handler"
  LOG_ONLY         Nur loggen, keine Aktion               "Backup abgeschlossen"
  IGNORE           Verwerfen                              Spam, Werbung

EVENT SOURCES
-------------
  connector_messages   Telegram/Discord Nachrichten (via Connector-System)
  filesystem           Neue Dateien in überwachten Ordnern
  task_queue           Neue/dringende BACH Tasks (P1/P2)
  scheduled            Zeitplan-basierte Events (Cron)

SICHERHEITS-GUARDS
------------------
- Cooldown: Min. 5 Minuten zwischen Claude-Escalations
- Tages-Limit: Max 20 Escalations pro Tag
- Claude-Check: Keine Escalation wenn Claude bereits online
- Screen-Lock: Keine Escalation bei gesperrtem Bildschirm
- Quiet Hours: Konfigurierbar (Standard: 23:00-07:00)

KONFIGURATION
-------------
Datei: hub/_services/watcher/config.json

Wichtige Einstellungen:
  enabled                    Daemon an/aus
  poll_interval_seconds      Polling-Intervall (Standard: 15s)
  quiet_start/quiet_end      Ruhezeiten
  mistral_model              Ollama-Modell (Standard: Mistral:latest)
  escalation_cooldown_seconds  Min. Zeit zwischen Escalations
  max_daily_escalations      Max Escalations pro Tag
  sources.*                  Event-Quellen aktivieren/deaktivieren

VORAUSSETZUNGEN
---------------
- Ollama installiert und gestartet
- Mistral-Modell geladen (ollama pull mistral)
- Connector-System konfiguriert (für Message-Quellen)

DATENBANK
---------
  connector_messages.watcher_classified  Tracking ob Watcher Nachricht gesehen hat
  watcher_event_log                     Alle klassifizierten Events mit Ergebnis

LOG-DATEIEN
-----------
  data/logs/watcher_daemon.log          Daemon-Aktivitaet und Klassifikationen

SIEHE AUCH
----------
  bach help connector     Connector-System (Telegram/Discord)
  bach help partners      Partner-System
  bach help daemon        Session-Daemon
  bach help injectors     Injektor-System
