"""Chatbot-Kern: baut aus einer eingehenden Nachricht die Reaktion.

Reihenfolge: Regeln (Intent + Eskalation) -> Antwort-Pool mit
Sender-Gedaechtnis -> optionale LLM-Umformulierung -> Delay aus
Lese-/Denkzeit. Die eigentliche Chat-Erkennung (OCR) schliesst hier an.
"""
from . import delays, llm, rules
from .replies import ReplyMemory


class ChatbotBrain:
    def __init__(self):
        self.memory = ReplyMemory()

    def react(self, sender, message, sender_is_friend=False):
        """Reaktionsplan oder Eskalation/Stille.

        Rueckgabe:
          {'escalate': True}            -> niemals automatisch antworten
          None                          -> bewusst still bleiben
          {'escalate': False, 'delay', 'reply', 'intent'}
        """
        intent = rules.classify(message)
        if intent == rules.INTENT_ESCALATE:
            return {'escalate': True, 'intent': intent}
        if not rules.should_reply(intent, sender_is_friend):
            return None
        reply = self.memory.pick(sender, intent)
        reply = llm.reword(message, reply) or reply
        return {
            'escalate': False,
            'intent': intent,
            'reply': reply,
            'delay': delays.reply_delay_seconds(message, reply),
        }
