Skip to content

Flow and taxonomy

This page is the complete lifecycle and taxonomy reference for Agent UI. It uses a specification style: fields, constraints, lifecycle stages, surfaces, team-workbench rules, and validation cases are listed directly. Background research is tracked in Source index.

Core contract

Agent UI is a projection protocol for agent workbenches. A compatible client consumes ordered runtime facts and projects them into user-visible surfaces without becoming the owner of those facts.

Compatible clients MUST:

  • Preserve runtime event order for the active run.
  • Keep final answer text separate from reasoning, tools, actions, artifacts, evidence, status, diagnostics, and team events.
  • Keep running process visible while work is active; archive completed process into collapsed summaries by default.
  • Preserve team ownership when the runtime exposes coordinators, teammates, child sessions, or remote agents.
  • Route user writes through the owning runtime, policy, artifact, evidence, session, or team-control API.
  • Render unknown or missing facts as unknown, unavailable, stale, or blocked instead of guessing from prose.
  • Support progressive hydration for old sessions, child sessions, remote tasks, and long runs.

Compatible clients MUST NOT:

  • Infer tool success, permission grants, artifact kind, evidence verdicts, approval state, or teammate completion from assistant prose.
  • Duplicate the same runtime fact as both expanded inline process and expanded timeline detail on the same screen.
  • Append final completion text after already streamed text without reconciliation.
  • Treat UI collapse state, selected tab, active pane, or local draft as runtime truth.
  • Treat internal worker notifications as real user messages, even if a source transport delivers them through a user-role channel.
  • Collapse all workers into one anonymous assistant when the runtime exposes agent, task, thread, or team identity.

Lifecycle overview

The canonical flow is:

text
session/thread open
  -> composer draft
  -> listener bind
  -> submit or queue or steer
  -> run accepted
  -> active turn stream
  -> tool/action/team loop
  -> answer/artifact/evidence production
  -> final reconciliation
  -> timeline archive
  -> hydration/repair/replay

The flow applies to web apps, IDEs, desktop apps, terminals, and embedded assistants. The visual layout may differ; the projection rules do not.

Event envelope

Agent UI event adapters SHOULD normalize source events into an envelope with these fields. The public JSON schema is intentionally permissive so products can add fields, but these names are the portable classification layer.

FieldRequiredConstraintsPurpose
typeYesString event class.Drives reducer behavior.
sequenceRecommendedMonotonic within a run, thread, task, or child-agent stream.Preserves active-run order and repair.
timestampRecommendedProducer timestamp when available.Timeline, latency, replay.
sessionIdRecommendedStable id.Session and tab projection.
threadIdRecommendedStable id when different from session.Conversation recovery and branching.
runIdRecommendedStable id for active work.Runtime status and cancellation.
turnIdRecommendedStable id for user turn or model turn.Message/process grouping.
messageIdConditionalRequired for message parts.Text reconciliation.
partIdConditionalRequired for ordered message parts when available.Interleaved rendering.
taskIdConditionalRequired for background tasks, work items, or subagent tasks.Task capsules, work board, task center.
agentIdConditionalRequired when the fact belongs to a child agent, teammate, or remote agent.Team roster, delegation graph, transcript zoom.
parentSessionIdConditionalRequired for child sessions when available.Parent/child lineage and hydration.
parentThreadIdConditionalRequired for child threads when available.Delegation graph and replay.
toolCallIdConditionalRequired for tool lifecycle events.Tool state and progress.
actionIdConditionalRequired for human-in-the-loop events.Approval/input resolution.
artifactIdConditionalRequired for artifact events.Artifact workspace routing.
evidenceIdConditionalRequired for evidence events.Evidence/replay/review routing.
ownerRecommendedOne of the fact owner values below.Prevents UI ownership drift.
scopeRecommendedOne of the scope values below.Defines blast radius and persistence.
phaseRecommendedOne of the phase values below.Drives status and grouping.
surfaceOptionalPrimary intended surface.Rendering hint, not fact owner.
persistenceOptionalOne of the persistence values below.Hydration and retention hint.
controlOptionalUser action connected to the fact.Controlled write mapping.
topologyOptionalOne of the team topology values below.Explains how work is organized.
payloadOptionalStructured data.Producer-owned fact body.
refsOptionalArray or map of ids/refs.Link to artifact, evidence, transcript, files, or raw diagnostics.
rawEventRefOptionalSafe reference, not raw secret-bearing payload.Debug and replay without polluting UI.

