Skip to content

Commit fbb0d48

Browse files
authored
Merge branch 'main' into zwick-lockdown-get-parent
2 parents f24b869 + 74c34cd commit fbb0d48

138 files changed

Lines changed: 2519 additions & 247 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/goreleaser.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ jobs:
2828
run: go mod download
2929

3030
- name: Run GoReleaser
31-
uses: goreleaser/goreleaser-action@5daf1e915a5f0af01ddbcd89a43b8061ff4f1a89
31+
uses: goreleaser/goreleaser-action@f06c13b6b1a9625abc9e6e439d9c05a8f2190e94
3232
with:
3333
distribution: goreleaser
3434
# GoReleaser version

.github/workflows/mcp-diff.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,12 @@ jobs:
5050
} >> "$GITHUB_OUTPUT"
5151
5252
- name: Run MCP Server Diff
53-
uses: SamMorrowDrums/mcp-server-diff@v2.3.5
53+
# Pinned to the cross-spec-aware mcp-server-diff v3.0.0 (full SHA required —
54+
# Actions rejects shortened SHAs): normalizes _meta plumbing, cache hints,
55+
# initialize envelope, tool-annotation default hints; probes each server at its
56+
# own newest spec via the stateless SEP-2575 server/discover path. Keeps the
57+
# go-sdk v1.6.1 -> v1.7.0-pre.1 bump an honest, signal-only diff. github/copilot-mcp-core#1709.
58+
uses: SamMorrowDrums/mcp-server-diff@40d992e0a220e5b63378758f9a40d6a8982898d2 # v3.0.0
5459
with:
5560
setup_go: "false"
5661
install_command: |
@@ -114,7 +119,8 @@ jobs:
114119
} >> "$GITHUB_OUTPUT"
115120
116121
- name: Run MCP Server Diff (streamable-http)
117-
uses: SamMorrowDrums/mcp-server-diff@v2.3.5
122+
# Pinned to mcp-server-diff v3.0.0 — see rationale on the stdio job above.
123+
uses: SamMorrowDrums/mcp-server-diff@40d992e0a220e5b63378758f9a40d6a8982898d2 # v3.0.0
118124
with:
119125
setup_go: "false"
120126
install_command: |

README.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -873,9 +873,11 @@ The following sets of tools are available:
873873

874874
- **add_issue_comment** - Add comment to issue or pull request
875875
- **Required OAuth Scopes**: `repo`
876-
- `body`: Comment content (string, required)
877-
- `issue_number`: Issue number to comment on (number, required)
876+
- `body`: Comment content. Required unless reaction is provided. (string, optional)
877+
- `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)
878+
- `issue_number`: Issue or pull request number to comment on or react to. (number, required)
878879
- `owner`: Repository owner (string, required)
880+
- `reaction`: Emoji reaction to add. Required unless body is provided. (string, optional)
879881
- `repo`: Repository name (string, required)
880882

881883
- **get_label** - Get a specific label from a repository
@@ -1130,10 +1132,11 @@ The following sets of tools are available:
11301132

11311133
- **add_reply_to_pull_request_comment** - Add reply to pull request comment
11321134
- **Required OAuth Scopes**: `repo`
1133-
- `body`: The text of the reply (string, required)
1134-
- `commentId`: The ID of the comment to reply to (number, required)
1135+
- `body`: The text of the reply. Required unless reaction is provided. (string, optional)
1136+
- `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)
11351137
- `owner`: Repository owner (string, required)
1136-
- `pullNumber`: Pull request number (number, required)
1138+
- `pullNumber`: Pull request number. Required when body is provided. (number, optional)
1139+
- `reaction`: Emoji reaction to add. Required unless body is provided. (string, optional)
11371140
- `repo`: Repository name (string, required)
11381141

11391142
- **create_pull_request** - Open new pull request

docs/feature-flags.md

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,20 @@ runtime behavior (such as output formatting) won't appear here.
9696

9797
### `issues_granular`
9898

