Proto-UI / Proto-UI/Proto-UI

[tracking][dogfood] Build a full Agent Harness interface with Proto UI

Open
#513 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

advanced contribution area: adapters area: prototypes area: spec enhancement F∞ – Needs Split
Dominant language
TypeScript
Stars
35
Forks
15
Avg merge
2d 23h
Merged PRs (30d)
107

Description

Goal

Build a real Agent Harness interface as an internal-HEAD Proto UI dogfood application. Every eligible reusable or behavioral UI surface must be authored through Proto UI prototypes, compositions, modules, host capabilities, adapters, and design-language outputs.

This program does not adopt assistant-ui, CopilotKit, AG-UI UI runtimes, AI Elements, Radix, React Aria, shadcn primitives, or another component/headless Agent UI stack. Competitors and their issue trackers are research evidence only.

The Harness application remains the App Maker and owns Agent-domain data and service behavior such as sessions, threads, runs, messages, tool calls, approvals, artifacts, persistence, transport, retries, and execution. Those domain facts may drive application-local Proto UI prototypes. They must not be promoted into neutral Base subjects merely because the dogfood application needs them.

Completion definition

A Harness surface is dogfooded when:

  • reusable interaction semantics, state transitions, accessibility projection, focus, scrolling, input, dismissal, and visual feedback are owned by Proto UI;
  • application code supplies Agent-domain data, content, service callbacks, and persistence, rather than recreating a parallel UI state machine;
  • no third-party component, headless primitive, chat runtime, or Agent UI framework owns an eligible UI path;
  • any missing general capability is represented by a linked Proto UI Prototype, Composition, Module, Host Capability, Adapter, or spec Issue;
  • every matrix row reaches a final state: dogfooded, app-local-proto, ready, research, blocked, native/static, or infrastructure-exempt.

This parent closes only when no ready, research, or blocked row remains and all required evidence is current.

Architectural boundary

Proto UI-owned interface

At minimum, inventory and dogfood:

  • application shell, responsive navigation, sidebar, panels, tabs, menus, dialogs, sheets, and pane controls;
  • session/thread list, search, rename, status, unread/running indicators, and empty/loading/error states;
  • transcript viewport, message layout, streaming/busy feedback, reasoning disclosure, tool invocation, human approval/input, retry, and jump-to-latest behavior;
  • Composer input, send/stop actions, keyboard policy, validation/error feedback, and attachment presentation;
  • plan/todo, file/subagent hierarchy, artifact shelf, code/log view, diff review, Inspector, and related workbench controls;
  • design-language styling and tokens without an application-owned parallel design system.
App-local Proto UI prototypes

Agent-specific subjects should begin here unless independent cross-application evidence later justifies extraction:

  • HarnessMessage and message-part projection;
  • ToolInvocation;
  • ApprovalRequest / HumanInputRequest;
  • ReasoningTrace;
  • RunStatus / AgentLane;
  • PlanView;
  • ArtifactCard / DiffReview;
  • branch/checkpoint navigation.

These prototypes may own application-domain projection and semantic events, but must compose official Proto UI controls and must not duplicate generic focus, keyboard, scrolling, collection, text-control, overlay, or accessibility state machines.

Native/static and infrastructure exemptions

The matrix may explicitly exempt:

  • Agent backend execution, inference, transport, persistence, authentication, and service orchestration;
  • Markdown parsing, syntax highlighting, diff computation, terminal emulation, or document-model engines when they do not own the surrounding reusable UI contract;
  • plain static document content where the host already owns the complete behavior;
  • adapter/demo infrastructure whose purpose is to compare Proto UI hosts.

Every exemption needs a reason, owner, and re-review trigger. An exemption must not hide user-facing keyboard, focus, scrolling, dismissal, selection, form, or ARIA behavior.

Agent Harness Dogfood Coverage Matrix

M0 must publish one authoritative matrix. Each row records:

  • stable surface ID and application path;
  • user job and current implementation owner;
  • target class: official-prototype, composition, app-local-proto, native/static, or infrastructure-exempt;
  • P/T/M/HC/Adapter/profile IDs and design-language entry where applicable;
  • application-domain state owner and semantic events consumed/emitted;
  • primary production host and React/Vue/WC equivalence evidence required for extracted reusable work;
  • dependency Issue, owner, difficulty, milestone, state, and evidence links;
  • temporary escape hatch and the public Issue that removes it.

Initial row families:

Family Representative surfaces
Shell app frame, responsive navigation, sidebar, workspace panes, mobile sheet
Sessions thread list, search, rename, status, archive/delete actions
Run run header, mode/status, cancel/retry, usage/trace summary
Transcript viewport, Message, message parts, follow-tail, history prepend, jump-to-latest
Agent activity reasoning, steps, tool invocation, subagent lane, progress
Human gates approval, edit-and-approve, reject, generic questionnaire/form input
Composer multiline editor, send/stop, IME-safe keyboard policy, errors, attachments
Workspace plan/todo, file tree, artifacts, code/log, diff review, Inspector
Scale virtualized lists, stable item identity, streaming update batching
Accessibility live announcements, busy regions, focus restoration, keyboard order, zoom/reflow
Advanced host surfaces terminal, document/editor, sandbox/preview

Report category totals separately. Do not publish a single completion percentage that hides blocked or exempt rows.

Program milestones

M0 — Inventory and baseline
  • publish the coverage matrix and application surface inventory;
  • define the consumer/import boundary and primary production host;
  • capture baseline keyboard, accessibility, responsive-layout, streaming, long-list, remount/dispose, theme, and bundle evidence;
  • split independently reviewable child Issues without duplicating existing #374, #388, #389, or #495.