Minimal example:

json
{
  "type": "agent.spawned",
  "sequence": 42,
  "sessionId": "session-lead",
  "threadId": "thread-lead",
  "taskId": "task-research",
  "agentId": "researcher@delivery-team",
  "parentSessionId": "session-lead",
  "parentThreadId": "thread-lead",
  "owner": "agent",
  "scope": "agent",
  "phase": "acting",
  "surface": "team_roster",
  "persistence": "snapshot",
  "topology": "coordinator_team",
  "payload": {
    "agentName": "researcher",
    "teamName": "delivery-team",
    "role": "researcher",
    "status": "running"
  }
}

Taxonomy dimensions

Fact owner

owner describes who writes the fact. UI projection may render the fact but must not become its writer.

OwnerWriterExamples
runtimeAgent runtime or protocol adapter.Run lifecycle, queue, interrupts, final outcome.
modelModel response adapter.Text deltas, reasoning summaries, tool call requests.
toolTool runtime or tool adapter.Tool input, progress, output, errors.
actionRuntime or policy action manager.Approval requests, structured user input, plan decisions.
artifactArtifact service.Artifact id, preview, version, diff, export state.
evidenceEvidence, review, or replay service.Citations, traces, verdicts, replay ids, review decisions.
contextContext, memory, or retrieval service.Context refs, budgets, missing context, compaction.
policyPolicy, permission, sandbox, or security service.Risk, permission mode, sandbox, waiver, retention.
taskTask scheduler, work-board service, or subagent runtime.Queue item, background teammate, work item, subagent task.
agentAgent runtime, team runtime, or remote-agent adapter.Teammate identity, availability, handoff, transcript refs.
sessionSession/history service.Thread metadata, hydration cursor, stale state.
diagnosticsRuntime or client diagnostics channel.Non-user-facing debug and performance records.
ui_projectionClient UI controller only.Collapse state, focused tab, local draft, selected artifact.

Scope

scope describes the smallest stable entity affected by the fact.

ScopeUse when
applicationGlobal health, provider availability, or account state.
workspaceWorkspace-local context, policy, or artifact store state.
teamA named team, roster, team preset, or team memory boundary.
sessionA chat session, task session, or app tab.
threadA conversation thread that can be resumed or branched.
runOne runtime execution boundary.
turnOne user turn or model turn inside a thread.
messageOne user, assistant, system, tool, or notification message.
partOne ordered message part.
taskA queue item, work item, background job, or subagent task.
agentA child agent, collaborator, teammate, or remote agent.
tool_callOne tool invocation.
action_requestOne human-in-the-loop request.
artifactOne durable deliverable.
evidenceOne evidence, trace, replay, review, or citation entity.

Phase

phase describes where the fact belongs in the run lifecycle.

