File size: 1,910 Bytes
0cb452d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f503df8
 
0cb452d
 
 
 
 
 
 
f503df8
0cb452d
 
f12bd27
 
 
 
 
 
0cb452d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""
Module: app.py
Purpose: FastAPI server exposing the TriageFlow environment via HTTP/WebSocket.
Part of: Medical Triage Assistant — OpenEnv Round 1
Author: Team Squirrel

Overview:
    Uses OpenEnv's create_app() to automatically create all required
    endpoints: /reset, /step, /state, /health, /ws, /docs, /web.
    This is the entry point when running the server in Docker or locally.

Dependencies:
    - openenv.core.env_server.http_server: create_app
    - models: TriageAction, TriageObservation
    - server.triage_flow_environment: TriageEnvironment

Usage:
    uvicorn server.app:app --host 0.0.0.0 --port 8000
"""

try:
    from openenv.core.env_server.http_server import create_app
except ImportError:
    from openenv.core.env_server import create_fastapi_app as create_app

try:
    from ..models import TriageAction, TriageObservation
    from .triage_flow_environment import TriageEnvironment
except (ImportError, ModuleNotFoundError):
    import sys, os
    sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
    from models import TriageAction, TriageObservation
    from server.triage_flow_environment import TriageEnvironment


from .ui import build_triage_ui

# Create the app with web interface
app = create_app(
    TriageEnvironment,
    TriageAction,
    TriageObservation,
    env_name="triage_flow",
    max_concurrent_envs=1,
    gradio_builder=build_triage_ui
)

from fastapi.responses import RedirectResponse
@app.get("/")
def redirect_to_web():
    return RedirectResponse(url="/web")



def main(host: str = "0.0.0.0", port: int = 8000):
    """
    Entry point for direct execution via uv run or python -m.

    Args:
        host: Host address to bind to (default: "0.0.0.0")
        port: Port number to listen on (default: 8000)
    """
    import uvicorn
    uvicorn.run(app, host=host, port=port)


if __name__ == "__main__":
    main()