diff --git a/rnd/autogpt_server/autogpt_server/server/new_rest_app.py b/rnd/autogpt_server/autogpt_server/server/new_rest_app.py index d00aa048b8..542f1936fd 100644 --- a/rnd/autogpt_server/autogpt_server/server/new_rest_app.py +++ b/rnd/autogpt_server/autogpt_server/server/new_rest_app.py @@ -1,21 +1,76 @@ -from fastapi import FastAPI, Request -from fastapi.responses import JSONResponse -from autogpt_server.server.utils import get_user_id +import contextlib -from autogpt_server.server.routes import root_router, agents_router, blocks_router +import fastapi +import fastapi.responses +import fastapi.middleware.cors -app = FastAPI() +import autogpt_libs.auth.middleware +import autogpt_server.data.block +import autogpt_server.data.db +import autogpt_server.data.graph +import autogpt_server.data.user +import autogpt_server.server.routes +import autogpt_server.server.utils +import autogpt_server.util.settings -app.include_router(root_router) -app.include_router(agents_router) -app.include_router(blocks_router) +from autogpt_server.data import user as user_db -def handle_internal_http_error(request: Request, exc: Exception): - return JSONResponse( +settings = autogpt_server.util.settings.Settings() + +use_redis = True + + +@contextlib.asynccontextmanager +async def app_lifespan(app: fastapi.FastAPI): + await autogpt_server.data.db.connect() + await autogpt_server.data.block.initialize_blocks() + + if await user_db.create_default_user(settings.config.enable_auth): + await autogpt_server.data.graph.import_packaged_templates() + yield + + await autogpt_server.data.db.disconnect() + + +app = fastapi.FastAPI( + title="AutoGPT Agent Server", + description=( + "This server is used to execute agents that are created by the " + "AutoGPT system." + ), + summary="AutoGPT Agent Server", + version="0.1", + lifespan=app_lifespan, +) + +api_router = fastapi.APIRouter(prefix="/api/v1") +api_router.dependencies.append( + fastapi.Depends(autogpt_libs.auth.middleware.auth_middleware) +) +app.include_router(api_router) + +api_router.include_router(autogpt_server.server.routes.root_router) +api_router.include_router(autogpt_server.server.routes.agents_router) +api_router.include_router(autogpt_server.server.routes.blocks_router) +api_router.include_router( + autogpt_server.server.routes.integrations_router, prefix="/integrations" +) + + +def handle_internal_http_error(request: fastapi.Request, exc: Exception): + return fastapi.responses.JSONResponse( status_code=500, content={"message": str(exc)}, ) + app.add_exception_handler(500, handle_internal_http_error) +app.add_middleware( + fastapi.middleware.cors.CORSMiddleware, + allow_origins=["*"], # Allows all origins + allow_credentials=True, + allow_methods=["*"], # Allows all methods + allow_headers=["*"], # Allows all headers +)