### Adds the following tools to the Github Toolkit:
1. CreateIssueComment
2. SetStarred
3. CountStargazers
4. ListOrgRepositories
5. GetRepository
6. ListRepositoryActivities
7. ListReviewCommentsInARepository
8. ListPullRequests
9. GetPullRequest
10. UpdatePullRequest
11. ListPullRequestCommits
12. CreateReplyForReviewComment
13. ListReviewCommentsOnPullRequest
14. CreateReviewComment
Adds evals for all of these tools and unit tests.
---------
Co-authored-by: Sam Partee <sam@arcade-ai.com>
41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
from typing import Annotated
|
|
|
|
import httpx
|
|
|
|
from arcade.core.schema import ToolContext
|
|
from arcade.sdk import tool
|
|
from arcade.sdk.auth import GitHubApp
|
|
from arcade_github.tools.utils import get_github_json_headers, get_url, handle_github_response
|
|
|
|
|
|
# Implements https://docs.github.com/en/rest/activity/starring?apiVersion=2022-11-28#star-a-repository-for-the-authenticated-user and https://docs.github.com/en/rest/activity/starring?apiVersion=2022-11-28#unstar-a-repository-for-the-authenticated-user
|
|
# Example `arcade chat` usage: "star the vscode repo owned by microsoft"
|
|
@tool(requires_auth=GitHubApp())
|
|
async def set_starred(
|
|
context: ToolContext,
|
|
owner: Annotated[str, "The owner of the repository"],
|
|
name: Annotated[str, "The name of the repository"],
|
|
starred: Annotated[bool, "Whether to star the repository or not"],
|
|
) -> Annotated[
|
|
str, "A message indicating whether the repository was successfully starred or unstarred"
|
|
]:
|
|
"""
|
|
Star or un-star a GitHub repository.
|
|
For example, to star microsoft/vscode, you would use:
|
|
```
|
|
set_starred(owner="microsoft", name="vscode", starred=True)
|
|
```
|
|
"""
|
|
url = get_url("user_starred", owner=owner, repo=name)
|
|
headers = get_github_json_headers(context.authorization.token)
|
|
|
|
async with httpx.AsyncClient() as client:
|
|
if starred:
|
|
response = await client.put(url, headers=headers)
|
|
else:
|
|
response = await client.delete(url, headers=headers)
|
|
|
|
handle_github_response(response, url)
|
|
|
|
action = "starred" if starred else "unstarred"
|
|
return f"Successfully {action} the repository {owner}/{name}"
|