Conversation
Author
|
@SamMorrowDrums gentle ping here. Would love to get this in! |
dawNotPoi
reviewed
Sep 25, 2026
dawNotPoi
left a comment
There was a problem hiding this comment.
I found a Markdown fidelity regression in the new timeline converter; details inline.
louim
force-pushed
the
issue-events-timeline
branch
from
October 2, 2026 13:12
026c405 to
207fe79
Compare
With the issue_events feature flag on, issue_read gets three more methods: - get_events lists the issue's events: labeled, assigned, closed, renamed and so on. - get_timeline lists the timeline, which adds comments, commits, reviews and cross-references to the events. - get_event fetches one event by event_id. The flag keeps the extra methods out of the default issue_read schema. Responses are converted to MinimalIssueEvent and MinimalTimelineItem. The timeline of github#211 (71 entries) goes from 172KB raw to 27KB. Beyond the basic event fields, the minimal types keep: - The issue, as a MinimalIssueRef, on get_event. The caller passes only an event id, so this is the one place the response names the issue. - commit_repository on timeline entries, parsed from commit_url. Referenced and force-push entries often point at a commit in a fork or another repo, and the SHA alone does not say which. - The commit author and committer on committed entries, which have no actor or user. - The review's state, id, dismissal message and commit on review_dismissed events. Commit parents are dropped. Bodies, commit messages and the dismissal message use sanitize.Content. Titles use sanitize.PlainText. This matches get_comments and get. Without the flag, issue_read keeps its current schema (issue_read.snap is unchanged) and returns "unknown method" for the three new methods. With the flag, issue_number leaves the schema's required list because get_event does not take one. The handler still requires it for the other methods. In lockdown mode, get_events and get_timeline drop entries whose author lacks push access, and get_event returns an error, as issue_read:get does. commented and reviewed entries name their author in User instead of Actor, so both are checked. committed entries carry only a name and email, so lockdown drops them. Refs github#984, github#985 Closes github#211 Co-authored-by: Artem Saveliev <artemsaveliev@github.com> Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
louim
force-pushed
the
issue-events-timeline
branch
from
October 2, 2026 14:10
207fe79 to
409db99
Compare
Author
|
@SamMorrowDrums this has been re-aligned with the main branch changes. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds three methods to
issue_readbehind a newissue_eventsfeature flag:get_events,get_timelineandget_event.Why
Agents can read an issue's current state but not its history: who requested reviews, which labels changed, what the title used to be, which commits referenced it. This rebuilds @artemsaveliev's #211 on current
main. #211 predates the go-sdk migration and the merge of the issue read tools intoissue_read, so the methods now live inissue_read.@SamMorrowDrums this grew larger than #211 because the repo changed a lot since. Happy to adjust anything.
Closes #211
Closes #985
Refs #984
What changed
get_eventslists the issue's events.get_timelinelists the timeline, which adds comments, commits, reviews and cross-references.get_eventfetches one event byevent_idand takes noissue_number.MinimalIssueEventandMinimalTimelineItem. Bodies, commit messages and the dismissal message usesanitize.Content. Titles usesanitize.PlainText. This matchesget_commentsandget.IssueReadandIssueReadWithEventsare two variants of the tool, and the flag picks one. This follows the pattern from Expose Copilot review thread resolution reasons #3123.MCP impact
The schema changes only with the flag on. Without it,
issue_read.snapis unchanged and the handler returns "unknown method" for the three new methods.Prompts tested (tool changes only)
Run against the live API on
github/github-mcp-server,cli/cli,golang/goand a private repo.get_timeline)get_events)get_timeline, including cross-repo references)get_event)Also tested: pagination,
renamed,milestone,lock_reason,requested_teamversusrequested_reviewer, and the lockdown paths below.Security / limits
Lockdown follows the existing rules.
get_eventsandget_timelinedrop entries whose author lacks push access, andget_eventreturns an error, asissue_read:getdoes. I checked this against the existingget_commentspath.commentedandreviewedentries name their author inUserinstead ofActor, so both are checked.committedentries carry only a commit name and email, so lockdown drops them.The flag is there because of size: the timeline of #211 (71 entries) is 172KB raw and 27KB trimmed.
Open question for a maintainer: go-github's
Timelinetype has nominimizedfield, so a comment hidden as spam or abuse looks like any other comment. The type also lackshtml_url,author_association,updated_at,reactionsandlock_reason, soget_timelineshows less about a comment thanget_commentsdoes.Tool renaming
Lint & tests
./script/lint(0 issues)./script/test(clean, including-race)script/generate-docsproduces no changes. The only new toolsnap isissue_read_ff_issue_events.snap.Docs
🤖 Generated with Claude Code