# Portabilität: UNIVERSAL
# Version: 1.2.0
# Zuletzt validiert: 2026-02-08 (Claude)
# Nächste Prüfung: 2026-08-08
# Ressourcen: [tools/injectors.py, hub/inject.py]

INJEKTOR-SYSTEM (Kognitive Orchestrierung)
==========================================

Stand: 2026-02-08

Injektoren simulieren DENKEN und ASSOZIATIONEN als ZENTRALE EXEKUTIVE.
Sie orchestrieren die kognitive Verarbeitung in drei Ebenen:
- STATISCH: Wissensbasis (Wiki, Help, Kontext)
- PROZESSBEGLEITEND: Aktive Steuerung während der Arbeit
- PROAKTIV: Memory-Abrufe und System-Logs

Default: Alle AN (können jederzeit abgeschaltet werden).

COOLDOWN-MANAGEMENT (v1.1.75)
-----------------------------
Injektoren werden nach Anzeige für X Minuten stumm geschaltet:
- Strategy:  2 Minuten
- Context:   1 Minute
- Between:   3 Minuten
- Tool-Warn: 5 Minuten

Verhindert nervige Wiederholungen, ohne Funktion zu verlieren.

DIE 5 INJEKTOREN MIT TEILFUNKTIONEN
-----------------------------------

1. STRATEGY-INJEKTOR (Metakognition)
   Teilfunktionen:
   - Metakognition: Was, wann, wie machen?
   - Entscheidungshilfe bei Verzweigungen
   - Fehleranalyse ("Fehler sind wertvolle Informationen")

   Trigger-Wörter: fehler, komplex, blockiert, schwierig, problem
   Beispiel: "Fehler" -> "Fehler sind wertvolle Informationen"
   Cooldown: 2 Minuten

2. CONTEXT-INJEKTOR (Arbeitsgedaechtnis)
   Teilfunktionen:
   - Aufgabenbeschreibung in Erinnerung rufen
   - Tool-Empfehlungen basierend auf Kontext
   - Memory-Abruf (Kurzzeit, Langzeit, Session)
   - Anforderungsanalyse
   - Integration mit Connector-Routing (siehe unten)

   Trigger: Stichwörter im Text (siehe TOOL-TRIGGER unten)
   Nicht aggressiv - nur Hinweise
   Cooldown: 1 Minute

3. TIME-INJEKTOR (Zeitgefuehl)
   Teilfunktionen:
   - Timebeat: Regelmäßige Zeit-Updates
   - Zeitbudget-Awareness

   Default-Intervall: 60 Sekunden
   Hilft beim Zeitgefuehl und Session-Management
   Kein Cooldown (eigener Intervall-Mechanismus)

4. BETWEEN-INJEKTOR (Qualitätskontrolle)
   Teilfunktionen:
   - Qualitätskontrolle nach Task-Done
   - Übergang zur nächsten Aufgabe regeln
   - Ergebnis-Check: Validierung gegen Anforderungen

   Trigger: Nach "bach task done"
   NICHT bei Session-Ende (erkennt das)
   Cooldown: 3 Minuten

5. TOOL-INJEKTOR (Tool-Awareness)
   Teilfunktionen:
   - Tool-Erinnerung bei Session-Start (einmalig)
   - Warnung vor Tool-Duplikaten beim Erstellen
   - Kategorisierte Tool-Übersicht

   Kategorien: OCR, Daten-Import, Domain-Handler, Code-Analyse,
               Encoding, Import-Handling, Konvertierung
   Trigger: Text enthält "neues tool", "tool erstellen" etc.
   Cooldown: 5 Minuten

