Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit358a415

Browse files
mattdhollowayLuluBeatsonCopilot
authored
Add minimal response to CRUD tools,repositories andsearch toolsets (#988)
* add comprehensive minimal response where appropriate* remove unneeded comments* remove incorrect diff param* update docs* rm comment* Update pkg/github/repositories.goCo-authored-by: Lulu <59149422+LuluBeatson@users.noreply.github.com>* update toolsnaps and docs* change minimal_output to use new OptionalBoolParamWithDefault* Update pkg/github/repositories.goCo-authored-by: Lulu <59149422+LuluBeatson@users.noreply.github.com>* refactor minimal conversion funcs to minimal_types.go* consolidate response structs and remove unneeded message field* consolidate response further* remove CloneURL field* Update pkg/github/repositories.goCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>* Update pkg/github/server.goCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>* fix undefined* change incorrect comment* remove old err var declaration* Update pkg/github/repositories.goCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>* fix syntax issue* update toolsnaps---------Co-authored-by: Lulu <59149422+LuluBeatson@users.noreply.github.com>Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parentb2faa1c commit358a415

15 files changed

+510
-204
lines changed

‎README.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -830,6 +830,7 @@ The following sets of tools are available (all are on by default):
830830
-`repo`: Repository name (string, required)
831831

832832
-**get_commit** - Get commit details
833+
-`include_diff`: Whether to include file diffs and stats in the response. Default is true. (boolean, optional)
833834
-`owner`: Repository owner (string, required)
834835
-`page`: Page number for pagination (min 1) (number, optional)
835836
-`perPage`: Results per page for pagination (min 1, max 100) (number, optional)
@@ -898,6 +899,7 @@ The following sets of tools are available (all are on by default):
898899
-`sort`: Sort field ('indexed' only) (string, optional)
899900

900901
-**search_repositories** - Search repositories
902+
-`minimal_output`: Return minimal repository information (default: true). When false, returns full GitHub API repository objects. (boolean, optional)
901903
-`page`: Page number for pagination (min 1) (number, optional)
902904
-`perPage`: Results per page for pagination (min 1, max 100) (number, optional)
903905
-`query`: Repository search query. Examples: 'machine learning in:name stars:>1000 language:python', 'topic:react', 'user:facebook'. Supports advanced search syntax for precise filtering. (string, required)

‎pkg/github/__toolsnaps__/get_commit.snap‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66
"description":"Get details for a commit from a GitHub repository",
77
"inputSchema": {
88
"properties": {
9+
"include_diff": {
10+
"default":true,
11+
"description":"Whether to include file diffs and stats in the response. Default is true.",
12+
"type":"boolean"
13+
},
914
"owner": {
1015
"description":"Repository owner",
1116
"type":"string"

‎pkg/github/__toolsnaps__/search_repositories.snap‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66
"description":"Find GitHub repositories by name, description, readme, topics, or other metadata. Perfect for discovering projects, finding examples, or locating specific repositories across GitHub.",
77
"inputSchema": {
88
"properties": {
9+
"minimal_output": {
10+
"default":true,
11+
"description":"Return minimal repository information (default: true). When false, returns full GitHub API repository objects.",
12+
"type":"boolean"
13+
},
914
"page": {
1015
"description":"Page number for pagination (min 1)",
1116
"minimum":1,

‎pkg/github/gists.go‎

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,11 @@ func CreateGist(getClient GetClientFn, t translations.TranslationHelperFunc) (to
165165
returnmcp.NewToolResultError(fmt.Sprintf("failed to create gist: %s",string(body))),nil
166166
}
167167

168-
r,err:=json.Marshal(createdGist)
168+
minimalResponse:=MinimalResponse{
169+
URL:createdGist.GetHTMLURL(),
170+
}
171+
172+
r,err:=json.Marshal(minimalResponse)
169173
iferr!=nil {
170174
returnnil,fmt.Errorf("failed to marshal response: %w",err)
171175
}
@@ -249,7 +253,11 @@ func UpdateGist(getClient GetClientFn, t translations.TranslationHelperFunc) (to
249253
returnmcp.NewToolResultError(fmt.Sprintf("failed to update gist: %s",string(body))),nil
250254
}
251255

252-
r,err:=json.Marshal(updatedGist)
256+
minimalResponse:=MinimalResponse{
257+
URL:updatedGist.GetHTMLURL(),
258+
}
259+
260+
r,err:=json.Marshal(minimalResponse)
253261
iferr!=nil {
254262
returnnil,fmt.Errorf("failed to marshal response: %w",err)
255263
}

‎pkg/github/gists_test.go‎

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -321,23 +321,12 @@ func Test_CreateGist(t *testing.T) {
321321
// Parse the result and get the text content
322322
textContent:=getTextResult(t,result)
323323

324-
// Unmarshal and verify the result
325-
vargist*github.Gist
324+
// Unmarshal and verify theminimalresult
325+
vargistMinimalResponse
326326
err=json.Unmarshal([]byte(textContent.Text),&gist)
327327
require.NoError(t,err)
328328

329-
assert.Equal(t,*tc.expectedGist.ID,*gist.ID)
330-
assert.Equal(t,*tc.expectedGist.Description,*gist.Description)
331-
assert.Equal(t,*tc.expectedGist.HTMLURL,*gist.HTMLURL)
332-
assert.Equal(t,*tc.expectedGist.Public,*gist.Public)
333-
334-
// Verify file content
335-
forfilename,expectedFile:=rangetc.expectedGist.Files {
336-
actualFile,exists:=gist.Files[filename]
337-
assert.True(t,exists)
338-
assert.Equal(t,*expectedFile.Filename,*actualFile.Filename)
339-
assert.Equal(t,*expectedFile.Content,*actualFile.Content)
340-
}
329+
assert.Equal(t,tc.expectedGist.GetHTMLURL(),gist.URL)
341330
})
342331
}
343332
}
@@ -486,22 +475,12 @@ func Test_UpdateGist(t *testing.T) {
486475
// Parse the result and get the text content
487476
textContent:=getTextResult(t,result)
488477

489-
// Unmarshal and verify the result
490-
vargist*github.Gist
491-
err=json.Unmarshal([]byte(textContent.Text),&gist)
478+
// Unmarshal and verify theminimalresult
479+
varupdateRespMinimalResponse
480+
err=json.Unmarshal([]byte(textContent.Text),&updateResp)
492481
require.NoError(t,err)
493482

494-
assert.Equal(t,*tc.expectedGist.ID,*gist.ID)
495-
assert.Equal(t,*tc.expectedGist.Description,*gist.Description)
496-
assert.Equal(t,*tc.expectedGist.HTMLURL,*gist.HTMLURL)
497-
498-
// Verify file content
499-
forfilename,expectedFile:=rangetc.expectedGist.Files {
500-
actualFile,exists:=gist.Files[filename]
501-
assert.True(t,exists)
502-
assert.Equal(t,*expectedFile.Filename,*actualFile.Filename)
503-
assert.Equal(t,*expectedFile.Content,*actualFile.Content)
504-
}
483+
assert.Equal(t,tc.expectedGist.GetHTMLURL(),updateResp.URL)
505484
})
506485
}
507486
}

‎pkg/github/issues.go‎

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -872,7 +872,12 @@ func CreateIssue(getClient GetClientFn, t translations.TranslationHelperFunc) (t
872872
returnmcp.NewToolResultError(fmt.Sprintf("failed to create issue: %s",string(body))),nil
873873
}
874874

875-
r,err:=json.Marshal(issue)
875+
// Return minimal response with just essential information
876+
minimalResponse:=MinimalResponse{
877+
URL:issue.GetHTMLURL(),
878+
}
879+
880+
r,err:=json.Marshal(minimalResponse)
876881
iferr!=nil {
877882
returnnil,fmt.Errorf("failed to marshal response: %w",err)
878883
}
@@ -1242,7 +1247,12 @@ func UpdateIssue(getClient GetClientFn, t translations.TranslationHelperFunc) (t
12421247
returnmcp.NewToolResultError(fmt.Sprintf("failed to update issue: %s",string(body))),nil
12431248
}
12441249

1245-
r,err:=json.Marshal(updatedIssue)
1250+
// Return minimal response with just essential information
1251+
minimalResponse:=MinimalResponse{
1252+
URL:updatedIssue.GetHTMLURL(),
1253+
}
1254+
1255+
r,err:=json.Marshal(minimalResponse)
12461256
iferr!=nil {
12471257
returnnil,fmt.Errorf("failed to marshal response: %w",err)
12481258
}

‎pkg/github/issues_test.go‎

Lines changed: 7 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -712,39 +712,12 @@ func Test_CreateIssue(t *testing.T) {
712712
require.NoError(t,err)
713713
textContent:=getTextResult(t,result)
714714

715-
// Unmarshal and verify the result
716-
varreturnedIssuegithub.Issue
715+
// Unmarshal and verify theminimalresult
716+
varreturnedIssueMinimalResponse
717717
err=json.Unmarshal([]byte(textContent.Text),&returnedIssue)
718718
require.NoError(t,err)
719719

720-
assert.Equal(t,*tc.expectedIssue.Number,*returnedIssue.Number)
721-
assert.Equal(t,*tc.expectedIssue.Title,*returnedIssue.Title)
722-
assert.Equal(t,*tc.expectedIssue.State,*returnedIssue.State)
723-
assert.Equal(t,*tc.expectedIssue.HTMLURL,*returnedIssue.HTMLURL)
724-
725-
iftc.expectedIssue.Body!=nil {
726-
assert.Equal(t,*tc.expectedIssue.Body,*returnedIssue.Body)
727-
}
728-
729-
iftc.expectedIssue.Type!=nil {
730-
assert.Equal(t,*tc.expectedIssue.Type.Name,*returnedIssue.Type.Name)
731-
}
732-
733-
// Check assignees if expected
734-
iflen(tc.expectedIssue.Assignees)>0 {
735-
assert.Equal(t,len(tc.expectedIssue.Assignees),len(returnedIssue.Assignees))
736-
fori,assignee:=rangereturnedIssue.Assignees {
737-
assert.Equal(t,*tc.expectedIssue.Assignees[i].Login,*assignee.Login)
738-
}
739-
}
740-
741-
// Check labels if expected
742-
iflen(tc.expectedIssue.Labels)>0 {
743-
assert.Equal(t,len(tc.expectedIssue.Labels),len(returnedIssue.Labels))
744-
fori,label:=rangereturnedIssue.Labels {
745-
assert.Equal(t,*tc.expectedIssue.Labels[i].Name,*label.Name)
746-
}
747-
}
720+
assert.Equal(t,tc.expectedIssue.GetHTMLURL(),returnedIssue.URL)
748721
})
749722
}
750723
}
@@ -1233,45 +1206,12 @@ func Test_UpdateIssue(t *testing.T) {
12331206
// Parse the result and get the text content if no error
12341207
textContent:=getTextResult(t,result)
12351208

1236-
// Unmarshal and verify the result
1237-
varreturnedIssue github.Issue
1238-
err=json.Unmarshal([]byte(textContent.Text),&returnedIssue)
1209+
// Unmarshal and verify theminimalresult
1210+
varupdateRespMinimalResponse
1211+
err=json.Unmarshal([]byte(textContent.Text),&updateResp)
12391212
require.NoError(t,err)
12401213

1241-
assert.Equal(t,*tc.expectedIssue.Number,*returnedIssue.Number)
1242-
assert.Equal(t,*tc.expectedIssue.Title,*returnedIssue.Title)
1243-
assert.Equal(t,*tc.expectedIssue.State,*returnedIssue.State)
1244-
assert.Equal(t,*tc.expectedIssue.HTMLURL,*returnedIssue.HTMLURL)
1245-
1246-
iftc.expectedIssue.Body!=nil {
1247-
assert.Equal(t,*tc.expectedIssue.Body,*returnedIssue.Body)
1248-
}
1249-
1250-
iftc.expectedIssue.Type!=nil {
1251-
assert.Equal(t,*tc.expectedIssue.Type.Name,*returnedIssue.Type.Name)
1252-
}
1253-
1254-
// Check assignees if expected
1255-
iflen(tc.expectedIssue.Assignees)>0 {
1256-
assert.Len(t,returnedIssue.Assignees,len(tc.expectedIssue.Assignees))
1257-
fori,assignee:=rangereturnedIssue.Assignees {
1258-
assert.Equal(t,*tc.expectedIssue.Assignees[i].Login,*assignee.Login)
1259-
}
1260-
}
1261-
1262-
// Check labels if expected
1263-
iflen(tc.expectedIssue.Labels)>0 {
1264-
assert.Len(t,returnedIssue.Labels,len(tc.expectedIssue.Labels))
1265-
fori,label:=rangereturnedIssue.Labels {
1266-
assert.Equal(t,*tc.expectedIssue.Labels[i].Name,*label.Name)
1267-
}
1268-
}
1269-
1270-
// Check milestone if expected
1271-
iftc.expectedIssue.Milestone!=nil {
1272-
assert.NotNil(t,returnedIssue.Milestone)
1273-
assert.Equal(t,*tc.expectedIssue.Milestone.Number,*returnedIssue.Milestone.Number)
1274-
}
1214+
assert.Equal(t,tc.expectedIssue.GetHTMLURL(),updateResp.URL)
12751215
})
12761216
}
12771217
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp