Skip to content

Commit d527f44

Browse files
authored
Merge branch 'main' into fix-get-me-empty-arguments
2 parents 57a334d + 29634da commit d527f44

11 files changed

Lines changed: 1557 additions & 4 deletions

docs/feature-flags.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,4 +281,36 @@ runtime behavior (such as output formatting) won't appear here.
281281
- `repo`: Repository name (string, required)
282282
- `start_line`: Optional 1-based starting line of the window of interest. Only ranges overlapping [start_line, end_line] are returned, clamped to the window. (number, optional)
283283

284+
### `issue_dependencies`
285+
286+
- **issue_dependency_read** - Read issue dependencies
287+
- **Required OAuth Scopes**: `repo`
288+
- `after`: Cursor for pagination. Use the cursor from the previous response. (string, optional)
289+
- `issue_number`: The number of the issue (number, required)
290+
- `method`: The read operation to perform on a single issue's dependencies.
291+
Options are:
292+
1. get_blocked_by - List the issues that block this issue (this issue is blocked by them).
293+
2. get_blocking - List the issues that this issue blocks.
294+
(string, required)
295+
- `owner`: The owner of the repository (string, required)
296+
- `perPage`: Results per page for pagination (min 1, max 100) (number, optional)
297+
- `repo`: The name of the repository (string, required)
298+
299+
- **issue_dependency_write** - Change issue dependency
300+
- **Required OAuth Scopes**: `repo`
301+
- `issue_number`: The number of the subject issue (number, required)
302+
- `method`: The action to perform.
303+
Options are:
304+
- 'add' - create the dependency relationship.
305+
- 'remove' - delete the dependency relationship. (string, required)
306+
- `owner`: The owner of the subject issue's repository (string, required)
307+
- `related_issue_number`: The number of the related issue to link or unlink (number, required)
308+
- `related_owner`: The owner of the related issue's repository. Defaults to 'owner' when omitted. (string, optional)
309+
- `related_repo`: The name of the related issue's repository. Defaults to 'repo' when omitted. (string, optional)
310+
- `repo`: The name of the subject issue's repository (string, required)
311+
- `type`: The relationship direction relative to the subject issue.
312+
Options are:
313+
- 'blocked_by' - the subject issue is blocked by the related issue.
314+
- 'blocking' - the subject issue blocks the related issue. (string, required)
315+
284316
<!-- END AUTOMATED FEATURE FLAG TOOLS -->

docs/insiders-features.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,38 @@ The list below is generated from the Go source. It covers tool **inventory and s
101101
- `repo`: Repository name (string, required)
102102
- `start_line`: Optional 1-based starting line of the window of interest. Only ranges overlapping [start_line, end_line] are returned, clamped to the window. (number, optional)
103103

104+
### `issue_dependencies`
105+
106+
- **issue_dependency_read** - Read issue dependencies
107+
- **Required OAuth Scopes**: `repo`
108+
- `after`: Cursor for pagination. Use the cursor from the previous response. (string, optional)
109+
- `issue_number`: The number of the issue (number, required)
110+
- `method`: The read operation to perform on a single issue's dependencies.
111+
Options are:
112+
1. get_blocked_by - List the issues that block this issue (this issue is blocked by them).
113+
2. get_blocking - List the issues that this issue blocks.
114+
(string, required)
115+
- `owner`: The owner of the repository (string, required)
116+
- `perPage`: Results per page for pagination (min 1, max 100) (number, optional)
117+
- `repo`: The name of the repository (string, required)
118+
119+
- **issue_dependency_write** - Change issue dependency
120+
- **Required OAuth Scopes**: `repo`
121+
- `issue_number`: The number of the subject issue (number, required)
122+
- `method`: The action to perform.
123+
Options are:
124+
- 'add' - create the dependency relationship.
125+
- 'remove' - delete the dependency relationship. (string, required)
126+
- `owner`: The owner of the subject issue's repository (string, required)
127+
- `related_issue_number`: The number of the related issue to link or unlink (number, required)
128+
- `related_owner`: The owner of the related issue's repository. Defaults to 'owner' when omitted. (string, optional)
129+
- `related_repo`: The name of the related issue's repository. Defaults to 'repo' when omitted. (string, optional)
130+
- `repo`: The name of the subject issue's repository (string, required)
131+
- `type`: The relationship direction relative to the subject issue.
132+
Options are:
133+
- 'blocked_by' - the subject issue is blocked by the related issue.
134+
- 'blocking' - the subject issue blocks the related issue. (string, required)
135+
104136
<!-- END AUTOMATED INSIDERS TOOLS -->
105137

