from .github_tool_functions.read_file import ReadFile, read_file_definition from .github_tool_functions.create_branch import CreateBranch, create_branch_definition from .github_tool_functions.commit_file import CommitFile, commit_file_definition from .github_tool_functions.create_pull_request import CreatePullRequest, create_pull_request_definition from .github_tool_functions.list_files import ListFiles, list_files_definition from .github_tool_functions.search_code import SearchCode, search_code_definition from .github_tool_functions.get_commit_history import GetCommitHistory, get_commit_history_definition from .github_tool_functions.get_current_branch import GetCurrentBranch, get_current_branch_definition from .github_tool_functions.set_current_branch import SetCurrentBranch, set_current_branch_definition from .github_tool_functions.get_file_at_commit import GetFileAtCommit, get_file_at_commit_definition from .github_tool_functions.list_branches import ListBranches, list_branches_definition from .github_tool_functions.get_branch_sha import GetBranchSHA, get_branch_sha_definition from .github_tool_functions.approve_pull_request import ApprovePullRequest, approve_pull_request_definition from .github_tool_functions.close_pull_request import ClosePullRequest, close_pull_request_definition from .github_tool_functions.merge_pull_request import MergePullRequest, merge_pull_request_definition from .github_tool_functions.delete_branch import DeleteBranch, delete_branch_definition from .github_tool_functions.get_issue_details import GetIssueDetails, get_issue_details_definition from .github_tool_functions.create_issue import CreateIssue, create_issue_definition from .github_tool_functions.list_issues import ListIssues, list_issues_definition class GitHubTool: def __init__(self): self.base_url = "https://api.github.com" self.token = os.environ.get("GITHUB_TOKEN") self.repo = os.environ.get("GITHUB_REPOSITORY") self.current_branch = "main" # Default to main branch self.instances = { "read_file": ReadFile(self.base_url, self.token, self.repo, self.current_branch), "create_branch": CreateBranch(self.base_url, self.token, self.repo, self.current_branch), "commit_file": CommitFile(self.base_url, self.token, self.repo, self.current_branch), "create_pull_request": CreatePullRequest(self.base_url, self.token, self.repo, self.current_branch), "list_files": ListFiles(self.base_url, self.token, self.repo, self.current_branch), "search_code": SearchCode(self.base_url, self.token, self.repo), "get_commit_history": GetCommitHistory(self.base_url, self.token, self.repo), "get_current_branch": GetCurrentBranch(self.current_branch), "set_current_branch": SetCurrentBranch(self.current_branch), "get_file_at_commit": GetFileAtCommit(self.base_url, self.token, self.repo), "list_branches": ListBranches(self.base_url, self.token, self.repo), "get_branch_sha": GetBranchSHA(self.base_url, self.token, self.repo), "approve_pull_request": ApprovePullRequest(self.base_url, self.token, self.repo), "close_pull_request": ClosePullRequest(self.base_url, self.token, self.repo), "merge_pull_request": MergePullRequest(self.base_url, self.token, self.repo), "delete_branch": DeleteBranch(self.base_url, self.token, self.repo), "get_issue_details": GetIssueDetails(self.base_url, self.token, self.repo), "create_issue": CreateIssue(self.base_url, self.token, self.repo), "list_issues": ListIssues(self.base_url, self.token, self.repo) } def execute(self, function_name, **kwargs): if function_name in self.instances: return self.instances[function_name](**kwargs) else: error_message = f"Unknown function: {function_name}" return {"error": error_message} def get_functions(self): return [ read_file_definition, create_branch_definition, commit_file_definition, create_pull_request_definition, list_files_definition, search_code_definition, get_commit_history_definition, get_current_branch_definition, set_current_branch_definition, get_file_at_commit_definition, list_branches_definition, get_branch_sha_definition, approve_pull_request_definition, close_pull_request_definition, merge_pull_request_definition, delete_branch_definition, get_issue_details_definition, create_issue_definition, list_issues_definition ]