Spaces:
Sleeping
Sleeping
Download server/app.py from luciferai-devil/code-debug-env: direct link, hf CLI and curl.
- Browser
- Download file 2.59 kB
-
https://huggingface.co/spaces/luciferai-devil/code-debug-env/resolve/f60ce5ae8a0ada640accc3fe444e8a94eae1f2ca/server/app.py
- Command line
-
hf download hf://spaces/luciferai-devil/code-debug-env@f60ce5ae8a0ada640accc3fe444e8a94eae1f2ca/server/app.py
-
curl -L -o app.py https://huggingface.co/spaces/luciferai-devil/code-debug-env/resolve/f60ce5ae8a0ada640accc3fe444e8a94eae1f2ca/server/app.py
2.59 kB
| # server/app.py | |
| from fastapi import FastAPI, HTTPException | |
| from openenv.core.env_server import create_fastapi_app | |
| from ..models import Action, Observation, TaskInfo | |
| from .environment import CodeDebugEnvironment | |
| from .tasks import TASK_REGISTRY | |
| from .grader import grade | |
| # Core OpenEnv app (provides /reset, /step, /state, /ws, /health) | |
| app = create_fastapi_app(CodeDebugEnvironment, Action, Observation) | |
| # ββ Additional required hackathon endpoints ββββββββββββββββββββββββββββ | |
| def home(): | |
| return { | |
| "message": "Welcome to the OpenEnv Code Debug Environment!", | |
| "version": "1.0.0", | |
| "endpoints": ["/health", "/tasks", "/reset", "/step", "/grader", "/baseline"], | |
| "docs": "https://huggingface.co/spaces/luciferai-devil/code-debug-env" | |
| } | |
| def list_tasks() -> list[TaskInfo]: | |
| """Return all tasks with their action schema.""" | |
| return [ | |
| TaskInfo( | |
| task_id=tid, | |
| difficulty=task["difficulty"], | |
| description=task["description"], | |
| action_schema=Action.model_json_schema(), | |
| ) | |
| for tid, task in TASK_REGISTRY.items() | |
| ] | |
| def get_grader_score(task_id: str, submitted_code: str) -> dict: | |
| """ | |
| Grade a submission directly (for testing / evaluation). | |
| Returns: { score: float, passed: int, total: int, test_results: list } | |
| """ | |
| if task_id not in TASK_REGISTRY: | |
| raise HTTPException(status_code=404, detail=f"Unknown task_id: {task_id}") | |
| task = TASK_REGISTRY[task_id] | |
| result = grade(submitted_code, task_id, task["test_suite"]) | |
| return { | |
| "task_id": task_id, | |
| "score": result["score"], | |
| "passed": result["passed"], | |
| "total": result["total"], | |
| "test_results": [r.model_dump() for r in result["test_results"]], | |
| } | |
| def run_baseline() -> dict: | |
| """ | |
| Run the baseline agent on all tasks and return scores. | |
| This endpoint triggers the baseline inference script. | |
| """ | |
| import subprocess, sys, json | |
| try: | |
| result = subprocess.run( | |
| [sys.executable, "baseline/run_baseline.py", "--output", "json"], | |
| capture_output=True, text=True, timeout=120, | |
| ) | |
| return json.loads(result.stdout) | |
| except Exception as e: | |
| raise HTTPException(status_code=500, detail=str(e)) | |
| def main(): | |
| """Entry point for the server.""" | |
| import uvicorn | |
| uvicorn.run(app, host="0.0.0.0", port=8000) | |
| if __name__ == "__main__": | |
| main() | |