@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,191 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: SelectionToolbar
|
|
3
|
-
description: A floating toolbar that appears when text is selected within a message.
|
|
4
|
-
platforms: ["react"]
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
import { SelectionToolbarPrimitiveSample } from "@/components/pages/docs/samples/selection-toolbar-primitive";
|
|
8
|
-
|
|
9
|
-
The SelectionToolbar primitive is a floating toolbar that appears when the user selects text within a message. It lets users quote selected text into the composer. Styling and action layout are fully customizable.
|
|
10
|
-
|
|
11
|
-
<Tabs items={["Preview", "Code"]}>
|
|
12
|
-
<Tab>
|
|
13
|
-
<SelectionToolbarPrimitiveSample />
|
|
14
|
-
</Tab>
|
|
15
|
-
<Tab>
|
|
16
|
-
```tsx
|
|
17
|
-
import { SelectionToolbarPrimitive } from "@assistant-ui/react";
|
|
18
|
-
import { QuoteIcon } from "lucide-react";
|
|
19
|
-
|
|
20
|
-
function FloatingSelectionToolbar() {
|
|
21
|
-
return (
|
|
22
|
-
<SelectionToolbarPrimitive.Root className="flex items-center gap-1 rounded-lg border bg-popover px-1 py-1 shadow-md">
|
|
23
|
-
<SelectionToolbarPrimitive.Quote className="flex items-center gap-1.5 rounded-md px-2.5 py-1 text-popover-foreground text-sm hover:bg-accent">
|
|
24
|
-
<QuoteIcon className="size-3.5" />
|
|
25
|
-
Quote
|
|
26
|
-
</SelectionToolbarPrimitive.Quote>
|
|
27
|
-
</SelectionToolbarPrimitive.Root>
|
|
28
|
-
);
|
|
29
|
-
}
|
|
30
|
-
```
|
|
31
|
-
</Tab>
|
|
32
|
-
</Tabs>
|
|
33
|
-
|
|
34
|
-
## Quick Start
|
|
35
|
-
|
|
36
|
-
A minimal selection toolbar:
|
|
37
|
-
|
|
38
|
-
```tsx
|
|
39
|
-
import { SelectionToolbarPrimitive } from "@assistant-ui/react";
|
|
40
|
-
|
|
41
|
-
<SelectionToolbarPrimitive.Root>
|
|
42
|
-
<SelectionToolbarPrimitive.Quote>
|
|
43
|
-
Quote
|
|
44
|
-
</SelectionToolbarPrimitive.Quote>
|
|
45
|
-
</SelectionToolbarPrimitive.Root>
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
`Root` renders a `<div>` inside a portal, positioned above the text selection. `Quote` renders a `<button>` that copies the selected text into the composer as a quote.
|
|
49
|
-
|
|
50
|
-
<Callout type="info">
|
|
51
|
-
Runtime setup: primitives require runtime context. Wrap your UI in `AssistantRuntimeProvider` with a runtime (for example `useLocalRuntime(...)`). See [Pick a Runtime](/docs/runtimes/pick-a-runtime).
|
|
52
|
-
</Callout>
|
|
53
|
-
|
|
54
|
-
## Core Concepts
|
|
55
|
-
|
|
56
|
-
### Automatic Positioning
|
|
57
|
-
|
|
58
|
-
`Root` renders via a portal to `document.body`. In the current implementation, it positions itself with `position: fixed`, `top: rect.top - 8px`, `left: rect.left + rect.width / 2`, `transform: translate(-50%, -100%)` (placing it centered above the selection), and `z-index: 50`.
|
|
59
|
-
|
|
60
|
-
### Single-Message Validation
|
|
61
|
-
|
|
62
|
-
The toolbar only appears when the selection is entirely within a single message. Cross-message selections are ignored. Detection works by checking for `data-message-id` attributes on ancestor elements, which `MessagePrimitive.Root` sets automatically.
|
|
63
|
-
|
|
64
|
-
`Root` returns `null` when there is no valid selection (collapsed selection, empty text, or no single-message match).
|
|
65
|
-
|
|
66
|
-
### Quote Regions
|
|
67
|
-
|
|
68
|
-
By default, any selected text inside a message can be quoted. For rich messages with tool cards, attachments, or custom controls, add `data-aui-quote-selectable` to the element that contains the message text. Once a message has a quote-selectable region, selections must stay inside the same marked region for the toolbar to appear.
|
|
69
|
-
|
|
70
|
-
```tsx
|
|
71
|
-
<MessagePrimitive.Root>
|
|
72
|
-
<div data-aui-quote-selectable="">
|
|
73
|
-
<MessagePrimitive.Parts />
|
|
74
|
-
</div>
|
|
75
|
-
<ToolCard />
|
|
76
|
-
</MessagePrimitive.Root>
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
Set `data-aui-quote-selectable="false"` to exclude an element instead: on the message root it disables quoting for the entire message, and inside a quotable region it carves that subtree out. The nearest marker wins, and any value other than `"false"` (including empty) marks a quotable region.
|
|
80
|
-
|
|
81
|
-
Apps know the message role at render time, so a role gate is a conditional attribute:
|
|
82
|
-
|
|
83
|
-
```tsx
|
|
84
|
-
const UserMessage = () => (
|
|
85
|
-
<MessagePrimitive.Root data-aui-quote-selectable="false">
|
|
86
|
-
<MessagePrimitive.Parts />
|
|
87
|
-
</MessagePrimitive.Root>
|
|
88
|
-
);
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### Quote Action
|
|
92
|
-
|
|
93
|
-
The `Quote` button does two things on click:
|
|
94
|
-
|
|
95
|
-
1. Calls `composer.setQuote({ text, messageId })` to populate the composer with the selected text as a quoted snippet
|
|
96
|
-
2. Clears the browser selection via `window.getSelection()?.removeAllRanges()`
|
|
97
|
-
|
|
98
|
-
The composer then shows the quoted text, and the user can type a follow-up message around it.
|
|
99
|
-
|
|
100
|
-
### Dismissal
|
|
101
|
-
|
|
102
|
-
The toolbar hides automatically when:
|
|
103
|
-
|
|
104
|
-
- The user scrolls
|
|
105
|
-
- The selection collapses (click away or arrow keys)
|
|
106
|
-
- The selection is cleared programmatically (e.g., after quoting)
|
|
107
|
-
|
|
108
|
-
Clicking the toolbar itself does not dismiss the selection. `Root` calls `preventDefault` on `mousedown` to preserve it.
|
|
109
|
-
|
|
110
|
-
### Placement in Thread
|
|
111
|
-
|
|
112
|
-
The SelectionToolbar must be placed inside `ThreadPrimitive.Root` but **outside** `ThreadPrimitive.Viewport`. It positions itself via a portal based on the browser selection, independent of the scroll container:
|
|
113
|
-
|
|
114
|
-
```tsx
|
|
115
|
-
<ThreadPrimitive.Root>
|
|
116
|
-
<ThreadPrimitive.Viewport>
|
|
117
|
-
<ThreadPrimitive.Messages ... />
|
|
118
|
-
</ThreadPrimitive.Viewport>
|
|
119
|
-
<SelectionToolbarPrimitive.Root>
|
|
120
|
-
<SelectionToolbarPrimitive.Quote>Quote</SelectionToolbarPrimitive.Quote>
|
|
121
|
-
</SelectionToolbarPrimitive.Root>
|
|
122
|
-
<ComposerPrimitive.Root>...</ComposerPrimitive.Root>
|
|
123
|
-
</ThreadPrimitive.Root>
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
## Parts
|
|
127
|
-
|
|
128
|
-
### Root
|
|
129
|
-
|
|
130
|
-
Floating toolbar container that appears for a valid text selection. Renders a `<div>` element unless `asChild` is set.
|
|
131
|
-
|
|
132
|
-
```tsx
|
|
133
|
-
<SelectionToolbarPrimitive.Root className="flex items-center gap-1 rounded-lg border bg-popover px-1 py-1 shadow-md">
|
|
134
|
-
<SelectionToolbarPrimitive.Quote>Quote</SelectionToolbarPrimitive.Quote>
|
|
135
|
-
</SelectionToolbarPrimitive.Root>
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
### Quote
|
|
139
|
-
|
|
140
|
-
Quotes the currently selected text into the composer. Renders a `<button>` element unless `asChild` is set.
|
|
141
|
-
|
|
142
|
-
```tsx
|
|
143
|
-
<SelectionToolbarPrimitive.Quote className="rounded-md px-2.5 py-1 text-sm hover:bg-accent">
|
|
144
|
-
Quote
|
|
145
|
-
</SelectionToolbarPrimitive.Quote>
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
## Patterns
|
|
149
|
-
|
|
150
|
-
### Basic Toolbar with Quote
|
|
151
|
-
|
|
152
|
-
```tsx
|
|
153
|
-
<SelectionToolbarPrimitive.Root className="flex items-center gap-1 rounded-lg border bg-popover px-1 py-1 shadow-md">
|
|
154
|
-
<SelectionToolbarPrimitive.Quote className="flex items-center gap-1.5 rounded-md px-2.5 py-1 text-sm text-popover-foreground hover:bg-accent">
|
|
155
|
-
<QuoteIcon className="size-3.5" />
|
|
156
|
-
Quote
|
|
157
|
-
</SelectionToolbarPrimitive.Quote>
|
|
158
|
-
</SelectionToolbarPrimitive.Root>
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
### Toolbar with Multiple Actions
|
|
162
|
-
|
|
163
|
-
You can add custom buttons alongside `Quote` for additional actions:
|
|
164
|
-
|
|
165
|
-
```tsx
|
|
166
|
-
<SelectionToolbarPrimitive.Root className="flex items-center gap-1 rounded-lg border bg-popover px-1 py-1 shadow-md">
|
|
167
|
-
<SelectionToolbarPrimitive.Quote className="flex items-center gap-1.5 rounded-md px-2.5 py-1 text-sm hover:bg-accent">
|
|
168
|
-
<QuoteIcon className="size-3.5" />
|
|
169
|
-
Quote
|
|
170
|
-
</SelectionToolbarPrimitive.Quote>
|
|
171
|
-
<button
|
|
172
|
-
className="flex items-center gap-1.5 rounded-md px-2.5 py-1 text-sm hover:bg-accent"
|
|
173
|
-
onClick={() => navigator.clipboard.writeText(window.getSelection()?.toString() ?? "")}
|
|
174
|
-
>
|
|
175
|
-
<CopyIcon className="size-3.5" />
|
|
176
|
-
Copy
|
|
177
|
-
</button>
|
|
178
|
-
</SelectionToolbarPrimitive.Root>
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
## Relationship to Components
|
|
182
|
-
|
|
183
|
-
There is no pre-built shadcn component for SelectionToolbar. See the [Quoting guide](/docs/guides/quoting) for the full workflow including composer quote display and dismiss.
|
|
184
|
-
|
|
185
|
-
## API Reference
|
|
186
|
-
|
|
187
|
-
For full prop details on every part, see the [SelectionToolbarPrimitive API Reference](/docs/api-reference/primitives/selection-toolbar).
|
|
188
|
-
|
|
189
|
-
Related:
|
|
190
|
-
- [Quoting Guide](/docs/guides/quoting)
|
|
191
|
-
- [ComposerPrimitive API Reference](/docs/api-reference/primitives/composer)
|
|
@@ -1,254 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Suggestion
|
|
3
|
-
description: Suggested prompts that users can click to quickly send or populate the composer.
|
|
4
|
-
platforms: ["react"]
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
import { SuggestionPrimitiveSample } from "@/components/pages/docs/samples/suggestion-primitive";
|
|
8
|
-
import { SuggestionPrimitive as SuggestionPrimitiveDocs } from "@/generated/primitiveDocs";
|
|
9
|
-
|
|
10
|
-
The Suggestion primitive renders suggested prompts as clickable pills that send a message or populate the composer. Use it for welcome screen suggestions, follow-up prompts, or quick actions. You provide the layout and styling.
|
|
11
|
-
|
|
12
|
-
<Tabs items={["Preview", "Code"]}>
|
|
13
|
-
<Tab>
|
|
14
|
-
<SuggestionPrimitiveSample />
|
|
15
|
-
</Tab>
|
|
16
|
-
<Tab>
|
|
17
|
-
```tsx
|
|
18
|
-
import {
|
|
19
|
-
ThreadPrimitive,
|
|
20
|
-
SuggestionPrimitive,
|
|
21
|
-
} from "@assistant-ui/react";
|
|
22
|
-
|
|
23
|
-
function SuggestionList() {
|
|
24
|
-
return (
|
|
25
|
-
<div className="grid grid-cols-2 gap-2">
|
|
26
|
-
<ThreadPrimitive.Suggestions>
|
|
27
|
-
{() => <SuggestionItem />}
|
|
28
|
-
</ThreadPrimitive.Suggestions>
|
|
29
|
-
</div>
|
|
30
|
-
);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function SuggestionItem() {
|
|
34
|
-
return (
|
|
35
|
-
<SuggestionPrimitive.Trigger
|
|
36
|
-
send
|
|
37
|
-
className="flex flex-col items-start gap-1 rounded-2xl border px-4 py-3 text-left text-sm hover:bg-muted"
|
|
38
|
-
>
|
|
39
|
-
<span className="font-medium">
|
|
40
|
-
<SuggestionPrimitive.Title />
|
|
41
|
-
</span>
|
|
42
|
-
<span className="text-muted-foreground">
|
|
43
|
-
<SuggestionPrimitive.Description />
|
|
44
|
-
</span>
|
|
45
|
-
</SuggestionPrimitive.Trigger>
|
|
46
|
-
);
|
|
47
|
-
}
|
|
48
|
-
```
|
|
49
|
-
</Tab>
|
|
50
|
-
</Tabs>
|
|
51
|
-
|
|
52
|
-
## Quick Start
|
|
53
|
-
|
|
54
|
-
A suggestion list using the iterator pattern:
|
|
55
|
-
|
|
56
|
-
```tsx
|
|
57
|
-
import { ThreadPrimitive, SuggestionPrimitive } from "@assistant-ui/react";
|
|
58
|
-
|
|
59
|
-
<ThreadPrimitive.Suggestions>
|
|
60
|
-
{() => <MySuggestionItem />}
|
|
61
|
-
</ThreadPrimitive.Suggestions>
|
|
62
|
-
|
|
63
|
-
function MySuggestionItem() {
|
|
64
|
-
return (
|
|
65
|
-
<SuggestionPrimitive.Trigger className="rounded-lg border px-3 py-2 hover:bg-muted">
|
|
66
|
-
<SuggestionPrimitive.Title />
|
|
67
|
-
</SuggestionPrimitive.Trigger>
|
|
68
|
-
);
|
|
69
|
-
}
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
`ThreadPrimitive.Suggestions` iterates over available suggestions and renders your component for each one. Inside the component, `SuggestionPrimitive` parts read from the suggestion context automatically.
|
|
73
|
-
|
|
74
|
-
<Callout type="info">
|
|
75
|
-
Runtime setup: primitives require runtime context. Wrap your UI in `AssistantRuntimeProvider` with a runtime (for example `useLocalRuntime(...)`). See [Pick a Runtime](/docs/runtimes/pick-a-runtime).
|
|
76
|
-
</Callout>
|
|
77
|
-
|
|
78
|
-
## Core Concepts
|
|
79
|
-
|
|
80
|
-
### Context-Based Rendering
|
|
81
|
-
|
|
82
|
-
SuggestionPrimitive parts read from a suggestion context. Use `ThreadPrimitive.Suggestions` to provide this context. It iterates over the thread's suggestions and renders your component for each one:
|
|
83
|
-
|
|
84
|
-
```tsx
|
|
85
|
-
<ThreadPrimitive.Suggestions>
|
|
86
|
-
{() => <MySuggestion />}
|
|
87
|
-
</ThreadPrimitive.Suggestions>
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
You can also use `ThreadPrimitive.SuggestionByIndex` to render a specific suggestion by index if you need more layout control.
|
|
91
|
-
|
|
92
|
-
### Title and Description
|
|
93
|
-
|
|
94
|
-
Suggestions support two text parts for structured display:
|
|
95
|
-
|
|
96
|
-
- **`Title`**: the primary text (e.g., "Write a blog post")
|
|
97
|
-
- **`Description`**: secondary text — renders the `label` field from the suggestion config (e.g., `{ prompt: "...", label: "About React Server Components" }`)
|
|
98
|
-
|
|
99
|
-
Both render a `<span>` and accept `children` to override the value from state:
|
|
100
|
-
|
|
101
|
-
```tsx
|
|
102
|
-
<SuggestionPrimitive.Title>Custom title</SuggestionPrimitive.Title>
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### Send vs Populate
|
|
106
|
-
|
|
107
|
-
`Trigger`'s `send` prop controls what happens on click:
|
|
108
|
-
|
|
109
|
-
- **`send={true}`**: immediately sends the suggestion as a new message. While a run is in progress, the suggestion is queued on runtimes that support queueing (leaving the composer draft untouched); otherwise the trigger is disabled.
|
|
110
|
-
- **`send={false}`** (default): populates the composer text so the user can edit before sending
|
|
111
|
-
|
|
112
|
-
```tsx
|
|
113
|
-
// Send immediately
|
|
114
|
-
<SuggestionPrimitive.Trigger send>
|
|
115
|
-
<SuggestionPrimitive.Title />
|
|
116
|
-
</SuggestionPrimitive.Trigger>
|
|
117
|
-
|
|
118
|
-
// Populate composer for editing
|
|
119
|
-
<SuggestionPrimitive.Trigger>
|
|
120
|
-
<SuggestionPrimitive.Title />
|
|
121
|
-
</SuggestionPrimitive.Trigger>
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
### clearComposer
|
|
125
|
-
|
|
126
|
-
When `send={false}`, the `clearComposer` prop controls whether the suggestion replaces or appends to existing composer text:
|
|
127
|
-
|
|
128
|
-
- **`clearComposer={true}`** (default): replaces the current composer text
|
|
129
|
-
- **`clearComposer={false}`**: appends the suggestion to the existing text
|
|
130
|
-
|
|
131
|
-
### Static configuration vs. runtime suggestions
|
|
132
|
-
|
|
133
|
-
There are two data flows for suggestions:
|
|
134
|
-
|
|
135
|
-
- **Static configuration** flows through the `suggestions` scope. Pass an array to `Suggestions(...)` in your runtime provider; render it with `ThreadPrimitive.Suggestions`. Best for welcome screen prompts.
|
|
136
|
-
- **Runtime / dynamic suggestions** flow through `thread.suggestions`. Populate it via `SuggestionAdapter` (local runtime) or the `suggestions` field on `useExternalStoreRuntime`; render it with the shadcn `ThreadFollowupSuggestions` component or your own component reading `useAuiState((s) => s.thread.suggestions)`. Best for follow up prompts after a turn.
|
|
137
|
-
|
|
138
|
-
When no static configuration is provided, the `suggestions` scope derives from `thread.suggestions`, so runtime suggestions also render through `ThreadPrimitive.Suggestions`. A static `Suggestions(...)` configuration takes precedence over the derived values.
|
|
139
|
-
|
|
140
|
-
See [Suggested Prompts](/docs/guides/suggestions) for end to end examples.
|
|
141
|
-
|
|
142
|
-
### ThreadPrimitive.Suggestion (Legacy)
|
|
143
|
-
|
|
144
|
-
`ThreadPrimitive.Suggestion` is a self-contained button that takes a `prompt` prop directly. The newer pattern (`ThreadPrimitive.Suggestions` + `SuggestionPrimitive` parts) is preferred for structured suggestions with title and description:
|
|
145
|
-
|
|
146
|
-
```tsx
|
|
147
|
-
// Legacy: still works, but limited
|
|
148
|
-
<ThreadPrimitive.Suggestion prompt="Write a blog post" />
|
|
149
|
-
|
|
150
|
-
// Preferred: structured with title/description
|
|
151
|
-
<ThreadPrimitive.Suggestions>
|
|
152
|
-
{() => <MySuggestionItem />}
|
|
153
|
-
</ThreadPrimitive.Suggestions>
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
`ThreadPrimitive.Suggestion` also supports deprecated `autoSend` and `method` props for backwards compatibility. Prefer `send` and `clearComposer`.
|
|
157
|
-
|
|
158
|
-
## Parts
|
|
159
|
-
|
|
160
|
-
### Title
|
|
161
|
-
|
|
162
|
-
Renders the suggestion title. Renders a `<span>` element unless `asChild` is set.
|
|
163
|
-
|
|
164
|
-
```tsx
|
|
165
|
-
<SuggestionPrimitive.Title />
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
### Description
|
|
169
|
-
|
|
170
|
-
Renders the secondary suggestion description text. Renders a `<span>` element unless `asChild` is set.
|
|
171
|
-
|
|
172
|
-
```tsx
|
|
173
|
-
<SuggestionPrimitive.Description />
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
### Trigger
|
|
177
|
-
|
|
178
|
-
Clickable button that sends or populates the suggestion. Renders a `<button>` element unless `asChild` is set.
|
|
179
|
-
|
|
180
|
-
```tsx
|
|
181
|
-
<SuggestionPrimitive.Trigger send className="rounded-lg border px-3 py-2 hover:bg-muted">
|
|
182
|
-
<SuggestionPrimitive.Title />
|
|
183
|
-
</SuggestionPrimitive.Trigger>
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
<PrimitivesTypeTable type="SuggestionPrimitiveTriggerProps" parameters={SuggestionPrimitiveDocs.Trigger.props.filter(p => p.name !== "asChild")} />
|
|
187
|
-
|
|
188
|
-
## Patterns
|
|
189
|
-
|
|
190
|
-
### Welcome Screen Grid
|
|
191
|
-
|
|
192
|
-
```tsx
|
|
193
|
-
function WelcomeSuggestions() {
|
|
194
|
-
return (
|
|
195
|
-
<AuiIf condition={(s) => s.thread.isEmpty}>
|
|
196
|
-
<div className="text-center">
|
|
197
|
-
<h2 className="text-lg font-semibold">How can I help you?</h2>
|
|
198
|
-
<div className="mt-4 grid grid-cols-2 gap-2">
|
|
199
|
-
<ThreadPrimitive.Suggestions>
|
|
200
|
-
{() => <SuggestionCard />}
|
|
201
|
-
</ThreadPrimitive.Suggestions>
|
|
202
|
-
</div>
|
|
203
|
-
</div>
|
|
204
|
-
</AuiIf>
|
|
205
|
-
);
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
function SuggestionCard() {
|
|
209
|
-
return (
|
|
210
|
-
<SuggestionPrimitive.Trigger
|
|
211
|
-
send
|
|
212
|
-
className="flex flex-col gap-1 rounded-2xl border px-4 py-3 text-left hover:bg-muted"
|
|
213
|
-
>
|
|
214
|
-
<span className="font-medium">
|
|
215
|
-
<SuggestionPrimitive.Title />
|
|
216
|
-
</span>
|
|
217
|
-
<span className="text-sm text-muted-foreground">
|
|
218
|
-
<SuggestionPrimitive.Description />
|
|
219
|
-
</span>
|
|
220
|
-
</SuggestionPrimitive.Trigger>
|
|
221
|
-
);
|
|
222
|
-
}
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
### Send-On-Click Suggestions
|
|
226
|
-
|
|
227
|
-
```tsx
|
|
228
|
-
<SuggestionPrimitive.Trigger send className="rounded-full border px-4 py-2 hover:bg-muted">
|
|
229
|
-
<SuggestionPrimitive.Title />
|
|
230
|
-
</SuggestionPrimitive.Trigger>
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
### Populate-Only Suggestions
|
|
234
|
-
|
|
235
|
-
```tsx
|
|
236
|
-
<SuggestionPrimitive.Trigger
|
|
237
|
-
send={false}
|
|
238
|
-
clearComposer={false}
|
|
239
|
-
className="rounded-lg border px-3 py-1.5 text-sm hover:bg-muted"
|
|
240
|
-
>
|
|
241
|
-
<SuggestionPrimitive.Title />
|
|
242
|
-
</SuggestionPrimitive.Trigger>
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
## Relationship to Components
|
|
246
|
-
|
|
247
|
-
The shadcn [Thread](/docs/ui/thread) component includes suggestions in its welcome screen using `ThreadPrimitive.Suggestions` with `SuggestionPrimitive` parts in a responsive grid. Start there for a prebuilt welcome experience.
|
|
248
|
-
|
|
249
|
-
## API Reference
|
|
250
|
-
|
|
251
|
-
For full prop details on every part, see the [SuggestionPrimitive API Reference](/docs/api-reference/primitives/suggestion).
|
|
252
|
-
|
|
253
|
-
Related:
|
|
254
|
-
- [ThreadPrimitive API Reference](/docs/api-reference/primitives/thread)
|