ten / app.py
3v324v23's picture
Переключение на dev-режим Playground UI для расширенных элементов управления
3da93f6
raw
history blame
2.53 kB
#!/usr/bin/env python3
import os
import subprocess
import sys
import time
from pathlib import Path
import signal
import threading
def main():
processes = []
try:
# Пути к исполняемым файлам
api_binary = Path("/app/server/bin/api")
playground_dir = Path("/app/playground")
# Проверяем существование файлов
if not api_binary.exists():
print(f"ERROR: API binary not found at {api_binary}", file=sys.stderr)
return 1
if not playground_dir.exists():
print(f"ERROR: Playground directory not found at {playground_dir}", file=sys.stderr)
return 1
# Запускаем API сервер
print("Starting TEN-Agent API server on port 8080...")
api_process = subprocess.Popen([str(api_binary)])
processes.append(api_process)
# Даем API серверу время на запуск
time.sleep(3)
# Запускаем Playground UI в режиме dev на порту 7860 (порт Hugging Face)
print("Starting Playground UI in development mode on port 7860...")
os.environ["PORT"] = "7860"
os.environ["AGENT_SERVER_URL"] = "http://localhost:8080"
os.environ["NEXT_PUBLIC_EDIT_GRAPH_MODE"] = "true" # Включаем расширенный режим редактирования
playground_process = subprocess.Popen(
["pnpm", "dev"],
cwd=str(playground_dir),
env=os.environ
)
processes.append(playground_process)
# Ожидаем завершения процессов
for proc in processes:
proc.wait()
except KeyboardInterrupt:
print("Shutting down...")
except Exception as e:
print(f"Error: {e}", file=sys.stderr)
finally:
# Завершение процессов
for proc in processes:
if proc and proc.poll() is None:
proc.terminate()
try:
proc.wait(timeout=5)
except subprocess.TimeoutExpired:
proc.kill()
return 0
if __name__ == "__main__":
# Корректная обработка сигналов
signal.signal(signal.SIGINT, lambda sig, frame: sys.exit(0))
signal.signal(signal.SIGTERM, lambda sig, frame: sys.exit(0))
sys.exit(main())