| # agents/start_repl.py | |
| import sys | |
| import os | |
| sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) | |
| import threading | |
| from agents.init import ensure_db_initialized | |
| # Проверка инициализации (вернёт config, если всё ОК) | |
| config = ensure_db_initialized() | |
| # ⚙️ Включение/отключение компонентов | |
| # True | False | |
| ENABLE_REPL = False | |
| ENABLE_UI = True | |
| ENABLE_MESH = False | |
| ENABLE_SYNC = False | |
| def start_all(): | |
| """ | |
| Стартует все ключевые компоненты агента в отдельных потоках. | |
| """ | |
| threads = [] | |
| if ENABLE_REPL: | |
| def repl(): | |
| from agents.repl import start_repl | |
| start_repl() | |
| threads.append(threading.Thread(target=repl, name="REPL")) | |
| if ENABLE_UI: | |
| def ui(): | |
| from agents.notebook import start_notebook | |
| start_notebook() | |
| threads.append(threading.Thread(target=ui, name="NotebookUI")) | |
| if ENABLE_MESH: | |
| def mesh(): | |
| from agents.agent_mesh_listener import start_listener | |
| start_listener() | |
| threads.append(threading.Thread(target=mesh, name="MeshListener")) | |
| if ENABLE_SYNC: | |
| def sync(): | |
| from agents.peer_sync import start_sync | |
| start_sync() | |
| threads.append(threading.Thread(target=sync, name="PeerSync")) | |
| # Запуск потоков | |
| 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() | |