Spaces:
Running
Running
| #!/usr/bin/env python3 | |
| """ | |
| FastAPI application for Git Environment. | |
| This module creates an HTTP server for the Git environment that connects | |
| to a shared external Gitea service for fast, isolated task resets. | |
| Environment variables: | |
| GITEA_URL: URL of shared Gitea service (default: http://localhost:3000) | |
| GITEA_USERNAME: Gitea username (default: openenv) | |
| GITEA_PASSWORD: Gitea password (default: openenv) | |
| WORKSPACE_DIR: Workspace directory (optional, default: /workspace) | |
| Usage: | |
| # Development (with auto-reload): | |
| uvicorn envs.git_env.server.app:app --reload --host 0.0.0.0 --port 8000 | |
| # Production: | |
| uvicorn envs.git_env.server.app:app --host 0.0.0.0 --port 8000 --workers 4 | |
| # With custom Gitea: | |
| GITEA_URL=http://my-gitea:3000 uvicorn envs.git_env.server.app:app --host 0.0.0.0 --port 8000 | |
| """ | |
| import os | |
| from openenv.core.env_server import create_app | |
| from ..models import GitAction, GitObservation | |
| from .git_task_environment import GitTaskEnvironment | |
| # Read configuration from environment variables | |
| gitea_url = os.getenv("GITEA_URL", "http://localhost:3000") | |
| gitea_username = os.getenv("GITEA_USERNAME", "openenv") | |
| gitea_password = os.getenv("GITEA_PASSWORD", "openenv") | |
| workspace_dir = os.getenv("WORKSPACE_DIR", "/workspace") | |
| # Factory function to create GitTaskEnvironment instances | |
| def create_git_environment(): | |
| """Factory function that creates GitTaskEnvironment with config.""" | |
| return GitTaskEnvironment( | |
| gitea_url=gitea_url, | |
| username=gitea_username, | |
| password=gitea_password, | |
| workspace_dir=workspace_dir, | |
| ) | |
| # Create the app with web interface and README integration | |
| # Pass the factory function instead of an instance for WebSocket session support | |
| app = create_app(create_git_environment, GitAction, GitObservation, env_name="git_env") | |
| if __name__ == "__main__": | |
| import uvicorn | |
| uvicorn.run(app, host="0.0.0.0", port=8000) | |