Skip to content

Studio UI Workbench Showcase

A browser-renderable surface over the accepted Stream 5 seams: the generated Jami factory theme, the generated registry and suite descriptors, the resident renderer, and the workbench presentation seam. Policy, tool execution, memory, and provenance stay owned by Jami Harness; this surface only displays and configures.

Theme

Suite lanes

Each lane renders from generated suite manifests, mounted React route artifacts, and primitive-factory state evidence: app-shell navigation, route maps, page/block/component parts, install graph metadata, and long-content/empty/error states. These are local server-rendered React implementations, not a claim of hosted runtime.

Solo / general workflow (solo)

generated shell route

Solo / general-workflow suite foundation: install-graph descriptor for the calendar, forms, docs, agent, tasks, and simple CRM/content/admin lane.

manifest
@jami-studio/solo-suite
schema version
2026-06-09.registry-foundation
install graph
solo-suite -> jami-theme, button, panel, text-field, data-list, agent-panel, docs-source-panel, solo-app, solo-today-page, solo-docs-page, solo-agenda-block, solo-task-queue-block, solo-agent-status-block, solo-docs-sources-block, solo-forms-block

Installed registry items

  • jami-themeregistry:theme · v0.0.0-contract.20260609installable
  • buttonregistry:ui · v0.0.0-contract.20260609installable
  • panelregistry:ui · v0.0.0-contract.20260609installable
  • text-fieldregistry:ui · v0.0.0-contract.20260609installable
  • data-listregistry:component · v0.0.0-contract.20260609installable
  • agent-panelregistry:component · v0.0.0-contract.20260609installable
  • docs-source-panelregistry:component · v0.0.0-contract.20260609installable
  • solo-appregistry:app · v0.0.0-contract.20260609installable
  • solo-today-pageregistry:page · v0.0.0-contract.20260609installable
  • solo-docs-pageregistry:page · v0.0.0-contract.20260609installable
  • solo-agenda-blockregistry:block · v0.0.0-contract.20260609installable
  • solo-task-queue-blockregistry:block · v0.0.0-contract.20260609installable
  • solo-agent-status-blockregistry:block · v0.0.0-contract.20260609installable
  • solo-docs-sources-blockregistry:block · v0.0.0-contract.20260609installable
  • solo-forms-blockregistry:block · v0.0.0-contract.20260609installable
app shell
app.solo.shell workspace-with-rail
routes
2
pages
2
blocks
5

Route map

  • Today command center/solo/today
    page.solo.today · block.solo.agenda, block.solo.task-queue, block.solo.agent-status
  • Docs and sources/solo/docs
    page.solo.docs · block.solo.docs-sources, block.solo.forms

Block and component parts

agent-panelbuttondata-listdocs-source-panelpaneltext-field
  • Agendadata-list
    long-content
  • Task queuedata-list
    empty
  • Agent statusagent-panel
    error
  • Docs sourcesdocs-source-panel
    long-content
  • Quick formtext-field
    invalid

State coverage

long content
A long source title, task description, or calendar note wraps inside the shell without horizontal overflow.
empty
No tasks are due; the data-list announces an empty status instead of hiding the section.
error
Agent status is displayed as an error panel with no executable action wiring.

Primitive-factory implementation evidence

app implementation
studio-ui/suites/solo/solo-app.implementation.json
status
mounted-react-suite-app
primitive factory
2026-06-09.framework-neutral-component-factory
runtime boundary
React runtime: true · hosted: false · harness execution: false
rendered parts
2 pages · 5 blocks
  • Agendadata-list
    studio-ui/suites/solo/blocks/solo-agenda-block.block.implementation.json
    readylong-content
  • Task queuedata-list
    studio-ui/suites/solo/blocks/solo-task-queue-block.block.implementation.json
    readyempty
  • Agent statusagent-panel
    studio-ui/suites/solo/blocks/solo-agent-status-block.block.implementation.json
    readyerror
  • Docs sourcesdocs-source-panel
    studio-ui/suites/solo/blocks/solo-docs-sources-block.block.implementation.json
    readylong-content
  • Quick formtext-field
    studio-ui/suites/solo/blocks/solo-forms-block.block.implementation.json
    readyinvalid

Surface vocabulary (described in generated shell; mounted React route artifacts emitted locally)

calendar forms docs agent tasks crm content admin

Business operations (business-ops)

generated shell route

Business-operations suite foundation: install-graph descriptor for the staff, scheduling, forms, training, compliance, and operational-dashboard lane.

manifest
@jami-studio/business-ops-suite
schema version
2026-06-09.registry-foundation
install graph
business-ops-suite -> jami-theme, button, panel, text-field, data-list, agent-panel, business-ops-app, business-ops-dashboard-page, business-ops-staff-page, business-ops-kpis-block, business-ops-exceptions-block, business-ops-agent-review-block, business-ops-staff-table-block, business-ops-training-form-block

