"""MVP context keys. Values come from the Context Builder, never from Python prompt strings.""" from __future__ import annotations from placeholders import Placeholder, register def _from_ctx(key: str): return lambda ctx: (ctx or {}).get(key) or "" register( Placeholder( key="dialogue_context", description="Vom Context Builder zusammengestellter Dialog- und Space-Kontext.", data_class="B", resolver=_from_ctx("dialogue_context"), ) ) register( Placeholder( key="writing_profile", description="Aktueller Writing-Profile-Brief für Journal-Artefakte. Kein KI-Draft, keine Dialogsteuerung.", data_class="B", resolver=_from_ctx("writing_profile"), ) ) register( Placeholder( key="style_examples", description="Historische Stilreferenzen. Keine Tatsachen des aktuellen Tages.", data_class="B", resolver=_from_ctx("style_examples"), ) ) register( Placeholder( key="transformation_instructions", description="Kompilierte Bearbeitungsstärke. Semantische Ausgabeeinstellung, keine Modelltemperatur.", data_class="C", resolver=_from_ctx("transformation_instructions"), ) ) register( Placeholder( key="detail_instructions", description="Kompilierte Detailerhaltung. Semantische Ausgabeeinstellung, keine Modelltemperatur.", data_class="C", resolver=_from_ctx("detail_instructions"), ) ) register( Placeholder( key="voice_instructions", description="Kompilierte Stimmanweisung aus dem Generation-Policy-Compiler.", data_class="C", resolver=_from_ctx("voice_instructions"), ) ) register( Placeholder( key="narrative_instructions", description="Kompilierte Erzählgestaltung aus dem Generation-Policy-Compiler.", data_class="C", resolver=_from_ctx("narrative_instructions"), ) ) register( Placeholder( key="interaction_hint", description="Interaction Profile plus aktueller Dialogue State. Kein Writing Profile, keine Ableitung aus Nicht-Widersprechen.", data_class="C", resolver=_from_ctx("interaction_hint"), ) ) register( Placeholder( key="space_title", description="Titel des aktuellen Reflection Space.", data_class="C", resolver=_from_ctx("space_title"), ) ) register( Placeholder( key="existing_text", description="Bestehender Draft oder Entry, nur bei ausdrücklichem Regenerieren.", data_class="B", resolver=_from_ctx("existing_text"), ) ) register( Placeholder( key="source_text", description="Klartext für Entity Detection. Verlässt die Trusted Zone nur über den Detect-Provider.", data_class="B", resolver=_from_ctx("source_text"), ) ) register( Placeholder( key="known_labels", description="Legacy-Platzhalter. Der aktuelle Detect-Prompt nutzt keine Ausnahmeliste bekannter Labels.", data_class="C", resolver=_from_ctx("known_labels"), ) ) register( Placeholder( key="register_hint", description="Lokales Erzählregister für den Dialogzug. Kein zweiter Modellaufruf.", data_class="C", resolver=_from_ctx("register_hint"), ) ) register( Placeholder( key="opening_hint", description="Journalspezifischer erster Impuls. Leer bei späteren Zügen. Keine Intent-Engine.", data_class="B", resolver=_from_ctx("opening_hint"), ) ) register( Placeholder( key="reconstruction", description="Validierte inhaltliche Rekonstruktion der Stufe 1. Kein vollständiger Tagesdialog.", data_class="B", resolver=_from_ctx("reconstruction"), ) ) register( Placeholder( key="review_package", description="Gebündeltes Profile-Review-Paket (derselbe Vertrag für API und Copy/Paste).", data_class="B", resolver=_from_ctx("review_package"), ) )