@assistant-ui/mcp-docs-server 0.1.30 → 0.1.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.docs/organized/code-examples/waterfall.md +1 -1
- package/.docs/organized/code-examples/with-a2a.md +2 -2
- package/.docs/organized/code-examples/with-ag-ui.md +3 -3
- package/.docs/organized/code-examples/with-ai-sdk-v6.md +5 -5
- package/.docs/organized/code-examples/with-artifacts.md +5 -5
- package/.docs/organized/code-examples/with-assistant-transport.md +3 -3
- package/.docs/organized/code-examples/with-chain-of-thought.md +79 -50
- package/.docs/organized/code-examples/with-cloud-standalone.md +4 -4
- package/.docs/organized/code-examples/with-cloud.md +4 -4
- package/.docs/organized/code-examples/with-custom-thread-list.md +56 -11
- package/.docs/organized/code-examples/with-elevenlabs-conversational.md +7 -7
- package/.docs/organized/code-examples/with-elevenlabs-scribe.md +7 -7
- package/.docs/organized/code-examples/with-expo.md +16 -16
- package/.docs/organized/code-examples/with-external-store.md +2 -2
- package/.docs/organized/code-examples/with-ffmpeg.md +5 -5
- package/.docs/organized/code-examples/with-generative-ui.md +5 -5
- package/.docs/organized/code-examples/with-google-adk.md +4 -4
- package/.docs/organized/code-examples/with-heat-graph.md +1 -1
- package/.docs/organized/code-examples/with-interactables.md +5 -5
- package/.docs/organized/code-examples/with-langchain.md +3 -3
- package/.docs/organized/code-examples/with-langgraph.md +3 -3
- package/.docs/organized/code-examples/with-livekit.md +8 -8
- package/.docs/organized/code-examples/with-opencode.md +99 -54
- package/.docs/organized/code-examples/with-parent-id-grouping.md +4 -4
- package/.docs/organized/code-examples/with-react-hook-form.md +5 -5
- package/.docs/organized/code-examples/with-react-ink.md +1 -1
- package/.docs/organized/code-examples/with-react-router.md +8 -8
- package/.docs/organized/code-examples/with-store.md +1 -1
- package/.docs/organized/code-examples/with-tanstack.md +5 -5
- package/.docs/organized/code-examples/with-tap-runtime.md +2 -2
- package/.docs/raw/docs/(docs)/cli.mdx +2 -1
- package/.docs/raw/docs/(docs)/copilots/assistant-frame.mdx +1 -0
- package/.docs/raw/docs/(docs)/copilots/make-assistant-tool-ui.mdx +10 -3
- package/.docs/raw/docs/(docs)/copilots/make-assistant-tool.mdx +8 -3
- package/.docs/raw/docs/(docs)/copilots/make-assistant-visible.mdx +1 -0
- package/.docs/raw/docs/(docs)/copilots/model-context.mdx +1 -0
- package/.docs/raw/docs/(docs)/copilots/motivation.mdx +1 -0
- package/.docs/raw/docs/(docs)/copilots/use-assistant-instructions.mdx +1 -0
- package/.docs/raw/docs/(docs)/devtools.mdx +1 -0
- package/.docs/raw/docs/(docs)/index.mdx +1 -0
- package/.docs/raw/docs/(docs)/installation.mdx +1 -0
- package/.docs/raw/docs/(docs)/rtl.mdx +1 -0
- package/.docs/raw/docs/(reference)/api-reference/adapters/attachments.mdx +34 -0
- package/.docs/raw/docs/(reference)/api-reference/adapters/feedback-speech.mdx +41 -0
- package/.docs/raw/docs/(reference)/api-reference/adapters/index.mdx +26 -0
- package/.docs/raw/docs/(reference)/api-reference/adapters/persistence.mdx +34 -0
- package/.docs/raw/docs/(reference)/api-reference/adapters/runtime.mdx +31 -0
- package/.docs/raw/docs/(reference)/api-reference/context-providers/index.mdx +20 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/index.mdx +26 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/model-context.mdx +72 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/runtimes.mdx +41 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/state.mdx +48 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/utilities.mdx +30 -0
- package/.docs/raw/docs/(reference)/api-reference/integrations/index.mdx +23 -0
- package/.docs/raw/docs/(reference)/api-reference/overview.mdx +21 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-if.mdx +7 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/index.mdx +65 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/message.mdx +50 -6
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list.mdx +15 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread.mdx +36 -1
- package/.docs/raw/docs/(reference)/api-reference/runtimes/index.mdx +38 -0
- package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-runtime.mdx +5 -0
- package/.docs/raw/docs/(reference)/migrations/v0-14.mdx +144 -6
- package/.docs/raw/docs/cloud/ai-sdk-assistant-ui.mdx +230 -2
- package/.docs/raw/docs/cloud/ai-sdk.mdx +221 -3
- package/.docs/raw/docs/cloud/langgraph.mdx +274 -2
- package/.docs/raw/docs/{(docs)/guides → guides}/attachments.mdx +41 -36
- package/.docs/raw/docs/guides/branching.mdx +76 -0
- package/.docs/raw/docs/guides/chain-of-thought.mdx +166 -0
- package/.docs/raw/docs/{(docs)/guides → guides}/context-api.mdx +50 -22
- package/.docs/raw/docs/{(docs)/guides → guides}/dictation.mdx +2 -0
- package/.docs/raw/docs/guides/editing.mdx +102 -0
- package/.docs/raw/docs/guides/index.mdx +103 -0
- package/.docs/raw/docs/{(docs)/guides → guides}/interactables.mdx +49 -0
- package/.docs/raw/docs/{(docs)/guides → guides}/latex.mdx +51 -8
- package/.docs/raw/docs/{(docs)/guides → guides}/mentions.mdx +61 -86
- package/.docs/raw/docs/{(docs)/guides → guides}/message-timing.mdx +8 -2
- package/.docs/raw/docs/{(docs)/guides → guides}/multi-agent.mdx +64 -4
- package/.docs/raw/docs/{(docs)/guides → guides}/quoting.mdx +10 -17
- package/.docs/raw/docs/{(docs)/guides → guides}/slash-commands.mdx +103 -37
- package/.docs/raw/docs/guides/speech.mdx +156 -0
- package/.docs/raw/docs/{(docs)/guides → guides}/suggestions.mdx +21 -83
- package/.docs/raw/docs/{(docs)/guides → guides}/tool-ui.mdx +108 -36
- package/.docs/raw/docs/{(docs)/guides → guides}/tools.mdx +131 -35
- package/.docs/raw/docs/{(docs)/guides → guides}/voice.mdx +39 -0
- package/.docs/raw/docs/ink/index.mdx +1 -3
- package/.docs/raw/docs/ink/migration.mdx +1 -3
- package/.docs/raw/docs/ink/primitives.mdx +37 -1
- package/.docs/raw/docs/integrations/attachments/custom-adapter.mdx +520 -0
- package/.docs/raw/docs/integrations/auth/better-auth.mdx +191 -0
- package/.docs/raw/docs/integrations/auth/clerk.mdx +172 -0
- package/.docs/raw/docs/integrations/auth/next-auth.mdx +196 -0
- package/.docs/raw/docs/integrations/frameworks/ai-sdk.mdx +79 -0
- package/.docs/raw/docs/integrations/frameworks/mastra/full-stack.mdx +188 -0
- package/.docs/raw/docs/integrations/frameworks/mastra/overview.mdx +57 -0
- package/.docs/raw/docs/integrations/frameworks/mastra/separate-server.mdx +201 -0
- package/.docs/raw/docs/integrations/gateways/index.mdx +157 -0
- package/.docs/raw/docs/integrations/index.mdx +173 -0
- package/.docs/raw/docs/integrations/observability/helicone.mdx +130 -0
- package/.docs/raw/docs/integrations/observability/langfuse.mdx +156 -0
- package/.docs/raw/docs/integrations/observability/langsmith.mdx +146 -0
- package/.docs/raw/docs/integrations/persistence/custom-adapter.mdx +712 -0
- package/.docs/raw/docs/integrations/tools/mcp.mdx +267 -0
- package/.docs/raw/docs/primitives/action-bar.mdx +1 -0
- package/.docs/raw/docs/primitives/assistant-modal.mdx +1 -0
- package/.docs/raw/docs/primitives/attachment.mdx +1 -0
- package/.docs/raw/docs/primitives/branch-picker.mdx +1 -0
- package/.docs/raw/docs/primitives/chain-of-thought.mdx +90 -85
- package/.docs/raw/docs/primitives/composer.mdx +2 -1
- package/.docs/raw/docs/primitives/error.mdx +1 -0
- package/.docs/raw/docs/primitives/index.mdx +2 -1
- package/.docs/raw/docs/primitives/message.mdx +68 -5
- package/.docs/raw/docs/primitives/selection-toolbar.mdx +1 -0
- package/.docs/raw/docs/primitives/suggestion.mdx +1 -0
- package/.docs/raw/docs/primitives/thread-list.mdx +39 -0
- package/.docs/raw/docs/primitives/thread.mdx +16 -13
- package/.docs/raw/docs/react-native/index.mdx +1 -3
- package/.docs/raw/docs/react-native/migration.mdx +1 -3
- package/.docs/raw/docs/runtimes/a2a/client-and-hooks.mdx +396 -0
- package/.docs/raw/docs/runtimes/a2a/overview.mdx +60 -0
- package/.docs/raw/docs/runtimes/a2a/quickstart.mdx +216 -0
- package/.docs/raw/docs/runtimes/ag-ui/overview.mdx +70 -0
- package/.docs/raw/docs/runtimes/ag-ui/quickstart.mdx +243 -0
- package/.docs/raw/docs/runtimes/ag-ui/runtime-options.mdx +123 -0
- package/.docs/raw/docs/runtimes/ai-sdk/overview.mdx +52 -0
- package/.docs/raw/docs/runtimes/ai-sdk/v4-legacy.mdx +71 -131
- package/.docs/raw/docs/runtimes/ai-sdk/v5-legacy.mdx +69 -63
- package/.docs/raw/docs/runtimes/ai-sdk/v6.mdx +330 -123
- package/.docs/raw/docs/runtimes/concepts/adapters.mdx +265 -0
- package/.docs/raw/docs/runtimes/concepts/architecture.mdx +125 -0
- package/.docs/raw/docs/runtimes/concepts/stability.mdx +67 -0
- package/.docs/raw/docs/runtimes/concepts/threads.mdx +428 -0
- package/.docs/raw/docs/runtimes/custom/assistant-transport.mdx +703 -0
- package/.docs/raw/docs/runtimes/custom/data-stream.mdx +323 -0
- package/.docs/raw/docs/runtimes/custom/external-store.mdx +253 -1236
- package/.docs/raw/docs/runtimes/custom/local-runtime.mdx +746 -0
- package/.docs/raw/docs/runtimes/custom/overview.mdx +71 -0
- package/.docs/raw/docs/runtimes/google-adk/api.mdx +256 -0
- package/.docs/raw/docs/runtimes/google-adk/hooks.mdx +717 -0
- package/.docs/raw/docs/runtimes/google-adk/overview.mdx +69 -0
- package/.docs/raw/docs/runtimes/google-adk/quickstart.mdx +229 -0
- package/.docs/raw/docs/runtimes/langchain.mdx +533 -0
- package/.docs/raw/docs/runtimes/langgraph/generative-ui.mdx +305 -0
- package/.docs/raw/docs/runtimes/langgraph/interrupts.mdx +104 -0
- package/.docs/raw/docs/runtimes/langgraph/overview.mdx +84 -0
- package/.docs/raw/docs/runtimes/langgraph/quickstart.mdx +496 -0
- package/.docs/raw/docs/runtimes/langgraph/streaming.mdx +127 -0
- package/.docs/raw/docs/runtimes/langgraph/threads.mdx +113 -0
- package/.docs/raw/docs/runtimes/langgraph/tutorial/introduction.mdx +3 -3
- package/.docs/raw/docs/runtimes/langgraph/tutorial/part-1.mdx +0 -23
- package/.docs/raw/docs/runtimes/langgraph/tutorial/part-2.mdx +1 -1
- package/.docs/raw/docs/runtimes/opencode/hooks.mdx +191 -0
- package/.docs/raw/docs/runtimes/opencode/overview.mdx +48 -0
- package/.docs/raw/docs/runtimes/opencode/quickstart.mdx +119 -0
- package/.docs/raw/docs/runtimes/pick-a-runtime.mdx +71 -203
- package/.docs/raw/docs/ui/accordion.mdx +1 -0
- package/.docs/raw/docs/ui/assistant-modal.mdx +1 -0
- package/.docs/raw/docs/ui/assistant-sidebar.mdx +1 -0
- package/.docs/raw/docs/ui/attachment.mdx +1 -0
- package/.docs/raw/docs/ui/badge.mdx +1 -0
- package/.docs/raw/docs/ui/composer-trigger-popover.mdx +1 -0
- package/.docs/raw/docs/ui/context-display.mdx +1 -0
- package/.docs/raw/docs/ui/diff-viewer.mdx +1 -0
- package/.docs/raw/docs/ui/directive-text.mdx +1 -0
- package/.docs/raw/docs/ui/file.mdx +1 -0
- package/.docs/raw/docs/ui/image.mdx +1 -0
- package/.docs/raw/docs/ui/markdown.mdx +2 -14
- package/.docs/raw/docs/ui/mermaid.mdx +1 -0
- package/.docs/raw/docs/ui/message-timing.mdx +3 -2
- package/.docs/raw/docs/ui/model-selector.mdx +1 -0
- package/.docs/raw/docs/ui/part-grouping.mdx +325 -313
- package/.docs/raw/docs/ui/quote.mdx +1 -0
- package/.docs/raw/docs/ui/reasoning.mdx +66 -33
- package/.docs/raw/docs/ui/scrollbar.mdx +1 -0
- package/.docs/raw/docs/ui/select.mdx +1 -0
- package/.docs/raw/docs/ui/sources.mdx +1 -0
- package/.docs/raw/docs/ui/streamdown.mdx +1 -0
- package/.docs/raw/docs/ui/syntax-highlighting.mdx +1 -0
- package/.docs/raw/docs/ui/tabs.mdx +1 -0
- package/.docs/raw/docs/ui/thread-list.mdx +17 -0
- package/.docs/raw/docs/ui/thread.mdx +56 -1
- package/.docs/raw/docs/ui/tool-fallback.mdx +1 -0
- package/.docs/raw/docs/ui/tool-group.mdx +39 -11
- package/.docs/raw/docs/ui/voice.mdx +1 -0
- package/.docs/raw/docs/utilities/heat-graph.mdx +1 -0
- package/.docs/raw/docs/utilities/react-o11y.mdx +278 -0
- package/.docs/raw/docs/utilities/tw-shimmer.mdx +1 -0
- package/package.json +3 -3
- package/src/tools/tests/path-traversal.test.ts +1 -1
- package/.docs/raw/docs/(docs)/guides/branching.mdx +0 -65
- package/.docs/raw/docs/(docs)/guides/chain-of-thought.mdx +0 -164
- package/.docs/raw/docs/(docs)/guides/editing.mdx +0 -66
- package/.docs/raw/docs/(docs)/guides/speech.mdx +0 -38
- package/.docs/raw/docs/runtimes/a2a/index.mdx +0 -298
- package/.docs/raw/docs/runtimes/assistant-transport.mdx +0 -1033
- package/.docs/raw/docs/runtimes/custom/custom-thread-list.mdx +0 -314
- package/.docs/raw/docs/runtimes/custom/local.mdx +0 -1464
- package/.docs/raw/docs/runtimes/data-stream.mdx +0 -422
- package/.docs/raw/docs/runtimes/google-adk/index.mdx +0 -686
- package/.docs/raw/docs/runtimes/helicone.mdx +0 -61
- package/.docs/raw/docs/runtimes/langchain/comparison.mdx +0 -60
- package/.docs/raw/docs/runtimes/langchain/index.mdx +0 -210
- package/.docs/raw/docs/runtimes/langgraph/index.mdx +0 -699
- package/.docs/raw/docs/runtimes/langgraph/tutorial/index.mdx +0 -12
- package/.docs/raw/docs/runtimes/langserve.mdx +0 -116
- package/.docs/raw/docs/runtimes/mastra/full-stack-integration.mdx +0 -218
- package/.docs/raw/docs/runtimes/mastra/overview.mdx +0 -18
- package/.docs/raw/docs/runtimes/mastra/separate-server-integration.mdx +0 -217
|
@@ -1,245 +1,113 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Picking a
|
|
3
|
-
description:
|
|
2
|
+
title: Picking a runtime
|
|
3
|
+
description: Decision guide for choosing the right runtime, by framework or by feature.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
import { AguiIcon } from "@/components/icons/agui";
|
|
7
|
+
import { GeminiIcon } from "@/components/icons/gemini";
|
|
8
|
+
import { LangChainIcon } from "@/components/icons/langchain";
|
|
9
|
+
import { LangGraphIcon } from "@/components/icons/langgraph";
|
|
10
|
+
import { MastraIcon } from "@/components/icons/mastra";
|
|
11
|
+
import { OpenCodeIcon } from "@/components/icons/opencode";
|
|
12
|
+
import { VercelIcon } from "@/components/icons/vercel";
|
|
13
|
+
import { Network } from "lucide-react";
|
|
7
14
|
|
|
8
|
-
|
|
15
|
+
A runtime is the connection between assistant-ui's UI primitives and your AI backend. This page helps you pick one. Two lenses, pick whichever maps to what you already know.
|
|
9
16
|
|
|
10
|
-
|
|
11
|
-
graph TD
|
|
12
|
-
A[What's your starting point?] --> B{Existing Framework?}
|
|
13
|
-
B -->|Vercel AI SDK| C[Use AI SDK Integration]
|
|
14
|
-
B -->|LangGraph via langgraph-sdk| D1[Use react-langgraph]
|
|
15
|
-
B -->|LangChain via @langchain/react useStream| D2[Use react-langchain]
|
|
16
|
-
B -->|LangServe| E[Use LangServe Runtime]
|
|
17
|
-
B -->|Mastra| F[Use Mastra Runtime]
|
|
18
|
-
B -->|AG-UI Protocol| J[Use AG-UI Runtime]
|
|
19
|
-
B -->|A2A Protocol| K[Use A2A Runtime]
|
|
20
|
-
B -->|Custom Backend| G{State Management?}
|
|
21
|
-
G -->|Let assistant-ui handle it| H[Use LocalRuntime]
|
|
22
|
-
G -->|I'll manage it myself| I[Use ExternalStoreRuntime]
|
|
23
|
-
```
|
|
17
|
+
## Lens 1: by framework
|
|
24
18
|
|
|
25
|
-
|
|
19
|
+
If you are already using one of these frameworks, the choice is mechanical.
|
|
26
20
|
|
|
27
|
-
|
|
21
|
+
### First-party adapters
|
|
28
22
|
|
|
29
|
-
|
|
30
|
-
<Card
|
|
31
|
-
title="`LocalRuntime`"
|
|
32
|
-
description="assistant-ui manages chat state internally. Simple adapter pattern for any backend."
|
|
33
|
-
href="/docs/runtimes/custom/local"
|
|
34
|
-
/>
|
|
35
|
-
<Card
|
|
36
|
-
title="`ExternalStoreRuntime`"
|
|
37
|
-
description="You control the state. Perfect for Redux, Zustand, or existing state management."
|
|
38
|
-
href="/docs/runtimes/custom/external-store"
|
|
39
|
-
/>
|
|
40
|
-
</Cards>
|
|
41
|
-
|
|
42
|
-
## Pre-Built Integrations
|
|
43
|
-
|
|
44
|
-
For popular frameworks, we provide ready-to-use integrations built on top of our core runtimes:
|
|
23
|
+
assistant-ui ships React adapter packages for these. Pick the matching card and follow its overview.
|
|
45
24
|
|
|
46
25
|
<Cards>
|
|
47
26
|
<Card
|
|
27
|
+
icon={<VercelIcon width={20} height={20} />}
|
|
48
28
|
title="Vercel AI SDK"
|
|
49
|
-
description="
|
|
50
|
-
href="/docs/runtimes/ai-sdk
|
|
51
|
-
/>
|
|
52
|
-
<Card
|
|
53
|
-
title="Data Stream Protocol"
|
|
54
|
-
description="For custom backends using the data stream protocol standard"
|
|
55
|
-
href="/docs/runtimes/data-stream"
|
|
29
|
+
description="useChat hook, streaming, tools, attachments, multi-step. v6 current; v5 / v4 legacy."
|
|
30
|
+
href="/docs/runtimes/ai-sdk"
|
|
56
31
|
/>
|
|
57
32
|
<Card
|
|
33
|
+
icon={<LangGraphIcon width={20} height={20} className="text-[#1C3C3C] dark:text-[#5b9595]" />}
|
|
58
34
|
title="LangGraph"
|
|
59
|
-
description="
|
|
35
|
+
description="Direct integration with @langchain/langgraph-sdk. Subgraph events, UI messages, message metadata."
|
|
60
36
|
href="/docs/runtimes/langgraph"
|
|
61
37
|
/>
|
|
62
38
|
<Card
|
|
39
|
+
icon={<LangChainIcon width={20} height={20} className="text-[#7FC8FF]" />}
|
|
63
40
|
title="LangChain useStream"
|
|
64
|
-
description="Wraps
|
|
41
|
+
description="Wraps @langchain/react's useStream. Lighter-weight, tracks upstream."
|
|
65
42
|
href="/docs/runtimes/langchain"
|
|
66
43
|
/>
|
|
67
44
|
<Card
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
45
|
+
icon={<GeminiIcon width={20} height={20} />}
|
|
46
|
+
title="Google ADK"
|
|
47
|
+
description="ADK JS or Python agents. Tool confirmations, auth flows, multi-agent, code execution."
|
|
48
|
+
href="/docs/runtimes/google-adk"
|
|
71
49
|
/>
|
|
72
50
|
<Card
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
51
|
+
icon={<Network width={20} height={20} />}
|
|
52
|
+
title="A2A Protocol"
|
|
53
|
+
description="Any A2A v1.0-compliant agent server. Streaming task state, artifacts, multi-tenancy."
|
|
54
|
+
href="/docs/runtimes/a2a"
|
|
76
55
|
/>
|
|
77
56
|
<Card
|
|
57
|
+
icon={<AguiIcon width={20} height={20} />}
|
|
78
58
|
title="AG-UI Protocol"
|
|
79
|
-
description="
|
|
80
|
-
href="
|
|
81
|
-
/>
|
|
82
|
-
<Card
|
|
83
|
-
title="A2A Protocol"
|
|
84
|
-
description="For Agent-to-Agent protocol communication between AI agents"
|
|
85
|
-
href="/docs/runtimes/a2a"
|
|
59
|
+
description="AG-UI agents (CopilotKit, custom servers). Streaming text, thinking, tool calls, state snapshots."
|
|
60
|
+
href="/docs/runtimes/ag-ui"
|
|
86
61
|
/>
|
|
62
|
+
<PlatformOnly platforms={["react"]}>
|
|
63
|
+
<Card
|
|
64
|
+
icon={<OpenCodeIcon width={20} height={20} />}
|
|
65
|
+
title="OpenCode"
|
|
66
|
+
description="OpenCode coding-agent server. Permission flows, questions, fork / revert. Experimental."
|
|
67
|
+
href="/docs/runtimes/opencode"
|
|
68
|
+
/>
|
|
69
|
+
</PlatformOnly>
|
|
87
70
|
</Cards>
|
|
88
71
|
|
|
89
|
-
|
|
72
|
+
<PlatformOnly platforms={["react"]}>
|
|
90
73
|
|
|
91
|
-
###
|
|
74
|
+
### Integration guides
|
|
92
75
|
|
|
93
|
-
|
|
76
|
+
For frameworks without a dedicated adapter, these wiring guides route through one of the adapters above.
|
|
94
77
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
78
|
+
<Cards>
|
|
79
|
+
<Card
|
|
80
|
+
icon={<MastraIcon width={20} height={20} />}
|
|
81
|
+
title="Mastra"
|
|
82
|
+
description="TypeScript agent framework. Wired through the Vercel AI SDK runtime."
|
|
83
|
+
href="/docs/integrations/frameworks/mastra/overview"
|
|
84
|
+
/>
|
|
85
|
+
</Cards>
|
|
102
86
|
|
|
103
|
-
|
|
87
|
+
</PlatformOnly>
|
|
104
88
|
|
|
105
|
-
|
|
89
|
+
## Lens 2: by needs
|
|
106
90
|
|
|
107
|
-
|
|
108
|
-
- You're already using that framework
|
|
109
|
-
- You want the fastest possible setup
|
|
110
|
-
- The integration covers your needs
|
|
91
|
+
If you do not know your framework yet, or your backend is custom, pick by what you need:
|
|
111
92
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
93
|
+
| You need | Use |
|
|
94
|
+
| --- | --- |
|
|
95
|
+
| Simple `fetch` call to your API, runtime owns state | [LocalRuntime](/docs/runtimes/custom/local-runtime) |
|
|
96
|
+
| Keep messages in redux, zustand, tanstack-query, etc. | [ExternalStoreRuntime](/docs/runtimes/custom/external-store) |
|
|
97
|
+
| Backend that already speaks the data stream protocol | [DataStream](/docs/runtimes/custom/data-stream) |
|
|
98
|
+
| Stream full agent state snapshots (not just messages) | [AssistantTransport](/docs/runtimes/custom/assistant-transport) |
|
|
116
99
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
100
|
+
If none of the framework adapters fits, start at [custom backend](/docs/runtimes/custom).
|
|
101
|
+
|
|
102
|
+
## Shared concepts
|
|
103
|
+
|
|
104
|
+
Regardless of which runtime you pick, four ideas apply across the board.
|
|
120
105
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
| Feature | `LocalRuntime` | `ExternalStoreRuntime` |
|
|
126
|
-
| ------- | -------------- | ---------------------- |
|
|
127
|
-
| **State Management** | Automatic | You control |
|
|
128
|
-
| **Setup Complexity** | Simple | Moderate |
|
|
129
|
-
| **Message Editing** | Built-in | Implement `onEdit` |
|
|
130
|
-
| **Branch Switching** | Built-in | Implement `setMessages` |
|
|
131
|
-
| **Regeneration** | Built-in | Implement `onReload` |
|
|
132
|
-
| **Cancellation** | Built-in | Implement `onCancel` |
|
|
133
|
-
| **Multi-thread** | Via adapters | Via adapters |
|
|
134
|
-
|
|
135
|
-
### Available Adapters
|
|
136
|
-
|
|
137
|
-
| Adapter | `LocalRuntime` | `ExternalStoreRuntime` |
|
|
138
|
-
| ------- | -------------- | ---------------------- |
|
|
139
|
-
| ChatModel | ✅ Required | ❌ N/A |
|
|
140
|
-
| Attachments | ✅ | ✅ |
|
|
141
|
-
| Speech | ✅ | ✅ |
|
|
142
|
-
| Feedback | ✅ | ✅ |
|
|
143
|
-
| History | ✅ | ❌ Use your state |
|
|
144
|
-
| Suggestions | ✅ | ❌ Use your state |
|
|
145
|
-
|
|
146
|
-
## Common Implementation Patterns
|
|
147
|
-
|
|
148
|
-
### Vercel AI SDK with Streaming
|
|
149
|
-
|
|
150
|
-
```tsx
|
|
151
|
-
import { AssistantRuntimeProvider, Thread } from "@assistant-ui/react";
|
|
152
|
-
import { useChatRuntime } from "@assistant-ui/react-ai-sdk";
|
|
153
|
-
|
|
154
|
-
export function MyAssistant() {
|
|
155
|
-
const runtime = useChatRuntime();
|
|
156
|
-
|
|
157
|
-
return (
|
|
158
|
-
<AssistantRuntimeProvider runtime={runtime}>
|
|
159
|
-
<Thread />
|
|
160
|
-
</AssistantRuntimeProvider>
|
|
161
|
-
);
|
|
162
|
-
}
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
### Custom Backend with `LocalRuntime`
|
|
166
|
-
|
|
167
|
-
```tsx
|
|
168
|
-
import { useLocalRuntime } from "@assistant-ui/react";
|
|
169
|
-
|
|
170
|
-
const runtime = useLocalRuntime({
|
|
171
|
-
async run({ messages, abortSignal }) {
|
|
172
|
-
const response = await fetch("/api/chat", {
|
|
173
|
-
method: "POST",
|
|
174
|
-
headers: { "Content-Type": "application/json" },
|
|
175
|
-
body: JSON.stringify({ messages }),
|
|
176
|
-
signal: abortSignal,
|
|
177
|
-
});
|
|
178
|
-
return response.json();
|
|
179
|
-
},
|
|
180
|
-
});
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
### Redux Integration with `ExternalStoreRuntime`
|
|
184
|
-
|
|
185
|
-
```tsx
|
|
186
|
-
import { useExternalStoreRuntime } from "@assistant-ui/react";
|
|
187
|
-
|
|
188
|
-
const messages = useSelector(selectMessages);
|
|
189
|
-
const dispatch = useDispatch();
|
|
190
|
-
|
|
191
|
-
const runtime = useExternalStoreRuntime({
|
|
192
|
-
messages,
|
|
193
|
-
onNew: async (message) => {
|
|
194
|
-
dispatch(addUserMessage(message));
|
|
195
|
-
const response = await api.chat(message);
|
|
196
|
-
dispatch(addAssistantMessage(response));
|
|
197
|
-
},
|
|
198
|
-
setMessages: (messages) => dispatch(setMessages(messages)),
|
|
199
|
-
onEdit: async (message) => dispatch(editMessage(message)),
|
|
200
|
-
onReload: async (parentId) => dispatch(reloadMessage(parentId)),
|
|
201
|
-
});
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
## Examples
|
|
205
|
-
|
|
206
|
-
Explore our implementation examples:
|
|
207
|
-
|
|
208
|
-
- **[AI SDK v6 Example](https://github.com/assistant-ui/assistant-ui/tree/main/examples/with-ai-sdk-v6)** - Vercel AI SDK with `useChatRuntime`
|
|
209
|
-
- **[External Store Example](https://github.com/assistant-ui/assistant-ui/tree/main/examples/with-external-store)** - `ExternalStoreRuntime` with custom state
|
|
210
|
-
- **[Assistant Cloud Example](https://github.com/assistant-ui/assistant-ui/tree/main/examples/with-cloud)** - Multi-thread with cloud persistence
|
|
211
|
-
- **[LangGraph Example](https://github.com/assistant-ui/assistant-ui/tree/main/examples/with-langgraph)** - Agent workflows
|
|
212
|
-
|
|
213
|
-
## Common Pitfalls to Avoid
|
|
214
|
-
|
|
215
|
-
### LocalRuntime Pitfalls
|
|
216
|
-
- **Forgetting the adapter**: `LocalRuntime` requires a `ChatModelAdapter` - it won't work without one
|
|
217
|
-
- **Not handling errors**: Always handle API errors in your adapter's `run` function
|
|
218
|
-
- **Missing abort signal**: Pass `abortSignal` to your fetch calls for proper cancellation
|
|
219
|
-
|
|
220
|
-
### ExternalStoreRuntime Pitfalls
|
|
221
|
-
- **Mutating state**: Always create new arrays/objects when updating messages
|
|
222
|
-
- **Missing handlers**: Each UI feature requires its corresponding handler (e.g., no edit button without `onEdit`)
|
|
223
|
-
- **Forgetting optimistic updates**: Set `isRunning` to `true` for loading states
|
|
224
|
-
|
|
225
|
-
### General Pitfalls
|
|
226
|
-
- **Wrong integration level**: Don't use `LocalRuntime` if you already have Vercel AI SDK - use the AI SDK integration instead
|
|
227
|
-
- **Over-engineering**: Start with pre-built integrations before building custom solutions
|
|
228
|
-
- **Ignoring TypeScript**: The types will guide you to the correct implementation
|
|
229
|
-
|
|
230
|
-
## Next Steps
|
|
231
|
-
|
|
232
|
-
1. **Choose your runtime** based on the decision tree above
|
|
233
|
-
2. **Follow the specific guide**:
|
|
234
|
-
- [AI SDK Integration](/docs/runtimes/ai-sdk/v6)
|
|
235
|
-
- [`LocalRuntime` Guide](/docs/runtimes/custom/local)
|
|
236
|
-
- [`ExternalStoreRuntime` Guide](/docs/runtimes/custom/external-store)
|
|
237
|
-
- [LangGraph Integration](/docs/runtimes/langgraph)
|
|
238
|
-
- [LangChain useStream Integration](/docs/runtimes/langchain)
|
|
239
|
-
3. **Start with an example** from our [examples repository](https://github.com/assistant-ui/assistant-ui/tree/main/examples)
|
|
240
|
-
4. **Add features progressively** using adapters
|
|
241
|
-
5. **Consider Assistant Cloud** for production persistence
|
|
106
|
+
- **Architecture** — Framework adapters wrap one of two **core runtimes** (`LocalRuntime`, `ExternalStoreRuntime`). See [architecture](/docs/runtimes/concepts/architecture) for the full layering.
|
|
107
|
+
- **Adapters** (attachments, speech, feedback, history, suggestions) work the same way across runtimes. See [adapters](/docs/runtimes/concepts/adapters).
|
|
108
|
+
- **Threads** (single, cloud, custom database) follow the same model. See [threads](/docs/runtimes/concepts/threads).
|
|
109
|
+
- **Stability** policy: APIs prefixed with `unstable_` may change in any release. See [stability](/docs/runtimes/concepts/stability).
|
|
242
110
|
|
|
243
111
|
<Callout type="info">
|
|
244
|
-
Need help? Join our [Discord community](https://discord.gg/S9dwgCNEFs) or check the [GitHub](https://github.com/assistant-ui/assistant-ui).
|
|
112
|
+
Need help? Join our [Discord community](https://discord.gg/S9dwgCNEFs) or check the [GitHub repo](https://github.com/assistant-ui/assistant-ui).
|
|
245
113
|
</Callout>
|
|
@@ -4,6 +4,7 @@ description: A vertically stacked set of interactive headings that reveal or hid
|
|
|
4
4
|
links:
|
|
5
5
|
- label: Radix UI Accordion
|
|
6
6
|
url: https://www.radix-ui.com/primitives/docs/components/accordion
|
|
7
|
+
platforms: ["react"]
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
import { PreviewCode } from "@/components/docs/preview-code.server";
|
|
@@ -4,6 +4,7 @@ description: A small label component for displaying status, categories, or metad
|
|
|
4
4
|
links:
|
|
5
5
|
- label: Radix UI Slot
|
|
6
6
|
url: https://www.radix-ui.com/primitives/docs/utilities/slot
|
|
7
|
+
platforms: ["react"]
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
import { PreviewCode } from "@/components/docs/preview-code.server";
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Composer Trigger Popover
|
|
3
3
|
description: Reusable picker UI for @ mentions, / slash commands, and any other character-triggered popover.
|
|
4
|
+
platforms: ["react"]
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
import { ComposerTriggerPopoverSample } from "@/components/docs/samples/composer-trigger-popover";
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Context Display
|
|
3
3
|
description: Visualize token usage relative to a model's context window — ring, bar, or text — with a detailed hover popover.
|
|
4
|
+
platforms: ["react"]
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
import { ContextDisplaySample } from "@/components/docs/samples/context-display";
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Markdown
|
|
3
3
|
description: Display rich text with headings, lists, links, and code blocks.
|
|
4
|
+
platforms: ["react"]
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
import { MarkdownSample } from "@/components/docs/samples/markdown";
|
|
@@ -30,20 +31,7 @@ This adds a `/components/assistant-ui/markdown-text.tsx` file to your project, w
|
|
|
30
31
|
|
|
31
32
|
Pass the `MarkdownText` component to the `MessagePrimitive.Parts` component
|
|
32
33
|
|
|
33
|
-
```tsx
|
|
34
|
-
// @filename: /components/assistant-ui/markdown-text.tsx
|
|
35
|
-
import { FC } from "react";
|
|
36
|
-
export const MarkdownText: FC = () => null;
|
|
37
|
-
|
|
38
|
-
// @filename: ./thread.tsx
|
|
39
|
-
import { FC } from "react";
|
|
40
|
-
import { MessagePrimitive } from "@assistant-ui/react";
|
|
41
|
-
import { Avatar, AvatarFallback } from "@/components/ui/avatar";
|
|
42
|
-
|
|
43
|
-
const AssistantActionBar: FC = () => null;
|
|
44
|
-
const BranchPicker: FC<{ className?: string }> = () => null;
|
|
45
|
-
|
|
46
|
-
// ---cut---
|
|
34
|
+
```tsx title="/components/assistant-ui/thread.tsx" {1,7}
|
|
47
35
|
import { MarkdownText } from "@/components/assistant-ui/markdown-text";
|
|
48
36
|
|
|
49
37
|
const AssistantMessage: FC = () => {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Message Timing
|
|
3
3
|
description: Display streaming performance stats — TTFT, total time, tok/s, and chunk count — as a badge with hover popover.
|
|
4
|
+
platforms: ["react"]
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
import { MessageTimingSample } from "@/components/docs/samples/message-timing";
|
|
@@ -65,9 +66,9 @@ The badge displays `totalStreamTime` inline and reveals a popover on hover with
|
|
|
65
66
|
|
|
66
67
|
Timing accuracy depends on how your backend is connected.
|
|
67
68
|
|
|
68
|
-
###
|
|
69
|
+
### Data Stream (accurate)
|
|
69
70
|
|
|
70
|
-
When using
|
|
71
|
+
When using the [Data Stream](/docs/runtimes/custom/data-stream) protocol on the backend (via `assistant-stream`), token counts come directly from the model's usage data sent in `step-finish` chunks. The `tokensPerSecond` metric is exact whenever your backend reports `outputTokens`.
|
|
71
72
|
|
|
72
73
|
### Vercel AI SDK (estimated)
|
|
73
74
|
|