Installed registry items

  • jami-themeregistry:theme · v0.0.0-contract.20260609installable
  • buttonregistry:ui · v0.0.0-contract.20260609installable
  • panelregistry:ui · v0.0.0-contract.20260609installable
  • text-fieldregistry:ui · v0.0.0-contract.20260609installable
  • data-listregistry:component · v0.0.0-contract.20260609installable
  • agent-panelregistry:component · v0.0.0-contract.20260609installable
  • business-ops-appregistry:app · v0.0.0-contract.20260609installable
  • business-ops-dashboard-pageregistry:page · v0.0.0-contract.20260609installable
  • business-ops-staff-pageregistry:page · v0.0.0-contract.20260609installable
  • business-ops-kpis-blockregistry:block · v0.0.0-contract.20260609installable
  • business-ops-exceptions-blockregistry:block · v0.0.0-contract.20260609installable
  • business-ops-agent-review-blockregistry:block · v0.0.0-contract.20260609installable
  • business-ops-staff-table-blockregistry:block · v0.0.0-contract.20260609installable
  • business-ops-training-form-blockregistry:block · v0.0.0-contract.20260609installable
app shell
app.business-ops.shell ops-dashboard
routes
2
pages
2
blocks
5

Route map

  • Operations dashboard/business-ops/dashboard
    page.business-ops.dashboard · block.business-ops.kpis, block.business-ops.exceptions, block.business-ops.agent-review
  • Staff and training/business-ops/staff
    page.business-ops.staff · block.business-ops.staff-table, block.business-ops.training-form

Block and component parts

agent-panelbuttondata-listpaneltext-field
  • Operational KPIsdata-list
    long-content
  • Schedule exceptionsdata-list
    emptyerror
  • Review queueagent-panel
    error
  • Staff recordsdata-list
    long-content
  • Training formtext-field
    invalid

State coverage

long content
A compliance exception with a long policy name wraps inside row cells and cards.
empty
No open schedule exceptions are announced as an empty operational state.
error
A review queue error is shown without retrying or executing harness actions.

Primitive-factory implementation evidence

app implementation
studio-ui/suites/business-ops/business-ops-app.implementation.json
status
mounted-react-suite-app
primitive factory
2026-06-09.framework-neutral-component-factory
runtime boundary
React runtime: true · hosted: false · harness execution: false
rendered parts
2 pages · 5 blocks
  • Operational KPIsdata-list
    studio-ui/suites/business-ops/blocks/business-ops-kpis-block.block.implementation.json
    readylong-content
  • Schedule exceptionsdata-list
    studio-ui/suites/business-ops/blocks/business-ops-exceptions-block.block.implementation.json
    readyemptyerror
  • Review queueagent-panel
    studio-ui/suites/business-ops/blocks/business-ops-agent-review-block.block.implementation.json
    readyerror
  • Staff recordsdata-list
    studio-ui/suites/business-ops/blocks/business-ops-staff-table-block.block.implementation.json
    readylong-content
  • Training formtext-field
    studio-ui/suites/business-ops/blocks/business-ops-training-form-block.block.implementation.json
    readyinvalid

Surface vocabulary (described in generated shell; mounted React route artifacts emitted locally)

staff scheduling forms training compliance operations-dashboard

Mixed media (mixed-media)

generated shell route

Mixed-media suite foundation: install-graph descriptor for the assets, generation, editing, pipelines, review, publishing, and media-library lane.

manifest
@jami-studio/mixed-media-suite
schema version
2026-06-09.registry-foundation
install graph
mixed-media-suite -> jami-theme, button, panel, data-list, agent-panel, media-grid, mixed-media-app, mixed-media-library-page, mixed-media-pipeline-page, mixed-media-assets-block, mixed-media-metadata-block, mixed-media-pipeline-block, mixed-media-review-agent-block

Installed registry items

  • jami-themeregistry:theme · v0.0.0-contract.20260609installable
  • buttonregistry:ui · v0.0.0-contract.20260609installable
  • panelregistry:ui · v0.0.0-contract.20260609installable
  • data-listregistry:component · v0.0.0-contract.20260609installable
  • agent-panelregistry:component · v0.0.0-contract.20260609installable
  • media-gridregistry:component · v0.0.0-contract.20260609installable
  • mixed-media-appregistry:app · v0.0.0-contract.20260609installable
  • mixed-media-library-pageregistry:page · v0.0.0-contract.20260609installable
  • mixed-media-pipeline-pageregistry:page · v0.0.0-contract.20260609installable
  • mixed-media-assets-blockregistry:block · v0.0.0-contract.20260609installable
  • mixed-media-metadata-blockregistry:block · v0.0.0-contract.20260609installable
  • mixed-media-pipeline-blockregistry:block · v0.0.0-contract.20260609installable
  • mixed-media-review-agent-blockregistry:block · v0.0.0-contract.20260609installable
app shell
app.mixed-media.shell media-production
routes
2
pages
2
blocks
4

Route map

  • Asset library/mixed-media/library
    page.mixed-media.library · block.mixed-media.assets, block.mixed-media.metadata
  • Generation pipeline/mixed-media/pipeline
    page.mixed-media.pipeline · block.mixed-media.pipeline, block.mixed-media.review-agent

