# modal_deploy.py from modal import Image, Stub, asgi_app import sys # Create a Modal image with the required dependencies image = Image.debian_slim().pip_install_from_requirements("requirements.txt") # Create a Modal Stub stub = Stub("code-review-agent") @stub.function(image=image, timeout=600) @asgi_app() def app(): """ Deploy the Code Review Agent as an ASGI app on Modal. This function sets up the Gradio application and returns it as an ASGI app that Modal can serve. The app will be accessible via a URL provided by Modal after deployment. Returns: ASGI application: The Gradio app as an ASGI application """ import os import sys import logging from dotenv import load_dotenv # Add the project root to the Python path sys.path.insert(0, os.path.abspath(os.path.dirname(__file__))) # Import application modules from src.ui.gradio_app import create_gradio_app from src.core.agent_manager import AgentManager # Configure logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) # Load environment variables load_dotenv() # Create logs directory if it doesn't exist logs_dir = os.path.join(os.path.dirname(__file__), 'logs') os.makedirs(logs_dir, exist_ok=True) # Initialize the agent manager agent_manager = AgentManager() # Create the Gradio app gradio_app = create_gradio_app(agent_manager) # Return the Gradio app as an ASGI app return gradio_app.app if __name__ == "__main__": # For local testing stub.serve() # For deployment # Run: modal deploy modal_deploy.py