AI Dashboard Developer
Add module entrypoint guard
e65a88f
Raw History Blame Contribute Delete
1.43 kB
from __future__ import annotations
from typing import Optional
import uvicorn
from fastapi import Body, FastAPI
from pydantic import BaseModel
from env.environment import CodeReviewOpenEnv
from env.models import Action, Observation, TaskName
app = FastAPI(
title="Autonomous Code Review & Merge Decision Environment",
version="1.0.0",
description="A deterministic OpenEnv-compatible environment for AI-driven pull request review workflows.",
)
env = CodeReviewOpenEnv()
class ResetRequest(BaseModel):
task: Optional[TaskName] = None
class ResetResponse(BaseModel):
observation: Observation
class StepResponse(BaseModel):
observation: Observation
reward: float
done: bool
info: dict
@app.post("/reset", response_model=ResetResponse)
def reset_environment(request: Optional[ResetRequest] = Body(default=None)) -> ResetResponse:
observation = env.reset(task=request.task if request else None)
return ResetResponse(observation=observation)
@app.post("/step", response_model=StepResponse)
def step_environment(action: Action) -> StepResponse:
observation, reward, done, info = env.step(action)
return StepResponse(observation=observation, reward=reward, done=done, info=info)
@app.get("/state")
def get_state() -> dict:
return env.state()
def main() -> None:
uvicorn.run("server.app:app", host="0.0.0.0", port=8000)
if __name__ == "__main__":
main()