"""Public contract for the kommunikation plugin. Exposes only the symbols that other builtins plugins need. Importers should use:: from app.plugins.builtins.contracts import get_contract komm = get_contract("kommunikation") if komm: await komm.send_message(db, tenant_id, ...) instead of importing from internal modules directly. """ from __future__ import annotations from app.plugins.builtins.contracts import get_contract_registry from app.plugins.builtins.kommunikation.miniapp_registry import ( MiniAppDef, MiniAppRegistry, ) from app.plugins.builtins.kommunikation.models import ( CommConversation, CommMessage, CommParticipant, ) from app.plugins.builtins.kommunikation.participant_registry import ( ParticipantHandler, get_participant_registry, ) from app.plugins.builtins.kommunikation.services import ( create_plugin_room, get_conversation, get_messages, parse_mentions, send_message, ) class KommunikationContract: """Public API surface for the kommunikation plugin. Exposes functions, classes, and model types that other plugins are allowed to use. Internal implementation details remain private to the plugin package. """ contract_name = "kommunikation" # ─── services ─── parse_mentions = staticmethod(parse_mentions) get_conversation = staticmethod(get_conversation) get_messages = staticmethod(get_messages) send_message = staticmethod(send_message) create_plugin_room = staticmethod(create_plugin_room) # ─── participant registry ─── get_participant_registry = staticmethod(get_participant_registry) ParticipantHandler = ParticipantHandler # ─── mini-app registry ─── MiniAppRegistry = MiniAppRegistry MiniAppDef = MiniAppDef # ─── models (read-only for queries) ─── CommConversation = CommConversation CommMessage = CommMessage CommParticipant = CommParticipant # ─── self-registration ─── _contract = KommunikationContract() get_contract_registry().register("kommunikation", _contract) __all__ = [ "KommunikationContract", "ParticipantHandler", "get_participant_registry", "MiniAppRegistry", "MiniAppDef", "parse_mentions", "get_conversation", "get_messages", "send_message", "create_plugin_room", "CommConversation", "CommMessage", "CommParticipant", ]