@assistant-ui/mcp-docs-server 0.1.31 → 0.1.32
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 +8 -8
- package/.docs/organized/code-examples/with-a2a.md +10 -10
- package/.docs/organized/code-examples/with-ag-ui.md +11 -11
- package/.docs/organized/code-examples/with-ai-sdk-v6.md +13 -13
- package/.docs/organized/code-examples/with-artifacts.md +13 -13
- package/.docs/organized/code-examples/with-assistant-transport.md +10 -10
- package/.docs/organized/code-examples/with-browser-extension.md +345 -0
- package/.docs/organized/code-examples/with-chain-of-thought.md +54 -17
- package/.docs/organized/code-examples/with-cloud-standalone.md +13 -13
- package/.docs/organized/code-examples/with-cloud.md +13 -13
- package/.docs/organized/code-examples/with-custom-thread-list.md +13 -13
- package/.docs/organized/code-examples/with-elevenlabs-conversational.md +17 -16
- package/.docs/organized/code-examples/with-elevenlabs-scribe.md +17 -16
- package/.docs/organized/code-examples/with-expo.md +24 -24
- package/.docs/organized/code-examples/with-external-store.md +10 -10
- package/.docs/organized/code-examples/with-ffmpeg.md +13 -13
- package/.docs/organized/code-examples/with-generative-ui.md +210 -13
- package/.docs/organized/code-examples/with-google-adk.md +10 -10
- package/.docs/organized/code-examples/with-heat-graph.md +8 -8
- package/.docs/organized/code-examples/with-image-generation.md +454 -0
- package/.docs/organized/code-examples/with-interactables.md +13 -13
- package/.docs/organized/code-examples/with-langchain.md +12 -12
- package/.docs/organized/code-examples/with-langgraph.md +15 -12
- package/.docs/organized/code-examples/with-livekit.md +18 -17
- package/.docs/organized/code-examples/with-mcp.md +748 -0
- package/.docs/organized/code-examples/with-opencode.md +11 -11
- package/.docs/organized/code-examples/with-parent-id-grouping.md +11 -11
- package/.docs/organized/code-examples/with-react-hook-form.md +14 -14
- package/.docs/organized/code-examples/with-react-ink.md +4 -4
- package/.docs/organized/code-examples/with-react-router.md +15 -15
- package/.docs/organized/code-examples/with-resumable-stream.md +660 -0
- package/.docs/organized/code-examples/with-store.md +8 -8
- package/.docs/organized/code-examples/with-tanstack.md +14 -14
- package/.docs/organized/code-examples/with-tap-runtime.md +11 -10
- package/.docs/raw/docs/(docs)/cli.mdx +1 -0
- package/.docs/raw/docs/(docs)/index.mdx +2 -2
- package/.docs/raw/docs/(docs)/installation.mdx +1 -1
- package/.docs/raw/docs/(reference)/api-reference/adapters/attachments.mdx +26 -24
- package/.docs/raw/docs/(reference)/api-reference/adapters/feedback.mdx +20 -0
- package/.docs/raw/docs/(reference)/api-reference/adapters/index.mdx +20 -12
- package/.docs/raw/docs/(reference)/api-reference/adapters/model.mdx +44 -0
- package/.docs/raw/docs/(reference)/api-reference/adapters/persistence.mdx +37 -16
- package/.docs/raw/docs/(reference)/api-reference/adapters/runtime.mdx +12 -23
- package/.docs/raw/docs/(reference)/api-reference/adapters/suggestions.mdx +20 -0
- package/.docs/raw/docs/(reference)/api-reference/context-providers/assistant-runtime-provider.mdx +37 -8
- package/.docs/raw/docs/(reference)/api-reference/context-providers/index.mdx +11 -9
- package/.docs/raw/docs/(reference)/api-reference/context-providers/scoped-providers.mdx +64 -0
- package/.docs/raw/docs/(reference)/api-reference/external-store/index.mdx +22 -0
- package/.docs/raw/docs/(reference)/api-reference/external-store/message-conversion.mdx +52 -0
- package/.docs/raw/docs/(reference)/api-reference/external-store/runtime.mdx +36 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/composer-triggers.mdx +98 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/index.mdx +18 -13
- package/.docs/raw/docs/(reference)/api-reference/hooks/model-context.mdx +18 -57
- package/.docs/raw/docs/(reference)/api-reference/hooks/primitives.mdx +640 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/runtimes.mdx +15 -28
- package/.docs/raw/docs/(reference)/api-reference/hooks/state.mdx +64 -18
- package/.docs/raw/docs/(reference)/api-reference/hooks/utilities.mdx +434 -0
- package/.docs/raw/docs/(reference)/api-reference/integrations/cloud-ai-sdk.mdx +24 -0
- package/.docs/raw/docs/(reference)/api-reference/integrations/index.mdx +11 -12
- package/.docs/raw/docs/(reference)/api-reference/integrations/react-ai-sdk.mdx +79 -0
- package/.docs/raw/docs/(reference)/api-reference/model-context/context.mdx +52 -0
- package/.docs/raw/docs/(reference)/api-reference/model-context/index.mdx +22 -0
- package/.docs/raw/docs/(reference)/api-reference/model-context/registry.mdx +20 -0
- package/.docs/raw/docs/(reference)/api-reference/overview.mdx +110 -131
- package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar-more.mdx +78 -221
- package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar.mdx +127 -242
- package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-if.mdx +39 -20
- package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-modal.mdx +66 -87
- package/.docs/raw/docs/(reference)/api-reference/primitives/attachment.mdx +50 -58
- package/.docs/raw/docs/(reference)/api-reference/primitives/branch-picker.mdx +80 -48
- package/.docs/raw/docs/(reference)/api-reference/primitives/chain-of-thought.mdx +67 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/composer.mdx +323 -461
- package/.docs/raw/docs/(reference)/api-reference/primitives/error.mdx +36 -43
- package/.docs/raw/docs/(reference)/api-reference/primitives/index.mdx +29 -24
- package/.docs/raw/docs/(reference)/api-reference/primitives/message-part.mdx +63 -245
- package/.docs/raw/docs/(reference)/api-reference/primitives/message.mdx +175 -591
- package/.docs/raw/docs/(reference)/api-reference/primitives/queue-item.mdx +65 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/selection-toolbar.mdx +35 -22
- package/.docs/raw/docs/(reference)/api-reference/primitives/suggestion.mdx +57 -140
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item-more.mdx +70 -161
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item.mdx +84 -108
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list.mdx +77 -96
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread.mdx +173 -349
- package/.docs/raw/docs/(reference)/api-reference/runtimes/assistant-runtime.mdx +9 -21
- package/.docs/raw/docs/(reference)/api-reference/runtimes/attachment-runtime.mdx +10 -21
- package/.docs/raw/docs/(reference)/api-reference/runtimes/composer-runtime.mdx +15 -70
- package/.docs/raw/docs/(reference)/api-reference/runtimes/index.mdx +18 -13
- package/.docs/raw/docs/(reference)/api-reference/runtimes/message-part-runtime.mdx +25 -28
- package/.docs/raw/docs/(reference)/api-reference/runtimes/message-runtime.mdx +11 -63
- package/.docs/raw/docs/(reference)/api-reference/runtimes/queue-state.mdx +20 -0
- package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-item-runtime.mdx +11 -48
- package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-runtime.mdx +10 -47
- package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-runtime.mdx +18 -30
- package/.docs/raw/docs/(reference)/api-reference/tools/component-tools.mdx +68 -0
- package/.docs/raw/docs/(reference)/api-reference/tools/index.mdx +39 -0
- package/.docs/raw/docs/(reference)/api-reference/tools/rendering.mdx +79 -0
- package/.docs/raw/docs/(reference)/api-reference/tools/status.mdx +42 -0
- package/.docs/raw/docs/(reference)/api-reference/tools/toolkits.mdx +92 -0
- package/.docs/raw/docs/(reference)/api-reference/transport/assistant-transport.mdx +48 -0
- package/.docs/raw/docs/(reference)/api-reference/transport/frame.mdx +62 -0
- package/.docs/raw/docs/(reference)/api-reference/transport/index.mdx +22 -0
- package/.docs/raw/docs/(reference)/api-reference/utilities/index.mdx +19 -0
- package/.docs/raw/docs/(reference)/api-reference/utilities/miscellaneous.mdx +131 -0
- package/.docs/raw/docs/(reference)/api-reference/voice/index.mdx +22 -0
- package/.docs/raw/docs/(reference)/api-reference/voice/session.mdx +54 -0
- package/.docs/raw/docs/(reference)/api-reference/voice/speech-dictation.mdx +36 -0
- package/.docs/raw/docs/cloud/ai-sdk.mdx +1 -1
- package/.docs/raw/docs/cloud/index.mdx +2 -2
- package/.docs/raw/docs/guides/attachments.mdx +4 -4
- package/.docs/raw/docs/guides/branching.mdx +1 -1
- package/.docs/raw/docs/guides/chain-of-thought.mdx +5 -5
- package/.docs/raw/docs/guides/context-api.mdx +4 -4
- package/.docs/raw/docs/guides/dictation.mdx +2 -2
- package/.docs/raw/docs/guides/editing.mdx +1 -1
- package/.docs/raw/docs/guides/generative-ui.mdx +142 -0
- package/.docs/raw/docs/guides/image-generation.mdx +74 -0
- package/.docs/raw/docs/guides/index.mdx +2 -2
- package/.docs/raw/docs/guides/interactables.mdx +2 -2
- package/.docs/raw/docs/guides/latex.mdx +2 -2
- package/.docs/raw/docs/guides/mcp-apps.mdx +231 -0
- package/.docs/raw/docs/guides/mentions.mdx +2 -2
- package/.docs/raw/docs/guides/message-timing.mdx +38 -5
- package/.docs/raw/docs/guides/multi-agent.mdx +2 -2
- package/.docs/raw/docs/guides/quoting.mdx +1 -1
- package/.docs/raw/docs/guides/resumable-stream-deployment.mdx +212 -0
- package/.docs/raw/docs/guides/resumable-stream-stores.mdx +152 -0
- package/.docs/raw/docs/guides/resumable-streams.mdx +210 -0
- package/.docs/raw/docs/guides/slash-commands.mdx +1 -1
- package/.docs/raw/docs/guides/speech.mdx +2 -2
- package/.docs/raw/docs/guides/suggestions.mdx +88 -4
- package/.docs/raw/docs/guides/tool-ui.mdx +2 -2
- package/.docs/raw/docs/guides/tools.mdx +66 -5
- package/.docs/raw/docs/guides/voice.mdx +2 -2
- package/.docs/raw/docs/ink/adapters.mdx +37 -1
- package/.docs/raw/docs/ink/custom-backend.mdx +59 -8
- package/.docs/raw/docs/ink/index.mdx +10 -11
- package/.docs/raw/docs/ink/primitives.mdx +349 -8
- package/.docs/raw/docs/integrations/auth/better-auth.mdx +1 -1
- package/.docs/raw/docs/integrations/auth/clerk.mdx +1 -1
- package/.docs/raw/docs/integrations/auth/next-auth.mdx +1 -1
- package/.docs/raw/docs/integrations/frameworks/ai-sdk.mdx +2 -2
- package/.docs/raw/docs/integrations/frameworks/cloudflare-agents/overview.mdx +282 -0
- package/.docs/raw/docs/integrations/frameworks/mastra/overview.mdx +2 -2
- package/.docs/raw/docs/integrations/frameworks/mastra/separate-server.mdx +1 -1
- package/.docs/raw/docs/integrations/gateways/index.mdx +9 -4
- package/.docs/raw/docs/integrations/index.mdx +15 -3
- package/.docs/raw/docs/integrations/observability/langfuse.mdx +8 -1
- package/.docs/raw/docs/integrations/observability/langsmith.mdx +8 -4
- package/.docs/raw/docs/integrations/tools/react-mcp.mdx +337 -0
- package/.docs/raw/docs/primitives/composer.mdx +53 -0
- package/.docs/raw/docs/primitives/index.mdx +2 -2
- package/.docs/raw/docs/primitives/suggestion.mdx +9 -0
- package/.docs/raw/docs/react-native/hooks.mdx +2 -2
- package/.docs/raw/docs/react-native/index.mdx +4 -4
- package/.docs/raw/docs/runtimes/a2a/client-and-hooks.mdx +4 -4
- package/.docs/raw/docs/runtimes/a2a/overview.mdx +2 -2
- package/.docs/raw/docs/runtimes/ag-ui/overview.mdx +2 -2
- package/.docs/raw/docs/runtimes/ag-ui/runtime-options.mdx +32 -1
- package/.docs/raw/docs/runtimes/ai-sdk/overview.mdx +2 -2
- package/.docs/raw/docs/runtimes/ai-sdk/v4-legacy.mdx +7 -2
- package/.docs/raw/docs/runtimes/ai-sdk/v5-legacy.mdx +1 -1
- package/.docs/raw/docs/runtimes/ai-sdk/v6.mdx +7 -0
- package/.docs/raw/docs/runtimes/custom/data-stream.mdx +27 -2
- package/.docs/raw/docs/runtimes/custom/external-store.mdx +9 -1
- package/.docs/raw/docs/runtimes/custom/overview.mdx +2 -2
- package/.docs/raw/docs/runtimes/google-adk/overview.mdx +2 -2
- package/.docs/raw/docs/runtimes/langchain.mdx +2 -2
- package/.docs/raw/docs/runtimes/langgraph/overview.mdx +2 -2
- package/.docs/raw/docs/runtimes/opencode/overview.mdx +2 -2
- package/.docs/raw/docs/runtimes/opencode/quickstart.mdx +1 -1
- package/.docs/raw/docs/runtimes/pick-a-runtime.mdx +12 -5
- package/.docs/raw/docs/ui/composer-trigger-popover.mdx +11 -1
- package/.docs/raw/docs/ui/mcp-config.mdx +102 -0
- package/.docs/raw/docs/ui/model-selector.mdx +8 -8
- package/.docs/raw/docs/ui/sources.mdx +17 -0
- package/.docs/raw/docs/ui/streamdown.mdx +34 -2
- package/.docs/raw/docs/ui/thread-list.mdx +2 -2
- package/.docs/raw/docs/ui/thread.mdx +2 -2
- package/README.md +14 -72
- package/dist/constants.d.ts +12 -9
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +13 -9
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -24
- package/dist/index.js.map +1 -1
- package/dist/prepare-docs/code-examples.d.ts +4 -1
- package/dist/prepare-docs/code-examples.d.ts.map +1 -1
- package/dist/prepare-docs/code-examples.js +109 -121
- package/dist/prepare-docs/code-examples.js.map +1 -1
- package/dist/prepare-docs/copy-raw.d.ts +4 -1
- package/dist/prepare-docs/copy-raw.d.ts.map +1 -1
- package/dist/prepare-docs/copy-raw.js +45 -42
- package/dist/prepare-docs/copy-raw.js.map +1 -1
- package/dist/prepare-docs/prepare.d.ts +1 -2
- package/dist/prepare-docs/prepare.js +17 -17
- package/dist/prepare-docs/prepare.js.map +1 -1
- package/dist/stdio.d.ts +1 -3
- package/dist/stdio.js +6 -3
- package/dist/stdio.js.map +1 -1
- package/dist/tools/docs.d.ts +20 -15
- package/dist/tools/docs.d.ts.map +1 -1
- package/dist/tools/docs.js +140 -161
- package/dist/tools/docs.js.map +1 -1
- package/dist/tools/examples.d.ts +20 -15
- package/dist/tools/examples.d.ts.map +1 -1
- package/dist/tools/examples.js +74 -86
- package/dist/tools/examples.js.map +1 -1
- package/dist/tools/tests/test-setup.d.ts +5 -2
- package/dist/tools/tests/test-setup.d.ts.map +1 -1
- package/dist/tools/tests/test-setup.js +21 -28
- package/dist/tools/tests/test-setup.js.map +1 -1
- package/dist/utils/logger.d.ts +8 -5
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +17 -17
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/mcp-format.d.ts +8 -5
- package/dist/utils/mcp-format.d.ts.map +1 -1
- package/dist/utils/mcp-format.js +9 -9
- package/dist/utils/mcp-format.js.map +1 -1
- package/dist/utils/mdx.d.ts +8 -6
- package/dist/utils/mdx.d.ts.map +1 -1
- package/dist/utils/mdx.js +22 -22
- package/dist/utils/mdx.js.map +1 -1
- package/dist/utils/paths.d.ts +9 -6
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +66 -76
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/security.d.ts +4 -1
- package/dist/utils/security.d.ts.map +1 -1
- package/dist/utils/security.js +19 -40
- package/dist/utils/security.js.map +1 -1
- package/package.json +5 -5
- package/.docs/raw/docs/(reference)/api-reference/adapters/feedback-speech.mdx +0 -41
- package/.docs/raw/docs/(reference)/api-reference/context-providers/text-message-part-provider.mdx +0 -40
- package/.docs/raw/docs/(reference)/api-reference/integrations/react-data-stream.mdx +0 -260
- package/.docs/raw/docs/(reference)/api-reference/integrations/react-hook-form.mdx +0 -103
- package/.docs/raw/docs/(reference)/api-reference/integrations/vercel-ai-sdk.mdx +0 -254
- package/dist/prepare-docs/prepare.d.ts.map +0 -1
- package/dist/stdio.d.ts.map +0 -1
- /package/.docs/raw/docs/{(reference)/migrations → migrations}/deprecation-policy.mdx +0 -0
- /package/.docs/raw/docs/{(reference) → migrations}/react-compatibility.mdx +0 -0
- /package/.docs/raw/docs/{(reference)/migrations → migrations}/react-langgraph-v0-7.mdx +0 -0
- /package/.docs/raw/docs/{(reference)/migrations → migrations}/v0-11.mdx +0 -0
- /package/.docs/raw/docs/{(reference)/migrations → migrations}/v0-12.mdx +0 -0
- /package/.docs/raw/docs/{(reference)/migrations → migrations}/v0-14.mdx +0 -0
|
@@ -17,6 +17,17 @@ Pick this runtime when:
|
|
|
17
17
|
|
|
18
18
|
If your backend exposes a richer state surface, consider [`AssistantTransport`](/docs/runtimes/custom/assistant-transport) instead.
|
|
19
19
|
|
|
20
|
+
## Wire protocols
|
|
21
|
+
|
|
22
|
+
`useDataStreamRuntime` accepts two wire formats via its `protocol` option:
|
|
23
|
+
|
|
24
|
+
| Protocol | Default | Matching backend |
|
|
25
|
+
| --- | --- | --- |
|
|
26
|
+
| `"ui-message-stream"` | yes | AI SDK v6's `result.toUIMessageStreamResponse()` (SSE) |
|
|
27
|
+
| `"data-stream"` | no | `createAssistantStreamResponse` from `assistant-stream`, or AI SDK v4's `toDataStreamResponse()` (Vercel data stream v1) |
|
|
28
|
+
|
|
29
|
+
Pairing the default decoder with a data stream backend throws `Stream ended abruptly without receiving [DONE] marker` at flush; pass `protocol: "data-stream"` to switch decoders.
|
|
30
|
+
|
|
20
31
|
## Install
|
|
21
32
|
|
|
22
33
|
<PlatformTabs>
|
|
@@ -55,7 +66,10 @@ import { AssistantRuntimeProvider } from "@assistant-ui/react";
|
|
|
55
66
|
import { Thread } from "@/components/assistant-ui/thread";
|
|
56
67
|
|
|
57
68
|
export default function ChatPage() {
|
|
58
|
-
const runtime = useDataStreamRuntime({
|
|
69
|
+
const runtime = useDataStreamRuntime({
|
|
70
|
+
api: "/api/chat",
|
|
71
|
+
protocol: "data-stream",
|
|
72
|
+
});
|
|
59
73
|
return (
|
|
60
74
|
<AssistantRuntimeProvider runtime={runtime}>
|
|
61
75
|
<Thread />
|
|
@@ -76,7 +90,10 @@ import { Thread } from "@/components/assistant-ui/thread";
|
|
|
76
90
|
const API_URL = process.env.EXPO_PUBLIC_API_URL ?? "http://localhost:3000";
|
|
77
91
|
|
|
78
92
|
export default function ChatPage() {
|
|
79
|
-
const runtime = useDataStreamRuntime({
|
|
93
|
+
const runtime = useDataStreamRuntime({
|
|
94
|
+
api: `${API_URL}/api/chat`,
|
|
95
|
+
protocol: "data-stream",
|
|
96
|
+
});
|
|
80
97
|
return (
|
|
81
98
|
<AssistantRuntimeProvider runtime={runtime}>
|
|
82
99
|
<View style={{ flex: 1 }}>
|
|
@@ -99,6 +116,7 @@ import { Thread } from "./components/thread.js";
|
|
|
99
116
|
export function App() {
|
|
100
117
|
const runtime = useDataStreamRuntime({
|
|
101
118
|
api: "http://localhost:3000/api/chat",
|
|
119
|
+
protocol: "data-stream",
|
|
102
120
|
});
|
|
103
121
|
return (
|
|
104
122
|
<AssistantRuntimeProvider runtime={runtime}>
|
|
@@ -139,6 +157,8 @@ export async function POST(request: Request) {
|
|
|
139
157
|
|
|
140
158
|
The request body includes `messages`, `tools`, `system` (if configured), and `threadId`.
|
|
141
159
|
|
|
160
|
+
`createAssistantStreamResponse` returns a standard Web `Response`. It drops into any Fetch-style route (Next.js App Router, Hono, Bun.serve, Deno, Cloudflare Workers) without ceremony. On frameworks that use their own response object (Express, Fastify), copy `status` and `headers` over, then pipe `response.body` into the framework's writable stream. Avoid sending the `Response` body into a `res` object whose lifecycle is already controlled by the framework (that is the `ERR_INVALID_STATE: Controller is already closed` failure mode).
|
|
161
|
+
|
|
142
162
|
</Step>
|
|
143
163
|
</Steps>
|
|
144
164
|
|
|
@@ -147,6 +167,7 @@ The request body includes `messages`, `tools`, `system` (if configured), and `th
|
|
|
147
167
|
```tsx
|
|
148
168
|
const runtime = useDataStreamRuntime({
|
|
149
169
|
api: "/api/chat",
|
|
170
|
+
protocol: "data-stream",
|
|
150
171
|
headers: { Authorization: `Bearer ${token}`, "X-Custom-Header": "value" },
|
|
151
172
|
credentials: "include",
|
|
152
173
|
});
|
|
@@ -157,6 +178,7 @@ Evaluate per-request:
|
|
|
157
178
|
```tsx
|
|
158
179
|
const runtime = useDataStreamRuntime({
|
|
159
180
|
api: "/api/chat",
|
|
181
|
+
protocol: "data-stream",
|
|
160
182
|
headers: async () => ({
|
|
161
183
|
Authorization: `Bearer ${await getAuthToken()}`,
|
|
162
184
|
}),
|
|
@@ -173,6 +195,7 @@ const runtime = useDataStreamRuntime({
|
|
|
173
195
|
```tsx
|
|
174
196
|
const runtime = useDataStreamRuntime({
|
|
175
197
|
api: "/api/chat",
|
|
198
|
+
protocol: "data-stream",
|
|
176
199
|
onResponse: (response) => console.log("status:", response.status),
|
|
177
200
|
onFinish: (message) => console.log("done:", message),
|
|
178
201
|
onError: (error) => console.error(error),
|
|
@@ -207,6 +230,7 @@ const myTools = {
|
|
|
207
230
|
|
|
208
231
|
const runtime = useDataStreamRuntime({
|
|
209
232
|
api: "/api/chat",
|
|
233
|
+
protocol: "data-stream",
|
|
210
234
|
body: { tools: toToolsJSONSchema(myTools) },
|
|
211
235
|
});
|
|
212
236
|
```
|
|
@@ -267,6 +291,7 @@ const runtime = useCloudRuntime({
|
|
|
267
291
|
```tsx
|
|
268
292
|
const runtime = useDataStreamRuntime({
|
|
269
293
|
api: "/api/chat",
|
|
294
|
+
protocol: "data-stream",
|
|
270
295
|
initialMessages: [
|
|
271
296
|
{ role: "user", content: [{ type: "text", text: "Hello" }] },
|
|
272
297
|
{ role: "assistant", content: [{ type: "text", text: "Hi!" }] },
|
|
@@ -627,7 +627,15 @@ useExternalStoreRuntime({
|
|
|
627
627
|
{
|
|
628
628
|
name: "isDisabled",
|
|
629
629
|
type: "boolean",
|
|
630
|
-
description:
|
|
630
|
+
description:
|
|
631
|
+
"Disables the entire composer, including the text input. For a narrower gate that keeps the input usable but blocks only sending, use isSendDisabled.",
|
|
632
|
+
default: "false",
|
|
633
|
+
},
|
|
634
|
+
{
|
|
635
|
+
name: "isSendDisabled",
|
|
636
|
+
type: "boolean",
|
|
637
|
+
description:
|
|
638
|
+
"Blocks new-message sending while leaving the input usable. When true, the thread composer's canSend becomes false, the Send button is disabled, Enter and the steer hotkey are no-ops, and aui.composer().send() short-circuits. Edit composers (saving message edits) ignore this flag. Use this to gate sending on external React state (e.g. while tools or auth are still loading).",
|
|
631
639
|
default: "false",
|
|
632
640
|
},
|
|
633
641
|
{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
3
|
-
description:
|
|
2
|
+
title: Custom Runtime
|
|
3
|
+
description: Build a React chat UI for any AI backend with assistant-ui — four runtime patterns covering local state, REST, custom protocols, and external runtimes.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
If no [framework adapter](/docs/runtimes/pick-a-runtime) fits your backend, this section gives you four building blocks. All four are built on one of the two core runtimes; understanding the layering (see [architecture](/docs/runtimes/concepts/architecture)) makes the choice clear.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
3
|
-
description: Connect
|
|
2
|
+
title: Google ADK Runtime
|
|
3
|
+
description: Connect Google's Agent Development Kit (ADK) to a React chat UI with assistant-ui — streaming, tool calls, and multi-agent orchestration supported.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
`@assistant-ui/react-google-adk` integrates with [Google ADK JS](https://github.com/google/adk-js), Google's official agent framework for TypeScript, and works with ADK Python backends as well. It supports streaming text, tool calls, multi-agent orchestration, code execution, session state, tool confirmations, auth flows, and input requests.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: LangChain
|
|
3
|
-
description:
|
|
2
|
+
title: LangChain React Runtime
|
|
3
|
+
description: Use LangChain's useStream hook with a React chat UI through assistant-ui — a lighter LangGraph adapter that delegates streaming to @langchain/react.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
import { LangGraphIcon } from "@/components/icons/langgraph";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
3
|
-
description:
|
|
2
|
+
title: LangGraph UI Runtime
|
|
3
|
+
description: Build a chat UI for LangGraph agents in React with assistant-ui — streaming, subgraph events, UI messages, interrupts, and end-to-end cancellation supported.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
`@assistant-ui/react-langgraph` integrates with [`@langchain/langgraph-sdk`](https://docs.langchain.com/oss/javascript/langgraph-sdk) directly, exposing the full LangGraph Cloud feature set in assistant-ui: streaming, subgraph events, UI messages, message metadata, interrupts, and end-to-end cancellation.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
3
|
-
description:
|
|
2
|
+
title: OpenCode Runtime
|
|
3
|
+
description: Build a React chat UI for OpenCode coding agents with assistant-ui — streaming, tool calls, file edits, and terminal output rendered in chat.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
`@assistant-ui/react-opencode` is a runtime adapter for [OpenCode](https://opencode.ai/), an open-source AI coding agent. It wires the OpenCode server's session and event APIs into an assistant-ui thread, including tool permissions, interactive questions, and session state.
|
|
@@ -72,7 +72,7 @@ Pin a default model or agent when starting new sessions:
|
|
|
72
72
|
```tsx
|
|
73
73
|
const runtime = useOpenCodeRuntime({
|
|
74
74
|
baseUrl: "http://localhost:4096",
|
|
75
|
-
defaultModel: { providerID: "anthropic", modelID: "claude-sonnet-4" },
|
|
75
|
+
defaultModel: { providerID: "anthropic", modelID: "claude-sonnet-4-6" },
|
|
76
76
|
defaultAgent: "coder",
|
|
77
77
|
});
|
|
78
78
|
```
|
|
@@ -3,14 +3,15 @@ title: Picking a runtime
|
|
|
3
3
|
description: Decision guide for choosing the right runtime, by framework or by feature.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
import { A2AIcon } from "@/components/icons/a2a";
|
|
7
|
+
import { AdkIcon } from "@/components/icons/adk";
|
|
6
8
|
import { AguiIcon } from "@/components/icons/agui";
|
|
7
|
-
import {
|
|
9
|
+
import { CloudflareIcon } from "@/components/icons/cloudflare";
|
|
8
10
|
import { LangChainIcon } from "@/components/icons/langchain";
|
|
9
11
|
import { LangGraphIcon } from "@/components/icons/langgraph";
|
|
10
12
|
import { MastraIcon } from "@/components/icons/mastra";
|
|
11
13
|
import { OpenCodeIcon } from "@/components/icons/opencode";
|
|
12
14
|
import { VercelIcon } from "@/components/icons/vercel";
|
|
13
|
-
import { Network } from "lucide-react";
|
|
14
15
|
|
|
15
16
|
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.
|
|
16
17
|
|
|
@@ -42,16 +43,16 @@ assistant-ui ships React adapter packages for these. Pick the matching card and
|
|
|
42
43
|
href="/docs/runtimes/langchain"
|
|
43
44
|
/>
|
|
44
45
|
<Card
|
|
45
|
-
icon={<
|
|
46
|
+
icon={<AdkIcon width={20} height={20} />}
|
|
46
47
|
title="Google ADK"
|
|
47
48
|
description="ADK JS or Python agents. Tool confirmations, auth flows, multi-agent, code execution."
|
|
48
49
|
href="/docs/runtimes/google-adk"
|
|
49
50
|
/>
|
|
50
51
|
<Card
|
|
51
|
-
icon={<
|
|
52
|
+
icon={<A2AIcon width={20} height={20} />}
|
|
52
53
|
title="A2A Protocol"
|
|
53
54
|
description="Any A2A v1.0-compliant agent server. Streaming task state, artifacts, multi-tenancy."
|
|
54
|
-
href="/docs/runtimes/a2a"
|
|
55
|
+
href="/docs/runtimes/a2a/overview"
|
|
55
56
|
/>
|
|
56
57
|
<Card
|
|
57
58
|
icon={<AguiIcon width={20} height={20} />}
|
|
@@ -76,6 +77,12 @@ assistant-ui ships React adapter packages for these. Pick the matching card and
|
|
|
76
77
|
For frameworks without a dedicated adapter, these wiring guides route through one of the adapters above.
|
|
77
78
|
|
|
78
79
|
<Cards>
|
|
80
|
+
<Card
|
|
81
|
+
icon={<CloudflareIcon width={20} height={20} />}
|
|
82
|
+
title="Cloudflare Agents"
|
|
83
|
+
description="Stateful agents on Durable Objects with WebSocket streaming. Wired through the Vercel AI SDK runtime."
|
|
84
|
+
href="/docs/integrations/frameworks/cloudflare-agents/overview"
|
|
85
|
+
/>
|
|
79
86
|
<Card
|
|
80
87
|
icon={<MastraIcon width={20} height={20} />}
|
|
81
88
|
title="Mastra"
|
|
@@ -158,10 +158,20 @@ const commandHandlers: Record<string, () => void> = {
|
|
|
158
158
|
| --- | --- |
|
|
159
159
|
| <Kbd>ArrowDown</Kbd> | Highlight next item |
|
|
160
160
|
| <Kbd>ArrowUp</Kbd> | Highlight previous item |
|
|
161
|
-
| <Kbd>Enter</Kbd> | Select highlighted item / drill into category |
|
|
161
|
+
| <Kbd>Enter</Kbd> / <Kbd>Tab</Kbd> | Select highlighted item / drill into category |
|
|
162
|
+
| <Kbd>Shift + Enter</Kbd> | Insert newline (popover stays open) |
|
|
163
|
+
| <Kbd>Shift + Tab</Kbd> | Pass through (native focus traversal) |
|
|
162
164
|
| <Kbd>Escape</Kbd> | Close popover |
|
|
163
165
|
| <Kbd>Backspace</Kbd> | Go back to categories (when query is empty) |
|
|
164
166
|
|
|
167
|
+
## Accessibility
|
|
168
|
+
|
|
169
|
+
The popover implements the WAI-ARIA editable combobox pattern.
|
|
170
|
+
|
|
171
|
+
- The listbox container has `role="listbox"` and each item has `role="option"` plus `aria-selected`.
|
|
172
|
+
- When a popover is open, `ComposerPrimitive.Input` (the underlying `<textarea>`) automatically receives `aria-controls`, `aria-expanded="true"`, `aria-haspopup="listbox"`, and `aria-activedescendant` pointing at the highlighted option. Attributes are removed when the popover closes.
|
|
173
|
+
- When `ComposerPrimitive.Input` is rendered outside a `TriggerPopoverRoot`, no ARIA attributes are added.
|
|
174
|
+
|
|
165
175
|
## API Reference
|
|
166
176
|
|
|
167
177
|
| Prop | Type | Default | Description |
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: MCP Config Dialog
|
|
3
|
+
description: Drop-in shadcn dialog that lists MCP connectors and custom servers, with inline OAuth/bearer auth controls and an add form.
|
|
4
|
+
platforms: ["react"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
`McpConfigDialog` is a shadcn template that wraps the [`@assistant-ui/react-mcp`](/docs/integrations/tools/react-mcp) primitives. Render it anywhere inside an `McpManagerResource`-mounted client and your users get a styled MCP server panel — no manual primitive composition.
|
|
8
|
+
|
|
9
|
+
## Getting Started
|
|
10
|
+
|
|
11
|
+
<Steps>
|
|
12
|
+
<Step>
|
|
13
|
+
|
|
14
|
+
### Install the package and the component
|
|
15
|
+
|
|
16
|
+
<InstallCommand npm={["@assistant-ui/react-mcp"]} />
|
|
17
|
+
|
|
18
|
+
<InstallCommand shadcn={["mcp-config"]} />
|
|
19
|
+
|
|
20
|
+
</Step>
|
|
21
|
+
<Step>
|
|
22
|
+
|
|
23
|
+
### Mount the manager
|
|
24
|
+
|
|
25
|
+
```tsx title="app/providers.tsx"
|
|
26
|
+
"use client";
|
|
27
|
+
|
|
28
|
+
import { AuiProvider, useAui } from "@assistant-ui/react";
|
|
29
|
+
import { McpManagerResource, defineConnector } from "@assistant-ui/react-mcp";
|
|
30
|
+
|
|
31
|
+
const connectors = [
|
|
32
|
+
defineConnector({
|
|
33
|
+
id: "linear",
|
|
34
|
+
name: "Linear",
|
|
35
|
+
url: "https://mcp.linear.app",
|
|
36
|
+
auth: { type: "oauth", scopes: ["read"] },
|
|
37
|
+
}),
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
export function Providers({ children }: { children: React.ReactNode }) {
|
|
41
|
+
const aui = useAui({ mcp: McpManagerResource({ connectors }) });
|
|
42
|
+
return <AuiProvider value={aui}>{children}</AuiProvider>;
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
</Step>
|
|
47
|
+
<Step>
|
|
48
|
+
|
|
49
|
+
### Drop the dialog in
|
|
50
|
+
|
|
51
|
+
```tsx title="app/page.tsx"
|
|
52
|
+
import { McpConfigDialog } from "@/components/assistant-ui/mcp-config";
|
|
53
|
+
|
|
54
|
+
export default function Page() {
|
|
55
|
+
return (
|
|
56
|
+
<header className="flex items-center justify-between">
|
|
57
|
+
<h1>My app</h1>
|
|
58
|
+
<McpConfigDialog />
|
|
59
|
+
</header>
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
That's it. The default trigger is an outline `"🔌 MCP servers"` button. Click it to open the dialog, which renders a **Connectors** list (your app-defined presets with connect/authorize/disconnect controls), a **Custom servers** list (user-added entries with the same controls plus a remove button), and an inline **Add server** form for URL + name + auth selection.
|
|
65
|
+
|
|
66
|
+
</Step>
|
|
67
|
+
<Step>
|
|
68
|
+
|
|
69
|
+
### Override the trigger (optional)
|
|
70
|
+
|
|
71
|
+
Pass children to swap the default button for your own:
|
|
72
|
+
|
|
73
|
+
```tsx
|
|
74
|
+
<McpConfigDialog>
|
|
75
|
+
<Button variant="ghost">Servers</Button>
|
|
76
|
+
</McpConfigDialog>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
</Step>
|
|
80
|
+
<Step>
|
|
81
|
+
|
|
82
|
+
### Wire up the OAuth callback
|
|
83
|
+
|
|
84
|
+
Required for any OAuth-enabled connector or custom server. See the [OAuth callback section in the react-mcp guide](/docs/integrations/tools/react-mcp#handle-the-oauth-callback) for the route handler.
|
|
85
|
+
|
|
86
|
+
</Step>
|
|
87
|
+
</Steps>
|
|
88
|
+
|
|
89
|
+
## Related
|
|
90
|
+
|
|
91
|
+
<Cards>
|
|
92
|
+
<Card
|
|
93
|
+
title="User-managed MCP servers"
|
|
94
|
+
description="Full @assistant-ui/react-mcp guide — connectors, custom servers, OAuth, storage, custom primitives."
|
|
95
|
+
href="/docs/integrations/tools/react-mcp"
|
|
96
|
+
/>
|
|
97
|
+
<Card
|
|
98
|
+
title="Server-side MCP"
|
|
99
|
+
description="App-developer-controlled MCP servers wired into the API route."
|
|
100
|
+
href="/docs/integrations/tools/mcp"
|
|
101
|
+
/>
|
|
102
|
+
</Cards>
|
|
@@ -34,11 +34,11 @@ const ComposerAction: FC = () => {
|
|
|
34
34
|
<div className="flex items-center gap-1">
|
|
35
35
|
<ModelSelector
|
|
36
36
|
models={[
|
|
37
|
-
{ id: "gpt-
|
|
38
|
-
{ id: "gpt-
|
|
39
|
-
{ id: "
|
|
37
|
+
{ id: "gpt-5.4-nano", name: "GPT-5.4 Nano", description: "Fast and efficient" },
|
|
38
|
+
{ id: "gpt-5.4-mini", name: "GPT-5.4 Mini", description: "Balanced performance" },
|
|
39
|
+
{ id: "gpt-5.5", name: "GPT-5.5", description: "Most capable" },
|
|
40
40
|
]}
|
|
41
|
-
defaultValue="gpt-
|
|
41
|
+
defaultValue="gpt-5.4-nano"
|
|
42
42
|
size="sm"
|
|
43
43
|
/>
|
|
44
44
|
</div>
|
|
@@ -58,7 +58,7 @@ export async function POST(req: Request) {
|
|
|
58
58
|
const { messages, config } = await req.json();
|
|
59
59
|
|
|
60
60
|
const result = streamText({
|
|
61
|
-
model: openai(config?.modelName ?? "gpt-
|
|
61
|
+
model: openai(config?.modelName ?? "gpt-5.4-nano"),
|
|
62
62
|
messages: await convertToModelMessages(messages),
|
|
63
63
|
});
|
|
64
64
|
|
|
@@ -102,9 +102,9 @@ Each model in the `models` array supports:
|
|
|
102
102
|
```tsx
|
|
103
103
|
const models = [
|
|
104
104
|
{
|
|
105
|
-
id: "gpt-
|
|
106
|
-
name: "GPT-
|
|
107
|
-
description: "
|
|
105
|
+
id: "gpt-5.4-nano", // Sent to backend as config.modelName
|
|
106
|
+
name: "GPT-5.4 Nano", // Display name in trigger and items
|
|
107
|
+
description: "Fast and efficient", // Optional subtitle in items only
|
|
108
108
|
icon: <SparklesIcon />, // Optional icon (any ReactNode)
|
|
109
109
|
},
|
|
110
110
|
];
|
|
@@ -119,8 +119,25 @@ Displays the favicon for the given URL. Falls back to the domain initial inside
|
|
|
119
119
|
| Prop | Type | Default | Description |
|
|
120
120
|
|------|------|---------|-------------|
|
|
121
121
|
| `url` | `string` | — | URL used to derive the favicon and fallback initial |
|
|
122
|
+
| `faviconUrl` | `(domain: string) => string` | DuckDuckGo's `ip3` endpoint | Override the favicon source — useful in environments where the default service is unreachable |
|
|
122
123
|
| `className` | `string` | — | Additional CSS classes applied to the `<img>` or fallback `<span>` |
|
|
123
124
|
|
|
125
|
+
#### Customizing the favicon provider
|
|
126
|
+
|
|
127
|
+
The default `<Sources>` component renders `<SourceIcon>` without forwarding `faviconUrl`, so the prop only applies when you compose `Sources.Icon` directly:
|
|
128
|
+
|
|
129
|
+
```tsx
|
|
130
|
+
<Sources.Root href={url}>
|
|
131
|
+
<Sources.Icon
|
|
132
|
+
url={url}
|
|
133
|
+
faviconUrl={(domain) => `https://my-favicon-proxy.example.com/${domain}.ico`}
|
|
134
|
+
/>
|
|
135
|
+
<Sources.Title>{title}</Sources.Title>
|
|
136
|
+
</Sources.Root>
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
To change the default for every source in your app, edit the `defaultFaviconUrl` constant at the top of your copied `sources.tsx` — that is the single source of truth used by `<Sources>`.
|
|
140
|
+
|
|
124
141
|
### `SourceTitle`
|
|
125
142
|
|
|
126
143
|
Truncated title text rendered as a `<span>`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Streamdown
|
|
3
|
-
description:
|
|
2
|
+
title: Streamdown Markdown Renderer
|
|
3
|
+
description: Stream markdown into a React chat UI with syntax highlighting, math, and Mermaid diagrams. Powered by Vercel Streamdown, integrated for assistant-ui.
|
|
4
4
|
links:
|
|
5
5
|
- label: Streamdown
|
|
6
6
|
url: https://github.com/vercel/streamdown
|
|
@@ -26,6 +26,36 @@ For additional features, install the optional plugins:
|
|
|
26
26
|
|
|
27
27
|
<PackageManagerTabs packages={["@streamdown/code", "@streamdown/math", "@streamdown/mermaid", "@streamdown/cjk"]} />
|
|
28
28
|
|
|
29
|
+
## CSS setup
|
|
30
|
+
|
|
31
|
+
Streamdown's controls (code-block copy/download buttons, mermaid fullscreen overlay) and the streaming caret are written as Tailwind utility classes. Tailwind v4 does not scan `node_modules` by default, so add a `@source` directive for Streamdown (and one per installed plugin) to the same global stylesheet that imports Tailwind:
|
|
32
|
+
|
|
33
|
+
```css
|
|
34
|
+
@import "tailwindcss";
|
|
35
|
+
|
|
36
|
+
@source "../node_modules/streamdown/dist/*.js";
|
|
37
|
+
@source "../node_modules/@streamdown/code/dist/*.js";
|
|
38
|
+
@source "../node_modules/@streamdown/math/dist/*.js";
|
|
39
|
+
@source "../node_modules/@streamdown/mermaid/dist/*.js";
|
|
40
|
+
@source "../node_modules/@streamdown/cjk/dist/*.js";
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Adjust the relative path to wherever your project's `node_modules` lives. In a pnpm or Turbo monorepo with hoisted dependencies, you typically need more `../` segments to reach the workspace root. Only include the plugin lines for packages you actually installed.
|
|
44
|
+
|
|
45
|
+
Without these directives, the copy/download/fullscreen buttons render with no padding or cursor styling (and look broken), and the `caret` indicator stays invisible.
|
|
46
|
+
|
|
47
|
+
<Callout type="info">
|
|
48
|
+
Streamdown's components assume the shadcn/ui design tokens (`--background`, `--muted-foreground`, `--border`, etc.). If you are not on shadcn/ui, copy the minimum variable set from the [Streamdown README](https://github.com/vercel/streamdown#css-custom-properties-design-tokens).
|
|
49
|
+
</Callout>
|
|
50
|
+
|
|
51
|
+
If you opt into the `animated` prop or use `createAnimatePlugin` for word-level fade-in, also import the keyframes once at your app entry:
|
|
52
|
+
|
|
53
|
+
```ts
|
|
54
|
+
import "streamdown/styles.css";
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
The bare `caret` prop does **not** require this import; only the word-level animation does.
|
|
58
|
+
|
|
29
59
|
## Basic Usage
|
|
30
60
|
|
|
31
61
|
```tsx
|
|
@@ -173,6 +203,8 @@ Display a caret indicator during streaming:
|
|
|
173
203
|
<StreamdownTextPrimitive caret="circle" /> // ●
|
|
174
204
|
```
|
|
175
205
|
|
|
206
|
+
The caret is implemented as a Tailwind `::after` utility on the wrapper, so it only appears if your Tailwind setup includes the `@source` directive from [CSS setup](#css-setup).
|
|
207
|
+
|
|
176
208
|
### Link Safety
|
|
177
209
|
|
|
178
210
|
Show confirmation before opening external links:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
3
|
-
description:
|
|
2
|
+
title: Thread List Component
|
|
3
|
+
description: Sidebar or dropdown component for switching between AI chat conversations. Persistent thread state, search, and active selection — built for assistant-ui apps.
|
|
4
4
|
platforms: ["react"]
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Thread
|
|
3
|
-
description:
|
|
2
|
+
title: Thread Component
|
|
3
|
+
description: Stream-ready React chat container with message list, composer, auto-scroll, and accessibility built in. Drop into any AI chat UI built with assistant-ui.
|
|
4
4
|
platforms: ["react"]
|
|
5
5
|
---
|
|
6
6
|
|
package/README.md
CHANGED
|
@@ -1,28 +1,23 @@
|
|
|
1
|
-
#
|
|
1
|
+
# `@assistant-ui/mcp-docs-server`
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Model Context Protocol (MCP) server that gives AI assistants direct access to assistant-ui's documentation and example projects. Exposes `assistantUIDocs` (retrieve documentation by path) and `assistantUIExamples` (access complete example projects).
|
|
4
4
|
|
|
5
|
-
>
|
|
6
|
-
>
|
|
5
|
+
> [!NOTE]
|
|
6
|
+
> Detailed installation, troubleshooting, and advanced usage at [assistant-ui.com/docs/llm#mcp](https://www.assistant-ui.com/docs/llm#mcp).
|
|
7
7
|
|
|
8
8
|
## Installation
|
|
9
9
|
|
|
10
10
|
### Claude Code
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
|
-
# Add to current project
|
|
14
13
|
claude mcp add assistant-ui -- npx -y @assistant-ui/mcp-docs-server
|
|
15
|
-
|
|
16
|
-
# Or add globally for all projects
|
|
14
|
+
# or globally for all projects
|
|
17
15
|
claude mcp add --scope user assistant-ui -- npx -y @assistant-ui/mcp-docs-server
|
|
18
16
|
```
|
|
19
17
|
|
|
20
18
|
### Claude Desktop
|
|
21
19
|
|
|
22
|
-
Add to
|
|
23
|
-
|
|
24
|
-
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
25
|
-
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
20
|
+
Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
|
|
26
21
|
|
|
27
22
|
```json
|
|
28
23
|
{
|
|
@@ -35,39 +30,13 @@ Add to your Claude Desktop configuration:
|
|
|
35
30
|
}
|
|
36
31
|
```
|
|
37
32
|
|
|
38
|
-
### Cursor
|
|
39
|
-
|
|
40
|
-
Add to `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global):
|
|
33
|
+
### Cursor / Windsurf
|
|
41
34
|
|
|
42
|
-
|
|
43
|
-
{
|
|
44
|
-
"mcpServers": {
|
|
45
|
-
"assistant-ui": {
|
|
46
|
-
"command": "npx",
|
|
47
|
-
"args": ["-y", "@assistant-ui/mcp-docs-server"]
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
### Windsurf
|
|
54
|
-
|
|
55
|
-
Add to `~/.codeium/windsurf/mcp_config.json`:
|
|
56
|
-
|
|
57
|
-
```json
|
|
58
|
-
{
|
|
59
|
-
"mcpServers": {
|
|
60
|
-
"assistant-ui": {
|
|
61
|
-
"command": "npx",
|
|
62
|
-
"args": ["-y", "@assistant-ui/mcp-docs-server"]
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
```
|
|
35
|
+
Add to `.cursor/mcp.json` (or `~/.cursor/mcp.json`) for Cursor, or `~/.codeium/windsurf/mcp_config.json` for Windsurf, using the same `mcpServers` block as above.
|
|
67
36
|
|
|
68
|
-
###
|
|
37
|
+
### VS Code
|
|
69
38
|
|
|
70
|
-
Add to `.vscode/mcp.json
|
|
39
|
+
Add to `.vscode/mcp.json`:
|
|
71
40
|
|
|
72
41
|
```json
|
|
73
42
|
{
|
|
@@ -83,7 +52,7 @@ Add to `.vscode/mcp.json` in your project:
|
|
|
83
52
|
|
|
84
53
|
### Zed
|
|
85
54
|
|
|
86
|
-
Add to `settings.json
|
|
55
|
+
Add to `settings.json`:
|
|
87
56
|
|
|
88
57
|
```json
|
|
89
58
|
{
|
|
@@ -91,38 +60,11 @@ Add to `settings.json` (open via `cmd+,` or `zed: open settings`):
|
|
|
91
60
|
"assistant-ui": {
|
|
92
61
|
"command": {
|
|
93
62
|
"path": "npx",
|
|
94
|
-
"args": ["-y", "@assistant-ui/mcp-docs-server"]
|
|
95
|
-
|
|
96
|
-
},
|
|
97
|
-
"settings": {}
|
|
63
|
+
"args": ["-y", "@assistant-ui/mcp-docs-server"]
|
|
64
|
+
}
|
|
98
65
|
}
|
|
99
66
|
}
|
|
100
67
|
}
|
|
101
68
|
```
|
|
102
69
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
- **assistantUIDocs** - Retrieve documentation by path
|
|
106
|
-
- **assistantUIExamples** - Access complete example projects
|
|
107
|
-
|
|
108
|
-
## Managing the Server
|
|
109
|
-
|
|
110
|
-
### Claude Code
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
# View configured servers
|
|
114
|
-
claude mcp list
|
|
115
|
-
|
|
116
|
-
# Get server details
|
|
117
|
-
claude mcp get assistant-ui
|
|
118
|
-
|
|
119
|
-
# Remove the server
|
|
120
|
-
claude mcp remove assistant-ui
|
|
121
|
-
|
|
122
|
-
# Restart the server
|
|
123
|
-
claude mcp restart assistant-ui
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
## License
|
|
127
|
-
|
|
128
|
-
MIT
|
|
70
|
+
To list, get, or remove the server, use your editor's MCP management commands.
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
//#region src/constants.d.ts
|
|
2
|
+
declare const ROOT_DIR: string;
|
|
3
|
+
declare const PACKAGE_DIR: string;
|
|
4
|
+
declare const EXAMPLES_PATH: string;
|
|
5
|
+
declare const DOCS_PATH: string;
|
|
6
|
+
declare const CODE_EXAMPLES_PATH: string;
|
|
7
|
+
declare const MDX_EXTENSION = ".mdx";
|
|
8
|
+
declare const MD_EXTENSION = ".md";
|
|
9
|
+
declare const MAX_FILE_SIZE: number;
|
|
10
|
+
declare const IS_PREPARE_MODE: boolean | undefined;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { CODE_EXAMPLES_PATH, DOCS_PATH, EXAMPLES_PATH, IS_PREPARE_MODE, MAX_FILE_SIZE, MDX_EXTENSION, MD_EXTENSION, PACKAGE_DIR, ROOT_DIR };
|
|
10
13
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","
|
|
1
|
+
{"version":3,"file":"constants.d.ts","names":[],"sources":["../src/constants.ts"],"mappings":";cAKa,QAAA;AAAA,cACA,WAAA;AAAA,cAEA,aAAA;AAAA,cAGA,SAAA;AAAA,cACA,kBAAA;AAAA,cAEA,aAAA;AAAA,cACA,YAAA;AAAA,cAEA,aAAA;AAAA,cAEA,eAAA"}
|