Skip to content

Commit aee9779

Browse files
committed
Add issue dependency tools for blocked-by relationships
Adds two new tools for managing issue dependencies via GitHub's blocked-by API: - issue_dependency_read: Get issues that block a given issue - issue_dependency_write: Add or remove blocked-by relationships Uses raw REST calls since go-github doesn't yet support the /dependencies/blocked_by endpoints.
1 parent 1820a0f commit aee9779

File tree

7 files changed

+889
-0
lines changed

7 files changed

+889
-0
lines changed

README.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -808,6 +808,30 @@ The following sets of tools are available:
808808
- `owner`: Repository owner (username or organization name) (string, required)
809809
- `repo`: Repository name (string, required)
810810

811+
- **issue_dependency_read** - Get issue dependencies
812+
- **Required OAuth Scopes**: `repo`
813+
- `issue_number`: The number of the issue (number, required)
814+
- `method`: The read operation to perform on issue dependencies.
815+
Options are:
816+
- 'get_blocked_by' - Get the list of issues that block this issue.
817+
(string, required)
818+
- `owner`: Repository owner (string, required)
819+
- `page`: Page number for pagination (min 1) (number, optional)
820+
- `perPage`: Results per page for pagination (min 1, max 100) (number, optional)
821+
- `repo`: Repository name (string, required)
822+
823+
- **issue_dependency_write** - Manage issue dependencies
824+
- **Required OAuth Scopes**: `repo`
825+
- `blocking_issue_id`: The ID (not number) of the issue that blocks this issue (number, required)
826+
- `issue_number`: The number of the issue that is blocked (number, required)
827+
- `method`: The action to perform on issue dependencies.
828+
Options are:
829+
- 'add' - Add a 'blocked by' relationship, indicating this issue is blocked by another issue.
830+
- 'remove' - Remove a 'blocked by' relationship.
831+
(string, required)
832+
- `owner`: Repository owner (string, required)
833+
- `repo`: Repository name (string, required)
834+
811835
- **issue_read** - Get issue details
812836
- **Required OAuth Scopes**: `repo`
813837
- `issue_number`: The number of the issue (number, required)
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": "Get issue dependencies"
5+
},
6+
"description": "Get information about issue dependencies, such as which issues block this issue.",
7+
"inputSchema": {
8+
"properties": {
9+
"issue_number": {
10+
"description": "The number of the issue",
11+
"type": "number"
12+
},
13+
"method": {
14+
"description": "The read operation to perform on issue dependencies.\nOptions are:\n- 'get_blocked_by' - Get the list of issues that block this issue.\n",
15+
"enum": [
16+
"get_blocked_by"
17+
],
18+
"type": "string"
19+
},
20+
"owner": {
21+
"description": "Repository owner",
22+
"type": "string"
23+
},
24+
"page": {
25+
"description": "Page number for pagination (min 1)",
26+
"minimum": 1,
27+
"type": "number"
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": "Repository name",
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: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
{
2+
"annotations": {
3+
"title": "Manage issue dependencies"
4+
},
5+
"description": "Manage issue dependencies by adding or removing 'blocked by' relationships between issues.",
6+
"inputSchema": {
7+
"properties": {
8+
"blocking_issue_id": {
9+
"description": "The ID (not number) of the issue that blocks this issue",
10+
"type": "number"
11+
},
12+
"issue_number": {
13+
"description": "The number of the issue that is blocked",
14+
"type": "number"
15+
},
16+
"method": {
17+
"description": "The action to perform on issue dependencies.\nOptions are:\n- 'add' - Add a 'blocked by' relationship, indicating this issue is blocked by another issue.\n- 'remove' - Remove a 'blocked by' relationship.\n",
18+
"enum": [
19+
"add",
20+
"remove"
21+
],
22+
"type": "string"
23+
},
24+
"owner": {
25+
"description": "Repository owner",
26+
"type": "string"
27+
},
28+
"repo": {
29+
"description": "Repository name",
30+
"type": "string"
31+
}
32+
},
33+
"required": [
34+
"method",
35+
"owner",
36+
"repo",
37+
"issue_number",
38+
"blocking_issue_id"
39+
],
40+
"type": "object"
41+
},
42+
"name": "issue_dependency_write"
43+
}

pkg/github/helper_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ const (
6262
DeleteReposIssuesSubIssueByOwnerByRepoByIssueNumber = "DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue"
6363
PatchReposIssuesSubIssuesPriorityByOwnerByRepoByIssueNumber = "PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority"
6464

65+
// Issue dependency endpoints
66+
GetReposIssuesDependenciesBlockedByByOwnerByRepoByIssueNumber = "GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"
67+
PostReposIssuesDependenciesBlockedByByOwnerByRepoByIssueNumber = "POST /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"
68+
DeleteReposIssuesDependenciesBlockedByByOwnerByRepoByIssueNumberByIssueID = "DELETE /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by/{issue_id}"
69+
6570
// Pull request endpoints
6671
GetReposPullsByOwnerByRepo = "GET /repos/{owner}/{repo}/pulls"
6772
GetReposPullsByOwnerByRepoByPullNumber = "GET /repos/{owner}/{repo}/pulls/{pull_number}"

0 commit comments

Comments
 (0)