Skip to content
Merged
Show file tree
Hide file tree
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…
Jun 25, 2026
3cf9102
fix(desktop): harden agent transcript reducer
Jun 29, 2026
c2ed442
feat(desktop): rebuild agent activity feed taxonomy
Jun 30, 2026
d7d9635
feat(desktop): move raw feed toggle into activity settings
Jun 30, 2026
c145613
feat(desktop): add activity render-class debug fixture
Jun 30, 2026
355ab62
feat(desktop): expand activity debug fixture realism
tellaho Jun 30, 2026
5e45c3c
refactor(desktop): consolidate activity render class presenters
tellaho Jun 30, 2026
42555be
feat(desktop): summarize file edit tool rows with diff stats
tellaho Jun 30, 2026
da4ff6e
feat(desktop): vary activity debug fixture samples
tellaho Jun 30, 2026
3860a67
feat(desktop): render file edit tool results as diffs
tellaho Jun 30, 2026
5057fd8
refactor(desktop): refine file edit diff accordion layout
tellaho Jun 30, 2026
8822b39
feat(desktop): group consecutive transcript tool calls
tellaho Jun 30, 2026
3870ba4
docs: add VISION_ACTIVITY for the agent activity feed
Jun 30, 2026
1c02357
refactor(desktop): introduce shared activity row primitive
tellaho Jun 30, 2026
d95036b
feat(desktop): add structured activity actions
tellaho Jun 30, 2026
d562488
feat(desktop): add single-edit cases to activity fixture
tellaho Jun 30, 2026
c41df73
fix(desktop): match assistant activity name size
tellaho Jun 30, 2026
4687399
feat(desktop): use fixture identity in activity debug view
tellaho Jun 30, 2026
f5d006c
refactor(desktop): centralize transcript row spacing
tellaho Jun 30, 2026
cffdfd4
refactor(desktop): set activity row minimum height
tellaho Jun 30, 2026
c7b9ec3
fix(desktop): normalize transcript accordion states
tellaho Jun 30, 2026
6f67c02
feat(desktop): show cumulative edit stats in activity groups
tellaho Jun 30, 2026
1c8eddc
refactor(desktop): share user transcript bubble rendering
tellaho Jun 30, 2026
7f743a6
fix(desktop): tighten assistant transcript line height
tellaho Jun 30, 2026
c87ec14
fix(desktop): tighten activity list markdown rhythm
tellaho Jun 30, 2026
4a392b3
feat(desktop): add raw activity debug fixture
tellaho Jun 30, 2026
64a1b2c
feat(desktop): support progressive plan activity updates
tellaho Jun 30, 2026
59409b1
fix(desktop): surface prompt context in activity fixture
tellaho Jun 30, 2026
429c06c
fix(desktop): show mock user avatars in activity fixture
tellaho Jun 30, 2026
34ce60c
feat(desktop): show prompt context in modal
tellaho Jun 30, 2026
e76cbcd
feat(desktop): link sent activity messages
tellaho Jun 30, 2026
f8b6821
fix(desktop): simplify prompt context footer
tellaho Jun 30, 2026
55f19ab
fix(desktop): link transcript message timestamps
tellaho Jun 30, 2026
8bde8c4
fix(desktop): hide non-message transcript timestamps
tellaho Jun 30, 2026
3e775b6
fix(desktop): mirror sent message transcript rows
tellaho Jun 30, 2026
5528700
feat(desktop): polish agent activity feed rows
tellaho Jun 30, 2026
7d2a979
fix(desktop): align activity diff stats
tellaho Jun 30, 2026
d54e033
fix(desktop): wrap lifecycle error text inline
tellaho Jun 30, 2026
9771d2d
fix(desktop): render suppressed activity as one-line rows
tellaho Jun 30, 2026
25d3ed2
test(desktop): add activity debug-fixture screenshot specs
Jun 30, 2026
c864d4f
fix(desktop): give permission activity its own distinct row treatment
Jun 30, 2026
f21f21d
fix(desktop): surface permission transcript rows
Jun 30, 2026
031765d
fix(desktop): trim permission row copy
Jun 30, 2026
9c4d24e
fix(desktop): tighten activity feed presentation
Jun 30, 2026
f0ef544
docs(desktop): keep activity fixture comments current
Jun 30, 2026
b5fb976
fix(desktop): remove activity render debug toggle
Jun 30, 2026
618f550
test(desktop): remove dead activity debug smoke specs
Jun 30, 2026
50a66b3
test(e2e): keep wave huddle placeholder coverage
Jun 30, 2026
1c8053b
test(agents): remove debug activity fixtures
Jun 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 65 additions & 0 deletions VISION_ACTIVITY.md
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*.
Comment on lines +1 to +5

Copy link
Copy Markdown
Collaborator

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?

Copy link
Copy Markdown
Collaborator Author

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_*.md docs


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.
7 changes: 6 additions & 1 deletion desktop/scripts/check-file-sizes.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ const overrides = new Map([
// unify refactor followup. +26 for resolve_effective_prompt_model_provider
// re-introduced after 826d735fe removal (config-bridge caller still needs it).
// PGID resolution helper + PID-recycling safety guard added for orphan sweep.
// activity-feed threads avatar_url into build_managed_agent_summary for the
// assistant-bubble pinned snapshot.
["src-tauri/src/managed_agents/runtime.rs", 2150],
// applyWorkspace reposDir parameter plus the validateReposDir binding,
// threaded through Tauri invokes for configurable repos_dir, plus the
Expand Down Expand Up @@ -121,14 +123,17 @@ const overrides = new Map([
["src/features/channels/readState/readStateManager.ts", 1030],
// Shared UI was added to this guard after splitting globals/markdown so
// large shared renderers cannot grow further while follow-up splits land.
["src/shared/ui/markdown.tsx", 2082],
["src/shared/ui/markdown.tsx", 2119],
["src/shared/ui/VideoPlayer.tsx", 2199],
["src/shared/ui/sidebar.tsx", 1042],
// Option C databricks-model-discovery: parse/HTTP logic moved to buzz-agent
// catalog module; agent_models.rs retains the thin wrapper (~50 lines).
// File still exceeds 1000 due to OpenAI/Anthropic discovery + subprocess
// fallback. Queued to split into dedicated discovery modules.
["src-tauri/src/commands/agent_models.rs", 1066],
// Kept activity-feed design fixture: realistic prompt context and tool-heavy
// chatter for render-class test/reference coverage. Queued to split with the
// rest of this list if it grows further.
]);

await runFileSizeCheck({
Expand Down
1 change: 1 addition & 0 deletions desktop/src-tauri/src/managed_agents/runtime.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1539,6 +1539,7 @@ pub fn build_managed_agent_summary(
max_turn_duration_seconds: record.max_turn_duration_seconds,
parallelism: record.parallelism,
system_prompt: record.system_prompt.clone(),
avatar_url: record.avatar_url.clone(),
model: record.model.clone(),
provider: record.provider.clone(),
persona_out_of_date,
Expand Down
1 change: 1 addition & 0 deletions desktop/src-tauri/src/managed_agents/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,7 @@ pub struct ManagedAgentSummary {
pub max_turn_duration_seconds: Option<u64>,
pub parallelism: u32,
pub system_prompt: Option<String>,
pub avatar_url: Option<String>,
pub model: Option<String>,
/// LLM inference provider, from the agent's pinned record snapshot.
pub provider: Option<String>,
Expand Down
Loading
Loading