feat: add a timeline_event transcript card - #3814
Merged
Merged
Conversation
Dedicated tool-call card for timeline_event (previously rendered by the generic fallback): ask-mode category chip in the header, a preview of the feed row as it lands in the Timeline tab, and an explicit throttled state for recorded:false results. Change-Id: I119a8d893a47534b59f25a548e8524eb8873840d Signed-off-by: Thomas Kosiewski <tk@coder.com>
Member
Author
|
@codex review |
|
Codex Review: Didn't find any major issues. Another round soon, please! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Aug 6, 2026
github-merge-queue
Bot
removed this pull request from the merge queue due to no response for status checks
Aug 6, 2026
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 a dedicated transcript card for the
timeline_eventtool, which currently falls back to the generic renderer. Collapsed, the agent's one-sentence note is the summary, tagged with an ask-mode category chip. Expanded, the card previews the row exactly as it lands in the Timeline tab (ask-mode ink, Sparkles ring, category badge) under its day header, and explains where to find it.Background
The durable workspace timeline landed in #3755/#3756 with the
timeline_eventtool, but calls render as generic JSON dumps in the transcript. The card design comes from the Mux Design System mockup (Timeline Event Tool Call.html), bound here to the real backend shapes rather than the mockup's idealized ones.Implementation
TimelineEventToolResultSchema(+ derivedTimelineEventToolArgs/TimelineEventToolResulttypes) — the real result is{ success: true, recorded: boolean }, whererecorded: falsemeans TimelineService throttled the note (duplicate or rate-limited) and nothing was written. The card surfaces that as an amber "Not recorded" chip plus an explanation instead of a preview that would overstate what happened.TimelineEventRow's agent-authored variant. To keep it provably in sync with the tab, the row icon comes from the sharedgetTimelinePresentation("agent.event"), and the day/time formatters (getTimelineDayLabel,formatTimelineTime) are extracted fromTimelinePanel.tsxintotimelinePresentation.tsand used by both. The preview's day header and time cell derive fromtoolCallTimestampand are omitted when unavailable — nothing is fabricated.unwrapResultfor the SDK JSON container,safeParsefor self-healing on malformed persisted results, and both persisted error shapes ({ success: false, error }and the nested bare{ error }).getToolComponent.ts; header icon (Sparkles, matching the feed'sagent.eventrows) inTOOL_NAME_TO_ICON.Validation
picked_up→ "picked up", missing category → "Agent"), both error shapes, JSON-container unwrap, and timestamp gating.pixel: PIXEL_DISABLEDsince the repo-wide budget is at its ceiling.bun test srcmatches the clean-main baseline exactly (the same 30 pre-existing env-dependent failures, none in touched areas); TimelinePanel's 16 jest tests and a static Storybook build pass.Risks
Low. The card and registry entry are new code paths gated to
timeline_event. The only shared-code change is moving the day/time formatters out ofTimelinePanel.tsx(behavior-preserving, covered by the existing timeline jest suite).