@assistant-ui/mcp-docs-server 0.2.3 → 0.3.0
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/README.md +16 -43
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -91
- package/dist/index.js.map +1 -1
- package/dist/proxy.d.ts +9 -0
- package/dist/proxy.d.ts.map +1 -0
- package/dist/proxy.js +76 -0
- package/dist/proxy.js.map +1 -0
- package/package.json +8 -12
- package/src/index.ts +3 -115
- package/src/proxy.test.ts +250 -0
- package/src/proxy.ts +111 -0
- package/.docs/organized/code-examples/waterfall.md +0 -807
- package/.docs/organized/code-examples/with-a2a.md +0 -675
- package/.docs/organized/code-examples/with-ag-ui.md +0 -553
- package/.docs/organized/code-examples/with-ai-sdk-v7.md +0 -466
- package/.docs/organized/code-examples/with-artifacts.md +0 -815
- package/.docs/organized/code-examples/with-assistant-transport.md +0 -576
- package/.docs/organized/code-examples/with-browser-extension.md +0 -371
- package/.docs/organized/code-examples/with-chain-of-thought.md +0 -962
- package/.docs/organized/code-examples/with-cloud-standalone.md +0 -681
- package/.docs/organized/code-examples/with-cloud.md +0 -439
- package/.docs/organized/code-examples/with-custom-thread-list.md +0 -569
- package/.docs/organized/code-examples/with-elevenlabs-conversational.md +0 -527
- package/.docs/organized/code-examples/with-elevenlabs-scribe.md +0 -697
- package/.docs/organized/code-examples/with-eve.md +0 -405
- package/.docs/organized/code-examples/with-expo.md +0 -2246
- package/.docs/organized/code-examples/with-external-store.md +0 -421
- package/.docs/organized/code-examples/with-ffmpeg.md +0 -829
- package/.docs/organized/code-examples/with-generative-ui.md +0 -1810
- package/.docs/organized/code-examples/with-google-adk.md +0 -368
- package/.docs/organized/code-examples/with-heat-graph.md +0 -304
- package/.docs/organized/code-examples/with-image-generation.md +0 -463
- package/.docs/organized/code-examples/with-interactables.md +0 -733
- package/.docs/organized/code-examples/with-langchain.md +0 -446
- package/.docs/organized/code-examples/with-langgraph.md +0 -855
- package/.docs/organized/code-examples/with-livekit.md +0 -643
- package/.docs/organized/code-examples/with-mcp.md +0 -782
- package/.docs/organized/code-examples/with-nuxt.md +0 -2428
- package/.docs/organized/code-examples/with-opencode.md +0 -1974
- package/.docs/organized/code-examples/with-openui.md +0 -450
- package/.docs/organized/code-examples/with-pi.md +0 -2084
- package/.docs/organized/code-examples/with-react-hook-form.md +0 -727
- package/.docs/organized/code-examples/with-react-ink-web.md +0 -740
- package/.docs/organized/code-examples/with-react-ink.md +0 -473
- package/.docs/organized/code-examples/with-react-router.md +0 -936
- package/.docs/organized/code-examples/with-resumable-stream.md +0 -668
- package/.docs/organized/code-examples/with-store.md +0 -679
- package/.docs/organized/code-examples/with-svelte.md +0 -415
- package/.docs/organized/code-examples/with-sveltekit.md +0 -1061
- package/.docs/organized/code-examples/with-tanstack.md +0 -812
- package/.docs/organized/code-examples/with-tap-runtime.md +0 -813
- package/.docs/organized/code-examples/with-virtualized-thread.md +0 -681
- package/.docs/organized/code-examples/with-vue.md +0 -408
- package/.docs/raw/docs/(getting-started)/architecture.mdx +0 -146
- package/.docs/raw/docs/(getting-started)/base-ui.mdx +0 -39
- package/.docs/raw/docs/(getting-started)/cli.mdx +0 -542
- package/.docs/raw/docs/(getting-started)/devtools.mdx +0 -79
- package/.docs/raw/docs/(getting-started)/index.mdx +0 -23
- package/.docs/raw/docs/(getting-started)/installation.mdx +0 -483
- package/.docs/raw/docs/(getting-started)/llm.mdx +0 -211
- package/.docs/raw/docs/(getting-started)/rtl.mdx +0 -78
- package/.docs/raw/docs/(reference)/api-reference/adapters/attachments.mdx +0 -36
- package/.docs/raw/docs/(reference)/api-reference/adapters/feedback.mdx +0 -20
- package/.docs/raw/docs/(reference)/api-reference/adapters/index.mdx +0 -34
- package/.docs/raw/docs/(reference)/api-reference/adapters/model.mdx +0 -44
- package/.docs/raw/docs/(reference)/api-reference/adapters/persistence.mdx +0 -59
- package/.docs/raw/docs/(reference)/api-reference/adapters/runtime.mdx +0 -20
- package/.docs/raw/docs/(reference)/api-reference/adapters/suggestions.mdx +0 -26
- package/.docs/raw/docs/(reference)/api-reference/context-providers/assistant-runtime-provider.mdx +0 -84
- package/.docs/raw/docs/(reference)/api-reference/context-providers/index.mdx +0 -22
- package/.docs/raw/docs/(reference)/api-reference/context-providers/scoped-providers.mdx +0 -64
- package/.docs/raw/docs/(reference)/api-reference/external-store/index.mdx +0 -22
- package/.docs/raw/docs/(reference)/api-reference/external-store/message-conversion.mdx +0 -57
- package/.docs/raw/docs/(reference)/api-reference/external-store/runtime.mdx +0 -49
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/a2ui.mdx +0 -40
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/actions.mdx +0 -56
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/components.mdx +0 -86
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/index.mdx +0 -39
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/json-generative-ui.mdx +0 -42
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/rendering.mdx +0 -84
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/slack.mdx +0 -85
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/spec.mdx +0 -45
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/teams.mdx +0 -93
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/tokens.mdx +0 -62
- package/.docs/raw/docs/(reference)/api-reference/hooks/composer-triggers.mdx +0 -129
- package/.docs/raw/docs/(reference)/api-reference/hooks/index.mdx +0 -31
- package/.docs/raw/docs/(reference)/api-reference/hooks/model-context.mdx +0 -34
- package/.docs/raw/docs/(reference)/api-reference/hooks/primitives.mdx +0 -350
- package/.docs/raw/docs/(reference)/api-reference/hooks/runtimes.mdx +0 -28
- package/.docs/raw/docs/(reference)/api-reference/hooks/state.mdx +0 -97
- package/.docs/raw/docs/(reference)/api-reference/integrations/ai-sdk.mdx +0 -200
- package/.docs/raw/docs/(reference)/api-reference/integrations/cloud-ai-sdk.mdx +0 -24
- package/.docs/raw/docs/(reference)/api-reference/integrations/eve.mdx +0 -118
- package/.docs/raw/docs/(reference)/api-reference/integrations/index.mdx +0 -28
- package/.docs/raw/docs/(reference)/api-reference/integrations/react-data-stream.mdx +0 -37
- package/.docs/raw/docs/(reference)/api-reference/model-context/context.mdx +0 -50
- package/.docs/raw/docs/(reference)/api-reference/model-context/index.mdx +0 -22
- package/.docs/raw/docs/(reference)/api-reference/model-context/registry.mdx +0 -20
- package/.docs/raw/docs/(reference)/api-reference/overview.mdx +0 -566
- package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar-more.mdx +0 -152
- package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar.mdx +0 -239
- package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-if.mdx +0 -208
- package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-modal.mdx +0 -108
- package/.docs/raw/docs/(reference)/api-reference/primitives/attachment.mdx +0 -99
- package/.docs/raw/docs/(reference)/api-reference/primitives/branch-picker.mdx +0 -145
- package/.docs/raw/docs/(reference)/api-reference/primitives/chain-of-thought.mdx +0 -82
- package/.docs/raw/docs/(reference)/api-reference/primitives/composer.mdx +0 -637
- package/.docs/raw/docs/(reference)/api-reference/primitives/composition.mdx +0 -22
- package/.docs/raw/docs/(reference)/api-reference/primitives/error.mdx +0 -65
- package/.docs/raw/docs/(reference)/api-reference/primitives/index.mdx +0 -73
- package/.docs/raw/docs/(reference)/api-reference/primitives/message-part.mdx +0 -117
- package/.docs/raw/docs/(reference)/api-reference/primitives/message.mdx +0 -339
- package/.docs/raw/docs/(reference)/api-reference/primitives/queue-item.mdx +0 -77
- package/.docs/raw/docs/(reference)/api-reference/primitives/selection-toolbar.mdx +0 -88
- package/.docs/raw/docs/(reference)/api-reference/primitives/suggestion.mdx +0 -81
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item-more.mdx +0 -129
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item.mdx +0 -138
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list.mdx +0 -122
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread.mdx +0 -289
- package/.docs/raw/docs/(reference)/api-reference/runtimes/assistant-runtime.mdx +0 -20
- package/.docs/raw/docs/(reference)/api-reference/runtimes/attachment-runtime.mdx +0 -24
- package/.docs/raw/docs/(reference)/api-reference/runtimes/composer-runtime.mdx +0 -32
- package/.docs/raw/docs/(reference)/api-reference/runtimes/index.mdx +0 -43
- package/.docs/raw/docs/(reference)/api-reference/runtimes/message-part-runtime.mdx +0 -43
- package/.docs/raw/docs/(reference)/api-reference/runtimes/message-runtime.mdx +0 -24
- package/.docs/raw/docs/(reference)/api-reference/runtimes/queue-state.mdx +0 -20
- package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-item-runtime.mdx +0 -24
- package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-runtime.mdx +0 -24
- package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-runtime.mdx +0 -36
- package/.docs/raw/docs/(reference)/api-reference/tools/component-tools.mdx +0 -85
- package/.docs/raw/docs/(reference)/api-reference/tools/index.mdx +0 -45
- package/.docs/raw/docs/(reference)/api-reference/tools/interactables-legacy.mdx +0 -55
- package/.docs/raw/docs/(reference)/api-reference/tools/interactables.mdx +0 -151
- package/.docs/raw/docs/(reference)/api-reference/tools/rendering.mdx +0 -106
- package/.docs/raw/docs/(reference)/api-reference/tools/status.mdx +0 -62
- package/.docs/raw/docs/(reference)/api-reference/tools/toolkits.mdx +0 -178
- package/.docs/raw/docs/(reference)/api-reference/transport/assistant-transport.mdx +0 -48
- package/.docs/raw/docs/(reference)/api-reference/transport/frame.mdx +0 -62
- package/.docs/raw/docs/(reference)/api-reference/transport/index.mdx +0 -22
- package/.docs/raw/docs/(reference)/api-reference/utilities/index.mdx +0 -19
- package/.docs/raw/docs/(reference)/api-reference/utilities/miscellaneous.mdx +0 -152
- package/.docs/raw/docs/(reference)/api-reference/voice/index.mdx +0 -22
- package/.docs/raw/docs/(reference)/api-reference/voice/session.mdx +0 -54
- package/.docs/raw/docs/(reference)/api-reference/voice/speech-dictation.mdx +0 -36
- package/.docs/raw/docs/cloud/ai-sdk-assistant-ui.mdx +0 -527
- package/.docs/raw/docs/cloud/ai-sdk.mdx +0 -604
- package/.docs/raw/docs/cloud/authorization.mdx +0 -252
- package/.docs/raw/docs/cloud/index.mdx +0 -46
- package/.docs/raw/docs/cloud/langgraph.mdx +0 -554
- package/.docs/raw/docs/copilots/assistant-frame.mdx +0 -411
- package/.docs/raw/docs/copilots/make-assistant-visible.mdx +0 -82
- package/.docs/raw/docs/copilots/model-context.mdx +0 -156
- package/.docs/raw/docs/copilots/motivation.mdx +0 -202
- package/.docs/raw/docs/copilots/use-assistant-instructions.mdx +0 -64
- package/.docs/raw/docs/guides/attachments.mdx +0 -619
- package/.docs/raw/docs/guides/branching.mdx +0 -76
- package/.docs/raw/docs/guides/chain-of-thought.mdx +0 -164
- package/.docs/raw/docs/guides/chatgpt-subscription.mdx +0 -108
- package/.docs/raw/docs/guides/context-api.mdx +0 -619
- package/.docs/raw/docs/guides/dictation.mdx +0 -298
- package/.docs/raw/docs/guides/editing.mdx +0 -102
- package/.docs/raw/docs/guides/electron.mdx +0 -369
- package/.docs/raw/docs/guides/headless-composer-input.mdx +0 -113
- package/.docs/raw/docs/guides/image-generation.mdx +0 -74
- package/.docs/raw/docs/guides/index.mdx +0 -117
- package/.docs/raw/docs/guides/input-history.mdx +0 -55
- package/.docs/raw/docs/guides/latex.mdx +0 -158
- package/.docs/raw/docs/guides/mentions.mdx +0 -575
- package/.docs/raw/docs/guides/message-timing.mdx +0 -215
- package/.docs/raw/docs/guides/quoting.mdx +0 -169
- package/.docs/raw/docs/guides/resumable-stream-deployment.mdx +0 -212
- package/.docs/raw/docs/guides/resumable-stream-stores.mdx +0 -152
- package/.docs/raw/docs/guides/resumable-streams.mdx +0 -292
- package/.docs/raw/docs/guides/slash-commands.mdx +0 -358
- package/.docs/raw/docs/guides/speech.mdx +0 -172
- package/.docs/raw/docs/guides/suggestions.mdx +0 -384
- package/.docs/raw/docs/guides/virtualization.mdx +0 -133
- package/.docs/raw/docs/guides/voice.mdx +0 -310
- package/.docs/raw/docs/ink/adapters.mdx +0 -99
- package/.docs/raw/docs/ink/custom-backend.mdx +0 -254
- package/.docs/raw/docs/ink/hooks.mdx +0 -469
- package/.docs/raw/docs/ink/index.mdx +0 -237
- package/.docs/raw/docs/ink/migration.mdx +0 -138
- package/.docs/raw/docs/ink/primitives.mdx +0 -1259
- package/.docs/raw/docs/integrations/attachments/custom-adapter.mdx +0 -528
- package/.docs/raw/docs/integrations/auth/better-auth.mdx +0 -188
- package/.docs/raw/docs/integrations/auth/clerk.mdx +0 -166
- package/.docs/raw/docs/integrations/auth/next-auth.mdx +0 -191
- package/.docs/raw/docs/integrations/frameworks/ai-sdk.mdx +0 -88
- package/.docs/raw/docs/integrations/frameworks/cloudflare-agents.mdx +0 -283
- package/.docs/raw/docs/integrations/frameworks/mastra/full-stack.mdx +0 -188
- package/.docs/raw/docs/integrations/frameworks/mastra/overview.mdx +0 -57
- package/.docs/raw/docs/integrations/frameworks/mastra/separate-server.mdx +0 -201
- package/.docs/raw/docs/integrations/gateways/index.mdx +0 -162
- package/.docs/raw/docs/integrations/index.mdx +0 -178
- package/.docs/raw/docs/integrations/observability/helicone.mdx +0 -129
- package/.docs/raw/docs/integrations/observability/langfuse.mdx +0 -161
- package/.docs/raw/docs/integrations/observability/langsmith.mdx +0 -151
- package/.docs/raw/docs/integrations/persistence/custom-adapter.mdx +0 -773
- package/.docs/raw/docs/migrations/deprecation-policy.mdx +0 -42
- package/.docs/raw/docs/migrations/index.mdx +0 -50
- package/.docs/raw/docs/migrations/react-compatibility.mdx +0 -74
- package/.docs/raw/docs/migrations/react-langgraph-v0-7.mdx +0 -328
- package/.docs/raw/docs/migrations/toolkit-tools.mdx +0 -236
- package/.docs/raw/docs/migrations/v0-11.mdx +0 -172
- package/.docs/raw/docs/migrations/v0-12.mdx +0 -302
- package/.docs/raw/docs/migrations/v0-14.mdx +0 -297
- package/.docs/raw/docs/migrations/v0-15.mdx +0 -270
- package/.docs/raw/docs/primitives/action-bar.mdx +0 -352
- package/.docs/raw/docs/primitives/assistant-modal.mdx +0 -216
- package/.docs/raw/docs/primitives/attachment.mdx +0 -217
- package/.docs/raw/docs/primitives/branch-picker.mdx +0 -222
- package/.docs/raw/docs/primitives/chain-of-thought.mdx +0 -315
- package/.docs/raw/docs/primitives/composer.mdx +0 -659
- package/.docs/raw/docs/primitives/error.mdx +0 -142
- package/.docs/raw/docs/primitives/index.mdx +0 -99
- package/.docs/raw/docs/primitives/message.mdx +0 -618
- package/.docs/raw/docs/primitives/selection-toolbar.mdx +0 -191
- package/.docs/raw/docs/primitives/suggestion.mdx +0 -254
- package/.docs/raw/docs/primitives/thread-list.mdx +0 -467
- package/.docs/raw/docs/primitives/thread.mdx +0 -509
- package/.docs/raw/docs/react-native/adapters.mdx +0 -94
- package/.docs/raw/docs/react-native/custom-backend.mdx +0 -207
- package/.docs/raw/docs/react-native/hooks.mdx +0 -339
- package/.docs/raw/docs/react-native/index.mdx +0 -289
- package/.docs/raw/docs/react-native/migration.mdx +0 -142
- package/.docs/raw/docs/react-native/primitives.mdx +0 -976
- package/.docs/raw/docs/runtimes/a2a/client-and-hooks.mdx +0 -399
- package/.docs/raw/docs/runtimes/a2a/overview.mdx +0 -60
- package/.docs/raw/docs/runtimes/a2a/quickstart.mdx +0 -216
- package/.docs/raw/docs/runtimes/ag-ui/agent-state.mdx +0 -124
- package/.docs/raw/docs/runtimes/ag-ui/overview.mdx +0 -70
- package/.docs/raw/docs/runtimes/ag-ui/quickstart.mdx +0 -243
- package/.docs/raw/docs/runtimes/ag-ui/runtime-options.mdx +0 -267
- package/.docs/raw/docs/runtimes/ai-sdk/overview.mdx +0 -61
- package/.docs/raw/docs/runtimes/ai-sdk/v4-legacy.mdx +0 -122
- package/.docs/raw/docs/runtimes/ai-sdk/v5-legacy.mdx +0 -135
- package/.docs/raw/docs/runtimes/ai-sdk/v6-legacy.mdx +0 -636
- package/.docs/raw/docs/runtimes/ai-sdk/v7.mdx +0 -731
- package/.docs/raw/docs/runtimes/claude-managed-agents.mdx +0 -118
- package/.docs/raw/docs/runtimes/concepts/adapters.mdx +0 -265
- package/.docs/raw/docs/runtimes/concepts/architecture.mdx +0 -167
- package/.docs/raw/docs/runtimes/concepts/stability.mdx +0 -68
- package/.docs/raw/docs/runtimes/concepts/threads.mdx +0 -513
- package/.docs/raw/docs/runtimes/custom/assistant-transport.mdx +0 -763
- package/.docs/raw/docs/runtimes/custom/data-stream.mdx +0 -339
- package/.docs/raw/docs/runtimes/custom/external-store.mdx +0 -957
- package/.docs/raw/docs/runtimes/custom/local-runtime.mdx +0 -902
- package/.docs/raw/docs/runtimes/custom/overview.mdx +0 -71
- package/.docs/raw/docs/runtimes/eve/overview.mdx +0 -151
- package/.docs/raw/docs/runtimes/eve/quickstart.mdx +0 -192
- package/.docs/raw/docs/runtimes/google-adk/api.mdx +0 -256
- package/.docs/raw/docs/runtimes/google-adk/hooks.mdx +0 -784
- package/.docs/raw/docs/runtimes/google-adk/overview.mdx +0 -69
- package/.docs/raw/docs/runtimes/google-adk/quickstart.mdx +0 -229
- package/.docs/raw/docs/runtimes/langchain.mdx +0 -901
- package/.docs/raw/docs/runtimes/langgraph/agent-state.mdx +0 -181
- package/.docs/raw/docs/runtimes/langgraph/generative-ui.mdx +0 -305
- package/.docs/raw/docs/runtimes/langgraph/interrupts.mdx +0 -104
- package/.docs/raw/docs/runtimes/langgraph/overview.mdx +0 -84
- package/.docs/raw/docs/runtimes/langgraph/quickstart.mdx +0 -496
- package/.docs/raw/docs/runtimes/langgraph/streaming.mdx +0 -144
- package/.docs/raw/docs/runtimes/langgraph/threads.mdx +0 -113
- package/.docs/raw/docs/runtimes/langgraph/tutorial/introduction.mdx +0 -29
- package/.docs/raw/docs/runtimes/langgraph/tutorial/part-1.mdx +0 -93
- package/.docs/raw/docs/runtimes/langgraph/tutorial/part-2.mdx +0 -347
- package/.docs/raw/docs/runtimes/langgraph/tutorial/part-3.mdx +0 -393
- package/.docs/raw/docs/runtimes/opencode/hooks.mdx +0 -194
- package/.docs/raw/docs/runtimes/opencode/overview.mdx +0 -58
- package/.docs/raw/docs/runtimes/opencode/quickstart.mdx +0 -119
- package/.docs/raw/docs/runtimes/pick-a-runtime.mdx +0 -133
- package/.docs/raw/docs/tools/a2ui.mdx +0 -107
- package/.docs/raw/docs/tools/backend.mdx +0 -147
- package/.docs/raw/docs/tools/defining-tools.mdx +0 -574
- package/.docs/raw/docs/tools/dynamic-tools.mdx +0 -112
- package/.docs/raw/docs/tools/generative-ui-primitive.mdx +0 -180
- package/.docs/raw/docs/tools/generative-ui-slack.mdx +0 -167
- package/.docs/raw/docs/tools/generative-ui-teams.mdx +0 -160
- package/.docs/raw/docs/tools/generative-ui.mdx +0 -322
- package/.docs/raw/docs/tools/index.mdx +0 -72
- package/.docs/raw/docs/tools/interactables.mdx +0 -1084
- package/.docs/raw/docs/tools/mcp-apps.mdx +0 -363
- package/.docs/raw/docs/tools/mcp.mdx +0 -466
- package/.docs/raw/docs/tools/multi-agent.mdx +0 -237
- package/.docs/raw/docs/tools/openui.mdx +0 -175
- package/.docs/raw/docs/tools/tool-ui.mdx +0 -1020
- package/.docs/raw/docs/tools/user-managed-mcp.mdx +0 -428
- package/.docs/raw/docs/ui/assistant-modal.mdx +0 -166
- package/.docs/raw/docs/ui/assistant-sidebar.mdx +0 -89
- package/.docs/raw/docs/ui/attachment.mdx +0 -279
- package/.docs/raw/docs/ui/composer-trigger-popover.mdx +0 -247
- package/.docs/raw/docs/ui/context-display.mdx +0 -148
- package/.docs/raw/docs/ui/directive-text.mdx +0 -114
- package/.docs/raw/docs/ui/file.mdx +0 -159
- package/.docs/raw/docs/ui/follow-up-suggestions.mdx +0 -82
- package/.docs/raw/docs/ui/image.mdx +0 -102
- package/.docs/raw/docs/ui/markdown.mdx +0 -103
- package/.docs/raw/docs/ui/mcp-config.mdx +0 -107
- package/.docs/raw/docs/ui/mermaid.mdx +0 -92
- package/.docs/raw/docs/ui/message-timing.mdx +0 -93
- package/.docs/raw/docs/ui/model-selector.mdx +0 -455
- package/.docs/raw/docs/ui/part-grouping.mdx +0 -614
- package/.docs/raw/docs/ui/quote.mdx +0 -211
- package/.docs/raw/docs/ui/reasoning.mdx +0 -214
- package/.docs/raw/docs/ui/scrollbar.mdx +0 -77
- package/.docs/raw/docs/ui/sources.mdx +0 -186
- package/.docs/raw/docs/ui/streamdown.mdx +0 -392
- package/.docs/raw/docs/ui/syntax-highlighting.mdx +0 -205
- package/.docs/raw/docs/ui/thread-list.mdx +0 -411
- package/.docs/raw/docs/ui/thread.mdx +0 -559
- package/.docs/raw/docs/ui/tool-fallback.mdx +0 -141
- package/.docs/raw/docs/ui/tool-group.mdx +0 -240
- package/.docs/raw/docs/ui/voice.mdx +0 -173
- package/.docs/raw/docs/utilities/heat-graph.mdx +0 -237
- package/.docs/raw/docs/utilities/react-o11y.mdx +0 -362
- package/.docs/raw/docs/utilities/tw-shimmer.mdx +0 -212
- package/dist/constants.d.ts +0 -14
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -19
- package/dist/constants.js.map +0 -1
- package/dist/prepare-docs/code-examples.d.ts +0 -5
- package/dist/prepare-docs/code-examples.d.ts.map +0 -1
- package/dist/prepare-docs/code-examples.js +0 -117
- package/dist/prepare-docs/code-examples.js.map +0 -1
- package/dist/prepare-docs/copy-raw.d.ts +0 -5
- package/dist/prepare-docs/copy-raw.d.ts.map +0 -1
- package/dist/prepare-docs/copy-raw.js +0 -49
- package/dist/prepare-docs/copy-raw.js.map +0 -1
- package/dist/prepare-docs/prepare.d.ts +0 -1
- package/dist/prepare-docs/prepare.js +0 -22
- package/dist/prepare-docs/prepare.js.map +0 -1
- package/dist/prompts/xulux-playground.d.ts +0 -12
- package/dist/prompts/xulux-playground.d.ts.map +0 -1
- package/dist/prompts/xulux-playground.js +0 -33
- package/dist/prompts/xulux-playground.js.map +0 -1
- package/dist/tools/docs.d.ts +0 -22
- package/dist/tools/docs.d.ts.map +0 -1
- package/dist/tools/docs.js +0 -177
- package/dist/tools/docs.js.map +0 -1
- package/dist/tools/examples.d.ts +0 -24
- package/dist/tools/examples.d.ts.map +0 -1
- package/dist/tools/examples.js +0 -87
- package/dist/tools/examples.js.map +0 -1
- package/dist/tools/resources.d.ts +0 -6
- package/dist/tools/resources.d.ts.map +0 -1
- package/dist/tools/resources.js +0 -75
- package/dist/tools/resources.js.map +0 -1
- package/dist/tools/search.d.ts +0 -24
- package/dist/tools/search.d.ts.map +0 -1
- package/dist/tools/search.js +0 -39
- package/dist/tools/search.js.map +0 -1
- package/dist/tools/tests/mcp-test-client.d.ts +0 -15
- package/dist/tools/tests/mcp-test-client.d.ts.map +0 -1
- package/dist/tools/tests/mcp-test-client.js +0 -68
- package/dist/tools/tests/mcp-test-client.js.map +0 -1
- package/dist/tools/tests/test-setup.d.ts +0 -7
- package/dist/tools/tests/test-setup.d.ts.map +0 -1
- package/dist/tools/tests/test-setup.js +0 -36
- package/dist/tools/tests/test-setup.js.map +0 -1
- package/dist/tools/xulux-templates.d.ts +0 -58
- package/dist/tools/xulux-templates.d.ts.map +0 -1
- package/dist/tools/xulux-templates.js +0 -84
- package/dist/tools/xulux-templates.js.map +0 -1
- package/dist/utils/cache.d.ts +0 -5
- package/dist/utils/cache.d.ts.map +0 -1
- package/dist/utils/cache.js +0 -18
- package/dist/utils/cache.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -10
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -20
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/mcp-format.d.ts +0 -11
- package/dist/utils/mcp-format.d.ts.map +0 -1
- package/dist/utils/mcp-format.js +0 -14
- package/dist/utils/mcp-format.js.map +0 -1
- package/dist/utils/mdx.d.ts +0 -12
- package/dist/utils/mdx.d.ts.map +0 -1
- package/dist/utils/mdx.js +0 -45
- package/dist/utils/mdx.js.map +0 -1
- package/dist/utils/paths.d.ts +0 -12
- package/dist/utils/paths.d.ts.map +0 -1
- package/dist/utils/paths.js +0 -93
- package/dist/utils/paths.js.map +0 -1
- package/dist/utils/search.d.ts +0 -10
- package/dist/utils/search.d.ts.map +0 -1
- package/dist/utils/search.js +0 -97
- package/dist/utils/search.js.map +0 -1
- package/dist/utils/security.d.ts +0 -5
- package/dist/utils/security.d.ts.map +0 -1
- package/dist/utils/security.js +0 -22
- package/dist/utils/security.js.map +0 -1
- package/dist/xulux/catalog-client.d.ts +0 -14
- package/dist/xulux/catalog-client.d.ts.map +0 -1
- package/dist/xulux/catalog-client.js +0 -112
- package/dist/xulux/catalog-client.js.map +0 -1
- package/dist/xulux/fallback-catalog.d.ts +0 -7
- package/dist/xulux/fallback-catalog.d.ts.map +0 -1
- package/dist/xulux/fallback-catalog.js +0 -47
- package/dist/xulux/fallback-catalog.js.map +0 -1
- package/dist/xulux/fetch-sandbox.d.ts +0 -5
- package/dist/xulux/fetch-sandbox.d.ts.map +0 -1
- package/dist/xulux/fetch-sandbox.js +0 -40
- package/dist/xulux/fetch-sandbox.js.map +0 -1
- package/dist/xulux/template-service.d.ts +0 -84
- package/dist/xulux/template-service.d.ts.map +0 -1
- package/dist/xulux/template-service.js +0 -223
- package/dist/xulux/template-service.js.map +0 -1
- package/dist/xulux/types.d.ts +0 -55
- package/dist/xulux/types.d.ts.map +0 -1
- package/dist/xulux/types.js +0 -6
- package/dist/xulux/types.js.map +0 -1
- package/src/constants.ts +0 -24
- package/src/prepare-docs/code-examples.ts +0 -158
- package/src/prepare-docs/copy-raw.ts +0 -50
- package/src/prepare-docs/prepare.ts +0 -24
- package/src/prompts/xulux-playground.ts +0 -36
- package/src/tools/docs.ts +0 -255
- package/src/tools/examples.ts +0 -114
- package/src/tools/resources.ts +0 -111
- package/src/tools/search.ts +0 -46
- package/src/tools/tests/completions.test.ts +0 -60
- package/src/tools/tests/directory-size-cap.test.ts +0 -50
- package/src/tools/tests/docs.test.ts +0 -147
- package/src/tools/tests/examples.test.ts +0 -94
- package/src/tools/tests/integration.test.ts +0 -45
- package/src/tools/tests/json-parsing.test.ts +0 -23
- package/src/tools/tests/listings-cache.test.ts +0 -19
- package/src/tools/tests/mcp-protocol.test.ts +0 -216
- package/src/tools/tests/mcp-test-client.ts +0 -111
- package/src/tools/tests/path-traversal.test.ts +0 -84
- package/src/tools/tests/resources.test.ts +0 -133
- package/src/tools/tests/search.test.ts +0 -37
- package/src/tools/tests/test-setup.ts +0 -50
- package/src/tools/tests/xulux-templates.test.ts +0 -325
- package/src/tools/xulux-templates.ts +0 -141
- package/src/utils/cache.ts +0 -20
- package/src/utils/logger.ts +0 -20
- package/src/utils/mcp-format.ts +0 -14
- package/src/utils/mdx.ts +0 -59
- package/src/utils/paths.ts +0 -139
- package/src/utils/search.ts +0 -131
- package/src/utils/security.ts +0 -52
- package/src/utils/tests/cache.test.ts +0 -51
- package/src/utils/tests/mcp-format.test.ts +0 -22
- package/src/utils/tests/security.test.ts +0 -119
- package/src/xulux/catalog-client.ts +0 -150
- package/src/xulux/fallback-catalog.ts +0 -63
- package/src/xulux/fetch-sandbox.ts +0 -56
- package/src/xulux/template-service.ts +0 -406
- package/src/xulux/types.ts +0 -64
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Runtime options
|
|
3
|
-
description: useAgUiRuntime options, adapters, message conversion, thread list.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
import { AguiIcon } from "@/components/icons/agui";
|
|
7
|
-
|
|
8
|
-
Reference for the runtime's API surface. Start with [quickstart](/docs/runtimes/ag-ui/quickstart) if you have not already.
|
|
9
|
-
|
|
10
|
-
## useAgUiRuntime options
|
|
11
|
-
|
|
12
|
-
| Option | Type | Description |
|
|
13
|
-
| --- | --- | --- |
|
|
14
|
-
| `agent` | `HttpAgent` | An AG-UI client agent (from `@ag-ui/client`). Required. |
|
|
15
|
-
| `logger` | `Partial<Logger>` | Optional logger overrides. The runtime logs event-parser warnings and run lifecycle events. |
|
|
16
|
-
| `showThinking` | `boolean` | Whether to render `THINKING_*` and `REASONING_*` events as visible reasoning. Defaults to `true`. |
|
|
17
|
-
| `autoCancelPendingToolCalls` | `boolean` | Cancel unresolved client-side tool calls automatically when the user sends, edits, or reloads a message. Defaults to `true`. See [below](#auto-cancelling-pending-tool-calls). |
|
|
18
|
-
| `onError` | `(e: Error) => void` | Error callback fired on `RUN_ERROR` events and protocol errors. |
|
|
19
|
-
| `onCancel` | `() => void` | Cancellation callback fired when a run is cancelled, including user cancel and runtime teardown. |
|
|
20
|
-
| `adapters` | `UseAgUiRuntimeAdapters` | Standard adapter slots (see below). |
|
|
21
|
-
|
|
22
|
-
## Adapter slots
|
|
23
|
-
|
|
24
|
-
| Adapter | Slot | Notes |
|
|
25
|
-
| --- | --- | --- |
|
|
26
|
-
| Attachments | `adapters.attachments` | See [attachment adapter](/docs/runtimes/concepts/adapters#attachment-adapter). |
|
|
27
|
-
| Speech | `adapters.speech` | Text-to-speech. See [speech adapter](/docs/runtimes/concepts/adapters#speech-adapter). |
|
|
28
|
-
| Dictation | `adapters.dictation` | Speech-to-text input. |
|
|
29
|
-
| Feedback | `adapters.feedback` | Thumbs up / down. See [feedback adapter](/docs/runtimes/concepts/adapters#feedback-adapter). |
|
|
30
|
-
| History | `adapters.history` | Per-thread message persistence. |
|
|
31
|
-
| Thread list | `adapters.threadList` | Multi-thread switching (experimental, see below). |
|
|
32
|
-
|
|
33
|
-
## Loading conversation history
|
|
34
|
-
|
|
35
|
-
If your backend exposes the persisted AG-UI messages of a conversation (for
|
|
36
|
-
example a `GET /agents/state` endpoint), use `fromAgUiMessages` to convert them
|
|
37
|
-
to assistant-ui messages and return them from the history adapter so the thread
|
|
38
|
-
is restored on page load:
|
|
39
|
-
|
|
40
|
-
```tsx
|
|
41
|
-
import { fromAgUiMessages } from "@assistant-ui/react-ag-ui";
|
|
42
|
-
import { ExportedMessageRepository } from "@assistant-ui/react";
|
|
43
|
-
|
|
44
|
-
const runtime = useAgUiRuntime({
|
|
45
|
-
agent,
|
|
46
|
-
adapters: {
|
|
47
|
-
history: {
|
|
48
|
-
async load() {
|
|
49
|
-
const { messages } = await fetch("/agents/state").then((r) => r.json());
|
|
50
|
-
return ExportedMessageRepository.fromArray(fromAgUiMessages(messages));
|
|
51
|
-
},
|
|
52
|
-
async append({ message }) {
|
|
53
|
-
// persist the newly sent message on your backend
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
},
|
|
57
|
-
});
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
Messages sent during the session are always forwarded to the agent through the
|
|
61
|
-
run input, independent of `append`. A no-op `append` is therefore only safe when
|
|
62
|
-
your backend already persists the conversation on its own; otherwise those
|
|
63
|
-
messages are gone on the next page load.
|
|
64
|
-
|
|
65
|
-
`fromAgUiMessages` accepts an optional second argument: pass
|
|
66
|
-
`{ showThinking: false }` to match a runtime configured with
|
|
67
|
-
`showThinking: false`, so the readable text of an imported reasoning message is
|
|
68
|
-
dropped at conversion time, the same way a live run never stores it. An
|
|
69
|
-
`encryptedValue` on that message is kept, because it is opaque state the agent
|
|
70
|
-
needs back rather than something the option hides.
|
|
71
|
-
|
|
72
|
-
Reasoning makes the round trip in the shape it arrived in. `fromAgUiMessages` imports a `reasoning` record as an assistant message holding a reasoning part, and the run input converts that part back into a standalone `reasoning` record instead of dropping it, so a reloaded thread keeps its reasoning history on the next run. A reasoning part on an assistant message that also has text or tool calls leaves as its own `reasoning` record placed ahead of that assistant record; the AG-UI message body carries no run identity, so the original position of reasoning within a run is not recoverable.
|
|
73
|
-
|
|
74
|
-
The encrypted value survives with it. AG-UI describes it as an opaque chain-of-thought blob the client stores and forwards for state continuity, not as a signature computed over the text. An imported `ReasoningMessage` carrying `encryptedValue` keeps it at `providerMetadata.agui.encryptedValue` on the part, and a live run picks the same value up from the `REASONING_ENCRYPTED_VALUE` event (`subtype: "message"`, keyed by `entityId`), so reasoning from either source is re-emitted with the value intact and an agent that needs it back can replay it. A record whose readable `content` is empty and whose payload lives entirely in `encryptedValue`, the zero-data-retention shape AG-UI describes when an agent advertises `capabilities.reasoning.encrypted`, is preserved on the import path only. It has nothing to render by construction, so it never becomes a message or a part; it rides on `metadata.custom.agui.opaqueReasoning` of the message it sat next to on the wire and is replayed into the run input adjacent to that message. `showThinking` does not discard it. That option hides reasoning from the UI, and the encrypted value is opaque state the agent needs back rather than something rendered, so a hidden record keeps it and loses only the readable text. This is an import-path guarantee: a live run with `showThinking: false` opens no reasoning block, so a `REASONING_ENCRYPTED_VALUE` arriving during it resolves no slot and is not retained. The same thread therefore carries the value after a reload but not within the live session that produced it. A consumer calling `fromAgUiMessages` directly sees the metadata rather than a part.
|
|
75
|
-
|
|
76
|
-
Three limits apply to that record. A live stream that emits no readable content produces no reasoning part, so the runtime has nothing to attach the value to; only `fromAgUiMessages` preserves it, whether you call it yourself or the runtime calls it for you while importing a `MESSAGES_SNAPSHOT`. A record that sat between an assistant message and its own tool result is replayed after that tool result rather than between the two, because the import folds the result into the assistant message and the boundary is gone by export. A record in a snapshot that contains no other message has nothing to anchor to and is dropped.
|
|
77
|
-
|
|
78
|
-
Sending reasoning back is what the protocol asks for, and the inbound side has to handle it. `ag-ui-langgraph` is worth pinning for that reason: below 0.0.36 it raises `ValueError: Unsupported message role: reasoning` on the second turn of any thread that produced reasoning, because its converter recognised only the user, assistant, system, and tool roles. 0.0.36 skips inbound `reasoning` and `developer` records instead of raising, so the turn succeeds but the reasoning is discarded. 0.0.42 re-attaches an inbound `reasoning` record as a content block on the assistant message that follows it, encrypted content included, so the replay actually reaches the model; a record that no assistant message follows is still discarded there, which is what becomes of one replayed after the last message of a thread. Keep it at 0.0.36 or newer to avoid the error, and at 0.0.42 or newer for the replay to be worth anything.
|
|
79
|
-
|
|
80
|
-
What a server does with a replayed record remains its own choice, so treat continuity as best effort rather than guaranteed. `ag-ui-langgraph` covers all three behaviours across those three versions, and another integration may pick any of them; an `encryptedValue` reaches the provider only where the server forwards it.
|
|
81
|
-
|
|
82
|
-
`fromAgUiMessages` reconstructs the text, reasoning, and tool calls of each message. Multimodal user input (`image`, `audio`, `video`, and `document` parts, as well as legacy `binary` parts) is restored as attachments on the user message, so a backend that persists multimodal messages shows them again on reload and re-sends them on the next run. Legacy `binary` parts that only reference a file id are not restored.
|
|
83
|
-
|
|
84
|
-
An assistant message whose tool call has no matching tool result is reconstructed with `requires-action` status, the same status the runtime derives for a pending tool call, so a reloaded human-in-the-loop call (for example an `ask_user` tool) is actionable rather than stuck. This matches how every other external-store runtime surfaces a pending tool call on reload. The AG-UI wire snapshot carries no run outcome, so a tool call that a successful run intentionally left without a result is also surfaced as actionable.
|
|
85
|
-
|
|
86
|
-
Interrupts are restored when your backend persists them on the assistant message. The AG-UI message body has no interrupt field, so persist the runtime's own `metadata.custom.agui.interrupts` array alongside the message; `fromAgUiMessages` reads it back, reconstructs `requires-action` / `interrupt` status, and re-attaches the metadata, so `getPendingInterrupts`, `useAgUiInterrupts`, and `submitInterruptResponses` work on reload. When both a pending tool call and an interrupt are present on the same message, interrupt status wins. Without the persisted array, interrupt state cannot be reconstructed.
|
|
87
|
-
|
|
88
|
-
## Building AG-UI run input
|
|
89
|
-
|
|
90
|
-
`toAgUiMessages` is the converter the runtime uses to build `runAgent` input. Use it when you own the transport, for example an AG-UI WebSocket, and need the same conversion from `onNew`'s `AppendMessage`:
|
|
91
|
-
|
|
92
|
-
```tsx
|
|
93
|
-
import { toAgUiMessages } from "@assistant-ui/react-ag-ui";
|
|
94
|
-
|
|
95
|
-
const [agUiMessage] = toAgUiMessages([message]);
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
`AppendMessage` has no `id`. The converter assigns one so the AG-UI message schema is satisfied. A caller-supplied id is kept. A generated id is new on every call, so convert once and send that object. Only `user`, `assistant`, `system`, `developer`, `tool`, and `reasoning` inputs are converted.
|
|
99
|
-
|
|
100
|
-
## Thread list (experimental)
|
|
101
|
-
|
|
102
|
-
<Callout type="warn">
|
|
103
|
-
The thread list adapter is currently experimental and may change without notice.
|
|
104
|
-
</Callout>
|
|
105
|
-
|
|
106
|
-
`UseAgUiThreadListAdapter` lets you back the thread list with your own state.
|
|
107
|
-
|
|
108
|
-
| Option | Type | Description |
|
|
109
|
-
| --- | --- | --- |
|
|
110
|
-
| `threadId` | `string` | The currently active thread ID. |
|
|
111
|
-
| `onSwitchToNewThread` | `() => Promise<void>` | Called when the user creates a new thread. Reset your thread state here. |
|
|
112
|
-
| `onSwitchToThread` | `(threadId: string) => Promise<{ messages, state? }>` | Called when the user switches threads. Return the persisted messages (and optional opaque state). |
|
|
113
|
-
|
|
114
|
-
```tsx
|
|
115
|
-
const runtime = useAgUiRuntime({
|
|
116
|
-
agent,
|
|
117
|
-
adapters: {
|
|
118
|
-
threadList: {
|
|
119
|
-
threadId: currentThreadId,
|
|
120
|
-
onSwitchToNewThread: async () => {
|
|
121
|
-
setCurrentThreadId(await createThread());
|
|
122
|
-
},
|
|
123
|
-
onSwitchToThread: async (id) => {
|
|
124
|
-
const { messages, state } = await loadThread(id);
|
|
125
|
-
setCurrentThreadId(id);
|
|
126
|
-
return { messages, state };
|
|
127
|
-
},
|
|
128
|
-
},
|
|
129
|
-
},
|
|
130
|
-
});
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
## Interrupts (experimental)
|
|
134
|
-
|
|
135
|
-
<Callout type="warn">
|
|
136
|
-
The interrupt API is experimental and may change without notice.
|
|
137
|
-
</Callout>
|
|
138
|
-
|
|
139
|
-
When the agent emits `RUN_FINISHED` with `outcome = { type: "interrupt", interrupts: [...] }`, the active assistant message is marked `requires-action` with `reason: "interrupt"` and the `Interrupt[]` payload is written to `metadata.custom.agui.interrupts`. Render an approval / input UI from there.
|
|
140
|
-
|
|
141
|
-
`useAgUiRuntime` returns an `AgUiAssistantRuntime` with two extra methods:
|
|
142
|
-
|
|
143
|
-
| Method | Description |
|
|
144
|
-
| --- | --- |
|
|
145
|
-
| `unstable_getPendingInterrupts(): readonly AgUiInterrupt[]` | Snapshot of the open interrupts on the most recent assistant message. |
|
|
146
|
-
| `unstable_submitInterruptResponses(responses: ResumeEntry[]): Promise<void>` | Submits one `ResumeEntry` per open interrupt and resumes the run. |
|
|
147
|
-
|
|
148
|
-
`responses` must address every open interrupt; missing entries, unknown ids, or expired interrupts (`expiresAt`) reject before any network call. Each entry is `{ interruptId, status: "resolved" | "cancelled", payload? }`. The next `RunAgentInput` carries `resume: ResumeEntry[]`.
|
|
149
|
-
|
|
150
|
-
```tsx
|
|
151
|
-
const runtime = useAgUiRuntime({ agent });
|
|
152
|
-
const pending = runtime.unstable_getPendingInterrupts();
|
|
153
|
-
|
|
154
|
-
await runtime.unstable_submitInterruptResponses(
|
|
155
|
-
pending.map((i) => ({
|
|
156
|
-
interruptId: i.id,
|
|
157
|
-
status: "resolved",
|
|
158
|
-
payload: { approved: true },
|
|
159
|
-
})),
|
|
160
|
-
);
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
### Steering away from an interrupt
|
|
164
|
-
|
|
165
|
-
When the user ignores the interrupt UI and just sends a new message, use the `useAgUiSteerAway` hook. Every open interrupt defaults to `status: "cancelled"`, the new message is appended, and the run resumes with `resume: ResumeEntry[]` on the wire.
|
|
166
|
-
|
|
167
|
-
The same hook also steers away from pending client-side tool calls. When the head assistant message is in `requires-action` with `reason: "tool-calls"` (frontend tools awaiting a result) and the user sends a new message, every unresolved tool call is cancelled with an error result, the message is completed, and a single fresh run starts with those cancellations in its history. Passing `responses` in this case throws, since responses only address interrupts. With nothing pending, `steerAway` behaves like a normal append.
|
|
168
|
-
|
|
169
|
-
```tsx
|
|
170
|
-
const steerAway = useAgUiSteerAway();
|
|
171
|
-
|
|
172
|
-
// the user typed a new message instead of answering the interrupt
|
|
173
|
-
await steerAway("actually, let's do something else");
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
The message accepts a plain string or a partial `AppendMessage` (the parent defaults to the current head, which is the interrupted assistant message). Pass `responses` to override the status of specific interrupts; the rest still default to cancelled.
|
|
177
|
-
|
|
178
|
-
```tsx
|
|
179
|
-
await steerAway("continue without the file", [
|
|
180
|
-
{ interruptId: "tool-1", status: "resolved", payload: { approved: true } },
|
|
181
|
-
]);
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
### Auto-cancelling pending tool calls
|
|
185
|
-
|
|
186
|
-
By default the runtime does the tool-call half of this automatically: when client-side tool calls are still unresolved and the user sends a new message, edits an earlier one, or reloads, every unresolved tool call receives the same cancellation error result, the assistant message is completed, and the run proceeds with those cancellations in its history. Set `autoCancelPendingToolCalls: false` to opt out, in which case pending tool calls stay unresolved on a plain send and [steering away](#steering-away-from-an-interrupt) remains the explicit way to cancel them.
|
|
187
|
-
|
|
188
|
-
Pending interrupts are never auto-cancelled: sending while an interrupt is open still throws, and the interrupt must be answered with `useAgUiSubmitInterruptResponses` or discarded with `useAgUiSteerAway`.
|
|
189
|
-
|
|
190
|
-
## Supported events
|
|
191
|
-
|
|
192
|
-
The runtime parses the AG-UI event stream and maps each event type to assistant-ui state.
|
|
193
|
-
|
|
194
|
-
| Event | Effect |
|
|
195
|
-
| --- | --- |
|
|
196
|
-
| `RUN_STARTED` / `RUN_FINISHED` | Toggles thread `isRunning`. `RUN_FINISHED.outcome` is honored (success / interrupt). |
|
|
197
|
-
| `RUN_CANCELLED` | Marks the in-flight assistant message as cancelled. |
|
|
198
|
-
| `RUN_ERROR` | Marks the message as errored; fires `onError`. |
|
|
199
|
-
| `TEXT_MESSAGE_START` / `_CONTENT` / `_END` | Streams text content into an assistant message. |
|
|
200
|
-
| `TEXT_MESSAGE_CHUNK` | Appends a delta without explicit lifecycle. |
|
|
201
|
-
| `THINKING_START` / `_END` | Wraps reasoning blocks (when `showThinking` is on). |
|
|
202
|
-
| `THINKING_TEXT_MESSAGE_*` | Streams thinking text deltas. |
|
|
203
|
-
| `REASONING_START` / `_MESSAGE_*` / `_END` | Streams structured reasoning per message. |
|
|
204
|
-
| `TOOL_CALL_START` / `_ARGS` / `_END` | Streams tool calls into the current assistant message. |
|
|
205
|
-
| `TOOL_CALL_CHUNK` | Streams tool deltas without explicit lifecycle. |
|
|
206
|
-
| `TOOL_CALL_RESULT` | Attaches a tool result to a tool call. |
|
|
207
|
-
| `STATE_SNAPSHOT` | Replaces the agent's external state. |
|
|
208
|
-
| `STATE_DELTA` | Applies a JSON-patch-style delta to the agent's state. |
|
|
209
|
-
| `MESSAGES_SNAPSHOT` | Replaces the full message list (used for thread restore). |
|
|
210
|
-
| `CUSTOM` | Appended to the in-flight assistant message as a `data` part. |
|
|
211
|
-
| `RAW` | Parsed and ignored; unrecognized wire event types are normalized into `RAW`. |
|
|
212
|
-
|
|
213
|
-
### Custom events
|
|
214
|
-
|
|
215
|
-
`CUSTOM` events are the protocol's extension mechanism for application-defined data. Each event is appended to the in-flight assistant message as a canonical `data` part in arrival order: `CUSTOM { name: "sources", value: {...} }` becomes `{ type: "data", name: "sources", data: {...} }`. Repeated names append separate parts, the `value` is passed through verbatim, and data parts reset with each run. Tool calls that carry a `parentMessageId` are anchored under that message rather than at their wire position, so a data part can render after a tool call that arrived later. A run that delivers its assistant message only through `MESSAGES_SNAPSHOT`, with no streamed text or tool calls, drops that run's data parts when the snapshot supersedes the in-flight message.
|
|
216
|
-
|
|
217
|
-
Render them by registering a per-name renderer; parts without a registered renderer are not displayed, unless a `Data` fallback component is registered, in which case the fallback receives every custom event name, including the framework plumbing listed below.
|
|
218
|
-
|
|
219
|
-
```tsx
|
|
220
|
-
import { useAssistantDataUI } from "@assistant-ui/react";
|
|
221
|
-
|
|
222
|
-
useAssistantDataUI({
|
|
223
|
-
name: "sources",
|
|
224
|
-
render: ({ data }) => <SourceList sources={data.sources} />,
|
|
225
|
-
});
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
Data parts stay in the assistant-ui message but are not sent back to the agent, since the AG-UI assistant record has no field for them. History adapters, including the assistant-cloud one, persist them as part of the message JSON. Framework integrations emit their own plumbing over this channel (`on_interrupt`, `PredictState`, `Exit`, `hook_error`, `state_update_error`, `system:*`, `MultiAgentHandoff`), and those names surface as data parts like any other, so only register renderers for names your backend owns.
|
|
229
|
-
|
|
230
|
-
## Feature support
|
|
231
|
-
|
|
232
|
-
| Feature | Supported |
|
|
233
|
-
| --- | --- |
|
|
234
|
-
| Streaming text | Yes |
|
|
235
|
-
| Thinking / reasoning blocks | Yes |
|
|
236
|
-
| Tool calls and results | Yes |
|
|
237
|
-
| Tool result handoff (client-side execution) | Yes |
|
|
238
|
-
| State snapshots and deltas | Yes |
|
|
239
|
-
| Custom events (as `data` parts) | Yes |
|
|
240
|
-
| Cancellation | Yes |
|
|
241
|
-
| Message editing | Yes |
|
|
242
|
-
| Message reload | Yes |
|
|
243
|
-
| Run resumption | Yes |
|
|
244
|
-
| Interrupts (human-in-the-loop) | Experimental (`unstable_*` API, see [Interrupts](#interrupts-experimental)) |
|
|
245
|
-
| Multi-thread | Experimental (`adapters.threadList`) |
|
|
246
|
-
| History persistence | Via [history adapter](/docs/runtimes/concepts/adapters#history-adapter) |
|
|
247
|
-
|
|
248
|
-
## Related
|
|
249
|
-
|
|
250
|
-
<Cards>
|
|
251
|
-
<Card
|
|
252
|
-
icon={<AguiIcon width={20} height={20} />}
|
|
253
|
-
title="AG-UI overview"
|
|
254
|
-
description="What AG-UI is and when to pick it."
|
|
255
|
-
href="/docs/runtimes/ag-ui/overview"
|
|
256
|
-
/>
|
|
257
|
-
<Card
|
|
258
|
-
title="Quickstart"
|
|
259
|
-
description="Minimal runtime + Thread setup."
|
|
260
|
-
href="/docs/runtimes/ag-ui/quickstart"
|
|
261
|
-
/>
|
|
262
|
-
<Card
|
|
263
|
-
title="Adapters"
|
|
264
|
-
description="Attachments, speech, feedback, history, thread list."
|
|
265
|
-
href="/docs/runtimes/concepts/adapters"
|
|
266
|
-
/>
|
|
267
|
-
</Cards>
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Vercel AI SDK Runtime
|
|
3
|
-
description: Connect the Vercel AI SDK to a React chat UI via assistant-ui — useChat hooks, custom transports, frontend tools, attachments, multi-step agents, and token usage.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
import { VercelIcon } from "@/components/icons/vercel";
|
|
7
|
-
|
|
8
|
-
`@assistant-ui/ai-sdk` integrates assistant-ui with the [Vercel AI SDK](https://ai-sdk.dev/). It covers `useChat` flows, custom transports, frontend tools, attachments, quote context, multi-step agents, token usage, and cloud persistence.
|
|
9
|
-
|
|
10
|
-
## Pick a version
|
|
11
|
-
|
|
12
|
-
| AI SDK | Runtime package | Docs |
|
|
13
|
-
| --- | --- | --- |
|
|
14
|
-
| `ai@^7` + `@ai-sdk/react@^4` | `@assistant-ui/ai-sdk` (latest) | [v7 (current)](/docs/runtimes/ai-sdk/v7) |
|
|
15
|
-
| `ai@^6` + `@ai-sdk/react@^3` | `@assistant-ui/react-ai-sdk@1.3.40` | [v6 (legacy)](/docs/runtimes/ai-sdk/v6-legacy) |
|
|
16
|
-
| `ai@^5` + `@ai-sdk/react@^2` | `@assistant-ui/react-ai-sdk@1.1.21` | [v5 (legacy)](/docs/runtimes/ai-sdk/v5-legacy) |
|
|
17
|
-
| `ai@^4` | `@assistant-ui/react-data-stream` | [v4 (legacy)](/docs/runtimes/ai-sdk/v4-legacy) |
|
|
18
|
-
|
|
19
|
-
New projects should target v7. v6, v5, and v4 are documented for projects that have not migrated yet; all have known compatibility gaps and receive no new features.
|
|
20
|
-
|
|
21
|
-
## Architecture
|
|
22
|
-
|
|
23
|
-
`@assistant-ui/ai-sdk` is layered on `ExternalStoreRuntime` (see [architecture](/docs/runtimes/concepts/architecture)). Features that ship as runtime adapters work the same way they do everywhere else; see [adapters](/docs/runtimes/concepts/adapters).
|
|
24
|
-
|
|
25
|
-
For reload-safe streaming (persist an in-flight response so the client can reconnect), see [Resumable Streams](/docs/guides/resumable-streams).
|
|
26
|
-
|
|
27
|
-
## Choosing useChatRuntime vs useAISDKRuntime
|
|
28
|
-
|
|
29
|
-
Both ship in the same package.
|
|
30
|
-
|
|
31
|
-
- **`useChatRuntime`** (recommended) wraps the AI SDK's `useChat` hook and adds cloud thread support, the standard adapter slots, and `AssistantChatTransport` (which forwards system messages and frontend tools by default). Use this unless you have a reason not to.
|
|
32
|
-
- **`useAISDKRuntime`** is a lower-level hook that takes an existing `useChat` instance you control directly. Use it when you need to share the chat instance with non-assistant-ui code or wire in a custom transport that does not inherit from `AssistantChatTransport`.
|
|
33
|
-
|
|
34
|
-
## Next
|
|
35
|
-
|
|
36
|
-
<Cards>
|
|
37
|
-
<Card
|
|
38
|
-
icon={<VercelIcon width={20} height={20} />}
|
|
39
|
-
title="v7 (current)"
|
|
40
|
-
description="Quickstart, frontend tools, attachments, quotes, history, multi-step, useAISDKRuntime."
|
|
41
|
-
href="/docs/runtimes/ai-sdk/v7"
|
|
42
|
-
/>
|
|
43
|
-
<Card
|
|
44
|
-
icon={<VercelIcon width={20} height={20} />}
|
|
45
|
-
title="v6 (legacy)"
|
|
46
|
-
description="Reference for projects still on AI SDK v6."
|
|
47
|
-
href="/docs/runtimes/ai-sdk/v6-legacy"
|
|
48
|
-
/>
|
|
49
|
-
<Card
|
|
50
|
-
icon={<VercelIcon width={20} height={20} />}
|
|
51
|
-
title="v5 (legacy)"
|
|
52
|
-
description="Reference for projects still on AI SDK v5."
|
|
53
|
-
href="/docs/runtimes/ai-sdk/v5-legacy"
|
|
54
|
-
/>
|
|
55
|
-
<Card
|
|
56
|
-
icon={<VercelIcon width={20} height={20} />}
|
|
57
|
-
title="v4 (legacy)"
|
|
58
|
-
description="Reference for projects still on AI SDK v4."
|
|
59
|
-
href="/docs/runtimes/ai-sdk/v4-legacy"
|
|
60
|
-
/>
|
|
61
|
-
</Cards>
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: AI SDK v4 (legacy)
|
|
3
|
-
description: Reference for projects still on AI SDK v4. New projects should use v7.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
import { VercelIcon } from "@/components/icons/vercel";
|
|
7
|
-
|
|
8
|
-
<Callout type="warn">
|
|
9
|
-
AI SDK v4 is a legacy version. New projects should use [AI SDK v7](/docs/runtimes/ai-sdk/v7). v4 integrations use the older `@assistant-ui/react-data-stream` package, not `@assistant-ui/ai-sdk`.
|
|
10
|
-
</Callout>
|
|
11
|
-
|
|
12
|
-
## Why legacy
|
|
13
|
-
|
|
14
|
-
Vercel ships AI SDK majors roughly yearly; v4 is three majors behind v7. The current `@assistant-ui/ai-sdk` package targets the current AI SDK major (v7) exclusively, so v4 users plug into [`@assistant-ui/react-data-stream`](/docs/runtimes/custom/data-stream) instead — the same data stream protocol that v4's `toDataStreamResponse()` emits.
|
|
15
|
-
|
|
16
|
-
This page is reference for existing v4 projects. Plan to migrate to v7 when feasible.
|
|
17
|
-
|
|
18
|
-
## Setup
|
|
19
|
-
|
|
20
|
-
<Steps>
|
|
21
|
-
<Step>
|
|
22
|
-
|
|
23
|
-
### Install
|
|
24
|
-
|
|
25
|
-
<InstallCommand npm={["@assistant-ui/react", "@assistant-ui/react-data-stream", "ai@^4"]} />
|
|
26
|
-
|
|
27
|
-
</Step>
|
|
28
|
-
<Step>
|
|
29
|
-
|
|
30
|
-
### Backend route
|
|
31
|
-
|
|
32
|
-
```ts title="@/app/api/chat/route.ts"
|
|
33
|
-
import { streamText } from "ai";
|
|
34
|
-
import { openai } from "@ai-sdk/openai";
|
|
35
|
-
|
|
36
|
-
export async function POST(req: Request) {
|
|
37
|
-
const { messages } = await req.json();
|
|
38
|
-
const result = streamText({ model: openai("gpt-5.6-luna"), messages });
|
|
39
|
-
return result.toDataStreamResponse();
|
|
40
|
-
}
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
</Step>
|
|
44
|
-
<Step>
|
|
45
|
-
|
|
46
|
-
### Frontend
|
|
47
|
-
|
|
48
|
-
```tsx title="@/app/page.tsx"
|
|
49
|
-
"use client";
|
|
50
|
-
|
|
51
|
-
import { AssistantRuntimeProvider } from "@assistant-ui/react";
|
|
52
|
-
import { useDataStreamRuntime } from "@assistant-ui/react-data-stream";
|
|
53
|
-
import { Thread } from "@/components/assistant-ui/thread";
|
|
54
|
-
|
|
55
|
-
export default function Home() {
|
|
56
|
-
const runtime = useDataStreamRuntime({ api: "/api/chat" });
|
|
57
|
-
return (
|
|
58
|
-
<AssistantRuntimeProvider runtime={runtime}>
|
|
59
|
-
<div className="h-full">
|
|
60
|
-
<Thread />
|
|
61
|
-
</div>
|
|
62
|
-
</AssistantRuntimeProvider>
|
|
63
|
-
);
|
|
64
|
-
}
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
AI SDK v4's `toDataStreamResponse()` emits the data stream wire format with the
|
|
68
|
-
`x-vercel-ai-data-stream: v1` response header, so `useDataStreamRuntime`
|
|
69
|
-
detects it automatically. If a custom proxy strips or hides that header, pass
|
|
70
|
-
`protocol: "data-stream"` explicitly.
|
|
71
|
-
|
|
72
|
-
</Step>
|
|
73
|
-
</Steps>
|
|
74
|
-
|
|
75
|
-
`useDataStreamRuntime` accepts `api`, `initialMessages`, `onFinish`, `onError`, `headers`, `body`, and the standard `LocalRuntimeOptions`. For the full reference, see [Data Stream Protocol](/docs/runtimes/custom/data-stream).
|
|
76
|
-
|
|
77
|
-
## Differences from v6
|
|
78
|
-
|
|
79
|
-
| Feature | v4 | v6 |
|
|
80
|
-
| --- | --- | --- |
|
|
81
|
-
| `ai` package | `ai@^4` | `ai@^6` |
|
|
82
|
-
| Runtime package | `@assistant-ui/react-data-stream` | `@assistant-ui/react-ai-sdk@1.3.40` |
|
|
83
|
-
| Runtime hook | `useDataStreamRuntime` | `useChatRuntime` |
|
|
84
|
-
| Response | `toDataStreamResponse()` | `toUIMessageStreamResponse()` |
|
|
85
|
-
| Tool schema | `parameters: z.object({...})` | `inputSchema: zodSchema(z.object({...}))` |
|
|
86
|
-
| Message type | (untyped) | `UIMessage` |
|
|
87
|
-
|
|
88
|
-
## Migration to v7
|
|
89
|
-
|
|
90
|
-
When you are ready to upgrade:
|
|
91
|
-
|
|
92
|
-
1. Swap `@assistant-ui/react-data-stream` for `@assistant-ui/ai-sdk`.
|
|
93
|
-
2. Update your backend to the current AI SDK's `streamText` (see [v7 docs](/docs/runtimes/ai-sdk/v7)).
|
|
94
|
-
3. Switch the runtime hook from `useDataStreamRuntime` to `useChatRuntime`.
|
|
95
|
-
|
|
96
|
-
AI SDK provides codemods at [ai-sdk.dev/docs/migration-guides](https://ai-sdk.dev/docs/migration-guides) that handle the package-side rewrites.
|
|
97
|
-
|
|
98
|
-
## Alternative: react-ai-sdk@0.10.16
|
|
99
|
-
|
|
100
|
-
An older release line of `@assistant-ui/react-ai-sdk` supported AI SDK v4 directly; its last release was `0.10.16`. It is no longer maintained and has no upgrade path; if you are starting a new v4 project, use `@assistant-ui/react-data-stream` instead.
|
|
101
|
-
|
|
102
|
-
## Related
|
|
103
|
-
|
|
104
|
-
<Cards>
|
|
105
|
-
<Card
|
|
106
|
-
icon={<VercelIcon width={20} height={20} />}
|
|
107
|
-
title="AI SDK v7"
|
|
108
|
-
description="Current integration; what new projects should target."
|
|
109
|
-
href="/docs/runtimes/ai-sdk/v7"
|
|
110
|
-
/>
|
|
111
|
-
<Card
|
|
112
|
-
title="Data Stream Protocol"
|
|
113
|
-
description="The runtime v4 integrations are built on."
|
|
114
|
-
href="/docs/runtimes/custom/data-stream"
|
|
115
|
-
/>
|
|
116
|
-
<Card
|
|
117
|
-
icon={<VercelIcon width={20} height={20} />}
|
|
118
|
-
title="AI SDK v5 (legacy)"
|
|
119
|
-
description="The intermediate legacy version."
|
|
120
|
-
href="/docs/runtimes/ai-sdk/v5-legacy"
|
|
121
|
-
/>
|
|
122
|
-
</Cards>
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: AI SDK v5 (legacy)
|
|
3
|
-
description: Reference for projects still on AI SDK v5. New projects should use v7.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
import { VercelIcon } from "@/components/icons/vercel";
|
|
7
|
-
|
|
8
|
-
<Callout type="warn">
|
|
9
|
-
AI SDK v5 is a legacy version. New projects should use [AI SDK v7](/docs/runtimes/ai-sdk/v7). v5 users pin `@assistant-ui/react-ai-sdk@1.1.21` (the last v5-compatible release); later releases target newer AI SDK majors.
|
|
10
|
-
</Callout>
|
|
11
|
-
|
|
12
|
-
## Why legacy
|
|
13
|
-
|
|
14
|
-
AI SDK v6 introduced major API changes: async `convertToModelMessages`, a new tool schema, and `toUIMessageStreamResponse()`. v5 still works but no longer receives new features in `@assistant-ui/react-ai-sdk`. Pinning to `1.1.21` keeps you on the v5-compatible surface.
|
|
15
|
-
|
|
16
|
-
This page is reference for existing v5 projects. Plan to migrate to v7 when feasible.
|
|
17
|
-
|
|
18
|
-
## Setup
|
|
19
|
-
|
|
20
|
-
<Steps>
|
|
21
|
-
<Step>
|
|
22
|
-
|
|
23
|
-
### Install v5-compatible versions
|
|
24
|
-
|
|
25
|
-
<InstallCommand npm={["@assistant-ui/react", "@assistant-ui/react-ai-sdk@1.1.21", "ai@^5", "@ai-sdk/openai@^1", "zod"]} />
|
|
26
|
-
|
|
27
|
-
</Step>
|
|
28
|
-
<Step>
|
|
29
|
-
|
|
30
|
-
### Backend route
|
|
31
|
-
|
|
32
|
-
```ts title="@/app/api/chat/route.ts"
|
|
33
|
-
import { openai } from "@ai-sdk/openai";
|
|
34
|
-
import { streamText, tool } from "ai";
|
|
35
|
-
import type { Message } from "ai";
|
|
36
|
-
import { z } from "zod";
|
|
37
|
-
|
|
38
|
-
export const maxDuration = 30;
|
|
39
|
-
|
|
40
|
-
export async function POST(req: Request) {
|
|
41
|
-
const { messages }: { messages: Message[] } = await req.json();
|
|
42
|
-
const result = streamText({
|
|
43
|
-
model: openai("gpt-5.6-luna"),
|
|
44
|
-
messages,
|
|
45
|
-
tools: {
|
|
46
|
-
get_current_weather: tool({
|
|
47
|
-
description: "Get the current weather",
|
|
48
|
-
parameters: z.object({ city: z.string() }),
|
|
49
|
-
execute: async ({ city }) => `The weather in ${city} is sunny`,
|
|
50
|
-
}),
|
|
51
|
-
},
|
|
52
|
-
});
|
|
53
|
-
return result.toDataStreamResponse();
|
|
54
|
-
}
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
</Step>
|
|
58
|
-
<Step>
|
|
59
|
-
|
|
60
|
-
### Frontend
|
|
61
|
-
|
|
62
|
-
```tsx title="@/app/page.tsx"
|
|
63
|
-
"use client";
|
|
64
|
-
|
|
65
|
-
import { Thread } from "@/components/assistant-ui/thread";
|
|
66
|
-
import { AssistantRuntimeProvider } from "@assistant-ui/react";
|
|
67
|
-
import { useChatRuntime } from "@assistant-ui/react-ai-sdk";
|
|
68
|
-
|
|
69
|
-
export default function Home() {
|
|
70
|
-
const runtime = useChatRuntime();
|
|
71
|
-
return (
|
|
72
|
-
<AssistantRuntimeProvider runtime={runtime}>
|
|
73
|
-
<div className="h-full">
|
|
74
|
-
<Thread />
|
|
75
|
-
</div>
|
|
76
|
-
</AssistantRuntimeProvider>
|
|
77
|
-
);
|
|
78
|
-
}
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
</Step>
|
|
82
|
-
</Steps>
|
|
83
|
-
|
|
84
|
-
<Callout type="info">
|
|
85
|
-
On `@assistant-ui/react-ai-sdk` versions older than 0.11.3, use `useVercelUseChatRuntime` with `useChat` from `ai/react` instead:
|
|
86
|
-
|
|
87
|
-
```tsx
|
|
88
|
-
import { useChat } from "ai/react";
|
|
89
|
-
import { useVercelUseChatRuntime } from "@assistant-ui/react-ai-sdk";
|
|
90
|
-
|
|
91
|
-
const chat = useChat({ api: "/api/chat" });
|
|
92
|
-
const runtime = useVercelUseChatRuntime(chat);
|
|
93
|
-
```
|
|
94
|
-
</Callout>
|
|
95
|
-
|
|
96
|
-
## Differences from v6
|
|
97
|
-
|
|
98
|
-
| Feature | v5 | v6 |
|
|
99
|
-
| --- | --- | --- |
|
|
100
|
-
| `ai` package | `ai@^5` | `ai@^6` |
|
|
101
|
-
| `@assistant-ui/react-ai-sdk` | `@1.1.21` | `@1.3.40` |
|
|
102
|
-
| `@ai-sdk/openai` | `^1` | `^3` |
|
|
103
|
-
| Message type | `Message` | `UIMessage` |
|
|
104
|
-
| `convertToModelMessages` | Sync | Async (`await`) |
|
|
105
|
-
| Tool schema | `parameters: z.object({...})` | `inputSchema: zodSchema(z.object({...}))` |
|
|
106
|
-
| Response | `toDataStreamResponse()` | `toUIMessageStreamResponse()` |
|
|
107
|
-
|
|
108
|
-
## Migration to v6
|
|
109
|
-
|
|
110
|
-
When you are ready to upgrade:
|
|
111
|
-
|
|
112
|
-
1. Update `ai` from `@^5` to `@^6`, and `@assistant-ui/react-ai-sdk` to the latest line.
|
|
113
|
-
2. Add `await` to `convertToModelMessages(...)` calls.
|
|
114
|
-
3. Convert tool schemas: `parameters: z.object({...})` → `inputSchema: zodSchema(z.object({...}))`.
|
|
115
|
-
4. Replace `toDataStreamResponse()` with `toUIMessageStreamResponse()`.
|
|
116
|
-
5. Switch the `Message` type to `UIMessage`.
|
|
117
|
-
|
|
118
|
-
AI SDK provides codemods at [ai-sdk.dev/docs/migration-guides/migration-guide-6-0](https://ai-sdk.dev/docs/migration-guides/migration-guide-6-0) that handle most of the package-side rewrites.
|
|
119
|
-
|
|
120
|
-
## Related
|
|
121
|
-
|
|
122
|
-
<Cards>
|
|
123
|
-
<Card
|
|
124
|
-
icon={<VercelIcon width={20} height={20} />}
|
|
125
|
-
title="AI SDK v7"
|
|
126
|
-
description="Current integration; what new projects should target."
|
|
127
|
-
href="/docs/runtimes/ai-sdk/v7"
|
|
128
|
-
/>
|
|
129
|
-
<Card
|
|
130
|
-
icon={<VercelIcon width={20} height={20} />}
|
|
131
|
-
title="AI SDK v4 (legacy)"
|
|
132
|
-
description="The earlier legacy version using react-data-stream."
|
|
133
|
-
href="/docs/runtimes/ai-sdk/v4-legacy"
|
|
134
|
-
/>
|
|
135
|
-
</Cards>
|