Initial commit: Natiris AI Agent Orchestration System
This commit is contained in:
99
bridges/ComfyBridge_v1_backup.py
Executable file
99
bridges/ComfyBridge_v1_backup.py
Executable 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()
|
||||
Reference in New Issue
Block a user