File size: 1,723 Bytes
88d205f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# 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