# Portabilität: UNIVERSAL
# Version: 1.0.0
# Zuletzt validiert: 2026-03-04

HANDLER-NAME
=============================================================================
Reminder Injector (SQ040) -- Erinnerungen in LLM-Prompts injizieren

BESCHREIBUNG
=============================================================================
Der Reminder Injector verwaltet und injiziert Erinnerungen in LLM-Prompts
vor jedem Call. Erinnerungen werden basierend auf Triggerbedingungen
selektiv in einen [BACH-REMINDERS] Block eingefügt. Die Implementierung
unterstützt DB- und JSON-Fallback-Speicherung.

Unterstützte Triggerbedingungen:
  - always: Immer aktiv (keine Bedingung)
  - on_task: Nur wenn ein Task läuft
  - time_based: Nur in bestimmtem Zeitfenster (HH:MM-HH:MM)
  - keyword_match: Nur wenn Keyword im User-Input auftritt

OPERATIONEN
=============================================================================
list_reminders(active_only=True)
  Gibt alle aktiven Reminders (oder alle) als Liste[dict] zurück.

add_reminder(message, trigger_condition="always", trigger_value=None,
             priority=5)
  Neuen Reminder anlegen. Trigger-Werte je nach Bedingung:
    - always: trigger_value ignoriert
    - on_task: trigger_value ignoriert
    - time_based: "HH:MM-HH:MM" (z.B. "09:00-17:00")
    - keyword_match: "keyword1, keyword2, ..." (komma-separiert)
  Priorität: Niedrige Werte = wichtiger (0 = höchste Priorität).

update_reminder(reminder_id, **kwargs)
  Reminder aktualisieren. Erlaubte Felder: message, trigger_condition,
  trigger_value, active, priority. Gibt True bei Erfolg zurück.

delete_reminder(reminder_id)
  Reminder löschen (wird von list_reminders danach ignoriert).
  Gibt True bei Erfolg zurück.

get_active_reminders(context)
  Gibt Liste von Reminder-Texten zurück, die zum aktuellen Kontext
  passen. Context-Dict kann enthalten: active_task, user_input.

inject(prompt, context)
  Haengt aktive Reminders vor den Prompt an. Rückgabe:
    [BACH-REMINDERS]
      1. <Reminder mit höchster Priorität>
      2. <Nächster Reminder>
    [/BACH-REMINDERS]
    <Original-Prompt>

BEISPIELE
=============================================================================
# Reminder für aktive Tasks erstellen
inj = ReminderInjector(Path("system"), db=None)
inj.add_reminder("Nutze Fokus-Modus für lange Tasks.",
                 trigger_condition="on_task", priority=1)

# Zeitbasierte Erinnerung (9-17 Uhr)
inj.add_reminder("Stellt sicher, dass Backups laufen.",
                 trigger_condition="time_based",
                 trigger_value="09:00-17:00", priority=3)

# Keyword-basierte Erinnerung
inj.add_reminder("Nutze BACH API, nicht direkte DB-Zugriffe!",
                 trigger_condition="keyword_match",
                 trigger_value="database, db, sql", priority=2)

# Reminder in Prompt injizieren
context = {"active_task": "research", "user_input": "database query"}
modified_prompt = inj.inject("Wie funktioniert XYZ?", context)

DATEIEN
=============================================================================
hub/reminder_injector.py         Hauptimplementierung
data/reminders.json              JSON Fallback (DB-Fehlerfall)
docs/help/reminder_injector.txt  Diese Hilfedatei

SIEHE AUCH
=============================================================================
task_manager.py   -- Task-Verwaltung (Kontext für on_task Trigger)
bach_api.py       -- Hub-übergreifende API