Block and component parts

agent-panelbuttondata-listmedia-gridpanel
  • Assetsmedia-grid
    emptylong-content
  • Asset metadatadata-list
    long-content
  • Pipeline runsdata-list
    error
  • Review agentagent-panel
    error

State coverage

long content
Generated asset filenames, prompt excerpts, and publishing notes wrap inside the media shell.
empty
An empty asset collection keeps a visible media-grid state.
error
Pipeline errors render as status panels without invoking provider or harness actions.

Primitive-factory implementation evidence

app implementation
studio-ui/suites/mixed-media/mixed-media-app.implementation.json
status
mounted-react-suite-app
primitive factory
2026-06-09.framework-neutral-component-factory
runtime boundary
React runtime: true · hosted: false · harness execution: false
rendered parts
2 pages · 4 blocks
  • Assetsmedia-grid
    studio-ui/suites/mixed-media/blocks/mixed-media-assets-block.block.implementation.json
    readyemptylong-content
  • Asset metadatadata-list
    studio-ui/suites/mixed-media/blocks/mixed-media-metadata-block.block.implementation.json
    readylong-content
  • Pipeline runsdata-list
    studio-ui/suites/mixed-media/blocks/mixed-media-pipeline-block.block.implementation.json
    readyerror
  • Review agentagent-panel
    studio-ui/suites/mixed-media/blocks/mixed-media-review-agent-block.block.implementation.json
    readyerror

Surface vocabulary (described in generated shell; mounted React route artifacts emitted locally)

assets generation editing pipelines review publishing library

Research / writing (research-writing)

generated shell route

Research / writing suite foundation: install-graph descriptor for the sources, notes, citations, briefs, documents, outlines, and knowledge-work lane.

manifest
@jami-studio/research-writing-suite
schema version
2026-06-09.registry-foundation
install graph
research-writing-suite -> jami-theme, button, panel, text-field, data-list, agent-panel, docs-source-panel, research-writing-app, research-writing-sources-page, research-writing-brief-page, research-writing-sources-block, research-writing-citations-block, research-writing-outline-block, research-writing-agent-review-block

Installed registry items

  • jami-themeregistry:theme · v0.0.0-contract.20260609installable
  • buttonregistry:ui · v0.0.0-contract.20260609installable
  • panelregistry:ui · v0.0.0-contract.20260609installable
  • text-fieldregistry:ui · v0.0.0-contract.20260609installable
  • data-listregistry:component · v0.0.0-contract.20260609installable
  • agent-panelregistry:component · v0.0.0-contract.20260609installable
  • docs-source-panelregistry:component · v0.0.0-contract.20260609installable
  • research-writing-appregistry:app · v0.0.0-contract.20260609installable
  • research-writing-sources-pageregistry:page · v0.0.0-contract.20260609installable
  • research-writing-brief-pageregistry:page · v0.0.0-contract.20260609installable
  • research-writing-sources-blockregistry:block · v0.0.0-contract.20260609installable
  • research-writing-citations-blockregistry:block · v0.0.0-contract.20260609installable
  • research-writing-outline-blockregistry:block · v0.0.0-contract.20260609installable
  • research-writing-agent-review-blockregistry:block · v0.0.0-contract.20260609installable
app shell
app.research-writing.shell document-workbench
routes
2
pages
2
blocks
4

Route map

  • Sources and citations/research-writing/sources
    page.research-writing.sources · block.research-writing.sources, block.research-writing.citations
  • Brief drafting/research-writing/brief
    page.research-writing.brief · block.research-writing.outline, block.research-writing.agent-review

Block and component parts

agent-panelbuttondata-listdocs-source-panelpaneltext-field
  • Sourcesdocs-source-panel
    long-content
  • Citationsdata-list
    empty
  • Outlinetext-field
    invalid
  • Writing reviewagent-panel
    error

State coverage

long content
Long source names, citation strings, and outline sections wrap inside the writing shell.
empty
No citations selected is displayed as an empty table/list state.
error
Review-agent errors are presented as inert status without executing actions.

Primitive-factory implementation evidence

app implementation
studio-ui/suites/research-writing/research-writing-app.implementation.json
status
mounted-react-suite-app
primitive factory
2026-06-09.framework-neutral-component-factory
runtime boundary
React runtime: true · hosted: false · harness execution: false
rendered parts
2 pages · 4 blocks
  • Sourcesdocs-source-panel
    studio-ui/suites/research-writing/blocks/research-writing-sources-block.block.implementation.json
    readylong-content
  • Citationsdata-list
    studio-ui/suites/research-writing/blocks/research-writing-citations-block.block.implementation.json
    readyempty
  • Outlinetext-field
    studio-ui/suites/research-writing/blocks/research-writing-outline-block.block.implementation.json
    readyinvalid
  • Writing reviewagent-panel
    studio-ui/suites/research-writing/blocks/research-writing-agent-review-block.block.implementation.json
    readyerror

Surface vocabulary (described in generated shell; mounted React route artifacts emitted locally)

sources notes citations briefs documents outlines knowledge