PhaseMeaningTypical events
draftUser is composing local input.state.delta for persisted draft only.
submittedUI has submitted or queued input.run.started, queue.changed.
acceptedRuntime accepted work.run.status.
routingRuntime is selecting model, mode, tool surface, worker, or teammate.run.status, task.changed, team.changed.
preparingRuntime is assembling context or request.run.status, context.changed.
planningAgent is producing or updating a plan.plan.delta, plan.final.
reasoningReasoning/thinking is being produced.reasoning.delta, reasoning.summary.
actingTool, command, browser, workflow, teammate, or subagent is running.tool.*, task.changed, agent.changed.
waitingRuntime is blocked on user, permission, dependency, teammate, or queue.action.required, queue.changed, run.status, agent.changed.
reviewingReviewer or verifier is checking an outcome.review.requested, review.completed, evidence.changed.
producingFinal text, artifact, or evidence is being produced.text.delta, artifact.*, evidence.changed.
reconcilingStreamed and final facts are being reconciled.text.final, messages.snapshot.
completedOwning system reported success.run.finished, tool.result, agent.completed.
failedOwning system reported failure.run.failed, tool.failed, artifact.failed, agent.completed.
cancelledUser or runtime cancelled work.run.finished, task.changed.
interruptedWork stopped and may resume from a bookmark.run.finished, state.snapshot, agent.handoff.
archivedCompleted detail is now represented by timeline summaries.messages.snapshot, evidence.changed, worker.notification.
hydratingClient is restoring state from snapshots/history.session.hydrated, messages.snapshot.

Surface

surface is a rendering destination, not an owner.

SurfaceResponsibility
composerDraft, attachments, context chips, mode, queue/steer intent.
conversationUser messages and final assistant answer text.
inline_processActive-run reasoning, tool progress, actions, and status in event order.
runtime_statusAccepted/routing/preparing/streaming/blocked/retrying/failed/done status.
tool_uiTool input summary, live progress, output preview, detail link.
hitlApproval, reject, edit, answer, or structured input controls.
task_capsuleRunning, queued, failed, needs-input, subagent, team, and background jobs.
artifact_workspaceArtifact preview, edit/canvas, version, diff, export, handoff.
timeline_evidenceProcess archive, citations, verification, replay, review, audit.
session_tabsActive, pinned, stale, unread, hydrated, running sessions.
diagnosticsDebug payloads, performance metrics, raw event refs.
team_rosterHuman and agent teammates, role, source, capability, status, model, policy.
work_boardHuman/agent work items, assignee, priority, blocker, progress, dependency.
delegation_graphParent/child tasks, coordinator-worker fanout, wait edges, handoff edges.
handoff_laneActive owner transfer, handoff reason, resume target, memory boundary.
worker_notificationsCompleted/failed/killed worker summaries, result refs, usage, duration.
review_laneReviewer/verifier verdicts, evidence links, requested fixes.
teammate_transcriptZoomed teammate conversation, recent messages, tool activity, pending input.
background_teammateScheduled or triggered background agent as a teammate: wake reason, run record, sleep state.
remote_teammateRemote agent card/capability, task status, input/auth needs, messages, artifacts.
team_policyPer-teammate permission, approval, sandbox, plan mode, budget, and termination controls.

Persistence

PersistenceMeaning
ephemeral_liveUseful only while the run is active.
transcriptRehydrates as part of conversation history.
snapshotStored as bounded recent state or session summary.
archiveStored as timeline/process/team history.
artifact_storeStored by artifact service.
evidence_packStored by evidence/replay/review service.
diagnostics_logStored for debug or performance analysis only.
ui_localClient-only local state.

User control

ControlRequired write boundary
sendRuntime submit API.
queueRuntime queue API.
steerRuntime steer/resume API.
interruptRuntime interrupt API.
delegateRuntime or team-control API that creates a teammate/subagent/remote task.
assignWork-board or team-control API.
continue_agentRuntime/team API that sends input to an existing teammate.
waitRuntime/team API that waits for one or more teammates.
stopRuntime/team API that stops a running teammate or task.
closeRuntime/team API that closes or archives a teammate.
request_reviewReview/evidence service or runtime review API.
approve / rejectRuntime or policy action response API.
answerRuntime action response API for structured input.
editArtifact service or runtime action API.
retryRuntime retry, tool retry, artifact retry, or teammate retry API.
rollbackArtifact or session history API.
exportArtifact or evidence export API.
open_detailRead-only session, artifact, evidence, transcript, or diagnostics API.

Standard event classes

The event class list is open to extension. These classes are the portable baseline.

