06b8745: Chat mode (inline GenUI), AI SDK integration, two-way binding, and expression-based visibility/props.### New: Chat Mode (Inline GenUI)
Two generation modes: Generate (JSONL-only, the default) and Chat (text + JSONL inline). Chat mode lets AI respond conversationally with embedded UI specs — ideal for chatbots and copilot experiences.
catalog.prompt({ mode: "chat" }) generates a chat-aware system promptpipeJsonRender() server-side transform separates text from JSONL patches in a mixed streamcreateJsonRenderTransform() low-level TransformStream for custom pipelines### New: AI SDK Integration
First-class Vercel AI SDK support with typed data parts and stream utilities.
SpecDataPart type for data-spec stream parts (patch, flat, nested payloads)SPEC_DATA_PART / SPEC_DATA_PART_TYPE constants for type-safe part filteringcreateMixedStreamParser() for parsing mixed text + JSONL streams### New: React Chat Hooks
useChatUI() — full chat hook with message history, streaming, and spec extractionuseJsonRenderMessage() — extract spec + text from a message's parts arraybuildSpecFromParts() / getTextFromParts() — utilities for working with AI SDK message partsuseBoundProp() — two-way binding hook for $bindState / $bindItem expressions### New: Two-Way Binding
Props can now use $bindState and $bindItem expressions for two-way data binding. The renderer resolves bindings and passes a bindings map to components, enabling write-back to state.
### New: Expression-Based Props and Visibility
Replaced string token rewriting with structured expression objects:
{ $state: "/path" }, { $item: "field" }, { $index: true }{ $state: "/path", eq: "value" }, { $item: "active" }, { $index: true, gt: 0 }{ $and: [...] }, { $or: [...] }, and implicit AND via arrayseq, neq, gt, gte, lt, lte, not### New: Utilities
applySpecPatch() — typed convenience wrapper for applying a single patch to a SpecnestedToFlat() — convert nested tree specs to flat { root, elements } formatresolveBindings() / resolveActionParam() — resolve binding paths and action params### New: Chat Example
Full-featured chat example (examples/chat) with AI agent, tool calls (crypto, GitHub, Hacker News, weather, search), theme toggle, and streaming UI generation.
### Improved: Renderer
ElementRenderer is now React.memo'd for better performance in repeat listsemit is always defined (never undefined) — no more optional chaining neededresolveActionParam supporting $item, $index, $state### Breaking Changes
{ $path } / { path } replaced by { $state }, { $item }, { $index }{ path } → { $state }, { and/or/not } → { $and/$or } with not as operator flag{ path: string } → { $state: string }repeat.path → repeat.statePathpath → statePath in setState action paramsactionHandlers → handlers on JSONUIProvider/ActionProviderAuthState type and { auth } visibility conditions removed — model auth as regular statecreateCatalog, generateCatalogPrompt, generateSystemPrompt, ComponentDefinition, CatalogConfig, SystemPromptOptions removedcreateRendererFromCatalog, rewriteRepeatTokenstraverseTree → traverseSpec, SpecVisitor → TreeVisitor06b8745]
429e456: Fix LLM hallucinations by dynamically generating prompt examples from the user's catalog instead of hardcoding component names. Adds optional example field to ComponentDefinition with Zod schema introspection fallback. Mentions RFC 6902 in output format section.429e456]
3d2d1ad: Add @json-render/react-native package, event system (emit replaces onAction), repeat/list rendering, user prompt builder, spec validation, and rename DataProvider to StateProvider.3d2d1ad]
dd17549: remove key/parentKey from flat specs, RFC 6902 compliance for SpecStreamdd17549]
61ee8e5: include remove op in system prompt61ee8e5]
54bce09: add defineRegistry function54bce09]