Mounted React suite routes

Server-rendered React app/page/block routes from packages/ui/src/suites.mjs. These local preview artifacts use the resident wrappers and generated suite manifests; external hosting is still not claimed.

Default kit options

Selectable brand/template descriptors generated through registry theme items. They express token deltas and workbench presentation choices against the accepted token model; none claims final brand canon or redistributes the exploratory logo source.

Command Grid

selectable

Sharper suite-shell direction for mixed-media and business operations: blue command accents, tighter radius, and registry-first install cards.

light.accent
dark.accent
focusRing
registry item
command-grid-brand
default kit role
suite shell stress-test candidate
brand canon
not final canon
seed use
Exploratory cue reference only; no logo source or final mark is redistributed by this descriptor.
CLI inspectable
Token deltas
  • semantic.light.accent -> #315C8E
  • semantic.dark.accent -> #9BB7E3
  • componentState.focusRing -> #A64B72
  • radius.control -> 4px
  • spacing.control -> 7px
  • shell.dockWidth -> 280px
Best fit
mixed-media suitebusiness operations suiteregistry item choice and install inspection
Open risks
  • can feel too cold unless paired with the soft character cue
  • requires careful contrast checks for blue accent on dark surfaces

Editorial Studio

selectable

A restrained creator-workbench option with richer plum accent, quieter spacing, and wordmark-first presentation for docs and writing suites.

light.accent
dark.accent
focusRing
registry item
editorial-studio-brand
default kit role
editorial suite candidate
brand canon
not final canon
seed use
Exploratory cue reference only; no logo source or final mark is redistributed by this descriptor.
CLI inspectable
Token deltas
  • semantic.light.accent -> #6F3D5F
  • semantic.dark.accent -> #D8A5C8
  • componentState.focusRing -> #237C7A
  • radius.control -> 8px
  • spacing.control -> 10px
  • shell.dockWidth -> 340px
Best fit
research-writing suitedocs and source panelsbrand book and documentation previews
Open risks
  • must avoid drifting into a cream-only editorial page
  • needs sharper app-chrome treatment for dense operations screens

Studio Console

selectable

Dense workbench shell with character cues reduced to compact chrome, teal command affordances, and controlled warm-magenta emphasis.

light.accent
dark.accent
focusRing
registry item
studio-console-brand
default kit role
operational default candidate
brand canon
not final canon
seed use
Exploratory cue reference only; no logo source or final mark is redistributed by this descriptor.
CLI inspectable
Token deltas
  • semantic.light.accent -> #2F6F73
  • semantic.dark.accent -> #76C6BE
  • componentState.focusRing -> #C14D84
  • radius.control -> 6px
  • spacing.control -> 8px
  • shell.dockWidth -> 300px
Best fit
default kit install previewCLI and registry package cardsoperator-heavy workbench sessions
Open risks
  • can become too utilitarian if the character cue is removed entirely
  • needs a production small mark before package badges use it

Vocabulary schema

Resident component prop schemas and React-style descriptors loaded from packages/ui. The renderer uses this handshake to reject stale vocabulary versions and unsupported props before it emits an inert render tree.

handshake
2026-06-09.vocabulary-handshake
payload schemas
2026-06-09
prop schema
2026-06-09.ui-props
factory source
packages/ui/src/primitive-components.mjs
invalid props
invalid
unsupported components
unsupported

button

primitive framework-neutral-component-factory
registry item
@jami-studio/button
prop schema
2026-06-09.ui-props
element
button
component source
packages/ui/src/primitive-components.mjs
a11y role
button
label stringariaLabel stringvariant primary | secondary | ghost | dangersize compact | regulardisabled booleanloading booleanactionRef string

panel

primitive framework-neutral-component-factory
registry item
@jami-studio/panel
prop schema
2026-06-09.ui-props
element
section
component source
packages/ui/src/primitive-components.mjs
a11y role
region
title stringariaLabel stringtone neutral | accent | dangerempty booleanerror string

text-field

primitive framework-neutral-component-factory
registry item
@jami-studio/text-field
prop schema
2026-06-09.ui-props
element
input
component source
packages/ui/src/primitive-components.mjs
a11y role
textbox
label stringvalue stringplaceholder stringdisabled booleaninvalid booleanerrorText stringhelperText string

data-list

component framework-neutral-component-factory
registry item
@jami-studio/data-list
prop schema
2026-06-09.ui-props
element
table | ul
component source
packages/ui/src/primitive-components.mjs
a11y role
table | list
title stringariaLabel stringcolumns arrayrows arrayempty booleanloading booleanerror string

agent-panel

component framework-neutral-component-factory
registry item
@jami-studio/agent-panel
prop schema
2026-06-09.ui-props
element
section
component source
packages/ui/src/primitive-components.mjs
a11y role
status
title stringagentName stringstatus idle | running | needs_attention | denied | erroractionRefs arrayartifactViewRefs array

docs-source-panel

component framework-neutral-component-factory
registry item
@jami-studio/docs-source-panel
prop schema
2026-06-09.ui-props
element
aside
component source
packages/ui/src/primitive-components.mjs
a11y role
complementary
title stringariaLabel stringsources arrayselectedSourceId stringredacted booleanempty boolean

