File size: 4,459 Bytes
9d7a35f 483f682 94e6ed4 9d7a35f 94e6ed4 b73eed5 5eedbdc b73eed5 483f682 8ab8ff3 483f682 b73eed5 c5085aa b73eed5 c5085aa b73eed5 c5085aa b73eed5 c5085aa b73eed5 483f682 c5085aa 483f682 c5085aa 483f682 c5085aa 483f682 c5085aa 483f682 b73eed5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
import sys
import os
import threading
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from agents.init import ensure_db_initialized
from tools.storage import Storage
# Проверка инициализации (вернёт config, если всё ОК)
config = ensure_db_initialized()
storage = Storage()
# ⚙️ Включение/отключение компонентов
ENABLE_REPL = False # 🧠 repl.py
ENABLE_UI = True # 📓 web_ui.py (FastAPI)
ENABLE_MESH = False # 🌐 agent_mesh_listener.py
ENABLE_SYNC = False # 🔄 peer_sync.py
ENABLE_TRANSPORT = False # 📡 transporter.py
ENABLE_CONTROL = False # 🧭 agent_controller.py
ENABLE_CONTAINER = False # 🧱 container_agent.py
ENABLE_ETHICS = False # 🧠 ethics_guard.py
def start_all():
threads = []
if ENABLE_REPL:
if not storage.is_process_alive("REPL", max_delay=180):
def repl():
from agents.repl import start_repl
start_repl()
threads.append(threading.Thread(target=repl, name="REPL"))
else:
print("REPL уже работает по данным heartbeat.")
if ENABLE_UI:
if not storage.is_process_alive("NotebookUI", max_delay=180):
def ui():
from agents.web_ui import start_notebook
start_notebook()
threads.append(threading.Thread(target=ui, name="NotebookUI"))
else:
print("NotebookUI уже работает по данным heartbeat.")
if ENABLE_MESH:
if not storage.is_process_alive("MeshListener", max_delay=180):
def mesh():
from agents.agent_mesh_listener import start_listener
start_listener()
threads.append(threading.Thread(target=mesh, name="MeshListener"))
else:
print("MeshListener уже работает по данным heartbeat.")
if ENABLE_SYNC:
if not storage.is_process_alive("PeerSync", max_delay=180):
def sync():
from agents.peer_sync import start_sync
start_sync()
threads.append(threading.Thread(target=sync, name="PeerSync"))
else:
print("PeerSync уже работает по данным heartbeat.")
if ENABLE_TRANSPORT:
if not storage.is_process_alive("Transporter", max_delay=180):
def transport():
from agents.transporter import start_transporter
start_transporter()
threads.append(threading.Thread(target=transport, name="Transporter"))
else:
print("Transporter уже работает по данным heartbeat.")
if ENABLE_CONTROL:
if not storage.is_process_alive("Controller", max_delay=180):
def control():
from agents.agent_controller import start_controller
start_controller()
threads.append(threading.Thread(target=control, name="Controller"))
else:
print("Controller уже работает по данным heartbeat.")
if ENABLE_CONTAINER:
if not storage.is_process_alive("ContainerAgent", max_delay=180):
def container():
from agents.container_agent import start_container
start_container()
threads.append(threading.Thread(target=container, name="ContainerAgent"))
else:
print("ContainerAgent уже работает по данным heartbeat.")
if ENABLE_ETHICS:
if not storage.is_process_alive("EthicsGuard", max_delay=180):
def ethics():
from agents.ethics_guard import start_ethics_guard
start_ethics_guard()
threads.append(threading.Thread(target=ethics, name="EthicsGuard"))
else:
print("EthicsGuard уже работает по данным heartbeat.")
# Запуск потоков
for thread in threads:
try:
thread.start()
print(f"[✔] Поток {thread.name} запущен.")
except Exception as e:
print(f"[⚠️] Ошибка запуска потока {thread.name}: {e}")
for thread in threads:
thread.join()
if __name__ == "__main__":
print("[*] Инициализация завершена. Запуск потоков...")
start_all()
|