-
Notifications
You must be signed in to change notification settings - Fork 29
feat(desktop): rebuild agent activity feed around a classifier registry and twelve render classes #1381
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
feat(desktop): rebuild agent activity feed around a classifier registry and twelve render classes #1381
Changes from all commits
Commits
Show all changes
49 commits
Select commit
Hold shift + click to select a range
0907877
feat(desktop): polish agent-session transcript UI atop declared-owner…
3cf9102
fix(desktop): harden agent transcript reducer
c2ed442
feat(desktop): rebuild agent activity feed taxonomy
d7d9635
feat(desktop): move raw feed toggle into activity settings
c145613
feat(desktop): add activity render-class debug fixture
355ab62
feat(desktop): expand activity debug fixture realism
tellaho 5e45c3c
refactor(desktop): consolidate activity render class presenters
tellaho 42555be
feat(desktop): summarize file edit tool rows with diff stats
tellaho da4ff6e
feat(desktop): vary activity debug fixture samples
tellaho 3860a67
feat(desktop): render file edit tool results as diffs
tellaho 5057fd8
refactor(desktop): refine file edit diff accordion layout
tellaho 8822b39
feat(desktop): group consecutive transcript tool calls
tellaho 3870ba4
docs: add VISION_ACTIVITY for the agent activity feed
1c02357
refactor(desktop): introduce shared activity row primitive
tellaho d95036b
feat(desktop): add structured activity actions
tellaho d562488
feat(desktop): add single-edit cases to activity fixture
tellaho c41df73
fix(desktop): match assistant activity name size
tellaho 4687399
feat(desktop): use fixture identity in activity debug view
tellaho f5d006c
refactor(desktop): centralize transcript row spacing
tellaho cffdfd4
refactor(desktop): set activity row minimum height
tellaho c7b9ec3
fix(desktop): normalize transcript accordion states
tellaho 6f67c02
feat(desktop): show cumulative edit stats in activity groups
tellaho 1c8eddc
refactor(desktop): share user transcript bubble rendering
tellaho 7f743a6
fix(desktop): tighten assistant transcript line height
tellaho c87ec14
fix(desktop): tighten activity list markdown rhythm
tellaho 4a392b3
feat(desktop): add raw activity debug fixture
tellaho 64a1b2c
feat(desktop): support progressive plan activity updates
tellaho 59409b1
fix(desktop): surface prompt context in activity fixture
tellaho 429c06c
fix(desktop): show mock user avatars in activity fixture
tellaho 34ce60c
feat(desktop): show prompt context in modal
tellaho e76cbcd
feat(desktop): link sent activity messages
tellaho f8b6821
fix(desktop): simplify prompt context footer
tellaho 55f19ab
fix(desktop): link transcript message timestamps
tellaho 8bde8c4
fix(desktop): hide non-message transcript timestamps
tellaho 3e775b6
fix(desktop): mirror sent message transcript rows
tellaho 5528700
feat(desktop): polish agent activity feed rows
tellaho 7d2a979
fix(desktop): align activity diff stats
tellaho d54e033
fix(desktop): wrap lifecycle error text inline
tellaho 9771d2d
fix(desktop): render suppressed activity as one-line rows
tellaho 25d3ed2
test(desktop): add activity debug-fixture screenshot specs
c864d4f
fix(desktop): give permission activity its own distinct row treatment
f21f21d
fix(desktop): surface permission transcript rows
031765d
fix(desktop): trim permission row copy
9c4d24e
fix(desktop): tighten activity feed presentation
f0ef544
docs(desktop): keep activity fixture comments current
b5fb976
fix(desktop): remove activity render debug toggle
618f550
test(desktop): remove dead activity debug smoke specs
50a66b3
test(e2e): keep wave huddle placeholder coverage
1c8053b
test(agents): remove debug activity fixtures
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,65 @@ | ||
| # Vision: The Agent Activity Feed | ||
|
|
||
| ## The Problem | ||
|
|
||
| When you delegate work to an agent, you are trusting a process you cannot see. The activity feed is the window into that process — but a window is only useful if you can read it at a glance. A raw input/output dump is not a window; it is a transcript you have to decode. It forces you to *parse* before you can *judge*. | ||
|
|
||
| We wanted a feed you supervise the way you supervise a capable teammate: skim for progress, trust the routine, and catch the one thing that needs you — without reading every line. | ||
|
|
||
| ## Who It Serves | ||
|
|
||
| A developer supervising a delegate. They are not watching for entertainment; they are deciding whether to intervene. Every item in the feed earns its pixels by answering one of three questions: | ||
|
|
||
| - **Comprehension** — *what is it doing, and why?* | ||
| - **Confidence** — *is it going well, or is it stuck or wrong?* | ||
| - **Control** — *do I need to step in, and where?* | ||
|
|
||
| A feed that answers these instantly converts a stream of events into a sense of trajectory. A feed that does not is just noise with a scrollbar. | ||
|
|
||
| ## The Governing Frame: Verb, Object, Outcome | ||
|
|
||
| Every meaningful item is a sentence: **the agent did [verb] to [object] → [outcome].** | ||
|
|
||
| > "Sent a message to #design." · "Edited `runtime.rs` (+12/−3)." · "Reacted 👍 to Marge's review." · "Ran tests → 1248 passed." | ||
|
|
||
| The feed's job is to surface verb, object, and outcome immediately, and to push the supporting detail — full arguments, raw output, the unabridged diff — into progressive disclosure. You read the sentence; you expand only when the sentence makes you want to. | ||
|
|
||
| ## The Render Classes | ||
|
|
||
| Every item resolves to one of twelve presentation classes, organized by how often they are read and how much consequence they carry: | ||
|
|
||
| **The spine — read constantly.** Message (the agent's voice), Buzz relay op (acting on the platform), File-edit (the actual code work), Shell command (the agent's hands), and Tool status & turn lifecycle (the heartbeat). If these are unclear, the feed has failed. | ||
|
|
||
| **High-value context — consulted to judge correctness.** Thought (reasoning, on tap), Plan/Todo (the roadmap and progress bar), Permission (the control gate), and Error (the stop sign). | ||
|
|
||
| **Ambient safety net — rarely read, but must exist.** Generic tool (the honest fallback), Raw rail (ground truth on demand), and Suppressed noise (what we deliberately do not render). | ||
|
|
||
| These are not a wish list. They are the complete taxonomy: every event the agent can emit lands in exactly one class, and the last three guarantee there is always a floor. | ||
|
|
||
| ## Design Principles | ||
|
|
||
| - **Semantics over transport.** Render *what the agent did*, not *which API it used*. A message sent through an MCP tool and the same message sent through a shell `buzz` command render as the identical card. How the agent reached the relay is plumbing; what it did is the contract. | ||
|
|
||
| - **Outcome-first.** Lead with success, failure, or result. The reader decides in under a second whether to expand. The raw dump is the fallback, never the headline. | ||
|
|
||
| - **Mutate in place.** A running action updates its own row from pending to executing to done or failed. One action is one item, not a trail of duplicated status lines. | ||
|
|
||
| - **Never go dark.** The absence of an event is itself information. Silence, idle, and timeout are *rendered states* — "waiting…", "timed out" — never an empty void. This mirrors the rule we hold our agents to: if you didn't show it, it didn't happen. | ||
|
|
||
| - **Failures rise; reads recede.** Salience tracks consequence. Admin actions, writes, and errors are loud. Reads and reasoning are quiet. A buried error is a broken feed. | ||
|
|
||
| - **Resolve references.** Show "#design", "Marge's message", a filename — never a raw event id or pubkey. The reader thinks in names, not hashes. | ||
|
|
||
| - **Coalesce streams.** Chunked text becomes one item. The developer reads a message, not a packet trace. | ||
|
|
||
| - **Honesty over guessing.** A recognized operation gets a semantic card. An unrecognized one degrades to a clean, truthful, generic row. We never fabricate semantics to look richer than we are. | ||
|
|
||
| - **Polished by default, raw on demand.** Curation is the product; the raw rail is the safety net. The toggle between them is a zoom level on the same truth, not a different feed. | ||
|
|
||
| ## What This Earns | ||
|
|
||
| The feed's real job is to **earn delegation.** Visible progress, visible consent, and visible outcomes compound: each turn you watch go well makes you trust the agent with a larger one. Deciding what *not* to show — suppressing heartbeats and internal chatter — is as much a feature as deciding what to show, because suppression is what makes the signal legible. | ||
|
|
||
| A feed built this way is protocol-honest at its base: any compliant agent's messages, thoughts, tool calls, and turns become first-class items regardless of which tools it runs. The Buzz-specific richness — semantic relay cards, the buzz-CLI parser, diff rendering — is a layer of enrichment on top, not a requirement underneath. Non-Buzz agents get a correct, legible feed; Buzz agents get a native one. | ||
|
|
||
| Two altitudes of the same truth. Polished for judgment, raw for debugging. The window stays a window. | ||
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you want this file in here at the project root?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think so! followed convention of other
VISION_*.mddocs