File size: 3,895 Bytes
58cec34
 
2839144
 
d7f0eff
 
58cec34
d7f0eff
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2839144
d7f0eff
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2839144
d7f0eff
 
 
 
 
 
 
 
 
 
 
2839144
d7f0eff
2839144
d7f0eff
2839144
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/usr/bin/env python3
import os
import subprocess
import sys
import time
from pathlib import Path

def main():
    # Запустить TEN-Agent
    server_process = None
    try:
        # Путь к исполняемому файлу API сервера
        api_binary = Path("/app/server/bin/api")
        
        # Проверяем существование файла
        if not api_binary.exists():
            print(f"ERROR: API binary not found at {api_binary}", file=sys.stderr)
            return 1
        
        # Запускаем API сервер
        print("Starting TEN-Agent server...")
        server_process = subprocess.Popen([str(api_binary)])
        
        # Запускаем простой HTTP сервер для отображения информации
        from http.server import HTTPServer, SimpleHTTPRequestHandler
        
        class CustomHandler(SimpleHTTPRequestHandler):
            def do_GET(self):
                if self.path == '/':
                    self.send_response(200)
                    self.send_header('Content-type', 'text/html')
                    self.end_headers()
                    
                    html_content = """
                    <!DOCTYPE html>
                    <html>
                    <head>
                        <title>TEN Agent - Hugging Face Space</title>
                        <style>
                            body { font-family: Arial, sans-serif; line-height: 1.6; max-width: 800px; margin: 0 auto; padding: 20px; }
                            h1 { color: #333; }
                            .info { background: #f8f9fa; border-left: 4px solid #28a745; padding: 15px; margin-bottom: 20px; }
                            .endpoint { background: #e9ecef; padding: 10px; border-radius: 5px; font-family: monospace; }
                        </style>
                    </head>
                    <body>
                        <h1>TEN Agent запущен успешно!</h1>
                        <div class="info">
                            <p>TEN Agent API сервер работает на порту 8080.</p>
                        </div>
                        <h2>API эндпоинты:</h2>
                        <ul>
                            <li><span class="endpoint">GET /health</span> - проверка состояния сервера</li>
                            <li><span class="endpoint">GET /list</span> - список запущенных агентов</li>
                            <li><span class="endpoint">GET /graphs</span> - доступные графы</li>
                        </ul>
                        <p>См. <a href="https://github.com/TEN-framework/TEN-Agent" target="_blank">документацию TEN Agent</a> для получения дополнительной информации.</p>
                    </body>
                    </html>
                    """
                    
                    self.wfile.write(html_content.encode())
                else:
                    self.send_response(404)
                    self.send_header('Content-type', 'text/plain')
                    self.end_headers()
                    self.wfile.write(b'Not Found')
        
        # Запускаем HTTP сервер
        port = 7860  # Hugging Face Space обычно ожидает сервер на порту 7860
        print(f"Starting HTTP server on port {port}...")
        httpd = HTTPServer(('0.0.0.0', port), CustomHandler)
        httpd.serve_forever()
    
    except KeyboardInterrupt:
        print("Shutting down...")
    finally:
        # Завершаем API сервер при выходе
        if server_process:
            server_process.terminate()
            server_process.wait()
    
    return 0

if __name__ == "__main__":
    sys.exit(main())