Team Ai
Apppublic

alexcpn/code-review-agent

sourceHugging Faceupdated 10mo agoView on Hugging Face
0likes
agent_interface.py49 linesDownload Raw Back to root
1import grpc2from concurrent import futures3import logging as log4import os5import asyncio6import protos.agent_pb2 as agent_pb27import protos.agent_pb2_grpc as agent_pb2_grpc8from review_orchestrator import CodeReviewOrchestrator9from load_dotenv import load_dotenv10load_dotenv()11 12# Configure logging13log.basicConfig(level=log.INFO, format="%(asctime)s [%(levelname)s] %(message)s")14 15class CodeReviewAgentServicer(agent_pb2_grpc.CodeReviewAgentServicer):16    def __init__(self):17        self.orchestrator = CodeReviewOrchestrator()18 19    def ReviewPR(self, request, context):20        repo_url = request.repo_url21    async def ReviewPR(self, request, context):22        log.info(f"Received review request for PR #{request.pr_number}")23        try:24            async for result in self.orchestrator.review_pr_stream(request.repo_url, request.pr_number):25                yield agent_pb2.ReviewResponse(26                    status="Success",27                    review_comment=result["comment"],28                    file_path=result["file_path"]29                )30        except Exception as e:31            log.error(f"Error during review: {e}")32            yield agent_pb2.ReviewResponse(33                status="Error",34                review_comment=str(e),35                file_path=""36            )37 38async def serve():39    server = grpc.aio.server()40    agent_pb2_grpc.add_CodeReviewAgentServicer_to_server(CodeReviewAgentServicer(), server)41    server.add_insecure_port('[::]:50051')42    log.info("Starting Async gRPC server on port 50051...")43    await server.start()44    await server.wait_for_termination()45 46if __name__ == '__main__':47    import asyncio48    asyncio.run(serve())49