@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
|
@@ -55,6 +55,9 @@ Create a new project in the [assistant-cloud dashboard](https://cloud.assistant-
|
|
|
55
55
|
|
|
56
56
|
Add the following environment variables to your project:
|
|
57
57
|
|
|
58
|
+
<PlatformTabs>
|
|
59
|
+
<Tab value="React">
|
|
60
|
+
|
|
58
61
|
```bash title=".env.local"
|
|
59
62
|
# Frontend API URL from your cloud project settings
|
|
60
63
|
NEXT_PUBLIC_ASSISTANT_BASE_URL=https://proj-[YOUR-ID].assistant-api.com
|
|
@@ -63,6 +66,31 @@ NEXT_PUBLIC_ASSISTANT_BASE_URL=https://proj-[YOUR-ID].assistant-api.com
|
|
|
63
66
|
ASSISTANT_API_KEY=your-api-key-here
|
|
64
67
|
```
|
|
65
68
|
|
|
69
|
+
</Tab>
|
|
70
|
+
<Tab value="React Native">
|
|
71
|
+
|
|
72
|
+
```bash title=".env"
|
|
73
|
+
# Client API URL from your cloud project settings
|
|
74
|
+
EXPO_PUBLIC_ASSISTANT_BASE_URL=https://proj-[YOUR-ID].assistant-api.com
|
|
75
|
+
|
|
76
|
+
# API key for server-side operations; do not ship this in your app bundle
|
|
77
|
+
ASSISTANT_API_KEY=your-api-key-here
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
</Tab>
|
|
81
|
+
<Tab value="React Ink">
|
|
82
|
+
|
|
83
|
+
```bash title=".env"
|
|
84
|
+
# Client API URL from your cloud project settings
|
|
85
|
+
ASSISTANT_BASE_URL=https://proj-[YOUR-ID].assistant-api.com
|
|
86
|
+
|
|
87
|
+
# API key for server-side operations; do not ship this in your CLI bundle
|
|
88
|
+
ASSISTANT_API_KEY=your-api-key-here
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
</Tab>
|
|
92
|
+
</PlatformTabs>
|
|
93
|
+
|
|
66
94
|
</Step>
|
|
67
95
|
|
|
68
96
|
<Step>
|
|
@@ -71,8 +99,24 @@ ASSISTANT_API_KEY=your-api-key-here
|
|
|
71
99
|
|
|
72
100
|
Install the required packages:
|
|
73
101
|
|
|
102
|
+
<PlatformTabs>
|
|
103
|
+
<Tab value="React">
|
|
104
|
+
|
|
74
105
|
<InstallCommand npm={["@assistant-ui/react", "@assistant-ui/react-ai-sdk"]} />
|
|
75
106
|
|
|
107
|
+
</Tab>
|
|
108
|
+
<Tab value="React Native">
|
|
109
|
+
|
|
110
|
+
<InstallCommand expo={["@assistant-ui/react-native", "@assistant-ui/react-ai-sdk", "assistant-cloud"]} />
|
|
111
|
+
|
|
112
|
+
</Tab>
|
|
113
|
+
<Tab value="React Ink">
|
|
114
|
+
|
|
115
|
+
<InstallCommand npm={["@assistant-ui/react-ink", "@assistant-ui/react-ai-sdk", "assistant-cloud", "ink", "react"]} />
|
|
116
|
+
|
|
117
|
+
</Tab>
|
|
118
|
+
</PlatformTabs>
|
|
119
|
+
|
|
76
120
|
</Step>
|
|
77
121
|
|
|
78
122
|
<Step>
|
|
@@ -81,6 +125,9 @@ Install the required packages:
|
|
|
81
125
|
|
|
82
126
|
Create a client-side AssistantCloud instance and integrate it with your AI SDK runtime:
|
|
83
127
|
|
|
128
|
+
<PlatformTabs>
|
|
129
|
+
<Tab value="React">
|
|
130
|
+
|
|
84
131
|
```tsx title="app/chat/page.tsx"
|
|
85
132
|
"use client";
|
|
86
133
|
|
|
@@ -115,6 +162,133 @@ export default function ChatPage() {
|
|
|
115
162
|
}
|
|
116
163
|
```
|
|
117
164
|
|
|
165
|
+
</Tab>
|
|
166
|
+
<Tab value="React Native">
|
|
167
|
+
|
|
168
|
+
```tsx title="app/chat.tsx"
|
|
169
|
+
import { useMemo } from "react";
|
|
170
|
+
import { Text, View } from "react-native";
|
|
171
|
+
import {
|
|
172
|
+
AssistantRuntimeProvider,
|
|
173
|
+
ThreadListItemPrimitive,
|
|
174
|
+
ThreadListPrimitive,
|
|
175
|
+
} from "@assistant-ui/react-native";
|
|
176
|
+
import { AssistantCloud } from "assistant-cloud";
|
|
177
|
+
import { useChatRuntime } from "@assistant-ui/react-ai-sdk";
|
|
178
|
+
import { Thread } from "@/components/assistant-ui/thread";
|
|
179
|
+
|
|
180
|
+
async function getAssistantToken() {
|
|
181
|
+
// Return a user token from your auth provider.
|
|
182
|
+
return "...";
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
function ThreadList() {
|
|
186
|
+
return (
|
|
187
|
+
<ThreadListPrimitive.Root>
|
|
188
|
+
<ThreadListPrimitive.New>
|
|
189
|
+
<Text>New chat</Text>
|
|
190
|
+
</ThreadListPrimitive.New>
|
|
191
|
+
<ThreadListPrimitive.Items
|
|
192
|
+
renderItem={({ threadId }) => (
|
|
193
|
+
<ThreadListItemPrimitive.Root key={threadId}>
|
|
194
|
+
<ThreadListItemPrimitive.Trigger>
|
|
195
|
+
<ThreadListItemPrimitive.Title fallback="New conversation" />
|
|
196
|
+
</ThreadListItemPrimitive.Trigger>
|
|
197
|
+
</ThreadListItemPrimitive.Root>
|
|
198
|
+
)}
|
|
199
|
+
/>
|
|
200
|
+
</ThreadListPrimitive.Root>
|
|
201
|
+
);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
export default function ChatScreen() {
|
|
205
|
+
const cloud = useMemo(
|
|
206
|
+
() =>
|
|
207
|
+
new AssistantCloud({
|
|
208
|
+
baseUrl: process.env.EXPO_PUBLIC_ASSISTANT_BASE_URL!,
|
|
209
|
+
authToken: getAssistantToken,
|
|
210
|
+
}),
|
|
211
|
+
[],
|
|
212
|
+
);
|
|
213
|
+
|
|
214
|
+
const runtime = useChatRuntime({ cloud });
|
|
215
|
+
|
|
216
|
+
return (
|
|
217
|
+
<AssistantRuntimeProvider runtime={runtime}>
|
|
218
|
+
<View style={{ flex: 1 }}>
|
|
219
|
+
<ThreadList />
|
|
220
|
+
<Thread />
|
|
221
|
+
</View>
|
|
222
|
+
</AssistantRuntimeProvider>
|
|
223
|
+
);
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
</Tab>
|
|
228
|
+
<Tab value="React Ink">
|
|
229
|
+
|
|
230
|
+
```tsx title="chat.tsx"
|
|
231
|
+
import { useMemo } from "react";
|
|
232
|
+
import { Box, Text } from "ink";
|
|
233
|
+
import {
|
|
234
|
+
AssistantRuntimeProvider,
|
|
235
|
+
ThreadListItemPrimitive,
|
|
236
|
+
ThreadListPrimitive,
|
|
237
|
+
} from "@assistant-ui/react-ink";
|
|
238
|
+
import { AssistantCloud } from "assistant-cloud";
|
|
239
|
+
import { useChatRuntime } from "@assistant-ui/react-ai-sdk";
|
|
240
|
+
import { Thread } from "./components/thread.js";
|
|
241
|
+
|
|
242
|
+
async function getAssistantToken() {
|
|
243
|
+
// Return a user token from your auth provider.
|
|
244
|
+
return "...";
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
function ThreadList() {
|
|
248
|
+
return (
|
|
249
|
+
<ThreadListPrimitive.Root>
|
|
250
|
+
<ThreadListPrimitive.New>
|
|
251
|
+
<Text color="green">[New chat]</Text>
|
|
252
|
+
</ThreadListPrimitive.New>
|
|
253
|
+
<ThreadListPrimitive.Items
|
|
254
|
+
renderItem={({ threadId }) => (
|
|
255
|
+
<ThreadListItemPrimitive.Root key={threadId}>
|
|
256
|
+
<ThreadListItemPrimitive.Trigger>
|
|
257
|
+
<ThreadListItemPrimitive.Title fallback="New conversation" />
|
|
258
|
+
</ThreadListItemPrimitive.Trigger>
|
|
259
|
+
</ThreadListItemPrimitive.Root>
|
|
260
|
+
)}
|
|
261
|
+
/>
|
|
262
|
+
</ThreadListPrimitive.Root>
|
|
263
|
+
);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
export function Chat() {
|
|
267
|
+
const cloud = useMemo(
|
|
268
|
+
() =>
|
|
269
|
+
new AssistantCloud({
|
|
270
|
+
baseUrl: process.env.ASSISTANT_BASE_URL!,
|
|
271
|
+
authToken: getAssistantToken,
|
|
272
|
+
}),
|
|
273
|
+
[],
|
|
274
|
+
);
|
|
275
|
+
|
|
276
|
+
const runtime = useChatRuntime({ cloud });
|
|
277
|
+
|
|
278
|
+
return (
|
|
279
|
+
<AssistantRuntimeProvider runtime={runtime}>
|
|
280
|
+
<Box flexDirection="column">
|
|
281
|
+
<ThreadList />
|
|
282
|
+
<Thread />
|
|
283
|
+
</Box>
|
|
284
|
+
</AssistantRuntimeProvider>
|
|
285
|
+
);
|
|
286
|
+
}
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
</Tab>
|
|
290
|
+
</PlatformTabs>
|
|
291
|
+
|
|
118
292
|
</Step>
|
|
119
293
|
|
|
120
294
|
</Steps>
|
|
@@ -213,7 +387,7 @@ export async function POST(req: Request) {
|
|
|
213
387
|
const { messages } = await req.json();
|
|
214
388
|
|
|
215
389
|
const result = streamText({
|
|
216
|
-
model: openai("gpt-
|
|
390
|
+
model: openai("gpt-5.4-mini"),
|
|
217
391
|
messages,
|
|
218
392
|
});
|
|
219
393
|
|
|
@@ -264,7 +438,10 @@ See the [AI SDK Telemetry guide](/docs/cloud/ai-sdk#sub-agent-model-tracking) fo
|
|
|
264
438
|
|
|
265
439
|
## Authentication
|
|
266
440
|
|
|
267
|
-
The example above uses anonymous mode
|
|
441
|
+
The React example above uses anonymous mode for quick demos. For production apps with user accounts, pass an explicit cloud instance with a token from your auth provider:
|
|
442
|
+
|
|
443
|
+
<PlatformTabs>
|
|
444
|
+
<Tab value="React">
|
|
268
445
|
|
|
269
446
|
```tsx
|
|
270
447
|
import { useMemo } from "react";
|
|
@@ -285,6 +462,57 @@ function Chat() {
|
|
|
285
462
|
}
|
|
286
463
|
```
|
|
287
464
|
|
|
465
|
+
</Tab>
|
|
466
|
+
<Tab value="React Native">
|
|
467
|
+
|
|
468
|
+
```tsx
|
|
469
|
+
import { useMemo } from "react";
|
|
470
|
+
import { AssistantCloud } from "assistant-cloud";
|
|
471
|
+
import { useChatRuntime } from "@assistant-ui/react-ai-sdk";
|
|
472
|
+
|
|
473
|
+
async function getAssistantToken() {
|
|
474
|
+
// Return a user token from your native auth provider.
|
|
475
|
+
return "...";
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
function Chat() {
|
|
479
|
+
const cloud = useMemo(() => new AssistantCloud({
|
|
480
|
+
baseUrl: process.env.EXPO_PUBLIC_ASSISTANT_BASE_URL!,
|
|
481
|
+
authToken: getAssistantToken,
|
|
482
|
+
}), []);
|
|
483
|
+
|
|
484
|
+
const runtime = useChatRuntime({ cloud });
|
|
485
|
+
// ...
|
|
486
|
+
}
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
</Tab>
|
|
490
|
+
<Tab value="React Ink">
|
|
491
|
+
|
|
492
|
+
```tsx
|
|
493
|
+
import { useMemo } from "react";
|
|
494
|
+
import { AssistantCloud } from "assistant-cloud";
|
|
495
|
+
import { useChatRuntime } from "@assistant-ui/react-ai-sdk";
|
|
496
|
+
|
|
497
|
+
async function getAssistantToken() {
|
|
498
|
+
// Return a user token from your CLI auth flow.
|
|
499
|
+
return "...";
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
function Chat() {
|
|
503
|
+
const cloud = useMemo(() => new AssistantCloud({
|
|
504
|
+
baseUrl: process.env.ASSISTANT_BASE_URL!,
|
|
505
|
+
authToken: getAssistantToken,
|
|
506
|
+
}), []);
|
|
507
|
+
|
|
508
|
+
const runtime = useChatRuntime({ cloud });
|
|
509
|
+
// ...
|
|
510
|
+
}
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
</Tab>
|
|
514
|
+
</PlatformTabs>
|
|
515
|
+
|
|
288
516
|
See the [Cloud Authorization](/docs/cloud/authorization) guide for other auth providers.
|
|
289
517
|
|
|
290
518
|
|
|
@@ -39,24 +39,63 @@ Create a new project in the [assistant-cloud dashboard](https://cloud.assistant-
|
|
|
39
39
|
|
|
40
40
|
### Configure Environment Variables
|
|
41
41
|
|
|
42
|
+
<PlatformTabs>
|
|
43
|
+
<Tab value="React">
|
|
44
|
+
|
|
42
45
|
```bash title=".env.local"
|
|
43
46
|
NEXT_PUBLIC_ASSISTANT_BASE_URL=https://proj-[YOUR-ID].assistant-api.com
|
|
44
47
|
```
|
|
45
48
|
|
|
49
|
+
</Tab>
|
|
50
|
+
<Tab value="React Native">
|
|
51
|
+
|
|
52
|
+
```bash title=".env"
|
|
53
|
+
EXPO_PUBLIC_ASSISTANT_BASE_URL=https://proj-[YOUR-ID].assistant-api.com
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
</Tab>
|
|
57
|
+
<Tab value="React Ink">
|
|
58
|
+
|
|
59
|
+
```bash title=".env"
|
|
60
|
+
ASSISTANT_BASE_URL=https://proj-[YOUR-ID].assistant-api.com
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
</Tab>
|
|
64
|
+
</PlatformTabs>
|
|
65
|
+
|
|
46
66
|
</Step>
|
|
47
67
|
|
|
48
68
|
<Step>
|
|
49
69
|
|
|
50
70
|
### Install Dependencies
|
|
51
71
|
|
|
72
|
+
<PlatformTabs>
|
|
73
|
+
<Tab value="React">
|
|
74
|
+
|
|
52
75
|
<InstallCommand npm={["@assistant-ui/cloud-ai-sdk", "@ai-sdk/react", "ai"]} />
|
|
53
76
|
|
|
77
|
+
</Tab>
|
|
78
|
+
<Tab value="React Native">
|
|
79
|
+
|
|
80
|
+
<InstallCommand expo={["@assistant-ui/cloud-ai-sdk", "@ai-sdk/react", "ai", "assistant-cloud"]} />
|
|
81
|
+
|
|
82
|
+
</Tab>
|
|
83
|
+
<Tab value="React Ink">
|
|
84
|
+
|
|
85
|
+
<InstallCommand npm={["@assistant-ui/cloud-ai-sdk", "@ai-sdk/react", "ai", "assistant-cloud", "ink", "react"]} />
|
|
86
|
+
|
|
87
|
+
</Tab>
|
|
88
|
+
</PlatformTabs>
|
|
89
|
+
|
|
54
90
|
</Step>
|
|
55
91
|
|
|
56
92
|
<Step>
|
|
57
93
|
|
|
58
94
|
### Integrate
|
|
59
95
|
|
|
96
|
+
<PlatformTabs>
|
|
97
|
+
<Tab value="React">
|
|
98
|
+
|
|
60
99
|
```tsx title="app/page.tsx"
|
|
61
100
|
"use client";
|
|
62
101
|
|
|
@@ -106,6 +145,131 @@ export default function Chat() {
|
|
|
106
145
|
}
|
|
107
146
|
```
|
|
108
147
|
|
|
148
|
+
</Tab>
|
|
149
|
+
<Tab value="React Native">
|
|
150
|
+
|
|
151
|
+
```tsx title="app/index.tsx"
|
|
152
|
+
import { useMemo, useState } from "react";
|
|
153
|
+
import { Pressable, Text, TextInput, View } from "react-native";
|
|
154
|
+
import { AssistantCloud } from "assistant-cloud";
|
|
155
|
+
import { useCloudChat } from "@assistant-ui/cloud-ai-sdk";
|
|
156
|
+
|
|
157
|
+
async function getAssistantToken() {
|
|
158
|
+
// Return a user token from your auth provider.
|
|
159
|
+
return "...";
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export default function Chat() {
|
|
163
|
+
const cloud = useMemo(
|
|
164
|
+
() =>
|
|
165
|
+
new AssistantCloud({
|
|
166
|
+
baseUrl: process.env.EXPO_PUBLIC_ASSISTANT_BASE_URL!,
|
|
167
|
+
authToken: getAssistantToken,
|
|
168
|
+
}),
|
|
169
|
+
[],
|
|
170
|
+
);
|
|
171
|
+
const { messages, sendMessage, threads } = useCloudChat({ cloud });
|
|
172
|
+
|
|
173
|
+
const [input, setInput] = useState("");
|
|
174
|
+
const handleSubmit = () => {
|
|
175
|
+
if (!input.trim()) return;
|
|
176
|
+
sendMessage({ text: input });
|
|
177
|
+
setInput("");
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
return (
|
|
181
|
+
<View>
|
|
182
|
+
<View>
|
|
183
|
+
{threads.threads.map((t) => (
|
|
184
|
+
<Pressable key={t.id} onPress={() => threads.selectThread(t.id)}>
|
|
185
|
+
<Text>{t.title || "New conversation"}</Text>
|
|
186
|
+
</Pressable>
|
|
187
|
+
))}
|
|
188
|
+
<Pressable onPress={() => threads.selectThread(null)}>
|
|
189
|
+
<Text>New chat</Text>
|
|
190
|
+
</Pressable>
|
|
191
|
+
</View>
|
|
192
|
+
|
|
193
|
+
<View>
|
|
194
|
+
{messages.map((m) => (
|
|
195
|
+
<Text key={m.id}>
|
|
196
|
+
{m.parts.map((p) => p.type === "text" && p.text)}
|
|
197
|
+
</Text>
|
|
198
|
+
))}
|
|
199
|
+
</View>
|
|
200
|
+
|
|
201
|
+
<TextInput value={input} onChangeText={setInput} />
|
|
202
|
+
<Pressable onPress={handleSubmit}>
|
|
203
|
+
<Text>Send</Text>
|
|
204
|
+
</Pressable>
|
|
205
|
+
</View>
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
</Tab>
|
|
211
|
+
<Tab value="React Ink">
|
|
212
|
+
|
|
213
|
+
```tsx title="app.tsx"
|
|
214
|
+
import { useMemo, useState } from "react";
|
|
215
|
+
import { Box, Text, useInput } from "ink";
|
|
216
|
+
import { AssistantCloud } from "assistant-cloud";
|
|
217
|
+
import { useCloudChat } from "@assistant-ui/cloud-ai-sdk";
|
|
218
|
+
|
|
219
|
+
async function getAssistantToken() {
|
|
220
|
+
// Return a user token from your auth provider.
|
|
221
|
+
return "...";
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
export function Chat() {
|
|
225
|
+
const cloud = useMemo(
|
|
226
|
+
() =>
|
|
227
|
+
new AssistantCloud({
|
|
228
|
+
baseUrl: process.env.ASSISTANT_BASE_URL!,
|
|
229
|
+
authToken: getAssistantToken,
|
|
230
|
+
}),
|
|
231
|
+
[],
|
|
232
|
+
);
|
|
233
|
+
const { messages, sendMessage, threads } = useCloudChat({ cloud });
|
|
234
|
+
|
|
235
|
+
const [input, setInput] = useState("");
|
|
236
|
+
const handleSubmit = () => {
|
|
237
|
+
if (!input.trim()) return;
|
|
238
|
+
sendMessage({ text: input });
|
|
239
|
+
setInput("");
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
useInput((value, key) => {
|
|
243
|
+
if (key.return) handleSubmit();
|
|
244
|
+
else if (key.tab) threads.selectThread(null);
|
|
245
|
+
else if (key.backspace || key.delete) setInput((text) => text.slice(0, -1));
|
|
246
|
+
else if (value) setInput((text) => text + value);
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
return (
|
|
250
|
+
<Box flexDirection="column">
|
|
251
|
+
<Text bold>Threads</Text>
|
|
252
|
+
{threads.threads.map((t) => (
|
|
253
|
+
<Text key={t.id}>{t.title || "New conversation"}</Text>
|
|
254
|
+
))}
|
|
255
|
+
<Text dimColor>Press tab for a new chat.</Text>
|
|
256
|
+
|
|
257
|
+
{messages.map((m) => (
|
|
258
|
+
<Text key={m.id}>
|
|
259
|
+
{m.parts.map((p) => p.type === "text" && p.text)}
|
|
260
|
+
</Text>
|
|
261
|
+
))}
|
|
262
|
+
|
|
263
|
+
<Text>{"> "}{input}</Text>
|
|
264
|
+
<Text dimColor>Press enter to send.</Text>
|
|
265
|
+
</Box>
|
|
266
|
+
);
|
|
267
|
+
}
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
</Tab>
|
|
271
|
+
</PlatformTabs>
|
|
272
|
+
|
|
109
273
|
</Step>
|
|
110
274
|
|
|
111
275
|
</Steps>
|
|
@@ -216,7 +380,7 @@ The `useCloudChat` hook automatically reports run telemetry to Assistant Cloud a
|
|
|
216
380
|
**Requires route configuration:**
|
|
217
381
|
- `model_id` — The model used for the response
|
|
218
382
|
- `input_tokens` / `output_tokens` — Token usage statistics
|
|
219
|
-
- `reasoning_tokens` — Tokens used for chain-of-thought reasoning (e.g.
|
|
383
|
+
- `reasoning_tokens` — Tokens used for chain-of-thought reasoning (e.g. GPT-5.4 Mini or GPT-5.5 models)
|
|
220
384
|
- `cached_input_tokens` — Input tokens served from the provider's prompt cache
|
|
221
385
|
|
|
222
386
|
To capture model and usage data, configure the `messageMetadata` callback in your AI SDK route:
|
|
@@ -229,7 +393,7 @@ export async function POST(req: Request) {
|
|
|
229
393
|
const { messages } = await req.json();
|
|
230
394
|
|
|
231
395
|
const result = streamText({
|
|
232
|
-
model: openai("gpt-
|
|
396
|
+
model: openai("gpt-5.4-mini"),
|
|
233
397
|
messages,
|
|
234
398
|
});
|
|
235
399
|
|
|
@@ -297,7 +461,7 @@ export async function POST(req: Request) {
|
|
|
297
461
|
const samplingCalls: Record<string, SamplingCallData[]> = {};
|
|
298
462
|
|
|
299
463
|
const result = streamText({
|
|
300
|
-
model: openai("gpt-
|
|
464
|
+
model: openai("gpt-5.4-mini"),
|
|
301
465
|
messages,
|
|
302
466
|
tools: {
|
|
303
467
|
delegate_to_gemini: tool({
|
|
@@ -356,7 +520,10 @@ export async function POST(req: Request) {
|
|
|
356
520
|
|
|
357
521
|
## Authentication
|
|
358
522
|
|
|
359
|
-
The example above uses anonymous mode
|
|
523
|
+
The React example above uses anonymous mode for quick demos. For production apps with user accounts, pass an explicit cloud instance with a token from your auth provider:
|
|
524
|
+
|
|
525
|
+
<PlatformTabs>
|
|
526
|
+
<Tab value="React">
|
|
360
527
|
|
|
361
528
|
```tsx
|
|
362
529
|
import { useMemo } from "react";
|
|
@@ -377,6 +544,57 @@ function Chat() {
|
|
|
377
544
|
}
|
|
378
545
|
```
|
|
379
546
|
|
|
547
|
+
</Tab>
|
|
548
|
+
<Tab value="React Native">
|
|
549
|
+
|
|
550
|
+
```tsx
|
|
551
|
+
import { useMemo } from "react";
|
|
552
|
+
import { AssistantCloud } from "assistant-cloud";
|
|
553
|
+
import { useCloudChat } from "@assistant-ui/cloud-ai-sdk";
|
|
554
|
+
|
|
555
|
+
async function getAssistantToken() {
|
|
556
|
+
// Return a user token from your native auth provider.
|
|
557
|
+
return "...";
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
function Chat() {
|
|
561
|
+
const cloud = useMemo(() => new AssistantCloud({
|
|
562
|
+
baseUrl: process.env.EXPO_PUBLIC_ASSISTANT_BASE_URL!,
|
|
563
|
+
authToken: getAssistantToken,
|
|
564
|
+
}), []);
|
|
565
|
+
|
|
566
|
+
const { messages, sendMessage, threads } = useCloudChat({ cloud });
|
|
567
|
+
// ...
|
|
568
|
+
}
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
</Tab>
|
|
572
|
+
<Tab value="React Ink">
|
|
573
|
+
|
|
574
|
+
```tsx
|
|
575
|
+
import { useMemo } from "react";
|
|
576
|
+
import { AssistantCloud } from "assistant-cloud";
|
|
577
|
+
import { useCloudChat } from "@assistant-ui/cloud-ai-sdk";
|
|
578
|
+
|
|
579
|
+
async function getAssistantToken() {
|
|
580
|
+
// Return a user token from your CLI auth flow.
|
|
581
|
+
return "...";
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
function Chat() {
|
|
585
|
+
const cloud = useMemo(() => new AssistantCloud({
|
|
586
|
+
baseUrl: process.env.ASSISTANT_BASE_URL!,
|
|
587
|
+
authToken: getAssistantToken,
|
|
588
|
+
}), []);
|
|
589
|
+
|
|
590
|
+
const { messages, sendMessage, threads } = useCloudChat({ cloud });
|
|
591
|
+
// ...
|
|
592
|
+
}
|
|
593
|
+
```
|
|
594
|
+
|
|
595
|
+
</Tab>
|
|
596
|
+
</PlatformTabs>
|
|
597
|
+
|
|
380
598
|
See the [Cloud Authorization](/docs/cloud/authorization) guide for other auth providers.
|
|
381
599
|
|
|
382
600
|
## Next Steps
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
3
|
-
description: Add thread persistence and chat history to your AI app in minutes.
|
|
2
|
+
title: Cloud Persistence
|
|
3
|
+
description: Add managed thread persistence and chat history to your AI app in minutes — assistant-ui Cloud handles thread sync, search, and multi-tenant storage.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
Assistant Cloud is a hosted service that adds thread management, message persistence, and user authorization to AI chat applications. It works with any React UI—whether you use assistant-ui components or your own.
|