@assistant-ui/mcp-docs-server 0.1.31 → 0.1.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.docs/organized/code-examples/waterfall.md +23 -25
- package/.docs/organized/code-examples/with-a2a.md +28 -28
- package/.docs/organized/code-examples/with-ag-ui.md +35 -30
- package/.docs/organized/code-examples/with-ai-sdk-v6.md +16 -14
- package/.docs/organized/code-examples/with-artifacts.md +44 -38
- package/.docs/organized/code-examples/with-assistant-transport.md +68 -56
- package/.docs/organized/code-examples/with-browser-extension.md +357 -0
- package/.docs/organized/code-examples/with-chain-of-thought.md +425 -90
- package/.docs/organized/code-examples/with-cloud-standalone.md +30 -29
- package/.docs/organized/code-examples/with-cloud.md +16 -14
- package/.docs/organized/code-examples/with-custom-thread-list.md +19 -17
- package/.docs/organized/code-examples/with-elevenlabs-conversational.md +29 -26
- package/.docs/organized/code-examples/with-elevenlabs-scribe.md +20 -18
- package/.docs/organized/code-examples/with-expo.md +37 -31
- package/.docs/organized/code-examples/with-external-store.md +13 -11
- package/.docs/organized/code-examples/with-ffmpeg.md +327 -290
- package/.docs/organized/code-examples/with-generative-ui.md +1195 -194
- package/.docs/organized/code-examples/with-google-adk.md +13 -11
- package/.docs/organized/code-examples/with-heat-graph.md +16 -14
- package/.docs/organized/code-examples/with-image-generation.md +456 -0
- package/.docs/organized/code-examples/with-interactables.md +322 -244
- package/.docs/organized/code-examples/with-langchain.md +18 -16
- package/.docs/organized/code-examples/with-langgraph.md +95 -88
- package/.docs/organized/code-examples/with-livekit.md +30 -27
- package/.docs/organized/code-examples/with-mcp.md +754 -0
- package/.docs/organized/code-examples/with-opencode.md +70 -70
- package/.docs/organized/code-examples/with-react-hook-form.md +24 -22
- package/.docs/organized/code-examples/with-react-ink.md +4 -4
- package/.docs/organized/code-examples/with-react-router.md +20 -18
- package/.docs/organized/code-examples/with-resumable-stream.md +661 -0
- package/.docs/organized/code-examples/with-store.md +22 -20
- package/.docs/organized/code-examples/with-tanstack.md +18 -19
- package/.docs/organized/code-examples/with-tap-runtime.md +31 -28
- package/.docs/raw/docs/(docs)/architecture.mdx +43 -2
- package/.docs/raw/docs/(docs)/cli.mdx +2 -2
- package/.docs/raw/docs/(docs)/copilots/model-context.mdx +34 -26
- package/.docs/raw/docs/(docs)/copilots/motivation.mdx +32 -26
- package/.docs/raw/docs/(docs)/index.mdx +2 -2
- package/.docs/raw/docs/(docs)/installation.mdx +2 -2
- package/.docs/raw/docs/(reference)/api-reference/adapters/attachments.mdx +26 -24
- package/.docs/raw/docs/(reference)/api-reference/adapters/feedback.mdx +20 -0
- package/.docs/raw/docs/(reference)/api-reference/adapters/index.mdx +20 -12
- package/.docs/raw/docs/(reference)/api-reference/adapters/model.mdx +44 -0
- package/.docs/raw/docs/(reference)/api-reference/adapters/persistence.mdx +41 -16
- package/.docs/raw/docs/(reference)/api-reference/adapters/runtime.mdx +12 -23
- package/.docs/raw/docs/(reference)/api-reference/adapters/suggestions.mdx +20 -0
- package/.docs/raw/docs/(reference)/api-reference/context-providers/assistant-runtime-provider.mdx +37 -8
- package/.docs/raw/docs/(reference)/api-reference/context-providers/index.mdx +11 -9
- package/.docs/raw/docs/(reference)/api-reference/context-providers/scoped-providers.mdx +64 -0
- package/.docs/raw/docs/(reference)/api-reference/external-store/index.mdx +22 -0
- package/.docs/raw/docs/(reference)/api-reference/external-store/message-conversion.mdx +52 -0
- package/.docs/raw/docs/(reference)/api-reference/external-store/runtime.mdx +46 -0
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/index.mdx +18 -0
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/rendering.mdx +33 -0
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/spec.mdx +45 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/composer-triggers.mdx +98 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/index.mdx +18 -13
- package/.docs/raw/docs/(reference)/api-reference/hooks/model-context.mdx +31 -52
- package/.docs/raw/docs/(reference)/api-reference/hooks/primitives.mdx +640 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/runtimes.mdx +15 -28
- package/.docs/raw/docs/(reference)/api-reference/hooks/state.mdx +64 -18
- package/.docs/raw/docs/(reference)/api-reference/hooks/utilities.mdx +434 -0
- package/.docs/raw/docs/(reference)/api-reference/integrations/cloud-ai-sdk.mdx +24 -0
- package/.docs/raw/docs/(reference)/api-reference/integrations/index.mdx +11 -12
- package/.docs/raw/docs/(reference)/api-reference/integrations/react-ai-sdk.mdx +109 -0
- package/.docs/raw/docs/(reference)/api-reference/model-context/context.mdx +58 -0
- package/.docs/raw/docs/(reference)/api-reference/model-context/index.mdx +22 -0
- package/.docs/raw/docs/(reference)/api-reference/model-context/registry.mdx +20 -0
- package/.docs/raw/docs/(reference)/api-reference/overview.mdx +109 -132
- package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar-more.mdx +78 -221
- package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar.mdx +127 -242
- package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-if.mdx +39 -20
- package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-modal.mdx +66 -87
- package/.docs/raw/docs/(reference)/api-reference/primitives/attachment.mdx +50 -58
- package/.docs/raw/docs/(reference)/api-reference/primitives/branch-picker.mdx +80 -48
- package/.docs/raw/docs/(reference)/api-reference/primitives/chain-of-thought.mdx +67 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/composer.mdx +323 -461
- package/.docs/raw/docs/(reference)/api-reference/primitives/error.mdx +36 -43
- package/.docs/raw/docs/(reference)/api-reference/primitives/index.mdx +29 -24
- package/.docs/raw/docs/(reference)/api-reference/primitives/message-part.mdx +63 -245
- package/.docs/raw/docs/(reference)/api-reference/primitives/message.mdx +202 -588
- package/.docs/raw/docs/(reference)/api-reference/primitives/queue-item.mdx +65 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/selection-toolbar.mdx +35 -22
- package/.docs/raw/docs/(reference)/api-reference/primitives/suggestion.mdx +57 -140
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item-more.mdx +70 -161
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item.mdx +84 -108
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list.mdx +77 -96
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread.mdx +173 -349
- package/.docs/raw/docs/(reference)/api-reference/runtimes/assistant-runtime.mdx +9 -21
- package/.docs/raw/docs/(reference)/api-reference/runtimes/attachment-runtime.mdx +10 -21
- package/.docs/raw/docs/(reference)/api-reference/runtimes/composer-runtime.mdx +15 -70
- package/.docs/raw/docs/(reference)/api-reference/runtimes/index.mdx +18 -13
- package/.docs/raw/docs/(reference)/api-reference/runtimes/message-part-runtime.mdx +25 -28
- package/.docs/raw/docs/(reference)/api-reference/runtimes/message-runtime.mdx +11 -63
- package/.docs/raw/docs/(reference)/api-reference/runtimes/queue-state.mdx +20 -0
- package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-item-runtime.mdx +11 -48
- package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-runtime.mdx +10 -47
- package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-runtime.mdx +18 -30
- package/.docs/raw/docs/(reference)/api-reference/tools/component-tools.mdx +85 -0
- package/.docs/raw/docs/(reference)/api-reference/tools/index.mdx +39 -0
- package/.docs/raw/docs/(reference)/api-reference/tools/rendering.mdx +127 -0
- package/.docs/raw/docs/(reference)/api-reference/tools/status.mdx +42 -0
- package/.docs/raw/docs/(reference)/api-reference/tools/toolkits.mdx +91 -0
- package/.docs/raw/docs/(reference)/api-reference/transport/assistant-transport.mdx +48 -0
- package/.docs/raw/docs/(reference)/api-reference/transport/frame.mdx +62 -0
- package/.docs/raw/docs/(reference)/api-reference/transport/index.mdx +22 -0
- package/.docs/raw/docs/(reference)/api-reference/utilities/index.mdx +19 -0
- package/.docs/raw/docs/(reference)/api-reference/utilities/miscellaneous.mdx +143 -0
- package/.docs/raw/docs/(reference)/api-reference/voice/index.mdx +22 -0
- package/.docs/raw/docs/(reference)/api-reference/voice/session.mdx +54 -0
- package/.docs/raw/docs/(reference)/api-reference/voice/speech-dictation.mdx +36 -0
- package/.docs/raw/docs/cloud/ai-sdk.mdx +1 -3
- package/.docs/raw/docs/cloud/index.mdx +2 -2
- package/.docs/raw/docs/guides/attachments.mdx +4 -4
- package/.docs/raw/docs/guides/branching.mdx +1 -1
- package/.docs/raw/docs/guides/chain-of-thought.mdx +12 -14
- package/.docs/raw/docs/guides/context-api.mdx +6 -5
- package/.docs/raw/docs/guides/dictation.mdx +2 -2
- package/.docs/raw/docs/guides/editing.mdx +1 -1
- package/.docs/raw/docs/guides/image-generation.mdx +74 -0
- package/.docs/raw/docs/guides/index.mdx +5 -14
- package/.docs/raw/docs/guides/latex.mdx +2 -2
- package/.docs/raw/docs/guides/mentions.mdx +6 -6
- package/.docs/raw/docs/guides/message-timing.mdx +38 -5
- package/.docs/raw/docs/guides/quoting.mdx +1 -1
- package/.docs/raw/docs/guides/resumable-stream-deployment.mdx +212 -0
- package/.docs/raw/docs/guides/resumable-stream-stores.mdx +152 -0
- package/.docs/raw/docs/guides/resumable-streams.mdx +210 -0
- package/.docs/raw/docs/guides/slash-commands.mdx +2 -2
- package/.docs/raw/docs/guides/speech.mdx +2 -2
- package/.docs/raw/docs/guides/suggestions.mdx +89 -5
- package/.docs/raw/docs/guides/voice.mdx +2 -2
- package/.docs/raw/docs/ink/adapters.mdx +37 -1
- package/.docs/raw/docs/ink/custom-backend.mdx +59 -8
- package/.docs/raw/docs/ink/hooks.mdx +98 -85
- package/.docs/raw/docs/ink/index.mdx +10 -11
- package/.docs/raw/docs/ink/migration.mdx +1 -1
- package/.docs/raw/docs/ink/primitives.mdx +350 -9
- package/.docs/raw/docs/integrations/auth/better-auth.mdx +1 -1
- package/.docs/raw/docs/integrations/auth/clerk.mdx +1 -1
- package/.docs/raw/docs/integrations/auth/next-auth.mdx +1 -1
- package/.docs/raw/docs/integrations/frameworks/ai-sdk.mdx +3 -3
- package/.docs/raw/docs/integrations/frameworks/cloudflare-agents/overview.mdx +282 -0
- package/.docs/raw/docs/integrations/frameworks/mastra/overview.mdx +2 -2
- package/.docs/raw/docs/integrations/frameworks/mastra/separate-server.mdx +1 -1
- package/.docs/raw/docs/integrations/gateways/index.mdx +9 -4
- package/.docs/raw/docs/integrations/index.mdx +17 -5
- package/.docs/raw/docs/integrations/observability/langfuse.mdx +8 -1
- package/.docs/raw/docs/integrations/observability/langsmith.mdx +8 -4
- package/.docs/raw/docs/integrations/persistence/custom-adapter.mdx +17 -2
- package/.docs/raw/docs/migrations/toolkit-tools.mdx +226 -0
- package/.docs/raw/docs/primitives/chain-of-thought.mdx +10 -16
- package/.docs/raw/docs/primitives/composer.mdx +53 -0
- package/.docs/raw/docs/primitives/index.mdx +2 -2
- package/.docs/raw/docs/primitives/message.mdx +9 -10
- package/.docs/raw/docs/primitives/suggestion.mdx +9 -0
- package/.docs/raw/docs/react-native/hooks.mdx +57 -82
- package/.docs/raw/docs/react-native/index.mdx +4 -4
- package/.docs/raw/docs/react-native/migration.mdx +1 -1
- package/.docs/raw/docs/react-native/primitives.mdx +2 -2
- package/.docs/raw/docs/runtimes/a2a/client-and-hooks.mdx +7 -4
- package/.docs/raw/docs/runtimes/a2a/overview.mdx +2 -2
- package/.docs/raw/docs/runtimes/ag-ui/overview.mdx +2 -2
- package/.docs/raw/docs/runtimes/ag-ui/runtime-options.mdx +32 -1
- package/.docs/raw/docs/runtimes/ai-sdk/overview.mdx +2 -2
- package/.docs/raw/docs/runtimes/ai-sdk/v4-legacy.mdx +7 -2
- package/.docs/raw/docs/runtimes/ai-sdk/v5-legacy.mdx +1 -1
- package/.docs/raw/docs/runtimes/ai-sdk/v6.mdx +129 -1
- package/.docs/raw/docs/runtimes/concepts/threads.mdx +7 -1
- package/.docs/raw/docs/runtimes/custom/data-stream.mdx +27 -2
- package/.docs/raw/docs/runtimes/custom/external-store.mdx +9 -1
- package/.docs/raw/docs/runtimes/custom/local-runtime.mdx +18 -7
- package/.docs/raw/docs/runtimes/custom/overview.mdx +2 -2
- package/.docs/raw/docs/runtimes/google-adk/hooks.mdx +108 -38
- package/.docs/raw/docs/runtimes/google-adk/overview.mdx +2 -2
- package/.docs/raw/docs/runtimes/langchain.mdx +2 -2
- package/.docs/raw/docs/runtimes/langgraph/generative-ui.mdx +2 -2
- package/.docs/raw/docs/runtimes/langgraph/overview.mdx +2 -2
- package/.docs/raw/docs/runtimes/langgraph/streaming.mdx +1 -1
- package/.docs/raw/docs/runtimes/langgraph/tutorial/part-2.mdx +64 -50
- package/.docs/raw/docs/runtimes/langgraph/tutorial/part-3.mdx +98 -86
- package/.docs/raw/docs/runtimes/opencode/overview.mdx +2 -2
- package/.docs/raw/docs/runtimes/opencode/quickstart.mdx +1 -1
- package/.docs/raw/docs/runtimes/pick-a-runtime.mdx +12 -5
- package/.docs/raw/docs/tools/backend.mdx +136 -0
- package/.docs/raw/docs/tools/defining-tools.mdx +413 -0
- package/.docs/raw/docs/tools/dynamic-tools.mdx +110 -0
- package/.docs/raw/docs/tools/generative-ui.mdx +214 -0
- package/.docs/raw/docs/tools/index.mdx +76 -0
- package/.docs/raw/docs/{guides → tools}/interactables.mdx +3 -3
- package/.docs/raw/docs/tools/mcp-apps.mdx +231 -0
- package/.docs/raw/docs/{integrations/tools → tools}/mcp.mdx +77 -50
- package/.docs/raw/docs/{guides → tools}/multi-agent.mdx +19 -21
- package/.docs/raw/docs/tools/tool-ui.mdx +967 -0
- package/.docs/raw/docs/tools/user-managed-mcp.mdx +337 -0
- package/.docs/raw/docs/ui/composer-trigger-popover.mdx +11 -1
- package/.docs/raw/docs/ui/directive-text.mdx +3 -3
- package/.docs/raw/docs/ui/mcp-config.mdx +102 -0
- package/.docs/raw/docs/ui/model-selector.mdx +8 -8
- package/.docs/raw/docs/ui/part-grouping.mdx +84 -50
- package/.docs/raw/docs/ui/reasoning.mdx +4 -5
- package/.docs/raw/docs/ui/sources.mdx +17 -0
- package/.docs/raw/docs/ui/streamdown.mdx +34 -2
- package/.docs/raw/docs/ui/thread-list.mdx +2 -2
- package/.docs/raw/docs/ui/thread.mdx +2 -2
- package/.docs/raw/docs/ui/tool-group.mdx +5 -6
- package/.docs/raw/docs/utilities/heat-graph.mdx +1 -1
- package/README.md +14 -72
- package/dist/constants.d.ts +12 -9
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +13 -9
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -24
- package/dist/index.js.map +1 -1
- package/dist/prepare-docs/code-examples.d.ts +4 -1
- package/dist/prepare-docs/code-examples.d.ts.map +1 -1
- package/dist/prepare-docs/code-examples.js +109 -121
- package/dist/prepare-docs/code-examples.js.map +1 -1
- package/dist/prepare-docs/copy-raw.d.ts +4 -1
- package/dist/prepare-docs/copy-raw.d.ts.map +1 -1
- package/dist/prepare-docs/copy-raw.js +45 -42
- package/dist/prepare-docs/copy-raw.js.map +1 -1
- package/dist/prepare-docs/prepare.d.ts +1 -2
- package/dist/prepare-docs/prepare.js +17 -17
- package/dist/prepare-docs/prepare.js.map +1 -1
- package/dist/stdio.d.ts +1 -3
- package/dist/stdio.js +6 -3
- package/dist/stdio.js.map +1 -1
- package/dist/tools/docs.d.ts +20 -15
- package/dist/tools/docs.d.ts.map +1 -1
- package/dist/tools/docs.js +140 -161
- package/dist/tools/docs.js.map +1 -1
- package/dist/tools/examples.d.ts +20 -15
- package/dist/tools/examples.d.ts.map +1 -1
- package/dist/tools/examples.js +74 -86
- package/dist/tools/examples.js.map +1 -1
- package/dist/tools/tests/test-setup.d.ts +5 -2
- package/dist/tools/tests/test-setup.d.ts.map +1 -1
- package/dist/tools/tests/test-setup.js +21 -28
- package/dist/tools/tests/test-setup.js.map +1 -1
- package/dist/utils/logger.d.ts +8 -5
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +17 -17
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/mcp-format.d.ts +8 -5
- package/dist/utils/mcp-format.d.ts.map +1 -1
- package/dist/utils/mcp-format.js +9 -9
- package/dist/utils/mcp-format.js.map +1 -1
- package/dist/utils/mdx.d.ts +8 -6
- package/dist/utils/mdx.d.ts.map +1 -1
- package/dist/utils/mdx.js +22 -22
- package/dist/utils/mdx.js.map +1 -1
- package/dist/utils/paths.d.ts +9 -6
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +66 -76
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/security.d.ts +4 -1
- package/dist/utils/security.d.ts.map +1 -1
- package/dist/utils/security.js +19 -40
- package/dist/utils/security.js.map +1 -1
- package/package.json +5 -5
- package/.docs/organized/code-examples/with-parent-id-grouping.md +0 -596
- package/.docs/raw/docs/(docs)/copilots/make-assistant-tool-ui.mdx +0 -151
- package/.docs/raw/docs/(docs)/copilots/make-assistant-tool.mdx +0 -230
- package/.docs/raw/docs/(reference)/api-reference/adapters/feedback-speech.mdx +0 -41
- package/.docs/raw/docs/(reference)/api-reference/context-providers/text-message-part-provider.mdx +0 -40
- package/.docs/raw/docs/(reference)/api-reference/integrations/react-data-stream.mdx +0 -260
- package/.docs/raw/docs/(reference)/api-reference/integrations/react-hook-form.mdx +0 -103
- package/.docs/raw/docs/(reference)/api-reference/integrations/vercel-ai-sdk.mdx +0 -254
- package/.docs/raw/docs/guides/tool-ui.mdx +0 -858
- package/.docs/raw/docs/guides/tools.mdx +0 -675
- package/dist/prepare-docs/prepare.d.ts.map +0 -1
- package/dist/stdio.d.ts.map +0 -1
- /package/.docs/raw/docs/{(reference)/migrations → migrations}/deprecation-policy.mdx +0 -0
- /package/.docs/raw/docs/{(reference) → migrations}/react-compatibility.mdx +0 -0
- /package/.docs/raw/docs/{(reference)/migrations → migrations}/react-langgraph-v0-7.mdx +0 -0
- /package/.docs/raw/docs/{(reference)/migrations → migrations}/v0-11.mdx +0 -0
- /package/.docs/raw/docs/{(reference)/migrations → migrations}/v0-12.mdx +0 -0
- /package/.docs/raw/docs/{(reference)/migrations → migrations}/v0-14.mdx +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Speech and Dictation
|
|
3
|
+
description: Connect speech synthesis and dictation adapters to assistant-ui voice and composer workflows.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import { DictationAdapter, DictationState, SpeechSynthesisAdapter, WebSpeechDictationAdapter, WebSpeechSynthesisAdapter } from "@/generated/typeDocs";
|
|
7
|
+
|
|
8
|
+
{/* AUTO-GENERATED PAGE by scripts/generate-api-reference.mts */}
|
|
9
|
+
{/* Do not edit manually. */}
|
|
10
|
+
|
|
11
|
+
{/* api-reference:start */}
|
|
12
|
+
{/* AUTO-GENERATED by scripts/generate-api-reference.mts */}
|
|
13
|
+
{/* Do not edit this block manually. */}
|
|
14
|
+
|
|
15
|
+
## API Reference
|
|
16
|
+
|
|
17
|
+
### DictationAdapter
|
|
18
|
+
|
|
19
|
+
<ParametersTable {...DictationAdapter} />
|
|
20
|
+
|
|
21
|
+
### DictationState
|
|
22
|
+
|
|
23
|
+
<ParametersTable {...DictationState} />
|
|
24
|
+
|
|
25
|
+
### SpeechSynthesisAdapter
|
|
26
|
+
|
|
27
|
+
<ParametersTable {...SpeechSynthesisAdapter} />
|
|
28
|
+
|
|
29
|
+
### WebSpeechDictationAdapter
|
|
30
|
+
|
|
31
|
+
<ParametersTable {...WebSpeechDictationAdapter} />
|
|
32
|
+
|
|
33
|
+
### WebSpeechSynthesisAdapter
|
|
34
|
+
|
|
35
|
+
<ParametersTable {...WebSpeechSynthesisAdapter} />
|
|
36
|
+
{/* api-reference:end */}
|
|
@@ -3,8 +3,6 @@ title: AI SDK
|
|
|
3
3
|
description: Add cloud persistence to your existing AI SDK app with a single hook.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
import { InstallCommand } from "@/components/docs/fumadocs/install/install-command";
|
|
7
|
-
|
|
8
6
|
## Overview
|
|
9
7
|
|
|
10
8
|
The `@assistant-ui/cloud-ai-sdk` package provides a single hook that adds full message and thread persistence to any [AI SDK](https://sdk.vercel.ai/) application:
|
|
@@ -380,7 +378,7 @@ The `useCloudChat` hook automatically reports run telemetry to Assistant Cloud a
|
|
|
380
378
|
**Requires route configuration:**
|
|
381
379
|
- `model_id` — The model used for the response
|
|
382
380
|
- `input_tokens` / `output_tokens` — Token usage statistics
|
|
383
|
-
- `reasoning_tokens` — Tokens used for chain-of-thought reasoning (e.g.
|
|
381
|
+
- `reasoning_tokens` — Tokens used for chain-of-thought reasoning (e.g. GPT-5.4 Mini or GPT-5.5 models)
|
|
384
382
|
- `cached_input_tokens` — Input tokens served from the provider's prompt cache
|
|
385
383
|
|
|
386
384
|
To capture model and usage data, configure the `messageMetadata` callback in your AI SDK route:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
3
|
-
description: Add thread persistence and chat history to your AI app in minutes.
|
|
2
|
+
title: Cloud Persistence
|
|
3
|
+
description: Add managed thread persistence and chat history to your AI app in minutes — assistant-ui Cloud handles thread sync, search, and multi-tenant storage.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
Assistant Cloud is a hosted service that adds thread management, message persistence, and user authorization to AI chat applications. It works with any React UI—whether you use assistant-ui components or your own.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Attachments
|
|
3
|
-
description: Let users attach
|
|
2
|
+
title: File Attachments
|
|
3
|
+
description: Let users attach images, PDFs, and other files to AI chat messages in React. Drag-drop, paste, and vision-model support, built into assistant-ui.
|
|
4
4
|
platforms: ["react"]
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -118,7 +118,7 @@ Build your own adapters for specialized file handling. Below are complete exampl
|
|
|
118
118
|
|
|
119
119
|
### Vision-Capable Image Adapter
|
|
120
120
|
|
|
121
|
-
Send images to vision-capable LLMs like GPT-
|
|
121
|
+
Send images to vision-capable LLMs like GPT-5.4, Claude Sonnet 4.6, or Gemini Pro Vision:
|
|
122
122
|
|
|
123
123
|
```tsx
|
|
124
124
|
import {
|
|
@@ -276,7 +276,7 @@ const MyModelAdapter: ChatModelAdapter = {
|
|
|
276
276
|
msg.role === "user" &&
|
|
277
277
|
msg.content.some((part) => part.type === "image")
|
|
278
278
|
) {
|
|
279
|
-
// Format for GPT-
|
|
279
|
+
// Format for GPT-5.4 or similar vision models
|
|
280
280
|
return {
|
|
281
281
|
role: "user",
|
|
282
282
|
content: msg.content.map((part) => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Message Branching
|
|
3
|
-
description:
|
|
3
|
+
description: Edit messages or regenerate AI responses, then switch between alternative replies. Branching navigation built into assistant-ui's React chat UI.
|
|
4
4
|
platforms: ["react"]
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Chain of Thought
|
|
3
|
-
description:
|
|
2
|
+
title: Chain of Thought UI
|
|
3
|
+
description: Show AI reasoning steps and tool calls in a collapsible thinking accordion. Build chain-of-thought visualizations in React chat with assistant-ui.
|
|
4
4
|
platforms: ["react"]
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ LLMs often produce reasoning steps and tool calls in succession. Chain of Though
|
|
|
8
8
|
|
|
9
9
|
## Overview
|
|
10
10
|
|
|
11
|
-
When a model
|
|
11
|
+
When a reasoning model responds, it may emit a sequence of reasoning tokens and tool calls before producing its final text answer. Use `MessagePrimitive.GroupedParts` to group those adjacent reasoning and tool-call parts into a single collapsible "thinking" section.
|
|
12
12
|
|
|
13
13
|
<Callout type="info">
|
|
14
14
|
The older `components.ChainOfThought` prop on `MessagePrimitive.Parts` and `components` prop on `ChainOfThoughtPrimitive.Parts` are legacy APIs. They still work for existing code, but new code should use `MessagePrimitive.GroupedParts`.
|
|
@@ -26,6 +26,7 @@ Return the same top-level group for reasoning and tool calls, with nested groups
|
|
|
26
26
|
```tsx
|
|
27
27
|
import {
|
|
28
28
|
MessagePrimitive,
|
|
29
|
+
groupPartByType,
|
|
29
30
|
} from "@assistant-ui/react";
|
|
30
31
|
import { MarkdownText } from "@/components/assistant-ui/markdown-text";
|
|
31
32
|
import {
|
|
@@ -47,13 +48,10 @@ const AssistantMessage: FC = () => {
|
|
|
47
48
|
return (
|
|
48
49
|
<MessagePrimitive.Root>
|
|
49
50
|
<MessagePrimitive.GroupedParts
|
|
50
|
-
groupBy={(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return ["group-chainOfThought", "group-tool"];
|
|
55
|
-
return null;
|
|
56
|
-
}}
|
|
51
|
+
groupBy={groupPartByType({
|
|
52
|
+
reasoning: ["group-chainOfThought", "group-reasoning"],
|
|
53
|
+
"tool-call": ["group-chainOfThought", "group-tool"],
|
|
54
|
+
})}
|
|
57
55
|
>
|
|
58
56
|
{({ part, children }) => {
|
|
59
57
|
switch (part.type) {
|
|
@@ -101,7 +99,7 @@ const AssistantMessage: FC = () => {
|
|
|
101
99
|
|
|
102
100
|
### Use a Reasoning Model
|
|
103
101
|
|
|
104
|
-
Chain of Thought is most useful with models that produce reasoning tokens
|
|
102
|
+
Chain of Thought is most useful with models that produce reasoning tokens. Here's an example backend route using the AI SDK:
|
|
105
103
|
|
|
106
104
|
```tsx title="app/api/chat/route.ts"
|
|
107
105
|
import { openai } from "@ai-sdk/openai";
|
|
@@ -111,7 +109,7 @@ export async function POST(req: Request) {
|
|
|
111
109
|
const { messages } = await req.json();
|
|
112
110
|
|
|
113
111
|
const result = streamText({
|
|
114
|
-
model: openai("
|
|
112
|
+
model: openai("gpt-5.4-mini"),
|
|
115
113
|
messages: await convertToModelMessages(messages),
|
|
116
114
|
});
|
|
117
115
|
|
|
@@ -162,5 +160,5 @@ See the complete [with-chain-of-thought example](https://github.com/assistant-ui
|
|
|
162
160
|
## Related Guides
|
|
163
161
|
|
|
164
162
|
- [Reasoning](/docs/ui/reasoning) — reasoning UI primitives for grouped parts
|
|
165
|
-
- [Generative UI](/docs/
|
|
166
|
-
- [Tools](/docs/
|
|
163
|
+
- [Generative UI](/docs/tools/tool-ui) — custom UI for tool calls
|
|
164
|
+
- [Tools](/docs/tools/defining-tools) — defining and using tools
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Context API
|
|
3
|
-
description: Read and update assistant state to build custom components.
|
|
2
|
+
title: Assistant Context API
|
|
3
|
+
description: Read and update assistant state to build custom React components in your chat UI — composable context API for thread, message, and runtime data via assistant-ui.
|
|
4
4
|
platforms: ["react"]
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -219,6 +219,7 @@ aui.threads().getState();
|
|
|
219
219
|
// ThreadListItem actions
|
|
220
220
|
aui.threadListItem().switchTo();
|
|
221
221
|
aui.threadListItem().rename(title);
|
|
222
|
+
aui.threadListItem().updateCustom(custom);
|
|
222
223
|
aui.threadListItem().archive();
|
|
223
224
|
aui.threadListItem().unarchive();
|
|
224
225
|
aui.threadListItem().delete();
|
|
@@ -258,8 +259,8 @@ useAuiEvent("composer.send", (event) => {
|
|
|
258
259
|
});
|
|
259
260
|
|
|
260
261
|
// Listen to thread events
|
|
261
|
-
useAuiEvent("thread.
|
|
262
|
-
console.log("
|
|
262
|
+
useAuiEvent("thread.modelContextUpdate", (event) => {
|
|
263
|
+
console.log("Model context updated in thread:", event.threadId);
|
|
263
264
|
});
|
|
264
265
|
|
|
265
266
|
// Listen to all events of a type across all scopes
|
|
@@ -517,7 +518,7 @@ The table below covers the most commonly used actions. For the full catalog, see
|
|
|
517
518
|
| Scope | Actions | Use Cases |
|
|
518
519
|
| -------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------ |
|
|
519
520
|
| ThreadList | `switchToNewThread()`, `switchToThread(id)`, `reload()`, `getLoadThreadsPromise()`, `item(selector)`, `thread("main")`, `getState()` | Thread navigation, creation, and sync |
|
|
520
|
-
| ThreadListItem | `switchTo()`, `rename(title)`, `archive()`, `unarchive()`, `delete()`, `getState()`
|
|
521
|
+
| ThreadListItem | `switchTo()`, `rename(title)`, `updateCustom(custom)`, `archive()`, `unarchive()`, `delete()`, `getState()` | Thread management operations |
|
|
521
522
|
| Thread | `append(message)`, `startRun(config)`, `resumeRun(config)`, `cancelRun()`, `reset()`, `export()`, `import(repository)`, `message(selector)`, `composer()`, `getState()` | Message handling and conversation control |
|
|
522
523
|
| Message | `reload()`, `speak()`, `stopSpeaking()`, `submitFeedback(feedback)`, `switchToBranch(options)`, `getCopyText()`, `part(selector)`, `attachment(selector)`, `composer()`, `setIsCopied(value)`, `setIsHovering(value)`, `getState()` | Message interactions and regeneration |
|
|
523
524
|
| Part | `addToolResult(result)`, `resumeToolCall(result)`, `getState()` | Tool call result handling |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Speech-to-Text
|
|
3
|
-
description:
|
|
2
|
+
title: Speech-to-Text Dictation
|
|
3
|
+
description: Add voice dictation to your AI chat composer with the Web Speech API or a custom adapter. Speech-to-text in React, integrated through assistant-ui.
|
|
4
4
|
platforms: ["react"]
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Message Editing
|
|
3
|
-
description:
|
|
3
|
+
description: Let users edit their messages and regenerate AI responses with custom editor interfaces. Edit-and-resubmit patterns for React chat via assistant-ui.
|
|
4
4
|
platforms: ["react"]
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Image Generation
|
|
3
|
+
description: Generate images in your backend and render them inline in an assistant-ui thread.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Image generation needs no dedicated primitive. Generate the image wherever you already run model calls (a route handler or a tool), store the result as an `ImageMessagePart`, and render it with the `@assistant-ui/ui` `Image` component.
|
|
7
|
+
|
|
8
|
+
<Callout type="info">
|
|
9
|
+
This covers non-streaming generation, rendering, and actions. Streaming partial images and multi-image galleries are out of scope.
|
|
10
|
+
</Callout>
|
|
11
|
+
|
|
12
|
+
## Generate in your backend
|
|
13
|
+
|
|
14
|
+
Call your provider from a server route. With the AI SDK that is `generateImage`; return the image as a data URI (or an object-store URL) plus any provider metadata you want to keep.
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
// app/api/image/route.ts
|
|
18
|
+
import { generateImage } from "ai";
|
|
19
|
+
import { openai } from "@ai-sdk/openai";
|
|
20
|
+
|
|
21
|
+
export async function POST(req: Request) {
|
|
22
|
+
const { prompt } = await req.json();
|
|
23
|
+
const result = await generateImage({
|
|
24
|
+
model: openai.image("gpt-image-1"),
|
|
25
|
+
prompt,
|
|
26
|
+
});
|
|
27
|
+
const revisedPrompt = (
|
|
28
|
+
result.providerMetadata as
|
|
29
|
+
| Record<string, Record<string, unknown>>
|
|
30
|
+
| undefined
|
|
31
|
+
)?.openai?.revisedPrompt;
|
|
32
|
+
return Response.json({
|
|
33
|
+
image: `data:${result.image.mediaType};base64,${result.image.base64}`,
|
|
34
|
+
mimeType: result.image.mediaType,
|
|
35
|
+
...(typeof revisedPrompt === "string" && { revisedPrompt }),
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
The model provider is irrelevant to rendering; swap `openai.image(...)` for any AI SDK image model.
|
|
41
|
+
|
|
42
|
+
## Store it as an `ImageMessagePart`
|
|
43
|
+
|
|
44
|
+
An `ImageMessagePart` only needs `image` (a `data:` URI, an `https://` URL, or a `blob:` URL) plus an optional `filename`. Keep any provenance you want to display, the prompt, a revised prompt, a model id, in your own component state or in message metadata; the part itself stays minimal.
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
const part: ImageMessagePart = {
|
|
48
|
+
type: "image",
|
|
49
|
+
image: result.image, // data:, https://, or blob: URL
|
|
50
|
+
};
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Render with the `Image` component
|
|
54
|
+
|
|
55
|
+
The `Image` component in `@assistant-ui/ui` handles the render states for you:
|
|
56
|
+
|
|
57
|
+
1. **Running** (`status.type === "running"`) renders a spinner.
|
|
58
|
+
2. **Content filter** (`status.type === "incomplete"` with `reason: "content-filter"`) renders an error card with no `<img src>`.
|
|
59
|
+
3. **Complete** renders a zoomable `<img>` with optional `Image.Actions`.
|
|
60
|
+
|
|
61
|
+
`Image.Actions` provides download and copy buttons, plus a regenerate button when you pass an `onRegenerate` callback. Wire it to the same generation flow you used above; debounce, rate limiting, and confirmation are your call.
|
|
62
|
+
|
|
63
|
+
```tsx
|
|
64
|
+
import { Image } from "@assistant-ui/ui";
|
|
65
|
+
|
|
66
|
+
<>
|
|
67
|
+
<Image {...imagePart} />
|
|
68
|
+
<Image.Actions part={imagePart} onRegenerate={() => regenerate(prompt)} />
|
|
69
|
+
</>;
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Example
|
|
73
|
+
|
|
74
|
+
A complete Next.js example (with a mock fallback when `OPENAI_API_KEY` is unset) lives in [`examples/with-image-generation`](https://github.com/assistant-ui/assistant-ui/tree/main/examples/with-image-generation).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
3
|
-
description: Practical
|
|
2
|
+
title: Guides
|
|
3
|
+
description: Practical recipes for building AI chat features in React with assistant-ui — attachments, branching, multi-agent, voice, slash commands, generative UI, and more.
|
|
4
4
|
platforms: ["react"]
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -49,20 +49,11 @@ Customize how messages render, are edited, branched, and suggested.
|
|
|
49
49
|
|
|
50
50
|
## Tools & Generative UI
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
Tool calling and generative UI have their own [Tools](/docs/tools) section — defining toolkits, rendering tool calls, interactables, MCP, and multi-agent UIs.
|
|
53
53
|
|
|
54
54
|
<Cards>
|
|
55
|
-
<Card title="Tools" href="/docs/
|
|
56
|
-
Define
|
|
57
|
-
</Card>
|
|
58
|
-
<Card title="Tool UI" href="/docs/guides/tool-ui">
|
|
59
|
-
Render tool calls and `DataMessagePart` into custom components, with fallback handling.
|
|
60
|
-
</Card>
|
|
61
|
-
<Card title="Interactables" href="/docs/guides/interactables">
|
|
62
|
-
Persisted, schema-validated interactive UI driven by AI state.
|
|
63
|
-
</Card>
|
|
64
|
-
<Card title="Multi-Agent" href="/docs/guides/multi-agent">
|
|
65
|
-
Sub-agent message attribution via `ToolCallMessagePart.messages` and LangGraph subgraph events.
|
|
55
|
+
<Card title="Tools" href="/docs/tools">
|
|
56
|
+
Define toolkits, render tool calls, connect MCP servers, and build generative UI.
|
|
66
57
|
</Card>
|
|
67
58
|
</Cards>
|
|
68
59
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: LaTeX
|
|
3
|
-
description: Render
|
|
2
|
+
title: LaTeX in Chat Messages
|
|
3
|
+
description: Render LaTeX math expressions in AI chat messages with KaTeX — drop-in equation support for React chat UIs built on assistant-ui.
|
|
4
4
|
platforms: ["react"]
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Mentions
|
|
3
|
-
description: Let users @-mention tools or custom items in the composer to guide the LLM.
|
|
2
|
+
title: Mentions in Chat
|
|
3
|
+
description: Let users @-mention tools or custom items in the AI chat composer to guide the LLM. Mention picker built into assistant-ui's React composer.
|
|
4
4
|
platforms: ["react"]
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -144,7 +144,7 @@ Pass the adapter to `TriggerPopover` and declare a `Directive` sub-primitive to
|
|
|
144
144
|
|
|
145
145
|
```tsx
|
|
146
146
|
import { ComposerPrimitive } from "@assistant-ui/react";
|
|
147
|
-
import { unstable_defaultDirectiveFormatter } from "@assistant-ui/
|
|
147
|
+
import { unstable_defaultDirectiveFormatter } from "@assistant-ui/react";
|
|
148
148
|
|
|
149
149
|
<ComposerPrimitive.Unstable_TriggerPopoverRoot>
|
|
150
150
|
<ComposerPrimitive.Root>
|
|
@@ -198,7 +198,7 @@ import { unstable_useMentionAdapter } from "@assistant-ui/react";
|
|
|
198
198
|
|
|
199
199
|
const mention = unstable_useMentionAdapter();
|
|
200
200
|
// → { adapter, directive } — spread into <ComposerTriggerPopover {...mention} />
|
|
201
|
-
// Default: single "Tools" category reading from
|
|
201
|
+
// Default: single "Tools" category reading from toolkit registrations
|
|
202
202
|
```
|
|
203
203
|
|
|
204
204
|
**Custom items only (no tools):**
|
|
@@ -302,7 +302,7 @@ When `id` equals `label`, the `{name=…}` attribute is omitted for brevity:
|
|
|
302
302
|
Implement `Unstable_DirectiveFormatter` to use a different format:
|
|
303
303
|
|
|
304
304
|
```ts
|
|
305
|
-
import type { Unstable_DirectiveFormatter } from "@assistant-ui/
|
|
305
|
+
import type { Unstable_DirectiveFormatter } from "@assistant-ui/react";
|
|
306
306
|
|
|
307
307
|
const slashFormatter: Unstable_DirectiveFormatter = {
|
|
308
308
|
serialize(item) {
|
|
@@ -516,5 +516,5 @@ Mentions and slash commands coexist on the same composer. See [Combining Slash C
|
|
|
516
516
|
- [ComposerTriggerPopover UI Component](/docs/ui/composer-trigger-popover) — pre-built shadcn component
|
|
517
517
|
- [DirectiveText UI Component](/docs/ui/directive-text) — renders mention chips in user messages
|
|
518
518
|
- [Slash Commands Guide](/docs/guides/slash-commands) — `/` command system built on the same architecture
|
|
519
|
-
- [Tools Guide](/docs/
|
|
519
|
+
- [Tools Guide](/docs/tools/defining-tools) — register tools that appear in the mention picker
|
|
520
520
|
- [Composer Primitives](/docs/primitives/composer) — underlying composer primitives
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Message Timing
|
|
3
|
-
description: Display stream
|
|
2
|
+
title: Message Timing & Token Stats
|
|
3
|
+
description: Display stream metadata in AI chat — generation duration, tokens per second, and time to first token, rendered via assistant-ui's React components.
|
|
4
4
|
platforms: ["react"]
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -76,9 +76,9 @@ const AssistantMessage: FC = () => {
|
|
|
76
76
|
| AI SDK (`useChatRuntime`) | Yes | Automatic via client-side tracking |
|
|
77
77
|
| Local (`useLocalRuntime`) | Yes | Pass timing in `ChatModelRunResult.metadata` |
|
|
78
78
|
| ExternalStore | Yes | Pass timing in `ThreadMessageLike.metadata` |
|
|
79
|
-
| LangGraph |
|
|
80
|
-
| AG-UI |
|
|
81
|
-
| OpenCode |
|
|
79
|
+
| LangGraph | Yes | Automatic via client-side tracking |
|
|
80
|
+
| AG-UI | Yes | Automatic via client-side tracking |
|
|
81
|
+
| OpenCode | Yes | Automatic via client-side tracking |
|
|
82
82
|
|
|
83
83
|
### Data Stream
|
|
84
84
|
|
|
@@ -163,6 +163,39 @@ const message: ThreadMessageLike = {
|
|
|
163
163
|
};
|
|
164
164
|
```
|
|
165
165
|
|
|
166
|
+
### LangGraph (`useLangGraphRuntime`)
|
|
167
|
+
|
|
168
|
+
Timing is tracked automatically on the client side by observing streaming state transitions and `LangChainMessage` content changes. No setup required.
|
|
169
|
+
|
|
170
|
+
```tsx
|
|
171
|
+
import { useLangGraphRuntime } from "@assistant-ui/react-langgraph";
|
|
172
|
+
|
|
173
|
+
const runtime = useLangGraphRuntime({ stream: myStream });
|
|
174
|
+
// useMessageTiming() works out of the box
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### AG-UI (`useAgUiThreadRuntime`)
|
|
178
|
+
|
|
179
|
+
Timing is tracked automatically on the client side by the AG-UI run aggregator. Each emitted message includes timing metadata computed from stream chunk observations.
|
|
180
|
+
|
|
181
|
+
```tsx
|
|
182
|
+
import { useAgUiThreadRuntime } from "@assistant-ui/react-ag-ui";
|
|
183
|
+
|
|
184
|
+
const runtime = useAgUiThreadRuntime({ runtimeUrl: "..." });
|
|
185
|
+
// useMessageTiming() works out of the box
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### OpenCode (`useOpenCodeRuntime`)
|
|
189
|
+
|
|
190
|
+
Timing is tracked automatically on the client side by observing `OpenCodeThreadState` transitions and assistant message content deltas. No setup required.
|
|
191
|
+
|
|
192
|
+
```tsx
|
|
193
|
+
import { useOpenCodeRuntime } from "@assistant-ui/react-opencode";
|
|
194
|
+
|
|
195
|
+
const runtime = useOpenCodeRuntime();
|
|
196
|
+
// useMessageTiming() works out of the box
|
|
197
|
+
```
|
|
198
|
+
|
|
166
199
|
## API Reference
|
|
167
200
|
|
|
168
201
|
### `useMessageTiming()`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Quote Selected Text
|
|
3
|
-
description: Let users select and quote
|
|
3
|
+
description: Let users select text from AI messages and quote it back into the composer. Full quoting flow with backend handling and programmatic API in assistant-ui.
|
|
4
4
|
platforms: ["react"]
|
|
5
5
|
---
|
|
6
6
|
|