diff --git a/pr_agent/agent/pr_agent.py b/pr_agent/agent/pr_agent.py index b064048c..2ab13d69 100644 --- a/pr_agent/agent/pr_agent.py +++ b/pr_agent/agent/pr_agent.py @@ -37,7 +37,7 @@ class PRAgent: def __init__(self): pass - async def handle_request(self, pr_url, request) -> bool: + async def handle_request(self, pr_url, request, notify=None) -> bool: # First, apply repo specific settings if exists if get_settings().config.use_repo_settings_file: repo_settings_file = None @@ -67,8 +67,12 @@ class PRAgent: if action == "reflect_and_review" and not get_settings().pr_reviewer.ask_and_reflect: action = "review" if action == "answer": + if notify: + notify() await PRReviewer(pr_url, is_answer=True, args=args).run() elif action in command2class: + if notify: + notify() await command2class[action](pr_url, args=args).run() else: return False diff --git a/pr_agent/servers/github_action_runner.py b/pr_agent/servers/github_action_runner.py index 9950791a..fbf4f89c 100644 --- a/pr_agent/servers/github_action_runner.py +++ b/pr_agent/servers/github_action_runner.py @@ -17,6 +17,7 @@ async def run_action(): GITHUB_TOKEN = os.environ.get('GITHUB_TOKEN') get_settings().set("CONFIG.PUBLISH_OUTPUT_PROGRESS", False) + # Check if required environment variables are set if not GITHUB_EVENT_NAME: print("GITHUB_EVENT_NAME not set") @@ -65,8 +66,7 @@ async def run_action(): body = comment_body.strip().lower() comment_id = event_payload.get("comment", {}).get("id") provider = get_git_provider()(pr_url=pr_url) - provider.add_eyes_reaction(comment_id) - await PRAgent().handle_request(pr_url, body) + await PRAgent().handle_request(pr_url, body, notify=lambda: provider.add_eyes_reaction(comment_id)) if __name__ == '__main__': diff --git a/pr_agent/servers/github_app.py b/pr_agent/servers/github_app.py index 53419b6e..18943ae8 100644 --- a/pr_agent/servers/github_app.py +++ b/pr_agent/servers/github_app.py @@ -83,8 +83,7 @@ async def handle_request(body: Dict[str, Any]): api_url = pull_request.get("url") comment_id = body.get("comment", {}).get("id") provider = get_git_provider()(pr_url=api_url) - provider.add_eyes_reaction(comment_id) - await agent.handle_request(api_url, comment_body) + await agent.handle_request(api_url, comment_body, notify=lambda: provider.add_eyes_reaction(comment_id)) elif action == "opened" or 'reopened' in action: diff --git a/pr_agent/servers/github_polling.py b/pr_agent/servers/github_polling.py index da5cd83e..fdd6642d 100644 --- a/pr_agent/servers/github_polling.py +++ b/pr_agent/servers/github_polling.py @@ -101,8 +101,8 @@ async def polling_loop(): rest_of_comment = comment_body.split(user_tag)[1].strip() comment_id = comment['id'] git_provider.set_pr(pr_url) - git_provider.add_eyes_reaction(comment_id) - success = await agent.handle_request(pr_url, rest_of_comment) + success = await agent.handle_request(pr_url, rest_of_comment, + notify=lambda: git_provider.add_eyes_reaction(comment_id)) # noqa E501 if not success: git_provider.set_pr(pr_url) git_provider.publish_comment("### How to use PR-Agent\n" +