Initial commit: Natiris AI Agent Orchestration System

This commit is contained in:
Arch Agent
2026-03-01 14:28:26 +01:00
commit 3b5f6ba83d
3127 changed files with 86184 additions and 0 deletions

70
core/EmotionEngine.py Executable file
View File

@@ -0,0 +1,70 @@
#!/usr/bin/env python3
"""
EmotionEngine berechnet Emotionen basierend auf core_state, user_state, events
Input: core_state.json, user_state.json, events.json
Output: emotion_delta.json
"""
import json
import os
PATHS = {
"core_state": os.path.expanduser("~/natiris/core/core_state.json"),
"user_state": lambda u: os.path.expanduser(f"~/natiris/core/users/{u}.json"),
"events": os.path.expanduser("~/natiris/memory/short/history.json"),
"output": os.path.expanduser("~/natiris/core/emotion_delta.json"),
}
def clamp(val, lo=0.0, hi=10.0):
return max(lo, min(hi, float(val)))
def compute_emotion_delta(core, user, events):
mood = core.get("mood", 5.0)
loneliness = core.get("loneliness", 2.0)
anxiety = core.get("anxiety", 1.0)
sentiment = user.get("sentiment", "neutral")
interaction_count = user.get("interaction_count", 0)
msg_count = len(events)
positive_msgs = sum(1 for e in events if e.get("sentiment") == "positive")
mood_delta = clamp((positive_msgs - msg_count * 0.2) * 0.5 + (0.3 if sentiment == "positive" else -0.3))
loneliness_delta = clamp(-(interaction_count * 0.03) + (0.2 if loneliness > 7 else -0.1))
anxiety_delta = clamp(loneliness * 0.05 - mood * 0.02 + (0.2 if msg_count == 0 else -0.1))
jealousy_delta = clamp(-0.1 if core.get("bonded_to") is None else 0.0)
return {
"mood_delta": mood_delta,
"loneliness_delta": loneliness_delta,
"anxiety_delta": anxiety_delta,
"jealousy_delta": jealousy_delta
}
def main():
with open(PATHS["core_state"]) as f:
core = json.load(f)
# user_state laden (default user)
user_path = PATHS["user_state"]("user1")
if os.path.exists(user_path):
with open(user_path) as f:
user = json.load(f)
else:
user = {"interaction_count": 0, "sentiment": "neutral"}
with open(PATHS["events"]) as f:
events = json.load(f)
delta = compute_emotion_delta(core, user, events)
with open(PATHS["output"], "w") as f:
json.dump(delta, f, indent=2)
print(json.dumps(delta, indent=2))
if __name__ == "__main__":
main()