65 lines
1.9 KiB
Python
Executable File
65 lines
1.9 KiB
Python
Executable File
#!/usr/bin/env python3
|
||
"""
|
||
OrchestratorAll – führt alle natiris Core-Module nacheinander aus
|
||
speichert Gesamtoutput in natiris_full_state.json
|
||
"""
|
||
|
||
import json
|
||
import subprocess
|
||
import os
|
||
from datetime import datetime, timezone
|
||
|
||
CORE_DIR = os.path.expanduser("~/natiris/core")
|
||
|
||
MODULES = [
|
||
("EmotionEngine", "emotion_delta.json", "Emotion"),
|
||
("MaturityEngine", "maturity_output.json", "Maturity"),
|
||
("BondEngine", "bond_output.json", "Bond"),
|
||
("InnerLifeWorker", "inner_life_log.json", "InnerLife"),
|
||
("ExpressionEngine", "expression_bias.json", "Expression"),
|
||
]
|
||
|
||
def run_module(name):
|
||
cmd = ["python3", f"{CORE_DIR}/{name}.py"]
|
||
result = subprocess.run(cmd, capture_output=True, text=True)
|
||
return result.returncode == 0, result.stdout, result.stderr
|
||
|
||
def main():
|
||
print("Natiris Core – Full Orchestrator")
|
||
print("=" * 40)
|
||
|
||
full_state = {
|
||
"timestamp": datetime.now(timezone.utc).isoformat(),
|
||
"modules": {}
|
||
}
|
||
|
||
for engine_name, output_file, alias in MODULES:
|
||
ok, out, err = run_module(engine_name)
|
||
if ok:
|
||
print(f"✅ {engine_name}: OK")
|
||
# Output laden
|
||
output_path = f"{CORE_DIR}/{output_file}"
|
||
if os.path.exists(output_path):
|
||
with open(output_path) as f:
|
||
full_state["modules"][alias] = json.load(f)
|
||
else:
|
||
print(f"❌ {engine_name}: FAILED\n{err}")
|
||
|
||
full_state["modules"]["core_state"] = load_json_file(f"{CORE_DIR}/core_state.json")
|
||
full_path = f"{CORE_DIR}/natiris_full_state.json"
|
||
with open(full_path, "w") as f:
|
||
json.dump(full_state, f, indent=2)
|
||
|
||
print("\n— Full State —")
|
||
print(json.dumps(full_state, indent=2))
|
||
|
||
def load_json_file(path):
|
||
try:
|
||
with open(path) as f:
|
||
return json.load(f)
|
||
except Exception:
|
||
return {}
|
||
|
||
if __name__ == "__main__":
|
||
main()
|