99+
- **add_issue_comment_reaction** - Add Reaction to Issue or Pull Request Comment
100+
- **Required OAuth Scopes**: `repo`
101+
- `comment_id`: The issue or pull request comment ID (number, required)
102+
- `content`: The emoji reaction type (string, required)
103+
- `owner`: Repository owner (username or organization) (string, required)
104+
- `repo`: Repository name (string, required)
105+
106+
- **add_issue_reaction** - Add Reaction to Issue or Pull Request
107+
- **Required OAuth Scopes**: `repo`
108+
- `content`: The emoji reaction type (string, required)
109+
- `issue_number`: The issue number (number, required)
110+
- `owner`: Repository owner (username or organization) (string, required)
111+
- `repo`: Repository name (string, required)
112+
99113
- **add_sub_issue** - Add Sub-Issue
100114
- **Required OAuth Scopes**: `repo`
101115
- `issue_number`: The parent issue number (number, required)
@@ -136,7 +150,7 @@ runtime behavior (such as output formatting) won't appear here.
136150

137151
- **update_issue_assignees** - Update Issue Assignees
138152
- **Required OAuth Scopes**: `repo`
139-
- `assignees`: GitHub usernames to assign to this issue (string[], required)
153+
- `assignees`: GitHub usernames to assign to this issue. ([], required)
140154
- `issue_number`: The issue number to update (number, required)
141155
- `owner`: Repository owner (username or organization) (string, required)
142156
- `repo`: Repository name (string, required)
@@ -164,8 +178,12 @@ runtime behavior (such as output formatting) won't appear here.
164178

165179
- **update_issue_state** - Update Issue State
166180
- **Required OAuth Scopes**: `repo`
181+
- `confidence`: How confident you are in this choice. Use 'HIGH' for clear signal or explicit user request, 'MEDIUM' for reasonable inference with some ambiguity, 'LOW' for best guess with limited signal. (string, optional)
182+
- `duplicate_of`: The issue number of the canonical issue this issue duplicates. Only valid when state_reason is 'duplicate'. Required when is_suggestion is true and state_reason is 'duplicate'. The issue number is resolved to a database ID before being sent to the API. (number, optional)
183+
- `is_suggestion`: If true, this state change is sent to the API as a suggestion (suggest:true) rather than an applied change. Whether the change is applied or recorded as a proposal is determined by the API. (boolean, optional)
167184
- `issue_number`: The issue number to update (number, required)
168185
- `owner`: Repository owner (username or organization) (string, required)
186+
- `rationale`: One concise sentence explaining what specifically about the issue led you to choose this state. State the concrete signal (e.g. 'The reported crash is fixed in v2.1' → completed). (string, optional)
169187
- `repo`: Repository name (string, required)
170188
- `state`: The new state for the issue (string, required)
171189
- `state_reason`: The reason for the state change (only for closed state) (string, optional)
@@ -202,6 +220,13 @@ runtime behavior (such as output formatting) won't appear here.
202220
- `startSide`: The start side of a multi-line comment (optional) (string, optional)
203221
- `subjectType`: The subject type of the comment (string, required)
204222

