from fastapi import FastAPI, HTTPException from .config import ServerSettings from .grid import GridManager from .models import ActionPayload, GridDescriptor, GridInitRequest settings = ServerSettings() manager = GridManager(settings) app = FastAPI( title="Clickthrough", description="Grid-aware surface that lets an agent plan clicks, drags, and typing on a fake screenshot", version="0.1.0", ) @app.get("/health") def health_check() -> dict[str, str]: return {"status": "ok", "grid_count": str(manager.grid_count)} @app.post("/grid/init", response_model=GridDescriptor) def init_grid(request: GridInitRequest) -> GridDescriptor: grid = manager.create_grid(request) return grid.describe() @app.post("/grid/action") def apply_action(payload: ActionPayload): try: grid = manager.get_grid(payload.grid_id) except KeyError as exc: raise HTTPException(status_code=404, detail=str(exc)) from exc return grid.apply_action(payload)