media-grid

component framework-neutral-component-factory
registry item
@jami-studio/media-grid
prop schema
2026-06-09.ui-props
element
ul
component source
packages/ui/src/primitive-components.mjs
a11y role
list
title stringariaLabel stringitems arrayselectedItemId stringloading booleanempty booleanerror string

Radix/React wrapper slice

Server-rendered React output from the resident wrapper slice. Button uses Radix Slot for asChild; text-field uses Radix Label; composed display components are React wrappers over source-owned tokenized markup. The data-only renderer still rejects package imports.

implemented
button panel text-field data-list agent-panel docs-source-panel media-grid
source
packages/ui/src/radix-react-wrappers.mjs
resident vocabulary wrappers
complete-local-source
pending wrappers
none in resident vocabulary

JamiButton

button implemented-radix-react-wrapper-slice
example
button-action
source
packages/ui/src/radix-react-wrappers.mjs
role
Radix Slot-compatible asChild action primitive
renderer execution
false
@radix-ui/react-slot@1.2.5
Rendered HTML<button type="button" class="jami-button" data-variant="primary" data-size="regular" data-action-ref="act_review_evidence">Review evidence</button>

JamiButton

button implemented-radix-react-wrapper-slice
example
button-as-child
source
packages/ui/src/radix-react-wrappers.mjs
role
Radix Slot-compatible asChild action primitive
renderer execution
false
@radix-ui/react-slot@1.2.5
Rendered HTML<a href="#suite-solo" class="jami-button" data-variant="secondary" data-size="regular">Open solo suite</a>

JamiPanel

panel implemented-radix-react-wrapper-slice

Wrapper evidence

React wrapper surface using token classes.
example
panel-region
source
packages/ui/src/radix-react-wrappers.mjs
role
React ref-forwarding region primitive aligned to the resident panel schema
renderer execution
false
React wrapper
Rendered HTML<section class="jami-panel" data-tone="accent" role="region" aria-label="Wrapper evidence"><h3 class="jami-panel-title">Wrapper evidence</h3>React wrapper surface using token classes.</section>

JamiTextField

text-field implemented-radix-react-wrapper-slice
example
text-field-labelled
source
packages/ui/src/radix-react-wrappers.mjs
role
Radix Label-backed labelled text input primitive
renderer execution
false
@radix-ui/react-label@2.1.9
Rendered HTML<label class="jami-field" for="jami-field-search-sources"><span class="jami-field-label">Search sources</span><input id="jami-field-search-sources" type="text" placeholder="Find a source" aria-describedby="jami-field-search-sources-help" name="jami-field-search-sources"/><span id="jami-field-search-sources-help">Radix Label associates the label with the input.</span></label>

JamiDataList

data-list implemented-radix-react-wrapper-slice

Evidence queue

Name
Wrapper provenance
example
data-list-records
source
packages/ui/src/radix-react-wrappers.mjs
role
React display component for dense table/list data with no runtime data execution
renderer execution
false
React wrapper
Rendered HTML<section class="jami-data-list" role="region" aria-label="Evidence queue"><h3 class="jami-data-list-title">Evidence queue</h3><table class="jami-data-list-table"><thead><tr><th scope="col">Name</th></tr></thead><tbody><tr><td>Wrapper provenance</td></tr></tbody></table></section>

JamiAgentPanel

agent-panel implemented-radix-react-wrapper-slice

Review agent

needs attention

  • act_review_evidence
  • artv_trace_review
example
agent-panel-display-only
source
packages/ui/src/radix-react-wrappers.mjs
role
React display-only action and artifact reference panel
renderer execution
false
React wrapper
Rendered HTML<section class="jami-agent-panel" role="status" aria-live="polite" aria-label="Review agent" data-status="needs_attention"><h3>Review agent</h3><p>needs attention</p><ul class="jami-action-ref-list" aria-label="Action references"><li data-action-ref="act_review_evidence">act_review_evidence</li></ul><ul class="jami-artifact-ref-list" aria-label="Artifact view references"><li data-artifact-view-ref="artv_trace_review">artv_trace_review</li></ul></section>

JamiDocsSourcePanel

docs-source-panel implemented-radix-react-wrapper-slice
example
docs-source-panel-redacted
source
packages/ui/src/radix-react-wrappers.mjs
role
React display-only source and citation panel with redaction state
renderer execution
false
React wrapper
Rendered HTML<aside class="jami-docs-source-panel" role="complementary" aria-label="Sources" data-redacted="true"><h3>Sources</h3><p role="status">Source details are redacted.</p><ul class="jami-source-list"><li data-source-id="src_foundation">Foundation alignment</li></ul></aside>

JamiMediaGrid

media-grid implemented-radix-react-wrapper-slice

Artifacts

  • Wrapper screenshot placeholder