ClassPurpose
session.openedClient or runtime established a session/thread surface.
session.hydratedSnapshot or history window has been applied.
session.updatedTitle, status, unread, pinned, stale, or cursor changed.
session.closedSession/tab closed or frozen by UI.
run.startedRuntime execution boundary started or was accepted.
run.statusRuntime status phase changed.
run.finishedRuntime finished with success, cancellation, or interrupt.
run.failedRuntime failed and may expose retryability/diagnostics.
plan.delta / plan.finalPlan text or structured plan changed.
text.delta / text.finalAssistant answer text streamed and reconciled.
reasoning.delta / reasoning.summaryReasoning or thinking streamed or summarized outside final text.
tool.startedTool call boundary established.
tool.argsTool input became available or changed while streaming.
tool.progressTool progress or partial output reference changed.
tool.output.deltaTool output streamed in a typed channel.
tool.resultTool completed successfully with output or output reference.
tool.failedTool completed with an error.
action.required / action.resolvedRuntime paused for user or policy decision, then resumed.
queue.changedQueued turns, steer state, or queue order changed.
task.changedBackground task, subagent, work item, or team task changed.
agent.changedChild agent, teammate, collaborator, or remote-agent status changed.
agent.spawned / agent.completedTeammate/worker/remote collaborator started or returned.
agent.handoffActive agent or task owner changed with an explicit reason and resume target.
team.changedTeam roster, selected team, work board, team memory, or team policy changed.
worker.notificationWorker result, failure, kill, usage, or summary notification arrived.
review.requested / review.completedReviewer/verifier request or verdict changed.
context.changedContext selection, budget, retrieval, or missing context changed.
context.compaction.started / context.compaction.completedMemory/context compaction boundary.
permission.changedPolicy, sandbox, approval, waiver, or risk projection changed.
artifact.created / artifact.updatedArtifact was created or updated.
artifact.preview.readyArtifact preview became available.
artifact.version.created / artifact.diff.readyArtifact version or diff became available.
artifact.export.started / artifact.export.completedArtifact export lifecycle.
artifact.failed / artifact.deletedArtifact failure or deletion.
artifact.changedCollapsed adapter event when specific artifact events are unavailable.
evidence.changedCitation, trace, verification, replay, review, audit, or source map changed.
state.snapshot / state.deltaExternal application state or durable runtime state synced.
messages.snapshotMessage history window or repair snapshot synced.
diagnostic.changedSafe diagnostics changed.
metric.changedPerformance or responsiveness metric changed.

Message part taxonomy

Message parts are ordered. A client SHOULD render active parts in arrival order and may archive completed process into a collapsed timeline.

PartOwnerDefault surfaceRule
user_textsession or runtimeconversationShow optimistically after submit and reconcile ids later.
assistant_textmodel or runtimeconversationFinal answer only.
reasoning_summarymodel or runtimeinline_processVisible while running; collapsed after completion.
reasoning_detailmodel or runtimeinline_processShow only when provider policy and user setting allow it.
planmodel or runtimeinline_process or hitlUse plan decision UI if approval is required.
runtime_statusruntimeruntime_statusCompact status, not prose.
tool_callmodel or tooltool_uiShow safe input summary and running state.
tool_resulttooltool_uiShow preview/ref; load full output on demand.
action_requiredaction or policyhitlExplicit CTA with stable request id.
artifact_refartifactartifact_workspaceCompact card in conversation/process; body in workspace.
evidence_refevidencetimeline_evidenceCitation/trace/review link only when backed by evidence facts.
context_eventcontextinline_process or diagnosticsBudget, retrieval, missing context, or compaction summary.
agent_tasktasktask_capsule or work_boardSubagent/team/background job summary.
agent_rosteragentteam_rosterTeammates, roles, status, and capability boundaries.
agent_handoffagenthandoff_lane or delegation_graphActive-agent transfer without rewriting transcript authorship.
worker_notificationagent or taskworker_notifications or timeline_evidenceInternal worker result; not a user message and not final prose.
remote_agent_statusagent or taskremote_teammateRemote task, input/auth need, artifact update, or terminal state.
file_changeartifact or toolartifact_workspace or timeline_evidenceDiff/review surface, not final prose.
errorOwning systemruntime_status, tool_ui, or task_capsuleRecoverable diagnostic and next action.
diagnosticdiagnosticsdiagnosticsHidden by default from normal transcript.

