@assistant-ui/mcp-docs-server 0.2.3 → 0.3.1
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 +91 -0
- package/dist/proxy.js.map +1 -0
- package/package.json +8 -12
- package/src/index.ts +3 -115
- package/src/proxy.test.ts +385 -0
- package/src/proxy.ts +126 -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,119 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Quickstart
|
|
3
|
-
description: Minimal useOpenCodeRuntime setup against a local OpenCode server.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
Three steps to a working chat against a local OpenCode server. Assumes you have OpenCode running; if not, follow [opencode.ai](https://opencode.ai/) to install and start the server first.
|
|
7
|
-
|
|
8
|
-
<Steps>
|
|
9
|
-
<Step>
|
|
10
|
-
|
|
11
|
-
### Wire up the runtime provider
|
|
12
|
-
|
|
13
|
-
```tsx title="app/MyRuntimeProvider.tsx"
|
|
14
|
-
"use client";
|
|
15
|
-
|
|
16
|
-
import { AssistantRuntimeProvider } from "@assistant-ui/react";
|
|
17
|
-
import { useOpenCodeRuntime } from "@assistant-ui/react-opencode";
|
|
18
|
-
|
|
19
|
-
export function MyRuntimeProvider({
|
|
20
|
-
children,
|
|
21
|
-
}: {
|
|
22
|
-
children: React.ReactNode;
|
|
23
|
-
}) {
|
|
24
|
-
const runtime = useOpenCodeRuntime({
|
|
25
|
-
baseUrl: "http://localhost:4096",
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
return (
|
|
29
|
-
<AssistantRuntimeProvider runtime={runtime}>
|
|
30
|
-
{children}
|
|
31
|
-
</AssistantRuntimeProvider>
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
`baseUrl` defaults to `http://localhost:4096` if omitted.
|
|
37
|
-
|
|
38
|
-
</Step>
|
|
39
|
-
<Step>
|
|
40
|
-
|
|
41
|
-
### Render the Thread
|
|
42
|
-
|
|
43
|
-
```tsx title="app/page.tsx"
|
|
44
|
-
import { Thread } from "@/components/assistant-ui/thread";
|
|
45
|
-
import { MyRuntimeProvider } from "./MyRuntimeProvider";
|
|
46
|
-
|
|
47
|
-
export default function Page() {
|
|
48
|
-
return (
|
|
49
|
-
<MyRuntimeProvider>
|
|
50
|
-
<Thread />
|
|
51
|
-
</MyRuntimeProvider>
|
|
52
|
-
);
|
|
53
|
-
}
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
</Step>
|
|
57
|
-
<Step>
|
|
58
|
-
|
|
59
|
-
### Set up UI components
|
|
60
|
-
|
|
61
|
-
Follow the [UI Components guide](/docs/ui/thread) to wire up the Thread, composer, and supporting primitives.
|
|
62
|
-
|
|
63
|
-
</Step>
|
|
64
|
-
</Steps>
|
|
65
|
-
|
|
66
|
-
The runtime opens an SSE event stream against the OpenCode server, listens for session and message events, and projects them into the thread. Each OpenCode session corresponds to one thread; the thread list reflects sessions on the server.
|
|
67
|
-
|
|
68
|
-
## Default model and agent
|
|
69
|
-
|
|
70
|
-
Pin a default model or agent when starting new sessions:
|
|
71
|
-
|
|
72
|
-
```tsx
|
|
73
|
-
const runtime = useOpenCodeRuntime({
|
|
74
|
-
baseUrl: "http://localhost:4096",
|
|
75
|
-
defaultModel: { providerID: "anthropic", modelID: "claude-sonnet-4-6" },
|
|
76
|
-
defaultAgent: "coder",
|
|
77
|
-
});
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
## Bring your own client
|
|
81
|
-
|
|
82
|
-
If you need a pre-configured `OpencodeClient` (e.g. for auth headers), pass it directly:
|
|
83
|
-
|
|
84
|
-
```tsx
|
|
85
|
-
import { createOpencodeClient } from "@assistant-ui/react-opencode";
|
|
86
|
-
|
|
87
|
-
const client = createOpencodeClient({
|
|
88
|
-
baseUrl: "http://localhost:4096",
|
|
89
|
-
// additional client config...
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
const runtime = useOpenCodeRuntime({ client });
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
## Resuming a session
|
|
96
|
-
|
|
97
|
-
Pass `initialSessionId` to open the runtime against an existing session on first load:
|
|
98
|
-
|
|
99
|
-
```tsx
|
|
100
|
-
const runtime = useOpenCodeRuntime({
|
|
101
|
-
baseUrl: "http://localhost:4096",
|
|
102
|
-
initialSessionId: "ses_abc123",
|
|
103
|
-
});
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
## Next
|
|
107
|
-
|
|
108
|
-
<Cards>
|
|
109
|
-
<Card
|
|
110
|
-
title="Hooks"
|
|
111
|
-
description="Permissions, questions, session state, runtime extras."
|
|
112
|
-
href="/docs/runtimes/opencode/hooks"
|
|
113
|
-
/>
|
|
114
|
-
<Card
|
|
115
|
-
title="Pick a runtime"
|
|
116
|
-
description="Compare OpenCode to other runtime options."
|
|
117
|
-
href="/docs/runtimes/pick-a-runtime"
|
|
118
|
-
/>
|
|
119
|
-
</Cards>
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Picking a runtime
|
|
3
|
-
description: Decision guide for choosing the right runtime, by framework or by feature.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
import { A2AIcon } from "@/components/icons/a2a";
|
|
7
|
-
import { AdkIcon } from "@/components/icons/adk";
|
|
8
|
-
import { AguiIcon } from "@/components/icons/agui";
|
|
9
|
-
import { ClaudeIcon } from "@/components/icons/claude";
|
|
10
|
-
import { CloudflareIcon } from "@/components/icons/cloudflare";
|
|
11
|
-
import { LangChainIcon } from "@/components/icons/langchain";
|
|
12
|
-
import { LangGraphIcon } from "@/components/icons/langgraph";
|
|
13
|
-
import { MastraIcon } from "@/components/icons/mastra";
|
|
14
|
-
import { OpenCodeIcon } from "@/components/icons/opencode";
|
|
15
|
-
import { VercelIcon } from "@/components/icons/vercel";
|
|
16
|
-
|
|
17
|
-
A runtime is the connection between assistant-ui's UI primitives and your AI backend. This page helps you pick one. Two lenses, pick whichever maps to what you already know.
|
|
18
|
-
|
|
19
|
-
## Lens 1: by framework
|
|
20
|
-
|
|
21
|
-
If you are already using one of these frameworks, the choice is mechanical.
|
|
22
|
-
|
|
23
|
-
### First-party adapters
|
|
24
|
-
|
|
25
|
-
assistant-ui ships React adapter packages for these. Pick the matching card and follow its overview.
|
|
26
|
-
|
|
27
|
-
<Cards>
|
|
28
|
-
<Card
|
|
29
|
-
icon={<VercelIcon width={20} height={20} />}
|
|
30
|
-
title="Vercel AI SDK"
|
|
31
|
-
description="useChat hook, streaming, tools, attachments, multi-step. v6 current; v5 / v4 legacy."
|
|
32
|
-
href="/docs/runtimes/ai-sdk/overview"
|
|
33
|
-
/>
|
|
34
|
-
<Card
|
|
35
|
-
icon={<VercelIcon width={20} height={20} />}
|
|
36
|
-
title="Eve"
|
|
37
|
-
description="Filesystem-first durable agents with eve/next, sessions, NDJSON streaming, and HITL."
|
|
38
|
-
href="/docs/runtimes/eve/overview"
|
|
39
|
-
/>
|
|
40
|
-
<Card
|
|
41
|
-
icon={<LangGraphIcon width={20} height={20} className="text-[#1C3C3C] dark:text-[#5b9595]" />}
|
|
42
|
-
title="LangGraph"
|
|
43
|
-
description="Direct integration with @langchain/langgraph-sdk. Subgraph events, UI messages, message metadata."
|
|
44
|
-
href="/docs/runtimes/langgraph/overview"
|
|
45
|
-
/>
|
|
46
|
-
<Card
|
|
47
|
-
icon={<LangChainIcon width={20} height={20} className="text-[#7FC8FF]" />}
|
|
48
|
-
title="LangChain useStream"
|
|
49
|
-
description="Wraps @langchain/react's useStream. Lighter-weight, tracks upstream."
|
|
50
|
-
href="/docs/runtimes/langchain"
|
|
51
|
-
/>
|
|
52
|
-
<Card
|
|
53
|
-
icon={<AdkIcon width={20} height={20} />}
|
|
54
|
-
title="Google ADK"
|
|
55
|
-
description="ADK JS or Python agents. Tool confirmations, auth flows, multi-agent, code execution."
|
|
56
|
-
href="/docs/runtimes/google-adk/overview"
|
|
57
|
-
/>
|
|
58
|
-
<Card
|
|
59
|
-
icon={<A2AIcon width={20} height={20} />}
|
|
60
|
-
title="A2A Protocol"
|
|
61
|
-
description="Any A2A v1.0-compliant agent server. Streaming task state, artifacts, multi-tenancy."
|
|
62
|
-
href="/docs/runtimes/a2a/overview"
|
|
63
|
-
/>
|
|
64
|
-
<Card
|
|
65
|
-
icon={<AguiIcon width={20} height={20} />}
|
|
66
|
-
title="AG-UI Protocol"
|
|
67
|
-
description="AG-UI agents (CopilotKit, custom servers). Streaming text, thinking, tool calls, state snapshots."
|
|
68
|
-
href="/docs/runtimes/ag-ui/overview"
|
|
69
|
-
/>
|
|
70
|
-
<PlatformOnly platforms={["react"]}>
|
|
71
|
-
<Card
|
|
72
|
-
icon={<OpenCodeIcon width={20} height={20} />}
|
|
73
|
-
title="OpenCode"
|
|
74
|
-
description="OpenCode coding-agent server. Permission flows, questions, fork / revert. Experimental."
|
|
75
|
-
href="/docs/runtimes/opencode/overview"
|
|
76
|
-
/>
|
|
77
|
-
</PlatformOnly>
|
|
78
|
-
</Cards>
|
|
79
|
-
|
|
80
|
-
<PlatformOnly platforms={["react"]}>
|
|
81
|
-
|
|
82
|
-
### Integration guides
|
|
83
|
-
|
|
84
|
-
For frameworks without a dedicated adapter, these wiring guides route through an existing runtime: an adapter above, or one of the core runtimes.
|
|
85
|
-
|
|
86
|
-
<Cards>
|
|
87
|
-
<Card
|
|
88
|
-
icon={<CloudflareIcon width={20} height={20} />}
|
|
89
|
-
title="Cloudflare Agents"
|
|
90
|
-
description="Stateful agents on Durable Objects with WebSocket streaming. Wired through the Vercel AI SDK runtime."
|
|
91
|
-
href="/docs/integrations/frameworks/cloudflare-agents"
|
|
92
|
-
/>
|
|
93
|
-
<Card
|
|
94
|
-
icon={<MastraIcon width={20} height={20} />}
|
|
95
|
-
title="Mastra"
|
|
96
|
-
description="TypeScript agent framework. Wired through the Vercel AI SDK runtime."
|
|
97
|
-
href="/docs/integrations/frameworks/mastra/overview"
|
|
98
|
-
/>
|
|
99
|
-
<Card
|
|
100
|
-
icon={<ClaudeIcon width={20} height={20} className="text-[#D97757]" />}
|
|
101
|
-
title="Claude Managed Agents"
|
|
102
|
-
description="Anthropic-hosted agent sessions. Wired through the external store runtime: event-log replay, approval gates, sessions as threads."
|
|
103
|
-
href="/docs/runtimes/claude-managed-agents"
|
|
104
|
-
/>
|
|
105
|
-
</Cards>
|
|
106
|
-
|
|
107
|
-
</PlatformOnly>
|
|
108
|
-
|
|
109
|
-
## Lens 2: by needs
|
|
110
|
-
|
|
111
|
-
If you do not know your framework yet, or your backend is custom, pick by what you need:
|
|
112
|
-
|
|
113
|
-
| You need | Use |
|
|
114
|
-
| --- | --- |
|
|
115
|
-
| Simple `fetch` call to your API, runtime owns state | [LocalRuntime](/docs/runtimes/custom/local-runtime) |
|
|
116
|
-
| Keep messages in redux, zustand, tanstack-query, etc. | [ExternalStoreRuntime](/docs/runtimes/custom/external-store) |
|
|
117
|
-
| Backend that already speaks the data stream protocol | [DataStream](/docs/runtimes/custom/data-stream) |
|
|
118
|
-
| Stream full agent state snapshots (not just messages) | [AssistantTransport](/docs/runtimes/custom/assistant-transport) |
|
|
119
|
-
|
|
120
|
-
If none of the framework adapters fits, start at [custom backend](/docs/runtimes/custom/overview).
|
|
121
|
-
|
|
122
|
-
## Shared concepts
|
|
123
|
-
|
|
124
|
-
Regardless of which runtime you pick, four ideas apply across the board.
|
|
125
|
-
|
|
126
|
-
- **Architecture** — Framework adapters wrap one of two **core runtimes** (`LocalRuntime`, `ExternalStoreRuntime`). See [architecture](/docs/runtimes/concepts/architecture) for the full layering.
|
|
127
|
-
- **Adapters** (attachments, speech, feedback, history, suggestions) work the same way across runtimes. See [adapters](/docs/runtimes/concepts/adapters).
|
|
128
|
-
- **Threads** (single, cloud, custom database) follow the same model. See [threads](/docs/runtimes/concepts/threads).
|
|
129
|
-
- **Stability** policy: APIs prefixed with `unstable_` may change in any release. See [stability](/docs/runtimes/concepts/stability).
|
|
130
|
-
|
|
131
|
-
<Callout type="info">
|
|
132
|
-
Need help? Join our [Discord community](https://discord.gg/S9dwgCNEFs) or check the [GitHub repo](https://github.com/assistant-ui/assistant-ui).
|
|
133
|
-
</Callout>
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: A2UI over AG-UI
|
|
3
|
-
description: Render A2UI surfaces from AG-UI activity snapshots as generative UI, using the community a2ui-surface convention.
|
|
4
|
-
platforms: ["react"]
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
[A2UI](https://a2ui.org/) is a declarative generative UI protocol: the agent streams surface operations (create a surface, upsert components, update a data model) and the host renders them from a pre-approved component catalog, with no code over the wire. The AG-UI ecosystem carries A2UI as `ACTIVITY_SNAPSHOT` events with `activityType: "a2ui-surface"` and the operations under `content.a2ui_operations`; this is the convention emitted by [`@ag-ui/a2ui-middleware`](https://github.com/ag-ui-protocol/ag-ui/tree/main/middlewares/a2ui-middleware).
|
|
8
|
-
|
|
9
|
-
`useAgUiRuntime` consumes these snapshots natively. Each surface becomes one tool-call part with `toolCallId` `a2ui:<surfaceId>` and `toolName` `"present"`, whose args are the converted generative UI spec, so surfaces render through the same path as the [`present` frontend tool](/docs/tools/generative-ui). Snapshots with any other `activityType` are ignored, and the MCP Apps activity path is unaffected.
|
|
10
|
-
|
|
11
|
-
## Wire contract
|
|
12
|
-
|
|
13
|
-
A backend paints or updates a surface by emitting an activity snapshot on the AG-UI stream:
|
|
14
|
-
|
|
15
|
-
```json
|
|
16
|
-
{
|
|
17
|
-
"type": "ACTIVITY_SNAPSHOT",
|
|
18
|
-
"messageId": "a2ui-surface-call_1",
|
|
19
|
-
"activityType": "a2ui-surface",
|
|
20
|
-
"replace": true,
|
|
21
|
-
"content": {
|
|
22
|
-
"a2ui_operations": [
|
|
23
|
-
{ "version": "v0.9", "createSurface": { "surfaceId": "s1" } },
|
|
24
|
-
{
|
|
25
|
-
"version": "v0.9",
|
|
26
|
-
"updateComponents": {
|
|
27
|
-
"surfaceId": "s1",
|
|
28
|
-
"components": [
|
|
29
|
-
{ "id": "root", "component": "Card", "title": "Order", "children": ["total"] },
|
|
30
|
-
{ "id": "total", "component": "Text", "text": { "path": "/total" } }
|
|
31
|
-
]
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"version": "v0.9",
|
|
36
|
-
"updateDataModel": { "surfaceId": "s1", "path": "/", "contents": { "total": "$42" } }
|
|
37
|
-
}
|
|
38
|
-
]
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
- A snapshot with `replace: true` (the schema default) rebuilds that `messageId`'s surface state from the operations it carries. `replace: false` means the snapshot is ignored when that `messageId` has already been seen, matching the AG-UI event spec. The middleware always emits `replace: true`.
|
|
44
|
-
- Surfaces are keyed by the `surfaceId` inside the operations, not by `messageId`. Multiple snapshots that share a `messageId` update their surfaces in place, and the synthesized part keeps its `toolCallId`, so the rendered surface updates without duplicating parts.
|
|
45
|
-
- Component trees use the A2UI adjacency-list model: nodes reference children by id, the root node has id `root`, and props of shape `{ "path": "/x/y" }` are JSON Pointer bindings resolved against the surface data model. Both v0.9 and v1.0 operation payloads are accepted, including the v1.0 inline `components` and `dataModel` on `createSurface`.
|
|
46
|
-
- Lifecycle snapshots that carry a `status` (such as `"building"`) but no `a2ui_operations` are tolerated and produce no part until operations arrive. A `deleteSurface` operation removes the surface's part.
|
|
47
|
-
- The `a2ui:` tool-call id prefix is reserved for synthesized surface parts: they are client-side render artifacts and are excluded from the history sent back to the agent, so genuine agent tool calls must not use ids starting with `a2ui:`.
|
|
48
|
-
|
|
49
|
-
## Quick start
|
|
50
|
-
|
|
51
|
-
Register the `present` frontend tool from `@assistant-ui/react-generative-ui`; incoming surfaces then render with the default vocabulary:
|
|
52
|
-
|
|
53
|
-
```tsx
|
|
54
|
-
import {
|
|
55
|
-
JSONGenerativeUI,
|
|
56
|
-
defaultGenerativeUILibrary,
|
|
57
|
-
} from "@assistant-ui/react-generative-ui";
|
|
58
|
-
|
|
59
|
-
const generative = new JSONGenerativeUI({
|
|
60
|
-
library: defaultGenerativeUILibrary,
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
const toolkit = {
|
|
64
|
-
present: generative.present({ display: "standalone" }),
|
|
65
|
-
};
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Pass the toolkit to your assistant as on the [Generative UI](/docs/tools/generative-ui) page; no other configuration is needed on `useAgUiRuntime`.
|
|
69
|
-
|
|
70
|
-
## Actions
|
|
71
|
-
|
|
72
|
-
`Button` nodes dispatch `$action` objects with type `"a2ui:action"` through the action registry. Wire the registry to `useAgUiSendA2uiAction` inside a component; the hook returns a stable function, so the toolkit can be memoized on it:
|
|
73
|
-
|
|
74
|
-
```tsx
|
|
75
|
-
import { useMemo } from "react";
|
|
76
|
-
import { useAgUiSendA2uiAction } from "@assistant-ui/react-ag-ui";
|
|
77
|
-
import {
|
|
78
|
-
JSONGenerativeUI,
|
|
79
|
-
createActionRegistry,
|
|
80
|
-
defaultGenerativeUILibrary,
|
|
81
|
-
} from "@assistant-ui/react-generative-ui";
|
|
82
|
-
|
|
83
|
-
function useA2uiToolkit() {
|
|
84
|
-
const sendA2uiAction = useAgUiSendA2uiAction();
|
|
85
|
-
return useMemo(() => {
|
|
86
|
-
const generative = new JSONGenerativeUI({
|
|
87
|
-
library: defaultGenerativeUILibrary,
|
|
88
|
-
actions: createActionRegistry({
|
|
89
|
-
"a2ui:action": ({ payload }) => sendA2uiAction(payload),
|
|
90
|
-
}),
|
|
91
|
-
});
|
|
92
|
-
return { present: generative.present({ display: "standalone" }) };
|
|
93
|
-
}, [sendA2uiAction]);
|
|
94
|
-
}
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
Sending an action triggers a run with no new user message, and the agent receives it as `forwardedProps.a2uiAction.userAction`, the convention `@ag-ui/a2ui-middleware` consumes. The action rides exactly one run; the `type` field is stripped and a `timestamp` is added when absent.
|
|
98
|
-
|
|
99
|
-
The middleware turns the action into a synthetic `log_a2ui_event` tool-call pair that is never declared in `input.tools`; a backend that validates tool calls against the declared tool list will reject it.
|
|
100
|
-
|
|
101
|
-
## Component mapping
|
|
102
|
-
|
|
103
|
-
The converter maps the A2UI basic catalog onto the default generative UI vocabulary: `Text` becomes `Markdown` (`h1` to `h6` variants become `Header`, `caption` becomes `Caption`), `Column` becomes `Col`, `TextField` becomes `Input` (the control name is derived from the last segment of its binding path), `CheckBox` becomes `Checkbox`, and `Image`, `Row`, `Card`, `Divider`, `Button` map one to one. A node with template children expands into a `ListView` over the bound list. `Button` actions become `$action` objects with type `"a2ui:action"` carrying the action name, `surfaceId`, and `sourceComponentId`, which is how your action registry receives them. Unknown components and operations are skipped with a debug warning, and conversion is bounded (depth 32, 100 template items, 5000 nodes) so a malformed stream cannot hang the client.
|
|
104
|
-
|
|
105
|
-
## Limitations
|
|
106
|
-
|
|
107
|
-
- The upstream middleware currently emits v0.9 operation payloads; the renderer accepts v0.9 and v1.0 shapes.
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Backend Tools
|
|
3
|
-
description: Wire assistant-ui toolkits into your server with the AI SDK — AISDKToolkit, frontendTools, mixing client and server tools, and multi-modal results.
|
|
4
|
-
platforms: ["react"]
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
A tool is only callable if the **model** knows about it, and the model is configured on your server. This page covers wiring a toolkit into an AI SDK route handler: exposing your generative toolkit, receiving client-defined tools, mixing the two, and round-tripping multi-modal results.
|
|
8
|
-
|
|
9
|
-
For authoring tools, see [Defining Tools](/docs/tools/defining-tools). For MCP servers, see [MCP](/docs/tools/mcp).
|
|
10
|
-
|
|
11
|
-
## The request body
|
|
12
|
-
|
|
13
|
-
`@assistant-ui/ai-sdk` posts `{ messages, system, tools }` to your route. `tools` is the map of **frontend** tools the client serialized for this request (the model needs their schemas to call them, even though they run in the browser):
|
|
14
|
-
|
|
15
|
-
```ts
|
|
16
|
-
import type { FrontendTools } from "@assistant-ui/ai-sdk";
|
|
17
|
-
|
|
18
|
-
const {
|
|
19
|
-
messages,
|
|
20
|
-
system,
|
|
21
|
-
tools,
|
|
22
|
-
}: {
|
|
23
|
-
messages: UIMessage[];
|
|
24
|
-
system?: string;
|
|
25
|
-
tools?: FrontendTools;
|
|
26
|
-
} = await req.json();
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## Generative toolkits: `AISDKToolkit`
|
|
30
|
-
|
|
31
|
-
When you author tools in a [`"use generative"` file](/docs/tools/defining-tools#quick-start-use-generative), the same import resolves to the **server build** inside a route handler — schema plus any backend `execute`, with renderers stripped. Wrap it in an `AISDKToolkit` and call `.tools()` with the uploaded `tools`:
|
|
32
|
-
|
|
33
|
-
```ts title="app/api/chat/route.ts"
|
|
34
|
-
import { AISDKToolkit } from "@assistant-ui/ai-sdk";
|
|
35
|
-
import { streamText, convertToModelMessages, type UIMessage } from "ai";
|
|
36
|
-
import { openai } from "@ai-sdk/openai";
|
|
37
|
-
import toolkit from "../../toolkit";
|
|
38
|
-
|
|
39
|
-
const aiToolkit = new AISDKToolkit({ toolkit });
|
|
40
|
-
|
|
41
|
-
export async function POST(req: Request) {
|
|
42
|
-
const { messages, system, tools } = await req.json();
|
|
43
|
-
|
|
44
|
-
const result = streamText({
|
|
45
|
-
model: openai("gpt-5.6-luna"),
|
|
46
|
-
system,
|
|
47
|
-
messages: await convertToModelMessages(messages),
|
|
48
|
-
tools: await aiToolkit.tools({ frontend: tools }),
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
return result.toUIMessageStreamResponse();
|
|
52
|
-
}
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
`AISDKToolkit.tools()` registers every toolkit tool with the model using its schema, wires the backend `execute` where the server build carries one, and merges in the uploaded frontend tools. A server `execute` wins over an uploaded entry of the same name. Frontend and human tools (no server `execute`) are exposed schema-only and left for the client and the user to fulfill.
|
|
56
|
-
|
|
57
|
-
<Callout type="info">
|
|
58
|
-
If your toolkit spreads in MCP server tools (`defineMcpToolkit`), `.tools()`
|
|
59
|
-
also opens those connections. A module-scope `aiToolkit` pools them across
|
|
60
|
-
requests; see [MCP](/docs/tools/mcp) for the connection lifecycle and when to
|
|
61
|
-
call `aiToolkit.close()`. The older
|
|
62
|
-
`generativeTools({ toolkit, frontendTools })` is deprecated, MCP-less, and
|
|
63
|
-
superseded by `AISDKToolkit`.
|
|
64
|
-
</Callout>
|
|
65
|
-
|
|
66
|
-
## Client-defined tools: `frontendTools`
|
|
67
|
-
|
|
68
|
-
If a toolkit cannot go through the generative compiler, the AI SDK adapter still
|
|
69
|
-
serializes browser-executed tools into the request `tools`. Convert them to the
|
|
70
|
-
AI SDK shape with `frontendTools` and spread your own server tools alongside:
|
|
71
|
-
|
|
72
|
-
```ts title="app/api/chat/route.ts"
|
|
73
|
-
import { frontendTools } from "@assistant-ui/ai-sdk";
|
|
74
|
-
import { streamText, convertToModelMessages, tool, zodSchema } from "ai";
|
|
75
|
-
import { openai } from "@ai-sdk/openai";
|
|
76
|
-
import { z } from "zod";
|
|
77
|
-
|
|
78
|
-
export async function POST(req: Request) {
|
|
79
|
-
const { messages, tools } = await req.json();
|
|
80
|
-
|
|
81
|
-
const result = streamText({
|
|
82
|
-
model: openai("gpt-5.6-luna"),
|
|
83
|
-
messages: await convertToModelMessages(messages),
|
|
84
|
-
tools: {
|
|
85
|
-
...frontendTools(tools ?? {}),
|
|
86
|
-
query_database: tool({
|
|
87
|
-
description: "Query the application database.",
|
|
88
|
-
inputSchema: zodSchema(z.object({ query: z.string() })),
|
|
89
|
-
execute: async ({ query }) => db.query(query),
|
|
90
|
-
}),
|
|
91
|
-
},
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
return result.toUIMessageStreamResponse();
|
|
95
|
-
}
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
`AISDKToolkit.tools()` calls `frontendTools` for you under the hood; reach for
|
|
99
|
-
`frontendTools` directly when you're not on the generative build.
|
|
100
|
-
|
|
101
|
-
<Callout type="tip">
|
|
102
|
-
`toToolsJSONSchema` emits the uploaded tools in alphabetical order, so two
|
|
103
|
-
renders that register the same set produce byte-identical request bodies —
|
|
104
|
-
which keeps provider prompt caches stable across renders.
|
|
105
|
-
</Callout>
|
|
106
|
-
|
|
107
|
-
## Multi-modal results
|
|
108
|
-
|
|
109
|
-
When a tool declares [`toModelOutput`](/docs/tools/defining-tools#multi-modal-tool-results), frontend tool results round-trip through the AI SDK chat protocol back to your route on the next turn. For `toModelOutput` to fire on those round-tripped results, pass the tool registry to `convertToModelMessages` as well — the [same pattern the AI SDK documents](https://ai-sdk.dev/docs/reference/ai-sdk-ui/convert-to-model-messages#multi-modal-tool-responses) for any multi-modal tool response:
|
|
110
|
-
|
|
111
|
-
```ts
|
|
112
|
-
const aiSDKTools = { ...frontendTools(tools ?? {}) };
|
|
113
|
-
|
|
114
|
-
const result = streamText({
|
|
115
|
-
model,
|
|
116
|
-
// Pass tools to BOTH calls so prior results are projected via toModelOutput.
|
|
117
|
-
messages: await convertToModelMessages(messages, { tools: aiSDKTools }),
|
|
118
|
-
tools: aiSDKTools,
|
|
119
|
-
});
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
Skip the `{ tools }` argument and prior results are sent as a plain JSON blob — `toModelOutput` is silently ignored. Tools without `toModelOutput` are unaffected either way.
|
|
123
|
-
|
|
124
|
-
<Callout type="warn">
|
|
125
|
-
**Read/write compatibility for persisted threads.** When `toModelOutput` is
|
|
126
|
-
set, the runtime persists the AI SDK output as
|
|
127
|
-
`{ __aui_modelContent, value }`. Upgrade every reader before any writer starts
|
|
128
|
-
producing `toModelOutput`; older readers treat the whole envelope as the
|
|
129
|
-
`result` and break that tool's `render`. Don't return objects whose top-level
|
|
130
|
-
key is literally `__aui_modelContent` from any `execute`.
|
|
131
|
-
</Callout>
|
|
132
|
-
|
|
133
|
-
## Multi-step tool calls
|
|
134
|
-
|
|
135
|
-
To let the model see a frontend tool's result and continue, configure the runtime to send back automatically when the last assistant message is complete with tool calls:
|
|
136
|
-
|
|
137
|
-
```tsx
|
|
138
|
-
import { lastAssistantMessageIsCompleteWithToolCalls } from "ai";
|
|
139
|
-
|
|
140
|
-
const runtime = useChatRuntime({
|
|
141
|
-
sendAutomaticallyWhen: lastAssistantMessageIsCompleteWithToolCalls,
|
|
142
|
-
});
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
`useChatRuntime()` targets `/api/chat` by default. To point at a different endpoint or customize requests, see [Custom transport](/docs/runtimes/ai-sdk/v7#custom-transport).
|
|
146
|
-
|
|
147
|
-
For the full AI SDK v7 backend setup — history persistence, reasoning, server-side approvals — see the [AI SDK v7 guide](/docs/runtimes/ai-sdk/v7).
|