M1 — Fixed-layout all-Proto vertical slice

Build a bounded three-region Harness: session list, transcript + Composer, and artifact tabs. Include User/Assistant messages, streaming text, Code Block, always-visible reasoning, Tool Invocation, inline Approval, Send/Stop, Error/Retry, and code/log artifacts.

M1 intentionally defers pane resizing, virtualization, file intake, Tree, full terminal/editor/browser surfaces, and branch editing.

M2 — Transcript and human interaction maturity
  • Message Scroller follow-tail and anchor preservation;
  • bounded Message, Code Block, and Composer compositions;
  • Collapsible-backed reasoning/tool details after #388 permits the required slice;
  • Questionnaire/review compositions;
  • application-local Agent activity prototypes.
M3 — Workbench capabilities
  • Input/Field-dependent search and forms after #389 prerequisites;
  • hierarchy/Tree, artifact workspace, diff review, plan/todo;
  • relative geometry and Resizable workbench after #495 prerequisites;
  • attachments, Image, and File Intake after the relevant capability decisions, including #374 where applicable.
M4 — Scale, responsive behavior, and enforcement
  • virtualized/windowed Collection and long transcript/log evidence;
  • narrow/mobile layouts, keyboard-only journeys, high contrast, reduced motion, zoom/reflow;
  • static checks preventing third-party UI ownership, raw internal imports outside an allowlist, and app-private generic state-machine drift;
  • repeated mount/unmount/dispose, session switching, streaming updates, and stale callback tests.
M5 — Advanced host surfaces

Research and separately admit Terminal, text-document/editor, and sandbox/preview host domains only after the core Harness is useful. Do not overload Textarea or Code Block with those responsibilities.

Existing dependencies and non-duplicates

  • #377 — authoritative prototype classification and publication governance.
  • #500 / merged #501 — initially-private @proto.ui/compositions-chatui ownership decision; Message and Code Block remain independently reviewable and need separate implementation authorization.
  • #388 — Collapsible/Accordion semantic work; this program must not open a duplicate Base Collapsible proposal.
  • #389 — Base Input / Text Control prerequisite path; this program consumes it rather than creating a parallel input protocol.
  • #374 — Image View semantic boundary; Attachment preview work must not invent a shadow Image owner.
  • #495 — relative geometry, constrained drag-to-value, and interruptible motion research; Resizable/workbench work must reconcile with it.
  • #420 — website self-hosting program; useful dogfood governance precedent but independent scope.

Child-Issue rules

Do not assign this parent as one implementation task. Each child must name:

  • exact matrix rows and user journeys;
  • current Proto UI entities and missing prerequisite;
  • semantic owner and negative boundary;
  • browser/adapter/accessibility evidence;
  • non-goals and dependency Issues;
  • whether the child is research, proposal/checkpoint, app-local dogfood, or authorized implementation.

Creating a child Issue does not itself authorize implementation where the repository requires a maintainer semantic or implementation checkpoint.

Acceptance criteria

Inventory and architecture
  • Every user-facing Harness surface has exactly one matrix row and target class.
  • No eligible surface is owned by a third-party component/headless/chat/Agent UI library.
  • Application code contains no duplicate generic keyboard, pointer, focus, collection, scroll, dismissal, text-control, form, or ARIA state machine.
  • App-local Agent prototypes are clearly separated from neutral Base and reusable compositions.
  • Every generalizable gap has a public dependency Issue and removal path for temporary escapes.
Functional journeys
  • Create/select a session, send a prompt, observe streaming output, stop a run, retry an error, inspect a tool call, resolve an approval, and open an artifact entirely through Proto UI-owned controls.
  • Switching sessions during streaming does not leak state, focus, listeners, or stale callbacks.
  • Transcript follow-tail pauses on user scroll and recovers through an explicit jump-to-latest control.
  • Long histories/logs remain responsive after the scale milestone.
  • Responsive layouts retain reachable controls and preserve the active work context.
Accessibility and host evidence
  • Keyboard order, activation, disclosure, selection, Escape/dismissal, focus restoration, visible focus, accessible names/roles/states, and announcements are verified.
  • IME composition is not mistaken for Composer submission.
  • Busy and live-region behavior avoids token-by-token announcement spam.
  • 320px, 390px, desktop, zoom/reflow, forced-colors/high-contrast, and reduced-motion evidence is recorded where applicable.
  • Extracted reusable slices have real WC/React/Vue equivalence evidence; non-Web claims require separate host evidence.
Enforcement
  • Static checks reject forbidden third-party UI imports and untracked matrix rows.
  • Ordinary app UI consumes approved public/private dogfood surfaces rather than raw Core/Runtime/Module APIs outside a reviewed integration allowlist.
  • Focused contract and browser tests cover every new Proto UI capability introduced by this program.
  • The final matrix contains no ready, research, or blocked row.

Out of scope

  • Making this program a v0.3 release blocker.
  • Treating Agent-domain data/runtime semantics as automatic Base candidates.
  • Building an Agent workflow designer before the end-user Harness is useful.
  • Reimplementing an LLM/Agent runtime inside Proto UI.
  • Claiming that a static Code Block is a terminal or that Textarea is a production code editor.
  • Manufacturing prototypes only to improve a dogfood percentage.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with M0: publish the authoritative coverage matrix and application surface inventory, then define the consumer/import boundary and primary production host. Review the listed milestones, dependencies, and child-issue rules before selecting a bounded child; the program is done only when every matrix row has a final state and the required functional, accessibility, host, and enforcement evidence is current.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
frontend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.