106138
---
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
{
2+
"annotations": {
3+
"readOnlyHint": true,
4+
"title": "Read issue dependencies"
5+
},
6+
"description": "Read an issue's dependency relationships in a GitHub repository: the issues that block it (blocked_by) or the issues it blocks (blocking).",
7+
"inputSchema": {
8+
"properties": {
9+
"after": {
10+
"description": "Cursor for pagination. Use the cursor from the previous response.",
11+
"type": "string"
12+
},
13+
"issue_number": {
14+
"description": "The number of the issue",
15+
"type": "number"
16+
},
17+
"method": {
18+
"description": "The read operation to perform on a single issue's dependencies.\nOptions are:\n1. get_blocked_by - List the issues that block this issue (this issue is blocked by them).\n2. get_blocking - List the issues that this issue blocks.\n",
19+
"enum": [
20+
"get_blocked_by",
21+
"get_blocking"
22+
],
23+
"type": "string"
24+
},
25+
"owner": {
26+
"description": "The owner of the repository",
27+
"type": "string"
28+
},
29+
"perPage": {
30+
"description": "Results per page for pagination (min 1, max 100)",
31+
"maximum": 100,
32+
"minimum": 1,
33+
"type": "number"
34+
},
35+
"repo": {
36+
"description": "The name of the repository",
37+
"type": "string"
38+
}
39+
},
40+
"required": [
41+
"method",
42+
"owner",
43+
"repo",
44+
"issue_number"
45+
],
46+
"type": "object"
47+
},
48+
"name": "issue_dependency_read"
49+
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
{
2+
"annotations": {
3+
"title": "Change issue dependency"
4+
},
5+
"description": "Add or remove an issue dependency relationship in a GitHub repository. Use type 'blocked_by' to record that the subject issue is blocked by a related issue, or type 'blocking' to record that the subject issue blocks a related issue. The related issue defaults to the same repository as the subject unless related_owner/related_repo are provided.",
6+
"inputSchema": {
7+
"properties": {
8+
"issue_number": {
9+
"description": "The number of the subject issue",
10+
"type": "number"
11+
},
12+
"method": {
13+
"description": "The action to perform.\nOptions are:\n- 'add' - create the dependency relationship.\n- 'remove' - delete the dependency relationship.",
14+
"enum": [
15+
"add",
16+
"remove"
17+
],
18+
"type": "string"
19+
},
20+
"owner": {
21+
"description": "The owner of the subject issue's repository",
22+
"type": "string"
23+
},
24+
"related_issue_number": {
25+
"description": "The number of the related issue to link or unlink",
26+
"type": "number"
27+
},
28+
"related_owner": {
29+
"description": "The owner of the related issue's repository. Defaults to 'owner' when omitted.",
30+
"type": "string"
31+
},
32+
"related_repo": {
33+
"description": "The name of the related issue's repository. Defaults to 'repo' when omitted.",
34+
"type": "string"
35+
},
36+
"repo": {
37+
"description": "The name of the subject issue's repository",
38+
"type": "string"
39+
},
40+
"type": {
41+
"description": "The relationship direction relative to the subject issue.\nOptions are:\n- 'blocked_by' - the subject issue is blocked by the related issue.\n- 'blocking' - the subject issue blocks the related issue.",
42+
"enum": [
43+
"blocked_by",
44+
"blocking"
45+
],
46+
"type": "string"
47+
}
48+
},
49+
"required": [
50+
"method",
51+
"type",
52+
"owner",
53+
"repo",
54+
"issue_number",
55+
"related_issue_number"
56+
],
57+
"type": "object"
58+
},
59+
"name": "issue_dependency_write"
60+
}

pkg/github/feature_flags.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,13 @@ const FeatureFlagIFCLabels = "ifc_labels"
1616
// is not advertised by default, keeping the tool surface small unless opted in.
1717
const FeatureFlagFileBlame = "file_blame"
1818

19+
// FeatureFlagIssueDependencies is the feature flag name for the issue dependency
20+
// tools (issue_dependency_read / issue_dependency_write), which read and edit an
21+
// issue's blocked-by / blocking relationships. It is gated so these tools are not
22+
// advertised in the default surface, keeping the fixed tool-schema cost small
23+
// unless explicitly opted in.
24+
const FeatureFlagIssueDependencies = "issue_dependencies"
25+
1926
// AllowedFeatureFlags is the allowlist of feature flags that can be enabled
2027
// by users via --features CLI flag or X-MCP-Features HTTP header.
2128
// Only flags in this list are accepted; unknown flags are silently ignored.
@@ -27,6 +34,7 @@ var AllowedFeatureFlags = []string{
2734
FeatureFlagIssuesGranular,
2835
FeatureFlagPullRequestsGranular,
2936
FeatureFlagFileBlame,
37+
FeatureFlagIssueDependencies,
3038
}
3139

3240
// InsidersFeatureFlags is the list of feature flags that insiders mode enables.
@@ -37,6 +45,7 @@ var InsidersFeatureFlags = []string{
3745
MCPAppsFeatureFlag,
3846
FeatureFlagCSVOutput,
3947
FeatureFlagFileBlame,
48+
FeatureFlagIssueDependencies,
4049
}
4150

4251
// FeatureFlags defines runtime feature toggles that adjust tool behavior.

pkg/github/helper_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ const (
6666
PostReposIssuesSubIssuesByOwnerByRepoByIssueNumber = "POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"
6767
DeleteReposIssuesSubIssueByOwnerByRepoByIssueNumber = "DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue"
6868
PatchReposIssuesSubIssuesPriorityByOwnerByRepoByIssueNumber = "PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority"
69+
DeleteReposIssuesIssueFieldValueByOwnerByRepoByIssueNumber = "DELETE /repos/{owner}/{repo}/issues/{issue_number}/issue-field-values/{issue_field_id}"
6970

7071
// Pull request endpoints
7172
GetReposPullsByOwnerByRepo = "GET /repos/{owner}/{repo}/pulls"

0 commit comments

Comments
 (0)