Problem
Compact tool activity is meant to reduce tool/debug noise while preserving the agent timeline. The current live Session stream can hide visible interim assistant progress from the main live timeline, making an active run appear to show only Activity/compression/tool chrome instead of the concise progress text the agent emitted.
This is a contract regression, not a request for a new surface.
Expected behavior
- Visible
interim_assistant progress text remains visible in the live Session timeline without requiring the user to expand Activity details.
- Compact Activity may group tool/debug metadata and Thinking details, but it must not make user-visible progress collapsed-only or effectively invisible.
- Live SSE and journal/replay paths continue to preserve a chronological agent work story.
Current evidence
The current Settings copy says Compact tool activity should preserve the timeline:
static/index.html: Show thinking and tool calls as compact inline activity while preserving the agent timeline.
api/config.py: render tools/thinking as compact inline timeline activity
PR #2466 clarified the product contract:
- Compact activity means quieter inline activity while preserving the timeline.
- Long-running agent work needs visible chronological progress.
- Compact mode should reduce visual noise, not erase chronology.
The run-state consistency contract also points in the same direction:
docs/rfcs/webui-run-state-consistency-contract.md says visible transcript, live stream / SSE, run journal / replay, and live UI scene/cache must remain coherent.
- It specifically calls out preserving chronological live-scene order and replaying Thinking / progress / tool / compression turns through the same timeline renderer.
Suspected regression path
PR #2638 changed the compact Activity semantics in the opposite direction:
- "Render settled and live Compact-mode Thinking inside the shared Activity disclosure instead of separate transcript blurbs."
- "Stop interim assistant text from splitting the current live Activity group."
That made compact mode prefer a single shared Activity disclosure over visible interim progress timeline boundaries.
PR #2777 later fixed an adjacent rendering loss by adding _flushPendingSegmentRender() before segment reset, but it did not restore the product contract that visible interim assistant progress belongs in the live Session timeline. In the current interim_assistant path, the flush also runs before ensureAssistantRow(true), so interim-only segments can still miss a live assistant body to render into before reset.
Acceptance criteria
- Visible
interim_assistant progress text renders as visible assistant timeline content in the live Session stream.
- Compact Activity still groups tool/debug details and does not reintroduce noisy expanded tool stacks by default.
- Visible interim progress is not available only inside a collapsed Activity disclosure.
- The
interim_assistant -> tool and interim_assistant -> compressing boundaries are covered by regression tests.
- Tests and docs encode the product contract: Compact Activity reduces noise, but must preserve visible progress in the live agent timeline.
Non-goals
- No new UI surface.
- No rewrite of compact Activity.
- No change to provider/runtime callback semantics unless required to preserve the existing visible-progress contract.
Problem
Compact tool activityis meant to reduce tool/debug noise while preserving the agent timeline. The current live Session stream can hide visible interim assistant progress from the main live timeline, making an active run appear to show only Activity/compression/tool chrome instead of the concise progress text the agent emitted.This is a contract regression, not a request for a new surface.
Expected behavior
interim_assistantprogress text remains visible in the live Session timeline without requiring the user to expand Activity details.Current evidence
The current Settings copy says Compact tool activity should preserve the timeline:
static/index.html:Show thinking and tool calls as compact inline activity while preserving the agent timeline.api/config.py:render tools/thinking as compact inline timeline activityPR #2466 clarified the product contract:
The run-state consistency contract also points in the same direction:
docs/rfcs/webui-run-state-consistency-contract.mdsays visible transcript, live stream / SSE, run journal / replay, and live UI scene/cache must remain coherent.Suspected regression path
PR #2638 changed the compact Activity semantics in the opposite direction:
That made compact mode prefer a single shared Activity disclosure over visible interim progress timeline boundaries.
PR #2777 later fixed an adjacent rendering loss by adding
_flushPendingSegmentRender()before segment reset, but it did not restore the product contract that visible interim assistant progress belongs in the live Session timeline. In the currentinterim_assistantpath, the flush also runs beforeensureAssistantRow(true), so interim-only segments can still miss a live assistant body to render into before reset.Acceptance criteria
interim_assistantprogress text renders as visible assistant timeline content in the live Session stream.interim_assistant -> toolandinterim_assistant -> compressingboundaries are covered by regression tests.Non-goals