example
media-grid-artifacts
source
packages/ui/src/radix-react-wrappers.mjs
role
React display-only media and artifact gallery component
renderer execution
false
React wrapper
Rendered HTML<section class="jami-media-grid" role="region" aria-label="Artifacts"><h3>Artifacts</h3><ul class="jami-media-grid-list"><li data-media-id="art_wrapper">Wrapper screenshot placeholder</li></ul></section>

Resident renderer

Each card is a real renderer-produced render tree for a checked compatibility fixture. Valid payloads render resident components; action references render display-only (executable: false); unknown, unsafe, or malformed payloads fail closed to an inert fallback.

uiPayload.basic.buttonRenderable
actionRef.pending-approval.publish-releaseDisplay only

Publish release

state
pending_approval
risk
external
policyScope
release.publish
confirmationMode
approval_required
executable
false
artifactView.basic.documentDisplay only
document

Theme report

artifactViewId
artv_theme_report
artifactId
art_theme_report_001
promotionState
accepted
studio_uitext
suiteRef.solo.minimumDisplay only
suiteRef

suite_solo

lane
custom
appShellId
@jami-studio/solo-suite
installedItems
  • @jami-studio/button
routeMap
  • routeId
    home
    path
    /
  • routeId
    tasks
    path
    /tasks

Display-only reference · executable: false

themeRef.factory.jami-warmDisplay only
themeRef

theme_jami_warm

tokenSchemaVersion
2026-06-09.token-foundation
sourceKind
factory
registryItemId
@jami-studio/jami-warm-theme
restorePackage
@jami-studio/ui

Display-only reference · executable: false

actionRef.denied.delete-artifactDenied

Delete artifact

state
denied
risk
destructive
policyScope
artifact.lifecycle
confirmationMode
approval_required
executable
false
actionRef.invalid.denied-executableDenied

Delete artifact

state
denied
risk
destructive
policyScope
artifact.lifecycle
confirmationMode
approval_required
executable
false
uiPayload.unsupported.componentUnsupported
This component is not supported by the resident renderer.
Why (1)
  • component unknown-chart is not allowlisted
uiPayload.invalid.bad-prop-typeInvalid (failed closed)
This payload was rejected by the resident renderer.
Why (1)
  • prop invalid must be boolean
uiPayload.invalid.bad-propsInvalid (failed closed)
This payload was rejected by the resident renderer.
Why (1)
  • unsupported prop href for button
uiPayload.invalid.bad-refsInvalid (failed closed)
This payload was rejected by the resident renderer.
Why (3)
  • payloadId must use uip_ prefix
  • actionRef action.save-theme must use act_ prefix
  • artifactViewRef artifact.theme-report must use artv_ prefix
uiPayload.invalid.dangerous-htmlInvalid (failed closed)
This payload was rejected by the resident renderer.
Why (3)
  • unsafe prop dangerouslySetInnerHTML
  • unsafe prop __html
  • HTML-like string is not allowed
uiPayload.invalid.event-handlerInvalid (failed closed)
This payload was rejected by the resident renderer.
Why (1)
  • unsafe prop onClick
uiPayload.invalid.foreign-namespaceInvalid (failed closed)
This payload was rejected by the resident renderer.
Why (1)
  • componentRef namespace must be @jami-studio/ui
uiPayload.invalid.htmlInvalid (failed closed)
This payload was rejected by the resident renderer.
Why (1)
  • HTML-like string is not allowed
uiPayload.invalid.inline-secretInvalid (failed closed)
This payload was rejected by the resident renderer.
Why (1)
  • secret-bearing prop authorization must be a harness secret reference
uiPayload.invalid.invalid-enumInvalid (failed closed)
This payload was rejected by the resident renderer.
Why (1)
  • prop variant must be one of primary, secondary, ghost, danger
uiPayload.invalid.javascript-urlInvalid (failed closed)
This payload was rejected by the resident renderer.
Why (1)
  • javascript: URL is not allowed
uiPayload.invalid.lowercase-event-handlerInvalid (failed closed)
This payload was rejected by the resident renderer.
Why (1)
  • unsafe prop onclick
uiPayload.invalid.package-importInvalid (failed closed)
This payload was rejected by the resident renderer.
Why (1)
  • unsafe prop packageImport
uiPayload.invalid.radix-wrapper-importInvalid (failed closed)
This payload was rejected by the resident renderer.
Why (1)
  • unsafe prop packageImport
uiPayload.invalid.react-elementInvalid (failed closed)
This payload was rejected by the resident renderer.
Why (1)
  • unsafe prop $$typeof
uiPayload.invalid.stale-vocabulary-handshakeInvalid (failed closed)
This payload was rejected by the resident renderer.
Why (1)
  • unsupported vocabularyHandshakeVersion
renderer.error.invalid-propsError

Workbench presentation panels

Harness-originated refs (artifact views, evidence packets, run-event traces, memory records, context packs, action refs) presented through the workbench seam as inert operational descriptors. Redaction, freshness, and denial are displayed, never decided here.

