@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
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "@assistant-ui/react-data-stream"
|
|
3
|
-
description: Hooks for connecting to data stream protocol endpoints and Assistant Cloud.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
Data Stream protocol integration for assistant-ui.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
## API Reference
|
|
10
|
-
|
|
11
|
-
### `useDataStreamRuntime`
|
|
12
|
-
|
|
13
|
-
Create a runtime that connects to a data stream protocol endpoint.
|
|
14
|
-
|
|
15
|
-
```tsx
|
|
16
|
-
import { useDataStreamRuntime } from "@assistant-ui/react-data-stream";
|
|
17
|
-
|
|
18
|
-
const MyRuntimeProvider = ({ children }: { children: React.ReactNode }) => {
|
|
19
|
-
const runtime = useDataStreamRuntime({
|
|
20
|
-
api: "/api/chat",
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
return (
|
|
24
|
-
<AssistantRuntimeProvider runtime={runtime}>
|
|
25
|
-
{children}
|
|
26
|
-
</AssistantRuntimeProvider>
|
|
27
|
-
);
|
|
28
|
-
};
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
<ParametersTable
|
|
32
|
-
parameters={[
|
|
33
|
-
{
|
|
34
|
-
name: "api",
|
|
35
|
-
type: "string",
|
|
36
|
-
description: "The API endpoint URL for the data stream protocol.",
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
name: "protocol",
|
|
40
|
-
type: '"ui-message-stream" | "data-stream"',
|
|
41
|
-
description: 'The streaming protocol to use. Defaults to "ui-message-stream". Use "data-stream" for legacy AI SDK compatibility.',
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
name: "onData",
|
|
45
|
-
type: "(data: { type: string; name: string; data: unknown; transient?: boolean }) => void",
|
|
46
|
-
description: "Optional callback for data-* parts. Only applies when using the ui-message-stream protocol.",
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
name: "onResponse",
|
|
50
|
-
type: "(response: Response) => void | Promise<void>",
|
|
51
|
-
description: "Optional callback called when a response is received.",
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
name: "onFinish",
|
|
55
|
-
type: "(message: ThreadMessage) => void",
|
|
56
|
-
description: "Optional callback called when a message is finished.",
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
name: "onError",
|
|
60
|
-
type: "(error: Error) => void",
|
|
61
|
-
description: "Optional callback called when an error occurs.",
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
name: "onCancel",
|
|
65
|
-
type: "() => void",
|
|
66
|
-
description: "Optional callback called when a request is cancelled.",
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
name: "credentials",
|
|
70
|
-
type: "RequestCredentials",
|
|
71
|
-
description: "Optional credentials mode for the fetch request.",
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
name: "headers",
|
|
75
|
-
type: "Record<string, string> | Headers | (() => Promise<Record<string, string> | Headers>)",
|
|
76
|
-
description: "Optional headers to include in the request.",
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
name: "body",
|
|
80
|
-
type: "object | (() => Promise<object | undefined>)",
|
|
81
|
-
description: "Optional additional body parameters to include in the request. Can be an object or an async function that returns one.",
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
name: "sendExtraMessageFields",
|
|
85
|
-
type: "boolean",
|
|
86
|
-
description: "Whether to include extra message fields like IDs in the request.",
|
|
87
|
-
},
|
|
88
|
-
]}
|
|
89
|
-
/>
|
|
90
|
-
|
|
91
|
-
### `useCloudRuntime`
|
|
92
|
-
|
|
93
|
-
Create a runtime that connects to Assistant Cloud using the data stream protocol.
|
|
94
|
-
|
|
95
|
-
```tsx
|
|
96
|
-
import { useCloudRuntime } from "@assistant-ui/react-data-stream";
|
|
97
|
-
|
|
98
|
-
const MyRuntimeProvider = ({ children }: { children: React.ReactNode }) => {
|
|
99
|
-
const runtime = useCloudRuntime({
|
|
100
|
-
cloud: assistantCloud,
|
|
101
|
-
assistantId: "my-assistant-id",
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
return (
|
|
105
|
-
<AssistantRuntimeProvider runtime={runtime}>
|
|
106
|
-
{children}
|
|
107
|
-
</AssistantRuntimeProvider>
|
|
108
|
-
);
|
|
109
|
-
};
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
<ParametersTable
|
|
113
|
-
parameters={[
|
|
114
|
-
{
|
|
115
|
-
name: "cloud",
|
|
116
|
-
type: "AssistantCloud",
|
|
117
|
-
description: "The Assistant Cloud instance.",
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
name: "assistantId",
|
|
121
|
-
type: "string",
|
|
122
|
-
description: "The ID of the assistant to connect to.",
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
name: "protocol",
|
|
126
|
-
type: '"ui-message-stream" | "data-stream"',
|
|
127
|
-
description: 'The streaming protocol to use. Defaults to "ui-message-stream". Use "data-stream" for legacy AI SDK compatibility.',
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
name: "onData",
|
|
131
|
-
type: "(data: { type: string; name: string; data: unknown; transient?: boolean }) => void",
|
|
132
|
-
description: "Optional callback for data-* parts. Only applies when using the ui-message-stream protocol.",
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
name: "onResponse",
|
|
136
|
-
type: "(response: Response) => void | Promise<void>",
|
|
137
|
-
description: "Optional callback called when a response is received.",
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
name: "onFinish",
|
|
141
|
-
type: "(message: ThreadMessage) => void",
|
|
142
|
-
description: "Optional callback called when a message is finished.",
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
name: "onError",
|
|
146
|
-
type: "(error: Error) => void",
|
|
147
|
-
description: "Optional callback called when an error occurs.",
|
|
148
|
-
},
|
|
149
|
-
{
|
|
150
|
-
name: "onCancel",
|
|
151
|
-
type: "() => void",
|
|
152
|
-
description: "Optional callback called when a request is cancelled.",
|
|
153
|
-
},
|
|
154
|
-
{
|
|
155
|
-
name: "credentials",
|
|
156
|
-
type: "RequestCredentials",
|
|
157
|
-
description: "Optional credentials mode for the fetch request.",
|
|
158
|
-
},
|
|
159
|
-
{
|
|
160
|
-
name: "headers",
|
|
161
|
-
type: "Record<string, string> | Headers | (() => Promise<Record<string, string> | Headers>)",
|
|
162
|
-
description: "Optional headers to include in the request.",
|
|
163
|
-
},
|
|
164
|
-
{
|
|
165
|
-
name: "body",
|
|
166
|
-
type: "object | (() => Promise<object | undefined>)",
|
|
167
|
-
description: "Optional additional body parameters to include in the request. Can be an object or an async function that returns one.",
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
name: "sendExtraMessageFields",
|
|
171
|
-
type: "boolean",
|
|
172
|
-
description: "Whether to include extra message fields like IDs in the request.",
|
|
173
|
-
},
|
|
174
|
-
]}
|
|
175
|
-
/>
|
|
176
|
-
|
|
177
|
-
### `toLanguageModelMessages`
|
|
178
|
-
|
|
179
|
-
Convert assistant-ui messages to AI SDK's `LanguageModelV2Message` format.
|
|
180
|
-
|
|
181
|
-
<Callout type="info">
|
|
182
|
-
For custom integrations, consider using `toGenericMessages` from `assistant-stream` instead.
|
|
183
|
-
This function is specific to the AI SDK format.
|
|
184
|
-
</Callout>
|
|
185
|
-
|
|
186
|
-
```tsx
|
|
187
|
-
import { toLanguageModelMessages } from "@assistant-ui/react-data-stream";
|
|
188
|
-
|
|
189
|
-
const languageModelMessages = toLanguageModelMessages(messages, {
|
|
190
|
-
unstable_includeId: true,
|
|
191
|
-
});
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
<ParametersTable
|
|
195
|
-
parameters={[
|
|
196
|
-
{
|
|
197
|
-
name: "messages",
|
|
198
|
-
type: "readonly ThreadMessage[]",
|
|
199
|
-
description: "The messages to convert.",
|
|
200
|
-
},
|
|
201
|
-
{
|
|
202
|
-
name: "options",
|
|
203
|
-
type: "{ unstable_includeId?: boolean }",
|
|
204
|
-
description: "Optional conversion options.",
|
|
205
|
-
children: [
|
|
206
|
-
{
|
|
207
|
-
type: "{ unstable_includeId?: boolean }",
|
|
208
|
-
parameters: [
|
|
209
|
-
{
|
|
210
|
-
name: "unstable_includeId",
|
|
211
|
-
type: "boolean",
|
|
212
|
-
description: "Whether to include message IDs in the converted messages.",
|
|
213
|
-
},
|
|
214
|
-
],
|
|
215
|
-
},
|
|
216
|
-
],
|
|
217
|
-
},
|
|
218
|
-
]}
|
|
219
|
-
/>
|
|
220
|
-
|
|
221
|
-
---
|
|
222
|
-
|
|
223
|
-
## Framework-Agnostic Utilities
|
|
224
|
-
|
|
225
|
-
For custom integrations that don't use the AI SDK, use these utilities from `assistant-stream`:
|
|
226
|
-
|
|
227
|
-
### `toGenericMessages`
|
|
228
|
-
|
|
229
|
-
Convert thread messages to a framework-agnostic format.
|
|
230
|
-
|
|
231
|
-
```tsx
|
|
232
|
-
import { toGenericMessages } from "assistant-stream";
|
|
233
|
-
|
|
234
|
-
const genericMessages = toGenericMessages(messages);
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
Returns an array of `GenericMessage` which can be one of:
|
|
238
|
-
- `{ role: "system"; content: string }`
|
|
239
|
-
- `{ role: "user"; content: (GenericTextPart | GenericFilePart)[] }`
|
|
240
|
-
- `{ role: "assistant"; content: (GenericTextPart | GenericToolCallPart)[] }`
|
|
241
|
-
- `{ role: "tool"; content: GenericToolResultPart[] }`
|
|
242
|
-
|
|
243
|
-
### `toToolsJSONSchema`
|
|
244
|
-
|
|
245
|
-
Convert tool definitions to JSON Schema format.
|
|
246
|
-
|
|
247
|
-
```tsx
|
|
248
|
-
import { toToolsJSONSchema } from "assistant-stream";
|
|
249
|
-
|
|
250
|
-
const toolSchemas = toToolsJSONSchema(tools);
|
|
251
|
-
// Returns: Record<string, { description?: string; parameters: JSONSchema7 }>
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
By default, filters out disabled tools and backend-only tools. Use the `filter` option to customize:
|
|
255
|
-
|
|
256
|
-
```tsx
|
|
257
|
-
const allTools = toToolsJSONSchema(tools, {
|
|
258
|
-
filter: () => true, // Include all tools
|
|
259
|
-
});
|
|
260
|
-
```
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "@assistant-ui/react-hook-form"
|
|
3
|
-
description: React Hook Form integration for AI-assisted form filling.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
A React Hook Form integration for @assistant-ui.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
## API Reference
|
|
10
|
-
|
|
11
|
-
### `useAssistantForm`
|
|
12
|
-
|
|
13
|
-
Drop-in replacement hook for `useForm` that adds support for `@assistant-ui/react`.
|
|
14
|
-
|
|
15
|
-
```diff
|
|
16
|
-
- import { useForm } from "react-hook-form";
|
|
17
|
-
+ import { useAssistantForm } from "@assistant-ui/react-hook-form";
|
|
18
|
-
|
|
19
|
-
- useForm({
|
|
20
|
-
+ useAssistantForm({
|
|
21
|
-
...
|
|
22
|
-
});
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
#### Properties
|
|
26
|
-
|
|
27
|
-
<ParametersTable
|
|
28
|
-
type="UseAssistantFormProps"
|
|
29
|
-
parameters={[
|
|
30
|
-
{
|
|
31
|
-
name: "assistant",
|
|
32
|
-
type: "object",
|
|
33
|
-
optional: true,
|
|
34
|
-
description: "Configuration for useAssistantForm",
|
|
35
|
-
children: [
|
|
36
|
-
{
|
|
37
|
-
parameters: [
|
|
38
|
-
{
|
|
39
|
-
name: "tools",
|
|
40
|
-
type: "object",
|
|
41
|
-
description: "Tools configuration for useAssistantForm",
|
|
42
|
-
children: [
|
|
43
|
-
{
|
|
44
|
-
parameters: [
|
|
45
|
-
{
|
|
46
|
-
name: "set_form_field",
|
|
47
|
-
type: "object",
|
|
48
|
-
description: "Configuration for the set_form_field tool",
|
|
49
|
-
children: [
|
|
50
|
-
{
|
|
51
|
-
parameters: [
|
|
52
|
-
{
|
|
53
|
-
name: "render",
|
|
54
|
-
type: "ToolCallMessagePartComponent<{ name: string; value: string; }, {}>",
|
|
55
|
-
description:
|
|
56
|
-
"The component to render when set_form_field is called.",
|
|
57
|
-
},
|
|
58
|
-
],
|
|
59
|
-
},
|
|
60
|
-
],
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
name: "submit_form",
|
|
64
|
-
type: "object",
|
|
65
|
-
description: "Configuration for the submit_form tool",
|
|
66
|
-
children: [
|
|
67
|
-
{
|
|
68
|
-
parameters: [
|
|
69
|
-
{
|
|
70
|
-
name: "render",
|
|
71
|
-
type: "ToolCallMessagePartComponent<{}, {}>",
|
|
72
|
-
description:
|
|
73
|
-
"The component to render when submit_form is called.",
|
|
74
|
-
},
|
|
75
|
-
],
|
|
76
|
-
},
|
|
77
|
-
],
|
|
78
|
-
},
|
|
79
|
-
],
|
|
80
|
-
},
|
|
81
|
-
],
|
|
82
|
-
},
|
|
83
|
-
],
|
|
84
|
-
},
|
|
85
|
-
],
|
|
86
|
-
},
|
|
87
|
-
]}
|
|
88
|
-
/>
|
|
89
|
-
|
|
90
|
-
### `formTools`
|
|
91
|
-
|
|
92
|
-
The set of tools to use with `useAssistantForm` on the server side. While the AI SDK now supports forwarding frontend tools via `frontendTools()`, using `formTools` directly on the server gives you more control over tool execution.
|
|
93
|
-
|
|
94
|
-
```tsx {1, 5-7}
|
|
95
|
-
import { formTools } from "@assistant-ui/react-hook-form";
|
|
96
|
-
|
|
97
|
-
const result = streamText({
|
|
98
|
-
...
|
|
99
|
-
tools: {
|
|
100
|
-
...formTools,
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
```
|
|
@@ -1,254 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "@assistant-ui/react-ai-sdk"
|
|
3
|
-
description: Vercel AI SDK integration with chat runtime hooks and transport utilities.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
Vercel AI SDK integration for assistant-ui.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
<Callout type="info">
|
|
10
|
-
This package provides integration with AI SDK v6. For older versions, see the [AI
|
|
11
|
-
SDK v5 (Legacy)](/docs/runtimes/ai-sdk/v5-legacy) or [AI SDK v4 (Legacy)](/docs/runtimes/ai-sdk/v4-legacy) documentation.
|
|
12
|
-
</Callout>
|
|
13
|
-
|
|
14
|
-
## API Reference
|
|
15
|
-
|
|
16
|
-
### `useChatRuntime`
|
|
17
|
-
|
|
18
|
-
Creates a runtime with AI SDK's `useChat` hook integration. This is the recommended approach for most use cases.
|
|
19
|
-
|
|
20
|
-
```tsx
|
|
21
|
-
import { useChatRuntime, AssistantChatTransport } from "@assistant-ui/react-ai-sdk";
|
|
22
|
-
import { AssistantRuntimeProvider } from "@assistant-ui/react";
|
|
23
|
-
|
|
24
|
-
const MyRuntimeProvider = ({ children }: { children: React.ReactNode }) => {
|
|
25
|
-
const runtime = useChatRuntime({
|
|
26
|
-
transport: new AssistantChatTransport({
|
|
27
|
-
api: "/api/chat",
|
|
28
|
-
}),
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
return (
|
|
32
|
-
<AssistantRuntimeProvider runtime={runtime}>
|
|
33
|
-
{children}
|
|
34
|
-
</AssistantRuntimeProvider>
|
|
35
|
-
);
|
|
36
|
-
};
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
To customize the API endpoint, simply change the `api` parameter:
|
|
40
|
-
|
|
41
|
-
```tsx
|
|
42
|
-
const runtime = useChatRuntime({
|
|
43
|
-
transport: new AssistantChatTransport({
|
|
44
|
-
api: "/my-custom-api/chat",
|
|
45
|
-
}),
|
|
46
|
-
});
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
<ParametersTable
|
|
50
|
-
parameters={[
|
|
51
|
-
{
|
|
52
|
-
name: "options",
|
|
53
|
-
type: "UseChatRuntimeOptions",
|
|
54
|
-
description: "Configuration options for the chat runtime.",
|
|
55
|
-
children: [
|
|
56
|
-
{
|
|
57
|
-
type: "UseChatRuntimeOptions",
|
|
58
|
-
parameters: [
|
|
59
|
-
{
|
|
60
|
-
name: "transport",
|
|
61
|
-
type: "ChatTransport",
|
|
62
|
-
description:
|
|
63
|
-
"Custom transport implementation. Defaults to AssistantChatTransport (which sends requests to '/api/chat' and forwards system messages and tools). Use `new AssistantChatTransport({ api: '/custom-endpoint' })` to customize the endpoint.",
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
name: "cloud",
|
|
67
|
-
type: "AssistantCloud",
|
|
68
|
-
description:
|
|
69
|
-
"Optional AssistantCloud instance for chat persistence.",
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
name: "adapters",
|
|
73
|
-
type: "RuntimeAdapters",
|
|
74
|
-
description:
|
|
75
|
-
"Optional runtime adapters to extend or override built-in functionality (attachments, speech, dictation, feedback, history).",
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
name: "toCreateMessage",
|
|
79
|
-
type: "(message: AppendMessage) => CreateUIMessage",
|
|
80
|
-
description:
|
|
81
|
-
"Optional custom function to convert an AppendMessage into an AI SDK CreateUIMessage before sending.",
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
name: "initialMessages",
|
|
85
|
-
type: "UIMessage[]",
|
|
86
|
-
description: "Initial messages to populate the chat.",
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
name: "onFinish",
|
|
90
|
-
type: "(message: UIMessage) => void",
|
|
91
|
-
description: "Callback when a message completes streaming.",
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
name: "onError",
|
|
95
|
-
type: "(error: Error) => void",
|
|
96
|
-
description: "Callback for handling errors.",
|
|
97
|
-
},
|
|
98
|
-
],
|
|
99
|
-
},
|
|
100
|
-
],
|
|
101
|
-
},
|
|
102
|
-
]}
|
|
103
|
-
/>
|
|
104
|
-
|
|
105
|
-
<Callout type="info">
|
|
106
|
-
By default, `useChatRuntime` uses `AssistantChatTransport` which automatically
|
|
107
|
-
forwards system messages and frontend tools to your backend API. This enables
|
|
108
|
-
your backend to receive the full context from the assistant-ui.
|
|
109
|
-
</Callout>
|
|
110
|
-
|
|
111
|
-
### `useAISDKRuntime`
|
|
112
|
-
|
|
113
|
-
For advanced use cases where you need direct access to the `useChat` hook from AI SDK.
|
|
114
|
-
|
|
115
|
-
```tsx
|
|
116
|
-
import { useChat } from "@ai-sdk/react";
|
|
117
|
-
import { useAISDKRuntime } from "@assistant-ui/react-ai-sdk";
|
|
118
|
-
import { AssistantRuntimeProvider } from "@assistant-ui/react";
|
|
119
|
-
|
|
120
|
-
const MyRuntimeProvider = ({ children }: { children: React.ReactNode }) => {
|
|
121
|
-
const chat = useChat({
|
|
122
|
-
api: "/api/chat",
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
const runtime = useAISDKRuntime(chat);
|
|
126
|
-
|
|
127
|
-
return (
|
|
128
|
-
<AssistantRuntimeProvider runtime={runtime}>
|
|
129
|
-
{children}
|
|
130
|
-
</AssistantRuntimeProvider>
|
|
131
|
-
);
|
|
132
|
-
};
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
<ParametersTable
|
|
136
|
-
parameters={[
|
|
137
|
-
{
|
|
138
|
-
name: "chat",
|
|
139
|
-
type: "ReturnType<typeof useChat>",
|
|
140
|
-
description: "The chat helpers from @ai-sdk/react's useChat hook.",
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
name: "options",
|
|
144
|
-
type: "AISDKRuntimeAdapter",
|
|
145
|
-
description: "Optional configuration options.",
|
|
146
|
-
children: [
|
|
147
|
-
{
|
|
148
|
-
type: "AISDKRuntimeAdapter",
|
|
149
|
-
parameters: [
|
|
150
|
-
{
|
|
151
|
-
name: "adapters",
|
|
152
|
-
type: "RuntimeAdapters",
|
|
153
|
-
description:
|
|
154
|
-
"Optional runtime adapters for attachments, feedback, speech, etc.",
|
|
155
|
-
},
|
|
156
|
-
],
|
|
157
|
-
},
|
|
158
|
-
],
|
|
159
|
-
},
|
|
160
|
-
]}
|
|
161
|
-
/>
|
|
162
|
-
|
|
163
|
-
### `AssistantChatTransport`
|
|
164
|
-
|
|
165
|
-
A transport that extends the default AI SDK transport to automatically forward system messages and frontend tools to your backend.
|
|
166
|
-
|
|
167
|
-
```tsx
|
|
168
|
-
import { AssistantChatTransport } from "@assistant-ui/react-ai-sdk";
|
|
169
|
-
import { useChatRuntime } from "@assistant-ui/react-ai-sdk";
|
|
170
|
-
|
|
171
|
-
const runtime = useChatRuntime({
|
|
172
|
-
transport: new AssistantChatTransport({
|
|
173
|
-
api: "/my-custom-api/chat",
|
|
174
|
-
}),
|
|
175
|
-
});
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
<ParametersTable
|
|
179
|
-
parameters={[
|
|
180
|
-
{
|
|
181
|
-
name: "options",
|
|
182
|
-
type: "HttpChatTransportInitOptions",
|
|
183
|
-
description: "Transport configuration options.",
|
|
184
|
-
children: [
|
|
185
|
-
{
|
|
186
|
-
type: "HttpChatTransportInitOptions",
|
|
187
|
-
parameters: [
|
|
188
|
-
{
|
|
189
|
-
name: "api",
|
|
190
|
-
type: "string",
|
|
191
|
-
description: "The API endpoint URL.",
|
|
192
|
-
},
|
|
193
|
-
{
|
|
194
|
-
name: "headers",
|
|
195
|
-
type: "Record<string, string> | Headers",
|
|
196
|
-
description: "Optional headers to include in requests.",
|
|
197
|
-
},
|
|
198
|
-
{
|
|
199
|
-
name: "credentials",
|
|
200
|
-
type: "RequestCredentials",
|
|
201
|
-
description: "Optional credentials mode for fetch requests.",
|
|
202
|
-
},
|
|
203
|
-
],
|
|
204
|
-
},
|
|
205
|
-
],
|
|
206
|
-
},
|
|
207
|
-
]}
|
|
208
|
-
/>
|
|
209
|
-
|
|
210
|
-
### `frontendTools`
|
|
211
|
-
|
|
212
|
-
Helper function to convert frontend tool definitions to AI SDK format for use in your backend.
|
|
213
|
-
|
|
214
|
-
```tsx
|
|
215
|
-
import { frontendTools } from "@assistant-ui/react-ai-sdk";
|
|
216
|
-
import { streamText, convertToModelMessages } from "ai";
|
|
217
|
-
import { openai } from "@ai-sdk/openai";
|
|
218
|
-
|
|
219
|
-
export async function POST(req: Request) {
|
|
220
|
-
const { messages, system, tools } = await req.json();
|
|
221
|
-
|
|
222
|
-
const result = streamText({
|
|
223
|
-
model: openai("gpt-4o"),
|
|
224
|
-
system,
|
|
225
|
-
messages: await convertToModelMessages(messages),
|
|
226
|
-
tools: {
|
|
227
|
-
// Wrap frontend tools with the helper
|
|
228
|
-
...frontendTools(tools),
|
|
229
|
-
// Your backend tools
|
|
230
|
-
myBackendTool: tool({
|
|
231
|
-
// ...
|
|
232
|
-
}),
|
|
233
|
-
},
|
|
234
|
-
});
|
|
235
|
-
|
|
236
|
-
return result.toUIMessageStreamResponse();
|
|
237
|
-
}
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
<ParametersTable
|
|
241
|
-
parameters={[
|
|
242
|
-
{
|
|
243
|
-
name: "tools",
|
|
244
|
-
type: "Record<string, unknown>",
|
|
245
|
-
description:
|
|
246
|
-
"Frontend tools object forwarded from AssistantChatTransport.",
|
|
247
|
-
},
|
|
248
|
-
]}
|
|
249
|
-
/>
|
|
250
|
-
|
|
251
|
-
<Callout type="info">
|
|
252
|
-
The `frontendTools` helper converts frontend tool definitions to the AI SDK
|
|
253
|
-
format and ensures they are properly handled by the streaming response.
|
|
254
|
-
</Callout>
|