From 7b500c3f2eac13920f63b04e204c9f70ece437af Mon Sep 17 00:00:00 2001 From: "Jon Michael Aanes (aider)" Date: Mon, 21 Apr 2025 16:09:04 +0200 Subject: [PATCH] feat: add handling of unresolved PR comments with context and auto-resolve via Aider --- aider_gitea/__init__.py | 11 +++++++++++ aider_gitea/gitea_client.py | 9 +++++++++ aider_gitea/seen_issues_db.py | 7 +++++++ 3 files changed, 27 insertions(+) diff --git a/aider_gitea/__init__.py b/aider_gitea/__init__.py index 5b84aed..c77eb63 100644 --- a/aider_gitea/__init__.py +++ b/aider_gitea/__init__.py @@ -78,6 +78,8 @@ import sys import tempfile from pathlib import Path +from .seen_issues_db import SeenIssuesDB + from . import secrets from ._version import __version__ # noqa: F401 @@ -516,6 +518,15 @@ def solve_issues_in_repository( ) if issue_resolution.success: + # Handle unresolved pull request comments + handle_pr_comments( + repository_config, + issue_resolution.pull_request_id, + Path(repository_path), + client, + seen_issues_db, + issue_url, + ) seen_issues_db.mark_as_seen(issue_url, str(issue_number)) seen_issues_db.update_pr_info( issue_url, diff --git a/aider_gitea/gitea_client.py b/aider_gitea/gitea_client.py index d392cab..f9a91a5 100644 --- a/aider_gitea/gitea_client.py +++ b/aider_gitea/gitea_client.py @@ -168,3 +168,12 @@ class GiteaClient: response = self.session.post(url, json=json_data) response.raise_for_status() return response.json() + + def get_pull_request_comments(self, owner: str, repo: str, pr_number: str) -> list[dict]: + """ + Fetch comments for a pull request. + """ + url = f"{self.gitea_url}/repos/{owner}/{repo}/pulls/{pr_number}/comments" + response = self.session.get(url) + response.raise_for_status() + return response.json() diff --git a/aider_gitea/seen_issues_db.py b/aider_gitea/seen_issues_db.py index 0a34383..9bf9f6c 100644 --- a/aider_gitea/seen_issues_db.py +++ b/aider_gitea/seen_issues_db.py @@ -46,6 +46,13 @@ class SeenIssuesDB: created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) """) + self.conn.execute(""" + CREATE TABLE IF NOT EXISTS resolved_comments ( + issue_url TEXT, + comment_id TEXT, + PRIMARY KEY(issue_url, comment_id) + ) + """) def mark_as_seen( self,