| 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 = ensure_db_initialized() |
|
|
| storage = Storage() |
|
|
| |
| ENABLE_REPL = False |
| ENABLE_UI = True |
| ENABLE_MESH = False |
| ENABLE_SYNC = False |
| ENABLE_TRANSPORT = False |
| ENABLE_CONTROL = False |
| ENABLE_CONTAINER = False |
| ENABLE_ETHICS = False |
|
|
| 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() |
|
|