Skip to content
Open
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
fa69f90
Add reaction tools for issues and pull requests
timrogers Jun 19, 2026
a5511ca
Make reaction tools available in both granular and non-granular modes
timrogers Jun 19, 2026
774b75b
Update toolsnaps with aligned reaction tool descriptions
timrogers Jun 19, 2026
94c6f2c
Align reaction tool descriptions with codebase style
timrogers Jun 19, 2026
30da9da
Improve reaction tool responses and wording
timrogers Jun 19, 2026
009bb7b
Expose reactions through default comment tools
SamMorrowDrums Jun 23, 2026
e6276cf
Clarify PR review comment IDs for reactions
SamMorrowDrums Jun 23, 2026
7c53cde
Support issue comment reactions in add_issue_comment
SamMorrowDrums Jun 23, 2026
9908fbf
Merge branch 'main' into timrogers/planning-reaction-tools
SamMorrowDrums Jun 23, 2026
2c9410b
Harden combined comment reaction tools
SamMorrowDrums Jun 23, 2026
d218ebe
Group reaction tools with granular registrations
SamMorrowDrums Jun 23, 2026
7fff6f2
Align granular reaction tool constructors
SamMorrowDrums Jun 23, 2026
9855c06
Require issue number for comment reactions
SamMorrowDrums Jun 24, 2026
b0d11b0
Address issue comment feedback
SamMorrowDrums Jun 26, 2026
ca55793
Merge branch 'main' into timrogers/planning-reaction-tools
SamMorrowDrums Jun 26, 2026
e522c77
Validate issue comment reaction target
SamMorrowDrums Jun 26, 2026
ea14878
Validate positive comment IDs
SamMorrowDrums Jun 26, 2026
95737a9
Merge remote-tracking branch 'origin/main' into pr/2732/timrogers/pla…
SamMorrowDrums Jun 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -841,9 +841,11 @@ The following sets of tools are available:

- **add_issue_comment** - Add comment to issue or pull request
- **Required OAuth Scopes**: `repo`
- `body`: Comment content (string, required)
- `issue_number`: Issue number to comment on (number, required)
- `body`: Comment content. Required unless reaction is provided. (string, optional)
- `comment_id`: The numeric ID of the issue or pull request comment to react to. Use this for reactions to comments; omit it to react to the issue or pull request itself. Cannot be combined with body. (number, optional)
- `issue_number`: Issue or pull request number to comment on or react to. (number, required)
- `owner`: Repository owner (string, required)
- `reaction`: Emoji reaction to add. Required unless body is provided. (string, optional)
- `repo`: Repository name (string, required)

- **get_label** - Get a specific label from a repository
Expand Down Expand Up @@ -1098,10 +1100,11 @@ The following sets of tools are available:

- **add_reply_to_pull_request_comment** - Add reply to pull request comment
- **Required OAuth Scopes**: `repo`
- `body`: The text of the reply (string, required)
- `commentId`: The ID of the comment to reply to (number, required)
- `body`: The text of the reply. Required unless reaction is provided. (string, optional)
- `commentId`: The numeric ID of the pull request review comment to reply or react to. Use the number from a #discussion_r... anchor, not the GraphQL thread node ID (PRRT_...). (number, required)
- `owner`: Repository owner (string, required)
- `pullNumber`: Pull request number (number, required)
- `pullNumber`: Pull request number. Required when body is provided. (number, optional)
- `reaction`: Emoji reaction to add. Required unless body is provided. (string, optional)
- `repo`: Repository name (string, required)

- **create_pull_request** - Open new pull request
Expand Down
21 changes: 21 additions & 0 deletions docs/feature-flags.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,20 @@ runtime behavior (such as output formatting) won't appear here.

### `issues_granular`

- **add_issue_comment_reaction** - Add Reaction to Issue or Pull Request Comment
- **Required OAuth Scopes**: `repo`
- `comment_id`: The issue or pull request comment ID (number, required)
- `content`: The emoji reaction type (string, required)
- `owner`: Repository owner (username or organization) (string, required)
- `repo`: Repository name (string, required)

- **add_issue_reaction** - Add Reaction to Issue or Pull Request
- **Required OAuth Scopes**: `repo`
- `content`: The emoji reaction type (string, required)
- `issue_number`: The issue number (number, required)
- `owner`: Repository owner (username or organization) (string, required)
- `repo`: Repository name (string, required)

- **add_sub_issue** - Add Sub-Issue
- **Required OAuth Scopes**: `repo`
- `issue_number`: The parent issue number (number, required)
Expand Down Expand Up @@ -204,6 +218,13 @@ runtime behavior (such as output formatting) won't appear here.
- `startSide`: The start side of a multi-line comment (optional) (string, optional)
- `subjectType`: The subject type of the comment (string, required)

- **add_pull_request_review_comment_reaction** - Add Pull Request Review Comment Reaction
- **Required OAuth Scopes**: `repo`
- `comment_id`: The numeric pull request review comment ID. Use the number from a #discussion_r... anchor, not the GraphQL thread node ID (PRRT_...). (number, required)
- `content`: The emoji reaction type (string, required)
- `owner`: Repository owner (username or organization) (string, required)
- `repo`: Repository name (string, required)