KOGNITIVE ORCHESTRIERUNG (Diagramm)
-----------------------------------

  +-------------------------------------------------------------+
  |                INJEKTOR-ORCHESTRIERUNG                      |
  |                (Zentrale Exekutive)                         |
  +-------------------------------------------------------------+
  |                                                             |
  |  STATISCH (Wissensbasis)                                    |
  |  +-- Meta-Skills, Meta-Workflows                            |
  |  +-- Wiki (wiki/)                                      |
  |  +-- Help (docs/help/*.txt)                                      |
  |  +-- Kontext (memory_context)                               |
  |                                                             |
  |  PROZESSBEGLEITEND (via Injektoren)                         |
  |  +-- strategy_injector (Cooldown: 2min)                     |
  |  |   +-- Metakognition: Was, wann, wie?                     |
  |  |   +-- Entscheidungshilfe                                 |
  |  |   +-- Fehleranalyse                                      |
  |  +-- context_injector (Cooldown: 1min)                      |
  |  |   +-- Aufgaben-Erinnerung                                |
  |  |   +-- Tool-Empfehlungen                                  |
  |  |   +-- Anforderungsanalyse                                |
  |  |   +-- Connector-Routing Integration (siehe unten)        |
  |  +-- between_injector (Cooldown: 3min)                      |
  |  |   +-- Qualitätskontrolle                                |
  |  |   +-- Task-Übergang                                     |
  |  |   +-- Ergebnis-Validierung                               |
  |  +-- time_injector (kein Cooldown)                          |
  |  |   +-- Zeitgefuehl (Timebeat)                             |
  |  +-- tool_injector (Cooldown: 5min)                         |
  |      +-- Tool-Awareness (Session-Start)                     |
  |      +-- Duplikat-Warnung                                   |
  |                                                             |
  |  PROAKTIV (Memory-Abrufe via context_injector)              |
  |  +-- Kurzzeit-Memory (working_memory)                       |
  |  +-- Langzeit-Memory (facts, lessons)                       |
  |  +-- Session-Memory (sessions)                              |
  |  +-- System-Logs (Changelog, Buglog, Roadmap)               |
  |                                                             |
  +-------------------------------------------------------------+

BEFEHLE
-------
  bach --inject status         Zeigt Status aller Injektoren (inkl. Cooldown)
  bach --inject toggle <name>  Schaltet an/aus
  bach --inject task <min>     Aufgabe für X Minuten
  bach --inject decompose <id> Zerlegt Aufgabe

TOGGLE-NAMEN:
  strategy   (oder strategy_injector)
  context    (oder context_injector)
  time       (oder time_injector)
  between    (oder between_injector)

COOLDOWN-STATUS ANZEIGEN:
  bach --inject status zeigt verbleibende Cooldown-Zeit in Sekunden

TOOL-TRIGGER (Context-Injektor)
-------------------------------
Der Context-Injektor erkennt Stichwörter und empfiehlt Tools:

  PYTHON-BEARBEITUNG
  ------------------
  "python bearbeiten"     -> bach python_cli_editor <datei> --show-all
  "klasse bearbeiten"     -> bach python_cli_editor <datei> --show-all
  "methode bearbeiten"    -> bach python_cli_editor <datei> --show-all
  "code struktur"         -> bach python_cli_editor <datei> --show-all
  "imports anzeigen"      -> bach python_cli_editor <datei> --show-imports

  CODE-ANALYSE
  ------------
  "code analysieren"      -> bach code_analyzer <datei>
  "dead code"             -> bach code_analyzer <datei>

  ENCODING & FORMATIERUNG
  -----------------------
  "encoding problem"      -> bach c_encoding_fixer <datei>
  "umlaute kaputt"        -> bach c_encoding_fixer <datei>
  "utf-8"                 -> bach c_encoding_fixer <datei>
  "emoji"                 -> bach c_emoji_scanner <datei>
  "einrückung"           -> bach c_indent_checker <datei>

  IMPORT-HANDLING
  ---------------
  "imports sortieren"     -> bach c_import_organizer <datei>
  "import problem"        -> bach c_import_diagnose <datei>
  "import fehlt"          -> bach c_import_diagnose <datei>

  DATEI-OPERATIONEN
  -----------------
  "datei aufteilen"       -> bach c_pycutter <datei>
  "zu gross"              -> bach c_pycutter <datei>
  "sqlite anzeigen"       -> bach c_sqlite_viewer <db>
  "json problem"          -> bach c_json_repair <datei>

  KONVERTIERUNG
  -------------
  "markdown zu pdf"       -> bach c_md_to_pdf <datei>
  "format konvertieren"   -> bach c_universal_converter <datei>

  TOOL-SUCHE
  ----------
  "tool finden"           -> bach tool suggest 'beschreibung'
  "welches tool"          -> bach tool suggest 'beschreibung'
  "tool suchen"           -> bach tools search <begriff>

  HILFE & KONVENTIONEN
  --------------------
  "neues tool"            -> --help naming (Tool-Praefixe)
  "konzept"               -> --help practices
  "architektur"           -> --help practices
  "memory"                -> --help memory
  "task"                  -> --help tasks
  "pfad"                  -> --help bach_paths
  "skill"                 -> --help skills
  "version"               -> bach --skills version <name>

BEISPIEL-AUSGABE
----------------
Wenn Claude "python bearbeiten" liest:

  [KONTEXT] Python-Editor: bach python_cli_editor <datei> --show-all

Wenn Claude "encoding problem" liest:

  [KONTEXT] Encoding-Fix: bach c_encoding_fixer <datei>

CONNECTOR-ROUTING INTEGRATION (NEU v1.1.75)
-------------------------------------------
ContextInjector ist jetzt in den Connector-Message-Flow integriert:

ROUTING-PIPELINE (queue_processor.py):
  Eingehende Nachricht (connector_messages)
    |
    v
  route_incoming() wendet an:
    1. ContextInjector.check(text) - 100+ hardcoded Trigger + DB cache
    2. context_triggers Tabelle - 900+ dynamische Trigger aus DB
    |
    v
  Nachricht mit Metadata-Hints (messages.inbox)
    -> metadata["context_hints"] = [hint1, hint2, ...]
    -> metadata["context_triggers"] = [trigger1, trigger2, ...]

VORTEIL:
- Eingehende Nachrichten bekommen SOFORT Kontext-Hinweise
- LLM sieht bereits relevante Tool-Empfehlungen
- Keine manuelle Suche nach Tools nötig
- Kontext wird als Metadata mitgeliefert (nicht im Text)

BEISPIEL:
  User schreibt: "encoding problem mit Datei X"
  -> ContextInjector erkennt "encoding problem"
  -> Metadata: {"context_hints": "bach c_encoding_fixer <datei>"}
  -> LLM bekommt Hint als System-Info, nicht als User-Text

DATENBANK-TRIGGER:
  Tabelle context_triggers (900+ Einträge):
  - trigger_phrase: Suchbegriff (z.B. "python bearbeiten")
  - hint_text: Empfehlung (z.B. "bach python_cli_editor <datei>")
  - Automatisch beim Routing abgefragt
  - Dynamisch erweiterbar ohne Code-Änderung

KONFIGURATION
-------------
In config.json unter "injectors":

  {
    "injectors": {
      "strategy_injector": true,
      "context_injector": true,
      "time_injector": true,
      "between_injector": true,
      "timebeat_interval": 60
    }
  }

WICHTIG
-------
- Injektoren können auch nerven/ablenken!
- Jederzeit abschaltbar: bach --inject toggle context (oder strategy, time, between)
- Hinweis bei jeder Strategie-Injection wie man abschaltet
- KEINE neuen Injektoren nötig - die 5 decken alle Funktionen ab
- Cooldowns verhindern nervige Wiederholungen automatisch

CODE-REFERENZ
-------------
  tools/injectors.py                    Injector-Implementierung
  hub/inject.py                         CLI-Handler
  hub/_services/connector/queue_processor.py  Connector-Integration

KLASSEN & KOMPONENTEN:
  InjectorSystem        - Haupt-Interface, orchestriert alle Injektoren
  StrategyInjector      - Metakognition, Trigger-basiert
  ContextInjector       - Tool-Empfehlungen, DB-Cache (~100 Trigger)
  TimeInjector          - Timebeat (60s Intervall)
  BetweenInjector       - Qualitätskontrolle nach Task-Done
  ToolInjector          - Tool-Awareness, Duplikat-Warnung
  CooldownManager       - Cooldown-Verwaltung (strategy=2min, context=1min, between=3min)
  TaskAssigner          - Task-Zuweisung basierend auf Zeitbudget

DATENBANK-TABELLEN:
  context_triggers      - 900+ dynamische Trigger (trigger_phrase, hint_text)
  injector_cooldowns    - Cooldown-Timestamps (injector_name, last_shown)

SIEHE AUCH
----------
  bach --help tools                      Tool-Übersicht
  bach --help tools/python_cli_editor    Detaillierte Tool-Doku
  bach --help memory                     Memory-System
  bach --help connector                  Connector-System & Message-Routing
  bach tools search                      Tool-Suche
  bach tool suggest                      Tool-Empfehlung