actionRef.deniedactionRef
denied
denied
type
element
component
action-slot
props
label
Publish release
risk
external
policyScope
release:publish
confirmationMode
owner_required
state
denied
action
actionId
act_publish_release
route
harness://actions/publish-release
executable
false
denial
reason
Actor lacks release:publish scope.
auditRef
aud_denied_publish_release
children
  • type
    text
    value
    Publish release
artifactView.missing-sourceartifactView
missing-source
missing-source
artifactViewId
artv_orphan
artifactId
art_orphan_001
artifactKind
report
title
Orphaned artifact
promotionState
draft
renderer
available
  • rendererId
    plain-text
    mode
    text
    componentRef
    unsupportedReason
selected
rendererId
plain-text
mode
text
componentRef
unsupportedReason
supported
true
provenance
artifactView.trace.readyartifactView
ready
ready
artifactViewId
artv_run_trace
artifactId
art_run_trace_001
artifactKind
trace
title
Run trace
promotionState
accepted
renderer
available
  • rendererId
    studio-ui.artifact-card
    mode
    studio_ui
    componentRef
    @jami-studio/ui/artifact-card
    unsupportedReason
  • rendererId
    plain-json
    mode
    json
    componentRef
    unsupportedReason
selected
rendererId
studio-ui.artifact-card
mode
studio_ui
componentRef
@jami-studio/ui/artifact-card
unsupportedReason
supported
true
provenance
runId
run_contract_spine
sourceCommit
contract-fixture
evidenceRef
ev_contract_validation
artifactView.unsupported-rendererartifactView
unsupported
unsupported
artifactViewId
artv_unsupported
artifactId
art_unsupported_001
artifactKind
image
title
Unsupported media artifact
promotionState
reviewed
renderer
available
  • rendererId
    vendor.canvas
    mode
    studio_ui
    componentRef
    @vendor/ui/canvas
    unsupportedReason
    foreign component namespace
selected
supported
false
provenance
runId
run_contract_spine
sourceCommit
contract-fixture
evidenceRef
ev_contract_validation
contextPack.emptymemoryContext
empty
empty
subkind
contextPack
contextPackId
ctx_empty_assembly
runId
run_stream4_foundation
assembledAt
2026-06-09T12:00:00.000Z
deterministicHash
sha256:empty
itemCount
0
items
none
droppedItems
  • sourceRef
    mem_secret_adjacent_note
    reason
    token_budget
contextPack.readymemoryContext
ready
ready
subkind
contextPack
contextPackId
ctx_stream4_foundation
runId
run_stream4_foundation
assembledAt
2026-06-09T12:00:00.000Z
deterministicHash
sha256:fixture
itemCount
1
items
  • sourceRef
    mem_stream4_contract_note
    kind
    retrieved
    priority
    10
    inclusionReason
    permission and query matched
    citationId
    cit_stream4_contract_note
    freshnessClass
    current_run
    tokenEstimate
    10
droppedItems
  • sourceRef
    mem_secret_adjacent_note
    reason
    permission_denied
evidencePacket.loadingevidencePacket
loading
loading
evidencePacket.readyevidencePacket
ready
ready
evidenceId
ev_contract_generation
subject
Harness contract generation and validation
freshnessClass
current_run
source
repo
jami-harness
commit
working-tree
recordedAt
2026-06-09T12:00:00.000Z
redaction
containsSecrets
false
privatePayloadPolicy
none
commands
  • command
    pnpm contracts:validate
    status
    passed
    recordedAt
    2026-06-09T12:00:00.000Z
    unavailableReason
acceptedContracts
  • evidencePacket
  • runEvent
evidencePacket.redactedevidencePacket
redacted
redacted
evidenceId
ev_deploy_run
subject
Deployment run evidence with redacted payloads
freshnessClass
same_day
source
repo
jami-harness
commit
working-tree
recordedAt
2026-06-09T13:00:00.000Z
redaction
containsSecrets
true
privatePayloadPolicy
redacted
commands
  • command
    deploy:apply
    status
    passed
    recordedAt
    2026-06-09T13:00:00.000Z
    unavailableReason
acceptedContracts
  • evidencePacket
evidencePacket.staleevidencePacket
stale
stale
evidenceId
ev_old_audit
subject
Audit evidence captured before the current source lock
freshnessClass
stale
source
repo
jami-harness
commit
0000000
recordedAt
2026-01-01T00:00:00.000Z
redaction
containsSecrets
false
privatePayloadPolicy
none
commands
  • command
    pnpm contracts:validate
    status
    not_run
    recordedAt
    2026-01-01T00:00:00.000Z
    unavailableReason
acceptedContracts
  • evidencePacket
memoryRecord.missing-sourcememoryContext
missing-source
missing-source
subkind
memoryRecord
memoryId
not_a_valid_memory_id
memoryKind
project
summary
Memory ref whose identifiers do not validate.
content
scope
projectId
proj_jami_harness
allowedActorIds
  • actor_developer
allowedScopes
  • memory:read