Tool lifecycle

A tool call SHOULD progress through these states when the source protocol provides them.

StateEvent mappingUI rule
input-streamingtool.argsShow partial safe input only if useful and non-sensitive.
input-availabletool.argsShow stable safe input summary.
runningtool.started or tool.progressKeep visible and expanded while active.
progresstool.progress or tool.output.deltaUpdate row, progress bar, preview, or partial output ref.
output-availabletool.resultCollapse to completed row with output preview/ref.
output-errortool.failedShow recoverable error row.
cancelledtool.failed or run.finished with cancellation.Show quiet cancellation unless action is needed.

Large output MUST be offloaded to a detail ref or artifact/evidence ref. Raw secrets MUST be redacted before entering projection state.

Human-in-the-loop taxonomy

Action typeOwnerRequired UI
tool_approvalpolicy or runtimeApprove/reject with tool name, scope, risk, and safe input.
plan_decisionruntimeAccept, reject, or request edits to a proposed plan.
teammate_plan_decisionagent or runtimeIdentify requesting teammate and route response to that teammate, not the parent conversation.
structured_inputactionForm or options with stable schema and request id.
clarificationruntimeAnswer prompt without pretending the run finished.
permission_grantpolicyTime/scope-limited permission state after runtime confirmation.
delegated_permissionpolicy or runtimeApproval card must show the delegated teammate/subagent that requested it.
credential_requestpolicy or secret storeNever expose secret values in message text or diagnostics.
artifact_reviewartifact or evidenceReview diff, version, export, or handoff result.

The UI MUST mark an action resolved only after the owning runtime or policy system confirms the resolution.

Task and multi-agent taxonomy

Agent UI SHOULD classify long-running and multi-agent work separately from the conversation transcript.

ItemScopeDefault surfaceStatus values
Queued turntasktask_capsulequeued, promoted, removed, started.
Work itemtaskwork_boardopen, claimed, running, blocked, reviewing, done.
Background jobtasktask_capsule or background_teammatescheduled, sleeping, waking, running, blocked, paused, failed, completed.
Teammate/subagentagentteam_roster, task_capsule, or session_tabsspawning, running, waiting, needs_input, plan_ready, idle, failed, completed, killed, closed.
Coordinator teamteam or agentteam_roster, delegation_graph, worker_notificationsforming, active, waiting, merging, done.
Specialist handoffagenthandoff_lane or delegation_graphhandoff_requested, accepted, active, returned, resumed.
Review teammateagent or evidencereview_lanerequested, reviewing, passed, changes_requested, failed.
Human/agent boardtask or teamwork_boardassigned, claimed, blocked, commented, done.
Remote teammate tasktask or agentremote_teammatesubmitted, working, input_required, auth_required, completed, failed, canceled, rejected.

Conversation text may mention a task outcome, but task status itself belongs to task/runtime facts. Multi-agent status MUST NOT be flattened into a single assistant author if the source runtime exposes agent/task ownership.

Runtime execution alignment

Agent UI does not require every runtime to use the same internal taxonomy. It does require the UI projection to avoid inventing extra execution categories when the runtime already exposes a smaller set of durable entities. A compatible adapter SHOULD map runtime entities as follows:

