Repository navigation
fix(core): omit read media from the experimental timeline - #56989
kitlangton wants to merge 1 commit into
Conversation
|
Session-load coordination from Argon’s HOME audit: read results hold 412.1 MB, execute results 36.3 MB, and user.files 53.5 MB. I am checking a small follow-up extending this omission to execute while retaining full single-message/model-context reads, rather than duplicating this PR. User attachments need a separate on-demand renderer/restore path; #56991 currently rehydrates message lists, so storage externalization alone will not remove their wire bytes. |
|
Execute follow-up is ready to fold into this PR: commit It extends the same list-only omission to Synthetic 40-message page with one 2.55 MB execute image, measured through real
Payload drops 99.08%. One warmup and seven measured runs per variant on M5 Max through HiveMind. Batches were consecutive, not interleaved; timing ranges overlap. Payload is the accepted win, not a claim of faster newest-message painting or Argon's estimated 360 ms decode saving. Measured times in order, excluding warmup:
Reproduce from Argon's HOME baseline attributes 412.1 MB to read, 36.3 MB to execute, and 53.5 MB to user files. This does not solve user-file hydration: previews and edit/fork/resend need original bytes. Coordination for the reserved session-ui attachment hook is recorded on OCD-58. |
a2b18aa to
dfd8e94
Compare
61f59df to
292fcfa
Compare
31876e3 to
976943f
Compare
292fcfa to
a745233
Compare
a745233 to
e27ddc3
Compare
e27ddc3 to
f7a1c9f
Compare

What it does
Stacked on #57729. Merge that first, then retarget this PR to beta.
The experimental timeline route (
GET /api/experimental/session/:sessionID/timeline) also omits inlinedata:files from read-tool results. The app already opens those images by path. Execute screenshots stay inline.The stable API is unchanged.
GET /api/session/:sessionID/message, single-message reads, exports and transfers keep every byte. No stored rows change.How it works
When the store builds the timeline projection, it filters
data:files out of completed or erroredreadtool content. If that leaves the content empty, it keeps the read tool's usual "Image read successfully" text. The route's schema description says so.Risk
Desktop/web timeline only. An inline read image is no longer in the timeline payload, so it is only viewable through the path-based file viewer.
Proof
Latest 40 messages on a HOME-shaped fixture: 2,604,594 → 57,720 B.
bun test test/message.test.ts(server): 3 pass. The stable list returns the read media; the timeline omits it and keeps execute media.session.message.getreturns full bytes.tsc -bin core, server and protocol: pass.origin/beta.