|
import warnings
|
|
from contextlib import asynccontextmanager
|
|
|
|
with warnings.catch_warnings():
|
|
warnings.simplefilter('ignore')
|
|
|
|
from fastapi import (
|
|
FastAPI,
|
|
)
|
|
|
|
import openhands.agenthub
|
|
from openhands.server.middleware import (
|
|
AttachConversationMiddleware,
|
|
InMemoryRateLimiter,
|
|
LocalhostCORSMiddleware,
|
|
NoCacheMiddleware,
|
|
RateLimitMiddleware,
|
|
)
|
|
from openhands.server.routes.conversation import app as conversation_api_router
|
|
from openhands.server.routes.feedback import app as feedback_api_router
|
|
from openhands.server.routes.files import app as files_api_router
|
|
from openhands.server.routes.github import app as github_api_router
|
|
from openhands.server.routes.manage_conversations import (
|
|
app as manage_conversation_api_router,
|
|
)
|
|
from openhands.server.routes.public import app as public_api_router
|
|
from openhands.server.routes.security import app as security_api_router
|
|
from openhands.server.routes.settings import app as settings_router
|
|
from openhands.server.shared import openhands_config, session_manager
|
|
from openhands.utils.import_utils import get_impl
|
|
|
|
|
|
@asynccontextmanager
|
|
async def _lifespan(app: FastAPI):
|
|
async with session_manager:
|
|
yield
|
|
|
|
|
|
app = FastAPI(lifespan=_lifespan)
|
|
app.add_middleware(
|
|
LocalhostCORSMiddleware,
|
|
allow_credentials=True,
|
|
allow_methods=['*'],
|
|
allow_headers=['*'],
|
|
)
|
|
|
|
app.add_middleware(NoCacheMiddleware)
|
|
app.add_middleware(
|
|
RateLimitMiddleware, rate_limiter=InMemoryRateLimiter(requests=10, seconds=1)
|
|
)
|
|
|
|
|
|
@app.get('/health')
|
|
async def health():
|
|
return 'OK'
|
|
|
|
|
|
app.include_router(public_api_router)
|
|
app.include_router(files_api_router)
|
|
app.include_router(security_api_router)
|
|
app.include_router(feedback_api_router)
|
|
app.include_router(conversation_api_router)
|
|
app.include_router(manage_conversation_api_router)
|
|
app.include_router(settings_router)
|
|
app.include_router(github_api_router)
|
|
|
|
AttachConversationMiddlewareImpl = get_impl(
|
|
AttachConversationMiddleware, openhands_config.attach_conversation_middleware_path
|
|
)
|
|
app.middleware('http')(AttachConversationMiddlewareImpl(app))
|
|
|