"""SoniCoder v2 — Entry point. gradio.Server (Gradio 6.x) serves index.html from project root with Gradio's queuing, concurrency, and API infrastructure. Blog: https://huggingface.co/blog/introducing-gradio-server """ from __future__ import annotations import logging # Ensure workspace + config dirs exist from code.config import WORKSPACE_ROOT, CONFIG_DIR WORKSPACE_ROOT.mkdir(parents=True, exist_ok=True) CONFIG_DIR.mkdir(parents=True, exist_ok=True) logging.basicConfig( level=logging.INFO, format="%(asctime)s [%(levelname)s] %(name)s: %(message)s", datefmt="%H:%M:%S", ) logger = logging.getLogger(__name__) def main(): logger.info("SoniCoder v2 starting...") # Start loading default model in background from code.model.loader import start_background_load start_background_load() logger.info("Background model loading started") # Set up MCP servers from config (best-effort) try: from code.config import load_settings from code.mcp import get_mcp_manager settings = load_settings() if settings.mcp_servers: mcp = get_mcp_manager() mcp.configure(settings.mcp_servers) results = mcp.connect_all() for name, error in results.items(): if error: logger.warning("MCP server '%s' failed: %s", name, error) else: logger.info("MCP server '%s' connected", name) except Exception as exc: logger.warning("MCP setup skipped: %s", exc) # Create the server (gradio.Server — custom HTML + Gradio backend) from code.server import create_app app = create_app() logger.info("Launching...") app.launch(show_error=True, server_name="0.0.0.0", server_port=7860) if __name__ == "__main__": main()