|
|
|
from modal import Image, Stub, asgi_app |
|
import sys |
|
|
|
|
|
image = Image.debian_slim().pip_install_from_requirements("requirements.txt") |
|
|
|
|
|
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 |
|
|
|
|
|
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__))) |
|
|
|
|
|
from src.ui.gradio_app import create_gradio_app |
|
from src.core.agent_manager import AgentManager |
|
|
|
|
|
logging.basicConfig( |
|
level=logging.INFO, |
|
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' |
|
) |
|
|
|
|
|
load_dotenv() |
|
|
|
|
|
logs_dir = os.path.join(os.path.dirname(__file__), 'logs') |
|
os.makedirs(logs_dir, exist_ok=True) |
|
|
|
|
|
agent_manager = AgentManager() |
|
|
|
|
|
gradio_app = create_gradio_app(agent_manager) |
|
|
|
|
|
return gradio_app.app |
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
stub.serve() |
|
|
|
|
|
|