123 lines
3.5 KiB
Python
123 lines
3.5 KiB
Python
"""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="editorial_mode",
|
|
description="Lokaler redaktioneller Journalmodus. Kein zweiter Modellaufruf.",
|
|
data_class="C",
|
|
resolver=_from_ctx("editorial_mode"),
|
|
)
|
|
)
|
|
register(
|
|
Placeholder(
|
|
key="editorial_instructions",
|
|
description="Modusabhängige Journalinstruktion. Kein allgemeiner Provenienzvertrag.",
|
|
data_class="C",
|
|
resolver=_from_ctx("editorial_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"),
|
|
)
|
|
)
|