source
freshness
class
current_run
asOf
2026-06-09T12:00:00.000Z
retention
policy
project
forgetAfter
2026-07-09T12:00:00.000Z
redaction
classification
internal
mode
none
redactedFields
none
citation
citationId
cit_invalid_note
label
Invalid note
freshnessClass
current_run
memoryRecord.readymemoryContext
ready
ready
subkind
memoryRecord
memoryId
mem_stream4_contract_note
memoryKind
project
summary
Stream 4 owns evidence and memory contracts, not hosted backends.
content
Stream 4 adds local, replaceable foundations only.
scope
projectId
proj_jami_harness
allowedActorIds
  • actor_developer
allowedScopes
  • memory:read
source
runId
run_stream4_foundation
recordedAt
2026-06-09T12:00:00.000Z
artifactRef
art_stream4_evidence
freshness
class
current_run
asOf
2026-06-09T12:00:00.000Z
retention
policy
project
forgetAfter
2026-07-09T12:00:00.000Z
redaction
classification
internal
mode
none
redactedFields
none
citation
citationId
cit_stream4_contract_note
label
Stream 4 foundation note
freshnessClass
current_run
memoryRecord.redactedmemoryContext
redacted
redacted
subkind
memoryRecord
memoryId
mem_secret_adjacent_note
memoryKind
tool_output
summary
Deploy credentials note
content
scope
projectId
proj_jami_harness
allowedActorIds
  • actor_developer
allowedScopes
  • memory:read
source
runId
run_stream4_foundation
recordedAt
2026-06-09T12:00:00.000Z
artifactRef
freshness
class
current_run
asOf
2026-06-09T12:00:00.000Z
retention
policy
session
forgetAfter
2026-06-10T12:00:00.000Z
redaction
classification
secret_adjacent
mode
redacted
redactedFields
  • content
citation
citationId
cit_secret_adjacent_note
label
Secret adjacent note
freshnessClass
current_run
memoryRecord.stalememoryContext
stale
stale
subkind
memoryRecord
memoryId
mem_stale_project_note
memoryKind
project
summary
Earlier foundation note superseded by a newer run.
content
Kept for provenance; freshness is stale.
scope
projectId
proj_jami_harness
allowedActorIds
  • actor_developer
allowedScopes
  • memory:read
source
runId
run_earlier_foundation
recordedAt
2026-01-02T12:00:00.000Z
artifactRef
freshness
class
stale
asOf
2026-01-02T12:00:00.000Z
retention
policy
project
forgetAfter
2026-07-09T12:00:00.000Z
redaction
classification
internal
mode
none
redactedFields
none
citation
citationId
cit_stale_project_note
label
Stale project note
freshnessClass
stale
trace.emptytrace
empty
empty
runId
run_contract_spine
events
none
trace.errortrace
error
error
runId
run_contract_spine
eventCount
2
events
  • eventId
    evt_run_started
    sequence
    0
    occurredAt
    2026-06-09T04:00:00.000Z
    eventType
    run.started
    traceId
    trace_err
    spanId
    span_0
    rendererState
    policyDecision
  • eventId
    evt_renderer_error
    sequence
    1
    occurredAt
    2026-06-09T04:00:01.000Z
    eventType
    renderer.error
    traceId
    trace_err
    spanId
    span_1
    rendererState
    error_state
    policyDecision
trace.readytrace
ready
ready
runId
run_contract_spine
eventCount
3
events
  • eventId
    evt_run_started
    sequence
    0
    occurredAt
    2026-06-09T04:00:00.000Z
    eventType
    run.started
    traceId
    trace_abc
    spanId
    span_0
    rendererState
    policyDecision
  • eventId
    evt_policy_decision
    sequence
    1
    occurredAt
    2026-06-09T04:00:01.000Z
    eventType
    policy.decision
    traceId
    trace_abc
    spanId
    span_1
    rendererState
    policyDecision
    decision
    allow
    scope
    renderer:display
  • eventId
    evt_run_completed
    sequence
    2
    occurredAt
    2026-06-09T04:00:02.000Z
    eventType
    run.completed
    traceId
    trace_abc
    spanId
    span_2
    rendererState
    rendered
    policyDecision

Theme tokens

Color tokens and computed WCAG contrast ratios, read straight from packages/tokens/generated/jami.css.

Color tokens

Generated color variables
SwatchTokenValue
--jami-color-brand-accent#C14D84
--jami-color-brand-teal#237C7A
--jami-color-neutral-warm0#FFF9F5
--jami-color-neutral-warm950#20171B
--jami-semantic-light-background#FFF9F5
--jami-semantic-light-foreground#20171B
--jami-semantic-light-accent#C14D84
--jami-semantic-dark-background#20171B
--jami-semantic-dark-foreground#FFF9F5
--jami-semantic-dark-accent#C14D84
--jami-componentState-focusRing#237C7A
--jami-componentState-deprecatedAccentAlias#C14D84

Contrast checks

PairColorsRatioTargetResult
Light text on light background#20171B on #FFF9F516.77:1AA textPASS
Dark text on dark background#FFF9F5 on #20171B16.77:1AA textPASS
Accent on light background#C14D84 on #FFF9F54.32:1AA UI/largePASS
Focus ring on light background#237C7A on #FFF9F54.75:1AA non-textPASS