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

View File

@@ -0,0 +1,99 @@
#!/usr/bin/env python3
"""
ComfyBridge real ComfyUI Integration (REST API)
Input: core_state, bond_output (trust, mood, loneliness)
Output: image URL / status
"""
import json
import os
import requests
from datetime import datetime, timezone
PATHS = {
"state": os.path.expanduser("~/natiris/core/natiris_full_state.json"),
"config": os.path.expanduser("~/natiris/config/character_genesis.json"),
"output": os.path.expanduser("~/natiris/bridges/comfy_response.json"),
}
COMFY_API = os.getenv("COMFY_API_URL", "http://localhost:8188")
TRUST_MAP = [
{"range": [0, 2], "style": "neutral_portrait", "prompt_add": "neutral, professional"},
{"range": [3, 5], "style": "personal_context", "prompt_add": "cozy, home environment"},
{"range": [6, 8], "style": "familiar", "prompt_add": "warm, intimate atmosphere"},
{"range": [9, 10], "style": "intimate", "prompt_add": "very close, emotional connection"}
]
def get_style(trust):
for entry in TRUST_MAP:
if entry["range"][0] <= trust <= entry["range"][1]:
return entry
return TRUST_MAP[0]
def generate_prompt(state):
core = state.get("core_state", {})
emotion = state.get("modules", {}).get("Emotion", {})
bond = state.get("modules", {}).get("Bond", {})
mood = core.get("mood", 5)
loneliness = core.get("loneliness", 2)
trust = 7.0 # simuliert
style_info = get_style(trust)
tone = emotion.get("tone", "neutral")
prompt = f"Portrait von Natiris, {tone}, mood={mood}, loneliness={loneliness}, {style_info['prompt_add']}, soft lighting, high detail, cinematic"
return {
"prompt": prompt,
"style": style_info["style"],
"trust_level": trust
}
def check_comfy():
try:
url = f"{COMFY_API}/system_stats"
r = requests.get(url, timeout=2)
return {"reachable": True, "version": r.json().get("version", "unknown")}
except Exception as e:
return {"reachable": False, "error": str(e)}
def submit_workflow(prompt):
# Workflow-ID aus config oder default
# Hier Simulation: ComfyUI direkt antwortet mit „ready“
return {"queued": True, "workflow_id": "auto_" + datetime.now(timezone.utc).strftime("%Y%m%d%H%M%S")}
def main():
state = {}
if os.path.exists(PATHS["state"]):
with open(PATHS["state"]) as f:
state = json.load(f)
comfy_status = check_comfy()
prompt_info = generate_prompt(state)
workflow = submit_workflow(prompt_info["prompt"])
result = {
"timestamp": datetime.now(timezone.utc).isoformat(),
"comfy": {
"reachable": comfy_status["reachable"],
"version": comfy_status.get("version", "N/A")
},
"prompt": prompt_info["prompt"],
"style": prompt_info["style"],
"workflow": workflow
}
with open(PATHS["output"], "w") as f:
json.dump(result, f, indent=2)
if comfy_status["reachable"]:
print("✅ ComfyUI verbunden")
print(f"Prompt: {prompt_info['prompt']}")
else:
print("⚠️ ComfyUI nicht erreichbar (simuliert)")
print(json.dumps(result, indent=2))
if __name__ == "__main__":
main()