Runtime entityAgent UI mappingRequired fieldsUI rule
Foreground agent turnrun.*, queue.changed, task.changed with runtimeEntity=agent_turn.sessionId, threadId, turnId or runId, runtimeStatus, optional queuedTurnCount.Show in runtime status, composer queue, and task capsule; do not create a separate teammate.
Child subagent or teammate turnagent.spawned, agent.changed, task.changed, team.changed with runtimeEntity=subagent_turn.agentId, agentName, parentSessionId, optional parentThreadId, teamName, runtimeStatus, latestTurnStatus.Show as a teammate/child session with lineage; preserve coordinator-worker separation.
Durable automation jobtask.changed and, when agent-owned, agent.changed with runtimeEntity=automation_job.taskId, schedule or wake reason, runtimeStatus, last run ref, optional agentId.Show as background teammate or task capsule; do not create a fourth local runtime taxonomy.
Remote protocol taskagent.changed, task.changed, artifact.changed, action.required with runtimeEntity=external_task.agentId, remoteTaskId, remote capability/card ref, runtimeStatus, input/auth needs.Preserve remote truth while projecting into remote_teammate.
Board work itemtask.changed or team.changed with runtimeEntity=work_item.workItemId, owner/assignee, status, blocker, artifact/evidence refs.Show in work_board; assignment writes through board/team APIs, not runtime status hacks.

Adapters SHOULD preserve queue and parallelism facts such as teamPhase, teamParallelBudget, teamActiveCount, teamQueuedCount, providerConcurrencyGroup, providerParallelBudget, queueReason, and retryableOverload when the runtime provides them.

Team topology taxonomy

Agent UI SHOULD describe the topology that produced the work, because different topologies require different control surfaces. The primary metaphor is a team/workbench: teammates coordinate work, hand off ownership, request review, and preserve evidence. Hierarchy-first metaphors are implementation-specific and are not a required Agent UI topology.

TopologyRequired UI projectionTypical facts
solo_runOne active run with process, tools, artifacts, and evidence.run.*, tool.*, artifact.*.
coordinator_teamCoordinator plus roster, worker tasks, worker result notifications, and synthesis boundary.team.changed, agent.spawned, worker.notification.
parallel_workersFanout/fanin graph, per-worker state, wait controls, partial failures, merge/retry controls.agent.spawned, task.changed, worker.notification, agent.completed.
specialist_handoffActive owner indicator, handoff reason, resume target, memory/context boundary.agent.handoff, agent.changed, messages.snapshot.
review_teamReviewer/verifier lane, verdicts, evidence links, requested fixes.review.requested, review.completed, evidence.changed.
human_agent_boardBoard of human and agent assignees with comments, blockers, claims, progress.team.changed, task.changed, state.delta.
background_teammateWake reason, schedule, background run record, pause/resume, sleep state.task.changed, agent.changed, evidence.changed.
remote_teammateRemote Agent Card/capability, task lifecycle, input/auth required, messages, artifacts.agent.changed, task.changed, artifact.changed, action.required.

Topology is metadata about how work is organized. It does not replace owner, scope, phase, surface, or persistence.

Team workbench contract

A compatible team workbench SHOULD project these facts when the runtime exposes them:

FactRequired fieldsUI rule
Teammate identityagentId, agentName, teamName, role/source, optional color/avatar, model, policy.Show in team_roster; do not merge into anonymous assistant.
Parent/child lineageparentSessionId, parentThreadId, child sessionId/threadId, taskId, spawn reason.Preserve in delegation_graph, history, evidence, and replay.
Worker notificationtaskId, agentId, status, summary, result ref, optional usage/duration/tool count.Show in worker_notifications; it may be archived, but must not masquerade as user speech.
Teammate statusruntimeStatus, latestTurnStatus, queue counts, plus needs_input, plan_ready, idle, shutdown_requested, closed when available.Promote needs_input and plan_ready above normal running state; show queue/parallel limits without treating them as failure.
Teammate transcriptTranscript ref or bounded recent messages, tool activity, pending input queue.Open on demand in teammate_transcript; keep bounded for performance.
Work board itemTitle, assignee, status, blocker, priority, dependencies, artifact/evidence refs.Show in work_board; user assignment writes through board/team API.
HandoffFrom, to, reason, resume target, memory/context boundary, accepted time.Show in handoff_lane; do not rewrite past message authorship.
Review verdictReviewer, target, verdict, evidence refs, requested fixes.Show in review_lane; final answer may summarize, but verdict belongs to evidence/review facts.
Delegated approvalAction id, requesting teammate, policy scope, safe input, parent routing.Approval card must identify the requesting teammate/subagent.
Remote teammateAgent Card/capability ref, remote task id, status, messages, artifact updates, auth/input needs.Map into remote_teammate; do not treat one idle tick as terminal completion.
Background teammateSchedule/wake trigger, current run, last run record, pause/terminate controls.Show as teammate-owned background work, not as a separate hierarchy.

