50 lines
1.4 KiB
Python
Executable File
50 lines
1.4 KiB
Python
Executable File
#!/usr/bin/env python3
|
||
"""
|
||
OrchestratorCore – führt EmotionEngine, MaturityEngine, BondEngine aus
|
||
Unionisiert Output in natiris_output.json
|
||
"""
|
||
|
||
import json
|
||
import subprocess
|
||
import os
|
||
|
||
CORE_DIR = os.path.expanduser("~/natiris/core")
|
||
|
||
def run(engine_name):
|
||
cmd = ["python3", f"{CORE_DIR}/{engine_name}.py"]
|
||
result = subprocess.run(cmd, capture_output=True, text=True)
|
||
return result.returncode == 0, result.stdout, result.stderr
|
||
|
||
def combine_outputs():
|
||
out = {}
|
||
for name in ["EmotionEngine", "MaturityEngine", "BondEngine"]:
|
||
base = name.split("Engine")[0]
|
||
path = f"{CORE_DIR}/{base}_output.json"
|
||
if os.path.exists(path):
|
||
with open(path, "r") as f:
|
||
out[base] = json.load(f)
|
||
else:
|
||
out[base] = None
|
||
out_path = f"{CORE_DIR}/natiris_output.json"
|
||
with open(out_path, "w") as f:
|
||
json.dump(out, f, indent=2)
|
||
return out
|
||
|
||
def main():
|
||
print("Natiris Core – Phase 2: Engine-Orchestrierung")
|
||
print("=" * 40)
|
||
|
||
for name in ["EmotionEngine", "MaturityEngine", "BondEngine"]:
|
||
ok, out, err = run(name)
|
||
if ok:
|
||
print(f"✅ {name}: OK")
|
||
else:
|
||
print(f"❌ {name}: FAILED\n{err}")
|
||
|
||
combined = combine_outputs()
|
||
print("\n— Combined Output —")
|
||
print(json.dumps(combined, indent=2))
|
||
|
||
if __name__ == "__main__":
|
||
main()
|