import gradio as gr from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware import uvicorn from skt_search.ui.gradio_ui import SKTSearchUI from skt_search.admin.admin_panel import AdminPanel from skt_search.ui.playground import SKTPlayground from skt_search.ui.api_docs import create_api_docs from skt_search.ui.key_management import KeyManagementPage from skt_search.api.fastapi_app import app as api_app # Create main FastAPI app app = FastAPI( title="SKT Search", description="AI-Powered Search Engine with RAG, LangGraph, and Heavy Browser", version="1.0.0" ) # Add CORS app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Mount API routes for route in api_app.routes: app.routes.append(route) # Create all Gradio interfaces search_ui = SKTSearchUI() main_interface = search_ui.create_interface() admin = AdminPanel() admin_interface = admin.create_interface() playground = SKTPlayground() playground_interface = playground.create_interface() api_docs_interface = create_api_docs() key_page = KeyManagementPage() key_interface = key_page.create_interface() # Mount all Gradio apps app = gr.mount_gradio_app(app, main_interface, path="/") app = gr.mount_gradio_app(app, admin_interface, path="/admin") app = gr.mount_gradio_app(app, playground_interface, path="/playground") app = gr.mount_gradio_app(app, api_docs_interface, path="/docs") app = gr.mount_gradio_app(app, key_interface, path="/keys") @app.get("/health") def health_check(): return {"status": "healthy", "version": "1.0.0"} if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=7860)