Coordinator synthesis and worker results are different facts. The coordinator may summarize worker output for the user, but the worker result, usage, and transcript refs remain available as task/agent/evidence facts.

Context, memory, and compaction taxonomy

FactOwnerUI rule
Context referencecontextShow as context chip, source ref, or tool/detail link.
Context budgetcontextShow low-noise budget meter or warning.
Missing contextcontextShow blocked or unknown; do not fabricate availability.
Retrieval resultcontext or toolKeep source ids/citations separate from final text.
Memory writecontextShow only if user-visible policy requires it.
Team memorycontext or teamShow repo/team scoped memory refs; redact secrets; keep explicit conflict precedence.
Compaction boundarycontextShow compact boundary or summary; preserve resume metadata.

Permission and security taxonomy

FactOwnerUI rule
Risk levelpolicyShow when it affects user control or required approval.
Sandbox/access modepolicyShow active constraints and escalation requests.
Per-teammate permission modepolicy or agentShow when teammate permissions differ from coordinator permissions.
Approval statepolicy or runtimeNever infer from prose; require action confirmation.
Delegated approval sourcepolicy or runtimePreserve the teammate/subagent that triggered the approval.
Secret-bearing payloadpolicy or secret storeDo not persist in projection state. Use refs/redaction.
Retention/waiverpolicyShow only durable policy facts or evidence refs.

Hydration and repair

A compatible client SHOULD hydrate in this order:

  1. Render shell, tab, title, and lightweight snapshot.
  2. Apply recent message window.
  3. Apply current run status, queue, pending action, task summary, and team summary.
  4. Apply compact process/timeline/artifact/evidence/team references.
  5. Load teammate transcripts, full tool output, artifact body, evidence payload, remote task details, and older history on demand.

Hydration events MUST be stale-safe. If the user switches sessions, late hydration results must not overwrite the active view.

Validation checklist

A compatible implementation SHOULD pass these checks:

  1. Listener binding occurs before submit.
  2. Runtime accepted/routing/preparing status can render before first text.
  3. Active message parts render in event/part order.
  4. Running reasoning and tools remain visible; completed process collapses into summaries.
  5. Final answer text remains clean and is reconciled without duplication.
  6. Tool input/progress/output/error state does not enter final answer text.
  7. Human-in-the-loop actions use stable ids and controlled write APIs.
  8. Queue and steer are visually and semantically distinct.
  9. Artifact body lives in Artifact Workspace, not in the transcript by default.
  10. Evidence, replay, review, and citations link to evidence facts.
  11. Multi-agent and background tasks use task/agent/team facts, not assistant prose.
  12. Team topology is visible when the runtime exposes coordinator, worker, handoff, board, background, review, or remote-agent facts.
  13. Worker notifications are distinguishable from real user messages and coordinator final text.
  14. Parent/child session/thread/task ids survive hydration, replay, evidence export, and transcript zoom.
  15. Delegated approvals identify the teammate/subagent that requested the action.
  16. Context and compaction are surfaced as facts or boundaries, not hidden text mutations.
  17. Missing facts render honest fallback states.
  18. Old sessions hydrate progressively and safely ignore stale results.
  19. Diagnostics and metrics stay outside normal conversation text.

Draft runtime-first standard for agent interaction surfaces.