223+
- **add_pull_request_review_comment_reaction** - Add Pull Request Review Comment Reaction
224+
- **Required OAuth Scopes**: `repo`
225+
- `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)
226+
- `content`: The emoji reaction type (string, required)
227+
- `owner`: Repository owner (username or organization) (string, required)
228+
- `repo`: Repository name (string, required)
229+
205230
- **create_pull_request_review** - Create Pull Request Review
206231
- **Required OAuth Scopes**: `repo`
207232
- `body`: The review body text (optional) (string, optional)

go.mod

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ require (
1010
github.com/josephburnett/jd/v2 v2.5.0
1111
github.com/lithammer/fuzzysearch v1.1.8
1212
github.com/microcosm-cc/bluemonday v1.0.27
13-
github.com/modelcontextprotocol/go-sdk v1.6.1
13+
github.com/modelcontextprotocol/go-sdk v1.7.0-pre.1
1414
github.com/muesli/cache2go v0.0.0-20221011235721-518229cd8021
1515
github.com/shurcooL/githubv4 v0.0.0-20240727222349-48295856cce7
1616
github.com/shurcooL/graphql v0.0.0-20230722043721-ed46e5a46466
@@ -40,9 +40,11 @@ require (
4040
github.com/stretchr/objx v0.5.2 // indirect
4141
github.com/subosito/gotenv v1.6.0 // indirect
4242
go.yaml.in/yaml/v3 v3.0.4 // indirect
43-
golang.org/x/net v0.38.0 // indirect
44-
golang.org/x/sys v0.41.0 // indirect
45-
golang.org/x/text v0.28.0 // indirect
43+
golang.org/x/net v0.55.0 // indirect
44+
golang.org/x/sync v0.20.0 // indirect
45+
golang.org/x/sys v0.45.0 // indirect
46+
golang.org/x/text v0.37.0 // indirect
47+
golang.org/x/time v0.15.0 // indirect
4648
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
4749
gopkg.in/yaml.v3 v3.0.1 // indirect
4850
)

go.sum

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ github.com/lithammer/fuzzysearch v1.1.8 h1:/HIuJnjHuXS8bKaiTMeeDlW2/AyIWk2brx1V8
3939
github.com/lithammer/fuzzysearch v1.1.8/go.mod h1:IdqeyBClc3FFqSzYq/MXESsS4S0FsZ5ajtkr5xPLts4=
4040
github.com/microcosm-cc/bluemonday v1.0.27 h1:MpEUotklkwCSLeH+Qdx1VJgNqLlpY2KXwXFM08ygZfk=
4141
github.com/microcosm-cc/bluemonday v1.0.27/go.mod h1:jFi9vgW+H7c3V0lb6nR74Ib/DIB5OBs92Dimizgw2cA=
42-
github.com/modelcontextprotocol/go-sdk v1.6.1 h1:0zOSupjKUxPKSocPT1Wtago+mUHU2/uZ4xSOY0FGReU=
43-
github.com/modelcontextprotocol/go-sdk v1.6.1/go.mod h1:kzm3kzFL1/+AziGOE0nUs3gvPoNxMCvkxokMkuFapXQ=
42+
github.com/modelcontextprotocol/go-sdk v1.7.0-pre.1 h1:GlMIJyMHFX76bBSQuBCLXZ7pB9cGh4VBS6O5wGd0tgI=
43+
github.com/modelcontextprotocol/go-sdk v1.7.0-pre.1/go.mod h1:dL7u98E/zjJTGzEq+j30jQ8K2k1mb6LeAH4inEcSGts=
4444
github.com/muesli/cache2go v0.0.0-20221011235721-518229cd8021 h1:31Y+Yu373ymebRdJN1cWLLooHH8xAr0MhKTEJGV/87g=
4545
github.com/muesli/cache2go v0.0.0-20221011235721-518229cd8021/go.mod h1:WERUkUryfUWlrHnFSO/BEUZ+7Ns8aZy7iVOGewxKzcc=
4646
github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
@@ -92,21 +92,23 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
9292
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
9393
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
9494
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
95-
golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
96-
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
95+
golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8=
96+
golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww=
9797
golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ=
9898
golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
9999
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
100100
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
101101
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
102+
golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
103+
golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
102104
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
103105
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
104106
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
105107
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
106108
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
107109
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
108-
golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=
109-
golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
110+
golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY=
111+
golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
110112
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
111113
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
112114
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
@@ -115,14 +117,16 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
115117
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
116118
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
117119
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
118-
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
119-
golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
120+
golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc=
121+
golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38=
122+
golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=
123+
golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=
120124
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
121125
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
122126
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
123127
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
124-
golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k=
125-
golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0=
128+
golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c=
129+
golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI=
126130
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
127131
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
128132
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=

pkg/github/__toolsnaps__/actions_get.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"annotations": {
3+
"idempotentHint": false,
34
"readOnlyHint": true,
45
"title": "Get details of GitHub Actions resources (workflows, workflow runs, jobs, and artifacts)"
56
},

pkg/github/__toolsnaps__/actions_list.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"annotations": {
3+
"idempotentHint": false,
34
"readOnlyHint": true,
45
"title": "List GitHub Actions workflows in a repository"
56
},

pkg/github/__toolsnaps__/actions_run_trigger.snap

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
{
22
"annotations": {
33
"destructiveHint": true,
4+
"idempotentHint": false,
5+
"readOnlyHint": false,
46
"title": "Trigger GitHub Actions workflow actions"
57
},
68
"description": "Trigger GitHub Actions workflow operations, including running, re-running, cancelling workflow runs, and deleting workflow run logs.",

pkg/github/__toolsnaps__/add_comment_to_pending_review.snap

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
{
22
"annotations": {
3+
"idempotentHint": false,
4+
"readOnlyHint": false,
35
"title": "Add review comment to the requester's latest pending pull request review"
46
},
57
"description": "Add review comment to the requester's latest pending pull request review. A pending review needs to already exist to call this (check with the user if not sure).",

0 commit comments

Comments
 (0)