File size: 2,525 Bytes
58cec34
 
2839144
 
d7f0eff
 
3c7d3b0
9f18430
58cec34
9f18430
db0df50
9f18430
db0df50
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3da93f6
 
db0df50
 
3da93f6
 
db0df50
3da93f6
db0df50
 
 
 
 
 
 
 
 
2839144
d7f0eff
db0df50
 
2839144
9f18430
db0df50
 
 
 
 
 
 
d7f0eff
 
 
 
db0df50
 
 
 
d7f0eff
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
#!/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())