"""
Neural network context features — showing how EverOS expands
the persona engine's perception from 8D to 12D.

The 4 additional relationship dimensions from EverOS allow the
neural network to produce different behavioral signals depending
on the history between user and persona.

Full source: https://github.com/kellyvv/OpenHer/blob/main/engine/genome/genome_engine.py
"""

# ══════════════════════════════════════════════
# 5D Drive System (internal motivation)
# ══════════════════════════════════════════════

DRIVES = ["connection", "novelty", "expression", "safety", "play"]

# ══════════════════════════════════════════════
# 8D Behavioral Signals (neural network output)
# ══════════════════════════════════════════════

SIGNALS = [
    "directness",  # 0=indirect hints → 1=straight talk
    "vulnerability",  # 0=guarded → 1=emotionally open
    "playfulness",  # 0=serious → 1=playful/teasing
    "initiative",  # 0=reactive → 1=proactive leading
    "depth",  # 0=small talk → 1=deep conversation
    "warmth",  # 0=cold/distant → 1=warm/caring
    "defiance",  # 0=compliant → 1=rebellious/stubborn
    "curiosity",  # 0=indifferent → 1=intensely curious
]

# ══════════════════════════════════════════════
# 12D Context Features (neural network input)
# ══════════════════════════════════════════════

CONTEXT_FEATURES = [
    # ── 8D from Critic LLM (per-turn perception) ──
    "user_emotion",  # -1=negative → 1=positive
    "topic_intimacy",  # 0=professional → 1=intimate
    "time_of_day",  # 0=morning → 1=late night
    "conversation_depth",  # 0=just started → 1=deep conversation
    "user_engagement",  # 0=dismissive → 1=invested
    "conflict_level",  # 0=harmonious → 1=conflict
    "novelty_level",  # 0=routine topic → 1=novel topic
    "user_vulnerability",  # 0=guarded → 1=open
    # ── 4D from EverOS (cross-session relationship) ──
    "relationship_depth",  # 0=stranger → 1=old friend
    "emotional_valence",  # -1=negative history → 1=positive history
    "trust_level",  # 0=no trust → 1=deep trust
    "pending_foresight",  # 0=nothing pending → 1=unresolved concern
]

# Neural network dimensions
N_DRIVES = len(DRIVES)  # 5
N_CONTEXT = len(CONTEXT_FEATURES)  # 12 (8 + 4 from EverOS)
N_SIGNALS = len(SIGNALS)  # 8
RECURRENT_SIZE = 8  # Internal "mood" state
INPUT_SIZE = N_DRIVES + N_CONTEXT + RECURRENT_SIZE  # 5 + 12 + 8 = 25
HIDDEN_SIZE = 24

# Architecture: 25D input → 24D hidden (tanh) → 8D output (sigmoid)
# The 4 EverOS dimensions mean the same neural network produces
# DIFFERENT behavioral signals for strangers vs. old friends,
# even with identical conversation context.
