99 lines
3.0 KiB
Python
99 lines
3.0 KiB
Python
import os
|
|
import sys
|
|
from pathlib import Path
|
|
from fastapi import FastAPI
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
from fastapi.staticfiles import StaticFiles
|
|
from src.config.database import engine, Base
|
|
from src.config.settings import settings
|
|
from src.utils.logger import setup_logger
|
|
|
|
# Necessary for other modules
|
|
from src.services.service_providers import session_service # noqa: F401
|
|
from src.services.service_providers import artifacts_service # noqa: F401
|
|
from src.services.service_providers import memory_service # noqa: F401
|
|
|
|
import src.api.auth_routes
|
|
import src.api.admin_routes
|
|
import src.api.chat_routes
|
|
import src.api.session_routes
|
|
import src.api.agent_routes
|
|
import src.api.contact_routes
|
|
import src.api.mcp_server_routes
|
|
import src.api.tool_routes
|
|
import src.api.client_routes
|
|
import src.api.a2a_routes
|
|
|
|
# Add the root directory to PYTHONPATH
|
|
root_dir = Path(__file__).parent.parent
|
|
sys.path.append(str(root_dir))
|
|
|
|
# Configure logger
|
|
logger = setup_logger(__name__)
|
|
|
|
# FastAPI initialization
|
|
app = FastAPI(
|
|
title=settings.API_TITLE,
|
|
description=settings.API_DESCRIPTION,
|
|
version=settings.API_VERSION,
|
|
)
|
|
|
|
# CORS configuration
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=["*"], # Allows all origins in development
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
# Static files configuration
|
|
static_dir = Path("static")
|
|
if not static_dir.exists():
|
|
static_dir.mkdir(parents=True)
|
|
app.mount("/static", StaticFiles(directory=static_dir), name="static")
|
|
|
|
# PostgreSQL configuration
|
|
POSTGRES_CONNECTION_STRING = os.getenv(
|
|
"POSTGRES_CONNECTION_STRING", "postgresql://postgres:root@localhost:5432/evo_ai"
|
|
)
|
|
|
|
# Create database tables
|
|
Base.metadata.create_all(bind=engine)
|
|
|
|
API_PREFIX = "/api/v1"
|
|
|
|
# Define router references
|
|
auth_router = src.api.auth_routes.router
|
|
admin_router = src.api.admin_routes.router
|
|
chat_router = src.api.chat_routes.router
|
|
session_router = src.api.session_routes.router
|
|
agent_router = src.api.agent_routes.router
|
|
contact_router = src.api.contact_routes.router
|
|
mcp_server_router = src.api.mcp_server_routes.router
|
|
tool_router = src.api.tool_routes.router
|
|
client_router = src.api.client_routes.router
|
|
a2a_router = src.api.a2a_routes.router
|
|
|
|
# Include routes
|
|
app.include_router(auth_router, prefix=API_PREFIX)
|
|
app.include_router(admin_router, prefix=API_PREFIX)
|
|
app.include_router(mcp_server_router, prefix=API_PREFIX)
|
|
app.include_router(tool_router, prefix=API_PREFIX)
|
|
app.include_router(client_router, prefix=API_PREFIX)
|
|
app.include_router(chat_router, prefix=API_PREFIX)
|
|
app.include_router(session_router, prefix=API_PREFIX)
|
|
app.include_router(agent_router, prefix=API_PREFIX)
|
|
app.include_router(contact_router, prefix=API_PREFIX)
|
|
app.include_router(a2a_router, prefix=API_PREFIX)
|
|
|
|
|
|
@app.get("/")
|
|
def read_root():
|
|
return {
|
|
"message": "Welcome to Evo AI API",
|
|
"documentation": "/docs",
|
|
"version": settings.API_VERSION,
|
|
"auth": "To access the API, use JWT authentication via '/api/v1/auth/login'",
|
|
}
|