kashif HF Staff commited on
Commit
0b0b6b0
·
verified ·
1 Parent(s): 14a336b

Upload folder using huggingface_hub

Browse files
Files changed (6) hide show
  1. Dockerfile +17 -17
  2. client.py +2 -2
  3. models.py +1 -1
  4. server/app.py +3 -6
  5. server/browsergym_environment.py +2 -2
  6. server/start.sh +1 -1
Dockerfile CHANGED
@@ -1,5 +1,8 @@
1
- ARG BASE_IMAGE=openenv-base:latest
2
- FROM ${BASE_IMAGE}
 
 
 
3
 
4
  # Install system dependencies for Playwright and browsers
5
  RUN apt-get update && apt-get install -y --no-install-recommends \
@@ -27,29 +30,22 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
27
  # Additional dependencies
28
  git \
29
  wget \
 
30
  && rm -rf /var/lib/apt/lists/*
31
 
32
- # Install BrowserGym and related packages
33
- COPY src/envs/browsergym_env/server/requirements.txt /tmp/browsergym_requirements.txt
34
- RUN pip install --no-cache-dir -r /tmp/browsergym_requirements.txt && \
35
- rm /tmp/browsergym_requirements.txt
 
36
 
37
  # Install Playwright browsers (Chromium by default)
38
  RUN playwright install chromium
39
 
40
  # Install MiniWoB++ tasks
41
- RUN pip install browsergym-miniwob
42
  RUN git clone --depth 1 https://github.com/Farama-Foundation/miniwob-plusplus.git /app/miniwob-plusplus
43
 
44
- # Copy OpenEnv core and browsergym_env code
45
- WORKDIR /app
46
- COPY src/core/ /app/src/core/
47
- COPY src/envs/browsergym_env/ /app/src/envs/browsergym_env/
48
- COPY src/envs/browsergym_env/README.md /app/README.md
49
- RUN chmod +x /app/src/envs/browsergym_env/server/start.sh
50
-
51
  # Set environment variables
52
- ENV PYTHONPATH=/app/src
53
  ENV PYTHONUNBUFFERED=1
54
  ENV BROWSERGYM_BENCHMARK=miniwob
55
  ENV BROWSERGYM_TASK_NAME="click-test"
@@ -57,9 +53,11 @@ ENV BROWSERGYM_HEADLESS=true
57
  ENV BROWSERGYM_VIEWPORT_WIDTH=1280
58
  ENV BROWSERGYM_VIEWPORT_HEIGHT=720
59
  ENV BROWSERGYM_TIMEOUT=10000
 
60
  ENV MINIWOB_HTML_DIR=/app/miniwob-plusplus/miniwob/html
61
  ENV MINIWOB_HTTP_PORT=8888
62
  ENV MINIWOB_URL=http://127.0.0.1:8888/miniwob/
 
63
 
64
  # For WebArena tasks, these should be set by the user when running the container:
65
  # ENV SHOPPING=
@@ -70,11 +68,13 @@ ENV MINIWOB_URL=http://127.0.0.1:8888/miniwob/
70
  # ENV WIKIPEDIA=
71
  # ENV HOMEPAGE=
72
 
 
73
  EXPOSE 8000
74
  EXPOSE 8888
75
 
 
76
  HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \
77
  CMD curl -f http://localhost:8000/health || exit 1
78
 
79
- ENV ENABLE_WEB_INTERFACE=true
80
- CMD ["/app/src/envs/browsergym_env/server/start.sh"]
 
1
+ # Use public Python base image for HuggingFace compatibility
2
+ FROM python:3.11-slim
3
+
4
+ # Set working directory
5
+ WORKDIR /app/env
6
 
7
  # Install system dependencies for Playwright and browsers
8
  RUN apt-get update && apt-get install -y --no-install-recommends \
 
30
  # Additional dependencies
31
  git \
32
  wget \
33
+ curl \
34
  && rm -rf /var/lib/apt/lists/*
35
 
36
+ # Copy environment files first (for better caching)
37
+ COPY . .
38
+
39
+ # Install Python dependencies using pip install -e . (from pyproject.toml)
40
+ RUN pip install --no-cache-dir -e .
41
 
42
  # Install Playwright browsers (Chromium by default)
43
  RUN playwright install chromium
44
 
45
  # Install MiniWoB++ tasks
 
46
  RUN git clone --depth 1 https://github.com/Farama-Foundation/miniwob-plusplus.git /app/miniwob-plusplus
47
 
 
 
 
 
 
 
 
48
  # Set environment variables
 
49
  ENV PYTHONUNBUFFERED=1
50
  ENV BROWSERGYM_BENCHMARK=miniwob
51
  ENV BROWSERGYM_TASK_NAME="click-test"
 
53
  ENV BROWSERGYM_VIEWPORT_WIDTH=1280
54
  ENV BROWSERGYM_VIEWPORT_HEIGHT=720
55
  ENV BROWSERGYM_TIMEOUT=10000
56
+ ENV BROWSERGYM_PORT=8000
57
  ENV MINIWOB_HTML_DIR=/app/miniwob-plusplus/miniwob/html
58
  ENV MINIWOB_HTTP_PORT=8888
59
  ENV MINIWOB_URL=http://127.0.0.1:8888/miniwob/
60
+ ENV ENABLE_WEB_INTERFACE=true
61
 
62
  # For WebArena tasks, these should be set by the user when running the container:
63
  # ENV SHOPPING=
 
68
  # ENV WIKIPEDIA=
69
  # ENV HOMEPAGE=
70
 
71
+ # Expose ports
72
  EXPOSE 8000
73
  EXPOSE 8888
74
 
75
+ # Health check
76
  HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \
77
  CMD curl -f http://localhost:8000/health || exit 1
78
 
79
+ # Run the server using the start script
80
+ CMD ["/app/env/server/start.sh"]
client.py CHANGED
@@ -2,8 +2,8 @@
2
 
3
  from typing import Any, Dict
4
 
5
- from core.http_env_client import HTTPEnvClient, StepResult
6
- from envs.browsergym_env.models import (
7
  BrowserGymAction,
8
  BrowserGymObservation,
9
  BrowserGymState,
 
2
 
3
  from typing import Any, Dict
4
 
5
+ from openenv_core.http_env_client import HTTPEnvClient, StepResult
6
+ from browsergym_env.models import (
7
  BrowserGymAction,
8
  BrowserGymObservation,
9
  BrowserGymState,
models.py CHANGED
@@ -8,7 +8,7 @@ and more under a single Gymnasium-compatible API.
8
  from dataclasses import dataclass
9
  from typing import List, Optional
10
 
11
- from core.env_server.types import Action, Observation, State
12
 
13
 
14
  @dataclass(kw_only=True)
 
8
  from dataclasses import dataclass
9
  from typing import List, Optional
10
 
11
+ from openenv_core.env_server.types import Action, Observation, State
12
 
13
 
14
  @dataclass(kw_only=True)
server/app.py CHANGED
@@ -2,12 +2,9 @@
2
 
3
  import os
4
 
5
- from core.env_server.http_server import create_app
6
- from envs.browsergym_env.models import (
7
- BrowserGymAction,
8
- BrowserGymObservation,
9
- )
10
- from envs.browsergym_env.server.browsergym_environment import BrowserGymEnvironment
11
 
12
  # Get configuration from environment variables
13
  benchmark = os.environ.get("BROWSERGYM_BENCHMARK", "miniwob")
 
2
 
3
  import os
4
 
5
+ from openenv_core.env_server.http_server import create_app
6
+ from browsergym_env.models import BrowserGymAction, BrowserGymObservation
7
+ from browsergym_env.server.browsergym_environment import BrowserGymEnvironment
 
 
 
8
 
9
  # Get configuration from environment variables
10
  benchmark = os.environ.get("BROWSERGYM_BENCHMARK", "miniwob")
server/browsergym_environment.py CHANGED
@@ -15,8 +15,8 @@ from uuid import uuid4
15
 
16
  import gymnasium as gym
17
 
18
- from core.env_server.interfaces import Environment
19
- from envs.browsergym_env.models import (
20
  BrowserGymAction,
21
  BrowserGymObservation,
22
  BrowserGymState,
 
15
 
16
  import gymnasium as gym
17
 
18
+ from openenv_core.env_server.interfaces import Environment
19
+ from browsergym_env.models import (
20
  BrowserGymAction,
21
  BrowserGymObservation,
22
  BrowserGymState,
server/start.sh CHANGED
@@ -25,5 +25,5 @@ cleanup() {
25
 
26
  trap cleanup EXIT INT TERM
27
 
28
- exec python -m uvicorn envs.browsergym_env.server.app:app --host 0.0.0.0 --port "${BROWSERGYM_PORT}"
29
 
 
25
 
26
  trap cleanup EXIT INT TERM
27
 
28
+ exec python -m uvicorn browsergym_env.server.app:app --host 0.0.0.0 --port "${BROWSERGYM_PORT}"
29