Rixx UI Renderer Contract 0.1
Status
This is the pre-alpha consumer boundary. The renderer remains private at0.0.0; language, protocol, and catalog identifiers use the independent
experimental version 0.1.
Product
Rixx UI is a React renderer for AI response content. A host supplies accumulated RUI source and owns the message, model call, transport, tools, persistence, authentication, and business logic. Existing prose-only paths can useMarkdownRenderer; structured answers use
RUIRenderer. Both share Markdown repair, URL/image policy, external-link
confirmation, themes, localization, and errors.
defineRUI, with defineComponent and
defineAction. One config creates matching generation instructions, component
contracts, runtime registry, retrieval metadata, and action descriptions.
Source fragment profile
Models emit the host-embedded fragment profile:Streaming
RUIRenderer accepts the complete accumulated source string and incrementally
processes only appended characters. Complete physical statements can create an
inert provisional preview. An open built-in RichText string may additionally
produce a display-only provisional overlay, with complete JSON escapes decoded
and incomplete Markdown repaired for stable token-level presentation. It never
enters the protocol graph. Components, props, graph structure, and resource
budgets validate before authoritative preview. Syntax-complete images can load
progressively, after commit, or only on click according to resourceTiming.
Links become visually stable during preview but remain inert. Actions, fields,
clipboard operations, form submission, and custom components remain disabled
until authoritative commit.
Malformed physical lines and catalog-invalid nodes are quarantined while valid
later statements continue streaming. Source replacement or retryKey resets
compilation. Cancelled, failed, truncated, and provider-incomplete streams
produce typed diagnostics, retain the last safe preview, and never become
committed UI.
Content
Core currently includes structured prose, sanitized CommonMark/GFM RichText, highlighted code, citations, cards, layout, tabs, accordions, metrics, data tables, ten chart types, KaTeX math, sanitized committed Mermaid diagrams, and local forms that emit one action payload. Raw HTML, MDX, JavaScript, CSS, model-selected imports, and model-defined executable behavior are forbidden. Inside RUI, Markdown exists only as a sanitizedRichText payload. The separate
MarkdownRenderer accepts Markdown directly. Catalog and Markdown images share
one responsive loader. The default progressive mode loads syntax-complete,
credential-free HTTPS images with no referrer, lazy loading, async decoding, and
failure placeholders. committed and manual timing are available for more
private applications. A host imagePolicy can narrow or deny every mode.
URLs and actions
URL strings may appear in approved component props. External HTTPS links use a default review dialog with Copy, Cancel, and Open; direct mode is explicit. A hosturlPolicy can narrow or deny links and onNavigate can mediate opening.
Image loading uses the separate imagePolicy; navigation approval never grants
image/resource access.
Generated actions are declarative requests by name. Strict configs reject
unregistered action references and validate emitted payloads against action JSON
Schemas before notifying the host. Rixx UI does not execute tools or business
logic. The production host still authenticates and authorizes the user, requests
confirmation when needed, executes effects, and owns auditing/idempotency.
Presentation and localization
Renderer and RUIRenderer accept one typed options object. theme is
light, dark, or system; system mode uses CSS media queries and does not
add a JavaScript media listener. locale, currency, and optional timeZone
control metrics, table cells and sorting, dates, chart axes, chart tooltips, and
percent shares. direction is ltr, rtl, or auto and is emitted on the
surface. Portaled controls receive matching theme and language context.
Defaults are system, en-US, USD, UTC, and auto, making SSR and
hydration deterministic. Localized hosts should pass the same explicit options
on server and client. Resolved options are canonicalized, frozen, and exposed to
typed custom components. Invalid values fail with an option-specific error.
Chart plotting coordinates remain explicitly LTR so axes and geometry stay
predictable; surrounding captions, legends, tooltips, and data tables follow the
surface direction.
Public direction
Intended consumer APIs:RUIRendererMarkdownRendererdefineRUIdefineComponentdefineActionfromMarkdownRUIStreamStatus@rixx-ui/react/serverprompt and source helpers- Frozen
RUIActionEvent,RUINavigationEvent,RUIRenderEvent, andRUIErrorEventhost callback objects - Static or functional
fallbackwith a frozenRUIFallbackEvent
Renderer, normalized snapshots, protocol records, stores, compiler classes,
and session infrastructure are advanced/internal APIs without public stability
guarantees during pre-alpha development.