- **create_pull_request_review** - Create Pull Request Review
- **Required OAuth Scopes**: `repo`
- `body`: The review body text (optional) (string, optional)
Expand Down
28 changes: 23 additions & 5 deletions pkg/github/__toolsnaps__/add_issue_comment.snap
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,40 @@
"annotations": {
"title": "Add comment to issue or pull request"
},
"description": "Add a comment to a specific issue in a GitHub repository. Use this tool to add comments to pull requests as well (in this case pass pull request number as issue_number), but only if user is not asking specifically to add review comments.",
"description": "Add a comment and/or reaction to a specific issue or issue comment in a GitHub repository. Use this tool with pull requests as well (in this case pass pull request number as issue_number), but only if user is not asking specifically to add or react to review comments. At least one of body or reaction is required.",
"inputSchema": {
"properties": {
"body": {
"description": "Comment content",
"description": "Comment content. Required unless reaction is provided.",
"type": "string"
},
"comment_id": {
"description": "The numeric ID of the issue or pull request comment to react to. Use this for reactions to comments; omit it to react to the issue or pull request itself. Cannot be combined with body.",
"minimum": 1,
"type": "number"
},
"issue_number": {
"description": "Issue number to comment on",
"description": "Issue or pull request number to comment on or react to.",
"type": "number"
},
"owner": {
"description": "Repository owner",
"type": "string"
},
"reaction": {
"description": "Emoji reaction to add. Required unless body is provided.",
"enum": [
"+1",
"-1",
"laugh",
"confused",
"heart",
"hooray",
"rocket",
"eyes"
],
"type": "string"
},
"repo": {
"description": "Repository name",
"type": "string"
Expand All @@ -25,8 +44,7 @@
"required": [
"owner",
"repo",
"issue_number",
"body"
"issue_number"
],
"type": "object"
},
Expand Down
47 changes: 47 additions & 0 deletions pkg/github/__toolsnaps__/add_issue_comment_reaction.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{
"annotations": {
"destructiveHint": false,
"openWorldHint": true,
"title": "Add Reaction to Issue or Pull Request Comment"
},
"description": "Add a reaction to an issue or pull request comment.",
"inputSchema": {
"properties": {
"comment_id": {
"description": "The issue or pull request comment ID",
"minimum": 1,
"type": "number"
},
"content": {
"description": "The emoji reaction type",
"enum": [
"+1",
"-1",
"laugh",
"confused",
"heart",
"hooray",
"rocket",
"eyes"
],
"type": "string"
},
"owner": {
"description": "Repository owner (username or organization)",
"type": "string"
},
"repo": {
"description": "Repository name",
"type": "string"
}
},
"required": [
"owner",
"repo",
"comment_id",
"content"
],
"type": "object"
},
"name": "add_issue_comment_reaction"
}
47 changes: 47 additions & 0 deletions pkg/github/__toolsnaps__/add_issue_reaction.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{
"annotations": {
"destructiveHint": false,
"openWorldHint": true,
"title": "Add Reaction to Issue or Pull Request"
},
"description": "Add a reaction to an issue or pull request.",
"inputSchema": {
"properties": {
"content": {
"description": "The emoji reaction type",
"enum": [
"+1",
"-1",
"laugh",
"confused",
"heart",
"hooray",
"rocket",
"eyes"
],
"type": "string"
},
"issue_number": {
"description": "The issue number",
"minimum": 1,
"type": "number"
},
"owner": {
"description": "Repository owner (username or organization)",
"type": "string"
},
"repo": {
"description": "Repository name",
"type": "string"
}
},
"required": [
"owner",
"repo",
"issue_number",
"content"
],
"type": "object"
},
"name": "add_issue_reaction"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{
"annotations": {
"destructiveHint": false,
"openWorldHint": true,
"title": "Add Pull Request Review Comment Reaction"
},
"description": "Add a reaction to a pull request review comment.",
"inputSchema": {
"properties": {
"comment_id": {
"description": "The numeric pull request review comment ID. Use the number from a #discussion_r... anchor, not the GraphQL thread node ID (PRRT_...).",
"minimum": 1,
"type": "number"
},
"content": {
"description": "The emoji reaction type",
"enum": [
"+1",
"-1",
"laugh",
"confused",
"heart",
"hooray",
"rocket",
"eyes"
],
"type": "string"
},
"owner": {
"description": "Repository owner (username or organization)",
"type": "string"
},
"repo": {
"description": "Repository name",
"type": "string"
}
},
"required": [
"owner",
"repo",
"comment_id",
"content"
],
"type": "object"
},
"name": "add_pull_request_review_comment_reaction"
}
26 changes: 19 additions & 7 deletions pkg/github/__toolsnaps__/add_reply_to_pull_request_comment.snap
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,39 @@
"annotations": {
"title": "Add reply to pull request comment"
},
"description": "Add a reply to an existing pull request comment. This creates a new comment that is linked as a reply to the specified comment.",
"description": "Add a reply and/or reaction to an existing pull request comment. This can create a new comment linked as a reply to the specified comment, add an emoji reaction to the specified comment, or do both. At least one of body or reaction is required.",
"inputSchema": {
"properties": {
"body": {
"description": "The text of the reply",
"description": "The text of the reply. Required unless reaction is provided.",
"type": "string"
},
"commentId": {
"description": "The ID of the comment to reply to",
"description": "The numeric ID of the pull request review comment to reply or react to. Use the number from a #discussion_r... anchor, not the GraphQL thread node ID (PRRT_...).",
"type": "number"
},
"owner": {
"description": "Repository owner",
"type": "string"
},
"pullNumber": {
"description": "Pull request number",
"description": "Pull request number. Required when body is provided.",
"type": "number"
},
"reaction": {
"description": "Emoji reaction to add. Required unless body is provided.",
"enum": [
"+1",
"-1",
"laugh",
"confused",
"heart",
"hooray",
"rocket",
"eyes"
],
"type": "string"
},
"repo": {
"description": "Repository name",
"type": "string"
Expand All @@ -29,9 +43,7 @@
"required": [
"owner",
"repo",
"pullNumber",
"commentId",
"body"
"commentId"
],
"type": "object"
},
Expand Down
Loading
Loading