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

PARTNER-CONFIG-MANAGER
======================

Verwaltet die automatische Eintragung von BACH in Konfigurationsdateien von
LLM-Partnern (Claude Code, Gemini, Ollama). Erkennt installierte Partner und
registriert BACH mit Template-basierten Konfigurationsblöcken.

Teil von SQ015: LLM-Agnostik & Registrierungsprozess.


BESCHREIBUNG
============

Der Handler automatisiert die Integration von BACH in verschiedene LLM-Umgebungen.
Er basiert auf Templates und unterstützt die Partnertypen:
  - claude-code (Detektionsverzeichnis: ~/.claude)
  - gemini (Detektionsverzeichnis: ~/.gemini)
  - ollama (Detektionsverzeichnis: ~/.ollama)

Neue Konfigurationsdateien werden aus Templates erstellt, BACH_ROOT_PATH wird
automatisch eingesetzt. Wiederholte Registrierung ist idempotent.


OPERATIONEN
===========

detect_active_partners()
  Erkennt installierte Partner durch Prüfung ihrer Detektionsverzeichnisse.
  Rückgabe: Liste von Partner-Namen (z.B. ["claude-code", "ollama"])

register_partner(partner: str)
  Trägt BACH in die Konfigurationsdatei eines Partners ein.
  - Lädt Template aus templates/{PARTNER_MD_TEMPLATE.md}
  - Ersetzt [BACH_ROOT_PATH] durch aktuellen BACH-Root-Pfad
  - Erstellt neue Datei oder hängt an, falls BACH noch nicht eingetragen
  - Rückgabe: (erfolg: bool, nachricht: str)

unregister_partner(partner: str)
  Entfernt BACH-Block aus Konfigurationsdatei eines Partners.
  - Sucht nach "# BACH Integration" Marker
  - Entfernt Block bis zum nächsten Top-Level-Header
  - Idempotent: Keine Fehler bei fehlender Datei/Block
  - Rückgabe: (erfolg: bool, nachricht: str)

register_all_detected()
  Registriert BACH in allen erkannten Partnern.
  Rückgabe: Liste von (partner: str, erfolg: bool, nachricht: str)


BEISPIELE
=========

Programmatisch (bach_api):

  from bach_api import PartnerConfigManager
  from pathlib import Path

  manager = PartnerConfigManager(Path("/path/to/BACH"))

  # Alle Partner erkennen
  partners = manager.detect_active_partners()
  print(partners)  # ["claude-code"]

  # BACH registrieren
  success, msg = manager.register_partner("claude-code")
  print(msg)  # ✓ CLAUDE.md erstellt: ~/.CLAUDE.md

  # Alle registrieren
  results = manager.register_all_detected()


DATEIEN
=======

hub/partner_config_manager.py
  Handler-Implementierung mit PartnerConfigManager-Klasse und CLI-Funktionen.

templates/CLAUDE_MD_TEMPLATE.md
  Template für Claude-Code-Integration. Wird mit BACH_ROOT_PATH ersetzt.

templates/GEMINI_MD_TEMPLATE.md
  Template für Gemini-Integration.

templates/OLLAMA_MD_TEMPLATE.md
  Template für Ollama-Integration.

~/.CLAUDE.md, ~/.GEMINI.md, ~/.OLLAMA.md
  Zieldateien bei Benutzern. Werden im Home-Verzeichnis erstellt.


SIEHE AUCH
==========

SQ015 (System-Anforderung): LLM-Agnostik & Registrierungsprozess
SQ038: Verbessertes Marker-System für Block-Entfernung (geplant)
bach.py: CLI-Einstiegspunkt mit "partner" Unterbefehlen
bach_api.py: Python-API für programmatische Nutzung
