dashboard-nanobot/backend/app_factory.py

61 lines
2.2 KiB
Python
Raw Normal View History

2026-03-31 04:31:47 +00:00
import os
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from api.bot_config_router import router as bot_config_router
from api.bot_management_router import router as bot_management_router
from api.bot_router import router as bot_router
from api.bot_runtime_router import router as bot_runtime_router
from api.bot_speech_router import router as bot_speech_router
from api.chat_history_router import router as chat_history_router
from api.chat_router import router as chat_router
from api.image_router import router as image_router
from api.platform_router import router as platform_router
from api.skill_router import router as skill_router
from api.system_router import router as system_router
from api.topic_router import router as topic_router
from api.workspace_router import router as workspace_router
from bootstrap.app_runtime import register_app_runtime
from core.auth_middleware import PasswordProtectionMiddleware
from core.docker_instance import docker_manager
2026-04-03 15:00:08 +00:00
from core.settings import BOTS_WORKSPACE_ROOT, CORS_ALLOWED_ORIGINS, DATA_ROOT
2026-03-31 04:31:47 +00:00
from core.speech_service import WhisperSpeechService
def create_app() -> FastAPI:
app = FastAPI(title="Dashboard Nanobot API")
speech_service = WhisperSpeechService()
app.state.docker_manager = docker_manager
app.state.speech_service = speech_service
app.add_middleware(PasswordProtectionMiddleware)
app.add_middleware(
CORSMiddleware,
2026-04-03 15:00:08 +00:00
allow_origins=list(CORS_ALLOWED_ORIGINS),
2026-03-31 04:31:47 +00:00
allow_methods=["*"],
allow_headers=["*"],
2026-04-03 15:00:08 +00:00
allow_credentials=True,
2026-03-31 04:31:47 +00:00
)
app.include_router(platform_router)
app.include_router(topic_router)
app.include_router(system_router)
app.include_router(image_router)
app.include_router(skill_router)
app.include_router(chat_router)
app.include_router(chat_history_router)
app.include_router(bot_speech_router)
app.include_router(workspace_router)
app.include_router(bot_config_router)
app.include_router(bot_runtime_router)
app.include_router(bot_management_router)
app.include_router(bot_router)
os.makedirs(BOTS_WORKSPACE_ROOT, exist_ok=True)
os.makedirs(DATA_ROOT, exist_ok=True)
register_app_runtime(app)
return app