Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
30 changes: 30 additions & 0 deletions pkg/github/minimal_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -272,8 +272,38 @@ type MinimalProjectStatusUpdate struct {
Creator *MinimalUser `json:"creator,omitempty"`
}

// MinimalPullRequestReview is the trimmed output type for pull request review objects to reduce verbosity.
type MinimalPullRequestReview struct {
ID int64 `json:"id"`
State string `json:"state"`
Body string `json:"body,omitempty"`
HTMLURL string `json:"html_url"`
User *MinimalUser `json:"user,omitempty"`
CommitID string `json:"commit_id,omitempty"`
SubmittedAt string `json:"submitted_at,omitempty"`
AuthorAssociation string `json:"author_association,omitempty"`
}

// Helper functions

func convertToMinimalPullRequestReview(review *github.PullRequestReview) MinimalPullRequestReview {
m := MinimalPullRequestReview{
ID: review.GetID(),
State: review.GetState(),
Body: review.GetBody(),
HTMLURL: review.GetHTMLURL(),
User: convertToMinimalUser(review.GetUser()),
CommitID: review.GetCommitID(),
AuthorAssociation: review.GetAuthorAssociation(),
}

if review.SubmittedAt != nil {
m.SubmittedAt = review.SubmittedAt.Format(time.RFC3339)
}

return m
}

func convertToMinimalIssue(issue *github.Issue) MinimalIssue {
m := MinimalIssue{
Number: issue.GetNumber(),
Expand Down
8 changes: 4 additions & 4 deletions pkg/github/pullrequests.go
Original file line number Diff line number Diff line change
Expand Up @@ -471,12 +471,12 @@ func GetPullRequestReviews(ctx context.Context, client *github.Client, deps Tool
}
}

r, err := json.Marshal(reviews)
if err != nil {
return nil, fmt.Errorf("failed to marshal response: %w", err)
minimalReviews := make([]MinimalPullRequestReview, 0, len(reviews))
for _, review := range reviews {
minimalReviews = append(minimalReviews, convertToMinimalPullRequestReview(review))
}

return utils.NewToolResultText(string(r)), nil
return MarshalledTextResult(minimalReviews), nil
}

// PullRequestWriteUIResourceURI is the URI for the create_pull_request tool's MCP App UI resource.
Expand Down
12 changes: 6 additions & 6 deletions pkg/github/pullrequests_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2005,18 +2005,18 @@ func Test_GetPullRequestReviews(t *testing.T) {
textContent := getTextResult(t, result)

// Unmarshal and verify the result
var returnedReviews []*github.PullRequestReview
var returnedReviews []MinimalPullRequestReview
err = json.Unmarshal([]byte(textContent.Text), &returnedReviews)
require.NoError(t, err)
assert.Len(t, returnedReviews, len(tc.expectedReviews))
for i, review := range returnedReviews {
assert.Equal(t, tc.expectedReviews[i].GetID(), review.ID)
assert.Equal(t, tc.expectedReviews[i].GetState(), review.State)
assert.Equal(t, tc.expectedReviews[i].GetBody(), review.Body)
require.NotNil(t, tc.expectedReviews[i].User)
require.NotNil(t, review.User)
assert.Equal(t, tc.expectedReviews[i].GetID(), review.GetID())
assert.Equal(t, tc.expectedReviews[i].GetState(), review.GetState())
assert.Equal(t, tc.expectedReviews[i].GetBody(), review.GetBody())
assert.Equal(t, tc.expectedReviews[i].GetUser().GetLogin(), review.GetUser().GetLogin())
assert.Equal(t, tc.expectedReviews[i].GetHTMLURL(), review.GetHTMLURL())
assert.Equal(t, tc.expectedReviews[i].GetUser().GetLogin(), review.User.Login)
assert.Equal(t, tc.expectedReviews[i].GetHTMLURL(), review.HTMLURL)
}
})
}
Expand Down