Spaces:
Configuration error
Configuration error
| from fastapi import FastAPI, HTTPException | |
| from fastapi.responses import JSONResponse | |
| from pydantic import BaseModel | |
| from typing import Optional | |
| import uvicorn | |
| from server.schemas import Action, StepResult, ResetResult, StateResult | |
| from server.env import DBMigrationEnv | |
| app = FastAPI( | |
| title="DB Schema Migration OpenEnv", | |
| description="RL environment for database schema migration tasks", | |
| version="1.0.0", | |
| ) | |
| # Single global env instance (stateful per session) | |
| env = DBMigrationEnv() | |
| class ResetRequest(BaseModel): | |
| task: Optional[str] = "easy" | |
| def root(): | |
| return {"status": "ok", "env": "db-schema-migration", "tasks": ["easy", "medium", "hard"]} | |
| def health(): | |
| return {"status": "ok"} | |
| def reset(request: ResetRequest = ResetRequest()): | |
| task = request.task if request.task else "easy" | |
| if task not in ["easy", "medium", "hard"]: | |
| raise HTTPException(status_code=400, detail=f"Unknown task '{task}'. Choose: easy, medium, hard") | |
| result = env.reset(task_name=task) | |
| return result | |
| def step(action: Action): | |
| result = env.step(action) | |
| return result | |
| def state(): | |
| return env.state() | |
| def list_tasks(): | |
| from server.env import TASKS | |
| return { | |
| name: { | |
| "description": task["description"], | |
| "requirements": task["target_requirements"], | |
| "max_steps": task["max_steps"], | |
| "hints": task.get("hints", []), | |
| } | |
| for name, task in TASKS.items() | |
| } | |
| if __name__ == "__main__": | |
| uvicorn.run("server.main:app", host="0.0.0.0", port=7860, reload=False) | |