Skip to main content

Pattern · Applications

Agent Workbench

Application recipe composed from public TermRock building blocks; domain state and effects remain host-owned.

Kind
pattern
Input
interactive
Canvas
120×40

Live preview

Loading terminal preview.

Static terminal poster. Choose Run live to start the Rust demo.

Ghosttyagent-workbench/basic
Loading terminal poster…
○ loading posterNo input — rendered state only
Agent Workbench · exact mounted Rust story

01 · Purpose

What it is for

Application recipe composed from public TermRock building blocks; domain state and effects remain host-owned.

Best fit: Applications · application · DiffReview · List · ModeRibbon

02 · Behavior

What the mounted story proves

  1. 01

    AgentWorkbench

    Representative 120×40 terminal state.

  2. 02

    Passive paint

    No keyboard or pointer action is claimed by this representative story.

  3. 03

    Evidence stays explicit

    0 covered · 9 partial · 5 missing axes.

03 · Implement

Install, then start from exact code

Install

cargo add termrock --git https://github.com/tailrocks/termrock.git --rev 5283c2acf9154d0cfcd37b1ffe821c00faf90ea2

Add TermRock once. Keep domain effects in the host application.

Minimal implementation

Exact Rust setup used by agent-workbench/basic.

Open to load code.

04 · Adapt

Variants and composition

Public building blocks

DiffReview · List · ModeRibbon · Panel · PermissionPrompt · PromptComposer · QuestionFlow · StatusBar · Transcript

Supporting types

DiffHunk · ListRow · NavItem · NavItemStatus · PermissionRequest · PermissionRisk · Question · QuestionOption · QuestionSet · SemanticStatus · StatefulWidget · StatusSlot · TranscriptBlock · Widget

05 · Reference

API, tokens, accessibility

API

AgentWorkbenchOpen source ↗

Tokens

DesignSystemInspect exact story code for roles and capability projection.

Accessibility

Input contract mountedNo input claim in the representative story.

Contract

Evidence in progress0/23 axes covered

06 · Go deeper

Advanced guidance

Authored implementation guidance

Composition pattern for an agent shell. Not a product agent — consumers own wording, tools, policy, and effects. Source-owned registry block (migration 0236).

When to use

Use AgentWorkbenchPrefer
Multi-pane agent UI (tasks + thread + prompt + activity)Custom layout from Workspace + widgets
Trust gates / plan / diff over the shellStandalone elevated widgets
Free-form agent input onlyPromptComposer alone

Canonical chrome (sole path)

ConcernType
TasksTaskRail / ActivityModel (legacy List fallback)
StreamTranscript (MessageThread may project into same center)
ActivityActivityShelf / ActivityItem
WorkingWorkingStateCard
PromptPromptComposer / PromptComposerState
PermissionPermissionPrompt / PermissionPromptState
Question / Plan / Diff / SessionQuestionFlow, PlanReview, DiffReview, SessionPicker
Focus / Esc layersInteractionScene via AgentWorkbenchState

Deleted duals: ApprovalCard, PromptBox on the agent path (migration 0063 / elevated 0236).

Anatomy

┌ TaskRail ──┬ Transcript ───────────────┐
│            │                           │
│            ├ ActivityShelf ────────────┤
├────────────┴ WorkingState ─────────────┤
│ Mode ribbon + PromptComposer           │
├────────────────────────────────────────┤
│ Status                                 │
└────────────────────────────────────────┘
        ┌ Permission / Plan / Diff / … ┐
        └──────────────────────────────┘
  • Focus chrome: PanelChrome::Focused only on the pane that owns scene focus.
  • Overlays are dismissible scene layers; one-layer Esc. Composer draft is never cleared by overlays.
  • Densities: Normal (≥72) · Narrow (40–71) · Tiny (<40).

Laws

LawDetail
DraftOverlays never clear PromptComposerState
EscOne dismissible layer peels; no grant / submit
FocusTab cycles TaskRail → Transcript → Activity → Prompt
Public onlyPattern uses public widgets + layout/scene only
Host owns I/OOutcomes are requests
Ownership boundary

TermRock owns reusable terminal rendering and interaction state. The host owns domain data, policy, persistence, authorization, and side effects.

Evidence status

0 covered, 9 partial, and 5 missing contract axes. Missing evidence is not a behavior claim.