Assistant
The flagship Gremorie chat surface — Conversation, Message, Reasoning, an inline Artifact, Sources and a B2B PromptInput composer, fully composed.
Overview
The Assistant is the flagship Gremorie block: a production-ready chat surface with a thread switcher and actions header, a streaming conversation (reasoning, an inline generated artifact, sources, response branches with actions), and a floating B2B PromptInput composer — context picker, a token-usage meter, mode and model selectors, web search, attachments, voice and a status-aware submit.
Wire onSubmit to the AI SDK or any streaming endpoint and you get a full
assistant experience in a single import.
Preview
Here is the board one-pager. Q3 revenue landed at $4.2M, up 18% QoQ and 6% ahead of forecast, driven by net expansion in the enterprise tier.
Headline KPIs
- ARR: $16.8M (+18% QoQ)
- Net revenue retention: 114%
- Gross margin: 78%
Watch item: enterprise pipeline coverage for Q4 sits at 2.9x, below the 3.2x target. The full one-pager is attached below.
Q3 one-pager
Document · generated just now
Q3 closed at $4.2M, up 18% QoQ and 6% ahead of forecast.
Gremorie can make mistakes. Check important info.
Anatomy
| Part | Role |
|---|---|
| AssistantHeader | Thread/history switcher (left); Sources, Share and an overflow menu (right) |
| AssistantContent | The conversation — messages with Reasoning, an inline generated Artifact, Sources, and response MessageBranch + MessageActions |
| AssistantComposer | The floating PromptInput (B2B): PromptInputContext, the Context usage meter, mode + model selectors, web search, attach, voice, and a status-aware submit |
| AssistantDisclaimer | The "can make mistakes" footnote |
Installation
npx gremorie@latest add block-assistantpnpm dlx gremorie@latest add block-assistantyarn dlx gremorie@latest add block-assistantbunx --bun gremorie@latest add block-assistantComposition
The block composes (condensed — the full, runnable source installs via the CLI above):
<TooltipProvider>
{/* AssistantHeader — thread switcher + actions */}
<Conversation>
<ConversationContent>
<Message from="user">…</Message>
<Message from="assistant">
<MessageBranch>
<Reasoning />
<MessageResponse />
<Artifact /> {/* inline generated document */}
<Sources />
<MessageToolbar>{/* actions + branch selector */}</MessageToolbar>
</MessageBranch>
</Message>
</ConversationContent>
</Conversation>
{/* AssistantComposer — the floating B2B PromptInput */}
<PromptInput>
<PromptInputHeader>
<PromptInputContext />
<Context>
<ContextTrigger />
<ContextContent>{/* usage breakdown + cost */}</ContextContent>
</Context>
</PromptInputHeader>
<PromptInputBody>
<PromptInputTextarea />
</PromptInputBody>
<PromptInputFooter>
<PromptInputTools>{/* mode + model selects */}</PromptInputTools>
<PromptInputTools className="gap-2">
<PromptInputTools>{/* search · attach · voice */}</PromptInputTools>
<PromptInputSubmit />
</PromptInputTools>
</PromptInputFooter>
</PromptInput>
</TooltipProvider>Customization
- Wire
onSubmitto the AI SDK'ssendMessageor your streaming endpoint - Stream
ReasoningwhileisStreamingis true for auto-collapse on completion - The composer is the B2B
PromptInput— adjust thePromptInputContextitems, the mode/model presets, and theContextusage meter - Swap
MessageContentforMessageResponse(Streamdown) for server-streamed markdown