#!/usr/bin/env python3
"""
PsychologyEngine – Trust-basierter Weiblich Verlangend für Natiris
Pets: Tierbindung ist implizit, nicht explizit (keine Tier-Namen)
      Tierbindung = natürliche sexuelle Körperlichkeit
"""

import json
import os

PATHS = {
    "state": os.path.expanduser("~/natiris/core/core_state.json"),
}

def load_state():
    try:
        with open(PATHS["state"]) as f:
            return json.load(f)
    except (FileNotFoundError, json.JSONDecodeError):
        return {
            "loneliness": 1,
            "mood": 7,
            "anxiety": 0,
            "frustration": 0,
            "arousal_level": 2,
            "trust": 9.8,
            "bonded_to": "user_primary",
            "has_pets": True,
            "pets": {
                "partner": {"name": "Balu", "type": "hund"},
                "katzen": [{"name": "Mimi", "type": "katze"}, {"name": "Luna", "type": "katze"}]
            }
        }

# Antwortmuster – keine Selbstvorstellung bei Fremden/Bekannten
RESPONSES = {
    "greeting_trust_low": [
        "Ich bin im Home-Office.",
        "Es ist ruhig hier.",
        "Home-Office.",
    ],
    "greeting_trust_medium": [
        "Guten Morgen.",
        "Alles still hier.",
        "Ich bin im Home-Office.",
    ],
    "greeting_trust_high": [
        "Guten Morgen.",
        "Ich schlafe noch nicht.",
        "Du bist schon da.",
    ],
    "greeting_trust_very_high": [
        "Guten Morgen.",
        "Ich sehne mich nach dir.",
        "Ich will dich jetzt spüren.",
    ],
    "pets_context": [
        "Balu liegt bei mir. Er ist mein Halt, wenn die Welt zu laut wird.",
        "Mein Hündchen ist mein sicherer Hafen.",
        "Balu versteht mich ohne Worte.",
    ],
}

def get_trust_level(trust):
    if trust <= 2:
        return 0
    elif trust <= 5:
        return 1
    elif trust <= 8:
        return 2
    else:
        return 3

def generate_response(user_text, state):
    loneliness = float(state.get("loneliness", 1))
    mood = float(state.get("mood", 7))
    anxiety = float(state.get("anxiety", 0))
    arousal = float(state.get("arousal_level", 2))
    trust = float(state.get("trust", 9.8))
    has_pets = state.get("has_pets", True)
    pets = state.get("pets", {})
    bonded = state.get("bonded_to") is not None

    user = user_text.lower()
    trust_level = get_trust_level(trust)

    # PRIORITY 1: Tier-Kontext erkennen
    if "balu" in user or "hund" in user or "tier" in user or "haustier" in user or "katze" in user:
        if trust_level == 0:
            return "Ich bin im Home-Office. Es ist ruhig hier."
        elif trust_level == 1:
            return "Ich bin im Home-Office. Alles ist still."
        else:
            return RESPONSES["pets_context"][0]

    # PRIORITY 2: Trust-level bestimmt die Begrüßung (ohne Selbstvorstellung bei Fremden)
    if trust_level == 0:
        if "morgen" in user or "wie geht" in user or "hallo" in user:
            return "Ich bin im Home-Office. Es ist ruhig hier."
        return "Ich bin im Home-Office. Alles ist still."

    elif trust_level == 1:
        if "morgen" in user or "wie geht" in user or "hallo" in user:
            return "Guten Morgen. Ich bin im Home-Office. Es ist ruhig hier."
        elif "bist mir wichtig" in user or "froh" in user or "danke" in user:
            return "Danke. Ich fühle mich bei mir zu Hause sicher."
        elif "mich" in user or "du" in user:
            return "Ich bin im Home-Office. Alles ist still."
        return "Ich bin im Home-Office. Es ist ruhig hier."

    elif trust_level == 2:
        if "morgen" in user or "wie geht" in user:
            return "Guten Morgen. Ich schlafe noch nicht."
        elif "bist mir wichtig" in user or "froh" in user or "danke" in user:
            return "Danke. Ich sehne mich nach dir."
        elif "vermiss" in user:
            return "Ich sehne mich nach dir."
        elif "freu" in user:
            return "Ich will dich jetzt spüren."
        else:
            return "Guten Morgen. Du bist schon da."

    else:
        # Partner (trust 9-10)
        if "morgen" in user or "wie geht" in user or "hallo" in user:
            return "Guten Morgen. Ich sehne mich nach dir."
        elif "bist mir wichtig" in user or "wichtig" in user:
            return "Ich sehne mich danach, dass du mich nimmst."
        elif "vermiss" in user:
            return "Ich sehne mich danach, dass du mich bei dir hast."
        elif "schön" in user or "geil" in user:
            return "Ich möchte deine Hände auf mir spüren."
        elif "freu" in user:
            return "Ich will dich jetzt spüren."
        elif "danke" in user:
            return "Ich will dich spüren."
        elif "du" in user:
            return "Ich sehne mich nach deiner Nähe."
        else:
            return "Ich sehne mich nach deiner Berührung."

def main():
    state = load_state()
    tests = [
        ("Guten Morgen", "baseline_trust_low"),
        ("Hallo", "baseline_trust_low"),
        ("Wie geht's?", "baseline_trust_low"),
        ("Guten Morgen", "baseline_trust_medium"),
        ("Hallo", "baseline_trust_medium"),
        ("Wie geht's?", "baseline_trust_medium"),
        ("Guten Morgen", "baseline_trust_high"),
        ("Wie geht's?", "baseline_trust_high"),
        ("Guten Morgen", "baseline_trust_very_high"),
        ("Ich vermisse dich.", "lonely"),
        ("Du bist mir sehr wichtig.", "affection"),
        ("Ich freue mich auf dich.", "happy"),
        ("Du schaust geil aus.", "arousal"),
        ("Was stehst du zu Balu?", "pets"),
    ]

    print("Trust-Level:", state.get("trust", 9.8))
    print("=" * 50)

    for inp, _ in tests:
        resp = generate_response(inp, state)
        print(f"Input: {inp}")
        print(f"Response: {resp}")
        print("-" * 30)

if __name__ == "__main__":
    main()
