@assistant-ui/mcp-docs-server 0.1.30 → 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 +12 -12
- package/.docs/organized/code-examples/with-ai-sdk-v6.md +14 -14
- package/.docs/organized/code-examples/with-artifacts.md +14 -14
- package/.docs/organized/code-examples/with-assistant-transport.md +11 -11
- package/.docs/organized/code-examples/with-browser-extension.md +345 -0
- package/.docs/organized/code-examples/with-chain-of-thought.md +129 -63
- 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 +65 -20
- package/.docs/organized/code-examples/with-elevenlabs-conversational.md +18 -17
- package/.docs/organized/code-examples/with-elevenlabs-scribe.md +18 -17
- package/.docs/organized/code-examples/with-expo.md +25 -25
- package/.docs/organized/code-examples/with-external-store.md +10 -10
- package/.docs/organized/code-examples/with-ffmpeg.md +14 -14
- package/.docs/organized/code-examples/with-generative-ui.md +211 -14
- package/.docs/organized/code-examples/with-google-adk.md +12 -12
- 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 +14 -14
- 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 +19 -18
- package/.docs/organized/code-examples/with-mcp.md +748 -0
- package/.docs/organized/code-examples/with-opencode.md +107 -62
- package/.docs/organized/code-examples/with-parent-id-grouping.md +12 -12
- 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 +16 -16
- 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 +3 -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 +3 -2
- package/.docs/raw/docs/(docs)/installation.mdx +2 -1
- package/.docs/raw/docs/(docs)/rtl.mdx +1 -0
- package/.docs/raw/docs/(reference)/api-reference/adapters/attachments.mdx +36 -0
- package/.docs/raw/docs/(reference)/api-reference/adapters/feedback.mdx +20 -0
- package/.docs/raw/docs/(reference)/api-reference/adapters/index.mdx +34 -0
- package/.docs/raw/docs/(reference)/api-reference/adapters/model.mdx +44 -0
- package/.docs/raw/docs/(reference)/api-reference/adapters/persistence.mdx +55 -0
- package/.docs/raw/docs/(reference)/api-reference/adapters/runtime.mdx +20 -0
- 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 +22 -0
- 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 +31 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/model-context.mdx +33 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/primitives.mdx +640 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/runtimes.mdx +28 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/state.mdx +94 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/utilities.mdx +464 -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 +22 -0
- 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 +125 -125
- 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 +46 -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 +70 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/message-part.mdx +63 -245
- package/.docs/raw/docs/(reference)/api-reference/primitives/message.mdx +182 -554
- 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 +82 -86
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread.mdx +173 -314
- 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 +43 -0
- 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 -42
- 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-assistant-ui.mdx +230 -2
- package/.docs/raw/docs/cloud/ai-sdk.mdx +222 -4
- package/.docs/raw/docs/cloud/index.mdx +2 -2
- package/.docs/raw/docs/cloud/langgraph.mdx +274 -2
- package/.docs/raw/docs/{(docs)/guides → guides}/attachments.mdx +45 -40
- 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 +54 -26
- package/.docs/raw/docs/{(docs)/guides → guides}/dictation.mdx +3 -1
- package/.docs/raw/docs/guides/editing.mdx +102 -0
- 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 +103 -0
- package/.docs/raw/docs/{(docs)/guides → guides}/interactables.mdx +51 -2
- package/.docs/raw/docs/{(docs)/guides → guides}/latex.mdx +53 -10
- package/.docs/raw/docs/guides/mcp-apps.mdx +231 -0
- package/.docs/raw/docs/{(docs)/guides → guides}/mentions.mdx +63 -88
- package/.docs/raw/docs/{(docs)/guides → guides}/message-timing.mdx +45 -6
- package/.docs/raw/docs/{(docs)/guides → guides}/multi-agent.mdx +66 -6
- package/.docs/raw/docs/{(docs)/guides → guides}/quoting.mdx +11 -18
- 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/{(docs)/guides → guides}/slash-commands.mdx +104 -38
- package/.docs/raw/docs/guides/speech.mdx +156 -0
- package/.docs/raw/docs/{(docs)/guides → guides}/suggestions.mdx +91 -69
- package/.docs/raw/docs/{(docs)/guides → guides}/tool-ui.mdx +110 -38
- package/.docs/raw/docs/{(docs)/guides → guides}/tools.mdx +197 -40
- package/.docs/raw/docs/{(docs)/guides → guides}/voice.mdx +41 -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 +11 -14
- package/.docs/raw/docs/ink/migration.mdx +1 -3
- package/.docs/raw/docs/ink/primitives.mdx +386 -9
- 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/cloudflare-agents/overview.mdx +282 -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 +162 -0
- package/.docs/raw/docs/integrations/index.mdx +185 -0
- package/.docs/raw/docs/integrations/observability/helicone.mdx +130 -0
- package/.docs/raw/docs/integrations/observability/langfuse.mdx +163 -0
- package/.docs/raw/docs/integrations/observability/langsmith.mdx +150 -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/integrations/tools/react-mcp.mdx +337 -0
- package/.docs/raw/docs/migrations/v0-14.mdx +297 -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 +55 -1
- package/.docs/raw/docs/primitives/error.mdx +1 -0
- package/.docs/raw/docs/primitives/index.mdx +4 -3
- 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 +10 -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/hooks.mdx +2 -2
- package/.docs/raw/docs/react-native/index.mdx +5 -7
- 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 +154 -0
- package/.docs/raw/docs/runtimes/ai-sdk/overview.mdx +52 -0
- package/.docs/raw/docs/runtimes/ai-sdk/v4-legacy.mdx +73 -128
- package/.docs/raw/docs/runtimes/ai-sdk/v5-legacy.mdx +70 -64
- package/.docs/raw/docs/runtimes/ai-sdk/v6.mdx +337 -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 +348 -0
- package/.docs/raw/docs/runtimes/custom/external-store.mdx +261 -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 +78 -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 +12 -1
- 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/mcp-config.mdx +102 -0
- 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 +9 -8
- 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 +18 -0
- package/.docs/raw/docs/ui/streamdown.mdx +35 -2
- 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 +19 -2
- package/.docs/raw/docs/ui/thread.mdx +58 -3
- 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/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 +6 -6
- 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/(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/.docs/raw/docs/(reference)/migrations/v0-14.mdx +0 -159
- 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
- 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
|
@@ -1,314 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Custom Thread List
|
|
3
|
-
description: Plug a custom thread database for multi-thread persistence.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
## Overview
|
|
8
|
-
|
|
9
|
-
`useRemoteThreadListRuntime` lets you plug a custom thread database into assistant-ui. It keeps the UI and local runtime logic in sync while you provide persistence, archiving, and metadata for every conversation.
|
|
10
|
-
|
|
11
|
-
## When to Use
|
|
12
|
-
|
|
13
|
-
Use a Custom Thread List when you need to:
|
|
14
|
-
|
|
15
|
-
- Persist conversations in your own database or multitenant backend
|
|
16
|
-
- Share threads across devices, teams, or long-lived sessions
|
|
17
|
-
- Control thread metadata (titles, archived state, external identifiers)
|
|
18
|
-
- Layer additional adapters (history, attachments) around each thread runtime
|
|
19
|
-
|
|
20
|
-
## How It Works
|
|
21
|
-
|
|
22
|
-
Custom Thread List merges two pieces of state:
|
|
23
|
-
|
|
24
|
-
1. **Per-thread runtime** – powered by any runtime hook (for example `useLocalRuntime` or `useAssistantTransportRuntime`).
|
|
25
|
-
2. **Thread list adapter** – your adapter that reads and writes thread metadata in a remote store.
|
|
26
|
-
|
|
27
|
-
When the hook mounts it calls `list()` on your adapter, hydrates existing threads, and uses your runtime hook to spawn a runtime whenever a thread is opened. Creating a new conversation calls `initialize(threadId)` so you can create a record server-side and return the canonical `remoteId`.
|
|
28
|
-
|
|
29
|
-
<Callout type="info">
|
|
30
|
-
The built-in Assistant Cloud runtime is implemented with the same API. Inspect
|
|
31
|
-
`useCloudThreadListAdapter` for a production-ready reference adapter.
|
|
32
|
-
</Callout>
|
|
33
|
-
|
|
34
|
-
## Build a Custom Thread List
|
|
35
|
-
|
|
36
|
-
<Steps>
|
|
37
|
-
<Step>
|
|
38
|
-
### Provide a runtime per thread
|
|
39
|
-
|
|
40
|
-
Use any runtime hook that returns an `AssistantRuntime`. In most custom setups this is `useLocalRuntime(modelAdapter)` or `useAssistantTransportRuntime(...)`.
|
|
41
|
-
|
|
42
|
-
</Step>
|
|
43
|
-
<Step>
|
|
44
|
-
### Implement the adapter contract
|
|
45
|
-
|
|
46
|
-
Your adapter decides how threads are stored. Implement the methods in the table below to connect to your database or API.
|
|
47
|
-
|
|
48
|
-
</Step>
|
|
49
|
-
<Step>
|
|
50
|
-
### Compose the provider
|
|
51
|
-
|
|
52
|
-
Wrap `AssistantRuntimeProvider` with the runtime returned from the Custom Thread List hook.
|
|
53
|
-
|
|
54
|
-
```tsx twoslash title="app/CustomThreadListProvider.tsx"
|
|
55
|
-
// @filename: app/model-adapter.ts
|
|
56
|
-
export const myModelAdapter = {} as any;
|
|
57
|
-
|
|
58
|
-
// @filename: app/CustomThreadListProvider.tsx
|
|
59
|
-
// ---cut---
|
|
60
|
-
"use client";
|
|
61
|
-
|
|
62
|
-
import type { ReactNode } from "react";
|
|
63
|
-
import {
|
|
64
|
-
AssistantRuntimeProvider,
|
|
65
|
-
useLocalRuntime,
|
|
66
|
-
useRemoteThreadListRuntime,
|
|
67
|
-
type RemoteThreadListAdapter,
|
|
68
|
-
} from "@assistant-ui/react";
|
|
69
|
-
import { createAssistantStream } from "assistant-stream";
|
|
70
|
-
import { myModelAdapter } from "./model-adapter"; // your chat model adapter
|
|
71
|
-
|
|
72
|
-
const threadListAdapter: RemoteThreadListAdapter = {
|
|
73
|
-
async list() {
|
|
74
|
-
const response = await fetch("/api/threads");
|
|
75
|
-
const threads = await response.json();
|
|
76
|
-
return {
|
|
77
|
-
threads: threads.map((thread: any) => ({
|
|
78
|
-
remoteId: thread.id,
|
|
79
|
-
externalId: thread.external_id ?? undefined,
|
|
80
|
-
status: thread.is_archived ? "archived" : "regular",
|
|
81
|
-
title: thread.title ?? undefined,
|
|
82
|
-
})),
|
|
83
|
-
};
|
|
84
|
-
},
|
|
85
|
-
async initialize(localId) {
|
|
86
|
-
const response = await fetch("/api/threads", {
|
|
87
|
-
method: "POST",
|
|
88
|
-
headers: { "Content-Type": "application/json" },
|
|
89
|
-
body: JSON.stringify({ localId }),
|
|
90
|
-
});
|
|
91
|
-
const result = await response.json();
|
|
92
|
-
return { remoteId: result.id, externalId: result.external_id };
|
|
93
|
-
},
|
|
94
|
-
async rename(remoteId, title) {
|
|
95
|
-
await fetch(`/api/threads/${remoteId}`, {
|
|
96
|
-
method: "PATCH",
|
|
97
|
-
headers: { "Content-Type": "application/json" },
|
|
98
|
-
body: JSON.stringify({ title }),
|
|
99
|
-
});
|
|
100
|
-
},
|
|
101
|
-
async archive(remoteId) {
|
|
102
|
-
await fetch(`/api/threads/${remoteId}/archive`, { method: "POST" });
|
|
103
|
-
},
|
|
104
|
-
async unarchive(remoteId) {
|
|
105
|
-
await fetch(`/api/threads/${remoteId}/unarchive`, { method: "POST" });
|
|
106
|
-
},
|
|
107
|
-
async delete(remoteId) {
|
|
108
|
-
await fetch(`/api/threads/${remoteId}`, { method: "DELETE" });
|
|
109
|
-
},
|
|
110
|
-
async fetch(remoteId) {
|
|
111
|
-
const response = await fetch(`/api/threads/${remoteId}`);
|
|
112
|
-
const thread = await response.json();
|
|
113
|
-
return {
|
|
114
|
-
status: thread.is_archived ? "archived" : "regular",
|
|
115
|
-
remoteId: thread.id,
|
|
116
|
-
title: thread.title,
|
|
117
|
-
};
|
|
118
|
-
},
|
|
119
|
-
async generateTitle(remoteId, unstable_messages) {
|
|
120
|
-
return createAssistantStream(async (controller) => {
|
|
121
|
-
const response = await fetch(`/api/threads/${remoteId}/title`, {
|
|
122
|
-
method: "POST",
|
|
123
|
-
headers: { "Content-Type": "application/json" },
|
|
124
|
-
body: JSON.stringify({ messages: unstable_messages }),
|
|
125
|
-
});
|
|
126
|
-
const { title } = await response.json();
|
|
127
|
-
controller.appendText(title);
|
|
128
|
-
});
|
|
129
|
-
},
|
|
130
|
-
};
|
|
131
|
-
|
|
132
|
-
export function CustomThreadListProvider({
|
|
133
|
-
children,
|
|
134
|
-
}: Readonly<{ children: ReactNode }>) {
|
|
135
|
-
const runtime = useRemoteThreadListRuntime({
|
|
136
|
-
runtimeHook: () => useLocalRuntime(myModelAdapter),
|
|
137
|
-
adapter: threadListAdapter,
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
return (
|
|
141
|
-
<AssistantRuntimeProvider runtime={runtime}>
|
|
142
|
-
{children}
|
|
143
|
-
</AssistantRuntimeProvider>
|
|
144
|
-
);
|
|
145
|
-
}
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
</Step>
|
|
149
|
-
</Steps>
|
|
150
|
-
|
|
151
|
-
## Adapter Responsibilities
|
|
152
|
-
|
|
153
|
-
<ParametersTable
|
|
154
|
-
type="RemoteThreadListAdapter"
|
|
155
|
-
parameters={[
|
|
156
|
-
{
|
|
157
|
-
name: "list",
|
|
158
|
-
type: "() => Promise<{ threads: RemoteThreadMetadata[] }>",
|
|
159
|
-
description:
|
|
160
|
-
"Return the current threads. Each thread must include status, remoteId, and any metadata you want to show immediately.",
|
|
161
|
-
required: true,
|
|
162
|
-
},
|
|
163
|
-
{
|
|
164
|
-
name: "initialize",
|
|
165
|
-
type: "(localId: string) => Promise<{ remoteId: string; externalId?: string }>",
|
|
166
|
-
description:
|
|
167
|
-
"Create a new remote record when the user starts a conversation. Return the canonical ids so later operations target the right thread.",
|
|
168
|
-
required: true,
|
|
169
|
-
},
|
|
170
|
-
{
|
|
171
|
-
name: "rename",
|
|
172
|
-
type: "(remoteId: string, title: string) => Promise<void>",
|
|
173
|
-
description: "Persist title changes triggered from the UI.",
|
|
174
|
-
required: true,
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
name: "archive",
|
|
178
|
-
type: "(remoteId: string) => Promise<void>",
|
|
179
|
-
description: "Mark the thread as archived in your system.",
|
|
180
|
-
required: true,
|
|
181
|
-
},
|
|
182
|
-
{
|
|
183
|
-
name: "unarchive",
|
|
184
|
-
type: "(remoteId: string) => Promise<void>",
|
|
185
|
-
description: "Restore an archived thread to the active list.",
|
|
186
|
-
required: true,
|
|
187
|
-
},
|
|
188
|
-
{
|
|
189
|
-
name: "delete",
|
|
190
|
-
type: "(remoteId: string) => Promise<void>",
|
|
191
|
-
description: "Permanently remove the thread and stop rendering it.",
|
|
192
|
-
required: true,
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
name: "generateTitle",
|
|
196
|
-
type: "(remoteId: string, unstable_messages: readonly ThreadMessage[]) => Promise<AssistantStream>",
|
|
197
|
-
description:
|
|
198
|
-
"Return a streaming title generator. You can reuse your model endpoint or queue a background job.",
|
|
199
|
-
required: true,
|
|
200
|
-
},
|
|
201
|
-
{
|
|
202
|
-
name: "fetch",
|
|
203
|
-
type: "(threadId: string) => Promise<RemoteThreadMetadata>",
|
|
204
|
-
description:
|
|
205
|
-
"Fetch metadata for a specific thread. Used when switching to a thread not in the initial list.",
|
|
206
|
-
required: true,
|
|
207
|
-
},
|
|
208
|
-
{
|
|
209
|
-
name: "unstable_Provider",
|
|
210
|
-
type: "ComponentType<PropsWithChildren>",
|
|
211
|
-
description:
|
|
212
|
-
"Optional wrapper rendered around all thread runtimes. Use it to inject adapters such as history or attachments (see the Cloud adapter).",
|
|
213
|
-
},
|
|
214
|
-
]}
|
|
215
|
-
/>
|
|
216
|
-
|
|
217
|
-
## Thread Lifecycle Cheatsheet
|
|
218
|
-
|
|
219
|
-
- `list()` hydrates threads on mount. It runs once; call `runtime.threads.reload()` to re-fetch.
|
|
220
|
-
- Creating a new conversation calls `initialize()` once the user sends the first message.
|
|
221
|
-
- `archive`, `unarchive`, and `delete` are called optimistically; throw to revert the UI.
|
|
222
|
-
- `generateTitle()` powers the automatic title button and expects an `AssistantStream`.
|
|
223
|
-
- Provide a `runtimeHook` that always returns a fresh runtime instance per active thread.
|
|
224
|
-
|
|
225
|
-
## Reloading After Async Authentication
|
|
226
|
-
|
|
227
|
-
If your adapter depends on an authenticated user (e.g. an OIDC provider, `better-auth`, `next-auth`) and the auth state resolves asynchronously after `useRemoteThreadListRuntime` has mounted, the initial `list()` call may run before the user is available. Call `aui.threads().reload()` when auth completes to re-fetch with the authenticated request.
|
|
228
|
-
|
|
229
|
-
```tsx title="app/ThreadListProvider.tsx"
|
|
230
|
-
"use client";
|
|
231
|
-
|
|
232
|
-
import { useEffect } from "react";
|
|
233
|
-
import { useAuth } from "react-oidc-context";
|
|
234
|
-
import {
|
|
235
|
-
AssistantRuntimeProvider,
|
|
236
|
-
useAui,
|
|
237
|
-
useLocalRuntime,
|
|
238
|
-
useRemoteThreadListRuntime,
|
|
239
|
-
} from "@assistant-ui/react";
|
|
240
|
-
|
|
241
|
-
function ReloadOnAuth() {
|
|
242
|
-
const aui = useAui();
|
|
243
|
-
const { isLoading, user } = useAuth();
|
|
244
|
-
|
|
245
|
-
useEffect(() => {
|
|
246
|
-
if (!isLoading && user) {
|
|
247
|
-
aui.threads().reload();
|
|
248
|
-
}
|
|
249
|
-
}, [isLoading, user?.id]);
|
|
250
|
-
|
|
251
|
-
return null;
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
export function ThreadListProvider({ children }) {
|
|
255
|
-
const runtime = useRemoteThreadListRuntime({
|
|
256
|
-
runtimeHook: () => useLocalRuntime(myModelAdapter),
|
|
257
|
-
adapter: useThreadListAdapter(),
|
|
258
|
-
});
|
|
259
|
-
|
|
260
|
-
return (
|
|
261
|
-
<AssistantRuntimeProvider runtime={runtime}>
|
|
262
|
-
<ReloadOnAuth />
|
|
263
|
-
{children}
|
|
264
|
-
</AssistantRuntimeProvider>
|
|
265
|
-
);
|
|
266
|
-
}
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
`reload()` replaces the cached load promise and discards any in-flight response from a superseded call, so it is safe to invoke multiple times (for example, on logout followed by a new login). `useAui` must be called inside `AssistantRuntimeProvider`, so the effect lives in a child component.
|
|
270
|
-
|
|
271
|
-
## Avoiding Race Conditions in History Adapters
|
|
272
|
-
|
|
273
|
-
<Callout type="warn">
|
|
274
|
-
When implementing a custom history adapter, you must await thread initialization before saving messages. Failing to do so can cause the first message to be lost due to a race condition.
|
|
275
|
-
</Callout>
|
|
276
|
-
|
|
277
|
-
If you're building a history adapter that persists messages to your own database, use `aui.threadListItem().initialize()` to ensure the thread is fully initialized before saving:
|
|
278
|
-
|
|
279
|
-
```tsx
|
|
280
|
-
import { useAui } from "@assistant-ui/store";
|
|
281
|
-
|
|
282
|
-
// Inside your unstable_Provider component
|
|
283
|
-
const aui = useAui();
|
|
284
|
-
|
|
285
|
-
const history = useMemo<ThreadHistoryAdapter>(
|
|
286
|
-
() => ({
|
|
287
|
-
async append({ message, parentId }) {
|
|
288
|
-
// Wait for initialization to complete and get the remoteId
|
|
289
|
-
const { remoteId } = await aui.threadListItem().initialize();
|
|
290
|
-
|
|
291
|
-
// Now safe to save the message using the remoteId
|
|
292
|
-
await saveMessageToDatabase(remoteId, parentId, message);
|
|
293
|
-
},
|
|
294
|
-
// ...
|
|
295
|
-
}),
|
|
296
|
-
[aui],
|
|
297
|
-
);
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
The `initialize()` method:
|
|
301
|
-
- Can be called multiple times safely
|
|
302
|
-
- Always waits for the initial `initialize()` call to complete
|
|
303
|
-
- Returns the same `remoteId` on subsequent calls
|
|
304
|
-
|
|
305
|
-
See `AssistantCloudThreadHistoryAdapter` in the source code for a production-ready reference implementation.
|
|
306
|
-
|
|
307
|
-
## Optional Adapters
|
|
308
|
-
|
|
309
|
-
If you need history or attachment support, expose them via `unstable_Provider`. The cloud implementation wraps each thread runtime with `RuntimeAdapterProvider` to inject:
|
|
310
|
-
|
|
311
|
-
- `history` – e.g. `useAssistantCloudThreadHistoryAdapter`
|
|
312
|
-
- `attachments` – e.g. `CloudFileAttachmentAdapter`
|
|
313
|
-
|
|
314
|
-
Reuse that pattern to register any capability your runtime requires.
|